Parolanto 1: Ni parolu pri akvo. En ĉi tiu problemo, ni petas la uzanto diri ni kiom longe minutoj ilian duŝo estis kaj poste ni kalkulas la ekvivalenta nombro de boteloj de akvo ke ilia duŝo uzata. Do kio estas niaj por-do la por tiu problemo? Unue, ni tuj volas suflori kaj validigi la enigo ke la uzanto donas al ni. Iam ni certigi ke ni havas validan uzanto enigo, ni tuj kalkuli la ekvivalenta nombro de boteloj de akvo ke la uzanto devis dum ilia duŝo, kaj tiam ni tuj rakontos ilin per presi el tiu nombro. Do ni pritraktas niajn unuajn tasko, instigante kaj validigi la uzanto enigo. Por tio ni jam skribis funkcio por vi nomas get_int lokita en la CS50 biblioteko. get_int certigas ke la uzanto enigas entjero, tial ajna pozitiva nombro, negativaj nombroj, aŭ nulo estas ĉiuj akceptis. Sed se la uzanto enigas io alia, tiel ajna kombino de literoj aŭ numeroj aŭ decimalaj numeroj, tiam la uzanto estos instigis al reprovi kaj la funkcio ne akceptos ion ĝis la uzanto donas ilin entjero. Nu do kiel ni uzas get_int? Se vi malfermas vian laborspaca kaj krei dosieron nomita integer.c ni tajpi la sekvan. Hashtag inkluzivas cs50.h. Tio estas necesa ĉar get_int estas CS50 biblioteko funkcio, do ni devos hashtag inkluzivi lia deklaro por uzi la funkcion. Kaj tiam en mia ĉefa funkcii mi simple tuj simple nomas la funkcio get_int. Tiel ni kuras ĉi, kaj vidu kiel ĝi funkcias. Mi jam kompilis ĝin, do ni simple iru antaŭen kaj kuri ĉi programo, ./integer. Tie mi havas prompto kaj jen kien mi enigo la valoro. Diru mi metis en nur iu entjero, 50, la programo excepts kaj malekas kaj tio estas ke. Sed diru min ruli ĝin denove kaj Mi enigo io alia. Eble, saluton mondo. Tio ne entjero do la programo estos instigas min reprovi. Ni provu denove kun eble dekuma tiu tempo. 0.5, denove, ne estas entjero tia la programo ne akceptas ĝin kaj gxi diros min reprovi. Do ni donu alian numeron. La programo akceptas ĝin, malekas, kaj ni faris. Do nun ni havas funkcion kiu permesas kaj certigas ke la uzanto enigas entjero, sed kiel povas ni fakte sekvigi la entjera inputted de la uzanto? Nu, ĉiuj ni faros estas vendejo tiun valoron en variablo, diru n. Do se mi deklaras entjero n, kaj Mi permesis ke valoro al get_int, tiam n estos tiam stoki ajn taksas la uzanto inputted. Bone, do nun ni certigis ke la uzanto al ni entjero kaj ni scias kiel konservi trakon de la entjero, sed memoru, entjeroj estas ambaŭ pozitivaj kaj negativaj. Do ne vere havas sencon en la kunteksto de tiu problemo ke la uzanto duŝas de diri negativajn 12 minutoj. Do ni bezonas por certigi ke la uzanto fakte donas al ni pozitiva entjero. Nun ni ne havas nur sola funkcio por tio, Do ni tuj devas krei ke ni mem. Do ni volas kontinue instigas la uzanton ĝis ili al ni pozitiva entjero. Se mi faras ion ade tiam jen simila al banto, ripeto. Do unu el la konstruoj kiujn ni uzas en c implementar ripeto kaj maŝojn Estas dum ciklo. Do dum buklo, kiel montris tie, ekzekutos kiom estas en la korpo de la banto kiel dum la donita kondiĉo taksas al vera. Kiam tiu kondiĉo taksas al falsa, tiam la programo plue ajn venas post la korpo de la ciklo. Do dum maŝojn estas irantaj esti vere utila en CS50. Sed en ĉi tiu aparta kazo, ni scias, ke ni estas tuj instigas la uzanton almenaŭ iam kaj tiam nur buklo se necese. Do jen ni venas al speciala konstrukcio kaj tio tre simila al la dum buklo nomita do-dum ciklo. Tial do-dum buklo ekzekutas la korpo de la ciklo almenaŭ unufoje kaj tiam kontrolas vidi ĉu ĝi devus ekzekuti, kontraste al tempo buklo, kiu kontrolos la kondiĉo kaj tiam ekzekuti la korpon. Tiel en do-dum buklo, kion ni povus fari estas instigas la uzanton por entjero, kaj tiam kontroli ĉu ĝi estas nevalida aŭ ne. Se ĝi estas malvalida, tiam ni ripeti la procezon demandante la uzanton doni al ni alian entjero, kaj tiam nur kiam tiu entjero estas valida, ni daŭre ajn venas poste. Nun vi rimarkos ke la deklaro de la entjero n estas iomete malsama al kion ni faris antaŭe en la antaŭa ekzemplo kaj tio estas pro atingo. Se ni deklaras la entjero n interne de la korpo de la do-dum buklo, tiam ni ne povos aliri ke valoro de n eksteren de tiuj buklaj krampoj indikas la korpo de la ciklo. Sed ni fakte volas aliri la valoro de n poste en nia programo. Bone, do nun ni parolu pri kion tiu kondiĉo devus esti. Ni volas nur reprompt la uzanto dum n estas nevalida. Tiel pensas al vi mem kio nevalidan entjera valoro aspektus kaj tiam krei Bulea esprimo por esprimi tion. Ni preskaŭ finis kun nia subtask de instigante kaj validigi uzanto enigo. Do ni faru ĉi iom iom pli uzanto amika kaj donu la uzanto iom iom pli informo kion ni instigante ilin por. Do ni instigas la uzanton, po la specifo, kun la ŝnuro minutoj. Do uzante vian printf deklaroj, fari certa ke vi kongruas ĉi akurate. Bone. Do nun ni havas validan uzanto enigo, pozitiva entjero valoro por kiom da minutoj ili pasigis en la duŝo. Do kio estas proksima estas kalkuli la ekvivalenta nombro de boteloj. Kion ni tuj faros ĉi tie povus esti tre evidenta al vi, unue, kaj tio estas okej. Kion ni volas fari estas ni volas komenci praktikadanta la ideo de detekti mastrojn kaj evoluantaj formuloj por la problemo. Do ni diris por la spec ke unu minuto en la duŝo estas ekvivalenta al ĉirkaŭ 12 boteloj de akvo. Tial du minutoj farus esti ekvivalenta al 24, kaj kvin minutojn farus esti ekvivalenta al 60. Tial nun, se vi opinias vi havas ĝin, do ni ĉu vi povas veni supren kun mastro aŭ formulo esprimi se ni diru, n minutoj, kiom da boteloj de akvo estus ke esti esprimita en terminoj de n? Krome, eĉ se tiu povus esti simpla komence, poste kiam ni atingos pli komplikaj problemoj Ni tuj volas eniri la praktiko de identigado ŝablonoj kaj evoluiganta formuloj ekkompreni tion eksteren. En c vi havas aliron al norma aritmetiko operacioj, Krome, subtraho, multipliko kaj divido. Do mi lasos ĝin al Vi nun elkompreni kiel esprimi la ekvivalenta nombro de boteloj ke la uzanto konsumis dum sia duŝo. Bone, ni preskaŭ farita. Ni instigis la uzanto por ilia enigo, ni certigis ke ĝi estas valida enigo, kaj tiam ni eltrovis kiel kalkuli la ekvivalentan nombro de boteloj ke ili malaperas. Do la lasta afero por fari estas eligo la ekvivalenta nombro da boteloj kaj espereble kuraĝigi ilin konservi akvon. Elirigi taksado esti printf komunikaĵo. Se mi volis diri al vi, ke mi havas tri dorlotbestoj, ekzemple, Mi povus uzi printf komunikaĵo similan al tiu. Mi havas tri dorlotbestoj, kaj nova linio por agrabla strukturado. Nun ni ne volas simple malfacile kodo aferojn. Diri la numeron de mia dorlotbestoj ŝanĝas super tempo. Tiam mi tuj uzos anstataŭaĵojn en mia printf komunikaĵo. Do jen mia nombro estas entjero. Do mi tuj faru lokokupilo por entjero uzanta% i. Mi tuj skribos la kordo, kaj tiam post la kordo Mi skribas komo kaj tiam la ŝanĝiĝemaj ke mi volas presi. Por ke valoro estos presita anstataŭ ke lokokupilo,% i. Vi povas uzi anstataŭaĵojn, kiel bone, por flosoj kun% f. Vi povas ankaŭ havi multoblajn anstataŭaĵojn en ĉeno. Ekzemple, se mi havas iun numeron de hundoj kaj iuj nombro de katoj, Mi metis du anstataŭaĵojn tie kaj tiam miaj du variabloj en sinsekvon. Do nun ke ni scias kiel presi la valoroj stokitaj en variabloj, la lasta afero fari estas certigi ke ni presi la valoro en la ĝusta formato indikita en la specifo. Kun tiu, ni instigis la uzanto kaj validigita ilia enigo. Ni tiam kalkulis la ekvivalenta nombro de boteloj de akvo ke ili konsumas dum sia duŝo, kaj ni outputted tiu valoro por ili. Kaj tiel, ni kompletigis akvo. Mia nomo estas [? Zamila,?] kaj ĉi tiu estas CS50.