DOUG LLOYD: Bone. Do nun ni pritrakti vere granda temo, funkcioj. Ĝis nun en la kurso, ĉiuj programoj kiuj ni estis skribante estis skribita ene de ĉefa. Ili estas belaj simplaj programoj. Vi ne bezonas havi cxiujn tiujn branĉoj kaj aĵoj okazas. Ni povas nur konveni ĉion ene de ĉefa kaj ĝi ne ricevas terure abrumadora. Sed kiel la kurso daŭriĝas kaj kiel vi ekdisvolviĝas programoj sendepende, ili probable tuj komenci akiri multan pli ol 10 aŭ 15 linioj. Vi eble ricevos centoj aŭ miloj aŭ dekoj de miloj da linioj de kodo. Kaj estas vere ne ke freneza penso. Kiel tia, ĝi estas verŝajne ne bona ideo teni ĉio ene de ĉefa. Ĝi povas akiri malgrandan malfacila trovi kion vi serĉas, se vi faros tion. Feliĉe, kvankam C, kaj preskaux ĉiu alia programlingvo ke povus labori kun, permesas nin skribi funkciojn. Kaj mi simple tuj preni rapidan flanken tie Mencii ke funkcioj estas unu areo de komputiko. Kaj vi vidos multaj pli da ili diversaj punktoj ĉie en la kurso kaj se vi daŭre plu. Kie ekzistas multe de sinonimojn por la sama vorto. Do ni nomas la funkcioj. Sed eble vi ankaŭ aŭdi ilin referita kiel proceduroj, aŭ metodoj, precipe, se vi iam faris ajnan objektema programado before-- kaj ne maltrankviliĝu se vi ne havas, ne grandan deal-- sed en auditoría orientitaj lingvoj estas ofte nomitaj metodoj. Kelkfoje ili estas nomitaj subrutinoj. Sed ili vere ĉiuj referi al la sama baza ideo. Ni vidu kion tiu ideo estas. Kio estas funkcio? Nu funkcio estas vere nenio pli ol nigran skatolon. Nigra skatolo kiu havas aron de nulo aŭ pli enigaĵoj kaj sola eligo. Do ekzemple, ĉi povus esti funkcio. Tiu estas funkcio nomita func. Kaj ĝi prenas tri enigoj a, b, kaj c. Kaj ene de tiu nigra skatolo, ni ne scias precize kion ĝi faras, sed ĝi procesas la enigoj iel kaj tiam donas sola eligo, en tiu kazo, z. Nun fari ĝin iom malpli abstrakta, ni povus diri ke eble ni havas funkcion nomita aldonu kiu prenas tri enigoj a, b, kaj c kaj procesas la eligo iel ene la nigra skatolo produkti solan eliron. Do en tiu kazo, se aldonu prenas 3, 6, kaj 7. Ie ene la aldonu funkcio, ni farus atendi ilin esti aldonitaj kune produkti la eligo, kiu estas 3 plus 6 plus 7 aŭ 16. Simile, vi havas funkcion nomita mult kiu prenas du enigoj, a kaj b, procesas ilin iel tia ke la eligo de la funkcio estas la produkto de la du eniroj. La du enigaĵoj multiplikitaj kune. 4 kaj 5 aprobotaj en mult, io okazas, la eligo ni atendas estas 20. Kial ni nomas ĝin nigra skatolo? Nu, se ni ne skribas la funkcias mem, kiu ni faris sufiĉe ĝis nun CS50. Ni vidis print f, ekzemple, kiu estas funkcio kiu ni ne skribis nin, sed ni uzas la tutan tempon. Se ni ne skribas la funkcioj ni mem, ni ne vere bezonas scii kiom estas implementó sub la kapuĉo. Do ekzemple la nigra skatolo Mi ĵus montris al vi por multipliko, Mult a b povus esti defined-- kaj tio estas nur iuj pseudocode-- povus esti difinita kiel elirigi fojojn b. Ke sencon, dekstre. Se ni havas funkcion nomis mult kiu prenas du enigoj. Ni atendus ke la eligo volus esti la du enigaĵoj multiplikitaj kune, fojoj b. Sed mult povis ankaŭ esti implementado kiel tiu, ni havas vendotablo variablo por get starigis ene de mult al 0. Kaj tiam ni ripetu ĉi procezo b fojojn aldoni al vendotablo. Ekzemple, se ni multiplikas 3al per 5b, ni povus diri starigis vendotablo al 0, ripeti kvinfoje, aldonu 3 al vendotablo. Do ni komencu ĉe 0 kaj tiam ni fari ĉi kvinfoje 3, 6, 9, 12, 15. Ĝi estas la sama rezulto. Ni ankoraŭ ricevas 3 fojojn 5 ​​ĵus la efektivigo estas malsama. Tion ni signifi kiam ni diras nigran skatolon. Tio simple signifas ke ni ne vere gravas kiel ĝi estas efektivigita sub la kapuĉo tiel longe kiel la eligo estas kion ni atendas. Fakte, tio estas parto de la kontrakto de uzante funkcioj, aparte funkcioj kiuj aliaj skribas. La konduto estas ĉiam tuj esti tipa, neantaŭvidebla bazita sur la nomo de la funkcio. Kaj tio estas kial ĝi estas vere grava kiam vi skribas funkcioj aŭ kiam aliaj personoj skribi funkcioj kiujn vi povus uzi, ke tiuj funkcioj havas klara, relative evidentaj nomoj, kaj estas bone dokumentita. Kiu estas certe la kazo por funkcio kiel print f. Do kial ni uzu funkcioj? Nu, kiel mi diris antaŭe, se ni skribas ĉiuj niaj kodon ene de ĉefaj aferoj povas akiri vere maloportuna kaj vere komplika. Funkcioj permesi al ni la eblon organizi aferojn kaj disrompi tre komplika problemo en multe pli manageable sub partoj. Funkcioj ankaŭ permesas nin simpligi la kodigo procezo. Ĝi estas multe pli facila elpurigi 10 linio funkcio kontre 100 linio funkcio aŭ 1.000 linio funkcio. Se ni nur devas elpurigi malgrandajn pecojn samtempe, aŭ skribi malgrandajn pecojn tiutempe, ĝi faras ke programado sperto multe pli bone. Fidu min tiu. Laste, se ni skribas funkcioj ni povas reuzi tiuj diversaj partoj. Funkcioj povas esti reciklita. Ili povas esti uzataj en unu programo aŭ alia. Vi jam skribis la funkcio, oni nur devas fari estas diri ke programo kie trovi domadministranto. Ni estis reciclaje kaj uzante presi f por super 40 jaroj. Sed ĝi estis nur skribita unu tempon. Sufiĉe utila, prava. Bone. Do funkcioj estas granda. Ni scias tion. Nun ni komencu skribi ilin. Komencu atingi ilin en niajn programojn. Por fari tion, la unuaj afero ni fari estas deklari la funkcio. Kiam vi deklaras funkcio kion vi estas esence fari diras la kompililo, hej, nur do vi scias, Mi tuj skribos funkcio poste kaj jen kion ĝi tuj aspekti. La kialo estas ĉar tradukiloj povas fari kelkajn strangajn aferojn, se ili vidas aron de simboloj ke ili ne estas familiara kun. Do ni simple donu la kompililo a Kapoj supren, mi kreanta funkcio kaj tuj fari tion. Funkcio deklaroj ĝenerale se vi organizi vian kodon en maniero ke aliaj povos kompreni kaj uzi, vi ĝenerale volas meti ĉiuj de via funkcio deklaroj ĉe la plejsupro de via kodo, dekstra antaŭ vi komencas skribanta ĉefa vespero. Kaj oportune, ekzistas tre norma formo ke ĉiu funkcio deklaro sekvas. Ili ĉiuj sufiĉe multe aspekti ĉi. Ekzistas tri partoj al funkcio deklaro, reveno tipo, nomo, kaj argumento listo. Nun la reveno tipo estas kia ŝanĝiĝema la funkcio volo eligo. Do ekzemple, se ni pensas reen minuto al la multipliki du nombroj funkcio, kion ni atendas, se ni multigos entjero per entjero la eligo estos verŝajne entjero, dekstre. Multiplikita du entjeroj kune, vi ricevas entjero. Do la reveno tipo de ke funkcio estus int. Nomo estas kio vi deziras voki vian funkcion. Tio estas verŝajne la malplej grava parto de la funkcio deklaro, en terminoj de funkciojn. Sed estas fakte probable unu de la plej gravaj partoj de la funkcio deklaro en terminoj de scii kion la funkcio reale faras. Se vi nomu viajn funkcio f aŭ g aŭ h aŭ mistero aŭ io simila, vi probable ricevos iom stumblis supren provas memori kio tiuj funkcioj fari. Do estas grave doni vian funkcia signifoplenaj nomoj. Laste, argumento estas lerta la komo apartigis liston de ĉiuj enigoj al via funkcio, ĉiu el kiuj havas tipon kaj nomon. Do ne nur vi devas specifi kion tipo de variablo la funkcio volo eligo, vi ankaŭ volas specifi kio tipo kaj tipoj de variabloj la funkcio estos akceptanta kiel enigoj. Do ni faru ekzemplon tie. Ni simple rigardu je pli konkreta. Do jen ekzemplo de funkcio deklaro por funkcio ke aldonus du entjeroj kune. La sumo de du entjeroj tuj esti entjero tiel, kiel ni ĵus diskutis. Kaj tial la reveno tipo, tie en verda, estus int. Ke nur klarigas ke aldoni du ints tuj, fine de la tago, eligo, aŭ kraĉi ĝin reen al ni, por entjero. Donita kion tiu funkcio faras ni volas doni ĝin senchava nomo. Aldoni du ints ŝajnas taŭga, konsiderante ni prenas du entjeroj kiel enigoj Kaj espereble aldonante ilin kune. Ĝi povus esti iom de maloportunan nomo kaj sincere tiun funkcion Estas probable ne necesa ĉar ni havas la aldono operatoro, se vi memoras de nia diskuto de telefonistoj, antaŭe. Sed ni simple diri por ties argumento ke tiu funkcio estas utila kaj do ni nomas ĝin aldoni du ints. Finfine, tiu funkcio prenas du enigoj. El kiuj ĉiu estas entjero. Do ni havas ĉi komo disigita listo de enigoj. Nun ni ĝenerale volas doni nomon al ĉiu el ili tiel ke ili povas esti uzitaj ene de la funkcio. La nomoj ne terure grava. En tiu kazo, ni ne nepre havas neniun sencon alkroĉita al ili. Do ni povas simple nomi ilin a kaj b. Tio estas tute bone. Se tamen, vi trovas mem en situacio kie la nomoj de la variabloj efektive povus esti grava, vi eble volas nomi ilin io alia ol a kaj b doni ilin io pli simbole signfa. Sed en ĉi tiu kazo, ni ne vere scias ion ajn pri la funkcio. Ni nur volas aldoni du entjeroj. Do ni simple nomas tiuj entjeroj a kaj b. Tio estas unu ekzemplo. Kial ne preni duan pensi pri ĉi tiu, Kiel volus vin skribi funkcion deklaro por funkcio ke multiplikas du glitpunktaj nombroj? Ĉu vi memoras kia Reela nombro estas? Kion cxi funkcio deklaro aspektas? Mi vere rekomendas vin paŭzo la video tie kaj preni kiom tempon vi bezonos. Pensu pri kio tiu funkcio deklaro estus? Kio estus la reveno tipo estas? Kio estus signifoplena nomo estu? Kio estus la enigoj okazi? Do kial vi ne paŭzi la video ĉi tie kaj skribi-supren funkcio deklaro por funkcio kiu multiplikas du glitpunktaj nombroj kune. Espereble vi paŭzis la video. Do ni rigardu ekzemplon de unu ebla deklaro. Flosi mult du reelaj nombroj flosi x, kaleŝego kaj. La produkto de du glitpunktaj nombroj, kiu memoras estas kio ni reprezenti reelaj nombroj aŭ nombroj kun decimalaj valoroj en c, tuj esti glitpunkta nombro. Kiam vi multipliki dekuma per dekuma, vi probable ricevos dekuma. Vi volas doni al ĝi rilata nomo. Multipliki du reelaj nombroj ŝajnas bone. Sed vi povus vere nomas ĝin mult du kaleŝegoj, aŭ mult kaleŝegoj. Io tia, tiel longe kiel ĝi donis iujn fakta signifo al kio tiu nigra skatolo faros. Kaj denove, en ĉi tiu kazo, ni ne ŝajnas havi neniun signifon alkroĉita al la nomoj de la variabloj ni pasante en, do ni simple nomas ilin x kaj y. Nun se vi nomas ilin ion alie, ke estas tute bone. Fakte, se vi faris ĉi deklaro anstataŭe uzante duobloj anstataŭe de flosas, se vi memoras ke duobloj estas malsama maniero pli precize specifi reelaj nombroj aŭ glitpunktaj variabloj. Tio estas tute bone ankaŭ. Ĉu unu el tiuj estus bone. Fakte, ekzistas pluraj malsamaj kombinoj manierojn por deklari tiun funkcion. Sed tiuj estas du belaj bonaj. Ni deklaris funkcio, tio estas granda. Ni diris al la tradukilo kio estas, kion ni tuj faros. Nun ni vere skribi tiun funkcion. Ni donu difinon, tiel ke ene la nigra skatolo antaŭvidebla konduto okazas. Fakte, ni multiplikante du reelaj nombroj kune, aŭ aldonante nombroj kune, aŭ faras kion ajn ĝi estas ke ni petis nian funkcio fari. Do fakte, ni provu kaj difini multipliki du reelaj nombroj, kiujn ni ĵus parolis pri dua antaŭ. Nun la komenco de funkcio difino aspektas preskaŭ ekzakte la saman kiel funkcio deklaro. Mi havas ilin ambaŭ tie. Ĉe la pinto estas la funkcio deklaro, tipo, nomo, komo apartigis argumento listo, punktokomo. La punktokomo indikas ke ke estas funkcio deklaro. La komenco de la funkcio difino aspektas preskaŭ ĝuste la sama, tipo, nomo, komo apartigis argumento listo, neniu punktokomo, malfermi buklaj krampoj. La malfermita krispa krampoj, kiel ni estis farante kun ĉefaj, signifas ke ni estas nun komencante difini kio okazas ene la nigra skatolo kiu ni decidis voki mult du reelaj nombroj. Ĉi tie estas unu maniero por apliki ĝin. Ni povus diri, ni povus deklari nova variablo de tipo float nomita produkto kaj atribui tiu variablo al la valoro x foje y. Kaj tiam reveni produkto. Kion reveno signifi ĉi tie. Nu reveno estas la vojo ni indikas ke a kiel ni pasante la eligo malantaŭeniri eksteren. Do reveni ion, estas la sama kiel, tiu estas la eligo de la nigra skatolo. Do jen kiel vi agu. Jen alia maniero por apliki ĝin. Ni povus simple reveni x foje y. x estas kaleŝego. y estas kaleŝego. Do x foje y estas ankaŭ kaleŝego. Ni eĉ ne bezonas krei alian variablo. Do tio estas alia maniero apliki la ĝusta sama nigra skatolo. Nun preni momenton, paŭzo la video denove, kaj provu difini aldoni du ints, kiu estas la alia funkcio kiu ni parolis antaŭ momento. Denove ĉi tie, mi metis la funkcio deklaro, kaj tiel la punktokomo, kaj malfermita krispa krampoj kaj fermitan krispa krampoj indiki kie ni plenigos en la enhavoj de aldoni du ints, tiel ke ni difini la apartajn konduto ene la nigra skatolo. Do paŭzo la vídeo. Forprenu tiel tempo kiel vi devas provi kaj difini implementación de aldoni du ints, tia ke kiam la funkcio eligas valoro, jes, fakte, reveno la sumo de la du eniroj. Do ĝuste kiel la antaŭa ekzemplo, estas pluraj malsamaj manieroj ke vi povus apliki aldoni du ints. Jen unu. Tien en oranĝa mi havas nur havis iom comments-- Mi ĵus aldonis kelkajn komentoj indiki kio okazas sur ĉiu linio de kodo. Do mi deklaras variablon nomata sumo de tipo int. Mi diras sumo egalas alpago b. Tie estas kie ni fakte faras la laboron aldonante A kaj B kune. Kaj mi revenos sumo. Kaj tio havas sencon ĉar sumo estas variablo de tipo int. Kaj kio estas la datumoj tajpas ke tio funkcio diras min ĝi tuj eligo? Int. Do mi revenas sumo, kiun estas entjero variablo. Kaj tio havas sencon donita kion ni deklaritaj kaj difinis nian funkcio fari. Nun vi povas ankaŭ difini la funkcio tiamaniere, int sumo egalas alpago b-- skip ke unua step-- kaj redonu sumo. Nun vi povus havi ankaŭ implementado ĝin tiamaniere, kiun mi ege ne rekomendas. Tio estas malbona stilo por unu afero kaj vere maltaŭga, sed ĝi faras, fakte, laboro. Se vi prenas tiun kodon, kiu estas int aldoni malbona Cerasto punkto c, kaj uzi ĝin. Ĝi fakte faras aldonu du entjeroj kune. Ĝi estas tre malriĉa efektivigo de tiu aparta konduto. Sed ĝi funkcios. Estas nur tie por ilustri la punkto kiun ni ne vere zorgas kio okazas interne la nigra skatolo, tiel longe kiel ĝi havas la eligo kiun ni atendas. Jen nebone dizajnita nigra skatolo. Sed fine la tago, jes ankoraŭ eligo sumo de alpago b. Bone. Do ni deklaris funkcioj. Kaj ni difinis funkcion. Do jen vere bona. Nun ni komencu uzi la funkciojn ke ni deklaris kaj ni difinis. Voki function-- ĝi estas fakte bela easy-- ĉiuj vi bezonas fari estas pasi ĝin taŭga argumentoj, argumentoj de la datumtipo ke ĝi atendas, kaj poste atribui la reveno valoro de tiu funkcio kaj this-- ekskuzo kunulinon atribui la reveno valoro de tiu funkcio al iom da la ĝusta tipo. Do ni havas rigardi ĉi praktike en dosiero nomata Cerasto 1 punkto c, kiu Mi havas en mia CS50 IDE. Do tie estas vipuro 1 punkto c. Komence vi vidas mi havas miaj inkludas, funto inkluzivas, norma IO, kaj CS50 skalara h. Kaj tiam mi havos mian funkcio deklaro. Tie estas kie mi estas rakontanta la tradukilo mi estas tuj estos skribante funkcio nomita aldoni du ints. Ĝi tuj eligo de entjera tipo variablo. Tion ĉi parto estas ĝuste ĉi tie. Kaj tiam mi havas du enirojn al gxi kaj b, ĉiu el kiu estas entjero. Ene de ĉefa, mi petas al la uzanto por enigo de diraĵo, donu al mi entjero. Kaj ili instigis forgesi int, kiu estas funkcio kiu estas inkluzivita en la CS50 biblioteko. Kaj ke gets stokitaj en x, entjera variablo. Tiam ni instigas ilin por alia entjero. Ni preni alian entjero kaj stoki ke en y. Kaj tiam, tie sur linio 28, estas kie ni faras nia funkcio nomita. Ni estas dirantaj, int z egaluloj aldonu 2 ints x komo y. Ĉu vi vidas, kial tio havas sencon? x estas entjero tipo variablo kaj y estas entjero tipo variablo. Do tio estas bona. Ke sencon kun kion nia funkcio deklaro sur linio 17 aspektas. La komo apartigis enigo listo atendas du entjeroj, a kaj b. En tiu kazo, ni povas nomi ili kion ajn ni volas. Ĝi nur atendas du entjeroj. Kaj x estas entjero kaj y estas entjero. Kiu funkcias. Kaj ni scias ke funkcio tuj al eligo de entjeroj tiel. Kaj tiel ni amasigas la eligo de la funkcio, aldoni du ints, en entjera tipo variablo, kiu ni vokas z. Kaj tiam ni povas diri, la sumo de procento i kaj procento i estas procento i. x, y kaj z respektive plenigante en tiuj procentoj i a. Kio estas la difino de aldoni du ints aspektas? Ĝi estas sufiĉe simpla. Ĝi estas unu el la aĵoj ni ĵus vidis sekundo antaŭ, int sumo egalas alpago b reveno sumo. Tio funkcias? Ni savu la dosieron. Kaj poste malsupren tie sur mia terminalo Mi tuj faros Cerasto 1, kaj mi purigi mian ekranon. Mi tuj zomi ĉar mi scias estas iom malfacile vidi. Do ni kompili tiun programon kiel vipuro 1. Do ni povas fari dot oblikvo Cerasto 1. Donu entjero, 10. Donu al mi alian entjero, 20. La sumo de 10 kaj 20 estas 30. Do ni faris sukcesan funkcio nomita. Vi povas ruli la funkcio denove, negativa 10, 17 sumo de negativa 10 kaj 17 estas 7. Tiu funkcio laboras. Ĝi havas la konduto ke ni atendas ĝin. Kaj tiel ni faris sukcesan funkcio, difino, deklaro, kaj prosperan funkcio nomita. Paro diversaj punktojn pri funkcioj antaŭ ni konkludi tiun sekcion. Memoras de nia diskuto de datumtipoj, antaŭe, ke funkcioj povas foje preni nenian enigoj. Se tio estas la kazo, ni deklari la funkcio kiel havado malplenon argumento listo. Ĉu vi memoras, kion la plej ofta funkcio ni vidis ĝis nun kiu prenas malplenon argumento listo estas? Ĝi estas ĉefa. Memori ankaŭ ke funkcio foje Usonanoj ne havas eliron. En tiu kazo, ni rakontos la funkcio kiel havado malplenon reveno tipo. Ni finas ĉi tiun sekcion per pritraktado praktiko problemo. Do jen la problemo aranĝiĝas. Mi volas ke vi skribu funkcio nomata valida triangulo. Kio ĉi tiu funkcio devas fari Estas preni tri reelaj nombroj kiuj reprezentas la longoj de la tri flankoj de triangulo kiel liaj parametroj, aŭ ĝiaj argumentoj, aŭ liaj inputs-- alia aro de sinonimoj ke vi eble renkontos. Tiu funkcio devus ĉu eligo vera aŭ malvera depende cxu tiuj tri longoj kapablas fari triangulon. Ĉu vi memoras la datumtipo ke ni kutimis indiki vera aŭ falsa? Nun kiel vi efektivigi tion? Nu scias estas kelkaj de reguloj koncerne trianguloj ke estas reale utila scii. Triangulo povas nur havi flankoj kun pozitiva longo. Tio havas sencon. Vi probable dirante, duh. La alia afero noti tamen, estas ke la sumo de la longoj de ajna du flankoj de la triangulo devas esti pli granda ol la longo de la tria flanko. Tio estas vere vera. Vi ne povas havi triangulo de flankoj 1, 2 kaj 4, ekzemple, ĉar 1 plus 2 ne estas pli granda ol 4. Do tiuj estas la reguloj kiuj determini ĉu aŭ ne la tri enigoj povas penseble formas triangulon. Do prenu kelkajn minutojn kaj deklari kaj tiam difini tiu funkcio nomita valida triangulo, tia ke ĝi reale havas la konduto specifita tie. Ĝi eliriĝos vera se tiuj tri flankoj kapablas konsistanta triangulo, kaj falsaj alie Preta por lerni kiel vi faris? Jen unu efektivigo de validaj triangulo. Ĝi ne estas la sola. Yours povus varii iomete. Sed ĉi tiu faras, fakte, havas la konduto kiun ni atendas. Ni deklaras nian funkcio je la plejsupro, bool valida triangulo flosi x kaleŝego y kaleŝego Z. Do denove, ĉi tiu funkcio prenas tri reelaj nombroj kiel liaj argumentoj, flosante punkto valoro variabloj, kaj eligas vera aŭ malvera valoro, kiu estas Bulea, revokon. Do jen kial la reveno tipo estas bool. Poste ni difinas la funkcio. Unua afero ni fari estas kontroli por certiĝi ke ĉiuj la flankoj estas pozitivaj. Se x estas malpli ol aŭ egala al 0, aŭ se y egalas 0, aŭ se z estas malpli ol aŭ egala al 0, ke neniel povas esti triangulo. Ili ne havas pozitivajn flankojn. Kaj tiel ni povas reveni malvera en tiu situacio. Tuj, ni kontroli por certiĝi ke ĉiu paro de enigoj estas pli granda ol la trian. Do se x plus y estas malpli ol aŭ egala al z, aŭ se x plus z estas malpli ol aŭ egala al y, aŭ se y plus z estas malpli ol aŭ egala al x, kiu ankaŭ ne povas esti valida triangulo. Do ni revenu falsa denove. Supozante ni preterpasis ambaŭ de la ĉekojn tamen, tiam ni povas reveni vera. Ĉar tiuj tri flankoj kapablas returning-- krei validan triangulo. Kaj tio estas ĝi. Vi nun deklaris kaj difinita. Kaj vi povu nun uzi kaj nomas tiun funkcion. Granda laboro. Mi Doug Lloyd. Jen CS50.