JASON Hirschhorn: Bonvenon CS50 sekcio, ĉiuj. Mia nomo estas Jason Hirschhorn. Mi estas multe da via TFS, sed multe da homoj espereble estos kunigi nin linio, pligrandigo lernantoj aŭ studentoj provante trarigardi sekcio se ili missed lia sekcio tiu semajno aŭ nur reatingi se ili volis revizii iu materialo. Do kiel por la Syllabus, kiuj ĉiuj el vi legis, korekti? Mi vidas multe da kapo nods. Sekcioj provizi vin per ŝancojn esplori la kurso de materialo en pli intima medio, tiel kiel pikita en manoj sur aktivecoj. Do jen esence kio ni estas tuj faros ĉiu semajno. Ni tuj iros tra kion ni havas decidita al esti la plej grava temoj kovritaj en prelego, kaj tiuj verŝajne ankaŭ la plej utila kaj plej versxajne supreniru sur problemo aroj kaj en kvizoj, kaj en via kodigo vivo ekster CS50. Do ni tuj iru en tiuj temoj, diskuti ilin, iru super ili, respondi demandojn you guys havas, kaj tiam ni tuj faras multan praktiko problemoj en kodigo. Vi ĉiuj alportis tekkomputiloj, kio estas fantazia. Tiu estas komputika klaso. Tamen, multe de la ekzercoj ni faros, Vi ne bezonas vian tekkomputiloj por. Vi povas fari tion sur paperfolion. Tiel estas kiel vi tuj faru ilin sur la kvizojn. Kaj efektive, jen granda vojo vere scias, ke vi kiel fari ion se vi ne havas Check 50 fidi aŭ Faru al fidi, dirante vi faris neniun eraroj. Do vi bonvena kodo en la aparato aŭ run.cs50.net, kiu estas alia ilo kiu permesas al kodi linio, sed mi ankaŭ rekomendus, se vi ankoraŭ ne provis ĝin, uzante folio de papero kaj klopodante tiuj praktiko problemoj sur paperfolion. Ĉar denove, tio finfine kion vi tuj estos demandis fari en Quizzes. Do ni komencu per niaj agendo hodiaŭ. Ni tuj iras super iu normoj por nia sekcio, poste ni iras al plonĝi en sensilo, funkcioj, kaj komanda linio argumentoj, kiuj estas kion vi infanoj kovris la pasinta semajno en prelego kaj tiam lundo, kaj kion vi kovros pli de morgaŭ. Kaj poste, fine, ni iras paroli pri pset2. Se mi povus atingi pruvon de manoj, se vi ne rigardis la problemo aro du specifo. Ni diros ĉiuj. Fantastic. Ni parolos pri problemo aroj en iom, sed se vi legis la problemo aro specifo, jen ĉiuj vi devas fari. Se vi legis tion antaŭ ol vi venos al klaso kaj sekcio marde, vi faros esti granda pozicio. Ni povas iri tra la problemon aro, kiu estas kio ni iras fari al la fino. Ni tuj iros tra la logiko, certigi ĉiuj estas en la sama paĝo. Mi volas ke vi povos lasi mardo sentante tre komforta, kion vi bezonas fari por ĉi tiu semajno problemo aro, kaj se ne, mi volas feliĉe resti post kaj labori kun vi. Sed tio estas unu afero, kiun vi devas fari sed mi opinias estus vere inteligenta, nur legi la problemo aro specifo de klaso marde, kiu sonas kiel multan you guys faris. Mi komencos per agendo ĉiu klaso do vi scias, kie ni iras. Ĉi tiu estas ankaŭ utila por homoj rigardante linio ĉar ĉiu sekcio estas koloro kodita, do se vi volas veni dorson kaj nur rigardi 10 minutoj anstataŭ ol la tuta 90-minuta sekcio, vi povas simple iru al la koloro kodita sekcio kaj rigardi tiun parton. Do mi provis rompi ilin en agrabla moduloj kiuj ebligos al vi - se vi volas veni tien kaj revizii, aŭ aliaj studentoj, kiuj estas nur rigardante sekcion por revizii - trovi la specifa afero ili volas atenti kaj lerni pli pri. Dolĉa. Normoj. Mi estas FOP ĉefo en la campus. Mi ne scias se iu faris FOP. Ĉu iu faras FOP? Unu persono faris FOP. Du homoj faris FOP. Awesome. Do FOP estas la Unua jaro Outdoor Orientiĝo Programo. Ni prenas freshmen en la arbaron kaj fari la plej magia spertoj de iliaj vivoj, korekta? Jes. Sonoj pri pravas. Do mi nur volis komenci nian tre unua sekcio de diskuti iujn normojn por la klaso kaj nia rilato ĉar mi kredas ili estas tre gravaj. Unuavice, kiel tiuj el vi, kiuj estas mia sekcio ricevis kaj estis diskutita en tiu retpoŝto, Mi amas ĉi. Tiu estas mia favorata parto de la jaro. Mi estis tiom ekscitita. Mi estis tie dum horoj hodiaŭ. Mi ne forlasis tiun konstruaĵon krom iri manĝi ĉar mi amas CS50 sekcio, mi amas instruon, mi amas laborante kun vi guys. Unu el miaj plej alta prioritatoj, se ne estas mia numero unu prioritato, ne nur por tiu klaso sed inkludante miaj aliaj klasoj kaj extracurriculars, estas apogas vin knaboj, kaj helpi vin knaboj, kaj fari mian plejeblon por certigi ke vi infanoj havas mirindan, amuzo, produktiva, atentokaptan, ekscitante sperti en tiu klaso. Tio estas kion mi faris al. Tial mi amas tion fari. Tio estas mia plej bona afero, apogi you guys. Se vi havas demandojn pri prelego, la problemo aro, sekcio, vivo, eĉ se vi volas paroli pri vivo, bonvolu konsideri atingi eksteren. Vi havas mian poŝtelefonon numeron, Vi havas mian retpoŝton adreso, vi havas mian GChat. Vi povas kontakti min ĉe iu aŭ ĉiuj tiuj ĉiam, sed probable ne ricevos respondo kiam ajn. Mi provas kaj reiri en 24 horoj. Gxi ofte estos ene 20 minutoj aŭ 24 minutoj. Mi devus esti dirinta ke por fari ĝin paralela. Sed vi ricevos respondon sufiĉe rapide. Se vi Teksto min horo antaŭ la problemo aro estas devita, mi trankviligi vin malsupren kaj faru profunda spirado ekzercoj kun vi, sed se vi ne komencis, vi probable ne tuj finos, kaj Mi ne povas vere helpi vin el tie kvankam mi provos mian plejeblon. Do mi faros ĉiu Mi povas subteni vin. Ne hezitu atingi ĉu ĝi estas en sekcio denove, ĉe Oficejo Horoj se vi vidos min, aŭ eĉ ekstere. Mi estas feliĉa por starigi tempon por renkonti kaj labori per problemoj kun aŭ transiru materialo. Por ke estas numero unu, apogo. Mi faros ĉion, kion mi povas subteni vin. Numero du, kunveno en la mezo. Tiel kiel mi ŝatus esti, mi estas ne ĉiopova aŭ ĉiopova aŭ ĉioscia, do mi ne scias ĉiujn tempo se kion mi faras estas atingi trans, se la vojo mi instruas la temo helpas vin lerni ĝin, aŭ se vi estas malklaraj sur temo sed ne levi vian manon aux petu al mi aŭ sendu al mi retmesaĝon. Aŭ eĉ se vi, denove, estas konfuzitaj pri io sur la problemo aro. Se vi ne atingos al mi, Mi ne povas scii, ke por certa. Mi faros mian plejeblon por kontroli en sur you guys, certigu ĉiu estas iras bone, provu instrui tion en maniero ke estos favoraj por la plimulto de via lernado de stiloj, sed se estas ion mi povas fari, lasu min scii. Kune tiuj linioj, se vi volas iom da helpo kun la problemo aro, estas pli ol feliĉaj helpi vin kun la problemo aro. Ni tuj fari multajn ke al la dua duono de tiu sekcio. Sed se vi ne legis la problemo aroj apogi kaj ne rigardis la promenado tra kaj ne rigardis la shorts kaj atendante min instrui al vi ĉio, kio estis gravuris Interreto aŭ ke vi povas trovi ĉe CS50 studo, tio ne estas vere justa al mi aŭ al viaj aliaj kolegoj. Bonvolu do, mi estas pli feliĉa por helpi vi, sed vi infanoj alvenis al mi renkonte en la mezo. Ni havas tunoj de rimedoj por vi disponebla en CS50. Mi menciis iujn el ili. Bonvolu utiligi ilin. Se vi konfuzita, mi estas pli feliĉa helpi vin klarigi ilin en alia maniero, sed ĝi ne estas bela se studentoj aperas ĉe oficejo horoj, ne komencis ion, kaj tio Ĵaŭdo nokte kaj ili atendas la TF marŝi ilin tra ĉiu unuopa afero por la problemo starigis pro tagmeze la sekvanta tago. Sencon? Denove, bonvolu renkonte al ni en la mezo. Kaj fine, altaj atendoj. Mi tuj estos gradeco ĉiuj, kiuj estas en mia sekcion, aŭ noti vian problemo aroj. Vi ne reiris problemo starigis nulo aŭ unu ankoraŭ. Ni bedaŭras pri tio. Ni bezonis iom da tempo por fine starigi sekcioj, kaj nun Ni povas komenci gradeco. Mi ricevos ilin al vi kiel eble plej baldaŭ. Tiuj estas kelkaj el miaj advisees tie. Mi ricevos ilin al vi kiel eble plej baldaŭ. Kaj por problemo aro du, ni estos je plani kaj ni komencas atingi ilin vin sufiĉe rapide post vi turnas ilin in Kiam vi ricevos vian problemon agordi dorso, vi ricevos partituroj, kiel vi scias el legante la Syllabus - korekto, dezajno, atingo, kaj la stilo partituroj. Vi ankaŭ preni komentojn. La komentoj estas pli grava ol la interpunkciojn. Mi kredas ke estas sekure diri tion. Notoj estas nur nombro de unu al kvin. Estas malfacile legi en la porkojn. Estas malfacile plibonigi el tiuj. Sed la komentoj estos atentigi specifa tion vi faris bone aŭ areoj Vi povas plibonigi sur kaj doni al vi iuj ideoj por la estonteco aŭ alternativa manieroj de fari tion. Do bonvolu, bonvolu, bonvolu legi tra la komentoj. Mi metis multan tempon en tiuj komentoj. Bonvolu tralegu ilin kaj ne nur rulu suben ĝis la fundo de la PDF, serĉi vian interpunkcion, aŭ iri en linio kaj trovi vian interpunkcion, kaj poste ignori la komentoj. Tio ne estas kiel vi estas tuj alvenos pli bona. Tio ne kiel vi tuj pliigi via partituroj finfine, simple rigardas la interpunkciojn. Bonvolu rigardi tiujn komentojn. Kaj laŭ la linio de altaj atendoj, denove, kiel mi diris, vi povas notis de unu tra kvin. Duope, triope, kaj kvar membroj estas la granda plimulto de partituroj vi tuj estos atingi. Ones kaj Fives estas ambaŭ vere malofta. Ĉiam aĵoj ni povas fari pli bone. Kiam ajn mi programi programon, estas ĉiam iu povus fari pli bone. Do anstataŭ diri vi ricevas kvin la tutan tempon en ĉio kaj faris ĉio perfekta, mi ne kredas ke neniu el ni vere kredas, ke ni - aŭ mi esperas, ni ne faras ĉion perfektigi la tuta tempo. Do ne paniku se vi ne havis kvin. Al kvin ne mapaj sur la A, kvar ne mapaj sur B, tri faras ne mapon sur unu C. Tio ne kiel la interpunkciojn labori. Kiel David diris multajn fojojn, ĉe semestro fino ĉiujn viajn partituroj kaj enigo de mi, via TF, kunflui kaj determini fina lernojaro por vi. Sed denove, ne kvin, A, kvar, B, kaj tiel plu. Do mi tuj devos altaj atendoj por vi guys. Mi tuj atendi bonajn problemo aroj kaj mi tuj donos vi sugestoj kiel tia. Kaj ne tuj signifas ke vi estas ricevos pli malbona grado. Vi gradigita en terminoj de via progreso de semajno nulo al Kompreneble la fino. Kaj fine, en terminoj de alta atendoj en klaso, mi amas kiam homoj partopreni. Mi komprenas iuj homoj sentas sin pli aŭ malpli komfortaj partopreni. Aliaj personoj partoprenas ne per levante sian manon kaj parolis la tutan tempon. Sed ni en tiu klaso tuj estos fari multajn malgrandajn problemojn, multe de mini demandoj, kaj tiam iuj granda kodigo problemojn. Do certe labori tiuj ekzercoj el kiam ni faras ilin en via komputilo aŭ en paperfolion. Sed mi ankaŭ donas al vi iom da tempo antaŭ iu iam devas respondi de la demandoj mi petas. Do ĉar mi donos al vi iom da tempo por pensas pri tio, ĉar ni iras fari aĵoj en partneroj kelkfoje, Mi atendas ĉiuj esti kompromitita tiel. Kaj pro manko de pli bona termino, tie verŝajne estos malvarma voko, kiu estas kie ĉiuj havos ŝancon pensi pri la respondo, kaj poste Mi alvokas vin, kaj tiam vi diros la respondon. Ne maltrankviliĝu aŭ timon pri tio. Mi jam faris ĝin en la estinteco kaj ni trovis ke ĝi estas multe pli sukcesa, Ankaŭ legu edukaj esploradon pri tio al determini ĉu estis bona taktiko. Ĝi estas tre helpema, speciale se vi doni studentoj tempo por pensi pri la respondojn kaj ne faru al ili ĵus venis eksteren kaj diri ĝin ĝuste super la vesperton. Sed se vi ne sentas komforte respondi, mi estas ankaŭ sufiĉe bona ĉe sensing ke ekstere, kaj ni ne tuj meti vin sur la lokon, precipe en la ĉambro, kvankam neniu el vi estas sur fotilo nun. Tuj kiam tiuj estas la normoj mi havas. Unu pli bona laŭ la linioj de kunveno en la mezo. Mi tuj donos al vi infanoj multe da sugestoj. Bonvolu doni al mi sugestoj tiel. Tie estas retejo, sayat.me/cs50. Do estas honesta sugestoj. Se vi volas doni ĝin dum sekcio, Mi ricevis retpoŝton ĉiufoje kiam ĝi okazas. Ni prenos ripozon en iom, do mi rigardi tra la sugestoj tiam. Se vi iam havas neniun reagon, bonvolu doni al mi tie. Se vi donos al mi reagojn pri la Q, tio estas mirinda, sed tio estas la gvidilo ke vi faras al la fino. Sed tio estos al semestro la fino tiel Mi ne povos preni iun el kiuj sugestoj kaj igi ĝin instrui you guys bona. Bonvolu do, se vi havas iujn sugestoj, donu ĝin al mi. Mi amas sugestoj. Back to FOP, ni preni sugestoj la tutan tempon. Vi povas doni al mi pluses, bonaj aĵoj, deltas, tion mi povas plibonigi. Vi povas komenti pri mia kostumoj. Tio ne estos tiel helpema, sed vi estas bonvenas komenti ajnan kaj ĉion. Bonvolu, bonvolu doni al mi sugestoj. Mi taksas ĝin multe kaj ĝin multon signifas por mi. Unu pli normo, amuzo. Ni tuj havos tre amuza. Espereble en ĉi tiu kurso, vi havas multe da amuzo. Ni devos frandaĵon en sekcio. Ni devos muziko. Ni estos espereble ekkonu pli bone unu alia iom bone, do mi volas ĉi tiu esti amuza, engaĝi sperto. Mi konas iujn el vi jam ekdormis en la prelegoj vi havis pli frue hodiaŭ, tial mi esperas kiu ne volas esti la kazo nun. Kaj se tio estas la kazo nun, nur ne ronki ĉar tio povus esti kaptita sur ĉambro. Dolĉa. Demandojn, komentojn, aŭ zorgojn antaŭ ol mi pluiri pri io ajn ni parolis? Granda. Do ni tuj iru en arrays unua. Jen kiel vi faru tabelo. Ni jam vidis ĉi tion antaŭe. Vi havas datumtipo, vi havas nomo, kaj tiam vi havas grandecon. Ĝuste tie, mi krei du tabeloj. La unua estas tabelo de karakteroj, kaj ĝi havas 26 spacoj. La dua estas tabelo de interpunkcioj, kaj ĝi havas tri spacoj por tri entjeroj. Jes? Lernanto: Ĉu ĉiuj tiuj diapozitivoj disponebla ie por ni? JASON Hirschhorn: Granda demando. La demando estis, estas ĉiuj tiuj glitas disponebla? Jes. Ĉiuj de ĉi tiuj diapozitivoj estos disponebla, kaj en la estonteco, mi retpoŝti ilin al vin antaux sekcio. Sed hodiaŭ, ĉar ĉi tiu estas la unua semajno, ni havis malfrua komenco. Tiel kutime, vi ricevos tiuj diapozitivoj, sed ili estos disponebla en linio kaj Mi retpoŝti ilin al vi tuj post klaso. Aliajn demandojn? Do denove, arrays estas skatoloj, pro manko de pli bona vorto, kiu tenas multnombra elementoj de unu datumtipo, kaj ili estas apud unu alia en la memoro. Kaj tial denove, ĉi tiu estas kiel vi povas fari du specoj de matricoj. Do post vi faris viajn tabelo kun tiu unua linio - int partituroj, krampo tri, proksime krampo - vi deziras pravalorizi ĝin. Vi volas meti iujn valorojn en tie. Kaj jen kiel vi metis iujn valorojn en tie, nur elektante la indice kaj skribi la numeron. Ni desegni tio sur la tabulo. Ĉu ĉiuj komprenas? Ĉiu povas vidi. Dolĉa. Por ke tuj estos mia tabelo nomata Notoj. Kiel vi povas vidi, ĝi estas grandeco tri. Estas tri skatoloj en tie. Ĉiu povas ĝustigi kion tipo de datumtipo? Lernanto: Entjeraj. JASON Hirschhorn: Entjera en ĉi tiu. Ni skribis int interpunkcioj, kaj la unua vorto estas la datumtipo ke tuj iru en la skatoloj en tiu tabelo. Do mi povas adapti tri. Kial mi havas nulo supren tie sur la tabulo? Kial ĝi diras partituro nulo egalas 1? Memorigas min pri via nomo. Lernanto: Kurt. JASON Hirschhorn: Kurt. Lernanto: Jes. JASON Hirschhorn: Kial? Lernanto: Ĉar la unua indico estas nulo, ni komencas rakonti al nulo. JASON Hirschhorn: Do ni komencu kalkulante je nulo. Tio estas ĝuste pravas. Ĉi tiu estas la konfuza parto kaj volo vojaĝo vin, precipe kiam oni estas provante persisti per sensilo, kion ni faros en iom. Ni komencas rakonti al nulo. Do se mi volas raporti al la unua skatolo, ne skatolo tiu. Bedaŭrinde, ĝi estas skatolo nulo. La dua estas skatolo, kaj en tiu kazo, la tria unu estas skatolo du. Kio pri skatolon tri? Kie estas skatolo tri? Aŭ se mi volas fari partituroj, krampo tri, proksime krampo, kio estas tio? Do vi diris la nula karaktero. Iu alia pensoj? Kio estas partituro krampo tri krampo? Lernanto: Fakte ne ekzistas ĉar Vi nur difinis kiel interpunkcioj, krampo tri. JASON Hirschhorn: Do vi diras ĝi ne vere ekzistas. En iuj kazoj, kiam ni pritraktas kordoj, ĝenerale ni metos nula karaktero al la fino. Ni ricevos por ke en dua. Sed en ĉi tiu kazo, ekzistas tria skatolo tie. Do la lasta skatolo en ajna tabelo estas grandeco minus 1. Do, se ni havas aron de amplekso n, la unua skatolo estas nulo, la lasta estas al la n minus 1. Kaj en tiu kazo, ĝi ne ekzistas. Estas io en memoro sed ne estas nia. Ni ne posedas ĝin. Ni ne petis ĝin. Do, se ni provu aliri gxin, kiun ni fari en iom, ni probable tuj eniri problemojn. En tiu kazo, mi inicializar mia tabelo kun tri variabloj. Ni metas en skatolon nulo, du en skatolo, kaj tri en skatolo du. Ĉu iu havas demandojn pri inicializar tabelo? Do ni iris super ĉi gxuste nun. Notoj, krampo tri, proksime krampo, ke ne ekzistas. Ni nulo indeksita en komputiko, do ni komencu rakonti je nulo. La lasta skatolo disponebla al ni, estas la tria skatolo, sed nomas skatolo numero du. Sube, ĉi tiu estas alternativo vojo de inicializar arrays. Do anstataŭ krei la tabelo sur unu linio, plenigante la unua skatolo, tiam la dua skatolo, tiam la tria skatolo, Vi povas fari ĉion en unu linio. Do en tiu linio, ambaŭ arrays. Ĉi tio kreas la saman ĝusta tabelo kiel kion ni kreis ĝuste ĉi tie, sed nur faras ĝin en unu linio. Nun ni kreis nian tabelo. Kutime fojon oni kreas tabelo, vi volas fari ion kun tio, ĉu ke estas plenigi ĝin aŭ atingi tion el ĝi kaj presi ilin sur la ekrano. En ĉi tiu kazo, ni iras tra nia partituroj tabelo, kiun ni inicializado sur la unua linio ĝis tie en griza. Kaj poste sur la dua linio, ni starti ripetanta tra la tabelo. Ĉu iu havas demandojn pri la strukturo de a por buklo? Do ĉi tiu estas la buklo. Ni havas niajn komenca kondiĉo, kaj poste nia fina kondiĉo, kaj tiam ni persisti, i, ĉiu ciklo. Kaj en la krispa krampoj en ĉi por buklo, kio okazas se mi kuras tiun programon? Ĉu iu ajn diros al mi, kion ni akirus? [? Matu'al? ?] Matu'al: Presi ĉiujn partituroj sur ĉiu linio. Estus presi ĉiun interpunkcion sur aparta linio. JASON Hirschhorn: Kion precize ĉu presi? Lernanto: Estus presi unu, poste du, poste tri. JASON Hirschhorn: Ĝuste. Estus presi unu, tiam du, tiam tri, ĉiu sur apartaj linioj, ĉar ni iras tra la tabelo kaj vi instruos vin vidas, ke dua, la printf deklaro, partituroj i. Do en la unua ronda tra nia por buklo, i egalas nulo, kio signifas ni estas atingi la valoro je partituro nulo - kio, se ni reiru al la diagramo, estas unu - kaj plenigante en - ho, diras c. Tio devus esti% d. Mi riparos ke en iom kiam Mi mano kiu al vi guys. Sed ni prezenti entjero tia ke estu% d ĝuste ĉi tie, ne% c. Kio estas% c por? Lernanto: Karaktero. JASON Hirschhorn: Karaktero, ĝuste. Kio estas la alia? Se vi ne volas fari% d por entjera, kion alia povas fari? Lernanto: i. JASON Hirschhorn:% i, ĝuste. Do demandojn pri ripetanta tra la tabelo? Do kio okazas se ni faru tion? Anstataŭ fari i estas malpli ol tri-ni i estas malpli ol aŭ egala al tri. Kio okazas kiam ni kuras tiu kodo? Jes, Annie? Studento: ili tuj presi weird stuff sur la kvara linio. JASON Hirschhorn: Do vi diras, estas tio tuj presi strangajn aĵojn en la kvara linio? Ĉu iu havas respondon al sia demando? Do la malakordo estas ke kiam ni atingos la - tiel sur la kvara ronda tra nia por buklo, ĝuste kiel vi kredis, Annie, tio estos partituroj krampo tri, kiuj ni jam eltrovis ne ekzistas, kaj ni tuj provi kaj konsenti ke, presi ĝin el, uzi ĝin iel. Do la komputilo volo probable koleriĝos ĉe ni. Vi estas ĝuste pravas. Eble quit la programo entute. Ĝi povus presi ion vere stranga. Vi ne povas diri kun certeco. Prognozoj estas sxanco gxi koleriĝos ĉe vi kaj nur quit tuj. Sed ĉi tiu estas komuna eraro vi devos kie vi estas nur off por unu ĉe la fino, kaj tio estas cimo kiu havos plago vi en viaj kodita. Unu maniero mi ŝatas fari estas nur sur skribtabulo, trairu ĉiu ripeto de la ciklo sur mano aŭ sur papero por vidi kio okazas, kaj tiam vi ĝenerale rimarkas, oh atendi, mi ne devus iris al malpli ol aŭ egala al tri. Mi devus esti haltis ĉe du, kio estas kio okazas se via kondiĉo estas malpli ol tri. Demandojn ĝis nun? Dolĉa. Do vi ĉiuj havas vian komputiloj malfermita. Ni tuj donos al vi du al tri minutojn por skribi programon kiu kreas tabelo kun la entjeroj oni tra kvin kaj poste presas el ĉiu entjero sur nova linio. Kaj se vi havas demandojn, levi vian manon. Mi estas feliĉa akireblaj. Kiel mi diris, ni prenu tri minutojn por skribi ĉi. Ĉu ĉiuj bone se mi iras al nova fenestro kaj fermu? Mi bedaŭras se vi ne havis ŝancon por fini, sed ni tuj faros ĝin kune nun. Do supre sur la ekrano, mi # include cs50.h, # include stdio.h. Ĉu iu povas diri al mi kion tiuj du linioj do? Michael? Studento: ili inkluzivas la bibliotekoj ke CS50 farita kaj ke Steve havas savis vin uzi por faru vian vivon pli facila. JASON Hirschhorn: Do vi diras ke ili inkluzivas la bibliotekoj, kiu CS50 faris, cs50.h, kaj kiu estas nur normo, ĝi venas kun la C pako, stdio.h. Kion vi volas diri inkluzivi la bibliotekoj, kvankam? Ĉu vi povas esti iom pli specifa? Lernanto: Ĝi faras tiel ke vi povas uzi iujn kodo vortojn por havi funkcii okazi sen devi iri kaj fari la funkcio c mem. JASON Hirschhorn: Cxu vi povas doni ekzemplon? Lernanto: Kiel printf Estas unu povas uzi. JASON Hirschhorn: printf. Do vi diris printf estas unu el tiuj, funkcioj kie anstataŭ devi skribi printf en via propra, printf estas inkludis vere en stdio.h, do vi povas simple uzi ĝin kaj transpreni ke ĝi funkcios. En stdio.h, se vi malfermas tiu dosiero, ĉu inkluzivi kiom printf verkoj, ĉiuj de la kodon por printf? Kial vi skuas vian kapon? Lernanto: Ĉar la titolo de dosiero nur inkluzivas la funkcio deklaro. JASON Hirschhorn: Ĝuste pravas. La header dosiero simple inkluzivas la funkcio deklaro. Do esence, kiam vi kompili tion, batis Faru Grafo, kiujn ni devos fari en due, la tradukilo scias, ke se vi uzas printf, printf ekzistas. Ĝi tuj esti difinita ie. Ne estas problemo por vi uzi ĝin. Kaj tiam poste, ĝi devos inkluzivi la kaj nuloj kiuj reale enhavi printf la efektivigo kaj kunfandi ilin kun via kodo. Kiel vi certigi, ke ĝi inkluzivas la kaj nuloj por, ni diru, get kordo? Lernanto: Get kordo estas en cs50.h. JASON Hirschhorn: Ĝuste. Do kiu diras akiri string ekzistas, la funkcio deklaro. Sed tiam la aĵoj kaj nuloj, la duuma dosiero kiu vere komprenas la efektivigo de get kordo? Kiel vi certigi ke iras kun via programo? Lernanto: Pass the enlazador en la komandlinio argumento. JASON Hirschhorn: Pass the enlazador en la komandlinio argumento. Kiel vi faris tion? Lernanto: Ĝi estas la-l linio en la clang JASON Hirschhorn: Ĝuste pravas. Vi diras-l cs50, ĉu ne? Tio inkludas la kaj nuloj. Lernanto: Sed Faru faras ke por vi, ĉu ne? JASON Hirschhorn: Ĝuste. Faru faras tion por vi, sed fine, Vi ne Faru, aŭ vi devos fari Make sur via propra, do tio estas bona afero por memori. Se vi intencis uzi unu el tiuj aliaj bibliotekoj, ne nur vi havas skribi # include kaj tiam la biblioteko. Vi ankaŭ devas ligi ĝin in Kaj tiuj du aferoj estas malsamaj. -L cs50 estas malsamaj ol # include cs50.h. Tiam ni havas int main malplenon krispa krampoj, kaj nun ni tuj kodo ene ĉefa. La unua lineo mi havas ĉi tie estas komento kiu diras, krei tabelo kun ints tra kvin. Kio estas bona vorto por priskribi tion, kion mi havas nun en la ekrano, nur komentoj ene ĉefa? Kion ni nomas tion? Lernanto: _Pseudocode_. JASON Hirschhorn: _Pseudocode_. Dankon, Jeffrey. Tio estas ĝuste pravas. _Pseudocode_. Ĉu vi infanoj vidis _pseudocode_ antaŭe? Levu manon, se vi jam uzis _pseudocode_ antaŭ problemo starigis unu. Ĉirkaŭ duono el vi. Mi forte rekomendas uzi _pseudocode_ rompi problemoj en pli malgranda, pli facila por mordi ekstere pecoj. Ankaŭ, se vi faros la _pseudocode_, vi havi viajn komentojn jam plejparte konstruita, do vi ne devas reiri kaj provi elkompreni kion vi faris. Do povas iu donos al mi tiun unuan linion krei tabelo kun ints unu tra kvin? Vi? Lernanto: Mez kaj tiam vi povas nomi kion ajn nombro, kaj tiam kvadrato krampo kvin. JASON Hirschhorn: Do int nombroj, kvadrata krampo kvin. Lernanto: Egalas, kaj tiam krispa krampoj. JASON Hirschhorn: Egalas, krispa krampoj. Lernanto: Unu, du, tri, kvar. JASON Hirschhorn: Unu, du, tri, kvar, kvin. Lernanto: Kaj tiam krispa krampoj kaj tiam punktokomo. JASON Hirschhorn: Kaj krispa streĉaj kaj punktokomo. Bonega. Presi ĉiun int sur nova linio. Ĉu iu alia doni mi, ke kodo, mi petas? [? Matu'al? ?] Antaŭen. Lernanto: Por ( JASON Hirschhorn: Por ( Lernanto: Mez i = 0 JASON Hirschhorn: Mez i = 0 Lernanto: punktokomo i malpli ol kvin. JASON Hirschhorn: punktokomo, i malpli ol 5. Lernanto: punktokomo, i + +. JASON Hirschhorn: punktokomo, i + +. Lernanto: Ferma krampoj, tiam malferma krampo. JASON Hirschhorn: Ferma krampoj kaj du krampoj. Ene de la krampoj? Lernanto: Kaj tiam printf "% d / n" JASON Hirschhorn: Pardonu, atendu. Printf "% d / n, fermita citaĵo. Lernanto: Kaj tiam fermita citaĵo, komo, grafo, krampo i. JASON Hirschhorn: Komo, grafo, krampo i. Lernanto: Pardonu, nombroj krampo i. JASON Hirschhorn: Nombroj, krampo i. Lernanto: Pardonu. Kaj poste fermis krampoj, punktokomo. JASON Hirschhorn: Ferma krampoj, punktokomo. Mi iros, por savi tion. Ni tuj faros grafo. Kaj kiel mi povas kuri grafo? Lernanto: Deklivo. Lernanto: Dot antaŭen slash - JASON Hirschhorn:. / Kalkuli, ĝuste. Dankon. . / Rakonti. Unu, du, tri, kvar, kvin novaj linioj. Aspektas kiel ĝi funkciis. Jes, Noa? Studento: Vi povus ankaŭ fari malpli ol aŭ egalas al kvar, kiel i estas malpli ol aŭ egala al kvar? Ĉu ekzistas avantaĝo faras malpli ol kvin, aŭ nur malsama maniero de skribi ĝin? JASON Hirschhorn: Do la demando estas vi povus esti farita i estas malpli ol aŭ egalas al kvar anstataŭ i estas malpli ol kvin. Ĉu kiuj laboris la sama? Lernanto: Ĝi devus. JASON Hirschhorn: Jes. Ĝi tute estus labori la sama. Stile, estas ĝenerale malpli ol, kaj vi vidos en dua kiam ni kordoj, vi povas uzi iun vokis strlen, kiun vi vidis antaŭe, por akiri la longo de la kordo. Kaj vi ne povas fari malpli ol aŭ egala strlen. Vi povus fari malpli ol aŭ valoregalas strlen minus unu. Do estas nur pli bela al do malpli ol strlen. Jes? Lernanto: Kaj en la fakta kvizoj, fari ni devas havigi komentoj pri niaj kodo tiel? JASON Hirschhorn: La demando Estis en kvizoj, ĉu vi devas havigi komentoj? Do ni parolos pli pri kvizoj kiam ili supreniru, sed ĝenerale, bona regulo de thumb estas kiam ajn vi estas skribante kodon, havigi komentojn. Se vi ricevas la kodo erara sed la diri pravas, vi povus akiri iom kredito ambaŭ el mi se mi gradeco vi sur problemo aro aŭ en kvizon. Do komentoj estas ĉiam bona por havigi. Dolĉa. Rakonti. Bonega laboro. Ni movi. Kordoj. Kordoj. Ni jam vidis ĉi tion antaŭe en prelego. Ĉi blovis mian menson kiam mi unue trovis ĉi tion. Ĝi probable ne blovu ies ajn menso tie, sed tio ne gravas. Kordoj estas arrays de karakteroj, kaj ili finas kun, kiel vi diris antaŭe, la nula terminator, kiu Estas ĉi / 0 karaktero. Se ni iras, por cxerpi ĉenon sur la tabulo, ni devos desegni ĝin ĉi tie. Do kiom da tempo estas ĉi kordo? Pardonon. Kiom longe estas ĉi kordo? Lernanto: [inaudibles]. JASON Hirschhorn: Kvar? Kial estas kvar? Lernanto: Ĉar la kvinan lokon Estas por la nula karaktero. JASON Hirschhorn: Do la kvinan lokon Estas por la nula karaktero. Do se mi estus kuri strlen sur ĉi tio, li donos al mi kvar. Korekti. Kaj la tabelo, tamen, se mi pravalorizi ĉi tabelo, kiom da spacoj ĉu mi devas peti? Lernanto: Kvin. JASON Hirschhorn: Kvin. Mi devus peti kvin, sed mi povas nur metis kvar karakteroj en ĉi tien ĉar mi bezonas meti tiun nula terminator en la fino. Do ni tuj skribos en "ohai" kaj meti la nula terminator en je la fino. Ni diras tion estas kordo s egalas ĉi. Kio estas s krampo nulo? s krampo nulo, Annie? Lernanto: O. JASON Hirschhorn: Ho, ĝuste. s krampo unu? s krampo kvin? s krampo kvin? Lernanto: Ĉu ne ekzistas. JASON Hirschhorn: Ĉu ne ekzistas. Ĝuste pravas. Cool. Demandojn pri kompreno ĉenojn kiel arrays de karakteroj? Bone, do. Unu pli programo por you guys. Skribu programon kiu petas al la uzanto por string tiam presas el ĉiu karaktero en nova linio. Do ni prenu tri minutoj por skribi ĉi programo, kaj tiam ni povos programi ĝin kiel grupo. Pardonon. Ĉu vi bezonas vidi ĉi tion? Lernanto: N-ro JASON Hirschhorn: okej. Ni prenu unu minuto por kodi ĉi, aŭ almenaŭ komenci sur ĝi. Do vi povas sekvi laborante, sed mi komenci tuj tra ĝi. Tiel kiel antaŭe, mi havas sur la ekrano # Include cs50.h, # include stdio.h. int ĉefa malplena. Ene ĉefa La krispa krampoj, mi havas du komentoj, _pseudocode_. Unu estas peti ĉenon de la uzanto. La dua estas elprinti ĉiu karaktero en nova linio. Do Anna, vi povas doni al mi demandi por kordoj de la uzanto? Lernanto: printf. JASON Hirschhorn: printf? Lernanto: Jes. ( JASON Hirschhorn: ( Studento: "donu al mi kordo. JASON Hirschhorn: "donu mi str - oops - kordo. Lernanto: / n ") punktokomo. JASON Hirschhorn: Finu la kordo, fermita parentezoj, punktokomo. Lernanto: Jes. Kaj tiam apud linio, ŝnuro s = akiri kordo. JASON Hirschhorn: String s = akiri kordo. Lernanto: Jes. Kaj tiam () JASON Hirschhorn: () Lernanto: punktokomo. JASON Hirschhorn: punktokomo. Fantastic. Do mi tuj akiri kordo kaj Mi tuj savos ĝin en kio? Kio estas la variablo nomita kiun vi kreis? Lernanto: String s. JASON Hirschhorn: La variablo estas nomita s. Ĝi estas tipo de ŝnuroj. Ekzakte. Sekva afero ni volas estas elprinti ĉiu signo en nova linio. Kiu povas doni al mi tiu kodo? [Inaudibles]? Ĉu vi povas doni ĝin al mi? Lernanto: Certe. JASON Hirschhorn: Ni faru. Kaj sorry. Mi ne ŝatas ripeti kion vi diras ĉar vi fariĝas ĝi pravas, sed mi devas ripeti ĝin tiel ke kiam ili transskribi tion, ili povas akiri tutan la teksto sur la transskriboj. Do vi povas simple daŭre parolas. Bedaŭrinde, mi devas diri ĝin al vi. Mi bedaŭras, sed - Studento: Tio estas bone. Por int i = 0 JASON Hirschhorn: Por int i = 0 Lernanto: Mi malpli ol - JASON Hirschhorn: punktokomo. Lernanto: Antaŭ ĉi tio, ni povas meti variablo tiel vi ricevas int nomo longo? JASON Hirschhorn: Ho, vi ne volas meti la punktokomo? Akcepti. Do kion vi volas fari post nulo? Lernanto: Mi volas ricevi la korda longeco de s kaj aro kiun al variablo? JASON Hirschhorn: OK, do kiel mi faru tion? Lernanto: Do ​​vi faras int longeco = JASON Hirschhorn: Mez longo = Lernanto: S-T-R-L-Kaj-N. JASON Hirschhorn: S-T-R-L-Kaj-N - Lernanto: De s. Krampoj. JASON Hirschhorn: (s). Lernanto: Kaj tiam mi opinias ke vi devas meti punktokomo inter la du ints. JASON Hirschhorn: A punktokomo post nulo? Lernanto: Jes. Tiam metu punktokomo post tio, kaj vi diras, mi malpli ol longa. i malpli ol longo, kiun estas la variablo. Lernanto: Kaj tiam punktokomo. JASON Hirschhorn: punktokomo. Lernanto: i + +. JASON Hirschhorn: i + +. Jen nia por buklo. OK, ene la buklo. Lernanto: Kaj tiam faru printf. JASON Hirschhorn: printf. Lernanto: krampoj. JASON Hirschhorn: Parentezoj, citaĵoj. Lernanto: Parentezoj, citaĵoj,% c / n. JASON Hirschhorn:% c, OK. Lernanto: / n. JASON Hirschhorn: / n. Lernanto: Ferma citaĵoj. JASON Hirschhorn: Ferma citaĵoj. Lernanto: Komo. JASON Hirschhorn: Komo. Lernanto: S. JASON Hirschhorn: S. Lernanto: Bracket i. JASON Hirschhorn: Bracket i. Lernanto: Kaj tiam fermita parentezoj. JASON Hirschhorn: Ferma parentezoj. Lernanto: Kaj tiam punktokomo. JASON Hirschhorn: punktokomo. Fantastic. Do ni savu ĉi. Faru literumi. Ho knabo. Mi havas kelkajn eraroj. Unua eraron sur linio 11, ĝi diras, atendis esprimo, kaj ĝi estas doni mi eraro, ke la dua int, estas la eraron. Ekzistas iu eraro ĉirkaŭ tie. Ĉu iu scias kio eraron kiu estas? Kurt? Lernanto: Mi pensas, ke tio devus esti komo kaj ne punktokomo. JASON Hirschhorn: OK, komo anstataŭ punktokomo. Tiel estas, ke ĉiuj ni devas redifini? Lernanto: N-ro JASON Hirschhorn: Kion alian Kion ni bezonas ripari? Lernanto: Ni devas inkluzivi string.h. JASON Hirschhorn: Inkluzivi string.h. Kie mi bezonas inkluzivas tion? Lernanto: Sama loko vi inkludante la aliaj aĵoj, dekstra post inkluzivas stdio.h. JASON Hirschhorn: Ni vidu se ĉi kuras unue ĉar ĝenerale, mi ŝatas fiksi unu afero unue, kaj poste ekzekuti ĝin, kaj tiam vidi la eraroj ni akiras. Do ni tuj liberigi la fina kun kontrolo n, ni ne faras sorĉas. Do alia eraro on line 11. Atendita punktokomo. Kaj mi ankoraŭ atingi eraroj en ĉi tiu linio. Do min ne donis eraron dirante ne komprenas kion strlen estas, sed donas al mi erarojn en ĉi tiu linio, do kio alia estas erara? Marku? Marcus. Lernanto: Ĉu vi devas forigi la dua int deklaro? JASON Hirschhorn: Forigi la dua int. Ni provu tion. Nun certe la fina stacio. Faru literumi. Eraro. Implice deklarante biblioteko funkcio strlen. Do nun ni vidas, ke eraro. Kion ni bezonas inkluzivas? Lernanto: String.h. JASON Hirschhorn: Inkluzivi string.h, ni do # include string.h ĉe la supro de la ekrano. Ni ŝparas, fari literumi. Nun kompilitaj. Do denove, la aĵoj kiujn ni bezonis memori linio 12 en nia por buklo kiam ni opcio ĝin, int i = 0, longo = strlen (j). Tio ĉi estas fantazia strategio. La stilo de ĉi tiu estas granda, dezajno de ĉi tiu estas granda. Ni povas iri en tiuj kialoj poste, sed tiu maniero vi nur bezonas voki strlen unufoje anstataŭ ĉiu unuopa tempo vi kuras tra la banton. Tamen, vi devas uzi komon tie kaj vi ne bezonas int denove. Se vi deklarante ambaŭ tiuj variabloj kune, vi ne bezonas int denove. Kaj tiam se vi tuj uzos strlen, kio apartenas al alia biblioteko Funkcio ne inkluzivita en stdio.h aŭ cs50.h, fari certa ke vi inkluzivas string.h. Kurt? Lernanto: Se do vi ne bezonas diri kion tipo longo estas, faras ke signifas ke ĝi devas esti int? Vi ne povus havi du malsamajn tipoj tie? JASON Hirschhorn: Do vi povus havi du malsamajn tipojn. Daŭro estas int tie, tamen. Daŭro estas int ĉar ĝi estas komo kaj tiam la sama aĵo. Lernanto: Do ​​supozas ke ĝi estas tuj esti la sama kiel la unua? JASON Hirschhorn: Ĝuste. Ni ne volas fari ĉi nun, sed vi povas inkluzivi du variabloj en la sama linio uzante unu datumtipo. Do int x, y kreus du variabloj. Do int x, y, se ni faras tion, ĝi donas mi neuzitaj variablo x kaj y ĉar ni ne uzas ilin. Do metante malplena antaŭe estas nur kaprico lertaĵo se vi ne uzas io, por uzi ĝin. Sed kiel vi vidas, Mi kreos x kaj y en la sama linio kun komo. Ĝi estas kreante du entjeroj rajton tie. Do jes, plene eblas krei du aĵojn sur la sama linio apartigita per komo. Ni forigi tiujn, though. Do tie estas sorĉas. Dankon infanoj por kodigo ĝin por ni. Ni faru ĝin unu fojo pli, ruli ĝin. Donu al mi kordo. [Inaudibles], vi faris pli el ĝi. Kio estas la kordo? Lernanto: Saluton. JASON Hirschhorn: Saluton. H-E-L-L-O, ĉiu karaktero sur unu linio. Aspektas granda. Ni ruli ĝin denove. Ĉiam tuj kontroli por angulo kazoj. Kio estas bona angulo kazo por kontroli? Lernanto: Nombro? JASON Hirschhorn: A nombro. Do mi metos en 1, kaj ĝi presas el 1. Tio ne petante literoj, tiel ŝajnas kiel numeroj laboro. Bonan angulo kazo por kontroli. Kio estas alia bona angulo kazo por kontroli? Lernanto: A malplenan ĉenon. JASON Hirschhorn: Hm? Lernanto: Kiel malplena linio. JASON Hirschhorn: Malplena linio. Do ni ne metis en nenio. Kaj kio gets surpaperigataj? Lernanto: Nenio. JASON Hirschhorn: Nenio. Ŝajnas kiel ĝi funkcias. Vi povus provi pli angulo kazoj, sed ĝenerale nombroj, malsama datumoj granda provi, tiel estas nenio. Nenio, nulo, negativaj ĉiam malhumile provi kaj aĵoj vi devus provo, tion certe ni devos provi por kaj Check 50 elprovos por. Demandojn pri spell.c? Bone, ni kapon malantaŭen. Mi havas unu pli programo por vi infanoj por skribi. Ĝi nomiĝas students.c. Tiu estas programo kiu petas al la uzanto por kvin nomoj, tiam hazarde elektas kaj presas el unu el la nomoj. Tiu programo estas iomete pli implikitaj ol la lastaj du ni skribis, do kial ni ne prenos kvin minutoj programi ĝin individue, kaj poste ni instruos vin programi ĝin kiel grupo. Ĉi tiu programo ankaŭ engaĝi kelkajn aferojn eble vi ne vidis antaŭe, do se vi havas demandon pri, kiel fari Mi faros tion, levu vian manon. Mi venos denove kaj atentigi vin en la ĝusta direkto. Sed ni ankaŭ faras ĝin ĉar ĉi estos bona maniero por enkonduki iun temoj, kiuj estas malfacilaj. Do ĝi funkcias, ĉu ne? Lernanto: Jes. JASON Hirschhorn: Kiam ajn vi vin turnos en problemo aro, ke ekzistas multaj manieroj por fari ĝin, sed iuj estas pli eleganta ol aliaj. Ni plonĝi in # Include cs50.h. # Include stdio.h. int main malplena, krispa krampoj. Ene de la krispa krampoj, Mi havas du komentojn. La unua estas, peti la uzanton dum kvin nomoj. La dua estas, hazarde elekti kaj elprinti unu el la nomoj. Do ni faru la unuajn unu, petu la uzanton dum kvin nomoj. Kiu demandis la uzanton dum kvin nomoj kaj povas diri al mi kiel fari tion? Nur du personoj faris la unuan parton. Tri personoj faris la unuan parton. Kvar, kvin. Tom, kiel vi faras ĝin? Studento: Vi deklarus cxeno kaj poste nomon, krampo kvin. JASON Hirschhorn: String enoficigi krampo kvin. Do kio estas tiu linio fari, kordo nomo krampo kvin? Studento: Vi deklarus tabelo de kordoj. JASON Hirschhorn: Ĉi tio estas tabelo de kordoj. Kiom da kordoj iras por havi en ĉi tie? Lernanto: Kvin. JASON Hirschhorn: Kvin. Bonega. Ni tuj nomas ĝin Nomoj ĉar ni ricevos multnombraj ones. OK, poste? Lernanto: Kaj tiam vi havas por buklo - JASON Hirschhorn: Por buklo. Lernanto: - por mi = 0. JASON Hirschhorn: Por (int i = 0. Lernanto: punktokomo. JASON Hirschhorn: punktokomo. Lernanto: Mi malpli ol kvin. JASON Hirschhorn: mi malpli ol kvin. Lernanto: punktokomo. JASON Hirschhorn: punktokomo. Lernanto: i + +. JASON Hirschhorn: i + +. Lernanto: Kaj tiam fermita parentezoj. JASON Hirschhorn: Ferma krampoj, kaj tiam iuj krispa krampoj. Ene de la krispa krampoj? Lernanto: Kaj tiam printf. JASON Hirschhorn: printf. Lernanto: Malferma krampo, nomo% d. JASON Hirschhorn: Pardonu? Lernanto: Nomo. JASON Hirschhorn: Nomo. Lernanto: Kaj tiam spaco, kaj tiam% d. JASON Hirschhorn: Nomo, spaco,% d. Lernanto: Kaj tiam / n, kaj tiam fermita. JASON Hirschhorn: Do nomo, spaco, % D / n, fermita parentezoj. Lernanto: Komo, mi + 1. Mi bedaŭras. Fermita citaĵo, kaj poste komo, mi +1. JASON Hirschhorn: Ferma citaĵo, komo, i +1. Lernanto: Jes. Kaj tiam la sekva linio - JASON Hirschhorn: i + 1. Lernanto: Jes. Kaj tiam la sekvanta slide Estas nomoj krampo i. JASON Hirschhorn: Sekva linio Estas nomoj krampo i. Studento: = akiri kordo. JASON Hirschhorn: = Akiri - ĉefurbo G-E-T - kordo. Oops, sorry. Lernanto: Open fermita krampoj kaj tiam - JASON Hirschhorn: Malfermi, fermita paren. Lernanto: punktokomo. JASON Hirschhorn: punktokomo. Bone, do vi pravalorizi la tabelo de kordoj, nomoj, kaj tiam iru tra por ciklo, kaj kvinfoje elprinti iun instigas al la uzanto kaj tiam stoki kvin kordoj. Ĉu iu havas neniun ĝustigas por tio? Tom, mi kredas ke ĉiuj koincidas kun vi. Aspektas sufiĉe bone. Akcepti. Kial vi faris tion mi +1, kvankam? Lernanto: Mi volas diri, ne havas esti, sed mi +1 tiel ke ĝi estas nomo estos sola por enoficigi kvin. Alie, ĝi estus nomumita nulo por enoficigi kvar. JASON Hirschhorn: Do you did mi +1 ĉar se ĝi havus presita el nulo per kvar ĉar tiel estas kiel komputiloj pensi, sed homoj ne vere legis tiel. Tio estas alia afero vi renkontos. Foje, kiam vi presi ion al la uzanto, vi volas fari ĝin iomete pli belaj, kaj farante i +1 en ĉi tiu kazo estas maniero por fari ĝin pli bela. Mi ankaŭ vidas kvin dufoje, kordoj nomo estas kvin, i estas malpli ol kvin. Mi scias, kie vi ricevis la kvin. Vi havas ĝin de mi rakontis vi kvin nomoj. Sed se ni volis fari la kodo iomete pli fortika, aĵo kiun ni povis ne estas el ĉi tie, ekstere de int, ni povus fari ion kiel tion, # Difini, kaj ni povus fari NAMES 5. Do esence, kien mi skribas ĉefurbo N, ĉefurbo A, ĉefurbo M, ĉefurbo E, ĉefurbo S, ke kordoj, ĝi anstataŭos ke kun 5 en la kodo. Aŭ ni simple nomas ĝin - ni instruos vin nur nomas ĝin NUMERO. Do mi difinanta tutan caps NUMBER esti 5. Do nun kien ajn mi havas la numero 5, mi povas anstataŭigi ĝin per ĉiuj kaskedoj NUMERO. Kaj nun, se mi volas ŝanĝi la nombron de nomoj, ĉiuj mi devas fari estas ĉi tiu lineo, linio kvar, kie mi havas # Difini numero 5, ŝanĝu tion al 10, aŭ ŝanĝi tion al 4. Kiam via kodo ricevas plu, vi ne tuj memoras ĉiujn lokojn vi meti kiom da nomoj vi volis, kaj en Por ke vi ne perdi unu, tio estas bona maniero fari ĝin, trovi ion supren supro kaj tiam simple uzas tiun frazon ĉie en viaj kodo. Marcus? Lernanto: Ĉu tio estas stile preferita ol sume difinanta konstanta n? JASON Hirschhorn: Tia estas tiu stile preferis ol sume difini konstanta n? Do vi jene vi povus fari, int nombro = 5? Lernanto: Cxu ili havas konsonantoj en C aŭ ne? JASON Hirschhorn: Aŭ const - en egalaj. Do vi diras nur malloka variablo? Lernanto: Jes. JASON Hirschhorn: Do stile, ne estas nepre unu dekstre respondi, sed ambaŭ el tiuj estas pli bonaj ol ĵeti tiujn hazarda nombroj en viaj kodo. Ni nomas ilin magia nombroj. Kiam mi rigardas vian kodon aŭ kiam iu estas legante tra ĝi, oni ne volas ĝuste tiuj hazardaj nombroj kiuj ne havas sencon. Eĉ la numero 26, kiu ĝenerale estas la nombro de literoj en la alfabeto, estas pli bone difini alfabeto ĝis supro kaj savi la numero 26 en tiu ĉeno, se tio havas sencon. Aŭ problemo starigis unu, prefere ol - denove, ni ne parolu pri tio en la tempo, sed anstataŭ simple ĵeti en 25 partoj aŭ 10, vi povas savi la numero 25 de kazerno aŭ 10 kiel Diru min, kaj kiu faras ĝin facila por kiu estas legante tra via kodo komprenas kial vi elektis tiun numeron. Kaj ankaŭ por vi, se vi iam volas ĝisdatigi vian kodon, ĝi faras iom pli fortika. Jes? Lernanto: Ĉu ĉi tiu kodo ankaŭ iri esti disponeblaj por ni laux? JASON Hirschhorn: Ĉiuj tiuj kodoj kiuj ni skribis kune estas tuj estos retpoŝte al vi infanoj kaj disponebla. Jes. Do demandu la uzanton dum kvin nomoj. Hazarde elekti kaj presi unu el la nomoj. Kiu faris tiun linion? Ĉi tiu estas la trickiest linio tie. Pardonu, Tom. Vi faris tre bonan laboron, sed tiu estas iom trickier. Marcus, iru antaŭen. Lernanto: Nu unue, vi tuj bezonas inkluzivi stdlib.h kaj time.h. JASON Hirschhorn: Do vi diras, je la supro, inkluzivas du bibliotekoj. Vi volas, ke mi inkluzivas S-T-D-L-mi-B dot H, Norma biblioteko, kaj kio Estis la alia? Lernanto: Time.h. JASON Hirschhorn: # include time.h. Do jen estas du pli bibliotekoj. Mi supozas nun ni tuj estos uzante funkcioj, kiuj estas enhavitaj en tiuj du, kio estas kial vi bezonis por inkludi ilin? Lernanto: do, unue vi estas tuj volas skribi srand. JASON Hirschhorn: Srand. Lernanto: (tempo (0) JASON Hirschhorn: Pardonu. Srand (tempo ( Lernanto: 0. JASON Hirschhorn: 0. Lernanto:)), punktokomo. JASON Hirschhorn: Alia fermita paren? Punktokomo. Mi iras al nur anstataŭi via nulo kun NULL. Ĝi devos fari pri la sama afero, sed Ĝenerale, vi vidos NULL, kiu Ni parolos pri tio linio en dua. Lernanto: Stile bona? JASON Hirschhorn: Ĝenerale, personoj dekstra NULL, sed tion saman. Lernanto: Kaj tiam _int_ nomo. JASON Hirschhorn: Mez nomo. Studento: = JASON Hirschhorn: = Lernanto: Rand. JASON Hirschhorn: Rand. Lernanto: () JASON Hirschhorn: () Lernanto: Modulo nombro. JASON Hirschhorn: Kio estas module? La karaktero? La procento karaktero? Lernanto: elcento karaktero. Module NUMBER ke vi difinis supren supro. JASON Hirschhorn: Modulo NUMERO. Lernanto: Kaj tiam punktokomo. JASON Hirschhorn: punktokomo. Lernanto: Kaj tiam nova linio, printf. JASON Hirschhorn: printf. Studento: ( JASON Hirschhorn: ( Studento: " JASON Hirschhorn: " Studento:% s / n JASON Hirschhorn:% s / n Studento: " JASON Hirschhorn:% s / n " Lernanto: Komo, spaco nomoj. JASON Hirschhorn: Spaco - Lernanto: Ho, mi supozas, kio ni nomas ĝin ĉi tie? JASON Hirschhorn: Ni nomas ĝin nomoj. Lernanto: Malferma krampo, nomo. JASON Hirschhorn: Malferma krampo, nomo. Lernanto: Ferma krampo. JASON Hirschhorn: Ferma krampo. Studento:) JASON Hirschhorn:) Lernanto: punktokomo. JASON Hirschhorn: punktokomo. Bone, ni helpos. Ni faras ĉi tiun kodon. Studentoj. Ni kuros ĉi-kodo. Studentoj. Ne. / Studento. . / Studentoj. Nomo tiu. Ni diros Davido. Nomo du, RJ. Nomo tri, Rob. Nomo kvar, Lucas. Nomo kvin, Jozef. Kaj poste presas el Jozef denove. Do mi kuros ĉi denove. Lasu min fari la samaj nomoj. Davido, RJ, Rob, Lucas, Jozef. Kaj donis al mi Davidon en la tempo. Do mi faris la samon, sed donis mi alia afero, kaj tio estas ĉar, kompreneble, ni petas por hazarda nomo. Do mi pensas, bazita ekstere de mi vagante ĉirkaŭ la ĉambro, kiu multaj homoj verŝajne atingis la unua parto pravas, alĝustigo de tiu tabelo kaj poste atingi ĉiuj nomoj. Mi parolas pri linioj 10 tra 16. Sed linioj 18 tra 21 estas probable iuj aĵoj vi ne vidis antaŭe, do ni iru tra tiuj. Ĉi tiu linio, srand tempo NULL estas esence - sorry, ni saltas malsupren linio, rand (). Tio donas al vi hazarda numeron, hazarda entjero. Kaj se vi batis viro rand, kiu multan vi faris - M-Al-N spaco R-Al-N-D - en la fina stacio kiel ĉi tiu, M-Al-N spaco R-Al-N-D, batis Eniru. Vi venis al la manlibro kaj povos legi ke la rand komando eliroj num pseŭdo hazarda bitokoj post semante la hazarda nombro generatoro unufoje. Do jen priskribo. Tio estas kion rand faras, donas vi hazarda nombro kiam vi nomas tiun funkcion. Bedaŭrinde, ĝi ne estas vere hazarda ĉar se vi simple nomas hazarda sen alveni tio iuj semoj, iuj deirpunkto, estos ĉiam elekti la sama kaj ĝi uzas formulo por determini la proksima. Do, se vi nomas rand, ĝi instruos vin ĝuste doni al vi la samon. Estos tre antaŭvidebla. Ĝi fakte ne estos hazardo. Do kion ni bezonas por fari, por Marcus la instrukciojn por mi, estis semo rand kun io alia, kiu estas kio la srand funkcio faras. Ĝi semoj rand kun io iom pli hazarda ol la sama afero, kaj li semante ĝin kun la tempo NULL, kiu Estas, simple per konvencio, la aktuala tempo en sekundoj. Do vi supozante ke ĉiuj ne tuj kuri la kodon ĉe la ĝusta sama dua, tial estas sekura vetas ke tempo NULL tuj estos malsama ĉiufoje tiu kodo estas kuri. Sekura vetas ke tiel, srand volo semo rand kun io malsama ĉiu solan fojon. Do, per konvencio, kiam ni volas hazarda nombro, ni skribi ĉi tiu linio, srand tempo NULL, por doni al ni multe pli hazarda semon, kaj poste ni kuru rand, kiu donas al ni hazarda nombro. Jes? Lernanto: Ĉu vi povas diri kion vi celas per semo? JASON Hirschhorn: Semo kiel en - tiel rand iras por repreni iu nombro kaj gxi tuj uzi iun formulo por alveni tie. Do tuj komenci kun iu kaj tiam turni ĝin en ion bazita ekstere de tiu formulo. Se vi ĉiam donas al ĝi la samon, ĝi estas ĉiam tuj igi ĝin la sama afero. Por ke unua kiu doni estas la semo. Do vi volas doni iun malsamaj komenci evi, kaj tiel ĝi remetos ĝin en ion malsaman. Kaj poste fine, linio 20, tiu% estas nomata la module, kaj tio estas malklara. Tio estas io kion estas iom malsamaj ĉi tie ke vi ne vere havas en reala vivo math. Sed esence, kiam vi prenas giganto numeron kaj vi dividas en C, kio okazas al la resto? Lernanto: Ĝi prenas detranĉita. JASON Hirschhorn: ĝi akiras detranĉita. Do 20 dividite per 3 estas kio? Kion tio revenos al vi, 20 dividite per 3. Pardonu, 10 dividite per 3. Kion tio revenos al vi? Lernanto: [inaudibles]. JASON Hirschhorn: 10 dividite per 3 simple revenas 3, ne 3 reston 1. Do kio 10 module 3 revenas estas nur la resto, 1. Do se vi volis scii, kio 10 dividita per 3 fakte estis, vi farus fari 10 dividite per 3, oni kredus ke via 3, kaj tiam vi farus 10 module 3, kaj vi volas akiri 1. Do vi volas rimarki ke 10 dividita per 3 estas 3, resto 1. Kaj en ĉi tiu linio, rand eblis ĉiu entjero, esence. Do module estas diranta, dividi ĝin nombro, kiu estas en ĉi tiu kazo 5. Kaj se vi iam dividi per nombro, la entjero ĉiam devas esti malpli ol tiu numero. Do se vi dividanta per nombro 5, la resto estas ĉiam tuj estos nulo tra kvar. Tio estas ĝuste kiel la matematiko laboras ekstere. Tiel granda nombro moduloed de pli malgranda nombro estos ĉiam revenas forĵetaĵo kaj estos ĉiam revenos iun nombro kiu estas malpli ol la nombro vi dividita per. Ĉu iu havas demandojn pri module, ĉar ĝi venos en tre, tre utila, do mi volas certigi ĉiuj komprenas ĝin? Cool. Kaj ni vidis, ke ĉi tiu programo funkciis. OK, movante plu. Tiel proksimaj, ni tuj iru en funkcioj, kaj ni tuj iru tra la resto de ĉi tiu aĵo bela rapide ĉar mi volas atingi komandlinio argumentoj. Do funkcioj estas esence, kiel vi vidis, nigraj skatoloj. Ili portas aĵojn en nomata parametroj, ili faru ion por ili, ĉu ŝanĝi ilin aŭ krei kromefikoj, kaj fine, ili kracxis ion, kio estas la reveno valoro. Ĉu iu donos al mi unu kialo kial ni uzus funkcioj? Iu? Unu kialo kial ni volas uzi funkciojn? Iu? Mi vidis du manoj. Kio estas bona kialo? Marcus? Lernanto: Se vi havas nomi la sama chunk de kodo plurfoje. JASON Hirschhorn: Bone, se vi bezonas nomi la saman eron de kodi plurajn fojojn. Jeff, ĉu vi havas malsaman kialon? Lernanto: Nur por ke vi povas kodi malpli. JASON Hirschhorn: Vi povas kodi malpli. Ĝuste. Se vi volas fari ion multe - en la antaŭa kodo, mi povus havi skribita akiri string kvin fojojn, sed por buklo faras aspektas pli bela kaj vi devas skribi malpli kodo. Funkcioj estas simila ideo. Se mi volus fari la samon estas multe, movi ĝin al funkcio kaj invitas ke funkcii ĉiufoje. Kiu faros tion por vi. Tio estas granda kialo uzi funkcioj. Do anatomio de funkcio. Funkcio volo ĝenerale aspekti kiel ĉi tio. Ĝi devos komenci kun la reveno tipo, tiam vi ricevos la nomon. Ĝi prenos la argumentoj, alie konata kiel la parametroj, kaj ene tiuj buklaj krampoj, vi skribu vian kodon. Ni vidis unu funkcio tre. Tio estas ĉefa. Jen estas ĉefa supermetitaj sur ke anatomio mi havis antaŭe. Kion int dekstra tie signifi? Kion int signifas? Kiam mi skribas int main (void). Lernanto: Reiri tipo? JASON Hirschhorn: Pardonu? Lernanto: La reveno tipo. JASON Hirschhorn: Mez estas la revenu tipo, ĝuste pravas. Ĉefa redonas int. Kio estas ĉefa? Lernanto: Funkcio nomo. JASON Hirschhorn: Ĉefa estas la nomo de la funkcio. Ĝuste pravas. Kaj dezerta? Kio estas malplena ene de la parentezoj? Lernanto: Ne prenu neniu ekstera valoro. JASON Hirschhorn: Do dezerta - dekstre. Ene de la krampoj, ni metis la parametroj aŭ la argumentoj la funkcio prenas, kio iras ene de la nigra skatolo. Kiam vi skribas malplena, vi diras ĉi prenas nenion in Do int main malplenon signifas ĉefaj la ne prenante ion in Ene de la krispa krampoj, ni havas kelkajn kodo, kaj tiam ni vidos ĉe la fino revenu nulo. Kion reveno nulo signifas? Nu, ni parolis pri reveno tipo. Ĉefa bezonas reveni al int. Tion ĉi tiu linio havas. Ĝi redonas int, nulo. Kompreneble, ni ne vidis, ke multo ĉar en la programado ni faras kun la maŝinoj ni faras kaj la tradukiloj ni uzas nuntempe, vi ne bezonas tiun linion. Ĉefaj estas speciala sufiĉas ke ĝi scias kiam oni atingas la finon de la ĉefaj, nur revenu nulo se ĉio iris bone. Fakte, se io ne iras bone, ĉefa ofte reveni malsama numeron signifante ke io misokazis kun via programo. Do ĝenerale kiam vi vidas kodon, vi ne skribu reveno nulo, sed estas bona scii, ke ĝi okazas malantaŭ la scenoj ĉar kiam ajn vi skribos alia tipo de funkcio, vi tuj devas inkluzivi revenon linion. Se vi diras ke mi tuj revenu al int, vi devas skribi reveni ion. Se vi diras malplenon ĝis tie en la komenco, void main malplena, por Ekzemple, tiam ĝi ne reveni nenion - malplena signifas nenion - tial vi ne bezonas, ke reveno linion. Sed vi iam skribi iun tio ne estas detruos la revenon tipo, vi bezonas linio kiu diras reveno kaj vi bezonas meti iun tie kiu kongruas kun la tipo. Demandojn pri tio? Dolĉa. Medio. Tio estas io ni menciita kiel bone. Ĉiu variablo, kiel ni scias, havas iun medion, kaj tio estas esence parolas pri kie la variablo povas aŭ ne povas esti referenco. Kaj mi ŝatus diri kio okazas en krispa krampoj restas ene la krispa krampoj. Do ekzemple, se ni rigardas tiun kodon, ni difini malloka variablo eksteren de la ĉefaj, int a, ĝis ĉi tie ĉe la supro. Ni nomas alian int estas ene ĉefa. Ni havas iom pli da krispa krampoj, kaj ni vokas alian int a. Ni havas tri al la en kodo. Ĉi tiuj ne estas la sama aĵo. Mi kreis tri malsamaj variabloj. Tiam ene tiuj ena krispa krampoj, mi diras al = 4. Kiu estas kiu parolas, la unua, la dua, aŭ la tria? Lernanto: La trian. JASON Hirschhorn: Ĝi parolas pri la tria. Ĉiuj el tiuj oni fakte povas esti raportis en tiu aparta Ekzemple pro lia medio ĉiu iras en ĉi tiuj plej interna krispa krampoj. Tamen, kiam vi nomas tion la sama nomo, tie io nomita kaŝi. Do vi nur trakti aŭ ripari aŭ uzi la plej freŝaj variablo, aŭ la plej proksima al vi. Do ene tie, ĉi tiu tria estas plej proksima al tiu linio, a = 4, do tuŝas la trian. Kaj la lasta linio, a = 2, kiu estas ke parolas, la unua, dua, aŭ tria? Lernanto: Dua. JASON Hirschhorn: Ĝi parolas pri la dua. Kompreneble, la tria estas plej proksima al ĝin en la kodo, sed la tria ne ekzistas estis tiuj buklaj krampoj. Iam vi atingos ke fermita krispa streĉa, estas kiel ĝi estas for, esence. Do la du solaj vi lasis estas tiuj du unuaj, kaj kompreneble, nun ĝi estas plej proksima al la dua. Do, tio estas bona afero memori pri medio. Ekzemple, mi estas certa ke vi renkontis tio en fari dum buklo. Se vi pravalorizi la variablo ene la ne dum loop kaj tiam vi provas konsenti li eksteren, verŝajne atingis iun averto kiel, tiu variablo ne ekzistas. Tio estas pro la medio ideo, ke tio nur ekzistas ene tiuj buklaj krampoj. Krispa krampoj estas kiel giganta brakumon ke vi donas al via kodo, estas alia maniero pensi pri ĝi. Do tiu estas alia funkcio, iu por vi infanoj al kodo, hellofunction.c. Ni tuj salti ke nuntempe, sed ĉi tio estas iu Mi kuraĝigas vin ekzerci en via propra. Skribu programon en kiu ĉefa alvokoj alia funkcio kiu presas ekster saluto al la uzanto. Ĝi estas esence prenante saluton mondo kaj abstracting ke printf en alia funkcio. Sed ni ne faros tion nun ĉar ni ne havas tanta tempo lasis kiel mi estus ŝatinta. Do funkcio deklaro. Ni jam vidis ĉi tion antaŭe ankaŭ. Se vi volas skribi alian funkcion, Vi devas lasi la komputilon scias kaj ĉefa scias, ke gxi ekzistas. Do kio ni estas super ĉefa, ni skribi la reveno tipo, la nomon, kaj la parametroj, kaj poste sube ĉefa, cxi tie, ni vere kopii tiun linion kaj poste skribu la reala kodo. Do ĉi tiu maniero, se vi nomas la funkcio en ĉefa ĉe la supro, ĉefa scias ke saluton ekzistas, ekzemple, se mi nomi saluton, kaj tiam ĝi aspektas al la efektivigo sube. Kio okazas se mi ne inkluzivas tiun laŭliniigi supro, detruos saluton (void)? Se mi ne inkludas tiu linio kaj ĉefa alvokoj saluton, mi estas tuj ricevas eraron. Mi tuj ricevas eraron pro la tradukilo ne scias ke tio ekzistas. Tio similas al tio ni do # include cs50.h. Kio esence cs50.h faras metas akiri kordo tie supre. Ĝi metante akiri int tie supre. Ĝi estas meti ĉiuj el tiuj funkcio prototipoj antaux ĉefa tiel ke kiam vi nomas ilin en ĉefa, ĉefa scias ke tio ekzistas. Tio estas kion tiuj. H dosierojn fari. Kaj do se vi iras fari vian propran funkcio, vi devas certigi, vi metis tiun prototipo tie supre. Demandojn pri ĉi ĝis nun? Komandlinio argumentoj. Tio estas kion ni tuj finos on, kaj poste espereble ni instruos vin elpremi en iuj pset. Mi ne scias se ni povos elpremi ke ĉar de tempo, sed kun vi infanoj, kiuj cxi tie, kaj se vi infanoj volas diri poste por iom, ni povas transiri ĝin ekstere. Sed ni tuj finos kun komandlinio argumentoj por la lasta 15 minutoj. Ni vekigxu, Michael? Vi estas vigla? Bona. Mi ne scias se vi dormos per viaj okuloj fermitaj. Estus malfacila. Komandlinio argumentoj. Tiuj estas unu maniero por pasi informoj en programo. Eventuale, ni renkontos aliajn. Sed esence, ni tuj haltos skribi int main (void) se ni volas preni iom da komanda linio argumentoj. Ni tuj skribos tion vokis int main (int argc, kordo argv, krampoj. Tio estas malklara. Tio estas multe da literoj kiuj ne estas en homa angla, do ni tuj elpaki ilin nun. Argc staras por argumento grafo - kaj denove, ĉiu el ĉi tiuj volo estos disponeblaj en linio - kaj tio estas la nombro de argumentoj. Argv staras por argumento vektoro, kaj tiuj estas la argumentoj sin. Ĝi estas aro de kordoj. Ni efektive vidis tabelo de ŝnuroj antaŭ hodiaŭ. Ni kreis en la lasta Programo ni kodita. Do jen ekzemplo. Mi skribas. / Ohai cs50 sekcio sur mia komandlinio. Argc en ĉi tiu kazo egalas 3. Argv krampo 0 estas ohai, argv krampo 1 estas cs50, argv krampo 2 estas sekcio. Denove, argc estas la nombro de argumentoj, kaj vojaĝo vin iom iom, ni ĉiam rakonti la nomo de la funkcio kiel la unua argumento. Do, en tiu kazo, estas tri argumentoj, la nomo de la funkcio kaj tiam tiuj du, ke mi tajpis in Tuj, ni tuj por savi tiujn argumentoj sin en argv. Kaj denove, kiel ni vidis antaŭe, ni faris ĉi tio en la lasta programo ni kodita. Vi povas movi tra la tabelo de argv kaj akiri tiujn ŝnurojn. Tio estas esence kion ni faris en la finon de nia lasta programo. Ni elektis hazardan nomon kaj tiam iris al nomoj krampo ajn kaj presita el la kordo tie lokitaj. Sur supro de nur unu tabelo, ĉar kordoj mem estas sensilo, kiel raportis, vi povas havi arrays de sensilo, kiu estas esence kio argv estas. Unu maniero vi povas pensi ĉi tiu estas vicoj kaj kolumnoj. Mi povas desegni ke ĝuste nun. Do argv - tio sen viŝi. Ni desegni sub ohai. Do, se mi skribis en, ohai cs50 sekcio, Mi tuj detranĉi sekcio por ĉi tiu ekzemplo. Sed fundamente, mia _multi_-dimensia tabelo, ohai cs50, ni tuj faros sekto. Do jen, mi povas aliri - se Mi nur donas argv unu numeron - tio estas malĝusta. Kio okazas en ĉi diagramon? Studento: Komencdato je nulo. JASON Hirschhorn: Ĝi devus komencu per nulo. Mi devus probable ankaŭ turni ĝin, sed kiam mi jam desegnita ĝin, mi estas tuj forlasi ĝin tie nun. Sed ĝi komencas je nulo. Tio estas prava. Mi bedaŭras se tiu estas malgranda. Can you guys ia vidas? Do, se mi faras argv 0, mi instruos vin akiri ĉiujn ohai. Se mi faras argv 1, mi ricevos ĉiuj cs50. Se mi faras argv 2, mi ricevos ĉiuj sekto. Sed nun, kiel ni diris, kordoj estas arrays sin. Do kion mi povas fari estas Mi povas trakti ĉi kiel _multi_-dimensia tabelo, kaj mi povas fari ion laŭ la linioj de argv 0, 0, kiu donas al mi nur la karaktero 0. Argv 0, 1, kiu donas al mi ĝuste h. Argv 1, 3, kiu donas al mi nur ĉi 0 cxi tie malsupre en cs50. Do ĉar kordoj sin estas arrays, ni metante kiu en alia tabelo. Ni nun havas tabelo de sensilo, kaj ni can indekson en nia unua tabelo kaj tiam indekson en nia dua tabelo. Kaj kiel vi devus atendi, ni faros tion por nur meti tiujn du - ni faru la rektaj krampoj nur tuj apud unu la alian. Do, en tiu ekzemplo, argv 1 estas cs50 kaj argv 1, 2, kiel ni diris, estas nur 5. Ĉu iu havas demandojn pri _multi_-dimensiaj matricoj? Vi infanoj faras awesome. Dolĉa. Do ni havas alian programon ĉi tie, kaj ĉi tiu estas la fina afero ni estas tuj faros ĝuste nun. Do mi volas ke vi skribi programon kiu prenas uzanto plenan nomon, du kaj nur du komandlinio argumentoj, kaj fine, elprinti saluto al la uzanto kiu inkludas lia unua nomo. Do kial vi ne prenas tri aŭ kvar minutojn por fari tion, kaj poste ni iros super ĝin kiel grupo, kaj tiam ni devos enpaki kolektis? Kaj denove, ĉi tie, kiam ni diras preni uzanto plenan nomon por la priskribo de ĉi tiu problemo, ĝi devus esti komando linio argumentoj, ne uzante atingi ŝnuron. Jes, Marcus? Lernanto: Do ​​vi diras, du komando linio argumentoj, estas, ke krom la. / kuri, aŭ - JASON Hirschhorn: Bona demando. Do, inkluzive de la. / Run, tri komandlinio argumentoj. Aŭ inkludante la. / Personigita, en tiu kazo, ĉar tio estas la nomo de ĉi tiu dosiero. Do argc estus tri. Sed mi volas nur du argumentojn donis al la programo. Mi devus specifi ke. Mi faros, ke ŝanĝo antaŭ ol mi afiŝi tiujn kaj sendu ilin al vi guys. Lernanto: Kio, se vi havi meza nomo? JASON Hirschhorn: Se vi havas mezo nomo, vi estas el sorton. Mi bedaŭras. Aŭ se vi nur iru de Shakira, vi estas ankaŭ el sorton. Jes? Lernanto: Do ​​kiam homoj ne havas cs50.h, cxu ili povas difini argv kiel char stelo argv? Aŭ ĉu ankoraŭ nomita string argv? JASON Hirschhorn: Jes. Do kordo, denove, ni maski super kio ekzakte okazas tie. Tio tuj estos malpakis eble merkredon, sed baldaŭ. Estas kiel trejnado radoj. Ĉar esence, estas la sama aĵo. Do ni prenu alian minuton por plani ĉi tio, kaj poste ni iros ĝin kiel grupo, kaj poste kiel mi diris, enpaki supren. Kaj mi pensas ke ili estas ankoraŭ plia dolĉa, do you guys devus espereble preni ke, aŭ bonvolu fari tion. Pardonu se vi ankoraŭ skribas, sed mi volas plonĝi en kaj ni povas fini ĝin kune. Do mi skribis en, # include cs50.h, # include stdio.h. int main (void), krispa streĉa, krispa streĉa, enen tri linioj de _pseudocode_, prenu uzanto plenan nomon, du kaj nur du komandlinio argumentoj, elprinti saluto al la uzanto kiu inkludas lia unua nomo. Do la unua, preni de uzanto plena nomo. Kiu povas helpi min preni de uzanto plena nomo? Kjel mi faras tiun parton? Ĉu vi infanoj fari unuan parton? Prenu uzanto plena nomo. Nu, por tiu komandlinio argumento, kion mi skribas? Kion mi ŝanĝos pri mia funkcio deklaro? Lernanto: Vi ne volas ĝi estu malplena plu. JASON Hirschhorn: Ĝuste. Mi ne volas ke ĝi estu malplena. Kion mi volas ke ĝi estu? Lernanto: Mez argc. JASON Hirschhorn: Mez argc. Lernanto: String argv. JASON Hirschhorn: String argv. Lernanto: Bracket, krampo. JASON Hirschhorn: Bracket, krampo. Tio estas ĝuste pravas, kaj tio estas efektive kiel mi ricevos de uzanto plena nomo. Ili tuj metis ĝin tien. Por ke oni estas farata. Do nun mi volas du kaj nur du komandlinio argumentoj. Do Noa, kio estas unu maniero mi povas kontrolu la nombro de komando linio argumentoj mi havas? Studento: Vi fari se komunikaĵo. JASON Hirschhorn: Se deklaro, ĝuste. Kion mi volas, kiel la kondiĉo? Lernanto: Se argc granda ol 3. JASON Hirschhorn: Se argc estas pli granda ol 3. Se argc granda ol 3, kion mi faru? Lernanto: Reiri 1. JASON Hirschhorn: Return 1. Ĉu tio certigi mi havas du kaj nur du? Lernanto: N-ro Se argc estas pli granda ol 3 kaj malpli ol 2. JASON Hirschhorn: Se argc estas pli granda ol 3 kaj argc estas malpli ol 2. Kio estas unu maniero mi povas skribi tion en ĝuste unu linio, aŭ sen uzi tiu kaj Buleaj operatoro? Lernanto: Ne egala al 2. JASON Hirschhorn: Se argc estas ne egala al 2. Ekzakte. Do se argc ne estas egala al 2, kiu donos al mi tiun programon, personigita, kiam Mi kuros, kaj kiu donos al mi kiom da komandlinio argumentoj? Kiom mi kontroli por? Pardonon. Lasu min reword tio. Se argc = 2, kiom da aferoj faris la uzanto skribi en la linio? Lernanto: Unu. JASON Hirschhorn: Nur unu. Do antaŭe, vi pravis, Noa. Kion mi vere bezonas meti tie? Studento: Tio egalas 3. JASON Hirschhorn: Argc ne egalas 3. Mi volas egali 3 ĉar mi volas personigita plus la aliaj du. Do se argc ne egalas 3, revenu 1. Kial vi diras reveni 1? Lernanto: Ĉar tiu signifas tio estas malĝusta. JASON Hirschhorn: Tio signifas, ke ĝi estas erara, kaj kio, kiu faros? Lernanto: Re-instigas la uzanton. JASON Hirschhorn: ĝi tuj quit la programo, do ĝi devos kuri denove, sed ni ne havas nenion en ĉi tien por peti ilin denove. Mi ne petis tion. Do jen ĝuste pravas. Reveno 1 simple fermas la programon. Granda. Kaj elprinti saluto al la uzanto kiu inkludas lia unua nomo. Kiel mi povas fari tion? Anna? Lernanto: printf. JASON Hirschhorn: printf. Studento: (" JASON Hirschhorn: ( Studento: "saluton JASON Hirschhorn: "saluton Studento:% s JASON Hirschhorn:% s Lernanto: / n JASON Hirschhorn: / n Studento: ", JASON Hirschhorn: ", Lernanto: argv JASON Hirschhorn: Pardonu? Lernanto: argv JASON Hirschhorn: argv Lernanto: Square krampoj 1. JASON Hirschhorn: Square krampoj? Lernanto: 1. JASON Hirschhorn: 1. Lernanto: Kaj) punktokomo. JASON Hirschhorn:) komo. Ni kuru ĉi. Faru personigita. . / Personigita. Ĝi simple quit. Kial ĝi quit? Studento: Vi ne metis neniun argumentoj. JASON Hirschhorn: mi ne meti ajna argumentoj in Aspektas granda. You guys najlis ĝin. Do denove, vi eniris en argv kaj vi kontrolis komence argc. Tiuj estas du gravaj aĵoj por memori. Do en niaj du lastaj minutoj antaŭ ol ni forlasi, ni ne atingas pset du, sed kiel mi diris, se vi volas resti post por 10 minutoj, mi volus li feliĉa iri kun vi infanoj la logikon por ĉi tiuj problemo aroj. Ni havis multe por kovri hodiaŭ do mi ne alvenis al ili. Ĝenerale, mi ŝatas inkluzivi ke je la fino. Do se vi volas bati ĉirkaŭe, bati ĉirkaŭ dum 10 minutoj. Ni faros tion. Tiam, kiel mi menciis komence, pset nulo kaj oni, ni ricevos ke sugestoj al vi kiel tuj kiam ebla. La celo estas akiri pset unu sugestoj, la komentoj parto, antaŭ pset du estas venkitaj. Do se vi faris iujn erarojn aŭ stile, aĵoj povus esti bona, vi havas tiun informon por vi ne faru la samajn aferojn en pset du. Kaj poste en la estonteco, vi ricevos tutan de via pset sugestoj kaj komentoj reen antaŭ la proksima ĝi devas. Fine, se mi povus meti en alia kontaktŝtopilo por retrokuplo. Ĉi tio estas via unua sekcio. Ĝi estis mia unua sekcio instruante ĉi tiu jaro. Iru tien. Skribu stuff, bonaj kaj malbonaj, kaj mi uzos ĝin por fari sekcio bona proksima fojo. Kaj laste, denove, se vi bezonas nenio, lasu min scii. Mi estas pli feliĉaj helpi you guys. Se vi volas nur bombono, mi havos ekstran dolĉa. Mi estas feliĉa por alporti ĝin al vi. Ĉi tuj estos miriga kurso. Ĉi tiu estas unu de, se ne estas mia plej ŝatata Kompreneble, mi kaptita en Mian tutan vivon, kaj mi esperas ke ĝi estos tiu Mirinda estas por vi. Do mi volas fari ĉion en mia povo fari ke timinda por vi. Mi tuj sendi retmesaĝon se vi estas en mia sekcio aŭ Noa, kaj tuj provi kaj plani kun ĉiu de you guys tempon por kontroli en pli ol la sekva paro de semajnoj do mi povas akiri senso de kio via CS fono estas, kaj tio ankaŭ helpos min tajloro tiuj sekciojn por pli bone laux viaj bezonoj. Do jen kion mi atingis vicigitaj. Denove, mi vidos vin ekstere se vi volas esti tie. Tio estis semajno du sekcio. Dankon infanoj tiom.