[Musika jotzen] DAVID J. MALAN: Ondo da. Hau CS50 da, eta hau astean bi hasiera da. Hargatik, gaur hasiko bug batekin digu. Bug bat, noski, da a programa batean akats, eta oso jasoko duzu Kontzeptu hau ezagutzen Nik inoiz programatutako bada aurretik. pset0 eta orain pset1. Baina kontuan hartu dezagun zerbait Hasieran erraza da apur bat. Programa hau hemen dut batera bota, aldez aurretik, eta hori izan behar inprimatu aldarrikatzen dut Pantailan printf erabiliz on 10 puntuak, baina nolabait buggy itxuraz. Zehaztapen hori eman duen 10 puntuak inprimatu behar da, baina ez du, itxuraz, zer litzateke erreklamatzeko duzu akatsen da? Bai? Beraz error banan-off bat da, eta zer esan nahi duzu? Ados. Bikain. Beraz, zehaztu dugu bat hasteko zero balioa i, eta n 10 balioa bat zehaztu dugu, baina berdina edo gutxiago erabili dugu. Eta honen arrazoia bi da pertsonaiak eta ez sinbolo bat besterik ez, matematikako liburu batean bezala, da ez duzula dute adierazteko modu bat pertsonaia baliokide bat. Beraz, hori baino gutxiago esan nahi du, baina zerotik kontatzen hasten bazara, baina modu guztiak zenbatu dituzu bidez gora eta 10 berdinak, Oraindik ikastaro joan 11 guztira, gauzak kontatzea. Eta hain zu 11 izar inprimatu. Beraz, zer fix bat izan liteke? Bai? Beraz, besterik gabe, doi baino gutxiago edo berdina izan nahiko luke baino gutxiago, eta ez dago, nik diotenez, agian beste irtenbide bat, gehiegi. Zer liteke, bestela, egin nahi duzu? Bai? Beraz, hasi da berdinduz 1, eta berdina edo gutxiago utzi. Eta Egia litzateke aldarrikatzen dut dela, giza tipiko bat, hau da, ziurrenik, gehiago zuzenean. Hasi 1ean kontatuta eta zenbatu arte 10 bidez. Funtsean, zer esan nahi duzu. Baina errealitatea da programazioa, Nik ikusi dugun bezala, informatikariak eta programatzaileak oro har, ez hasten zerotik kontatzen. Eta, beraz, hori da isuna behin ohitu egiten zara. Zure baldintza izango da, oro har, baino gutxiago antzeko zerbait izango. Beraz, besterik gabe, logikoa error orain ezin izan dugu konpondu eta, azken finean, konpilatu hau eta 10 besterik ez. Beno, nola bug hau hemen? Hemen, berriz ere, I izan dela aldarrikatzen dut 10 stars-- inprimatzeko helburua line oraingoan bakoitzeko bat, baina ez da. Proposatzen dugu aurretik zer konpondu da, zer du honek inprimatu ikusmen Konpilatuko banintz eta exekutatu programa hau deritzozu? Bai? Star. Beraz, izar guztiak lerro berean dago zer entzun dut, eta, ondoren, lerro pertsonaia berria. Hargatik saiatu direla. Beraz, buggy-1, sartu, eta clang komandoa ikusten dut Hitz egin dugun azken aldiz buruz. ./buggy-1, eta halaxe ikusten dut 10 puntuak guztiak lerro bera aldarrikatzen dut, nahiz eta on Nire zehaztapena besterik gainean iruzkin bat kodea duten per bat egiteko asmoa dut lerroa. Baina hau begiratzen eskubidea. Orain 15 lerro badirudi naiz bezalako izar bat inprimatzeko, eta, ondoren, 16 linea badirudi inprimatzeko naiz bezala linea berri pertsonaia bat, eta zu bai koska dute beraz Naiz begizta argi barruan dut. Beraz, behar ez den izarra egiten dut, berria line, star, linea berria, star, linea berria? Bai? Bai, hizkuntza bat bezala bezala Python, Oraindik ezagutzen bada, koska ez du ordenagailua axola. Giza izateko bakarrik da garrantzitsua. Beraz, hemen, berriz, ez dut asmatu lerroak 15 eta saioa 16 itxura ederra, baina ordenagailua ez zaintzeko. Ordenagailua buruz zaintzen benetan kizkur giltza izatea Kode lerro hauen inguruan. Beraz, clear-- besterik ez bezalakoa da Scratch-- bi kode lerro horiek direla exekutatu behar da. Horiek horia Scratch, puzzle bat bezala piezak eta behin eta berriro berriro. Beraz, orain badut berriz abiarazi programa ./buggy-2-- Hm. Errore bat daukat orain. Zer ahaztu nuen egin? Yeah, beraz, ez nuen konpilatu. Beraz, buggy-2. Ez dago horrelako fitxategi ez nuen delako benetan konpilatu bigarren bertsioa. Beraz, orain interesgarria undeclared ez aldagai 2. Ari gara 1. Egin buggy-1-- ./buggy-1-- eta orain horietako bakoitza lerro berean dago. Orain ez dago salbuespen bat da ustezko nirea erreklamazio honetan kizkur giltza horien behar duzula. Noiz da benetan OK dut baduzu atalean edo textbooks-- nabaritu kizkur giltza kendu? Bai? Zehazki. Noiz ez da bakarra izan Kode-lerro duzula etorri behar elkartuak nahi begizta gure lehen adibidean bezala. Guztiz zilegia da kizkur giltza kendu besterik onerako moduko gisa duzu konpiladorea from. Bai? Ona galdera. Litzateke kontuan hartu behar da estilo error bat? CS50 bezala promote-- genuke Bizimodua, URL horretarako, pset1-- da beti erabili kizkur giltza. Zalantzarik Oraindik programazio berria bada. Errealitatea da, ez gara you debekatzeko joan erosotasun horiek egiten. Baina ari zaren besterik ez bada lortzean gauza swing sartu, Erabat besterik beti kizkur erabili giltza da delta lortuko duzu arte. Ona galdera. Guztiak eskubidea. Beraz, ondoren, akats bat zuen. Zerbait nahiko erraza da, gutxienez. Eta, hala ere hau uste duzu agian nahiko baldarra, ezta? Hau lehenengo astean moduko da hizkuntzari begira bezala, ikus zure bugs bertan. Baina errealitatea hauek dira benetan ordezkaria Nahiko beldurgarria arazo batzuen daiteke mundu errealean sortzen diren. Beraz, batzuk gogora ekarri ditzake teknologiako albisteak jarraitzen badituzu, edo agian harrapatu honen haize otsailean azken urte honetan Apple zuela Akats bat pixka bat egin bai iOS, sistema eragilearen beren telefono, eta, gainera, Mac OS, sistema eragilea beren mahaigainen eta ordenagailu eramangarriak. Eta titularrak horrelako ikusi duzu. Eta hortik aurrera, Apple Akats hau zuzentzeko agindu, eta oso azkar egin konpondu iOS, baina gero azken finean konpondu Mac OS-en baita. Orain titularrak horiek ez bakarrik, benetan agerian azpiko arazoa zein zen, baina bug azken batean murriztu zen SSL akats bat, Secure Sockets Layer. Eta ipuin luze, hau da, softwarea beste, gure nabigatzaile eta erabili software zer egin? SSL dela esan badut inplikatuta, direnean bisitatzen duten HTTPS batekin hasten URL bat, zer ondoren, SSL egon agertutako? Enkriptatzea. Beraz, buruz hitz egingo dugu hau datozen egunetan. Encryption, artea informazio scrambling. Baina ipuin luze, Apple noizbait ago zuen akats bat egin beren SSL, ezartzeko ere azken finean, inplementatzen software HTTPS edo max bezala URLs konexioak han ere. Horren emaitza dela zure konexioak potentzialki Could lor daitezke. Eta zure konexioak ziren ez derrigorrez enkriptatutako txarra lasaia batzuk bazenu arteko Zu eta helmuga webgunea nor zekien nola aprobetxatu honen. Orain Apple azken finean argitaratua a honetarako konpondu azkenik, eta deskribapena beren fix zen hau. Garraio segurua huts balioztatzeko konexioa benetakotasuna. Alea heldu validation urratsak falta berrezartzeko. Beraz, hau oso eskuko Wavy azalpen bat da besterik gabe izorratu egiten dugula esaten da. Ez dago literalki bat duten buggy zen kode-lerro beren SSL ezartzeko, eta in joan online eta bilatu honetarako bada benetan jakin dezakezu jatorrizko iturburu-kodea. Esate baterako, pantaila jaurtiketa bat da besterik fitxategia nahiko handi baten zati bat, baina hori itxuraz izeneko funtzio bat da SSL ikurra zerbitzari gako aldaketa egiaztatzeko. Eta mordo bat hartzen du argudioak eta inputak. Eta ez gabiltza ardatz too minutia han askoz, baina barrutik kodea du ardatz baduzu goreneko duten utzi funtzio hamarkadetako Handiagotzeko horretan. Dagoeneko Susmoa dezakezu zer errorea gerta daiteke izan ideia ez duzu, nahiz eta azken finean, zer bilatzen ari zaren. Ez dago anomalia mota hemen, hau da, zer? Bai, ez benetan gustatzen zait bi goto itxura huts egin. Egia, ez dakit zer goto huts bitartez, baina horietako bi izatea atzera itzuli. Hori besterik rubs mota me intelektualki okerreko bidea, eta handiagotzeko dugu, hain zuzen ere bada an lerro horiek besterik ez, hau da C. Beraz Apple kode asko Idatzizko C, berez, eta honek, antza denez, benetan equivalent-- Ez koska polit hori bertsioan, baina ezagutzen baduzu, hain zuzen, baina ez dago giltza kizkur, zer Apple benetan idatzi zela itxura kodea Hau atsegin. Beraz handitutako dut out eta I just zentzuan koska finkoak duten ez dago giltza kizkur, hori bada Bigarren goto huts hori da horiz da axola zer exekutatu behar. Ez da lotutako Gainean duen baldintza bada ere. Beraz, nahiz eta, berriro ere, ez baduzu nahiko ulertzen zer izan ziurrenik izan egiten, jakin horietako bakoitzak lerro hauen bakoitzean conditions-- Urrats hau oso garrantzitsua da egiaztatzeko prozesuan zure datuak, hain zuzen ere bada enkriptatuko. Beraz, horietako bat alde batetara uzten urrats, ez da ideia onena. Baina hori dugulako Bigarren goto huts horiz, eta delako dugu behin Ordena estetikoki mugitu ezkerrera bertan logikoki une da, zer esan nahi du horrek linea Bigarren goto azpitik duten kodearen huts egin dela uste duzu? Bera beti saltatu egingo da. Beraz gotos, oro har, frowned arrazoiengatik ezin izango dugu benetan sartu da, eta, hain zuzen CS50 Ez ohi dugu adierazpen goto hau irakasteko, baina goto uste dezakezu esanahia go jauzi gisa huts bestelako kodearen zati batzuk. Hitz beste gainetik salto azken lerro hau guztiz, eta hain ergel horren emaitza Akats sinplea besterik ez zen Ziurrenik norbaitek ondorioz kopiatzea eta bat itsasten too askotan osoa zela iOS eta Mac OS segurtasuna zaurgarria atzematea zen denbora luzez guys txarra. Apple Azkenean konpondu hau. Orain baduzu batzuk, egia esan, iOS edo Mac OS bertsio zaharra exekutatzen, gotofail.com dezakezu joan eta bertan Web orri bat norbait dela eratu da funtsean zehazteko programazioaren Zure ordenagailuan zaurgarria da, oraindik ere bada. Eta Egia, bada, seguruenik ideia ona Telefonoa eguneratzeko edo Zure Mac puntu honetan. Baina ez dago, besterik gabe, testamentuan nola beheko maila horietan guztietan aipagarrienak xehetasunak eta nahiko ideia simple benetan ahal erabakiak itzultzeko eta arazoak kasu honetan affected-- milioika pertsona. Orain baten administrazioa on hitza. Artikulua datozen igande honetan hasiko da. Email bat jasoko duzu arabera atalean buruz asteburuan, eta amaitzen da resectioning prozesua dut baduzu hasiko da konturatu orain duzu gatazken berri batzuk. Beraz, hau da urtero gertatzen da, eta guk izango egunetan egokitzeko etorri. Bulegoko bat mantendu hours-- egin begi ordutegia hau hemen. Pixka bat aste honetan aldatzen du, bereziki ordua eta kokalekua, beraz, kontsultatu , bulegoko ordu heading aurretik Hurrengo lau gau edozein. Eta orain balorazio hitz bat, murgiltze duzu batez ere arazo bilakatu bat eta urrunago ezartzen du. Beraz zehaztapen bakoitzeko, horiek, oro har Ardatz horrek batera zure lana ebaluatzen da. Aplikazio-eremua aipatzen zer hein zure kodea lanabesak ezaugarriak eskatutako gure zehaztapen arabera. Beste era batera esanda, nola askoz pieza multzo bat egin off hozka duzu. Ba hirugarren bat hura egin duzu, erdia da,% 100. Ez da zuzena bada ere, zenbat saiatuko zenuen? Beraz, maila harrapatzen ahalegina eta zenbatekoaren horrek off bit duzu Arazo multzo horrek arazoak. Ko hau Correctness--, to zein neurritan, zure kodea da koherentea gure zehaztapenak eta bugs doan. Beraz, ez da behar bezala ibiliko da? Sarrera batzuk eman diogu, bada, ez da ematen diguten irteera espero dugun hori? Design-- orain, hau da, lehena bereziki kualitatiboak, edo giza epaia eskatzen direnak. Eta hain zuzen ere, horregatik langile bat behar dugu irakaskuntza bekadun hainbeste eta, jakina, laguntzaileak. Zer neurritan zure dago kodea idatzizko ondo? Eta berriro oso bat ebaluazio kualitatiboa egingo duzu lan on asteetan bi norabidetan etorri. Beraz, hori ez denean lortuko duzu zenbakizko partiturak ezik, idatzitako partiturak, edo idatzitako feedback, edo idatzitako feedback English hitzetan. Horixe duzu gidatzeko erabiliko dugu benetan kodea idatziz hobeto aldera. Eta hitzaldi eta sekzioan, saiatuko gara out-- seinalatu bezala askotan can-- dugun bezala zer programa bat egiten du, ez bakarrik zuzena eta funtzionalki ona, baina baita ondo diseinatuta. Eraginkorrena zein izan zitekeen, edo nahiz eta ederrena ahal izango da. Zein garamatza estilo. Style, azken finean, epai estetiko bat. Ba ona aukeratu duzun zure aldagai izenak? Zure kodea behar bezala koska duzu? Ez du itxura ona, eta, beraz, da beste gizaki erraza Zure dagozkien irakurtzeko berau zuzena. Orain, oro har, curriculumaren arabera, puntuazio dugu bost puntuko eskala batean gauza horiek. Eta utzi hasiera Hammer me puntua Hiru bat da, hain zuzen ona. Oso azkar egin folks hasteko aritmetika egiten. Noiz hiru out bat lortzen dute bost pset batzuk zuzentasuna an eta madarikatua uste dute, joan% 60 I hau da, funtsean D edo E bat Hori ez da horrela egiten dugu Zenbaki horiek uste. Hiru bat da, hain zuzen ona, eta zer garen oro har, hasieran espero terminoaren duzula bada ari three's-- mordo bat, agian, pare bat azoka, fours-- pare bat edo pare twos, fours-- pare bat duten leku ona hasiko da. Eta hain luze bat ikusiko dugu denboran zehar goranzko ibilbidea, Oraindik leku bereziki ona izan duzula. Formula erabili dugu pisua gauza da, funtsean, hau curriculumaren arabera, besterik gabe esan nahi dugu, Pisu gehiago zuzentasun emateko. Oso maiz da zuzentasun delako duten denbora gehien hartzen. Fidatu orain me. Egingo gutxienez find-- duzu pset-- batean duzula zure denbora% 90 Arazo guztien% 10 lanean ari da. Eta guztia ordenatzeko obrak bugs bat edo bi izan ezik, eta horiek dira bugs duten mantendu nahi izanez gero, gauez berandu. Horiek dira direnak Ordena ihes duzu. Baina bertan lo egin ondoren, edo bulego orduetan bertaratu edo galderak eginez konektatuta, da denean lortu% 100 gol duzula, eta horregatik dugu pisua zuzentasuna gehien. Diseinatzea apur bat gutxiago, eta estilo hori baino apur bat gutxiago. Baina mind-- style hartu da, agian, errazena horien off hozka estilo-gida arabera. Eta orain, gehiago larria zintzotasuna akademikoa ohartu. CS50 Penagarria bereizketa du Ad Kontseiluko ekoizle handiena izateaz Kasu ia urtero historikoki. Hau ez da, ikasleak ere iruzur delako CS50 gehiago hain beste edozein klase baino, baina lanaren izaera delako, Izan ere elektronikoen dela, Izan ere, bilatzen dugun, eta Izan ere, informatikariak garenez, Esan dezaket, zoritxarrez gara oso detektatzeko ona. Beraz, zer esan nahi du horrek balio errealetan? Beraz, curriculumaren arabera, Ikastaro horrek filosofia benetan irakiten du behera arrazoizkoa izan. Badira arteko lerroa hau da: norberaren lan egiten norbera eta pixka bat lortzean arrazoizkoa lagun baten laguntzaz, eta zaie lan hori egiteko, zure laguna, edo bere zure kodea bidaliz berak, besterik gabe, ahal dela, beraz, hartu edo maileguan ezazu eskuineko. Eta hori lerroa zeharkatzen zozketatu dugun klasea. Ikusi, curriculumaren lineak egiteko, azken finean, arrazoizkoa ari, marraztu dugun eta arrazoizkoa portaera, baina ez benetan irakiten esentzia behera Zure lanaren beharrik Zeure amaieran izango da. Orain dela esan du, ez heuristiko bat da. Duzu agian imagine-- bezala delako bulego orduetan eta bisualen etatik eta bideoak dugu agerian horrela urrun CS50 hain zuzen ere, ondorioz, parte hartze gisa izan eta gisa kooperatiba eta gizarte gisa ahalik. Parte hartze gisa zorrotza baita. Baina honekin esan, heuristiko, curriculumaren en ikusi ahal izango duzu, dela arazo batzuk badituzu. Zure kodea akats batzuk duzu duzula ezin konpondu, zuretzat arrazoizkoa da Zure kodea beste norbaiti erakusteko. Lagun batek nahiz klasean, lagun bat duzu ondoan eserita bulegoko ordu, edo taldeko kide batek. Baina ez dute euren kodea erakusten duzun arte. Beste era batera esanda, antolaketa Zure question-- erantzun Behar dut help-- ez oh, hemen nire kodea. Take begirada bat eta bertatik ondorioztatu duzuna izango da. Baina, noski, ez da modu bat, argi-jokoa sistema horren bidez erakutsi dut Nire kodea galdera bat izatea aurretik. Erakutsiko al didazu nire zure kodea galdera bat izatea aurretik. Baina, berriro ikusi curriculumaren aldeko non lerro hau da xehetasunak finagoa. Just orain irudi margotu eta gisa gardenki ahalik partekatu non daude azken urte hauetan dugu, honen Ad Kontseiluko kasuen kopurua da CS50 izan duen gorako azken zazpi urteetan. 14 berrienak jaitsiera hau kasu. Hartzen duten ikasleei dagokienez, 20 Zenbait ikasle bakoitiak izan zen Iraganeko jaitsiera honetan. Ez zen 33 gailurra ikasle duela urte batzuk. Horietatik askok, zoritxarrez dira ez da gehiago hemen campusean. Portzentaje gisa parte hartzen duten ikasleak class historikoki 0% urrutira % 5,3, hau da, bakarrik esan nahi hau da, urtero erronka bat. Eta hacia, zer egin behar da helarazi nahi dugu dd-- garela besterik FYI-- at konparatu ikasle horiek zuzentasuna batek lerro horren arabera honako hauek dira. Egungo alderatu egiten dugu iragana misioak guztiak aurka bidalketak iragan urte asko. Gehiegi ezagutzen dugu nola inguruan Google-i eta kodea repositories aurkitu online, eztabaida foroak online, lan-guneak online. Ikaslea bazara aurki daitezke, ziur aski ahal dugu egin damututa dugun bezain beste aurkitu. Beraz, zer curriculumaren ikusiko dituzu nahiz eta damua klausula hau. Zalantzarik gabe, ezin dut balioetsi, eta denok ditu langileek bezala ikastaroa egin izana hau, edo hau bera bat denboran zehar, zalantzarik gabe jakin zer ekarriko denean bezala bizitza modu duzunean lortzen Gauean berandu batzuk deadline-- Ez bakarrik klase honetan, baina another-- zaudenean erabat agortu, azpimarratu, inordinate zenbakia izan beste gauza egin. Uneren batean egin ahal izango duzu bizitza zalantzarik txarra, agian berandu Gau erabakia. Beraz, curriculumaren arabera, han klausula hau da, besteak beste, horren barruan bada 72 hartzeko orduak Erabaki batzuk pobreak, sortu duzu jabea bertara eta iristea me eta ikastaro buru bat eta elkarrizketa bat izango dugu. Gauzak maneiatu ahal izango dugu barrutik itxaropenak ren bat gehiago bilakatu da irakaskuntza une edo bizitza ikasgaia, eta ez zerbait Adar askoko bereziki zorrotzak grafiko horiek hemen dezakezun bezala. Beraz, tonu oso larria da. Dezagun, besterik gabe, batzuk gelditu gurekin segundo tentsioa hausteko. [Musika jotzen] DAVID J. MALAN: Ondo da, beraz, nola izan zela segue bat? Gaur egungo lehen gairik. Horietatik lehena abstrakzioa da. Horietako beste bat da izango da datuak, Egia ordezkaritza esaten nola modu benetan lehor bat dugun ahal arazoak konpontzeko eta pentsatzen joan arazoak konpontzeko zer? Beraz, Scratch ikusi duzun, eta duzun agian dagoeneko ikusi pset1 ere C-rekin ez hori bakarrik erabili ahal izango duzu funtzio, printf bezala, beste jende urte iragan zuretzat idatzi zuen. Ere egin dezakezu zure funtzioak idatzi. Eta nahiz eta ez duzu nahikoa Egin C, eta Egia pset1 saioa ez benetan den idatzi behar duzu zure egin funtzio arazoaren delako agian at gogorra bitartean Lehenengo glance-- ikusiko duzu ahal izango da, azken finean konpondu Ez kode lerro guztiak, asko. Baina, esan zuen, termino Zeure funtzioa idazteko, konturatzen C duela eman you gaitasun hau. Gaur egungo iturri-kodea ere joan naiz, bertan eskuragarri dago dagoeneko konektatuta, eta aurrera, eta irekia joan noa Funtzio 0.c izeneko programa bat sortu, eta zero funtzioa ere gauza batzuk ikusiko ditugu. Lehenengo lineak 18 bidez In 23 nire funtzio nagusia da. Eta orain dela irakurtzen hasten ari gara Oraindik ez dugu hegan kodea idatziz, baizik eta ez dut aldez aurretik idatzizko edo arazo bat ere ezarri duzun beharrik jaso dezake dira, aldez aurretik idatzita. Hasteko modu ona norbaiten kodea irakurtzean da funtzio nagusia bilatzeko. Irudikatu non sarrera Puntu programa martxan da, eta, ondoren, jarraitu ezazu logikoki bertatik. Beraz, programa hau, itxuraz, grabatuak zure izena eta ondoren bi puntu. Erabili dugu GetString CS50 liburutegia kate bat, edo hitz edo esaldi bat lortzeko teklatua erabiltzaileari. Eta gero, ez da hau Gauza hemen PrintName. Orain PrintName ez da bat duten C. dator funtzio Ez io.h. da Ez cs50.h. It Izan beharrean fitxategi berean. Iragarki joan I behera bada a bit-lerroak eta 25 27-- bakoitza euro komentatuz modu polit bat besterik ez da Zure kodea izarrak eta barrak erabiliz. Hau-line multi da komentatzeko, eta hau besterik ez Nire deskribapen urdinez Funtzio honek duenaren. Zeren eta, lineak 28 31 bidez; Funtzio super sinple bat idatzi dut horren izena PrintName da. Hartzen du zenbat argudioak esango zenuke? Beraz, argumentu bat ez da bat delako Argumentu parentesi barruan zerrendatu. Zein motatakoa den String da. Zein da PrintName esateko kutxa beltz hau bezalakoa da edo hori hartzen funtzioa kate bat sarrera gisa. Eta katea izenarekin erosoan izena izango da. Ez da S, ez N, baina izena. Beraz, zer egiten du PrintName? Polita erraza da. Just kode lerro bat bezala printf du, baina, antza, grabatuak out "Kaixo", beraz, eta abar. Non da beraz, eta, beraz, Argumentu dator. Orain hori ez da berrikuntza handi bat hemen. Egia esan, hori ezin izan programa bat hartu dut idatzitakoak dira kode-lerro batekin hau hemen jarri arabera, eta aldatu den zerbait dakar batzuetan sei edo zazpi edo beraz, Kode lerro modu guztiak behera hemen. Baina baten praktikatzen da Printzipioz abstrakzioa bezala ezagutzen. Kind of laburtzen berri baten barnean den izena dutenak funtzioa, eta hobeto oraindik izen hori literalki dio zer egiten duen. Printf ez da hori esan nahi dut bereziki deskriptiboa. Bat sortu nahi badut puzzle pieza, edo badut funtzio bat sortu nahi duen norbaiten izena bistaratzen, Hau egiten edertasuna da, benetan ahal izango dut funtzioa duen izen bat eman dela zer egiten duen azaltzen du. Orain hartzen sarrera bat egiten duten Arbitrarioki dut izeneko izen-abizenak, baina hori ere ez da wonderfully deskriptibo ordez apur bat gehiago izatearen S. Eta atsegin generic hutsunea, oraingoz, besterik gabe esan nahi duten funtzio honek ez du entregatu me back ezer. Ez da GetString gustatzen literalki nirekin kate bat atsegin zuen paper zatiak egiten dugu Zure ikaskideekin azken aste batera, baizik eta, besterik gabe, bigarren mailako efektu bat du. Pantaila zerbait bistaratzen da. Beraz, egunaren amaieran, badut ez egin funtzio-0, ./function-0, ikusi nire izena galdetzen dela ikus dezakegu. David idatzi dut, eta mota my name out. Berriro egin dut bada, Rob, nik esan du "Hello, Rob". Beraz, ideia sinple bat, baina agian honek adimen etatik estrapolatu zure programak lortu duen apur bat zailagoa, eta pusketa bat idatzi nahi duzun kodea eta dei hori kode invoke deskriptibo batzuk kode dagoela PrintName bezala izendatzeko, C ez du ordaindu digu gaitasun hau. Hona hemen beste adibide erraza da. Adibidez, sortu bat irekitzen badut return.c izeneko gaurtik fitxategia, konturatu hemen zer egin dut. Funtzio nagusia honen gehienak printf da. I lehen arbitrarioki hasieratu bat aldagai kopurua 2 x deitu. I ondoren, inprimatu "x da gaur % I "x balioa pasatuz. Beraz, besterik ez dut zer den esaten. Orain besterik boldly naiz printf batera jarriz. Balioa x duten cubing naiz, eta ez naiz Horrela eginez funtzio bat deituz Kubo pasatuz izeneko x argudio gisa, eta, ondoren, irteera aurreztea aldagai bera ere, x. Beraz, x balioa clobbering naiz. Etorri naiz gainidazteko x-ren balioa edozein dela deituz emaitza kubo funtzioa hau da. Eta gero, besterik ez dut inprimatu batzuk fluffy gauzak hemen zer egin nuen esaten. Beraz, zer ondoren kubo da? Ohartu zer da, funtsean, desberdinak hemen. Funtzioa ematen dut Izen bat, lehen bezala. Izen bat zehaztu dut argudio bat da. Oraingoan deitzen n izenaren ordez, baina ez dut ezer nahi dut deitu daiteke. Baina hau desberdina da. Ezkerreko gauza hau. Aurretik zer keyword izan da? Boys. Orain, jakina, int da. Beraz, zer agian hartuko da kanpoan? Void ondorioztatzen Berriz Ordena ezereza, eta hori horrela izan zen. PrintName ezer itzuli. Zerbait egin zen, baina ez zuen entregatu me back duen gainean jarri ahal izan dut zerbait ezkerreko eskua zeinu bera izan baitzen alde bezala egin dut hemen on line 22. Beraz, esan nuen on line 30 sartu bada, zer da hori ziurrenik ulertuta zer kubo inguru niretzat ez? Bai? Zenbaki oso bat itzultzen du. Beraz, me eskuak atzera, alde Esate baterako, paper zati bat horren gainean erantzuna idatzi ditu bertan. 2 cubed, edo 3 cubed, edo 4 cubed-- edozein dela ere pasa nuen, eta nola bete nuen hau? Beno, n aldiz n aldiz n dagoen balio bat nola kubo dut agian. Beraz, berriro ere, super simple ideia, baina erakusleak orain nola funtzio idatzi ahal izango dugu dela benetan izan gaituena agian interesgarri izan baloreak. Dezagun azken adibide batean Hemen funtzio bat deitzen. Adibide honetan, hasiera- gehiago sinesgarria lortzeko. Beraz, funtzio bat ere, hau programa oharra, azken finean, GetPositiveInt izeneko funtzio bat deitzen. GetPositiveInt ez da bat CS50 liburutegia funtzioa, baina guk erabaki genuen nahi existitzen da. Beraz, behera joan gara geroago fitxategian badago, nabarituko nola gauzatzeko buruz joan nintzen int positiboa lortzeko, eta I Esan gehiago sinesgarria da hau da duina delako Kode lerro kopurua. Ez besterik ez da silly little jostailu programa. Benetan lortu error egiaztapena batzuk eta zerbait gehiago erabilgarria. Beraz ez dituzun gidatua ikusten bada pset1 hasi garela barneratua dute bideoak, jakin hori mota bat da C begizta, espiritua antzekoak Gauzak Scratch mota egin daiteke. Eta egiten dio hori egin. Bidali out. Ondoren, aurrera eta n-- Int bat lortu eta gorde n, eta mantentzeko honetan, behin eta berriro, eta egiten ari Berriro hain luze n bezala, bat baino txikiagoa da. Beraz, n da bat baino gutxiago izango da humanoa ez lankideen bada bakarrik. Zuen gero edo zuen idazten da 0 edo -1 edo -50 ere, begizta hau da, mantendu egingo behin eta berriro exekutatzean. Eta azken finean, nabarituko, I Besterik gabe, balioa itzultzeko. Beraz, gaur egun funtzio bat dugu duten polita egon zen CS50 ezarriko balitz CS50.h eta CS50.c zuretzat, baina hemen orain ahal dugun hau ezartzeko geure buruari. Baina gakoa xehetasun batzuek bi iruzkinak. One-- zergatik int deklaratzeko I n, uste duzu, on line 29 ordez egiteko hau hemen, hau da, gehiago koherentea joan den astean zer egin dugu? Bai? Pentsamendu A ona. Hala bada, jarri ginen Hemen, hori bezain larria da mantentzeko, behin eta berriro deklaratzen. Eta bera Alegia ez problematikoa, per se, bakarrik behar dugulako balioa behin eta, ondoren, berri bat, hala ere lortu dugu. Baina pentsamendu onak. Bai? Itxi. Beraz, I n deklaratu delako line 29 Begizta kanpo, osoan eskuragarria da Funtzio hau guztia. Ez du beste funtzio delako n dago oraindik kizkur horiek barruan hemen giltza. So ziur. Zehazki. Beraz, hau da, nahiz eta puntu gehiago. Ordez deklaratu badugu n hementxe on line 32, problematikoa etxebizitza delako non bestela sartzeko behar dut? Linea 34, eta on- Thumb arau sinplea da zuk bakarrik erabili ahal izango duten aldagai bat berrienak giltza kizkur barruan bertan deklaratu duzu. Zoritxarrez, line 34 lerro bat da beranduegi, Nik dagoeneko delako itxia on line 33 kizkur giltza duten dagokio on line 30 kizkur giltza. Eta, beraz, hau esateko modu bat da aldagai int hori scoped da, nolabait esateko, barruan soilik horiek kizkur giltza. Ez besterik ez du haiekin kanpo existitzen. Beraz, egia esan, ez dut hau oker, utzi kodea gorde me gaizki is-- da idatzita bezala. Dezagun aurrera eta ez egin Funtzio-1, eta abisua error. Of undeclared identifikatzailea n Erabilera on line 35, hau da, hemen. Eta gora joan gara aurrerago, beste bat. Undeclared erabilera Identifikatzaile on line 34 n. Beraz, konpiladorea, Clang, da ohartu dela besterik existitzen ez den arren argi eta garbi, ez da ikusmen. Beraz fix sinple bat geratuko da han. Orain utzi korrituko me fitxategia goialdean. Zer joango duzu hainbat bezala apur bat desberdina izatea gauzak tik begiratu astetik dugu? Ez bakarrik ez daukat izena, ez bakarrik egin Zorrotz batzuk sartzen dira, goiko sortu behar dut, Zerbait naiz daukat prototipoa deituz. Orain dela awfully antzekoa zer besterik ez duela une bat ikusi genuen on line 27. Hargatik ondoriozta batetik en Errore mezua zergatik egin dut. Dezagun aurrera eta lerro hauek ezabatu ez. Eta beraz, prototipoa buruz ezer ez dakigu. Fitxategi hau remake. Egin funtzio bat. Eta orain, madarikatua, lau akatsak. Dezagun joan lehena izateko. Inplizituak funtzioa deklarazioa int positiboa lortu C99 in baliogabea da. C99 besterik 1999 esan nahi du hizkuntza-bertsio C, eta hori da, hain zuzen ere ari gara erabiliz. Beraz, zer esan nahi du horrek? Beno C eta zehatzago C pretty muda programak compilers-- dira. Zer duzun bakarrik ezagutzen dute esan zien, eta hori da, benetan gaikako astetik. Arazoa da, I joan bada hemen izena ezartzeko up buruz, eta izeneko funtzio bat deitzen dut GetPositiveInt hemen on line 20, funtzio hori teknikoki ez du existitzen konpiladorea line 27 ikusten duen arte. Zoritxarrez, konpiladorea da Gauzak Gora, behera, ezkerrera, eskuinera eginez, ez delako ikusten, beraz, GetPositiveInt ezartzeko, baina zuk nahian ikusten da Hemen da erabili ahal izateko sortu, besterik Yell bail-- joan errore batekin duzu agian message-- críptica, eta ez benetan fitxategia konpilatu. Prototipoa deiturikoak sortu a So Hemen da admittedly erredundantea. Literalki, behera joan nintzen eta hemen ditut kopiatzen eta itsatsi hau, eta bertan jarri dut hemen. Void gehiago egokia izango litzateke, beraz zaitugu literalki kopiatu eta itsatsi oraingoan. Literalki kopiatzen eta itsatsi. Benetan, besterik gabe, ogi mamia bat bezala bezala. Konpiladorera Argibide txiki bat. Ez dakit zer honek oraindik, baina zuk zin naiz azkenean dela existitzen izango da. Eta faktore hau ere lerroan lerro saioa 16 puntu eta komaz bukatzen. Diseinuaren arabera erredundantea da. Bai? Ez duzu lotzeko zure liburutegian bada the-- to oh, galdera ona. Sharp sartzen dira goiburu fitxategi inklusio. Ia beharko lukete jolasten behar Beti oso goian izango for similar-- baterako Fitxategiaren zehazki arrazoi bera, bai. Estandarra delako io.h da, hitzez hitz, lerro bat Hau atsegin, baina hitza printf batera, eta bere argudioak eta bere itzulera mota batekin. Eta, beraz, zorrotzak eginez, besteak sortu hemen, zer ari zaren literalki egiten kopiatu eta testua itsasteko norbaitek goiko beste idatzi zuen gora. Horrela, zure kodea cluing egin ahal izateko Izan ere, funtzio horiek egiten existitzen. Bai? Inolaz ere. Beraz, oso argia eta zuzena konponbidea litzateke, zer ezagutzen duzu? Ez dakit zer bat prototipoa da, baina badakit ulertzen dut C hori besterik ez bada muda eta goi birpentsatu behera. Beno dezagun ematen zer nahi. Dezagun moztu kodea duten, itsatsi sortu goian, eta orain bultza behera beheko nagusiak. Hori ere arazoa konponduko litzateke. Baina ezin duzu oso erraz asmatu dituzten Agertoki horretan, A B deitu behar, eta, agian, B deiak atzera A. Hau errekurtsio zerbait deitzen da, eta etorri egingo dela itzuliko gara. Eta hori daiteke edo ez izan ona Gauza da, baina zalantzarik gabe, ahal duzun apurtu irtenbide hau. Eta gainera, nuke diotenez, estilistikoki, batez ere, zure programak luze honetan eta epe hau bihurtu da, besterik super erosoa da nagusiak jarri goialdean gauza delako gehien programatzaileak dira zaintzeko buruz joan. Eta horrela garbiago txiki bat da, dudarik gabe, egin behar den bidea Jatorriz egin dut Prototipo batekin nahiz pixka bat ikusten da, nahiz Lehen begiratuan erredundantea. Bai? Barkatu, ezin da ozenago esan duzu? Kokapenak aldatzen baduzu ezarpena eta prototipoa? Beraz, galdera ona da. Baduzu hau berriro aldarrikatu behera Hemen, ikus dezagun zer gertatzen den. Behera hau jartzen dut, hala bada Hemen, esaten ari zaren. Oh, barkatu. Ozenago? Nahiz eta ozenago. Oh, galdera ona. Litzateke baliogabe da funtzioa? Badakizu, urte hauetan guztietan ondoren, I sekula jarri prototipoa gutxira dute. Beraz, egin funtzio-1 egin dezagun duten egiten ondoren. [Marmarka] DAVID J. MALAN: Oh, itxaron. Oraindik guztia jarri goiko sortu ditugu. Beraz, egin dezagun hemen, naiz bada utzi Zure galderari behar bezala ulertzeko. Dena jartzen ari naiz, besteak beste, nagusiaren gainetik prototipoa, baina prototipoa naiz jarriz ezarpena azpian. Beraz, bat egiten badut, dut back bat errore unused aldakorreko n. Oh, ez. Eskerrik asko. Ikus dezagun, hori lortu dugu kentzeko. Hori desberdina bug bat da, beraz, utzi alde batetara utzi. Dezagun azkar remake hau benetan. Ados, beraz, datuak argumentua ez formatu String erabilitako n-- oh, hori delako Aldatu horiei dut hemen. Ondo da, badakigu zer erantzuna da zaie guztiak ondo joan, hemen dugu. Ah, positibo esker. Ondo da, kode hau konpondu egingo dut after-- bug zehatz honetan alde batetara hau was-- funtzionatzen duen zenetik erantzuna da. Beraz, ez du gainidatziko zer besterik ez duzun egin. Konpiladoreak susmoa dut hau da, besteak beste, modu batean idatzita dela zure prototipoa jaramonik da gorputza delako, nolabait esateko, funtzioa dauka dagoeneko ezarri dira gorago. Benetan kontsultatu behar nuke konpiladoreak eskuliburua ulertzeko, ez da beste edozein bada inplikazioa, baina, lehen begiratuan besterik nahian eta probatuz, ez dirudi eraginik ez izateko. Ona galdera. Hargatik burdinola aurretik orain, mugitzen Bigarren mailako efektuak kanpoan zein dira antzeko zerbait egin duten funtzioak ikusmen printf batera pantailan, baina ez dute baliorik itzuli. Eta funtzio duten bueltan dugun bezala balioak besterik ikusi batzuk. Dagoeneko esparrua nozioa ikusi dugu, eta hau ikusiko behin eta berriro diogu. Baina orain, berriz ere, Thumb araua erabili aldagai bat besterik ezin da erabili Azkenekoz irekitako barruan eta giltza kizkur itxiak dugun bezala Adibide jakin horretan ikusi. Eta adierazi duzun bezala, ez ability-- da Arazo horietako batzuk konpondu ahal izango duzu aldagai bat orokorrean jarriz fitxategi baten hasieran zenbait. Baina ia kasu guztietan haren genuke frown, eta hain zuzen ere, ez baita joan oraingoz konponbide horretan. Beraz, oraingoz, eramateko dela aldagai esparrua nozioa dute. Baina orain, dezagun begiratu bestean benetan begiratzeko modu lehorra batzuk nahiko interesgarria at ezartzeko xehetasunak. Nola informazioa adierazten dugu, agian. Eta dagoeneko honetan jakin nahi izan dugu klaseko lehen astean. Bitarrak begira, eta geure buruari gogoraraziz hamarrenekin. Baina astetik gogoratzen C duela Datu mota eta sortak gehiago ezberdinetan, baina gehien erabilgarria direnak oraingoz horiek izan daiteke. A char, edo pertsonaia, eta hori gertatzen byte bat, edo zortzi bit guztira izateko. Eta hori da, haren neurria dela esan char byte bat besterik ez da. Byte A zortzi bit dituenez, horrek esan nahi du karaktere zenbat ordezkatzen dezakegu. Zenbat gutun edo Teklatuko sinboloak byte bat edo zortzi bit daukagu ​​bada. Think astean zero itzuli. Zortzi bit bada, zenbat balio osoa ahal ordezkatzen dituzun zeroen eta bai eredu? Hau baino gehiago One--. Beraz, guztira 256 baduzu hasteko zero hasita. Beraz baldin baduzu zortzi bit beraz badugu up hemen berriro gure bonbillak bitarra izan, bonbilla horiek piztu genezake eta 256 ereduak berezia edozeinetan off. Orain hau da, pixka bat problematikoa. Ez da, beraz ingelesez eta askoz hizkuntza erromantzeen, baina, zalantzarik gabe, denean aurkezten duzu, Esate baterako, Asian hizkuntzatan, eta horrek bezalako baino sinboloak askoz dute 26 alfabetoaren hizkiak. Benetan behar dugu agian byte bat baino gehiago. Eta zorionez in Azken urteotan ditu gizartean erabiltzen duten beste diren estandar karga bakoitzeko byte bat baino gehiago. Baina orain C, lehenetsia byte bat edo zortzi bit besterik ez da. Zenbaki oso bat, bere aldetik, lau da byte, bestela, 32 bit bezala ezagutzen. Horrek esan nahi du, zer da posible handienetako zenbakia dugu int batekin adierazten ahal itxuraz? Milioi batekin. Beraz, lau milioi eman edo hartu da. 2 32th boterera, badugu suposatuko zenbaki negatiboak ez eta besterik gabe erabili positibo guztiak zenbakiak, lau mila milioi da eman edo posibilitate hartu. Karroza, bere aldetik, mota bat da Datu mota C. da zenbaki bat oraindik, baina zenbaki erreal bat da. Dezimal batekin zerbait. Eta bihurtzen da C Ere lau byte erabiltzen puntu mugikorreko balioak adierazteko. Zenbat Zoritxarrez flotatzen puntu balio daude munduan? Zenbat benetako zenbakiak daude? Ez dago infinitua zenbakia, eta gai horren ez osokoak kopurua infinitua da. Beraz, dagoeneko ari gara motatako geure burua Jaurlaritzak zulo bat aurkitu. Horren bidez, itxuraz computers-- at C idatzitako them-- an gutxienez programak bakarra bezala handiko gisa zenbatu ahal lau milioi eman edo hartu, eta puntu balio flotatzen itxuraz soilik doitasun kopuru finitu batzuk. Digituak hainbeste Only ondoren beren dezimal. Zeren eta, noski, bada 32 bit besterik ez duzu, Ez dakit nola ari gara buruz joango gara benetako zenbaki ziurrenik ordezkari ereduak mota ezberdinak dituzten. Baina ez dago ziur finitua ereduak, besteak beste, zenbaki, beraz, hemen ere, hau problematikoa da. Orain arazoa zertxobait saihestu ahal izango dugu. Ez baduzu mugikor bat erabili, bikoitz bat erabili ahal izango duzu C, eta horrek zortzi byte, ematen dizuten zeroen ereduak ahalik eta modu gehiago dagoen eta direnak. Baina oraindik finituen, que va arazo batzuk software idatzi baduzu grafiko edo fancy formula matematikoak. Beraz, benetan dezakezu nahi sortu baino handiagoa zenbatu. Luze long-- stupidly named-- da, halaber, zortzi byte edo 64 bit, eta hau da, bi aldiz denbora int gisa, eta osoko balio luze bat da. Fun fact-- bada int lau byte da, zenbat denbora da C normalean luze bat? Era berean, lau byte, baina a luze zortzi byte da, eta hau arrazoi historiko da. Baina eramateko orain besterik ez da datu hori du ordenagailuan bat hori da aztertu nahi den elektrizitatez gailu fisiko bat, Da, oro har, gidatzeko zero horiek eta ones-- doitasun-kopuru finitu batekin. Beraz, zein da arazoa orduan? Beno arazo bat da zenbaki oso gainezkatze-ko. Ez bakarrik C, baina ere oro har, ordenagailuak. Esate baterako, hori bada byte bat merezi bit bat beraz, hau da, zortzi bit guztiak galtzen horietatik zenbaki bat daude. Zein zenbaki da hau onartzen baldin badugu ordezkari bitarretan balioak positibo da? 255, eta ez da 256, delako zero kopuru txikiena da. Beraz, 255 altuena da bat, baina arazoa Suposatzen da nahi dut Kontatzailea aldagai hau erabiliz zortzi bit osotara da Kontatzailea nahi badut. Beno I gehitu bezain laster batean direnak horien guztien artean, duzu agian imajinatu ahal visually-- besterik Bat decimals-- erabiliz egitea bezalako zerbait nahi duzun joko luke egingo. Eta hain zuzen ere, kopurua gehitu badut gainera batek, zer bitarretan gertatzen da zero itzuli gainezka zela. Beraz, ez bakarrik dituzu, erabili bada int bat, baina byte bakar bat osokoak zenbatzeko programa batean, ahalik eta azkarren lehenespenez lor 250 to you, 251, 252, 253, 254, 255-- 0 255 ondoren dator, eta litekeena da zer Erabiltzaile bat espero da joan. Orain berriz puntu mundu mugikorrean lan egitean, halaber, antzeko arazo bat duzu. Ez da, beraz, zenbaki handiena duten askoz nahiz eta hori da oraindik arazo bat. Baina zehaztasun zenbatekoa ditzakezun irudikatzeko. Beraz, dezagun begirada bat adibide honetan hemen ere, gaur egungo iturri kode-tik karroza-0.c. Eta konturatu super bat da programa sinple duten itxuraz inprimatu behar zer balio? Zer da hau inprimatzeko joan apustua ez da sintaxia berriak pixka bat nahiz hemen? Beraz, espero 0,1. Beraz hamarren baliokidea egiten ari naiz 1 10 arabera banatzen delako. Erantzuna gordetzeko naiz aldagai batean izeneko f. Aldagai hori mota karroza, dena bertan proposatu besterik ez dut keyword bat existitu da. Ez dugu ikusi aurretik, baina hau da printf modu txukun bat mota digituak zenbat zehaztu behar duzu nahi dezimal baten ondoren ikusi. Beraz, idazkera hori esan nahi hemen leku-marka bat da. Puntu mugikorreko bat da balioa, eta oh, bide batez, erakutsi berarekin dezimal batera dezimal ondoren zenbaki bat. Beraz, kopurua da digituak esanguratsuak, nolabait esateko, agian nahi duzula. Beraz, aurrera eta egin ninduen karroza-0, ./float-0, eta itxuraz 1 10 arabera banatzen 0,0 da. Orain zergatik da hau? Beno, berriro ere, ordenagailua hartzen ari da me literalki, eta idatzi dut 1 eta idatzia dut 10, eta etxebizitza bat hartu zer Datu gain hartu mota bi horientzat da baloreak? Int bat, teknikoki Zerbait ezberdina. Da normalean luze bat, baina hemen azken finean, balio integrala. Ez da koma mugikorreko balio. Hots, hori bada Int bat da eta hau int bat da, arazoa ordenagailua dela ek ez dute gaitasuna hamartar puntu hori, nahiz eta gordetzeko. Beraz, ez duzu 1 banatuta 10 osokoak erabiliz bai zenbakitzailea eta for izendatzaile, erantzuna 0,1 izan behar du. Baina delako ordenagailua horiek dira zenbaki osoen ez daki zer den 0,1 zerikusirik. Beraz, zer da argi eta garbi egiten du? Da, besterik ez bota, eta azken finean, zer ikusten dut 0,0 da azpimarratu dut bakarrik delako printf erakutsi hamarren bat. Baina arazoa dela, duzu bada zatitzea zenbaki oso bat zenbaki oso bat, egingo definizioz get-- duzu osoko C. Eta hori egingo ez dutena zerbait polita eta erosoan biribiltzeko erabakitzen ditu bezalakoa hurbilenera bat gora edo behera. Honez moztu joan dena hamartar ondoren. Beraz, besterik gabe, intuizioa, zer da ziurrenik konponketa bat? Zer da errazena fix hemen? Bai? Zehazki. Zergatik ez dugunean ere, besterik gabe, horiek bezala puntu balio flotatzen eraginkortasunez horiek inflexio karroza edo bikoitzak sartu. Eta orain egin egiten badut karroza-0, edo karroza-1 konpilatzen badut, hau da, berdin- zer besterik proposatu zen. Eta orain egin dudan karroza-0, orain nire 0.1 zait. Orain hau harrigarria da. Baina orain ez dut egingo Zerbait ezberdina. Bitxia naiz, zer da benetan ikusi dut den gertatzen kanpaia azpian, eta hau inprimatu noa out 28 hamartarrekin. Benetan ikusi nahi dut 0.1000-- infinite-- bat [INAUDIBLE] 27 zeroen 0,1 ondoren. Beno, ikus dezagun hori bada zer, hain zuzen ere lortu dut. Egin karroza-0 fitxategi berean. ./floats-0. Dezagun zoom erantzun dramatikoa. Denbora horretan guztian, egon zaren pentsatzen 1 10 arabera banatzen da:% 10, edo 0,1 da. Ez da. Gutxienez, orain arte bezala, ordenagailuaren kezkatuta. Orain why-- Ados, hori bukatuta gezur 1 10 arabera banatzen 0,1 da. Baina why-- ez dela gaur takeaway. Beraz, zergatik nahi du ordenagailua, guztiok gela batean ez bezala, duela 1 10 arabera banatzen da benetan crazy balio hori? Zer da ordenagailua itxuraz egiten? Zer da hori? Ez da gainezkatzea, per se. Overflow normalean denean balio bat inguruan biltzeko duzu. Imprecision ale hau da koma mugikorreko balio saioa non bakarrik 32 duzu edo agian 64 bit. Baina ez da infinitua bada benetako zenbakien kopurua hamarren dituzten zenbakiak eta zenbakiak hortik aurrera ziur aski Ezin duzu adierazten denak. Beraz, ordenagailua eman Gurekin partidaren hurbileneko balioari, hori erabiliz adierazten ahal balioa benetan nahi dut bit asko, horietatik 0,1 da. Zoritxarrez, nahi baduzue hasten math egiten, edo hasteko flotatzen mota hauek parte hartuko dute point programak garrantzitsuak diren balioak software finantza, militar software-- ezer non pertzepzioa da seguruenik nahiko garrantzitsua. Eta gehituz hasten zara Honen antzeko zenbakiak, eta hasiera software exekutatzen Sarrerek benetan handiak edo ordu edo asko asko egiteko egun edo asko urte dituen, apur akats txiki-txiki horiek ziur asko gehi daitezke denboran zehar. Orain alde batera utzita, duzun inoiz bada ikusi Superman 3 edo Office Space eta agian gogoratzen duzu nola guys horiek lapurtu Diru asko bere ordenagailutik puntu mugikorreko-balioak erabiliz eta gutxi gora gehituz hondakinak, zorionez, film horretan orain gehiago zentzuzkoa. Hau da, zer izan ziren film horretan aipamenak. Izan ere, gehienek enpresek ez lukete begiratu kopuru jakin baten ondoren hamartarren, baina horiek zentimo frakzioa. Beraz, horiek gehituz hasten zara up, Diru asko egiten hasten zara Zure banku-kontuan. Beraz, Office Space azaldu. Orain zoritxarrez haratago Office Space, han hemen batzuk legitimoa troubling eta eragin esanguratsuak mota horiek Diseinu azpiko erabakiak, eta hain zuzen ere, arrazoi bat C erabiltzen ditugu ikastaroan dago, beraz, benetan lurrean hori duzun ordenagailuak nola lan ulertzeko sortu, nola software lan egiten du, eta ez ezer ematen. Eta hain zuzen ere, tamalez, are gehiago, oinarrizko ulermena dela, dugu gizakiak akatsak egin. Eta zer partekatu dut pentsatu nuen da Zortzi minutuko bideo hau hemen hartu Marvels Modern pasarte bat, hau da bertatik gauzak nola lan buruzko hezkuntza-programa baten duten bi irudiak margotzen of bidegabeko erabilera bat denean eta ulertzeko puntu balio flotatzen esanguratsu batzuk ekarri emaitzak zorigaiztoko. Ikus dezagun begirada bat. [Bideo-erreprodukzioa] -Gu Orain "Ingeniaritza itzultzeko Hondamendi "Marvels Modern. Informatika. Dugu onartzeko askotan frustrating arazoak them-- bugs, birusak lortu, eta software prezioak txikiak glitches-- to erosotasuna ordaintzeko. Baina maila handiko eta abiadura handiko aplikazio militar eta espazioa programa, txikiena ahal arazoa daiteke Hondamendi sartu magnified. Ekaina 4, 1996, zientzialari prestatu gidatu gabeko Ariane 5 suziri bat abiarazteko. Zientifiko zen egitea sateliteak diseinatu hain zuzen, nola eratzen, Lurraren eremu magnetikoaren elkarreraginean haize eguzki. Suziria eraiki zen Europako Espazio Agentziak, eta altxatzen off bere instalazioak from Frantziar Guyana kostaldean. 37 segundotan sartu ohi duen hegaldia, dute lehen nabaritu zerbait oker joan zen. Pitak biraketa ziren modu bat, benetan behar ez badute. 40 segundotan sartu hegaldia, argi eta garbi, ibilgailuaren arazoak izan zen, eta orduan egin zuten erabakia suntsitu arte. The sorta segurtasun ofizial, batera izugarria tripak, sakatzen botoia eta nintzen suziria baino lehen herritarren segurtasunerako arrisku bat bihurtu da. -Honek Dontzeila zen of Ariane 5 bidaia, eta bere suntsitzea tuvo jarri delako flaw suziria softwarea barneratua. Buruzko arazo -The Ariane zela han Eskatzen zenbaki bat izan zen 64 bit, adierazteko eta bihurtzeko nahi zuten 16-bit kopuru bat behar da. Bere gain hartu kopuruan dutela ez zen inoiz oso handia izango da. Hori digituak horietako gehienetan 64-bit kopuruaren zeroen ziren. Oker ziren. Bat imposibilidad -The software programa onartu sortutako zenbaki mota porrota erro at beste izan zen. Software garapena asko bihurtu bat teknologia berrien oso garestia. Ariane 4 suziria Oso arrakastatsua izan da. Beraz, sortutako software askoz gainera, Ariane 5 erabili zen. Oinarrizko arazoa -The Ariane 5 zela. Zen faster-- bizkortu azkarrago, eta software ez zuen hori kontuan. Suziria suntsitu -The finantza hondamendia izugarria izan zen. Guztiak ondorioz minutuko software error. Baina hau ez zen lehen aldia datuak bihurketa arazoak izan beteta teknologia modernoa suziria. Ezizenen 1991 hasierarekin batera Lehenengo Golkoko Gerra, Patriot misil mota antzeko bizitako zenbakia bihurtze arazo bat. Eta ondorioz 28 jendeak 28 American soldiers-- hil ziren, eta beste batzuk, ehun bat zauritu. Noiz Patriot izan zen ustezko sarrerako Scuds aurka babesteko, huts misil bat su. -Noiz Irak inbaditu Kuwait eta Amerikako abian jarri Desert Storm 1991 hasieran, Patriot misil bateriak ziren zabaldutako Saudi Arabia eta Israel babesteko Irakeko Scud misil erasoak. Patriot AEBetako gama ertaineko bat da azalera-aire sistema Raytheon enpresa manufakturak. Patriot tamaina -The interceptor bera buruz gutxi gorabehera 20 oinak luze da, eta 2.000 kilo pisatzen ditu. Eta buruz warhead bat egiten da, Uste dut gutxi gorabehera 150 kilo. Eta warhead bera da lehergai altua da, bere inguruan zatiak ditu. Beraz Warhead, karterra da Buckshot bezala jarduteko diseinatuta. Misil -The egiten dira edukiontzi bakoitzeko lau, eta erdi trailer garraiatzen. -The Patriot misil anti-sistema doa, gutxienez 20 urte. Jatorriz diseinatu zen aire defentsa misil gisa tiro behera hegazkinak etsaia. Golkoko Lehen Gerran denean gerra iritsi zen, Army erabili nahi nahi izan tiro behera Scuds, hegazkinak ez. Irakeko Air Force zen ez da hain arazo bat askoz, baina Armadak Scuds kezkatzen. Eta, beraz, saiatu behar dute Patriot berritzea. Etsai bat -Intercepting misil Mach 5 bidaiatzen zen joan ahal nahikoa erronka. Baina Patriot zerbitzua rushed, Armada ez zen jakitun Irakeko aldaketa bat dagoela beren Scuds egin ia da ezinezkoa. -Zer gertatu da Scuds dela ziren buruturiko ezegonkorrak ziren. Bobbly ziren. Horren arrazoia Iraqis-- zen Ordena 600 kilometro ateratzeko 300 kilometroko barrutia missile-- baten hartu pisua aurrean warhead daudelarik, eta egin warhead, arinagoa. Beraz, gaur egun Patriot-en, joaten ari Scud da, eta time-- gehienak the gehienek time-- besterik ez litzateke Scud bidez hegan. Patriot sistema operadore -once konturatu Patriot galdutako, helburua, Patriot warhead detonated dute Biktimak posible balitz saihesteko zen lurrera erortzen onartzen. Pertsona gehienek zer ikusi zen -Hori gisa zerua fireballs handiak, eta gisa ulertua Scud warheads atzematen. Gaueko zeruak, Patriots in -baina agertu ahal izango arrakastaz suntsitu Scuds, Dhahran han izan daiteke bere errendimendua buruz gola. Badira Patriot radar sistema sarrerako Scud baten pista galdu eta inoiz ez direla abian jarri software akats bat da. Israeldarrek lehen aurkitu nor izan zen duen sistema luzeagoa izan zen, denbora desadostasun handiagoa bihurtu zen. Dela kapsulatutako erloju bat sistema informatikoan. -Ezagutu Bi aste lehenago Dhahran tragedia, Israeldarrek nahi du Defentsa Sailak dela sistema denbora galdu zuten. Zortzi ordu inguru ondoren exekutatzen, ohartu ziren duen sistema bihurtuz nabarmen zehaztasun gutxiago. Defensa Sailak erantzun Patriot bateriak guztiak kontatzea sistemak ez uztea denbora luzez gainean. Sekula esan dute denbora luze bat izan zen. 8 ordu, 10 ordu, mila ordu. Inork ez zekien. Patriot bateria -The kuartel geldirik Dhahran eta bere flawed barneko at erloju polita ari buruzko 100 ordu baino gehiago Otsailak 25 gauean. Denbora arloak zehaztasun bat -It of segundo hamarren bat inguru. Orain bat segundo hamarren zenbaki bat interesgarria ezin da adierazi duelako bitarretan, zehazki, zein esan nahi du, ezin da zehazki adierazi edozein ordenagailu digital modernoak. Zaila dela uste da, baina erabili hau adibide gisa. Ikus dezagun hirugarren zenbaki bat. Hirugarren batek ezin izango hamartarrean adierazten zehazki. One hirugarren 0,333 da gertatzen ari da infinitua da. Ez da nahi duten egin, inola ere ez hamartar bat zehaztasun osoz. Hori da zehazki arazo mota dela Patriot gertatu. Sistema luzeagoa ran, okerragoa denbora error bihurtu zen. Eragiketa 100 ordu egin ondoren, etorri denboran error hirugarren bat bakarrik izan zen segundo baten. Baina bat targeting dagokionez misil Mach 5 bidaiatzen, segimendua batean 600 metro baino gehiagoko error. Errore larri bat izango litzateke Dhahran soldaduak da. Gertatu-Zer da Scud launch zen abisua hasieran detektatu sateliteen dira, eta Scud bat zetorrela bazekiten bere norabidea, oro har. Ez dakite non datozen zen. Izan da radar erabakitzen ditu Patriot sistemaren osagai Dhahran defendatzeko lokalizatu eta mantentzeko sarrerako etsaiaren misil pista. Radar -The oso argia zen. Benetan litzateke jarraipena Scud, posizioa eta, ondoren, iragartzeko non seguruenik, izango da hurrengo ordua radar pultsu bat bidaltzen. Hori izeneko gama atea zen. Patriot behin -Ondoren erabakitzen du denbora nahikoa du pasa atzera joan eta egiaztatu ondoan antzemandako objektu honen kokapena atzera egingo du. Beraz, atzera joan oker du! lekuan, objektu gabea ikusten da. Eta ez zela objektu ez erabakitzen du. Ez zela Detektatzeko bat faltsua eta pista jaisten da. -The Sarrerako Scud desagertu radar pantaila, eta segundo geroago, kuartel sartu danbateko. Scud The 28 lagun hil dira. Zen azkena marrazainak Lehenengo Golkoko Gerran. Tragikoki, eguneratu software egunsentian iritsi zen biharamunean. Software flaw izan izan finkoak, itxiera nahasia kapitulu bat Patriot misil historia. [END bideo-erreprodukzioa] DAVID J. MALAN: Hau CS50 da. Asteazkenean ikusiko dugu. [Musika jotzen]