[Powered by Google Translate] [Rock glazbe] [GLAZBA - "sretni zajedno" kornjača] DAVID MALAN: Danas smo započeli naše istraživanje Osnove informatike i naše upoznavanje, Sada, u umjetnosti programiranja, od kojih da je samo jedan primjer. No, u istom duhu u rješavanju problema, znamo da CS50 tradicionalni Puzzle dan je sutra. Ako još niste RSVPed za ovaj događaj, možete ići na cs50.net/rsvp. Možete donijeti timove dvije ili tri ili četiri. Vi ćete biti izazvan s problemima poput onoga koji ste vidjeli tamo na početku. Svi novi problemi ove godine ako jeli prošle godine, a imat će priliku osvojiti zatim neke fenomenalne nagrade. Među njima, Wii i neki poklon bonovi i slično, Sve dok se družiti s CS50 studenata i kolege i pizza i Facebook. Dakle, više o tom sutra, ako želite. To je, dakle CS50, za one od vas da nam se pridružite za prvi put. A znamo da je ovaj tečaj je posebno određuje da se vas kroz ovaj tečaj do konačnog kraja, u kojem vam točka će imati ne samo razumijevanje tih osnove informatike, ali ćete morati ovo je vrlo praktičan set vještina koje onda možete uzeti natrag svoj odjel, da li je tehničkih znanosti, primijenjena matematika, fizičke znanosti, prirodne znanost, ili slično. Doista, ono što je tako uzbudljivo o računalnoj znanosti tih dana je da je to samo tako odnosi se na sve vrste polja. I premda danas, možemo samo će ogrepsti površinu vrlo tradicionalna programski jezik poznat kao C, mi ćemo umjesto pogledate nešto što se zove Scratch, nešto s što da priča Cookie ljubav je proveo jedan od vaših prethodnici u posljednjih godina, pričati priče, stvaranje igre, stvoriti interaktivnu umjetnost, i zapravo početi da zamotate naš umovi oko neke od temeljnih konstrukata koje temelj za programiranje, ali u kontekstu, kao što ćete vidjeti, to je mnogo manje zastrašujuće, to je mnogo manje kompliciranih, nego ćete vidjeti prije dugo. I shvatili, također, za one od vas samo pridružio nam to semestar, fraze na koje smo završavali u srijedu predavanje, to nije toliko važno gdje ćete završiti u odnosu na vaše kolege u ovoj klasi, ali gdje se, po semestru do kraja u tjedan dana 11, završiti u odnosu na sebe pravo to vrlo dan. Dakle, bez dodatnih teškoća, ovo je također napomenuti da one manje udobne, one negdje između, su Također, po dizajnu ovog tečaja, a ne na bilo nepovoljnom položaju vis-a-vis one udobnije dolazi u ovoj klasi. Kao što ćete vidjeti tijekom tjedna doći, imamo različite pjesme za nespojivih leđa pozadini, profili za one manje ugodno, ugodnije, oni negdje između. Kao što ćete vidjeti ovaj vikend i idući tjedan, dva verzije većina problema seta u standardnom izdanju i haker tako da svi mogu sami odabrati niz stazu s kojim ste su najugodnije. Dakle, danas smo zaroniti u ovom programiranje jezik zove Scratch. To je grafički programski jezik, a ipak ima Iste značajke neke od viših razina jezika ćemo istražiti kasnije u semestru, a među njima i C JavaScript i PHP. No, to će nam omogućiti da se izbjegne neki od distractions rano sintakse, stvari kao što su zarezom, zagrade, i druge skrivenim detaljima koji, na prvi pogled, su ne samo uopće intelektualno zanimljiv i imaju tendenciju da se u način od nekog temeljnog razumijevanja. U smislu danas podršku strukturi naprijed, to shvatio alat, CS50 razgovarale, koji će biti povezan na tečaj je web kasnije danas, online forum za raspravu u koji ćete moći postavljati pitanja jedni druge i osoblje, i to je također alat, kao što ćemo vidjeti sljedeći tjedan, da ćemo koristiti prilično integratedly u radno vrijeme kao dobro. Doista, radno vrijeme počinje u ponedjeljak, i iskreno, prvi tjedan radnog vremena je prilično niska ključ. Ja ne mislim da ćete pronaći sve što Scratch nedostupan. To je prilično razumljiva sama po sebi, kao što ćemo vidjeti, pa što ćemo ga koristiti za danas je izdvojiti neke od temeljna ideja koje će, dakle, ustraju u cijeloj Ostatak semestra. No, s početkom u ponedjeljak, u 20:00 po 11:00 će biti radno vrijeme u Annenberg preko mozga pauze. Rezova dva počet će ovu večer, pa negdje ovaj vikend, ići na cs50.net/section, a vi ćete biti pitani nekoliko pitanja. Među njima, kako biste opisali svoj razina udobnosti kao i danas? Nema teško, brzo pravilo o tome tko je u kojoj kantu. To je samo jedna od onih stvari koje vjerojatno znate ako su među onima manje ugodno ili na neki drugi način. I sada, Walkthroughs. Specifikacija Problem skup za ovaj tjedan, i standardni i haker izdanje podjednako je online na cs50.net kao i sada. I vidjet ćete da je prvi od tih izdanja, standardno izdanje svaki tjedan, popraćen nečim što pozvati kod prohod, sjednica na čelu jedne od Naravno je momci nastava će vas voditi kroz, osigurati savjeti o, i dobiti ćete dolje određeni put kada je u pitanju do početka ove problematična seta. Dakle, sa svakom od tih problema postavlja, ako ikad ste u nedostatku za sebe gdje sam početak, možete početi s tim Walkthroughs. A u stvari, dopustite mi da vam predstavim Zamyla Chan, ovaj Ovogodišnji demonstrator koji će voditi svaki jedan od tih Walkthroughs. Zamyla? [Pljesak] ZAMYLA Chan: Oh, hi, svima. Moje ime je Zamyla. Ja sam mlađi studiranje inženjering u Winthrop House. Ali ja pokušati uklopiti u što većem broju tečajeva informatike kao što sam može, što je razlog zašto sam stvarno uzbuđen da se vodi ovaj Ovogodišnji Walkthroughs. Walkthroughs, za mene, bili su bitan dio mog CS50 iskustvo. Tijekom prohod, za svaki p-set, mi ćemo ići kroz Problem postaviti zajedno, gledati preko probleme, vrsta ih podijeliti u upravljivu ugriza. Ja ću vam dati savjete, tehnike, za dobivanje kroz te početak. Nadam se da ću vidjeti sve vas na Walkthroughs. Ako ne možete to učiniti osobno, a zatim molimo da napjev u online. DAVID MALAN: Izvrsno. Hvala, Zamyla. Dakle, shvatite da Walkthroughs su, doista, u petak poslijepodne, ali to je namjerno po dizajnu, tako da čak i ako ne želite pohađati tečaj na petak poslijepodne, videa će biti gore sve brže nad vikend. Dakle, shvatite da cs50.net će biti sve Zamyla je Walkthroughs. A da je današnji datum i vrijeme, 15:00, Harberd dvorana, 104. A neke od nastavnih momaka također su pripremili neke primjedbe za vas u odsutnosti da vam malo perspektiva, kao ono što je njihovo iskustvo stupanja na i izlazak CS50 bio poput. Dakle, ako smo mogli prigušiti svjetla za samo trenutak, ja vam neki od CS50 osoblja. JACKSON STEINKAMP: Uzeo sam CS50 prošle godine kao brucoš u pasti, i to apsolutno raznio moj um. Ja nikada nije poduzela nikakve programske klase prije, i nikada nije došao u sa bilo kojeg računala znanosti iskustvo uopće. I baš, čuo sam glasine o klasi i odlučio uzeti ga. JULIA MITELMAN: Bilo je stvarno zabavno, stvarno zanimljive. Ja još uvijek, na ovaj dan - Upravo sam nedavno vidio imam disketu da je David dao nam na našem prvom danu predavanja. Imao sam ga spustio na mom zidu. To je vjerojatno malo štreber, ali sam visio na moj zid tijekom razredu kao podsjetnik kako je to super. TRAVIS Downs: To je tako neugodno. JACKSON STEINKAMP: Računalo znanost je nešto što treba probati, čak i ako niste jedan za tradicionalne znanosti. To je njegova vlastita iskustva, a CS50 pobrinut će se da ste podržana i kroz njega sa svojim pravu vojsku TFS. ALI NAHM: Uzeo sam ga kao brucoš, i tako sam napravio puno novih prijatelja. Također sam dobio uvedena u cijeloj ovoj koncentraciji i Cijela škola inženjerstva, pa sam visoko preporučiti i vam dobrodošlicu na naše CS50 obitelji. Yaniv YACOBY: CS50 samo vas uči kako koristiti alate koji su široko dostupni. Vi samo trebate prijenosno računalo, trebate web preglednik, a vi morate naučiti pisati neki kod, a vi stvarno može graditi uredan stvari. KAREN XIAO: To je samo tako cool biti u stanju napraviti nešto i imaju ga ljudi koriste i imaju ljudi to vide, a to je ono što ja stvarno volim o tome. TIM McLaughlin: - Osjećaj zajednice, mislim, u ovom Tečaj više od bilo kojeg drugog naravno sam uzeti tako daleko. Ti ne samo uzimanje drugi - niste punjenje drugi uvjet. Vi ne samo da će se predavanja i ide na dijelu. Ali radite tona stvari koje su sve o programiranje i sve o tehnologiji, ali to ne Stvarno se osjećam kao klasi većinu vremena. Travis Downs: I na prvi dan, oni uručio tortu, a Odmah sam je prodao. JAKOVA Pritt: Besplatno slatkiša i pizze. ZAMYLA Chan: - bez obzira na svoju kamatnu razini, mislim da CS50, da ćete se zabaviti, a vi ćete biti intelektualno stimulirana. MARK GROZEN-SMITH: To je uvijek stranka u klasi, a to je Stranka svake noći radi na p-set. JACKSON STEINKAMP: Svaki put kad završi problem set, će se osjećati kao da ste završili projekt. MELISSA Niu: To je bio brucoš godine, a ja sam učinio shopping. Imao sam moje četiri klase spremni, a ja sam bio u Annenberg. I ja naletjeti prijatelja, a on kaže: hej, ja sam kupovinu ova klasa zove CS50, a ti bi trebao doći sa mnom. Zavrsilo uzimajući joj taj pad, a nakon toga razredu, ja Mislio možda ću molu u CS. Ali ovdje sam, tri godine kasnije, još uvijek proučavajući računalo znanost i zapravo radi kao glavni, a ja sam volio svaki Trenutak njega. ROB Bowden: Nemam pojma. ALI NAHM: Idemo vidjeti. MELISSA Niu: ludost. ZVUČNIK 1: Osjećam se kao da ću biti jako kliše. Ja bih samo reći, sviđa, super. Yaniv YACOBY: Pristup. JAKOVA Pritt: Besplatno slatkiša i pizze. TRAVIS Downs: Ne mogu se okrenuti prema dolje klasu koja ruke tortu. TIM McLaughlin: Energetska. VIPUL SHEKHAWAT: Essential. ROB Bowden: Dopustite mi da misle odgovor. Mislim da imam nešto. Oh, Bože. Da, moje ime je Rob Bowden, a ovo je CS50. [Pljesak] DAVID MALAN: U redu, tako da ćemo početi slikati sliku smjera u kojem možemo ići, i neka je uvesti ovaj koncept ovdje poznat kao pseudocode. Dakle pseudocode nije programiranje jezik k sebi. Nije to ništa tehnički po sebi, ali to je samo vrsta opći način izražavanje sebe dosta precizno, prilično algoritamski, prilično proceduralno, ali bez brige o tome što jezik ste izražavanje sami rezervirati To je neki model engleskom i programskih jezika s koji vam se dogoditi da bude upoznat, pa možemo početi pisanje takve stvari kao i mi ići. A u stvari, Josip, mogao sam ti posuditi na pozornici biti pisar ovdje? Ja sam otišao naprijed ovdje unaprijed i zaboravili staviti na nekim čarape danas, a to će biti među naše više smiješnih primjera. Sada, trebam te ovdje. Ja ću učiniti čarape dio. Dakle, ovdje imamo malo Blok za pisanje. Ovo je doslovno samo TextEdit u Mac. Nećemo se zapravo događa napisati runnable program, ali samo mi ćemo početi skiciranje iz pseudocode temeljen na neki od savjeta koje ste dali za mene ovdje. Dakle, ovdje je moj gomila čarapa kod kuće. Nemam čarape na kad se probudim ujutro, a mi smo sada treba napisati program, algoritam sorti, s kojim da biste dobili ove čarape na nogama. I usput, neka je vidjeti ako mi zapeti, ili susret, neke od ideja koje ste idući u morati početi razmišljam o mnogo ozbiljnije kada programiranje da vaši programi ne ponašaju sasvim onako kako smo zamislili. Tako sam sjesti ovdje. Imam svoju hrpu čarapa. Što je prva stvar razumno ljudsko biće bi učiniti kad je cilj staviti na par čarapa? Netko mi dati jedan korak, a samo jedan korak. Da? PUBLIKA: Bend dolje. DAVID MALAN: Bend dolje, OK. Korak dva. Korak dva. PUBLIKA: Pick up your čarapu. DAVID MALAN: Pick up your čarapu. Ok, tako blagi dvosmislenosti ovdje, a to je jedan od prvih kamena spoticanja da smo trebali namjerno susrećemo ovdje. To je malo dvosmisleno, tako pokupiti svoje čarapu. Dobro, ja ću uzeti ovaj jedan, ali računalo, realizirati u samo malo, ne će imati takvu vrstu ljudskog instinkta za samo pokupiti najbliži jedan. Mi ćemo morati početi, prije dugo, izražavajući sami preciznije. U redu, tako korak dva je pokupiti svoju čarapu. Mi ćemo ga uzeti. Korak tri. U leđa. PUBLIKA: Pronađite odgovarajući par. DAVID MALAN: pronaći odgovarajući par. Ok, tako da je ovo dobra. Morao sam izabrati ovu čarapu. Dakle, cilj je naći odgovarajući čarapu, a sada, ali ono što to znači? Razumno ljudsko biće, jednako kao što je u srijedu, kada sam znao kako pronaći Mike Smith u telefonskom imeniku, samo vrsta otišao sa svojim instinktom. Ali ovdje, to je očito to čarapa ovdje, ali računalo je neće biti tako instinktivno. Računalo će imati kolekciju bita, kao i mi razgovarali su u srijedu, a oni su organizirao nekako u memoriji. No, stvar je da računalo ima samo sposobnost gledati na stvari jednu po jednu, i zapravo, čak smo ljudi - iako se osjeća kao da sam pogledao dolje i Split Trenutak kasnije znam gdje čarapa je, moj mozak i moje oči vjerojatno nije brzo obrano tih čarapa, a zatim latched na one u pitanju. Dakle, ako smo se svi više namjerno sada kao računalo, Kako sam pronaći ovo podudaranje par? Pa, moramo ponoviti. Moramo možda petlji preko ovog nereda čarapa na kat gdje sam reći nešto poput ZA SVAKU čarapa, to podići gore, a ako isti oblik i veličinu kao onaj drugi, ONDA točka, točka, točka, mi ćemo nastaviti priču. Dakle, za svaku čarapu, tako da sam pokupiti ovaj jedan. Ja provjeriti je li to jednaka ovoj. To nije, pa sam stavio na stranu stranu. Onda sam opet ponoviti. Je li to jedna jednaki? Ne, to nije, pa sam ga staviti na stranu. Je li ovo? Ne. To je jedan? Ne, i tako dalje. I onda na kraju, nadamo se, ja ću se susresti ovu čarapu ovdje. Dakle, ako je isti oblik, veličina, uzmi ga. A sada, što će biti naš sljedeći korak ovdje? Da? PUBLIKA: Utvrditi desno od lijeve. DAVID MALAN: Ok, identificirati lijevo i desno, pa Srećom, takva djela. Malo simetrično, ili upravo sam nositi ih na taj način. U redu, tako da sam identificirao pravo. A sada, prije nego što nastavite, dopustite mi naglasiti ono što je Josip radili ovdje kao svojevrsni upućen programera. Pa opet, ne postoji jedan od načina za to, ali dalje od pukog numeriranje redaka, Josip je već počeo da to učinite vrsta otiska. Doista, ovo je vrlo čest konvencija u programiranju, kojim kada se nešto učiniti iterativan, petlje stil, kao mi smo implicirajući s engleskim izrazom "za svaku izlemati, "konvenciju u pseudocode i, kao što ćemo vidjeti, normalno programski jezici, je samo alineje. Hit razmaknicu nekoliko puta, pogodio tipku TAB ili slično, tako da ugniježđeni ispod "Za svaku čarapu" je komad stvari koje trebate učiniti kao rezultat tog kruga. Tako da je sve što je prenošenje semantički. Sada međuvremenu, "Ako je to isti oblik i veličinu", rekao je Činjenica da "Uzmi ga" razvedena dalje samo znači to je jedina stvar koju trebate učiniti ako taj uvjet, ako je to grana, koja vilica na cesti, je u stvari pravi. Dakle, sada ovdje, da smo na korak četiri, identificirati s lijeve i desne. Sam identificirao pravo. Daj mi korak pet. I tehnički, mi stvarno mogli nazvati ZA SVAKU stvar - vjerojatno biste trebali prebrojiti sve linije ako idemo to učiniti. JOSEPH: [nečujan] DAVID MALAN: [nečujan]? Ok, u redu, u redu, mi ćemo to učiniti svoj put. U redu, tako korak pet, kako ćemo to učiniti pravu čarapu? Kako smo nastavili dalje, ovdje? Da? PUBLIKA: Podignite desnu nogu. DAVID MALAN: Podignite desnu nogu, Ok. Korak šest? Brzo. Da. PUBLIKA: Pronađite otvoreni kraj čarapa. DAVID MALAN: Ok, pronaći otvoreni kraj čarapa. Pa dobro. Dakle, ovdje, iskreno, vrlo čest nagon samo biti staviti na desnoj čarapu, ali da je također prilično nejasna. Ako računalo ili ljudsko zna točno što to znači, to neće biti izvršiti da, pa evo, ja sam Našli otvaranje dionice. Korak sedam? PUBLIKA: Dodirnite prste. DAVID MALAN: Touch prstiju. Ok, tako da sada idemo - U redu, ja ću uzeti neke slobode ovdje. Hvala. Korak osam? Stavite na čarapu. Ok, tako da sada sam, mislim da smo dovoljno blizu da vrsta uzeti ovo kod kuće. U redu, tako to ide gore. Uzet ću neke slobode s tim što to znači, zapravo. Stavite čarapu na. U redu, sada korak devet? PUBLIKA: Put nogom. DAVID MALAN: Hvala. Korak devet, staviti nogu dolje, i sada, možemo ponoviti. Dakle, vjerojatno, sada možemo ići u korak 10 i reći identificirati lijevo čarapu, ali to je vjerojatno već učinili. I tako onda ja mogu sortirati od ponoviti ove korake. No, ova vrsta postavlja pitanje. Prije, zadnji put kad smo htjeli ponoviti nešto, mi Uspjeli iterativno, opet i opet, ZA Svaka petlja da se tako izrazim. Bi li to smisla koristiti petlju kako bi se nositi i lijevo i desno čarapa? Budući da se osjeća kao ovi poslovi su prilično identične, osim činjenice da je jedan počinje ovdje i jedan počinje ovdje? Hoćemo li petlju, ili mi samo držati pisanja korake 10 i 11 i 12? PUBLIKA: Petlja. DAVID MALAN: Ok, tako da petlje. Ja sam zapravo mogao reći samo zadržati ide. Pa zašto je to tako? Pa, to je zapravo prva naša ne-očito dizajn odluke, u stvari, jedna od metrike s kojima počet ćemo procijeniti, za sebe i za vas, Kvaliteta programa je samo koliko dobro osmišljen je. Jeste li učinili minimalnu količinu rada potrebnu za dobiti posao učinio najviše brzo, bilo u smislu vaše vrijeme ili u smislu računala prikazivati ​​vrijeme? Koliko operacija ne traje izvršiti? Dakle, nedvojbeno, to je prilika za petlju, jer čim sam početak kopiranja i lijepljenja, kao Josipa učinkovito bi početi raditi u jednom trenutku, kad si ljubazan prosipati tvoj vrijeme, a vi ste se dvostruko izražajan. Ali, u isto vrijeme, to su zapravo samo dva posebna slučajevi, lijevo i desno. I dok je prije, možda ću imati 10 ili 20 ili više čarape u gomila, to definitivno ima smisla ne imati 50 redaka Kod rekavši provjeriti ovu čarapu, onda sljedeći, onda sljedeći. Evo, to je malo manje očito, a ja bih predložio da bismo mogli ići u oba smjera. Mi ni mogao imati tu petlju, iako je to samo petlje dvaput, ili smo jednostavno mogli kopirati i zalijepiti samo malo ovdje kako bi dobili posao ispunjavanja. No, ovaj program je lud, da se tako izrazim. To bi moglo imati neke pogreške, pogreške ili kutne slučajeva, tako da govoriti, da mi nije stvarno predvidjeti. Ništa je pošlo po krivu ovaj put, ali ono što nije pošlo krivo dok izvršavanju ovaj program? PUBLIKA: Vi nemate nikakve čarape. DAVID MALAN: Dakle, tu bi mogao biti nikakvih čarape tamo uopće. Dakle, neka je uzeti u obzir da je corner slučaj. Dakle, ako bismo mogli pomicanje natrag do jedan korak, pa korak je bio savijati prema dolje, tako da se provjerava. Korak dva, pokupiti svoju čarapu, ali onda pronaći odgovarajući čarapu, identificirati desno. Mi vrsta napravio hrpu pretpostavki, a to je, iskreno, zašto Program ponekad srušiti. Ako ste, programer, napravio neke pretpostavke, kao što su sigurno postoji će biti čarape ili sigurno Doći će biti memorija lijevo u računalo, sigurno postoji ide biti disku lijevo na tvrdom disku - Pa, ako bi ove pretpostavke, a to nije, Zapravo, stvarnost, tko zna što se ponekad računalo je će to učiniti? A ponekad, kada se vrti na plaži loptu ili smrznuti Windows ili slično, to je upravo zbog neke programer nije predvidio one takozvane slučajeve kutak. Što drugo mogao otići krivo u ovom programu? Da? PUBLIKA: Vi nemate desnu nogu i lijevu nogu. DAVID MALAN: Dobro, možda ne imati i desnu nogu i lijeva noga, i tako ovaj program ne može biti univerzalno primjenjivo. Drugi? PUBLIKA: Možda ste pokupili siroče čarapu. DAVID MALAN: Možda sam pokupila siroče čarapu, pa ne podudaranje čarapa da samo nema braće i sestara, jer ja sam ga izgubio, to je rastrgan, to je u pranju i dalje, ili slično. Tako da, također, nije stvarno obrađen. Da? PUBLIKA: Možda već imate čarape. DAVID MALAN: Ja već mogu imati čarape na. Nisam zapravo provjeriti. AKO nemate čarape, a zatim nastavite raditi crta jedan i dva. I to bi se moglo dogoditi. Vi zaspati sa svojim čarapama na i slično, tako da da, također, vrlo razumne kutak slučaj. I možda jedan drugoga? PUBLIKA: čarapa je iznutra prema van. DAVID MALAN: Dakle, čarapa je iznutra prema van, tako da smo napravili nikakvu pogrešku provjere, u kratko. Nismo provjerili je li država u svijetu je kao što smo očekivali. Nismo provjerili smo zapravo našli ono što tražimo. I iako je to vrsta smiješan primjer uključuje čarape, na kraju dana, to je upravo vrsta razmišljanje morate imati prilikom pisanja programa, čak iu Scratch kao iu C, u JavaScriptu, u PHP-u, jer inače, vaši programi će izlagati protuvrijednost toga vrti plaže lopte ili samo dati netočne rezultate. Dakle, puno hvala ovdje za naše pisar Josipa. [Pljesak] DAVID MALAN: U redu, tako što je, u Činjenica, računalni program? Pa, neka je brzo pogledao Predstavnik jedne ovdje. Dakle, ovo je program napisan u jeziku zove C. C prilično stare ovih dana, ali mnogi noviji jezici su izgradili na vrhu. Doista, PHP, jedan od web-orijentirane jezike ćemo koristiti prema pojma o kraju, i sama ima ono što se zove tumač, program koji je napisan u C, ali više o tome u mnogim tjedana od sada. No, ovaj program, a to je ono što znači pisati Program, iako je vrlo jednostavan. Mi imamo neke prilično grobni sintaksu ovdje, ali možete vjerojatno pogoditi, čak i ako ste nikada nije programiran prije, što ovaj program radi. Doista, ne znam što printf je, ali sigurno ispis dočarava ideju ispis nešto. I tako da, ovaj program je u konačnici će ispisati riječi: "Hello, World". Sada, da li imate Mac ili PC ili Linux računalo, izgledi su, barem ako ste preuzeli neke slobodno dostupan softver, mogli su pisanje programa na svoj laptop za neko vrijeme sada. Na Mac OS, na primjer, tu je to program koji se zove Terminal koji dolazi s Mac, to je obično u vašoj Komunalne mape, i to uglavnom otvara crno bijela ili bijela i crna prozor na kojem imate potaknuti na kojoj možete upisati naredbe. Dakle, ovo je zapravo podsjeća na ono što računala koristi se prije grafičko korisničko sučelja, GUIs, došle. Sada, u Windowsima, imate sličan mehanizam u obliku od naredbenog retka. No, ono što ću učiniti ovdje je otvoriti, recimo, TextEdit opet, tako da isti program smo koristili za pseudocode trenutak prije, a ja ću ići naprijed i napisati svoj prvi program. Uključi stdio.h, što god to značilo, int glavni void, što god to značilo, a zatim u sredini ovdje, printf ("Hello, svijet."). A onda se u blizini citat, zatvoriti paren, točka. Sada ću ići naprijed i samo pogodak Command-S. Idem ići naprijed i spremite to kao hello.c, tako konvencije svijet C programiranja je ime datoteke dot c. Ja ću samo staviti u Johna Harvarda home direktorija, Ovdje, kliknite Spremi, a sada ću ići preko toga terminal prozor, što opet je to crna i bijela brz gdje mogu izvršavati naredbe. Ja mogu pokrenuti programe upišete svoje ime, a ne dvoklikom ikone u uobičajenom smislu. No, stvar je o tome da je C jezik kao C prvi dolazi u ovom obliku, nešto što se zove izvorni kod. Nešto što izgleda malo kao engleski, ali je definitivno manje kao engleski nego Josipa pseudocode trenutak prije. To je malo više tajanstvena. Čini se da slijedite neke uzorke ili pravila. Činjenica da imam vitičastih zagrada, zarezom, citati, kut aparatić, osjeća kao računalo je došao gore sa ovaj vrsta jezika. Ali ako odem, sada, ovog prozora terminala, mogu pokrenuti naredba koja će se pretvoriti taj izvorni kod je nešto što se zove objektnog koda. To će pretvoriti Engleski-poput sintaksa za nula i one, iste vrste nulama i one koje govorio o srijedu. Sada, ja ću pokrenuti naredbu zove zveka. Više o tome u tjednima koji dolaze, ali to je program s koji sam može pretvoriti u hello.c cijela hrpa nula i one. Sada, ja sam pokrenuti ovu naredbu. Ja sam pokrenuti zveka, a onda sam rekao sebi izvoditi na ovoj datoteci zove hello.c, koji sam stvorio trenutak prije, a ništa ne čini da se dogodi. Ali doista, ako sam poked oko moje kuće imenik, ja bih vidjeti da je to glupo ime Program a.out sada postoji. Ovo je samo zadani naziv za program pri pisanju C. Mi može nadjačati ovo na kraju, ali je a.out Naziv programa sam samo pretvaraju u nulama i one. A sada da je nula i one, moj Mac, u ovom slučaju, ili Windows računalo, mogu razumjeti one komadiće, te nule i jedinice. I tako, kada sam pogodio Enter, vidim "Hello, world!" Ali to je malo lud. Nisam sasvim reći "Hello, svijet: zrak: -! Jharvard." Klima je ime moje računalo. Jharvard je naziv računa, tako da ono što sam jasno izostaviti iz programa? Neka vrsta retka. Nisam pogodio ekvivalent Unesite ili carriage return, i to je, opet, svjedoči i činjenica da računala mogu samo učiniti ono što vam reći da učine. A činjenica da nisam reći računalo premjestiti pokazivač u sljedeći redak - dobro, to sigurno je neće samo to učiniti drskosti za mene. Dakle, ako se vratim u moj program, a ja kažem \ n - Dakle, \ n, kao što ćemo uskoro vidjeti, je način predstavlja čudne stvari poput nove linije likova, stvari koje bi inače biti rezultat udaranje Enter. No, za sada, samo znam da je udaranje Enter bi Upravo bi naša kod izgledati čudno, pa svijet odlučio, znaš ono, da bi se stvari ljepše, da ga zadrži na jednoj liniji, ajmo samo reći \ n predstavlja novu liniju. Dopustite mi resave moj dosje, vratite se na prozor terminala, a re-run a.out, Enter. Ipak lud, ali zašto? PUBLIKA: [nečujan] DAVID MALAN: Da, pa sam ga morati rekompiliranje. Dakle, sastaviti program samo znači pretvoriti ga iz izvora koda objektnog koda, izvornog koda na nula i one. Sada, sama činjenica da sam pogodio Spremi u ovom TextEdit nema imajući na tim nulama i one jer sam najprije morate Reci zveka hej, ja sam promijenio one linija koda, koda. Morate regenerirati a.out. Ništa se ne pojavljuje da se dogodilo, ali u računalu, u zapovjednoj liniji, da se tako izrazim, kada se ništa ne događa, To obično znači da je sve dobro. Kada nešto ne dogodi, to znači ste zabrljati gore, općenito. Dakle, ajmo sada ići na a.out, i doista sada, ja imam "halo, svijet. " A sada, što je s tim nulama i one? Gdje, u stvari, oni? Pa, ja ne mogu zapravo samo vrsta džaku okolo vrlo učinkovito. Dopustite mi da se otvaraju TextEdit. Evo a.out. Pusti me naprijed i otvoriti ovo, a to je očito ono moje Program izgleda. Tako sam otvorio, ne hello.c, ali a.out. No, to zapravo nije ono što moj program doista jest. Jasno, ovo je neka vrsta abecednom znakova. Ja ne vidim nula i one, ali to je jer a.out je program. Nula i one - ali TextEdit, kao što ime sugerira, to je baš kao Notepad na Windows, samo je tekst editor, tako da je zbunjujuće sve one nula i one kao iako su, što? ASCII znakovi. Dakle, prisjetimo se u srijedu, samo mi je došao gore sa ovaj proizvoljna mapiranje brojeva, ili komadići, da slova abeceda i interpunkcijski simboli i slično. Dakle TextEdit, da je tekst editor je pogrešno te obrasci nula i one koje bi trebale biti tisak riječi, poput "Zdravo, svijet." To je prikazujući ih kao ASCII, i to je razlog zašto to izgleda malo neuredan. Sada, postoje neke naznake korektnosti u ovdje. Obavijest ako sam istaknuti, postoji naznaka zapravo "halo, svijet ", tako negdje u tom programu je rečenica sam napisao. Ali idemo naprijed i sada vidim s drugom programu. Ovo nije jedan koristit ćemo se često, ali ona također dolazi s Mac i bit će unutar CS50 aparata. Pusti me naprijed i otvoriti s programom pod nazivom XXD. Natrag u dan, većina programa imenovani su prilično šifrirano, i tako trend se nastavlja. Ali-b znači pljuvati ovaj program je kao binarni. Nemojte ga pokrenuti. Prikazati ga na mene kao nula i one, a to je C programirati samo smo pisali. Sada, ja sam, kao čovjek ovdje, ja iskreno nemam pojma što ti razni oblici nula i one predstavljaju. Natrag u dan, ja, s mojim bušiti kartice ili slično, bi zapravo morati potražiti ono što ove različite obrasce 01111000, zapravo predstavljaju. Ili još gore, ja bi trebao učiniti probijanje ili stvaranje tih obrazaca nula i one. Ali za sada, uzeti na vjeri da je CPU, Intel unutra, tako govoriti, unutar svih naših računala ovih dana, ne zna kako tumačiti ove nule i one. A neki nula i one znače ispis. Neki nula i one znače igrati zvuk. Neki nula i one znače uzeti korisničkog unosa iz tipkovnice. Tu je sve vrste različitih uzoraka, ali smo, srećom, kao ljudi, samo općenito treba brinuti o programiranju na ovo prilično viša razina. I u drugim CS razredima možete prekapati dublje dolje i pogledati na stvari poput onih nula i one, ili još druge stvari još uvijek. Pa sada neka to pretvoriti. Idemo vrlo brzo od C i premjestiti na nešto na malo više utješno, malo više uzbudljivo, u to možemo vratiti naše animacije i zvukove i kao da jasno nam je pobjegao u to prilično primitivno sučelje. Dakle, taj isti program u C može biti zastupljeni sada u ovom programski jezik naziva Blok kako slijedi. Ovo je ekvivalent ovom Hello World programa pisanog u ovaj stil zagonetka komad jezik zove Scratch. Pa neka mi ići naprijed i otvoriti ovaj upravo program. To opet zove Scratch. To je slobodno dostupan, a to je ista stvar mi započela je danas na. Dakle, ovo ovdje je ispočetka, a to je razbijena na nekoliko različiti dijelovi. Na samom vrhu desno, imamo takozvanu fazu, a dapače, to je mjesto gdje su kolačići izvodi samo malo prije. I na toj pozornici su se stvari nazivaju sprites, likovi, ili predmeti ili osobe. To ne stvarno obzira koliko mislite o njima, ali oni su programabilne, pokretne stvari, au ovom slučaju, to program koji naš učenik napisao ima par medenjaka kolačići, par okruglih kolačića, cijela hrpa srca, cijela hrpa naočale. Zbog toga, on ili ona je u stanju programirati svaki od onih pojedini likovi odvojeno. Sada, što znači da se program ove znakove? Pa, dopustite mi ići naprijed i kliknite na ovaj lijevoj kolačić i pomaknite se na gornjem lijevom ovdje. U gornjem lijevom kutu mog ekrana sada je tzv skripte područje. To je vrsta prazno škriljevca, u početku, na kojem mogu povucite i ispustite slagalice koji, iskreno, učiniti točno ono što oni kažu. Na samom vrhu ovog hrpom slagalice je riječ Kada Zelena zastava Kliknuto, a ako niste primijetili prije, Tako sam počeo da kolačić pjesmu je klikom, doslovno, zelena zastava. Tako da zagonetka komad na gornjem lijevom kutu tamo znači kada ljudska klikne zelena zastava, nastavila raditi sljedeće stvari. Sada, ono što su oni Cookie nastaviti raditi? Ja stvarno ne znam kako se to tumači, no Cookie očito postaviti svoj žlijeb na nulu, onda je čekao tri sekunde, onda je promijenio svoju skupinu na jednom, onda je to čekao drugi, onda je promijenio svoje utor na jednu. I onda je to zapravo izgleda malo bug, ne treba morati promijeniti svoj ritam i opet, osim ako je se mijenja i drugdje, ali ovaj niz koraka je ono što je diktira ponašanje konkretnom kolačić. Dakle, neka je zapravo pomicanje natrag i ne gledati na nešto toliko složen još. Dopustite mi da ide naprijed i ići na File, New, i dobiti čistu škriljevca. Pa sad, ja doista imamo prazan prostor, skripte praznoj pozornici, s našim Scratch zadani sprite, a na gornjem lijevom na mom zaslonu moram na postelju svih njihovih Ekonomski slagalice. I nećemo proći kroz gotovo da su mnogi od tih stvari danas, jer, opet, većina su samorazumljivo, ali ćemo pokušati ih kategorizirati i ukazati na sličnosti s tim budućim jezika na kojem ćemo roniti. I na gornjem lijevom ovdje je prvi Kada Zelena zastava Kliknuto, pa neka mi povucite ovo ovdje, zoom out malo. I ako kliknete na zeleni zastavu, ništa se zapravo događa, jer Nisam prilogu bilo logiku, bilo izjava da se tako izrazim, na da zelena zastava, tako da me pusti do Kategorije ovamo. Ja sam trenutno u upravljačkoj kategoriji. Ja umjesto idem dolje do izgleda kategoriji, a tu je cijela hrpa stvari ovdje kažu Recimo, Razmislite, promijeniti boju, Switch kostim. Dakle, što možete učiniti gluposti s kostima i zvukovi i slično. Dopustite mi da ide naprijed i samo reći Say, a sada primjetiti kako sam povucite i ispustite ovu slagalice, ona će htjeti kvaka u odgovarajući oblik. Dakle, kada sam ići naprijed i pustiti moj miš, oni zaključavanje zajedno, a sada ako odem ovamo i kliknite na zelenu zastavu, mačka zapravo ne pozdraviti, jer to je ono što je unutra ove bijele kutije. Uskoro ćemo vidjeti da je ovaj bijeli okvir je ono što se zove argument ili parametar. To je način mijenja ponašanje, u ovom slučaju, puzzle komad, ali ako želim reći točno ono što sam rekao prije, pozdraviti, svijet, ja sada mogu vratiti ovamo, kliknite igrati, a "hello, world" je ono što je rekao. Tako smo doslovno programiranje sada. To nije sve što je uvjerljiv programa, ali barem to je malo više nego uvjerljiv nešto što izgleda, na prvi pogled, kao što je ovaj. I možemo vrlo brzo dobiti sve više izražajan jer u nule, kao i na drugim jezicima, tamo je sve vrste izvještaja, a ne samo reći ili tiskanje nešto, ali možete učiniti stvari kao što je čeka, kao što smo upravo vidjeli s Cookie, neki broj sekundi. Možete igrati zvukove u okolini nule samo kao što možete u normalnoj računalnog programa play zvuka. Možete provjeriti što se zove Boolean izraza. Tako sada, krenimo dodati na naš alat neke terminološke koji zapravo odnosi na primjer da je Joseph i ja učinio ovdje s čarapama. Dakle izjave su samo izjave činjenice. Učinite to. Direktiva za sprite, ili ja čovjek, nešto učiniti. Logički izraz je nešto što ima vrijednost, Takozvani istina vrijednost, to je bilo nula ili jedan, ili lažno istina, ili isključiti, ne ili da. Zar stvarno ne obzira koliko mislite o tome, ali to je binarno stanje. Kao što je Nate raspravljati u srijedu video, dva različite stvari. Tako je u nule, Boolean izraza dogoditi da pogledate poput ovih plavih objekte ovdje, u ovom slučaju, pitanje Oznaka znači da ste molba pitanje. Je mačka, ili Sprite, dira miša? Dakle, ovo je samo jedan primjer Scratch blok koji se događa kako bi se omogućilo nam da provjerite da ili ne, to je miš dira Sprite na zaslonu? I to može biti korisno ako stvarno želite učiniti stvari s mišem. Osim Boolean izraza, imamo stvari kao što je miš prema dolje, tako da možete otkriti takvu pitanje kao dobro. Mi možemo učiniti matematiku ako stvarno želite, a tu je zapravo više uvjerljivi koristi za to nego samo čista aritmetika, kao što ćemo vidjeti. Pseudo slučajnost i izradu programa čini se da misle ili drugačije ponašaju na temelju nekih naizgled slučajnih vrijednosti, i onda imamo stvari poput Boolean izraza poput I. Dakle, ako zaista želite provjeriti dvije vrijednosti, vidjet ćemo u Zagrebite da zapravo možemo testirati, ako je to istina i to je istina. Na primjer, u slučaju mojih čarapa, mogao sam na samom kraju postavio pitanje, ako lijevo čarapa je na desnom i čarapa je na, prestati. Svi ste učinili za taj dan, tako da će biti prilika za to. Dakle, idemo naprijed i pokušati komad neke od njih zajedno i otići u nekoliko primjera više uvjerljiv od ovoga. Pa neka mi ići naprijed i ovdje otvoriti neki od primjera da će uvijek biti na stazi web stranici, kao i, i otvoriti hello2. Tako je u hello2 ovdje, imamo program koji radi malo stvari, ali to nije to rade kao učinkovito kao što smo mogli. Dakle, ovdje se kaže "Hello, World" za jedan drugi i onda čeka za drugi. A onda ga ne opet, a zatim ga ponovno ne. Dakle, ako sam pritisnite zelenu zastavu, Scratch kaže: "Zdravo, svijet. Pozdrav, svijet. Pozdrav, svijet. "A to je očito kandidat za sada poboljšanje. Što je marginalna poboljšanja, nadamo se, možemo sada napraviti ako Scratch podržava koncept? Neka vrsta petlje. Neka vrsta ponavljanja, sad bi bilo lijepo, pa neka mi zapravo pokušati da. Dopustite mi zapravo ide i premjestiti to. Dakle, obavijest može odvojiti blokova lako kao što možete dodati spojite ih. Pusti me pod kontrolom, dođite ovamo, i doista, tu je ovo zagonetka komad ovdje, ponoviti i zauvijek i Zauvijek Ako. Dakle, postoji nekoliko načina izražavanja petlje konstrukti u nule. Jednom sam vjerojatno želite ovdje nije zauvijek, jer sam samo želite da se to dogodi tri puta, ali vjerojatno ponoviti. Pa neka mi povucite Ponovite ovamo, povucite i ispustite ga, a sada, umjesto da se kaže "Zdravo, svijet" tri odvojena puta, neka mi povucite slagalice ovdje. I iako se ne čini da stane, program je pametna dovoljno da shvate da će rasti ispuniti, tako da je oblici koji stvar, a ne apsolutna veličina. Dopustite mi da promijenite ponavljanje na tri, a sada pusti me naprijed i povucite Čekaj jednu sekundu tamo, kao dobro. To će puknuti kao dobro, pa sad ću povući ti dečki više ovdje i samo ih baciti jer sam ne trebate ih više. Dopustite mi da smanjivanje i kliknite na zelenu zastavu sada, a imamo isti program, ali, kao što sam predvidio prije, bolje dizajniran jer možete zamisliti kako je loše ovaj program bi se, svakako estetski, ako je to započeti kopiranje i lijepljenje, kopiranje i lijepljenje, ili povučete i ispustite iste darn stvari opet i opet. Sada, jednostavno govoreći stvari na ekranu, ispis na zaslon, stvarno nije sve tako uzbudljivo, pa ajmo otvoriti treći varijanca ovdje. I sada, kao što ćete vidjeti, to brzo ćete dobiti neugodno - [Meow] DAVID MALAN: - ali to je također sladak. [Meow] DAVID MALAN: Ok, pa bolje, a mi svakako može koristiti da Isti prijelaz komadanje ovo gore u loop struktura, ali budimo bi ga više zanimljiv i dalje. Pusti me naprijed i otvoriti četvrtine varijancu ovdje, gdje sam uzeti stvari jedan korak dalje. Dakle, prema tome, glup iako je to na prvi pogled pogled, što je ovaj program će učiniti? To će Mijau jednom. Zašto? Pa, jednom je, koliko ja znam, uvijek manje od dva. Nema pojma slučajnosti ovdje. Ja sam doslovno tvrdi kodirani jedan i dva, ali to je Primjer sada je zapravo koristi Boolean izraza. Mnogo se sviđa kako je Josip učinio u svom pseudocode, udubljenje AKO vam podudaranje čarape zatim učinite sljedeće, ovdje imamo Izraz IF jednom je manje od dva ONDA - i zapravo mi ni malo uvlačenja, gdje ljubičasta malo je razvedena na desno - ONDA ćeš igrati zvuk Meow. Sada, u ovom slučaju, da je jedan uvijek manje od dva, tako da je ovo je vrsta otpada stanju. No, mi ćemo biti u mogućnosti, kao što ćemo vidjeti, priključiti i druge stvari u ove rezervirana mjesta gdje je jedan i dva sada su. Dakle, ajmo sad prešli na primjer pet od tih nekoliko hellos i pogled na ono što ovaj program će učiniti. Tako sada, u engleskom kazne, kako to Program se ponašati? PUBLIKA: Woofer pola vremena. DAVID MALAN: meow je pola vremena, tako da je ovo način prenoseći vrlo jednostavnu ideju. Iako mi se dogoditi da se pomoću neke nejednakosti ovdje u nekim brojevima, to je stvarno samo programske način, precizan način, kaže, ako novac dolazi do glave, otići naprijed i meow. Ili obrnuto, ako novac dolazi do repa, ne meow. I u ovom slučaju, kako ćemo izraziti da? Mi ćemo odabrati slučajni broj 1 do 10, a ako to broj je manji od šest, ići naprijed i meow. A kako je to doći ovamo? Pa opet, primijetit samo povlačenjem i ispuštanjem i stvari sjedne na mjesto. Dakle, sada ćemo vidjeti ako je to slučajnost radi. Dopustite mi ići naprijed i kliknite na zelenu zastavu. [Meow] DAVID MALAN: Ok. [Meow] DAVID MALAN: Ok. Dobro, dobro, tako da smo dobili glave, glave, repove učinkovito. Repovi. [Meow] DAVID MALAN: šefovi. [Meow] DAVID MALAN: Izvrsno. To je uvijek neugodno kad samo statistički ste dobili loše pokrenuti, i to je sve glave, a program je zapravo ne raditi kao što bih se nadam. Ali ovaj put, to je radio, a mi se čini da su, ako nismo to neograničeni broj puta, 50% šanse. Sada opet, nije sve što je zanimljivo, samo što mačke meow, pa ćemo vidjeti, ako ne možemo napredovati ovo malo dalje ovdje u verziji šest. Dakle, sada smo stvarno neugodno verziju - [Meows svakih nekoliko sekundi] DAVID MALAN: - i to je ono što je poznato, općenito, kao beskonačna petlja. Dakle, beskonačna petlja u ovom slučaju se osjeća loše. To definitivno će započeti sondiranje loše, a ipak beskonačno petlje nisu uvijek loše. Možete li se sjetiti konteksta u računalne programe kojima želite zapravo žele beskonačnu petlju? Da? PUBLIKA: Kada želite provjeriti stanje. DAVID MALAN: Dobro, kad želite zadržati provjere stanje? Sviđa mi se što? PUBLIKA: [nečujan] DAVID MALAN: Dobro, dobro, tako da ako ste imali neki program, neki vrsta kućne automatizacije stvar, gdje želite da se stalno Monitor je nešto slučaj. Jesu li svjetla na? Jesu li svjetla na, jer možda imate vremena, a želite da ih otići, možda ćete morati učiniti nešto opet i opet. A u stvari, govori o vremena, bilo tko od vas koji su satovi na vašem računalu ili digitalnih satova, koji je beskonačna petlja. To i dalje ažurirali vrijeme, jer je stalno provjere i provjere i provjere ima vremena promijenila, i ako je tako, oh, moj bože. Sat konačno promijenila. To treba prikazati tu vrijednost za vas. Dakle, dok je većinu vremena beskonačnih petlji su pogreška, ili barem lošem dizajn odluke, ponekad im je činiti imaju svoju vrijednost. Pa, neka je unaprijed dalje ovdje hello7. Dakle, sada će program dobiti malo više interaktivni. Dopustite mi povećali ovdje, i opet, to je ono što je lijepo oko nule. A mi ćemo ga koristiti da bude jasno, Scratch, samo danas i na sljedeći tjedan je problem postaviti. No, u ponedjeljak, možemo zaroniti u C. U ovom programu ovdje, to ne, zauvijek, sljedeće. AKO dira miša - sada, tko je kontekst ovdje? Pa, i obavijest da onaj tko je izabran ovdje dolje na dnu Pravo je mačka, Sprite jedan, tako da ove skripte, to Program, vrijedi i za njega posebno. Dakle, ako je to mačka je dira miša, onda to ide igrati ovu dolje i pričekajte dvije sekunde, a ponovite oglas nauseum. Dakle, idemo naprijed i udario igru. Ništa se ne događa, ali ako želim ljubimac mačka sada, ja mogu jednostavno. [Meow] DAVID MALAN: Sladak. [Meow] DAVID MALAN: Ok, manje neugodno, ali također dobiva dosadno, pa krenimo dalje i vidjeti ako ne možemo ubrizgati malo više logike. To je primjer sedam. Ovdje u primjeru osam, idemo uvesti drugo stanje. Toliko kao doslovnom račvanju u ceste, u kojem možete ići lijevo ili možete ići desno, stanje u programiranju jezik kao Scratch, ili kao što ćemo vidjeti C, može vam omogućiti da ići u jednom ili drugom pravcu preko AKO JOŠ graditi. Dakle, sasvim doslovno, AKO dira miša, to igrat će neki zvuk, inače će igrati ovaj drugi zvuk, mijau. Sada, ako možete zaključiti iz naziva tih zvukova, možete vjerojatno pogoditi što ovaj program je značilo da se smisli Ideja. Ova mačka je meowing sretno. [Meow] DAVID MALAN: Sretno, ali ne sasvim se sviđa da se dotaknu. [Grmi] DAVID MALAN: Dakle, sada imamo mačka koji će vikati na tebe. Dobro, dobro, posljednji je primjer s mačkama ovdje, i neka je otvoren verzije devet ove ovdje. Tako sada imamo sljedeću najviše uznemirujući zvuk da sam mogao pronaći, tako da imamo morža ili morski lav ovdje tko će učiniti sljedeće. [SEAL kora] DAVID MALAN: Ok, tako da će to ići na sve dok ne shvatite kako ovaj program radi. Dakle, ovaj put, ova životinja ima dvije skripte, a što je Zanimljivo je da su ove skripte će izvršiti paralelno. Pa zato što su oboje počinju s jednom zelenom zastavom kliknuli, to je kao da ide ovako, a oba programa početi prikazivati jednom, čak i ako oni petlje zauvijek. Dakle, u gornjem scenariju, imam neke logike. Koje značajke koje pružaju tamo gore? [SEAL kora] PUBLIKA: [nečujan] DAVID MALAN: Ako je to ono što? [SEAL kora] PUBLIKA: Ako isključen na nulu, to će nastaviti igrati zvuk. [SEAL kora] DAVID MALAN: Dobro, dobro. Dakle, ako isključen, bez obzira na to je, to narančasta stvar je nula, ONDA igrati zvuk morski lav i mislim: "Oh, hi, "za dvije sekunde. Sada, ja ne znam što je isključen je, ali nula dočarava Ideja pogrešna ili isključiti. Dakle, ako isključen je lažna, tako da ako se ne stišava, držati igranje zvuk. Dobro, dobro, kako ćemo onemogućiti ovu stvar? Pa, pogledajmo drugom scenariju tamo dolje. Drugi scenarij, kaže postavili isključen na nulu. Obavijest je također narančasta, pa što ne Scratch je to boja blokovi u istoj nijansi, ako je to neka vrsta logično povezani. Dakle, baš kao što isključen do vrha je narančasta, pa je isključen ovdje dolje spomenut u narančastom blok. Ali ovo je varijabla zadatke, tako da baš kao iu algebre, imate X i Y i Z, u programiranju imate varijable, ali oni su općenito - neka je stanka za trenutak i lik kako da se zaustavi ovo lajanje. Kako to učiniti? [SEAL kora] DAVID MALAN: Ok. To zaustavljen. Ok. Dakle, baš kao u algebri imate varijable x, y, i z, ali u programiranje, da varijable kao x, y, i z je općenito frowned jer oni uopće ne izražajan. Oni nemaju semantički smisao bilo, pa je tako u većini programski jezici, varijable mogu imati pun ravnopravni imena ili riječi ili fraze, poput isključen, reći ono što im je činiti. Dakle, ovaj drugi scenarij je također slušanje zauvijek, a to je ako ključ, prostor tipkovnica ključ, je pritisnuta, upitnik. Dakle, tu je stanje sa Boolean izraza koji je će odgovoriti na pitanje bilo istinito ili lažno, onda sam unutar nje AKO prostor pritisne tipka I AKO isključen je nula, postavili isključen na jedan, JOŠ postaviti isključen na nulu. Dakle, ovaj drugi vilica na cesti, a obavijest kako sam ugniježđena dva AKO uvjeti, način provjere je Razmak pritiskom jer ako je tako, ja ni želite ići ova način ili na taj način. I kako sam izvrtati vrijednost isključen? Moram provjeriti je li to nula? Ako je tako, čine ga jednom, drugi bi ga nula, dakle za prebacivanje njegove dvije države. U redu, pa smo onda neke od tih temeljnih konstrukti. Imamo Boolean izraza, i shvatiti, također, su nije sve što je nepoznato. U stvari, ovdje je brz screenshot Harvarda tečaj je CS50 trgovački alat, a sve web stranice vani da ima okvire i pad padovi stvarno, sve ovo vrijeme, bio koristeći Boolean izraza. U ovom slučaju ovdje, ako kliknete na kvadratić pored tečaj veća od ili jednaka do 4,5, ili isti uz fakultet, ti si navođenja Boolean izraza. Pokaži mi tečajeve za koji izraz je istina. Ili na desnoj strani, nije u sukobu s tečajevima sam uzimanja, ako je to provjeriti, a zatim da, želite provjeriti taj uvjet, drugi ga želite ignorirati. Dakle, Boolean izraza su vrsta uokolo, ali kada smo ih stavili u uvjetima, da li AKO uvjetima, AKO Drukčije, ili možemo čak simulirati dublje razine, AKO JOŠ AKO JOŠ - tako da je svojevrsni ternarni države. Možete ići na ovaj način ili ovako ili na taj način. Možemo zadržati gnijezde stvari idu u različitim smjerovima. Dakle Scratch ima ove petlje, poput zauvijek. Ona ima ove značajke kao što su Repeat 10, neki konačan broj puta. Mi imamo sposobnost sada da postavite varijable, tako da u ovom slučaju Ja sam proglasio, na primjer, varijable zvane čarape. Ja sam inicijalizirane na 0, a to je još jedan smjer Mogli smo uzeti ovdje s Josipom, pri čemu možda sam samo pratiti koliko čarape imam na i raskinuti Program kada tu varijablu je vrijednost dva. To će biti još jedan način vrsta generaliziranja da problem i radi nešto opet i opet. Pa, idemo naprijed i sada uvesti par novih stvari. Dakle, one od vas s prethodnom programiranje iskustvo će znam da puno jezika imaju polja, ili vektora ili liste, i doista, Scratch ima ovako nešto, previše. Dakle, neka je vidjeti ako ne možemo uzeti stvari na sljedeću razinu ovdje. Ako imam mogućnost, sada, s ovim slagalice za dodati nešto, kao što su riječi ili broja, u varijablu, mogu početi akumulirati stvari. I to je zapravo prilično apropo za stvari kao što su igre, uloga igranje igara gdje ste vrsta hodaju okolo neki svijet mašte prikupljanje stvari, branje gore stvari, zarađivati ​​bodove, ili slično. Možda želite pratiti neke vrste inventara, a dapače, to je ono što jedan od naših bivših studenata ovdje učinio s nešto što se zove Fruitcraft igranja. Pa neka mi ići naprijed i otvoriti ovu stvar ovdje, au Fruitcraft, imamo ovaj svijet gore na vrhu. Pa neka mi ići naprijed i kliknite na zelenu zastavu. Obavijest u gornjem lijevom kutu je neka vrsta inventure. To je implementiran u nule, kao što ćemo pozvati niz ili popis, a sada imamo ovu malu animaciju. Dakle, baš kao što smo počeli ranije s tom pričom cookie ljubavi, i onda smo napredovali za mačke i morskih lavova, sada možemo imati stvari koje su čak i više interaktivni. I ovo malo plavo tip, ja mogu početi kretati njegove Malo dom ovdje. Tako to izgleda kao da je dobio izlaz ovdje dolje, pa ja sam koristeći se strelicama, gore, dolje, lijevo desno. I sada sam vani, pa neka je što sam došao ovdje. Izgleda poput naranče, i doista, čim sam dodir naranča, to dobiva plopped u moj inventar. Ako idem ovdje na trešanja, sada imam nešto drugdje u mom zaliha. I to je sve lijepo i slatko, ali razmišljam o tome, a sada, to provodi. Pa, imamo taj pojam popisu, a to je očito zagonetka komad koji vam samo reći ono što želite dodati na njega, dodati naranče, dodati višnje. Sada, što je to malo plavo tip radi? Pa, on je čarobnjak. I vjerojatno, naranče i trešnje - su i sami bili odvojeni duhovi. I pomoću uvjeta u Boolean izraza, na Učenik je vjerojatno bio u stanju izraziti AKO plavi momak je dirati trešnje zatim dodajte trešnje riječi na njegov inventar, a potom i sakriti trešnja sprite. Dakle, ispod poklopca motora, vjerojatno još uvijek je trešnja Sprite postoji. Upravo smo ga rekli da postane učinkovito nevidljiv. Sada, ako sam držati hodanje ovamo, možemo to učiniti proksimalni stvar, gdje mogu ići i čitati znakove. Dakle, ako plavi dečko dira znak, možemo imati taj blok reći baš kao mačka govorio nam je u riječima, halo, ranije, "Got neko voće? Donesite voća mjestu. "U redu, tako da sada, očito, Imam moje upute. Ja mogu ići ovdje na voćni mjestu, ja se postroje s vratima. Sada, ja sam ovdje. Ja mogu ići do čovjeka na šalteru. On otkrije da sam blizu njega, tako da to ne mora biti sasvim identično dira, i ja sam pobijedio. Dakle, tu imamo Fruitcraft RPG. Tako možemo učiniti stvari čak i više naprednih od toga. Možemo dodati zvukove. Možemo dodati pseudo slučajnost. Možemo dodati složenosti. Pusti me naprijed ovdje, i umjesto da to učinite sebe, neka mi vam pokazati jedan od sofisticiranijih podnesaka dobili smo prošle godine iz određenog nekoga po imenu Blake. Možemo li imati jednog dobrovoljca koji je udoban pojavljuju na kamera i za igranje igre? Kako o tamo? Dođi gore. U redu, tako da je igra da imate samo neznan volontirala igrati - [Pljesak] DAVID MALAN: - nešto je od prošle godine pod nazivom "Frogger". Koje je vaše ime? RENDA: Renda. DAVID MALAN: Redna? RENDA: To je kao Brenda sa b. DAVID MALAN: Ok, Renda. David. Drago mi je. Dakle, ovdje u "Frogger", a ako bismo mogli podići volumen samo malo, vi ste ovo malo zelena žaba na dnu. Možete koristiti lijevo, desno, gore i dolje, i vaš cilj je da se prijeći ulicu, prijeći rijeku, i dodir ljiljana jastučići na vrhu. Ah. Jedan više t - ponoviti, zar ne? Ajmo zaustavljanje hit. Nitko nije vidio da. [Pljesak] [Pljesak] DAVID MALAN: Da. Vrlo dobro učinio. Izvrsno, hvala. Tako da nije bilo Frogger. Sada da znate što ste sami stečen u, jedan više volontera za različite Igra poslali drugog učenika. Želite li doći gore? Koje je vaše ime? RICHARD: Richard. DAVID MALAN: Richard. U redu, Richard, dolaze na gore. [Pljesak] DAVID MALAN: Vi imate nešto što ćete zvuk upoznati uskoro, pa ovdje su ti upute. Dakle, u ovom trenutku, neke slagalice će pomicanje prema gore sa zaslona da ni pogledati lijevo ili desno gore ili dolje. Vi ćete morati pogoditi strelicama na takav način da odgovara tim slagalice obloge s su rezervirana mjesta na vrhu. Dakle, kada vidite lijevu strelicu, i to linije s lijeva strijela, pogodio lijevu strelicu. Vi svibanj početi. [GLAZBA - "JAČI" Kayne WEST] DAVID MALAN: U redu, veliki aplauz za Richarda. [Pljesak] DAVID MALAN: Vrlo dobro učinio. Hvala Vam. [Pljesak] DAVID MALAN: Dakle, zabavan i, naizgled, vrsta zastrašujuće, kao da bi moglo biti nešto provesti, kao naizgled sofisticirani, jer to, shvatite da je student nije krenuo i samo pisati to sve odjednom. Umjesto toga, možete razbiti problem što naizgled složen jer to u puno manjih komada, a to je, također, će biti tema. Najgore što možete učiniti u pisanju programa u većini bilo jezik je sjesti, dobiti stvarno uzbuđen, pisati Cijeli prokleti stvar, a onda se samo nadam da to radi vrijeme ste završili pisanje. Umjesto toga, proces programiranja treba općenito biti vrlo namjerna, vrlo iterativni, pri čemu samo postaviti vrlo male korake za sebe, ugriz veličine komada želiš odgristi, i to tako da imate ove razum provjere, malo miljokazi možete ispuniti. I onda graditi na vrhu onih stvoriti više sofisticirane stvari još uvijek. Tako na primjer, kako bismo mogli ići oko provedbi igru ​​kao što je ovaj? Pa, iskreno, ja sigurno bi početi tek podržava jednu tipku u isto vrijeme. Ajmo implementirati podršku za lijevu strelicu. Dakle, student morao nekako stvoriti u Photoshopu, ili u Sama Scratch pomoću malo grafički urednik, jedan strelica koja izgleda poput one na vrhu lijevo tamo, samo siva rezervirano. Tada učenik morao shvatiti što x, y koordinirati staviti ga, gdje ga staviti u prozoru. 0, 0 je ovdje, tako da ćete morati odgonetnuti broj piksela, ili točkice, kako bi se nadoknadio taj strelicu na vrhu zaslona. I onda kad je to na mjestu, vaš program zapravo ne ništa još, pa onda treba drugi sprite, za instanca zelena strelica koja je također usmjeren lijevo, a vi onda morate početi pisati neke skripte za njega. I primijetite, možda, da se takve stvari počeo dolaziti na različite brzine, a boje su u različitim lokacije, a to je zato što učenik koristi malo pseudo slučajnost. I pseudo slučajnosti, ja samo znači odabrati broj između nešto i nešto, jer možete početi karti stvari, kao što je, ako je broj između jedan i pet, dobro, ajmo napraviti nešto zeleno. Ako je između 6 i 10, hajdemo napraviti slagalice crvene umjesto. Tako dugo dok imate način stvara neku vrstu slučajnost, onda možete donositi odluke na temelju koje slučajnost. I ja držati govore pseudo slučajni, jer postoji malo prljave tajne. Računala ne može doći do slučajnih brojeva. Oni mogu učiniti samo ono što ste rekli, jer oni su čovjek-made uređajima. Oni ne mogu samo nagađati broj kao i mi ljudi Osjećam se kao da mogu. Računalo ima nešto napraviti matematičku dočarati iluzija matematički broj, ponekad koriste trenutni dan vrijeme kao ulaz u figuring out što broj se vratiti, ali više na tom drugom vremenu. Za sada, samo znam da mi može generirati pseudo slučajnost. Dakle, jednom sam imati mogućnost za lijevu strelicu za početak pojavljuju u različitim vremenima i na različitim brzinama, a zatim Mogu se vratiti i dodati neke od njih AKO uvjeti. Ako je ovo Sprite dodiruje onaj drugi, i strelicu lijevo Ključ je bio pritisnut - pa tri uvjeta u tom slučaju. Ja mogu koristiti da blokiraju I možda, u tom slučaju - ONDA želim ići naprijed i povećajte ocjenu. I na vrhu, imamo rezultat, imamo strašan, Cool, dobro, i Boo. Dakle, tu je očito pet varijabli koje ovaj učenik koristiti za praćenje tih različitih mjerenja. Dakle, u kratko, krajnji rezultat je nevjerojatna. To je zabavno, to je zabavno igrati, to je zanimljivo, ali to nije gdje učenik počeo. On ili ona je započeo u mnogo manjem skupu koraka. Dakle, ono što su neke druge izgrađeni da možemo tkaju u tim programima? Pa, tu je ovo drugi koncept u većini jezika, Zagrebite među njima, poznat kao niti. Dakle, računalo se zapravo ne može stvarno učiniti više stvari na vrijeme, barem ne obično. Umjesto toga, računalo obično ima samo jedan procesor, pa čak i iako su računala vrlo brzo i može, stoga, stvoriti privid radi više stvari odjednom - provjere svoj mail, uzimajući trenutak Poruka, ispis dokumenta - stvarno, računalo samo skakanje iz tiska da IMING na e-mail, natrag i natrag i naprijed i natrag tako brzo da smo tupoglav ljudi jednostavno ne shvaćaju da je to zapravo trčanje tih programa malo na vrijeme. Sada, ovo malo bijele leže ovih dana, jer danas, mnogi naši računala su ono što se zove multi-core, tako da imaju jedan CPU, ali više jezgri, što je vrsta kao ima više procesora. I tako ponekad, računala doista može učiniti više stvari na vrijeme, ali uglavnom unutar programa, programi oslanjati na te stvari zovu teme. Dakle, nit je nešto kao minijaturni program koji može postojati pored drugog minijaturni program i možete pokrenuti paralelno, ili barem može izvoditi pod iluziju da oni prikazivati ​​istovremeno. Dakle Scratch podržava ove stvari zove teme. Možete imati višestruke skripte izvršavanje odjednom, baš kao i mi učinio s morskom lavu, a to nam omogućuje da se zapravo zatim su interakcije među tim sprites. Pusti me naprijed ovdje i podići, recimo, teme, a igrati ovo što slijedi. Imamo dva sprites, od kojih svaki ćemo vidjeti ima samo jedan scenarij. A primijetite čini se da postoji neki inteligencije u mačka u ovom jednom, jer on je sve bliže - [Grmi] DAVID MALAN: - i bliže ptičica. Pa kako je ptica operativni? Pa, neka je pogledati ptice prvi. Ptica skripta rekao kad zelena zastava se klikne, idite na x jednako negativna 115 y jednak 150. Tako sam shvatio slučajni mjesto gdje sam htjela ptica za početak, a ja sam ga samo plopped tamo po defaultu. Zatim Beskonačno AKO ne dira mačku, pa je to drugačije vrsta petlje konstrukt, ali istu ideju, učinite to ponovo i opet i opet. Tako dugo dok niste dira mačku, pomaknuti tri koraka, a ako si na rubu, odskočiti, gdje je vrsta odraz u biljar smislu. Dakle, to je kako ptica se kreće oko vrste naizgled nasumično, ali to je samo zato što je odskakanje zidovi u ovom slučaju. Sada mačka, u međuvremenu, je vrsta varanja. Mačka, kada je zelena zastava se klikne, da, počinje u neki položaj, slučajni lokacija - barem u dijelu kao i po pick slučajni zeleni blok postoji - i onda zauvijek ako dira pticu, igrati zvuk lav, i onda prestati skriptu. Dakle, kada sam rekao prekinuti, ili izađite prije, tu je zagonetka komad u nule samo da će ubiti program na koji ukazati, jer to je vrsta logično učinio. Ali inače, ovdje, primijetit što će se dogoditi. Točka prema ptice i kretati jedan korak. Dakle, ta točka prema ptica je svojevrsna prednost mačka ima u tome da je golub u na pokretne ptica, i možemo Sada bi ovaj program sve više zanimljiv. Umjesto da se kreće jedan korak u isto vrijeme po CPU ciklusa, po štrajk danak na zvono, da se tako izrazim, neka mi ići naprijed i premjestiti, recimo, pet koraka u isto vrijeme kao mačka. Kliknite pokrenuti, a sada je on stvarno ga pronađe brzo. Ako mi dvaput ovo dalje na 10 koraka, ona vrsta ide pravo za njega. Sada, možemo dati pticu, možda, malo prednost. Idemo na ptice i reći umjesto da se kreće u tri koraka, krenimo ga 30 koraka. No, on je još uvijek uhvaćeni na kraju. Dakle, ovdje imamo dvije teme. To je bio utamničen u nule s dvije skripte i dva duhovi, ali ideja u drugim jezicima je da možete pisati, u suštini, previše programe kao što je ovaj i imaju ih pokrenuti uistinu, ili imaginarily, paralelno. Sada, tu je i ovaj koncept u programiranju poznat kao događanja, a to je nešto što nećete vidjeti u C, jezik poznat kao C. Mi ćemo ga vidjeti prema semestra kraja u web programiranju, kad smo uvesti JavaScript i Pojam građevinskog web stranica koje su dinamičan i interakciju s korisnicima. Dakle, u ovom slučaju, imamo vrlo jednostavan primjer dva duhovi, dječak i djevojčica, od kojih svaki ima svoje odgovarajući teme, ali nekako ove dvije su međusobno komuniciraju putem od nečeg što se naziva događaja. Pa neka mi ići naprijed i ovdje uvećanje na dječakove pismom, koja izgleda ovako. Kada zelena zastava kliknuli, zauvijek učiniti sljedeće. Ako ključ prostor, ili razmak, tipke, kažu Marco za dvije sekunde, to je čisto estetski na zaslon, malo govor mjehurić, ali onda emitiraju. Dakle emitiranje je drugi Scratch komad koji je Predstavnik klase funkcionalnosti u programiranju koji omogućava različite programe, različite teme, da me komuniciraju, nekako poslati poruke, jedna na drugu. Prolazeći komad papira u razredu je vrsta niske tech ekvivalent. Tako emitiraju događaj. Ja mogu poslati ovu poruku, a događaj riječ je potpuno proizvoljan. Blok ponekad ima ove padajuće, tako da sam došao do sa slučajnim riječi poput događaja jer se sada, što dječak ne kad sam pritisnite tipku je on emitira ovaj događaj. A ako gledam sada na djevojčinu skriptu, skripta je njezin super jednostavna, jer sve što treba učiniti ne djelovati kada zelena zastava se klikne. Ona je dizajniran za akciju kada ona prima citat, završiti citat, "Događaj", te je u tom trenutku, ona sluša stoga za Takozvani događaj opet i opet. Čim je dobio taj događaj, ona će vikati Polo za dvije sekunde. I tako se možda može zaključiti iz ovoga što točno Sljedeći rezultat će biti. Dopustite mi da kliknete na zelenu zastavu. Ništa se ne događa jer trebam učiniti što? PUBLIKA: razmak. DAVID MALAN: razmak. Dječak kaže Marco, djevojka kaže Polo. No, to nije teško kodirana po sebi. To je inter-komunikacija između skripti, tako da sada imamo imaju sposobnost da čak i složenije programe gdje ove dvije su nekako međusobno komuniciraju. Dakle, u kojem smjeru možemo uzeti ovo? Pa, u problemu set 0, stvarno, cilj je zabavite se s nule. Za hakerske izdanju, te umjesto toga ćete se zabaviti s više sofisticirana verzija Scratch zove BYOB, Građa Vaši Vlastiti blokova, ali ideja je ista. Vi ćete biti u mogućnosti - Da, to je bilo namjerno. On je došao iz Berkeley. BYOB je verzija haker izdanje, ali i Demografija, Standard Edition i Hacker izdanju podjednako, Cilj pri ruci za idući tjedan je zapravo samo roniti u duboko, dobiti vaše ruke prljave s programiranjem, i napraviti nešto zanimljivo, napraviti nešto interaktivni, napraviti nešto umjetničko, napraviti nešto zabavno da se zapravo pokazati, tako da do kraja tjedna, imat ćete projekt, ne samo za svoj prvi CS50 pset, ali morat ćete Malo nešto što možete pokazati u Annenberg na prijatelji ili čak i obitelji tako da je upload na MIT stranici. I tako kao što sam rekao u srijedu, očekujemo 90% od klasi, općenito, učiniti standardne izdanja. Shvatite da je i ovaj izlaz za one od vas koji možda inače pronaći sebe malo dosadno s osnovama i stvarno želite roniti i zanatskih viziju ste već imaju uz prethodnu pozadini to više prijateljski okoliš. Pa neka mi podići jedan drugi primjer da je jedan od naš bivši studenti ovdje učinio i reći nešto malo kroz pjesmu. To slično, kao što je ova igra, razmišljati o tome kako idete o provodi ovaj program koristeći upravo ti isti izgrađeni, malo pseudo slučajnosti, a malo poznatoj pjesmi. Ako smo mogli podići glasnoću samo malo? [GLAZBA - "Pada kiša Men" The Weather GIRLS] DAVID MALAN: To je to za CS50. Mi ćemo vas vidjeti u ponedjeljak. [Pljesak]