[Ddoqq il-mużika] DAVID J. Malan: Kull dritt, dan huwa CS50. U dan huwa wieħed ġimgħa. Allura ifakkar li l-aħħar darba f'ġimgħa żero, aħna iffukat fuq il-ħsieb komputazzjoni. U aħna transitioned minn dak li Bidunett, programmar grafika lingwa mill-ħbieb tagħna fil Media Lab MIT. U ma scratch, aħna ma tesplora ideat bħal funzjonijiet, u kondizzjonijiet, u loops, u varjabbli, u anke avvenimenti, u ħjut, u aktar. U llum, aħna qed tmur biex tkompli tuża dawk l-ideat, u verament jeħodhom għall mogħtija, iżda jittraduċuhom lingwa oħra magħrufa bħala C. Issa, Ċ hija lingwa aktar tradizzjonali. Huwa livell aktar baxx lingwa, jekk inti se. Huwa purament testwali. U hekk fl-ewwel daqqa t'għajn, huwa kollha ser tfittex pjuttost mistur jekk inti stajt qatt programmati qabel. Aħna qed tmur biex ikollhom semi-colons, u parentesi, u ċingi kaboċċi, u aktar. Iżda jirrealizzaw li anke għalkemm l-sintassi hija waslet biex tfittex ftit familjari li ħafna minnkom, ara passat li. U tipprova tara l-ideat li huma, fil-fatt, familjari, għaliex hawnhekk fil-ġimgħa liema aħna ser tibda tagħmel hu li jqabbel, inizjalment, Scratch kontra C. Allura, per eżempju, tfakkar li meta aħna implimentata l-ewwel ta 'programmi tagħna aħħar darba, kellna blokk li ħares ftit xi ħaġa simili this-- meta bandiera aħdar għafast, u mbagħad kellna wieħed biċċiet jew aktar puzzle taħtha, f'dan il-każ, jiġifieri, bonjour dinja. Allura, tassew, fil Scratch, meta I ikklikkja dik il-bandiera ħadra biex imexxu programm tiegħi, so biex jitkellmu, dawn huma -blokki li tikseb esegwiti, jew run. U, speċifikament, Scratch qal, bonjour, dinja. Issa, I setgħet speċifikat Kliem differenti hawn. Iżda aħna ser tara li, fil-fatt, ħafna ta 'dawn blocks-- u tabilħaqq, fis-C f'ħafna functions-- jista 'jkun parametrized jew apposta biex tagħmel affarijiet differenti. Fil-fatt, fis-C jekk irridu tixtieq li jikkonvertu, issa, dan il-programm Scratch għal din il-lingwa l-oħra, aħna qed tmur biex jiktbu ftit xi ħaġa bħal din. Mogħtija, hemm xi familjari sintassi hemm aktar probabbli, int, u parentesi, u bla effett. Iżda printf-- anke jekk inti naħseb li jkun biss print. Iżda istampar tfisser istampar formattjati, kif aħna ser dalwaqt tara. Dan il litteralment se istampar għall-iskrin ikun x'ikun hu ġewwa ta 'dawk parentesi, li naturalment f'dan il-każ huwa, bonjour dinja. Imma inti taf Avviż xi oħra sintassi, xi kwotazzjonijiet doppja, li l parentesi fl-aħħar, is-semi-colon u simili. Allura hemm daqsxejn ta 'overhead, biex ngħidu hekk, kemm konjittiv u b'mod sintattiku, li aħna qed tmur li għandek tiftakar qabel fit-tul. Imma tirrealizza li mal-prattika, dan se jibdew tiżdied fil inti. Fil-fatt, ejja tiffoka fuq li wieħed funzjoni specifically-- f'dan il-każ, jgħidu bonjour dinja. Allura ngħid hija l-funzjoni. Hello dinja hija parametru tagħha, jew argument, il-personalizzazzjoni tiegħu. U l-ekwivalenza fis-C huwa biss se tkun din il-linja wieħed hawn, fejn printf huwa ekwivalenti għal, ngħidu, -sekwenza ikkwotat doppja, bonjour dinja hija ekwivalenti, naturalment, li x'hemm fil-kaxxa bajda hemmhekk. U l-backslash n, għalkemm ftit stramba u assenti mill-bidu nett, sempliċiment se jkollha l-effett li aħna ser tara fil-kompjuter, bħal Mac tiegħi jew PC, ta 'ftit jiċċaqalqu l- cursor mal-linja li jmiss. Huwa simili laqtu Ikteb fuq it-tastiera tiegħek. Allura aħna ser tara li mill-ġdid qabel twil. Iżda l-ewwel, ejja tagħti ħarsa lejn din Eżempju ieħor fil-każ ta 'linji. Kellna din il dejjem loop aħħar darba, li kienet sensiela ta 'biċċiet puzzle li xi ħaġa ma litteralment forever-- f'dan il-każ, jgħidu, bonjour dinja, bonjour dinja, bonjour dinja, bonjour dinja. Allura huwa loop infinita permezz tad-disinn. Fl Ċ, jekk irridu li timplimenta din -istess idea, nistgħu sempliċiment jagħmlu dan. Filwaqt veru, printf bonjour world-- issa filwaqt, biss naħa semantika, tip ta conjures l-idea ta 'kif isir xi ħaġa għal darb'oħra, u għal darb'oħra, u għal darb'oħra, u għal kemm żmien? Ukoll, irtirar true-- li vera hija biss fuq jew waħda. U vera hija, ovvjament, dejjem veru. Allura huwa tip ta 'sinjifikat dikjarazzjoni biss biex jgħidu veru. Iżda fil-fatt, dan huwa intenzjonat, għaliex jekk vera hija biss dejjem veru, milli waqt veru biss jimplika, jekk ftit indirettament, li l-linji ta 'kodiċi li ġejjin fl bejn dawk ċineg kaboċċi għandek biss teżegwixxi darb'oħra, u għal darb'oħra, u għal darb'oħra, u qatt fil-fatt jieqfu. Imma jekk inti ma tridx tiegħek loop biex tieqaf, kif aħna għamlet aħħar darba ma 'xi ħaġa simili dan, irrepeti l-50 darba ġejjin, fis-C nistgħu nagħmlu l-istess ma 'dak tal tissejjaħ għall loop---keyword li ma jkunx imma għall. U allura aħna għandna xi sintassi ġdid hawn, bil int i huwa ugwali 0, i inqas minn 50, i ++. U aħna ser terga 'lura għal dan. Iżda din hija sempliċement kif nixtiequ tittraduċi s-sett ta 'blokki Scratch għal sett ta 'linji Ċ ta' kodiċi. Sadanittant, jikkunsidraw fatturi varjabbli. U, fil-fatt, aħna biss serrieq wieħed mument ilu. U fil-każ ta 'scratch, jekk irridu riedu tiddikjara varjabbli imsejjaħ i għall i qed numru sħiħ, biss numru, u rridu li tistabbilixxi li xi valur, aħna se jużaw dan oranġjo blokk here-- stabbiliti i għal 0. U aħna ser tara llum u lil hinn, bħad-ġimgħa li għaddiet, programmaturi tagħmel kważi dejjem jibdew jingħaddu minn żero, verament billi konvenzjoni. Iżda wkoll minħabba sejħa lura minn diskussjoni tagħna ta 'binarju, l-iżgħar numru li tista jirrappreżentaw ma 'kwalunkwe numru ta' bits huwa biss se jkun 0 innifsu. U hekk aħna ser ġeneralment jibdew initializing anke varjabbli tagħna għal 0. U fis-C biex jagħmlu l-istess, aħna qed tmur biex ngħid int għall-eqreb numru sħiħ, i biss permezz tal-konvenzjoni. I setgħet sejjaħ dan il-varjabbli xejn Irrid, bħal fil scratch. U allura huwa daqs 0 biss jassenja il-valur 0 minn fuq il-lemin u tqiegħdu fil-varjabbli, jew il- kontenitur tal-ħażna hemmhekk, fuq ix-xellug. U l-semi-colon kif aħna ser see-- u Rajna ftit ta 'dawn already-- ifisser biss tmiem tal-ħsieb. Ipproċedi biex jagħmlu xi ħaġa oħra fuq il-linji li jsegwu. Issa, dak dwar espressjonijiet Boolean? Ifakkar li fl Scratch, dawn kienu espressjonijiet li huma jew vera jew mistoqsijiet false--, tassew, li huma jew vera jew falza. Allura fil-każ ta 'scratch, nistgħu jistaqsu mistoqsija sempliċi bħal dan, huwa i inqas minn 50? Hekk i, għal darb'oħra, huwa integer. Forsi aħna qed tużah fi programm scratch biex iżommu kont ta 'punteġġ jew xi ħaġa bħal dik. Allura dan sintassi hawn fil Scratch ifisser biss, huwa i inqas minn 50? Ukoll, Thankfully, hemm xi ħaġa sempliċi C. U biex tittraduċi, dan aħna se sempliċement jgħidu i inqas minn 50, bl-użu ċavetta familjari fuq it-tastiera tiegħek. Sadanittant, jekk int riedu ngħid xi ħaġa aktar ġenerali, simili, ukoll, huwa x inqas minn y fejn kull ta xuy huma stess varjabbli? Nistgħu nagħmlu l-istess ħaġa fis-C, sakemm konna maħluqa dawn il-varjabbli diġà. U aħna ser tara kif tagħmel dan qabel twil. Nixtiequ sempliċement jgħidu x inqas minn y. Allura int tibda tara xi similaritajiet. U dawk folks li għamlu Scratch kienet ispirati minn xi wħud minn dawn l-ideat bażiċi. U tkun taf tara dan it-tip ta ' sintassi fil languages-- f'ħafna mhux biss Scratch, mhux biss Ċ, iżda Python, u JavaScript, u lingwi l-oħra għadhom. Ejja jikkunsidraw kostruzzjoni ieħor mill Ċ, il-kunċett ta 'kondizzjoni, tagħmel xi ħaġa kondizzjonalment. Jekk xi ħaġa huwa veru, jagħmlu dan. Jekk xi ħaġa oħra huwa minnu, tagħmel dan. Huwa tip ta 'l-ipprogrammar ekwivalenti ta 'furketta fit-triq. Forsi huwa two-way furketta, ta 'tliet direzzjonijiet furketta, jew aktar. U fl Scratch, aħna jista 'jkollha raw xi ħaġa bħal din. Allura dan wieħed huwa wieħed kbir. Iżda jikkunsidraw l relattiv sempliċità tal-loġika. Jekk x hija inqas minn y, allura jgħidu x hija inqas minn y, inkella jekk x huwa akbar minn y, allura jgħidu x hija akbar minn y. U mbagħad, loġikament, jekk taħseb lura għal Scratch jew biss tiegħek intwizzjoni bniedem stess, ukoll, jekk x ma tkunx akbar minn y, u x mhux inqas minn y, allura naturalment x se tkun ugwali għal y. Allura f'dan il-każ, billi nesting dawk il-blokki Scratch, nistgħu jiksbu tliet Mod furketta fit-triq? Sadanittant, jekk irridu tagħmel dan fis-C, hija forsi jistenna simpler-- ftit mill-anqas ladarba inti tikseb familjari mal-sintassi. Jekk x hija inqas minn y, printf x hija inqas minn y. Else jekk x huwa akbar minn y, printf x hija akbar minn y. Else printf x hija ugwali għal y-- u, għal darb'oħra, ma 'dawk backslash truf biss għal dawk il-linji l-ġodda b'tali mod li jekk inti attwalment dam dan it-tip ta 'programm ikun biss jiċċaqalqu cursor tiegħek finalment mal-linja li jmiss tal-iskrin. Issa, sadanittant Scratch kellhom oħra karatteristiċi aktar sofistikati, biss li wħud minnhom aħna qed tmur biex inizjalment jimxu lejn id-dinja ta 'C. U wieħed minnhom kien imsejħa f'lista scratch. U dan kien speċjali tip ta varjabbli li permess int taħżen affarijiet multipli fiha lura, li lura, għal wara, li lura. Fl Ċ, dan ma jkollu listi, per se, imma xi ħaġa li huma b'mod aktar ġenerali imsejħa arrays, għalkemm aħna ser terga 'lura aktar tard dan is-semestru biex tħares lejn xi ħaġa imsejħa 'lista, jew verament lista marbuta. Iżda għal issa, l-eqreb ekwivalenti fis-C għalina se tkun xi ħaġa imsejħa firxa. U l-firxa hija sempliċement tip speċjali ta varjabbli li jippermettilek li jaħżen id-data lura, li lura, għal wara, biex lura. U, fil-fatt, fil Scratch, jekk ridna li jkollhom aċċess l-ewwel element ta 'firxa jew a list-- u jien ser sejħa hija, b'konvenzjoni, ARGV, l-argument vettur, iżda aktar fuq li qabel twil. Jekk nixtieq nikseb l-ewwel element ta ARGV, fid-dinja ta 'scratch inti fil-fatt tagħmel tipikament jibdew jingħaddu mill-1. U hekk I jistgħu jiksbu punt 1 ta 'ARGV. Thats kemm MIT implimentati -kunċett ta 'listi. Iżda fis-C, jien ser aktar sempliċiment biss jgħidu, ARGV, li għal darb'oħra huwa l-isem ta 'tiegħi list-- jew li tkun ċara, firxa. U jekk irrid l-ewwel Elementi, jien ser għall-użu parentesi kwadri, li inti ma jista 'spiss jintuża taħt tastiera. Iżda 0 ifisser biss, nikseb me l-ewwel. Allura fuq okkażjoni u kif ħin jgħaddi, aħna qed tmur biex tibda tara dawn dichotomies bejn scratch u Ċ, li permezz tagħha scratch użi wieħed. Aħna fis-C-użu 0 hawn. Imma inti taf malajr tara ladarba inti tifhem -pedamenti ta 'kull lingwa, li dawn l-affarijiet tibda tikseb l-aktar familjari permezz tal-prattika u l-prattika. Mela ejja fil-fatt tfittex issa fil program. Hawnhekk għandha tkun l-ewwel ta 'C tagħna kodiċi tas-sors għall-programmi komplet. U l-programm aħna qed tmur li joffru għall-konsiderazzjoni huwa dak li l-ekwivalenti li dik il-biċċa scratch qabel. Allura fil hawn, aħna għandna x'hemm forsi l-programm Ċ sempliċi inti tista 'tikteb li attwalment ma xi ħaġa. Issa, aħna ser tħares passat, għal issa, tkun tinkludi, io.h standard, u dawn l-angolu parentesi, u int, u bla effett, u l-braces kaboċċi, u simili. U ejja biss jiffoka fuq dak, għall-inqas intuwittivament, jista jaqbżu fil inti diġà. Fil-fatt, prinċipali, jien ma neċessarjament jaf dak li din hija, iżda ferm simili scratch kieku dik meta bandiera aħdar għafast biċċa puzzle, sabiex ma Ċ bħala lingwa ta 'programmar jkollhom biċċa prinċipali ta 'kodiċi li gets esegwiti fil-kontumaċja. U, fil-fatt, huwa litteralment għaddej biex jiġu msejħa prinċipali. Allura prinċipali hija funzjoni. U huwa funzjoni speċjali li teżisti fis-C li meta inti tmexxi programm, huwa prinċipali li gets mmexxija mill inadempjenza. Fid-dinja tal-scratch, kien normalment meta bandiera aħdar għafast li ltqajna mmexxija mill-kontumaċja. Sadanittant, Rajna dan qabel, printf jew stampata ifformattjat, li se tkun funzjoni li jiġi ma Ċ, flimkien ma 'mazz sħiħ ta' oħrajn, li se minn żmien u l-ħin għal darb'oħra, sabiex tagħmel eżattament kif ismu jissuġġerixxi, jistampaw xi ħaġa. What do we tixtieq li jistampaw? Ukoll, aħna ser tara li minn karattri tagħlaq bħal these-- dinja bonjour, backslash n fil-kwotazzjonijiet doppja, nistgħu tell printf eżattament dak li jistampaw fuq l-iskrin. Iżda sabiex jagħmlu dan, aħna sfortunatament bżonn tieħu xi ħaġa li hija diġà cryptic lilna bnedmin, imma mill-inqas dan huwa kemmxejn readable-- qawwija jinkludu, io.h standard, int, prinċipali, null, printf, kollha ta 'l maġika incantations aħna biss raw fuq l-iskrin. Iżda għandna attwalment ikollhom go aktar arcane xorta. Aħna l-ewwel bżonn biex tittraduċi l-kodiċi li aħna tikteb fil-kodiċi magna. U jitlob lura mingħandhom aħħar ġimgħa li l-magni, inqas dawk nafu hawn, fl-aħħar tal-ġurnata biss jifhmu żerijiet u dawk. U Alla tiegħi, jekk kellna biex jikteb dawn żero u dawk li fil-fatt il-programm, dan iwassal ħafna, malajr ħafna jieħdu l-gost ta 'xejn. Iżda jirriżulta, per ġimgħa li għaddiet, li dawn it-tendenzi ta 'żero u dawk biss għandhom tifsira speċjali. F'ċerti kuntesti, huma jistgħu jfissru numri. F'ċerti kuntesti, dawn jista 'jfisser ittri, jew kuluri, jew kwalunkwe numru ta 'estrazzjoni oħra hemmhekk fuq. Iżda hekk kif il-kompjuter tiegħek CPU, Ipproċessar Unità Ċentrali, jew l-imħuħ ġewwa tal-kompjuter tiegħek. Huwa ġeneralment Intel ġewwa, minħabba li l waħda mill-kumpanniji akbar li jagħmel CPUs għall-kompjuters. Ukoll, mikroproċessuri Intel u oħrajn sempliċiment iddeċidew bil-quddiem li ċerti mudelli ta 'żerijiet u Dawk għandha tfisser affarijiet speċifiċi. Ċerti mudelli ta 'żero u dawk se jfisser, jistampa dan lill-iskrin, jew iżidu dawn iż-żewġ numri, jew naqqas dawn iż-żewġ numri, jew jiċċaqalqu din il-biċċa ta 'data minn memorja tal-kompjuter tiegħi hawn fuq, jew kwalunkwe numru ta 'livell baxx ħafna l-oħra, iżda fl-aħħar utli, l-operazzjonijiet. Iżda, Thankfully, aħna bnedmin mhumiex ser li jeħtieġu li jkunu jafu dan il-livell ta 'dettall. Tabilħaqq, bħad aħħar darba, fejn aħna estratt mill-ġdid, u għal darb'oħra, u għal darb'oħra, bini minn livell baxx ħafna primitives bħal żero u dawk għal kunċetti livell ogħla bħall-numri, u ittri, u kuluri, u aktar, hekk nistgħu kemm programmaturi toqgħod fuq l-ispallejn tal oħrajn li jkunu ġejjin quddiemna u l-użu ta 'softwer li oħrajn nies kitbu qabel us-- jiġifieri programmi imsejħa kompilaturi. Ċ hija lingwa li normalment kkumpilata, li jfisser konvertita minn sors kodiċi għall-kodiċi magna. B'mod partikolari, xi tfisser huwa li jekk inti ħadthom ltqajna sors tiegħek kodiċi li inti stess tikteb, kif aħna dalwaqt se fi ftit mument fuq l-iskrin, u inti tixtieq li jaqilbu finalment lill-magna code-- dawk żerijiet u dawk li biss Mac tiegħek jew PC tiegħek understands-- inti ħadthom ltqajna l-ewwel għalf li source code bħala input speċjali programm imsejjaħ kompilatur, l-output ta 'li aħna għandha tara hija kodiċi tal-magna. U, tabilħaqq, l-aħħar darba tkellimna dwar, verament, fl-aħħar tal-ġurnata, soluzzjoni ta 'problemi. You ħadthom ltqajna l-inputs. U inti stajt ltqajna outputs. U inti stajt ltqajna xi tip tal algoritmu fin-nofs. Algoritmi jistgħu jkunu ċertament implimentata fis-software, kif rajna mal-ġimgħa pseudocode u kif Ser naraw bil-kodiċi attwali din il-ġimgħa. U hekk kompilatur verament ftit għandha sett ta 'algoritmi ġewwa minnu, li jafu kif jikkonvertu l-keywords speċjali, bħall prinċipali, u printf, u oħrajn li aħna biss raw fil-mudelli ta żerijiet u dawk li Intel ġewwa u oħrajn CPUs attwalment jifhem. Allura kif nistgħu nagħmlu dan? Fejn irridu jiksbu kompilatur? Ħafna minna hawn Mac jew PC. U int taħdem Mac OS, jew Twieqi, jew Linux, jew Solaris, jew kwalunkwe numru ta 'ieħor sistemi operattivi. U, tabilħaqq, nistgħu go out fuq il-web u tniżżel kompilatur għall Mac tiegħek jew PC tiegħek għas-sistema tiegħek operattiva partikolari. Iżda aħna lkoll ikunu fuq paġni differenti, biex ngħidu hekk. Għandna d jkollhom ftit konfigurazzjonijiet differenti. U affarijiet ma tkunx taħdem l-istess. U, tabilħaqq, dawn il-jiem ħafna minna ma jużawx softwer li timxi biss fuq laptops tagħna. Minflok, aħna nużaw xi ħaġa bħal browser li tippermetti magħna biex jaċċessaw fuq l-internet applikazzjonijiet fil-sħaba. U aktar tard dan is-semestru, aħna se nagħmlu eżattament dan. Aħna se jikteb applikazzjonijiet jew softwer li jużaw code-- le Ċ, iżda f'lingwi oħra bħall Python u JavaScript-- li jimxu fil-sħaba. U biex tagħmel dan, aħna lilna nfusna matul is-semestru fil-fatt se tuża 'sħaba bbażata ambjent magħruf bħala CS50 IDE. Dan huwa l-ipprogrammar fuq l-internet ambjent, jew l-iżvilupp integrat ambjent, ide, li l-bniet atop xi softwer open source imsejjaħ Cloud 9. U aħna ħadna xi pedagoġika simplifikazzjonijiet lilha sabiex jaħbu ċerti karatteristiċi fil l-ewwel ġimgħat li aħna ma bżonn, wara li inti tista jiżvelaw minnhom u jagħmlu l-aktar xejn trid ma 'l-ambjent. U jippermetti, wisq, biex qabel l-jinstallaw softwer ċerti. Affarijiet simili hekk imsejħa CS50 librerija, li aħna ser dalwaqt tara tagħtina fis-C ma 'xi funzjonalità addizzjonali. Mela jekk inti tmur biex finalment CS50.io, inti ser tkun imħeġġa biex log fil- u ladarba inti tagħmel u joħolqu kont b'xejn, inti se tkun tista 'aċċess ta' ambjent li tidher pjuttost bħal dan. Issa, dan huwa fil-modalità default. Kollox huwa sbieħ u qawwi fuq l-iskrin. Ħafna minna għandna drawwa ta ' jaħdmu fuq biċċa CS50 li l- pjuttost tard bil-lejl. U għalhekk xi wħud minnkom jista 'jippreferi li jibdluh modalità bil-lejl, biex ngħidu hekk. Iżda, fl-aħħar, dak li int ser tara ġewwa CS50 IDE huwa ta 'tliet areas-- distinti żona fuq il fejn telaq fajls tiegħek ser ikunu fil- sħaba, żona fuq il-lemin ta 'fuq fejn kodiċi tiegħek se tkun editable. Int ser tkun kapaċi li tiftaħ Attenti individwali għal kull programm li tikteb dan is-semestru ġewwa ta 'dak rokna tal-lemin. U allura l-iktar arcanely, u għadhom qawwi, se tkun din il-ħaġa fil- qiegħ magħrufa bħala tieqa terminal. Din hija iskola antika Linja ta 'Kmand Interface, jew CLI, li tippermetti inti teżegwixxi jikkmanda fuq il computer-- f'dan il-każ, il-kompjuter fil-cloud-- biex tagħmel affarijiet simili jikkompilaw kodiċi tiegħek mill-kodiċi sors għall-kodiċi tal-magni, biex imexxu programmi tiegħek, jew biex tibda tiegħek web server, jew għall-aċċess database tiegħek, u kull numru ta 'tekniki oħra li aħna ser tibda tuża qabel fit-tul. Iżda biex naslu s'hemm, aħna qed se attwalment ikollhom biex imorru online u tibda playing. U biex tagħmel dan, ejja ewwel tibda tbagħbis mal prinċipali, u jiktbu l-parti ewlenija ta 'programm. U ejja jużaw dik il-funzjoni printf, li aħna użati qabel, sempliċement ngħid xi ħaġa. So here I am diġà ġewwa tal IDE CS50. Stajt illoggjat quddiem. U jien sħiħa skrinjati-tieqa. U għalhekk, finalment, inti wisq problemi li gejjin se jsegwi passi simili li se tipprovdi dokumentazzjoni onlajn. Allura inti m'għandekx bżonn ninkwetaw dwar jassorbu kull pass tekniku ftit li nagħmel hawn illum. Imma int ser tingħata skrin bħal dan. I jiġri li jkun fil-modalità bil-lejl. U inti tista 'brighten kollox mill-inkapaċitazzjoni modalità bil-lejl. U fl-aħħar tal- jum, int ser tara dawn it-tliet prinċipali areas---fajl browser fuq tax-xellug, il-Korpi għal Valutazzjoni Teknika kodiċi up fuq, u l-tieqa terminal fil-qiegħ. Let me imorru quddiem u ikteb l-ewwel programm tiegħi. Jien ser preemptively jmorru File, Save, u ħlief fajl tiegħi bħala hello.c. Tabilħaqq, b'konvenzjoni, kwalunkwe programm aħna tikteb li l-miktuba bil-lingwa C għandhom jissemmew xi ħaġa dot ċ, b'konvenzjoni. Hekk jien ser isem li bih hello.c, għaliex I biss jridu jgħidu bonjour lill-dinja. Issa jien ser zoom out u kklikkja Save. U kollha jien hawn issa huwa tab fejn nista 'tibda tikteb kodiċi. Dan mhux se jikkumpilaw. Dan ifisser xejn. U hekk anke jekk I konvertiti dan lill żerijiet u dawk, -CPU huwa se jkollu ebda idea x'inhu għaddej madwar. Imma jekk nikteb linji li ma jaqblu bi Ċ benesseri C conventions--, għal darb'oħra, dan language-- bil sintassi bħal dan, printf bonjour world-- u stajt gotten komdu magħhom jagħmlu dan matul iż-żmien. So I do not think I magħmula xi żbalji tipografiċi. Iżda, dejjem, l-ewwel darba li inti tagħmel dan, inti se. U dak I am madwar biex jagħmlu tista ħafna tajjeb ma jaħdmu għalik l-ewwel darba. U li perfettament OK, għaliex id-dritt issa int tista 'biss tara lott kollu ta' novità, iżda maż-żmien li ladarba inti tikseb familjari ma 'dan l-ambjent, u din il-lingwa, u oħrajn, inti ser tibda biex jara l-affarijiet li huma jew eżatta jew żbaljata. U dan huwa dak li l- fellows tagħlim u kors assistenti jiksbu daqshekk tajba fil maż-żmien, huwa perikli żbalji jew bugs fil-kodiċi tiegħek. Imma jien jsostnu li hemm l-ebda bugs f'dan kodiċi. So I issa tixtieq li tmexxi dan il-programm. Issa fuq Mac tiegħi stess jew PC, jien fil l-vizzju ta 'ikoni tikklikkja darbtejn meta I tixtieq li run xi program. Iżda li mhux l-mudell hawn. F'dan l-ambjent, li huwa CS50 IDE. Aħna qed jużaw operattiv sistema, imsejħa Linux. Linux huwa reminixxenti ta 'ieħor sistema operattiva, ġeneralment magħrufa kif Unix. U l-Linux huwa partikolarment magħruf għall jkollhom Linja ta 'Kmand Ambjent, CLI. Issa, aħna qed tuża speċifiku togħma ta 'Linux imsejħa Ubuntu. U Ubuntu huwa sempliċement ċerti verżjoni ta 'Linux. Iżda dawn Linux tal f'dawn il-jiem jagħmlu attwalment jiġu mal interfaces għall-utenti grafika. U l-waħda aħna jiġri li tkun qed tuża hawnhekk hija bbażata fuq l-internet. Allura dan tista 'tidher anki ftit differenti minn xi ħaġa inti stess jista 'jkollhom jidher jew run fil-passat. Hekk jien ser jimxi 'l quddiem issa u jagħmlu dan li ġej. Stajt salvati dan il-fajl bħala hello.c. Jien ser jimxi 'l quddiem u tip clanghello.c Allura Clang għall-lingwa Ċ hija kompilatur. Huwa installat minn qabel fil CS50 IDE. U inti tista 'assolutament tniżżel u jinstallaw dan fuq Mac tiegħek stess jew PC. Iżda, għal darb'oħra, inti ma għandekx kollha il-konfigurazzjoni ta 'qabel isir għalik. Allura għal issa, jien biss ser imexxu clanghello.c. U issa Avviż dan sintassi hawn eventwalment se jirrealizzaw ifisser biss li jien fil- jew folder direttorju imsejħa Workspace. Dan is-sinjal dollaru huwa biss konvenzjoni għall tifsira, it-tip jikkmanda tiegħek hawn. Huwa dak li sejjaħ pront, biss b'konvenzjoni huwa sinjal dollaru. U jekk immur quddiem issa u kklikkja Ikteb, xejn ma jidher li ġara. Imma dak li attwalment ħaġa tajba. Il-inqas li jiġri fuq -iskrin tiegħek, l-aktar probabbli kodiċi tiegħek huwa li tkun korretta, -inqas b'mod sintattiku. Mela jekk jien tixtieq li run dan il programm, x'għandi nagħmel? Ukoll, jirriżulta li l- isem default b'konvenzjoni għall-programmi meta inti ma jispeċifikawx isem għall-programm tiegħek hija biss a.out. U dan sintassi wisq, inti ser jiffamiljarizzaw ruħhom mal qabel fit-tul. Dot mmejla ifisser biss, ħej, CS50 IDE, tmexxi programm imsejjaħ a.out dan huwa ġewwa direttorju kurrenti tiegħi. Dak dot tfisser il-direttorju kurrenti. U aħna ser tara dak sekwenzi oħra bħal dawn ta 'karattri tfisser qabel twil. Allura here we go, Daħħal, bonjour dinja. U tkun taf avviż, li dak li ġara? Mhux biss ma kien print bonjour dinja. Hija mċaqalqa wkoll il cursor mal-linja li jmiss. U għaliex kienet li? Liema kienet l-kodiċi li aħna kiteb qabel li żgurat li l-cursor se mur fuq il-linja li jmiss? Ħaġa umoristiċi dwar kompjuter huwa huwa biss se biex jagħmlu litteralment dak li inti tgħid li tagħmel. Mela jekk inti għid li printf bonjour, virgola, l-ispazju, dinja, kwotazzjoni qrib, huwa litteralment biss ser li jistampaw dawk il-karattri. Imma kelli dan il-karattru speċjali fl-aħħar, irtirar, backslash n. U dan huwa dak assigurata li l-karattru marru mal-linja li jmiss tal-iskrin. Fil-fatt, let me go u jagħmlu dan. Let me imorru quddiem u ħassar din il. Issa, avviż li l- quċċata ta l-iskrin tiegħi hemm dawl aħmar ftit fil -tab li jindika, ħej, inti ħadthom ma salvat fajl tiegħek. Hekk jien ser jimxi 'l quddiem bil-kontroll S jew kmand S, tiffranka l-fajl. Issa goes-- daħlu aħdar moment--. U issa huwa lura lill biss qed ikona qrib. Jekk jien issa run clanghello.c darb'oħra, Ikteb, dot mmejla, a.out, Daħħal, tkun taf tara li xorta maħduma. Imma hija forsi Buggy ftit. Dritt issa, workspace prompt-- tiegħi, u mbagħad dan is-sinjal dollaru, u mbagħad prompt-- attwali tiegħi hija kollha fuq l-istess linja. Allura dan ċertament bug estetika, anki jekk mhuwiex verament bug loġiku. Hekk jien ser teqred dak I biss għamlet. Jien ser terġa 'ssir a.out. Avviż Stajt miżjud il newline karattru lura. Stajt salvati l-fajl. Hekk jien ser terġa 'ssir a.out, and-- Dammit, bug, bug jfisser żball. Allura l-bug hija li anke jekk I miżjuda l backslash n hemmhekk, mill-ġdid salvati, ri-dam il-programm, l-imġiba kienet l-istess. Għaliex kieku jkun? Jien nieqsa pass, id-dritt? Dak il-pass ewlieni preċedenti kienet li għandek to-- meta tibdel kodiċi sors tiegħek, jirriżulta wkoll run dan permezz tal-kumpilatur -ġdid hekk ikollok kodiċi tal-magna l-ġdida. U l-kodiċi tal-magna, l-żerijiet u dawk, ser ikunu kważi identiċi, iżda mhux perfettament hekk, għaliex għandna bżonn, naturalment, dik il-linja l-ġdida. Allura biex jiffissaw dan, jien ser jeħtieġu li terġa 'ssir clanghello.c, jidħlu, dot mmejla, a.out. U issa, bonjour dinja huwa lura fejn Nistenna li jkun. Allura din hija kollha multa u tajba. Iżda a.out huwa isem pretty stupid għal programm, anke jekk dan jiġri li jkun, għal raġunijiet storiċi, il- default-- tifsira outputs assemblaġġ. Imma ħalluni jimxi 'l quddiem hawn u jagħmlu dan b'mod differenti. Irrid programm dinja bonjour tiegħi li fil-fatt jiġu msejħa bonjour. Mela kieku kien ikona fuq tiegħi desktop, ma jkunux a.out. Din se jiġi mistieden bonjour. Allura biex tagħmel dan, jirriżulta li Clang, bħal ħafna programmi, ssostni l-argumenti kmand tal-linja, jew bnadar, jew swiċċijiet, li sempliċement jinfluwenzaw l-imġieba tiegħu. Speċifikament, Clang jappoġġja o sing bandiera, li mbagħad jieħu t-tieni kelma. F'dan il-każ, jiena ser arbitrarju, iżda raġonevolment, sejħa hija bonjour. Imma I jistgħu sejħa hija xi ħaġa Irrid, ħlief a.out, li Ikun pjuttost minbarra l-punt. U mbagħad biss tispeċifika l-isem tal-fajl I do jridu jiġbru. Allura issa anki jekk fil-bidu tal-kmand għadni Clang, fl-aħħar tal-kmand I għadhom l-isem tal-file, I issa għandhom dawn linja ta 'kmand argumenti, dawn il-bnadar li qed jgħidu, oh, mill-mod, output o, fajl imsejħa bonjour, mhux il a.out default. Mela jekk I hit Ikteb issa, xejn jidher li ġara. U, għadhom, issa nista 'nagħmel dot mmejla bonjour. Allura huwa l-istess programm. L-żerijiet u dawk li huma identika fl-aħħar tal-ġurnata. Iżda dawn qed f'żewġ a.out files-- differenti, li hija l-ewwel verżjoni u biss foolishly msemmija, u issa bonjour, li hija ferm aktar isem konvinċenti għal programm. Iżda, onestament, jien qatt ser ftakar dan mill-ġdid, u għal darb'oħra, u għal darb'oħra. U, fil-fatt, kif aħna tikteb programmi aktar ikkumplikati, -kmandi int se jkollhom jiktbu huma se jikseb saħansitra aktar ikkumplikat xorta. U hekk ma joqogħdu jinkwetaw. Jirriżulta li l-bnedmin qabel minna għandna realizzati huma wisq kellhom dan l-istess problema eżatt. Huma wkoll ma kinitx tgawdi jkollhom tip ġust twal, jikkmanda arcane, aħseb u ara tiftakar lilhom. U hekk bnedmin quddiemna għamlu programmi oħra li jagħmluha aktar faċli biex jikkompilaw software tiegħek. U, tabilħaqq, wieħed tali -programm huwa msejjaħ Għamla. Hekk jien ser jimxi 'l quddiem u jagħmlu dan. Jien ser teqred kollox I biss għamlet fil-mod li ġej. Let me tip LS. U tkun taf Avviż tliet things-- a.out, u stilla, bonjour u stilla, u hello.c. Nisperaw, dan għandu jkun ftit intuwittivi, sakemm qabel kien hemm xejn f'dan il workspace. Ma kien hemm xejn li kelli ħolqot sa bdejna klassi. U jien maħluqa hello.c. I mbagħad ikkompilati, u qalu li din a.out. U mbagħad I kkumpilata mill-ġdid ftit b'mod differenti u hija imsejħa bonjour. So I jkollhom tliet fajls f'dan id-direttorju, f'dan il-folder imsejjaħ Workspace. Issa, I jista 'jara dan ukoll jekk I zoom out attwalment. Jekk I zoom out hawn u tħares lejn dak lemin ta 'fuq kantuniera, kif imwiegħed ix-xellug naħa tal-iskrin tiegħek huwa dejjem se nuruk x'hemm fil-kont tiegħek, x'hemm ġewwa tal IDE CS50. U hemm tliet files hemmhekk. So I tixtieq li jeħles mill a.out u bonjour. U kif inti tista jimmaġina intuwittivament, inti jista sort ta 'klikk kontroll jew dritt ikklikkja fuq din. U dan il-menu ftit pops up. Tista 'tniżżel il-fajl, run dan, preview, jġedded, semmi mill-ġdid, jew dak li mhux. UI jistgħu biss tħassar, u dan ikun imorru. Imma ejja tagħmel affarijiet bil-kmand linja għal issa, sabiex tikseb komda ma 'dan, u jagħmlu dan li ġej. Jien ser jimxi 'l quddiem u neħħi a.out billi jittajpja litteralment rma.out. Jirriżulta, il-kmand għall it-tneħħija jew tħassir xi ħaġa, mhuwiex tneħħi jew iħassar. Huwa aktar konċiż RM, just biex isalva inti xi keystrokes, u hit Ikteb. Issa aħna qed tmur biex tkun kemmxejn cryptically neħħi fajl a.out regolari. I do not know verament dak li fajl irregolari ikun għadu. Imma I do jridu tneħħiha. Hekk jien ser tip y għall iva. Jew I jistgħu tip dan jitwettaq, u hit Ikteb. U, għal darb'oħra, xejn ma jidher li jiġri. Iżda dan huwa, ġeneralment, hija ħaġa tajba. Jekk jien tip LS dan iż-żmien, x'għandi nara? Nisperaw, biss bonjour u hello.c. Issa, bħala twarrib, inti ser Avviż dan stilla, b'asterisk, li fl-aħħar tal-programmi tiegħi. U dawn qed wkoll juru fil-aħdar. Dan huwa biss mod CS50 IDE tal ta cluing inti fil-fatt li dan mhux kodiċi sors. C'est eżekutibbli, li runnable programm li inti tista 'tmexxi effettivament billi tagħmel dot mmejla, u allura huwa isem. Issa, let me imorru quddiem u neħħi dan, rm bonjour, Daħħal, neħħi regolari fajl bonjour, iva. U issa jekk jien tip LS, aħna qed lura għall hello.c. Ipprova ma tħassar tiegħek kodiċi tas-sors attwali. Anki jekk hemm fatturi mibnija fis IDE CS50 fejn inti tista 'tmur permezz reviżjoni ta'l-istorja tiegħek u kontrina fil-ħin jekk inti aċċidentalment iħassru xi ħaġa, tagħmel tkun konxja skond dawn iqajjem iva jew le, ta 'dak li inti fil-fatt tixtieq li tagħmel. U jekk immur sal-quċċata xellug kantuniera idejn hawn, dak kollu li jibqa 'huwa hello.c. Allura hemm għenieqed ta ' jikkmanda oħra li inti jista 'jesegwixxi fid-dinja ta' Linux, waħda minnhom hija, għal darb'oħra, Make. U aħna qed tmur biex Make programm tiegħi issa kif ġej. Minflok tagħmel clang, minflok tagħmel clang-o, Jien ser sempliċiment litteralment tip, jagħmel bonjour. U issa Avviż, I am mhux ittajpjar jagħmlu hello.c. I am ittajpjar jagħmlu bonjour. U dan il-programm Għamla li tiġi ma IDE CS50, u aktar ġeneralment ma Linux, huwa programm li l- ser tagħmel program imsejjaħ Hello. U li għaddej biex tassumi, b'konvenzjoni, li jekk jista 'jsir dan il-programm, li għaddej biex tkun magħmula minn sors fajl kodiċi li jispiċċa fil dot ċ-hello.c. Mela jekk I hit Ikteb issa, avviż li il-kmand li gets eżegwita huwa attwalment saħansitra itwal qabel minn qabel. U dan għaliex konna IDE CS50 preconfigured li jkollhom xi karatteristiċi addizzjonali mibnija f'dik ma kellniex bżonn għadha biss, iżda malajr se. Imma l-ħaġa importanti li tirrealizza issa huwa għandi programm Hello. Jekk jien tip LS darb'oħra, jiena għandhom programm bonjour. UI tista 'taħdem ma' dot mmejla a.out, no, minħabba li l-punt kollu ta 'dan il- eżerċizzju kien dot bonjour mmejla. U issa għandi programm dinja bonjour tiegħi. Allura miexja 'l quddiem, aħna qed kważi dejjem biss ser jikkompilaw programmi tagħna użu tal-Għamla kmand. U allura aħna qed tmur biex imexxuhom permezz dot slash, u l-isem tal-programm. Imma tirrealizza dak Kun qed tagħmel għall inti, huwa hija hi stess mhux kompilatur. Huwa biss programm konvenjenza li jaf kif tagħti lok għal kompilatur jiddekorri sabiex inti stess tista 'tagħmel użu minnha. Liema jikkmanda oħra jeżistu fl Linux, u min-naħa l-IDE CS50? Aħna ser dalwaqt tara li hemm kmand CD, it-Tibdil fil Directory. Dan jippermettilek ġewwa interface kmand tal-linja tiegħek timxi 'l quddiem, u lura, u jiftħu folders differenti mingħajr l-użu maws. LS rajna, li stands għall-lista -fajls fil-direttorju kurrenti. Jagħmlu Dir, inti tista probabbilment tibda tiddeduċi liema dawn ifissru now-- jagħmlu direttorju, jekk inti tixtieq li toħloq folder. RM għall tneħħi, RM Dir għall neħħi directory-- u dawn, għal darb'oħra, huma l-linja ta 'kmand ekwivalenti ta 'dak li tista 'tagħmel fil CS50 IDE bil-maws. Imma inti ser malajr issib li xi kultant huwa biss ħafna aktar malajr biex jagħmlu affarijiet ma tastiera, u finalment ħafna aktar qawwija. Iżda huwa diffiċli li wieħed jargumenta li xejn konna qed tagħmel s'issa huwa dak kollu li qawwija, meta l aħna kont qed tgħid hi, bonjour dinja. U, fil-fatt, jien hardcoded il Kliem bonjour dinja fil-programm tiegħi. M'hemm l-ebda dinamiżmu s'issa. Scratch kien ordni ta 'kobor ġimgħa li għaddiet aktar interessanti. U hekk ejja nikseb hemmhekk. Ejja tieħu pass lejn dak bil Mod ta 'xi wħud minn dawn il-funzjonijiet. Allura mhux biss ma Ċ jiġu mal printf, u l-għenieqed ta 'funzjonijiet oħra li wħud minnhom aħna ser tara matul iż-żmien, ma jagħmilha kollha li faċli dritt out tal-bieb fil jkollna jintuza mill-utent. Fil-fatt, wieħed min-nuqqasijiet ta 'lingwi bħal Ċ, u anki Java u għadhom oħrajn, hija li ma jkunx jagħmluha faċli biex biss tikseb affarijiet simili interi minn utenti, jew kordi, kliem, u frażijiet, let affarijiet waħdu simili f'wiċċ l-ilma valuri tal-punti, jew numri reali mal-punti deċimali, u verament numri twal, kif aħna ser dalwaqt ara. Allura din il-lista ta 'funzjonijiet hawn, dawn huma bħal biċċiet oħra puzzle Scratch li għandna installat minn qabel fil CS50 IDE li aħna ser tuża għal ftit ġimgħat bħala roti ta 'taħriġ ta' tipi, u eventwalment tieħu lilhom off, u ħarsa taħt il-barnuża, forsi, fil kif dawn l-affarijiet huma implimentati. Iżda biex tagħmel dan, ejja attwalment jikteb programm. Let me imorru quddiem issa. U jien ser tinħoloq entità ġdida fajl billi tikklikkja din il ftit plus, u tikklikkja File Ġdid. Jien ser tiffranka din il jmiss wieħed bħala, ejja ngħidu, string.c, għaliex nixtieq li jilagħbu bil-kordi. U sekwenza fis-C huwa biss sekwenza ta 'karattri. Allura issa ejja imorru quddiem u jagħmlu dan li ġej. Inkludi standard IO.h-- u jirriżulta standard IO, IO biss tfisser l-input u l-output. Għalhekk jirriżulta li din il-linja hawnhekk huwa dak li hija l-ġirien li nużaw printf. Printf, naturalment, tipproduċi l-output. Allura sabiex jużaw printf, jirriżulta out inti trid li jkollha din il-linja tal-kodiċi fil-quċċata tal-fajl tiegħek. U aħna ser terga 'lura għal dak li li verament ifisser qabel twil. Jirriżulta li fl kwalunkwe programm C nikteb, Stajt ltqajna biex tibda bl kodiċi li tidher bħal dan. U tkun taf Avviż CS50 IDE, u żvilupp integrat oħra ambjenti bhalu, huma ser tipprova bħala l-aħjar huma jistgħu biex jintemm ħsieb tiegħek. Fil-fatt, mument ilu jekk I jneħħu dak I biss ma, I hit Ikteb. I imbagħad hit kaboċċi miftuħa Brace, hit Ikteb darb'oħra. U lest maħsub tiegħi. Hija tatni xi linja ġdida, inċiża mhux inqas għal raġunijiet stilistika sbieħ Ser naraw. U allura awtomatikament tatni li Brace kaboċċi biex jintemm ħsieb tiegħi. Issa, dan mhux dejjem raden dak li inti trid tagħmel. Iżda fil-parti kbira, dan ma tiffranka xi keystrokes. Allura mument ilu, aħna dam dan il program-- bonjour, dinja, u mbagħad ikkompilati dan, u mbagħad dam. Imma hemm ebda dinamiżmu hawn. X'jiġri jekk ridna li tagħmel xi ħaġa differenti? Ukoll, dak li jekk jien ridt li attwalment jiksbu string mill-utent? Jien ser tuża biċċa puzzle jissejjaħ eżattament that-- tikseb sekwenza. Jirriżulta b'mod Ċ li meta inti ma tridx li jagħti kontribut għal biċċa puzzle, jew aktar kif suppost għal funzjoni, inti litteralment biss tagħmel parentesi miftuħa, parentesi qrib. Allura huwa daqslikieku hemm ebda kaxxa bajda tip fis. Il-blokk ngħidu aħna qabel kellhom kaxxa bajda ftit. Aħna ma jkollhom dik il-kaxxa bajda issa. Imma meta I call spag nikseb, jien tixtieq li tqiegħed ir-riżultat x'imkien. Allura paradigma komuni ħafna fis-C huwa li sejħa funzjoni, bħal spag wasalt hawn, u mbagħad aħżen il-valur tar-ritorn tiegħu. Huwa r-riżultat tagħha isforz fil xi ħaġa. U dak huwa l- tibni fl-ipprogrammar, kemm jekk fil Scratch jew issa Ċ, li aħna jistgħu jużaw biex attwalment jaħżnu xi ħaġa? Sejħitilha varjabbli, id-dritt? U fl Scratch, aħna ma verament kura dak li kien għaddej fil-varjabbli. Iżda f'dan il-każ, aħna fil-fatt jagħmlu. Jien se ngħid sekwenza. U mbagħad I tista 'sejħa dan il xejn irrid. Jien ser sejħa hija isem, gets jiksbu sekwenza. U issa anke jekk int ġdid ftit għal dan, Avviż li jien nieqsa xi dettall. Jien jinsa 'semi-colon. I bżonn biex jintemm dan il-ħsieb. Hekk jien ser jimxu cursor tiegħi, u hit semi-colon hemmhekk. U dak li jien biss jsir? F'dan il-linja ta 'kodiċi, numru 5 fil-mument, Jien ssejjaħ string nikseb bl-ebda dħul. B'hekk m'hemm l-ebda bajda ftit kaxxa bħall-blokk Save jkun. Jien biss qal, ħej, kompjuter, nikseb me string. Is-sinjal ugwali mhuwiex verament sinjal ugwali, per se. Hu l-assenjazzjoni operatur, li jfisser, ħej, kompjuter, jċaqalqu l-valur minn fuq il-lemin għal fuq ix-xellug. U fil-xellug, għandi dan li ġej. Ħej, kompjuter, tagħti me a string-- sekwenza ta 'karattri. U sejħa li Isem sekwenza. U jien ma jkollhomx li hija sejħa Isem. I tista 'sejħa hija, konvenzjonalment, xi ħaġa bħal S, ferm simili aħna użati i biex sejħa tal-varjabbli i. Imma issa I bżonn tagħmel xi ħaġa ma 'dan. Ikun pretty stupid li ipprova kompilazzjoni dan il-kodiċi, tmexxija dan il-programm, minkejja li Jien jkollna string, għaliex huwa għadu biss se ngħid bonjour dinja. Imma x'jiġri jekk jien tixtieq li jbiddlu dan. Għaliex ma nagħmel dan? Perċentwali i, comma s. U dan huwa xi ftit cryptic xorta. So let me tagħmel varjabbli tiegħi aktar ċara. Let me isem din il Isem varjabbli. U ejja ara jekk ma nkunux nistgħu tease apparti dak li qed jiġri hawn. Allura fuq il-linja ħamsa, jien jkollna string. U jien ħażna li spag, ikun x'ikun l-utent ikun ittajpjat fil fuq it-tastiera tiegħu jew tagħha, fi varjabbli imsejjaħ Isem. U jirriżulta li printf ma biss tieħu waħda argument doppju kwotazzjonijiet, input wieħed fil-kwotazzjonijiet doppja. Hija tista 'tieħu tnejn, jew tlieta, jew aktar, bħal li t-tieni, t-tielet, jew ir-raba ', huma kollha l-ismijiet ta 'varjabbli, jew speċifikament valuri, li inti tixtieq li plagg fil, dinamiku, li string fil-kwotazzjonijiet. Fi kliem ieħor, dak li Ikun żbaljat ma 'dan? Jekk I biss qal bonjour isem, backslash n, salvat fajl tiegħi, miġbura kodiċi tiegħi, u dam dan, x'jista 'jiġri? Huwa biss se ngħid, bonjour isem, litteralment N-A-M-E, li huwa tip ta 'stupid għaliex huwa xejn differenti minn dinja. Allura xejn fil-kwotazzjonijiet hija liema litteralment gets stampati. Mela jekk jien tixtieq li jkollok placeholder hemmhekk, I attwalment bżonn jużaw xi sintassi speċjali. U jirriżulta jekk inti taqra l- dokumentazzjoni għall-funzjoni printf, se jgħidlek li jekk inti tuża fil-mija tal- inti tista 'tissostitwixxi valur kif ġej. Wara comma wara li kwotazzjoni doppja, inti sempliċiment jiktbu l-isem tal- varjabbli li inti tixtieq biex plagg fil f'dik f'format kodiċi, jew format specifier, mija i ta 'sekwenzi. U issa jekk stajt salvati fajl tiegħi, Mmur lura għal terminals tiegħi. U jien tip Għamla String, minħabba li, għal darb'oħra, l-isem ta 'dan fajl li I għażlet qabel hija string.c. Hekk jien se ngħid Għamla String, jidħlu. Oh my goodness, tħares lejn kollha ta ' l-iżbalji ħadna diġà. U dan is-- dak, dan huwa verament bħal, seba programm sitt linja? Allura dan huwa fejn tista ferm malajr jiksbu kbira. Din il-tieqa terminal għandu issa biss mtellgħa numru kbir ta 'messaġġi ta' żball. Żgur, I m'għandhomx aktar żball Messaġġi minn Għandi linji ta 'kodiċi. Allura dak li qed jiġri? Ukoll, l-aħjar strateġija biex tagħmel ghaċ do jiltaqgħu xi kbira Lista ta 'żbalji bħal dik, huwa iscroll lura, tfittex għall-kmand inti biss dam, li fil-każ tiegħi huwa jagħmel sekwenza. Ħares lejn dak jagħmlu għamilt, u li li kmand twil Clang, no big deal hemmhekk. Iżda l-aħmar huwa ħażin. Aħdar qed tipprova tkun ġentili u utli. Iżda huwa għadu ħażin, f'dan il-każ. Iżda meta huwa ħażin? String.c, linja ħamsa, karattri ħamsa. Allura dan huwa biss konvenzjoni komuni. xi ħaġa kolon Xi ħaġa tfisser Numru linja u n-numru karattru. Żball, l-użu ta 'mhux iddikjarat sekwenza identifikatur. Ridt tfisser standard fil? Allura, sfortunatament, Clang qed tipprova li jkun utli. Imma hija żbaljata, f'dan il-każ. Le, Clang, I ma jfissirx istandard IO. I fisser li fuq linja waħda, iva. Iżda linja ħamsa dan wieħed hawn. U Clang ma jifhmu S T-R-I-N-G. Huwa ta 'identifikatur mhux iddikjarat, li kelma hija biss qatt rat qabel. U dan għaliex Ċ, il-lingwa aħna qed miktub kodiċi fl-dritt issa, ma jkollux varjabbli imsejħa kordi. Hija ma, fil-kontumaċja, l-appoġġ xi ħaġa imsejħa string. Li l-biċċa CS50 ta lingwaġġ, iżda ħafna konvenzjonali. Imma nista 'jiffissaw dan li ġej. Jekk I żid linja waħda tal-kodiċi għall-quċċata ta 'dan il-programm, jinkludu CS50.h, li huwa fajl ieħor x'imkien ġewwa ta 'CS50 IDE, x'imkien fuq il-hard drive, biex ngħidu hekk, tas-sistema operattiva Ubuntu li niġri, li huwa l-fajl li l- ser jgħallem l-operat Sistema dak string huwa, biss bħal io.h standard huwa l-fajl fis-sistema operattiva li l- se jgħallmu dak li printf hu. Tabilħaqq, aħna għandna gotten messaġġ simili ħafna jekk IO kienu ammettew standard IO.h u beda jipprova juża printf. Hekk jien ser jimxi 'l quddiem u biss jieħdu l-kontroll L ċar l-iskrin tiegħi. Jew inti tista 'tip ċari u se biss ċar l-tieqa terminal. Imma inti xorta tista iscroll lura fil-ħin. U jien ser terġa 'ssir Għamla String. Cross fingers tiegħi dan iż-żmien, Ikteb. Oh my God, hija maħduma. dan juri me kmand twil cryptic dan huwa dak Kun iġġenerat permezz Clang, iżda l-ebda messaġġi ta 'żball. Hekk realizzata, anki jekk inti tista 'tikseb kompletament b'rikjesti l- Numru ta 'messaġġi ta' żball, hija biss tista 'tkun din cascading tedjanti effett, meta Clang ma jifhimx ħaġa waħda, li jfisser li mbagħad ma jifhimx il-kelma li jmiss, jew il-linja li jmiss. U għalhekk hija biss ċowk fuq kodiċi tiegħek. Iżda l-jiffissaw jista 'jkun sempliċi. U hekk dejjem tiffoka fuq il- ewwel linja tal-produzzjoni. U jekk inti ma jifhimha, biss ħarsa għal keywords li jista 'jkun ħjiel, u n-numru linja, u l-karattru, fejn li żball jista 'jkun. Issa let me jimxi 'l quddiem u t-tip dot mmejla, spag, jidħlu. Hm, huwa ma tgħid bonjour xejn. Għaliex? Ukoll, recall, fejn ikun running? Huwa probabbilment staġnati fil-mument fil-linja, jekk inti se, fuq il-linja sitta, għaliex Get String mid-disinn, miktub minn persunal CS50, huwa litteralment maħsub biex biss ipoġġu stennija hemmhekk, u stennija, u stennija għal sekwenza. Kollha rridu nfissru minn sekwenza huwa input tal-bniedem. Allura inti taf liema? Let me imorru quddiem. U biss fuq kapriċċ, let me tip l-isem tiegħi, David, jidħlu. Issa I jkollhom programm aktar dinamiku. Huwa qal, bonjour David. Jekk immur quddiem u run din darb'oħra, let me jippruvaw jiġifieri l-isem Zamila, jidħlu. U issa għandna programm dinamiku. I ma iebes kodifikati dinja. I ma iebes kodifikati isem, jew David, jew Zamila. Issa huwa ħafna aktar bħall-programmi nafu, fejn jekk ikun jieħu input, hija tipproduċi l-output kemmxejn differenti. Issa, dan mhuwiex l-aħjar utent esperjenza, jew UX. I run-programm. I do not know dak li jien suppost li tagħmel, sakemm I attwalment tħares lejn jew jiftakru l-kodiċi sors. Mela ejja jagħmlu l-utent esperjenza ftit aħjar bl-aktar sempliċi ta 'affarijiet. Let me jmorru lura fis dan programm, u sempliċement jgħidu printf. U let me imorru quddiem u jgħidu l-isem, kolon, u spazju, u mbagħad semi-colon. U biss għall kicks, l-ebda backlash n. U li intenzjonat, minħabba I ma jridux il pront biex jimxu lejn il-linja li jmiss. Irrid li, minflok, tagħmel dan, tagħmel sekwenza li recompile kodiċi tiegħi fis magna ġodda kodiċi dot mmejla sekwenza. Ah, dan huwa ħafna prettier. Now I tassew taf x'inhi l-kompjuter trid lili biex tagħmel, tagħtiha isem. Hekk jien ser jimxi 'l quddiem u t-tip fil Rob, jidħlu, u bonjour, Rob. Allura, realizzata, dan għadu, fl-aħħar tal-ġurnata, uniku programm ta 'disa linja. Iżda aħna ħadt dawn il-passi tarbija. Aħna kiteb linja waħda magħha għandna kienu familjari, printf, bonjour dinja. Imbagħad aħna undid xi ftit ta 'dak. U aħna attwalment użati sekwenza nikseb. U aħna tossed li l-valur fil-varjabbli. U allura aħna marru quddiem u mtejba dan aktar u aktar bit-tielet linja. U dan il-proċess iterattiv ta ' kitba software huwa verament essenzjali. Fl CS50, u fil-ħajja b'mod ġenerali, inti għandek ġeneralment ma joqogħdu bilqegħda, għandhom programm fil-moħħ, u jippruvaw kitba il-ħaġa kkritikat sħiħa kollha f'daqqa. Se, inevitabbilment, jirriżulta b'mod aktar żbalji milli aħna lilna nfusna raw hawn. Anke jien, din il-ġurnata, kontinwament jagħmlu żbalji stupid oħra, huma żbalji fil-fatt diffiċli li huma aktar diffiċli biex insemmu. Imma inti se tagħmel żbalji aktar aktar linji ta 'kodiċi tikteb kollha f'daqqa. U għalhekk din il-prattika ta ' jiktbu xi ftit tal-kodiċi li int komdu ma ', jiġbru dan, run, tittestja b'mod iktar ġenerali, mbagħad jimxu on-- hekk bħad aħna tinżamm saffi u saffi aħħar ġimgħa, bini minn xi ħaġa ferm sempliċi għal xi ħaġa aktar kumplessi, jagħmlu l-istess hawn. Ma joqogħdu bilqegħda, u jippruvaw tikteb problema kollu. Fil-fatt tieħu dawn il-passi tarbija. Issa, kordi mhumiex kollha li utli unto infushom. Aħna'd attwalment, idealment, bħal li ikollhom xi ħaġa oħra fil-toolkit tagħna. Mela ejja fil-fatt jagħmlu eżattament dan. Let me imorru quddiem issa u Whip up programm kemmxejn differenti. U aħna ser sejħa dan int.c, għal numru sħiħ. Jien ser, b'mod simili, jinkludu CS550.h. Jien ser jinkludi l-istandard IO. U li għaddej biex tkun pjuttost komuni f'dawn il ewwel ftit jiem tal-klassi. U jien ser lest ruħi ma 'funzjoni prinċipali. U issa minflok jkollna string, ejja imorru quddiem u jiksbu int. Ejja sejħa hija i, u sejħa hija tikseb int, parens qrib, semi-colon. U issa ejja do xi ħaġa ma 'dan, printf. Ejja ngħidu xi ħaġa simili bonjour, n backslash, comma i. Hekk jien pretty ħafna jimitaw dak li għamilt ftit mument ilu. Għandi placeholder hawn. Għandi Comma i hawn, għaliex nixtieq għall-plug i f'dak placeholder. Mela ejja imorru quddiem u jippruvaw kompilazzjoni dan il-programm. Il-fajl huwa msejjaħ int.c. Hekk jien se ngħid, jagħmlu int, jidħlu. Oh my God, iżda l-ebda big deal, id-dritt? Hemm żball. Hemm żball sintattiku hawnhekk tali li l-programm ma jistax tkun ikkumpilata ġewwa int.c, linja seba ', karattru 27, il-format żball jispeċifika char tip star, ikun x'ikun li hu. Iżda t-tip argument huwa int. Allura hawnhekk, wisq, aħna ma tkunx qed tmur to-- anke jekk illum huwa ħafna ta 'materjal, aħna qed tmur biex jisbqu inti ma assolutament kull karatteristika ta 'C, u l-ipprogrammar aktar ġenerali, fil biss dawn l-ewwel ftit ġimgħat. Allura hemm spiss ser ikunu jargon li magħhom int ma jkunux familjari. U, fil-fatt, istilla char hija xi ħaġa aħna qed tmur biex terga 'lura għal fil-ġimgħa jew darba tnejn ta. Iżda għal issa, ejja ara jekk nistgħu parse kliem li huma familjari. Formats-- hekk aħna jinstemgħu format specifier, kodiċi format qabel. Li familjari. Type-- iżda l-argument huwa int-tip. Stenna minuta, i huwa l int. Forsi fil-mija attwalment għandha xi tifsira definita. U, fil-fatt, ma. Integer, jekk inti tixtieq printf li tissostitwixxi lilha, inti fil-fatt għandek tuża f'format differenti specifier. U inti ma tkunx taf dan sakemm xi ħadd qallek, jew inti kienu għamlu dan qabel. Iżda fil-mija i huwa dak jistgħu jintużaw komunement fil printf għal ħofor fil integer. Tista 'wkoll tuża mija d għal numru sħiħ deċimali. Imma i huwa sbieħ u sempliċi hawn. Allura aħna ser jmorru ma 'dak. Issa let me jimxi 'l quddiem u terġa 'ssir għamla int, Ikteb. Li tajjeb, l-ebda żbalji. Dot mmejla OK int--, utent esperjenza ħażina, minħabba I ma qallek myself X'tagħmel. Imma li l-multa. Jien qbid fuq malajr. U issa let me imorru quddiem u tip fil David, OK, Zamila, Rob. OK, hekk din hija ħaġa tajba. Din id-darba, jien jużaw funzjoni, biċċa puzzle, imsejħa int nikseb. U jirriżulta out-- u aħna ser tara dan aktar tard fir-term-- il-persunal CS50 ikun implimenta jiksbu sekwenza b'tali mod li se biss fiżikament jiksbu string għalik. Hija implimentat int nikseb fil b'tali mod li se biss jiksbu integer għalik. U jekk inti, il-bniedem, ma jikkooperawx, huwa litteralment biss ser jgħidu retry, retry, retry, litteralment hemm seduta looping, sakemm inti jobbligaw b'xi numru maġika, bħall 50, u bonjour 50. Jew jekk aħna run dan jerġa u t-tip fil 42, bonjour 42. U għalhekk il-funzjoni int nikseb ġewwa ta 'dik il-biċċa puzzle huwa biżżejjed loġika, riflessjoni biżżejjed, ċifra barra, dak li huwa kelma? U dak huwa numru? Biss taċċetta, finalment, numri. Għalhekk jirriżulta li dan mhux kollha li espressiva. s'issa. Allura, Yay, l-aħħar darba aħna marru pjuttost malajr fis-logħob ta 'implimentazzjoni, u animazzjoni, u xogħlijiet artistiċi fl Scratch. U hawn, aħna qed kontenut mad-dinja bonjour, u bonjour 50. Huwa mhux kollha li jispira. U, tabilħaqq, dawn l-ewwel ftit Eżempji se jieħu xi żmien rampa fil eċċitament. Imma aħna għandna daqstant aktar jikkontrollaw issa, fil-fatt. U aħna qed tmur biex ħafna malajr jibdew saffi fuq quċċata ta 'dawn primitives bażiċi. Iżda l-ewwel, ejja jifhmu dak li l-limitazzjonijiet huma. Fil-fatt, waħda mill-affarijiet Scratch ma faċilment ejjew nagħmlu hu verament tħares taħt il-barnuża, u jifhmu dak li kompjuter huwa, dak li jistgħu jagħmlu, u liema limitazzjonijiet tagħha huma. U, fil-fatt, li n-nuqqas ta ' fehim, potenzjalment, għal żmien twil jista 'jwassal għall-kitba mistakes-- tagħna stess bugs, kitba softwer prekarju li gets Hacked b'xi mod. Mela ejja tagħti xi passi lejn fehim ta 'dan ftit aħjar minn Mod ta ', ngħidu, l-eżempju li ġej. Jien ser jimxi 'l quddiem u jimplimentaw malajr reali programm imsejjaħ Aġent li Jżid. Bħal, ejja żid xi numri flimkien. U jien ser kodiċi xi kantunieri hawn, u biss kopja u paste fejn I kien qabel, biss sabiex inkunu nistgħu nikseb going qabel. Allura issa stajt ltqajna l-bidu bażiċi ta 'programm imsejjaħ Aġent li Jżid. U ejja imorru quddiem u tagħmel dan. Jien ser jimxi 'l quddiem u jiġifieri, intx gets nikseb int. U inti taf liema? Ejja jagħmlu esperjenza aħjar għall-utent. Mela ejja biss jgħidu x hija, u effettivament pront lill-utent biex tagħtina x. U allura let me imorru quddiem u jgħidu, printf kif madwar y hija, din id-darba jistennew żewġ valuri mill-utent. U allura ejja biss jimxi 'l quddiem u jiġifieri, printf, is-somma ta 'xuy hu. U issa jien ma trid tagħmel fil-mija s. Nixtieq do mija i, backslash n, u mbagħad plagg fil-valur somma. Allura kif nista tmur dwar kif isir dan? Taf xiex? Naf kif jużaw varjabbli. Let me biss tiddikjara waħda ġdida, int z. U jien ser tieħu raden hawn. Jekk ikun hemm sinjali ugwali f'dan il- lingwa, forsi I biss tista 'tagħmel x plus y, sakemm I jispiċċaw tiegħi ħasbu ma 'semi-colon? Issa I tista 'tmur lura stabbiliti hawn, plagg fil z- finitura dan il-ħsieb ma 'semi-colon. U ejja ara issa, jekk dawn sekwenzi ta lines-- x hija tikseb int. Y hija tikseb int. Żid x uy, jaħżnu l-valur fil z-- hekk, għal darb'oħra, ftakar is-sinjal ugwali mhix ugwali. Huwa assenjazzjoni mill-lemin għax-xellug. U ejja jistampa li s-somma ta xuy mhux litteralment z- imma x'hemm ġewwa ta 'z. Mela ejja jagħmlu l-Aġent li Jżid - sbieħ, l-ebda żbalji din id-darba. Dot mmejla Aġent li Jżid, jidħlu, x se tkun 1. Y se tkun ta '2. U s-somma ta 'xuy hija ta' 3. Allura li kollox multa u tajba. Allura inti jimmaġina li matematika għandhom jaħdmu fi programm bħal dan. Imma inti taf liema? Huwa dan il-varjabbli, linja 12, anke neċessarju? Inti ma għandekx bżonn li tikseb fis-drawwa ta 'ftit ħażna affarijiet varjabbli sempliċiment għaliex inti tista '. U, fil-fatt, huwa ġeneralment disinn ħażin bla qies jekk inti qed joħolqu varjabbli, imsejħa z f'dan il-każ, il-ħażna xi ħaġa fiha, u mbagħad minnufih tużaha, imma qatt darb'oħra. Għaliex jagħtu xi ħaġa isem bħal z jekk int litteralment ser tuża dik Ħaġa darba biss, u għalhekk prossimali biex fejn inti maħluqa fl-ewwel lok, tant qrib f'termini ta 'linji ta' kodiċi? Allura inti taf liema? Jirriżulta li C hija pjuttost flessibbli. Jekk jien fil-fatt tixtieq li Plug-in valuri hawnhekk, I m'għandhomx bżonn li tiddikjara varjabbli ġdid. I jistgħu biss plug-in x plus y, għaliex C jifhem aritmetika, u l-operaturi matematiċi. So I jistgħu sempliċement jgħidu, jagħmlu dan matematika, x plus y, tkun xi tkun dawk il-valuri huma, plagg li jirriżulta numru sħiħ f'dak sekwenza. Allura dan jista 'jkun, għalkemm biss linja waħda iqsar, disinn aħjar, programm aħjar, għaliex hemm inqas kodiċi, għalhekk inqas għalija li jifhmu. U huwa wkoll biss aktar nodfa, sakemm aħna mhux qed introduzzjoni kliem ġdid, simboli ġodda, bħall z, anki jekk dawn ma jkunux verament jservu ħafna ta 'skop. Sfortunatament, matematika mhuwiex kollha li kultant affidabbli. Ejja imorru quddiem u tagħmel dan. Jien ser jimxi 'l quddiem issa u jagħmlu dan li ġej. Ejja nagħmlu printf, mija i, flimkien mija I, għandhom jiġu mija i, n backslash. U jien ser tagħmel this-- xyx plus y. Hekk jien biss ser jikteb dan il kemmxejn differenti hawn. Let me biss tagħmel verifika sanità malajr. Għal darb'oħra, ejja ma jiksbu l quddiem ta 'ruħna. Jagħmlu aġent li jżid, dot aġent li jżid mmejla. x hija 1, y hija ta '2, 1 flimkien ma' 2 huwa 3. Allura li tajjeb. Imma ejja jikkomplika dan issa daqsxejn, u toħloq fajl ġdid. Jien ser sejħa dan wieħed, jgħidu, ints, plural għal kulħadd interi. Nibda fejn I kien mument ilu. Imma issa ejja nagħmlu xi linji oħra ftit. Let me imorru quddiem u jagħmlu dawn li ġejjin, printf, mija i, nieqes fil-mija i, huwa mija i, comma x, y virgola YX nieqes. Hekk jien tagħmel xi ftit matematika differenti hemmhekk. Ejja nagħmlu xulxin. Allura fil-mija i darbiet fil-mija i huwa l-mija i, n backslash. Ejja plug-in x, uy, u x-ħinijiet y. Aħna ser tuża l-asterisk dwar kompjuter tiegħek għal żminijiet. Inti ma jużawx x. x hija isem varjabbli hawn. Tuża l-istilla għat-tkattir. Ejja nagħmlu waħda aktar. Printf mija I, maqsuma billi fil-mija i, huwa mija i, n backslash. xy diviż bil y-- sabiex inti tuża l quddiem mmejla fis-C biex tagħmel diviżjoni. U ejja jagħmlu waħda oħra. Kumplament tar-mija i, maqsuma billi fil-mija i, huwa mija i. xy-- u issa kumplament huwa dak li fadal. Meta inti tipprova jiġi diviż Denominatur fi numeratur, kemm huwa fadal li inti ma setgħux taqsam barra? Allura ma jkunx hemm verament, neċessarjament, simbolu konna użati fl-iskola grad għal dan. Iżda hemm fl Ċ Tista jgħidu x modulo y, fejn dan is-sinjal fil-mija f'dan il context-- joħloq konfużjoni meta int ġewwa tal-kwotazzjonijiet doppja, ġewwa ta 'printf,-mija hija użata bħala l-specifier format. Meta tuża fil-mija barra tal li fi espressjoni matematika, huwa l-operatur modulo għall modulari arithmetic-- għall-għanijiet tagħna hawn, ifisser biss, dak li huwa l- kumplament ta 'x diviż bi y? Allura x diviż bi y hija l y x mmejla. X'inhu l-bqija ta 'x diviż bi y? Huwa x y mod, bħala programmer ngħid. Mela jekk I magħmula l-ebda żbalji hawn, let me imorru quddiem u jagħmlu ints, plural, sbieħ, u ints mmejla dot. U ejja imorru quddiem u do, ejja ngħidu, 1, 10. Kull dritt, 1 flimkien ma '10 huwa ta '11, verifika. 1 nieqes 10 ikun negattiv 9, check. 1 ħinijiet 10 huwa 10, verifika. 1 diviż b'10 is-- OK, aħna ser skip dan wieħed. Kumplament tal-1 ta diviż b'10 huwa 1. Li korretta. Iżda hemm bug fil hawn. Allura l-waħda nressaq tiegħi jgħaddi, mhux korretta. I mean, huwa qrib iż-0. 1 diviż b'10, tafu, jekk aħna qed qtugħ xi kantunieri, żgur, huwa żero. Iżda għandu verament tkun 1/10, 0.1, jew 0.10, 0.1000, jew oħrajn. M'għandux verament tkun żero. Ukoll, jirriżulta li l-kompjuter ikun tagħmel litteralment dak li aħna told li tagħmel. Aħna qed jagħmlu matematika simili x diviż bil y. U kemm xuy, kull l-linji tal-kodiċi preċedenti, huma interi. Barra minn hekk, fuq il-linja 15, aħna javżak printf, ħej, printf plug-in integer, plug-in integer, -Plug fi integer-- speċifikament x, u mbagħad y, u mbagħad x diviż bl y. x uy huma ints. Aħna tajba hemmhekk. Imma dak li hu x diviż bil x? x diviż bi y għandu jkun, matematikament, 1/10, jew 0.1, li huwa għadd reali, numru reali wara, potenzjalment, għal punt deċimali. Huwa mhux numru sħiħ. Imma dak huwa l-eqreb numru sħiħ għall-1/10, jew 0.1? Yeah, huwa tip ta 'huwa żero. 0.1 hija ħafna bħal dan. U 1 huwa dan ħafna. Allura 1/10 huwa eqreb lejn 0 milli huwa li wieħed. U għalhekk dak Ċ qed tagħmel għall us-- tip ta 'għaliex aħna told to-- huwa truncating li numru sħiħ. Huwa jieħu l-valur, li għal darb'oħra huwa mistennija li jkunu xi ħaġa simili 0.1000, 0 u ibqa 'sejjer hekk. U huwa truncating kollox wara l-punt deċimali hekk li dan kollu Jittieħed, minħabba li ma tajbin fil-kunċett ta 'numru sħiħ, li huwa biss numru bħall negattiv 1, 0, 1, u 'l isfel, huwa throws bogħod kollox wara l-punt deċimali għaliex inti ma jistax jitwaħħal punt deċimali fi integer skond id-definizzjoni. Allura l-risposta hawnhekk huwa żero. Allura kif nistgħu jiffissaw dan? Għandna bżonn soluzzjoni oħra kollha flimkien. U nistgħu nagħmlu dan, kif ġej. Let me imorru quddiem u tinħoloq entità ġdida fajl, dan wieħed imsejjaħ floats.c. U ħlief hawn fil- istess direttorju, float.c. U let me imorru quddiem u kopja xi wħud li l-kodiċi mill-iktar kmieni. Iżda minflok jkollna l INT, ejja tagħmel dan. Agħti me floating valur tal-punt imsejħa x. fejn punt floating valur huwa sempliċement litteralment xi ħaġa ma 'punt f'wiċċ l-ilma. Hija tista 'timxi lejn ix-xellug, lejn il-lemin. Huwa numru reali. U let me sejħa mhux jiksbu int, iżda jiksbu float, li kien ukoll fost il-menu ta 'għażliet fil-librerija C250. Ejja bidla y biex float. Allura dan isir tikseb float. U issa, aħna ma rridux li plagg fil ints. Jirriżulta irridu nużaw fil-mija f għas float, mija f għas float, u issa isalvawh. U issa, swaba qasmu, jagħmlu sufruni, sbieħ, sufruni mmejla dot. x se tkun waħda 1. y Se tkun 10 ġdid. U, sbieħ, OK minn hekk tiegħi hija korretta. I kien jittama għal aktar, imma jien nesa li tikteb. Mela ejja go u tiffissa dan l-iżball loġiku. Ejja imorru quddiem u grab dan li ġej. Aħna ser biss tagħmel kopja ftit u paste. U jien se ngħid nieqes. U jien se ngħid darbiet. U jien ser jgħidu maqsuma. U jien mhux se jagħmlu modulo, li ma tinsabx bħala germane hawn, diviż bil f, u l-ħinijiet plus-- OK, ejja tagħmel dan mill-ġdid. Għamla sufruni, sufruni mmejla dot, u 1, 10, and-- sbieħ, le, OK. Hekk jien idjota. Allura dan huwa komuni ħafna fix-xjenza tal-kompjuter biex jagħmlu żbalji stupid bħal dan. Għal skopijiet pedagoġiċi, dak I really riedu jagħmlu kien jibdlu l-xjenza hawn li flimkien, biex nieqes, għal żminijiet, u li jaqsam, kif inti nisperaw ndunat matul dan l-eżerċizzju. Allura issa ejja terġa 'jiġbor dan programm, do floats mmejla dot. U għat-tielet darba, ejja tara jekk jilħaq l-aspettattivi tiegħi. 1, 10, jidħol, iva, OK, 1.000, diviż bil 10.000, huwa 0.100000. U jirriżulta nistgħu kontroll kemm in-numri huma wara dawk il-punti deċimali. Aħna fil-fatt se. Aħna ser terga 'lura għal dan. Imma issa, fil-fatt, l-matematika hija korretta. Allura, għal darb'oħra, x'inhu l-takeaway hawn? Jirriżulta li fl Ċ, hemm mhux biss biss strings-- u, fil-fatt, ma jkunx hemm verament, għaliex aħna żid dawk bl-librerija CS50. Iżda ma jkunx hemm biss ints. Hemm sufruni ukoll. U jirriżulta mazz ta 'data oħra tipi wisq, li aħna ser tuża qabel twil. Jinstabx jekk inti tixtieq waħda karattru, mhux sensiela ta 'karattri, inti tista 'tuża biss char. Jirriżulta li jekk inti tixtieq a BOOL, valur Boolean, vera jew falza biss, grazzi għal-librerija CS50, konna miżjuda sa C dejta tat-tip BOOL kif ukoll. Imma hija wkoll preżenti fil f'ħafna lingwi oħrajn ukoll. U jirriżulta li kultant inti bżonn numri akbar imbagħad ġejjin fil-kontumaċja bil ints u flowts. U, fil-fatt, doppja huwa numru li juża mhux 32 bits, iżda 64 bits. U twil twil huwa numru li użi mhux 32, bits iżda 64 bits, rispettivament, għall-punt floating valuri u interi, rispettivament. Mela ejja attwalment issa tara dan fl-azzjoni. Jien ser jimxi 'l quddiem hawn u Whip up program wieħed ieħor. Hawnhekk, jien ser jimxi 'l quddiem u ma jinkludu CS50.h. U let me go, jinkludu istandard IO.h. U tkun taf Avviż xi ħaġa funky qed jiġri hawn. Mhuwiex kulur kodifikazzjoni affarijiet fil bl-istess mod kif għamlet qabel. U jirriżulta, dan għaliex jien ma jkunux taw il-ħaġa fajl isem. Jien ser sejħa dan wieħed sizeof.c, u hit Save. U avviż dak li jiġri tiegħi ħafna kodiċi abjad F'dan l-isfond iswed. Issa, għall-inqas hemm xi vjola fil hemmhekk. U huwa sintassi enfasizzat. Dak għax, pjuttost sempliċi, stajt qal lill-IDE liema tip tal-fajl huwa billi tagħtiha isem, u speċifikament estensjoni fajl. Issa, ejja imorru quddiem u jagħmlu dan. Jien ser jimxi 'l quddiem u ħafna sempliċement jistampa l BOOL following-- huwa mija LU. Aħna ser terga 'lura għal li fi ftit mument. U mbagħad jien ser Daqs istampar ta BOOL. U issa, just biex isalva nnifsi xi żmien, jien se jagħmlu ħaġa sħiħa mazz ta 'dawn f'daqqa. U, speċifikament, jien ser tbiddel dan għal char u char. Dan wieħed, jien se jibdlu għal doppja u doppju. Dan wieħed, jien se jibdlu biex float u float. Dan wieħed, jien ser bidla għal int u int. U dan wieħed, jien ser għall-bidla għal twil twil. U huwa għadu jieħu żmien twil, twil twil. U mbagħad, fl-aħħarnett, I taw ruħi wieħed wisq, spag. Jirriżulta li fl Ċ, hemm l-operatur speċjali msejħa daqs ta 'dak litteralment ser, meta jitħaddmu, jgħidulna id-daqs tal kull wieħed minn dawn il-varjabbli. U dan huwa mod, issa, nistgħu jgħaqqdu lura għad-diskussjoni ġimgħa li għaddiet tad-dejta u r-rappreżentanza. Let me imorru quddiem u jikkumpilaw Daqs tad-daqs mmejla dot tal. U ejja ara. Jirriżulta li fl Ċ, speċifikament fuq CS50 IDE, speċifikament fuq il sistema operattiva Ubuntu, li hija operattiva 64-bit Sistema f'dan il-każ, a BOOL se użu byte wieħed mill-ispazju. Thats kif id-daqs huwa mkejjel, mhux fil-bits, iżda fil-bytes. U tfakkar li byte wieħed huwa tmien bits. Allura BOOL, avolja inti teknikament biss bżonn ta '0 jew 1, huwa ftit ħela kif konna implimentati dan. Huwa fil-fatt se tuża sħiħ byte-- hekk żerijiet kollha, huma forsi kollha dawk, jew xi ħaġa bħal dik, jew biss wieħed 1 fost tmien bits. A char, sadanittant, użat għal karattru bħal karattru ASCII kull ġimgħa li għaddiet, se tkun karattru wieħed. U li synchs mal-kunċett tagħna ta ' ma jkun mhux aktar minn 256 bits-- pjuttost, synchs magħha jkun ebda itwal minn 8 bits, li jagħtina daqs 256-valuri. A doppja se jkun 8 bytes jew 64 bits. A float huwa ta '4. L int huwa ta '4. A twil, twil huwa 8. U string huwa 8. Imma ma joqogħdu jinkwetaw dwar dan. Aħna qed tmur biex jitqaxxru lura dik saff. Jirriżulta, kordi jista ikun itwal minn 8 bytes. U, tabilħaqq, konna bil-miktub kordi diġà, bonjour dinja, itwal minn 8 bytes. Iżda aħna ser terga 'lura għal li fi ftit mument. Iżda it-teħid bogħod hawnhekk hija din li ġejja. Kwalunkwe kompjuter biss għandu finit ammont tal-memorja u l-ispazju. Tista 'biss taħżen tant fajls fuq Mac tiegħek jew PC. Tista 'biss jaħżen programmi daqstant fil RAM taħdem f'daqqa, bilfors, anke bil-memorja virtwali, għaliex ikollok ammont finit ta 'RAM. U biss biex picture-- jekk inti stajt qatt fetaħ laptop jew ordnati memorja żejda għal kompjuter, inti jista 'ma taf li ġewwa tal-kompjuter tiegħek hija xi ħaġa li jistenna ftit bħal dan. Allura dan huwa biss kumpanija komuni jismu Kruċjali li jagħmel RAM għall-kompjuters. U RAM huwa fejn programmi ħajjin waqt li jkunu qed taħdem. Allura fuq kull Mac jew PC, meta inti double ikklikkja programm, u dan jiftaħ, u tiftaħ xi dokument Word jew xi ħaġa bħal dik, dan taħżnu temporanjament RAM, għaliex RAM huwa aktar mgħaġġel minn hard disk tiegħek, jew disk tiegħek fi stat solidu. Allura huwa biss fejn il-programmi imorru jgħixu meta jkunu qed taħdem, jew meta l-fajls qed jintużaw. Allura inti għandek affarijiet li tfittex bħal dan ġewwa ta 'laptop tiegħek, jew affarijiet ftit akbar ġewwa tal-desktop tiegħek. Iżda l-importanti huwa inti biss għandek numru finit ta 'dawn l-affarijiet. U hemm biss ammont finit ta ' ħardwer seduta fuq dan il iskrivanija lemin hawn. Allura, żgur, nistgħu ma taħżen numri infinitament twil. U, għadhom, jekk inti taħseb lura għal -iskola grad, kemm-ċifri jistgħu inti għandek id-dritt ta 'punt deċimali? Għal dik il-kwistjoni, kemm numri jistgħu inti għandek ix-xellug ta 'punt deċimali? Verament, infinitament ħafna. Issa, aħna bnedmin tista biss taf kif jippronunzja miljun, u biljun, triljun, u quadrillion, u quintillion. U jien javvanzaw il-limiti tal tiegħi understanding-- jew my-- nifhem numri, iżda tiegħi pronunzja ta 'numri. Iżda huma jistgħu jiksbu infinitament kbar ma infinitament ħafna ċifri fuq il-lemin jew lejn il-lemin ta 'punt deċimali. Imma kompjuters biss ikollhom ammont finit ta 'memorja, numru finit ta transisters, li numru finit ta 'bozoz tad-dawl ġewwa. Allura x'jiġri meta inti jispiċċaw l-ispazju? Fi kliem ieħor, jekk inti think lura għall-aħħar ġimgħa meta tkellimna dwar in-numri ruħhom li qiegħed ikun rappreżentat fil binarju, jissoponi li konna ltqajna dan il-valur 8-bit hawnhekk. U aħna għandna seba 1 u wieħed 0. U ejja ngħidu li rridu biex iżżid 1 għal dan il-valur. Dan huwa numru verament kbir dritt issa. Dan huwa 254, jekk niftakar l-matematika mill-aħħar lemin ġimgħa. Imma x'jiġri jekk nibdel li lemini 0 għal 1? In-numru sħiħ, ta ' Naturalment, isir tmienja 1 ta. Allura aħna qed għadhom tajbin. U li probabbilment jirrappreżenta 255, għalkemm jiddependi fuq il-kuntest hija tista 'attwalment tirrappreżenta numru negattiv. Iżda aktar fuq li ieħor żmien. Din il iħoss simili huwa madwar għoli daqs I jista 'joqgħod. Issa, huwa biss 8 bits. U Mac tiegħi, żgur, tkun mod aktar minn 8 bits ta 'memorja. Iżda hi ma jkollhiex finit. Allura l-istess argument japplika, anke jekk aħna jkollhom aktar ta 'dawn dawk fuq l-iskrin. Imma x'jiġri jekk int ħażna dan in-numru, 255, u inti tixtieq li joqgħod 1 kemmxejn ogħla? Inti tixtieq li tmur 255-256. Il-problema, naturalment, huwa li jekk inti jibdew jingħaddu għal żero bħal aħħar ġimgħa, inti ma tistax titqies bħala għolja kif 256, aħseb u ara 257, aħseb u ara 258, m għaliex dak jiġri meta inti żid 1? Jekk inti tagħmel l-iskola grad antika Approċċ, inti tpoġġi 1 hawn, u mbagħad 1 plus 1 huwa 2, iżda li l- verament żero, inti twettaq l-1, jġorru l-1, jġorru l-1. Kollha ta 'dawn l-affarijiet, dawn għamilhom 1, mur għal żero. U inti wind up, iva, kif xi ħadd enfasizzat, ta '1 fuq in-naħa tax-xellug. Imma dak kollu li tista attwalment ara u tajbin fil-memorja huwa biss tmien 0, li huwa li jgħidu f'xi punt jekk inti, kompjuter, ipprova jingħaddu għoli biżżejjed up, int ser perimetrika, jidher, għal żero, jew forsi anke negattivi numri, li huma saħansitra inqas minn żero. U nistgħu tip ta 'tara dan. Let me imorru quddiem u jiktbu programm ta 'malajr reali hawnhekk. Let me imorru quddiem u jiktbu programm imsejjaħ overflow. Inkludi CS50.h, jinkludu istandard IO.h-- oh, I really insejt tenfasizza sintassi tiegħi. Mela ejja tiffranka dan bħala overflow.c. U void-- ewlenija issa int u qabel twil, aħna ser terga 'lura għal jispjega għaliex inżommu miktub null prinċipali int. Iżda għal issa, ejja biss tagħmel dan, tieħu għall mogħtija. Ejja tagħti lili nnifsi int, u initialize dan għal 0. Ejja mela għall-int i tikseb zero-- fil-fatt, ejja do loop infinita u tara x'jiġri. Filwaqt veru, allura ejja jistampa n huwa mija i, n backslash, plug-in n. Iżda, issa, ejja do n gets n flimkien ma '1. Allura fi kliem ieħor, fuq kull iterazzjoni ta 'dan loop infinita, ejja tagħti valur n, l u żid 1 lilha, u mbagħad jaħżnu r-riżultat lura fil n ix-xellug. U, fil-fatt, Rajna sintassi ftit bħal dan, fil-qosor. Finta jibred huwa minflok tal-kitba dan kollu barra, inti tista 'attwalment tgħid n plus hija ugwali 1. Jew jekk int verament tixtieq li tkun fancy, inti tista 'tgħid n flimkien flimkien ma' semi-colon. Iżda dawn aħħar tnejn huma biss dak li aħna'd sejħa zokkor sintattika għall-ewwel ħaġa. L-ewwel ħaġa hi aktar espliċitu, totalment multa, totalment korretta. Iżda dan huwa aktar komuni, jien ser jgħidu. Allura aħna ser nagħmlu dan għal ftit mument. Ejja issa jagħmluha overflow, li tinstema pjuttost ominous, overflow mmejla dot. Ejja naraw, n jkollna pretty big. Imma ejja jaħsbu, kemm hu kbir jista n nirċievi? n huwa int. Rajna mument ilu mad-daqs ta ' Eżempju li int huwa ta 'erba' bytes. Nafu mill-aħħar ġimgħa, erba 'bytes huwa 32 bits, minħabba 8 darbiet 4, li l-32. Li għaddej biex tkun 4000000000. U aħna huma sa 800,000. Dan se jieħu dejjem biex jgħodd bħala għoli kemm I tista 'possibilment. Hekk jien ser jimxi 'l quddiem, kif inti tista qabel twil, u hit Kontroll C-- franchement, Kontroll Ċ, lott, fejn Kontroll Ċ ġeneralment mezzi tikkanċella. Sfortunatament, għaliex dan tkun qed taħdem fil-sħaba, xi kultant il-sħaba hija bżieq out Jittieħed tant, tant produzzjoni, li għaddej biex jieħu ftit filwaqt li għall-input tiegħi biex jiksbu l-sħaba. Għalhekk anki jekk I hit Kontroll Ċ ftit sekondi ilu, dan huwa definittivament il-ġenb effett ta 'loop infinita. U hekk f'każijiet bħal dawn, aħna qed ser jitlaq minn dak jkun. U aħna qed tmur biex iżżid ieħor tieqa terminal minn hawn mal-plus, li naturalment ma bħal dik, peress li huwa għadu ħsieb. U ejja imorru quddiem u tkun ftit aktar raġonevoli. Jien ser jimxi 'l quddiem u jagħmlu il-żminijiet biss finitely ħafna. Ejja jużaw għall loop, li jiena allużjoni għall qabel. Ejja nagħmlu dan. Agħtini ieħor int varjabbli i gets 0. i huwa inqas minn, ejja ngħidu, 64 i ++. U issa let me jimxi 'l quddiem u l-istampar barra n huwa mija i, Comma n. U allura n-- dan għadu ser tieħu għal dejjem. Ejja nagħmlu dan. n gets n ħinijiet 2. Jew nistgħu jkun fancy u jagħmlu ħinijiet huwa daqs 2. Imma ejja biss jgħidu n huwa ugwali innifsu, il-ħinijiet 2. Fi kliem ieħor, f'dan il- verżjoni l-ġdida tal-programm, Ma rridx li tistenna għal dejjem minn bħall 800,000 għal 4 biljun. Ejja biss tikseb dan aktar ma. Ejja attwalment doppju n kull darba. Li, irtirar, irduppjar huwa l- oppost ta 'wara, tal-kors. U billi ġimgħa li għaddiet għandna xi ħaġa għal darb'oħra, u għal darb'oħra, u għal darb'oħra, super fast, irduppjar żgur li se nikseb us minn 1 sa l-akbar possibbli valur li nistgħu għodd sa ma 'int. Mela ejja nagħmlu eżattament dan il-. U aħna ser terga 'lura għal dan qabel twil. Iżda dan, għal darb'oħra, huwa bħad -blokk ripetuti fil scratch. U inti ser tuża dan qabel twil. Dan biss ifisser għadd minn żero sa, iżda mhux ugwali, sa 64. U fuq kull iterazzjoni ta 'dan loop, biss iżommu inkrementazzjoni i. Hekk i ++ - u dan jibnu ġenerali fuq il-linja 7 huwa biss mod super komuni tirrepeti xi linji ta ' kodiċi, xi numru ta 'drabi. Liema linji ta 'kodiċi? Dawn il-ċingi kaboċċi, kif inti jista 'jkollhom miġbura minn issa, tfisser, jagħmel dan li ġej. Huwa fil Scratch simili, meta hija għandha l-blokki isfar u kuluri oħrajn li tip ta ' iħaddnu jew tgħanniqa blokki oħra. Dak hu li dawk kaboċċi ċingi qed tagħmel hawn. Mela jekk jien sibt sintassi tiegħi right-- inti jista 'jara s-simbolu karrotta fil-mezzi C li kif ħafna drabi I kien jippruvaw isolvu din il-problema. Mela ejja teħles minn dik wieħed għal kollox, u tagħlaq dik tieqa. U aħna ser tuża l-waħda ġdida. Jagħmlu overflow, dot slexx overflow, Daħħal, id-dritt, jidher ħażin fl-ewwel. Imma ejja iscroll lura fil-ħin, minħabba I ma dan 64 darbiet. U tinnota l-ewwel darba, n huwa 1. Tieni darba, n huwa 2, imbagħad 4, allura 8, imbagħad 16. U jidher li hekk kif I nikseb għal madwar 1 biljun, jekk jien doppja mill-ġdid, li għandhom jagħtu me 2000000000. Iżda jirriżulta, huwa dritt fil-quċċata. U għalhekk fil-fatt tifwir l int mill 1000000000 li bejn wieħed u ieħor negattiv 2 biljun, minħabba li integer, b'differenza mill-numri aħna kienu qed jassumu aħħar ġimgħa, jistgħu jkunu kemm pożittivi u negattivi fir-realtà u fil-kompjuter. U dan bl-inqas waħda minn dawn bits hija effettivament misruqa. Allura aħna verament biss 31 bits, jew 2 biljun valuri possibbli. Iżda għal issa, il-takeaway hija pjuttost sempliċement, tkun xi tkun dawn in-numri huma u tkun xi tkun l-matematika hija, xi ħaġa ħażina jiġri eventwalment, għaliex eventwalment inti qed jippruvaw biex permute-bits waħda wisq drabi. U inti effettivament tmur minn kull 1 lejn forsi kollha 0; jew forsi biss ftit mudell ieħor li b'mod ċar, jiddependi fuq il-kuntest, jista 'jiġi interpretat bħala numru negattiv. U għalhekk jidher l-ogħla I jista 'joqgħod f'dan il-programm partikolari huwa biss madwar 1 biljun. Iżda hemm soluzzjoni parzjali hawn. Taf xiex? Let me bidla minn int għal twil twil. U let me imorru quddiem hawn u say-- jien ser ikollhom li jbiddlu dan għal twil mhux iffirmat. Jew, ejja ara, jien qatt ma jiftakru myself. Ejja imorru quddiem u jagħmlu overflow. Le, li mhux dan, LLD, grazie. Allura xi kultant Clang jista 'jkun utli. I ma tiftakarx dak il-format specifier kien għal twil twil. Iżda, fil-fatt, Clang told me. Paper hija xi tip ta 'tajba, xorta jfisser li inti għamilt żball. Huwa guessing li I fisser LLD. So let me jieħdu din hija parir, fit twil numru deċimali, ħlief dik. U let me terġa 'ssir it-dot slash overflow, Ikteb. U issa x'hemm jibred huwa dan. Jekk I iscroll lura fil-ħin, aħna xorta bidu jingħaddu fl-istess place-- 1, 2, 4, 8, 16. Avviż, irridu jiksbu l- mod sa 1 biljun. Imma allura aħna sikur nikseb għal 2 biljun. Imbagħad irridu jiksbu l 4000000000, imbagħad 8000000000, 17-il biljun. U aħna jmorru ogħla, u ogħla, u ogħla. Eventwalment, dan, wisq, pawżi. Eventwalment, li għandu perjodu twil twil, li huwa l-valur 64-bit, mhux valur 32-bit, jekk inti għadd għoli wisq, inti wrap madwar 0. U f'dan il-każ, aħna jiġri li tispiċċa b'għadd negattiv. Allura din hija problema. U jirriżulta li din il- problema mhux kollha li arcane. Anke jekk jiena stajt deliberatament indotta bl dawn l-iżbalji, jirriżulta naraw dan it-tip ta 'kulħadd madwarna, jew għall-inqas xi wħud minna do. Għalhekk fl Lego Star Wars, jekk inti stajt qatt lagħbu l-logħba, jirriżulta inti tista 'tmur madwar tkissir affarijiet up fid-dinja LEGO, u l-ġbir muniti, essenzjalment. U jekk inti stajt qatt lagħbu B'dan il-mod il-logħba wisq żmien, kif dan l-individwu bla isem hawn ma, in-numru totali ta 'muniti li inti tista' tiġbor huwa, jidher, 4 biljun. Issa, ma huwa fil-fatt fit-tond. Allura LEGO kien qed jipprova żżomm affarijiet faċli għall-utent. Huma ma tagħmel dan eżattament 2 sa il-qawwa 32, kull ġimgħa li għaddiet. Iżda 4000000000 hija raġuni. Jidher, ibbażata fuq din l-informazzjoni, li LEGO, u l-kumpanija li għamel dan is-software attwali, iddeċieda li n-numru massimu ta 'muniti l-utent jista 'jakkumula huwa, tabilħaqq, 4 biljun, għaliex huma għażlu fil-kodiċi tagħhom għall-użu mhux fit-tul twil, apparentement, iżda biss integer, l iffirmata numru sħiħ, biss numru sħiħ pożittiv, li valur max huwa bejn wieħed u ieħor dak. Ukoll, hawn wieħed umoristiċi xulxin. Allura fil-logħba ċiviltà, li xi wħud minnkom jista 'jkun familjari, mal- jirriżulta li snin ilu hemm kien bug f'dan il-logħba li permezz tagħha jekk inti kellu l-irwol tal Gandhi fil-logħba, minfloku jkun paċifista ħafna, minflok kien oerhört, oerhört aggressiva, f'ċerti ċirkustanzi. B'mod partikolari, il-mod li ċiviltà xogħlijiet hija li jekk inti, l-attur, jadottaw id-demokrazija, tiegħek punteġġ aggressività gets decremented minn tnejn, hekk nieqes nieqes, u mbagħad nieqes nieqes. Allura inti naqqas 2 mill iterazzjoni attwali tiegħek. Sfortunatament, jekk jiġu mtennija tiegħek huwa inizjalment 1, u inti naqqas 2 minnha wara li jadotta d-demokrazija kif Gandhi hawn jista għamlu, għaliex kien passive-- ħafna 1 fuq l-iskala ta 'aggressività. Imma jekk hu jadotta d-demokrazija, allura imur minn 1 sa negattiva 1. Sfortunatament, dawn kienu jużaw numri mhux iffirmat, li jfisser li ittrattati anki negattivi numri daqslikieku kienu pożittivi. U jirriżulta li l- ekwivalenti pożittiv ta negattiva 1, fi programmi tal-kompjuter tipiku, huwa 255. Mela jekk Gandhi tadotta demokrazija, u għalhekk għandha F'ħin aggressività tiegħu naqas, fil-fatt f'rombli madwar sa 255 u jagħmel lilu l-aktar karattru aggressiva fil-logħba. Allura inti tista 'Google up dwar dan. U kien, fil-fatt, ta ' bug programmazzjoni aċċidentali, iżda li daħlet pjuttost il Lore qatt peress. Li kollox gost u ħelu. Aktar biża huwa meta proprju apparat fid-dinja reali, u mhux logħob, għandhom dawn l-istess bugs. Fil-fatt, biss sena ilu artiklu daħal taf dwar il-Dreamliner Boeing 787. U l-artikolu fl-ewwel t'għajn jaqra arcane ftit. Iżda huwa qal dan, softwer vulnerabbiltà fis-Boeing ġdid 787 Dreamliner ġett għandu -potenzjal li jikkawża piloti jitlef il-kontroll ta ' l-ajruplan, possibilment f'nofs titjira, l-uffiċjali tal-FAA ajru mwissija reċentement. Kien id-determinazzjoni li mudell 787 Ajruplan li jkun ġie mħaddem kontinwament għal 248 jiem tista 'titlef kurrent kollu li jalterna, AC, enerġija elettrika minħabba l-ġeneratur unitajiet ta 'kontroll, GCUs, fl-istess ħin nidħlu jonqsu modalità sikur. Huwa tip ta 'jitilfu lili. Imma l-memo iddikjarat, OK, issa sibt li, il-kundizzjoni kienet ikkawżata minn softwer kontro intern il-kontroll ġeneratur unitajiet li se overflow wara 248 jiem ta 'enerġija kontinwa. Aħna qegħdin ħruġ ta 'dan Avviż biex tipprevjeni telf ta 'kulħadd AC elettriku enerġija, li jistgħu jirriżultaw fit-telf tal-kontroll tal-ajruplan. Allura, litteralment, hemm xi numru sħiħ, jew xi tip ta 'dejta ekwivalenti, qed jintużaw fis-software f'ajruplan attwali li jekk inti żżomm ajruplan tiegħek fuq żmien twil biżżejjed, li apparentement jista 'jkun il-każ jekk int biss running minnhom kontinwament u qatt unplugging ajruplan tiegħek, jidher, jew kiri batteriji tiegħu die, eventwalment se jgħoddu sa, u sa, u sa, u sa, u sa, u aġġornata. U, min-natura, ta ' ammont finit ta 'memorja se jfur, rolling lura għall żero jew xi valur negattiv, effett sekondarju li huwa l- realtà frighteningly reali li l-pjan jista 'jkollhom bżonn li jkun fasslu, effettivament, jew jistgħu jaqgħu, agħar, kif dubbien. Allura dawn it-tipi ta 'kwistjonijiet għadhom magħna, even-- dan kien artikolu 2015, l kollu aktar biża meta inti ma neċessarjament jifhmu, japprezzaw, jew jantiċipaw dawk it-tipi ta 'żbalji. Għalhekk jirriżulta li hemm wieħed ieħor ħaġa ħażina dwar rappreżentazzjoni tad-data. Jirriżulta li anke sufruni huma tip ta żbaljata, peress li sufruni, wisq, I propost huma 32 bit, jew forsi 64 jekk tuża doppja. Imma dak li għadu finite. U l-qabda hija li jekk inti tista ' tpoġġi numru infinit ta 'numri wara l-punt deċimali, m'hemm l-ebda mod inti jistgħu jirrappreżentaw l-possibbiltà numri li konna mgħallma fil-grad skola tista jeżisti fid-dinja. A kompjuter, essenzjalment, irid jagħżlu subsett ta 'dawn in-numri biex jirrappreżentaw eżattament. Issa, il-kompjuter jista ' tond forsi ftit, u jistgħu jippermettu li inti madwar taħżen kwalunkwe numru inti tista 'possibilment tixtieq. Iżda biss intuwittivament, jekk inti għandhom numru finit ta 'bits, inti tista 'biss permute minnhom b'modi finite tant. Allura inti ma tistax possibilment użu ta 'numru finit ta permutation ta 'bits, mudelli ta 'żero u dawk, li jirrappreżentaw infinita numru ta 'numri, li jissuġġerixxi li l-kompjuters tista tabilħaqq ikun mindud għalina kultant. Fil-fatt, ejja tagħmel dan. Let me jmorru lura fis IDE CS50. Let me imorru quddiem u toħloq programm ftit imsejħa impreċiżjoni, li turi li kompjuters huma, tabilħaqq, impreċiżi. U let me imorru quddiem u tibda bil xi wħud li l-kodiċi minn qabel, u issa biss tagħmel dan li ġej. Let me imorru quddiem u jagħmlu printf,-mija f, n backslash, 1 diviż b'10. Fi kliem ieħor, ejja adsa aktar profonda li 1/10, bħal 1 u diviża bi 10. Żgur, kompjuter jista 'jirrappreżenta 1/10. Mela ejja imorru quddiem u jagħmlu impreċiżjoni. Ejja naraw. Format jispeċifika tip doppja. Iżda l-argument huwa int-tip. X'qed jiġri? Oh, interessanti, u għalhekk huwa ta ' Lezzjoni mitgħallma minn qabel. Jien qal, ħej, juru kompjuter me float ma mija f. Imma jien jtuha 2 ints. Għalhekk jirriżulta li, I jistgħu jiffissaw dan fi ftit ta 'modi. I jistgħu biss dawran wieħed fi 1.0, u 10 fil 10.0, li, fil-fatt, għandhom l-effett tal-konverżjoni tagħhom fiċ floats-- għadhom nisperaw l-istess numru. Jew jirriżulta hemm xi ħaġa Ser naraw mill-ġdid qabel twil. Inti jista 'jixħet in-numri. Tista ', jużaw dan parenthetical espressjoni, inti tista 'tgħid, ħej, kompjuter, jieħdu din 10, li naf hu int. Iżda titratta dan, jekk jogħġbok, bħallikieku huwa float. Iżda din iħoss kumplessi bla bżonn. Għall-għanijiet tagħna llum, ejja biss litteralment jagħmluhom f'wiċċ l-ilma valuri tal-punti b'punt deċimali, bħal din. Let me imorru quddiem u terġa 'ssir, jagħmlu impreċiżjoni, tajba, dot slexx impreċiżjoni, jidħol. OK, aħna qed tfittex tajba. 1 diviż b'10, skond tiegħi Mac hawnhekk, huwa, tabilħaqq, 0.100000. Issa, I kien mgħallma fl-iskola grad hemmhekk għandu jkun numru infinit ta '0 tal. Mela ejja mill-inqas tipprova biex tara xi wħud minn dawn. Jirriżulta li printf hija ftit xorta fancier milli konna kont qed tuża. Jirriżulta li inti ma għandekx li jiġu speċifikati biss mija f, jew biss mija i. Inti tista 'attwalment tispeċifika xi għażliet ta 'kontroll hawn. Speċifikament, jien ser ngħid, ħej, printf, attwalment urini 10 punti deċimali. Għalhekk jistenna ftit stramb. Imma inti tgħidli fil-mija, dot, numri kemm inti tixtieq li tara wara l- punt deċimali, u mbagħad f għall ċatt, biss għaliex dan huwa dak id-dokumentazzjoni jgħid. Let me imorru quddiem u ssalva lil dik. U avviż wisq, jien jkollna għajjien ta 'retyping affarijiet. Hekk jien biss iffissar tal-bidu u isfel vleġġa fuq ċwievet tiegħi hawn. U jekk I iżommu laqtu up, inti 'tara kollha ta' l-kmandi li għamilt, jew magħmula b'mod żbaljat. U jien ser jimxi 'l quddiem issa u mhux attwalment jużaw dan, apparentement. Jagħmlu impreċiżjoni, dot slash imprecision-- hekk dak I kien mgħallma fl iskola grad kontrolli out. Anke jekk jiena jistampaw sa 10 deċimali jpoġġih, tabilħaqq, huwa 0.10000. Imma inti taf liema? Ejja nneħħu ftit greedy. Ejja ngħidu, bħal, urini 55 jirrimarka wara l-deċimali. Ejja verament jieħdu din programm out għal spin. Let me remake ma jagħmlu impreċiżjoni, dot mmejla, nuqqas ta 'preċiżjoni. U here we go. tfulija tiegħek kienet gidba. Apparentement, 1 diviż b'10 huwa tabilħaqq 0.100000000000000005551115123-- X'qed jigri? Ukoll, jirriżulta, jekk inti tip ta tħares 'il bogħod biżżejjed fl-sottostanti rappreżentanza ta 'dan il- numru, fil-fatt mhuwiex eżattament 1/10, jew 0.1 u numru infinit ta 'żerijiet. Issa, għaliex huwa li? Ukoll, anke jekk din hija sempliċi Numru lilna bnedmin, 1 diviż b'10, huwa għadu wieħed mill infinitament ħafna numri li nistgħu naħsbu up. Iżda kompjuter jista 'jirrappreżenta biss finitely numri tant. U għalhekk, b'mod effettiv, dak li l- kompjuter qed juri magħna huwa l-eqreb tagħha approssimazzjoni għan-numru irridu li jemmnu huwa 1/10, jew verament 0.10000 ad infinitum. Pjuttost, għalkemm, din hija qrib kemm tista 'tikseb. U, tabilħaqq, jekk inti tfittex taħt il-barnuża, kif aħna qegħdin hawn billi tħares 55 ċifri wara l-deċimali, aħna attwalment ara li r-realtà. Issa bħala twarrib, jekk inti ħadthom qatt rat l movie-- ħafna mill inti probabilment haven't-- iżda Superman 3 xi snin ilu, Richard Pryor essenzjalment leveraged din il realtà fil-kumpanija tiegħu biex steal ħafna ta 'frazzjonijiet u frazzjonijiet ta pennies, minħabba li l-company-- kif niftakar, huwa kien while-- kienet essenzjalment tarmi xi ħaġa li ma jidħlux fil-kunċett ta 'ċenteżmi. Imma jekk inti żid up kollha dawn ċkejkna, ċkejkna, numri żgħar darb'oħra, u għal darb'oħra, u għal darb'oħra, inti tista ', bħal fil każ tiegħu, jagħmel tajjeb ammont ta 'flus. Dik l-istess idea kienet misruqa mill aktar reċenti, iżda xorta issa anzjani movie, imsejħa Uffiċċju Ispazju, fejn il-guys f'dak movie, ma l-istess ħaġa, invitat it up kompletament, spiċċaw bi mod wisq flus fil-kont bankarju tagħhom. Kien kollha suspettużi ħafna. Iżda fl-aħħar tal-ġurnata, impreċiżjoni hija kollha madwarna. U li, wisq, jista 'jkun frighteningly-każ. Jirriżulta li Superman 3 u l-Uffiċċju Ispazju twarrib, hemm jista 'jkun hemm xi reali ħafna ramifikazzjonijiet dinja r-realtajiet tas impreċiżi rappreżentazzjoni tad-data li anke aħna bnedmin sa F'dan il-jum ma neċessarjament jifhmu kif ukoll aħna għandhom, jew jiftakru kif spiss kemm għandna. U, tabilħaqq, il-clip li ġej huwa minn ħarsa lejn uħud dinja reali ħafna ramifikazzjonijiet ta 'x'jiġri jekk int ma japprezzaw il-impreċiżjoni li jista 'jiġri fin-numru rappreżentazzjoni. [Daqq video] -Computers, Aħna ve kollha waslu li jaċċettaw -problemi spiss frustranti li jmorru ma them-- bugs, vajrusis, u glitches softwer, għall-prezzijiet żgħar li jħallsu għall-konvenjenza. Iżda fil teknoloġija għolja u l-veloċità għolja applikazzjonijiet tal-programm spazjali militari u, -iżgħar problema tista jiġu eżaltat fil diżastru. Fuq Ġunju 4, 1996, xjentisti ippreparati biex tniedi bla ekwipaġġ Ariane 5 rokit. Kien jġorru xjentifika satelliti mfassla biex tistabbilixxi preċiżament kif l- jinteraġixxi earth s kamp manjetiku mal-irjieħ solari. Il rokit kienet mibnija għall l-Aġenzija Spazjali Ewropea, u tintrefa 'minn faċilità tiegħu fuq il-kosta tal-Gujana Franċiża. -At Madwar 37 sekondi fl -titjira, l-ewwel xi ħaġa ndunat kienet tmur ħażina. -Żennuni kienu tidwir fil mod huma verament m'għandhomx. Madwar 40 sekonda fil-titjira, b'mod ċar, il-vettura kienet fl-inkwiet. U li meta huma jkunu għamlu deċiżjoni li tiddistruġġih. L-uffiċjal tas-sikurezza firxa, bil imsaren tremendi, ippressat il-buttuna, nefaħ l-rokit, qabel ma setgħet issir periklu għas-sigurtà pubblika. -Dan Kien il xebba vjaġġ tas-Ariane 5. U l-qerda tiegħu ħa poġġi minħabba difett inkorporati fis-software tal-rokit s. -Il-Problema fuq il Ariane kienet li kien hemm numru li meħtieġa 64 bits biex jesprimu. U huma riedu li jikkonvertu lil numru 16-bit. Huma jassumi li l Numru kien qatt ser li jkunu kbar ħafna, li ħafna minn dawn numri f'numru 64-bit kienu zeroes. Huma kienu żbaljati. -Il-Inkapaċità ta 'waħda programm tas-software li jaċċetta -tip ta numru iġġenerat mill ieħor kien fl-għeruq tan-nuqqas. Żvilupp tas-softwer kienet saret parti jiswew ħafna ta 'teknoloġija ġdida. Il rokit Ariane kienu ħafna suċċess, tant tas-software maħluqa għall kien ukoll użat fil-Ariane 5. -Il-Problema bażika kienet li l-Ariane 5 kien aktar mgħaġġel, aċċelerata aktar malajr. U s-software ma kinitx ammontaw għal dak. -Il-Qerda tal-rokit kien hemm diżastru finanzjarju kbir, kollha minħabba żball softwer minuta. Iżda dan ma kienx l-ewwel time problemi ta 'konverżjoni tad-data kien ibati teknoloġija rokit moderna. -In 1991, bil-bidu ta 'l-ewwel Gwerra tal-Golf, l Missili Patriot esperjenzaw tip simili tal-akbar problema konverżjoni. U bħala riżultat, 28 nies, 28 suldati Amerikani, nqatlu, u dwar 100 oħrajn feruti, meta l Patriot, li suppost kellha biex jipproteġu kontra scuds deħlin, naqset għan-nar ta 'missili. -Meta Iraq invadiet Kuwajt, u l-Amerika imnedija Maltempata deżert fil-bidu 1991, batteriji patrijott Missili kienu skjerati biex jipproteġu l-Għarabja Sawdita u l-Iżrael minn attakki Iraqini missili Scud. Il Patriot hija ta 'firxa medja Istati Uniti wiċċ li sistema ta 'arja, manifatturati mill-kumpanija Raytheon. -Il-Daqs tal-interċetturi Patriot nnifisha hija madwar bejn wieħed u ieħor 20 pied fit-tul. U li jiżen madwar 2,000 liri. U twettaq warhead ta 'madwar, Naħseb li huwa bejn wieħed u ieħor 150 £. U l-warhead innifsu huwa ta 'splussiv għolja, li għandha frammenti madwaru. Il-kaxxa tal-warhead huwa imfassla biex jaġixxu bħall buckshot. -Il Missili jinġarru erba 'għal kull kontenitur, u huma trasportati permezz ta 'karru semi. -Il Sistema Patriot kontra l-missili tmur lura għall-inqas 20 snin issa. Din kienet oriġinarjament iddisinjata bħala missili difiża bl-ajru li rimja fl ajruplani ghadu. Fl-ewwel gwerra tal-Golf, meta dik gwerra daħlet tul, l-Armata riedu jużawh għal rimja fl scuds, mhux ajruplani. L-Air Force Iraq kienet mhux tant ta 'problema. Iżda l-Armata kien inkwetat dwar scuds. U għalhekk huma ppruvaw jaġġornaw l-Patriot. -Intercepting Ghadu missili jivvjaġġaw lejn Mach 5 kienet se tkun sfida biżżejjed. Iżda meta l-Patriot kien ġrew fis-servizz, l-Armata ma kienx konxju ta ' modifika Iraqini li għamlu scuds tagħhom kważi impossibbli li hit. Liema ġara huwa l scuds li kienu ġejjin fil kinux instabbli. Huma kienu wobbling. Ir-raġuni għal dan kienet l-Iraqini, sabiex biex tikseb 600 kilometru barra minn kilometru 300 missili medda, ħa piż barra mill-warhead quddiem. Huma għamlu l-warhead eħfef. Allura issa l-Patriot huwa tipprova toħroġ fil-Scud. U ħafna mill-ħin, il- maġġoranza kbira tal-ħin, ikun biss jtiru mill-Scud. Ladarba l-operaturi tas-sistema Patriot realizzati l-Patriot spiċċa barra, huma jisplodu warhead tal-Patriot tal sabiex jiġi evitat diżgrazzji possibbli jekk hija kien permess li jaqgħu l-art. -Li Kien dak li ħafna nies raw, dawk fireballs kbar fis-sema, u ħażin bħala interċettazzjonijiet ta 'testati Scud. -Although Fil-lejl smewwiet, Patriots deher li jkun b'suċċess jeqirdu Scuds, fil Dhahran, jista 'jkun hemm l-ebda żball dwar ir-rendiment tiegħu. Hemmhekk, is-sistema tar-radar tal-Patriot tal mitlufa mogħdija ta 'Scud li jmiss, u qatt nediet dovuti għal difett softwer. Kien l-Iżraeljani li l-ewwel skoperti li l-aktar is-sistema kienet fuq, l-akbar il diskrepanza ħin saru, minħabba arloġġ integrati fil-kompjuter tas-sistema. -About Ġimgħatejn qabel -traġedja fil Dhahran, -Iżraeljani rrapportati lill Dipartiment tad-Difiża li s-sistema kienet jitilfu l-ħin. Wara madwar tmien sigħat jew running, huma ndunat li s-sistema kienet qed issir notevoli inqas preċiż. Id-Dipartiment tad-Difiża wieġbet billi javżak kollha tal-batteriji Patriot biex ma jħallux is-sistemi fuq għal żmien twil. Huma qatt ma qal dak żmien twil was-- tmien sigħat, 10 siegħa, 1,000 siegħa. Ħadd ma kien jaf. -Il Batterija Patriot stazzjonati fuq il-kwartieri fil Dhahran u żbaljata interna tagħha arloġġ kienet ilha għaddejja aktar minn 100 siegħa dwar il-lejl ta 'Frar 25. -Hija Tracked żmien sa preċiżjoni ta 'madwar wieħed minn għaxra ta' sekonda. Issa, wieħed minn għaxra ta 'sekonda huwa numru interessanti, minħabba li ma tistax tiġi espressa fil binarja eżattament, liema tfisser li ma tistax tiġi espressa eżattament fi kwalunkwe kompjuter diġitali moderna. Huwa diffiċli li wieħed jemmen. Iżda jużaw dan bħala eżempju. Ejja tieħu t-tielet numru wieħed. tielet wieħed ma jistax ikun espressa deċimali eżattament. tielet wieħed huwa 0.333 għaddejja għal infinità. M'hemm l-ebda mod biex tagħmel dan ma preċiżjoni assoluta deċimali. Dik hija eżattament it-tip ta 'problema li ġara fil-Patriot. L-itwal-sistema dam, il agħar l-iżball ħin sar. -After 100 siegħa ta 'tħaddim, l- Żball fil-ħin kien biss madwar terz ta 'sekonda. Iżda f'termini ta jimmira għal missili jivvjaġġaw Mach 5, dan wassal għal traċċar Żball ta 'aktar minn 600 metru. Ikun żball fatali għall-suldati fuq dak ġara huwa tnedija Scud kienet skoperti minn satelliti ta 'twissija bikrija u dawn kienu jafu li l-Scud kienet ġejjin fil-direzzjoni ġenerali tagħhom. Huma ma jafux fejn kien ġejjin. -Hija Kien issa sa l-radar komponent tas-sistema Patriot tiddefendi Dhahran biex jinstabu u jżommu kont tal-missili ghadu dieħla. -Il-Radar kien intelliġenti ħafna. Hija fil-fatt track il-pożizzjoni tal-Scud, u mbagħad previżjoni fejn probabbilment ikun il-ħin li jmiss il-radar mibgħuta polz barra. Dan kien jissejjaħ xatba firxa. -Then, Ladarba l-Patriot jiddeëiedi żmien biżżejjed għandha mgħoddi li jmorru lura u jiċċekkjaw il-li jmiss post għal dan l-oġġett misjuba, din tmur lura. Allura meta marru lura lill-ħażin post, imbagħad jara l-ebda oġġett. U huwa jiddeċiedi li ma kien hemm l-ebda oġġett, kien kxif falza, u qtar il-binarju. -Il Scud deħlin sparixxa mill-iskrin tar-radar. U sekondi wara, slammed fil-kwartieri. Il Scud maqtula 28, u kienet l-aħħar wieħed sparati waqt l-ewwel Gwerra tal-Golf. Traġikament, is-software aġġornat waslu fil Dhahran-għada. Is-difett softwer kellhom Kien fiss, għeluq kapitolu wieħed fil-mnikkta istorja tal-missili Patriot. [Daqq video] DAVID J. Malan: Allura din hija kollha li jgħidu li dawn il-kwistjonijiet ta 'tifwir u impreċiżjoni huma kollha wisq reali. Allura kif ma nikbru hawn? Bdejna bil biss jitkellem dwar printf. Għal darb'oħra, din il-funzjoni li prints xi ħaġa li l-iskrin, u aħna introdotti wara funzjonijiet oħra ftit mill-hekk imsejħa librerija CS50 s. U aħna ser tkompli tara dawn fi żmien xieraq. U aħna, partikolarment, użati spag nikseb, u nikseb int, u issa wkoll tikseb float, u f'oħrajn xorta se niltaqgħu u l-użu lilna nfusna qabel twil. Imma fuq okkażjoni, ikollhom aħna diġà raw il-ħtieġa li jaħżen x'inhuma dawn il-funzjonijiet idejn lura? Huma idejn us lura string, jew int, jew float. U xi kultant għandna bżonn li tpoġġi din spag, jew int, jew float, x'imkien. U biex jaħżnu dawk l-affarijiet, recall biss bħal fil Scratch, għandna varjabbli. Iżda b'differenza Scratch, fis-C għandna tipi attwali tad-dejta variables-- tipi, generally-- aktar fosthom, string, l int, a float, u dawn oħrajn għadhom. U hekk meta aħna niddikjaraw varjabbli fis-C, aħna ser ikollhom biex jiddikjaraw tipi ta 'data tagħna. Din hija xi ħaġa mhux aħna ser għandek tagħmel aktar tard fil-semestru kif aħna transizzjoni għal lingwi oħra. Iżda għal issa, jeħtiġilna li a priori minn qabel, tispjega lill-kompjuter liema tip tal-varjabbli irridu li tagħtina. Issa, sadanittant, għall-istampar dawk it-tipi ta 'tipi ta' data, għandna li tgħid printf dak li jistennew. U rajna fil-mija i ta 'sekwenzi, u mija i għall-interi, u ftit oħrajn diġà. U dawk huma sempliċiment rekwiżiti għall-preżentazzjoni viżiva ta 'dik l-informazzjoni. U kull wieħed minn dawn jista 'attwalment jiġi parametrized jew tweaked b'xi mod, jekk inti tixtieq li tkompli kontroll it-tip ta 'produzzjoni li ikollok. U, fil-fatt, jirriżulta li mhux biss hemm n backslash għal linja ġdida. Hemm xi ħaġa oħra msejħa backslash r għar-ritorn ġarr, li huwa aktar simili għal typewriter iskola antika, u wkoll Windows jintuża għal ħafna snin. Hemm t backslash għall tabs. Jirriżulta, li jekk inti tixtieq li kwotazzjoni doppja ġewwa ta 'spag, ifakkar li konna użati doppju kwotazzjoni doppja kwotazzjoni fuq ix-xellug u l-lemin truf ta 'spag tagħna s'issa. Dak jidher li jħawdu affarijiet. Jekk inti tixtieq li jitqiegħed kwotazzjoni doppja fil -nofs ta 'string-- u, tabilħaqq, huwa konfuża biex tara. U hekk ikollok biex jaħarbu, hekk li jitkellmu, kwotazzjoni doppja ma 'xi ħaġa simili, litteralment, backslash kwotazzjoni doppja. U hemm ieħor ftit għadu. U aħna ser tara aktar ta 'dawk fl-użu attwali qabel fit-tul. Mela ejja issa tgħaddi mill data, u rappreżentazzjoni, u l-operaturi aritmetika, kollha li minnhom tana xi bini blokki li biex jilgħabu. Imma issa ejja attwalment jagħtu us-bqija tal-vokabularju li aħna diġà kellhom ġimgħa li għaddiet ma scratch billi tagħti ħarsa lejn xi oħra constructs fl C-- mhux kollha kemm huma. Iżda l-ideat aħna qed waslet biex tara verament ftit li jenfasizzaw il traduzzjoni minn lingwa waħda, Scratch, għall-ieħor, C. U maż-żmien, aħna ser pick up aktar għodod għall toolkit tagħna, biex ngħidu hekk, sintattikament. U, fil-fatt, tkun taf tara li l-ideat issa huma pjuttost familjari mill-aħħar ġimgħa. Mela ejja tagħmel dan. Ejja imorru quddiem u Whip up programm li effettivament juża xi espressjonijiet, espressjoni Boolean. Let me imorru quddiem hawn u toħloq fajl ġdid. I ser sejħa dan condition.c. Let me imorru quddiem u jinkludu l-librerija CS50. U let me imorru quddiem u jinkludu istandard IO.h għall-funzjonijiet tagħna, u printf, u aktar rispettivament. Ħalli nagħtikom lili nnifsi li boilerplate ta null prinċipali int, li l-ispjegazzjoni aħna ser jerġgħu lura għall fil-futur. Issa let me jimxi 'l quddiem u jagħti lili nnifsi int permezz int tikseb. Imbagħad let me imorru quddiem u tagħmel dan. Irrid ngħid jekk i huwa less-- ejja jiddistingwu bejn pożittivi, negattivi, jew il-valuri żero. Mela jekk i huwa inqas minn żero, let me sempliċiment għandek dan il-programm sempliċement jgħidu, negattiv, backslash n, inkella jekk i huwa akbar minn żero. Issa jien, naturalment, se ngħid printf pożittiv, backslash n. U allura inkella if-- I jistgħu jagħmlu dan. I jistgħu jagħmlu jekk i huwa ugwali 0. Imma jien d jkun qed jagħmel fuq inqas wieħed żball diġà. Ifakkar li s-sinjal ugwali mhux ugwali, kif aħna bnedmin jafu. Imma hija l-operatur assenjazzjoni. U aħna ma jridux jieħdu 0 fuq il linja leminija u b'xutt fil i fuq ix-xellug. Allura biex tiġi evitata din il-konfużjoni, jew forsi l-użu ħażin ta 'l-ugwali tiffirma, bnedmin iddeċidew xi snin ilu li fl-ipprogrammar ta 'lingwi f'ħafna meta inti tixtieq li jiċċekkjaw għall-ugwaljanza bejn ix-xellug u l-lemin, inti attwalment jużaw huwa daqs ugwali. Allura inti hit l-ugwali jiffirmaw darbtejn. Meta inti tixtieq li tassenja mill-lemin -xellug, inti tuża sinjal ugwali wieħed. Allura nistgħu nagħmlu this-- inkella jekk i huwa ugwali huwa daqs żero. I jistgħu mbagħad mur u miftuħa ċingi kaboċċi tiegħi, u jgħidu, printf 0, n backslash, magħmul. Imma ftakar kif dawn frieket fit-triq jista 'jaħdem. U, tassew, biss jaħsbu dwar il-loġika. i huwa numru. Huwa ta 'numru sħiħ, b'mod speċifiku. U dan ifisser li għaddej biex tkun inqas minn 0, jew akbar minn 0, jew 0. Allura hemm tip ta 'dan każ normali impliċita. U hekk nistgħu, bħad Scratch, teżenta mill-inkella jekk, u biss jgħidu ħaġa oħra. Loġikament, jekk inti l- programmer jafu hemm biss tliet bramel li fih l- xenarju jista fall-- l-ewwel, it-tieni, jew it-tielet f'dan il case-- ma jolqot żżid il-preċiżjoni addizzjonali u l-loġika addizzjonali hemmhekk. Just go quddiem bil- każ normali hawnhekk ta 'ħaddieħor. Issa, ejja imorru quddiem wara iffrankar dan, tagħmel kundizzjonijiet dot mmejla conditions-- mhux user interface kbira, għaliex jien ma suġġeriment il utent, kif semmejt qabel. Imma li l-multa. Aħna ser jżommha sempliċi. Ejja nippruvaw in-numru 42. U li pożittivi. Ejja nippruvaw in-numru negattiva 42, negattiv. Ejja nippruvaw il-valur nru 0. U, fil-fatt, hija taħdem. Issa, tkun taf tara bi problemi qabel twal, ittestjar affarijiet tliet darbiet, probabbilment mhux biżżejjed. Inti probabilment tixtieq li jittestjaw xi numri akbar, xi iżgħar numri, f'xi każijiet kantuniera, kif aħna ser jaslu biex jiddeskrivu lilhom. Iżda għal issa, dan huwa programm pjuttost sempliċi. U jien pretty żgur, loġikament, li jaqa 'fi tliet każijiet. U, tabilħaqq, anke jekk aħna biss iffukat fuq il-aspetti negattivi potenzjali ta impreċiżjoni u overflow, b'mod realtà fejn ħafna mill-problemi CS50, il aħna mhux se joqogħdu jinkwetaw dwar, il-ħin kollu, dawk il-kwistjonijiet ta 'tifwir u impreċiżjoni, peress li, fil-fatt, fis-C, huwa attwalment mhux kollha li faċli biex jevitaw dawn l-affarijiet. Jekk inti tixtieq li joqgħod up akbar, u akbar, u akbar, jirriżulta hemm tekniki inti jistgħu jużaw, spiss jinvolvu affarijiet msejħa libreriji, kollezzjonijiet ta 'kodiċi, li nies oħra kiteb li tista 'tuża, u lingwi oħra bħall Java u oħrajn, fil-fatt jagħmluha ħafna aktar faċli biex jingħaddu saħansitra ogħla. Allura huwa verament xi wħud minn dawn il-perikli funzjoni tal-lingwa tuża. U fil-ġimgħat li ġejjin, aħna ser tara kif perikolużi C verament jista 'jkun jekk inti ma tużah kif suppost. Iżda minn hemm, u ma Python, u JavaScript, se aħna saff fuq xi protezzjonijiet ulterjuri, u run inqas ta 'dawk ir-riskji. Mela ejja jagħmlu ftit aktar loġika interessanti fil-programm tagħna. So let me go l quddiem u joħolqu programm imsejjaħ Loġiku biss hekk I tista 'tilgħab ma' xi loġika attwali, logical.c. I ser biss kopja u paste xi Kodiċi minn qabel so I nikseb lura għal dan il-punt tat-tluq sbieħ. Let me din id-darba ma Ċ char jien ser tagħtiha isem ta 'C sempliċement għaliex dan huwa konvenzjonali, jiksbu karattru mill-utent. U ejja nippretendu simili Jien implimentattivi parti ta 'dak il-programm Rm, il neħħi programm qabel dik id wassal lill-utent biex tneħħi fajl. Kif nistgħu nagħmlu dan? Irrid ngħid, jekk Ċ huwa daqs huwa ugwali, kwotazzjoni unquote, y, allura jien ser tassumi li l-utent ikun għażel iva. Jien biss morna għall-istampa iva. Kieku kellu fatt bil-miktub il-programm tneħħija, nistgħu tneħħi l-fajl b'aktar linji ta 'kodiċi. Iżda aħna ser jżommha sempliċi. Inkella jekk ć huwa daqs huwa daqs n-- u issa hawn, jien ser ngħid, l-utent għandu fissru l-ebda. U allura inkella, inti taf liema? I do not know x'iktar l-utent li qed jiġri għat-tip. Hekk jien biss se ngħid li jiġifieri żball, tkun xi tkun hu jew hi attwalment ittajpjat. Allura x'inhu għaddej hawn? Hemm differenza fundamentali kontra dak li jien ghamilt fil-passat. kwotazzjonijiet doppja, kwotazzjonijiet doppja, double kwotazzjonijiet, u, għadhom, kwotazzjonijiet uniku, kwotazzjonijiet uniku. Jirriżulta fis-C, li meta inti tixtieq li jiktbu spag, inti tagħmel użu kwotazzjonijiet doppja, eżatt kif aħna stajt qegħdin jużaw dan il-ħin ma printf. Imma jekk inti tixtieq li jittrattaw biss bi karattru wieħed, l-hekk imsejħa char, allura inti attwalment jużaw kwotazzjonijiet uniku. Dawk minnkom li ħadthom programmati qabel, inti jista 'ma jkollhomx kellhom joqogħdu jinkwetaw dwar dan distinzjoni f'ċerti lingwi. Fl Ċ, dan ma jimpurtax. U hekk meta niġi char u nixtieq li tqabbel dak char jużaw ugwali huwa ekwivalenti għal xi ittra simili y jew n, I do, tabilħaqq, jeħtieġ li jkollhom l-kwotazzjonijiet uniku. Issa, ejja imorru quddiem u jagħmlu dan. Ejja imorru quddiem u ma tagħmel dot loġiku mmejla loġiku. U issa jien qed imqanqla. Allura, preżumibbilment, utent esperjenza aħjar fil-fatt tell me x'għandek tagħmel hawn. Imma jien ser biss bl-addoċċ jgħidu y għall iva, OK, sbieħ. Ejja run mill-ġdid, n għall-ebda, sbieħ. Ejja ngħidu bħal ċerti nies li naf, tappijiet tiegħi lock ewlieni huwa fuq kollox ta 'spiss wisq. So I do kapital Y, jidħlu, iżball. OK, mhuwiex eżattament dak li jien jistennew. Tabilħaqq, il-kompjuter qed tagħmel litteralment dak I told li do-- jikkontrolla għal zghar n yu zghar. Dan ma jħossu bħal tajjeb utent esperjenza, għalkemm. Let me jistaqsu għal u jaċċettaw F'kull każ inqas jew b'ittri kbar. Għalhekk jirriżulta li, inti tista 'tixtieq ngħid xi ħaġa simili fil Scratch, bħal litteralment jew Ċ huwa daqs huwa ugwali kapital y ikkwotat uniku. Jirriżulta, C ma jkollux dan il-keyword letterali jew. Iżda ma jkollu żewġ bars vertikali. Int għandek iżomm Shift normalment, jekk inti qed tuża tastiera Istati Uniti, u laqat il-bar vertikali ċavetta hawn fuq ċavetta ritorn tiegħek. Iżda dan il-bar vertikali bar vertikali mezzi jew. Jekk, għall-kuntrarju, ridna li jgħidu u, bħal fil Scratch, stajna nagħmlu ampersand ampersand. Li jagħmel ebda sens loġiku hawn, għax-bniedem ma setgħux possibilment ikunu ttajpjati kemm yu y zghar u l-kapital Y bħala l-istess natura. Allura jew huwa dak għandna l-intenzjoni hawn. Mela jekk jien tagħmel dan fiż-żewġ postijiet, jew c huwa ugwali jkun ugwali għas-kapital N, issa terġa 'ssir, jagħmlu loġiku, terġa 'ssir loġiku. Issa, jien tista tip y. U nista 'nagħmel dan mill-ġdid ma kapital Y, jew N. kapital UI jista 'jżid b'mod addizzjonali kombinazzjonijiet għadhom. Allura dan huwa loġiku programm safejn issa Jien iċċekkjar loġikament għall dan il-valur jew il dan il-valur. U jien ma jkollhom, neċessarjament, toħroġ bi tnejn IFs aktar jew inkella IFs. I jistgħu attwalment jgħaqqdu xi wħud mill- loġika relatat flimkien b'dan il-mod. Allura dan ikun aħjar mfassla minn sempliċiment qal, jekk Ċ huwa daqs minuskuli y, jistampa iva, inkella jekk ć huwa daqs il-kapital Y, jistampa iva, inkella jekk ć huwa daqs lower-- fi kliem ieħor, inti ma għandekx li jkollhom fergħat aktar u aktar. Tista 'tikkombina xi wħud mill-ekwivalenti fergħat loġikament, bħal f'dan il-mod. Mela ejja tagħti ħarsa lejn waħda biss ingredjent finali, finali tibni waħda, li C tippermetti. U aħna ser jiġu lura fil- futur lill-oħrajn għadhom. U allura aħna ser jikkonkludi billi tħares f'mhux-korrettezza ta 'code-- jkollna kodiċi għall work-- iżda d-disinn tal-kodiċi, u pjanti dawk iż-żrieragħ minn kmieni. So let me go quddiem u jiftħu fajl ġdid hawn. Taf xiex? Jien ser jerġa 'jimplimenta dik l-istess programm, iżda bl-użu ta 'kostruzzjoni differenti. So let me malajr jagħtu myself aċċess biex jinkludi CS50.h għall-librerija CS50, istandard Io.h għall printf. Give me null prinċipali tiegħi int. U mbagħad hawn fuq, let me go quddiem u tagħmel dan. Char ċ gets tikseb char, bħad qabel. U jien ser tuża tibni ġdida now-- jaqilbu, fuq liema karattru? Allura swiċċ huwa tip ta 'prodotti simili qlib ta 'binarji tal-ferrovija. Jew, verament, huwa tip ta ' IF inkella, jekk inkella jekk, iżda miktuba kemmxejn differenti. A swiċċ tidher bħal dan. Inti għandek swiċċ, u allura dak karattru jew in-numru inti tixtieq li tħares lejn, imbagħad xi ċingi kaboċċi bħal fil Bidunett, biss jgħidu jagħmlu dan il-għalf. U allura inti għandek il-każijiet differenti. Inti ma jużawx jekk u ieħor. Inti litteralment tuża l-każ kelma. U inti ngħid xi ħaġa bħal din. Allura fil-każ ta 'y zghar, jew fil-każ ta 'kapital Y, imorru quddiem u jistampa iva. U mbagħad break out ta 'l-iswiċċ. Daqshekk. Aħna qed isir. Inkella jekk, biex ngħidu hekk, żgħira n, jew kapital N, imbagħad imorru quddiem u l-istampar f'ebda, u mbagħad break. Else-- u dan it-tip ta 'huwa l- każ normali indeed-- printf error-- u biss għal miżura tajba, għalkemm loġikament dan il-brejk mhux meħtieġ għaliex aħna qed fl-aħħar tas-swiċċ xorta, Jien issa breaking out ta 'l-iswiċċ. Allura dan jistenna ftit differenti. Iżda, loġikament, huwa fil-fatt ekwivalenti. U għaliex kieku inti tuża wieħed fuq l-ieħor? Kultant, preferenza personali biss, kultant l-estetika, jekk I t'għajn lejn din issa, hemm xi ħaġa li jingħad għall- leġibbiltà ta dan il-kodiċi. I mean, qatt f'moħħhom il-fatt li din il Kodiċi huwa ġdid għal ħafna minna fil-kamra. Iżda huwa biss tip ta 'hija pjuttost. You see zghar y, il-kapital Y, każ n t'isfel, il-kapital N kontumaċja, hija biss tip ta 'qbiż fil inti b'mod li, forsi, forsi l-eżempju ta 'qabel mal-IFs, u l-bars vertikali, u l-IFs inkella, jista 'ma jkollhomx. Allura dan huwa verament kwistjoni ta 'personali għażla, tassew, jew leġibbiltà, tal-kodiċi. Imma f'termini ta 'funzjonalità, let me imorru quddiem u jagħmlu swiċċ, dot slexx swiċċ, u issa t-tip y zghar, kapital Y, n zghar, il-kapital N, David, retry għaliex dan huwa mhux karattru wieħed. Ejja nagħmlu x, iżball, kif mistenni. U, logically-- u din hija xi ħaġa Nixtieq jinkoraġġixxu b'mod general-- anke għalkemm aħna qed biss grif tal- wiċċ ta 'xi wħud minn dawn il-karatteristiċi. U jista 'ma jkunx ovvju meta inti ruħek joqogħdu bilqegħda fuq il-keyboard, kif taħdem din? X'għandu dan il do? Il-ħaġa sabiħa dwar li jkollhom laptop, jew desktop, jew aċċess ma 'kompjuter ma kompilatur, u bil-editur kodiċi bħal dan, huwa inti tista 'kważi dejjem risposta dawn mistoqsijiet għalik innifsek biss billi tipprova. Per eżempju, jekk il rhetorical kwistjoni fil-idejn kienu, x'jiġri jekk tinsa dikjarazzjonijiet break tiegħek? Li huwa attwalment komuni ħafna ħaġa li tagħmel, għaliex ma nħarsu bħal int verament ħtieġa għalihom. Huma ma verament tlesti tiegħek ħasbu bħal parentesi jew kaboċċi Brace ma. Ejja imorru quddiem u recompile il-kodiċi u ara. Sabiex tagħmel swiċċ, dot swiċċ linja mmejla. Ejja tip fl b'ittri żgħar y, il-każ ta 'fuq, Ikteb. So I ittajpjat y. Il-programm qal iva, le, żball, daqs li kieku kien qed jinbidlu mentalità tagħha. Iżda dan it-tip ta kien, għaliex dak li jiġri ma 'swiċċ huwa l-ewwel każ li logħba essenzjalment ifisser, ħej kompjuter, tesegwixxi kollha ta 'l-kodiċi taħt dan. U jekk inti ma jgħidux waqfa, jew ma jgħidux waqfa, jew ma jgħidu break, il-kompjuter se blow kollha ta 'dawn il-linji permezz u tesegwixxi kollha kemm huma sa l jiġrilha għal dak Brace kaboċċi. Allura l-brejkijiet huma, tabilħaqq, ikun meħtieġ. Iżda takeaway hawnhekk huwa, meta fid-dubju, ipprova xi ħaġa. Forsi isalva kodiċi tiegħek l-ewwel, jew ħlief fil-fajl żejjed jekk int verament inkwetat dwar messing up u jkollhom jirkupraw -xogħol li taf qed taħdem. Iżda ipprova affarijiet. U ma jkun jibża, forsi, ta 'dak il-kompjuter tista' tagħmel, jew li inti tista 'break xi ħaġa. Inti tista 'dejjem jerġa' lura għal xi verżjoni preċedenti. Mela ejja jispiċċaw billi tħares lejn id-disinn tal-kodiċi. Għandna din il-ħila issa li jiktbu kondizzjonijiet, u jiktbu loops, u varjabbli, u l-funzjonijiet sejħa. Allura, franchement, aħna qed tip ta 'lura fuq fejn konna ġimgħa ilu bil scratch, għalkemm bi testwali inqas konvinċenti ambjent minn scratch jippermetti. Imma avviż kif malajr konna akkwistat li vokabularju, anki jekk huwa ser tieħu ftit filwaqt li sink fil- sabiex inkunu issa jistgħu jużaw dan vokabolarju jiktbu programmi aktar interessanti. U ejja tagħti pass tarbija lejn dak, kif ġej. Let me imorru quddiem u toħloq fajl ġdid hawn. Jien ser sejħa dan prototype.c, u jintroduċu għall-ewwel darba, il-ħila biex jagħmlu funzjonijiet tiegħek stess. Xi wħud minnkom jista 'jkollok għamlu dan bil scratch, fejn inti tista 'toħloq tiegħek blokki użanza stess fil Scratch, u mbagħad drag minnhom fil-post fejn inti tixtieq fl Ċ U f'ħafna ipprogrammar lingwi, inti tista 'tagħmel eżattament that-- jagħmlu funzjonijiet tiegħek stess, jekk ma jkunux diġà jeżistu. Allura, per eżempju, let me imorru quddiem u jinkludu CS50.h, u jinkludu istandard IO.h, nulla prinċipali int. U issa għandna placeholder lesta li tmur. I iżommu affarijiet istampar bħall-ismijiet tan-nies tal-lum. U li jħoss like-- ma Ikun sbieħ jekk hemm kienu funzjoni msejħa isem istampar? I ma jkollhom jużaw printf. I ma għandek tiftakar l-kodiċijiet kollha format. Għaliex ma I, jew għaliex ma xi ħadd qabli, toħloq funzjoni msejħa istampar isem, li minħabba xi isem, sempliċiment prints out? Fi kliem ieħor, jekk ngħid, ħej, kompjuter, tagħti me a string billi jitolbu lill-utent għal tali, permezz funzjoni sekwenza nikseb CS50 s. Ħej, kompjuter, poġġi dik string fil il-varjabbli fil-naħa tax-xellug, u sejħa hija s. U mbagħad, ħej kompjuter, imorru quddiem u tistampa dan l-isem tal-persuna, magħmul. Issa, ikun sbieħ, għaliex dan il-programm, b'mod adattat issemmiet, jgħidlekx me dak huwa suppost li tagħmel permezz ta 'ismijiet dawk funzjoni tal. Let me go u jagħmlu prototip, Ikteb. U, sfortunatament, dan mhux se jtiru. Prototype.c, linja 7, karattri 5, żball, id-dikjarazzjoni impliċitu tal-funzjoni isem istampar hija invalida C99, C99 jiġifieri verżjoni ta 'C li ġew fl-1999. Dak kollox. So I do not know dak Dan kollu jfisser s'issa. Imma I do jirrikonoxxu żball fl-aħmar. Li pjuttost ovvju. U jidher li ma il-karattru aħdar hawn, il-kwistjoni hija bl-isem istampar, miftuħa paren i, paren qrib, semi-kolon. Iżda dikjarazzjoni impliċitu tal funzjoni aħna ma tara fil-qosor qabel. Dan ifisser, sempliċement, li Clang ma tkunx taf dak li jfisser. Stajt użati kelma vokabularju li huwa qatt jidher jew ġie mgħallem qabel. U hekk I bżonn li jgħallmu liema din il-funzjoni jfisser. Hekk jien ser jimxi 'l quddiem u tagħmel dan. Jien ser jimxi 'l quddiem u jimplimentaw funzjoni tiegħi stess imsejħa Stampa Isem. U jien se ngħid, kif ġej, li dan tagħmlu, printf, bonjour,-mija i, n backslash, isem, semi-colon. Allura dak li ma I biss do? Għalhekk jirriżulta li, sabiex timplimenta funzjoni tiegħek stess, aħna tip ta 'jissellef xi wħud -istess struttura bħal ewlenija li aħna ħadthom biss ġew meħuda għall mogħtija, u jien taf biss ikkupjar u pasta pretty ħafna dak Stajt ġie miktub fl-imgħoddi. Iżda avviż-mudell hawn. Int, Main, Null, aħna ser tease apparti qabel twil dak li effettivament tfisser. Iżda għal-lum, ftit Avviż paralleliżmu. Null, isem istampar, isem spag, b'hekk m'hemm l- keyword vjola, li aħna qed tmur biex tibda ssejjaħ tip ritorn, l-isem ta ' il-funzjoni, u mbagħad l-input. Allura, fil-fatt, nistgħu jiddistillaw dan it-tip ta għaddiet ġimgħa simili fejn, dan ikun l-isem jew il- algoritmu tal-kodiċi nkunu ser write-- l algoritmu sottostanti il-kodiċi aħna qed tmur biex jiktbu. Dan huwa kontribut tagħha. Dan huwa l-output tagħha. Din il-funzjoni, isem istampar, huwa mfassla biex tieħu string imsejjaħ isem, jew kwalunkwe, bħala input, u mbagħad bla effett. Ma ritorn xejn, bħal nikseb string jew tikseb int ma. Allura li għaddej biex idejn lili xi ħaġa lura. Huwa biss se jkollhom effett sekondarju, biex ngħidu hekk, ta 'stampar isem ta' persuna. Allura avviż, linja 7, jien tista 'sejħa isem istampar. Linja 10, I tista 'tiddefinixxi jew jimplimenta l-isem istampar. Iżda, sfortunatament, dan mhux biżżejjed. Let me imorru quddiem u recompile dan wara iffrankar. Whoa, issa, stajt għamilha agħar, jidher. Dikjarazzjoni hekk impliċitu tal Isem istampar funzjoni huwa invalidu. U, għal darb'oħra, hemm aktar żbalji. Imma kif I wissa qabel, anki jekk ikollok b'rikjesti, jew ftit imdejjaq biex tara tant Żbalji, tiffoka biss fuq l-ewwel inizjalment, għaliex din tista 'biss kellhom effett cascading. Allura Ċ, jew Clang b'mod iktar speċifiku, xorta ma tirrikonoxxix isem istampar. U dan għaliex Clang, permezz tad-disinn, huwa tip ta 'mutu. Hija biss ma dak li inti tgħid li tagħmel. U ma biss hekk fl-ordni fejn inti tgħid li tagħmel. So I iddefiniti prinċipali fuq il-linja erbgħa, simili aħna kont qed tagħmel pretty ħafna drabi. Stajt definiti isem istampar fuq il-linja 10. Imma jien jippruvaw jużaw isem istampar fuq il-linja sebgħa. Huwa kmieni wisq, s'issa ma jeżistix. So I tista 'tkun għaqlija, u jkunu simili, OK, so ejja biss jilagħbu flimkien, u jimxu isem istampar sa hawn, u ri-jikkumpilaw. Oh my God. Hija ħadmet. Kien sempliċi bħal dik. Iżda l-loġika hija eżattament dan. Inti għandek biex jgħallmu Clang dak li huwa billi tiddefinixxi l-funzjoni ewwel. Imbagħad inti tista 'tagħmel użu minnha. Iżda, franchement, dan iħoss bħal inklinazzjoni tiżloq. Hekk kull darba I run fis-problema, jien biss ser jenfasizzaw u kopja tal-kodiċi I kiteb, taqtgħu u paste up here. U, żgur, nistgħu contrive xi xenarji fejn funzjoni waħda jista bżonn tirrikorri ieħor. U inti biss ma tistax tqiegħed kull funzjoni ta 'hawn fuq kull oħra. Għalhekk jirriżulta li hemm l- soluzzjoni aħjar. Nistgħu tħalli dan jkun. U, franchement, huwa ġeneralment sabiħ, u konvenjenti, u d-disinn tajba li jpoġġu prinċipali ewwel, minħabba li, għal darb'oħra, prinċipali bħad meta bandiera aħdar għafast, li hija l-funzjoni li gets esegwiti fil-kontumaċja. Allura inti tista 'ukoll tpoġġi hija fil-quċċata tal-fajl b'tali mod li meta inti jew xi oħra tal-bniedem iħares lejn il-fajl inti taf x'inhu għaddej biss mill-qari l-ewwel ewlenija. Għalhekk jirriżulta li, nistgħu tell Clang proattiv, ħej, Clang, fuq il-linja erbgħa, I wegħda li jimplimentaw funzjoni msejħa Stampa Isem li tieħu l-isem string imsejjaħ bħala input, u prospetti xejn, bla effett. U jien ser tikseb madwar biex implimentazzjoni tiegħu aktar tard. Hawnhekk tidħol Main. Ewlenija issa fuq il-linja 9 jistgħu jużaw Stampa Isem għaliex Clang huwa fidu li, eventwalment, se jiltaqgħu d-definizzjoni tal-implimentazzjoni tal Stampa Isem. Allura wara iffrankar fajl tiegħi, let me go quddiem u jagħmlu prototip, jidher tajjeb dan iż-żmien. Dot mmejla, prototip, let me jimxi 'l quddiem u t-tip fl-isem. David, bonjour David, Zamila, bonjour Zamila, u, tabilħaqq, issa hija taħdem. Allura l-ingredjent hawnhekk hija li aħna ħadthom għamel funzjoni konswetudini, bħal konswetudini Scratch blokk aħna qed ssejjaħ dan. Iżda b'differenza Scratch fejn inti tista biss joħolqu dan u tibda tuża din, issa għandna biex tkun ftit aktar pedantic, u fil-fatt ferrovija Clang għall-użu, jew li nistennewh. Issa, bħala twarrib, għaliex dan il-ħin għandhom aħna ġew biss bl-addoċċ fuq il-fidi inkluż CS50.h, u inkluż l-istandard IO.h? Ukoll, jirriżulta, fost affarijiet oħra ftit, dak kollu li f'dawk dot h fajls, li jiġri li jkun fajls. Huma qed fajls header, biex ngħidu hekk. Huma qed għadhom miktub fil Ċ Imma dawn qed tip differenti tal-fajl. Għal issa, inti tista 'pretty ħafna tassumi li dak kollu li hu ġewwa ta 'CS50.h huwa xi one-liners bħal dan, mhux għall-funzjonijiet msejħa Stampa Isem, iżda għal Get String, Get Float, u fi ftit oħrajn. U hemm prototipi simili, wieħed liners, ġewwa ta IO.h standard għall printf, li issa hija fil stess funzjoni Stampa Isem tiegħi. Allura fi kliem ieħor, din id-darba kollu konna kemm ġie bl-addoċċ ikkupjar u pasta jinkludu dan, jinkludu li, x'inhu għaddej? Dawk huma biss tip ta 'ħjiel li Clang dwar liema funzjonijiet huma, fil-fatt, implimentata, biss x'imkien ieħor fil-fajls differenti x'imkien ieħor fuq is-sistema. Allura aħna ve implimentat isem istampar. Huwa ma jkollu dan l-effett sekondarju ta ' istampar xi ħaġa fuq l-iskrin. Iżda dan ma tkunx attwalment idejn lili xi ħaġa lura. Kif nistgħu tmur dwar implimentazzjoni ta 'programm li ma idejn lili xi ħaġa lura? Ukoll, ejja ipprova din. Let me imorru quddiem u jimplimentaw fajl imsejjaħ return.c sabiex inkunu nistgħu juru kif xi ħaġa bħall Get String, jew Get Int, huwa attwalment jirritornaw xi ħaġa lura lill-utent. Ejja imorru quddiem u jiddefinixxu bla effett prinċipali int. U, għal darb'oħra, fil-futur, aħna ser jispjegaw dak li int u dak null huwa fil-fatt jagħmlu. Iżda għal-lum, aħna ser teħodha għal mogħtija. Jien ser jimxi 'l quddiem u printf, għal esperjenza utent tajba, x hija. U mbagħad jien ser tistenna l- utent li tagħti me x ma int nikseb. U mbagħad jien ser jimxi 'l quddiem u jistampa x għall-kwadrat. Allura meta inti biss għandek tastiera, nies komunement uża l-karrotta ftit simbolu fuq it-tastiera li jirrappreżenta għall-qawwa ta ', jew l-esponent ta. Allura x kwadrat hija preżenti i. U issa jien ser tagħmel dan. I jistgħu biss do-- x'hemm x kwadrat? x kwadrata huwa x darbiet x. U aħna ma dan xi żmien ilu diġà llum. Dan ma jħossu bħal dak kollu li sar ħafna progress. Taf xiex? Ejja jwieżen xi wħud li l-idea mill-aħħar darba ta 'estrazzjoni. Ma Ikun sbieħ jekk hemm funzjoni msejħa kwadru li ma eżattament dak? Hija xorta, fl-aħħar tal- jum, ma l-istess matematika. Imma ejja astratta bogħod l-idea ta 'teħid numru wieħed immultiplikat bil ieħor, u biss tagħtiha isem, bħal kwadru dan il-valur. U, fi kliem ieħor, fil Ċ, ejja toħloq funzjoni imsejħa kwadru li ma eżattament dan. Li għaddej biex tkun tissejjaħ kwadru. Huwa ser jieħu int. U aħna ser se biss sejħa hija n, fil-kontumaċja. Iżda nistgħu sejħa hija xi ħaġa li rridu. U dak kollu li huwa għaddej biex do, litteralment, huwa ritorn ir-riżultat ta 'drabi n n. Iżda minħabba li huwa jirritornaw xi ħaġa, li hija l-keyword fil-vjola konna qatt qabel, I, fuq il-linja 11, ma tistax biss jgħidu null dan iż-żmien. Null, fl-eżempju aħna biss raw pjuttost tal-isem istampar, ifisser biss, jagħmel xi ħaġa. Imma ma idejn lili xi ħaġa lura. F'dan il-każ, I do jridu biex jirritorna n ħinijiet n- jew kwalunkwe jiġifieri, dak in-numru. So I ma nistax ngħid, ħej, kompjuter, I-ritorn xejn, bla effett. Huwa ser jirritorna, min-natura, l int. U hekk dan huwa dak kollu li għaddej hawn. L-input li kwadru se tkun int. U sabiex inkunu jistgħu jużawh, għandu għandhom isem, N. Huwa ser output l-int li ma jkunx jeħtieġ isem. Nistgħu tħalli f'idejn prinċipali, jew min ikun jużaw lili biex tiftakar dan il-valur, jekk irridu trid ma varjabbli tagħha stess. U, għal darb'oħra, l-uniku ġdid Ittajpja kelma prinċipali hawnhekk hija Ritorn. U jien biss tagħmel xi matematika. Jekk jien verament riedu jkunu bla bżonn, Nista 'ngħid prodott int gets n ħinijiet n. U allura nista 'ngħid, prodott ritorn. Iżda, għal darb'oħra, għall-punt tiegħi aktar kmieni ta ' dan il design-- tajba biss mhux qed simili, għaliex jintroduċu isem, simbolu, prodott simili, biss biex immedjatament tibagħtu lura? Huwa aktar nadifa ftit, ftit aktar stretti, hekk biex jitkellmu, just biex jgħidu n darbiet ritorn n, teħles minn din il-linja għal kollox. U huwa biss inqas kodiċi li jaqra, inqas opportunità għall-iżbalji. U ejja ara jekk dan attwalment issa xogħlijiet. Issa, jien ser imorru quddiem u jagħmel ritorn. UH-oh, dikjarazzjoni impliċitu tal-funzjoni. I magħmula dan l-iżball qabel, no big deal. Let me biss tip, jew jenfasizzaw u kopja, il eżatt istess prototip funzjoni, jew firma, tal-funzjoni up here. Jew I tista 'timxi l-funzjoni sħiħa. Imma dak li ftit għażżien. Allura aħna mhux se tagħmel dan. Issa, let me tagħmel ritorn għal darb'oħra, dot ritorn mmejla. x hija 2. x kwadrat hija 4. x hija 3. x kwadrat hija 9. U l-funzjoni jidher issa li tkun qed taħdem. Allura x'inhu l-differenza hawn? I jkollhom funzjoni li sejjaħ kwadru, f'dan il-każ, li nressaq fil input. U niġi lura output. And yet, preċedentement, jekk I miftuħa l-eżempju ieħor minn qabel, li kien talab prototype.c, Kelli isem istampar, li lura null, biex ngħidu hekk, Jew lura xejn, u sempliċiment kellhom effett sekondarju. Allura x'inhu għaddej hawn? Ukoll, jikkunsidraw il-funzjoni nikseb string għal ftit mument. Imxejna ġiet tuża l-funzjoni nikseb string fil-mod li ġej. Aħna kellna funzjoni tinkiseb spag, bħall jinkludu CS50.h, jinkludu istandard IO.h, int, prinċipali, nulla. U mbagħad kull darba stajt imsejħa sekwenza nikseb s'issa, Stajt qal xi ħaġa simili, spag i gets tikseb spag, għaliex nikseb string-- ejja sejħa dan sekwenza nikseb get.c-- nnifisha prospetti string li nista imbagħad użu, u jgħidu, bonjour, comma, mija i, n backslash, i. Allura dan huwa l-istess eżempju, verament, li kellna qabel. Sabiex tikseb string prospetti valur. Iżda mument ilu, spag istampar ma ritorn valur. Hija sempliċiment effett sekondarju. Allura din hija differenza fundamentali. Rajna differenti tipi ta 'funzjonijiet issa, li wħud minnhom ikunu ritornati Valuri, li wħud minnhom ma. Allura forsi huwa spag, jew int, jew float. Jew forsi huwa biss bla effett. U d-differenza hija li dawn il-funzjonijiet li tinkiseb data u r-ritorn ta 'valur huma attwalment jinġiebu xi ħaġa lura lill-tabella, biex ngħidu hekk. Mela ejja imorru quddiem u tħares lejn sett finali wieħed ta eżempji li jagħti sens, issa, tal kif nistgħu, tabilħaqq, astratta aħjar, u aħjar, u aħjar, jew aktar, u aktar, u aktar, sabiex jiktbu, finalment, il-kodiċi aħjar. Ejja jimxi 'l quddiem, u fl-ispirtu tal scratch, jagħmel dan li ġej. Let me imorru quddiem u jinkludu CS50.h u standard IO.h. Let me imorru quddiem u jagħti lili nnifsi int, prinċipali, nulla. U let me jimxi 'l quddiem, sejħa dan cough.c. U let me imorru quddiem u biss bħal scratch, jistampa sogħla / n. U nixtieq li tagħmel dan tliet darbiet. Hekk jien, naturalment, biss jmorru li kopja u paste tliet darbiet. Jien issa ser jagħmlu sogħla sogħla mmejla dot. Ejja tagħti lili nnifsi ftit spazju aktar hawn, Ikteb, sogħla, sogħla, sogħla. Hemm, ovvjament, diġà opportunità għal titjib. Stajt kkupjati u pasted ftit drabi llum. Iżda dan kien biss so I ma għandek tip kif ħafna karattri. I għadhom inbidlet dak dawk il-linji ta 'kodiċi huma. Dawn it-tliet linji huma identiċi, li jħoss għażżien u fil-fatt jiġifieri, u probabbilment ma jkunx l-approċċ dritt. Allura ma 'dak l-ingredjent nistgħu jtejbu dan il-kodiċi? Aħna ma jkollhom kopja u kodiċi paste. U, fil-fatt, kwalunkwe ħin tħoss yourself ikkupjar u pasta, u lanqas jinbidlu kodiċi, odds huma hemm mod aħjar. U, fil-fatt, hemm. Let me imorru quddiem u jagħmlu għall loop, minkejja li l-sintassi jista 'ma jkunx jiġu naturali s'issa. Agħmel dan tliet darbiet, sempliċiment billi għamlet l-following-- u I jiġri li tkun taf dan mill-prattika. Iżda għandna numru ta 'eżempji issa. U tkun taf tara fuq l-internet aktar referenzi għadhom. Dan huwa l-sintassi fuq il-linja 6, li ferm simili Scratch dik jirrepeti blokk, irrepeti t-tliet darbiet li ġejjin. Huwa maġika ftit għal issa. Iżda dan se tikseb aktar, u aktar familjari. U li għaddej biex jirrepetu Linja tmien tliet darbiet, b'tali mod li jekk jien terġa 'tiġbor make sogħla, dot mmejla sogħla, sogħla, sogħla, sogħla. Għadu jaħdem bl-istess mod. Allura li kollox multa u tajba. Imma dak li mhux estratt ħafna. Huwa perfettament korretta. Imma jħoss simili hemmhekk jista 'jkun opportunità, kif fid-dinja ta ' Bidu nett, it-tip ta 'start li żżid xi semantika hawn hekk li I do mhux biss ikollhom xi wħud għall loop, u funzjoni li tgħid sogħla, jew ma sogħla. Taf xiex? Let me jippruvaw li jkun ftit cooler minn dan, u fil-fatt jiktbu funzjoni li għandha xi effetti sekondarji, sejħa hija sogħla. U li tieħu l-ebda input, u prospetti ebda valur bħala output. Imma inti taf dak li ma? Hija ma this-- printf, kwotazzjoni unquote, sogħla. U issa hawn, jien ser li jimxi 'l quddiem u għal int, i gets żero, i anqas minn 3, i plus plus. Jien ser ma tagħmel printf, li hija forsi implimentazzjoni f'livell baxx dettall. I do not care kif sogħla. I biss jridu jużaw l-funzjoni sogħla. U jien biss ser sejħa sogħla. Issa, avviż-dikotomija. Meta inti sejħa funzjoni, jekk inti ma jridu jagħtuh inputs, totalment multa. Just do paren miftuħa, qrib paren, u qed isir. Meta inti tiddefinixxi funzjoni, jew tiddikjara prototip funzjoni tal- jekk inti taf minn qabel mhuwiex ser tieħu ebda argument, jgħidu null f'dawk parentesi hemmhekk. U li jagħmel ċert li inti mhux se aċċidentalment użu ħażin dan. Let me imorru quddiem u jagħmlu sogħla. U, naturalment, stajt għamel żball. Dammit, hemm dik Dikjarazzjoni impliċitu. Imma li l-multa. Huwa jiffissaw faċli. I biss bżonn l-prototip ogħla sa fil-fajl tiegħi minn I am attwalment jużawha. Allura issa let me jagħmlu sogħla darb'oħra, sbieħ. Issa, hija taħdem. Jagħmlu sogħla, sogħla, sogħla, sogħla. Allura inti tista 'taħseb li aħna qed verament ftit aktar minn inġinerija din il-problema. U, tabilħaqq, aħna. Din mhix tajba kandidat ta 'programm fil-mument ta ' refactoring, u tagħmel x'hemm imsejħa dekompożizzjoni ġerarkika, fejn tieħu xi kodiċi, u mbagħad inti xorta ta 'fattur affarijiet out, hekk kif tattribwixxi aktar semantika għalihom, u użu mill-ġdid tul finalment itwal. Imma hija blokk bini lejn programmi aktar sofistikati li aħna se tibda miktub qabel twil li jippermetti li jkollhom l-vokabularju li biex jikteb il-kodiċi aħjar. U, tabilħaqq, ejja ara jekk irridu ma jistax jiġġeneralizza din ulterjuri. Jidher lame ftit li jien, prinċipali, bżonn ninkwetaw dwar dan darn għall loop, u ssejjaħ sogħla u għal darb'oħra. Għaliex ma tistax I biss tell sogħla, jekk jogħġbok sogħla tliet darbiet? Fi kliem ieħor, għaliex ma tistax I biss jagħtu kontribut għall sogħla u jagħmlu dan? Għaliex ma tistax I biss jgħidu, fil sogħla prinċipali tlett darbiet. U issa, dan huwa tip ta 'maġika. Huwa iterattiv ħafna hawn. U huwa, tabilħaqq, pass tarbija. Iżda biss l-abbiltà li jgħidu dwar linja tmienja, sogħla tliet darbiet, huwa biss tant aktar leġġibbli. U, flimkien, jien ma għandekx tkun taf jew kura kif sogħla hija implimentata. U, tabilħaqq, aktar tard fil- tul u għal proġetti finali, jekk inti jindirizzaw proġett ma classmate jew tnejn klassi, inti ser tirrealizza li int ser għandek, jew jixtiequ li, jqassam ix-xogħol. U int tmur jridu jiddeċiedu -quddiem, li għaddej biex jagħmlu dak, u liema biċċiet? U ma kienx ikun sbieħ jekk inti, per eżempju, jittieħed inkarigu ta 'kitba prinċipali, magħmul. U roommate tiegħek, jew tiegħek imsieħba iktar ġenerali, jieħu ħsieb tal-implimentazzjoni sogħla. U din id-diviżjoni, dawn ħitan ta 'estrazzjoni, jew saffi ta 'estrazzjoni jekk inti ser, huma super qawwija, għaliex speċjalment għall akbar, aktar programmi u s-sistemi kumplessi, din tippermetti lin-nies multipli li jibnu affarijiet flimkien, u finalment stitch ħidma tagħhom flimkien b'dan il-mod. Imma, naturalment, aħna jeħtieġ li issa jiffissaw sogħla. Għandna bżonn li tgħid sogħla li, ħej, inti taf liema? Inti ser jeħtieġ li jieħdu input-- hekk mhux null, iżda int u issa. Ejja imorru quddiem u jitqiegħed fis sogħla l-int. i gets żero. i huwa inqas minn kemm drabi. I said tlieta qabel. Iżda li mhux dak li nixtieq. Irrid sogħla li tiġi ġeneralizzata għall jappoġġa kull numru ta 'iterazzjonijiet. Allura, fil-fatt, huwa n li nixtieq, ikun x'ikun l-utent jgħidlekx me. Issa, I tista 'tmur quddiem u jgħidu sogħla istampar. U l-ebda kwistjoni liema numru -utent jgħaddi fi, I se jtenni li ħafna drabi. Għalhekk fl-aħħar tal-ġurnata, programm huwa identiku. Iżda avviż dan kollu Jittieħed jista 'saħansitra jkun fil-fajl ieħor. Tabilħaqq, I do not know fil- mument kif printf tiġi implimentata. I do not know fil-mument kif tikseb spag, jew jiksbu int, jew tikseb float jiġu implimentati. U jien ma jridux tarahom fuq l-iskrin tiegħi. Kif inhi, jien jibdew jiffukaw fuq programm tiegħi, ma dawk il-funzjonijiet. U għalhekk, fil-fatt, hekk kif inti tibda factoring kodiċi bħal dan out, nistgħu anki jiċċaqlaq sogħla għall-fajl separat? Xi ħadd ieħor jista 'jimplimenta dan. U inti u l-programm tiegħek issir l- sbieħ ħafna, u ħafna tinqara, forsi, verament erba Linja programm hemm dritt. Mela ejja imorru quddiem issa u tagħmel il-bidla waħda aktar. Avviż li prototip tiegħi għandha tinbidel top up. So let me jiffissaw dak hekk Jien ma jsibux għajjat ​​fil. Jagħmlu sogħla, let me run sogħla darba aktar, għadhom jagħmlu l-istess ħaġa. Imma issa, avviż għandna ingredjent għall-verżjoni finali wieħed. Taf xiex? Ma rridx li sogħla ftit, neċessarjament. Irrid li jkollhom xi ħaġa aktar ġenerali. Allura inti taf liema? Irrid li tagħmel dan. Irrid li jkollhom, ħafna bħall Scratch ma, blokk jgħidu, iżda mhux biss ngħid xi ħaġa xi numru ta 'drabi. Irrid ngħid string speċifika ħafna. U, għalhekk, jien ma tixtieq li biss jgħidu sogħla. Irrid ngħid xi jkun sekwenza huwa mgħoddi fil. Allura avviż, stajt ġeneralizzata dan sabiex li issa jiġifieri iħoss bħal isem tajjeb għal dan, bħal Scratch, jieħu żewġ argumenti, kuntrarjament Scratch. Wieħed huwa string. Wieħed huwa int. UI tista 'jixgħelhom. I biss tip ta bħall-idea ta ' jiġifieri l-sekwenza ewwel, u mbagħad kif ħafna drabi aktar tard. Null ifisser li xorta ma ritorn xejn. Dawn huma biss sekondarji viżwali Effetti, bħal ma [? Ġordan,] effett sekondarju verbali tat yelling. Hija xorta ma żminijiet xi ħaġa n- 0 sa, iżda mhux ugwali għal n. Dan ifisser ħinijiet n totali. U mbagħad biss jistampa kwalunkwe li sekwenza hu. Allura stajt verament ġeneralizzati din il-linja ta 'kodiċi. Allura issa, kif nista jimplimentaw il-funzjoni sogħla? I tista 'tagħmel sogħla null. U jien xorta jistgħu jieħdu fil-mod kif ħafna drabi inti tixtieq li sogħla. Imma inti taf liema? I jistgħu issa Punt ngħid. I tista 'sejħa ngħid ma' l- sogħla kelma, li jgħaddi n. U jekk irrid biex jimplimentaw ukoll, biss għall-gost, funzjoni tgħatas, I jistgħu tgħatas xi numru ta 'drabi. U jien tista 'żżomm użu mill-ġdid n, għaliex avviż li m f'dan il-kuntest jew l-iskop jeżisti biss fi ħdan din il-funzjoni. U n f'dan il-kuntest biss teżisti fi ħdan din il-funzjoni hawn. Allura aħna ser terga 'lura għal dawn il-kwistjonijiet ta 'ambitu. U hawn, jien biss se ngħid, achoo, u mbagħad n ħinijiet, semi-colon. U issa, I biss bżonn li jissellef dawn funzjoni firem up here. Allura sogħla hija korretta. tgħatas null hija korretta issa. U għadni biss bżonn jgħidu. Hekk jien se ngħid, ngħidu aħna spag i, n int, semi-colon. Allura stajt żżejjed il Heck minn dan il-programm. U dan ma neċessarjament ifisser li dan huwa x'għandek tagħmel meta tikteb anke l-aktar sempliċi ta 'programmi. Ħu xi ħaġa li ovvjament verament sempliċi, tassew qasir, u ri-timplimentaha jużaw kodiċi mod wisq. Imma inti taf attwalment ara, b'mod ħin tħares lura fuq dawn l-eżempji, u jirrealizzaw, oh, dawk huma l-passi ħadna fil-fatt jiġġeneralizzaw, għall-fattur xi ħaġa barra, sakemm fl-aħħar tal-ġurnata Kodiċi tiegħi huwa attwalment pretty raġonevoli. Għaliex jekk irrid li sogħla tlieta ħinijiet allura tgħatas tliet darbiet, Jien sempliċiment ser terġa 'ssir din l- programm jagħmel sogħla, u run sogħla. U jien tliet sogħla u tliet għatis. U għalhekk dan huwa bażiku paradigma, jekk inti se, għal kemm nistgħu tmur dwar attwalment implimentazzjoni ta 'programm. Imma ejja biss tara issa dak li huwa aħna kont qed tagħmel kollha ta 'dan iż-żmien, u dak li xi wħud mill-biċċiet finali huma wara dan il-kmand sempliċi. Fl-aħħar tal-ġurnata, konna Kien jużaw Clang bħala kompilatur tagħna. Imxejna ġiet miktub sors kodiċi, dan jinbidel permezz Clang fis kodiċi tal-magna. U aħna kont qed tuża Make biss biex jiffaċilitaw keystrokes tagħna tant li aħna ma jkollhomx tiftakar dawk incantations ta Clang innifsu. Imma dak li hu Għamla fatt jagħmlu? U, min-naħa tiegħu, dak li huwa Clang fil-fatt jagħmlu? Jirriżulta, għalkemm għandna simplifikati diskussjoni tal-lum billi qal, tieħu kodiċi sors, tgħaddiha bħala input għall kompilatur, li tagħtik produzzjoni ta 'magna kodiċi, jirriżulta Hemm passi differenti ftit hemm ġewwa. U l-kumpilazzjoni jiġri li jkun l-umbrella tul għall-mazz sħiħ ta 'passi. Imma ejja biss tease dan out verament malajr. Jirriżulta li aħna kont qed tagħmel aktar affarijiet kull darba I tmexxi programm, jew kull darba I jikkompilaw programm llum. Allura preprocessing jirreferi għall this-- xejn fi programm Ċ, kif Ser naraw mill-ġdid u għal darb'oħra, li jibda ma 'dan is-simbolu hash, jew is-simbolu hashtag hawn, il-mezzi huwa direttiva Preprocessor. Dan ifisser, f'dan il-każ, ħej kompjuter, jagħmel xi ħaġa ma 'dan il-fajl qabel ma attwalment jikkompilaw kodiċi tiegħi stess. F'dan il-każ, hash jinkludu jiġifieri, essenzjalment, mod Ċ ta 'tgħid, ħej kompjuter, mur jiksbu l-kontenut ta CS50.h u paste lilhom hawnhekk. Ħej kompjuter, mur jiksbu l- kontenut ta 'standard IO.h, kull meta fuq l- hard drive, paste hawn. Allura dawk l-affarijiet jiġri ewwel waqt preprocessing. U Clang ma kollha ta 'dan il għalina. U tagħmlu hekk darn malajr, inti ma anki ara l-erba 'affarijiet distinti jiġri. Imma dak li l-ewwel pass bħal dan. X'inhu dak li attwalment jiġri issa? Ukoll, l-uffiċjal li jmiss pass qed tiġbor. U jirriżulta li kumpilazzjoni programm teknikament ifisser li jmorru minn kodiċi tas-sors, l-għalf konna ġie miktub illum, għal xi ħaġa imsejħa kodiċi assemblaġġ, xi ħaġa li jistenna ftit differenti. U, fil-fatt, nistgħu naraw dan malajr reali. Let me attwalment tmur fis IDE tiegħi. Let me imorru quddiem u hello.c miftuħ, li hija l-ewwel programm magħha għandna beda llum. U let me imorru quddiem u run Clang ta ' ftit differenti, Clang-i, hello.c, li huwa attwalment għaddejjin biex agħtini ieħor hello.s fajl. U aħna se probabbilment qatt jerġgħu jaraw lil dan it-tip ta 'kodiċi. Jekk inti tieħu għal livell aktar baxx klassi sistemi bħal CS61, inti se tara ħafna aktar ta 'dan it-tip ta' kodiċi. Iżda din hija lingwa assemblaġġ. Dan huwa x86 lingwa assemblaġġ li l-CPU li huwa sottostanti CS50 IDE attwalment jifhem. U cryptic kif ma ħarsa, huwa xi ħaġa il-kompjuter jifhem pretty ukoll. Q sub, dan huwa naqqas. Hemm movimenti. Hemm sejħa ta 'funzjonijiet hawn, x oring, moviment, add, pop, ritorn. Allura hemm xi ħafna istruzzjonijiet ta 'livell baxx li CPUs jifhmu li I allużjoni għall qabel. Dan huwa dak li Intel Ġewwa. Hemm mudelli ta ' żero u dawk li Mappa li dawn arcanely miktuba, iżda kemmxejn sew jismu, istruzzjonijiet, biex ngħidu hekk. Dan huwa dak li jiġri meta inti jikkompilaw kodiċi tiegħek. Ikollok assemblaġġ lingwa barra minnu, li tfisser it-tielet pass huwa li jimmuntaw dan il-kodiċi assemblaġġ fi, finalment, magna żero code-- u dawk mhux il test li aħna biss raw mument ilu. Allura qabel l-ipproċessar ma dik ssib u tissostitwixxi, u affarijiet oħra ftit. Kompilazzjoni jieħu sors tiegħek kodiċi minn Ċ, kodiċi sors li aħna kiteb, għall-assemblaġġ kodiċi li aħna biss glanced fuq. Armar jieħu dik assemblea kodiċi li zeroes u dawk li l-CPU verament se jifhmu fl-aħħar tal-ġurnata. U tgħaqqad huwa l-aħħar pass li jiġri għall us-- mill-ġdid, tant mgħaġġel aħna lanqas biss notice-- li tgħid, ħej kompjuter, jieħdu l l-żerijiet u dawk li rriżultat mill-kompilazzjoni kodiċi David, u l-funzjoni ewlenija tiegħu f'dan il-każ. U ħej kompjuter, mur jiksbu kollha ta 'l-żerijiet u dawk li l-persunal CS50 kiteb ġewwa l-librerija CS50. Ħallat dawk ma David. U ħej kompjuter, mur jiksbu l-żerijiet u dawk li xi ħadd ieħor kiteb snin ilu għal printf. U żid dawk fil- ħaġa sħiħa, b'tali mod li konna ltqajna żero tiegħi u dawk, l- żero u dawk tal-persunal CS50 s, l-żerijiet printf u dawk, u kull ħaġa oħra aħna qed jużaw. Huma kollha jiksbu kombinati flimkien f'waħda programm imsejjaħ, f'dan il-każ, bonjour. Allura issa, aħna se biss jużaw il-kompilazzjoni kelma. U aħna se nieħdu għall mogħtija li meta ngħidu, jikkompilaw program tiegħek, dan ifisser, ħej jagħmlu l--ipproċessar minn qabel, assemblaġġ, u jgħaqqdu. Iżda hemm attwalment xi Jittieħed mmerraq għaddej hemmhekk taħt il-barnuża. U speċjalment jekk int nikseb kurjużi xi żmien, inti tista 'tibda poking madwar f'dan il-livell aktar baxx. Iżda għal issa, jirrealizzaw li fost il takeaways għal-lum huma sempliċement l- bidu ta 'proċess, ta 'jkollna komda mal xi ħaġa bħal dinja bonjour. Tabilħaqq, ħafna mill dak li għamilna llum ċertament mhux se sink fil super fast. U dan se jieħu xi ħin, u xi prattika. U odds huma, inti se sort ta tixtieq li hit tastiera tiegħek jew Yell lejn l-iskrin. U kollha ta 'dan huwa OK. Għalkemm, forsi ipprova ma tagħmel dan fil-librerija tant. U fl-aħħarnett, inti ser ikunu kapaċi għalkemm, biex tibda jaraw mudelli, kemm fil-kodiċi tajba li inti stajt bil-miktub u fl-iżbalji li inti ħadna. U ħafna bħall-proċess ta ' isir TF jew CA huwa simili, inti ser tibda biex tikseb aħjar u aħjar fil jara dawn mudelli, u biss jissolvew tiegħek problemi stess finalment. Fil-frattemp, se jkun hemm ħafna minna li jsellef lilek appoġġ, u ikollok permezz ta 'dan. U fil-write-ups għall-problemi kollha inti se tkun iggwidata permezz kollha tal-kmandi li jien ċertament jafu mill- ħafna ta 'prattika minn issa, iżda jista 'jkollu tittajjar fuq ras wieħed għal issa. U li l-totalment multa. Iżda, fl-aħħar, int ser biex tibda tara mudelli jitfaċċaw. U ladarba ikollok passat kollha ta 'l- Dettalji stupid, bħall-parentesi, u ċingi kaboċċi, u semi-colons, u l-għalf, franchement, li mhuwiex f'kull intellettwalment interessanti. U mhuwiex l-għan ta tieħu xi klassi ta 'introduzzjoni. Hu l-ideat li ser materja. Hu l-linji, u l- kondizzjonijiet, u l-funzjonijiet, u aktar qawwi l-estrazzjoni, u l-fatturar tal-kodiċi, u d-disinn tajba, u l-ġid stil, u finalment il-korrettezza tal-kodiċi tiegħek, dan huwa finalment ser kwistjoni l-aktar. Allura ġimgħa d-dieħla, aħna se tieħu dawn ideat li aħna ewwel raw fil Scratch u issa tradotti lil C. U aħna ser tibda li tintroduċi l-ewwel tal- dominji fid-dinja reali kors ta. Aħna ser tiffoka fuq id-dinja ta 'sigurtà, u b'mod aktar speċifiku kriptografija, l-arti tal scrambling informazzjoni. U fost l-ewwel problemi inti stess se tingħata biex jiktbu lil hinn playing ma 'wħud mill-sintassi u jsolvu xi loġika problemi, finalment qabel twil, huwa li attwalment ġirja, jew jikkripta, u finalment decrypt informazzjoni. U dak kollu li ghamilt illum, se pjuttost baxx livell, huwa biss se jippermetti nieħdu waħda, u wieħed, u pass wieħed aktar il fuq lejn miktub l-kodiċi l-aktar interessanti s'issa. Allura aktar fuq dik il-ġimgħa d-dieħla. [Daqq video] Liema jista inti tgħidli dwar l-aħħar darba li tkun rat lilu? Liema jista I say, tassew? I mean, kien bħal kull prodott ieħor rehearsal qabel il-produzzjoni, ħlief kien hemm xi ħaġa li qal fl-aħħar nett li mwaħħla miegħi. -Dan Kien CS50. -Li L kulħadd qatgħa, xogħol tajba fuq rehearsal. ikla -Li s? -Yeah, Int u jien tista ' grab sandwich fi ftit. Let me biss jinfurmaw mal David verament malajr. David? David? [END Daqq]