>> [Halisi kucheza]
>> ZAMYLA CHAN: Je, wewe badala kupokea $ 10,000,000 sasa hivi au kupokea
pennies kila siku ya mwezi, ambapo kila siku baadae, kupokea
mara mbili ya kiasi cha wewe pennies kupokea siku kabla?
Katika pennies, tunakwenda kuthibitisha kwa nini ni lazima
dhahiri kuchukua pennies.
Kazi yako ni kuandika pennies.c--
mpango kwamba kwanza anauliza jinsi ya mtumiaji siku nyingi zilizopo katika mwezi na
kisha anauliza jinsi wengi pennies mtumiaji atapokea siku ya kwanza.
mpango lazima basi mahesabu kiasi kwamba mtumiaji itakuwa na
kusanyiko mwishoni mwa mwezi na kuonyesha ni.
>> Tunaweza kuvunja mpango huu hadi katika michache ya kazi.
Tutaweza haja ya haraka kwa nyingi mtumiaji wa pembejeo -
siku na miezi, na pennies siku ya kwanza.
Tunahitaji kuweka wimbo wa kiasi gani cha fedha user ana na update kila
siku, mara mbili ya kiasi cha pennies kwamba wao kupokea.
Na hatimaye, sisi magazeti yao mwisho jumla, katika dola.
>> Hebu kukabiliana user pembejeo kwanza.
Mimi naenda kufungua apples.c, short mpango kwamba mikataba
na pembejeo na mazao.
Saa ya juu hapa, nimekuwa ni pamoja na baadhi ya maktaba kwamba mimi haja -
Maktaba CS50 na kiwango I / O maktaba.
Mimi magazeti haraka kwa kutumia printf kazi kutoka
kiwango I / O maktaba.
Lakini halisi uvuvio wa mtumiaji kinatokea katika mstari wa pili na hii
GetInt kazi katika maktaba CS50.
>> GetInt inapata pembejeo kutoka kwa mtumiaji na kuhakikisha kwamba pembejeo ni integer.
Hivyo mimi kuhifadhi pembejeo mtumiaji katika integer i, toa 1 kutoka i, na kisha
magazeti nje thamani mpya kama i.
Baada ya kuandaa apples.c kutumia amri ya "kufanya mapera," Nina
executable file apples.
Mbio kwamba, mimi itabidi pembejeo 1.
mpango ananiambia kwamba Nina apples 0 kushoto.
Na hivyo kuwa kufanya kazi kama ilivyotarajiwa.
>> Basi hebu kukimbia hii tena na pembejeo hasi 1.
Sasa, baada ya kiasi hasi ya apples kweli haina mantiki, lakini
mpango anapokea yake, kwa sababu hasi 1, vizuri, ni integer.
Na sasa mpango au monster ndani ya mpango anakula hasi
apple, na sasa nina hasi 2 apples.
Hm, hivyo kwamba ni somo moja -
hata ingawa kazi GetInt na kuhusiana kazi, kama GetFlow au
GetString kupata data haki ya aina, wewe kuhakikisha kwamba pembejeo hufanya
maana kwa ajili ya programu yako.
>> Katika pennies, itakuwa si kufanya tu haraka kwa integer, itabidi kufanya
uhakika kwamba mtumiaji pembejeo integer kwamba kufanya maana kupewa mazingira.
Mwezi inaweza tu kuwa na 28, 29, 30, au siku 31.
Tunataka kuendelea kudai integer halali.
Kama wao pembejeo nje integer ya yetu ya mipaka kukubalika, tutaweza kuwashawishi
tena na tena, mpaka kutupatia integer halali.
>> Kukumbuka "kurudia mpaka" kuzuia katika Scratch?
Unaweza kufanya kujenga sawa katika C kutumia "wakati" kitanzi
au "kufanya-wakati" kitanzi.
kitanzi wakati muundo ina hali kwamba lazima walikutana kwa ajili ya
mwili wa kitanzi kutekeleza.
>> Hii inapaswa kuangalia kidogo sawa, kwa sababu hali ni kama
Mwanzo vitalu na pembe na huenda katika mabano
ya "wakati" kitanzi.
Hivyo sharti kwamba kuangalia kama integer ni ndani ya
mipaka sahihi.
Unaweza kuchochea integer kutumia GetInt na kisha kutekeleza yako "wakati"
kitanzi, kurudia haraka na uchapishaji maelekezo, wakati pembejeo
si halali.
>> Njia nyingine ya kuhakikisha sahihi user pembejeo ni kwa kutumia "kufanya-wakati" kitanzi,
ambayo ni sawa na kitanzi Wakati.
"Kufanya-wakati" kitanzi executes kanuni ndani ndio mwili na kisha hundi
kama hali ni alikutana au la.
Hii ni muhimu kwa ajili ya kupata user pembejeo, kwa sababu unajua kwamba unahitaji
kuwashawishi angalau mara moja.
Kama hali ni kukutana, mpango nitafanya line baada ya
yako "kufanya-wakati" kitanzi.
Kama hali ni alikutana ingawa, kitanzi kurudia
>> "Kufanya-wakati" kitanzi kwa valideringen mtumiaji pembejeo itakuwa kuangalia kitu kama hiki.
Mimi kutangaza n kutofautiana, GetInt, na kisha kurudia mpaka n ni halali.
Na mchakato huu, nilivyoeleza, ilikuwa kutumia aina integer-data, ambayo
itabidi kutumia kwa siku ya mwezi.
Lakini tunajua kwamba idadi ya pennies itakuwa rundo juu haraka, hivyo ili
kuhifadhi idadi kubwa, kutumia aina data Longlong, lakini kumbuka huo
kanuni ya uthibitisho inatumika.
>> Kushangaza, hivyo mara moja tuna mbili halali pembejeo kutoka user -
siku katika mwezi na pennies Siku ya kwanza -
tunaweza kuhamia kwenye ijayo sehemu ya mpango.
siku ya kwanza, user huanza na hata hivyo wengi wao pennies maalum
na kiasi cha fedha dinari kwamba wao kupokea siku ya pili ni mara mbili.
Hivyo inafanya hisia kwa kuweka wimbo ya hizi kiasi mbili -
fedha kiasi gani mtumiaji ana na jinsi pennies wengi wao itabidi itolewe.
>> Sasa, kufanya kitu kwa muda wa siku 28-31 ni repetitive, hivyo hebu kutumia "kwa"
kitanzi kwa iterate zaidi ya siku katika mwezi, uppdatering taarifa na senti
kiasi kila wakati.
"Kwa" kitanzi syntax ina yafuatayo -
initialization, hali, na update.
Yako "kwa" kitanzi itakuwa initialize kutofautiana, wakati
kwanza inaingia kitanzi.
Kama hali ni alikutana, mwili ya kitanzi nitafanya.
Baada ya hapo, update nitafanya.
Kama hali bado ni alikutana, kitanzi nitafanya na update, na
kurudia, kwa muda mrefu kama hali yako kutathmini kwa kweli.
>> Hapa ni "kwa" kitanzi kwamba mgawanyiko integer p na 2 jumla ya mara 10.
Kumbuka jinsi mimi alitangaza p integer nje ya yangu kitanzi "kwa", ili kwamba
integer unaweza kuwa kupatikana nje kitanzi "kwa".
Baada ya mwezi amepita, ni wakati kuwaambia mtumiaji fedha kiasi gani
wameweza kujipatia.
Kwa spec, unahitaji kuwaambia mtumiaji wangapi dola, si jinsi wengi
pennies, wana.
Lakini hadi sasa, ve naendelea wimbo wa taarifa na pennies kutumia LongLongs,
ambayo ni namba nzima.
>> Kuna pennies 100 na $ 1, hivyo isipokuwa idadi ya pennies ni
mbalimbali ya 100, itabidi kuwakilisha maeneo decimal.
autotype maradufu inaruhusu wewe kufanya hili.
Hivyo ni jinsi gani sisi kubadilisha kutoka anayewakilisha pennies kwa dola?
>> Hebu tuangalie pi.c.
Mpango huu inachukua big_pi longlong na mgawanyiko ni kwa 100,000, na Prints
matokeo kwa maeneo decimal tano.
Kama sisi alitaka kuonyesha nne decimal maeneo, basi tunaweza tu kuchukua nafasi hii
simu hapa.
Basi hebu kuokoa, kukusanya pi, na basi kuona matokeo, ambayo sisi
wanatarajia kuwa 3.1415 -
mitano ya kwanza ya maadili ya pi.
>> Siyo ingawa.
Na kwa nini?
Naam, kwa sababu ni big_pi longlong, ambayo ni idadi nzima, ambayo si
kuweka wimbo wa decimals.
muundo nahitaji kufanya ni katika mgawanyiko.
Mimi haja ya kutupwa kwa mara mbili hapa kabla ya kugawa, kwa sababu mara mbili hawezi kuweka
wimbo wa maeneo decimal.
Na mimi nina kwenda kuongeza line mpya hapa kwa formatting bora.
>> Na hapa tuna yake -
3.1416.
Unaweza taarifa kwamba Prints 3.1416 badala ya 3.1415 kama ilivyotarajiwa.
Hiyo ni kwa sababu wakati wa raundi mgawanyiko mchakato, kinyume na tu
truncating thamani.
Sasa unapaswa kuwa na uwezo wa magazeti mwisho taarifa kwa usahihi, ambayo finishes
mpango.
>> Hongera.
Jina langu ni Zamyla.
Na hii ilikuwa pennies.
>> [Halisi kucheza]