[Playback ng video] [CAR DOOR shut] [CAR ENGINE NG] [MUSIC nagpe-play] -Paglipat Karapatan kasama sa paghahanap ng magandang beses at mabuting balita. Sa pamamagitan ng magandang mga kaibigan na hindi mo maaaring mawala. -Ang Maaaring maging isang ugali. -Opportunity Knocks Sabihin maabot lamang sa labas at sunggaban ito. -Yeah! -Together Kami dakpin ito. -We'll Sagabal hike, bus, o dilaw na taksi ito. -Dammit. -We're Tama lang ang. -Footloose At magarbong libre. -Getting Diyan ay kalahati ang saya. Halika at ibahagi ito sa akin. -We're Tama lang ang. -We're Pagpunta upang ibahagi ang load. -Hindi Kailangan ng isang mapa upang makakuha ng palabas na ito sa kalsada. -Hey Fozzy, gusto ko sa iyo upang i-kaliwa kung dumating ka sa isang tinidor sa kalye. -Oo, Ginoo. Lumiko pakaliwa kapag nahati ang kalye. Lumiko pakaliwa. -Hindi Ko naniniwala na. -Cruising Karapatan kasama namin natagpuan ang mga ilaw sa highway. -At Iyong paraan o ang aking paraan. Pinagkakatiwalaan -Kaya aking navigation. -Pelikula Bituin na may marangya cars at buhay na sa itaas pababa. -We're Storming ang malaking burol. -Yeah, Bagyo ang tama. Ito ay dapat na may snow? -Hindi, Hindi ko sa tingin ko. -Paglipat Karapatan kasama. -Footloose At magarbong libre. -You're Handa na para sa malaking oras. -Ang Ito handa na para sa akin? -Paglipat Karapatan kasama. Paglipat ng karapatan kasama. Paglipat ng karapatan kasama. Paglipat ng karapatan kasama. Sa tingin -I mong mas mahusay na itabi. -Oo, Ginoo. [END playback] [Palakpakan] David J. MALAN: Ito ang CS50. At ito ay ang katapusan ng linggo 0, ngunit sa simula ng isang magandang pagkakaibigan. Kami ay kaya nasasabik na maging dito sa Yale University para sa unang pagkakataon sa aming kaibigan Scaz, at Jason, at Andy. Lahat ng 40 ng TF ni CS50 at CA meron dito sa Yale. At ang lahat ng sa iyo. At sa katunayan, ito ay marahil oras to-- [Palakpakan] Kaya, kahit na ang karamihan ng mga lektura ay sa katunayan ay sa Cambridge sa taong ito, ang katotohanan ay na sa pamamagitan ng disenyo, at Sobra kusa sa CS50, Sa tingin ko kami ay papalapit sa puntong technologically, at pedagogically, kung saan maaari itong maging isang higit na mataas na edukasyon karanasan sa umaakit sa ilang ng mga materyal na online ang kurso na iyon. Sa katunayan, ang reality-- at kung sa tingin ko ito philosophically-- ay na lektura ay hindi isang partikular na mabisang paraan para sa paghahatid ng medyo mahirap unawain impormasyon. Totoong higit sa oras plus mahabang sumasaklaw ng oras. At sa katunayan bawat ilang minutes-- Naaalala ko ang aking sarili sa college-- iyo zone out para sa isang sandali, miss mo ang ilang mga kumplikadong paksa, at ikaw ay wala na medyo marami para sa susunod na 45 minuto. At ang katotohanan ay na kung nandito ka sa New Haven o Cambridge o higit pa, ang pagiging simple ng pagkakaroon ang kakayahang i-pause at fast forward, rewind, hyperlink sa mga kaugnay na resources, full text search transcript at ang gusto ay isang pagkakataon na Maglakas-loob ko sabihin para sa aming online na mga mag-aaral mahusay na lampas sa New Haven, Nag-aalok ang mga ito ng pagkakataon sa talagang mahigpit na hawakan ang pangkonseptong materyal na tayo ipakilala sa mga aralin sa lahat ng mga mas mahusay. Ngunit sa huli sa CS50, ay karanasan ng mga mag-aaral ' ay nailalarawan sa gayon, kaya marami pang iba sa pamamagitan ng mga hanay ng problema ang kurso na iyon, o lingguhan proyekto programming, ang seksyon course na pinamumunuan ng pagtuturo Fellows, gabi-gabi ang mga oras ng opisina sa pamumuno ni mga katulong course at ang pagtuturo Fellows, at sa katunayan tulad mga kaganapan bilang CS50 Puzzle Day, Hack-a-Thon CS50, CS50 Fair, lingguhan lunch, at marami pang iba. At kaya kung ikaw ay dito sa New Haven, o tune in mula sa malayo, ngayon sa Cambridge, at ipapakita namin makita kang muli sa lalong madaling panahon, ang katotohanan ay ito ay isa at sa parehong klase. At kaya kami ay nasasabik na na dito ang lahat ng sama-sama ngayon. At kaya sa dulo ng semestre, kung dito o sa malayo, well sana isuot mo buong kapurihan, maligaya, at marahil sa isang piraso ng lunas, ang shirt na nagpapatotoo sa iyo sa pagkakaroon ng kinuha CS50. Kaya kung saan ay mag-iwan namin off sa Miyerkules? Namin kinuha ng isang pagtingin sa computational pag-iisip. At na papunta sa kung ano tayo distilled computer science sa, ng hindi bababa sa para sa ngayon. Ngunit dalisay namin ito kaunti pa sa ng hindi bababa sa tatlong mga bahagi na mga elemento. Input, kaya kung ano ang problema kami ay nagsisikap na malutas? Outputs, ano ang sagutin umaasa kaming upang makakuha ng? At ang mga representasyon ng doon. At hindi namin ay mananahan dito sa matapos sa binary, o kahit na ASCII, at ang gusto kaya magkano, ngunit sa halip na mang-ahas na maaari naming kumakatawan sa impormasyong ito, dahil ang malayo mas kawili-wiling mga bahagi ng mga problema ay hindi lamang ang input at output, ngunit ang algorithms na pumunta sa paglutas ng mga problema. At maaari mong isipin ang mula sa sa ibang mga araw na tayo kinuha ng isang medyo tradisyunal konsepto ng naghahanap ang isang tao up sa isang medyo malaking libro ng telepono, o higit pa sa pangkalahatan digital na mga araw, lamang ng isang napaka malaking hanay ng data. Ang isang talagang malaking listahan ng mga contact, na may maraming mga pangalan ayon sa alpabeto ayon. At aming natanto na habang ako maaaring diskarte ang problemang ito lamang sa pamamagitan ng paggamit ng isang guhit approach-- pahina sa pamamagitan ng pahina, o kahit na dalawa ni sa isang time-- aming natanto na ang mga mas intuitive algorithm-- lamang ng uri ng paghahati at nagtatagumpay muli ang problema, at muli, at again-- paghati nito sa bawat panahon, ay nagbigay sa amin ang nagpapanatili ng resulta. At ito ay kaya magkano ang patag dahil ito ay nagmumungkahi na kahit na ang problemang ito makakakuha ng mas malaki at mas malaki, tulad ng kaso sa mga araw na may data set at reality-- Facebook at Google resulta ng paghahanap at ang mga like-- ang aming algorithm gumanap tulad ng epektibong sa mga mas malaki na kagat tulad ng ginawa ito kahit na may mas maliit na kagat. Ngayon ito begs ang tanong, ano ang maaari naming aktwal na malutas katulad na may ganitong uri ng Swersey? Ang uri ng mga dibisyon at nagtatagumpay? Well, maaari naming gawin ang isang bagay tulad nito ngayon dito. Kami ay maaaring tumagal ng pagdalo. Kaya marahil tulad ng 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- hindi magiging lahat na mahusay. Kaya maghintay, mababang paaralan. 2, 4, 6, 8, 10, 12, 14, 16, 18 at iba pa. Ngunit maaari naming gawin ang isang maliit na mas mahusay? Ako ay medyo sigurado hindi ko makakaya gawin ito sa pamamagitan ng aking sarili. Kaya kung bibigyan ka ng katatawanan sa amin para lamang sa isang sandali, dala natin isang algorithm na Nalaman lamang ng tatlong hakbang, ngunit ito ay require-- kung ikaw huwag mind-- lahat tayo tumayo, kung gagawin mo. Kaya, sa lahat sa atin ngayon ay nakatayo, step isa sa mga algorithm na ito ay ang mga sumusunod. Tumayo at magtalaga ang iyong sarili sa mga numero 1. Kaya sa puntong ito sa panahon, literal lahat ng tao sa room na ito sana ay nag-iisip sa kanilang mga sarili, gayunpaman awkwardly, ang number 1. Ngayon pangalawang hakbang ng algorithm na ito ay pagpunta sa magdawit ng mga sumusunod. Hakbang dalawang, pares off may isang tao na nakatayo, idagdag ang iyong numero ng sama-sama, at magpatibay ang kabuuan ng iyong bagong numero. Quick check katinuan. Anong numero ang iniisip ng lahat ng mga ngayon? Kaya 2, maliban marahil para sa isa, mahirap, nalulumbay na tao. Kung kami ay may isang kakaiba bilang ng mga tao sa room. Kaya ang isang tao ay maaaring pa rin ang numero 1, na fine. Ngunit tatlong hakbang dito, isa ng dapat mong umupo. Ang iba pang ay dapat na bumalik sa hakbang dalawa, at ulitin, kung nanaisin mo. Kaya kung nakatayo pa rin, dapat ay kabilang sa mga balik sa pangalawang hakbang. Panatilihin ang pagpunta. Nakatayo pa rin ng ilang mga tao. Kaya, kung nakatayo pa rin, pares up sa isang tao. Lahat ng karapatan, papaliit down. Nakatayo pa rin ng ilang mga tao. Kailangan ko ng tulong kung kailangan na. Tandaan ang key takeaway dito, ay kung paano mas mabilis na ito ay sa akin ang pagbibilang. Kaya sabihin makita. Maaari ko ng tulong out. Kaya kung ano ang numero ay iniisip ka pa rin? Madla: ako sa 44. David J. MALAN: 44, kaya pumunta ka muna at umupo. Anong numero ang iniisip mo? Madla: 74. David J. MALAN: 74. Sige, sige, at umupo. Sino pa ay nakatayo pa rin? 86. At ang sinumang iba pa nakatayo pa rin? Ano number? Narinig ko 67. At pagkatapos ay sa tuktok? 32. Kahit sino pa ang nakatayo pa rin at nag-iisip ng isang numero? Oh, hi. Sorry. Maging karapatan likod. 42. Kahit sino pa? Madla: 47. David J. MALAN: 47. Ay kahit sino pa ang nakatayo pa rin na ay hindi pa binibilang? Kaya ang huling bilang ng tao sa isang silid na may 497 puwesto is-- lahat ng na mga filled-- ay 390. Kaya ito ay mahusay. Ay malapit nang pag-usapan namin ang paniwala ng isang bug sa isang computer program. Ngunit kami ay bumalik sa na bago ang haba. Ngunit sa teorya, kung ano ang maaaring nangyari lamang ngayon? Kaya kahit na may mga tatlong malaking hakbang upang algorithm na ito, ang bawat isa sa mga ay lamang ang uri ng isa sa malaking operasyon. At nagkaroon ito cyclicity na ito sa na kung ikaw ay nakatayo pa rin, ikaw ay nag-iingat ng pagpunta mula sa tatlong hakbang sa dalawa, hakbang 3-2, hakbang 3-2. Ngunit kung ano ang nag-iingat sa nangyayari sa bawat pag-ulit? Ang bawat cycle ng loop na ito? Ano ang nangyayari sa ibang lugar sa kuwarto? Hindi lamang ang mga parehong bagay, ngunit kung ano nangyayari sa kalahati ng sa iyo? Nakaupo na. At kaya doon sa mga kasinungalingan na ito ng pananaw, marami tulad ng mga halimbawa ng phone book, sa na kung kalahati ng sa iyo ay nakaupo na sa bawat oras, Nagsisimula ang problema may marahil 400 mga tao, pagkatapos ay sa 200 mga tao, sa 100 mga tao, pagkatapos ay 50 mga tao, at iba pa. At kaya paliitin namin down sa theory na lang sa isang tao, nag-iisip ng ang kabuuang halaga ng lahat ng tao. Ngayon katotohanan, ang ilang mga social dynamics, at ilang arithmetic error maaaring mag-ambag sa na panghuli bug. Ngunit sa teorya, habang ako ay nadaragdagan pa rin ang layo, pagkuha ng ilang dosenang mga hakbang, o daan-daan ng mga hakbang upang mabilang ang inyong sarili, upang mabilang isang punong silid ng 500 o kaya mga tao dapat ay gumawa ng malayo mas kaunting mga hakbang, dahil maaari ka lamang hatiin 500 at 1/2 kaya maraming beses. At kaya lang tulad ng sa telepono i-book ang mga halimbawa ng ibang mga araw, ay mayroon kaming isang bagay logarithmic upang magsalita, kung saan kung kami ay lahat operating sa pagkakaisa, at hindi papansin ang error karagdagan, gagawin namin ay nakakamit nang eksakto na uri ng pagpapatakbo ng oras? Ngayon upang maging patas, uri ng ginulangan, sa na leveraged ako ng isa pang mapagkukunan. Sapagkat ito ay isa lamang sa akin, Leveraged akong daan-daang ng sa iyo. Ngunit na maaaring sinabi na maging isang halimbawa ng parallel processing, o ng isang estado ng art napaka sa popularidad na kung saan ang computer mga araw na may maramihang CPUs, o higit pang mga technically, mas maramihang mga core, at maaaring tunay na gawin ang maramihang mga bagay-bagay nang sabay-sabay, magkano ang gusto mong lahat ng ginagawa namin doon, sa parallel. Ngunit isipin ang na kung ano ang aming Ginawa din sa Miyerkules ay subukan upang makuha ang Swersey at gawing pormal ang mga ito sa code. Isang bagay tulad ng palsipikado-code. At sa katunayan, at Umaasa ako na makikita mo magpatawad, ito ay tulad ng 80 degrees sa dito. Kaya ako pagpunta sa gawin ito off para lamang ng ilang sandali. Ano naisip ko na gusto naming gawin ay transition ngayon sa isang application kung saan ang muli naming hikayatin ang mga madla, ngunit magsulat ng isang programa sa Ingles tulad ng syntax, na kung saan na malutas ang problemang ito dito. [Playback ng video] Peanut butter time halaya -Ito'y. Peanut butter time halaya. Peanut butter time halaya. Way ya! Way ya! Way ya! Way ya! Ngayon ay mayroong kang pumunta! May pumunta ka! May pumunta ka! May pumunta ka! Peanut butter halaya! Peanut butter halaya! Peanut butter halaya! Peanut butter halaya! Peanut, peanut butter halaya! Peanut butter halaya! Peanut butter halaya may bat. [END playback] David J. MALAN: --that video, ngunit ito ay isang maliit na nakakahumaling, kung hindi isang bit nakakainis. Ngunit upang gawin ito, naisip ko na kung ano ang gusto namin gawin ay subukan upang magsulat ng isang programa na magkasama, para sa kung saan kailangan namin ng tatlong boluntaryo. Magkaroon upang maging komportable sa camera at internet. Sam, dumating sa up. Lila shirt, dito mismo, dumating sa up. At mula sa paglipas dito, hayaan mo akong pumunta sa isang maliit na malayo sa likod. Crimson at asul shirts, dumating sa up. Perpekto. Lumapit sa ngayon. Umakyat, dumating sa up. At ano ang iyong pangalan? Erica. David, Natutuwa akong makilala kayo. Kung gusto mo nais na kunin ang upuan dito. Ito ang Sam. Ano ang inyong pangalan? Antonio. Antonio, Natutuwa akong makilala kayo. Erica at Sam, kung gusto mo sa nais na magkaroon ng isang upuan dito. Ano nagawa sa ngayon kami ay handa na may, dahil ang mga ito guys ay malaman, ay ang mga sangkap na kung saan upang gumawa ng isang peanut butter at halaya sandwich. Ngayon na ito ay maaaring maging isang bagay na kumuha sa inyo para sa mga ipinagkaloob. Ngunit ibinigay na namin ang bawat isa sa aming tatlong mga boluntaryo here-- dalawang mga boluntaryo at Sam dito, ang isang tinapay ng tinapay sa bawat isa, isang plato, isang kutsilyo, ng garapon ng halaya o jam, at isang garapon ng peanut butter. At ang mga layunin sa kamay ngayon ay magiging para sa mga tatlong upang gumawa ng isang peanut butter at halaya sandwich. Ngunit kung ano ang namin ang pagpunta sa gawin ay inaasahan ang audience-- dahil ang lahat ng sa iyo tiyak na malaman kung paano gawin ito nang maayos sa reality-- ay pagpunta upang magbigay sa amin ang mga hakbang-hakbang na mga tagubilin. Ang tunay code, kung ikaw ay. Kaya ko na i-play ang papel na ginagampanan ng kalihim dito. At Nakakuha ako ng isang maliit na listahan ng gagawin, at sa gayon ay sa bawat isa sa iyo, isa sa isang panahon, tawag sa labas ng isang potensyal na edukasyonal, kukunin ko itong isulat, ulitin ito ayon sa kinakailangan. At pagkatapos mong guys ay pagpunta sa gumawa isang peanut butter at halaya sanwits lamang sa pamamagitan ng paggawa ng kung ano ang iyong sinabi. Kaya sa tingin ng inyong sarili bilang mga computer. Maaari mo lamang gawin kung ano ang iyong sinasabi. Hindi pagpapalagay, walang mga katanungan. Kailangan mo lamang na gawin ito. Kaya na nais na pakikipagsapalaran ng mga unang pagtuturo para sa paggawa ng isang PBJ sandwich? Sa balkonahe doon. Madla: Buksan ang bag ng tinapay. David J. MALAN: Buksan ang bag ng tinapay, kung ikaw ay. Kaya sabihin makita. Ni umulit Hayaan, at makakuha ng mas tumpak na ng kaunti. Mahusay na paraan upang magsimula ng kahit na. Hakbang ng dalawang, ang ibang tao. Ngayon walang gustong magboluntaryo. Hakbang dalawang, sa harap. Madla: Buksan ang inner bag ng tinapay rin. David J. MALAN: Buksan ang inner bag ng tinapay rin. Mahusay, kami ng pag-aaral. Mas tumpak na isang maliit. Sabihin makakuha ng ito gumagana. Oo, sa green shirt. Madla: [hindi marinig] David J. MALAN: Hiwa ng tinapay. Malumanay alisin ang dalawang hiwa ng tinapay. Iyan ay mabuti. Hakbang apat, ang ibang tao? Higit dito, yes? Madla: [hindi marinig] David J. MALAN: Place bread sa plate. Hakbang limang? Hakbang limang, oo? Madla: [hindi marinig] David J. MALAN: Sa tuktok of-- oh, hand. Lugar kamay sa itaas ng peanut butter. Ay na kung ano ang aking ulo? Madla: Oo, at alisin ang takip. David J. MALAN: at- ito sinasabi muli. Madla: [hindi marinig] David J. MALAN: At nilagyan ng talukap ng mata sa tabi ng peanut butter. Nang basta-basta maglagay ng kamay sa tuktok ng peanut butter, at alisin ang takip, at ilagay ang takip sa tabi ng peanut butter. OK, hakbang anim. Hakbang anim, isang tao pa. Oo? Madla: [hindi marinig] David J. MALAN: Sabihin mo ulit ito. Madla: Ulitin ang hakbang sa limang muli. David J. MALAN: At ulitin muli step limang, na kung saan ay pagpunta upang lumikha ng isang piraso ng isang problema ngayon kung kami ay ginagawa ang hakbang na ito sa pamamagitan ng hakbang. Kaya ngayon kami bumalik sa hakbang na lima. Nang basta-basta maglagay ng kamay sa itaas ng peanut butter at alisin ang takip at ilagay ang talukap ng mata sa tabi ng peanut butter. Pagkatapos hawakang mahigpit ang peanut butter at ulitin muli step lima. Kaya makikita override namin na walang-katapusang loop, kung ikaw ay. Step pitong, sa ibang tao. Oo, sa likod. Madla: [hindi marinig] David J. MALAN: --on tuktok ng isa. Madla: [hindi marinig] David J. MALAN: Sa iba pang mga kamay sa iba pang mga top. Gusto mo bang magkaroon ng lang dito? Paano ko tapusin ang pagtuturo? Ano ang mga natitira sa pagtuturo? Madla: hindi papansin ang bahaging iyon. David J. MALAN: hindi papansin ang bahaging iyon. Ni magsimulang muli Hayaan. Hakbang pitong. Madla: [hindi marinig] David J. MALAN: Mahigpit na hawakan sa paghadlang hand-- ito ay mabuti. Ito ay talagang mahusay. Madla: [hindi marinig] David J. MALAN: At plastic jar-- Madla: [hindi marinig] David J. MALAN: At twist-- Madla: [hindi marinig] David J. MALAN: Para sa dalawang segundo. Buksan lang ang peanut butter jar. Umaasa ako na kayo magpatawad. Kaya sabihin ipinapalagay namin nakuha doon. Buksan ang peanut butter jar. [Palakpakan] David J. MALAN: Hakbang walong, hana. Hakbang walong, oo, sa likod. Madla: [hindi marinig] David J. MALAN: Magandang. Hakbang siyam, yes? Madla: [hindi marinig] David J. MALAN: --out ng ang peanut butter jar. At- at kung ano? Madla: [hindi marinig] David J. MALAN: At ilagay kutsilyo bumalik sa peanut butter. Hakbang sampung. Hakbang sampung. Madla: [hindi marinig] David J. MALAN: Ilagay ang kutsilyo out, at pagkatapos ay tanggalin ang selyo. Nice. Sarado ang peanut butter. Lahat ng karapatan, step 11. Madla: [hindi marinig] David J. MALAN: OK, kulay-abo na computer sundin asul o pulang computer. Good. [Palakpakan] David J. MALAN: Dalhin sa amin bahay. Ilang karagdagang mga hakbang. Ano ang susunod? Hakbang 12. Hakbang 12. Oo? Madla: Ilagay ang isa sa mga hiwa ng tinapay malumanay sa isa sa iyong mga kamay. David J. MALAN: Ang isa sa iyong mga kamay. At pagkatapos, step 13. Oo? Madla: [hindi marinig] David J. MALAN: --on slice ng tinapay. Good. Medyo mabuti. Hakbang 14, oo. Madla: I-undo ang step 13. David J. MALAN: I-undo ang step 13. Sabihin ilipat sa halaya Hayaan. Ito ay isang 100 na hakbang na programa, ngunit kami ay nasa step 15. Oo. Madla: [hindi marinig] David J. MALAN: 7 hanggang 13 gamit ang halaya, dahil ang mga nagpunta nang maayos. Ulitin ang hakbang na 7 sa pamamagitan ng 13, gamit ang halaya. Kaya mahigpit na hawakan ang ibabang kalahati ng halaya garapon na may isang kamay sa itaas. Sa kabilang dako ng iba pang nangungunang, hindi papansin ang bahaging iyon, hawakang mahigpit sa paghadlang mga kamay, ang takip at ang plastic jar sa ibaba, at iuwi sa ibang bagay sa loob ng dalawang segundo. Pagkatapos buksan ang halaya jar. At sa wakas, sabihin subukan upang ipaalam bigyan kami ng isang bagay na nakakain. Hakbang 16. Kaya bakit hindi namin iwanan ito doon. Salamat sa iyo kaya marami sa mga aming tatlong boluntaryo. [Palakpakan] Kami ay may isang maliit na CS50 stress ball para sa iyo. Ito ay magiging isang sandwich but-- kaya kung ano ang punto, sa kabila ng pagkakaroon ng isang kaunting kasiyahan sa mga algorithm? Subalit ang katotohanan ay na kahit na kapag ikaw ay programming ng isang computer, kailangan mo upang maging sobrang tumpak. Bilang complex o pananakot bilang iyong sariling computer maaaring tunay mabuti ay sa iyo, sa hindi bababa sa kapag ang isang bagay napupunta mali, ang katotohanan ay ito ay isang medyo pipi aparato na ay likha ng tao sa amin, at maaari lamang gawin ng isang subset ng kung ano ang aming do-- minsan tiyak faster-- ngunit ito ay hindi alam kung paano upang gumawa ng mga pagpapalagay. Hindi nito alam kung paano maging sa parehong wavelength bilang iyo. Ito lamang gawin tiyak ano sabihin mo ito. At makikita mo masaktan, marahil, bilang namin simulan pagsulat ng aktwal na code sa mga unang hanay ng problema at sa hinaharap, lamang kung paano madaling ito ay upang gumawa ng isang palagay bilang isang tao, at hindi inaasahan ang kailangan ko upang mahawakan kasong iyon, o na sulok kaso, wika nga, na maaaring tunay mabuti lumabas dahil kung halimbawa Sam ay ang tanging napupot garapon ng halaya, samantalang lahat ng ibang tao ay nagkaroon ng ilang mga garapon salamin bilang rin. Kaya bago namin buksan ang aming ng pansin sa ilang mga aktwal na code, payagan ako upang ipakilala ang ulo course dito sa Yale. Ang aming mga kaibigan Scaz, Andy, at Jason na pumanhik at kamustahin. [Palakpakan] SCAZ: Pansamantalang nawala kami ng Jason. Hi muli, sa lahat. Ang pangalan ko ay Scaz. Ako ng pagtuturo sa Yale noong 2001. At kapag hindi ako sa pagtuturo, aking pananaliksik ay sa robotics at artificial intelligence. At ang mga patalastas na mayroon akong ngayon ay na nagsisimula sa loob ng ilang mga linggo, kami ay pagpunta sa ay nagdadala ng ilang karagdagang materyal sa CS50 na makipag-usap tungkol sa software na katalinuhan. Kami ay pagpunta sa makipag-usap tungkol sa kung paano mga lugar tulad ng Netflix at Hulu maaaring magrekomenda pelikula na baka gusto mong panoorin. Saan kami makipag-usap tungkol sa kung paano driver-less kotse talagang gumagana. At kami ay ma-lupa mga bagay na ito sa mga konseptong na kayo ay pag-aaral sa ganitong klase ngayon. Dahil ang lahat ng mga bagay na ito binuo sa parehong pundasyon. At na kung ano ang serye ay galugarin. Kaya ako talagang naghahanap inaabangan ang panahon na nakakakita ng higit pa sa iyo lahat, at ikaw ay pagpunta upang makakuha ng makita ang higit pa mula sa lahat ng sa amin sa lalong madaling panahon. Hayaan pagkatapos ipakilala sa akin Jason. Jason: Kumusta sa lahat. Ang pangalan ko ay Jason. Kasamaang-palad ko ay napunta sa Harvard bilang isang undergrad. Iyan ay pagpunta upang i-cut sa labas ng aktwal na stream. At ngayon ako dito bilang isang lecturer sa departamento ng computer science. At ako pagtulong patakbuhin ang mga kurso may Scaz, David at Andy. ANDY: Hey guys. Andy sa aking pangalan. Ako talaga ang tanging Yale ang mag-aaral sa entablado ngayon. [Palakpakan] Ako sa Berkeley College, orihinal na mula sa Solon, Ohio. At ako ay isa sa mga bata kung saan, kailan ako ay dumating sa Yale, Talagang naisip ko na nais ko ay hindi kailanman may upang tumingin kailanman muli sa isang numero. At pagkatapos ay ako na natanto na kailangan mo parehong agham at QR kredito upang makapagtapos. At gayon ang aking freshman spring, kinuha ko isang klase, isang CS, intro CS klase dito sa Yale. Ako ay tulad ng, ito ay tulad ng talagang medyo cool. At habang ako talagang natapos deklarasyon bilang isang global affairs major, ang mga kasanayan Natutunan ko sa CS at programming ay kaya naaangkop sa anumang field pinili mong gawin. At ang staff dito sa Yale, Napuntahan namin kaya mahirap sa trabaho upang maghanda para sa iyo guys. At masaya naming inaabangan ang panahon na nakakakita lahat sa section at opisina na oras. Kaya oo. [Palakpakan] David J. MALAN: Salamat. Kaya lang bago nagsimula class, kami ay nagkaroon ng isang pagkakataon sa paglalakad sa paligid ng campus sa isang cellphone at kumuha ng ilang selfies sa form na video ng tunay ang aking unang tour ng campus Yale dito. At kaya naisip namin na gusto naming ibahagi ang isang magaspang hiwa ng eksaktong ito bilang Scaz at Andy at Jason kinuha ako sa buong campus. [Playback ng video] [SIRENS] -David. -Maligayang Pagdating sa Yale. Magandang upang makita ka. Nice upang makita ka. -Maaari Namin pumunta sa isang tour? -Hayaan Ni pumunta sa isang tour. -Road Tour. -Ang Sign ay may para sa isang habang. -Whah, CS50. -Hurry! Pumunta, pumunta, pumunta, pumunta. Ikaw ay dapat [hindi marinig] Harkness Tower. -At Nakita namin na ang isang pares ng oras. [Palakpakan] -Hanapin Out para sa bike! Ahh! Hi Frank. -Ano Up, guys? -kung Ka? Magandang upang makita ka. -Maligayang Pagdating sa mga video. Huwag kumilos masyadong nabigla. Ibig -I Silliman. Ahh! Nag nangyaring halos tatlong oras dahil Jason ay ice cream at Nutella. Kaya namin ang nakuha ko upang ihinto ang pabalik sa Silliman para sa ilang sandali. -Ito Ay hindi kahit na [hindi marinig] pa, lamang ang katotohanan na sila ay may ito dito ay napakahusay. Dude, may Nutella sa bawat pagkain. -There Ay masyadong nakaraang taon. -Yeah. -Tell marami tungkol sa Yale sa ngayon. Ngunit ko na ngayon na td banda roon. At iyon ay itinuturing na off campus. -Here Kami gothic architecture. Sikat World. Mayroon kaming ilang mga mas gothic architecture. At konstruksiyon, at higit gothic architecture. Hi. Ito ay kung saan namin ang pagkakaroon ng oras ng opisina Martes sa pamamagitan ng Huwebes sa Hogwarts, bilang [hindi marinig]. -Ang Lahat ng karapatan. Iyan na ang lahat para sa mga tour. Kami ay sa Yale University Law School, kung saan lecture ngayon ay tungkol sa maganap. Magtungo sa Hayaan. [END playback] David J. MALAN: At na magbibigay sa amin dito ngayon. Kaya kaya sa ngayon, kami ay nagbibigay-diin sa pseudocode, na kung saan ay ang Ingles-tulad ng syntax. Ito ay walang mga inireseta detalye. Ito lang ang mong gamitin ang ilang intuitive wika kung ikaw nais mong ipaliwanag kung ano ang gusto mong gawin. Ngunit sabihin magsimula ngayon upang transition ipaalam sa code, tulad ng karamihan sa mga tao ay sinasabi. Ngunit mas tiyak, ang isang bagay kilala bilang source code. Ito ang wika na ang mga tao isulat na mga computer ultimately-- marahil makalipas ang ilang bilang ng mga steps-- huli nauunawaan upang malaman kung paano gawin ang isang bagay. Na nakita mo ang isang sulyap sa ito ay marahil sa Miyerkules. Ito ay isang halimbawa na hindi kapani-paniwalang, underwhelming kapag tumakbo lamang na nagsasabing "hello mundo." At ito ay nakasulat sa isang wika na tinatawag C, na kung saan ay syntactically halos katulad sa isang pulutong ng iba pang mga wika na maaring hindi alam, ngunit maaaring may narinig ng tulad ng Java, at C ++, at Python, at Ruby, at ang gusto, at sa katunayan, bibigyan namin ng magkano ang gastos ng semestre gamit C, at pagkatapos ay patungo sa katapusan ng semestre, gusali sa ito, at pagpapasok ng anumang bilang ng iba pang mga wika. Kabilang sa mga ito PHP, at JavaScript, isang wika database na tinatawag na SQL. Ngunit sa C, kung ano ang makikita namin ito sa ilalim-up na pag-unawa ng eksakto kung paano computer sa trabaho, kung ano ang maaari mong gawin sa mga ito, at kung paano maaari mong malutas ang problema lahat ng mga mas mabisa sa pamamagitan ng mga ito layering na namin tinalakay sa Miyerkules, at standing sa mga balikat ng iba. Ngunit higit pa sa na sa darating. Ngayon tinitingnan namin ang isang mas simpleng kapaligiran, ngunit isang panimula magkamukha kapaligiran na kilala bilang simula sa pamamagitan ng aming mga kaibigan sa MIT Media Lab. Ito ay isang graphical programming language, simula, kung saan maaari mong i-drag at drop ng mga bagay na magmukhang mga piraso ng puzzle na pagkawingin lamang kung ito ay gumagawa ng lohikal o programmatic kahulugan na gawin ito. Ngunit ito ay pagpunta sa nagpapahintulot sa amin upang magkaroon ng isang pag-uusap tungkol sa lahat ng parehong programming batayan na ang ilan sa iyo Maaaring alam na, na marami sa inyo ay maaaring hindi alam ng anumang bagay ng kahit hindi upang nabalaho sa putik na lantaran, sa intellectually hindi kawili-wili syntax ng semicolon, at panaklong, at quote, at ang gusto. Lahat ng kung saan, maagang on, ay isang kaguluhan ng isip sa kung ano ang mga kagiliw-giliw at tunay na kapaki-pakinabang na mga ideya. Kaya sabihin kumuha ng isang mabilis sulyap sa kapaligiran dito, kaya na alam mo kung ano ang naghihintay. At sa katunayan, sa gitna ng mga games namin maaaring i-play ay nakasulat ng ilang mga programa sa pamamagitan ng sariling mga dating mag-aaral CS50. Isa sa mga ito, sa sarili ko, makikita ko na ang isang ito nakasulat sa graduate school para sa akin. Kung kaya kong gawin ang isa volunteer sino ang nais na i-play isang laro para sa unang pagkakataon. Oo naman. Lumapit sa up. Ano ang inyong pangalan? Madla: Angela. David J. MALAN: Angela, dumating sa up. Kaya simula ay na-out para sa ilang taon. At kapag ako ay nagtapos sa paaralan, Ako ay krus nakarehistro sa MIT, pagkuha professor Mitchel Resnick ni kurso sa teknolohiya pang-edukasyon. At kami ay napaka unang sa pagitan ng mag-aaral sa mundo na aktwal na beta test scratch. At ang aking mga proyekto ay kung ano Angela ay marikit nagboluntaryo ngayon upang i-play na tinatawag Oscartime. Kaya ako pagpunta sa magpatuloy at i-click ang double ang icon dito. Ito ay pagpunta upang buksan ang isang programming kapaligiran na sa lalong madaling panahon kami ay makikita sumisid sa. Pupunta ako sa full-screen ito para sa Angela, dito. Pupunta ako sa hit ang green bandila sa sandali lamang. At pagkatapos ay isang buong pulutong ng mga basura ay pagpunta sa mahulog mula sa langit. At ikaw ay pagpunta upang gamitin ang mouse para talagang i-drag at i-drop ang basura sa basurahan ni Oscar. Kaya kung nais mong magpatuloy at i-click ang ang berdeng bandila, ang laro ay magsisimula. [MUSIC nagpe-play] Oh, pag-ibig ko trash. Anumang bagay marumi o marumi o maalikabok. Kahit ano punit-punit o bulok, o kalawangin. Oo, mahal ko trash. Kung talagang nais na makita isang bagay na pambasura, tingnan ang mga ito. Mayroon akong dito ang isang magnanakaw iyan ay sira-sira at pagod. Lahat ng ito ay puno ng mga butas pagpipigil at ang laces ay punit-punit. Isang regalo mula sa aking ina sa araw na ako ay ipinanganak. Gustung-gusto ko ito dahil it's-- David J. MALAN: --green mga araw na lang maging ibinabato ang lahat ng bagay sa basurahan. At kaya kung ano ang isa sa mga Sariling did-- staff CS50 Jordan, na maaari ka matugunan today-- ay talagang na-update na ito para sa mga panahon ngayon. At upang payagan ako upang buksan up isang remix sa halip para sa Angela. At kami na i-play ito sa halip para sa ng ilang sandali kung saan ngayon ikaw ay pagpunta sa may upang magpasya sa pagitan ng kung magtapon ng isang bagay sa basura, o recycle ito o compost ito. Kaya mayroong isang piraso ng presyon sa iyo upang makakuha ng ang karapatan na ito sa harap ng iyong 392 na 497 mga kaklase dito sa hall, kung gagawin mo. [Playback ng video] [MUSIC nagpe-play] -Oh Mahal ko trash. Anumang bagay marumi o marumi o maalikabok. Kahit ano punit-punit o bulok na o kalawangin. Oo, mahal ko trash. Kung talagang nais na makita isang bagay na pambasura, tingnan ang mga ito. Mayroon akong dito ang isang magnanakaw iyan ay sira-sira at pagod. Lahat ng ito ay puno ng mga butas at ang laces ay punit-punit. Isang regalo mula sa aking ina sa araw na ako ay ipinanganak. Gustung-gusto ko ito dahil ito ay trash. Oh, pag-ibig ko trash. Anumang bagay na marumi, o marumi, o maalikabok. Kahit ano punit-punit o bulok na o kalawangin. Oo, mahal ko trash. Narito ang ilang higit pang mga bulok na bagay-bagay. Mayroon akong dito ilang newspaper-- [END playback] David J. MALAN: --are talagang compost. Ngunit salamat sa aming mga volunteer, Angela. Kami ay may isang stress ball para sa iyo dito pati na rin. Kaya salamat sa iyo. Kaya ang isang ito ay isinulat sa pamamagitan ko. Ngunit ngayon ng isa sa pamamagitan ng isang aktwal na dating mag-aaral na ipinatupad na ito, na kung saan ay isang laro. Lahat sa wikang ito na tinatawag na Simula, na bibigyan namin ng lalong madaling panahon alisan ng balat pabalik ang mga layer ng. Ngunit kung gusto namin like-- paano tungkol sa isa pang volunteer? Right. Lumapit sa up. Ano ang inyong pangalan? Sulyap? Lance. Lance, dumating sa up. Masaya akong makilala kayo. Lumapit sa ganitong paraan. Kaya maaaring magkaroon ng isang isang ito Ang temang pamilyar sa ilan sa inyo. Ngunit makikita mo rin na doon ay maaaring maging interactivity, kung saan maaari mong aktwal na maging ang papel na ginagampanan ng mga karakter sa paligid ng paglipat. Masaya akong makilala kayo. David. Ibinibigay ko sa iyo, Pikachu. Mga tagubilin ay tungkol sa na dumating sa screen. Ngunit sa maikling salita, ikaw ay pagpunta sa nais na mahuli ang mga malasa mga bagay-bagay, at maiwasan ang mga bomba at iba pang mga bagay-bagay. Gamit ang cursors lahat. Kaya pindutin ang space bar. -Pikachu. David J. MALAN: catch ang mga bagay-bagay sa kaliwa, hindi mahuli ang mga bagay-bagay sa kanan. [MUSIC nagpe-play] Kaya isa huling isa dito. Kung kami ay maaaring magkaroon ng isa higit volunteer dito. Naisip naming muling likhain ang isang bagay from-- nasa dilaw shirt-- mula Miyerkules. Ano ang pangalan mo? Mary, dumating sa up Maria. At pagpapabalik sa Miyerkules namin ipinakilala ang paniwala ng binary, at binary na mga bombilya. Ito ay tunay na ngayon ng isang pagpapatupad ng na parehong interface na nagkaroon kami sa iPad na may liwanag bombilya, ngunit dito digitally render. At sa halip na gawin ang isang stress ball-- Natutuwa akong makilala kayo, David. Nagdala kami ng ilang ilaw bombilya mula sa Cambridge. Kung maaari, pag-click sa mga bombilya sa on at i-off ang mga ito, lumapit sa mga binary representasyon ng sabihin 256. At makikita mo sa gitna, ang kasalukuyang tally. Kaya na ang isa ay sa. Kaya ang pinakakaliwa bit ay sa. MARY: Oo, [hindi marinig] David J. MALAN: Well, kaya kami just-- oh. Kaya ito ay ang 128 column. Kaya kami ng hanggang sa 128. Nakakuha kami upang makakuha ng 256. At maaari mong manghihinang sa at off, hindi sang-ayon. O maaari mong pindutin na 128 higit pang mga beses kung gusto mo. Lahat ng mga karapatan, mabuti. 24. Oo, nakakakuha ng mas malapit. Mas malapit! Oh, kung ano ang problema pagkatapos? Kaya kung ano ang isyu? Kaya kung ano ang kailangan namin upang malutas ang problemang ito? Kaya kailangan namin ng isa pang bit. At ito ay ganap na ganap makatwirang sa katotohanan, di ba? Kung nais mong bilangin mula sa bilang 1 hanggang 2 sa 3 hanggang 4 hanggang 5, 6, 7, 8, 9 upang aktwal na roll sa 10, ikaw ay pagpunta sa kailangan ng isang karagdagang bit. Kaya sabihin aktwal rewind dito, at magkaroon ng with-- na ay malinaw naman nilalayong maging isang set up. Hindi mo maaaring gawin 256 na may isang bombilya lang. Kaya kung paano tungkol lamang ang numero 50? Number 50. Magaling. Ang isang malaking ikot ng papuri para sa Mary at sa kanya rin. Salamat sa inyo. Kaya ito topic-- intensyonal bilang na was-- ay talagang magbalik. Ang pinakamalaking halaga na maaari mong kumakatawan na may walong bits, o isang byte, sa katunayan ay 256. Ngunit hindi kung sinimulan mo pagbibilang mula sa 0, bilang namin mukhang patuloy na ginagawa sa pamamagitan ng pagkakaroon lahat ng off ang mga bits. Ngunit sabihin sumisid sa ang kalakip na ngayon hayaan pagpapatupad ng mga ito na kapaligiran, at mang-ulol hiwalay ang ilan sa mga ideya. Kaya sa isang sandali hindi namin tungkol sa upang makita ang isang ilang iba't ibang mga batayan programming. Ang unang na kung saan kami ay tumawag statement. Pagsunud-sunurin ayon ng pandiwa, kung ikaw ay. Pagkilos. Mga bagay na dapat gawin. At sa isang sandali makikita mo bloke na ganito ang hitsura. Sabihing "kumusta mundo," halimbawa. O maghintay ng isang segundo. O i-play ng tunog meow. At sa katunayan ang kapaligiran sa na kung saan kami ay pagpunta sa ay ginagawa ito ay tinatawag na mga scratch. At kung pull up ko scratch na walang preloading anumang mga aktwal na code, sabihin kumuha ng isang mabilis na pagtingin sa ito user interface, kaya na magsalita. Ang mga kontrol sa kung saan namin makipag-ugnay. Sa tuktok kaliwa dito ng screen, sa ibaba ng menu, kami ay may mga yugto, kaya na magsalita. Kaya simula ay kung ano ang namin ang tawag engkanto. Ito ay isang character. At siya ay maaaring maging kontrolado ng pagsulat ng mga programa laban sa kanya. At makikita niya magagawang kumilos pataas at pababa at pakaliwa at pakanan sa environment na ito, hindi lamang sa pamamagitan ng paggalaw sa mga mouse, ngunit programming. Maaari ko bang sabihin sa kanya maglakad karapatan, walk kaliwa, pataas, pababa o mga katulad. At maaari ba kitang ipakilala sa iba pang mga sprites o mga character pati na rin. Sa katunayan, sa ibaba dito ay kung saan makikita mo ang iyong listahan ng mga sprites. Sa ngayon, mayroon akong lamang isa, ngunit maaari kong lumikha ng higit pa, at ang mga ito ay lalabas ng roon. Kaya kung i-rewind sa iyo para sa isang sandali, tulad ng Oscartime-- halimbawa, Oscar, sa kaliwa, trash Maaari, ay isang engkanto. At ang bagay sa gitna, ang recycling bin, ay isa pang engkanto. At ang compost bin ay isa pang engkanto. At sa bawat piraso ng basura o recyclables noon ay nahulog mula sa langit ay din ng isang engkanto, ang bawat isa ay ay program paisa-isa. Paano mo program? Well, sa paglipas dito sa kanang bahagi ay ang mga script area. At ito ay kung saan maaari naming i-drag at i-drop piraso ng puzzle. Sa isang linggo, ito ay magiging kung saan equivalently namin isulat ang code sa higit pa sa isang keyboard, ngunit para sa sa araw na ito makikita ng pag-drag at pag-drop mga piraso ng puzzle, ang palettes para sa kung saan maaari lahat ay matatagpuan dito mismo sa gitna. Sa katunayan, sa gitna dito may isang buong grupo ng mga kategorya ng mga puzzle piraso o bloke. Isa ay may kaugnayan sa kilos, hitsura, tunog, ng panulat pagpunta up at down, data, control kaganapan. Hindi lubos na sigurado pa ano ang ibig sabihin ng lahat ng mga ito, ngunit makikita mo na sila na tinanggal mabuti ikinategorya. At magsulat ng isang programa sa Simula, ni gawin eksakto na ipaalam. Pupunta ako sa magsimula sa ilalim Mga Kaganapan, at i-drag ang isang ito dito. Kapag nag-click green flag. Ngayon kung bakit ang isa? Well isipin na ang aming mga boluntaryo dumating up, ang unang bagay na ako o sila ay i-click ang berdeng na bandila sa tuktok na kanang sulok. At iyon ay nangangahulugan lamang simulan ang programa. Kaya kapag nangyari na kaganapan, kung ano ang gusto kong gawin? Pupunta ako sa pumunta sa ilalim ng hitsura, at ako pagpunta sa gawin "kamustahin." At ako pagpunta upang baguhin ito at sabihin ng isang bagay tulad ng "hello Yale." At ngayon ako pagpunta sa mag-zoom out, i-click ang berdeng flag, at voila, ko na nakasulat sa isang programa. Ito ay hindi lahat na mga kapana-panabik pa lamang, ngunit ito ay eksakto kung saan ang bawat isa ng nagsimula ang mga may-akda, parehong may Pikachu, at ang binary bombilya, at Oscartime, at upang mas maraming mga halimbawa. Magsisimula ka sobrang simple, at pagkatapos ay simulan mo upang i-layer, at idagdag sa mga tampok at pag-andar. Kaya ano ang mga layers pagpunta sa binubuo ng? Well, sa kabila pahayag, bibigyan din namin magkaroon ng mga bagay na kaunti pa fancily tinatawag na Boolean Expression, pagkatapos ng isang tao na may pangalang Bool. At isang Boolean expression ay lamang ng isang expression na alinman true o false, oo o hindi, 1 o 0. Anumang polar opposites tulad na. Ito ay alinman sa totoo o hindi. Ngunit kami ay pagpunta din na makita mga na maaaring maging tulad nito. Kaya halimbawa, ay ang mouse down? Ang mga ito ay ang uri ng mga katanungan, kung ikaw ay. Ang mouse ay mag-down, totoo o ito ay hindi, hindi totoo. 1 o 0, kung ikaw ay, kaugaliang ay ang paggawa ng mga mapa. True ay 1, false ay 0. Well kung ano ang tungkol sa mas mababa kaysa sa ito? O kaya, ito ay mas mababa kaysa sa ito? Iyan ang isang katanungan ng mga uri. At kung ikaw ay ilagay ang dalawang numero sa doon, mag-x ay magiging mas mababa kaysa sa y o katumbas ng y, o mas malaki kaysa sa y, ngunit ito block kami makita, ay lamang pagpunta upang sagutin ang tanong, ay ito na mas mababa kaysa sa? Maaari din nating makita ang isang bagay tulad nito. Paghawak payo mouse. Kaya sa simula, maaari mong hilingin ang tanong, ay ang mga engkanto hawakan ang pointer ng mouse? Iba pang mga salita, ay ang cursor agaw sa ibabaw ng takip, o ang katumbas? Susubukan naming makita anding mga bagay nang magkakasama. Maaari mong hilingin ang dalawang tanong na ito, at siguraduhin na pareho ng mga ito magbibigay sa iyo ng oo o tunay na mga sagot bago paggawa ng desisyon na gawin ang isang bagay. Ngunit pagkatapos ay kung paano mo gumawa ng mga desisyon? Well, kami ay may mga kundisyon na ito. At nakita namin ito sa aming halimbawa ng mga libro ng telepono. Naghahanap sa kaliwa o tama para sa Mike Smith. At sa kalagayan, mo gawin ang isang bagay potensyal, kung ang isang Boolean expression ay totoo. At sa katunayan, ngayon mapansin ang hugis. Mayroong ito placeholder ngayon sa overhead kung saan maaari naming fit-- kung i-rewind ko ang isa slide-- na hugis. Ito ay hindi lubos ang parehong laki. At sa katunayan, makikita mo na Scratch resizes bagay magilas upang magkasya mga piraso ng puzzle, ngunit ang hugis ay kung ano ang mahalaga. Ang bagay na ito ay ganito ang hitsura na iyon, at sa katunayan ito ay humigit-kumulang sa parehong hugis na dapat magkasya sa doon. At kung gusto naming gawin ang isang bagay sa ganitong paraan o na paraan, kung o ibang tao, kami ay may malaking suliranin na ito piraso sa scratch rin. Ngayon ipagpalagay na gusto mo upang gawin kung, iba kung, o iba pa. Sa ibang salita, ang isang tatlong paraan ng tinidor sa kalye. Well kung ano ang maaari mong gawin sa pamamagitan lamang ng glancing sa mga ito? Maaari bang kumuha ito piraso puzzle, at ito ay hindi mukhang upang magkasya, ngunit muli, sa simula ay pagpunta upang muling i-size mabuti para sa amin. Kaya kong magsimula sa layer mga bagay na ito nang sama-sama. Kaya ngayon ay mayroon akong isang tatlong-way tinidor kung ito ay totoo, gawin ito. Iba Pa kung ang iba pang mga bagay ay totoo, pumunta sa ganitong paraan, pumunta sa ibang ito ng iba pang paraan. At sa The Muppet Movie, ang tinidor sa kalye, kaya na magsalita, pagitan ng Yale o Stanford, ay eksakto na, lamang ng dalawang mga kondisyon. Alinman pumunta sa ganitong paraan, iba pumunta na paraan. Well, loop din umiiral sa programming. At ginagamit namin ang mga nasa klase at sa pseudocode code, at tiyak sa mga Scratch programa magpakailanman. Scratch na ito ay may malaking suliranin piraso na Makikita lang gawin mo ang isang bagay magpakailanman. At minsan ay gusto mong upang gawin ang isang bagay magpakailanman. Ito ay hindi kinakailangan ng isang bug, ito ay dahil gusto mo ng isang orasan upang panatilihin ang pagpunta, o isang laro upang panatilihin ang pag-play. O maaari mong tukuyin ang isang tiyak na bilang ng mga hakbang, tulad ng may ganitong mga umuulit na block dito, na kung saan ay ulitin ang isang bagay 10 ulit. Maaari naming itakda ang mga variable, magpapadala kami sa lalong madaling panahon makita. At gamit ang mga variable, katulad sa espiritu sa algebra, tulad ng x, o y, o z. Ito ay isang bagay symbolic na maaaring tindahan ilang mga halaga, ang ilang mga piraso ng impormasyon, na maaari ninyong na tandaan para sa ibang pagkakataon. Best halimbawa ng mga ito ay maaaring maging isang laro kung saan mayroon ka ng isang marka, tulad ng sa Pikachu. Gaano karaming mga piraso ng cake at watnat ay mong abutin? Well, na maaaring maging isang variable tinatawag na marka na nagsisimula sa 0. At pagkatapos ay sa bawat oras na namin nahuli ng isang piraso ng cake o kendi, o mga katulad, ito ay makakakuha ng incremented. Ito ay makakakuha idinagdag sa isa sa isang panahon. At sa gayon ang isang variable tindahan ng piraso ng impormasyon na tulad ng. Pagkatapos ay may array, at kami ay bumalik sa mga ito sa isang linggo o dalawang oras, ngunit isang array ay uri ng tulad ng isang imbentaryo o isang maletin, sa loob ng kung saan maaari kang maglagay ng virtual na mga bagay. Ito ay nagpapahintulot sa iyo na tindahan ng mas maraming sa isang piraso ng impormasyon. At na maaaring maging kapaki-pakinabang kung sa laro, ikaw ay uri ng paglalakad sa paligid pagpili ng mga bagay-bagay up. At siguro nais mong panatilihin ang ang lahat ng mga piraso ng cake sa paligid, at hindi lamang kumain mga ito ng isa-isa. At pagkatapos ay may isang may interes tayuan bibigyan namin ng dumating sa tinatawag na pag-andar o pamamaraan. At kahit na kami ay pagpunta mas mabilis dito, ipapakita namin makita na ang mga ito ay isang napaka natural na solusyon sa mga problema na kami ay pagpunta nakakaharap. Bilang simulan ang aming mga programa pagkuha ng mas malaki bibigyan namin ng magsimula sa paunawa ng mga pattern sa ang code na kami ay sumusulat, ang mga piraso puzzle hindi namin pag-drag at pag-drop. At sa lalong madaling mapansin mo ang iyong sarili paggawa isang bagay muli at muli, o mas masahol pa pagkopya at pag-paste ng programming code na iyong isinulat, iyon ay marahil isang pagkakataon na kadahilanan out kahit anong patuloy mong pagkopya at pag-paste, at inilagay ito sa isang bagay na tinatawag na isang "function." Ngunit higit pa sa mga nasa magkano higit pang detalye bago ang haba. At pagkatapos ay may kahit may interes tampok. Para sa mga mo mas kumportable, o pagkuha APCS o katumbas, Scratch talagang sumusuporta bagay tulad ng mga thread at mga kaganapan at higit pa. Kaya mapagtanto na ito ay may isang medyo mataas na kisame, kahit na ito ay din tunay malawak ang naa-access sa mga kamag-anak na hindi kailanman program bago. Kaya nga, sabihin kumuha ng isang pagtingin sa isang simpleng programa o dalawang. Kami ay tumingin sa kung paano namin baka kamustahin na may scratch. Hayaan akong sige at buksan up ng isang maliit na mas kawili-wiling programa na sinulat ko in advance. At ang isang ito ay tinatawag Pet ang Cat. Ang lahat ng mga programang ito ay na makukuha sa website CS50. Sa katunayan, na doon. Kaya maaari mong i-download kanila, at maglaro sa kanila, at sa pamamagitan ng Problema Itakda 0, na ay din sa website ng kurso, ikaw ay hinihikayat sa pamamagitan ng paglalakad sa mga ito. At bukod dito, kami ay may isang bilang ng walk-through ng mga video online na ako at Team CS50 tunay na maglakad sa pamamagitan ng bawat isa sa mga halimbawa sa isang mas mas mabagal na bilis, isang napakabilis forwardable, o rewindable mong bilis, sa gayon ay maaari kang maglakad sa pamamagitan ng mga sa iyong paglilibang rin. Kaya dito ang mga scratch sa kaliwa. Narito ang isang program sa tamang na ko na naka-pre-made. Kaya hayaan mo akong mag-zoom in sa mga ito. At maaaring ang isang tao sa Ingles, pag-alam ano ang alam mo, lamang mula ngayon bilang sa kung paano gumagana ang mga scratch, uri ng sabihin sa isang parirala o pangungusap English, kung ano ang ibig tila gawin sa programang ito? Oo, sa orange shirt. Madla: [hindi marinig] David J. MALAN: Oo, kung ang iyong cursor ay sa scratch ang mga pusa, i-play ang isang meowing tunog. Ngunit mapansin kung paano namin ipahayag na. May tila isang loop doon, magpakailanman. At pagkatapos ay may isang kalagayan, ang kung expression. At sama-sama, kung ano ang ibig sabihin ng mga? Ito ay nangangahulugan na ang program na ito ay lamang ng palaging pagtakbo, at ito lamang laging naghihintay at panonood at pakikinig para sa akin upang ilipat ang aking mouse sa ibabaw ng mga pusa. Dahil sa bawat oras na ko na, tulad ng imungkahi sa iyo, ito ay pagpunta sa gawin ito. Hayaan akong magsimula sa programa. Walang tila na maging nangyayari, ngunit pansinin kung paano ito ay naka-highlight sa dilaw na linya ngayon. Iyon ay nangangahulugan lamang ito ay tumatakbo. At dahil mayroong isang magpakailanman loop, ito ay tumatakbo pa rin. Kaya ipaalam sa akin ilipat ang aking cursor sa scratch. [MEOW] [MEOW] At kung ilipat ko ito off, [MEOW] ngayon ito hihinto, kundi ng program tumatakbo pa rin. [MEOW] At kaya, karapat-dapat sambahin. [MEOW] Kaya ng magbukas ng ipaalam bahagyang mas advanced Halimbawa tinatawag Huwag Pet ang Cat. At ngayon sabihin makita kung ano ang mangyayari dito. [MEOW] meowing. Kaya ito ay isang maliit na sa auto pilot, kung ikaw ay. --pet ang pusa. Siguro kung bakit. [Dagundong] [MEOW] Kaya kung paano ginawa ang gawaing ito? Well, maaari mong uri ng dahilan sa pamamagitan nito intuitively, marahil. Ngunit tingnan natin ang aktwal na code. Kaya muli, kapag ang berdeng bandila ay na-click, gawin ito sa habang panahon. Ano ang gusto mong gawin magpakailanman? Well, kung hinahawakan mouse pointer, pagkatapos i-play isang tunog na tila tinatawag Lion 5, na nasa loob ng proyektong ito, iba pa i-play ang sound meow, at pagkatapos maghintay ng dalawang segundo, kaya na ito ay hindi meowing walang pahinga. Sa katunayan, maaari mong mabilis na simulan inisin ang iyong sarili at ang iyong mga kasamahan sa silid. Alisin ni block na ito Hayaan. At pansinin kung ano ang magaling tungkol sa scratch. Mga bagay na lamang ang uri ng drag and drop at pagkawingin. Kaya muli, ito ay lumalaki sa punan kung ano ang iyong gusto. Ngunit kung ako alisin ito, at pagkatapos ay hit play, [COMPUTER BLIP SOUND] --it ay uri ng balakid sa paglipas ng mismo, dahil ito ay literal ginagawa kung ano ang ako sinasabi. Sinasabi ito magpakailanman maglaro ang tunog, ngunit Hindi ako nagbibigay ito ng isang pagkakataon upang matapos. At sa gayon ay magiging isang bug. At iyon ang dahilan kung bakit nagkaroon kami ang bagay na ito sa dito ngayon. Kaya sabihin aktwal na simulan mula scratch-- ipaalam uri ng pun bahagyang intended-- na kung saan kami ay mayroon na ngayong mga cat ilipat. Kaya ako pagpunta sa gawin ito sa mabilisang. Pupunta ako upang mag-zoom in dito, lamang upang makakuha ako nagsimula sa Kaganapan. At ang nag-click green flag. At mayroong iba pang mga paraan upang simulan ang mga script. Kami ay pagpunta sa panatilihin itong simple dito. At ngayon ako pagpunta sa pumunta maaga at pumunta sa ilalim ng Control. At muli, kung nakalimutan mo kung saan bagay na ito ay, i-click lamang sa paligid, at sa huli mong mahanap ang mga ito muli. Kaya gusto kong magpakailanman gawin kung ano? Gusto kong gamitin ang mga kilos block na ako kung mayroon na, ilipat ang 10 mga hakbang. Kaya sabihin makita kung ano ang mangyayari dito kung i-play ko ito laro. Sa kabutihang palad ito ay hindi pumunta masyadong malayo. Maaari pa rin ba akong uri ng grab sa kanya sa buntot at hilahin siya pabalik. Ngunit ang program ay tumatakbo pa rin, kaya siya ay uri ng pakikipaglaban sa akin. Ngunit gusto ito ay uri ng magaling kung ako pasubali ayusin ito sa code. Dahil ito ay not-- tunay na ito ay talagang hindi isang masayang laro para sa sinuman ng anumang edad. Kaya sabihin subukan upang ayusin ito sa pamamagitan ng ipaalam pagkakaroon ng ilang mga uri ng mga kondisyon. Kaya ako pagpunta sa pumunta sa ilalim Control, at pagkatapos ay kung. Gusto ko ang ideya. Kaya pagkatapos ng paglipat ng 10 mga hakbang, if-- hayaan mo akong pakiramdam kung nasaan ako. Pupunta ako sa pumunta sa ilalim ng Pagramdam, at pagkatapos ito ay ganito ang maaari kong pumunta dito. hilera na ang mga tugma ng hugis. Sukat ay hindi, ngunit ito ay pagpunta sa paglaki upang punan. At ngayon ito ay isang maliit na menu. At ngayon mouse pointer-- hindi ako gusto ang mouse, gusto ko ang mga gilid. Kaya sa simula ay smart sapat upang malaman kapag ang isang engkanto ay pagpindot sa mga gilid. Ano ang gusto ko sa kanya upang aktwal na gawin? Hayaan akong magpatuloy at baguhin paggalaw. Alam mo kung ano? Pupunta ako sa may kanya umikot. Kaya sa 15 degrees ay hindi talagang pagpunta sa makakatulong sa akin. Gusto ko sa kanya upang i-paligid at pumunta sa iba pang mga paraan. Kaya sabihin makita kung ano ang mangyayari dito, kung ako pindutin-play ngayon. OK, uri ng tangang naghahanap, ngunit ito ay ginagawa kung ano mismo ang sinabi ko. At ito ay umiikot ang buong engkanto. Ngayon ito ay lumiliko out maaari kong ayusin ito. At hindi ko alam kung paano upang ayusin ito sa unang. Uri ako ay upang futz paligid at makita ang pinakamahusay na paraan upang gawin ito. Ngunit kung pumunta ako to-- tingnan natin, motion. Oh, natagpuan ko ito. Sa totoo lang, I-set ang Pag-ikot ng Estilo. Sa kaliwa, kanan, o hindi i-rotate, o sa buong paligid. At ito ay lumiliko out na kung ano ang gusto ko. At ako pagpunta sa ilagay ito ay hindi ang aking mga loop, dahil hindi ko na kailangan upang i-set ang estilo ng pag-ikot ng maraming beses. Pupunta ako ilagay ito sa pinakatuktok ng ang program na ito upang ito ay makakakuha ng set-sabay, at pagkatapos Naaalala. At ngayon ako pagpunta sa subukan ito muli. Hayaan akong titigil sa programa. At ngayon na naayos na bug. Kaya ako iteratively pagpapabuti sa mga ito. Ang programa ay ang pagkuha ng isang maliit na mas kumplikado at mas malaki, ngunit ako pagkuha hakbang na sanggol kaya na magsalita, at maliit na kagat sa labas ng problema upang makakuha ng mas mahusay na ito at mas mahusay. Ngunit ito ay masyadong, ay uri ng pilay. Alam mo kung ano? Gusto magtanong sa isang tao na may isang talagang magandang, Gusto frightful boses na dumating up? May isang tao na may isang boses. Uh, oo. Lumapit sa up. Sa green shirt. Kaya ito ay lumiliko out mayroong ilang mga iba pang mga masaya mga bagay-bagay, aesthetics at tunog magkamukha. Narito ang ngiyaw. Ako mag-click sa tab na Mga tunog. [MEOW] Mayroong ang ngiyaw. [MEOW] [MEOW] [MEOW] --actually record ang isang bagay ng ating sariling dito. Kaya sabihin gawin eksakto na. Sa halip na gamitin ito pusa sound, sabihin sige dito, at ano ang pangalan mo? Nick, Natutuwa akong makilala kayo. Ito ay David. Kaya sa isang sandali, pupuntahan ko na matumbok ang Record na pindutan. At kung maaari mo lamang sumigaw sa laptop, "ouch," parang ikaw lamang lumakad sa pader, na ay mas pinapahalagahan. 1, 2. NICK: Ouch! David J. MALAN: Kahanga-hanga. At ngayon, maaari gawin ang isang maliit na pag-edit dito. Pagpunta sa mapupuksa ang mga tahimik na bahagi. At sa tingin ko na maganda. Maraming salamat sa inyo. NICK: kasiyahan. David J. MALAN: Na ako pinalitan ng pangalan ito lamang ang "ouch," ngunit ngayon ako pagpunta sa bumalik sa aking mga script. At pansinin may katunayan ng tunog dito. At ako pagpunta sa sige at i-play ang sound ouch, at ako pagpunta sa gawin iyon kung ito ay pagpindot sa mga gilid lamang. At pagkatapos ay ako pagpunta sa Mayroon itong i-sa paligid. Kaya sabihin makita kung ano ang mangyayari dito. Sabihin pumunta sa full screen. [Playback ng video] -Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! [END playback] David J. MALAN: Kaya nauunawaan mo na kami ay nakakakuha ng isang maliit na mapalad. Pupunta ako sa may kanya ilipat tulad ng 100 mga hakbang sa isang pagkakataon. Ang epekto ng na sa ngayon ay pagpunta upang be-- [COMPUTER glitch SOUND] Kaya sa loob ng dahilan. Kaya ng pagkakataon na pinuhin na karagdagang kung talagang gusto naming. Kaya ipakilala ni isa pang konsepto ngayon hayaan. Upang hayaan mo akong pumunta sa isa na tinatawag na Nagbibilang tupa at paggamit ng isang bagay tinatawag na isang variable. Ito ay isang kaibig-ibig maliit na tupa, at Ako ay nagbago ang kanyang costume upang magsalita. Kaya kahit na ang default ay isang cat, maaari mong i-upload, maaari kang gumuhit, maaari mong gawin ang anumang bilang ng mga character sa iyong engkanto. Narito ang isang programa na pagpunta sa gawin kung ano ang sa Ingles? Muli Batay sa lamang kung ano ang alam mo na ngayon. Ano ang programang ito gawin? Oo, ito ay pagpunta sa count. Isang numero sa isang pagkakataon. Mayroon kaming tila Mayroon set na ito counter. Hindi ko alam kung ano na, ngunit marahil ito ay isang variable. Ito lamang ay isang lalagyan, x o y. Ngunit ang salita counter ay mas mapaglarawang kaysa xoy mathematician ni. Kaya maaari naming gamitin ang mga salita sa Ingles para sa mga bagay-bagay. Habang Panahon, nangangahulugan lamang panatilihin ang paggawa nito. Sabihin counter. Ngayon saan ito nanggaling? Well, ito lumiliko out na counter ay isang variable. Kaya ito ay lamang ng isa pang palaisipan piraso nilikha ko in advance. At kahit na ito ang mangyayari Hindi na dito ang parehong hugis, normal na nais mong sabihin isang bagay tulad ng hello here. Maaari mo ring i-drag ang isang variable kaya na iyon ang makakuha sinabi. Pagkatapos ko maghintay para sa isang segundo, ako baguhin ang counter-isa, incrementing ito sa pamamagitan ng pagdaragdag ng isa. Kaya na ang net na epekto ay kaibig-ibig pagbilang tupa. Kahit na ang pagbilang niya ang kanyang sarili. Ngayon ay masyadong mabilis pagpunta upang makakuha ng panganganak dahil siya ay pagpunta sa gawin ito tunay na walang hanggan, ngunit iyan ay kung ano mismo ang design program prescribes. Nagbibigay-daan sa subukan ngayon sa isa pang halimbawa na Pinakikinabangan ng isang variable. Ito ang isa na tinatawag na Hi Hi Hi, na ay hindi makakuha ng mga nakakainis na mabilis. Ngayon isa na ito ay may dalawang mga script. At kaya muli, kami ay pagkuha ng mga hakbang na sanggol. Nagsimula kami sa isang bagay na sobrang maliit, maidadagdag, idinagdag dito. Ngayon, gusto kong gawin ang isang bagay kahit na mas dynamic, kaya gusto ko na pakikinig para sa dalawang magkaibang mga bagay sa isang pagkakataon. Kaya sa kaliwa, kapag green flag ay na-click, Ako magse-set ng isang variable na sinulat ko in advance tinatawag Naka-mute. At nagkataon ako magse-set ito sa 0. Kaya simula ay walang tunay at false, ngunit ito ay may 0 at 1. Kaya ang maaari kong matantiya na parehong ideya. At pagkatapos ay magpakailanman, kung ang space bar ay pinindot, pagkatapos ay itakda ang mga variable sa 0. O sorry. Kung ang Space ay pipi, at kung naka-mute, ang variable, ay 0, pagkatapos ay itakda ang mga naka-mute sa 1, pa ang set naka-mute sa 0. Tila uri ng tulad ng hindi namin ito paggawa ng lamang at bawiin trabaho. Ngunit kung ano ang epekto? Sa bawat oras ko pindutin ang space bar, kung ano ang mangyayari sa aking mga variable na tinatawag na naka-mute, lohikal? Pagsunud-sunurin ng makakakuha Binaligtad. Ito ang mga pagbabago mula 0 hanggang 1, o 1 sa 0. Kaya kinuha ito ng ilang mga bloke upang ipahayag na, ngunit ang lahat Ako ginagawa ay toggling ang estado ng variable na ito sa 0 o 1, o 0 o 1 sa bawat oras ko pindutin ang space bar. Ngayon sa paglipas dito, kung ano ang ginagawa ang mga ito? Habang Panahon, kung naka-mute ay 0, kaya kung naka-mute ay hindi totoo. Kaya kung ito ay hindi naka-mute, ay ang semantics doon, i-play ang sound lion dagat, at sa tingin Hi Hi Hi para sa dalawang segundo, maghintay ng dalawang segundo. Kaya ngayon mapansin ang mga script ay epektibo pagpunta sa tumakbo sa parallel sa gayon ay maaari isa pakikinig para sa isang aksyon, ang iba pang upang gumawa ng isang desisyon batay sa pagkilos na iyon. At ito ay maaaring gawin ito sa habang panahon. [SEA LION BARKING] [SEA LION BARKING] Ito ay pagpunta sa gawin ito magpakailanman at [SEA LION BARKING] bilang lamang ng aking ginawa. At ngayon ito ay tumatakbo pa rin ngunit ko na "naka-mute" ang laro. [SEA LION BARKING] At na lahat ng tao na ito ay masyadong ngayon. Buksan ang isa pang halimbawa dito. Hayaan akong pumunta sa Mga Kaganapan, at ngayon ito kaibig-ibig masyadong. Ngunit mapansin ito ay may dalawang sprites. Kaya hindi lamang ng dalawang mga script sa isa engkanto, ngunit dalawang sprites. At kung ako mag-click sa asul na guy bilang ako ay mayroon, nakikita ko siya bilang isang programa hanggang dito na literal lang sabi na ito, kapag nakatanggap ako ng isang kaganapan, sabihin ng "Polo" para sa dalawang segundo. Kaya kung sakaling mo na nilalaro sa isang pool, ang laro Marco Polo, kung ang orange guy script ay anumang indikasyon, tila sa tuwing ako pindutin ang space bar, ano ang orange guy pagpunta sa gawin? Siya ay pagpunta sa sabihin "Marco." At pagkatapos ay ito ay isang bagong block. Hindi namin nakita ito bago, ngunit broadcast ng isang kaganapan. At ako ay maaaring tumawag ito kahit ano event ang gusto namin. Susubukan naming bumalik sa ito marahil bago ang haba. Ngunit ang pagsasahimpapawid ng isang kaganapan ay isang paraan para sa isang engkanto makipag-usap sa iba sa pamamagitan ng mahalagang pagpasa ito ang isang mensahe. Ito ay hindi isang message na nakikita mo. Ito ay hindi isang bagay na visual. Ito ay uri ng isang mensahe ng computer na ang iba pang mga tao ay nakikinig sa. Dahil sa katunayan, ang mga asul na guy, pagpapabalik ay walang kapag nag-click green flag. Sa halip Siya ay, kapag nakatanggap ako ng isang kaganapan. Kapag siya ay makakakuha ng kamay ang tala na ito sa klase, kaya na magsalita, siya ang dapat sabihin ng "Polo." At upang ang net effect ay na kapag ako pindutin ang berdeng flag, walang mangyayari. Ngunit kapag ako ay pindutin ang space bar, sabi niya "Marco," siya ay tumugon sa "Polo." Ngunit ang tanging engkanto Ako nakikipag-ugnayan sa ang isang orange. Kaya ito ay isang paraan ng uri ng pagdaan ng mga mensahe sa pagitan ng sprites at pagkakaroon ng mga ito na makipag-usap sa isa't isa. Ngayon tingnan natin ang isang huling ipaalam isa dito na tinatawag na mga thread. At napansin ito sa pamamagitan ng pag-play ito. Kaya ito ay dalawang sprites. Ibon ay uri ng lumilipad sa paligid. Siya ay nagba-bounce. Walang "ouch," ngunit parehong ideya. Ngunit ang pusa tila medyo smart. Ano ang cat tila ginagawa? At maghintay para dito. Ano ang cat tila ginagawa? Ito ay hindi lamang nagba-bounce. Siya sumusunod ay ang mga ibon. At kaya tila, may isang paraan gamit ang isang kumbinasyon ng mga bloke here-- at tingnan natin ang cat real mabilis ipaalam. Magpakailanman, kung hawakan bird, pagkatapos ay i-play ang tunog Lion 4, kahit na ano na. Narinig namin ito ng isang beses. Kung hindi man, point patungo sa ibon, at ilipat ang isang hakbang. Ngayon ang katotohanan na ito ay isa sa hakbang ay kung ano ang nagbibigay ng mga ibon isang piraso ng isang kalamangan sa simula, ngunit kung namin sa halip gumawa ito ng 10, halimbawa, para na ang bawat pag-ulit ng loop siya paglipat ng 10 hakbang ng oras. Kaya mas maraming espasyo. Tingnan natin kung ano ang mangyayari pagkatapos Hayaan. [LION dagundong] Hindi lahat na marami ng mas mahusay. Kaya sabihin subukan upang mapabuti ngayon hayaan sa mga isang maliit iteratively, at bumalik sa na kuru-kuro ng isang function. At sa katunayan isa sa mga pangunahing takeaways ng disenyo klase. Hindi lamang ng mga programa na trabaho sa pagsulat ng at na ay tama, ngunit ang mga ito ng mabuti dinisenyo. At disenyo ay mas subjective, at makakakuha ka ng mas mahusay na ito sa paglipas ng panahon. Ngunit tumagal ng ilang mga hakbang na sanggol patungo ipaalam nagsisimula sa isang programa na gumagana, ganap na, ngunit ito ay hindi tunay mabuti. Ito ay hindi masyadong mahusay na nakasulat. Kaya dito ang isang programa na ito. Ubo, ubo, ubo. Ano ang hitsura ng mga programa? Mukhang tama sa akin. Sinasabi Ito sopa para sa isang ikalawa, at pagkatapos na ito ay naghihintay. Pagkatapos ay sinasabi nito itong muli, pagkatapos ay naghihintay ito. Pagkatapos ay sinasabi nito itong muli, pagkatapos ay naghihintay ito. At pagkatapos ay ang programa nang kataon lamang nagtatapos, dahil walang loop. Ngunit kung bakit ito ay isang di-wastong nakasulat na programa? Kahit na kung hindi mo pa na-program bago? Tulad ng, kung ano rubs ang maling paraan, marahil dito? Oo? Madla: [hindi marinig] David J. MALAN: Eksakto. Ikaw ay paulit-ulit na ang iyong sarili muli at muli. At literal, ako kopyahin at ilagay dalawa sa muli at muli ang mga bloke. At na eksakto ang uri ng kaliwanagan ng isip suriin na ikaw ay dapat na paggawa. Maghintay ng isang minuto. Dapat ko talagang ginagawa ito? Kaya kung ano ang mga ito kung ano ang mga malinaw na solusyon marahil? May ilang mga uri ng loop. At hindi ko lubos recall kung ano ang mga piraso ng puzzle ay, ngunit kung tumingin ako sa susunod na pag-ulit dito, sa katunayan, may hindi lamang ang magpakailanman loop, mayroong ulitin ang ilang bilang ng beses. At kaya tinukoy ko na tatlo. At ngayon mapansin kung magkano tighter, kung paano mas maikli at malinaw ang program na ito ay. At kung iisipin, kung paano mas maintainable. Kung gusto kong baguhin ang mga salita mula sa pag-ubo sa ibang bagay, tulad Achoo, tulad ang pagbahing niya. Pagkatapos ko bang baguhin ang mga ito sa isa lugar, at hindi tatlo. Kaya ito na nararamdaman mo bahagyang mas mahusay na disenyo. Ipaalam sa akin sa halip open ubo 2, ang aming ikatlong halimbawa. Pansinin bilang isang computer scientist, Sisimulan ko ang pagbibilang sa 0, karaniwang. Ngayon na ito hitsura ng isang maliit scarier sa una, ngunit ang epekto ay ang parehong. Ubo, ubo, ubo. Ngunit kung ano ang anyong panimula bago sa tuktok na bahagi ng programa? Tinanggal ko na ang mga sinasabi. Tinanggal ko na ang paghihintay. At kung ano ang mayroon ako plugged sa halip? Ang isang function. Ang pag-ubo block. Ibig kong sabihin, lantaran, mukhang uri ko ng isang ungas kung ako ay hindi lamang magsimula sa mga bloke na tila tinatawag "ubo," kung iyon ang lahat ng gusto kong gawin sa kanya. Ngunit iyon ay hindi na umiiral sa scratch. Sa halip ay nagpunta ako sa isa sa mga palette tinatawag Higit pang mga bloke dito, at i-drag ako sa malaking lilang bagay dito na nagbibigay-daan sa akin tukuyin ang isang function. Ito ay mahalagang hinahayaan akin lumikha ng aking sariling puzzle piraso na maaaring tinatawag sa anumang bagay ko gusto, na maaaring gumawa ng anumang bagay na gusto ko, ngunit ito ay nagbibigay ito ng isang pangalan. Ito ay nagbibigay sa akin ng isang bagong, purple piraso puzzle na ang ginagawa ngayon kahit anong sinasabi ko ito upang gawin. Kaya ito purple piraso dito ay tumutugon sa isang ito dito. At kung ano ang ginagawa nito? Ito sabi ubo para sa isang ikalawa, at pagkatapos na ito ay naghihintay. At ngayon na ang uri ng mga nilikha ko ng aking sariling pasadyang puzzle piraso, upang ito behaves eksakto na parehong paraan. Kaya ang maaari kong panatilihin ang paggawa nito. At sa katunayan, may pagpunta sa maging mas at mas maraming oportunidad para modularization, at para sa layering, kumplikado sa ibabaw ng bawat isa. Ngunit ito pangunahing ideya, sa katunayan sa problemang sinabi 0. Ano ang iyong pagpunta sa hinamon na gawin ay upang i-download sa simula, o lamang gamitin ito sa web, at magsaya sa mga ito lamang. Bibigyan ka namin ng isang hanay ng mga pangangailangan, ang pagkakaroon ng isang tunog, at ilang bilang ng mga piraso ng puzzle. Ngunit kailangan mong gawin ang eksaktong ito. At makikita mo mapagtanto na ikaw ay pagpunta sa gusto mong kumuha ng ilang mga hakbang na sanggol sa una, hanggang nakakakuha ang iyong programa mas at mas kumplikadong. Ngunit alang ay ito ang pinakamahusay na paraan na maaari kong gawin ito? Maaari ko maiwasan ito likas na hilig marahil, upang kopyahin at i-paste? Ngunit bago Problema Set 0, at bago namin ipinid, naisip gusto namin tumagal ng hanggang isang higit volunteer kung magagawa namin, para sa isang pangwakas na programa iyan ay marahil ang pinaka karapat-dapat sa lahat, na ibinigay venue ngayon. Halika sa down. Oo. Oo. Ano ang inyong pangalan? Naku. Iyon ang OK. Parehong bumaba. At hindi ko na ay tatalakayin ang anumang paraan sa loob na ang susunod na sampung segundo. Kaya dumating sa down. Halika sa down. Hayaan akong puntahan dito. Sige na. Ayos lang. Tingnan natin dito. Kaya mapansin real mabilis dito, kung gusto mong puntahan up. Gagawin namin ang dalawang round ng ito. At ano ang iyong pangalan? SABRINA: Sabrina. David J. MALAN: Sabrina at? YING GEE: Ying Gee. David J. MALAN: Ying Gee. Masaya akong makilala kayo pareho. David. Kaya aming huling halimbawa dito ay tinatawag Hardest Game Ivy. At bakit hindi na namin ang gagawin mo Level 1, at mong gawin Level 2. At kami na makita kung gaano kalayo lampas na ang tunay na kami pumunta. Nakasulat sa pamamagitan ng isang mag-aaral noong nakaraang taon, remixed sa pamamagitan ko upang ang mga ito ay pumunta sa paglipas na rin sa New Haven. At ako ay nagbibigay sa iyo ng isang game na pupuntahan magdawit paglipat ang mga arrow up at down, at pagkuha ng Yale upang tapusin ang linya. Ayan na naman. [Playback ng video] [MUSIC - NFL ON FOX TEMA SONG] [MUSIC - MC HAMMER, "U CANT Touch  ITO "] U ay hindi maaaring hawakan ito. U ay hindi maaaring hawakan ito. Hindi maaaring hawakan ito. Aking, ang aking, ang aking, ang mga hit sa akin ang aking musika kaya hard, gumagawa ako sabihin, oh, aking panginoon. Salamat sa iyo para sa pagpapala sa akin na may isang bale sa tula at dalawang hype paa. Iyan ay mabuti kapag alam mo na ikaw ay down. Isang sobrang gamot na pampatulog homeboy mula sa Oaktown. At ako na kilala bilang tulad at ito isang matalo uh, hindi mo maaaring hawakan. Sinabi ko Homeboy hindi ka U maaaring hawakan ito. Oo, na kung paano namin ay naninirahan at alam mong hindi U maaaring hawakan ito. Hanapin sa aking mga mata, tao. U ay hindi maaaring hawakan ito. Yo, hayaan mo akong dibdib ang funky lyrics. U ay hindi maaaring hawakan ito. Sariwang bagong kicks at pantalon. Nakakuha ka ito tulad na at alam mo na ikaw wanna dance. Kaya ilipat sa labas ng iyong upuan at makakuha ng isang lumipad na batang babae at mahuli ito matalo. Habang ito ay lumiligid hold sa usisa ng isang maliit na kaunti at ipaalam sa kanila kung ano ang nangyayari sa. Tulad na. Tulad na. Cold sa isang misyon upang hilahin pabalik. Ipaalam sa kanila na ikaw ay masyadong maraming at ito ay isang ilipat uh hindi mo maaaring hawakan. Yo, sinabi ko sa iyo na hindi U maaaring hawakan ito. Bakit ka nakatayo doon ang tao? U ay hindi maaaring hawakan ito. Yo, tunog sa bell paaralan, pasusuhin. U ay hindi maaaring hawakan ito. Bigyan mo ako ng isang kanta, paggawa ng mga ito ng isang ritmo pawis na kung ano ang ako nagbibigay ang mga ito ngayon. Alam nila kung makipag-usap sa iyo tungkol sa Hammer makipag-usap sa iyo tungkol sa isang palabas na hyped. At masikip mang-aawit ay pagpapawis kaya ipasa ang mga ito sa isang mic. O isang tape para malaman kung ano ito ay pagpunta sa tumagal at ngayon siya ay pagpunta sa paso ang mga tsart. Legit mag work hard o maaari ka rin umalis. Dahil alam mong hindi U maaaring hawakan ito. U ay hindi maaaring hawakan ito. Hatiin ito pababa. Itigil. Time Hammer. Pumunta sa daloy sa isang iikot kung hindi mo maaaring ilipat ito pagkatapos mo marahil ay patay. Kaya iwagayway ang iyong mga kamay sa ang air [hindi marinig] Ito ang mga ito para sa isang nagwagi sayaw sa na ito at ang iyong pagpunta upang makakuha ng mas payat. Ilipat slide ang iyong puwitan lamang para sa isang minuto natin lahat gawin ang paga. Oo. U ay hindi maaaring hawakan ito. U ay hindi maaaring hawakan ito. Mas mahusay ang makakuha hyped boy U ay hindi maaaring hawakan ito. Tawagan pabalik ang bell paaralan ay in. Hatiin ito pababa. Itigil. Time martilyo David J. MALAN: Iyon lang para sa CS50! Magkano kaya para sa pagsali sa amin na lang! Tingnan mo sa labas. [END playback] [Playback ng video] [MUSIC - "SEINFELD" TEMA SONG] -Hey David. -Hey, David. Paano ang pagpunta? Magandang trabaho, ngayon. Mayroon -Kaya-iisip tungkol sa kung ano ang ikaw ay pagpunta sa gawin para sa mga out jokes? -Hindi, Wala ang nakuha ko. Ano-if-- ano kung ito ang out joke? -tulad, Magbuklat cart? -Uh-Huh. Alam mo, ito ay tungkol sa wala. -Kaya Gusto, walang kuwento, walang conflict, walang resolution. Hindi ko maintindihan. Ano ang tungkol sa pagkatapos? -Wala. -Kaya Kami out joke ay tungkol sa wala, at kami ay walang aktor. Sino ang pagpunta sa maging sa mga ito? -Hindi, Hindi, hindi. Ibig kong sabihin, makikita ko na sa loob nito. -You'll Sa loob nito? -Yeah! Ang mga tao ay laging sinasabi sa akin ako ng isang character. -Well, Ibig kong sabihin, ito ay totoo. Ngunit sino pa ang pagpunta sa maging sa mga ito? Hindi na ito ay maaari lamang maging iyo. -Ikaw Maging sa loob nito, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, David, lahat. -Kaya Ito ay tungkol sa wala, at lahat ng tao sa loob nito? -Absolutely Wala. -Ang Ay walang katotohanan.