[MUSIC nagpe-play] Ito ang CS50-- Harvard pagpapakilala ni University sa intelektwal negosyo ng computer science at ang sining ng programming. At ang pangalan ko ay David Malan, at Lamang ako ay nag-iisip na ito umaga, ito ay naging amazingly 20 taon ngayon dahil ako huling nakaupo kung saan mo guys gawin ngayon. Ito ay 1996. Ako ay isang sopomor, at ako ay pagkuha CS50 para sa pinakadulo unang pagkakataon. At ako ay hindi kahit gotten up kabastusan upang dalhin ito sa aking sarili freshman year, bahagyang dahil sa ang panahon. Computer science sa akin ay uri ng tulad ng, meh. Ako ay isang bit ng isang geek na lumalagong up, ngunit ako ay hindi tunay pang intelektwal interes sa kung ano ang lumitaw na lamang ng isang buong grupo ng mga tao programming sa lahat ng oras. At ako ay natatakot na maging tapat. Ang mga kurso at computer science pa sa pangkalahatan ay may at sa ilang mga lawak, pa rin ay may ito reputasyon ng isang patlang upang mag-ingat, kung lamang dahil kaya marami sa amin hindi pamilyar sa mga ito at hindi sigurado sa mga ito. At ito tunay ay hindi hanggang ako nag-shop ito klase na sopomor fall-- at kahit na pagkatapos, ako lamang nakatala dahil ang professor-- isa sa aking unang mentors, Brian Kernighan ngayon sa Princeton-- pinapayagan sa akin upang gawin ang mga klase pass mabibigo. At sa katunayan, na ang dahilan kung bakit ngayon kami payagan at hikayatin mga mag-aaral na kumuha ng ganitong klase nakaupo / UNSAT. At lamang pagkatapos, sa pamamagitan ng katapusan ng semestre mapagtanto ko tulad, wow, ito ay hindi tulad ng isang hindi pamilyar na field. Sa katunayan, ito ay isang very empowering field, at higit pa excitingly, lalo sa susunod, gaya nang aking pagkaalis kurso sa Dramatic Arts 101 at Latin A at pagkatapos ay sa huli grad school arkeolohiya, ay ko talagang simulan upang makita ang intersections ng field, computer science, sa makataong sining, likas na agham, ang mga sining, medisina, at ang gusto. At kaya na kung ano lang ang kaya malinis at maayos tungkol sa computer science sa huli, tulad ng inaasahan namin makikita mo see-- ay nito applicability sa mga iba pang mga patlang, at kung paano maaari mong kumuha ng ilan sa ngayon at ang semester ni mga ideya at mga praktikal na kasanayan pabalik sa iyong sariling domain, at talagang galugarin ang intersection ng liberal arts at ang agham. Kaya 73% ng sa iyo, kung huling taon ay anumang indikasyon, na hindi kailanman kinuha ng isang CS course dati. Kaya kung, tulad ng sa akin, ikaw ay pakiramdam ng isang maliit na bit natakot, o deretsahan hindi ka talagang sigurado kung bakit ikaw ay kahit dito. Marahil mo lamang sinundan ang ilang kaibigan sa paglipas ng sa Sanders ngayon. Iyan ay ganap pagmultahin. Ang layunin dito ay sa kawit iyo at upang tiyakin sa iyo na kung ikaw ang pagtingin sa kaliwa at sa kanan, ikaw ay pagpunta upang makita classmates sa bilang kaunti o ng mas maraming karanasan na ikaw ay maaaring ang iyong sarili ay may. At sa katunayan, kami ay ibahagi ng ilang mga istatistika ibang pagkakataon ngayong araw bilang sa kung ano ang mga demograpiko ng ang klase ay karaniwang ganito ang hitsura. At bilang idinagdag reassurance-- at ito kami ibig sabihin dahil ako kinuha sa ibabaw ng kurso ilang taon ago-- in syllabus ng kurso ay this-- na kung ano ang sa huli bagay sa kursong ito ay hindi kaya magkano kung saan ang dulo up may kaugnayan sa iyong mga kamag-aral, ngunit kung saan ikaw ay nasa week 11, ang katapusan ng semester, end up na may kaugnayan sa iyong sarili sa linggo 0, na kung saan ay kung saan kami dito ngayon. At ito ay kung ano ko natanto lahat ng mga taon na ang nakakaraan. At alam ko ng maraming mga klase sabihin ito, ngunit ito ay lalong totoo sa computer science. Sa katapusan ng araw, ang patlang na ito ay hindi marunong bilang ito ay sa akin at maaaring maging sa iyo, ay talagang lamang tungkol sa paglutas ng problema. At dahil dito, ito ay hindi magkaroon ito applicability upang makakuha ng iba pang mga patlang. At sa katunayan, kung sinubukan naming upang dalisayin ninyo ang kahulugan nito, ito ay paglutas ng problema sa kanyang kakanyahan, sa palagay ko. Mayroong input-- kaya ano pa man ito ay na kayo ay sinusubukan upang malutas. Mayroong output, na kung saan ay inaasahan namin na ang solusyon sa problema. At pagkatapos, tulad ng gagawin namin saysayin ang tungkol sa computer science, mayroong ito itim na kahon sa middle na hindi mo kinakailangang kailangang pag-aalaga tungkol sa kung paano ito gumagana. Ikaw mismo sa huli baka ipatupad kung ano ang nasa loob na kahon. Ngunit para sa mga layunin sa araw na ito at higit pa sa pangkalahatan sa buhay, pag-aalaga sa lahat ng ka tungkol ay na ang mga problema makakuha ng malutas. At kung ano ang kurso na ito ay huli ay tungkol sa ay exploring intersection ng mga inputs at outputs, at ang mga tinatawag na algorithm, dahil kakailanganin namin sa lalong madaling panahon makita, na ipatupad kung ano ay sa ilalim doon, ang hood. Ngunit ang mga inputs at ang mga ito outputs-- ano ang na talagang ibig sabihin nito? Well, sa dulo ng araw, kailangan namin ang ilang mga paraan ng kumakatawan impormasyon. Ito ay lalong totoo sa isang computer, na bilang magarbong at kumplikadong bilang ito maaaring tila, ay isang medyo pipi aparato. Ito ay tumatagal ng electricity-- kung mula isang cable o isang baterya bilang input-- at pagkatapos ito ay gumagawa ng ilang mga preprogramed kasagutan sa screen. Ngunit paano namin makuha mula sa simulan upang matapos doon? Well, kung ano ang isang problema na lutasin? Well, siguro namin, sa sa simula ng anumang semestre, subukan upang kumuha ng pagdalo sa isang kuwarto tulad nito. Kaya maaari kong gawin tulad ng isa, dalawa, tatlo. O siguro, kung ginawa ko ito upang ayusin ng subaybayan ng myself-- upang subaybayan ang bagay- kaya kong mabilis na tumakbo sa labas ng mga daliri. Kaya maaari ko lang gumawa hash marks-- isa tao, dalawa, tatlo, apat, lima, anim, pito Walo. At ang lahat sa atin ay may marahil tapos na ito, kung sa iyong mga kamay o sa isang piraso ng papel. At ito ay talagang lamang isang bagay na tinatawag unary notation-- kung saan kung mayroon ka lamang ng isang titik sa iyong alpabeto, ang isa o hash mark sa kasong ito, para sa bawat input gusto mong upang mabilang, kailangan mong ilagay down na isa sa mga ito letters-- isa sa mga ito marks. Lahat tama. Iyon lang ang multa at mabuti at hindi lahat na kumplikado. Ngunit mga computer ay hindi lahat na mas kumplikado. Sa katunayan, karamihan sa inyo malamang alam kahit na sa iyo hindi tunay itinuturing kung ano ang ibig sabihin nito, na mga computer lamang maunawaan zero at ones-- ang tinatawag na binary system. Tayong mga tao, sa pamamagitan ng kaibahan, ay kaya higit na mas sopistikadong insofar naiintindihan namin zero sa pamamagitan ng nines. Ngunit kahit na binary ay, sa unang tingin, hindi lahat na pamilyar, ito ay lumiliko out ito ay katulad lamang ng mga sistema at ang mga ideya na namin na malaman. Kaya halimbawa, isaalang-alang na ito. Ito ay lamang ng isang pagkakasunod-sunod ng mga simbolo. At ang lahat ng sa iyo, kapag glancing sa ito, marahil tingin 123-- wala talagang kawili-wiling doon. Ngunit kung bakit ay ito ang bilang na ito, 123? Ito ay lamang glyph sa ang screen-- lamang kataga na ang isang tao ay maaaring magkaroon ng diwa o type. Ngunit kung ikaw ay tulad ng sa akin, ikaw marahil tandaan mula grade school na uri ng haligi o mga lugar dito. May lugar ang isang tao at ang lugar sa sangpu at lugar ang isang daang ni. At ang dahilan na ito ay 123 at hindi lamang ng isang pattern ng tatlong mga simbolo ay dahil, siyempre, kung kami magkaroon ng isang isa sa lugar daan-daan, gawin mo ang matematika ng 100 beses ng isa, at pagkatapos ay dalawang sa lugar sa sangpu. Kaya na ang 10 beses 2, at pagkatapos ay tatlong sa lugar ng isa na at iyan ay 1 beses 3. At kapag nagdagdag ka ng lahat ng mga yaon, Siyempre, makakakuha ka ng 100 plus 20 plus 3. Kaya namin na nagsimula sa pamamagitan lamang ng isang pattern ng symbols-- isang alphabet-- ngunit pagkatapos namin nai-map kahulugan papunta ito sa pamamagitan ng paraan ng mga hanay na ito. Well, ito ay lumiliko out na mga computer ay talagang hindi lahat na naiiba mula sa iyo at sa akin. Ngunit sa halip na gamitin kapangyarihan ng 10, kaya upang speak-- 1, 10, 100, 1000, 10,000 lugar at iba pa forth-- sila talaga lamang gamitin kapangyarihan ng 2-- kaya isa, 2, 4, at pagkatapos ay kung namin ilagay higit pang mga digit, 8, 16, 32, 64, 128, at iba pa. At kaya ito ay kung paano ang isang computer Gusto kumakatawan sa bilang 0, gusto lamang namin ang mga tao. 0, 0, 0-- at maaari mong marahil hulaan kung ano ang pattern ng mga zero at mga bago, kung ang isang computer ay maaari lamang magsalita 0 o 1-- ano pattern ay pagpunta upang kumatawan ang bilang namin ang mga tao malaman bilang 1? Yeah-- 0, 0, 1. Lahat tama. Kaya 0, 0, 1 ay kung paano namin kumakatawan 1, kaya maaari kang maging hilig pagkatapos ay upang kumatawan sa number 2, kung mayroon kang lugar ang apat at lugar ng dalawang ni bilang ang isang lugar, maaari mong sabihin, well, kung kami ay may isang 1 sa lugar ng isa na, at ngayon ay nais naming bilangin hanggang sa 2, maaari mong gawin ito at mag-iwan ito upang maging isang zero. Ngunit ng kurso na ito ay hindi kung paano decimal sistema ay gumagana sa alinman. Kung inilagay mo ang isang digit sa pareho ng mga haligi, nakuha mo na gawin ang arithmetic. Kaya kung ano ang numero ng ginawa ko sinasadyang lamang kumakatawan? Kaya ito ay 3, dahil 2 beses 1 plus 1 beses 1, siyempre, ay nagbibigay sa amin tatlo. Kaya ito ay magiging dalawa. bit Ang uri ng mga flips, kaya na magsalita, bilang 0 nagiging isang isa, marami tulad ng isang 9 roles higit at nagiging isang 0 kapag nagdadala ka ng 1. Ito pagkatapos ay magiging tatlong siyempre. Four-- isa pang kawili-wiling bagay mangyayari, kung saan ang mga roll sa paglipas ng at dalhin mo ang 1, kaya na magsalita. Kaya ito, siyempre, ay 4. Ngunit kung ikaw fast forward ngayon, ano ang pinakamalaking bilang ng pagpunta upang maging na ang isang computer ay maaaring kumatawan? Kaya ito ay lamang pitong sa kasong ito, right? Dahil ikaw ay may isang isa sa apat na, isang isa sa dalawang, isang isa sa isa. Kaya na 4 plus 2 plus 1. Kaya na ay nagbibigay sa iyo ng pitong. At sa katunayan, ay ito mukhang sa unang tingin na ang mga computer ay maaaring bilangin walang mas mataas kaysa ito. Ngunit ito ng kurso ay hindi totoo. Ano ang gagawin namin mga kawani na tao gawin kapag gusto naming upang mabilang mas mataas kaysa sa tulad 999? dalhin lamang ang isa at lamang idagdag ang ikaapat na digit sa kaliwa. At kaya sa katunayan maaari naming. Kami ay maaaring magkaroon ng isang walong ni ilagay at lugar ng isang ika-16 ni, at 32 ni lugar, 64, 128-- at ikaw maaari lamang panatilihin ang pagpunta sa hanggang sa kawalang-hanggan. Kaya ang mga ito mga zero at ones-- ang tinatawag na binary system-- ay kung ano ang isang computer siyentipiko gagawin pangkalahatan tumawag sa isang bit, o binary digit. Ngunit ngayon, paano nakukuha namin mula sa konsepto o ang graphics ng mga bagay na ito sa isang aktwal na computer? Mukhang na laktaw isang hakbang dito. Well, ang tanging input sa dulo ng araw, sa aking laptop dito ay ito na daloy ng koryente. Kahit na ito ay naging isang mahabang pagkakataon mula noong naisip mo tungkol sa o hindi kailanman naisip tungkol sa paano koryente gumagana, mayroong electron agos sa o out, at na ang aking uri ng input. Kaya kung iyon ang lahat na kami pagkuha ng input dito, kung ano ang maaari naming gawin sa mga impormasyon na? Well, maaari naming mag-isip ng isang zero bilang lamang ng isang kawalan ng koryente. Wala ay flowinw, walang ay gumagalaw, wala ang nangyayari. Iyan na lamang ang default state-- zero. Ngunit kung may kuryente na dumadaloy, bakit hindi lang namin nagkataon, ngunit globally tuloy-tuloy na, tumawag na ang isang isa. Kaya sa pamamagitan lamang ng pagkakaroon ng walang kapangyarihan, kami ay may isang zero, yes kapangyarihan, kami ay may isang one-- walang kapangyarihan, yes kapangyarihan. At sa na paraan, gamit ang isang bagay mas pisikal o elektronikong simulan namin upang ipatupad ang paniwala ng isang bagay alinman sa pagiging isa o isang zero. Sa katunayan, maaari naming lamang gawin ito sa paglipas dito. Kaya dito, mayroon akong hindi tatlong ngunit walong ilaw bombilya, ang bawat isa ay may sariling switch. At kaya kung Nais kong upang kumatawan ang bilang na pito dito, baka ako i-on ang tatlong ilaw bombilya. At sa katunayan, sa loob ng ang aking computer ay milyon-milyong, bilyun-bilyong ng mga bagay na lamang mas maliit kaysa sa na, na tinatawag na transistors, switch, na ikaw lamang i-on at off. Kaya ang mga ito ay relatibong big-- big-- switch sa loob ng aking laptop-- Maraming, maraming, maraming, marami pa switch. Ngunit ang lahat ng ginagawa nila ay eksakto na- i isang bagay sa, i-isang bagay off. At dahil dito, isang computer ay maaaring kumatawan, may mga milyon-milyong o bilyun-bilyong ng mga transistors, maraming at maraming mga zero at mga. At mayroong iba pang hardware pa rin na nakakalagay ka ng impormasyon pang-matagalang, nang sa gayon ay kapag ikaw pull ang plug, hindi mo ito mawawala. Ngunit iyon lamang ang isang kuwento para sa isa pang araw. Kaya kung ano ang maaari naming gawin sa mga bits? Maaari naming lamang na kumuha ng ang presyon off ng me-- maaaring gusto ng isang tao na dumating up dito at nag-aalok ng up ng isang demo? Nakita ko na ito kamay muna. Ano ang iyong pangalan? Maday: Maday. David MALAN: Maday, dumating sa up. Masaya akong makilala kayo. Maday: Nice to meet you. David MALAN: Halika sa ganitong paraan. hindi ako ay magkakaroon upang lip up sa iyo. Lahat tama. Kaya dito, mayroon kaming, notice-- isa, two-- ipapakita namin i-edit na out-- isa, dalawa, apat, walo, 16, 32, 64, 128. Ito ay sinadya. Mayroong walong bits here-- binary digits-- zero at mga. At isang bit ay isang kapaki-pakinabang na yunit ng measure-- hindi bilang kapaki-pakinabang ang isang yunit ng pagsukat papunta sa kanyang sarili. Karaniwan na nais mong hindi bababa sa walong ng mga bagay na ito, a.k.a. isang byte. Kaya kami ay may isang byte ng bits dito. Kaya kung gusto naming hamunin mo na may, halimbawa, pagbaybay out, sa binary, ang halaga na ito here-- 42. Nais mo bang kumuha ng isang ulos sa na? Maday: [hindi marinig]. David MALAN: Oo, lamang itulak ang maliit na puting switch sa harap. At gusto mong i-spell out 42, at up para sa grabs ay ito CS50 ang stress ball kung ikaw ay makakuha ito. Lahat tama. Kaya ikaw ay may 32. Kami ay pagpunta sa kailangan 42. Kaya na ang isang walong, kaya na 40. At excellent-- napaka mabuti tapos na. Salamat. [Palakpakan] Lahat tama. Kaya kami ay may isa pang stress ball. Natin gawin ito nang isang beses higit pa kung maaari naming ipaalam sa. Isa iba pang mga volunteer? Free stress ball, libre stress ball. OK. Sa paglipas dito sa gitna, ang gusto mong bumaba? Lahat tama. Alam ko. Mayroon kaming pumunta. Kaya ang numero here-- dumating sa pababa. Ano ang pangalan mo? DAVEY: Davey. David MALAN: Davey. OK. Pumasok dito up, Davey. Masaya akong makilala kayo. At kung ano ang kami ay pagpunta sa mayroon kang spell-- kung maaari mong magtagal doon para sa isa lamang moment-- ay ang bilang 50. Subalit, ngunit, ngunit ngunit, ngunit, ang mga ito ay magneto grade school para sa isang dahilan. Naging isang maliit na mas mahirap, lahat ng karapatan? Mayroon pa rin ng walo. Lahat tama. Kaya kung ano ang mayroon kami sa may? Mayroon kaming 32. Nice. 32 plus 16 ay nagbibigay sa amin 48-- kaya malapit. At kahanga-hanga. Binabati kita sa Davey pati na rin. [Palakpakan] Lahat tama. Upang maaari naming gawin ito ang lahat ng araw mahaba, at ito ay hindi makakuha ng lahat na marami pang iba kawili-wili at mas mapaghamong. Ngunit iyon lamang ang talagang ang point-- ay kung paano relatibong simpleng ito ay, sa dulo ng araw, kung ano ang isang computer ay upang mag-imbak ng impormasyon, upang mag-imbak inputs at sa huli iimbak o kumakatawan sa mga outputs. Ngunit numero nag-iisa ay hindi lahat na kawili-wili. Kaya mga tao, ang ilang mga taon na nakalipas, nagpasya, alam mo kung ano? Mas maganda kung computer ay hindi lamang calculators para sa aritmetika operasyon, pero sa totoo ay maaaring gumawa ng mga bagay tulad ng word processing, o email, o mas modernong anyo ng ganitong uri ng teknolohiya. At kaya ang mundo ay nagpasya nagkataon, ngunit sa lahat ng dako, na kung nais mong i-store ang kabisera titik A sa isang computer, alam mo kung ano? Sabihin lang na nagkakaisa upang mag-imbak ilang mga pattern ng mga zero at ones-- bits-- na ganap ay kumakatawan sa decimal na numero 65. kami na lang ang lahat ng sumang-ayon sa na. 66 ay kumakatawan sa B, 67 ay kumakatawan sa C, at mayroong bunches ng iba pang mga pattern ng zero at mga, o pinagbabatayan numero, na kumakatawan sa iba pang mga titik pa rin. Kaya't kung ikaw uri ng pag-iisip absorb ito para sa isang sandali, Kusa ko ilagay up A sa pamamagitan ng Ako, saan H a 72 at ako ay 73. Kung ang isang computer pagkatapos, sa konteksto ng isang word processing program o isang e-mail, nagsiwalat sa ilalim ng hood na magkaroon ang mga pattern ng bits-- pattern ng mga bits na kumakatawan 72, pagkatapos 73, pagkatapos 33-- kung ano ang maaaring ito spell sa programang iyon? So hi, at pagkatapos ay isang bagay. Kami ay hindi kinakailangang malaman, ngunit sa katunayan 33-- hindi sa tsart earlier-- ay lamang ng isang exclamation point. Kaya 72 ay H, 73 ay ko, 33 mangyayari upang maging isang exclamation point pa rin. Ngunit iyon lamang ang lahat ng multa at mabuti, at sa katunayan sa panahong ito, sa halip na gamitin lamang pitong o walong bits, salamat sa isang bagay tinatawag Unicode bilang laban sa ascii pabalik sa araw, namin talagang maaaring kumatawan mas kagiliw-giliw na mga character kaysa lamang mga orihinal na Ingles kampi titik. Ngunit maaari rin naming kumakatawan kahit neater mga bagay tulad ng mga kulay. Kung sakaling mo na narinig ang acronym RGB, pula, berde, asul, na nangangahulugan lamang na ang isang computer ay karaniwang gumagamit ng tatlong mga hanay ng bits-- ilang bilang ng mga bits na kumakatawan isang numero para sa kung magkano ang red mo gusto, isa pang hanay ng mga piraso para sa kung magkano ang green na gusto mo, at isa pang hanay numero para sa kung magkano ang blue gusto mo. Kaya ang isang malaking bilang ay nangangahulugan ng maraming mga pula, maliit na bilang ay nangangahulugan na walang pula. At kaya ang mga ito ay uri ng gitnang mga halaga dito. Kaya bigyan ako ng ilang pula, bigyan ako ng ilang berde, at bigyan ako ng isang maliit na piraso ng asul. At kung ikaw ihalo ang mga tatlong shades ng kulay magkasama, sa kasong ito, makakakuha ka ng ito madilim na lilim ng dilaw o brown. Ngunit na pattern ng walong plus walong plus eight-- kaya 24 bits-- kaliwa papunta sa kanan, ay kung paano ang isang computer ay kumakatawan sa partikular na kulay. Ngayon na ito ay lamang ng isang tuldok sa isang screen. Kung titingnan mo talagang malapit sa iyong TV sa iyong computer, makikita mo ang mga tuldok o pixels. At kung mayroon kang isang buong grid ng pixel, pahalang at patayo, mayroon kang mga imahe. At pagkatapos ay kung gagawin mo isang imahe at pagkatapos wash ipakita ang iyong sarili ng isa pang larawan, isa pang imahe, isa pang larawan, isa pang imahe, talagang mabilis, ikaw siyempre mayroon movies. At kaya mapapansin kung saan kami nagsimula. Namin na nagsimula sa mga zero at mga. Kami ay nagtrabaho mula doon sa decimal numero, kung paano namin kumakatawan sa kanila. Ngayon kami ay may mga titik ng alpabeto. Ngunit sa ibang mga contexts maghintay, maaari naming gamitin ang ng ilang higit pang mga bits at kumatawan sa mga kulay. Sa sandaling mayroon ka ng mga kakayahan na kumatawan sa mga kulay, ikaw ay may kakayahan upang kumatawan litrato at animated gifs at iba pang mga tulad na mga character sa screen. At kapag mayroon kang isang buong grupo ng imahe lumilipad sa pamamagitan ng tao nang sabay-sabay, mukhang sine, at kaya kang makakuha ng mga video pati na rin. Kaya gamit ang mga napaka simple primitives ginagawa namin kung ang paraan ng kumakatawan sa huli lahat ng mga anyo ng media. At kami lumilipad ang isip muli at muli at muli hanggang sa aming makakuha ng mula sa pinakamababang antas sa ito pinakamataas na antas. Kaya na nagbibigay sa amin ito pangkalahatang ideya ng abstraction. Ngunit nagsimula kaming dito. Heto naman po, maaari naming kumakatawan sa isang computer aming inputs na may mga zero at mga bago, aming outputs sa mga zero at mga bago, ngunit kung ano ang napupunta sa loob ng kahon? Iyan ay kung saan ang computer agham ay makakakuha interesting. Iyan ay kung saan ang iyong aktwal na dalhin ang iyong sariling isip upang pasanin upang malutas ang problema. Maaari naming ngayon magtadhana, para sa magpahinga ng ang semestre, yes. Alam ko kung paano binary gawa. Natatandaan ko kung paano Ascii o Unicode-- ang pagma-map upang letters-- gawa. At ito ay tiyak nakatayo sa dahilan na namin maaaring kumatawan pula at berde at asul, at kumakatawan sa multimedia pati na rin. Ngunit ito ay ang mga kagiliw-giliw na bagay. Ito ay kung bakit ang isang tao kaya ng paglutas ng mga problema. At isa tulad problema gusto naming gawin, sa katunayan, nagtatagal pagdalo, o paggawa nito algorithm. At muli, maaari kong gawin ito. maaari kong gawin ng isa, dalawa, tatlo, apat lima, anim, pitong, walong siyam. At kaya kong isulat ito pababa sa subaybayan ang mga ito. Ngunit ito lamang ay kung paano Gusto ko ay kumakatawan sa mga impormasyon. O maaari kong gawin ito faster-- dalawa, apat, anim, walo, sampu, 12, 14, 16, 18, 20, 22-- ito nararamdaman tulad ng dalawang beses nang mas mabilis ngunit ito ay pa rin pagpunta sa tumagal ng isang buong pulutong ng mga oras. Ngunit ito ay lumiliko out, kung pakikinabangan namin pa isa pang resource-- at sa katunayan mga computer mga araw na ito ay may maramihang mga CPUs o talino. Ito ay lumiliko out computer Maaari gawin ng maraming mga bagay nang sabay-sabay, at sa katunayan namin, sa kuwartong ito, maaaring kumatawan eksakto ito. Kaya ito ay isang maliit na lipunan awkward, ngunit kung gagawin mo katatawanan akin para sa mga lamang ng isang tatlong-hakbang na proseso, sabihin akong humingi lahat ng tao sa lugar doon lamang upang tumayo para sa isang sandali. Tayo. Kaya sa tingin sa iyong sarili, number one-- kaya lahat ng tao sa ang kuwartong ito, maliban sa mga taong ay hindi utang na loob, ay nag-iisip bilang isa. Kaya na ay ang iyong numero ngayon. Iyon ay ang unang hakbang, o bilang isang computer siyentipiko o isang programmer ay karaniwang gawin, kami ay pagpunta upang simulan ang pagbibilang sa zero. Kung ang pinakamaliit na bilang maaari naming kumakatawan sa mga ilaw bombilya ay zero, sa pamamagitan lamang Aalis ang mga ito ang lahat ng off, maaari ko pati na rin lamang magbilangan mula zero ay sa halip ng isa. At kaya na kung ano ang computer siyentipiko gawin. Kaya hakbang zero, tumayo at tingin ng mga bilang isa. Ang susunod na hakbang ay this-- pares off sa isang tao standing at idagdag ang iyong mga numero ng magkasama. Kahanga-hanga. Kaya sa sandaling ito sa oras, literal lahat ng tao kalahok ay nag-iisip ng bilang 2, maliban para sa isa kakaiba tao kung kami ay may isang kakaiba bilang ng mga tao sa kuwarto. At ngayon, ang ikatlong hakbang dito ay pagpunta sa ay this-- isa sa inyo'y umupo. Isa sa dapat mong umupo, at kung ka pa rin nakatayo, bumalik sa hakbang ng isa. Lahat tama. Lahat tama. Kaya higit pa at mas maraming mga tao dapat ma-upo pababa. Pansinin na ito ay sapilitan isang loop-- ilang mga uri ng cycle. Ang ilan sa iyo ay dapat na awkwardly makaalis, pagpunta pabalik-balik sa pagitan ng unang hakbang at dalawang, isa at dalawang, isa at dalawang. Iyan ay OK. Ang aming unang bug. Susubukan naming haharapin ang mga iyon. Lahat tama. Hayaan akong subukan upang magsulong bagay sa kahabaan. Sa teorya, ang isang tao lamang ay nakatayo bilang lahat ng tao ay patuloy na ipares off. Ngunit hayaan mo akong mapabilis ang mga bagay up may mga tao pa rin nakatayo. Anong numero ang iniisip mo? 46. OK. Sige at umupo. Ka guys ay pa rin nakatayo. Sino ang nakatayo pa rin? Anong numero ang iniisip mo? OK. Kaya kami ay bumalik sa iyo. Sa likod? Ano yan? 22. OK ibang tao up top-- yeah? 34. OK. Sa paglipas dito sa aking right-- up dito? 132, very nice. 22? OK. At kung sino ang nakatayo pa rin? Dito? 46, very nice. 72. Hindi ko ma-stall marami na. Yeah? 30, nice. Dito? 23? 23. At sa tingin ko na ang dahilan ng lahat maliban sa iyo guys, walang presyon. Oh, maghintay. 28? Just walo. OK. Just walo. Dito sa baba? 30. 23. 24. 18. Ito ay ang pinakamasama pagpapatupad ng mga ito algorithm kailanman. OK. Kaya kahit sino sino pa ang paririto? Sino pa? OK. Isa pa. 16? OK. 16. Lahat tama. Kaya kung hindi ko pa nasagot ang sinuman sa pandidilat dito, kapag ako pindutin ang Enter, makikita natin, algorithmically, ang kabuuang bilang ng mga tao sa Sanders. Dahil muli, ito ay parang lahat ng tao habang ikaw ay SA down, ang pumasa ang iyong numero ng off sa ibang tao, sa ibang tao, sa ibang tao, sa gayon ay sa teorya, sa katapusan, lamang ng isang awkward tao ay dapat iwanang nakatayo. Ngunit iyon lamang ang fine. sped namin ang mga bagay up manu-mano. Ito ay lalo na mahirap upang makita sa ganitong partikular na space. At ang kabuuang bilang ng mga tao sa tingin namin may mga dito ay 546. Ang kabuuang bilang ako ay kamay sa pamamagitan ng mga Fellows ng pagtuturo, kung sinong gumawa nito ang lumang school mabagal na paraan, ay 820. [Tumatawa] [Palakpakan] Iyan ay OK. Kaya tunay nga, may mga mga bugs. At iyon ang fine. At kaya sa tingin bumalik sa mga ito sa unang pagkakataon ng isang bagay mong isulat ay hindi kinakailangang trabaho. Ito ay nangyari sa akin dito pati na rin. Ngunit sabihin isaalang-alang na ngayon kung paano namin maaaring aplay na ito parehong ideya sa isang bagay maaaring mo pa nakikita dati, na kung saan ay ito old school technology here-- isang talagang malaking phone book. At ipagpalagay na ito phone book ay may 1,000 mga pahina at 1,000 mga pangalan at numero ayon sa alpabeto sa loob nito. Well, maaari naming uri ng mag-aplay ng isang katulad na ideya na ito napaka-pisikal na problema, lamang gamit ko. Ko lang ang uri ng ginulangan sa pamamagitan ng leveraging ang lahat ng sa iyo may maraming at maraming ng iba't ibang mga CPUs o talino Isinasagawa ang ilang algorithm. Ngunit kung ito ay lamang ng maliit na lumang akin, maaari ko pa rin pakikinabangan na parehong kakanyahan ng isang ideya ng paghahati at mapanakop problema na muli at muli sa pamamagitan nito ay kalahati ng sa iyo, kalahati ng sa iyo, sa kalahati ng sa iyo, kalahati ng sa iyo, theoretically nanatiling nakaupo down, hanggang sa kami ay kaliwa, theoretically, may isa lamang tao. Kaya sa old school technology-- hindi kami kailangan ito map-- ito lumang teknolohiya school, maaari naming simulan ang naghahanap para sa isang tao gusto Mike Smith, isang pahina sa isang pagkakataon. At nakikita ko na hindi, Mike ay hindi dito. Ako pa rin sa isang seksyon. Sa kalaunan, hanapin ko ang aking sarili sa seksyon B. At ito ay isang algorithm-- step-by-step na pagtuturo. Magsimula sa simula at isang pahina sa isang panahon, tumingin para sa Mike Smith. Ito ba correct-- ito algorithm o diskarte? Yeah, ito ay tama. Kung Mike meron dito, sa huli magagawa ko na sa kanya. Ngunit ito ay hindi mabisa. Ito ay malinaw naman masyadong mabagal. Kaya ang maaari kong magamit ang parehong twosies diskarte. ang maaari kong gawin uri ng dalawa, apat, anim, walo, 10, 12. Ito ay dalawang beses bilang mabilis. Pupunta ako upang makakuha ng sa Mike mas mabilis na kung siya ay doon. Ito ba ay tama? Oo, ngunit narinig ko ang isang little-- no. Ngayon narinig ko ang isang no. Yeah. May isang bug potensyal. Siguro Mike lamang sinasadyang makakakuha sandwiched sa pagitan ng dalawang mga pahina, dahil ako na lumilipad sa pamamagitan ito dalawang sa isang pagkakataon. Kaya hindi bababa sa kailangan namin ng ilang uri ng conditional fix. kailangan kong sabihin, hey, kung pinindot ko ang isang tao na ang pangalan ay nagsisimula sa isang T sa halip ng isang S, Ko mas mahusay na i-double likod ng hindi bababa sa isang pahina. Kaya maraming surot sa una, ngunit fixable. Ngunit wala sa amin ay pagpunta sa hitsura para Mike Smith sa pamamagitan ng isang 1,000 page phone libro sa isang pahina sa isang pagkakataon. Ano ang isang normal na tao ay pagpunta sa gawin? Ikaw ay pagpunta sa pumunta sa S, kung alam mo kung saan ang S ni. Maaari kang pumunta halos sa gitna o bahagyang skewed patungo sa katapusan. At tumingin ako pababa dito at Ako sa seksyon M. Ngunit ano ang alam mo tungkol sa problemang ito ngayon, na kami ay hindi kinakailangang malaman bago kasama ang lahat ng sa amin lamang pagbibilang sa ating sarili equivalently? Well, Mike ay malinaw na pagpunta na maging sa ito kalahati ng libro kung siya ay dito sa lahat dahil ito ay pinagsunod-sunod. At sa gayon maaari mong tunay dramatically-- [Hingal] Alam ko. [Palakpakan] Ito ay talagang tunay madali kung gawin mo ito down ang gulugod doon. Ngunit maaari mong pagkatapos ay magtapon kalahati ng mga problema ang layo. Ngayon, ako sa kaliwa na may parehong problem-- mahanap Mike Smith sa isang telepono book-- ngunit ngayon ang phone book ay nagsisimula sa M at pupunta sa Z, ngunit ito ay kalahati bilang malaki. Ngunit ito ay kung ano ang kahanga-hanga. Katulad ng sa teorya, sa iyo guys, kapag mo ang lahat ng naupo lamang sa kalahati sa isang panahon, ang problema got kalahati ng malaki, kalahati ng ang malaki at muli at muli. Kaya ito ay naging ang problemang ito ang parehong problema ngunit ang kalahati bilang malaki. Ngayon ito ay isang problema 250 page. Sa sandaling mapagtanto ko, oh, ako sa seksyon ng T sinasadyang. Ko na wala na masyadong malayo. Maaari ko bang itapon na ang kalahati ng libro ng telepono ang layo. Ngayon, ako down sa isang quarter ng problema. At maaari mong ulitin, ulitin, ulitin hanggang, sa teorya, ikaw ay kaliwa na may lamang ng isang pahina. At kung Mike ay sa pahinang iyon, Maaari ko ngayon malutas ang problemang ito. Ngunit kung gaano kabilis ang ginawa ko malutas ito? Sa unang kaso, ito kinuha sa akin tulad ng siguro 1,000 mga hakbang upang mahanap Mike Smith. Ito ay maaaring kinuha me-- Ako pumili ng up ang telepono ng libro at ako na nagsimula naghahanap isang pahina sa isang panahon, at Mike ay maaaring maging 1,000 mga pahina sa ibang pagkakataon. Ikalawang paraan siguro tumatagal sa akin 500 mga hakbang, dahil ako lumilipad sa pamamagitan ng dalawang sa isang pagkakataon. At ang ikatlong diskarte bagaman, ito ay lalo na malakas na. Ngunit sabihin isaalang-alang kung ano ang aming talagang ginawa na may third diskarte. Kukuha ako ng kung ano Tatawag ako lamang ang mga pahayag dito, isa sa isang panahon. Pumili ng up ng isang libro ng telepono. Buksan sa gitna ng phone book. Hanapin sa mga pangalan. At pagkatapos ay mga bagay makakuha ng isang maliit mas intellectually kawili-wili, kung hindi pa rin simple. Kung Smith ay kabilang sa mga mga pangalan sa na kasalukuyang pahina, pagkatapos ay gawin ang isang bagay nang may pasubali. Ito ay tulad ng isang tinidor sa kalsada. Tumawag Mike. Kung Mike ay kabilang sa mga pangalan sa pahinang iyon, na tinatawag na Mike. Ngunit lamang gawin apat na linya kung line tree, kung kalooban mo, ay totoo. Ang kasagutan sa na tanong ay yes. Iba Pa kung Smith ay mas maaga sa book-- sa ibang salita, kung ako sa seksyon M at Naghahanap ako para sa isang tao upang kaliwa, pagkatapos ay kung ano ang dapat kong gawin ay isang bagay na halos kapareho. Pagkatapos ay dapat ko bang buksan sa gitna ng kaliwang kalahati ng aklat. Kaya pumunta sa kaliwa, at pagkatapos ay bumalik sa hakbang dalawa. Hanapin sa mga pangalan doon. Kaya sa ibang salita, gawin ang parehong bagay, ngunit sa isang problema na ay halved. Alam mo kung ano sino pa ang paririto? Kung Smith ay mamaya sa aklat batay sa page Naghahanap ako sa, bukas sa gitna ng kanang kalahati ng libro at pagkatapos ay bumalik muli sa hakbang dalawang, else-- mayroong isang ika-apat posibilidad dito. Mike kung dito o sa kaliwa o sa kanan o hindi doon. At dito kami ay mas mahusay na isaalang-alang na ito. At sa katunayan, kung ikaw ay kailanman ay nagkaroon ng ang iyong computer lamang crash sa iyo, na kung minsan, ngunit hindi palaging, ang resulta ng lamang ng isang tao programmer hindi realizing, oh shoot, may tunay na ito ika-apat na tagpo. At kung hindi mo isulat ang code sa hawakan na sitwasyon, minsan hindi mo alam kung ano ang computer ay maaaring gawin. At sa katunayan ng isang programa ay maaaring bumagsak. Ngunit sa kasong ito, naisip ko tungkol dito, at sinabi ko, sino pa ang paririto umalis, dahil iyon ang ika-apat na lohikal posibleng sitwasyon. Ngayon, sabihin magdagdag ng lamang ilang bokabularyo kaya kami maaaring magsimula sa siklutin paligid termino na kung hindi man ay medyo madaling maunawaan. Ang lahat ng mga bagay na hindi ko na lang naka-highlight sa dilaw dito, Lamang ako ng pagpunta sa function o pamamaraan. Ang mga ito ay lamang ang uri ng mga aksyon. Kaya pick up, bukas sa, tumingin sa, tawag, bukas, bukas, quit-- mga ito ay lamang mga aksyon, o bibigyan namin tumawag sa kanila mas pormal, pag-andar. Samantala, ngayon sa dilaw, Ko na naka-highlight bagay na- sabihin lamang simulan ang pagtawag ang mga ito kondisyon o sanga. Ang mga ito ay desisyon puntos na kung saan maaari kang pumunta sa ganitong paraan, sa ganitong paraan, o ilang iba pang mga direksyon pa rin. Kaya ang mga ay magiging kondisyon. At ngayon ang isang ito ay isang maliit na may interes. Sabihin tumawag sa mga tanong na ito Boolean expression, pagkatapos ng isang tao na may isang apelyido Bool. At isang Boolean expression ay lamang ng isang bagay na alinman true o false, oo o hindi. Kaya ito ay ang tanong na ang sagot na iyong pag-aalaga ang tungkol sa, sa gayon ay upang sa isang kondisyon gumawa ng isang decision-- makabalik ng isang sagot, at pagkatapos ay pumunta sa kaliwa o kanan, o isang bagay sino pa ang paririto lahatan. At pagkatapos ay sa wakas, ang mga ito linya here-- bumalik sa pangalawang hakbang, bumalik sa hakbang two-- maaari naming ipatupad ang ideyang ito sa iba't ibang paraan. At pagkatapos ay sa mga mo sa programming karanasan maaaring magkaroon ng tapos o maaari isipin ng paggawa na ito sa ibang paraan. Ngunit para sa mga layunin sa araw na ito, ito ay lamang ang mga ideya na mahalaga. Ito ay kung ano ang pampalaglag kami sa pangkalahatan ay tumawag isang loop-- ilang mga uri ng cycle, dahil ito ay paggawa sa akin gawin ang isang bagay muli. Kaya ngayon, sabihin lamang isaalang-alang ang kung paano mahusay na ito algorithm ay. Ito ay tama. Kung Mike sa aklat, ito ay isa sa mga apat na scenarios-- muli at muli at muli, kami ay mahanap sa kanya. Ngunit kung paano mahusay na ito? Well, hindi namin ay may na maging masyadong pormal dito. Ngunit sabihin lamang plot isang bagay, x at y, upang makakuha ng isang kahulugan ng ang hugis ng ang problemang ito. Sa x-axis dito ay ang laki ng aking problema. At ito ay isang y-axis dito ay ang oras upang malutas. Kaya marahil ito ay bilang ng mga pahina. Siguro ito ay segundo o page turns-- ano pa man. Gayunpaman nais mong bilangin ay kung ano ang larawan ay kumakatawan. At yaon ang unang algorithm, pupuntahan ko upang ilarawan bilang lamang ng isang tuwid na linya. Kung may n mga pahina sa phone book, at pagkatapos na ito maaaring dalhin ako ng maraming bilang n hakbang upang mahanap Mike. Kung Verizon o ang kumpanya ng telepono nagdadagdag ng isa pang page sa susunod na taon, maaaring tumagal ako ng isa pang step-- isa pang yunit ng oras upang mahanap Mike. Kaya mayroong lamang ng isang ito upang one ratio. Ito ay isang tuwid na linya slope. Samantala, na pangalawang algorithm-- kung ako pagpunta dalawang sa isang time-- dalawa, apat, anim, walo, o double-- pagpunta sa pamamagitan ng mga pahina ng dalawang beses sa isang panahon, dalawang sa isang pagkakataon, ito ay pa rin tuwid na linya. Mayroon na ngayong isang isa sa dalawang ratio, ngunit lamang ng isang maliit na mas mababa. Kaya kung may ganito karaming mga pahina sa tsart dito sa dilaw, na maaaring tumagal ng sa akin ito maraming mga hakbang o segundo, kung hindi man ito ay pagpunta sa dalhin ako dalawang beses bilang maraming sa ang pulang linya. Ngunit ang berdeng linya ay ang tunay na takeaway. Ito ay kung ano kami ay karaniwang tumawag sa isang logorithm-- log ng n, kung saan ang n ay ang bilang ng mga pahina. Ngunit ito ay ang hugis na mga bagay ngayon, dahil wala kaming sa kahit na isipin ang tungkol sa paglalagay sa mga puntos. Mag-isip tungkol sa isang matinding sitwasyon. Ipagpalagay Verizon bukas doubles ang bilang ng mga pahina sa na phone book, mula sa 1,000 sa 2,000. Sa unang algorithm, ako maaaring mag-aaksaya ng dagdag na 1,000 hakbang naghahanap para sa Mike, dahil lang Verizon lambal sa laki ng mga libro. Ang ikalawang algorithm-- ito maaaring dalhin ako ng dagdag na 500 mga hakbang. 1,000 higit pang mga pahina, pumunta ako ng dalawang sa isang time-- 500 higit pang mga hakbang upang mahanap Mike. Ngunit na ang mga third algorithm ay uri ng kahima-himala. Verizon doubles ang bilang ng mga pahina mula sa 1,000 sa 2,000, ngunit kung gaano karaming mga karagdagang hakbang ay ito ay tumagal sa akin upang tumingin para sa Mike? Ito ay lamang ng isa, dahil maaari ko lang mapunit ang phone book nang isa pang beses mula sa isang 2,000 page problema sa isang 1,000 page problema, at voila. Ko na kinuha ng isang napakalaking kagat sa labas ng mga ito. At kung pumunta ka talagang extreme, ipagpalagay na ang phone book kumpanya ay nagkaroon ng isang bagay na mabaliw tulad isang 4 bilyong mga page phone book. Well gaano karaming mga hakbang maaaring tumagal upang mahanap Mike Smith sa isang 4 bilyon page phone book? Isa itong malaking numero, ngunit lamang 4 bilyon upang 2 billion upang i-1 billion sa 500 milyong, 250 million-- pa rin tunog tulad ng malaking numero, ngunit ako masyadong mabilis pagkuha sa mas maliit na mga halaga. At sa katunayan, kung gagawin ko ang matematika karapatan, maaari ko lamang hatiin 4 billion sa pamamagitan ng halos 32 beses bago nakukuha ko pababa sa isa lamang. Kaya kung na phone book ay 4 bilyong mga pahina ang haba, hindi sang-ayon. Sa loob ng ilang segundo, marahil 32 segundo, kaya kong hatiin ito sa kalahati at sa wakas mahanap ang Mike o tapusin na siya ay hindi doon. At iyan ang kakanyahan ng isang algorithm-- isang magandang algorithm. At iyon ang isa sa mga mga layunin ng isang klase tulad nito, ay sinusubukan upang malaman kung paano ang gagawin ko malutas ang problema hindi lamang ng tama, gusto ko laging alam kung paano gawin ito ng isa pahina sa isang time-- ngunit tama at maayos. Paano ko disenyo ng magandang solusyon sa mga problema? Kaya ipaalam sa tumagal ng isang sandali dito at magbibigay sa iyo ng isang pakiramdam ngayon ng CS50 kurso itself-- ipakilala staff miyembro ng ilang kurso na iyon. Lamang bago 2:00, kami ay kumuha ng isang maikling break na kaya na sa mga ka sino ay shopping maaari pato out at kumuha ng isang Tingnan natin ang ilang iba pang mga klase at panoorin ang magpahinga ng ito online. Ngunit sa ngayon, hayaan mo akong ipakilala CS50, ang klase ng kanyang sarili, at lalo na kung ano ang bago. Kaya ang nakaraang tagsibol, kami ginugol lubos ng kaunti ng time-- staff ng kurso at I-- iisip tungkol sa kung ano ito ay nais naming CS50 upang maging, at balik sa unang prinsipyo, kaya na magsalita, upang isaalang-alang kung ano ito ay nais naming kursong ito upang magmukhang at maging tulad ng para sa mga mag-aaral nito. At kaya makikita mo sa problema set zero pati na rin, ng isang imbitasyon na kumuha ng isang pagtingin sa na URL na nagbubuod ang ilan sa mga motivations sa likod ng sumusunod na katangian ng pagkahulog 2016. Kaya bilang na maaring magkaroon ka gleaned mula sa TL: DR handout, syllabus ngayon pati na rin mula sa ang kurso catalog, sa taong ito sa CS50, lamang ka na inaasahan na dumalo today-- kaya trabaho na rin done-- at ang huling panayam sa Nobyembre ika-21. At tuloy po kayo ngunit hindi inaasahan na dumalo sa mga lectures sa gitna, dahil kung ano ang aming ginagawa sa taong ito, ay pagbaril sa real-time na materyal ng kurso. Kaya lahat ng bagay ay manatili kasalukuyan at inkorporada bilang pinakamahusay na can-- namin kasalukuyang kaganapan at pag-uusap na ang mga tao baka ay nagkakaroon sa industriya sa mundo, ngunit ang paggawa na ang materyal magagamit, bilang isang resulta, kahit earlier-- kumpleto na may ganap transcript text at searchability at link sa iba pang mga mapagkukunan. At sa katunayan, kami ay nagke-claim para sa ilang oras at ngayon kami naniniwala na ito, na maaari naming lumikha, digitally, isang mas nakaka-engganyong, isang mas nakakahimok edukasyon na karanasan, na taliwas sa pangangalap dito ang ilang mga 23 beses sa tao, pagdinig ng isang tao tulad ng sa akin lamang makipag-usap tungkol sa computer science, bilang laban sa pakikipag mas aktibong. Kaya makikita mo sa syllabus ng kurso isang maikling kasaysayan ng semester dito, kasama kapag lectures ay makunan, na kung saan ikaw ay maligayang pagdating ngunit hindi inaasahan, at kapag sila ay inilabas sa website ng kurso ni. At kung ano ang gagawin namin dito sa Miyerkules simula sa susunod na linggo, ay isang pulutong mas intimately, na may lamang mga tao na nais na sumali, ay isang tinatawag na lakad sa pamamagitan ng, kung saan ako at ulo ng kurso ay tunay na gumawa ng mga bagay isang maliit na mas kilalang-kilala down na dito sa orkestra seksyon, mayroon pa rin ang ilang mga teknolohiya at lakarin ninyo ang problema set kasalukuyang linggo, at nag-aalok particularly-- iyo kung bukod sa sa mga mas mababa comfortable-- lahat ng mga mas patnubay na maaari mong o kailangan para sa hamon ang linggong ito. At katulad, para sa mga taong hindi maaaring dumalo sa mga nasa tao, hindi sang-ayon. May ay parehas na humantong sa pamamagitan isa sa senior staff ng kurso, Zamalya, pare-parehong pagkakataon na naka-embed sa hanay ng problema sa kanilang sarili. Problem nagtatakda sa taong ito ilalabas sa Biyernes at hindi na gawin ng pitong araw sa ibang pagkakataon, ngunit 10 araw later-- sadyang overlap sa bawat problema itakda, upang mas mahusay na mapaunlakan, inaasahan namin, sumabay sa alon sa mga iskedyul student, lalo na kapag midterms o athletics o akademya o extracurriculars may posibilidad na darating at pumunta lalo mid-semester. Na dapat magbigay sa iyo ng kaunti pa discretion sa kung ikaw front load ang iyong linggo na may CS50 o likod load ito sa mga sumusunod na weekend sa halip. Kaya tumingin sa syllabus ng kurso dito para sa schedule nito. At mapapansin mo masyadong bukod ang mga pagbabago sa taong ito, para sa mga mas pamilyar sa programming sa nakaraan, magsisimula kami semestre bilang kami ngayon sa simula, focus lalo na sa wikang na tinatawag na C, at pagkatapos ay i-transition hindi sa PHP, ngunit sa isang wika na tinatawag na Python patungo sa katapusan ng semestre sa konteksto ng web programming, kasama ang SQL at JavaScript, HTML, CSS, at pa pa. At bilang sagot sa isang FAQ, ito ay sa katunayan ang kaso na CS ay hindi bilang nakakatakot bilang isang beses ko naisip ito ay, ngunit ito ay ng mas maraming trabaho bilang ko ay narinig ito ay maaaring maging. Ngunit ito ay ang sabihin na narito ang ilang mga istatistika mula pagkahulog 2015 mag-aaral katawan, kung saan ang horizontal asul na linya ay kumakatawan sa average na bilang ng mga oras iniulat. At makikita mo ang isang average ng anim hanggang 10 hanggang 12-- siguro 16 o kaya at iba pa, ngunit may high-iiba na maging malinaw. At kaya mapagtanto na doon ay hindi lamang mga mag-aaral mas kumportable at mas mababa kumportable sa kurso, ngunit isang nararapat na suporta istraktura upang makakuha ng mga mag-aaral sa pamamagitan ng matagumpay ang semester. Sa katunayan, sa mga kasagutan sa isang FAQ, dapat magdadala sa iyo CS50 bilang unang taon? Oo naman. At sa katunayan, ko ikinalulungkot hindi pagkakaroon ng natagpuan ang aking paraan o natagpuan ng isang bagong larangan na ang unang taon pati na rin. At dapat mong gawin CS50 sa iba pang mga kurso, tiyak bilang well-- at ang pangkalahatang payo maaari naming bigyan mga mag-aaral, na CS50 ay marahil hindi ang uri ng klase o intro klase na dapat mong gawin na may tatlong isa o apat na iba pang p-set klase. Ngunit kung ikaw ay pagkuha ng dalawang iba pang mga p-set mga klase, isang bagay sino pa ang paririto, at CS50, absolutely na mapapamahalaan. Nagkaroon na ako ng maraming estudyante sa nakalipas na nagagawa lubos matagumpay. At upang makakuha ng sa iyo patungo na tapusin linya matagumpay, magkakaroon ng course sections-- iba't ibang mga track para sa mga estudyante mas kumportable, mas kumportable, at sa isang lugar sa pagitan ng, kung saan sa kurso ni unang problema set, hihilingin sa iyo upang ilarawan ang iyong sarili. At kung ikaw ay kabilang sa mga mas komportable, ito ay ang uri ng bagay na ikaw lamang sa halip malaman. At sa katunayan, na naging ang lumalagong demographic sa CS50 para sa ganap ng ilang taon. Tulad ng nakaraang tag-lagas para sa Halimbawa, 58% ng klase inilarawan sa kanilang sarili bilang kabilang sa mga mas kumportable, na may 9% sa mga mas kumportable, at pagkatapos ay ang iba pang mga mag-aaral doon sa red na naglalarawan sa kanilang sarili bilang isang lugar sa pagitan. At makikita mo dito ang mga paksa pangkalahatang at iskedyul ng mga seksyon, ang lahat ay ay ibinibigay sa tao, sa real time, sa kurso amazing staff ng mga Fellows ng pagtuturo at kurso assistants, ang ilan sa kanino makikita mo matugunan sa loob lamang ng ilang sandali. Seksyon kanilang sarili, tulad ng makikita mo, ay maging Lunes at Martes at Miyerkoles, sa gayon ay upang daan sa iyo upang sumisid na kasunod nakakaengganyo, kung ikaw kaya pumili, sa kurso ni magbigay ng panayam ng mas maaga linggo na. At pagkatapos ay oras ng opisina, na kung saan oo nga, sa bawat pagdaan taon, ay walang mas mababa ng isang hamunin para sa kurso. At sa taong ito, kami ay pagpaplano hindi lamang upang i-hold opisina hours-- isa sa isang pagkakataon para sa tulong para sa mga mag-aaral sa Miyerkoles Huwebes at Linggo, ang huling ng mga pagiging sa hapon sa pamamagitan ng disenyo upang mabawasan ang ilan sa mga stress na walang paltos arises sa late night p-settting may deadline looming-- ngunit oras ng opisina ay din ay inaalok tuwing Lunes at Martes at Miyerkules, at Biyernes at Sabado, salamat sa aming mga kaibigan sa HSA. CS50 ngayon ay may sariling space para sa mga estudyante at CS50 kawani, nasa ibabaw 67 Mount Auburn Street, doon sa Harvard Square. Ang pangitain para sa kung saan ay na CS50 ni TFs at CAs sa buong linggo, medyo marami sa buong karamihan araw, ay magiging doon para sa suporta. Kaya kung mayroon ka ng ilang tanong sa isang p-set o ikaw ay pakiramdam ng isang maliit na block o isang maliit na nalilito, at ano ba, na kailangan ng isang oras o kalahating oras sa pagitan ng mga klase, lalo na sa square-- maaari mong pop in at magkaroon na tanong na sinagot ng magkaroon ng na pagkalito clarified-- very much sa espiritu, pamilyar ka, ng math ni department sariling mga tanong sa math center, ngunit medyo marami sa paligid ng orasan sa bawat [? Gcal?] Na kami mag-post online. Tutoring na Magagamit ng Mga rin mga mag-aaral, malayang mula sa kurso ni sariling mga kawani kung nais mong mas kilalang-kilala isa sa isa, o dalawa o tatlong kaklase lamang, nagtatrabaho sa isa sa mga miyembro ng kawani ang kurso na iyon. At sa katunayan, ang mga ito dito ay lamang ang ilan sa mga miyembro ng kawani ang kurso na iyon, ang ilan sa kanino makikita mo matugunan sa loob lamang ng ilang sandali. Sa katunayan, CS50 sariling ulo pagtuturo kapwa, at tumuloy course assistant, at preceptor, maaaring dumating sa up, payagan ang mga ito upang kamustahin. [Palakpakan] Tagapagsalita 1: [hindi marinig]. [Palakpakan] Tagapagsalita 2: [hindi marinig]. [Palakpakan] SPEAKER 3: [hindi marinig]. [Palakpakan] David MALAN: At daan sa amin upang dalhin sa board dalawa sa CS50 pinaka senior staff, Rob at Zamayla pati na rin. [Palakpakan] Sa katunayan, ang parehong Rob at Zamayla ay sa amin para sa kaya mahaba, na ako ay makapag upang pumunta sa CS50 archives at hanapin ito tunay SD footage ng mga ito na kalahok sa entablado sa kanilang sarili ang ilang mga taon na nakalipas. Rob: [hindi marinig]. [Palakpakan] ZAMAYLA: [hindi marinig] [Palakpakan] David MALAN: Thank you. Kaya sa karagdagan sa mga mga kasapi ng koponan dito, CS50 ay isang team ng halos 100 mga miyembro ng kawani, na lahat sila ay magiging available para sa mga seksyon at oras ng opisina at kaya marami pang iba. At bilang Rob sabi ni masyadong, na ito ay ang pinaka makabuluhang maingat na pagsusuri ng CS50 sa 10 taon na Ako sa [hindi marinig]. [Hindi marinig] nakatutok lalo sa pagbibigay ng isang istraktura ng suporta, dekorasyon sa malayo ng isang pulutong ng mga ang bulk na naging naipon sa 10 taon ng umuulit developments sa hanay ng problema ang kurso na iyon. Kaya sa taong ito, hindi lamang sa klase ngunit din sa anyo ng mga problema ng kurso sets, dapat mong mahanap ang mga bagay upang maging mas streamlined, trimmer, marami higit na mapapamahalaan kaysa sa nakaraang taon, bilang namin malaglag ang ilan sa mga bagahe na binuo sa pamamagitan ng likas na katangian ng umuusbong taon matapos ang taon at iterating. Kaya ang bago at pinahusay na nagsisimula ngayon. Makikita mo matugunan ang ilang mga higit pa sa mga staff out ni kurso sa [hindi marinig] sa 2:30, kung saan aming paglilingkuran, bilang tradisyon, cake. Mayroong isang bit more cake kaysa sa na, ngunit makikita mo meet Erin at Tobias at iba pa rin. At hayaan mo akong bigyan ka ng isang tour bago namin marinig mula sa ilan sa iba pang mga miyembro ng kawani sa klase, ng kung ano ang naghihintay pati na rin. Sa katunayan, kami ay palaging simulan CS50 ni semester na ito darating na Sabado, sa kung ano ang tinatawag na CS50 Puzzle Day. Ito ay may kinalaman sa computer science per se, ngunit may tungkol sa problemang paglutas sa mas pangkalahatang. At kung ikaw kaya pumili upang makibahagi, per ilan sa mga imbitasyon, maaaring nakakita ka ng pinto bumaba o sa entablado dito, ito ay isang pagkakataon sa mga koponan ng dalawa o tatlo o apat, upang lumahok para sa mga puzzle at pizza at mga premyo at more-- ngayong Sabado, manatiling nakatutok para sa karagdagang. Makikita na masyadong na ang bawat Biyernes, sa Fire at Ice, ay CS50 magdala ng isang ang maramihang mga mag-aaral sa tanghalian, na gumawa ng isang malaking klase pakiramdam mas kilalang-kilala, at sa pangkalahatan ay tipunin alumni at mga kaibigan mula sa industriya upang makipag-usap tungkol sa kung ano na sila ay hanggang sa dahil graduating. Katulad nito, sa taong ito, kami ay mag-umpisa ang unang kailanman CS50 50 coding contest-- isang mid-semester pagkakataon upang payagan ang lahat sa isang opt sa batayan, upang magkaroon ng isang hamon ng wits laban classmates, muli sa mga koponan ng dalawa o tatlo o apat, ang paggamit lamang ng programming na savvy na kayo ay may sa ilalim iyong sinturon pagkatapos lamang ng anim o pitong linggo ng klase, at pakikilahok sa ganitong uri ng kumpetisyon online-- kung nais mong upang ihasa ang iyong sariling kasanayan sa lahat ng higit pa sa hamon na iyon. Sa katapusan ng semestre ay ang tinatawag na CS50 Hackathon-- isang pagkakataon na nagsisimula sa 7:00 PM nagtatapos sa 7:00 AM, at kasama ang paraan mga 12 ng gabi oras sa kung saan upang sumisid sa final project-- ng kurso isang pagkakataon upang mag-disenyo at ipatupad pinaka anumang bagay ng interes sa iyo ng inyong aral patnubay ni kapwa. Mga 9:00 AM ginagawa namin karaniwang maglingkod pizza, 1:00 AM, Philippe, at ang ilan sa amin na gising pa rin sa 5:00 AM, Isasama shuttle bussed down ang daan sa IHOP para sa almusal. At pagkatapos ng ilang araw mamaya ay ang tinatawag na CS50 fare-- isang dulo ng semester eksibisyon sa pagdiriwang ng lamang kung paano malayo kaya maraming ng CS50 mga mag-aaral ay may dumating mula sa week zero lahat ng paraan sa linggong ito, at isinasaisip na 73% ng mga classmates at ang sa iyo sa taong ito ay may hindi kailanman kinuha ng isang CS klase bago. Sa katunayan, upang muling bigyang-diin ng mas maraming, dito ay isang ilang higit pang mga mukha mula sa mga tauhan ni CS50. SPEAKER 4: [hindi marinig]. SPEAKER 5: [hindi marinig]. SPEAKER 6: [hindi marinig]. SPEAKER 7: [hindi marinig]. SPEAKER 8: [hindi marinig] SPEAKER 9: [hindi marinig]. SPEAKER 4: [hindi marinig]. SPEAKER 10: [hindi marinig]. SPEAKER 11: [hindi marinig]. SPEAKER 12: [hindi marinig]. SPEAKER 13: [hindi marinig] SPEAKER 14: [hindi marinig]. SPEAKER 13: [hindi marinig]. SPEAKER 15: [hindi marinig] SPEAKER 16: [hindi marinig]. SPEAKER 11: [hindi marinig] SPEAKER 5: [hindi marinig]. David MALAN: Ang ilan sa mga team ay ang kanilang mga sarili shopping klase. Ngunit kung kailangan yaong mga sangkap ng CS50 kawani ay dito, maaaring dumating sa up para sa sandali lamang. CS50 TFs at CAs at [? mga tauhan ?] miyembro here-- mga ito ay lamang ng ilang ng faces-- isa sa kanino mo lamang nakita, at ng ilang mga other-- at ilang iba pa rin. Bakit hindi namin sige at payagan ka guys isang limang minutong break. Kung kailangan mo upang pato sa shop klase, na fine. At sa loob ng limang minuto, makikita namin ipagpatuloy, ng pagtingin sa Scratch-- unang sa aming mga programming language, matugunan staff ng kurso dito ang ilang mga higit pa, at focus sa huli sa hanay ng problema zero. Kaya babalik kami sa limang minuto. [Palakpakan] Lahat tama. Kaya kami ay bumalik. At sa aming mga natitirang panahon ngayon, ang layunin ay sa antas ng paglalaro ng patlang sa mga tuntunin ng ilang mga terminolohiya, sa mga tuntunin ng ilang mga ideya. Dahil sa katunayan, tulad ng bawat ang ilan sa mga chart nang mas maaga, diyan ay pagpunta sa maging isang hanay ng mga antas ng karanasan sa klase, ang ilan sa kung saan ang mga mag-aaral ay may kinuha ng ilang programming bago, ang ilan sa kanino ay may hindi. At kaya may ganitong unang problema set at may ganitong unang wika ang mayroon kami ng pagkakataon upang simulan ang upang mang-ahas pagkatapos ng araw na ilan sa mga karaniwang bokabularyo at ideya. At gagawin namin ang ito sa pamamagitan ng paraan ng unang languages-- ng kurso bilang karagdagan sa C at sawa at JavaScript at SQL at HTML at CSS, kami ay nagbibigay-diin sa una at para lamang sa hanay ng problema zero sa mga ito graphical wika, na tinatawag na Scratch, na binubo ng MIT'S Media Lab pababa ng kalsada, upang makatulong mag-aaral at mga bata lalo na ipahayag ang kanilang sarili algorithmically-- sa isang paraan mas pare-pareho sa kung ano ang maaari naming tumawag computational pag-iisip. At ito ay isang kapaki-pakinabang na wika dahil masyadong mabilis sa susunod na linggo sa linggo ng isa, namin paglipat sa isang mas tradisyonal at arcane wika na tinatawag na C, na kung saan ay pulos sa texto. Mo lamang gamitin ang iyong keyboard sa upang isulat tagubilin tulad ng mga ito sa screen. Ngunit kahit na hindi mo pa nakikita isang programming language bago, sa loob lamang ng glancing sa ito, ang lahat maging ito misteriyoso, maaari mong marahil hulaan na marahil Kopya Hello World. Subalit mayroong isang pulutong ng mga sintaktik overhead doon. May ay ang weird hash simbolo o hash tag up tuktok. Mayroong ang anggulo bracket, ang ilang mga panaklong, kulot tirante, semi-colon-- mayroong lamang kaya magkano visual syntax na hindi nakakaabala sa paraan. Simulan namin ang kurso na may Scratch upang makakuha nakalipas na ang lahat ng mga intellectually hindi kawili-wili distractions, at focus sa halip sa mga ideya. Sa katunayan, ito ay maaaring maging bago. Ito, para sa mga ito, linggo ay magiging ayon. Ito, sa ganitong graphical wika simula, ay kung paano mo ipatupad na parehong program-- isang programa na kapag tumakbo, lang sabi kumusta mundo. At kung ano ang maganda tungkol Scratch ay na ito ay na ito graphical programming kapaligiran na gumagamit ng mga piraso palaisipan o bloke, na lamang pagkawingin magkasama kung ito ay gumagawa ng lohikal na kahulugan na gawin ito. At sa pamamagitan Scratch maaari kang bumuo ng animation at interactive na mga laro at sining, at anumang bilang ng mga bagay na maaari mong isipin sa iyong sariling pag-iisip, at ipatupad ang mga ito sa pamamagitan lamang ng pagkaladkad at bumababa piraso puzzle. At sa katunayan, kami ay may kakayahan upang ipahayag ang ilan sa mga parehong mga ideya na ko na lang nabanggit ng ilang sandali ago sa konteksto ng Mike Smith at paghahanap ng mga bagay ng isang telepono book-- tulad pag-andar, lamang pagkilos, mga bagay tulad ng mga loop na gawin bagay muli at muli, variable, na kung saan ay isang bagay na makikita namin ipakilala, ngunit ito ay pamilyar marahil mula algebra ilan lamang uri ng placeholder upang mag-imbak ng ilang mga halaga maaari ka kailangan later-- Boolean expression, kung saan ang mga yes no o totoo false katanungan mula sa bago. Kondisyon ay ang mga tinidor sa road-- mga sanga kaya na magsalita. At pagkatapos ay may ilang mga may interes tampok kami makita kahit na ngayon, tinatawag arrays at mga thread at mga kaganapan, na kami ay pagkatapos ay muling bisitahin ang higit oras sa iba't ibang mga wika. Ngunit Scratch ay nagpapahintulot sa amin upang galugarin ang lahat ng mga ito. Kaya dito sa simula, ito purple block ay kung ano ang isang function ay karaniwang pagpunta sa hitsura. Ito lilang piraso puzzle na may ilang salita tulad ng sabihin nating, kung saan ay ang action, at pagkatapos ay maaaring magkaroon ito ng isang argument o isang parameter-- ilang mga paraan ng uri ng pag-customize kung ano na ang ginagawa block upang ito ay hindi pre-natukoy sa pamamagitan ng MIT kung ano ang sinasabi na ito purple block. Sa katunayan, makikita mo ang sa isang sandali na ako makakapag-type ang mga salita tulad ng hello world, o kumusta David, o kumusta Zamayla, o kahit anong gusto ko, sa argument sa na puzzle piece-- puting kahon doon. Samantala, kung Gusto ko ng isang loop, kami na may mga piraso ng puzzle na hitsura ng isang maliit na orange na katulad nito. At ang kanilang mga hugis uri ng nagpapahiwatig na may mangyari muli at muli sa isang cycle. Kaya kung balutin akong kamustahin mundo block may magpakailanman harangan sa simula, lamang ito ay pagpunta upang panatilihin ang saying hello mundo magpakailanman, medyo literal. Samantala, may isa pang uri ng loop sa scratch na kami see-- isang ulitin block-- kung saan, kung ikaw alam nang maaga kung gaano karaming beses gusto mo na ang loop upang maipatupad isang may hangganan bilang ng mga beses sa fact-- mo maaaring tukuyin na sa pamamagitan ng pag-type sa isang numero o kahit na i-plug sa isang variable, tulad xoy dahil kakailanganin namin makita. Sa katunayan, tulad ng mga variable i sa kasong ito, na kung saan ay isang pangkaraniwang pangalan para sa isang integer variable na nag-iimbak lamang ng isang number-- isang integer ay maaaring maging, upang gamitin ang orange block dito upang magtakda ng isang variable tulad ng i sa zero. Narito ang isang halimbawa sa berde ng isang Boolean expression sa scratch. Kahit na ganito ang hitsura ng isang math formula, matematika inequalities tulad nito talaga ay Boolean expression. Ito ay alinman true o false. Ko ay mas mababa sa 50. Ito ay alinman sa isang oo o hindi na sagot o tama o mali sagot. At kami ay karaniwang tawag mga Boolean expression. At ito ay hindi kailangang maging 50. Maaari itong maging x mas mababa sa y, mas malaki kaysa sa y, katumbas ng y-- anumang bilang ng mga iba pang mga tanong ang dapat sagutin. Ngayon, sa unang tingin, ito ay maaaring tumingin biglang medyo bold dito, at ito ay. Ngunit konsepto matalino, ito ay medyo pamilyar mula sa bago. Kung x ay mas mababa sa y, kaysa sa sinasabi ng mas maraming. Else kung x ay mas malaki kaysa y, iyo ngang sabihing mas maraming. Else sabihin x ay katumbas ng y. Kaya kami ay may isang halimbawa doon ng isang third scenario-- ang tanging ikatlong possibility-- x ay alinman mas malaki kaysa sa, mas mababa, o katumbas ng. Kaya kami ay may isang tatlong paraan tinidor sa kalsada. At mapansin kung ano ang cool here-- simula, ito ay tila, ay may lamang ng isang palaisipan piraso, sa kasong ito, sa kung sino pa ang paririto block. At gayon pa man na tila sa magpahiwatig ka maaaring lamang magkaroon ng isang dalawang paraan ng tinidor sa kalye. Maaari mong pumunta sa kaliwa o kanan, ngunit kung ano ang tungkol na ang mga third sitwasyon? Paano kung x ay katumbas ng y? Walang sang-ayon. Sumakay sa isa puzzle piraso, ilagay isa pa sa loob nito upang lumikha ng mga semantiko katumbas ng kung, iba kung, else-- at ngayon ikaw magkaroon ng iyong tatlong paraan tinidor sa kalsada. At dahil kakailanganin namin makita, ang piraso Scratch puzzle maaaring batak at lumalaki, kaya bilang upang magsiksik ng mas maraming mga bagay-bagay sa kanila. Hindi mo na kailangang upang magkasya lahat ng bagay sa kanyang default na laki. Ito ay isang bagay bibigyan namin sa lalong madaling panahon makita ay tinatawag na isang array. Ito ay tulad ng isang list-- ilang mga paraan ng pag-iimbak ng maramihang mga piraso ng impormasyon sa isang variable, hindi lamang ang isang numero. Ang mga gagamitin namin makita ang isang kinatawan ng isang bagay na tinatawag na multi-threading. Sa katunayan, ang lahat ng iyong Mac at PC mga araw na ito sumusuporta sa multi-threading, na nangangahulugan na maaari mong literal gawin ang maramihang mga bagay sa isang pagkakataon. Maaari kang magkaroon ng hanggang Microsoft Word sa foreground, nagtatrabaho sa ilang mga sanaysay. Maaari mong magkaroon ng isang browser sa background opening G-mail o Facebook o mga katulad. Ang iyong computer ay maaaring gawin ang maramihang mga bagay ngayon dahil ito ay multi-may sinulid, at mga programa na ang mga ito sa sa partikular ding multi-may sinulid. May mga bagay na tinatawag na mga kaganapan tulad ng well sa mundo ng simula, at pagkatapos ay doon ay isang paraan ng masyadong, upang gumawa ng aming sariling mga piraso pasadyang puzzle kung bagay hindi talaga umiiral nang maaga. Kaya sabihin udyok ito bilang mga sumusunod. Ang ilang mga taon na nakalipas, kapag ako unang natuklasan simula, kapag ako ay talagang isang Grad mag-aaral sa MIT, kami ating sarili ay tasked upang gawin araling-bahay. At implemented-- ko na kung saan, sa alaala, ay isang napaka-mahirap na desisyon dahil ito ay ang pinaka-nagpapasiklab sa galit song sa mundo upang makinig sa para sa walong oras habang nagtatrabaho sa iyong homework-- ngunit isang bagay na ako ay tinatawag Oscar Time, kung saan ay marahil isang pamilyar na kanta. CS50s aari Jordan Hayashi, isa sa aming higit senior miyembro ng kawani, ay may-upgrade ito para sa 2015 at ngayon 2016, dahil pabalik sa araw, ako ay nagkaroon ng lahat ng bagay lamang ang pagpunta sa ni Oscar basurahan. Ngayon sinusuportahan namin recycling at composting. Ngunit upang ipinta ang larawan ng kung ano ang maaari naming gawin dito at upang mag-udyok sa ilan sa mas mababang antas na mga halimbawa, kami ay maaaring makakuha ng isa pang volunteer na lang dumating sa up at i-play ang aking unang araling-bahay assignment kailanman? Pumasok dito up. Ano ang iyong pangalan? HENRY: Henry. David MALAN: Henry, dumating sa up. Pumasok dito up. Magtungo ang alinman na paraan, at makikita mo sa isang sandali, Ako pagpunta sa sige at pindutin ang green bandila sa tuktok na kanang sulok, na nangangahulugan pumunta. Ang sign icon maliit stop ay pagpunta sa sabihin stop, at na kapag binuksan mo ang at itigil ang programa. Masaya akong makilala kayo. Lahat tama. Kaya kami ay pagpunta upang makita ang mga tagubilin sa screen sa loob lamang ng ilang sandali. At sa pamamagitan lamang ng paglalaro ng larong ito para sa isang ilang seconds-- tiwala sa akin, hindi namin ay pagpunta sa nais upang i-play ang lahat ng mga paraan upang ang end-- kalooban mo makakuha ng ideya ng kung ano ang ginagawa ng programa. At higit pa sa focus sa Henry pagiging mabuti o masama sa ito laro, focus at kung paano ito ay ipinatupad sa pamamagitan ng akin orihinal at pagkatapos ay sa pamamagitan ng Jordan. Sa ibang salita, kung saan ay ang mga variable? Nasaan ang mga loops? Nasaan ang mga function? At kami makita kung hindi namin makita mga ilalim ng hood. I-click lamang at i-drag trash sa naaangkop na bin. [MUSIC nagpe-play] Lahat tama. Iyan ay isang magandang. Bakit hindi namin itigil doon. Salamat. Binabati kita sa Henry. Salamat. [Palakpakan] Isipin lamang ang pag-debug na programa. Kung mayroong isang problema ng dalawang minuto sa song-- ngunit kaya kung ano ang nangyayari sa dito talaga? Bilang kumplikado bilang maaari ito simulan upang tila upang makakuha ng sa paglipas ng panahon, sa katunayan mas at mas mga bagay-bagay na nagsimula bumabagsak na, kung ano ang kawili-wiling tungkol ganitong uri ng example-- at kami makita ng ilang others-- ay na kung ikaw tumingin nakalipas na ang pagiging kumplikado o ang pagiging sopistikado ng laro, mayroong isang napaka-simpleng gusali bloke na play-- lahat ng kung saan, kung magdistila mo ang mga ito sa mga gusali ng mga bloke, ang mga ito napaka-access at implementable kanilang sarili. Halimbawa, ito ay ng ilang oras, ngunit ako pretty sigurado kung ano ako sa una ay kapag paggawa ng larong ito para sa unang pagkakataon ay ako ganap tulad procrastinated. Hindi ko tumutok sa anomang paraan sa lohika o ang mga piraso puzzle, I nakatutok sa mga graphics at paghahanap ang post kalye at ang basurahan at ang lahat ng iyon. Datapuwa't ginanap ang mga bagay na kailangan ay ingredients sa unang. At isang beses ko natapos procrastinating at pagtula ang overarching framework, Ako ay nagpasya, ipaalam sa akin lamang gumawa ng isa piraso ng basura pagkahulog mula sa kalangitan. At kami makita Scratch sinusuportahan bagay na tinatawag na sprites-- character na maaari may iba't-ibang costumes sa kaya sila naiiba ang itsura. At kaya ko bang ilagay ang isang basura kasuutan sa isa tulad sprite. At ko lang kailangan ito sa mahulog mula sa langit. At kaya ito ay lumiliko out, simula, tulad ng karamihan sa mga wika programming, sinusuportahan ng random na numero o technically pseudocode random na numero, upang sa pamamagitan ng pag-drag at bumababa ng ilang mga bahagi ng palaisipan, Ako ay magagawang upang magkaroon ng trash dumating mula sa kaliwa sa unang. At pagkatapos ay ang susunod na oras na tuloy bumagsak, mula sa kanan at pagkatapos ay mula sa gitna. At lahat ng mga laro ay ay lamang may trash bumabagsak mula sa kalangitan. Hindi mo maaaring punto sa ito o i-click ito. Hindi mo maaaring buksan ang basurahan. Hindi mo maaaring gawin ang anumang bagay. Ngunit ito ay isang sanggol na hakbang papunta sa aking ultimate paningin. At pagkatapos nito, ako talaga ipinatupad ng ilang mga uri ng sensing upang kung mo i-click ang at i-drag sa mga piraso ng basura sa ibabaw ng basurahan, Oscar lid ay buksan at isara. Walang mangyayari sa basura, ngunit ng hindi bababa sa ang talukap ng mata ay buksan at isara. Kaya pagkatapos ay tingnan, step dalawa sa dalawa. At ito ay kung ano ang pagpunta sa maging key sa parehong hanay ng problema zero at sa programming mas pangkalahatang paraan, ay upang gawin ang mga napaka sinadya hakbang na sanggol. Dahil hindi lamang ay nagpapahintulot sa iyo upang pakiramdam matapat matupad mas quickly-- ito ay ang pinakamasama bagay sa mundo upang subukan upang ipatupad ang lahat ng Oscar Time, pagkatapos ay oras mamaya pindutin ang green flag, at wala ay gumagana tulad ng inaasahan dahil kung saan gagawin mo kahit magsimulang debug o upang troubleshoot na programa? Ito ay lamang ng napakalaki. At kaya tunay na embracing ang ideya na ito ng pagkuha steps-- hakbang na sanggol muli at again-- gusali up isang bagay na, sa katapusan, talagang kahanga-hangang at kumplikadong, ngunit sa una, ay hindi halos bilang magkano kaya. Sa katunayan, sabihin gawin ito. Hayaan akong sige at- Kaskasin mismo umiiral sa web sa Scratch.MIT.edu, at kayo ay sinabi bilang magkano muli sa problema set zero, ang detalye para na kung saan ay mayroon na sa CS50 website. Ngunit ito ay kung ano Kaskasin mismo ay. At doon ay talagang lamang tatlong pangunahing mga lugar. Sa tuktok kaliwa doon ay ang tinatawag na stage. Ito ang simula. Ang default na kasuutan ay isang pusa. At ito ang mga hugis-parihaba mundo sa kung saan maaari mong move-- pataas, pababa, pakaliwa, kanan at ilang iba pang mga bagay-bagay. Sa gitna narito ang aming mga kategorya o sa aming mga pallets ng mga piraso malaking suliranin, at iba't ibang kulay ibig sabihin ng iba't ibang bagay. At kung sundutin mo sa paligid, makikita mo ang mga bagay tulad ng mga loop at kundisyon at mga variable at iba pang mga ingredients. At pagkatapos ay sa paglipas dito ay ang script na lugar. Ito ay kung saan ang maaari kong i-drag at i-drop mga piraso ng puzzle upang gawin ang mga bagay. Kaya sabihin gawin ang isa ganoong bagay. Hayaan akong sige at- at alam ko kung saan ito. Kaya ako ng pagpunta upang agad na mag-click sa kung saan alam ko mga bagay ay nahahanda na maging, ngunit pagturo at pag-click at poking sa paligid ay hindi maiwasan. Kaya kapag berdeng bandila click, kung ano ang gusto kong gawin? Pupunta ako upang gawin ito. Pupunta ako upang i-drag ito purple puzzle piraso, kamustahin para sa dalawang segundo, at hayaan mo akong mag-zoom in. At ako pagpunta upang baguhin ito upang maging kung ano ang nais ko ito upang be-- hello world para sa dalawang segundo ay pagmultahin. Ngayon, ako pagpunta sa i-click ang green flag, o kung ako ay talagang gusto, maaari ako ng full screen ito at pagkatapos ay bumalik. Ito ay lamang panatilihin ang lahat sa isang window. Green flag-- kumusta mundo. Lahat tama. Hindi lahat na kawili-wili. Kaya hayaan mo akong magpatuloy at gawin ito. Hayaan akong subukan ang isa pa. Kapag berdeng bandila clicked-- sabihin gawin ang isang bagay tulad ng isang tunog. At mapansin na sa labas ng ang kahon para sa libreng makakuha ka isang pusa tunog, bilang ay ang default sprite. Kaya ngayon hayaan mo akong sige at pindutin ang berdeng bandila ngayon. [Meowing] Aw. Iyan ay kaibig-ibig. Ako programming. Kaya kung ano ang aking ginawa? Ito ay ang katumbas ng isang programa. Ito ay malinaw naman sobrang simple. Ito ay hindi tunay na gumawa ng lahat na marami pagsisikap at MIT ginawa karamihan ng mga trabaho, ngunit ako ay may tinatawag na isang function. Ako ay may ginagamit ng isang function. Ginawa ko ang ilang mga aksyon, gamit lamang na ang isa purple piraso puzzle. Well, kung gusto kong gawin tatlong meows sa isang hilera? Hayaan akong sige at gawin ang dalawang pu't tatlo. At mapansin na kapag ikaw mag-hover malapit sa isang piraso puzzle, isang maliit na puting linya ay lilitaw uri ng magnetically, at ito ay snap magkasama kapag hayaan kang pumunta. Tingnan natin kung ano ang mangyayari dito. [Meowing] May isang bug. Ko lang marinig ang isa ngiyaw. Bakit maaaring na maging? Yeah? Yeah. Hindi namin talagang marinig ito, ngunit iyan ay mabuting intuwisyon. Lahat ng mga ito sa pag-play nang sabay-sabay. Bakit? Well, ang computer ay lamang ang pagpunta gawin kung ano ang iyong sabihin sa ito upang gawin. Kaya kung sasabihin mo, play ng tunog, play ng tunog, i-play ng tunog, ngunit hindi mo sabihin dito upang i-play hanggang sa tapos ka na, i-play hanggang sa ikaw ay tapos na, ito ay pagpunta sa suntok sa pamamagitan ng ang programa talagang mabilis at huwag lamang kung ano ang iyong sabihin sa ito upang gawin. Kaya ako tunay na kailangan upang ayusin ang ito sa loob ng ilang mga paraan. hindi ko na lang gawin ito, kumuha alisan ng ito. Hayaan akong subukan ang iba pang mga puzzle piece---play ng tunog meow hanggang tapos, at pagkatapos ay i-drag ang tatlo sa mga ito at i-click ang I-play. [Meowing] Ito ay hindi tunay very-- thank you-- very natural. Kaya bakit hindi I-- ipaalam akong pumunta sa control dito. Nice. Maghintay ng isang segundo, at ngayon hayaan mo akong bumalik sa mga tunog, at pag-play ng tunog hanggang tapos, at pagkatapos ay hayaan mo akong makakuha maghintay ng isang segundo. At pagkatapos ay hayaan mo akong pumunta at makakuha ng isa higit pang tunog, at dito namin pumunta. [Meowing] Ang isang maliit na mas natural, ngunit ito ay hindi masyadong mahusay. Tulad ng ako ay nagsisimula pa nababato, ang lahat ng maging ito sa madaling sabi, pag-click nang pabalik-balik at talagang duplicating aking work-- pretty much pagkopya at pag-paste. Sa katunayan, kung Kontrolin ko nag-click o pakanan nag-click, Ko maaaring magkaroon lang kopyahin at ilagay. Ano ang gusto maging isang mas mahusay na bumuo ng gamitin? Ano ideya sa harap? Oo, kaya isang loop. At sa katunayan, kung kami poked sa paligid, maaari naming mahanap nang eksakto na. Hayaan akong pumunta sa Kaganapan o sa halip Control. Kaya repeat-- hindi ko ginagawa gusto mo itong maging 10 beses. Iyon ay pagpunta upang makakuha nakakainis mabilis. Datapuwa't ipinagpapauna ko sa ulitin ng tatlong beses. Hayaan akong bumalik sa tunog at i-play ang tunog hanggang sa ito ay tapos na. Hayaan akong bumalik sa Control at maghintay lamang ng isang segundo. At pansinin, maaari ka tingin ito ay hindi magkasya, ngunit muli kung magnetically ipaalam mo ito snap sa lugar, ito ay lumago upang punan. Ano ang i-play ito ngayon? [Meowing] OK. Nice. At ito ay kung ano ay tinatawag na isang programa na ay tama din. Ito meowed tatlong beses medyo natural, ngunit ito ay mas mahusay na dinisenyo. Gumagamit ako ng mas mababa kalabisan. Hindi ko i-copy at i-paste ang anumang bagay. Ko na lang na ginagamit ng isang mas mahusay na ideya. Ngayon, ito ay hindi pa rin ang lahat na kawili-wili sa Scratch hindi paggawa anumang bagay. Kaya sabihin gawin ibang bagay sa halip. Gawin ang isang bagay magpakailanman Hayaan. At alam mo kung ano? Motion tila kagiliw-giliw. ay may kanya ilipat 10 let hakbang at pindutin ang play ngayon. OK. Well maaari namin uri ng drag siya pabalik, at siya ay pa rin tumatakbo dahil siya ay paggawa na ito magpakailanman. Kaya ang loop ginagawa kung ano ito ay nagsasabi na gawin, ngunit ito ay hindi lahat na kawili-wili. Gawin natin ito. Hayaan akong magdagdag ng isang control block, at gamitin ang isa ng mga kondisyon para sa sa unang pagkakataon. Kaya ito ay pagpunta sa ilipat 10 steps-- 10 mga tuldok, 10 pixels sa screen-- pagkatapos ito ay pagpunta sa hilingin sa tanong na ito. Kung ang isang bagay ay totoo, at pagkatapos ay gawin isang bagay sa loob ng block. Kaya ito lumiliko out sensing ay may isang buong grupo ng mga Boolean expressions-- tanong ng oo hindi o totoo false form-- hayaan mo akong gawin ito. Kung touching-- at pagkatapos ay mayroong ito maliit na drop down menu. maaari kong parameterize ito. Kung hawakan ang edge-- sabihin gawin ang isang bagay tulad na. Kaya kung hawakan edge-- hayaan mo akong bumalik sa motion. At bakit hindi namin lamang bumwelta 180 degrees? Lahat tama. So forever, ilipat 10 hakbang. Kung ikaw ay pagpindot sa edge, turn 180 degrees. At iyan ay hindi ang dulo ng programa dahil ikaw ay sa isang walang hanggan-block, kaya ito ay pagpunta sa pumunta muli at muli at muli at muli. Kaya sabihin makita kung ano ang mangyayari. OK. Ang isang maliit na maraming surot, ngunit ang uri ng cool. At maaari naming idagdag sa ito ang ilang mga ulok mga bagay na hindi lahat na intellectually kawili-wili. Ngunit kung namin pindutin ang maliit na microphone button-- ouch. Hayaan akong linisin ito up. Hayaan akong mapahusay ito bilang sasabihin nila sa TV. Linisin na up, I-save, at pupunta na ngayon hanggang sa mga script. At ngayon, hayaan mo akong pumunta sa tunog. Hayaan akong bigyan ito ng isang pangalan. Tatawag ako ito ouch. At ngayon-play ng tunog ouch. Pansinin ito ay lilitaw sa maliit na drop down menu. Tingnan natin. [OUCH] [Tumatawa] Ngunit maaari naming baguhin t kanyang sa mabilisang. Maaari naming maging dalawang beses bilang nakakainis. [OUCH] O kung gawin namin ito tulad ng 1,000 mga hakbang sa isang time-- OK. Kaya kami ay pagpunta upang mag-iwan ng isa na nag-iisa. Kaya muli, pagbuo blocks-- ko makapagsimula sa isang bagay na sobrang simple, at pagkatapos ay idinagdag ko ang isang tampok na ito, nagdagdag ng isang tampok na ito, nagdagdag ng isang tampok. At hindi ko na kailangang mag-alala tungkol sa kung paano ang una sa mga tampok ay ipinatupad habang patuloy kong sa layer bagay sa itaas. Kaya sa katunayan, hayaan mo akong gawin ang isa sa iba pang mga dito. Hayaan akong sige at buksan ang isang file na Dinala ko nang maaga, na tinatawag na tupa. Kaya ito ay may bahagyang iba't-ibang character na ganito ang hitsura. At hayaan mo akong makita kung hindi ko makakaya gawin ang isang bagay gamit ang isang counter sa ganitong case-- isang tinatawag na variable. Ako pagpunta sa sige at sa ilalim Events-- hayaan mo akong makakuha ng isang kulay berdeng bandila click. Pagkatapos hayaan mo akong pumunta sa Data, na alam ko mula lamang sa paglalaro sa paligid bago, ay kung saan variable ay. At ako pagpunta sa sige at i-drag ito. Kaya ang isang variable na tinatawag na counter, at Ako pagpunta sa initialize ito sa zero. ang maaari kong tumawag ito anything-- xo y o z-- ngunit sa programming, pagtawag ng isang bagay sa isang semantically kapaki-pakinabang na paraan, tulad ng counter, na naglalarawan kung ano ito ay, ito ay isang maraming mas madali na basahin ang iyong code sa ibang pagkakataon. Hayaan akong sige at makakuha ng isang magpakailanman harangan dito. At hayaan mo akong pumunta sa hitsura page at gawin ang isang Say block. Ngunit kung ano ang cool na tungkol sa mga variable ay ako Hindi mo na kailangang i-type lamang sa isang bagay tulad kumusta mundo, na kung saan hindi namin na tapos na, maaari ko sa halip pumunta sa Data at i-drag ang aking mga variable, at kahit na kahit na ang hugis ay hindi lubos hitsura ito ay dapat kumasya, ito ay lumago upang punan. At kukunin ko na lang sabihin ang counter para sa isa second-- spoiler-- pupuntahan niya upang mabilang. Susubukan naming sabihin nito para sa isang segundo. Pagkatapos ay ako pagpunta upang pumunta at may kanya maghintay para sa isang segundo, sa gayon ito ay hindi mabibilang up masyadong mabilis. At pagkatapos ay sa wakas, baguhin ang counter sa pamamagitan one-- sa ibang salita, dagdagan ang sagot sa pamamagitan ng isa karagdagang halaga at gawin ito magpakailanman. Kaya ang mga tupa masyadong, tulad ng isang programmer, binibilang mula sa 0. At kung tayo'y magsipaghintay ng sapat na katagalan, gagawin niya ito magpakailanman. Ngunit iyan ay hindi eksakto totoo, dahil sa katunayan, dahil kakailanganin namin matuklasan sa isang linggo, integers at computer mas pangkalahatang paraan, technically lamang magkaroon ng isang finite-- well, sa halip na mga computer, kapag kinakatawan nila integers, lamang magkaroon ng isang tiyak na bilang ng bits. Yaong liwanag na mga bombilya doon maaari lamang bilang kaya mataas nang hindi ka pa sa labas ng ilaw bombilya. At isang computer masyadong, lamang ay may kaya magkano ang memory, lamang ay may kaya maraming mga transistors, gayon ay maaari lamang itong makabuluhan kaya mataas. Kaya ito ay lumiliko out na ang mga tupa, Sa tingin ko, maaaring bilangin sa 2 bilyong o isang bagay na medyo malaki. Kaya kami ay hindi pagpunta sa maghintay para sa ito upang mangyari. Ngunit kalaunan ang ilang mga bug ang mangyayari na maaaring magkaroon ng ilang mga napaka-tunay na mundo ramifications. Ngunit lampas sa mga tupa upang lamang introduces ng isang variable. Sabihin sige at buksan up isang bagay na aking ginawa nang maaga dito na tinatawag Pet ang Cat-- Pet ang Cat sa paglipas dito. At mapansin dito ito ay ilang bloke, ngunit kapag berde bandila nag-click, magpakailanman paggawa ng mga sumusunod. Kung gumagamit ka ng pagpindot sa mouse pointer-- kaya ang cursor sa screen, ang arrow-- paglalaro sound meow at pagkatapos ay maghintay ng dalawang segundo. At lamang gawin ito magpakailanman. Just patuloy maghintay upang makita kung ang pointer-- kung ang cat ay pagpindot sa pointer. Kaya ko pindutin ang play. Nothing ang nangyayari. Ngunit bilang ilipat ko ang cursor sa ibabaw ng pusa, [Meowing] At kung ilipat ko ito sa malayo, hindi petting ang pusa anymore. Kaya ang ilang mga kondisyon na lohika nested sa loob ng isang loop. Paano ang tungkol sa halimbawang ito, kusa tinatawag Huwag Pet ang Cat? Ano ang ito pagpunta sa gawin? [Meowing] Bakit dapat mong hindi pet ang pusa? [Meowing] OK. Kaya ito ay isang halimbawa ng isang kung sino pa ang paririto. Ito ay isang desisyon punto at dahil sa ito ay pag-upo sa loop, ito ay parehong nagsisimula pa naka-check. Totoo ba ito? Totoo ba ito? Totoo ba ito? Totoo ba ito? At sa huli, isa sa mga ito ay pagpunta sa mag-aplay at kaya mong marinig alinman sa meow o ang dagundong ng leon sa kasong iyon. Well, sabihin gawin ang isang bahagyang mas magarbong isa na aking ginawa nang maaga too-- thread. Kaya ang isang thread ay isa lamang bagay na ang isang computer ay maaaring gawin. Kaya ang isang multi-sinulid programa ay isang programa na maaaring gawin ang maramihang mga bagay nang sabay-sabay. At lahat ng mga halimbawa Sa ganyang kaalaman ay nagkaroon lamang ng isang script, kaya na speak-- isang programa na tulad nito dito. Ngunit mapansin ang program na ito ay may dalawang sprites, dalawang character. Ang isa ay isang ibon. Ang isa ay isang pusa. At mapansin kapag nag-click ako sa mga down kaliwa, sila ay may kanilang sariling mga script o mga programa na kaugnay sa kanila. At kapuwa nga mga programa, paunawa, start may kapag berde bandila clicked-- tingnan natin ang cat-- kapag berde bandila na-click. At kaya sa katunayan, kapag ako pindutin ang play ngayon, dalawang bagay ay pagpunta sa mangyayari sa iisang pagkakataon. Ang pusa at ang ibon ay parehong pagpunta sa gumana nang sabay-sabay upang lumikha ng epekto na ito. At maaari mong isipin kung ano ang nangyayari. May isang loop at ang mga ibon at ang pusa ay sa isang loop. Ibon ay lamang nagba-bounce tulad Ako ay bago kapag sinabi ko ouch. Ngunit ang pusa ay malinaw na isang kalamangan. May isa pang sensing block na ang mga puntos sa pusa sadyang sa ibon sa kasong ito dito. Kaya maaari naming mang-ulol apart, sa pamamagitan ng pagtingin sa pamamagitan ng mga bloke, ano ang nangyayari. Ngunit ang susi sahog dito ay isa. Ang mga ibon, kaya na ang larong ito ay hindi ganap boring-- o ito animation-- nagsisimula sa isang random na direksyon. At ang computer ay pagpili isang numero sa pagitan ng 90 at 180 mahalagang, kaya na ito ay isang bahagyang iba't ibang mga animation sa bawat oras. At pagkatapos ay mapansin dito, kung ang cat ay tungkol sa ibon, at pagkatapos ay i-play ang leon apat sound-- ang dagundong. Ngunit samantala sa ibon palette, mayroon kaming ito. Forever, kung hindi hawakan ang pusa, lamang panatilihin ang paglipat tatlong hakbang. At pagkatapos ay narito ang isa pang piraso puzzle. Kung ikaw ay nasa gilid, bounce. Kaya ang mga ibon ay lamang uri ng minding kanyang sariling negosyo, lamang na lumilipad sa paligid at nagba-bounce, at ito ay talagang ang pusa na nagkaroon ng kondisyong logic upang matukoy kung ito ay nahuli ang ibon. Lahat tama. Kaya sabihin gawin sa isang iba pang dito, ang isang ito ay tinawag Hi Hi Hi. At ang isang ito dito lamang ay ito sa isang walang hanggan loop. Ngunit notice-- paano namin itigil ito napaka nakakainis na programa? Pindutin ang pindutan ng space bar. Dahil kung gagawin ko na, sa kaliwang kamay program-- mapansin ito ay patuloy listening-- ay ang susi space press. Kung ang space bar pipi, at kung gayon, kung ano ang ginagawa nito? Ito ay isang napaka-pangkaraniwan pamamaraan. Ito ay nagtatakda ng isang variable na katumbas ng ilang mga halaga. Ngunit ito toggles ng halagang iyon. [? Kaya hitsura?] batay sa shape-- ko magkaroon ng isang variable na ako sinulat nang maaga na tinatawag na Naka-mute, na lang sabi oo o hindi. Ay ang sound mute o hindi? Tama o mali? At pansinin, ako sinasabi this-- kung naka-mute ay zero, at pagkatapos ay baguhin sa isa, sino pa ang paririto set mute ito sa zero. Kaya lang i-flip ang halaga mula sa zero sa isa. maaari ba akong magkaroon done-- baguhin ito dalawa hanggang tatlong at 1:57 o apat sa lima o apat na sa anim. Ngunit ito ay hindi mahalaga ano ang mga numero gamit ko, kaya hangga't panatilihin ko pagbabago nito ang kabaligtaran. At karamihan sa anumang programmer gagawin lang piliin ang zero at one-- false at totoo, off at on-- upang kumatawan ito. At ito ay tumatakbo pa rin. Kung ako pindutin ang space bar muli [SEAL SOUNDS] Ang programa ay tumatakbo pa rin. Dahil mayroong ito ng iba pang script na nagsasabing, magpakailanman gawin ang sumusunod. Kung ang naka-mute variable ay katumbas zero-- kaya kung hindi ka na naka-mute ay ang logic-- kung ito ay hindi totoo o hindi, at pagkatapos i-play ang tunog, dahil hindi ka na naka-mute. dapat mong i-play ang tunog at pagkatapos ay tingin hi hi hi para sa dalawang segundo at pagkatapos ay maghintay, at gawin ito muli at muli at muli. At kaya sa ganitong paraan ang mayroon tayo ng isang paraan para tao to-- para sa mga programa upang makipag-ugnay. At hindi nila kailangang ay bilang napetsahan bilang iba. Sa katunayan, poking around-- walang halong biro-- isang tao na ginugol ng isang malaking halaga ng oras sa internet pagpapatupad PokemonGo sa scratch. Ito kahit na geolocates sa iyo sa Cambridge o Allston dito. Kaya kung nais mong makita ang masyadong ano ang mga tao ay maaaring gawin ay this-- very magarbong menu. Mag-click sa dito. Ito ay sa akin sa aking mga arrow key ngayon. Pupunta ako sa pumunta pagkatapos nito. I-click. At ngayon nag-click ang Pokeball. Ibig kong sabihin, tingin ko ikaw ay dapat na i-click ang Pokeball. Lahat tama. Kaya ginawa ko iyon. Maaari ba akong pumunta sa paglipas dito. At ang taong ito ipinatupad ng ilang mga karagdagang Pokeballs higit here-- tatlong Pokeballs. Magpo-post kami ng isang link sa ito online para makita mo ang i-play. Ngunit paunawa mayroong lamang ilang mga pangunahing gusali ng mga bloke. Ito hitsura ng maraming may interes, at ito ay. Ito ay kahanga-hanga at higit pa kaysa sa gagawin namin karaniwang asahan, tiyak para sa hanay ng problema zero. Wala akong ideya kung gaano katagal ang taong ito na ginugol sa online. Ngunit ito ay lahat lamang ng isang loop. May isang sound playing. Mayroong ilang mga uri ng loop pakikinig para sa kung ako paghagupit ang up arrow o ang down arrow o sa kaliwa at sa kanan, at pagkatapos ay kung gayon, ito ay gumagalaw ito ng ilang bilang ng mga pixels. At pagkatapos ay kung ako mag-click sa isa pang engkanto, may ilang mga uri ng kung kondisyon doon. Yeah, ito ay nakakakuha ng masyadong matinding. Kami ay pagpunta upang ihinto. Lahat ng ito ay mga pangunahing gusali bloke. Walang iba pang mga ingredients iba pang kaysa sa mga na namin ay tumingin sa na. At pa dito, hayaan mo akong gawin isang huling set ng mga halimbawa na paints ng isang larawan masyadong ng kung ano ang maaari mong gawin dito. Narito ang isang napaka-simpleng programa na ginagawa lamang this-- ubo, ubo, ubo. At batay lamang sa kung ano kami ay tumingin sa gayon ay malayo, kung saan ay ang malinaw pagkakataon para sa pagpapabuti. Ang program na ito ay tama. Ito coughs tatlong beses, na kung saan ay kung ano ako inilaan. Ngunit hindi maganda ito ay ipinatupad. masama Idinisenyo ito. Bakit? Yeah. Ito ay hindi isang loop. At ito ay hindi kaya magkano na ito ay hindi isang loop, ito ay na mayroong isang pulutong ng mga kalabisan. May ay kinopya at nailagay code, kaya na magsalita. At ang solusyon marahil ay talagang isang loop. Kaya hayaan mo akong magpatuloy at mapabuti sa na. At ako pagpunta upang i-drag ang mga sa paglipas dito. Hayaan akong sige at makakuha ng isang paulit-ulit na block, baguhin ito sa tatlo. Ako pagpunta sa itapon ang ilan sa mga bloke. At mapapansin mo ito ay medyo madaling maunawaan. Mong i-drag at i-drop at mga bagay lumitaw at mawala sa kalaunan. At maaari kong i-drag lamang ito sa dito, at ngayon ay mayroon akong isang mas malinis na bersyon pa rin. Pero alam mo kung ano? Mayroong ang pagkakataong ito ngayon para abstraction-- upang simulan upang tukuyin ang mga bagong bokabularyo na MIT ay hindi inaasahan. Mayroong maghintay at ulitin at magpakailanman at kung, ngunit kung ano kung gusto kong ipakilala ang salitang ubo bilang block? Paano kung gusto ko ang isang malaking suliranin piraso na ang layunin sa buhay ay upang ubo? Well, tingnan natin ang bersyon na ito dito, na kung saan ginawa ko ang mga sumusunod. Magically, aking nilalang ito palaisipan piraso dito, na kung saan ay nagbibigay-daan Scratch mong gawin. At sa katunayan C at sawa at JavaScript ay pagpunta sa magpapahintulot sa inyo na gawin ito pati na rin. Maaari kang lumikha ng iyong sariling pasadyang piraso na tumawag sa iyo kung ano ang gusto mo. Sa kasong ito, ubo nararamdaman tulad ng isang makatwirang kahulugan. At pagkatapos ay may mga piraso pababa dito maaari mong tukuyin kung ano ang ibig sabihin nito. I dragged at bumaba mula ito palette here-- pa blocks-- ito malaki purple block, kung saan ako nag-type sa ubo bilang pangalan ng aking mga bagong piraso puzzle. At pagkatapos ay ako na nagsasabi anumang oras na ang isang user mga tawag na ito bagong piraso ubo puzzle, gawin ang isang say at isang paghihintay. At kaya up dito sa aking paulit-ulit na block, Maaari ko lang ubo tatlong beses. At Gusto ko magtaltalan, lalo kung ngayon itatago mo ito detalye. Sino ang nagmamalasakit kung paano ubo ay ipinatupad? Lahat na mahalaga ko tungkol sa bilang programmer na maaari kong pag-ubo. Wala akong pakialam kung paano sabihin ay ipinatupad. Ko na lang pag-aalaga na ang cat ay maaaring sabihin ng isang bagay. Maaari ko abstract ang layo na detalye at lamang ang focus sa kung ano ang sa screen dito. Ngunit maaari kong tumagal ito ng isang hakbang karagdagang. Pansinin na dito, mayroon akong ipinatupad ang loop ng tatlong beses. Ngunit paano kung sa halip ko grab bersyon na ito? At paano kung sa halip sa ang bersyon na ito dito, Ko na lang baguhin ang aking puzzle piraso na kumuha isang argument at input unto mismo? At na input ay maaaring maging isang numero tulad ng tatlo. Kaya ngayon, kung ako ay pagsulat ng isang programa at gusto ko ang pusa sa pag-ubo, Maaari ko talagang sabihin sa puzzle pagdugtong kung gaano karaming beses sa pag-ubo, dahil sa ibaba dito, ang isang may interes bersyon ng mga piraso pasadyang puzzle lets ako tukuyin na ubo aktwal na tumatagal isang input-- tumatagal ng isang argument tulad nito. At alam mo kung ano? Siguro ako mapagtanto, maghintay ng isang minuto. Pag-ubo ay ang same-- ito ay sa panimula ang parehong ideya bilang bahin. Ito ay lamang ng isang iba't ibang mga salita sa screen. Maaari ko abstract ang layo karagdagang at ipatupad ito huling bersyon ng isang ubo, na sa unang tingin ay paraan mas kumplikadong naghahanap. Ngunit mapansin kung ano ang nagawa ko. Mayroon akong ngayon generalized-- genericized really-- ito palaisipan piraso na tawaging sabihin salita n beses. At ngayon, mayroon akong dalawang mga bagong piraso puzzle pababa dito tukuyin ubo n beses. At ano ang ginagawa ng ubo function na gawin? Ano ang aking mga pasadyang piraso puzzle gawin? tawag lang nito ang say block, pagpasa sa ang salitang gusto kong sabihin, pagpasa sa bilang ng beses na gusto kong sabihin. Dahil ngayon ang maaari kong ipatupad bumahing sa pamamagitan lamang ng sinasabi Achoo, sa kasong ito, ang ilang bilang ng beses. At kaya ako layering at layering. At muli, ang susi dito ay hindi kung paano ko ipatupad ito, ngunit ang katotohanan na kung ako lang literal ilipat ang mga off ang screen, tingnan mo kung ano simple kung hindi pretty aking programa hitsura ngayon. Dahil ito ay kung ano ito sabi ni, ko na lumilipad ang isip ang layo kung ano ang sa loob na itim na kahon. ito ang mangyayari na maging isang kulay lilang kahon dito, ngunit ko na nahaharangan ang layo ano ang nasa loob dahil hindi ko pag-aalaga kung paano ito gumagana. Ko na lang pag-aalaga na ngayon na ito ay gumagana. At sa katunayan, sa problema set zero, ito ay eksakto ang uri ng layering ng mga ideya makikita mo magkakaroon ng pagkakataon upang galugarin. Ito ay eksakto ng pagkakataon na mag-aplay sa paglutas ng problema pamamaraan, sa kung ano ay marahil isang pamilyar na kapaligiran. At kung hindi mo na programmed bago o program bago, makikita ninyo na mayroong isang maliit na bagay sa environment na ito para sa lahat. At sa pamamagitan problema set isa sa oras sa isang linggo, kami ay lumipat sa ay nagbibigay-diin sa isang mas mataas na antas ng wika na tinatawag na C-- o sa halip ng isang mas mababang antas ng wika na tinatawag na C-- na kahit na higit pa makapangyarihan, kahit na ito ay ng kaunti pa misteriyoso sa unang tingin. At makikita mo mapagtanto per TL ngayon: DR, na ang problemang ito set ay may isang mas maikling window ng oras kaysa sa hinaharap sa buhay, kailangan lang dahil dapat mong hanapin ito medyo access. At huwag mag-alala kung idinagdag mo ang klase ng late. Susubukan naming matugunan na bago ang haba. At bago namin ipinid para sa cake, sabihin tapusin na may lamang ng isang dalawang-minutong hitsura sa kung ano ang naghihintay sa iyo dito sa CS50. [MUSIC nagpe-play] Lahat tama. Iyan na ang lahat para sa CS50. Susubukan naming see you soon. Cake ay ngayon nagsilbi. [MUSIC nagpe-play] SPEAKER 17: Narinig mo na ba ng isang sabbatical, Chief? SPEAKER 18: Marahil mayroong higit pa sa ilalim ng hood.