Zamyla CHAN: Estas mi, Zamyla. Hodiaŭ en Mario, ni tuj esti tirante la duono piramido por Mario grimpi supren. Do ni parolu pri nia al-fari por tiu problemo. Ni tuj volas suflori kaj validigi la uzanto por valida enigo de kiel alte ili volas Mario piramido esti. Kaj tiam, ni tuj desegni ĝin. Do ni komencu per instigante kaj validigi la uzanto por ilia enigo. Ni povas uzi la CS50 biblioteko funkcio akiri int kiu certigos ke la uzanto enigas entjero. Ajna pozitiva entjeroj, negativa entjeroj, nombro 0 estas bela ludo. Alie, la uzanto estos instigis al reprovi ĝis enigo validan entjeron. Nun kvankam get int faras multa la laboro por ni en certigado ke la uzanto donas ni entjero, ni ankoraŭ devas apliki iun aldonaj limigoj sur tio. Post ĉiu, ni ne povas havi Mario grimpita duono piramido de alteco negativa 12. Krom tio, la problemo specifo diras ke ni povas nur permesi Mario grimpi piramido de altecoj inter 0 kaj 23. Bone, do tio signifas ke ni bezonas senĉese instigas la uzanton doni al ni validan nombro kaj nur daŭrigi Tuj ili jam donis al ni validan alteco. Kiel ni faru tion? Nu, kontinuaj procezoj al ni la ideo de loops-- faras ion repetitivamente. Unu buklo en C kiel dum buklo ke volo senĉese ekzekuti la korpon de la buklo dum la donita kondiĉo taksas al vera. Kiam tiu kondiĉo taksas al falsa, la programo plue ajn venas poste. Do dum maŝojn estas unu maniero certigante ke ni konstante instigas la uzanton por valida enigo. Kaj unufoje ili donas al ni validan enigo, ni procedi al kiom venas proksima. Ni scias ke ni tuj petu la uzanto por enigo almenaŭ unufoje. Do nun ni venas al fratino de la dum buklo, kiu estas la do dum ciklo. Fari dum cikloj faros la korpo de la ciklo almenaŭ unufoje. Do sen kontrolanta la kondiĉo, ĝi faros la korpo de la ciklo. Kaj tiam kontrolu la kondiĉo vidi ĉu ĝi devas ripeti. Ĉi venas en oportuna kiam ni validigi uzanto enigo. Ni scias ke ni iras demandi ilin almenaŭ unufoje. Do fari dum buklo povus aspektas tiel. Ni havos entjero n. Kaj ene de la do dum buklo, ni tuj instigas la uzanton por entjero. Se n estas nevalida, ĉar ni instigas ilin denove kaj denove kaj denove ĝis ili donu al ni, ke valida entjero. Fine, fojo n estas valida enigo, ni instruos vin procedi al la resto de nia programo. Do ni revenu al la spec kaj ĉeko kion la kondiĉojn por valida enigo tuj estos. La valida altecoj tuj esti inter 0 kaj 23, inkluziva. Tial malvalida altecoj tuj malpli ol 0 aŭ pli ol 23. Do memoru desegni via kondiĉo zorgeme, sciante, ke la kondiĉo por la do dum buklo devus esti dum n estas nevalida. Nun ĉi tio ne tuj estos Simpla ununura Bulea esprimo. Ni tuj devas kombini du malsamaj esprimoj fari nian tutan kondiĉo. Do ni nur rigardas vertabelo mi havas jam donis al vi la sugesto ke ni estas tuj estos kontraktanta kun du Booleans. Do jen vertabelo kie mi havas du Booleans-- Buleaj 1 kaj 2. Do ni havas la eblon de taksi bool1 kaj bool2 aŭ bool1 aŭ bool2. Kaj nur estos vera se ambaŭ Bulea tipo taksi al vera, dum ĉiuj aŭ estos veraj dum unu el la du Booleans taksas al vera. Bone, do preni momenton, paŭzi ĉi video kaj digesti ĉi vertabelo. Mi tuj tie atendante. Kiam vi revenos, vidu se vi povas kunmeti Bulea esprimo por via kondiĉo de n esti malvalida enigaĵo. Do nun ke ni havas valida uzanto enigo, ni antaŭeniri kaj paroli pri kiel ni povu desegni la duono piramido. Tie en tiu simpla tekstoredaktilo, Mi desegnis maldekstra vicigitaj piramido. Sed ni scias, ke ni bezonas nian piramido esti ĝuste vicigita. Do kiel povus mi tion faras? Nu, mi povus provi puŝi ĉiu al la flanko per simple metante iom karaktero intere. Kaj tiam, por la sekva linio, mi tuj metis iuj pli karakteroj puŝi ĝin kune, kaj further-- ktp ktp forth-- ĝis mi rajtas vicigitaj piramido. Do ni ja havas rajton align piramido, sed ĝi ne aspektas tiel granda kun la punktoj. Sed ni ankoraŭ volas subteni tiun belan interspacigo. Do mi tuj laŭvorte enmeti kelkaj spacoj. Anstataŭ tri punktojn, mi instruos vin metis unu, du, tri spacoj. Sur la dua linio. Mi metos unu, du spacoj. Kaj sur la antaŭlasta linio, nur unu spaco. Kaj tie mi rajtas vicigitaj piramido. De faranta la ekzemplon en la teksto redaktoro, ni havas ideon por la mastro ke ni uzos por ĉerpi la duono piramido. Por ĉiu vico, kion ni faris Estas ni tajpas iun spacoj, kaj tiam tajpas iun hashes, kaj tiam tajpita la Eniga klavo, kiu kreas novan linion. Do nun ni havas tion, ni iru unu paŝon pli kaj trovi mastron. Do mi tuj diros, por la intereso de tiu ekzemplo, ni pritraktas altecon de 8. La unua vico tuj havi du hashes kiu sekvas sep spacoj. La second-- tri hashes, ses spacoj. Tria row-- kvar hashes, kvin spaces-- tiel plu kaj tiel plu ĝis ni atingos la NTH vico. Tial, mi demandas vin pri la NTH vico, kiom da hashes ni tuj havos kaj kiom da spacoj? Do ĝi estas ĝis vi malkovri la formulon por reprezenti kiom hashes kaj kiom da spacoj estas necesaj por la NTH vico kiam vi havas iun alteco. Nun kiam vi estas imagante ĉi ekstere, esti zorgema kiel vi indicigo. Kion mi celas diri per tio estas ke en ĉiutaga vivo ni ĉiuj komenci kalkulon, kutime de 1. Sed en CS50 kaj en komputiko ĝenerale, ni trovas 0 indeksita. Do la unua vico estus n de 0 kontraste al 1. Esti zorgema pri tio ĉi kiam vi estas provi elkompreni vian mastron. Do nun ni revenu al kiel Ni tuj nomas nian piramidon. Por ĉiu vico, ni tuj volas presi la spacoj, montri la hashes, kaj tiam presi novan linion. La aludo tie estas la vorto "por" ĉiu vico. En C, ni havi konstruo nomata por buklo, konsistantan de inicialización, kondiĉo, ĝisdatigo, kaj la korpo de la ciklo. Diru mi volis diri, saluton mondo, 50 fojojn, mia por buklo aspektus ion kiel tiu. Mi pravalorizi miaj entjero al 0. La kondiĉo estas ke mi estas malpli ol 50. Kaj tiam mia ĝisdatigo estas nur pliigante mi per unu ĉiufoje. Ni povas ankaŭ uzi por bukloj persisti super aferoj. Atentu, kiel ni ne malfacile kodita nombro, sed prefere metita la variablo alteco anstataŭe en la kondiĉo. Do kion mi faras ĉi tie estas mi ripetanta super ĉiu vico de la piramido. Mi povas fari ion por ĉiu remi en la korpo de mia banto. Kion ni faras ene la korpo de la ciklo? Nu, kiel ni jam diris, ni presi spacoj kaj ni presi hashes kaj ni presi novan linion. Do mia ekstera por buklo aspektos tiel ĉi. Mi persisti super ĉiu vico de la piramido, uzante, tiukaze, alto kiel la variablo kiu stokas la alteco de la piramido. Interne la korpo de tiu buklo, mi estas presigos spacoj plurfoje, presi la hashes ree, kaj tiam presi novan linion. Tial nun, uzante ĉiu de la konceptoj kiuj Mi raportis en tiu piediro-tra, vi devus povi instigas la uzanto por enigo, validigi ke enigo, kaj tiam tiri la duono piramido. Mia nomo estas Zamyla, kaj ĉi tiu estas CS50.