[Halisi kucheza] DAVID J Malan: zote haki, kuwakaribisha nyuma CS50. Huu ni mwanzo wa wiki mbili. neno kutoka kwa mmoja wa wetu marafiki juu ya chuo - kama una nia, pengine, ama sasa au katika baadhi mfupi baadaye hata, kwa mara vizuri zaidi, mafundisho katikati ya shule wanafunzi kidogo kitu kuhusu sayansi ya kompyuta, kufanya kichwa URL hiyo. Wao ni katika haja hasa hivi sasa ya walimu, hasa kama una alikuwa na baadhi ya yatokanayo na sayansi ya kompyuta. Hivyo kukumbuka kuwa wakati wa mwisho, sisi ilianzisha chache data aina katika C, na unaweza kuanza kupata yako mikono chafu na haya hivi sasa katika tatizo kuweka moja. Na tulikuwa na Char. Hivyo katika suala fulani kiufundi, nini ni Char kama unajua ni leo? Hivyo ni tabia, lakini hebu kuwa sahihi zaidi sasa. Tufanye nini maana na tabia au mtu binafsi Char? tabia ya mashirika yasiyo ya namba - hivyo si lazima. Ni zinageuka kuwa idadi hata, hata punctuation na barua ni kuwakilishwa na data hii aina inayojulikana kama Char. Hivyo si lazima herufi. Yeah? Hivyo ni tabia ASCII. Hivyo kama wewe kufikiri nyuma kwa wiki sifuri, wakati tulikuwa Byte yetu ya kujitolea kuja na ama kushikilia mikono yao juu au si wote, wao kuwakilishwa bits. Lakini kwa pamoja kama kundi la nane, wao kuwakilishwa Byte. Na sisi ilianzisha dhana ya ASCII katika hotuba hiyo, ambayo tu ni ramani kati ya idadi na barua. Na ASCII matumizi, kama wale binadamu an alisema, nane bits kuwakilisha tabia. Hivyo ipasavyo, ikiwa nane bits unaweza kila kuchukua kwenye moja ya maadili mbili - zero au moja - hiyo ina maana kulikuwa na uwezekano mbili kwa mtu huyu - zero au moja - mbili kwa ajili ya mtu huyu, mbili kwa ajili ya hii mtu, mbili kwa ajili ya hii moja. Hivyo jumla ya mara mbili mara mbili mara mbili mara mbili mbili - hivyo wawili wa nane katika jumla. Hivyo kuna jumla ya idadi ya wahusika 256 inawezekana kwamba unaweza kuwakilisha na bits nane. Sasa, wale ambao wanazungumza Asia lugha wapate kujua ya kuwa kuna zaidi wahusika katika dunia kuliko tu Kama na Bs na Cs na Ds. Na hakika, ASCII haina inatosha kwa mengi ya lugha ya dunia. Lakini zaidi juu ya kwamba wakati mwingine. Kwa sasa, kujua kwamba katika C kama unataka kuwakilisha mbili, kipande cha punctuation, au tu tabia ya kitu fulani katika asili, sisi kutumia Char. Na ni moja Byte au bits nane. Vipi kuhusu int? Naam, ni int integer. Jinsi wengi vipande, kama unakumbuka, mara integer kawaida? Mtu yeyote kukumbuka? Hivyo ni kawaida 32. Ni kweli inategemea kompyuta kwamba unatumia. Lakini katika appliance, na katika mengi ya kompyuta, ni 32 bits au nne ka - nane mara nne. Na ints ni tu kutumika kwa ajili ya kuhifadhi namba, ama hasi, chanya, au sifuri. Na kama nimepata bits 32 na wewe tu huduma kuhusu idadi chanya, unaweza mtu yeyote ballpark jinsi wengi iwezekanavyo integers kompyuta wanaweza kuwakilisha kutoka sifuri juu juu? Hivyo itakuwa mbili hadi 32, ambayo ni takribani bilioni nne. Hivyo hawa mamlaka ya mbili ni kwenda kuwa mara kwa mara mandhari katika sayansi ya kompyuta. Kama tutaweza kuona, wao ni rahisi kabisa kufanya kazi na hata kama si kabisa rahisi kufanya math katika kichwa ya mtu. Hivyo tutaweza kusema takribani bilioni nne. Sasa, kwa muda mrefu kwa muda mrefu - unaweza aina ya nadhani. Ni muda mrefu zaidi ya int. Jinsi wengi vipande? Hivyo 64 bits au ka nane. Hii tu maana unaweza kuwakilisha hata kubwa ya idadi, kubwa chanya au kubwa hasi namba. Na vipi kuhusu kuelea? Hiyo ni hatua yaliyo thamani ya bits 32. Hii ni idadi tu halisi, kitu na uhakika decimal. Lakini kama wewe badala yake wanahitaji maeneo zaidi baada ya uhakika decimal au unataka kuwakilisha idadi kubwa na baadhi ya sehemu baada yake, unaweza kutumia mara mbili, ambayo ni 64 bits. Lakini kuna kuvutia takeaway hapa. Hivyo kama ints ni mdogo na bits 32 na hata hutamani muda ni mdogo na 64 bits, kwamba aina ya anaomba swali, nini kama kweli wanataka kuhesabu juu kuliko bilioni 4 kwa int? Naam, wewe tu kutumia muda mrefu. Lakini nini kama unataka kuhesabu juu kuliko mbili kwa 64, kutoa au kuchukua? Sasa, hiyo ni idadi kubwa. Lakini hatimaye, waweza kweli huduma kuhusu aina hii ya maadili, hasa kama wewe ni kutumia database na kuanzia kukusanya kura na kura na kura ya data na kumshirikisha kipekee idadi ya kila kipande cha data hizo. Hivyo sisi aina ya kuwa na tatizo. Na vile vile, kwa uhakika na yaliyo maadili - ikifungwa au mara mbili - kama wameweza tu got idadi mahususi ya bits, jinsi wengi uanachama namba ungeli uwezekano wa kuwakilisha? Naam, ni chini ya wazi wakati kuhusisha uhakika decimal. Lakini ni hakika finite. Kama una idadi mahususi ya vipande, idadi mahususi ya binadamu, finite idadi ya balbu mwanga, hakika unaweza tu kuwakilisha idadi mahususi ya yaliyo kumweka maadili. Lakini jinsi wengi kweli idadi ni yao katika dunia? Kuna usio. Hivyo kwamba ni aina ya tatizo kwa sababu sisi hawana kiasi usio wa kumbukumbu au RAM ndani ya kompyuta yetu. Hivyo baadhi ya mambo changamoto yanaweza kutokea. Basi hebu kwenda mbele na kujaribu kueleza hii hapa. Hebu kwenda mbele na kufungua gedit. Mimi nina kwenda mbele na kuokoa faili inayoitwa "floats0.c" tu kuwa sambamba na mfano kwamba ni inapatikana online, kama ungependa. Na mimi nina kwenda mbele na kufafanua ni kama ifuatavyo - Mimi nina kwenda mbele na kusema, int kuu batili, kama sisi mara nyingi kufanya. Na kisha katika mpango huu, nina kwenda kwa kutangaza mwenyewe kuelea, hivyo 32-bit variable kuitwa f, kiholela. Na basi mimi nina kwenda kuhifadhi ndani yake Sijui, moja ya kumi, hivyo 0.1. Hivyo nina kwenda kueleza kwamba kama moja kugawanywa na 10, ambayo ni kikamilifu halali katika C. Na kisha juu ya mstari wa pili, mimi tu unataka magazeti nje kwamba thamani. Hivyo kukumbuka kwamba tunaweza kutumia ukoo printf. Hatutaki kutumia% i kwa int. Tunataka kutumia% f kwa kuelea. Na kisha mimi naenda kufanya backslash n, karibu quote, comma, f, semicolon. Hivyo hapa ni mpango wangu. Tayari kuna moja mdudu. Je, mtu ambaye hii clicked tayari wanataka kwa uhakika angalau moja mdudu Nimekuwa alifanya? Yeah? Yeah. Nimesahau "# pamoja" katika juu, wao dalili ya ambayo kama mimi kujaribu kukusanya hii ni kwenda kuwa kwamba mkusanyaji ni kwenda yell saa yangu, akisema ishara kisichojulikana au kitu na athari hiyo. Haina kuelewa kitu kama printf. Hivyo nina kwenda kufanya "ni pamoja na # ", Ila faili. Na sasa ni katika sura bora. Lakini nina uhakika pia kwenda nje ya mwezi mmoja undani leo. Mbali na kubainisha nafasi ya wamiliki kama% s f% i%, unaweza wakati mwingine kuathiri tabia placeholder ya kwamba. Kwa mfano, katika kesi ya floating hatua thamani, kama mimi nataka tu kuonyesha moja decimal mahali baada ya kipindi, siwezi kwa kweli kufanya 0.1f. Hivyo kwa maneno mengine, mimi kutenganisha f na ishara na asilimia 0.1, tu kuwaambia printf, unaweza kuwa mzima rundo la idadi baada ya decimal uhakika kwa ajili yangu. Lakini mimi tu wanataka kuona mmoja wao. Hivyo nina kwenda mbele sasa na kuokoa mpango huu, kwenda katika terminal yangu dirisha, na mimi nina kwenda mbele na aina ya kufanya kuelea 0, kuingia. Mimi naona kuwa mstari fulani fumbo kwamba wataanza kufanya maana zaidi kama sisi tease ni mbali wiki hii na ijayo. Sasa mimi nina kwenda mbele na kukimbia kuelea sifuri. Na, damn. Hivyo kuna mdudu mwingine hapa kwa sababu fulani. Mimi nina uhakika kwamba pretty moja ya kumi, au moja kugawanywa na 10, si 0.0. Labda mimi nina si tu kuangalia katika maadili ya kutosha. Hivyo kwa nini nasema mbili 0.2 kuona mbili decimal maeneo badala ya moja tu. Hebu nirejee nyuma kwa terminal dirisha yangu hapa na kugonga juu ya wanandoa wa mara kwa kuona historia yangu. Kufanya kufanya kuelea sifuri tena, na kisha tena. Na sasa kuingia. Na sasa mimi nina uhakika pretty hii ni sahihi. Na mimi naweza kufanya tatu na nne, na mimi nina pengine ataendelea kuona zeros. Hivyo ambapo ni mdudu? Moja kugawanywa na 10 lazima 0.1. Mtu unataka kuchukua kumchoma katika kile suala la msingi ni? Yeah? Wao ni wote integers. Basi ni nini? Hivyo kwa moja kugawanywa na 10, hiyo ni nini mimi katika hesabu. Na mimi kupata 0.1. Yeah. Na hivyo ni kweli kwamba suala hilo. Wakati kuchukua integer katika kompyuta na wewe kuigawanya na integer mwingine, kompyuta na default ni kwenda kudhani kwamba unataka integer. tatizo ingawa, bila shaka, ni kwamba 0.1 si integer. Ni idadi halisi. Na hivyo kile kompyuta gani na default ni kama tu imeutupa mbali kila kitu baada ya uhakika decimal. Haina pande zote chini au juu per se. Ni tu imeutupa mbali kila kitu baada ya uhakika decimal. Na sasa kwamba hufanya akili. Kwa sababu sasa sisi ni wazi kushoto na sifuri. Lakini kusubiri dakika. Nina kuona sifuri int. Mimi kwa kweli kuona 0.00. Hivyo ni jinsi gani mimi kupatanisha hii sasa? Kama moja kugawanywa na 10 ni sifuri, lakini nina kuona 0.00, ambapo ni hivyo kupata waongofu nyuma idadi halisi? Yeah. Hasa. Hivyo hapa katika mstari tano, wakati mimi kwa kweli kuhifadhi kwamba 0.1, ambayo ni kisha truncated na sifuri, ndani ya kuelea, hiyo ni sawa na ufanisi hifadhi hiyo si kama int lakini, kweli kweli, kama kuelea. Aidha, mimi nina kisha kwa kutumia printf kwa waziwazi magazeti kwamba idadi ya mbili decimal maeneo hata kama kuna ili si kweli kuwa yoyote. Hivyo aina hii ya sucks, haki? Inavyoonekana huwezi kufanya math, angalau katika ngazi hii ya usahihi, katika kompyuta. Lakini hakika kuna ufumbuzi. Nini kurekebisha rahisi tunaweza labda kufanya, hata tu intuitively hapa kutatua hili? Yeah? Kugeuka integers katika - yeah. Hata kama mimi nina uhakika kabisa nini kweli kinachoendelea hapa, ikiwa ni kimsingi ina nini na hizi zote mbili kuwa ints, vizuri, kwa nini si mimi kufanya 10.0, na kufanya hii 1.0, resave faili. Hebu kwenda nyuma chini ya chini na recompile. Hebu sasa rerun. Na huko - sasa, mimi nimepata yangu moja ya kumi kuwakilishwa kama 0.10. Wote haki. Hivyo hiyo si mbaya. Na napenda kumweka nje moja kwa njia nyingine tunaweza kuwa na kutatuliwa hii. Hebu kweli unaendelea nyuma katika wakati kwa wakati tulikuwa hii kama moja kumi wakati iliyopita. Na napenda kwenda mbele na resave faili hii kama tofauti faili jina, tu kuwa eneo la kukagua kidogo. Ili kwamba ilikuwa toleo moja. Na sasa napenda kwenda mbele na kufanya moja zaidi version. Tutamwita toleo hili mbili sifuri indexed. Na mimi nina kwenda badala kufanya hii - unajua nini? Kuongeza nukta sifuri kazi katika kesi hii. Lakini tuseme moja walikuwa kutofautiana. Zinatakiwa 10 walikuwa kutofautiana. Kwa maneno mengine, tuseme kwamba sikuweza tu ngumu-kanuni 0.0 mwishoni hii ya kujieleza hesabu. Naam, mimi kweli anaweza kufanya kitu katika mabano aitwaye akitoa. Siwezi kutupwa kwamba integer 10 hadi kuelea, na mimi unaweza kutupwa kwamba mmoja integer kwa kuelea, kama vile. Kisha math kwamba kinaendelea kufanyika ni ufanisi 1.0 kugawanywa na 10.0, matokeo ya ambayo inakwenda katika f kama kabla. Hivyo kama mimi recompile hii kama kufanya ikifungwa 2, na sasa ikifungwa 2, mimi kupata huo kujibu, kama vile. Hivyo hii ni mfano haki contrived, kutatua tatizo hili kwa kuanzisha akitoa. Lakini kwa ujumla, akitoa kinaendelea kuwa Jambo nguvu, hasa kwa tatizo kuweka mbili katika muda wa wiki, wakati unataka kubadilisha data aina moja kwa mwingine kwamba mwisho wa siku ni kuwakilishwa katika njia hiyo hiyo. Mwisho wa siku, kila moja Jambo tumekuwa kuongelea hivi sasa ni tu ints chini ya Hood. Au kama kwamba ni pia ngazi ya chini kwa wewe, wao ni idadi tu na chini ya Hood. Hata wahusika, tena, kukumbuka kutoka sifuri kwa wiki, ni idadi chini ya Hood. Ambayo ni kusema, tunaweza kubadilisha kati ya aina tofauti ya idadi kama wao ni tu bits. Tunaweza kuwabadili kati ya idadi na barua kama uko tu bits, na kinyume chake. Na akitoa katika njia hii ni utaratibu katika programu ambayo inakuwezesha waliolazimishwa mabadiliko ya data aina moja hadi nyingine. Kwa bahati mbaya, hii si kama moja kwa moja kama mimi ili walipenda. Mimi nina kwenda nyuma katika ikifungwa 1, ambayo ilikuwa rahisi, zaidi moja kwa moja moja na 0.0 aliongeza juu ya kila aina. Na tu kama rejea ya haraka, napenda kwenda mbele na recompile hii, kufanya ikifungwa 2 - sorry, hii ni kufanya ikifungwa 1. Na sasa hebu kukimbia ikifungwa 1. Na katika sehemu ya chini, taarifa kwamba mimi kwa kweli kupata 0.1. Hivyo, tatizo kutatuliwa. Lakini bado. Mimi sasa kwenda kupata kidogo curious, na mimi nina kwenda nyuma katika wangu printf taarifa na kusema, unajua nini? Ningependa kuthibitisha kwamba hii ni kweli moja ya kumi. Na mimi nina kwenda wanataka kuona hii , kusema, tano maeneo decimal. Siyo tatizo. Mimi kubadili 04:58, Mimi recompile na kufanya. Mimi rerun kama ikifungwa 1. Kuangalia nzuri. Sanity yangu hundi ili mwisho huko, lakini Nina kupata zaidi kidogo adventurous. Mimi nina kwenda na mabadiliko .5-0.10. Nataka kuona maadili 10 baada ya nafasi decimal. Na mimi nina kwenda mbele na recompile hii na rerun ikifungwa 1. Mimi aina ya majuto baada ya kupima hii zaidi kwa sababu math yangu si hivyo kusahihisha tena, inaonekana. Lakini kusubiri dakika, labda kwamba tu fluke. Labda kompyuta ni kaimu kidogo ya ajabu. Napenda kwenda mbele na kufanya pointi 20 decimal na kuwahakikishia kwamba mimi mwenyewe kujua jinsi ya kufanya hesabu. Mimi najua jinsi ya mpango. Kufanya ikifungwa 1, recompile, na damn it. Kwamba ni kweli, kweli kupata mbali na alama. Basi nini kinaendelea hapa? Intuitively, misingi ya mawazo yetu mapema juu ya ukubwa wa aina ya data, kile ambacho ni lazima kinachotokea hapa chini ya Hood? Yeah? Hasa. Kama unataka hii usahihi sana, na hiyo ni heck ya mengi ya usahihi - 20 idadi baada ya uhakika decimal. Huwezi uwezekano kuwakilisha holela ya simu isipokuwa kama una holela ya simu ya bits. Lakini sisi kufanya hivyo. Kwa kuelea, sisi tu bits 32. Hivyo kama bits 32 inaweza tu permuted katika njia - tu kama binadamu wetu juu, hatua mikono juu au chini - katika idadi mahususi ya njia, kuna tu idadi finite ya idadi halisi unaweza kuwakilisha na wale bits. Na hivyo kompyuta hatimaye ni kwenda na kuanza kukata pembe. kompyuta inaweza kuficha maelezo wale kutoka kwetu kwa muda kidogo. Lakini kama sisi kuanza poking katika idadi na kuangalia mbali na mbali zaidi katika trailing idadi katika idadi nzima, basi sisi kuanza kuona kwamba ni kweli approximating wazo la kumi moja. Na hivyo ni zamu nje, kusikitisha, kuna idadi ya usio wa idadi hatuwezi kuwakilisha kwa usahihi katika kompyuta, angalau kwa finite idadi ya vipande, finite kiasi cha RAM. Sasa kwa bahati mbaya, hii wakati mwingine ina madhara halisi ya dunia. Kama watu hawana kabisa kufahamu hii au aina ya kuchukua kwa nafasi ya ukweli kwamba kompyuta zao tu kufanya kile wao kuwaambia yake ya kufanya na wala kuelewa haya ya ndani uwakilishi wa maelezo - ambayo, kusema ukweli, katika baadhi ya lugha ni siri kutoka kwa mtumiaji, tofauti katika C - baadhi ya mambo mabaya yanaweza kutokea. Na nini Nilidhani tunatarajia kufanya ni kuchukua hatua nyuma. Na hii ni kuhusu nane dakika ya video. Ni kurushwa hewani miaka michache iliyopita, na inatoa utambuzi katika kweli nini unaweza kwenda vibaya wakati wewe chini ya kufahamu haya aina ya maelezo katika sana wote-pia ulimwengu halisi. Kama tunaweza dim taa kwa dakika chache. SPIKA 1: Sisi sasa kurudi uhandisi majanga ya Marvels kisasa. Kompyuta - tumekuwa wote wamekuja kukubali mara nyingi frustrating matatizo kwamba kwenda pamoja nao. Mende, virusi, na glitches programu ni ndogo bei kulipa kwa ajili ya urahisi. Lakini katika high-tech na high-speed kijeshi na mpango wa nafasi maombi, tatizo ndogo yanaweza kujitukuza katika janga. Tarehe 4 Juni, 1996, wanasayansi tayari kuzindua unmanned Ariane 5 roketi. Ilikuwa ni kufanya satelaiti kisayansi iliyoundwa na kuanzisha usahihi jinsi Dunia shamba magnetic inaingiliana na upepo wa jua. roketi iliyojengwa kwa ajili ya Ulaya Nafasi ya Shirika na lile mbali kutoka yake kituo katika pwani ya ya Kifaransa. JACK GANSSLE: Wakati kuhusu 37 sekunde katika ndege, kwanza niliona kuna kitu kwenda vibaya. nozzles walikuwa swiveling katika njia ya wao kweli lazima si. Karibu sekunde 40 ndani ya ndege, wazi gari ilikuwa kwenye matatizo. Na kwamba wakati wao alifanya uamuzi kuiharibu. usalama mbalimbali afisa, na guts kubwa, taabu ya kifungo, akapiga juu roketi kabla hawakuweza kuwa hatari kwa usalama wa umma. SPIKA 1: Hii ilikuwa safari msichana Ariane ya 5, na uharibifu wake ulifanyika kwa sababu ya kasoro iliyoingia katika programu ya roketi. JACK GANSSLE: tatizo juu ya Ariane ni kwamba kulikuwa na idadi kwamba required 64 bits kueleza. Na walitaka kubadilisha na idadi ya 16-bit. Wao kudhani kuwa idadi ilikuwa kamwe kwenda kuwa kubwa sana, ya kwamba zaidi ya wale maadili katika kidogo 64- idadi walikuwa zeros. Walikuwa na makosa. SPIKA 1: kutokuwa na uwezo wa programu moja mpango kukubali aina ya idadi yanayotokana na mwingine alikuwa kwenye mizizi ya kushindwa. Programu ya maendeleo imekuwa sana gharama kubwa sehemu ya teknolojia mpya. Ariane 4 roketi alikuwa sana mafanikio, hivyo mengi ya programu kuundwa kwa ajili pia ilikuwa kutumika katika Ariane 5. PHILIP COYLE: tatizo msingi ilikuwa kwamba Ariane 5 mara kwa kasi, kuharakisha kasi zaidi. Na programu alikuwa na si waliendelea kwa ajili hiyo. SPIKA 1: uharibifu wa roketi ilikuwa kubwa kifedha maafa, wote kutokana na kosa dakika programu. Lakini hii haikuwa mara ya kwanza data uongofu matatizo alikuwa wanakumbana kisasa roketi teknolojia. JACK GANSSLE: Katika mwaka 1991, na kuanza ya kwanza vita vya Ghuba, Patriot kombora uzoefu aina sawa ya tatizo simu uongofu. Kama matokeo, 28 askari wa Marekani walikuwa waliuawa na wengine wapatao 100 kujeruhiwa wakati Patriot, ambayo ilitakiwa kulinda dhidi ya Scuds zinazoingia, alishindwa kwa moto kombora. SPIKA 1: Wakati Iraq walivamia Kuwait na Amerika ilizindua Desert Storm katika mapema 1991, Patriot kombora betri walikuwa uliotumika kulinda Saudi Arabia na Israeli kutoka Scud Iraq kombora mashambulizi. Patriot ni Marekani kati-mbalimbali uso-kwa-hewa mfumo wa viwandani na Raytheon kampuni. THEODORE POSTOL: ukubwa wa Patriot interceptor yenyewe ni takribani 20-miguu kwa muda mrefu. Na ni kizito paundi 2000. Na hubeba warhead ya juu - Nadhani ni takribani £ 150. Na warhead yenyewe ni high kulipuka ambayo ina vipande kuzunguka. casing ya warhead imeundwa kutenda kama buckshot. SPIKA 1: makombora ni kufanyika wanne kwa kila kontena na ni kusafirishwa na Trailer nusu. PHILIP COYLE: Patriot kupambana na kombora mfumo inakwenda nyuma katika angalau miaka 20 sasa. Ni awali ilikuwa imeundwa kama ulinzi hewa kombora kwa risasi chini ndege ya adui. Katika Vita ya Ghuba ya kwanza, wakati kwamba vita alikuja pamoja, Jeshi alitaka kutumia kwa risasi chini Scuds, ndege si. Iraq hewa nguvu haikuwa sana ya tatizo. Lakini Jeshi alikuwa na wasiwasi kuhusu Scuds. Na hivyo walijaribu kuboresha Patriot. SPIKA 1: Intercepting kombora adui kusafiri saa mach tano alikuwa kwenda kuwa changamoto ya kutosha. Lakini wakati Patriot alikimbizwa katika huduma, Jeshi hakuwa na ufahamu wa Iraq muundo kwamba alifanya yao Scuds karibu vigumu hit. THEODORE POSTOL: Ni nini kilichotokea Scuds ni kwamba walikuwa akija katika walikuwa imara. Walikuwa tikisika. Sababu ya hayo ni raia wa Iraq, katika Ili kupata kilomita 600 nje ya 300 wa kilomita-mbalimbali kombora, alichukua uzito nje ya warhead mbele. Walitoa warhead nyepesi. Hivyo sasa Patriot ni kujaribu kuja kwa Scud. Na zaidi ya muda, balaa Wengi wa muda, ingekuwa tu kuruka na Scud. SPIKA 1: Mara tu mfumo wa Patriot waendeshaji barabara Patriot amekosa lengo lake, wao detonated Patriots warhead ili kuepuka uwezekano majeruhi kama aliruhusiwa kuanguka chini. THEODORE POSTOL: Hiyo ilikuwa nini zaidi watu waliona kama fireballs kubwa angani na kutoeleweka kama intercepts Scud ya warheads. SPIKA 1: Ingawa katika anga usiku Wazalendo alionekana kuwa mafanikio kuharibu Scuds, saa Dhahran kuna inaweza kuwa hakuna kosa kuhusu wake utendaji. Huko, rada Patriot mfumo wa waliopotea wimbo wa Scud zinazoingia na kamwe ilizinduliwa kutokana na kasoro programu. Ni mara ya kwanza aligundua Israel ambao kwamba tena mfumo ilikuwa juu, tofauti kubwa wakati akawa kutokana na saa iliyoingia katika mfumo wa kompyuta ya. JACK GANSSLE: Kuhusu wiki mbili kabla ya janga katika Dhahran, Israel taarifa ya Wizara ya Ulinzi kwamba mfumo alikuwa kupoteza muda. Baada ya masaa nane ya kukimbia, waligundua kwamba mfumo ni kuwa unaonekana chini sahihi. Wizara ya Ulinzi alijibu kwa kuwaambia yote ya betri Patriot na si kuondoka mifumo juu kwa muda mrefu. Wao kamwe alisema nini kwa muda mrefu ilikuwa. Masaa nane? Masaa 10? 1000 masaa? Hakuna aliyejua. SPIKA 1: betri Patriot stationed katika kambi ya saa Dhahran na ndani yake saa kiujanja alikuwa juu zaidi ya 100 masaa ya usiku wa Februari 25. JACK GANSSLE: Ni msisimko wakati wa usahihi wa juu ya kumi ya pili. Sasa, sehemu ya kumi ya pili ni kuvutia idadi sababu haiwezi kuwa walionyesha katika binary hasa, ambayo ina maana haiwezi kuwa walionyesha hasa katika yoyote ya kisasa ya digital kompyuta. Ni vigumu kuamini, lakini kutumia hii kama mfano. Hebu kuchukua namba moja ya tatu. Theluthi moja hawezi kuwa walionyesha katika decimal hasa. Moja ya tatu ni 0.333 kwenda juu kwa infinity. Hakuna njia ya kufanya hivyo na kabisa usahihi katika decimal. Hiyo hasa aina moja ya tatizo yaliyotokea katika Patriot. tena mfumo wa mbio, mbaya kosa wakati akawa. SPIKA 1: Baada ya 100 masaa ya kazi, makosa katika wakati ilikuwa tu theluthi moja ya pili. Lakini katika suala la kulenga kombora kusafiri saa mach tano, ni matokeo ya makosa ya kufuatilia ya zaidi ya mita 600. Itakuwa kosa mbaya kwa askari katika Dhahran. THEODORE POSTOL: Kilichotokea ni Uzinduzi Scud ilikuwa wanaona na mapema onyo satelaiti. Na walijua kuwa Scud alikuwa anakuja katika mwelekeo wao kwa ujumla. Hawakujua ambapo ilikuwa ijayo. SPIKA 1: Ilikuwa sasa hadi rada sehemu ya mfumo Patriot kutetea Dhahran na Machapisho na kuweka wimbo wa kombora zinazoingia adui. JACK GANSSLE: rada alikuwa smart sana. Ingekuwa kweli kufuatilia nafasi ya Scud na kisha kutabiri ambapo ni pengine itakuwa wakati ujao rada alimtuma mapigo nje. Kwamba aliitwa lango mbalimbali. THEODORE POSTOL: Kisha mara moja Patriot anaamua muda wa kutosha kupita kwenda nyuma na kuangalia eneo ijayo kwa ajili ya hii kitu wanaona, unaendelea nyuma. Hivyo wakati akarudi vibaya mahali, basi anaona hakuna kitu. Na anaamua kwamba kulikuwa hakuna kitu chochote, ilikuwa kugundua uongo, na matone ya kufuatilia. SPIKA 1: Scud zinazoingia kutoweka kutoka screen rada, na sekunde baadaye slammed Paulo ndani ya ngome. Scud kuuawa 28 na mara moja ya mwisho fired wakati wa Vita ya Ghuba ya kwanza. Kusikitisha, programu updated aliwasili saa Dhahran siku iliyofuata. flaw programu amekuwa fasta, kufunga sura moja katika wasiwasi historia ya kombora Patriot. Mzalendo ni kweli kifupi kwa ajili ya kufuatilia Phased Array Kukatiza ya Lugha. DAVID J Malan: zote haki, hivyo yanayotisha mfano, kuwa na uhakika. Na kwa bahati nzuri, hizi ngazi ya chini mende ni si kitu ambacho tutaweza kawaida kuwa na kufahamu, hakika si kwa baadhi ya yetu ya mwanzo wa mipango. Badala yake, zaidi ya mende utasikia kukutana itakuwa mantiki katika asili, kisintaksia katika asili ambapo kanuni tu haina kazi ya haki. Na unajua ni pretty kufunga. Lakini hasa wakati sisi kupata mwisho wa muhula, ni kwenda kuwa zaidi na zaidi ya uwezekano wa kweli kufikiri kwa bidii juu ya kubuni ya mipango yako na msingi uwakilishi huko, pia, ya data. Kwa mfano, tutaweza kuanzisha MySQL, ambayo ni maarufu injini database kwamba unaweza kutumia na tovuti ya kuhifadhi data juu ya mwisho ya nyuma. Na itabidi kuanza kuamua katika mwisho wa muhula sio tu kile aina ya data pamoja na mistari haya ya kutumia lakini hasa jinsi wengi bits kutumia, kama au unataka kuhifadhi tarehe kama tarehe na nyakati kama nyakati, na pia mambo kama jinsi kubwa unataka Vitambulisho vya kipekee kwa kuwa, kusema, watumiaji katika orodha yako. Kwa kweli, kama baadhi yenu alikuwa na Picha za hesabu kwa muda kabisa, na wewe kujua jinsi ya kupata na Mtumiaji ID yako - ambayo wakati mwingine inaonyesha juu katika yako maelezo mafupi ya URL ya isipokuwa umechagua utani kwa ajili ya URL, au kama wewe wameweza kutumika Facebook Grafu API, hadharani API na ambayo unaweza kuuliza Facebook kwa takwimu ghafi - unaweza kuona nini ID yako numeric ni. Na baadhi ya miaka iliyopita, Facebook kimsingi alikuwa na mabadiliko ya kutoka kutumia sawa ya ints kwa kutumia muda mrefu muda mrefu kwa sababu baada ya muda kama watumiaji kuja na kwenda na na kujenga kura ya akaunti bandia akaunti, hata wao kwa urahisi sana walikuwa na uwezo wa kutolea nje kitu kama 4 bilioni iwezekanavyo thamani kama int. Hivyo zaidi juu ya aina wale wa masuala ya chini ya barabara, kama vile. Haki ya wote, hivyo kwamba alikuwa akitoa. Hiyo ilikuwa ni kutokuwa sahihi. michache ya matangazo ya haraka. Hivyo sehemu rasmi kuanza hii kuja Jumapili, Jumatatu, Jumanne. Utasikia kupitia barua pepe baadaye wiki hii kama sehemu ya kazi yako. Na itabidi hapa pia katika hatua hiyo jinsi na mabadiliko ya sehemu yako kama yako ratiba ya sasa imebadilika au yako faraja ngazi sasa imebadilika. Wakati huo huo P-seti moja na moja ni hacker kutokana hii Alhamisi na chaguo kupanua kwamba tarehe ya mwisho kwa specifikationer hadi Ijumaa katika njia ya kawaida. Kutambua kwamba pamoja na tatizo kuweka specifikationer ni maelekezo ya jinsi ya kutumia appliance CS50, kufanya, kama vile baadhi CS50 maalum zana kama style 50, ambayo inaweza kutoa na maoni juu ya dynamically ubora wa kanuni style yako na pia kuangalia 50, ambayo inaweza kutoa kwa nguvu maoni kama yako kanuni ya usahihi. Kusamehe kwamba bado tuko Board nje kinks wachache na hundi 50. machache ya wanafunzi wenzako ambao hawakuwa kuanza kuzunguka 4:00 usiku wa Ijumaa wakati spec akapanda niliona tangu hapo mende chache kwamba sisi ni kazi kupitia, na msamaha kwa mtu yeyote ambaye ina uzoefu frustrations visivyofaa. kosa ni yangu. Lakini tutaweza kufuatilia CS50 kujadili wakati kwamba ni kutatuliwa. Hivyo neno juu ya alama wenyewe. Hivyo utakuwa wiki moja au mbili kabla ya kuanza kupata maoni juu ya seti tatizo kwa sababu wewe bado hatuna wenzake kufundisha. Na hata basi, sisi kuanza kutathmini Tatizo C seti kabla ya sisi kurudi nyuma na kutathmini mwanzo hivyo kwamba kupata zaidi husika maoni kwa haraka zaidi. Lakini kwa ujumla kwa mtaala, CS50 seti tatizo ni tathmini pamoja kufuatia shoka nne - upeo, usahihi, kubuni, na style. Wigo ni kwenda kuwa idadi kawaida kati ya sifuri na tano kwamba Ukamataji wa kiasi gani cha kipande kwamba wewe wakawauma mbali. Kwa kawaida, unataka hii kuwa tano. Wewe angalau alijaribu kila kitu. Na taarifa ni sababu multiplicative ili kufanya sehemu tu ya tatizo kuweka si mkakati bora. Wakati huo huo, wazi zaidi ni umuhimu wa usahihi - tu ni mpango wako sahihi na kuheshimu na vipimo? Hii ni mizigo kwa makusudi zaidi sana kuliko wengine wawili na shoka Sababu ya tatu kwa sababu tunatambua kwamba kwa kawaida wewe ni kwenda kutumia mengi zaidi wakati Chasing chini baadhi ya mende, kupata kanuni yako ya kufanya kazi, basi ni indenting yake na kuchagua sahihi kutofautiana majina na kama, ambayo ni ya mwisho mwingine ya wigo wa style. Hiyo si kusema style si muhimu, na tutaweza kuhubiri juu ya wakati wote katika mihadhara na katika sehemu. Sinema inahusu aesthetics ya maadili yako. Je waliochaguliwa vizuri aitwaye vigezo kwamba ni mfupi lakini kwa kiasi fulani maelezo? Ni kanuni yako indented kama ve kuonekana katika hotuba na kwa njia thabiti kwa mtindo wa 50? Mwisho ni haki ya kubuni pale katikati. Kubuni ni moja vigumu kuweka kidole juu kwa sababu ni mengi zaidi subjective. Lakini ni labda muhimu zaidi ya shoka tatu katika suala la ufundishaji thamani ya zaidi ya muda na kwamba hii itakuwa fursa ya kufundisha wenzake kwa kutoa kwa maoni ya ubora. Hakika, katika CS50 ingawa sisi kufanya haya formula na alama, mwishoni ya siku hizi ni kwa makusudi ndogo sana ndoo - kumweka maadili kati ya sifuri na tatu na sifuri na tano. Sisi si kujaribu kuteka mistari magumu kati ya tatizo seti au kati ya wanafunzi lakini badala ya kuzingatia kama vile tunaweza juu ya ubora, longhand maoni, ama typed au matusi kutoka ufundishaji wako hasa wenzetu, utasikia kupata kujua vizuri kabisa. Lakini kwa ujumla, wale ni uzito kwamba shoka mbalimbali watapata. Wakati huo huo, pia, ni thamani ya kushika katika akilini kwamba ni lazima si kudhani kwamba tatu kati ya tano ni 60% na Basi takribani kushindwa. Tatu ni makusudi maana ya kuwa aina ya katikati ya barabara nzuri. Kama wewe ni kupata threes katika mwanzo wa muhula, hiyo ni kweli maana ya kuwa nzuri mahali ya kuanza. Kama wewe ni kupata wawili-wawili maonyesho,, kuna dhahiri baadhi ya kazi kwa kulipa kidogo kipaumbele zaidi, kuchukua faida ya sehemu na masaa ya ofisi. Kama wewe ni kupata fours na umri wa miaka mitano, kubwa. Lakini kwa kweli, tunatarajia kuona trajectories kati ya wanafunzi - sana mtu mmoja mmoja kwa kila mwanafunzi, lakini kuanzia muhula hapa katika aina ya wawili mbalimbali tatu lakini kuishia hapa juu katika mbalimbali 4-5. Hiyo ni nini sisi ni kweli kutafuta. Na hatuna kukumbuka kwamba delta wewe maonyesho kati ya wiki sifuri na wiki 12 wakati mimi nina kufanya darasa. Haijalishi kwetu kabisa jinsi wewe haki mwanzoni kama yako trajectory ni kweli zaidi na nguvu. Uaminifu kitaaluma - hivyo basi mimi kuweka juu yangu mbaya zaidi sauti kwa muda tu. Hivyo bila shaka hii ina tofauti ya kupeleka wanafunzi zaidi kuliko nyingine yoyote katika historia ya bodi ad, naamini. Tuna aina ya kuhesabu waliopotea katika hii uhakika wa jinsi mara nyingi hii hutokea. Na si kwamba kwa sababu ya wanafunzi katika 50 ni yoyote zaidi kuliko wao mwaminifu classmates mahali pengine. Lakini kutambua, pia kwamba, sisi ni nzuri sana katika kuchunguza jambo la aina hii. Na kwamba ni faida ya kuwa sayansi ya kompyuta ya darasa ana kwa kuwa sisi unaweza na hatuwezi kulinganisha wanafunzi wote tatizo seti jozi-busara dhidi ya kila mengine, si tu mwaka huu lakini wote kabla ya miaka. Tuna uwezo, kama wanafunzi katika darasani, kwa Google na kutafuta kanuni ya katika maeneo kama github na majadiliano ya vikao. Kuna kabisa ufumbuzi wa CS50 ya p-seti yaliyo karibu huko. Lakini kama unaweza kupata yao, tunaweza kupata yao. Na yote haya ni mengi sana automatiska na rahisi na kusikitisha kwa sisi kupata. Lakini nataka kusisitiza, pia kwamba kozi ya kitaaluma uaminifu sera ni sana maana ya kuwa mengi sana kinyume cha roho hiyo. Hakika, mwaka huu tumekuwa rephrased mambo katika mtaala kuwa hii, dot dot dot, kwa undani zaidi katika mtaala. Lakini mada kuu katika kozi kweli ni kuwa na busara. Tunatambua kwamba huko ni muhimu kiasi cha ufundishaji thamani ya kushirikiana, kwa kiasi fulani, na wanafunzi, ambapo wewe mbili au tatu au wewe zaidi ni wamesimama katika bodi nyeupe whiteboarding, hivyo kusema, mawazo yako - kuandika nje pseudocode katika picha, diagramming kile lazima Mario kuwa kama ungekuwa na kuandika ni ya kwanza katika pseudocode. Kile lazima algorithm tamaa - jinsi lazima ni kuishi kwa tatizo seti moja? Na hivyo kutambua kwamba tabia kwamba sisi moyo sana sana pamoja na mistari hayo. Na katika mtaala, utaona nzima rundo la risasi chini ya kuridhisha jamii na si ya kuridhisha jamii ambayo inatusaidia kusaidia wewe wrap akili yako karibu ambapo hatuwezi kuteka kuwa mstari. Na kwa ujumla, utawala bora wa thumb ni kwamba kama wewe wanajitahidi kutatua baadhi ya mdudu na rafiki yako au classmate ni kukaa karibu na wewe, ni busara kwa wewe kuonyesha kwake kanuni yako na kusema, hey, unaweza kusaidia mimi kufikiri nini kinaendelea vibaya hapa? Sisi si kawaida kukumbatia upande wa pili. Ni si jibu sahihi kwa ajili yako rafiki au classmate hapa kusema, oh, kuangalia tu katika mgodi na takwimu ni nje na kwamba. Hiyo ni aina ya maana. Lakini kuwa na mtu mwingine, mwingine ubongo, mwingine jozi ya macho kuangalia screen yako au kuangalia code yako na kusema, ni wewe uhakika unataka kuwa kitanzi hapa? Au wewe ni uhakika unataka kwamba semicolon hapa? Au oh, kwamba ujumbe wa kosa maana hii. Wale ni nzuri sana na moyo tabia. kesi ambayo nilikuwa akidokeza mapema jipu chini wakati wanafunzi ni usiku na kufanya hukumu maskini maamuzi na emailing kanuni zao kwa mtu mwingine au kusema tu, hapa, ni katika Dropbox au Googling marehemu wakati wa usiku. Na hivyo napenda kuwatia moyo na kuombaomba ya wewe, Ukiwa na wale kuepukika wakati wa dhiki, wewe ni bumping up dhidi ya tarehe ya mwisho, wewe huna marehemu siku tangu ni tayari Ijumaa saa kwamba uhakika, email vichwa shaka au mwenyewe moja kwa moja. Kusema, kusikiliza, mimi nina katika wangu kuvunja uhakika hapa. Hebu kuwa na mazungumzo na takwimu ni nje. Kutegemea mtandao au nyingine si tabia nzuri ni kamwe ufumbuzi, na pia wengi wako classmates tena hapa chuo kwa sababu ya hukumu kuwa maskini. Lakini ni rahisi sana skirt kuwa mstari. Na hapa ni picha kidogo na moyo ninyi kutoka Reddit ili sasa kila kitu kitakuwa sawa. Hivyo kurejea haraka, basi, ya ambapo sisi kushoto mbali. Hivyo wiki iliyopita, kukumbuka kuwa sisi kuanzisha masharti, si katika Scratch lakini katika C wakati huu. Na kulikuwa na baadhi syntax mpya lakini kweli hakuna mawazo mapya per se. Tulikuwa na maneno Boolean kwamba tunaweza au pamoja na wima mbili baa au na pamoja na mbili ampersands, akisema kwamba wote wa kushoto na kulia lazima kuwa kweli kwa hili nitafanya. Kisha sisi alikuwa swichi, ambayo sisi inaonekana saa ufupi, lakini mimi kupendekeza ni kweli tu tofauti syntax kwa ajili ya kufikia huo aina ya lengo kama unajua katika kuendeleza kile kesi yako ni kwenda kuwa. Tuliangalia matanzi. kwa kitanzi ni labda ya kawaida, au angalau mmoja kwamba watu kawaida kufikia kwa ajili ya kisilika. Hata ingawa inaonekana kidogo fumbo, utaona wengi, mifano mingi ya hii kabla ya muda mrefu, kama una tayari mwishoni mwa wiki iliyopita. Wakati tanzi unaweza vile vile kufanikisha jambo hilo. Lakini kama unataka kufanya lolote incrementation au kuongezea ya kutofautiana wa maadili, una kufanya hivyo zaidi kuliko manually kwa kitanzi kabla inaruhusu. Na kisha kuna kitanzi do-wakati, ambayo inaruhusu yetu kufanya kitu fulani katika angalau mara moja kwa wakati kitu mwingine ni kweli. Na hii ni nzuri hasa kwa mipango au kwa ajili ya michezo ambapo unataka kuchochea mtumiaji kwa ajili ya kitu angalau mara moja. Na kisha kama yeye au yeye hana kushirikiana, unaweza kutaka kufanya hivyo tena na tena. Na vigezo, wakati huo huo, tulikuwa na mistari ya maadili kama hii, ambayo inaweza kuwa ya mistari miwili. Unaweza kutangaza int kuitwa counter, semicolon. Au unaweza tu kutangaza na kufafanua, hivyo kusema. Kuwapa thamani kwa wakati mmoja. Na kisha mwisho, sisi aliyesema juu ya kazi. Na hii ilikuwa mfano mzuri katika maana kwamba unaeleza aina mbili ya kazi. Moja ni GetString (), ambayo, tena, anapata kamba kutoka mtumiaji. Lakini GetString () ni aina ya kuvutia, hivyo mbali kama tumekuwa kutumika, kwa sababu tumekuwa daima kutumika kwa kitu upande wa mkono wa kushoto wa sawa ishara. Hiyo ni kusema kwamba GetString () anarudi thamani. Kuirudisha, bila shaka, kamba. Halafu kwa upande wa mkono wa kushoto, tuko tu kuokoa kwamba kamba ndani ya variable kuitwa jina. Hii ni tofauti, katika hisia, kutoka printf sababu printf, angalau katika yetu matumizi ya hapa, haina kurudi kitu. Kama kando, haina kurudi kitu. Sisi tu hawajali ni nini. Lakini haina na nini aitwaye athari upande. Na nini ni kwamba athari upande katika kila kesi tumeona hivi sasa? Je printf kufanya? Ni kitu prints kwa screen, maonyesho ya maandishi au namba au kitu kwenye screen. Na kwamba tu kuchukuliwa athari upande kwa sababu si kweli kuwapatia ni kuunga kwangu. Siyo jibu ndani ya sanduku nyeusi kwamba naweza basi kufikia katika na kunyakua. Ni tu kufanya hivyo juu yake mwenyewe, kiasi kama Colton ilikuwa imeingia kwenye hii nyeusi sanduku wiki iliyopita, na yeye kwa namna fulani magically ilikuwa kuchora kwenye bodi bila mimi kweli kushiriki. Hiyo itakuwa na athari upande. Lakini kama mimi kwa kweli alikuwa na kufikia nyuma katika hapa na kusema, oh, hapa ni kamba kutoka kwa mtumiaji, kwamba ingekuwa kuwa na thamani ya kurudi. Na hivi sasa tumekuwa tu kutumika kazi kwamba watu wengine wameandika. Lakini tunaweza kweli kufanya haya aina ya mambo sisi wenyewe. Hivyo mimi nina kwenda katika CS50 appliance tena. Hebu karibu tab kwamba sisi alikuwa wazi wakati iliyopita. Na napenda kwenda mbele na kuunda faili mpya. Na mimi nina kwenda mbele na wito huu positive.c moja. Hivyo nataka kufanya kitu kwa chanya namba hapa. Hivyo mimi nina kwenda mbele na kufanya int - pole - # Pamoja. Hebu si kufanya huo kosa kama kabla. Int kuu (utupu), wazi curly brace, imefungwa curly brace. Na sasa nataka kufanya yafuatayo. Nataka kuandika mpango kwamba anasisitiza kwamba mtumiaji anatoa mimi sifuri. Hivyo hakuna kazi GetPositiveInt katika maktaba CS50. Kuna tu GetInt (). Lakini hiyo ni sawa kwa sababu nina constructs na ambayo siwezi kulazimisha zaidi kidogo kikwazo juu ya thamani hiyo. Mimi naweza kufanya kitu kama hiki. Hivyo int n - na kama wewe ni kuandika pamoja, tu kutambua Mimi nina kwenda nyuma na kubadilisha baadhi ya mambo katika wakati - hivyo n int sawa GetInt (). Na kwamba ni kwenda kuweka ndani ya int ya n. Na napenda kuwa na maelezo zaidi. Basi mimi kusema kitu kama mimi kudai kwamba wewe nipe sifuri. Wote haki. Hivyo kidogo tu ya maelekezo. Na sasa nini naweza kufanya nini? Naam, mimi tayari kujua kutoka rahisi yangu hali au matawi, kama mimi alikuwa katika Scratch, mimi naweza kusema kitu kama kama n ni kidogo kuliko au sawa na sifuri, basi nataka kufanya kitu kama, ambayo si mazuri. Na kisha mimi naweza kufanya - OK, lakini mimi kwa kweli wanataka kupata kwamba int. Ili niweze kwenda juu hapa na mimi naweza aina wa nakala hii na Indent hii. Na kisha, OK. Hivyo kama n ni chini ya au sawa na sifuri kufanya hili. Sasa, nini kama mtumiaji haina kushirikiana? Vizuri, basi mimi naenda kukopa hii hapa. Na kisha kwenda katika mimi hapa na hapa na hapa. Hivyo hii ni wazi si ya ufumbuzi, haki? Kwa sababu hakuna mwisho mbele. Kama nataka kudai kwamba mtumiaji anatoa mimi integer chanya, siwezi kweli kupata int. Siwezi kisha kuangalia kwa int kwamba. Lakini basi mimi unataka kuangalia tena na kuangalia ni tena na kuangalia tena. Hivyo ni wazi, nini ni bora kujenga kwa kutumia hapa? Haki ya wote, hivyo baadhi ya aina ya kitanzi. Hivyo nina kwenda kujikwamua wa karibu yote ya hii. Na mimi nataka kupata hii int angalau mara moja. Hivyo nina kwenda kusema kufanya - na mimi itabidi kurudi wakati katika muda tu - sasa, kufanya nini? Mimi naenda kufanya int n anapata GetInt (). OK. Hivyo kwamba ni nzuri. Na sasa jinsi mara nyingi kufanya Nataka kufanya hili? Napenda kuweka ndani printf ya kitanzi hivyo siwezi kudai tena na tena, kama haja kuwa. Na nini Nataka hii wakati hali ya kufanya? Nataka kuendelea kufanya hii wakati ni nini kesi? Yeah. N ni chini ya au sawa na sifuri. Hivyo tayari, tumekuwa kwa kiasi kikubwa kusafishwa kanuni hii up. Tumekuwa alikopa rahisi sana kujenga - kitanzi do-wakati. Nimekuwa kuibiwa tu mistari muhimu ya maadili ya kwamba mimi kuanza kuiga na pasting, ambayo ilikuwa si busara. Na hivyo sasa mimi naenda kwa kweli kuweka katika hapa na tu kufanya hivyo mara moja. Na sasa nini nataka kufanya katika mwisho wa mpango huu? Mimi itabidi tu kusema kitu rahisi kama, shukrani kwa ajili ya - na Mimi itabidi kufanya% i kwa int - backslash n, comma, na kisha kuziba katika n, semicolon. Wote haki. Basi hebu angalia nini kinatokea sasa wakati mimi kuendesha mpango huu. Mimi nina kwenda mbele na kufanya kufanya chanya. Damn. makosa wachache. Hivyo basi mimi kitabu nyuma hadi kwanza. Kufanya kazi kwa njia yao nyuma. Kazi kwa njia yao kutoka juu kwenda chini wasije kuteleza na tu jambo moja kuwa na makosa. Kinachojitokeza tamko la kazi GetInt (). Yeah. Hivyo ilikuwa si ya kutosha. Mimi aina ya alifanya kosa sawa lakini tofauti kidogo wakati huu. Nahitaji si tu ni pamoja na stdio.h lakini pia cs50.h, ambayo ni pamoja kinachojulikana maazimio ya kupata int, ambayo kufundisha appliance, au kufundisha C nini GetInt () ni. Hivyo basi mimi resave. Mimi nina kwenda kupuuza makosa mengine kwa sababu mimi naenda matumaini kwamba wao ni namna fulani kuhusiana na makosa Mimi tayari fasta. Hivyo basi mimi kwenda mbele na recompile na kufanya chanya, kuingia. Damn. Tatu makosa, bado. Hebu kitabu juu na ya kwanza. Isiyotumika kutofautiana n. Tumekuwa si kuonekana hii kabla. Na hii pia, ni kidogo fumbo. Hii ni pato la mkusanyaji. Na nini kuwa mstari yalionyesha huko - positive.c :9:13 - ni kusema, ni kusema juu ya mstari wa tisa ya positive.c, katika tabia ya 13, Safu ya 13, alifanya kosa hilo. Na hasa, ni kuwaambia mimi isiyotumika kutofautiana n. Basi hebu angalia - line tisa. Mimi nina kutumia n kwa maana ya kwamba Mimi kutoa ni thamani. Lakini nini mkusanyaji hapendi ni kwamba mimi si inaonekana kutumia. Lakini kusubiri dakika, mimi ni kwa kutumia hiyo. Katika mstari wa 11, mimi nina kutumia hapa. Lakini kama mimi kitabu chini zaidi saa positive.c :11 - hivyo katika mstari wa 11, tabia ya 12, mkusanyaji ni akiniambia, matumizi ya Undeclared kitambulisho n. Hivyo Undeclared njia nina si maalum kama kutofautiana na aina ya data. Lakini kusubiri dakika. Mimi hasa kwamba katika mstari tisa. Hivyo mtu ni kweli kuchanganyikiwa hapa. Ni ama mimi au mkusanyaji kwa sababu katika mstari wa tisa, tena, mimi nina kutangaza int n, na mimi nina kumshirikisha ni kurudi thamani ya GetInt (). Basi mimi nina kutumia kwamba n kutofautiana katika mstari 11 na kuangalia kama thamani yake ni chini zaidi au sawa na sifuri. Lakini hii inaonekana ni mbaya na kuvunjwa kwa nini? Kusema tena? Ah, mimi na kutangaza n kabla ya kuingia kitanzi. Lakini kwa nini? I mean, sisi tu mapendekezo kidogo iliyopita kwamba ni faini ya kutangaza vigezo wote kwenye mstari mmoja na kisha wao hawawajui baadhi ya thamani. variable kimataifa - hebu kuja nyuma na kwamba wazo katika muda tu. Kwa nini unataka mimi kuweka ni nje ya kitanzi? Ni. Hasa. Hivyo, angalau, kwa kiasi fulani counterintuitive, basi mimi muhtasari. Wakati wewe kutangaza n ndani ya kuzuia do pale - hasa ndani ya wale braces curly - kwamba n kutofautiana ana nini kuitwa wigo - lisilohusiana na mfumo wa bao yetu katika shaka - lakini ina wigo kwamba mdogo kwa braces wale curly. Kwa maneno mengine, kwa kawaida kama wewe kutangaza kutofautiana ndani ya seti ya curly braces, kutofautiana unaendelea tu ndani ya wale braces curly. Hivyo kwa kuwa mantiki peke yake, hata kama Nimekuwa alitangaza n katika mstari tisa, ni kimsingi kutoweka kutoka upeo, kutoweka kutoka kumbukumbu, ili kuzungumza, kwa wakati mimi hit line 11. Sababu line 11, kwa bahati mbaya, ni nje ya wale braces curly. Hivyo mimi kwa bahati mbaya hawezi kurekebisha hili kwa kwenda nyuma kwa nini mimi alifanya hivyo kabla. Unaweza kwa mara ya kwanza kufanya hivyo. Lakini ni nini sasa si kufanya cyclically? Wewe ni wazi si kupata int cyclically. Ili tuweze kuondoka GetInt (), na sisi tuache GetInt () ndani ya kitanzi kwa sababu hiyo ni nini tunataka bemba mtumiaji kwa ajili ya tena na tena. Lakini haina inatosha kwenda hadi mstari, kusema, sita. Int n, semicolon. Je, si kuwapa thamani lakini, kwa sababu huna haja tu bado. Lakini sasa hapa chini, ilani - hii itakuwa kosa rahisi sana. Sitaki kwa kivuli uliopita yangu tamko la n. Nataka kutumia n kwamba kweli lipo. Na hivyo sasa katika mstari wa 10, Mimi hawawajui n thamani. Lakini katika mstari sita, mimi kutangaza n. Na hivyo wanaweza au mimi naweza si kutumia katika mstari wa 12 sasa? Siwezi kwa sababu kati ya ambayo curly braces ni n alitangaza sasa? moja hadi hapa kwenye mstari tano. Mmoja hapa kwenye mstari 14. Hivyo kama mimi sasa zoom nje, ila faili hii, kwenda nyuma katika na kukimbia kufanya chanya, ulioandaliwa wakati huu. Hivyo kwamba ni tayari maendeleo. Kufyeka. . / Chanya, kuingia. Mimi kudai kwamba wewe nipe sifuri. Hasi 1. Hasi 2. Hasi 3. Sifuri. Moja. Na shukrani kwa ajili ya mtu ni nini sasa kuchapishwa. Hebu jaribu kitu kingine, nje ya udadisi. Mimi kuambiwa pembejeo integer. Lakini nini kama mimi badala aina katika kondoo? Hivyo sasa kuona haraka tofauti - tena. Lakini hakuna mahali popote katika kanuni yangu Je, mimi kuandika tena. Hivyo ambapo, labda, ni hii jaribu tena haraka kuja kutoka, unaweza kusema? Yeah, kutoka GetInt () yenyewe. Hivyo moja ya mambo wafanyakazi CS50 gani kwa ajili yenu, angalau katika hizi chache kwanza wiki, ni sisi wameandika baadhi ya kiasi ya makosa ya kuangalia kuhakikisha kwamba kama wewe piga GetInt (), wewe angalau kupata nyuma int kutoka kwa mtumiaji. Huwezi kupata kamba. Huwezi kupata Char. Huwezi kupata kitu mwingine kabisa. Utapata int. Sasa, wanaweza kuwa chanya. Wanaweza kuwa hasi. Sisi kufanya dhamana hakuna kuzunguka kwamba. Lakini sisi bemba mtumiaji kujaribu tena, Jaribu tena, jaribu tena mpaka yeye au yeye kweli inashirikiana. Vile vile, kama mimi kufanya 1.23, kwamba si int. Lakini kama mimi aina katika, kusema, 50, kwamba anitiaye thamani ya kwamba nilitaka. Wote haki. Hivyo si mbaya. Maswali yoyote juu ya nini tumekuwa tu kufanyika? takeaway muhimu, kwa kuwa wazi, si sana kitanzi, ambayo tumeona kabla hata kama sisi si kweli kutumika, lakini suala la wigo, ambapo vigezo inaweza tu inaweza tu kutumika ndani ya baadhi ya wigo maalum. Haki ya yote, napenda kushughulikia maoni uliyofanya awali, kwamba wa kimataifa kutofautiana. Kama kando, zinageuka kuwa mwingine ufumbuzi wa tatizo hili, lakini kawaida ufumbuzi sahihi au ufumbuzi hafifu iliyoundwa, ni kutangaza kutofautiana yako kama nini kuitwa variable kimataifa. Sasa mimi nina aina ya kukiuka tafsiri yangu ya wigo kwa sababu kuna hakuna braces curly saa ya juu sana na chini sana ya faili. Lakini maana ya kwamba ni kwamba sasa katika mstari nne, n ni variable kimataifa. Na kama jina ina maana, ni tu kupatikana kila mahali. Mwanzo kwa kweli ina hizi. Kama kutumika kutofautiana, unaweza kukumbuka wewe alikuwa na kuchagua kama ni kwa ajili ya hii sprite au kwa ajili ya wote sprites. Naam, kila sprites ni wazi njia ya kusema kimataifa. Yeah? Ah, mzuri swali. Hivyo kukumbuka kwamba katika toleo sana kwanza ya maadili wangu, wakati mimi kimakosa alitangaza na inavyoelezwa n katika mstari tisa - Mimi amekiri ni kama variable na mimi akampa thamani na operator zoezi - hii alinipa makosa mawili. Moja, ukweli kwamba n ilikuwa si kutumika, na wawili, kuwa katika mstari wa 11 ni tu si alitangaza. Hivyo moja ya kwanza mimi si anuani ya wakati huo. Ni kosa si madhubuti ya kutangaza kutofautiana lakini si matumizi yake. Lakini moja ya mambo tumefanya katika Appliance CS50, kwa makusudi, pedagogically, ni tumekuwa cranked up matarajio ya mkusanyaji kufanya uhakika kwamba wewe ni kufanya mambo si tu usahihi lakini kwa kweli kwa usahihi. Kwa sababu kama wewe ni kutangaza variable kama n na kamwe kutumia, au kutumia usahihi, basi kile ni kufanya ni huko? Ni kweli mtumishi hakuna kusudi. Na ni rahisi sana baada ya muda, kama wewe wala configure kompyuta yako mwenyewe katika njia hii, ili tu kuwa na kanuni ambayo ina kidogo mabaki hapa, mabaki huko. Na kisha baada ya miezi wewe kuangalia nyuma na wewe ni kama, kwa nini ni line hii ya kanuni ya huko? Na kama hakuna sababu nzuri, ni haina faida wewe au wenzako chini ya barabara kuwa na mashaka juu ya basi. Kama kando, ambapo ni kwamba kuja kutoka? Naam, kukumbuka kwamba kila wakati sisi kukusanya mpango, kila ya mambo haya ni yanachapishwa. Hivyo tutaweza kuja nyuma hii. Lakini tena, kufanya ni shirika kwamba automates mchakato wa kuandaa na mbio mkusanyaji halisi kuitwa Clang. Jambo hili, tutaweza hatimaye kuona, ana kufanya na debugging na maalum programu inayoitwa debugger. Hii ina nini na optimizing kanuni - zaidi juu ya kwamba katika siku zijazo. Std = C99 - hii ina maana kutumia toleo la 1999 ya C C. imekuwa karibu hata zaidi ya kwamba, lakini alifanya baadhi nice mabadiliko 10 pamoja na miaka iliyopita. Na hapa ndio husika. Tunasema kufanya chochote ambacho awali ingekuwa onyo kosa kuzuia mwanafunzi kutoka kuandaa. Na ukuta njia kufanya hivyo kwa nzima rundo la vitu, si tu kuhusiana na vigezo. Na kisha basi mimi kitabu kwa mwisho wa mstari huu. Na hii, pia, tutaweza hatimaye kuja nyuma. Hii ni wazi jina la faili Mimi naandika. Hii anakumbuka jina la faili Mimi outputting kama jina ya mpango wangu runnable. Hii lcs50-tu ina maana kutumia CS50 maktaba, na zeros yoyote na wale ambao wafanyakazi aliandika na ulioandaliwa mapema mwaka huu, kuunganisha yao katika mpango wangu. Na mtu yeyote kujua nini-LM ni? Ni maktaba math, ambayo ni pale tu hata kama wewe ni si kufanya lolote math. Ni tu moja kwa moja zinazotolewa kwetu na kufanya. Vizuri, basi mimi kufanya moja nyingine mfano hapa kwa kufungua faili mpya. Na napenda kuokoa hii moja kama string.c. Ni zinageuka kuwa kama sisi majadiliano juu ya data aina ya leo, kuna hata zaidi kinachoendelea chini ya Hood kuliko tumeona hivi sasa. Hivyo basi mimi haraka kufanya mpango wa haraka. Pamoja stdio.h. Na mimi itabidi kuokoa. Na unajua, basi mimi si kufanya huo makosa tena na tena. Pamoja cs50.h. Na napenda kwenda mbele sasa na kufanya kuu int (batili). Na sasa mimi tu wanataka kufanya mpango kwamba anafanya hii - kutangaza kamba kuitwa s na kupata kamba kutoka kwa mtumiaji. Na napenda kufanya kidogo maelekezo hapa - tafadhali nipe kamba - hivyo mtumiaji anajua nini cha kufanya. Na kisha chini hapa chini hii, Nataka kufanya yafuatayo - kwa int i anapata sifuri. Tena, kompyuta wanasayansi kawaida kuanza kuhesabu saa sifuri, lakini tunaweza kufanya kuwa moja kama kweli sisi alitaka. Sasa mimi nina kwenda kufanya i ni chini kuliko urefu wa kamba ya s. Hivyo strlen - S-T-A-L-E-N - tena, ni mafupi kwa sababu ni rahisi na aina, hata kama ni kidogo fumbo. Hii ni kazi tumekuwa si kutumika kabla lakini literally gani kwamba - kurudi kwangu idadi hiyo inawakilisha urefu wa kamba kwamba mtumiaji typed. Kama wao typed katika hello, ingekuwa kurudi tano kwa sababu kuna tano barua katika hello. Basi, juu ya kila iteration ya hii kitanzi, i pamoja plus. Hivyo tena, kiwango kujenga hata kama wewe si kabisa pia starehe au ukoo na ni bado. Lakini sasa juu ya kila iteration ya kitanzi hii, taarifa ya nini mimi nina kwenda kufanya. Nataka kwenda mbele na magazeti nje tabia moja - hivyo% c backslash n juu ya mstari mpya. Na kisha, unajua nini nataka kufanya? Chochote neno ni kwamba mtumiaji aina katika, kama hello, nataka magazeti H-E-L-L-O, tabia moja kwa kila mstari. Kwa maneno mengine, nataka kupata saa mtu binafsi wahusika katika kamba, ambapo hadi sasa ina kamba tu imekuwa mlolongo wa wahusika. Na zinageuka siwezi kufanya s, bracket, i, karibu bracket, karibu mabano, semicolon. Na mimi kufanya jambo moja zaidi. Ni katika faili iitwayo string.h strlen kwamba ni kutangazwa. Hivyo kama nataka kutumia kwamba kazi, Mimi haja ya kuwaambia mkusanyaji, wanatarajia kuitumia. Sasa napenda kwenda mbele na kufanya programu inayoitwa kamba. Dot, kufyeka, kamba. Tafadhali nipe kamba. Mimi itabidi kwenda mbele na aina yake. Hello, katika mechi zote, kuingia. Na sasa nimepata taarifa zilizochapishwa hii tabia moja baada ya nyingine. Hivyo undani mpya hapa ni kwamba kamba, mwisho wa siku, unaweza kuwa kupatikana kwa njia ya mtu binafsi yake wahusika kwa kuanzisha mraba bracket nukuu. Na kwamba kwa sababu kamba chini ya Hood ni kweli mlolongo wa wahusika. Lakini nini kuhusu wao ni nadhifu katika RAM ya kompyuta yako - Mac, PC, chochote ni - wao ni halisi nyuma kwa nyuma kwa nyuma - H-E-L-L-O - saa binafsi, karibu ka katika kumbukumbu. Hivyo kama unataka kupata saa vile nane Byte, ambayo katika kitanzi hii itakuwa bracket sifuri, bracket moja, bracket mbili, bracket tatu, bracket nne - hiyo ni sifuri indexed hadi tano - kwamba magazeti nje ya H-E-L-L-O kwenye mstari wake mwenyewe. Sasa, kama kichocheo, napenda kuonyesha aina ya mambo itabidi hatimaye kuwa uwezo wa kuelewa, angalau kwa karibu baadhi ya kuangalia. Kwa moja, nini sisi ni pamoja na katika leo mifano, kama Ningependa, ni kweli moja ya jailbreaks sana kwanza kwa iPhone. Jailbreaking ina maana ngozi simu hivyo unaweza kweli kutumia kwenye mbalimbali carrier au kufunga programu yako mwenyewe. Na wewe utakuwa taarifa hii inaonekana kabisa fumbo, uwezekano mkubwa. Lakini tuangalie hii. iPhone ilikuwa inaonekana kupasuka na kwa kitanzi, hali kama, mwingine hali, rundo la kazi tumekuwa si kuonekana. Na tena, utakuwa si wakati mtazamo wa kwanza pengine kuelewa jinsi hii ni kazi. Lakini kila kitu kwamba sisi aina ya kuchukua kwa nafasi katika maisha yetu ya kisasa kweli huelekea kupunguza hata kwa baadhi ya misingi hizi tumekuwa kuangalia. Hebu kwenda mbele na kufungua moja nyingine ya mpango, holloway.c. Hivyo hii, pia, ni jambo lazima si kweli kujua. Hata hakuna hata mmoja wa wafanyakazi au ningeweza pengine takwimu hii nje kwa kuangalia ni kwa sababu hii ilikuwa kanuni ya mtu kwamba iliwasilishwa kwa nini kihistoria inayojulikana kama C obfuscated mashindano, ambapo wewe kuandika mpango kwamba inaandaa na anaendesha lakini ni hivyo damn cryptic hakuna binadamu wanaweza kuelewa kile ni kwenda kufanya mpaka wao kweli kukimbia. Hivyo kweli, kama ukiangalia katika hii kanuni, naona kubadili. Mimi naona kuu. Mimi naona haya mabano mraba ikimaanisha baadhi ya aina ya safu. Je, mtu yeyote unataka nadhani nini mpango huu kwa kweli gani kama mimi kukimbia Holloway? Ndiyo. OK. Vizuri. Hivyo tu wafanyakazi na siwezi kufikiri nje ya mambo haya kufanya. Na sasa Mwisho, napenda kwenda mbele na kufungua nyingine moja mpango. Hii moja - tena, tutaweza kufanya kanuni chanzo inapatikana online - hii moja tu aina ya pretty kuangalia. Wote walifanya ni hit nafasi bar kidogo kabisa. Lakini hii ni halisi ya kanuni. Hivyo kama unadhani kwamba pretty, kama sisi kweli kuendesha hii ifikapo haraka, hatimaye utaona jinsi sisi ili kufanya mambo kama haya. Hivyo tutaweza kuondoka wewe kumbuka kwamba na kuona juu ya Jumatano. [Halisi kucheza] SPIKA 2: Katika CS50 ijayo, TFS hatua ya uasi. SPIKA 3: Kuna yeye ni. Kupata naye! [Halisi kucheza]