[Powered by Google Translate] [ROKO MUZIKO]
[MUZIKO - "HAPPY KUNE" La testudoj]
DAVID Malan: Hodiaŭ, ni komencos nian tuŝo de la
fundamentojn de komputiko kaj nia enkonduko,
nun, al la arto de programado, de kiuj tio estas
nur unu ekzemplo.
Sed en la sama stilo de problemo solvi, scias, ke
CS50 la tradicia Puzlo Tago estos morgaŭ.
Se vi ankoraŭ ne RSVPed por tiu evento, vi povas iri al
cs50.net/rsvp.
Vi povas alporti teamoj de du aŭ tri aŭ kvar.
Vi estos defiis kun problemoj kiel tiu, kiun vi vidis
tie supre en la komenco.
Ĉiuj novaj problemoj de ĉi tiu jaro, se vi partoprenis pasintjare, kaj vi
havos ŝancon tiam gajni iuj fabelaj premioj.
Inter ili, oni Wii kaj iuj donaco registritaj kaj kiel,
ĉiuj dum eliri kun CS50 studentoj kaj samklasanoj
kaj picon kaj Facebook.
Do pli en tiu morgaŭ se vi ŝatus.
>> Ĉi tiam estas CS50, por tiuj el vi kunigi nin por la
unua fojo.
Kaj scias, ke ĉi tiu kurso estas aparte difinita por atingi
vi per ĉi tiu kurso al lia fina celo, je kiu punkto vi
havos ne nur kompreno de tiuj
fundamentojn de komputiko, sed vi devos
tion tre praktika kapablojn kiujn vi povas tiam prenu reen al
via propra fako, ĉu ĝi estas inĝenierio sciencoj,
aplika matematiko, la fizikaj sciencoj, naturaj
scienco, aŭ similaj.
Ja, kio estas tiom ekscita pri komputiko tiuj
tagoj estas ke ĝi estas ĝuste tiel aplikebla al
ĉiaj kampoj.
Kaj kvankam hodiaŭ, ni nur skrapi la surfaco de
tre tradicia programlingvo konata kiel C, ni instruos vin
anstataŭ rigardi iun nomita Scratch, iu kun
kiu tiu kuketo amo estis realigita per unu el viaj
antaŭuloj en jaroj pasintaj, por diri rakontojn, krei ludoj,
krei interagajn arto, kaj fakte komenci por kovri niajn
mensoj ĉirkaŭ kelkaj el la fundamentaj konstruoj kiuj
subyacen programado sed en kunteksto, kiel vi vidos, ke estas
multe malpli terura, ke estas multe malpli arcano, ol vi vidos
antaux longe.
Kaj realigi, ankaŭ, por tiuj el vi nur aliĝi al ni
semestro, la frazoj, en kiu ni finis la merkreda konferenco,
ne estas tiel grava, kie vi finos relativa al via
kompanoj en ĉi klaso, sed kie vi per semestro la fino
en semajno 11, fini relativa al vi mem rajtas nuna tago.
>> Do sen pli enkonduko, tiu estas ankaŭ notinde, ke
tiuj malpli komforta, tiuj ie inter, estas
ankaŭ, por dezajno de ĉi tiu kurso, ne en ajna malavantaĝo
vis-a-vis tiuj pli komforta
venanta en ĉi tiu klaso.
Kiel vi vidos sur la semajnoj veni, ni havas malsamajn
temoj por pafas reen fono, sekcioj por tiuj
malpli komfortaj, pli komforta, tiuj ie
inter ili.
Kiel vi vidos ĉi semajnfino kaj proksima semajno, du versioj de
plej problemo aroj en ambaŭ normo kaj hacker eldono tiel
ke vi ĉiuj povas mem-elekti laŭ la pado kun kiu vi
estas plej komforta.
>> Do hodiaŭ, ni plonĝi en tiun programadon
lingvo nomita Scratch.
Estas grafikaj programado lingvo, kaj tamen ĝi havas la
samaj karakterizaĵoj de iu de la pli alta nivelo lingvoj ni instruos vin
esplori poste en la semestro, inter ili C kaj
JavaScript kaj PHP.
Sed tuj ni permesas eviti iujn de la distroj
frue de sintakso, aĵoj kiel punktokomojn, krampoj,
kaj aliaj arcano detaloj kiuj, unuavide, estas nur ne
tute intelekte interesa kaj emas eniri
la vojo de iu fundamenta kompreno.
En terminoj de nun la apogo strukturo antaŭen, realigita ĉi
ilo, CS50 diskuti, kiu estos kunligitaj en la kurso de
retejo poste hodiaŭ, estas la linio diskuto forumo en
kiu vi povos demandi de si kaj
bastonon, kaj estas ankaŭ ilo, kiel ni vidos proksima semajno,
ke ni uzos sufiĉe integratedly en
oficejo horoj tiel.
Ja, oficejo horoj komenciĝas je lundo, kaj sincere, la unua
semajno de oficejo horoj estas sufiĉe malalta klavo.
>> Mi ne kredas vi trovos Scratch cxiuj nealirebla.
Estas iom mem-klarigan, kiel ni vidos, kaj tiel kion
ni uzos ĝin por hodiaŭ estas ĉerpi kelkaj el la
fundamentaj ideoj kiuj estos, do, persisti en la tuta
resto de la semestro.
Sed ekde lundo, je 8:00 am tra 11:00 am estos
oficejo horoj en Annenberg super cerbo ripozon.
Sekciigo du komencos tiun vesperon, do iam ĉi
semajnfino, iru al cs50.net/section, kaj vi instruos vin
esti demandis kelkajn demandojn.
Inter ili, kiel vi priskribus vian
komforto nivelo ekde hodiaŭ?
Ne malmola, rapida regulo pri kiu estas en kiuj balde.
Estas nur la speco de afero, kiun vi probable scias se vi
estas inter tiuj la malpli komfortaj aŭ alie.
>> Kaj nun, walkthroughs.
La problemo aro specifo por ĉi tiu semajno, ambaŭ normo
kaj hacker eldono egale, estas rete ĉe cs50.net ekde nun.
Kaj vi vidos, ke la unua el tiuj eldonoj, la
normo eldono ĉiu semajno, estas akompanita de io
nomas kodo walkthrough, kunsido gvidata de unu el la
Kompreneble la instruado uloj gvidi vin tra, havigi
konsilojn, kaj instigi vin apartan vojon kiam temas
al startanta tiuj problemo aroj.
Do kun ĉiu el tiuj problemo aroj, se vi iam voli
mem kie mi komencos, vi komencos kun tiuj
walkthroughs.
Kaj fakte, permesu al mi prezenti Zamyla Chan, ĉi
jara instruado ulo kiu estos kondukante ĉiuj kaj ĉiu
unu el tiuj walkthroughs.
Zamyla?
>> [Aplaŭdo]
ZAMYLA Chan: Ho, saluton, ĉiuj.
Mia nomo estas Zamyla.
Mi estas juna studi inĝenierion en Winthrop Domo.
Sed mi provos kaj havi en tiom da komputiko kursoj kiel mi
povas, tial mi vere ekscitita esti kondukante ĉi
jaro walkthroughs.
Walkthroughs, por mi, estis esenca parto de mia CS50
sperto.
Dum la walkthrough, por ĉiu p-aro, ni iros tra
la problemo starigis kune, rigardu super la problemoj, ia
dividi ilin en regebla mordas.
Mi donos al vi konsiloj, teknikoj, por atingi
tra kaj getting komencis.
Mi esperas vidi vin cxiujn en la walkthroughs.
Se vi ne povas fari ĝin en persono, tiam
bonvolu fari agorditaj en linio.
>> DAVID Malan: Bonega.
Dankon, Zamyla.
Do rimarkas ke walkthroughs estas ja sur vendredo
posttagmeze, sed tio estas intence por dezajno por ke
eĉ se vi preferas ne ĉeesti klaso sur vendredo
Posttagmeze, la videoj estos ĉe ĉiuj pli rapide ol
la semajnfino.
Do rimarkas ke cs50.net estos ĉiuj Zamyla la
walkthroughs.
Kaj tio estas la hodiaŭa dato kaj tempo, 3:00 am,
Harberd Hall, 104.
Kaj iuj el la instruado uloj ankaŭ preparis
iuj rimarkoj por vi en absentia doni al vi iom de
perspektivon pri kion lian sperton venanta en kaj
irante el CS50 estis kiel.
Do, se ni povus krepuska la lumojn por momento, mi donos al vi
iuj de CS50 bastono.
>> Jackson STEINKAMP: Mi prenis CS50 pasintjare kiel freshman en la
fali, kaj absolute blovis mian menson.
Mi neniam estis prenita ajna programado klasoj antaŭe,
kaj neniam envenis kun ajna komputiko
sperti ajn.
Kaj ĝuste, mi auxdis la zumado pri la klaso kaj
decidis preni ĝin.
>> JULIA MITELMAN: Estis vere amuza, vere engaĝi.
Mi ankoraŭ, ĝis la nuna tago -
Mi nur ĵus vidis mi havas la disketo, kiun David donis al ni
sur nia unua tago de prelego.
Mi pendigis ĝin sur mia muro.
Tio estas verŝajne iom nerd, sed mi pendis en sur mia
muro dum la klaso kiel memorigilo pri kiel cool estis.
>> Travis Downs: Estas tiel hontinda.
>> Jackson STEINKAMP: Komputika estas io, kion vi
devus provi eĉ se vi ne estas unu por
la tradiciaj sciencoj.
Estas lia propra sperto, kaj CS50 estos certigi ke vi
apogis bone tra ĝi kun lia vera armeo de TFs.
>> ALI NAHM: Mi prenis ĝin kiel freshman, kaj tiel mi faris multon
de novaj amikoj.
Mi ankaŭ got enkondukis al ĉi tiu tuta koncentriĝo kaj
tuta lernejo de inĝenierio, do mi ege rekomendas ĝin
kaj bonvenigas vin al nia CS50 familio.
>> YANIV YACOBY: CS50 nur instruas vin kiel uzi iloj
kiuj estas vaste atingebla.
Vi nur bezonas portebla, vi bezonas retumilo, kaj vi
bezonas lerni skribi iom da kodo, kaj vi povas vere konstrui
neta aĵoj.
>> Karen Xiao: Estas nur tiel malvarmeta por povi fari ion
kaj ke homoj uzas ĝin kaj havi homojn vidi ĝin, kaj tio estas
kion mi vere amas pri ĝi.
>> TIM McLaughlin: - senton de komunumo, mi kredas, en ĉi tiu
Kompreneble pli ol iu ajn alia kurso Mi glutis ĝis nun.
Vi ne nur preni alian -
vi ne plenigante alian kondiĉon.
Vi ne nur tuj prelegoj kaj tuj sekcio.
Sed vi faras tunoj de aĵoj kiuj estas ĉiuj pri
programado kaj ĉio pri la teknologio, sed ne
vere sentas kiel klaso plejparto de la tempo.
>> Travis Downs: Kaj en la unua tago, ili disdonis kukon kaj
Mi tuj venditaj.
>> Jacob PRITT: Libera dolĉa kaj pico.
>> ZAMYLA Chan: - sendepende de via intereso nivelo, mi pensas
ke CS50, vi havos amuzan, kaj vi estos intelekte
stimulita.
>> MARK GROZEN-SMITH: Estas ĉiam partio en klaso, kaj ĝi estas
partio ĉiunokte laboras en via p-aro.
>> Jackson STEINKAMP: Ĉiufoje kiam vi finos problemo aro, vi
sentos kiel vi finis projekton.
>> Melissa Niu: Estis freshman jaro, kaj mi faris aĉetoj.
Mi havis mian kvar klasoj pretaj, kaj mi estis en Annenberg.
Kaj mi pusxigxas al amiko, kaj li diras, hey, mi aĉeti
ĉi tiu klaso nomis CS50, kaj vi venu kun mi.
Finis portante ĝin tiu aŭtuno, kaj post tiu klaso, mi
pensis eble mi tuj plej malgranda en CS.
Sed tie mi estas, tri jarojn poste, ankoraŭ studanta komputilo
scienco kaj vere fari ĝin kiel grava, kaj mi amis ĉiun
momento de ĝi.
>> ROB Bowden: mi ne havas ideon.
>> ALI NAHM: Ni vidos.
>> Melissa Niu: frenezo.
>> Parolanto 1: Mi sentas kiel mi estus tre kliŝo.
Mi nur diras, kiel, awesome.
>> YANIV YACOBY: Alireblo.
>> Jacob PRITT: Libera dolĉa kaj pico.
>> Travis Downs: Cannot turni suben klaso kiu manoj el kuko.
>> TIM McLaughlin: Energia.
>> VIPUL Shekhawat: Esencaj.
>> ROB Bowden: Lasu min pensi pri respondo.
Mi kredas ke mi ricevis ion.
Ho, dio.
Yeah, mia nomo Rob Bowden, kaj ĉi tiu estas CS50.
>> [Aplaŭdo]
DAVID Malan: Bone, do ni komencas pentri bildon
de la direkto en kiu povas iri, kaj ni enkonduki
tiu koncepto tie konata kiel _pseudocode_.
Do _pseudocode_ ne estas programado
lingvo al si mem.
Estas nenio teknika per, sed estas nur speco de
ĝenerala maniero de esprimi vin sufiĉe detale,
sufiĉe Algoritma, sufiĉe procedurally, sed sen
devi zorgi pri kio lingvo vi esprimanta
mem in
Estas iu modelo de la angla kaj programlingvoj kun
kion vi hazarde estos konataj, do ni povas komenci
skribi ĉi tiajn aferojn kiel ni iru.
Kaj fakte, Jozef, mi povus prunti vin sur la scenejo esti
skribisto tie?
Mi antaŭenirinta tie anticipe kaj forgesita por meti
sur iu ŝtrumpetojn hodiaŭ, kaj ĉi estos inter niaj pli
ridindaj ekzemploj.
>> Nun, mi bezonas vin tie.
Mi faros la ŝtrumpetoj parto.
Do jen ni havas iom nulo pad.
Ĉi tiu estas laŭvorte nur TextEdit en Mac.
Ni fakte ne tuj skribos runnable programo, sed
ni ĵus tuj komencos desegnante el _pseudocode_ bazita
sur iu el la konsilon vi donas al mi cxi tie.
Do jen mia amaso de ŝtrumpetoj hejme.
Mi havas neniun ŝtrumpetojn sur kiam mi veki en la mateno, kaj ni nun
bezonas skribi programon, algoritmo de varoj, kun kiu
akiri tiujn ŝtrumpetojn sur miaj piedoj.
Kaj laŭ la vojo, vidu se ni vojaĝo finiĝis, aŭ renkontas,
kelkaj el la ideoj kiujn vi tuj devas starti
pensante pri multe pli serioze kiam programado
ke viaj programoj ne kondutu tiel same intencis.
>> Do mi sidiĝi tie.
Mi havas mian amason da ŝtrumpetoj.
Kio estas la unua aĵo racian homo estus
do kiam la celo estas meti sur paro de ŝtrumpetoj?
Iu donu al mi unu paŝo, kaj nur unu paŝo.
Yeah?
Spektantaro: Klinu sube.
DAVID Malan: Klinu sube, Okay.
Paŝo du.
Spektantaro: Prenu vian ŝtrumpeto.
DAVID Malan: Prenu vian ŝtrumpeto.
Konsentite, tiel malpeza ambigueco tie, kaj ĉi tiu estas unu el la unuaj
stumblante blokoj ke ni devus intence
renkonti tie.
Ĝi estas iom ambigua, do prenu vian ŝtrumpeto.
Bone, mi prenos ĉi tiu, sed komputilo, realigi en nur
bito, ne tuj havas tian homan instinkton nur
repreni la plej proksima unu.
Ni tuj devos komenci, antaŭ longa, esprimante
mem pli precize.
>> Bone, do paŝo du estas repreni vian ŝtrumpeto.
Ni prenos ĝin.
Paŝo tri.
En la dorso.
Spektantaro: Trovi trafa paron.
DAVID Malan: Trovi kongruanta paron.
Okay, do ĉi tiu estas bona.
Mi devis elekti tiun ŝtrumpeto.
Do la celo estas trovi kongruanta ŝtrumpeto, nun, sed kion
tio signifas?
Al racia homo, multe kiel en merkredo, kiam mi ĵus
sciis kiel trovi Mike Smith en telefono libro, nur ia
iris kun siaj instinkto.
Sed ĉi tie, estas evidente ĉi ŝtrumpeto tie, sed komputilo
ne tuj estos tiom instinkta.
Komputilo tuj havi kolekton de bitoj, kiel ni
diskutis merkredon, kaj tiuj estas
organizita iel en memoro.
Sed la punkto estas ke komputilo havas nur la kapablo
rigardi tion unuope, kaj fakte, ecx ni
homoj - eĉ se li sentas kiel mi rigardis malsupren kaj fendi
dua poste mi scias kie la ŝtrumpeto estas, mia cerbo kaj miaj okuloj
supozeble ne rapidan skim de tiuj ŝtrumpetoj, kaj tiam alkroĉis
sur la unu en demando.
>> Do se ni estos des pli intenca nun kiel komputilo,
kiom mi trovas tiun kongruanta paro?
Nu, ni devas persisti.
Ni devas eble buklo sur ĉi tiu salato de ŝtrumpetoj en la
plankon per mi diras ion kiel POR ĈIU ŝtrumpeto, elektu ĝin
supren, KAJ SE la sama formo kaj grandeco kiel la alia, DO
dot, punkto, ĝi pentras, ni daŭrigos la rakonton.
Do por ĉiu ŝtrumpeto, do mi reprenos ĉi tiu.
Mi kontrolu estas ĉi egala al tiu ĉi.
Ne estas, do mi metis flanken flanko.
Tiam mi persisti denove.
Estu ĉi tiu egala?
Ne, ĝi ne estas, do mi metis ĝin flanken.
Ĉu ĉi tiu?
Ne
Ĉi tiu?
Ne, kaj tiel plu.
Kaj poste fine, mi esperas, mi renkontas tiun ŝtrumpeto tie.
Do, se ĝi estas la sama formo, grandeco, prenu ĝin.
>> Kaj nun, kio estus nia sekva paŝo tie?
Yeah?
Spektantaro: Identigu dekstra de maldekstre.
DAVID Malan: Konsentite, identigi dekstren kaj maldekstren, tiel
feliĉe, tiu speco de verkoj.
Iom simetria, aux mi ĵus eluzita ilin tiamaniere.
Bone, do mi identigis la dekstra.
Kaj nun, antaŭ ol ni procedi, lasu min montri kion Jozef
estis farante tie kiel speco de sperta programisto.
Do denove, ne estas unu maniero fari tion, sed tie nur
numeri la linioj, Jozef jam komencis fari tion
ia deŝovon.
Ja, tio estas tre komuna konvencio en programado,
per kiam vi ion ripeta, looping stilo, kiel
ni implicante kun la angla frazo "POR ĈIU
ŝtrumpeto, "la konvencio en _pseudocode_ kaj, kiel ni vidos,
normala programlingvoj, estas nur indent.
Batis la spaco trinkejo kelkajn fojojn, batis la Tab aŭ similaj,
por ke anidadas sub "POR ĈIU ŝtrumpeto" estas la eron de
plenigos ke vi bezonas fari kiel rezulto de tiu ciklo.
Do jen ĉio ke tio transportante semantike.
Nun dume, la "Se ĝi estas la sama formo kaj grandeco," la
Fakte tiu "Prenu" estas dentado pli simple signifas
tio estas la sola afero vi faru se tiu kondiĉo,
se tiu branĉo, kiu forko en la vojo, estas fakte vera.
>> Do nun cxi tie, ni estas en paŝo kvar, identigi dekstre kaj maldekstre.
Mi identigas pravas.
Doni al mi treti kvin.
Kaj teknike, ni povus vere nomas
la POR ĈIU afero -
vi devus probable prikalkulu ĉiujn liniojn se
ni tuj faros tion.
Joseph: [inaudible]
DAVID Malan: [inaudible]?
Konsentite, fajna, bone, ni tion faros vian vojon.
Bone, do paŝo kvin, kiel ni faras la dekstra ŝtrumpeto?
Kiel ni procedi proksima, tie?
Jes?
Spektantaro: Levu dekstra kruro.
DAVID Malan: Levu dekstra kruro, Okay.
Paŝo ses?
Rapide.
Yeah.
Spektantaro: Trovi malfermita fino de la ŝtrumpeto.
DAVID Malan: Konsentite, trovi la malfermita fino de la ŝtrumpeto.
Tiel bona.
Do jen, honeste, tre komuna instinkto estus nur esti
surmetis dekstra ŝtrumpeto, sed ankaŭ tio sufiĉe ambigua.
Krom se la komputilo aŭ homa scias precize kion tio signifas,
ĝi ne tuj estos por ekzekuti ke, tial ĉi tie, mi havas
trovis la malfermo de la stoko.
Paŝo sep?
Spektantaro: Tuŝu viaj piedoj.
DAVID Malan: Touch piedfingroj.
Okay, do nun ni iru -
Bone, mi iros por preni iujn liberecoj tie.
Dankon.
Paŝo ok?
Surmetu ŝtrumpeto.
Konsentite, tiel nun mi, pensas ni estas fermi sufiĉa al varo de preni
ĉi tiu estas hejme.
Bone, do ĉi iras supren.
Mi prenos iom liberecoj kun kio signifas, fakte.
Metu la ŝtrumpeto plu.
Bone, nun tretas naŭ?
Spektantaro: Metu piedon malsupren.
DAVID Malan: Dankon.
Paŝo naŭ, metis piedon malsupren, kaj nun, ni povas ripeti.
Do supozeble, ni povas nun iri en paŝo 10 kaj diru identigi
forlasis ŝtrumpeto, sed tio supozeble jam faris.
>> Kaj tiel do, mi povas ordigi de ripeti tiujn paŝojn.
Sed ĉi speco de petegas la demando.
Antaŭe, la lastan fojon ni volis ripeti ion, ni
faris ripete, denove kaj denove, POR
ĈIU buklo tiel diri.
Ĉu havas sencon uzi buklo por manipuli ambaŭ
la maldekstra kaj la dekstra ŝtrumpeto?
Ĉar li sentas kiel tiuj operacioj estas preskaux
identa krom la fakto ke unu startas tie kaj unu
komenciĝas ĉi tie?
Ĉu ni buklo, aŭ ĉu ni simple subtenas skribi paŝoj
10 kaj 11 kaj 12?
Spektantaro: Cirkla.
>> DAVID Malan: Konsentite, tiel ciklo.
Mi vere povus diri simple observu tuj.
Do kial estas tiu la kazo?
Nu, ĉi tiu estas vere la unua de nia ne-evidenta
dezajno decidojn, kaj fakte, unu el la metrikoj, per kiu
ni komencas taksi, ĉar ni mem kaj por vi, la
kvalito de programo estas nur kiel bone desegnita estas.
Vi faris la minimuma kvanto de laboro necesa por
get the job plenumis plej rapide, ĉu en terminoj de
via tempo aŭ en terminoj de la komputilo rula tempo?
Kiom da operacioj faras prenas por ekzekuti?
Do eble, tiu estas ŝanco por buklo ĉar
tuj kiam mi komencas kopii kaj bati, kiel Jozef efektive
would komenci fari en momento, vi estas speco de malŝparas vian
tempo, kaj vi estante duoble esprima.
>> Sed samtempe, ĉi tiuj estas vere nur du specialajn
kazoj, maldekstra kaj dekstra.
Kaj dum antaŭe, mi havas 10 aŭ 20 aŭ pli ŝtrumpetojn en
amaso, ĝin definitive havas sencon ne havas 50 liniojn de
kodo dirante kontrolu ĉi ŝtrumpeto, tiam la sekva,
tiam la sekva.
Ĉi tie, estas iom malpli evidenta, kaj mi estus proponinta
ke ni povus iri ajna maniero.
Ni povis ĉu havi tiun banton, kvankam ĝi nur cikloj
dufoje, aŭ ni povus simple kopii kaj almeti malmulta
tie por akiri la laboron farita.
Sed tiu programo estas kalesxo, por tiel diri.
Eble ili havas iujn erarojn, erarojn, aŭ angulo kazoj, por tiel
paroli, ke ni ne vere anticipi.
Nenio misokazis ĉi tiu tempo, sed kio povus esti irinta malĝusta
dum ekzekuti tiu programo?
Spektantaro: Vi ne havas ajnan ŝtrumpetoj.
>> DAVID Malan: Do ne povas ekzisti ŝtrumpetojn tie iu.
Do ni opinias, ke angulo kazo.
Do, se ni povus rulumu reen ĝis paŝo unu, do tretas unu estis
fleksi malsupren, tiel ke kontrolas eksteren.
Paŝo du, repreni vian ŝtrumpeton, sed tiam trovi matching ŝtrumpeto,
identigi pravas.
Ni ia faris tuta amaso de supozoj, kaj ĉi tio estas,
sincere, kial programo kelkfoje frakasi.
Se vi, la programisto, faris certa supozoj, kiel
certe ekzistas Iĝos ŝtrumpetojn aŭ verŝajne okazas
esti memoro restis en la komputilo, certe ekzistas okazas
esti durdisko lasis sur la malmola disko -
Nu, se vi faras ĉi tiuj supozoj, kaj tio estas ne,
fakte, realaĵo, kiu scias kelkfoje kion la komputilo
faros?
Kaj kelkfoje, kiam vi ricevas la ŝpinita strando pilkon aŭ la
frostigitaj Vindozo aŭ similaj, jen ĝuste ĉar iuj
programisto ne anticipis tiujn tn angulo kazoj.
Kion alian povis esti irinta erara en ĉi tiu programo?
Yeah?
>> Spektantaro: Vi ne havas rajton kruro kaj maldekstra kruro.
DAVID Malan: Konsentite, eble ne havas kaj dekstra kruro kaj
maldekstra kruro, kaj tiel ĉi tiu programo povus ne esti universale
aplikebla.
Aliaj?
Spektantaro: Vi eble reprenita orfo ŝtrumpeto.
DAVID Malan: mi eble reprenis orfo ŝtrumpeto, tial
ne-kongruanta ŝtrumpeto kiu ĝuste havas nenian gefratoj ĉar mi havas
perdis ĝin, ĝi estos disŝirita, estas en la lavita ankoraŭ, aŭ similaj.
Tiel ke, tro, ĝi ne vere estis manipulitaj.
Yeah?
Spektantaro: Vi povus jam havas ŝtrumpetojn plu.
DAVID Malan: Mi ne jam havas ŝtrumpetojn plu.
Mi ne reale kontroli.
SE vi ne havas ŝtrumpetojn sur, DO procedi fari
linio unu kaj du.
Kaj tio povus okazi.
Vi dormas kun via ŝtrumpetojn sur kaj similaj, tiel
tion, tre racia angulo kazo.
Kaj eble unu la alian?
Aŭdienco: La ŝtrumpeto estas ene el.
DAVID Malan: Do la ŝtrumpeto estas ene, do ni faris neniun eraron
kontrolanta, en mallonga.
Ni ne kontrolu se la stato de la mondo estas kiel ni atendis.
Ni ne kontrolu se ni efektive trovis kion ni serĉas.
>> Kaj eĉ se ĉi tiu estas speco de ridinda ekzemplo
engaĝante ŝtrumpetojn, fine de la tago, jen ĝuste la
ia pensmanieron vi bezonas havi dum skribado programoj,
eĉ en Scratch tiel kiel en C, en JavaScript, en PHP,
ĉar alie, viaj programoj havos elmeti la
ekvivalento de tiu spinning strando pilko aŭ simple cedi
malpreciza rezultojn.
Tiom da danke tie por niaj skribisto Jozef.
[Aplaŭdo]
>> DAVID Malan: Bone, do kion estas,
Fakte, komputila programo?
Nu, ni prenu rapidan rigardon en
reprezenta tie.
Do tiu estas programo skribita en lingvo nomas C. C estas
sufiĉe malnova tiuj tagoj, sed multaj novaj lingvoj estas konstruitaj
sur supro de ĝi.
Ja, PHP, unu el la retejo centrita lingvoj ni instruos vin
uzi cele termino fino, mem kio nomiĝas
interpretisto, programo kiu estis skribita en C, sed pli sur tiu
en multaj semajnoj de nun.
Sed tiu programo, kaj ĉi tiu estas kion signifas skribi
programo, kvankam tre simpla.
Ni havas kelkajn sufiĉe kamufla sintakso tie, sed vi povas
probable diveni, eĉ se vi neniam planita antaŭe, kion
tiu programo faras.
Fakte, mi ne scias kion printf estas, sed presi certe
conjures ĝis la ideo de presi ion.
Kaj tiel jes, tiu programo estas finfine tuj presi
la vortojn "Saluton, Mondo".
>> Nun, ĉu vi havas Mac aŭ PC aŭ Linukso komputilo, malakordo
estas, almenaŭ se vi elŝutis iom libere
disponebla programaro, vi povus esti skribe programoj
via propra komputilo por sufiĉe tempo nun.
En Mac OS, ekzemple, estas tiu programo nomata
Fina stacio kiu venas kun Mac, jen kutime en via
Utilecoj dosierujo, kaj ĝi ĝenerale malfermiĝas nigran kaj
blanka aŭ blanka kaj nigra fenestro en kiu vi havas
instigas je kiu vi povas tajpi komandojn.
Do ĉi tiu estas efektive memoras kio komputiloj
kutimis esti antaux grafikaj uzanto
interfacoj, GUI-oj, venis kune.
Nun, en Vindozo, vi havas similan mekanismo en formo
de la komando prompto.
>> Sed kion mi tuj faros ĉi tie estas malfermi, diru,
TextEdit denove, tial la sama programo kiun ni uzis por
_pseudocode_ antaŭ momento, kaj mi tuj iros antaŭen kaj
skribi mian unuan programon.
Inkluzivi stdio.h, kion ajn tio signifas, int ĉefa
void, kion ajn tio signifas, kaj poste en la mezo tie,
printf ("Saluton, mondo."). Kaj poste fermi citaĵo,
fermi paren, punktokomo.
Nun mi tuj iros antaŭen kaj nur batis Komando-S. Mi tuj
iri antaŭen kaj savi tion kiel hello.c, do la kongreso en
la mondo de C programado estas nomo de la dosiero dot c.
Mi tuj ĝuste meti en John Harvard Ĉefpaĝo dosierujo,
ĉi tie, klaku Save, kaj nun mi iros, por transiri al ĉi
fina fenestro, kiu denove estas tiu nigra-blanka prompto
kie mi povas ekzekuti ordonojn.
>> Mi povas kuri programoj tajpante lia nomo, ne per
duobla klako ikonoj en la kutima senco.
Sed la afero estas pri C estas ke lingvo kiel C unue
venas en ĉi tiu formo, iu vokis fontkodo.
Iu kiu aspektas iom kiel la angla sed estas
certe malpli kiel la angla ol Jozef _pseudocode_ a
antaŭ momento.
Ĝi estas iom pli arcano.
Ĝi ŝajnas sekvi iujn ŝablonoj aŭ reguloj.
La fakto, ke mi havas frizita krampoj, punktokomojn, citaĵoj,
angulo krampoj, sentu kiel komputilo suprenvenis kun ĉi
speco de lingvo.
Sed se mi foriras nun, al tiu fina fenestro, mi povas kuri
komando kiu tuj konverti ke fontkodo estas
iu nomita celkodo.
Tio tuj konverti angla-kiel sintakson por nuloj
kaj, la sama specoj de nuloj kaj ni
parolis merkredo.
Nun, mi tuj kuri komando nomis Clang.
Pli sur ĉi tio en la semajnoj por veni, sed ĝi estas programo kun
kion mi povas konverti hello.c en tuta amaso
de nuloj kaj aĵoj.
>> Nun, mi kuros ĉi komando.
Mi kuras Clang, kaj tiam mi diris kuri vin en ĉi tiun dosieron
vokis hello.c, kiun mi kreis antaŭ momento, kaj
nenio ŝajnas okazi.
Sed ja, se mi poked ĉirkaŭ mia hejma dosierujo, mi vidus
ke tio stulte nomata programo a.out nun ekzistas.
Tiu estas ĝuste la defaŭlta nomo por programo kiam skribas en
C. Ni povas nuligi ĉi eventuale, sed a.out estas la
nomo de la programo mi nur igis nuloj kaj aĵoj.
Kaj nun, ke tio estas nuloj kaj, mia Mac, en ĉi tiu kazo, aŭ
via Windows PC, povas kompreni tiujn bitoj, tiuj
nuloj kaj aĵoj.
Kaj tiel, kiam mi batis Enter, mi vidas "saluton, mondo!"
>> Sed estas iom kalesxo.
Mi ne sufiĉe diri "saluton, mondo!: Aero: - jharvard." Aero estas
la nomo de mia komputilo.
Jharvard estas la nomo de la konto, do kion mi klare
preterlasi de la programo?
Ia linisalto.
Mi ne batis la ekvivalento de Enter aŭ la tirilo,
kaj ĉi tio estas, denove, testamento al la fakto ke la komputiloj povas
nur faras kion vi diros al ili.
Kaj la fakto, ke mi ne diru al la komputilo movi la
kursoron al la sekvanta linio -
bone, ĝi estas certe ne tuj ĝuste faru ĝin
malhumila por mi.
Do se mi reiros al mia programo, kaj mi diras \ n -
Do \ n, kiel ni baldaux vidos, estas la vojo de
reprezenti bizara aĵoj kiel nova linio karakteroj, aĵoj
ke devus alie esti la rezulto de
bati la Eniga klavo.
Sed nuntempe, nur scias, ke bati la Eniga klavo estus
nur fari nian kodo aspektas nepara, do la mondo decidis, vi scias
kio, por subteni la aĵojn pli belaj, por gardi gxin sur unu linio, ni
nur diri \ n reprezentas novan linion.
Lasu min resave mia dosiero, reiru al la fina fenestro, kaj
re-run a.out, Enter.
Ankoraŭ kalesxon, sed kial?
>> Spektantaro: [inaudible]
DAVID Malan: Jes, do mi bezonas recompilar ĝin.
Do por kompili la programon nur signifas konverti ĝin el fonto
kodon por objekto kodo, fontkodon al nuloj kaj aĵoj.
Nun, la nura fakto, ke mi batis Konservu en ĉi TextEdit ne havas
portanta sur tiuj nuloj kaj ĉar mi unue bezonas
diri al Clang hey, mi ŝanĝis tiujn liniojn de kodo, la
fontkodo.
Vi bezonas regeneri a.out.
Nenio ŝajnas esti okazinta, sed en komputilo,
ĉe komanda linio, por tiel diri, kiam nenio okazas,
kiu kutimas signifas ĉio estas bone.
Kiam io ne okazos, tio signifas
vi paneas, ĝenerale.
>> Do ni nun iru al a.out, kaj efektive nun, mi havas "saluton,
mondon. "
Kaj nun, kio pri tiuj nuloj kaj?
Kie, fakte, estas tiuj?
Nu, mi ne povas vere nur speco de poke ĉirkaŭ tre
efektive.
Lasu min malfermi TextEdit.
Jen a.out.
Lasu min kaj malfermu tiun, kaj tiu estas ŝajne kion mia
programo aspektas.
Do mi malfermis, ne hello.c, sed a.out.
Sed ĉi tiu estas efektive nek mia programo vere estas.
Klare, tio estas ia alfabeta gravuloj.
Mi vidas neniun nuloj kaj, sed tio estas
ĉar a.out estas programo.
Nuloj kaj - sed TextEdit, kiel la nomo sugestas, ĝi estas
samkiel Notepad en Vindozo, estas nur teksta redaktilo, do ĝi estas
konfuzi ĉiuj el tiuj nuloj kaj kiel
kvankam ili estis, kio?
ASCII signojn.
>> Do rememori merkrede, ni ĵus eliris kun ĉi
arbitraj surĵeto de nombroj, aŭ bitoj, al leteroj de la
alfabeto kaj interpunkcio simboloj kaj similaj.
Do TextEdit, ke ĝi estas tekstoredaktilo estas malinterpretando
tiuj ŝablonoj de nuloj kaj ke estas supozita al esti
impreso vortoj, kiel "saluton, mondo." Ĝi estas montri ilin
kiel ASCII, kaj tial gxi aspektas iom senorda.
Nun, estas iuj aludoj de praveco en ĉi tie.
Rimarki, ke mi reliefigas, estas aludo de reale "saluton,
mondo, "do ie en tiu programo estas
la frazo mi skribis.
Sed ni iru antaŭen kaj nun vidas kun malsama programo.
Ĉi tiu ne estas tiu kiun ni uzos, ke ofte, sed ankaŭ venas kun
Mac kaj estos ene de la CS50 aparaton.
Lasu min kaj malfermi kun programo nomata XXD.
>> Reen en la tago, plej programoj estis enoficigitaj sufiĉe cryptically,
kaj tiel la tendenco daŭras.
Sed-b signifas kraĉi tiu programo el kiel duuma.
Ne ruli ĝin.
Montru ĝin al mi kiel nuloj kaj, kaj ĉi tiu estas la C
plani ni nur skribis.
Nun, mi, kiel homo tie, mi honeste ne scias kion
tiuj diversaj ŝablonoj de nuloj kaj reprezentas.
Reen en la tago, mi, kun mia punch kartoj aŭ similaj, would
vere devas serĉi kion tiuj diversaj ŝablonoj de
01111000, reale reprezentas.
Aŭ pli malbone, mi bezonus fari la punching aŭ la kreo
de ĉi tiuj ŝablonoj de nuloj kaj aĵoj.
Sed nuntempe, alpreni fido ke CPU, Intel ene, tiel
paroli, ene de ĉiu el niaj komputiloj tiuj tagoj, scias
kiel interpreti tiujn nuloj kaj aĵoj.
Kaj kelkaj nuloj kaj signifas impreso.
Iuj nuloj kaj signifas ludi la sono.
Iuj nuloj kaj aĵoj signifas preni uzanto enigo de klavaro.
Ekzistas ĉiaj malsamaj skemoj, sed ni dankeme,
kiel homoj, nur ĝenerale bezonas zorgi pri programado en
ĉi sufiĉe alta nivelo.
Kaj en aliaj CS klasoj povas enprofundiĝi malsupren pli kaj rigardu
ĉe aferoj kiel tiuj nuloj kaj, aŭ ankoraŭ
aliaj aferoj ankoraŭ.
>> Do nun ni konverti ĉi.
Ni movi tre rapide for de C kaj movi al iu a
iom pli konsola, iom pli ekscita, en tiu
ni povas reiri niaj kuraĝigoj kaj sonoj kaj similaj, ke
klare eskapis ni en tiu
sufiĉe primitiva interfaco.
Do tiu sama programo en C povas esti prezentita hodiaŭ en ĉi
programlingvo nomas Scratch jene.
Ĉi tiu estas la ekvivalento de ĉi saluton mondo programo skribita en
ĉi puzlo peco stilo lingvo nomita Scratch.
Do lasu min antaŭeniri kaj malfermu tiun tre programo.
Oni denove alvokis Scratch.
Estas libere disponebla, kaj ĉi tiu estas la sama afero ni
komenciĝis hodiaŭ plu.
>> Do ĉi tie estas Scratch, kaj ĝi estas dividita en kelkaj
malsamaj pecoj.
Sur la plejsupro pravas, ni havas la tiel nomata etapo, kaj
ja, tie estas kie la kuketojn
prezentis nur iom antaŭe.
Kaj en tiu etapo estas aĵoj nomata sprites, karakteroj, aŭ
celoj, aŭ entoj.
Fakte ne gravas kiel vi pensas pri ili, sed ili
estas programebla, meblo aĵoj, kaj en ĉi tiu kazo, ĉi
Programo kiu nia studenta skribis havas paron de Gingerbread
kuketojn, paro de cirkla kuketojn, tuta aro da
koroj, tuta aro da anteojos.
Pro tio, li aŭ ŝi povas plani ĉiu de tiuj
individuaj karakteroj aparte.
>> Nun, kio signifas plani tiujn karakterojn?
Nu, lasu min antaŭeniri kaj alklaku ĉi maldekstra mano kuketon
kaj rulu sur la supron maldekstra tie.
En la supera maldekstra de mia ekrano nun estas la
tiel nomata skriptoj areo.
Tio estas speco de vakan skribtabulo, komence, sur kiu mi povas
treni kaj faligi puzlo pecoj kiuj, sincere, faru
ekzakte kion ili diras.
Ĉe la plejsupro de ĉi pilo de puzlo pecoj estas la vorto
Kiam Verda Flago klakis, kaj se vi ne rimarkis antaŭe,
la vojo mi komencis ke kuketo kanto klako, laŭvorte,
verda flago.
Por ke puzlo peco supre maldekstre tie signifas kiam la
homa klakoj la verda flago, plue fari
la sekvajn aĵojn.
>> Nun, kion ili kuketon procedi fari?
Mi ne vere scias kiel interpreti ĉi ankoraŭ, sed la
kuketo ŝajne starigis lian sulko al nulo, tiam ĝi atendis
tri sekundoj, poste ĝi ŝanĝis lian grupon al unu, tiam
atendis duan, tiam ĝi ŝanĝis lian
sulko reen al oni.
Kaj tiam tiu reale similas iom de cimon, ne devus
devas ŝanĝi lian sulko denove kaj denove, se ĝi estas
esti ŝanĝita aliloke, sed ĉi tiu serio de paŝoj estas kio estas
diktante la konduto de tiu aparta kuketon.
Do ni vere rulumu dorso kaj ne rigardi ion
tute tiel kompleksa ankoraŭ.
Lasu min kaj elektu Dosiero, Nova,
kaj ricevu puran skribtabulo.
>> Do nun, mi ja havas malplenan skripto areo, malplena etapo,
kun nia defaŭlta sprite Scratch, kaj supre maldekstre
sur mia ekrano mi havas la pallet de ĉiuj iliaj
disponebla puzlo pecojn.
Kaj ni ne iros tra preskaux ke multaj el tiuj aĵoj
hodiaŭ ĉar, denove, la plimulto estas mem-klarigan, sed ni volas
provi categorizar ilin kaj marki la similecoj
kun tiuj estontaj lingvoj al kiuj ni plonĝi.
Kaj je supre maldekstre tie estas la unua kiam Verda Flago clicked,
do lasu min treni ĉi tie, malzomi iom.
Kaj se mi klaku la verdan flagon, nenio vere okazas ĉar
Mi ne ligita ajna logiko, ajna aserto tiel diri, por
ke verda flago, do lasu min iri al la
kategorioj super tie.
Mi nuntempe en la Kontrolo kategorio.
Mi anstataŭ tuj iri malsupren al la Looks kategorio, kaj
ekzistas tuta amaso de aferoj tie kiuj diras Diru,
Pensu, Ŝanĝi Koloro, Switch Kostumo.
>> Do vi povas fari sensencaĵoj kun kostumoj kaj
sonoj kaj similaj.
Lasu min kaj simple diri Diru, kaj nun rimarkis kiel mi treni
kaj faligos puzlo peco, ĝi tuj volas fermi
en la responda formo.
Do kiam mi iras antaŭen kaj lasi iri de mia muso, ili ŝlosi
kune, kaj nun, se mi iros tie kaj klaku la verdan flagon,
la kato ne fakte diras saluton ĉar tio estas kio estas ene
de tiu blanka skatolo.
Ni baldaŭ vidos ke tiu blanka skatolo estas kio nomiĝas
argumento, aŭ parametro.
Ĝi estas maniero de ŝanĝi la konduton de, en ĉi tiu kazo,
enigmi peco, sed se mi volas diri precize kion mi diras
antaŭe, diru saluton, mondo, mi povas nun reiru tien,
klaku ludi, kaj "saluton, mondo" estas kio la diris.
>> Do ni estas laŭvorte programado nun.
Ne ĉiuj kiuj konvinkaj de programo, sed almenaŭ
ĝi estas iom pli konvinka ol iu kiu rigardas, ĉe
unua rigardo, kiel ĉi tio.
Kaj ni povas tre rapide akiri tiom pli esprimpova
ĉar en Scratch, kiel en aliaj lingvoj, ne estas ĉio
specoj de deklaroj, ne nur diru nek impreso ion, sed
vi povas fari tion kiel atendante, kiel ni ĵus vidis kun
la kuketo, iuj da sekundoj.
Vi povas ludi sonojn en la medio de Scratch nur
kiel vi povas en normala komputilo programo ludi sonon.
Vi povas kontroli kion ili nomas Bulea esprimoj.
Do nun, ni komencu aldoni al niaj ilaron iuj terminologio
ke fakte rilatas al la ekzemplo kiu Joseph kaj mi faris
tie kun la ŝtrumpetojn.
Do asertoj estas nur deklaroj de fakto.
Fari ĉi tion.
Al direktivo por la sprite, aŭ mi la homo, por fari ion.
Al Bulea esprimo estas io kiu havas valoro,
tn vervaloro, jen ĉu nulo aŭ unu, falsa aŭ
vera, ekstere aŭ sur, neniu aŭ jes.
Ne vere gravas kiel vi pensas pri ĉi tio, sed estas
duuma stato.
Kiel Nate diskutita en la merkreda filmetoj, du
malsamaj aferoj.
>> Do en Scratch, Bulea esprimoj okazi rigardi
kiel tiuj bluaj objektoj tie, kaj en ĉi tiu kazo, la demando
markon implicas ke vi demandas demandon.
Estas la kato, aŭ la sprite, tuŝante la muskursoron?
Do ĉi tiu estas nur unu ekzemplo de Scratch bloko kiu okazas
por permesi al ni kontroli jes aŭ ne, estas la muso tuŝi la
sprite sur la ekrano?
Kaj tio povas esti utila se vi vere volas fari tion,
kun via muso.
Krom Bulea esprimoj, ni havas aferojn
kiel estas la muso malsupren, do vi povas detekti tian
pridubi ankaŭ.
Ni povas fari matematiko se vi efektive volas, kaj ekzistas
fakte pli konvinka uzoj por tiu ol pura de
aritmetiko, kiel ni vidos.
Pseŭdo hazardo kaj farante vian programon aperas pensi
aŭ konduti malsame bazita sur iu kvazaŭe hazarda valoroj,
kaj tiam ni havas aĵojn kiel Bulea esprimoj kiel KAJ.
Do, se vi vere volas kontroli du valorojn, ni vidos en
Skrapi ke ni povas reale testi se tio ne estas
vera kaj tio estas vera.
Ekzemple, en la kazo de miaj ŝtrumpetoj, mi povis jam en la
tre fino demandis la demando se maldekstra ŝtrumpeto estas ĉe kaj dekstra ŝtrumpeto
estas on, quit.
Vi ĉiuj farita por la tago, tiel ke estus
ŝanco por tio.
>> Do ni iru antaŭen kaj provu peco iuj de ĉi tiuj kune
kaj iru en kelkaj ekzemploj pli
konvinkaj ol ĉi tiu.
Do lasu min iri antaŭen tie kaj malfermi kelkajn el la ekzemploj
ke estos ĉiam esti sur la kurson de afiŝinto tiel, kaj
malfermi hello2.
Do en hello2 tie, ni havas programon ke tio faras kelkajn
aĵoj, sed ne faras ĝin kiel efike kiel ni povus.
Do jen diras "saluton, mondo" por dua kaj poste atendas
por dua.
Kaj poste faras ĝin denove, kaj tiam ghi denove.
Do se mi klaku la verdan flagon, Scratch diras "Saluton, mondo.
Saluton, mondo.
Saluton, mondo. "Kaj tio estas evidente kandidato nun por
pliboniĝo.
>> Kio estas la bagatela pliboniĝo, mi esperas, ni povas
nun faru se Scratch apogas la koncepton?
Ia buklo.
Ia ripeto, nun, estus bela, do lasu min
efektive provu tion.
Lasu min vere iru kaj movi ĉi.
Do avizo povas disigi blokoj tiel facile kiel vi povas aldoni al
alfiksi ilin.
Lasu min iri sub kontrolo, rulu suben ĉi tie, kaj ja,
tie estas tio enigmo peco tie, Ripetu kaj Forever kaj
Forever Se.
Do ekzistas pluraj manieroj esprimi looping konstruoj
en Scratch.
Tiu, kiun mi verŝajne volas ĉi tie ne estas Forever ĉar mi nur
volas ĉi okazos tri fojojn, sed probable Ripetu.
Do lasu min tiri Ripeti super tie, treni kaj faligi ĝin kaj
nun anstataŭ diri "saluton, mondo" tri apartaj tempoj,
lasu min tiri tiun puzlo pecon en ĉi tie.
Kaj eĉ se ĝi ne ŝajnas havi, la programo estas inteligenta
sufiĉe por realigi ĝin kreskos plenigi, do ĝi estas la
formoj ke materio kaj ne la absoluta grandeco.
Lasu min ŝanĝi la ripeto al tri, kaj nun lasu min iri
antaŭeniris kaj treni Atendu Unu Dua en tie ankaŭ.
Ĝi tuj kapti en tiel, kaj tiel nun mi iros al treni
tiuj infanoj super tie kaj nur ĵetu ilin ĉar mi
ne bezonas ilin plu.
Lasu min malzomi kaj klaku la verdan flagon nun, kaj ni havas
la sama programo sed, kiel mi antaŭdiris antaŭe, pli bone
desegnita ĉar vi povas imagi kiel malbona tiun programon
atingus, certe estetike, se vi devis
komenci kopii kaj bati, kopii kaj bati, aŭ
trenante kaj faliginte la sama Darn aferojn denove kaj denove.
>> Nun, simple dirante stuff sur la ekrano, presi al la
ekrano, vere ĉiuj ne ke ekscita, do ni malfermi
tria varianco tie.
Kaj nun, kiel vi vidas, tiu estos rapide akiri ĝena -
[Meow]
DAVID Malan: - sed estas ankaŭ speco de cute.
[Meow]
DAVID Malan: Konsentite, tiel bona, kaj ni povas certe uzos tiun
sama transiro de chunking ĉi supren enen looping
strukturo, sed ni fari ĝin pli interesa ankoraŭ.
>> Lasu min kaj malfermu kvara varianco tie, kie mi
preni tion, unu paŝon.
Do laŭ tio, stulta kvankam ĉi tiu estas unue
rigardo, kio tiu programo faros?
Ĝi tuj Meow unufoje.
Kial?
Nu, tiu estas, ĝis mi scias, ĉiam malpli ol du.
Ne nocio de hazardo tie.
Mi havas laŭvorte malmola kodita unu kaj du, sed ĉi tiu estas
Ekzemple nun de reale uzi Bulea esprimo.
Multe ŝatis kiel Jozef faris en sia _pseudocode_, la deŝovon SE
vi trovas trafa ŝtrumpetojn DO do la sekva, jen ni havas
esprimo SE oni estas malpli ol du DO -
kaj fakte ni eĉ havas iomete da deŝovon,
kie la purpuro estas iomete dentado dekstre -
DO vi tuj ludi la sono Meow.
Nun, en tiu kazo, ke oni estas ĉiam malpli ol du, do ĉi
estas ia perdo de kondiĉo.
Sed ni povos, kiel ni vidos, ŝtopi aliajn aĵojn enen
tiuj anstataŭiloj kie unu kaj du nun estas.
Do ni nun antaŭeniri ekzemple kvin el tiuj pluraj
hellos kaj rigardu kion tiu programo tuj faros.
>> Do nun, en angla frazo, kiel tion faras
programo kondutas?
Spektantaro: Meows duono de la tempo.
DAVID Malan: Meow la duono de la tempo, do ĉi tiu estas vojo de
transportante tre simpla ideo.
Eĉ kvankam ni hazarde esti uzante iujn malegalecoj tie
en iuj nombroj, tiu estas vere nur programmatical
maniero, preciza maniero, de diri se la monero venas supren kapojn, iru
antaŭeniris kaj Meow.
Aŭ male, se la monero venas supren vostoj, ne Meow.
Kaj en ĉi tiu kazo, kiel ni esprimas tion?
Ni elektu hazarda nombro de 1 al 10, kaj se tiu
nombro estas malpli ol 6, iru antaŭen kaj Meow.
Kaj kiel tiu eniri ĉi tie?
Nu denove, rimarki nur la trenante kaj faliginte kaj
aĵoj latches en loko.
>> Do nun ni vidu se ĉi tiu hazardo funkcias.
Lasu min kaj klaku la verdan flagon.
[Meow]
DAVID Malan: Okay.
[Meow]
DAVID Malan: Okay.
Okay, bona, do ni havas kapojn, kapoj, vostoj efike.
Vostoj.
[Meow]
DAVID Malan: Estroj.
[Meow]
DAVID Malan: Bonega.
Ĝi ĉiam estas mallerta kiam ĵus statistike vi ricevas malbonan
kuras, kaj ĝi estas ĉio kapoj, kaj la programo fakte ne
labori kiel vi volas atendi.
Sed ĉi tiu tempo, ĝi funkciis, kaj ni similas havi, se ni faris
ĉi malfinia nombro de fojoj, 50% probabloj.
Nun denove, ne cxiuj interesaj, ĝuste farante katoj
Meow, do ni vidu, se ni ne povas antaŭeniri ĉi iom pli
tie en versio ses.
Do nun, ni devas vere tedas versio -
[MEOWS EVERY duaj]
DAVID Malan: - kaj ĉi tiu estas kion scias, generalo, kiel
senfina ciklo.
>> Do malfinia ciklo en ĉi tiu kazo sentas malbone.
Ĝi estas certe tuj komencos soni malbona, kaj tamen malfinio
bukloj ne ĉiam malbonaj.
Ĉu vi povas pensi pri kunteksto en komputilaj programoj kie vi volas
vere volas senfina ciklo?
Yeah?
Spektantaro: Kiam vi volas kontroli kondiĉo.
DAVID Malan: Konsentite, kiam vi volas teni kontrolanta kondiĉo?
Kiel kio?
Spektantaro: [inaudible]
DAVID Malan: Konsentite, bona, do se vi havis iun programon, iuj
speco de hejmo aŭtomatigo afero, kie vi volas senĉese
monitoro estas io tiel.
Estas la lumoj sur?
Estas la lumoj sur ĉar eble vi havas temporizador, kaj
vi volas ilin foriri, vi eble bezonas fari ion
denove kaj denove.
Kaj fakte, parolante pri temporizadores, iu el vi, kiuj
horloĝoj en via komputilo aŭ ciferecaj horloĝoj, jen unu
senfina ciklo.
Ĝi daŭre ĝisdatigi la tempo ĉar ĝi senĉese
kontrolanta kaj kontrolado kaj kontrolado havas la tempon ŝanĝis,
kaj se jes, ho, mia dio.
La horloĝo estas fine ŝanĝis.
Ĝi bezonas montri tiun valoron al vi.
Do dum la plejparto de la tempo malfiniaj cikloj estas eraro,
aŭ almenaŭ malriĉa dezajno decido, kelkfoje ili faras
havas sian valoron.
>> Nu, ni pli antaŭen tie hello7.
Do nun la programo ricevos iom pli interaga.
Lasu min zomi tie, kaj denove, ĉi tiu estas kio estas agrabla
pri Scratch.
Kaj ni uzas ĝin por esti klara, Scratch, ĝuste hodiaŭ kaj en
sekva semajno problemo starigis.
Sed lunde, ni plonĝi en C. En ĉi tiu programo tie, faras,
ĉiam, la sekvaj.
SE tuŝi la muskursoron - nun, kiu estas la
kunteksto tie?
Nu, kaj avertas ke, kiu estas elektita cxi tie ĉe malsupro
dekstre estas la kato, sprite, tiel tiuj skriptoj, ĉi
programo, aplikas al li specife.
Do se tiu kato tuŝas la muskursoron, tiam ĝi tuj
ludi ĉi malsupren kaj atendu du duaj, kaj
tiam ripeti ad nauseum.
>> Do ni iru antaŭen kaj batis ludo.
Nenio okazas, sed se mi volas Pet la
kato nun, mi povas simple.
[Meow]
DAVID Malan: Adorable.
[Meow]
DAVID Malan: Konsentite, malpli ĝena, sed ankaŭ ricevas obtuza,
do ni movas en kaj vidi se ni ne povas injekti
iom pli logika.
Tio estis ekzemple sep.
>> Ĉi tie en ekzemplo ok, ni iras al
enkonduki ELSE kondiĉo.
Tiel kiel laŭvorta forko en la vojo, en kiu vi povas iri
forlasis aŭ vi povas iri dekstren, kondiĉo en programado
lingvo kiel Scratch, aŭ kiel ni vidos C, povas permesi al vi
iru en unu direkto aŭ alia vojo SE ELSE konstrui.
Do tute laŭvorte, SE tuŝi muskursoron, ĉi
ludos iun sonon, ELSE ĝin tuj ludi ĉi tiu alia
sono, Meow.
Nun, se vi povas konkludi el la nomo de tiuj sonoj, vi povas
probable diveni kio tiu programo estas intencis sorĉvenigi
la ideo de.
Ĉi kato estas meowing feliĉe.
[Meow]
DAVID Malan: Feliĉe, sed ne
sufiĉe ŝatas esti tuŝita.
[Ektondros]
DAVID Malan: Do nun ni havas katon kiu krias al vi.
>> Bone, nu, unu lasta ekzemplo kun katoj tie, kaj
ni malfermita versio naŭ de ĉi tie.
Do nun, ni havas la sekvan plej ĝena sono kiun mi povis
trovi, do ni havas rosmaro aŭ maro leono tie kiuj tuj
fari la sekvajn.
[SEAL Bark]
DAVID Malan: Konsentite, do ĉi eliros al la ĝis vi povas diveni, kiel
tiu programo funkcias.
Do ĉi tiu fojo, tiu besto havas du skribsistemoj, kaj kio estas
Interese estas, ke tiuj skriptoj tuj ekzekuti
en paralela.
Do ĉar ili ambaŭ komenco kun verda flago clicked,
ĝi estas kiel iri kiel ĉi tiu, kaj ambaŭ programoj komenci kuri ĝin
iam eĉ se ili estas looping ĉiam.
Do, en la supro skripton, mi havas iujn logiko.
Kion prezentas tio kiun havigas tie supre?
[SEAL Bark]
Spektantaro: [inaudible]
DAVID Malan: Se estas kio?
[SEAL Bark]
Spektantaro: Se silentigita al nulo, ĝi tuj observu ludas la
soni. [SEAL Bark]
DAVID Malan: Konsentite, bona.
Do SE silentigita, kia ajn estas, ĉi oranĝo afero estas nulo,
DO ludi la maro leono sono kaj pensi "Ho,
hi, "por du sekundoj.
Nun, mi ne scias kion silentigita estas, sed nulo conjures ĝis la
ideo de falsaj aŭ ekstere.
Do se silentigita estas falsa, do se ne silentigita,
teni ludi la sono.
Bone, nu, kiel ni malebligi tion?
>> Nu, ni rigardu la dua skribsistemo tie malsupre.
La dua skribsistemo diras starigis silentigita al nulo.
Rimarku ke estas ankaŭ oranĝa, do kio Scratch ne estas koloroj
blokoj en la sama ombro se ĝi estas speco
de logike rilataj.
Do ĝuste kiam dampita ĝis supro estis oranĝo, tia estas silentigita cxi tie
menciita en oranĝo bloko.
Sed ĉi tiu estas variablo taskoj, do ĝuste kiel en
algebro, vi havas x kaj y kaj z, en programado vi havas
variabloj, sed ili estas ĝenerale -
let la paŭzo dum momento kaj figuro kiel
halti ĉi bojanta.
Kiel mi faru tion?
[SEAL Bark]
DAVID Malan: Okay.
Ĝi haltis. Okay.
>> Do ĝuste kiel en algebro vi havas variabloj x, y, kaj z, sed en
programado, havante variabloj kiel x, y, kaj z estas ĝenerale
malaprobita ĉar ili estas tute ne esprima.
Ili ne havas semantikan signifon ajn, do en la plej multaj
programlingvoj, variabloj povas havi plenan
disvolviĝinta nomoj aŭ vortoj aŭ frazoj, kiel silentigita, diri
kion ili faras.
Do ĉi tiu dua skribsistemo ankaŭ estis aŭskultante eterne, kaj gxi diris
se la ŝlosilo, la klavaro klavo Spaco, estas
premita, demandosigno.
Do tie estas kondiĉo kun Bulea esprimo kiu estas
tuj respondi al demando ĉu truthfully aŭ malvera,
tiam mi havas interne de ĝi SE la spaco klavo estas premita KAJ
SE silentigita estas nulo, turnu silentigita al oni, ELSE starigis silentigita al nulo.
Do ĉi tiu alia forko en la vojo, kaj anonco kiom mi havas
anidado la du SE kondiĉoj, estas vojo de kontrolanta estas la
Spaco Trinkejo premis ĉar se jes, mi jam volas iri tiun
vojo aŭ tiu vojo.
Kaj kiel mi inversigi la valoro de silentigita?
Mi devas kontroli ĉu nulo?
Se jes, fari ĝin unu, alie fari ĝin nulo al tio Baskuligi
liaj du ŝtatoj.
>> Bone, do ni havos poste kelkaj el tiuj fundamentaj
konstruoj.
Ni havas Bulea esprimoj, kaj realigi, ankaŭ, ĉi tiuj estas
Ne ĉiuj kiuj ne konas.
Fakte, jen rapida ekrankopio de Harvard Kompreneble la CS50
komerca ilo, kaj ĉiu retpaĝaro tie kiu havas markobutonojn
kaj guto montetaro vere, ĉiuj ĉi tiuj datoj, estis uzante
Bulea esprimoj.
En ĉi tiu kazo ĉi tie, se vi klakas la checkbox apud
Kompreneble pli granda ol aŭ egala al 4,5, aŭ la sama flanko
fakultato, vi preciziganta Bulea esprimo.
Montru al mi kursojn por kiu tiu esprimo estas vera.
Aŭ dekstre, ĉu ne konfliktas kun kursoj mi
portante, se tiu estas kontrolata, tiam jes, vi volas kontroli
tiu kondiĉo, alie vi volas ignori ĝin.
Do Bulea esprimoj estas ia cxirkauxe, sed kiam
ni metas ilin en kondiĉoj, ĉu SE kondiĉoj, SE
ELSEs, aŭ ni povas eĉ simuli profunda
niveloj, SE ELSE IF ELSE -
do jen speco de triargumenta stato.
Vi povas iri tiel aŭ ĉi maniero aŭ tiamaniere.
Ni povas gardi nestumado aĵoj iri en malsamaj direktoj.
>> Do Scratch havas tiuj cikloj, kiel Forever.
Ĝi havas tiujn trajtojn kiel Ripetu 10, iuj
finia nombro de fojoj.
Ni havas la kapablon nun meti variabloj, do en tiu ĉi kazo
Mi deklaris, ekzemple, variablo nomita ŝtrumpetoj.
Mi inicializado al 0, kaj tio estas ankoraŭ alia direkto
ni povis esti prenita supren tie kun Jozef, per kiu mi eble
nur konservi trako de kiom ŝtrumpetojn mi havas sur kaj finiĝi
la programo kiam tiu variablo estas valoro estas 2.
Kiu estus alia maniero de ia komunigante ke
problemo kaj faras ion denove kaj denove.
Nu, ni iru antaŭen kaj nun enkonduki kelkajn novajn aferojn.
Do tiuj el vi kun antaŭa programing sperto volo
scias, ke multaj lingvoj havas arrays, aŭ vektoroj aŭ
lertaj, kaj ja, Scratch havas io tiamaniere, ankaŭ.
Do ni vidu, se ni ne povas preni aĵojn al la sekva nivelo tie.
Se mi havas la kapablon, nun, kun ĉi tiuj puzlo pecoj
aldoni ion, kiel vorto aŭ nombro, al variablo, mi povas
komencas amasigi aĵojn.
Kaj jen estas vere bela apropos por aĵoj kiel ludoj,
listo ludoj kie vi estas speco de marsxante
iuj fantazio mondon kolekti aĵoj, repreni aĵojn,
gajnante punktoj, aŭ similaj.
Vi eble volas konservi trako de ia inventaro, kaj
ja, jen kion unu el niaj malnovaj studentoj tie faris kun
iu nomita Fruitcraft RPG.
>> Do lasu min antaŭeniri kaj malfermu tiun aferon ĉi tie, kaj en
Fruitcraft, ni havas ĉi mondo ĉe supro.
Do lasu min antaŭeniri kaj klaku la verdan flagon.
Avizo ĉe supre maldekstre estas ia inventaro.
Tio implementado en Scratch kiel kio ni vokos tabelo aŭ
listo, kaj nun ni havas ĉi tiun malgrandan kuraĝigo.
Do kiel ni komencis pli frue kun ĉi kuketo amo,
kaj poste ni antaŭeniris al katoj kaj maro leonoj, nun ni povas havi
tion, kio estas eĉ pli interaga.
Kaj tiu malgranda blua ulo, mi povas komenci movi ĉirkaŭ lia
malgrandan loĝejon tie.
Do ĝi similas li havas eliron cxi tie, do mi uzas
la sagoj klavoj, supren, suben, forlasita pravas.
Kaj nun mi estas ekstere, do ni estas kion mi devas tie.
Aspektas kiel oranĝon, kaj ja, kiam mi tuŝis la
oranĝo, ĝi prenas plopped en mian inventaro.
Se mi iras tien por la ĉerizoj, nun mi havas ion
alie en mia inventaro.
Kaj jen estas ĉiuj agrabla kaj bela, sed pensi kiel, nun, tiu
estas efektivigitaj.
Nu, ni havas ĉi nocio de listo, kaj tio estas ŝajne
enigmo pecon, kiun vi ĵus diras kion vi volas aldoni al ĝi, aldoni
oranĝo, aldoni ĉerizoj.
Nun, kio ĉi tiu malgranda blua ulo faras?
Nu, li estas sprite.
Kaj supozeble, la oranĝo kaj la ĉerizoj -
ili mem estis apartaj spiritoj.
Kaj uzante kondiĉoj en Buleaj esprimoj, la
studento estis probable povis esprimi SE blua ulo estas
tuŝi ĉerizoj DO aldoni la vorton ĉerizoj al sia
inventaro, kaj tiam ankaŭ kaŝas la ĉerizo sprite.
Do sub la kapuĉo, tie probable ankoraŭ estas ĉerizo
sprite tie.
Ni ĵus rakontis ĝin igi efektive nevidebla.
>> Nun, se mi gardas marŝante tien, ni povas ankaŭ fari tion
proximal afero, kie mi povas iri kaj legis la signo.
Do se blua ulo tuŝi signo, ni povas havi tiun Say bloko
samkiel la kato parolis al ni en vortoj, saluton, pli frue, "Got
iuj frukton?
Alportu ĝin al la frukto loko. "Bone, do nun, ŝajne,
Mi havas mian direktoj.
Mi povas iri tien al la frukto loko, vicigas min supren
kun la pordo.
Nun, mi estas en ĉi tie.
Mi povas iri al la viro en la vendotablo.
Li detektas ke mi estas proksima al li, do tio ne devas esti
sufiĉe idente tuŝi, kaj mi venkis.
Do ni havos Fruitcraft RPG.
>> Do ni povas fari aferojn eĉ pli progresintaj ol ĉi tiu.
Ni povas aldoni sonoj.
Ni povas aldoni pseŭdo hazardo.
Ni povas aldoni komplekseco.
Lasu min tie ĉi, kaj anstataŭ tion fari mem,
lasu min montri al vi unu el la plej kompleksaj prezentoj
ni akiris lasta jaro de iu al iu nomita Blake.
Ĉu ni povas havi unu volontulo kiu estas komforta aperi sur
ĉambro kaj estas ĉe ludas ludon?
Kion pri rajton tie?
Venu supren.
Bone, do la ludo, ke vi havas nur scii
volontulis por ludi -
[Aplaŭdo]
DAVID Malan: - Estas io el pasintaj tempoj nomita
"Frogger." Kio estas via nomo?
RENDA: Renda.
DAVID Malan: Redna?
RENDA: Estas kiel Brenda kun b.
DAVID Malan: Konsentite, Renda.
Davido.
Nice to meet you.
>> Do ĉi tie en "Frogger," kaj se ni povus levi la volumo ĵus
iom, vi estas tiu malgranda
verda rano sur la fundo.
Vi povas uzi forlasis, dekstra, supren kaj malsupren, kaj via celo estas
transiri la straton, transiri la riveron, kaj tusxu la lilio almohadillas
ĉe la supro.
Aw.
Unu pli t -
refari, tute certe?
Ni sukceson halto.
Neniu vidis tion.
[Aplaŭdo]
DAVID Malan: Yeah.
Tre bone farita.
Bonega, dankon.
>> Por ke ne estis Frogger. Nun ke vi scias, kion vi havas
alveninta vin en, oni pli volontulo por malsama
ludo prezentita de alia lernanto.
Vi volas veni supren?
Kio estas via nomo?
Richard: Richard.
DAVID Malan: Richard.
Bone, Richard, venu supren.
[Aplaŭdo]
DAVID Malan: Vi havas iu kiu faros sonas
familiara frue, do tie estas viaj instrukcioj.
Do tre frue, iu puzlo pecoj tuj rulumu supren
de la ekrano ke aspektas ĉu forlasis
aŭ dekstra supren aŭ malsupren.
Vi tuj devos batis la sagoklavoj tiel
kiu respondas al tiuj puzlo pecoj vicatendis kun
la anstataŭiloj en supro.
Do kiam vi vidas maldekstre sago, kaj regiono per la maldekstra
sago, batis la maldekstra sago.
Vi povas komenci.
[MUZIKO - "forta" KAYNE OKCIDENTO]
DAVID Malan: Bone, grandaj rondaj de aplaŭdoj por Richard.
[Aplaŭdo]
DAVID Malan: Tre bone farita.
Dankon.
[Aplaŭdo]
>> DAVID Malan: Do amuza kaj, ŝajne, ia
intimidar kiel ĝi povus esti apliki ion kiel
kvazaŭe kompleksa kiel ĉi tiu, rimarkas ke la lernanto
ne ekiris kaj simple skribi ĉi subite.
Pli ĝuste, oni povas rompi problemo kiel ŝajne komplekso
kiel tiu en multe malpli granda pecoj, kaj ĉi tio, ankaŭ, estas
tuj estos temo.
La plej malbona afero vi povas fari en skribi programon en plej ajna
lingvo estas sidiĝi, get vere ekscitita, skribu la
tuta malbenita afero, kaj poste nur atendas ke ĝi laboras por la
tempo vi ĵus skribis.
Pli ĝuste, la procezo de programado devus ĝenerale
esti tre diskutita, tre ripeta, per kiu vi ĵus
starigis tre malgrandaj paŝoj al vi, mordo-grandeco pecoj
Kion ili volas mordi ekstere, kaj por ke vi havas tiujn prudento
ĉekoj, iom limŝtonoj vi povas renkonti.
Kaj tiam vi konstruu sur supro de tiuj por krei pli
kompleksaj aĵoj ankoraŭ.
>> Do ekzemple, kiel ni povus iri
implementando ludo kiel tiu?
Nu, sincere, mi certe komencos per nur
apogi unu klavo samtempe.
Ni simple apliki subteno por la maldekstra sago.
Do la studento devis iel krei en Photoshop, aŭ en
Skrapi mem uzante la malgranda grafika redaktoro, oni
sago ŝlosilo kiu aspektas kiel la ĉe supro lasis tie, nur
la griza lokokupilo.
Tiam la studento devis diveni kion x, y kunordigi al
diris, kie meti ĝin en la fenestron.
0, 0 estas ĉi tie, do vi devas kalkuli la nombron de
rastrumeroj, aŭ dots, por kompensi ke sago de
la supro de la ekrano.
Kaj tiam tuj ke estas en loko, via programo ne vere
faris nenion ankoraux, do vi tiam bezonas duan sprite, por
Ekzemple verda sago, ke estas ankaŭ markante forlasis, kaj vin
tiam necesas komenci skribi iujn skriptojn por ĝi.
>> Kaj vi rimarkos, eble, ke tiuj aferoj venas komencita en
malsamaj rapidoj, kaj la koloroj estis en malsamaj
lokoj, kaj tio estas ĉar la lernanto uzas iom de
pseŭdo hazardo.
Kaj per pseŭdo hazardo, mi nur volas diri elekti nombro
inter io kaj io pro vi povas
komenci mapo aĵojn, kiel se la nombro estas inter kaj
kvin, nu, ni faros la aferon verdo.
Se estas inter 6 kaj 10, ni preni la puzlo peco
ruĝa anstataŭe.
Tiel longe kiel vi havas manieron de generante ian
hazardo, vi povas tiam preni decidojn surbaze de kiuj
hazardo.
Kaj mi parolas tiele pseŭdo hazarda ĉar estas
iom malpura sekreto.
Komputiloj ne povas veni supren kun hazarda nombroj.
Ili povas nur fari kion ili diris, ĉar
ili estas homfarita mekanismoj.
Ili ne povas ĝuste diveni numeron kiel ni homoj
sentas kiel ni povas.
Komputilo havas ion fari matematikajn al sorĉvenigi la
iluzio de matematika nombro, kelkfoje uzante la
nuna tago de tempo kiel enigo por decidi kio
numeron reveni, sed pli en tiu alia tempo.
Por nun, nur scias, ke ni povas generi pseŭdo hazardo.
>> Do iam mi havas la kapablon por la maldekstra sago por komenci
aperi en malsamaj tempoj kaj je malsamaj rapidoj, tiam
Mi povas reiri kaj aldoni kelkajn de tiuj SE kondiĉoj.
SE tiu sprite tuŝas la alia, KAJ la maldekstra sago
ŝlosilo estis premata -
do tri kondiĉojn en tiu kazo.
Mi povas uzi tiun KAJ bloki eble, en tiu kazo -
DO Mi volas iri antaŭen kaj pliigo la partituro.
Kaj en supro, ni havas partituron, ni havas Awesome,
Cool, Bona, kaj Boo.
Do tie estas ŝajne kvin variabloj ke ĉi studento
uzata por konservi trako de tiuj diversaj metrikoj.
Do mallonge, la fina rezulto estas mirinda.
Estas amuza, estas amuze ludi, ĝi estas engaĝi, sed ĉi tio ne estas
kie la studento komencis.
Li aŭ ŝi komencis al tre malgranda aro de paŝoj.
>> Do kio estas iu alia konstruaĵo blokoj, ke ni povas
teksi en tiuj programoj?
Nu, estas ĉi tiu alia koncepto en plej lingvoj,
Skrapi inter ili, konata kiel fadenoj.
Do komputilo povas fakte ne vere multnombraj aferojn
tempo, almenaŭ ne kutime.
Pli ĝuste, komputila ĝenerale havas nur unu CPU, kaj eĉ
kvankam komputiloj estas super rapida kaj povas, do,
krei la iluzion de fari multnombrajn aferojn samtempe -
kontrolanta vian ejon, atingante instantáneo
mesaĝon, presi dokumenton -
vere, komputilo estas nur salti de impreso al IMing
al emailing, dorso kaj reen kaj tien kaj reen tiel rapide, ke ni
malrapida witted homoj simple ne rimarkas ke fakte
kurante tiuj programoj iom samtempe.
Nun, ĉi tiu iom de blanka kuŝas tiuj tagoj ĉar, nuntempe,
multaj niaj komputiloj estas kion oni nomas multi-kerno, do vi
havi CPU sed multnombraj kernoj, kiuj estas speco de kiel
havi plurajn CPUs.
>> Kaj tiel kelkfoje, komputiloj vere povas fari multnombrajn aĵoj
samtempe, sed ĝenerale ene de programo, programoj
fidi tion nomas fadenoj.
Do unu fadeno estas ia kiel miniaturo programo kiu povas
ekzisti apud alia miniaturo programo kaj povas kuri
en paralela, aŭ almenaŭ povas kuri sub la iluzio, ke
ili estas kurante samtempe.
Do Scratch subtenas tion nomas fadenoj.
Vi povas havi plurajn skriptojn ekzekuti tuj, kiel ni
faris kun la maro leono, kaj ĉi tio permesas al ni efektive
tiam havi interagoj inter tiuj spiritoj.
Lasu min tie ĉi kaj elsxiros, diru, fadenoj, kaj
ludi ĉi jene.
Ni havas du sprites, ĉiu el kiuj ni vidas
havas nur unu skripton.
Kaj vi rimarkos ke ŝajnas esti iu inteligenteco en la
kato en ĉi tiu ĉar li ricevas pli proksime -
[Ektondros]
DAVID Malan: - kaj pli proksima al la malgranda birdo.
>> Do kiel estas la birdo mastruma?
Nu, ni rigardu la birdo unua.
La birdo skripto diris kiam la verda flago estas clicked, iru al x
egalas negativa 115 kaj y egalas 150.
Do mi simple supozis, hazarda loko kie mi volis la
birdo komenci, kaj mi ĵus plopped lin tie defaŭlte.
Tiam Forever SE ne tuŝi kato, do ĉi tiu estas malsama
speco de looping konstrui, sed sama ideo, fari ĉi denove kaj
denove kaj denove.
Tiel longe kiel vi ne tuŝi la kato, movi tri paŝoj, kaj
se vi estas sur la rando, resalto, kie ĝi estas speco de
reflekto en la bilardo senco.
Do jen kiel la birdo estas movanta ĉirkaŭ ia
kvazaŭe hazarde, sed estas nur ĉar ĝi estas _bouncing_ for
la muroj en ĉi tiu kazo.
>> Nun la kato, dume, estas speco de kaptiloj.
La kato, kiam la verda flago estas clicked, jes, komenciĝas en
iuj situo, hazarda loko -
almenaŭ en parto kiel por la elekto
hazarda verda bloko tie -
kaj tiam Forever SE tuŝi la birdo, ludi la leono sono,
kaj tiam haltas skripto.
Do kiam mi diris finiĝi, aŭ eliri antaŭe, tie estas enigmo
pecon en Scratch kiu nur mortigi la programo en tiu
atentigi ĉar ĝi estas speco de logike faritaj.
Sed alie, tie, rimarki kio tuj okazos.
Pinton al la birdo kaj movado unu paŝo.
Do ĉi tiu punkto al birdo estas speco de avantaĝon la kato
havas en kiu estas autodirigido en la movanta birdo, kaj ni povas
nun faru ĉi programo des pli interesa.
Anstataŭ movanta unu paŝon en momento por CPU ciklo, po
frapi likvidon de la sonorilo, tiel diri, permesu al mi iri antaŭen kaj
movi, diru, kvin ŝtupoj samtempe kiel la kato.
Klaku kuri, kaj nun li vere trovis lin rapide.
Se ni duobligi ĉi plui al 10 paŝoj, ĝi ia iras
dekstra por li.
Nun, ni povas doni la birdo,
eble, iom de avantaĝo.
Ni iru al la birdo kaj diru anstataŭ movi tri paŝoj,
ni movi lin 30 paŝoj.
Sed li ankoraŭ kroĉiĝis en la fino.
>> Do jen, ni havas du fadenoj.
Ĝi estas enprizonigita en Scratch kun du skriptoj kaj du
sprites, sed la ideo en aliaj lingvoj estas ke vi povas
skribi, esence, tro multaj programoj kiel ĉi tio kaj havas
ili kuras vere, aŭ imaginarily, en paralela.
>> Nun, estas ankaŭ ĉi koncepto en programado konata kiel
eventoj, kaj ĉi tiu estas io ni ne vidos en C, la
lingvo konita kiel C. Ni vidos ĝin al semestro la fino
en retejo programado, kiam ni enkondukas JavaScript kaj la
nocio de konstruaĵo retpaĝojn kiuj estas dinamika kaj interagi
kun uzantoj.
Do en ĉi tiu kazo, ni havas tre simplan ekzemplon de du
sprites, knabo kaj knabino, ĉiu el kiuj havas siajn respektivajn
fadenoj, sed iel tiuj du estas inter-komuniki per vojo
de iu nomita eventoj.
Do lasu min iri antaŭen tie kaj zomi en la knabo skripton,
kiu aspektas kiel ĉi tio.
Kiam verda flago clicked, eterne fari la sekvajn.
Se la ŝlosilo Spaco, aŭ la spaco Trinkejo, estas premita, diru
Kadro por du sekundoj, jen pure estetika sur la
ekrano, iom parolado bobelo, sed tiam elsendas.
>> Do elsendo estas alia Scratch peco kiu estas
reprezentanto de klaso de funcionalidad en programado
kiu permesas malsamaj programoj, malsamaj fadenoj,
al interreligia komunikas, por iel sendos
mesaĝoj, unu al alia.
Pasante pecon de papero en klaso estas varo de la malalta teknologio
ekvivalento.
Do transdonita evento.
Mi povas sendi ĉi tiun mesaĝon, kaj la vorto okazaĵo
estas tute arbitra.
Nulo kelkfoje havas tiujn guto montetaro, do mi ĵus eliris
kun hazarda vorto kiel okazaĵo ĉar nun, kion la knabo faras
kiam mi premas la klavon estas li dissendas ĉi evento.
Kaj se mi rigardas nun la knabino skripton, ŝia skripto estas
super simpla ĉar ĉio, kion ŝi bezonas fari estas ne agas kiam
la verda flago estas klakis.
Ŝi estas desegnita por ago kiam ŝi ricevas citaĵo, unquote,
"Evento", kaj je tiu punkto, ŝi aŭskultas do por
la tn evento denove kaj denove.
Tuj kiam ŝi ricevas tiun eventon, ŝi tuj krii
Poluso por du sekundoj.
>> Kaj tiel vi povos eble dedukti de tiu ekzakte kion la
sekva rezulto tuj estos.
Lasu min klaku la verdan flagon.
Nenio okazas ĉar mi bezonas fari kion?
Spektantaro: Spaco Trinkejo.
DAVID Malan: Spaco Trinkejo.
Knabo diras Marco, knabino diras Poluso.
Sed tio ne estas malfacile kodita per si mem.
Tio estas inter-komunikadon inter skriptoj, do nun ni
havas la kapablon fari eĉ pli kompleksa programoj kie
tiuj du estas iel inter-komuniki.
>> Do en kio direktoj ni povas utiligi ĉi tiun?
Nu, en problemo aro 0, vere, la celo estas
amuzi kun Scratch.
Por la hacker eldono, vi anstataŭe amuzi kun pli
malnaiva versio de Scratch nomis BYOB: Konstruu
Your Own blokoj, sed la ideo estas la sama.
Vi povos -
Jes, tio estis intenca.
Ĝi venis de Berkeley.
BYOB estas la hacker eldono versio de ĉi tiu, sed ambaŭ
demografio, normo eldono kaj hacker eldono egale, la
golon en mano por la venonta semajno estas vere nur por plonĝi en
profunda, ke via manoj malpuraj kun programado, kaj fari
io interesa, fari ion interaga, fari
ion artan, fari ion amuzan por fakte
pruvi, ke per semajno fino, vi havos projekto,
Ne nur por via unua CS50 pset, sed vi havos
iom iun kiu povas montri en Annenberg al
amikoj aŭ eĉ familio enŝutante ĝin al MIT retpaĝo.
Kaj tiel kiel mi diris merkrede, ni atendas 90% de la klaso,
ĝenerale, por servi la normo eldonoj.
Rimarkas ke ekzistas ankaŭ ĉi elirejon por tiuj el vi, kiuj
povus alimaniere trovi mem iom enuas kun la fundamentoj
kaj vere volas plonĝi en kaj metio vizio vi jam
havi kun antaŭa fono en tiu pli amika
medio.
>> Do lasu min eltiri supren unu alia ekzemplo, ke unu el nia antaŭa
studentoj tie faris kaj diru iom iun tra kanto.
Ke simile, kiel ĉi teatraĵoj, pensu pri kiel vi ĉirkaŭiras
efektivigo de ĉi tiu programo uzi precize tiujn samajn
konstruaĵo blokoj, iomete da pseŭda hazardo, kaj
iom familiara kanto.
Se ni povus levi la volumo malmulta?
[MUZIKO - "Pluvas MEN" LA VETERO GIRLS]
>> DAVID Malan: Estas tio por CS50.
Ni vidos vin lunde.
[Aplaŭdo]