[Daqq ta mużika] DAVID J. Malan: Kull dritt. Dan huwa CS50, u dan huwa l-bidu ta 'ġimgħatejn. Mela ejjew tibda llum ma bug. A bug, naturalment, huwa żball fi programm, u int ser tingħata ħafna familjari ma 'dan il-kunċett jekk inti stajt qatt programmati qabel. pset0 u issa pset1. Imma ejja jikkunsidraw xi ħaġa sempliċi ftit fl-ewwel. Dan il-programm hawn li I threw flimkien bil-quddiem, u I jsostnu li dan għandu jistampa 10 istilel fuq il-iskrin bl-użu printf, imma hija apparentement Buggy b'xi mod. Minħabba li l-ispeċifikazzjoni li għandu jistampa istilel 10, iżda ma apparentement, liema kieku inti titlob hija l-bug? Yeah? Allura huwa off minn żball wieħed, u liema taħseb jfisser minn dak? OK. Eċċellenti. Allura aħna ve speċifikata bidu valur ta 'żero għall i, u konna speċifikati valur n ta '10, imma aħna ħadthom użati inqas minn jew ugwali għal. U r-raġuni li dan huwa żewġ karattri u mhux biss simbolu wieħed, bħal fi ktieb matematika, hija li inti ma għandekx mezz li jesprimu l- karattru ekwivalenti wieħed. Allura dan ifisser inqas minn, iżda jekk tibda għadd għal żero, imma inti jgħoddu it-triq kollha up permezz ta 'u ugwali għal 10, int naturalment se għadd 11 affarijiet b'kollox. U hekk int ser jistampaw 11 istilel. Allura dak li jista 'jkun jiffissaw għal dan? Yeah? Hekk biss taġġusta l-inqas minn jew daqs jkun biss inqas minn, u hemm, I jsostnu, forsi soluzzjoni oħra, wisq. Liema jista inkella inti tagħmel? Yeah? Allura tibda daqs li 1, u jħallu l-inqas minn jew ugwali għal. U franchement I ser jargumenta li, għal bniedem tipiku, dan huwa probabbilment aktar sempliċi. Ibda għadd f'1 u għadd up permezz 10. Essenzjalment tagħmel dak li jfisser. Iżda r-realtà hija fil- programmazzjoni, kif aħna stajt tidher, xjenzjati tal-kompjuter u programmaturi ġeneralment ma jibdew jingħaddu fuq iż-żero. U hekk li l-multa ladarba inti jidraw lilha. Kundizzjoni tiegħek se ġeneralment jkun xi ħaġa bħal inqas minn. Allura sempliċiment loġiku żball li nistgħu issa tiffissa u finalment recompile dan u tikseb biss 10. Ukoll kif dwar dan bug hawn? Hawnhekk, għal darb'oħra, I jsostnu li għandi għan ta 'l-istampar 10 stars-- waħda għal kull linja f'dan il-ħin, iżda ma. Qabel ma aħna tipproponi liema l-jiffissaw huwa, dak ma dan jistampaw viżwalment jekk kienu I biex jikkompilaw u run dan il-programm taħseb? Yeah? Star. Allura l-istilel fuq il- istess linja huwa dak I smajt, u allura l-karattru linja ġdida. Mela ejja jippruvaw dan. Allura make-Buggy 1, jidħlu, u nara l-kmand clang li tkellimna dwar aħħar darba. ./buggy-1, u tabilħaqq nara kollha istilel 10 fuq l-istess linja anki jekk I pretensjoni fl-ispeċifikazzjoni tiegħi biss kumment atop il-kodiċi li I maħsuba biex tagħmel kull wieħed linja. Iżda dan jistenna d-dritt. Issa linja 15 jidher qisu jien istampar stilla, u mbagħad linja 16 jidher qisu jien istampar karattru linja ġdida, u dawn qed kemm inċiża hekk Jien ġewwa tal-loop b'mod ċar. Allura mhux għandi tkun qiegħda tagħmel stilla, l-ġdida linja, star, linja ġdida, star, linja ġdida? Iva? Yeah, b'differenza lingwa bħal Python, jekk int familjari, indentazzjoni ma kwistjoni għall-kompjuter. Hija biss kwistjonijiet lill-bniedem. Allura linji billi here stajt ivvintat 15 u 16-- li jistenna sbieħ, iżda l-kompjuter ma care. Il-kompjuter cares dwar attwalment jkollhom braces kaboċċi madwar dawn il-linji ta 'kodiċi. Allura li huwa clear-- eżatt bħal fil Scratch-- li dawn iż-żewġ linji ta 'kodiċi għandhom jiġu esegwiti. Bħal wieħed minn dawk puzzle Scratch isfar biċċiet ġdid u għal darb'oħra u għal darb'oħra. Allura issa mmexxija mill-ġdid jekk I dan program-- ./buggy-2-- Hm. I jkollhom żball issa. What did I tinsa tagħmel? Yeah, so I ma josservawha. Allura make-Buggy 2. Nru file tali minħabba I ma attwalment jikkompilaw-tieni verżjoni. Allura issa interessanti mhux iddikjarat variable-- mhux 2. Aħna qed tagħmel 1. Jagħmlu Buggy-1---./buggy 1-- u issa kull wieħed minnhom huwa fuq l-istess linja. Issa hemm eċċezzjoni għal dan suppost pretensjoni ta 'minjiera li għandek bżonn dawn ċingi kaboċċi. Meta huwa attwalment OK-- jekk inti stajt innotati fis-sezzjoni jew textbooks-- li jħalli barra l-braces kaboċċi? Yeah? Eżattament. Meta jkun hemm biss wieħed linja tal-kodiċi li inti jridu jkunu assoċjati mal- loop bħal fl-ewwel eżempju tagħna. Huwa perfettament leġittimu li jħalli barra l-braces kaboċċi biss bħala tip ta 'konvenjenza mill-kompilatur lilek. Yeah? Mistoqsija tajba. Ikun jitqies bħala żball stil? Nixtiequ promote-- bħal fil CS50 Gwida tal-Istil, il-URL li għalih huwa pset1-- li dejjem tuża l-braces kaboċċi. Ċertament jekk int ġodda għall-ipprogrammar. Ir-realtà hija aħna mhux qed ser jipprojbixxu lilek milli jagħmlu dawn latrini. Imma jekk int biss jkollna fil-swing ta 'affarijiet, assolutament biss dejjem jużaw l-kaboċċi ċingi sakemm ikollok l-hang minnha. Mistoqsija tajba. Kull dritt. Allura li mbagħad kienet bug. Mill-inqas xi ħaġa pjuttost sempliċi. And yet inti tista 'taħseb dan huwa pjuttost rudimentali, id-dritt? Dan huwa tip ta 'l-ewwel ġimgħa tħares lejn il-lingwa bħal, ara bugs tiegħek hemmhekk. Iżda r-realtà dawn huma attwalment rappreżentant ta 'xi problemi pretty biża li jistgħu jinqalgħu fid-dinja reali. Allura xi wħud minnkom tista 'recall jekk inti ssegwi aħbarijiet tech, jew forsi anke maqbuda riħ ta 'dan fi Frar ta 'din is-sena passat li Apple kellha magħmula daqsxejn ta 'żball fiż-żewġ IOS, is-sistema operattiva fuq mowbajls tagħhom, u wkoll Mac OS, is-sistema operattiva fuq desktops tagħhom u laptops. U inti raw dawn aħbarijiet bħal dan. U wara dan, Apple wiegħed li jiffissaw dan bug, u malajr ħafna ma tiffissa lilha fil IOS, iżda mbagħad finalment iffissat fil Mac OS kif ukoll. Issa ebda waħda minn dawn aħbarijiet waħdu verament jiżvelaw x'inhi l-problema sottostanti kienet, iżda l-bug kien finalment imnaqqas għal bug fil SSL, saff sockets siguri. U l-istorja twila fil-qosor, dan huwa l-software li browsers tagħna u oħrajn softwer użat biex jagħmlu dak? Jekk I qal li SSL huwa involuti, kull meta inti żur URL li jibda bil HTTPS, X'inhu allura jista SSL jkunu relatati mal? Encryption. Allura aħna ser nitkellmu dwar dan fil-jiem li ġejjin. Encryption, l-arti tal- scrambling informazzjoni. Iżda l-istorja twila fil-qosor, Apple f'xi ilu kienet għamlet żball fl-implimentazzjoni tagħhom tal SSL, l- software li finalment timplimenta URLs bħal HTTPS jew max Konnessjonijiet hemm wisq. Ir-riżultat ta 'liema huwa li tiegħek konnessjonijiet jistgħu potenzjalment jiġu interċettati. U l-konnessjonijiet tiegħek kienu mhux neċessarjament encrypted jekk kellek xi Guy ħażina fl bejn inti u l-website destinazzjoni li kien jaf kif tieħu vantaġġ ta 'dan. Issa Apple finalment stazzjonati a jiffissaw għal dan finalment, u d-deskrizzjoni tal jiffissaw tagħhom kienet din. Trasport Secure naqas milli jivvalidaw l-awtentiċità tal-konnessjoni. Il-kwistjoni ġiet indirizzata mill- restawr nieqsa passi validazzjoni. Allura dan huwa spjegazzjoni immewġin ħafna idejn għal sempliċiment tgħid li aħna invitat up. Hemm litteralment wieħed linja ta 'kodiċi li kien Buggy fl-implimentazzjoni tagħhom tal-SSL, u jekk inti tmur online u tfittxija għal dan inti tista 'attwalment issib il-kodiċi tas-sors oriġinali. Per eżempju, dan huwa maqtul screen ta biss porzjon ta 'fajl pjuttost kbir, iżda dan huwa funzjoni apparentement imsejjaħ SSL jivverifika server sinjal iskambju ċavetta. U li tieħu mazz ta ' argumenti u inputs. U aħna mhux qed tmur biex tiffoka wisq fuq il-minutia hemmhekk, imma jekk inti tiffoka fuq il-kodiċi ġewwa ta 'dak topmost function-- ejja zoom fl fuq dak. Inti tista 'diġà suspett dak l-iżball jista jkun saħansitra jekk ma jkollok ebda idea finalment dak li qed tfittex fuq. Hemm tip ta 'anomalija hawnhekk, li huwa dak? Yeah, I ma verament simili il-ħarsa ta 'żewġ goto jonqos. Franchement, I ma verament jafu liema goto jonqsu mezzi, iżda li tnejn minnhom lura lura. Li biss tip ta 'rubs me intellettwalment il-mod żbaljat, u tabilħaqq jekk aħna zoom fl fuq biss dawk il-linji, dan huwa C. Allura ħafna ta 'kodiċi Apple hija nnifisha miktub fl C, u dan apparentement huwa verament equivalent-- mhux għal dik indentazzjoni pretty verżjoni, iżda jekk inti tirrikonoxxi l-fatt li hemm ebda ċingi kaboċċi, liema Apple verament kiteb kien kodiċi li jistenna bħal dan. So I ve żżomjati out u I biss stabbilixxa l-indentazzjoni fis-sens li jekk hemm l-ebda ċingi kaboċċi, li tieni goto jonqsu li fil isfar se tesegwixxi x'ikun. Huwa mhux assoċjat mal l-jekk il-kundizzjoni hawn fuq. Għalhekk anki darb'oħra, jekk inti ma pjuttost jifhmu dak li dan jista 'possibilment tkun qiegħda tagħmel, jafu li kull wieħed minn dawn conditions-- kull wieħed minn dawn il-linji huwa pass importanti ħafna fil-proċess ta 'verifika jekk id-data tiegħek huwa fil-fatt encrypted. Allura taqbeż is-site waħda minn dawn passi, mhux l-aħjar idea. Iżda għaliex għandna dan tieni goto jonqsu fl-isfar, u minħabba li ladarba aħna tip ta 'estetikament jġorrhom lejn ix-xellug fejn loġikament huwa fil-mument, liema jfisser dan għall-linja tal-kodiċi taħt dak it-tieni goto jonqsu kieku inti taħseb? Huwa dejjem se tkun skipped. Allura gotos huma ġeneralment frowned fuq għal raġunijiet aħna mhux se verament jmorru fi, u tabilħaqq fil CS50 għandna t-tendenza ma biex jgħallmu dan Goto dikjarazzjoni, imma int tista 'taħseb goto jonqsu fis-sens go jaqbżu ma 'xi parti oħra tal-kodiċi. Fi kliem ieħor jaqbżu fuq dan l-aħħar linja għal kollox, u għalhekk ir-riżultat ta 'din stupid żball sempliċi li kien biss riżultat ta 'xi ħadd probabbilment ikkupjar u pasta wieħed wisq ħafna drabi kienet li l-kollu sigurtà tal-IOS u Mac OS kien vulnerabbli għall-interċettazzjoni billi guys ħżiena għal żmien pjuttost twil. Sakemm Apple finalment fiss dan. Issa jekk xi wħud minnkom huma attwalment running verżjonijiet qodma ta 'IOS jew Mac OS, inti tista 'tmur gotofail.com li hija website li xi ħadd imwaqqaf biex jiddeterminaw essenzjalment programmatically jekk il-kompjuter tiegħek għadu vulnerabbli. U franchement, jekk huwa, huwa probabbilment idea tajba biex taġġorna telefon tiegħek jew Mac tiegħek f'dan il-punt. Iżda hemm, biss xhieda kemm apprezzament ta 'dawn f'livell aktar baxx dettalji u ġust ideat sempliċi tista 'verament jissarraf deċiżjonijiet u problemi li affected-- f'dan case-- miljuni ta 'nies. Issa kelma fuq l-amministrazzjoni. Taqsima se tibda dan il-Ħadd li ġejjin. Inti ser tirċievi email mill- weekend dwar taqsima, f'liema punt il-proċess resectioning se tibda jekk inti stajt realizzati issa għandek xi kunflitti ġodda. Allura dan jiġri kull sena, u aħna se jakkomodaw fil-jiem li ġejjin. Uffiċċju hours-- do żżomm għajnejk fuq din l-iskeda hawn. Bidliet ftit din il-ġimgħa, partikolarment il-ħin tal-bidu u l-post, hekk do jikkonsulta li qabel l-intestatura għall ħinijiet tal-uffiċċju kwalunkwe mill-erba 'iljieli li jmiss. U issa kelma dwar il-valutazzjoni, partikolarment kif inti adsa fis-problema settijiet wieħed u lil hinn. Allura kull l-ispeċifikazzjoni, dawn huma ġeneralment l-assi flimkien li aħna jivvalutaw ix-xogħol tiegħek. Ambitu tirreferi għal dak estent timplimenta kodiċi tiegħek il-karatteristiċi meħtieġa bi speċifikazzjoni tagħna. Fi kliem ieħor, kemm ta ' sett biċċa ma inti gidma off. Ridt tagħmel terz ta 'dan, nofs ta 'dan, 100% ta' dan. Anki jekk mhuwiex korrett, kemm ma inti tipprova? Allura li jaqbad l-livell tal-isforz u l-ammont li inti daqsxejn off l- problemi sett problema'S. Correctness-- dan wieħed, li liema punt, huwa kodiċi tiegħek konsistenti mal tagħna ispeċifikazzjonijiet u ħielsa minn bugs. Allura taħdem b'mod korrett? Jekk aħna jagħtuh xi input, ma tagħtina l-output li nistennew? Design-- issa dan huwa l-ewwel ta ' dawk partikolarment kwalitattivi, jew dawk li jeħtieġu ġudizzju uman. U fil-fatt, dan huwa għaliex għandna persunal ta 'hekk ħafna fellows tagħlim u kors assistenti. Sa liema punt huwa tiegħek kodiċi miktub tajjeb? U għal darb'oħra dan huwa ħafna valutazzjoni kwalitattiva li se jaħdmu miegħek fuq bi-direzzjonalment fil-ġimgħat li ġejjin. Allura li meta ikollok ma biss punteġġi numeriċi, iżda wkoll punteġġi miktub, jew feedback ittajpjat, jew feedback bil-miktub fi kliem Ingliż. Dak hu li aħna ser tuża biex issuq int lejn attwalment kitba kodiċi aħjar. U fil lecture u t-taqsima, aħna ser nippruvaw għall-punt out-- spiss kemm aħna can-- dak li jagħmel programm mhux biss korretta u funzjonalment tajba, iżda wkoll mfassla tajjeb. L-aktar effiċjenti jista 'jkun, jew anke l-aktar sbieħ jista 'jkun. Li twassalna għall-istil. Style finalment, huwa sentenza estetika. Ridt tagħżel tajba ismijiet għal varjabbli tiegħek? Have you inċiża kodiċi tiegħek kif suppost? Ma ħarsa tajba, u għalhekk, huwa faċli għall-bniedem ieħor biex taqra rispettiv tiegħek ta 'korrettezza tagħha. Issa ġeneralment per-sillabu, aħna punteġġ dawn l-affarijiet fuq skala punt ħamsa. U let me martell dar il-punt li tlieta huwa tabilħaqq tajba. Malajr ħafna do folks tibda tagħmel aritmetika. Meta huma jiksbu tlieta minn hamsa fuq korrettezza għal xi pset u jaħsbu kkritikat, I se 60% li huwa essenzjalment D jew E. Li mhux il-mod aħna think ta 'dawn in-numri. A tliet huwa tabilħaqq tajba, u dak li aħna ġeneralment jistennew fil-bidu tat-terminu hija li jekk int jkollna mazz ta three's-- forsi koppja ta 'fieri, koppja ta' fours-- jew ftit twos koppja, koppja ta 'fours-- li l-post tajjeb biex tibda. U sakemm naraw trajettorja fuq matul iż-żmien, int f'post partikolarment tajba. Il-formula nużaw biex affarijiet piż huwa essenzjalment dan per-sillabu, li ifisser biss li aħna jagħtu aktar piż lill korrettezza. Għaliex dan huwa ħafna drabi korrettezza li tieħu l-ħin l-aktar. Trust me issa. Inti se find-- inqas fil pset-- wieħed li inti jonfqu 90% tal-ħin tiegħek taħdem fuq 10% tal-problema. U kollox tip ta 'xogħlijiet ħlief għal wieħed jew tnejn bugs, u dawk huma l-bugs li inti żżomm up tard bil-lejl. Dawk huma dawk li tip ta 'ħarba inti. Iżda wara irqad fuqha, jew li jattendu ħinijiet tal-uffiċċju jew tistaqsi mistoqsijiet online, huwa meta ikollok biex din il-mira ta '100%, u huwa għalhekk li għandna piż Korrettezza l-aktar. Disinn ta 'ftit inqas, u stil ftit inqas minn dik. Iżda jżomm fl-istil mind-- huwa forsi l-eħfef minn dawn li gidma off kif fis-Gwida tal-Istil. U issa, aktar serja nota dwar onestà akkademika. CS50 għandha d-distinzjoni sfortunati ta ' huma l-akbar produttur ta 'Ad Bord każijiet kważi kull sena storikament. Dan mhux minħabba l-istudenti iqarrqu fil CS50 kwalunkwe aktar minn kull klassi oħra, iżda minħabba min-natura tax-xogħol, il-fatt li huwa elettronika, il-fatt li aħna tfittex għal dan, u il-fatt aħna xjenzjati tal-kompjuter, Nista 'ngħid aħna sfortunatament tajba ħafna lejn is-sejbien dan. Allura dak li jfisser dan f'termini reali? Għalhekk, per-sillabu, filosofija tal-kors tal- verament ma jsarrafx biss fl raġonevoli. Hemm din il-linja bejn tagħmel xogħol wieħed fuq tiegħek u jkollna xi ftit ta ' għajnuna raġonevoli minn ħabib, u outright tagħmel li x-xogħol għall tiegħek ħabib, jew jibgħat lilu jew lilha kodiċi tiegħek sabiex hu jew hi tista 'sempliċement tieħu jew tissellef out dritt. U li jaqsam il-linja li aħna mfassla fil-klassi. Ara, il-sillabu finalment għal-linji li aħna tiġbed bħala raġonevoli u l-imġieba irraġonevoli, imma verament ma għalli isfel għall-essenza tax-xogħol tiegħek bżonn li jkun tiegħek stess fl-aħħar. Issa ma 'dak imsemmi, hemm heuristic. Għaliex kif inti tista imagine-- minn ħinijiet tal-uffiċċju u l-visuals u l-videos konna muri CS50 b'hekk far-- tabilħaqq maħsub li jkun bħala kollaborattiv u bħala kooperattiva u bħala soċjali kemm jista 'jkun. Kif kollaborattiv kif inhi rigoruża. Iżda ma 'dan qal, il-heuristic, kif tkun taf tara fil-sillabu, hija li meta int wara xi problema. Inti għandek xi bug fil-kodiċi tiegħek li inti ma tistax issolvi, huwa raġonevoli għalik biex juru kodiċi tiegħek lil xi ħadd ieħor. Ħabib anke fil-klassi, ħabib seduta li jmiss lilek fil-ħinijiet tal-uffiċċju, jew membru tal-persunal. Iżda huma ma jistgħux juru kodiċi tagħhom lilek. Fi kliem ieħor, l- iwieġeb għall question-- tiegħek I bżonn help-- mhix oh, hawnhekk kodiċi tiegħi. Agħti ħarsa lejn dan u dedott minnha dak li inti se. Issa, naturalment, hemm mod ċar għall-kaċċa din is-sistema li biha I ser nuruk kodiċi tiegħi qabel ma kwistjoni. You urini tiegħi kodiċi tiegħek qabel li jkollhom mistoqsija. Iżda tara l-sillabu ġdid għall- dettalji ifjen ta 'fejn din il-linja huwa. Just biex issa żebgħa l-istampa u l- jaqsmu kemm trasparenti kemm jista 'jkun fejn ninsabu fil fis-snin riċenti, dan huwa n-numru ta 'każijiet Ad Bord li CS50 kellu matul l-aħħar seba 'snin. Ma '14-il każ dan it-tnaqqis l-aktar riċenti. F'termini ta 'l-istudenti involuti, kien 20 xi studenti fard dan it-tnaqqis fil-passat. Intlaħqet quċċata ta '33 istudenti xi snin ilu. Ħafna minnhom huma sfortunatament m'għadhomx hawn fuq il-kampus. Studenti involuti bħala perċentwali tal- klassi storikament kienu jvarjaw minn 0% għal 5.3%, li huwa biss li jgħidu dan huwa kull sena sfida. U lejn dak il-għan, liema li rridu nagħmlu hu twassal wieħed li aħna dd-- biss FYI-- tqabbel fuq a ekwità lil dawk l-istudenti li Dawn li ġejjin huma l-linja kif xieraq. We do jqabblu attwali kollha sottomissjonijiet kontra-missjonijiet kollha tal-passat mill-ħafna snin li għaddew. Nafu wisq kif Google madwar u jsibu repożitorji kodiċi onlajn, fora ta 'diskussjoni online, siti tax-xogħol onlajn. Jekk student tistax issib li, nistgħu żgur jsibuha kemm aħna b'dispjaċir do. Allura dak li inti ser tara fil-sillabu għalkemm huwa din il-klawżola dispjaċir. I jista 'ċertament japprezzaw, u aħna kollha għandu persunal wara li jsir il-kors simili dan, jew dan wieħed innifsu matul iż-żmien, ċertament taf dak li huwa simili meta ħajja gets fil-mod meta jkollok xi tard bil-lejl deadline-- mhux biss f'din il-klassi, imma another-- meta int kompletament eżawriti, enfasizzat, ikollhom numru eċċessiv ta 'affarijiet oħra li jagħmlu. Inti se tagħmel f'xi punt fil- ħajja ċertament ħażina, forsi tard deċiżjoni lejl. Allura kull l-sillabu, hemm din il-klawżola, tali li jekk fi żmien 72 siegħa ta 'teħid xi deċiżjoni foqra, inti stess sa dan u jilħqu lili u wieħed mill-kapijiet tal-kors tal- u aħna se jkollhom konverżazzjoni. Aħna se jimmaniġġjaw l-affarijiet internament fit-tamiet ta 'dan li jsir aktar ta' mument tagħlim jew lezzjoni tal-ħajja, u mhux xi ħaġa ma ramifikazzjonijiet partikolarment drastiku kif inti tista 'tara fuq dawn il-mapep hawn. Allura dak tone serja ħafna. Let us nieqaf għal ftit ftit sekondi biex jiksru l-tensjoni. [Daqq ta mużika] DAVID J. Malan: Kull dritt, hekk kif kien li għal segue? Biex suġġetti primarji lum. L-ewwel waħda minnhom hija estrazzjoni. Ieħor ta 'liema se tkun l- rappreżentazzjoni ta 'data, li franchement huwa mod verament xott ta 'tgħid kif nistgħu tmur dwar soluzzjoni ta 'problemi u l-ħsieb dwar soluzzjoni ta 'problemi? Allura inti stajt tidher fl Scratch, u inti stajt dehru forsi diġà fis pset1 ma 'C li inti mhux biss tista 'tuża funzjonijiet, bħal printf, li nies oħra fil aħħar snin kiteb għalik. Tista 'wkoll tikteb funzjonijiet tiegħek stess. U anki jekk inti jista 'ma jkollhomx għamlu dan fis-C, u franchement fl pset1 inti ma verament bżonn jiktbu tiegħek funzjoni stess minħabba l-problem-- filwaqt li forsi kbar fl- ewwel glance-- tkun taf tara jistgħu finalment jiġu solvuti bi mhux kollha li ħafna linji ta 'kodiċi. Iżda ma 'dak imsemmi, f'termini tal-kitba funzjoni tiegħek stess, tirrealizza li C ma jagħtu inti din il-kapaċità. Jien se jmorru fil-kodiċi sors tal-lum, li huwa disponibbli diġa online, u jien ser jimxi 'l quddiem u miftuħa up programm imsejjaħ 0.C funzjoni, u fil-funzjoni żero Ser naraw ftit affarijiet. Fl-ewwel linji 18 permezz 23 hija l-funzjoni prinċipali tiegħi. U issa li aħna qed jibdew jaqraw kodiċi li aħna mhux qed miktub fuq il-fly, iżda minflok stajt bil-miktub bil-quddiem jew li inti fil-problema sett tista 'tirċievi jkollhom ġew miktuba bil-quddiem. A mod tajjeb biex tibda qari kodiċi xi ħadd ieħor hija tfittex l-funzjoni prinċipali. Insemmu fejn dak id-dħul punt huwa li jmexxu l-programm, u mbagħad segwi dan loġikament minn hemm. Allura dan programm apparentement prints isem tiegħek segwit minn kolon. Aħna mbagħad jużaw GetString mill-bibljoteka CS50 biex tikseb string, jew kelma jew frażi mill-utent fuq il-keyboard. U allura hemm dan Ħaġa PrintName here--. Issa PrintName mhix funzjoni li jiġi ma C. Mhuwiex fl io.h. standard Mhuwiex fl CS50.h. Huwa pjuttost fl-istess fajl. Avviż jekk I iscroll linji bit-- 25 sa 27-- huwa biss mod pretty ta 'kummentarju kodiċi tiegħek billi tuża l-istilel u slashes. Din hija multi-line jikkummentaw, u dan huwa biss Deskrizzjoni tiegħi fil-blu ta ' liema din il-funzjoni ma. Minħabba fil-linji 28 permezz 31, Stajt bil-miktub funzjoni super sempliċi isem tagħha huwa PrintName. Huwa jieħu kemm argumenti would you say? Allura wieħed argument-- għaliex hemm wieħed argument elenkat ġewwa l-parentesi. It-tip ta 'liema hija String. Liema jiġifieri PrintName huwa simili din il-kaxxa sewda jew il-funzjoni li jieħu bħala input string. U l-isem ta 'dik String konvenjenti se jkun Isem. Mhux S, mhux N, iżda isem. Allura dak li ma PrintName do? Huwa sempliċi sbieħ. Just bħala linja waħda tal-kodiċi għall l printf, imma apparentement dan prints out "Hello," hekk u hekk. Fejn l-hekk u hekk ġej mill-argument. Issa dan mhuwiex innovazzjoni enormi hawn. Really, I ħadt programm li jista ġew miktuba b'linja waħda tal-kodiċi billi dan up hawn, u nbidel għal xi ħaġa li jinvolvi xi sitt jew seba 'jew hekk linji ta 'kodiċi it-triq kollha stabbiliti hawn. Imma hija l-prattikanti ta ' prinċipju magħruf bħala estrazzjoni. Tip ta 'siġillar ġewwa ta' sistema ġdida funzjoni li għandha isem, u aħjar għadhom dak l-isem litteralment jgħid dak li tagħmel. I tfisser printf-- li mhux partikolarment deskrittiva. Jekk irrid li joħolqu biċċa puzzle, jew jekk I tixtieq toħloq funzjoni li prints isem ta 'xi ħadd, l-sbuħija ta 'kif isir dan hija li nista attwalment tagħti dik il-funzjoni isem li jiddeskrivi dak li tagħmel. Issa jieħu fir input li Stajt arbitrarju imsejħa isem, iżda li wisq huwa wonderfully deskrittiv Minflok ma jiġu aktar ftit ġeneriku bħal S. U null, għal issa, ifisser biss li din il-funzjoni ma idejn me lura xejn. Mhuwiex simili GetString li litteralment idejn me back string bħal għamilna mal-biċċiet tal-karti mal-klassi tiegħek aħħar ġimgħa, iżda hija biss għandha effett sekondarju. Hija prints xi ħaġa għall-iskrin. Għalhekk fl-aħħar tal-ġurnata, jekk I do make-funzjoni 0, ./function 0, aħna ser tara li hija tistaqsi għall-isem tiegħi. I tip David, u t-tipi out isem tiegħi. Jekk nagħmel dan mill-ġdid ma 'Rob, li għaddej biex jgħidu "Hello, Rob." Allura idea sempliċi, imma forsi estrapolati minn dan mentalment li bħala programmi tiegħek tikseb ftit aktar kumplikata, u inti tixtieq li jiktbu blokki ta ' kodiċi u sejħa li code-- jinvokaw li code-- minn xi deskrittiva isem bħal PrintName, C ma jaffordjaw us din il-kapaċità. Hawn eżempju ieħor sempliċi. Per eżempju, jekk I jiftħu fajl mil-lum imsejħa return.c, Avviż dak I ghamilt hawn. Ħafna minn din il-funzjoni ewlenija hija printf. I ewwel arbitrarjament initialize a varjabbli msejħa x biex in-numru 2. I mbagħad jistampa "x issa hija % I "tgħaddi fil-valur ta 'x. So jien biss qal dak li hu. Issa jien biss boldly titlob bil printf. I am cubing li l-valur x, u jien jagħmlu dan billi ssejjaħ il-funzjoni imsejħa tgħaddi kubu fil x bħala l-argument, u mbagħad iffrankar l-output fil-varjabbli innifsu, x. So jien clobbering-valur ta 'x. Jien sorpassata l- valur ta 'x bi kwalunkwe ir-riżultat ta 'sejħa din il-funzjoni kubu huwa. U mbagħad I biss print out xi wħud Jittieħed fluffy hawn tgħid dak li għamilt. Allura dak allura huwa kubu? Avviż x'hemm fundamentalment differenti hawn. Stajt minħabba l-funzjoni isem bħal qabel. Stajt speċifikat isem sabiex argument. Din id-darba huwa msejjaħ n minflok l-isem, imma I jistgħu sejħa hija xi ħaġa I trid. Iżda din hija differenti. Dan ħaġa fuq ix-xellug. Preċedentement kien dak keyword? Boys. Issa huwa ovvjament int. Allura x'hemm forsi l take away? Billi ifisser null tip ta ' nothingness, u li kien il-każ. PrintName lura xejn. Hija għamlet xi ħaġa, iżda hija ma idejn lili lura xi ħaġa li I tista 'tpoġġi fuq il- naħa tax-xellug ta 'sinjal ugwali bħal I ghamilt hawn fuq il-linja 22. Mela jekk jien ngħid fis on line 30, X'hemm li probabbilment jimplikaw dwar dak kubu ma għalija? Yeah? Dan jirritorna integer. Għalhekk idejn me lura, għal Pereżempju, biċċa karta li fuqha jkun miktub it-tweġiba. 2 kubiku, jew 3 kubiku, jew 4 cubed-- kwalunkwe I għadda fi, u kif għamlet I timplimenta din? Well, just n ħinijiet n żminijiet n huwa kif I jista 'kubu valur. Għalhekk għal darb'oħra, super sempliċi idea, iżda dimostrattiv issa kif nistgħu jiktbu funzjonijiet li attwalment kellu lura lilna valuri li jistgħu jkunu ta 'interess. Ejja nħarsu lejn eżempju l-aħħar wieħed hawnhekk imsejħa funzjoni waħda. F'dan l-eżempju, jibda biex tikseb aktar konvinċenti. Allura fil-funzjoni waħda, dan avviż program-- finalment jitlob funzjoni msejħa GetPositiveInt. GetPositiveInt mhix funzjoni fil-librerija CS50, imma aħna iddeċieda li aħna tixtieq li jeżistu. Allura jekk aħna iscroll aktar tard fil-fajl, avviż kif I marru dwar implimentazzjoni nikseb int pożittiv, u I jgħidu huwa aktar konvinċenti minħabba li din hija deċenti numru ta 'linji ta' kodiċi. Huwa mhux biss iblah programm ġugarell ftit. Huwa fil-fatt ltqajna xi żball iċċekkjar u tagħmel xi ħaġa aktar utli. Mela jekk inti stajt ma bbenefikawx l-walkthrough videos li għandna integrati fil pset1, taf li dan huwa tip ta ' loop fis-C, simili fl-ispirtu għal tipi ta 'affarijiet Scratch jistgħu jagħmlu. U ma jgħid tagħmel dan. Stampa din out. Imbagħad imorru quddiem u jiksbu n-- tikseb int u jaħżen fil n, u jżomm tagħmel dan mill-ġdid u għal darb'oħra u darb'oħra sakemm n huwa inqas minn wieħed. Allura n se tkun inqas minn wieħed biss jekk il-bniedem mhuwiex kkooperaw. Jekk hu jew hi qed ittajpjar fl 0 jew -1 jew -50, dan loop se żżomm eżekuzzjoni għal darb'oħra u għal darb'oħra. U finalment avviż, I sempliċement lura l-valur. Allura issa għandna funzjoni li kieku stajt kien sbieħ jekk CS50 ikun implimentat fil CS50.h u CS50.c għalik, iżda hawnhekk nistgħu issa jimplimentaw dan nfusna. Iżda żewġ kummenti dwar xi dettalji ewlenin. One-- għaliex ma Niddikjara int n, taħseb, fuq il-linja 29 minflok sempliċiment tagħmel dan hawnhekk, li hija aktar konsistenti mal- dak li għamilna ġimgħa li għaddiet? Yeah? A ħasbu tajba. Mela jekk konna biex tqiegħed lilha hawn, huwa kif jekk aħna iżommu tiddikjara mill-ġdid u għal darb'oħra. Dan fih innifsu huwa mhux problematiku, per se, għaliex għandna bżonn biss il-valur darba u mbagħad aħna qed tmur biex tikseb waħda ġdida xorta waħda. Iżda riflessjoni tajba. Yeah? Agħlaq. So għaliex stajt iddikjarata n fuq linja 29 barra mill-linja, huwa aċċessibbli matul din il-funzjoni kollu. Mhux l-funzjonijiet l-oħra minħabba n għadu ġewwa minn dawn kaboċċi ċingi hawn. So-- żgur. Eżattament. Allura dan huwa saħansitra aktar lejn il-punt. Jekk aħna minflok iddikjarata n dritt hawn fuq il-linja 32, huwa problematiku għaliex raden fejn inkella I bżonn li jkollhom aċċess għaliha? On-line 34, u l- regola sempliċi ta 'thumb huwa li tista 'tuża biss varjabbli ġewwa taċ-ċingi kaboċċi aktar riċenti fejn inti ddikjarat lilha. Sfortunatament, linja 34 hija linja waħda tard wisq, għaliex stajt diġà magħluqa il-Brace kaboċċi fuq il-linja 33 li jikkorrispondi għall- Brace kaboċċi fuq il-linja 30. U hekk dan huwa mod ta 'tgħid li dan int varjabbli huwa scoped, biex ngħidu hekk, biss ġewwa ta 'dawk ċingi kaboċċi. Hija biss ma jeżistu barra minnhom. Għalhekk tabilħaqq, jekk nagħmel dan ħażin, let me isalva l-kodiċi kif is-- b'mod żbaljat miktub. Let me imorru quddiem u ma jagħmlu funzjoni 1, u żball notice--. Użu ta 'mhux iddikjarat identifikatur n fuq il-linja 35, li huwa dritt hawn. U jekk aħna iscroll aktar, ieħor. Użu ta 'mhux iddikjarat identifikatur n fuq il-linja 34. Allura l-kumpilatur, Clang, huwa jinnota li hija biss ma teżistix anki jekk b'mod ċar huwa hemmhekk viżwalment. Allura jiffissaw sempliċi hija tiddikjara hemmhekk. Issa let me iscroll biex il-quċċata tal-fajl. What jumps fil inti bħala tkun ftit differenti mill-għalf ħarisna lejn l-aħħar ġimgħa? Mhux biss do I jkollhom isem, mhux biss do Għandi xi sharp jinkludi top up, I ikollhom xi ħaġa jien ssejjaħ prototip. Issa li jistenna awfully simili għal dak aħna biss raw mument ilu fuq il-linja 27. Mela ejja jiddeduċu minn differenti messaġġ ta 'żball għaliex I ghamilt dan. Let me imorru quddiem u tħassar dawn il-linji hemmhekk. U hekk aħna nafu xejn dwar prototip. Remake dan il-fajl. Jagħmlu funzjoni waħda. U issa, kkritikat, erba 'żbalji. Ejja iscroll sa l-ewwel waħda. Dikjarazzjoni impliċitu tal-funzjoni nikseb int pożittiv huwa invalidu C99. C99 ifisser biss l-1999 verżjoni tal-lingwa C, li huwa dak li aħna qed tabilħaqq jużaw. Allura dak li jfisser dan? Well C-- u b'mod aktar speċifiku C compilers-- huma programmi pretty mutu. Huma biss jafu liema inti stajt qaltilhom, u li l- attwalment tematika mill-aħħar ġimgħa. Il-problema hija li jekk immur dwar implimentazzjoni isem up here, u I call funzjoni msejħa GetPositiveInt hawn fuq il-linja 20, dik il-funzjoni teknikament ma teżisti sakemm l-kumpilatur jara linja 27. Sfortunatament, il-kompilatur hija nagħmlu l-affarijiet top, isfel, xellug, lemin, hekk għaliex ma raw l- implimentazzjoni ta 'GetPositiveInt, iżda jara inti tipprova biex jużaw it up here, huwa biss se bail-- Yell fil inti ma żball message-- forsi cryptic, u mhux fil-fatt jikkompilaw il-fajl. Allura hekk imsejħa prototip up hawnhekk huwa ċertament żejda. Litteralment, I niżlet hawn u I kkupjati u pasted dan, u I poġġih up here. Null tkun aktar xierqa, hekk aħna ser litteralment kopja u paste dan iż-żmien. I litteralment kkupjati u pasted dan. Verament biss bħala bħal Frak tal-ħobż. A ftit clue għall-kompilatur. I do not know dak li dan ma s'issa, iżda jien promettenti lilek li se jeżistu eventwalment. U hu għalhekk li din line-- fl linja 16-- tispiċċa bil-punto virgola. Huwa hija żejda permezz tad-disinn. Iva? Jekk inti ma rabta librerija tiegħek li the-- oh, mistoqsija tajba. Sharp jinkludi inklużjonijiet fajl header. Ħtieġa li be-- għandhom kważi dejjem ikunu fil-quċċata ħafna tal-fajl għal similar-- għall eżattament l-istess raġuni, iva. Minħabba fl-istandard io.h hu litteralment linja bħal dan, iżda bil-printf kelma, u b'argumenti tagħha u t-tip ritorn tagħha. U hekk billi tagħmel sharp jinkludu sa hawn, dak li int litteralment tagħmel hija li jikkopjaw u pasta l-kontenut xi ħadd ieħor kiteb up top. B'hekk cluing kodiċi tiegħek fil lill- fatt li jeżistu dawk il-funzjonijiet. Yeah? Assolutament. Allura ħafna għaqlija u korretta soluzzjoni tkun, inti taf liema? I do not know dak li prototip huwa, imma naf jekk Nifhem li C huwa biss mutu u rethinks fuq għal isfel. Well ejja tagħtiha dak li trid. Ejja maqtugħin istess kodiċi, paste up top, u issa imbotta prinċipali stabbiliti hawn taħt. Dan ukoll ssolvix il-problema. Iżda int tista 'faċilment toħroġ bi f'xenarju li fih A bżonn tirrikorri B, u forsi B jitlob lura għall A. Dan hija xi ħaġa imsejħa recursion, u aħna ser terga 'lura għal dan. U jista 'jew ma jista' jkun tajjeb ħaġa, imma inti tista 'definittivament break din is-soluzzjoni. U barra minn hekk, nixtieq pretensjoni stylistically, speċjalment meta programmi tiegħek jsiru dan twil u dan twil, huwa biss super konvenjenti li jpoġġi prinċipali fil-quċċata għaliex dan huwa l-aktar ħaġa programmaturi huma ser jimpurtahom. U dan huwa aktar nadifa ftit, forsi, biex tagħmel dan il-mod I oriġinarjament ma kien ma 'prototip anke għalkemm jidher ftit superfluwi ewwel daqqa t'għajn. Yeah? Jiddispjacini, inti tista jgħidu li louder? Jekk taqleb l-postijiet tal- implimentazzjoni u l-prototip? Allura li hija mistoqsija tajba. Jekk għandek terġa 'tiddikjara dan l isfel hawn, ejja ara dak li jiġri. Mela jekk nressaq dan isfel hawn, inti qed tgħid. Oh, sorry. Louder? Anke louder. Oh, mistoqsija tajba. Ikun tinvalida l-funzjoni? You know, wara dawn is-snin kollha, I qatt ma tpoġġi prototip wara. Mela ejja ma jagħmlu funzjoni-1 wara li tagħmel dan. [Muttering] DAVID J. Malan: Oh, stenna. Għad għandna biex tpoġġi kollox top up. Mela ejja tagħmel dan up hawn, jekk jien fehim mistoqsija tiegħek b'mod korrett. Jien tqegħid kollox, inkluż il-prototip ta 'hawn fuq prinċipali, imma jien tqegħid tal-prototip taħt l-implimentazzjoni. Mela jekk jien jagħmlu waħda, jien jkollna lura n varjabbli mhux użati error--. Oh, hemm. Grazzi. Ejja naraw, aħna teħles minn dan. Li l-bug differenti, hekk ejja jinjoraw dik. Ejja verament malajr remake dan. OK, hekk argument data mhux użati mill String format n-- oh, dan għaliex I mibdula għal dawn hawn. Kull dritt, nafu liema l-risposta huwa għaddej to-- id-dritt, here we go. Ah, grazzi għall-pożittiv. Kull dritt, I se jiffissaw dan il-kodiċi after-- jinjora dan bug partikolari peress li dan was-- jaħdem huwa l-risposta. Allura dan ma jissostitwixxu dak li inti stajt biss isir. Nissuspetta l-kumpilatur huwa miktub b'tali mod li qed jinjora prototip tiegħek għaliex il-korp, biex ngħidu hekk, tal-funzjoni diġà ġew implimentati ogħla sa. I jkollhom biex effettivament jikkonsulta il-manwal tal-kompilatur biex jifhmu jekk ikun hemm xi oħra implikazzjoni, iżda fl-ewwel daqqa t'għajn biss billi tipprova u jesperimentaw, jidher li hemm ebda impatt. Mistoqsija tajba. Mela ejja nimxu 'l quddiem issa, li jiċċaqalqu bogħod mill-effetti sekondarji li huma funzjonijiet li jagħmlu xi ħaġa bħal viżwalment fuq l-iskrin ma printf, iżda ma jirritornawx valur. U funzjonijiet li jkollhom ritorn Valuri bħal aħna biss raw ftit ta. Aħna diġà raw dan il-kunċett ta 'ambitu, u aħna ser tara dan ġdid u għal darb'oħra. Iżda għal issa, għal darb'oħra, jużaw ir-regola ta 'thumb li varjabbli jistgħu jintużaw biss ġewwa mill-aktar riċentement fetaħ u braces kaboċċi magħluqa kif aħna raw f'dak eżempju partikolari. U kif inti enfasizzat, hemm ability-- inti tista 'ssolvi xi wħud minn dawn il-problemi billi jpoġġi varjabbli globalment fuq nett ta 'fajl. Iżda kważi fil-każijiet kollha aħna se frown fuq li, u tabilħaqq ma anki jmorru f'dak soluzzjoni għal issa. Allura għal issa, il-takeaway hija li varjabbli jkollhom dan il-kunċett ta 'ambitu. Imma issa ejja nħarsu lejn ieħor mod xott tal-fatt tfittex f'xi pretty interessanti dettalji tal-implimentazzjoni. Kif nistgħu jirrappreżentaw informazzjoni. U aħna diġà ħares lejn dan fl-ewwel ġimgħa tal-klassi. Ħarsa lejn binaries, u fakkruha lilna nfusna ta 'informazzjoni. Iżda recall minn aħħar ġimgħa li C għandha tipi ta 'data differenti u għenieqed aktar, iżda dawk l-aktar utli għal issa jista 'jkun dawn. A char, jew il-karattru, li jiġri li jkun byte wieħed, jew tmien total bits. U li li jgħidu li d-daqs ta 'char huwa biss wieħed byte. A byte huwa tmien bits, għalhekk dan ifisser li nistgħu jirrappreżentaw kemm karattri ħafna. Kemm l-ittri jew simboli fuq il-tastiera jekk ikollna byte wieħed jew tmien bits. Think lura għal żero ġimgħa. Jekk għandek tmien bits, kemm il-valuri totali inti tista 'tirrappreżenta ma mudelli ta 'żerijiet u dawk? One-- aktar minn dak. Mela 256 total, jekk inti jibdew jingħaddu minn żero. Mela jekk għandek tmien bits-- hekk jekk irridu kellhom basal binarja tagħna up here għal darb'oħra, nistgħu dawran dawk bozoz tad-dawl fuq u off fi kwalunkwe ta '256 mudelli uniċi. Issa dan huwa daqsxejn problematika. Mhux tant għall-Ingliż u lingwi rumanz, iżda ċertament meta inti jintroduċu, għal pereżempju, il-lingwi Asjatiċi, li jkollhom simboli ferm aktar minn like 26 ittri tal-alfabett. Għandna attwalment jista 'jkollok bżonn aktar minn byte wieħed. U Thankfully fl snin riċenti għandha soċjetà adottati standards oħra li jużaw byte aktar minn wieħed għal kull ħlas. Iżda għal issa fis-C, l-inadempjenza huwa biss byte wieħed jew tmien bits. Integer, sadanittant, hija erbgħa bytes, inkella magħruf bħala 32 bits. Li jfisser x'inhu l-akbar possibbli numru nistgħu jirrappreżentaw ma 'int apparentement? Bil biljun. Allura huwa erba 'biljun jagħtu jew jieħu. 2 għall-qawwa 32th, jekk aħna jassumu l-ebda numri negattivi u biss użu kollha pożittivi numri, huwa erba 'biljun jagħtu jew jieħu possibbiltajiet. A float, sadanittant, hija tip differenti tat-tip tad-data fil C. Huwa għadu numru, imma hija numru reali. Xi ħaġa ma 'punt deċimali. U jirriżulta li C tuża wkoll erba 'bytes biex jirrappreżentaw valuri b'punt li jvarja ta. Sfortunatament kemm f'wiċċ l-ilma valuri tal-punti huma hemmhekk fid-dinja? Kemm in-numri reali ħafna hemm? Hemm xi infinita numru, u għal dik il-kwistjoni hemm numru infinit ta 'interi. Allura aħna qed diġà tip ta ' tħaffir nfusna toqba hawn. Li biha apparentament computers-- fi inqas programmi bil-miktub fis-C fuq them-- tista 'biss jgħoddu bħala għoli daqs erba 'biljun jagħtu jew jieħu, u floating valuri tal-punti tista 'biss apparentement għandhom xi ammont finit ta 'preċiżjoni. Biss tant ċifri wara punt deċimali tagħhom. Minħabba, naturalment, jekk inti biss għandek 32 bits, I do not know kif aħna qed tmur biex jmorru dwar jirrappreżenta numbers-- reali probabbilment ma 'tipi differenti ta' mudelli. Iżda hemm żgur finit numru ta 'tali mudelli, hekk hawn, wisq, dan huwa problematiku. Issa nistgħu evitata l-problema kemmxejn. Jekk inti ma jużawx float, inti tista 'tuża double fis-C, li tagħtik tmien bytes, li huwa mudelli mod aktar possibbli ta 'żerijiet u dawk. Iżda huwa għadu finit, li se li jkun problematiku jekk tikteb software għall-grafika jew għal fancy formuli matematiċi. Allura inti tista 'fil-fatt tixtieq li jgħoddu up akbar minn dak. A twil long-- stupidly named-- huwa wkoll tmien bytes, jew 64 bits, u dan huwa darbtejn sakemm bħala int, u huwa għal valur sħiħ twil. Pjaċir fact-- jekk int huwa erba bytes, kemm żmien huwa twil fis-C tipikament? Ukoll erba bytes, iżda twil twil huwa tmien bytes, u dan huwa għal raġunijiet storiċi. Iżda l-takeaway issa huwa biss li data għandha li jkunu rappreżentati fil-computer-- li l- mezz fiżiku bl-elettriku, huwa ġeneralment sewqan dawk żerijiet u ones-- b'ammonti finit ta 'preċiżjoni. Allura x'inhu l-problema allura? Ukoll hemm problema ta 'overflow numru sħiħ. Mhux biss fil-C, iżda kompjuters b'mod ġenerali. Per eżempju, jekk dan huwa byte jiswew bit-- hekk jekk dan huwa tmienja bit-- kollha li huma n-numru wieħed. X'inhu numru huwa dan tirrappreżenta jekk nassumu huwa valuri pożittivi kollha fl binarju? 255, u mhuwiex 256, għaliex żero hija l-inqas numru. Allura 255 huwa l-ogħla wieħed, iżda l-problema huwa wieħed jissoponi li xtaqt li inkrement dan il-varjabbli li qed tuża tmien bits total jekk irrid li inkrement lilha. Ukoll malli I żid wieħed għal kulħadd ta 'dawn dawk, inti tista 'forsi timmaġina visually-- biss simili jġorru l-wieħed juża decimals-- xi ħaġa għaddej biex fluss lejn ix-xellug. U fil-fatt, jekk I żid l-għadd wieħed għal dan, dak li jiġri fil-binarju huwa li tifwir lura għal żero. Mela jekk inti biss use-- mhux int, iżda byte wieħed biex jingħaddu interi fi programm, billi default-- hekk kif ikollok biex 250, 251, 252, 253, 254, 255-- 0 wasal wara 255, li probabbilment ma jkunx dak utent se tistenna. Issa sadanittant fil-galleġġjanti punt dinja, inti ukoll għandek problema simili. Mhux daqshekk mal-akbar number-- għalkemm dan għadu kwistjoni. Imma bl-ammont ta 'preċiżjoni li inti tista 'tirrappreżenta. Mela ejja tagħti ħarsa lejn dan l-eżempju hawn ukoll minn sors code-- lum -float 0.c. U avviż huwa super programm sempliċi li għandhom apparentement jistampa liema valur? What do you wager dan se jistampaw anke jekk kien hemm daqsxejn ta 'sintassi ġdida hawn? Allura nisperaw 0.1. Allura l-ekwivalenti ta 'wieħed minn għaxra għaliex jien tagħmel 1 maqsum f'10. Jien ħażna ir-risposta fi varjabbli msejħa f. Dan il-varjabbli huwa tat-tip float, li huwa keyword I biss propost eżista. Imxejna ma bbenefikawx dan qabel, imma dan huwa tip ta 'mod pulita fil printf li jispeċifikaw kif ħafna numri inti trid tara wara punt deċimali. Allura dan notazzjoni ifisser biss li hawnhekk placeholder. Huwa għal floating point valur, u oh, mill-mod, juru li dan ma 'l-punt deċimali ma numru wieħed wara l-punt deċimali. Allura dak in-numru tal figuri sinifikanti, biex ngħidu hekk, li inti tista 'tixtieq. So let me go quddiem u jagħmlu make-float 0, ./float-0, u apparentement 1 maqsum f'10 hija 0.0. Issa għaliex huwa dan? Ukoll għal darb'oħra, il-kompjuter qed tieħu me litteralment, u ktibtu 1 u I miktub 10, u tieħu raden liema huwa t-tip tad-data preżunta għal dawk iż-żewġ Valuri? An int, huwa teknikament xi ftit differenti. Huwa tipikament twil, imma hija finalment valur integrali. Mhux valur punt f'wiċċ l-ilma. Li huwa li jgħidu li jekk dan huwa int u dan huwa int, il-problema hija li l-kompjuter ma jkollu l-abbiltà li anki jaħżnu dik punt deċimali. Allura meta inti tagħmel 1 maqsuma b'10 jużaw interi kemm għall-numeratur u l- denominatur, ir-risposta għandha tkun 0.1. Iżda l-computer-- minħabba dawk huma integers-- ma jafu x'għandhom jagħmlu ma 'l-0.1. Allura x'inhu tagħmel b'mod ċar? Huwa biss jitfg bogħod, u dak li jien jaraw finalment huwa 0.0 biss minħabba I insista li printf urini punt deċimali wieħed. Iżda l-problema hija li jekk inti jaqsam integer minn integer, inti ser get-- b'definizzjoni ta C-- integer. U huwa mhux se jagħmlu xi ħaġa sabiħa u konvenjenti bħal round f'idejn l- eqreb wieħed up jew 'l isfel. Huwa ser truncate kollox wara l-deċimali. Hekk biss intuwittivament, x'hemm probabbilment tiffissa? X'hemm l-jiffissaw sempliċi hawn? Yeah? Eżattament. Għaliex ma aħna biss jittrattaw dawn kif f'wiċċ l-ilma valuri point effettiv b'hekk jissarfu kannizzati jew jirdoppja. U issa jekk I do jagħmlu sufruni-0, jew jekk I jikkompilaw sufruni-1, li huwa identiku għall dak li kien biss proposta. U issa I do sufruni-0, issa niġi 0.1 tiegħi. Issa dan huwa aqwa. Imma issa jien se tagħmel xi ftit differenti. Jien kurjużi biex tara x'hemm verament tmur fuq taħt il-barnuża, u jien ser Stampa din out għal 28 postijiet deċimali. I tixtieq li verament tara 0.1000-- l infinite-- [Inaudible] 27 żerijiet wara dik 0.1. Well ejja ara jekk dan huwa dak I tabilħaqq nikseb. Jagħmlu sufruni-0 istess fajl. ./floats-0. Ejja zoom fl fuq ir-risposta drammatika. Dan il-ħin, inti kont qed taħseb 1 maqsum f'10 huwa ta '10%, jew 0.1. Mhuwiex. Mill-inqas safejn l- tal kkonċernata kompjuter. Issa why-- OK, dan huwa komplet jimteddu 1 maqsum f'10 hija 0.1. Iżda why-- li mhuwiex illum il-takeaway. Allura għaliex ma l-kompjuter think, b'differenza lkoll fil-kamra, li 1 maqsum f'10 huwa attwalment dak il-valur crazy? X'hemm-kompjuter tagħmel apparentement? X'hemm li? Mhuwiex jfur, per se. Overflow hija tipikament meta inti wrap madwar valur. Huwa din il-kwistjoni ta 'nuqqas ta' preċiżjoni fil-valur tal-punt floating fejn inti biss għandek 32 jew forsi anke 64 bit. Imma jekk hemm xi infinita numru ta 'numbers-- reali numri bil-punti deċimali u n-numri thereafter-- żgur inti ma tistax tirrappreżenta kull wieħed minnhom. Allura l-kompjuter għandha tingħata lilna l-logħba eqreb għall-valur li tista 'tirrappreżenta użu li ħafna bits għall-valur attwalment I trid, li hija 0.1. Sfortunatament, jekk inti jibdew jagħmlu matematika, jew inti jibdew jinvolvu dawn it-tipi ta 'f'wiċċ l-ilma Valuri punt fl programs-- importanti software finanzjarji, xejn software-- militari fejn perċezzjoni hija probabbilment pretty importanti. U inti tibda żżid numri bħal dan, u bidu running li softwer bil inputs verament kbar jew għal lottijiet ta 'sigħat jew lottijiet ta 'jiem jew lottijiet ta' snin, dawn l-iżbalji ftit żgħira żgur tista 'żżid maż-żmien. Issa bħala twarrib, jekk inti stajt qatt tidher Superman 3 jew l-Uffiċċju Ispazju u inti tista 'recall kif dawk guys seraq ħafna ta 'flus mill-kompjuter tagħhom billi jużaw valuri b'punt li jvarja u jingħadd il-ftit fdalijiet, nisperaw li movie issa jagħmel aktar sens. Dan huwa dak li kienu jalludi f'dak movie. Il-fatt li ħafna kumpaniji ma look wara ċertu numru ta 'postijiet deċimali, iżda dawk huma frazzjonijiet ta 'ċenteżmi. Allura inti tibda żżid lilhom up, inti tibda tagħmel ħafna ta 'flus fil-kont bankarju tiegħek. Allura dak Office Space spjegat. Issa sfortunatament lil hinn Uffiċċju Ispazju, hemm huma wħud leġittimament inkwetanti u impatti sinifikanti ta 'dawn it-tipi ta' deċiżjonijiet tad-disinn sottostanti, u tabilħaqq waħda mir-raġunijiet nużaw C fil-kors huwa hekk li inti verament ikollhom din ir-raġuni up fehim ta 'kif il-kompjuters jaħdmu, kif software xogħlijiet, u ma tieħu xejn għall mogħtija. U fil-fatt sfortunatament, anke ma li l-fehim fundamentali, aħna bnedmin jagħmlu żbalji. U dak li ħsibt I d jaqsmu huwa dan il-video tmien minuti hawn jittieħdu minn episodju marvels Moderna, li hija juru edukattiv dwar kif jaħdmu l-affarijiet li ż-żebgħa żewġ stampi ta meta l-użu mhux xieraq u l-fehim ta ' f'wiċċ l-ilma valuri point wassal għal xi sinifikanti riżultati sfortunati. Ejja tagħti ħarsa. [Daqq ta 'video] -Aħna Issa jirritorna għal "Inġinerija Diżastri "fuq marvels moderna. Kompjuters. Imxejna kollha waslu li jaċċettaw l- problemi ta 'spiss frustranti li ltqajna bil them-- bugs, viruses, u Softwer glitches-- għall-prezzijiet żgħar li tħallas għall-konvenjenza. Iżda fil teknoloġija għolja u l-veloċità għolja applikazzjonijiet programm spazjali militari u, l-iżgħar problema tista jiġu eżaltat fil-diżastru. 4 Ġunju, 1996, xjentisti ppreparati biex tniedi mingħajr ekwipaġġ Ariane 5 rokit. Kien jġorru xjentifika satelliti mfassla biex tistabbilixxi preċiżament kif l- Jinteraġixxi Dinja qasam manjetiku mal-irjieħ solari. Il rokit kienet mibnija għall l-Aġenzija Spazjali Ewropea, u tintrefa 'mill-faċilità tagħha fuq il-kosta tal-Gujana Franċiża. -At Madwar 37 għal sekondi fis it-titjira, huma l-ewwel xi ħaġa ndunat kien tmur ħażina. Li l-żennuni kienu swiveling b'mod li verament ma għandu. Madwar 40 sekonda fil-titjira, b'mod ċar il-vettura kien fl-inkwiet, u li meta huma jkunu għamlu id-deċiżjoni li tiddistruġġih. L-uffiċjal tas-sigurtà firxa, ma imsaren tremenda, ippressat-buttuna u nefaħ l-rokit qabel ma setgħet issir periklu għas-sigurtà pubblika. -Dan Kien il-xebba vjaġġ tal-5 Ariane, u l-qerda tagħha ħa poġġi minħabba l-difett inkorporati fis-software tal-rokit li. -Il Problema fuq il- Ariane kienet li hemm kien numru dak meħtieġ 64 bits biex jesprimu, u riedu li jikkonvertu li numru 16-bit. Huma jassumi li n-numru qatt ma kienet se tkun kbar ħafna. Li aktar ta 'dawk ċifri fil in-numru 64-bit kienu żerijiet. Huma kienu żbaljati. -Il Inabbiltà ta 'wieħed programm tas-software li jaċċetta it-tip ta 'numru iġġenerat mill ieħor kien fil-għerq tan-nuqqas. Iżvilupp Software kienet saret parti jiswew ħafna ta 'teknoloġija ġdida. Il rokit Ariane 4 kellhom suċċess kbir. Tant ta 'l-software maħluqa għall kien ukoll użat fil-Ariane 5. -Il Problema bażika kienet li l-Ariane 5. Was faster-- aċċellerat aktar mgħaġġla, u l-software ma ammontaw għal dak. -Il Qerda tal-rokit kien hemm diżastru finanzjarju enormi. Kollha minħabba żball software minuta. Iżda dan ma kienx l-ewwel problemi ta 'konverżjoni data fil-ħin kien infestat teknoloġija rokit moderna. -Fil 1991 bil-bidu ta 'l-ewwel Gwerra tal-Golf, l-missili Patriot esperjenzaw tip simili ta 'problema konverżjoni numru. U bħala riżultat 28 people-- 28 Soldiers-- Amerikani kienu maqtula, u madwar mitt oħrajn midruba. Meta l-Patriot, li suppost kellha biex jipproteġu kontra Scuds deħlin, naqas milli nar missili. -Meta Iraq invadiet Kuwajt, u l-Amerika imnedija Maltempata deżert kmieni fl-1991, Batteriji missili Patriot kienu skjerati biex jipproteġu l-Għarabja Sawdita u l-Iżrael minn attakki bil-missili Scud Iraqini. Il Patriot hija ta 'medda medja Istati Uniti wiċċ to-air sistema manifatturati mill-kumpanija Raytheon. -Il Daqs tal-Patriot interċetturi itself-- Huwa dwar madwar 20 pied fit-tul, u li jiżen madwar 2,000 liri. U din twettaq warhead ta 'madwar, Naħseb li huwa bejn wieħed u ieħor 150 £. U l-warhead innifsu huwa hija splussiv għolja, li għandha frammenti madwar lilu. Allura l-casing tal-warhead huwa disinjata sabiex taġġixxi bħal buckshot. -Il Missili huma mwettqa erba 'għal kull kontenitur, u huma trasportati bil-karru semi. Sistema -Il Patriot kontra l-missili tmur lura għall-inqas 20 snin issa. Din kienet oriġinarjament iddisinjata bħala missili difiża arja biex rimja fl ajruplani ghadu. Fl-ewwel Gwerra tal-Golf meta dik gwerra daħal jilgħab l-Armata riedu jużawh biex rimja fl Scuds, mhux ajruplani. Il Air Force Iraqi kien mhux tant ta 'problema, iżda l-Armata kien inkwetat dwar Scuds. U għalhekk huma ppruvaw jaġġornaw il-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 Iraqi li magħmula scuds tagħhom kważi impossibbli għaliha. Liema-ġara huwa l-Scuds li kienu ġejjin fil kienu instabbli. Huma kienu wobbly. Ir-raġuni għal dan kienet l-Iraqis-- sabiex tikseb 600 kilometru out ta 'firxa missile-- 300 kilometru ħa piż barra mill-warhead quddiem, u għamel l-warhead eħfef. Allura issa l-tal-Patriot tipprova toħroġ fil-Scud, u ħafna mill-time-- il-maġġoranza kbira tal- time-- ikun biss jtiru mill-Scud. -Once L-operaturi tas-sistema Patriot realizzati l-Patriot qbiżt mira tagħha, huma jisplodu warhead l-Patriot tal biex jevitaw diżgrazzji possibbli jekk hija kien permess li jaqgħu l-art. -li Kien dak li ħafna nies raw bħala fireballs kbar fil-sema, u ħażin bħala interċettazzjonijiet ta 'testati Scud. -Although Fil-smewwiet lejl, Patriots dehru li jeqirdu b'suċċess Scuds, fil Dhahran jista 'jkun hemm l-ebda żball dwar ir-rendiment tagħha. Hemm sistema radar tal-Patriot tal track mitlufa ta 'Scud dieħla u qatt nediet dovut għal difett software. Kien l-Iżraeljani li l-ewwel skoperti li l-aktar is-sistema kienet fuq, l-akbar il diskrepanza ħin sar. Minħabba arloġġ integrati fil-kompjuter tas-sistema. -About Ġimgħatejn qabel l-traġedja fl Dhahran, l-Iżraeljani rrapportati lill id-Dipartiment tad-Difiża li s-sistema kienet jitilfu l-ħin. Wara madwar tmien sigħat tat-tmexxija, huma ndunat li s-sistema tal-isiru 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 kien. 8 sigħat, 10 siegħa, elf sigħat. Ħadd ma kien jaf. -Il Batterija Patriot stazzjonati fuq il-barracks fil Dhahran u interna difettuż tiegħu arloġġ kienet ilha għaddejja aktar minn 100 sigħat dwar il-lejl ta 'Frar 25. -Hija Tracked ħin bi 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 fl binarju eżattament, liema ifisser 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 jieħdu l-tielet numru wieħed. Terz ma tistax tkun espressi deċimali eżattament. Terz huwa 0.333 għaddej għal infinità. M'hemm l-ebda mod biex tagħmel dan ma eżattezza assoluta fil 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 immirar ta ' missili jivvjaġġaw Mach 5, dan irriżulta traċċar żball ta 'aktar minn 600 metru. Ikun żball fatali għall-suldati fil Dhahran. Liema-ġara huwa tnedija Scud kien skoperti mis-satelliti ta 'twissija bikrija, u dawn kienu jafu Scud kien ġejjin fid-direzzjoni ġenerali tagħhom. Huma ma jafux fejn kien ġejjin. Kien issa sa l-radar komponent tas-sistema Patriot tiddefendi Dhahran biex jinstabu u jżommu track 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 bagħtet polz out. Dan kien jissejjaħ il-gate firxa. -Then Ladarba l-Patriot jiddeċiedi ħin biżżejjed għandha mgħoddija li jmorru lura u jivverifika l-li jmiss post għal dan l-oġġett skoperti 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 ebda oġġett. Li kien hemm kxif falza u qtar il-binarju. -Il Scud deħlin sparixxew mill-iskrin tar-radar, u sekondi wara, slammed fil-kwartieri. Il Scud maqtula 28. Kien l-aħħar wieħed sparati matul l-ewwel Gwerra tal-Golf. Traġikament, il-software aġġornat waslu fuq dawn l-għada. Il difett softwer kellhom ġie ffissat, għeluq kapitolu wieħed fil-mnikkta istorja tal-missili Patriot. [END daqq ta 'video] DAVID J. Malan: Li lilha għall CS50. Aħna se tara int nhar l-Erbgħa. [Daqq ta mużika]