[MUZIKO Ludante] JASON Hirschhorn: OK, ĉiuj. Bonvenon Sekcio. Jen CS50, nia tre unua super sekcio. Kiel vi ĉiuj scias, la proksima semajno regulajn sekciojn komencos, sed tiu semajno ni ĉiuj kune. Estas mi. Mia nomo estas Jason. Mi estas lekciisto en Komputila Scienco. Ni havas Andi, kiu estas la kapo TA de CS50. Kaj Scaz, Profesoro Brian Scassellati, Li estas profesoro en Komputado. Ni estas la CS50 kapoj ĉe Yale. Vi povas ĉiam retpoŝti ni heads@cs50.yale.edu. Ni estos je prelegoj. Ni estos ĉe oficejo horoj. Se tie estas iam ajn ni povas faru por vi, ion vi bezonas, bonvolu alveni al ni. Do kion ni faros hodiaŭ? Aŭ antaŭ tiam, kio estas venas supren ĉi semajno? Do oficejo horoj estas lundo, mardo, Merkredo, kaj ĵaŭdo, 8:00 al 11:00. Tie estas horaro sur la retejo. Sekcioj, kiel mi menciis, estas komencantaj sekvantan semajnon. Kaj vi ekscios tiu semajno kio tempo via sekcio estas, kiu tago estas, kaj kiu via TA estas. Problemo Serio 1 estas devita ĉe ĵaŭdo ĉe tagmezo vendrede tagmeze kun malfrua tago. Jes, vi havas naŭ malfrue tagoj. Kaj estas naŭ problemo aroj. Kaj povas nur uzi unu malfrua tago po problemo aro. Jes, en efekto, ĉiu problemo aroj devas vendredo tagmeze. Tio estas ĉio. Ĉiuj ke detaloj estas sur la syllabus. Ĉiun vendredon, ni havas lunĉoj. Ni ŝatas fari ĉi granda Kompreneble sentas iom pli malgranda. Do vi estas bonvena al RSVP. Libera lunĉo kun ulo samklasanoj kaj kunlaborantaro. cs50.yale.edu/rsvp. Ĉiuj de ĉi tiuj aferoj Mi havas sur la ekrano, kaj pli, vi povas trovi cs50.yale.edu aŭ cs50.harvard.edu, se vi iras al Harvard kaj spektas tiu linio. Ankaŭ sur tiuj retejoj, tie estas barelon da rimedoj por vi. Ĉiu prelego ne nur havas la vídeo de la prelego, sed ankaŭ notas. Iu viglos la prelegi kaj preni notojn por vi. Do vi povas simple pagi atenton dum prelegoj, aŭ vi povas uzi siajn notojn / nia notas al suplemento via propra notoj. Ekzistas diapozitivoj rete. La fonto code-- ĉio David iras super en prelego, aŭ Scaz iras super prelego, ke fontkodo estas havebla rete tiel, kiel kiel mi, menciita filmetoj. Sekcioj, same, ĉiuj estos filmado. Ĉiuj el tiuj diapozitivoj estos disponebla. Ĉiuj de tiu kodo estos disponebla por vi. Ekzistas mallongaj sur la retejo kie CS50 bastonon membroj pasigas kvin 10 minutoj iranta tra temoj por vi. Iuj el tiuj vi jam renkontis en problemo aroj. Oficejo horoj, kiel mi menciis, la lundon tra ĵaŭdo, 8:00 al 11:00. CS50 Studo estas fantazia rimedo. Estas praktiko problemoj, specimeno diapozitivoj, konataj cimoj ke studentoj ŝatas kolizii, por esence ĉiu temo ni kovros en tiu kurso. Kaj fine, en ĉi tiu bildo almenaŭ, Reference50 kiu donas al vi informojn sur ĉiuj de la C funkcioj vi povus iam eble esperas uzi kaj multaj, multaj pli. Denove, tio dot dot dot ĉe la fundo de la ekrano estas por indiki ke ekzistas eĉ pli rimedoj sur tiuj du retejoj: cs50.yale.edu, cs50.harvard.edu. Do, kion ni faras hodiaŭ? Nu, unue mi tuj donos vi rigardas la rimedoj. Jam faris tiu. Rigardu nin. Nun, ni tuj iru super datumtipoj kaj operatoroj en C. Tiam Andi iros tien kaj transiru bibliotekoj en C, printf (), funkcio kun kiu vi estas jam familiara aŭ estos rapide fariĝis tre familiara. Kaj vi ankaŭ transiru Conditionals kaj maŝojn. Kaj poste fine, Scaz transiros la CS50 ID. Se vi ne kolombon en jam en Problemo Serio 1, tiel kiel kiel uzi la terminalo kaj utilaj komandoj kaj donu al vi kelkajn demonstraĵojn kaj praktiko kodigon en la CS50 ID. Antaŭ mi saltu en ĉi enhavo sur tiu flanko, Ĉu iu havas demandojn ĝis nun? Granda. BONE. Ŝanĝi dentaĵoj. [Changing Gears] Tio estis mi sxangxigxantaj dentaĵoj en manlibro aŭton. Do datumtipoj en C, oni povas ne nur devas variablon x kaj havas ĝin esti sur linio 10, entjero, eble la nombro 1, sur linio 20, du ciferoj 10.5, poste kelkajn liniojn poste cxeno, mi amas CS50. En C, variabloj povas esti nur ion kaj unu afero sola. Kaj tial vi devas doni al ili tipoj. Kaj sur tiu tabulo, ni havas liston de tipoj. Ekzistas signoj, kiuj stari por karakteroj. Do jen unu litero A, B, C, D. Tio povas ankaŭ esti interspaco, aŭ kiu povas ankaŭ esti nova linio karaktero. Tie estas entjeroj, kiuj estas nur nombroj, tutaj numbers-- aŭ entjeroj rather-- sed neniu glitpunktaj. Por glitpunktaj, ni havas glitpunktaj nombroj. Glitpunktaj nombroj estas nombroj kun decimalaj. Tiam estas sopiras, kiuj estas esence pli longa entjeroj. Vi rimarkos ke longa Estas 8 dum int estas 4. Mi ricevos por ke en dua. Tio estas ĉar sopiras povas enteni eĉ pli ol entjeroj int povas stoki. Duobla estas longa kaleŝego. Kaj fine, ni havas kordo, kiu estas tipo ke vi verŝajne uzita antaŭe. Se vi inkludas hashtag # includeCS50.h en via fontdosieron, Tiam vi povas uzi kordo tipo. Ĝi ne estas fakte konstruita en C. Estas paro aliaj tipoj ankaŭ. Sed jen estas la ĉefa ones kun kiun vi uzos kaj renkontas. C kiel, cetere mi menciis, ĉiun variable-- ĝi povas esti nur unu tipo kaj tipo nur. Tio estas ĉar C estas statike tajpitaj lingvo, kontraste dinamike tajpita lingvoj kie se vi kreas variablo vi povas ŝanĝi kio stokitaj en kiel vi irados laux via programo. Super tie dekstre flanko, mi havas la malsamajn grandecojn de tiuj tipoj de datumoj en bajtoj. Do karaktero estas 1 bajto. Jen 8 bitoj. Kaj tio signifas ke 8 bitoj ekzistas ok _0s_ kaj _1s_. Ni vidis tiujn demonstraĵojn en la unua semajno kun tiu duuma bulboj. Kun 8 bitoj aŭ 1 bajto, ni povas reprezenti nombrojn de 0 al 255. Dekstra. Se ĉiuj 8 bitoj 0 jen 0. Se la unua bito estas 1, tio estas la nombro unu, kaj tiel plu, la tutan vojon ĝis 255. Kaj tial por karakterojn vi povas havas esence ĝis 255 el ili, sed tio estas multe por kovri ĉiujn la karakteroj ni bezonas uzi. Por entjeroj, vi povas havi 0 kaj tiam vi havas 2 al la 32 minus 1. Tiuj estas kiom da opcioj vi havas por entjeroj. Dum longa, vi devos 0 al 2 al la 64 minus 1. Do vi havas multaj, multaj, pli ebloj por sopiras. Kordoj, jen demandosigno ĉar tio estas cliffhanger por poste. Yeah. Mi povus diri ĉies rande de sia sidloko, kiel kio estas tiu demandosigno? Ĝi estas cliffhanger. Ni eventuale kovri la grandeco de kordoj kaj paroli pli pri kordoj. Ĉar string estas reale unu el la trejnaj radoj ni surmetis en ĉi Kompreneble komence kaj tiam demeti poste sur, ĉar kordoj en C estas reale punteros character tabeloj. Sed denove, tio estas cliffhanger por poste. Antaŭ mi pluiru demandojn, komentoj, zorgojn pri tiu diapozitivo? BONE. Mi devas esti fantazia explainer. Ankaŭ kiam vi programado, vi tuj uzas tiujn telefonistojn. Vere simpla signoj kiuj povas fari simplajn operacioj, kun kiu vi estas probable jam tre konata. Ekzemple, sur la dekstra flanko, ni vidas aldoni. Aldoni, vi simple fari Plus signo. Kaj tial vi havu du variabloj x kaj y. Vi povas fari x + y en via kodo. Eble vi volas diri to-- vi havas la numeron 7 kaj 3, vi volas konservi ke en variablo nomata sumo. Vi povas fari int por la tipo, spaco sumo, la nomo de la variablo, = 7 + 3; Kion farus tiu vendejo en sumo? Iu ajn? Se mi havus en sumo = 7 + 3. Kio estus stokitaj en sumo? Vi povas simple krii ĝin. Publiko: 10. JASON Hirschhorn: 10! Tio estas ekzakte pravas. Kio pri en sumo = 7 - 3, Mi nur uzas tiun haltostreko signo. Kio tuj estos stokitaj? Publiko: 4. JASON Hirschhorn: 4. Sumo estas probable la malĝusta nomo por ke variablo, sed 4 estus stokitaj. Multobligi en C, uzu la eta Stelo rolanto vi ne uzas x. Dividi, uzu Antaŭen Slash ne la divido simbolo. Kaj al module, uzi la Elcento simbolo. Do diru mi volas vidi int z = 7% 3, kio estus stokitaj en z? Do, jen esence demandante kion module fari? Ĉu iu scias kio module faras? Yeah. y 4. Parolanto 1: Ĝi estas la cetero. JASON Hirschhorn: Estas la reston kiam vi dividas. Do 7 dividita per 3 estas 2 resto 1. Do 1 estus stokitaj. Vi faris subtraho, sed jen kiel ĝi funkcias. Tion la module operatoro faras. Ĝi prenas kelkajn dividas ĝin alia nombro kaj revenas al vi la cetero. Do denove, 7% 3 donas 1, ĉar 7 dividita per 3 estas 2 resto 1, kaj redonas la reston. Kio pri ni revenu supren unu paŝo al tiu divido signo. Se mi faris 7 / dividite per 3 faras neniu scias kion tio revenus? Parolanto 2: 2. JASON Hirschhorn: Kial 2 kaj ne 2,333? Parolanto 2: Mi pensas mallonga ekstere post la tuta nombro. JASON Hirschhorn: Do tio estas ĝuste dekstre. En C, se vi faras dividon de du entjeroj 7 dividite per 3, ĝi ricevas la respondon kiun tiukaze 2,3333 ĉiam kaj ĝi ekscias ke dekuma punkto kaj hakas ĉio ekstere post la dekuma kaj ĝi nur revenas vin 2. Do se mi faris 8 dividita per 3. Tio vere, ni scias ke reveni 2,666, sed hakas ĉio for ĉe la dekuma, detranĉas ĉion, kaj ĝuste redonas al vi 2. Do 6 dividita per 3, 7 dividita per 3, 8 dividite per 3, estas ĉiuj tuj revenos al vi 2. Ĉu iu scias, aŭ havas konjekton, rilate kiel mi povis reale preni la plena respondo se mi volas ke dekuma? Yeah. Antaŭen. Parolanto 3: Uzu kaleŝego? JASON Hirschhorn: Kion vi volas diri? Parolanto 3: Ĉar vi diris la kaleŝego estas por nombroj [inaudible] JASON Hirschhorn: Dekstra. Do, tio estas ĝuste dekstre. 7 estas entjero. Sed se mi volis igi tiun en glitpunkta nombro, Mi devus stoki ke kiel 7.0 ĉar la komputilo Estas vere stupid-- ni vidis, ke kun la PB kaj J example-- ĝi nur faros precize kion vi diros ĝin. Do se vi skribus 7, ĝi pensas, estas entjero. Se vi skribas 7.0, kvankam ni scias tion estas ekvivalentaj, ĝi traktas ke kiel Reela nombro. Do se vi faris 7.0 dividita per 3, aŭ dividita per 3.0, ĝi dirus, okej, nun ni pritraktas kaleŝegoj. Mi revenos al vi 2.333333 ĉiam. Sed ne vere ĉiam, ĉar kiel ni vidis ankaŭ en prelego, tiujn glitpunktaj nombroj ne estas ĝuste precizaj. Do se vi volas ke decimala, aŭ parto de tiu dekuma, tiam vi devas use-- unu el ili Devas esti glitpunkta nombro kaj la komputilo devas kompreni ke tiu estas glitpunkta vi estas pritraktas, ne estas entjero. Demandojn sur tiu tablo la dekstra flanko, ĝis nun? Aŭ via maldekstra flanko, via maldekstra, maldekstre flanko. Yeah. Parolanto 4: Dekstra. Por ĝuste kiel regula entjeroj, vi farus write-- vi devas skribi flosi? JASON Hirschhorn: Jes tiel. Nu, se vi volas krei ŝanĝiĝema jen kaleŝego, vi devas diri kaleŝego z egalas ion. Parolanto 4: OK. JASON Hirschhorn: Sed se mi volus faru 7 dividita per 3 kaj kunprenu tiun dekuma, Mi farus kaleŝego z = 7.0 / por 3.0; kaj kiu donus al mi la Flosanta punkto numeron. Parolanto 4: OK. JASON Hirschhorn: Se mi faris io kiel int z = 7 / per 3, kiu donus al mi entjero, ĉar tiuj estas ĉiuj entjeroj. Ĉu tio havas sencon? Parolanto 4: Jes. JASON Hirschhorn: OK. Granda. Aliajn demandojn pri tiu tablo? Vere? Mi estas tiom ekscitita. BONE. Do iuj aliaj aĵoj vi uzos, ofte en kondiĉoj aŭ bantoj, jenaj tipoj de operators-- tiuj tipoj de Buleaj esprimoj. Kaj kiel ni lernis, == estas kion vi uzi por kontroli ĉu du aĵoj estas egalaj. Do jen mi kontrolas se x == y, ni denove supozas ke x estas 7 kaj y estas 3. Do se mi skribis 7 == 3, kio estus ke revenos al mi? Ĉu tio estas vero aŭ falsa? Publiko: Falsa. JASON Hirschhorn: OK. Mi sentas kiel ĉiuj povas akiri ĉi tiu. Do ĉiuj, Kio volus ke revenos? Publiko: Falsa. JASON Hirschhorn: Falsa. Granda. 7 ne egala 3. Do 7 == 3 revenus falsaj. Vi havas ne egalsigno, do se mi Kontrolis 7! = 3, kio estus ke revenos? Publiko: True. JASON Hirschhorn: Vere. Bonege. Iu tre emfaza en la dorso kaj aprezi tion. Tiam vi havas malpli ol operatoro, malpli ol aŭ egala al operatoro, granda ol operatoro, pli granda ol aŭ egala al operatoro. Do unu pli prudento ĉeko. Se mi havis 7 estas pli granda ol aŭ egala al 3. Kio estus ke revenos? Publiko: True. JASON Hirschhorn: Vere. Jes. Ke malantaŭan ĉambron, malantaŭa flanko de la ĉambro, fantazia. Vi povas kombini tiujn esprimoj se vi ŝatas, tiel, kun logika KAJ kiu estas && Aŭ logika AŬ kiu estas || ||. Kaj do nun vi povas elprovi du aferojn together-- Ĉu tio amuza? Kial estas tiu stranga? Do se mi volus, mi povas diri estas 7 pli granda ol 3 kaj 2 estas malpli ol 4? Nu, se 7 estas pli granda ol 3, tio estas vera. 2 estas malpli ol 4, tio estas vera. Do tiu tuta afero revenus vera. Se mi testis 7 estas pli granda ol 3 kaj-- Mi nur pluki hazardaj nombroj here-- 4 estas malpli ol 2, nu, tio estas malvera. Tiel vera kaj falsa konsiston falsaj. Kaj vi povas okaz kaj vi kombini kiel multaj kondiĉoj kune kiel vi ŝatus. Ĉu iu havas demandojn, komentoj, konzernoj ĝis nun? Kaj mi vidas iu el vi prenante bildoj de mi en la ekrano, kiun mi dankas. Espereble, ĝi ne Snapchat. Espereble, ĝi estas por viaj notoj. Sed ĉiuj tiuj estas irantaj esti havebla enreta. Do vi ne devas preni bildojn de tiu. Kiel mi menciis, ĉiu Estos disponebla online por vi. BONE. Mi estas proksimume akiri private, same faras neniun volas diri ion antaŭ tio okazas? Demandoj? [Intermetante VOĈOJ] JASON Hirschhorn: Ho silentu. Vi uloj estas tro bela. BONE. Mi tuj etikedi eksteren. Ni iru. ANDI PENG: Ni iras fari maloportuna mic ŝanĝo nun. JASON Hirschhorn: Mi estas tuj prenos ĉi ekstere. ANDI PENG: Taksi la apogon, knaboj. Ĉu vi povas aŭdi min? Ĉu tio estas bona? Perfekta. Bela. Lasu min nur Tuck ke en. BONE. Do, mi estas faronta kiel giganto informo dump sur vin uloj aktuale. Kaj neniu maltrankviligas ajn se vi estas Ne sekvante ĉiun malgrandan linion de kion Mi volis montri al vi. Kiel Jason diris, ĉiu estas tute en linio. Nur ni tuj provos enkonduki ĉiuj la konceptoj kovrita en iuj el tiuj diapozitivoj. Do nur sekvi kune. Neniu ĉagrenoj se vi ne komprenas ĉio; Tamen, se en iu punkto vi sentas perdita, levu mano, ni haltos, sen ĉagrenoj. Malvarmeta. Do mi opinias ke io Davido havas jam ia menciita en prelego ilin Jason ia aludis al hodiaŭ do biblioteko estas. Do en programado, ni havas tion nomis bibliotekoj. Kie, esence, ĉiuj ili estas nur aro de funkcioj, kiuj estas esence nur kodo kiu estas jam verkis iu alia ke ni povas ĉiuj uzi ene niaj programoj. Do kiel faras normalan biblioteko laboro, ĉu ne? Vi eniras la bibliotekon pordo. Vi havas ĉiujn tiujn libroj oni povas tiri el kaj vi povas aliri informojn ene de tiuj libroj. Sama afero en programado. Vi havas bibliotekon kiu havas jam estis skribita de aliaj personoj. Kaj la vojo ke vi povas, kiel programisto aŭ studento, povas konsenti ke biblioteko Estas tra hashtag #include. Ekzemple, en C ni havas tri C-- la plej komune uzata tri C-normo bibliotekoj la enigo / eligo biblioteko, la kordo biblioteko, kaj la matematika biblioteko. Do ene de via unua paro problemo aroj, tiuj estos la tri ke vi unuavice uzas. Do kiel David jam klarigis en prelego, la normo / S biblioteko, aŭ la norma enigo / eligo biblioteko faras precize tion. Ĝi permesas vin: en via kodo, enigi ion de la uzanto kaj eligo ke al la ekrano, esence presi ĝin al la ekrano. Kaj do ajna momento vi uzas ajnan funkcioj, ekzemple la funkcio printf () kiu Ni tuj transiros la sekva diapozitivoj, certigi por inkludi la normo / S biblioteko aŭ alia vi ne tuj povos uzi la printf () funkcio. Ĉar vi, kiel la programisto neniam fakte skribis ke funkcio, vi nur uzante iu alies kodon ene vian propran kodon. Ĉu tio sencon ĉiuj? Malvarmeta. Kaj tiam ni esence akiri sur la string.h biblioteko kaj la math.h biblioteko, .h simple signifas bibliotekon, aliaj bibliotekoj kiujn vi instruos vin eventuale esti uzanta ene de via kodo. Tamen, por celoj de tiu biblioteko, ni ankaŭ have-- de ĉi class-- ni ankaŭ havas kion oni nomas la CS50 biblioteko, cs50.h, kie ni, por via legado kreis multaj gravaj kaj utilaj funkcioj. Por ke vi kiel programisto povas piggyback off kion ni jam skribis por ke tiu funkcia havebla al vi por via uzo. Mi estos kovrante kelkajn la funkcioj komune uzata, sed scias, ke tiuj estas ĉiuj googleable rete. Laŭvole, elsxiros la CS50 biblioteko kaj tiam vi havas ĉiujn funkciojn tie. Yeah. Parolanto 5: Do se vi ne estis uzante la programaro kiu estas provizita al ni de la klaso, faras ke signifi ni devus elŝuti kaj trovi tiun kaplinion dosieron mem kaj rakonti la komputilo kie estas? ANDI PENG: Granda demando. Ekzakte. Do estas kvazaŭ se vi ne estas fizike ĉeesti biblioteko, ne estas vojo por vi vere iru kaj aliri ĝin. Do la sama afero kun programado en C, oni devas certigi ke vi uzas nian aparaton ĉar la biblioteko estas jam estis integrigita en ĝi. Kaj tiam kiam vi hashtag #include, la biblioteko tie. Yeah. Bona demando. Ĉiu bona? Malvarmeta. Bone. Do ni tuj batis, esence, kio estas la unua funkcio, ke Ni kiel programistoj tuj estos uzanta ene de nia kodo. Tio nomiĝas la printf () funkcio. Do, printf () funkcio, kiel mi jam diris en la lasta slide, estas inkludita en la norma / S, norma enigo / eligo, biblioteko. Do certigi ajn vi using-- ho, lasu min ekpreni la lasero pointer-- kiam ajn vi uzas la printf () funkcio, vi devas inkluzivi la normo / S biblioteko aux, kiam vi kompili, vi tuj ricevas eraron ĉar la komputilo similigxos, Ho, mi ne scias kie printf () estas, vi ne diras al mi kie printf () estas. Nu printf () estas inkludita en la normo / S, do kiam oni uzas printf (), certigi havi tiun linion supre via kodo. Do ekzemple, printf () tie estas funkcio. Ĉiuj faras estas presi ion ene la parantezoj al la uzanto. Ĉu iu ajn ŝatus preni ponardopiko ĉe kio tiu linio de kodo dekstra tie tuj elprinti? Do, la respondo estas sur la ekrano. Iu ajn? Verdi: La fundo. ANDI PENG: Verdi, kial vi ne iras antaŭen kaj diri la tutan deklaron? VERDI: Saluton, mia nomo estas Andi, kaj mi estas 20 jaraĝa. ANDI PENG: Ha, belega. Do en tiu linio ni tuj presi, Saluton, mia nomo estas Andi, kaj mi estas 20 jara, kiu estas fakte vera aserto. Sintakso. Do kelkaj sintaksaj aferoj kiuj vi uloj volas certigi vin scias. Citiloj. Citiloj rakonti la komputilo ke ĉio ene tuj estos presitaj. Ĉio ene tedaĵo nur estu precize kiel vi tajpas ĝin, krom komune fine, ni tuj volas inkludi a hash-- ho sorry-- haltostreko n. Do haltostreko n. Ĉu iu volas preni divenon ĉe kion tiu faras al nia kodo? Yeah. Parolanto 6: Metas ĝin sur nova linio. ANDI PENG: Ekzakte. Do ĉiuj ĉi faras estas permesi ajn okazas post tiu, post tiu deklaro, esti presita al nova linio. Por ke kiam vi skribas vian kodo vi ne hazarde havas aferojn najlita sur la fino ke vi ne volas. Ke ĉiu ricevas bonorde presis unu linio kaj tiam ni komencos la sekva linio. Ĉu iu memoras kion tio punktokomo faras kiam ni kodigo? Yeah. Parolanto 7: Statement. ANDI PENG: Pardonu? Parolanto 7: Ĉu ĝi finos la deklaron? ANDI PENG: Yeah. Do en C, aŭ ajna programado lingvo, la punktokomo signas la finon de programado linio. Do ekzemple, en la angla ni uzas periodo diri, ho tiu estas la fino de frazo. En programado, sama afero, ni havas punktokomo por signi la finon de linio. Ofte, kiam oni estas komencante plani, vi konscias vin forgesu aldoni punktokomo kaj poste vi provas kuri vian kodo kaj ĝi ne funkcias. Kaj vi estas kiel, Ha, mi ne faras scias kial, gxi povus funkcii. Ŝancoj estas vi verŝajne forgesos punktokomo aux krampo aŭ io ie. Do, tio estas grava memori. Malvarmeta. Bone, spektaklo de manoj, kiom multaj homoj tie havas iam prenita AP Computer Science aŭ planita en Java antaŭe, iam? BONE. Lovely. Tio ne validas tiam, sed en Java, vi havas ion nomatan System.out.println kiu ne ekzistas en C. Do en C, kiam ajn vi deziras aldoni en variabloj en ion vi volas presi, ekzistas specifa sintakso ni tuj uzos. Tio nomiĝas la placeholding-- esence ni aldonu anstataŭaĵojn modloko de la entjero aŭ la ŝanĝiĝema ke ni volas presi. Do kiel vi uloj povas vidi ni inkludis nova biblioteko header file tie. La CS50 biblioteko. Kaj enhavita ene ke CS50 biblioteko estas komuna funkcio ni uzos en nia kurso nomita GetInt (). Ĉu iu volas preni ponardopiko ĉe kio GetInt () eble povas esti faranta. Spektantaro: [inaudible] ANDI PENG: Pardonu. Ne povis aŭdi vin. Maddie, iu ajn. Maddie: Ho, ĝi instigas vi por entjero. ANDI PENG: Ekzakte. Do tiu funkcio, alia funkcio jen jam estis skribita de iu alia ke ni povas vokas nun. Ĉiuj estas estas instigas la vi, la uzanto, enigi kion ajn vi volas, kiel la kodo kuras kaj ĝi stokas whatever-- tiukaze ni GetInt () - ing, por ke signifas ke ni estas obtención entjero. Kaj ni tuj stoki ke en alia entjero ke ni ĵus faris nomita aĝo. Kiuj faras sencon por ĉiuj? Malvarmeta. Do nun ke ni stokas ĉi entjero, ke ni instigis de la uzanto, en tiu variablo, ni kreita de tipo int nomita aĝo, ni povas antaŭeniri kaj loko ke en nia printf () funkcio. Do la sintakso kutime por printf () estas ke kie ajn en via reala fizika linio vi volas inkludi ke entjero, vi faros tion simbolo Dekstre, la procento simbolo, kun la tipo de variablo kiu vi volas. Do en tiu kazo aĝo estas entjero. Do vi tuj inkluzivi % i ĉar ĝi estas entjero. Kaj tiam post via deklaro, vi tuj fari komo kaj la nomo de la variablo. Do jen, ni tuj presi eksteren, Saluton, mia nomo estas Andi, kaj mi malplenan jaroj. Hashta-- aŭ, sorry--, aĝo kun kiom mi enigo. Do se mi enigo 20 cxar mia GetInt () ĉi tie, estus presi la ĝusta sama afero. Sed, se mi volus enigo ion alie, kiel eble 40 aŭ 45, tiam vi vidus ke reflektis laŭe en la kodo. Do tiu estas ekzemplo de iu en kio ĝi presas el kaj rigardas al vi kvazaŭ ĝi estas la sama afero, sed sub la kapuĉo de la komputilo ekzistas reale tre malsamaj aferoj okazas. Malvarmeta. Bone. Do kio se ni volas multnombraj variabloj? Sufiĉe facila. Sama afero. Ni ankaŭ havas novan funkcion tie nomis GetString (), Ankaŭ inkludita ene de la CS50 biblioteko, ke ĉiuj faras estas instigas la uzanton por kordoj, kiuj estas nur aro da karakteroj, tiel kiel frazo aŭ kiel nomo. Do en ĉi tiu kazo, ni havus du anstataŭaĵojn% s por kordoj kaj% i por entjero. Kaj ni tuj sekvi ke per la du variabloj Ni volas inkludis, en la ordo ke ili aperas en la frazo. Do ekzemple, mia nomo estas malplenan, mi volas nomon, tiel mi tuj havos la nomon unue. Kaj tiam poste, mi volas aĝo, volas havi aĝon dua. Kaj do, se mi volus enigo, Saluton, Mia nomo Andi, kaj mi estas 20 jaraĝa. Se mi inputted Andi kaj 20, la ekzakta samo presi; Tamen, nun ni havas du stokas variabloj de nomo tiel kiel int. Yeah. Parolanto 8: Cxu estus kapabla kuri se vi ŝaltis Nomo kaj aĝo ĉe la fino de tiu? ANDI PENG: Yeah. Tio estas vere bona demando. Do longan rakonton, ne. Ĉar nomo kaj age-- kio tipo de variablo estas nomo? Parolanto 8: String. ANDI PENG: Kaj kion tipo de variablo estas aĝo? Parolanto 8: Entjeraj. ANDI PENG: Do jen ni havas lokokupilo por arĉinstrumenta kaj entjero, dekstra? Do se vi estus ŝanĝi tiujn, la komputilo ne tuj scias. Ĝi tuj kontroli por kordoj, kaj se vi provas doni ĝin int, ĝi tuj estos kiel atendi mi estas konfuzita, vi rakontis al mi mi estus allotting memoro por int. Kaj ĝuste ĉi tie, kiam ĝi atendas entjero kaj vi donos al li nomon kaj ŝnuro anstataŭe, ĝi estas ankaŭ tuj estos tre konfuzanta, ĝi ne kuros ekzakte kiel vi bezonas ĝin. Do jen, enoficigante kaj sintakso estas tre grava por funkciado kodon. Ĉiu bona? Yeah. Maddie. Maddie: Jen, mi sciis ke ni rigardis ĉe ekzemplojn en klaso, kie ili demandas kio estas via aĝo, kio estas via nomo. Tie, estus ke estu doesn't-- se ni kuras ĉi kodon, ĝi ne postulus ke? Sed vi simple enigo du nombroj kaj tiam estus kuri tiel? ANDI PENG: Jes, ĝuste. Do se vi deziras por ĝi al montriĝo, bonvolu indiki vian aĝon, vi povas simple aldoni printf () funkcio kiu diras, Bonvolu eniri vian aĝon, super ĝi. Tio estas bona demando. Yeah. Parolanto 9: Do, jam estus inkluzivita en GetInt () [inaudible]. ANDI PENG: Ne, fakte ne. Do ĉiuj ĉi faras estas nur stimulanta malplena ekrano al la uzanton enigi io. Se vi volas ĝin, se vi volas ĝin por presi el iu kiu rakontas la uzanto kiel, bonvolu doni al mi via aĝo, tiam vi devus printf () kiu mem. Ĉar ĉiuj uzas tiun funkcio por malsamaj aferoj, vi povus stoki aĝo, vi povus stoki adreson, vi povus stoki telefonnumerojn. Kaj do ĝi estas vere ĝis viaj infanoj 'individuaj uzoj por kio vi volas diri. Yeah. Parolanto 10: Do, nur klarigi, kie ĉu vi enigo la nomo kaj la aĝo tiel ke ĝi aperas en loko de% s? ANDI PENG: Kiel en la uzanto? Parolanto 10: Jes, kiel kiel mi fari it-- kie mi metis Andi, kaj kie mi metis 20? ANDI PENG: Yeah. Do se vi estus efektive kuri ĉi kodon, Mi ne reale kurante la kodo, tio ĉi estas nur tie nun. Se mi estus kuri la kodon, mi volus kompili la kodon, fari la dosiero, kuri la kodon, kaj tiam ekzistus nur du spacoj por mi enigi ĝin. Yeah. Vi uloj vidos kiam vi ludas ĉirkaŭe kun la kodo mem. Bone ni tuj movas en la venontan sekcion de kio ni estos kovrante hodiaŭ. Ni tuj iras super kio kondiĉa deklaroj estas. Do se vi infanoj memoras kaj memoras de prelego, kondiĉa deklaroj, ili cxiuj estas aro de instrukcioj por la komputilo en kio se certa kondiĉo estas vera, vi ekzekuti la kodo ene de tiu kondiĉo. Do en Scratch-- esence la granda temo de hodiaŭ estas ke vi infanoj havas jam tutan vidis la logikon malantaŭ ĉio ke ni kovranta. Kaj ĉiuj ni faras estas tradukante ion kiu estis tre intuicia en Nulo, kaj malmola kodigo ĝi en la sintakso ni uzos por la klaso kiu estas C. Do logike, ĉio ĉi bloko estis estas ke koderon prava. Yeah. BONE. Ni ankaŭ eniras en se ... alie deklaro kiu estas simple aldonita tavolo de komplekseco al la se aserto kie la komputilo prenas rigardi ĉi kaj vidas, se tiu kondiĉo estas vera, do ajn la interno de ĉi tiuj du krampoj, else-- do ia kiel la defaŭlta se ĝi ne plenumas la condition-- fari tion. Estas kiel forko en la vojo. Se pluvas ekstere, mi metis sur pluv jakon, alia ion alie mi ne surmetis pluvo jako. Ĉu tio logiko sencon por cxiuj? Malvarmeta. Bone. Do kiel ekzemplo de malmola tiu ke ni vidus en C Estas kvazaŭ mi volis krei ŝanĝiĝema nomita hejmtasko horoj. Kaj se hejmtasko horoj estas malpli ol kvin, mi diras Vivo estas granda. Ĝi estas mirinda. Tamen, diri La lukto estas real-- Kiu estas kio ni ĉiuj sur ĉi lundo posttagmezon supren Scienco Monteto estas verŝajne faranta rajton now-- Spektantaro: [Ridanta] ANDI PENG: Ili maniero ni estus, dankon por tio. La vojo ni havus hardcode tiu en C estas if-- ni supozu ni jam havas variablo de tipo int vokis hejmtaskon horoj tie. Se hejmtasko horoj estas malpli ol kvin printf (), Vivo estas granda. Memoru konservi / n ĉar Vi volas novan linion post. Else presi, La lukto estas reala. Ĉu ĉiuj komprenas kiel Mi transitioneis de tiu bloko en tiu bloko de kodo? Malvarmeta. Bone. Do nun ni tuj rigardu multoblaj Se deklaroj entute. Do ni supozu la celo de tiu programo Estis ni instigas la uzanton por grado. Ni Prompt uzante GetInt () por grado, kaj ili eniga valoro, kaj vi volas montri kio tipo de grado ili akiris. Do se mi estus desegni programo, mi signifas tipe en ĉiuj niaj okuloj, 90-100 estas A, 80-90 estas B, kaj tiel plu kaj tiel plu. Kio estas malĝusta kun tiu koderon ke ĝi ne estas fari kion mi volas fari. Yeah. Parolanto 11: Ili havas malsupraj limoj, sed ili ne havas superaj limoj. ANDI PENG: Ekzakte. Ĉu ĉiuj auxskultu, kion ŝi diris? Tie tuj estos supra limoj, sed neniu malsupraj limoj. Pardonu, revés, malsupra limoj, neniu superaj limoj. Do vi ŝatus preni ponardopiko ĉe dirante kio estus presita sur tiu ekrano se mi kuros ĉi tiu kodo. Parolanto 11: Eraro? ANDI PENG: Eraro? Granda diveno, ne tute pravas. Ĉu iu havas alian ponardopiko? Yeah, Aaron. AARON: Se vi metas en io pli granda ol 90, ĝi montrus ĉiujn kvalifikojn Vi akiris. Ĝi montrus vin akiris A, vi havas B, vi ricevis C. ANDI PENG: Yeah. Tio estas ekzakte pravas. Do, tio estus mirinda. Tamen, ili estas reciproke ekskluziva, mi pensas. Se mi kuras ĉi koderon. Kaj tiam ni simple diri, mi inputted la grado de 95. Do 95 estas nun stokitaj en la int nomata grado. Kaj do C estas lingvo kiu kuras supren supre sube, tial ĝi tuj ĉiam kuri ĝis malsupro. Do ĝi tuj venas tie, legu se grado estas pli granda ol aŭ egala al 90, printf () vi ricevis A. Granda, mi havas 95, tio estas pli granda ol 90. Ĝi tuj presi, Mi dungis A. Ĝi tuj preni rigardi ĉi se, ĝi tuj diru, bone 95 estas ankaŭ pli granda ol 80, ĝi tuj presi vi ankaŭ havas Got B ekkrion markon, kaj tiel plu kaj tiel antaŭen. Do kiel ni povas ĉiuj vidi, tio estas ofta cimon kiu povas okazi kiam ni estas skribi kodon rigardi ekstere por. Ĉiu, demandojn sur kial tio okazis? Granda. BONE. Nu do kiel ni ripari tiun, estas evidente la logika sekva demando. Nu, ni havas tiujn belajn aĵoj nomata se alia se alie se alia deklaroj. Do vi povas vidi, se vi volis ŝanĝi tiun problemon, vi volis fari ĉiun de la kondiĉoj estas reciproke ekskluzivaj, vi devus aldoni alian ... se aserto. Kaj tiuj kompreneble pensas de ili kiel ŝtupetarojn, aŭ kiel ŝtupoj sur la ladder-- vi povas aldoni kiel multaj el tiuj kiel vi deziras por kiel multaj kondiĉoj kiel vi volas. Do jen, se mi inputted grado esti 95. Se gradaj estas pli granda ol 95, printf (), mi atingis A. Granda. Ĝi tuj vidas alian ... se kaj ĝi tuj scias, Oh ne, Mi jam plenumis unuan alie. Mi know-- aŭ la unua if-- mi scias ke Mi ne devas rigardi iujn el tiuj ĉar unu el ili jam estis veraj. Do ĝi estas tuj kuras el supro malsupren. Tuj kiam la unua estas vera, tiam ĝi tuj salti super ĉiuj ceteraj de la alia ... oj. Ĉu tio havas sencon? Do, tiamaniere vi havos malsamaj niveloj de kontrolanta kaj tuj kiam unu el ili estas falsa, la resto estas same, ili ne eĉ kontroli. Malvarmeta. Bone. Do tiu estas ekzemplo de malsama speco de kondiĉa deklaro ni vidos malpli ofte, sed ni vidos ilin kaj uzi ilin. Kaj ili estas ofte pli efika por certaj kazoj. Do ni havas kio nomiĝas ŝaltilo deklaro. Do antaŭ ni kovris kio estas la alia deklaro, oni se ... alia aserto. Tie, ni havas kio estas nomita ŝaltilo deklaroj. Do kiam ni uzu ŝaltilo deklaroj estas la klavo? Do en ŝaltilo deklaro, vi kutime, tipe, fakte vi povas nur enigo entjeroj por via ŝanĝiĝema ke vi estas kontrolanta. Do, se mi volis kontroli por vidi se certa number-- ekzemple grado, se mi havas 90. Mi volas ŝin vidi se tio estas A, B, aŭ C. Mi povus havi kazo tie. Tamen, la kazo devas esti alia konstanto. Do en tiu senco, la ŝaltilo deklaro povas nur kontroli por egaleco de du nombroj. Ĝi ne kontroli por io alia. Do jen io esti tre zorgema pri kiam vi uzas tion. Do jen, se mi volis kontroli por vidi se mia grado de 90 egalas al 90 aŭ 80 aŭ 70 aŭ 60, kaj tiam presaĵo la responda grado, Mi estus kapabla skribi ke en ŝaltilo deklaro. Do ĝi tuj venas tie, ĉeko estas tiu entjero egala al tiu konstanta? Se ne, ĝi tuj salti. Ĉu egala al konstanto du, kaj tiel plu kaj tiel plu, ĝis vi batis la defaŭlta, se neniu el ili estas egalaj. Apenaŭ unu el ili pretas esti egalaj, ĝi tuj fari tion linio de kodo kaj rompiĝo. Kio signifas ĝi tuj trafis ke kuri, rompi, kaj nur tute preterpasi al la fundo de la kodo. Do en tiu senco la speco de funkcioj kiel se alia se alie se aserto. Do jen konkreta Ekzemple por vi uloj. Do ni supozu ke mi volis krei variablon nomis jaro fondita. Mi volas instigi la uzanton por enigo La jaro kiun ilia lernejo estis fondita. Do mi kreu ŝaltilo deklaro tie. Kaj ni simple diri, mi enigo 1636. Tiu kodo tie tuj vidos ŝaltilo jaro fondis kio egalas 1636. Ĝi tuj vidos kazo 1636, ho tiuj estas egalaj, printf () Should ne estos en tiu lernejo ĝis nordo? Ĉar ni supozas ili ne iri tien se ili iras al Harvard, rompi kaj preterpasi al la fino. Se mi estus enigi 1701, kiu Mi supozas ni ĉiuj farus enigo, ĝi preterpasi ĉi kazo, venu malsupren al kazo du kiu estas 1701, kaj presaĵo Bonvenon Yale! Rompi, preterpasi al la fino. Alie vi verŝajne prenas tiun kurson rete en kiuj case-- timinda bonvena al Yale-- ĝi tuj iru al la defaŭlta print, Saluton Interreto! Kaj rompi. Yeah. Parolanto 12: Ĉu vi uzas alia anstataŭ defaŭlte ekzistas? ANDI PENG: Ne, ĉar la maniero, ke tiu tuta funkcio ŝaltilo estas konstruita, la sintakso vi devas uzi estas kazo kazo defaŭlta. Estas kiel la se alie se, ĉi unu estas kazo kazo defaŭlta. Yeah. Parolanto 13: Vi eble jam diris tion, sed vi povas havi pli ol du kazoj? ANDI PENG: Yeah, vi povis havi tiom da kazoj kiom vi deziras. Pensu pri ĝi kiel ĵus ŝatas senfine aldoni plu. Parolanto 14: Se vi interŝanĝita 1701 kun 1636, ĝi ne vere fari diferenco pravas? Ĝi simple tuj estos kontrolanta ĝin. ANDI PENG: Tio estas vere bona demando. Kaj ni tuŝas sur tiu poste, sed nur scias ke estas la ŝaltilo aserto infinitely-- estas pli efika ol ĝi kaj se alie se ĉar ĝi operacias uzante malsama tipo de funkcio kiu permesas, esence, je justaj salti rekte al la kazo vi devas esti je. Yeah. Parolanto 14: Cool. Dankon. ANDI PENG: Yeah Parolanto 14 Kaj vi ne povis fari kazoj kiel kaj superas. ANDI PENG: No. Do, tio estas kio limiganta pri la ŝaltilo deklaro estas ke vi havas havi konstantoj nur, nur entjeroj. Yeah. BONE. Do tiu estas iu kiu vi uloj renkontos malpli ofte de, sed mi nur volis enkonduki ĝin en kazo. Ni havas ĉi tie kio estas nomiĝas triargumenta operatoro. Kie esence, ĝi estas nur kiel se aserto kompilita en unu linion. Nu, mi iros sur la venonta linio, la sekva paĝo, ĉar ĝi estas pli facile vidi. Do ni ĉiuj vidis tiun rajton? Tiu estas sufiĉe facile sekvi. Se mi volis fari variablo nomata ŝnuro nomita s, se iu nombro Mi donos ĝin estas malpli ol 100, mi volas atribui malalta al la kordoj, alie mi volas asigni altan. Ĉi tie estas faranta la ĝusta sama afero tiuj ok linioj de kodo faras. Do ĉi tie mi volas krei ŝanĝiĝema kordo. Kaj tiu estas la kondiĉo mi kontrolanta, se nombro estas malpli ol 100, tiam vi atribuas la valoron de malalta, alie atribui la valoron de alta. Tiuj diapozitivoj estos enreta, sen ĉagrenoj se vi infanoj ne ricevas tiun malsupren. Tiu estas nur pli simple, pli efika maniero de skribado kodo. BONE. Do nun ni tuj eniri kio, por multaj homoj similas tre, tre konfuza afero pensi unue. La maŝo sekcio. Do hodiaŭ, ni tuj parolos pri tri tipoj de cikloj. Ni tuj komencu per momenton buklo, tiam paroli pri fari dum buklo, kaj tiam paroli pri por bukloj. Do esence, por la pli vidaj lernantoj tie, ni havas, esence, grafika bildigo de kia tempo buklo faras. Do en programado, vi komencus kaj eniras la buklo je certa punkto. Vi kontrolu kondiĉo. Kaj se la kondiĉo estas vera, vi ekzekuti la kodon ene. Kaj vi revenos ĉirkaŭ kaj vi kontroli. Se ĝi estas ankoraŭ vera vin teni kuranta tiun kodon ĉirkaŭ kaj ĉirkaŭ en buklo. Tamen, la dua kiu la kondiĉo igas falsa, vi tuj rompu kaj fini la buklo. Kaj tio estas esence la sintakso vi tuj uzos. Dum certa kondiĉo estas vera tion fari, se ĝi ne estas vera, vi tuj salti al la fino kaj movi antaŭen kun via programo. BONE. Ĉu iu havas ekzemplon sur kio povas potenciale okazi se mi provas kuri ĉi peco de kodo? Parenteze, SAJ-- jen Scaz, Andi, Jason-- ni subskribi ekstere niaj retpoŝtoj, Amas, SAJ. Jen ni. BONE. Ĉiu havas ekzemplon, aŭ havas ideon sur kion tiu devus presi? Speco de lertaĵo demando. Do jen, memoru la kondiĉo ni estas kontrolanta por estas dum vera. Do dum tiu estas vera, ĝi estas presigos, mi amas SAJ! Ĉu estas ajna punkto en kiu ni preferus ŝanĝi tion al io alie? Ne, ĉu ne? Do tie, ni havas renkontis kio estas probable tuj estos bugging multaj viaj programoj, la senfina buklo. Vi trovos ke se vi kuri ĉi peco de kodo, ĝi estas nur tuj daŭre printado, mi amas SAJ! Dum ni dankas la apogon, ni ne volas vian komputiloj kraŝi ĉar vi teni presado Mi amas SAJ! Do bonvolu, bonvolu, eviti la senfina buklo ĉar ĝi estas neniam iranta taksi al falsa kaj vi neniam iras forlasi la buklo. Kaj vi tuj esti suĉita eterna. Malvarmeta. BONE. La dua tipo de buklo ni parolos pri hodiaŭ estas la do dum ciklo, do dum ciklo. Kaj ĝi nomiĝas do dum buklo ĉar vi havas do kaj tempon. Do tiu estas sufiĉe simila al momento buklo, sed iomete malsama. Ĉi tie, vi tuj faros ajn estas interne de tiu dum certa kondiĉo estas vera. Do se mi estus C kaj la komputilo mi estas kurante malsupren ĉi peco de kodo, Mi rigardu la pinton. Mi iros al C, mi diras faros tion. Kaj tiam mi kontrolu, dum tiu Verdire, mi devas ripeti ĝin. Sed dum ĉi tio estas falsa, tiam mi antaŭeniĝi kaj mi neniam reiros al tiu buklo denove. Ĉu iu ajn preni ponardopiko je kio la diferenco inter ĉi buklo kaj la ni nur rigardis estis preskaŭ. Yeah. Parolanto 15: La kondiĉo venas post anstataŭ antaŭe? ANDI PENG: Ekzakte. Do ŝi diris la kondiĉon venas post, ne antaŭe. Finfine, la diferenco inter tio kaj la dum buklo estas ke vi nur tuj faros ajn estas interne tiun nekonsiderante ĉu via kondiĉo estas vera, kaj tiam kontroli la kondiĉo. Do en ĉi tiu kazo, vi estas always-- tiamaniere, vi ĉiam certigi ajn estas interne kuras almenaŭ unufoje antaŭ kontrolanta vidi se vi volas ĝin kuri denove. Kaj tie estas ekzemplo de kiam ni uzus ĝin. Do ekzemple, se mi volis havi variablon de tipo int nomita aĝo, kaj mi volas suflori la uzanto por lia aĝo, Mi tuj faros printf () Kio estas via aĝo? aĝo = GetInt (), kiu estas instigante la uzanto. Kaj iuj homoj estos vere ĝena. Kaj vi ne volas cimoj en via programo de iu inputting kiel, ho mi estas negativa 4 jaroj aŭ kion ajn. Tiaokaze, se ili faros tion, tiu taksas al vera, kio signifas ke mi tuj havas plu iri reen kaj faras tion. Do tiu tuj konservi re-instigante la uzanto doni vin kiel vera aĝo nombro kaj ĝi estas tuj observu revenanta kaj redoing ĝi ĝis ili transdonos vin vera aĝo pli granda ol unu, aŭ ne nulo. Do aludo, aludo. Tio estos tre, tre utilaj ĉar unu el via pset problemojn. Yeah. Parolanto 16: Whoops, pardonon. ANDI PENG: Yep. Parolanto 16: Ĉu ekzistas, ne esti asshole, sed- ANDI PENG No worries. Parolanto 16: --are tie malsamaj reguloj ĉi tie, aŭ ĉu vi simple forgesas meti la citaĵon? ANDI PENG: Oh Yeah. Pardonu, tio estas tute mia malbona. Tio estis sendube laŭsupoze citaĵo. Bonan kaptaĵon. Tio estus ne kuru. BONE. Do la lasta tipo de buklo ni parolos pri kaj, finfine, speco de la plej komplekso estas la por buklo. Ne maltrankviliĝu, se vi ne scias kion tio signifas. Estas bela konfuzanta ĉe unua. Ni transiru ekzemplon. Ĉiuj kiuj okazas en por buklo estas ke vi havas tri deklaroj ke vi tuj inkluzivi. Do por iu afero, vi estas tuj pravalorizi variablo. Vi tuj aldonu la kondiĉon kiu ĉi buklo gardos kurante. Kaj tiam, ĉe la fino de la buklo, vi tuj ĝisdatigi ĝin. Vi povas ĝisdatigi la variablo ke vi volas konservi trako de. Do ni kutime uzas por bukloj ĉar kiam ni volas kuri buklo por certa kvanto de tempoj kaj ni jam scias, Ho mi deziras tiu buklo ekzekuti kiel 10 fojojn tiam vi do-- mi iros ekzemplo sur la sekva paĝo. Do jen ekzemple, en Scratch, se vi deziris ion ripeti 10 fojoj, ĉiuj vi devis diri estis, Ripeti 10 fojoj mi amas SAJ! kiu estas pli akceptebla show de subteno por ni anstataŭ la senfina buklo. Tie, kiel vi farus transiro al C kaj registran kiu estas por int-- Mi tuj krei aŭ deklari variablon de tipo int nomis i. Mi tuj pravalorizi ĝin al 0, tiel mi = 0; kaj ĉi tiu tuj estos mia kondiĉo. Do mi estas malpli ol 10. Kaj tiam ĉe la end-- la lasta deklaro vi estas tuj havos estas la ĝisdatigo de kio okazas al la variablo i fine de via por buklo. Do ĝi estas speco de konfuza, ĉar malsamaj partoj de ĉi tiu linio okazas je malsamaj tipoj de la buklo. Sed mi iros super _pseudocode_ ekzemplon de tiu kaj eble klarigi tiun nur iom pli bone. Do jen. Tio estas la buklo ni ĵus vidis. Esence en _pseudocode_, kio okazas en tiu programo, Estas unuan mi kreanta Mi, la inicialización ĝin al 0. Mi kontrolas, ĉu mi estas malpli ol 10, en kiu kazo unuafoje estas ĉar 0 estas malpli ol 10. Tiel la buklo tuj kuri. Kaj tiam mi tuj presi tiu linio. Kaj poste fine de tiu linio, dekstra tie, mi tuj faru pliigo i, i ++, ĉiuj kiuj rimedoj estas pliigante ĝin por oni. Do mi estas nun 1. Ĉar ĝi estis iam 0, se mi pliigo ĝi estas, ĝi estas nun 1. Kaj tiam mi tuj reiros al la komenco de la iteracio kaj mi kontrolu la kondiĉo. Estas la kondiĉo ankoraŭ vera? Jes, 1 estas ankoraŭ malpli ol 10. Do ĝi tuj presi tiu fojo, iru kaj tiam pliigo i, kaj kontroli kondiĉe senĉese, kontinue, ĝis vi finfine akiri al la punkto kie mi estas 10. Vi tuj presi tiu 10 fojojn kaj tiam mi tuj egalos 10. Vi tuj kontroli la kondiĉo. Estas 10 malpli ol 10? Ne, tio estas malvera. Tiel, ĉi tiu buklo ne tuj kuri, ĝi tuj rompos, kaj vi tuj daŭrigu per via kodo. Do kiel vi uloj povas vidi, ĉi Estas vere granda ekzemplo de buklo vi povas plani en tiu kuras por specifa kvanto de tempo. Cxiu klara? Yeah. Parolanto 17: Kion pri pliigo eksponente, ĉu malsamaj kodigo? ANDI PENG: Vi can-- ni iros super tiu en la sekva glito. Bona demando. Ĉu anyone-- antaŭ mi movos on-- iu ajn konfuzita, ĉar tio estas vere malfacila koncepto. Neniu ĉagrenoj, se you're-- OK. Malvarmeta. Bone. Nur ĝenerala glito. Tiu dum buklo faras la ĝusta sama aĵo la por buklo estis. Ĝi simple skribita malsame. Vi uloj povas peruse la diapozitivojn ĉe via komforto poste sur. Sed ĝuste scias ke ekzistas multoblaj manieroj de skribi la samon okazi kun malsamaj cikloj. BONE. Do, nun ni akiras en la demando de kio se ni havas buklo ene de banto. Ni nun estas en reala Inception tipo stuff tie. Kiam vi deziras fari aferojn multoblaj fojojn ene de aliaj aĵoj kiuj faras aferojn plurfoje, vi deziras kio nomiĝas nestitaj por buklo. Por tiuj de vi kiu unue vidas ĉi kaj akiri tre konfuzita, ĉiuj ni faras ĉi tie havas por buklo kie ni havas variablo de vico. Sed interne de ĝi, ni ankaŭ havas alian por buklo de variablo nomita kolumno. Kaj mi forte sugestas vin ĉiujn kiuj konfuzas unua teni track-- desegni ĉi ekstere, desegni ĉi ekstere. Ne penu nur kialo tra ĝi, eltiri gxin. En via kapo, sur ĉi tiun papero, aŭ kio ajn, skribu vico, sekvigi kio vico egalas. Skribi kolumno, sekvigi kion kolumno estas egala al. Kaj konservi trako de kio presi el kun ĉiu ripeto. Ĉiu ripeto de ĉi ciklo, ĉiu ripeto de tiu granda ciklo, simple observu sekvanta la logikon. Kaj mi garantias vin, vi amos kion vi vidas, ĉar ĝi estas ankaŭ tre Taŭga por via problemo aroj. Malvarmeta. Bone. Do la plej grava afero ke vi uloj estas probable ĉiuj pensante pri ĝuste nun, Estas via problemo aro 1s, kiu ŝuldiĝas ĵaŭdo / vendredo. En via water.c programo, aludi, vi tuj devas suflori la uzanto por enigo. Ene via mario.c programo vi tuj havos uzi nestitaj por ciklo, kiu estas por buklo ene de por ciklo, presi blokon de piramido, esence kiel kio Mario devas salti tra. Kaj tiam en via greedy-- aŭ eble Making Change, se iu el vi infanoj iam aŭdis pri that-- vi tuj devos esti tre zorgema de unua glitpunktaj valoroj. Memoru flosanta glitpunktaj kaj entjeroj ne estas la samo. Sekvigi kiu estas kiu. Kaj vi tuj uzos kondiĉa deklaroj, tiel. Bone, lasta afero. Mi havas kelkajn minutojn lasis. Stilo. Do ĉi tio estas iu kiu ne fakte efikas efikeco, aŭ la fakta kurado de via kodo. Tamen, ĝi efektivigas nin via lernojaranoj, kiel viaj legantoj. Ĝi efektivigas mem, se vi estas provante trovi problemon. Ĝi efektoj la legeblecon de via kodo. Do stilo, kiel kiam vi provas stiligi eseo pri la angla, se vi ne havis alineoj, vi havas ĉiun specon de implikas kune sur unu linio, ĝi faras vere malfacila por neniu legi vian eseon, eĉ se viaj punktoj estas logike sono. Sama afero en programado. Vi povas havi terure obskura kodo kiu Scaz kovros, kaj ĝi povas ankoraŭ kuri kaj funkcio. Sed por ni, kiel viaj amindaj TAS, kiuj volas estu leganta kaj pritaksanta via psets, Tio ne estas tre agrabla. Do bonvolu, pro de ni kaj mem kiam vi provas ripari problemo en via kodo, kaj vi provas legi vian propran kodon, fari certe vin sekvas iuj konvencioj ke ni tuj iru super. Do unue. Donu vian variabloj signifoplenaj nomoj. Se vi volas stoki entjero nomita aĝo, bonvolu ajn aĝo. Ne ajn alto. Kiam vi provas stoki aĝon en alteco, faras ĉiun tre konfuza por ni. Ni ne ŝatas konfuzi. Vi ne ŝatas konfuzi. Neniu ŝatas esti konfuzita. Se vi iras por krei ion, ajn io signfa. Tamen, en por buklo, unuopaj karaktero variabloj estas kutime monpuno. Kaj en por buklo, se vi volas nur i, kaj j, k, bonvolu simple fari tion. Konsekvenca inicialización. Do kion tio signifas? Tio signifas teknike, teorie, vi povas komenci kaj krei multoblaj variabloj sur la sama linio. Do ekzemple, mi povas krei entjero nomis scaz_age, kaj entjero nomis andi_age = 20, kaj entjero nomis jason_age sur la sama linio. Kaj mi povas ankaŭ asigni nur unu el ilin kaj ne la aliaj valoroj. Ni petas vin bonvolu ne fari tion. Ĉar tie vi esence kreita tri variabloj, sed nur unu el ili efektive havas valoron. Kaj poste kiam ni estas provi legi vian kodo, aŭ se vi provas ripari problemo en via kodo, ĝi estas tre konfuzanta sekvi. Do nur pro via legado, por nia legeblecon, ne faru tion. Konsekvenca buklaj krampoj. Kelkaj homoj ŝatas meti iliajn krispa krampoj en malsamaj lokoj. Fakte ne gravas. Ĝuste certigi ke vi estas kohera en viaj propra kodo sur kie vi ŝatas meti ilin. Konsekvenca interspacigo. Se vi metas spaco post por ciklo, ĉiam fari tion. Ne Nur ŝatas speco de fari ĝin ĉe iuj lokoj, ne fari ĝin en aliaj. Nur esti konsekvenca. Due, se iu volus al peruse la CS50 Stilo Gvidilo, Ni oficiale havas stilon gvidas ke diras vin ĉiuj de ĉi tiuj konvencioj, plus pli. Ĝi estas ensalutintaj. Estas kiel cs50.net/style aŭ io simila. Vi povas google ĝin. Consistencia estas la ŝlosilo. Do ne maltrankviliĝu kio aliaj homoj faras, nur certigi ke vi estas konsekvenca en viaj propraj kodo. Iu havas demandojn pri tio? Yeah. Parolanto 18: Do la konvena afero fari kun inicialización estas nur havas ilin ĉiujn en apartajn linio, estas ke kion vi diras? ANDI PENG: Do mi malofte esti ĉi okazi. Sed se vi volis, se vi volis esti kiel ŝpari spacon en via kodo, aŭ kion ajn, vi povas fari tion. Ni petas ke vi simple ne pravalorizi unu aferon kaj ne la aliaj. Do se vi volas fari int scaz_age, int andi_age, int jason_age, tio estas bone. Nur ne pravalorizi unu kaj ne la aliaj estas ĉiuj. Demandoj? Bone. Mi tuj pasos for la mikrofono, kaj la lasero pointer, kaj la taktobastono al Scaz ĉe tiu punkto. Tio estas mallerta. Jen ĝi. BRIAN SCASSELLATI: Dankon. Kiom estas tio sono? Sono estas bona? . Bonege. BONE. Do, hi ĉiuj. Mi tuj provos labori tra praktika ekzemplo kun vi. Kaj ni tuj uzi CS50 disvolviĝo medio, kio nomiĝas la Integrated Development Environment. Kaj vi vidis ĉi pruvis en prelego. Kaj en Problemo Serio 1, vi estas iranta havi ŝancon por uzi ĝin, kaj amuziĝu kun ĝin, kaj akiri alkutimiĝis! ĉar ni tuj uzi ĝin tra la resto de la semestro. Do en ĉi IDE, vi havas kio aspektas kiel tre tradicia dosiero retumilo super sur unu flanko. Vi havas porcion supren pinto kie vi tuj vidi vian fontkodon, via Cfile, la kodo kiun vi skribas. Kaj malsupren malsupro, vi havas terminala fenestro kiun vi uzos por ambaŭ kompili vian programon kaj kuri aŭ ekzekuti via programo. BONE. Do simple por doni al ni iom da fondo, en tiu fina fenestro, vi tuj estos uzante aron de komandoj kiuj estas normaj komandoj ĉie plejparto de Unikso aŭ Linukso sistemoj. Kaj do se vi iam uzis ajna formo de Unikso, Ubuntu, aŭ ajnaj aliaj gustoj, tiuj tuj serĉos familiara. Se vi ne havas, ne maltrankviliĝu. Nenio komplika pri ili. Ili simple uzas malsaman sintakso, malsama nomanta konvencio ol vi vidis antaŭe. Do al listo el la dosierojn ene apartan dosierujon, ili tuj uzas komando nomis ls, aŭ listo. Se vi volas vidi ĉiun kun ĉiuj detaloj, vi uzos komandon linio argumento kun ls -l. Kaj tio montros al vi ĉion pli detale, inkluzive la permesojn por dosiero. Ŝanĝi dosierujon, vi uzos la cd komandon. Kaj vi povos ŝanĝi dosierujo ambaŭ iri al via hejma dosierujo. Tio estas nur kd tute mem, KD kun du dots revenos vin unu nivelo al via antaŭa dosierujo. Kaj vi povas ankaŭ kd al subdosierujo tajpante en kd kaj la nomo de tiu subdosierujo. Vi povas ankaŭ krei novajn dosierujojn. Kaj ni tuj marŝi tra ĉi en nur unu minuto. Sed nur meti ĉio sur la ekrano. Por ke vi povu vidi ilin. Vi ankaŭ havas la kapablon manipuli dosierojn rekte de la komandlinio. Vi povos kopii ilin al movi ilin aŭ forigi ilin, tio estas, efektive, forviŝi ilin. La CS50 IDE donas la plenan povo de komandlinio argumentoj. Kaj ke signifas vin povas ankaŭ fari tre danĝeraj aferoj. BONE. Ekzemple, vi povas forigi aux forigi, dosiero sen petante por confirmación. Kaj vi eĉ povas forigi recursively-- tio la haltostreko r flag-- tutan subdosierujo kaj ĉiuj ties enhavon. BONE. Ili listigitaj en ruĝa ĉar vi devus pensi "Danĝero" ĉiufoje vi vidas tion. BONE. Bone. Nun fine, la propraĵon tuj estos vere valora al vi, estas ekzistas kelkaj bonaj lertaĵoj scii kiel vi navigi tra ĉi tiu fina stacio fenestro. Unue, vi povas malbari la ekranon ajna momento por nur tajpi en klara. Kaj vi tuj vidos mi faras tion tre ofte. Vi povas ankaŭ simple montri la teksto de dosiero tajpante pli kaj tiam la dosiernomo. Vi tiam povos rulumu dorso kaj eliras, ke nur kun la spacebar kaj sagoklavoj. Se vi havas, kiel ni faris hodiaŭ en prelego, programo kiu ruliĝas senĉese en senfina buklo, vi povas halti tiun programon de ekzekuti tajpante en kontrolo, kiu tenas Kontrolo-C. Kaj vi devas fari tiun plurfoje. La komputilo ricevas nun antaux vi. Kaj vi foje bezonas doni kelkajn provojn antaŭ ĝi efektive veni tra. Vi ankaŭ povos ordigi tra la komandojn ke vi ĵus tajpita uzante la supren klavo, arrow klavon, kaj poste la malsupren sago ŝlosilo. Kaj kio estas plej utila estas anstataŭe de tajpado el longaj dosiernomoj, Vi povos la uzo Tab al autocompletar kelkajn instrukciojn. Nun ni iras por pruvi ĉiuj el tiuj en nur dua. Do se vi ne memoras ilin, ne maltrankviliĝu. Tiuj estas aferoj kiujn vi instruos vin repreni kaj uzi kiel ni iras kune. BONE. Do en C-- malkiel en Scratch-- C estas kompilita lingvo. Tio signifas ke ni tuj prenu fonto file-- jen la teksto kiun vi skribas, la komandojn kiujn vi skribos, la printf () deklaroj, la masxojn, ĉio else-- kaj ni tuj preni tiun dosieron kaj donu ĝin for al programo nomata tradukilo. La tradukilo prenu ke teksto kiun vi skribis kaj traduki ĝin la duuma instrukcioj ke via komputilo estas vere tuj uzon. Tio nomiĝas la objekto aŭ la ruleblan dosieron. Se vi rigardas tiun dosieron, vi tuj vidi la kodon kiun vi skribis. Se vi rigardas tiun dosieron, vi tuj vidi hazarda sekvenco de karakteroj kiuj faras neniun senson ajn. Tio estas ĉar tiu estas la duuma. Ĝi ne signifis por vi esti leganta. Tamen, ajn vi volas ruli ion, kion vi tuj esti kuranta estas tiu objekto dosiero. Do kiam ni laboras kun ĉi tiuj dosierojn, ni skribos dosiero en C. Ni tiam kompili ĝin, uzante komando kiel ŝminko kiu alpreĝi la kompililo tin por la C lingvo. Kaj kiu produktos objekto fajliloj, kiel ekstere, aŭ en tiu kazo, la nomon, mian dosieron, kiun mi metis en. Bone. Do ni vere provi tion. Do mi elpensis ekzemplon kion mi volis provi. Kaj unu el la aĵoj kiuj logas min estas kuraĝigo. Do ni tuj provos fari iomete de kuraĝigo uzante nur askiaj literoj. Karakteroj ni povas presi facile nun. Do jen mia provo bona krei por vi la kuraĝigo de bunny kurante tra la alta herbo. Tie li estas. BONE. Do li ne kuris ankoraŭ, sed li estas staras tie en la alta herbo. Nun se mi animador, en la malnova lernejo versio de kuraĝigo, kio mi farus estas mi produktus bildon de ĉi conejita en la herbo. Kaj tiam mi produktus alia picture-- alian kion ili nomis cell-- ke estis la conejita nur iomete movis. Kaj tiam trionon kiu havis la bunny kopiis iomete plu. Kaj mi produktus tutan sekvenco de tiuj ĉeloj. Iuj kie la conejita estas super sur la maldekstra flanko. Kaj poste movas malrapide, unu per unu al la mezo. Kaj tiam, el la mezo super dekstre. Kaj se mi estus tiam, vere bonŝanca, mi povus meti ĝin kune kaj mi povus animi ilin. Kaj estas mia bunny kurante tra la herbo. Tio estas mia granda PowerPoint trompi por la tago. BONE. Do tiu estas tiel bona kiel ĝi ricevas. BONE. Do, ĉi tie oni pli tempo, tie estas nia Bunny kurante tra la herbo. Parolanto 19: Denove. BRIAN SCASSELLATI: Unu pli da tempo, gxuste. Tie estas via kunikleto. BONE. Do hodiaŭ kion ni tuj fari estas ni iras provi aŭtomatigi la procezon produkti tiujn ĉelojn. Ni ne sufiĉe akiri al la punkto de povante meti ilin ĉiujn kune. Sed, ni tuj provos aŭtomatigi la generado de tiu sekvenco. Kaj estas multe da tio kuraĝigo hodiaŭ similas. Tio estas, vi ne faras aferojn nepre strekante ĉiu mane. Ni uzas komputilon aŭtomatigi partoj de tiu procezo. BONE. Do lasu min ŝanĝi super nun al nia CS50 IDE. Kaj mi kreis por us-- kaj lasu min zomi tie iomete bit-- mi havas kreis por ni deirpunkto. Ĉiufoje ke ni petas vin sidi malsupren kaj skribi koderon, kion ni vere petante vin fari Estas ni petas al solvi problemon. Kaj la vojon ke vi devus pensi pri faranta tion estas per startanta kun iuj simpla parto de tiu solvo. Kaj tiam konstrui el tiu parto. Kaj tio estas kion ni tuj fari hodiaŭ. Do anstataŭ provi ĉiuj samtempe al skribi la tutan faskon de kodo kiu estas tuj produktos tiuj 10 kuraĝigo ĉeloj, Ni tuj komencu anstataŭe per unu peco kiu funkcias. Kaj poste ni konstruu iomete ĉirkaŭ tiu kaj iom pli kaj iom pli. Nun la bona afero pri solvanta problemojn tiu maniero estas ke ĝi permesos vin komenci ĉiam kun iu kiu vi scias funkcias kaj enkonduki unu laŭgrada ŝanĝo. Kaj tio estas granda vojo lerni kiel kodi, ĉar ĉiu tempo vi faras ŝanĝo, vi vidos kion efiko havas. BONE. Do jen nia deirpunkto. BONE. Do komence de mia dosiero, Mi havas hash #included stdio.h. Estas vere ke mi povas akiri la printf () funkcion por labori. Mi tiam mi havas mia ĉefa funkcio. Kaj tio ankoraŭ aspektas iom arcano aŭ malklara al iuj de vi. Estas bone. Ĉiuj diras estas ke la ĉefa funkcio prenas neniu arguments-- malplenon rimedoj nenio en C. Kaj ĝi revenas per konvencio entjero. Ĉefa ĉiam revenas entjero, kutime kodon dirante aĵoj iris bone aŭ ne iris bone. BONE. Sed ĉefa devas havi tiun formi por ni nun. Mi tiam metis en tri linioj de kodo. Kaj kune kun ĉiu linio de kodo, mi metis komenton. Nun unu el la aĵoj kiuj Ni insistas, ke vi faru, kaj ĝi estas tia grava programado praktiko, estas ĉiam komenti vian kodon. Ĉiam notas en Angla komenton ion ke vi opinias la kodo estas supozita fari. KE vojo, poste, kiam vi revenos al ĝin, vi povas rigardi ĝin kaj vi povas diri: ho, mi memoras kion mi provas fari kun tiu. Aŭ kiam TA eksidas kun vi provos helpi vin ĉe oficejo horoj, Ili povas rigardi tion kaj iru, mi vidi kion vi volis fari, sed anstataŭ tio kio vere okazas. BONE. Do mi havas tri partojn al mia kodo, Mi tuj unue presita kelkajn punktojn ĉe la komenco. Mi tiam presi miajn ekstreme imago kunikleto. Kaj tiam iu iom de punktoj ĉe la fino. Kaj tiuj tri deklaroj devus print aspektas familiaraj al vi je tiu punkto. Ĉiuj ke mi faras en ĉiu el ili estas mi presi el vico de signoj. Mankas variabloj implikitaj. Ĉio estas simple plata. BONE. Do se mi iru nun al mia terminal-- ni vidu, se mi povas ricevi ĉi reen fjordon kaj mi tuj tajpi klara denove. Parolanto 20: Ĉu ni uzu la duobla oblikvo komenti? BRIAN SCASSELLATI: Can uzi la double-- jes. Ekzistas multnombraj manieroj lasi komentojn en C. Unu maniero estas uzi la duoblaj oblikvo. La alia estas uzi oblikvo kaj stelo kaj poste fermi kun stelo kaj oblikvo. Bone. Unue, mi tuj komenci navigi ĉirkaŭ tie. Do se mi iras al mia hejmo dosierujo, Mi ŝanĝis dosierujojn tie, Mi tuj rigardi kaj vidi kio estas en tiu dosierujo, ls, listo ekstere. Mi tuj vidi ke mi akiris du subdosierujoj. Ni faras ĉi iom pli granda tie por ke ni povas ĉiuj vidi ĝin. Mi povas vidi ke mi akiris du subdosierujoj. Mi ŝanĝas dosierujon enirontajn en laborspaca. Kaj mi tuj nur tajpi eksteren parto de ĝi kaj poste nur batis Tab. Kaj ĝi malebligos kompletigi la resto por mi. Fancy. Mi rigardas kaj vidas en laborspaca. Kaj nun, mi laboras sur la SuperSection ke ni instruas nun. Do mi iros en tiun dosierujon. Kaj fine, rigardu kaj vidu. Kaj mi havas ke dosiero bunny.c. Bone do lasu min klara ankoraŭfoje. Kaj mi tuj now-- denove mi estas ankoraŭ restanta en tiu dosierujo kaj ĝin diras al mi Mi estas en ke SuperSection dosierujo. Mi tuj iros antaŭen kaj faras mia programo kunikleto. Kaj ke komando, fari conejita, dum sonanta iomete stranga, ankaŭ alvokas la tin tradukilo. Kaj ĝi estas produktita por mi eliro kiu estas plenumebla funny-- an plenumebla dosiero nomita bunny. BONE. Mi povas tiam, kaj tio sonas eĉ pli malbone, ekzekuti kunikleto. BONE. Kaj ni vidos kion ĝi faras. BONE. Jen iomete da kion mi ekspektis. Mi havas mian bunny foton tien, sed mi specon de volis ĉion per sin. Kion mi rimarkis? Parolanto 21: Slash l aŭ oblikvo n. BRIAN SCASSELLATI: Slash n. BONE. Do ni revenu ĉi tien. Kaj mi ricevos el tio. Kaj mi reiros al tiu ĉi. Kaj ni rigardu nun el mia ĉefa funkcio tie. Do kion mi faru? Mi volas fini la linion. Do mi metis en komenton. Mi metos en printf (). Kaj kion mi devas meti en? / n. BONE. Kion mi devas fini ĝin kun? Punktokomo. Bone. Nun, unu el la vere gravaj aferoj estas certigi ĉiufoje kiam vi faras ŝanĝon en via kodo, kiun vi savos. Se vi ne savis vian kodon, vi estas tuj rimarkos steleto tie supre. Kaj ke stelo diras vin ne savis tiun kodon. Se mi kompilos ĝin nun, ne tuj reflekti ajnan de tiuj ŝanĝoj, ĉar la tradukilo rigardas la dosieron jen sur la disko, ne la dosieron tio malfermu en via redaktoro. Bone. Do ni savu ĝin kaj tiam ni iros ĝuste sur cxi tie, reven for. Malsuprenveni al mia terminalo. Kaj ni purigi la spaco denove. Kaj ni povas antaŭeniri kaj pli tempo fari nian bunny programo. Kaj ekzekuti la conejito. Tio ankaŭ ne funkciis. Wrong oblikvo. Do se vi rigardu kion mi havas, mi metis / n en tie, sed mi havis la malĝustan oblikvo. Ĉio ke via komputilo faras estas tre eksplicita. BONE? Unu malgranda eraro de interpunkcio, kaj subite vi ne ricevas kion vi deziras. Bone. Do ni zoom reen eksteren denove. Ni revenos. Nu fari ke tre rapida riparo. Ni metis la dekstran oblikvo en. Ni savos. Ni zoom reen en. Ial, tio ne esti feliĉa, sed ni iru antaŭen kaj ni reiros al la terminalo tie. Klarigis ĝin. Ni zomi. Kaj unu pli da tempo, ni faros kunikleto. Kaj nun efektive, ĝi funkcias. Hura. BONE. Do ni provos fari ĉi iom pli ĝenerala. Ni vidu se anstataŭ ĝuste presi unu aparta kadro, ni vidu se ni povas fari ĉi tiel ke ni povas akiri ĉiujn 10 de tiuj viglaj kadroj ke ni volis havi. Do denove, ni prenu tiu paŝo samtempe. Ni unue ĝeneraligi ĝin, ne por ke mi faru cxiujn kadroj, sed tiel mi faros iun el kadro kiu mi volas. Do kio estas la diferenco inter la kadroj? Estas la conejita la sama? Publiko: Jes. BRIAN SCASSELLATI: Yeah. Kio estas la diferenco? Publiko: Pozicio. BRIAN SCASSELLATI: Lia pozicio, dekstra? Kaj kiel mi kontrolas lian pozicion? Kiel multaj punktoj mi estas metante komence kaj kiom da punktoj mi estas metante fine. Do mi havis kvin ĉe la komencante kvin fine. Ni anstataŭi ke kvin kun por buklo. BONE. Kaj mi tuj kreos por buklo nun ke tuj diru, Mi tuj presi iu nombro de dots komence. Mi tuj uzi variablon. Diru, kion pri mi kiel la vendotablo en mia banto. Kaj mi tuj anoncu ĝis supro. Kaj poste en la por buklo Mi bezonas fari tri aferojn. La unua afero Mi bezonas fari Estas mi devas pravalorizi i. Kion mi pravalorizi ĝi komenci esti? 0. BONE. Tiam mi devas diri, kio estas la finaĵo kondiĉo? Kiam mi devus halti? Nu kiom da punktojn vi volas presi sur ĉi tiu? Publiko: Kvin. BRIAN SCASSELLATI: Kvin denove? Kion pri ni faru ion malsama, ni faris kvin. Ni montru ke ĝi estas malsama. Parolanto 22: Du. BRIAN SCASSELLATI: Du. BONE. Do se mi volas du punktojn, kion mi metu ĉi tie? Publiko: Tri. BRIAN SCASSELLATI: Tri. BONE. Multfoje estas ke tuj trairu? Tio tuj iros tra tri fojojn, 0, 1, kaj 2, Dekstra? Bone, ni iru reen malsupren al du. Nun ni akiros du punktoj. Kaj kion mi volis fari ĉiun tempo mi iras tra la buklo? Kio devas ŝanĝi ĉiu tempo mi trairi? Parolanto 23: Aldoni punkto. BRIAN SCASSELLATI: mi havas plu iri. Mi tuj aldoni punkton. Mi tuj presi streketo ĉiu tempo tra la buklo. Sed kiel mi konservanta trako de kiom multfoje mi estis tra la buklo? Mi uzas i, ke variablo, ke vendotablo. Do ĉiufoje tra, mi tuj pliigo la vendotablo de unu. Nun, jen la sama por mi kiel dirante i = i + 1. Estas bone. Mi povus fari ĝin that-- Mi ŝatas stenografio, do mi tuj diros Mi ++. BONE. Ni faru la samon malsupren tie malsupre. Nur mi specon de faradis unu. Mi tuj lasos vin infanoj fari ĉi tiu tute. Bone. Do kion mi skribu tie? Jen mia por buklo. Mi tuj faros printf () kaj mi tuj fari ĝin tiel ke mi nur presi unu streketo sur tiu fundo. Kion mi skribu ene ĉi por buklo nun? Nu, unue kion variabloj mi uzu? Parolanto 24: j. BRIAN SCASSELLATI: Mi povus uzi j. Ĉu mi povas uzi la sama? Ĉu mi povas uzi i denove? Yeah. Tio estas bone, ĉar la Sono ke mi uzas ĉi tie, Mi ne bezonas ilin denove kiam Mi alvenas al tiu punkto. Do kion devus mi pravalorizi i al? Parolanto 25: 10. BRIAN SCASSELLATI: 0. Kion mi kontrolu? Kiel multaj punktoj mi bezonas nun fine se mi havas du punktojn ĉe la komenco? Mi bezonas ok fine, do kion mi devus kontroli, mi malpli than-- Publiko: Sep, ok, naŭ. BRIAN SCASSELLATI: Mi aŭdis sep. Mi aŭdis ok. Kaj mi aŭdis naŭ. BONE. Do ni estas ĉiuj en la dekstra ball-- Jason Diras 10. BONE. Se mi bezonis du punktojn la unua, kiom fari I-- kaj mi bezonas ok punktojn por la lasta one-- Mi metis du ĝis supre, kion mi metu malsupre? Publiko: Ok. BRIAN SCASSELLATI: Ok. Pro tio tuj kalkuli nulo tra sep. Kaj tio estas ok fojojn tra la buklo. BONE. Kaj kion mi devas fari je la fino? Publiko: Mi ++. BRIAN SCASSELLATI: i ++. Bone. Do jen rigardante sufiĉe bona tie. Ni provu ĝin kaj ni vidu kion ĝi faras. BONE. Do ni tuj savos. Nice kaj savita. Ni zoom reen eksteren. Ni penos tie en la terminalo. Ni zomi. Oops. Ni, unu pli da tempo, fari nian bunny programo. Kaj iri antaŭen kaj ekzekuti kunikleto. Kaj jen ĝi estas. Do ekzistas nia kunikleto. Kie ĝi havas du punktojn komence kaj ok punktojn ĉe la fino. Ĉiuj ankoraŭ kun mi? BONE. Ni tamen konstruis ĝin. Ni konstruis unu bunny, unu aparta kadro. Nun ni povis ĝeneraligi ke konstrui pli, malsamaj specoj de kadroj. Nun ni iru antaŭen kaj havas ĝi generas ne nur unu kadro, sed ni generi 10 kadroj, kie ni malrapide fari la conejita movi ĉiujn la vojo tra la kampo. Bone. Ni reiru. Kaj ni provos nun. Do kion mi vere bezonas ŝanĝi ĉi tie? Kion mi devas ŝanĝi? Parolanto 26: Vi unue bezonas ŝanĝi la numeron de punktoj maksimumo komence. Ĉar se ni faras 10 dots, ĝi tuj bezonas supren grimpi. BRIAN SCASSELLATI: Yeah. Do nun mi havas ĝin ia hardwired por ĉiam fari du punktoj komence kaj ĉiam faras ok punktojn fine. Mi volas konstrui alian buklo, ĉu ne? Ĉar mi ne volas konstrui nur unu kuniklo bildo, Mi volas konstrui 10 bunny bildoj. Do mi bezonas por konstrui alian buklo, kaj kiel mi iros tra tiu ciklo, Mi volas ŝanĝi kiom dots mi presi komence kaj kiom da punktoj mi presi fine, bazita sur kiu ciklo tra la buklo Mi estas en. Bone. Do ni ricevas alian vendotablo. Ies antaŭ diris j, do ni faru alian j. Kaj nun, ni tuj konstrui alian por buklo. Kio iras ene ol buklo? Ĉi stuff devas iri ene la buklo, ĉu ne? Ĉu la conejita havas iri ene la buklo? Ĉu mi bezonas conejita en ĉiu de tiuj 10 kadroj? Publiko: Uh-huh. BRIAN SCASSELLATI: Yeah. Mi volas conejita en ĉiu de la 10 kadroj, dekstra? Kion pri la punktoj ĉe Fine, mi precizigas ke? BONE. Do mi tuj indent ĉiuj ili. Mi tuj emfazi tio, kaj mi tuj trafis Tab. Kaj tio tuj puŝas ilin ĉie iomete, por ke ĝi estas facila por mi vidi kio estas en la buklo. Kaj tiam Mi finos ĝin. Diru. BONE? Nun, en ĉi tiu buklo Mi building-- whoops, fari tiun tiel vi povas Konsideru Mi havas mian vendotablo j. Mi komencis ĝin je 0. Multfoje mi volas iri tra tiu buklo? Publiko: 10 fojojn. BRIAN SCASSELLATI: 10 fojojn. Do kion nombro devus mi metas ĉi tie? Publiko: 9, 10. BRIAN SCASSELLATI: 9, 10, iu estas alvenis al diri 11, ĉu ne? Mi volis du punktoj antaŭ kaj metis Mi malpli ol 2. Mi volis ok punktojn, Mi metis min malpli ol 8. Nun mi volas iri tra 10 fojojn, do mi metis j malpli than-- Publiko: 10. BRIAN SCASSELLATI: 10. Tie ni marŝos. Kaj kion mi faru fine al j? ++, Pliigo ĝin. BONE. Nun, jen la malfacila parto, kio estas okazos nun se mi faras tion? Ĉu mi tuj presi 10 kadroj? Parolanto 27: mi opinias Ili voli ĉiujn esti la sama. BRIAN SCASSELLATI: Ili devos tute samaj, ĉu ne? Ĉar ĉiuj ili estas ankoraŭ iranta meti du punktoj komence. Sed mi ne volas ke ili ĉiuj havas du punktojn la komenco. Kiel multaj punktoj mi volas komence? Publiko: Ŝanĝi. BRIAN SCASSELLATI: Mi volas ĝin ŝanĝi, ĉu ne? Do kion mi havas tie ke sxangxas ĉiu tempo la buklo iras tra gxi? Publiko: Nombro de punktoj, j. BRIAN SCASSELLATI: j, la nombro de punktoj. Do mi povas ŝanĝi ĉi tion al esti la j. La unua fojo tra la buklo, kio ke tuj estos? Kion mi starigis j al unue? Publiko: 0. BRIAN SCASSELLATI: Do kiom da fojojn mi povos fari tion? 0. La dua fojo tra la ciklo, J tuj esti 1 ĉar mi pliigo ĝin. Kiel multaj punktoj mi povos presi? 1. La tria fojo tra la buklo, kiom da punktoj mi povos presi? Publiko: Tri. BRIAN SCASSELLATI: j tuj estos 3. Kiel multaj punktoj mi povos presi? Ho, pardonon, j tuj estos 2. Kiel multaj punktoj mi povos presi? Spektantaro: 2. BRIAN SCASSELLATI: 2. Bone, do mi tuj konservi pliigante ke kiel ni iras kune. Kion pri malsupre? Kio iras malsupren tie? Mi ne volas 8 ĉiam fine plu? Parolanto 28: 10. BRIAN SCASSELLATI: Mi volas 10 punktoj? Mi volas ĝin ŝanĝi, tro. Do kiel mi volas ĝin ŝanĝi? Spektantaro: [inaudible]. BRIAN SCASSELLATI: Nu, se mi havas kvin punktojn komence, kiom da punkton de mi akiras ĉe la fino? Publiko: Kvin. BRIAN SCASSELLATI: Se mi havas ses punktojn komence, kiom mi akiras ĉe la fino? Publiko: Kvar. BRIAN SCASSELLATI: Se mi akiris sep punktoj komence, kiom mi akiras ĉe la fino? Publiko: Tri. BRIAN SCASSELLATI: Se mi havas atingis j dots komence, kiom mi akiras ĉe la fino? 10-j. BONE. Do ni provu tion diveni. Do mi iros por savi nian bunny programo. Refoje ni malzomi. Ni iru al nia fina stacio. Ni malbari ĝin. Kaj zomi. Ni faros nian bunny programo, denove. Kaj ni ruli ĝin. Uh-oh. Atendu, ni malzomi. Ĉu mi ricevas 10 kadroj? Nu, kiom da kunikletoj Mi vidas tie supre? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Mi alvenis 10 kadroj. Ĉu ili tutegale? Publiko: Yeah. No. BRIAN SCASSELLATI: No. Tiu unua, La bunny estas malproksime sur la maldekstra. Kaj tie, la conejito estas malproksime sur la Parolanto 29: Ĝuste. BRIAN SCASSELLATI: Do, Kion mi forgesas fari? Parolanto 30: Komenci novan linion. BRIAN SCASSELLATI: mi forgesis komenci novan linion, denove. Saman eraron mi faris antaŭe. Bone, ni iru ripari tion. Nun, mi ankoraŭ havas la kodon tien por fari novan linion. Kial ne funkcias? Parolanto 31: Ĝi estas ne ene la buklo. BRIAN SCASSELLATI: Ho, ĝi estas ne ene la buklo. Tio pravas. Ĝi sidas ekster tie. Kaj la por buklo estas ĉio kiu estas interne ke teksto. Do mi tuj movas ĉi ene la por buklo. Kaj mi Tab antaŭ ĝi al montras ke ĝi estas en la ĝusta loko. Kaj nun, ni ŝparos ĝin denove. Ni malzomi. Ni ŝaltu al nia fina stacio. Zomi. Ni refari nian bunny programo. Kaj nun, nun ni havas niajn 10 kadroj. [Kunfrapante] BRIAN SCASSELLATI: OK. So. Jen nia nestitaj por bukloj. Ni povis generi en la interna buklo kiom da punktoj mi volis presi komence, fine. Kaj la ekstera buklo kontrolita kiom da kadroj mi konstruis. Ni komencis kun unu malgranda kerno de la problemo, kaj ni konstruis el tiu punkto. Bone. Ni faru pli paŝo. Vi preta? Tie estas unu afero en tie kie ni reale ia akiris pli komplekseco ol ni bezonas. Ni rigardu. Do en nia bunny programo, se mi malzomi tie, Mi efektive fari iuj de la sama afero saciedad. Kio mi faras tio estas ia la samon ripetis dufoje? Parolanto 32: Presi la punktojn. BRIAN SCASSELLATI: Yeah Mi presi tiujn punktojn dufoje. Vere, mi devus havi tiun komenton ĉi tie. Mi presi iuj punktoj ĉe la komencante, dekstra supren tie. Kaj tiam mi presas iuj punktoj ĉe la fino. Kaj mi faras specon de ekzakte la sama afero. Kion ni tuj komencos ellaboras dum la venontaj semajnoj estas povi preni tiujn blokojn de kodo kiun ni uzas saciedad, kaj tra procezo nomitaj abstraktado, ni tuj tiri ilin eksteren kaj skribi ilin samtempe tiel ke ni povas tiam reuzi ilin saciedad. Do ni provu tion. Pretaj? Ni tuj prenos ĉi tiu bloko de kodo. Kaj mi tuj prenos ĝin de tie. Kaj mi tuj define-- malsupren ĉe la fundo, Mi tuj skribos nova funkcio. Oni ne tuj reveni nenion. Kaj mi tuj vokos ŝin printDots. Ĝi tuj prenu unu argumento, entjero ke diras howManyDots mi devus presi. Nun anstataŭ videbligi j dots, mi presi diri howManyDots mi devus presi. Kaj estas unu malgranda problemo tie. Iu scias kio ĝi estas? Kion mi havas ke estas listigitaj tien tio ne difinita? Spektantaro: [inaudible] BRIAN SCASSELLATI: Nu multaj punktoj estas difinita suprenvenu tie, sed mi uzas ke variablo i. Do mi iros por preni ke variablo i kaj mi tuj difini ĝin malsupren tien anstataŭe. Do nun ĝi tuj stay-- oops, got la majuskla baskulo sur somehow-- mi tuj subteni i malsupren tien. Do nun jen mia iom funkcio aŭ sub-rutinon, kaj ĝi diras, kiom da punktoj mi povos presi? Kaj iros tra tiu buklo kaj presi ilin saciedad. Mi povas tiam modifi mian programon tien. Kaj kion mi nomas tiun funkcion? printDots. Do mi devos alvoki printDots. Kiel multaj punktoj mi volas presi la unua fojo antaŭ la conejita? Publiko: j. BRIAN SCASSELLATI: j. Kiel multaj punktoj mi volas presi fine, post la conejita? 10-j. Kaj tie estas unu afero mi mankas. Kiel vi vidis en prelego hodiaŭ, ni tuj deklari printDots super doni la prototipo. BONE. Do kion mi faris estas mi provis izoli ke reuzataj parto de kodo ke mi plenumis saciedad. Kaj mi provis tiri ĝin eksteren por ke ĉiuj kiuj estas enhavita en unu loko. KE vojo, Se mi havas eraro ie, Mi nur devas fiksi ĝin en unu loko. Bone. Do ni konservu ĝin. Kaj ni certigu ĝi funkcias. Do ni iru eksteren. Ni reiru al nia fina stacio. Ni zomi. Ni faros ke conejita procezo. Oh. Kaj ĝin donis al mi averton. Kio ĝi diras al mi? Nu en ajna el tiuj tempoj, vi ĉiam volas rulumi supren al la plej unua error-- nun ĉi tiu, mi nur ricevis unu. Rakontas min bunny.c, sur linio 8, kolumno 9, tie estas problemo. Ĝi diras, vi deklaris ĉi variablo i kaj vi ne uzis ĝin. Nun kutime, jen ne la plej malbona eraro. Estas facile por ripari. Kaj fakte, ni povas reiri en. Ni povas reiri al Bunny. Kaj en ĉi tiu kazo, ĉiuj ni devi fari estas akiri liverita de i, ĉar ni ne uzas i ene ĉefa anymore. Ni simple uzas ĝin ene de nia sub-rutinon. Do ni savu tion. Ni revenos. Kaj zomi. Ni pli tempo fari conejita. Kaj denove estas niaj 10 kadroj. BONE. Ajna tempo vi donis a procedure-- Yeah. Parolanto 33: Mi havas a-- Mi konfuzita. Ĉu vi povas reiri al la kodo? BRIAN SCASSELLATI: Yep. Parolanto 33: Do, kiam vi skribis via prototipo, la argumento vi estis enoficigis nomiĝis howMany? Sed, below-- BRIAN SCASSELLATI: Oh yeah. Parolanto 33: --called ion malsamaj, mi ne komprenas. BRIAN SCASSELLATI: Kial ili diferencas. Por ke estas granda demando. Do la demando estis, supren tie, mi skribis howMany, kaj sube, mi skribis howManyDots. La kialo estas ke en via prototipo, Ĝi fakte ne atentante al la nomoj kiujn vi metas en. Ĉiuj ĝi vere zorgas pri estas ke ĝi estas entjero. Ĝi volas scii la formon kion vi metas en. Nun stylistically-- oops-- kion mi devus ja, estas mi ŝatas fari tiujn matĉo. BONE. Ĉar tio estos teni ĝin facile por mi memori. Sed tio estis mia eraro Jes. Parolanto 34: Kaj do por la prototipo por labori, nur skribante ke linio, skribi la prototipo, permesu ke funkcio kiu venas dekstra sube ĝi iri al la fino kaj elsxuti kion tio signifas? BRIAN SCASSELLATI: Kio ĝi signifas Estas kiam la tradukilo iras tra, ĝi iras de la supro de via kodo por la fundo. Kaj kio ĉi tiu prototipo estas, estas ĝi estas esence promeson. Ĝi diras, tie tuj estos funkcio difinita ie. Ĝi tuj estos nomita printDots. Kaj ĝi tuj preni unu argumenton ke tuj estos entjero kaj ĝi tuj revenos nenio, malpleno tipo. BONE. Mi promesas vin ke tuj estos difinita ie laŭ la vojo. Sed iam vi vidos ke, dum vi iros malsupren tra la resto de mia ĉefa funkcio, mi volas vi traktu ke kiel funkcio kiu prenas unu entjero enigo. Iufoje la tradukilo iras malsupren tra ĉi, ĝi vidas ke promeso. Kaj kiam alvenas malsupren, tenas iranta, Tenas iranta, ĝi trovas la unua fojo printDots estas menciita. Kaj ĝi diras, Ho, vi donas Min ĉi j. j estas entjero. Nu vi promesis al mi, ke estus esti entjero kaj ke pravas. Estas bone. Kaj poste fine, malsupren ĉe la fundo, antaŭ mi alvenas al la fino de mia dosiero, mi montras bone sur mia promeso kaj mi difinas. BONE? Parolanto 35: Do, ĝi saves-- la programo savos malplenan spacoj kiu superas kaj plenigas fine? BRIAN SCASSELLATI: Ne pri la memoro atribuo. Ĝi estas fakte ĝuste pri kio tipo estas vi atendanta vidi. Devus tion havas unu argumento, aŭ kvin argumentoj? Devus havi ĝin esti entjeroj donita al ĝi, aŭ kordojn? Jen ĉio ĝi rigardas fari estas kontroli, vi donas al mi la dekstra speco de argumento. BONE? Bone. Lasu min lasas kun unu alia iom rigardi. ASCII arto ne estas la granda modelo de kuraĝigo kiel nun. Sed iuj personoj kompreneble preni aĵojn kaj ili puŝi ĝin al ilia ekstremojn. Tio estas, kiel David pruvis en prelego, koderon ke vi devus sub neniuj cirkonstancoj provu duobligi mem. Ĉar ĝi estas terura stile. Fakte, ĝi estas desegnita por esti tiel malfacila kiel ebla por legi. BONE. Do, fari denove, ni zomi en ĉi tie. Mi tuj iros nun, ŝanĝo dosierujo. Mi tuj iros unu nivelo, dorso al mia laborspaco. Mi tiam ŝanĝas dosierujon en ĉi alia dosierujo kiun mi kreis. Kaj tiu estas la Internacia Sekur C Programming Contest. Sekur rimedoj kiel malfacile kiel eblas kompreni. Do bonvolu, ne timigis se vi rigardas tion kaj iru, mi ne povas legi tion. Tio estas la punkto de ĝi. BONE? Sed, ni havas ĉi mirinda programo kiu mi estas tuj rigardi per simple tajpante pli. Kaj ni vidu, se mi povas malzomi nur iom, tial vi povas vidi ĝin Kaj tiu estas la programo. Ĝi estas nomita endo.c. Kaj ĝi aspektas kiel ĉi tiun sitelon per speco de la literoj F-L-Aŭ-mi-D en ĝi. Tiu estas fakte programo. Ĝi estas skribita en la plej obskuraj maniero ke la aŭtoroj povis eble skribi ĝin. Sed estas mirinda eta peco kiu generas modelon de fluidodinamiko. Kaj do ni tuj donu ke modelo enigaĵoj ke aspektas kiel tiu, de staired aro de ujoj kun iu fluaĵo, iuj likva, supre ĉe la supro. Kaj ni havas ĝin simuli kio okazas al ĝi. Do mi devos alvoki tiun funkcion, endo. Kaj Mi donos al ĝi ke eniga dosiero kiun mi havis. Kaj tie estas nia epitome de arto ASCII. Plena fluida dinamika simulilo kurante en nur kelkaj linioj de kodo. Nun kio estas efektive vere mirinda sur tiu malgranda programo estas ke mi volas halti ĝin nun, tiel mi tuj uzos kion ordonas? Publiko: Kontrolo-C. BRIAN SCASSELLATI: Kontrolo-C. BONE. Do mi uzos Kontrolo-C. C Ke ĉesos ĝin. Mi malbari denove. Kaj nun mi iras al la alpreĝi programo, ekzekuti la programo, uzante sin kiel enigo. Kaj ni vidos la fluida dinamika simulado de ĝi fandiĝas. BONE. Bonvolu ne lasu ke programo esti la afero kiu konfuzas vin. Estas nur por ke ni povu fini sur io malvarmeta kaj interesa. BONE. Plej bone de fortuno kun via problemo aroj. Ni ĝojos respondi demandojn post klaso. Danke multe, knaboj.