[Musika jotzen] DAVID J MALAN: Ondo da, ongietorria itzuli CS50. Bi aste honetan hasiera da. Gure batetik hitza campusean lagunak - zauden interesatuta egonez gero, agian, bai orain edo etorkizunean, epe nahiz eta, behin erosoagoa, irakaskuntza SCHOOL ikasle apur bat informatika zerbait, do burua URL horretan. Beharra daude, batez ere, eskubidea dute, orain irakasleak, bereziki duzu izan zuen informatika esposizio batzuk. Beraz, azken aldiz gogoratzen dela, ez dugu sartu C-datuak gutxi motak, eta hasi ahal izango duzu zure eskuak horiek, beraz, oso urrun batera zikin arazo girotuta bat. Eta karaktere bat izan genuen. Beraz, termino tekniko samarra, zer karaktere bat da, ezagutzen duzun bezala, gaur egun? Beraz, pertsonaia bat da, baina ez dezagun zehatzago izango da orain. Zer esan nahi pertsonaia dugu edo banakako char? Ez Zenbakizko pertsonaia A - beraz, ez du nahitaez. Bihurtzen da, nahiz eta duten zenbakiak, nahiz puntuazio eta hizkiak dira Datu honekin irudikatzen idatzi karaktere bat bezala ezagutzen. Beraz, ez da nahitaez alfabetikoa. Bai? Beraz, ASCII karaktere bat da. Beraz, atzera uste duzu aste zero denean, gure boluntarioen byte izan dugu etorri eta bai beren esku eduki edo ez, bit irudikatzen dute. Baina kolektiboki zortzi talde gisa, byte bat irudikatzen dute. Eta ASCII kontzeptua sartu dugu hitzaldi hartan, eta hori besterik ez da, zenbakiak eta letrak arteko mapaketa. Eta ASCII erabilerak, baita gizakiak horiek inplikatzen, zortzi bit pertsonaia bat irudikatzeko. Beraz, horren arabera, zortzi bit ahal bada bakoitzean bi balio bat hartu - zero edo bat - direla esan nahi du bi aukerak Pertsona honek - zero edo bat - Pertsona hori, bi honek bi pertsona, hau da, bi. Bi aldiz, guztira, beraz, bi aldiz bi aldiz, bi aldiz bi - beraz, bi guztira, zortzigarren. Beraz, ez dago karaktere kopurua da 256 posible ahal duzun hori zortzi bit-ekin irudikatzeko. Orain, duzun hitz egiten dutenak Asian hizkuntza ez da gehiago jakin dezake munduko karaktere baino As eta Bs eta Cs eta Ds. Eta, hain zuzen ere, ASCII ez da nahikoa egiteko munduko hizkuntza asko. Baina hori beste garai on gehiago. Oraingoz, jakin C hori nahi ez baduzu gutun bat, pieza bat irudikatzeko puntuazio, edo zerbait pertsonaia naturan, karaktere bat erabiltzen dugu. Eta byte bat edo zortzi biteko da. Int bati buruz nola? Beno, int bat oso bat da. Zenbat bit, gogoratzen baduzu, zenbaki oso bat izan da normalean? Edozeinek gogoratzen? Beraz, normalean, ez da 32. Ordenagailuan benetan araberakoa erabiltzen ari zaren. Baina tresnari, eta asko hasi ordenagailuak, 32 bit edo lau da byte - zortzi aldiz lau. Eta besterik ez dira ints gordetzeko erabiltzen zenbakiak, bai negatiboak, positiboa edo zero. Eta duzun got bada 32 bit eta zu bakarrik zenbakiak positiboak buruzko laguntza, ahal Edozeinek BallPark zenbat posible osokoak ordenagailu bat irudikatu ditzakeen tik gora zero? Beraz, izango da 32 bi litzateke, eta horrek gutxi gorabehera lau mila milioi da. Bi eskumen hauek izango dira, beraz, joan ordenagailua zientzia gaiak behin eta berriro. Ikusiko dugun bezala, nahiko eroso ari dira behar bada ere, ez da nahiko du berarekin lan egin erraza math egiteko norberaren burua. Beraz, gutxi gorabehera lau mila milioi esan dugu. Orain, luze bat - etxebizitza mota dezakezu. Int bat baino luzeagoa da. Zenbat bit? 64 bit edo zortzi byte beraz. Honek esan nahi du, besterik adierazten are dezakezu handiagoa zenbakiak, handiagoa positiboa edo handiagoa negatiboak zenbakiak. Eta nola flotatzen? Duten puntu mugikorreko bat 32 bit balioa. Hau besterik ez da zenbaki erreal bat, zerbait a hamartar puntu ditu. Baina horren ordez, behar izanez gero, leku gehiago du dezimal ondoren, edo nahi duzun irudikatzeko batzuekin kopurua handiagoa ondoren frakzio, bat erabil dezakezu bikoitza, eta horietatik 64 bit da. Baina, ez da interesgarria eramateko hemen. Hala bada ints dira 32 bit eta mugatuta nahiz eta luze Longs dira 64 mugatuta bit, ordenatu duten galdera segurutzat jotzen, benetan zer nahi ezkero zenbatu 4 milioi int bat baino handiagoa? Beno, erabili besterik ez duzu luze bat. Baina, zer nahi duzu altuagoa zenbatzen bada bi baino 64 da, eman edo hartu? Orain, hori asko da. Baina azkenean, benetan dezakezu balore horiek zaintzeko, batez ere, datu-base bat erabiltzen ari zaren eta asko eta asko biltzeko hasita eta datu asko eta berezia esleitzea behar diren datuak pieza bakoitzaren zenbakiak. Horregatik, mota horretako arazo bat. Eta, era berean, puntu mugikorreko batera balio - karroza edo bikoitzak - duzun got bada bakarrik mugatu kopurua bit, zenbat guztira zenbakiak ezin duzu ziurrenik irudikatzeko? Beno, ez da horren argi dago duzunean inplikatzen hamartar puntu bat. Baina ziur finitua da. Daukazula bit kopurua finitua bat izanez gero, gizakiak kopuru finitu, mugatu bat bonbilla kopurua, ziur asko ahal duzun bakarrik mugatu kopurua puntu balio flotatzen. Baina zenbat benetako zenbakiak beren mundu osoan? Ez amaigabea. Beraz, hori arazo bat mota da dugulako ez dute infinitua zenbateko memoria edo gure ordenagailuak RAM barruan. Beraz, erronka zenbait gauza gerta daiteke. Hargatik, aurrera, saiatu hau adierazi nahi du hemen. Let me aurrera eta ireki gedit. Aurrera joan eta fitxategi batean gorde dut izeneko "floats0.c" besterik ez da, izan adibide bat dela koherentea eskuragarri online, Nahi izanez gero. Eta aurrera noa, eta definitzen da, honela - Aurrera joan eta esan dut, int nagusien hutsunea, askotan egiten dugun bezala. Eta, ondoren, programa honetan, noa deklaratzeko neure burua karroza bat, 32-bit, beraz, aldagai izeneko f, arbitrarioki. Eta, ondoren, bertan gorde dut Ez dakit, hamarren bat, beraz, 0,1. Beraz, adierazi nahi dut bat bezala 10 arabera banatzen da, hau da, ezin hobeto C. en legitimoa Eta, ondoren, bigarren lerroan, I, besterik gabe, nahi inprimatu balioa. Beraz, gogora ekarri ahal izango dugu erabili ezagunak printf. Ez dugu nahi,% i erabili behar int bat. % F erabili behar mugikor bat nahi dugu. Eta, ondoren, barra n egin nahi dut, itxi aurrekontua, koma, f, koma. Beraz, hemen nire programa da. Badago dagoeneko bug bat. Norbaitek norentzat honetan bertan klik egiten du dagoeneko nahi gutxienez puntu bug bat egin dut? Bai? Bai. Ahaztu dut "# include" hartan goian, eta horietatik saiatu naiz bada sintoma dira bildu hori izango dela konpiladorea da niri yell joan, undefined symbol edo esaten eragina duten zerbait. Ez du ulertzen zerbait printf gustatzen. Beraz, "egin behar # include dut "Fitxategia gorde. Eta orain forma hobea da. Baina, era berean naiz seinalatu joan ko berriak zehatz-mehatz, gaur egun. Leku zehaztuz gain % f% i% s titular bezala, egin dezakezu batzuetan eragina portaera leku hori. Esate baterako, ur gaineko baten kasuan puntuaren balioa, besterik ez dut nahi izanez gero ko hamartar leku erakutsi ondoren aldia, benetan egin dezaket 0.1f. Beraz, beste era batera esanda, f bereiztuko dut, eta 0.1 zeinu berea, besterik printf kontatzea, osotasun bat izan dezakezu zenbakiak sorta hamartar ondoren Niretzat seinalatu. Baina nahi dut horietako bat ikusteko. Beraz, aurrera joan orain eta gorde dut Programa honetan, nire terminal sartu leihoa, eta aurrera noa eta mota egin karroza 0, sartu. Zertxobait críptica line ikusten dut gehiago zentzua gara hasiko aurre egiten du gain aste honetan eta hurrengoan. Orain aurrera noa eta exekutatu zero karroza. Eta, madarikatua. Beraz, ez dago beste bug hemen arrazoi batzuk. Nahiko ziur bat hamargarren naiz, edo ren 10 arabera banatzen da, ez da 0.0. Agian, besterik gabe, ez naiz bila digituak nahikoa da. Beraz, zergatik ez bi .2 bi ikusi nahi diot ordez hamartarrekin bat besterik ez da. Dezagun atzera nire terminal leihoa hemen eta hit sortu pare bat nire historia. Flotatzen zero berriro egin dezaket, eta, ondoren, berriro. Eta orain, idatzi. Eta orain, nahiko ziur hau da gaizki nago. Eta hiru eta lau egin izan dut, eta nago ziurrenik zero ikusten mantentzen du. Beraz, non bug da? Ren 10 arabera banatzen 0,1 izan behar du. Norbaitek nahi labankada bat hartu, zer at oinarrizko arazoa? Bai? Osokoak bai dira. Beraz, zer? Beraz, 10 arabera banatzen da, hori batera aritmetika zer egin dut. Eta 0,1 lortu dut. Bai. Hain zuzen ere, eta, beraz, ez da jaulkipen hori. Ordenagailu batean oso bat hartu duzu , eta zatitzea duzu osokoa beste, lehenetsi ordenagailua joan bere gain hartu nahi duzun zenbaki oso bat. Arazoa, nahiz eta, jakina, ez da 0,1 hori ez da zenbaki oso bat. Zenbaki erreala da. Eta, beraz, zer egiten du ordenagailua arabera lehenetsia botatzen besterik ez da kanpoan du dezimal ondoren dena. Ez du biribiltzeko gora edo behera per se. Botatzen besterik ez da urruntzen dena du dezimal ondoren. Eta, orain dela zentzua. Oraindik orain, argi eta garbi dugulako zero utzi. Baina itxaron minutu bat. Ez dut int zero bat ikustea. Benetan ari naiz ikusten 0.00. Beraz, nola egin bateragarri dut orain? Ren 10 arabera banatzen da zero bada, baina nago 0.00 ikusten, non da lortzean bihurtutako itzuli zenbaki erreal bat? Bai. Zehazki. Beraz, hemen bost line, noiz hasi nintzen benetan gorde 0,1 dela, hau da, ondoren, zero moztua, barruan mugikor bat, hori eraginkortasunez baliokideak gorde ez int bat bezala, baina, Izan ere, mugikor bat bezala. Gainera, orduan naiz printf erabiliz esplizituki inprimatu zenbaki hori bi hamartarrekin bat nahiz agian ez da egongo. Beraz, hau sucks mota, ezta? Antza denez, ezin duzu matematika, gutxienez, maila horretako at zehaztasuna, ordenagailu batean. Baina ziur dago irtenbide bat da. Zer da errazena fix agian genezake da egin da, nahiz eta, besterik gabe, intuizioa hemen konpondu hau? Bai? Piztu osokoak sartu - Bai. Nahiz eta ez naiz nahiko ziur zer Benetan hemen, joan bada ditu, funtsean, bi zerikusirik ints izateaz, bai, zergatik ez dut 10,0 egin duela, hau egiteko 1.0, resave fitxategia. Dezagun atzera behera joan me to the behean eta birkonpilatu. Ikus dezagun orain, berriro me. Eta han - orain, lortu dut nire hamarren bat 0.10 gisa irudikatzen. Guztiak eskubidea. Beraz, hori ez da txarra. Eta utzi azpimarratu me bat beste era dute konpondu genezake hau. Dezagun roll benetan me denboran atzera denean, hau izan genuen bat bezala hamargarren une bat duela. Eta utzi aurrera me eta fitxategia resave beste izen, besterik gabe gisa gutxi dute kontrol batean. Beraz, bertsio bat izan zen. Eta orain, goazen aurrera, eta niri do bat gehiago bertsioa. Bertsio hau deitu dugu bi zero ordenatuta. Eta horren ordez egin dut honetan - Badakizu zer? Dot zero gehituz, kasu honetan lan egiten du. Baina demagun aldagai bat izan da. Ustezko 10 aldagai bat izan ziren. Beste era batera esanda, demagun ezin izan dut ez besterik hard-kodea .0 amaieran aritmetika adierazpen hau. Beno, egia esan, ezin dut zerbait parentesi izeneko galdaketa. Osokoa dela 10 bota dezaket mugikor bat, eta zenbaki oso bat bota ahal izango naiz flotatzen, bai. Ondoren, matematika dela egiten den eraginkortasunez 1.0 10.0 arabera banatzen da, emaitza horietatik doa aurretik f. Beraz, bada, hau egiteko karroza konpilatu dut 2, eta, orain, 2 flotatzen, bera lortu dut erantzutea, bai. Beraz, hau nahiko contrived adibide bat da, Arazo hau konpontzeko casting jarrita. Baina, oro har, casting-en izango da indartsu bat gauza, bereziki, egiteko Arazo ezarri bi aste baten denboran, noiz datu-mota bat bihurtu nahi duzun beste bat egunaren amaieran dira, modu berean irudikatzen dira. Eguna, single bakoitzean amaieran Gauza hitz egin dugu honi buruz, beraz, oso urrun dago besterik azpian kanpaia ints. Edo hori oso baxua-maila gero duzu, besterik ez dira zenbakiak kanpaia azpian. Nahiz eta pertsonaiak, berriz ere, gogora ekarri aste zerotik dira, zenbakiak kanpaia azpian. Hau da, bihurtu ahal izango dugu artean desberdinak zenbaki-motak besterik ez dira bit. Zenbakien artean ezin dugu bihurtzeko eta hizkiak dira besterik ez bada bit, eta alderantziz. Eta, modu horretan, galdaketa mekanismo bat da programazioan ematen dizuna indarrez aldatu datu-mota bat beste batera. Zoritxarrez, hori ez da dute gustuko nuen agian erraza gisa. Atzera joan karroza sartu dut 1, errazagoa, gehiago izan zen erraza batekin .0 Gehitu buruzko bakoitzean. Eta besterik gabe, azkar eguneratzeko gisa, let me aurrera konpilatu eta hau, egin karroza 2 - sentitzen dugu, hau da, karroza egiteko 1. Eta orain, dezagun exekutatu karroza 1. Eta beheko aldean, nabarituko hain zuzen ere, hori dut 0,1. Beraz, arazoa konpondu. Baina oraindik ez. Naiz orain pixka bat bitxia da iritsi, eta berriro nire sartu naiz printf adierazpena eta esan, zer dakizu? Gustatzen hori berretsi nahi nuke benetan hamarren bat. Eta hau ikusi nahi dut ra, esan, bost hamartar lekuak. Ez da arazo bat. Bi aldatuko dut, bost, Konpilatu egin dut. Flotatzen bezala 1 berrabiarazi dut. Nahiko ona bilatzen. Nire behatu txekeak ez amaitzeko, agian, baina Pixka bat gehiago abenturazale dut lortzean. 0.5 aldatzeko 0.10 noa. 10 zenbakiak ikusteko ondoren nahi dut hamartar lekua. Eta aurrera joan eta konpilatu dut hau eta berriro flotatzen 1. Damu dut mota balitz hau probatu gehiago delako nire matematika ez da hain Zuzendu gehiago, dirudienez. Baina itxaron minutu bat, agian Hori besterik Fluke bat. Agian ordenagailua jardunez pixka bat arraroa da. Dezagun aurrera me eta 20 hamarren egin lasaitu eta neure burua ezagutzen dut nola math egiteko. Nola programatu dakit. Egin karroza 1, konpilatu, eta madarikatua. Hau da, benetan, benetan lortzean urrun marka da. Beraz, zer gertatzen da hemen? Intuizioa, gure hipotesi oinarritutako datu mota tamaina lehenago, zer gertatzen ari den egon behar du hemen kanpaia azpian? Bai? Zehazki. Nahi duzun askoz doitasun hau bada, eta duten doitasun asko heck bat - 20 ondoren, dezimal zenbakiak. Ezin duzu, seguru asko, bat irudikatzeko arbitrarioak zenbakia izan ezean bat bit kopurua arbitrarioa da. Baina ez dugu. Karroza bat, besterik ez dugu 32 bit. Beraz, bada 32 bit baino ezin da batean permuted Modu - gure gizakietan bezala, eta etapa eskuak gora edo behera - zenbaki bat finituen modutan, ez da bakarrik zenbaki bat finituen benetako zenbakiak irudikatzeko dezakezu bit duten. Eta, beraz, ordenagailua, azkenean, izan da joan hasteko txoko ebaketa. Ordenagailua xehetasun horiek ezkutatu ahal gurekin denbora pixka bat. Baina hasten gara zenbakiak at poking bada eta urrunago eta urrunago begira zenbakiak amaierako osoa kopurua, ondoren, hori ikusi nahi dugu benetan approximating hamarren bat ideia. Eta, beraz, bihurtzen da, tragikoki, ez da zenbakiak ugari ezin dugu adierazten, hain zuzen batean ordenagailua, gutxienez finitu batekin bit kopurua, finitu bat RAM kopurua. Orain, zoritxarrez, hau da, batzuetan, ditu mundu errealeko ondorioak. Jendeak ez bada nahiko eskertzen honetan edo Ordena hartu emandako Izan ere, bere ordenagailuan egingo dela, besterik gabe, zer esan dute egin, eta ez ulertzen azpiko horiek ordezkaritza xehetasunak - horrek, sinceramente, hizkuntza batzuk daude erabiltzaileari ezkutatu, C ez bezala - txarra zenbait gauza gerta daiteke. Eta zer egin genuen pentsatu nuen urrats bat da itzuli. Eta hori da, gutxi gorabehera zortzi minutuko bideoa. Duela urte batzuk egurastua da, eta ematen benetan zer joan sartu Insights oker duzunean pean-eskertzen horiek xehetasun mota guztiak oso-ere mundu errealean. Iluntzeko genezake argiak bada pare bat minutuz. HIZLARIA: 1 ingeniaritza dugu itzultzeko Marvels modernoan hondamendiak. Informatika - guztiak ditugu etorri onartzeko sarri askotan frustrating arazoak haiekin joan. Bugs, birusak, eta software glitches txikiak dira, prezioak ordaindu erosotasuna. Baina goi-teknologiako eta goi-abiadura militar eta espazio programa aplikazioak, txikiena arazoa hondamendia izan daiteke magnified. Ekaina 4, 1996 an, zientzialariek prestatuta abiarazteko bat gidatu gabeko Ariane 5 suziria. Zientifiko eta satelite zen liburuetako diseinatu da, hain zuzen, nola ezartzea Lurraren eremu magnetikoa elkarreraginean haizeek eguzki. Suziria zen Europako eraiki Espazio Agentziak eta altxatzen off bere tik kostaldean instalazioak Frantziar Guyana da. JACK GANSSLE: 37 segundotan At sartu hegaldia, nabaritu dute lehenengo zerbait gaizki joan zen. Toberak ziren en biraketa bide bat egin beharko lukete benetan ez. 40 hegaldi sartu segundo inguruan, argi ibilgailua arazorik izan zen. Eta hori noiz egin erabaki hura suntsitzeko. Barruti segurtasun arduradunak, eta izugarria ausartuko, botoia sakatzen, nintzen sortu suziria zitekeen aurretik publikoaren segurtasun arrisku bat bihurtu da. HIZLARIA 1: Hau izan zen dontzeila bidaia Ariane 5, eta bere suntsipena gertatu delako akats bat kapsulatutako Kohete horrek software. JACK GANSSLE: Ariane buruzko arazoa izan zen ez zegoela zenbaki bat beharrezkoa dela 64 bit adierazteko. Eta bihurtu nahi dute eta 16 biteko zenbaki bat. Kopuru hori ez zen inoiz bere gain hartu dute oso handia izan da, joan den gehien en 64 bit-eko zenbakiak horiek kopurua zero izan ziren. Oker ziren. HIZLARIA: 1 software bat imposibilidad programa motaren onartzeko zenbaki batera sortutako zen porrota erro at. Software garapenerako oso bihurtu teknologia berriak parte garestia. The Ariane 4 suziri izan oso arrakasta, beraz, softwarearen askoz sortu zen ere Ariane 5 erabiltzen da. PHILIP COYLE: oinarrizko arazoa zen Ariane 5 zela azkarrago, bizkortu azkarrago. Eta softwarea izan ez duten kontuan. HIZLARIA: 1 suziria suntsipena handi bat finantza hondamendia izan zen, guztiak bat minutuko software error ondorioz. Baina hau ez zen lehen aldiz datuak bihurketa arazoak izan beteta modernoa suziria teknologia. JACK GANSSLE: 1991 urtean, hasierarekin Golkoko Lehen Gerra, Patriot du misilen bizitako antzeko mota bat zenbaki bihurketa arazoa. Horren ondorioz, 28 soldadu American ziren lagun hil dira eta beste batzuk, buruz 100 zauritu Patriot denean, zein zen ustezko to Scuds sarrerako babesteko, misil bat huts egin du sua. HIZLARIA: 1 Noiz Irak inbaditu eta Kuwaiten Amerika abian jarri Desert Storm-en 1991 hasieran, Patriot misilen bateriak zabaldu ziren Saudi Arabia babesteko eta Scud Irakeko from Israel misilen erasoak. Patriot bat US ertain-barrutia azalera-to-aire sistema fabrikatu arabera RAYTHEON enpresak. THEODORE POSTOL: Patriot tamaina interceptor bera da gutxi gorabehera 20-oinak luze. Buruzko eta 2000 kilo pisatzen ditu. Eta inguruko warhead bat egiten ditu - Gutxi gorabehera 150 kilo uste dut. Warhead eta bera da handiko lehergai ditu inguruan zatiak. Warhead du karterra diseinatuta dago Buckshot behar bezala jarduteko. HIZLARIA: 1 misil dira egindako lau edukiontzi bakoitzeko dira, eta garraiatzen erdi trailer arabera. PHILIP COYLE: Patriot aurkako misil sistema doa atzera Gutxienez 20 urte. Zen jatorriz diseinatu gisa aire defentsa misilen tiro behera hegazkinak etsaia. Golkoko Lehen Gerra ere, gerra batera iritsi ziren, Army nahi erabili behera jaurtitzeko Scuds, ez hegazkinak. Irakeko aire-indarra ez zen beraz, arazo bat askoz. Baina Army zen Scuds kezkatzen. Eta, beraz, eguneratu saiatu dira Patriot du. HIZLARIA: 1 etsaiaren misil bat atzematen Mach bost at bidaiatzen zen izango da erronka nahikoa du. Baina Patriot zen sartu rushed zerbitzua, armada ez zen jakitun Irakeko aldaketa hori egin dute Scuds ia ezinezkoa hit. THEODORE POSTOL: Zer gertatu da Scuds zirela da etortzen ziren ezegonkorra. Wobbling ziren. Horren arrazoia irakiarrak zen, hasi ordena 600 kilometro ateratzeko baten 300 kilometro-sorta misilen hartu aurrean warhead kanpo pisua. Warhead da arinagoa egiten zituzten. Beraz, orain Patriot ari da saiatzen to Scud hartan etorri. Eta denbora gehien, erabatekoa da denbora gehienak, besterik ez litzateke Scud bidez hegan. HIZLARIA: 1 Behin Patriot sistema operadore konturatu Patriot galduak bere xede, Patriots du detonated dute warhead saihesteko biktima da, bada, onartzen eta azkenean lurrera erortzen dira. THEODORE POSTOL: Hori izan zen gehien pertsona zerua fireballs big gisa ikusi eta atzematen gisa ulertua Scud warheads du. 1 HIZLARIA: gauez zeruak arren Patriots agertu behar bezala Scuds suntsitu, ez Dhahran at bere buruz akats gabe izan daiteke errendimendua. Bertan, Patriot-en radar sistema galdu sarrerako Scud jarraipena eta inoiz abian jarri dela eta software akats bat. Israeldarrek duten lehen aurkitu zen luzeagoa sistema , orduan eta handiagoa denbora desadostasun izan zen izan zen erloju bat dela-eta sistema informatikoan barneratua. JACK GANSSLE: bi aste baino lehen Dhahran, Israelek tragedia defentsa Sailak berri sistema izan zen, denbora galdu. Zortzi lasterketak ordu igaro ondoren, sistema dela ohartu ziren nabarmen gutxiago zehatzak bihurtuz. Defentsa Sailaren arabera erantzun Patriot bateriak guztiak kontatzea ez utzi sistemak denbora luzez gainean. Inoiz ez dute esan zer denbora luze bat izan zen. Zortzi ordu? 10 ordu? 1.000 ordu? Inork ez zekien. HIZLARIA: 1 Patriot bateria geldirik Dhahran at kuartel at eta bere barne-erlojua zuzena izan 100 baino gehiago gaueko ordu an Otsailaren 25ean. JACK GANSSLE: It jarraipena denbora bat segundo hamarren bat buruz zehaztasuna. Orain, segundo hamarren bat da interesgarria kopurua ahal duelako ez izatea binary adierazitako zehazki, eta horrek esan nahi du ezin da zehatz-mehatz adierazita en egungo edozein ordenagailu digitala. Zaila da sinesten, baina erabili hau adibide gisa. Ikus dezagun kopuruaren heren bat. Heren bat ezin da adierazita zehazki hamartar batean. Hirugarrena da 0,333 joan infinitua on. Ez dago hori egin nahi dituzten hamartar zehaztasuna absolutua. Hori da, zehazki, arazo mota bera Patriot hori gertatu. Luzeagoa sistema ran, eta txarrena denbora error bihurtu zen. HIZLARIA: 1 100 eragiketa-ordu eta gero, denbora error bakarrik izan zen ko buruzko bigarren eta hirugarren. Baina terminoetan misil bat targeting Mach bost at bidaiatzen, emaitza da 600 metro baino gehiagoko akats jarraipenerako bat. Errore larri bat izango litzateke Dhahran at soldaduak. THEODORE POSTOL: Zer gertatu da Scud abian jarri zen goiz detektatzen abisua eta satelite. Eta Scud zela datozen bazekien dute bere norabidea, oro har. Ez dakite non datozen zen. HIZLARIA: 1 izan da orain arte, radar Patriot sistemaren osagai Dhahran defendatzeko aurkitzeko eta mantentzeko etsaiaren sarrerako misilen jarraipena. JACK GANSSLE: Radarrak izan zen oso argia. Benetan litzateke jarraipena posizio Scud eta gero iragartzeko bertan ziurrenik hurrengo aldian izango litzateke radar bidaltzen pultsu bat. Hori deitzen zen ate sorta. THEODORE POSTOL: Gero Patriot behin nahikoa denbora igaro erabakitzen joan Atzera eta hurrengo kokapena arakatuko detektatu objektu hau, atzera egingo du. Beraz, atzera joan da, oker lekua, ikusten, ondoren, objektu ez. Eta ez zela objektu ez erabakiko du, faltsuak detektatzeko bat izan zen, eta pista jaisten. HIZLARIA: 1 sarrerako Scud desagertu radar pantaila batetik, eta segundo geroago, danbateko kuartel batean. Scud hil zen, 28 eta azkena Lehenengo Golkoko Gerran duena. Tragikoki, eguneratu software heldu Dhahran Hurrengo egunean. Software akats hauek izan dira konpondu, kapitulu bat ixten troubled en Patriot misilen historian. Patriot benetan siglak Phased Array JARRAIPENA egiteko Helburu atzematen. DAVID J MALAN: Ondo da, beraz, Adibidez sobering, ziur izan. Eta zorionez, behe-maila horiek bugs ez dira zerbait egiten zaitugu normalean eskertzen dute, zalantzarik gabe, ez gure batzuk programak goiztiarrena. Baizik eta, bugs gehienak izango zara topaketa izaera logikoa izango da, naturan sintaktikoa da horren bidez kodea, besterik ez du lan egiteko eskubidea. Azkarra eta polita da, badakizu. Baina, batez ere, lortu nahi dugun seihilekoaren amaieran, joan da joan gero eta gehiago, aukera bat egiteko benetan uste gogor diseinuari buruz zure programak eta azpiko du ordezkaritza han ere, datuak. Esate baterako, MySQL aurkezten dugu, horrek ezagun bat da datu-baseko ditzakezun webgune batera erabili behar datuak gordetzeko itzuli bukaeran. Dute eta erabaki hasiko duzu seihilekoaren amaieran, ez bakarrik zer moten Ildo datuak erabili baina zehazki zenbat bit erabili, ala ez datak gorde nahi dituzun datak eta orduak aldiz, eta, gainera, gisa zein handia egin nahi duzun bezala gauzak identifikazioak berezia da, izan ere, esan, erabiltzaileek Zure datu-basean. Izan ere, batzuk badute izan Facebook denbora luzez kontuak, eta nola ezagutu duzun zure Erabiltzaile ID - zenbaitetan erakusten zure profilaren URL Nik ez baduzu aukeratu URL for ezizena, edo dituzun bada erabiltzen Facebook-en API grafikoa da, publikoki eskuragarri API zein zara Facebook eskatu ahal datuak gordinak for - ikusi zer zure zenbakizko ID dezakezu. Eta duela urte batzuk, Facebook, funtsean, izan to erabiliz aldatu du ints baliokidea luze erabiliz denbora luze baino gehiago erabiltzaile delako etorri eta joan eta kontu asko sortu eta Mitxel kontuak, nahiz eta oso erraz gai izan ziren, zerbait agortu nahi, 4 bat bezala milioi int bat bezala balio. Beraz, gai-mota horiek gehiago errepidean behera, bai. Guztiak eskubidea, hori izan zen, beraz, galdaketa. Hori imprecision zen. Iragarkiak azkar pare bat. Beraz, atal honetan hasiko da formalki datozen Igandea, astelehena, asteartea. Posta elektroniko bidez izango duzu beranduago entzun aste honetan zure esleitzeko atal gisa. Eta, gainera, hemen, puntu horretan egingo duzu nola zure atala aldatu nahi izanez gero, Orain ordutegia aldatu edo zure erosotasun-maila, gaur egun aldatu egin dira. Bien bitartean, P-multzo bat eta hacker bat dira dela eta ostegun honetan aukera dituzten zabaltzeko per epea duten ostiralera zehaztapenak era arruntean. Konturatzen arazoa barne set zehaztapenak argibideak daude nola CS50 tresnaren erabili nahi, egin, baita zenbait CS50 berariazko tresnak Estilo 50, eta horrek eman daitekeela bezalako feedback dinamikoki buruzko Zure kodea estilo-kalitatea eta, gainera, 50 begiratu, eta horrek ematen du zurekin Zure gisa feedback dinamikoa kodea en zuzentasuna. Barkatzen ari gara oraindik lisatzeko check 50 gutxi kinks bat. Zure ikaskideekin zuten hasteko batzuk lau inguruan ostiral gauean AM denean zehaztutako igo dituzte orduz geroztik ohartu bugs gutxi batzuk ari gara lanean bitartez, eta edonork apologies nor bizi izan du bidegabeko frustrazioak. Errua nirea da. Baina jarraitu dugu on the CS50 eztabaidatzeko denean hori konpondu. Puntuazioak beraiek hitz bat, beraz. Beraz, aste bat edo bi izango dituzu aurretik hasteko arazo multzo buruzko iritzia lortzeko ez duzulako oraindik irakaskuntza ikaskide bat. Eta orduan ere, hasteko, ebaluatu egingo dugu C arazoa dugu aurretik ezartzen Joan atzera eta ebaluatzeko, beraz, hutsetik lortu duzu gehiago garrantzitsuak feedback azkarrago. Baina curriculumaren bakoitzeko, oro har, CS50 arazo multzo dira batera ebaluatu lau ardatzak jarraituz - esparrua, zuzentasuna, diseinua eta estiloa. Scope zenbaki bat izan behar du, normalean joan zero artean, eta hori bost harrapatzen nola askoz pieza off bit duzu. Normalean, hau bost izatea nahi duzu. Saiatu gutxienez duzun guztia. Eta nabarituko biderkatzeko faktore bat da, beraz, zati bat bakarrik egiten Arazo jaurtiketa ez da onena estrategia. Bien bitartean, nabarmenagoa da zuzentasun garrantzi - besterik gabe zure programa da zuzena Espezifikazioekin errespetatzen? Hau da, nahita pisu gehiago hein handi batean beste bi ardatz baino hiru faktore ezagutzen dugulako normalean bat pasatzeko duzu asko denbora gehiago behera jarraitzen bugs batzuk, Zure kodea lanera lortzean, ondoren ari da koskatze eta aukeratzerakoan egokiak aldagai izenak eta esate baterako, beste muturrean dago estilo espektroaren. Hori ez da estiloa ez da esan behar garrantzitsua da, eta predicatzen dugu baino gehiago bi hitzaldi eta ataletan denbora. Estilo estetika aipatzen Zure kodea da. Ondo-izeneko aldagai aukeratu eta gero diren labur baina zertxobait deskribatzailea? Zure kodea da koska duzun ikusi bezala hitzaldia eta modu koherente batean Estilo 50? Azkenik diseinua eskubidea erdian dago. Diseinu gogorrago bat jarri da da, askoz gehiago delako on finger subjektiboa. Baina, agian, ez da garrantzitsuena pedagogikoa dagokionez, hiru ardatzetan denboran zehar, eta horrek balio hau izango da: irakaskuntza ikaskide horrek aukera ematen duzu feedback kualitatiboa ere. Izan ere, CS50 hasi arren dute egiten dugu formula horiek eta partiturak, at amaieran Eguneko hauek oso nahita oso txikia kubo - puntua balio zero eta hiru arteko eta zero eta bost. Ez gara oso larria marrak marrazteko arazo multzo artean edo artean ikasle baizik fokua bezainbeste kualitatiboa da, longhand dezakegu Feedback, bai idatzitako edo hitzezko tik Zure bereziki irakaskuntza baden, lortu nahiko ondo jakin behar duzu. Baina, oro har, horiek dira pisuak hainbat ardatzetan izango dute. Bien bitartean, ere, da mantentzeko merezi du Axola beharko duzula ez du bere gain hartzen duen bost, hiru,% 60 da, eta Beraz, gutxi gorabehera ezean. Hiru da nahita ekarri nahi izan errepide onak erdian agintzea. Zaren hartan hirukoak bada lortzean seihilekoaren hasieran, hori hain zuzen ere, ekarri ona izan jartzen hasteko. Zaren twos, azoka baldin badira, ez da zalantzarik gabe, lan txiki bat ordaindu behar arreta gehiago, aprobetxatu atal eta bulego ordu. Zaren Fours bada lortzean eta fives, handia. Baina, ibilbide ikustea espero dugu ikasleen artean - oso Ikasle bakoitzaren banan-banan, baina hasita seihilekoan hemen sort zen bi, hiru sorta baina bukatzen hemen lau bost sorta. Hori da benetan zer ari gara bilatzen. Eta kontuan izan dugu mantendu delta dela erakusteko aste zero eta aste artean 12 denean, kalifikazio ari naiz. Ez du axola digu nola erabat duzun hasieran arrazoizko bada zure ibilbidea da, hain zuzen ere, goranzko eta indartsu. Akademiko zintzotasuna - beraz, jarri nire me gehiago besterik ez da une batez ahots larria. Beraz, ikastaro honetan bereizketa ditu beste edozein baino ikasle bidaltzea Iragarki-taula historian, uste dut. Aldaketa galdu moduko daukagu ​​honetan nola askotan gertatzen den puntua. Eta hori ez da ikasle delako 50 edozein baino gehiago beren petrala ikaskideekin beste. Baina konturatzen ere, ez garela oso ona gauza sort hau detektatzeko at. Eta hori abantaila bat da informatikako klasean duen dugu daitezke, eta ikasle guztiak alderatu dugu Arazo bakoitzean ezartzen aurkako bikote-jakintsu beste, ez bakarrik Aurtengo baina aurreko urteetako guztiak. Gaitasuna daukagu, ikasle bezala klasea, Google-ra, eta aurki kode github bezalako guneak eta eztabaida foroak. Daude guztiz CS50 en soluzioak p-ezartzen du han inguruan mugituz. Baina aurkituko duzu bada, aurki dezakegu. Eta hori guztia oso automatiza eta erraza da, eta triste Gurekin aurkitzeko. Baina, azpimarratu nahi dut, nahi dut, hori Ikastaro horrek akademikoa zintzotasuna politika asko izaten dira eta asko izango dira espiritu hori kontrakoa. Izan ere, aurten rephrased dugu gauzak curriculumaren hau izan da, dot dot dot, xehetasun gehiago curriculumaren parte. Baina, jakina den gaia Globalak du Benetan da arrazoizkoa izan behar du. Ez dela nabarmen bat ezagutuko dugu pedagogikoa zenbatekoa kolaboratu balioa, neurri batean, ikaskideekin, horregatik duzu bi edo hiru edo gehiago zuri-taula delarik whiteboarding, beraz, hitz egiten, zure ideiak - out idatziz pseudocode irudietan, zer egin behar Mario izan bada diagramming idazteko lehenengo zinen pseudocode batean. Zer egin behar Greedy algoritmoa - nola jokatu behar da per Arazo bat ezartzen du? Eta, beraz, konturatzen portaera animatzen dugu oso lerro horiek batera askoz. Eta ikasketa planaren barruan, ikusiko duzu osoa balak mordo baten azpian Kategoria arrazoizkoa eta ez da arrazoizkoa Kategoria horrek laguntzen digu lagundu your mind bildu duzu, non inguru lerro bat marraztu dugu. Eta, oro har, arau duin bat da ari zaren konpontzen bada borrokan ari dela bug batzuk eta zure lagun edo ikaskide da ondoan duzun eserita dago, arrazoizkoa zion erakusteko edo bere Zure kodea eta esan, beno, lagundu dezakezu irudikatu me Zer gertatzen da hemen? Ez dugu normalean besarkatu aldean. Ez da zure erantzuna zuzena lagun edo ikaskide hemen esan, oh, besterik ez da nirea eta irudi begiratzeko it out horretan. Hau da Ordena unreasonable. Baina, beste norbaitek, garuneko beste izatea, begi-pare beste begiratzen zure pantailan edo look at zure kodea eta esan, ziur nahi duzun begizta bat dute hemen? Edo, ziur ez duzu nahi koma hori hemen? Edo Oh, errore-mezu horrek esan nahi du honek. Horiek oso arrazoizko eta animatu jokabideak. Kasu zein nintzen alluding lehenago irakiten behera denean, ikasleak dira berandu gauez pobrea epaiketa egiteko erabakiak eta bere kodea behar badiozu mezu beste norbaitek edo, besterik esaten, Hemen, da Dropbox da edo Berandu Googling gauez. Eta, beraz, animatu eta nuke duzun Beg, saihestezina horiek baduzu, ez estresa uneak, sortu zaren jotzen zihoala epea aurka, berandu ez duzu egun dagoeneko geroztik da Ostirala hartan puntua, email ikastaroa buruak edo neure buruari, zuzenean. Esan, entzun, naiz nire egiten dut puntu hausteko hemen. Dezagun elkarrizketa bat eta irudikatu egiten. Web edo jo, beste batzuk ez zentzuzko jokabidea da inoiz konponbidea, eta gehiegi zure askok ikaskideekin ez dira hemen delako hori pobrea epaia campusean. Baina oso erraza da linea inguratuko da. Eta hemen pixka bat irudi animatu nahi da sortu Reddit batetik, beraz, orain Ados dena izango da. Azkar laburpena, beraz, eta, ondoren, non utzi dugun. Beraz, azken astean, gogoratzen aurkezten dugun baldintzak, ez da hutsetik hasi C, baina oraingo honetan. Eta ez zen berria, baina sintaxia Benetan, berez, ideia berriak ez. Boolearrak adierazpideak izan dugu, izan edo bi batera bertikala tabernak eta batera edo bi ampersands esaten, ezkerreko biak eskubidea eta, egia izan behar hau exekutatu behar da. Ondoren, etengailuak izan dugu, eta hori dugu begiratu labur-labur, baina proposatzen dut benetan besterik lortzeko sintaxia ezberdinak helburu bera ezagutzen duzu bada, aurrera zer da zure kasu dira izango. Begiratu begiztak gara. Begizta A da beharbada arruntena, edo, gutxienez, pertsona bat normalean senari iritsiko da. Nahiz eta pixka bat críptica badirudi, askotan, horren adibide ugari ikusiko duzu luze baino lehen, izan duzun bezala, jadanik berandu azken astean. Begiztak Era berean, ahal den bitartean lortzeko gauza bera. Baina nahi duzu incrementation edozein nahi baduzu edo eguneratzeko aldagaiaren balioak, behar duzu gehiago egin eskuz baino begizta aurretik aukera ematen du. Eta gero do-while begizta da, horri esker, zerbait egin gurekin gutxienez behin zerbait bitartean bestela, egia da. Eta hori bereziki ona programak edo jokoak non nahi duzun zerbait erabiltzaileari galdetuko to gutxienez behin. Eta, ondoren, berak ez badu kooperatu, nahi ere egin dezakezu behin eta berriro. Aldagai, bestalde, lerro izan dugu kode hau atsegin du, eta horrek lerro bi izango da. Int izeneko deklaratu ahal izango duzu counter, koma. Edo, besterik gabe dezakezu deklaratzeko eta definitzen da, nolabait esateko. Eman, aldi berean, balio bat. Eta gero, azkenik, hitz egin dugu funtzioak. Eta honen adibide polita izan zen Zentzu erakusten duela Bi funtzio-mota. GetString () bat da, eta, berriz ere, Kate bat lortzen erabiltzaileari. Baina GetString () interesgarria mota da, Nik orain arte bezala erabiltzen dugu, Nik dugulako beti erabiliko duen, baten ezkerraldean zerbait berdin ikurra. Hau da GetString dela (esan) itzultzen du balioa. Itzultzen da, jakina, kate bat. Eta, ondoren, ezkerreko aldean, gara besterik gabe, katea aurrezteko baten barruan aldagai izeneko izena. Hau ezberdina da, zentzu batean, batetik printf printf, gutxienez, gure delako erabilera, hemen ez da ezer itzuliko. Bat alde batera bezala, bueltan zerbait egiten du. Ez dugu axola zer den. Baina zer da, ez du izeneko alboko efektua. Eta zer guztietan eragina albo dela kasua ikusi dugu, beraz, orain arte? Zer esan nahi du printf egin? Zerbait bistaratzen da pantailan, pantailak testu edo zenbakiak edo zerbait pantailan. Eta hori kontuan hartu besterik ez alboko efektua ari ez delako benetan ematea itzuli dit. Ez da barrutik erantzun bat beltz baten ondoren, ezin dut hori iritsiko sartu eta grab. Besterik ez da egiten bere, egin on askoz COLTON bezala zen hau entxufatuta kutxa beltza, azken astean, eta zuen nolabait magikoki zen taula gainean marrazten ni gabe, benetan parte hartzen. Duten alboko efektu bat izango litzateke. Baina benetan nuen atzera hel hemen, eta esan, Oh, hemen katea da erabiltzaileari, lukeen balio izan. Eta, beraz, orain arte baino ez dugu erabiltzen funtzioak beste pertsona askok idatzi dute. Baina, egia esan, egin dezakegu hauek gauza mota geure buruari. Beraz, sartu naiz CS50 tresnaren berriro. Dezagun fitxa itxi me dugu Duela une bat ireki zuen. Eta utzi aurrera niri eta berria sortu fitxategi bat. Eta aurrera noa, eta deitu ko positive.c honetan. Beraz, zerbait egin nahi dut zenbaki positiboak hemen. Beraz, aurrera eta egin int noa - Sentitzen - # Barne. Ez dezagun egin duten bera aurretik akatsa. Int main (void), irekia kizkur giltza, itxita kizkur giltza. Eta orain, honakoa egin nahi dut. Programa bat idatzi nahi dut behin eta berriz dio erabiltzaileari ematen Niri oso positibo bat. Beraz, ez dago GetPositiveInt funtzioa ez da CS50 liburutegian. Bakarrik dago GetInt () da. Baina hori OK daukat duelako eraikitzen dituen ezarri ahal izango dut pixka bat gehiago balio duten murrizketa. Honen antzeko zerbait egin izan dut. Beraz, int n - eta batera ari zaren idazten bada, besterik ez da konturatzen Atzera joan naiz eta aldatzeko une batean gauza batzuk - beraz, int n GetInt () funtzioak. Eta hori jarri joan n barruan int bat. Eta utzi gehiago deskriptiboa izan dit. Dezagun zerbait esan dit eskatzen dut horrelako didazu oso positibo bat. Guztiak eskubidea. Beraz, argibideak pixka bat. Eta orain, zer egin dezaket? Beno, nire simple batetik dagoeneko dakit baldintza edo adarrak, besterik ez dut atsegin Scratch izan, zerbait esan izan nuen gustatzen n baino txikiagoa edo berdina bada zero, eta, ondoren, zerbait egin nahi dut bezala, ez da positiboa. Eta, ondoren, egin izan dut - Ados, baina nahi dut int hori lortzeko. Beraz, igo nuen hemen, eta mota izan nuen kopia hau eta koska honetan. Eta, ondoren, Ados. Beraz, bada, n edo txikiagoa da zero egin. Orain, zer bada erabiltzailea ez du elkarlanean aritzeko? Beno, orduan noa maileguan hau hemen. Eta ondoren, hemen bizi naiz eta hemen eta hemen. Beraz, hau da, argi eta garbi ez konponbidea, ezta? Bistan dago amaiera ez delako. Nahi dut, erabiltzaileari ematen dion eskatzeko bada Niri oso positibo bat, I can benetan lortu int da. Ondoren, ezin dut int duten egiaztatzeko. Baina, ondoren, berriz ere egiaztatu nahi dut, eta egiaztatu du berriro, eta begiratu berriro. Beraz, jakina, zer hobeto eraikitzeko erabiliko hemen? Ondo da, beraz, begizta bat. Beraz, kendu egingo ditut ia guztiak honen. Eta hau lortu nahi dut INT gutxienez behin. Horretarako, esan nahi dut - eta itzuli dut nahi besterik gabe, une batean, berriz, - orain, zer? Int n lortzen GetInt () egin dut. Ados. Beraz, hori da nahiko ona. Eta orain, nola maiz Hori egin nahi dut? Let begizta barruan printf jarri zidan beraz, eskatzen behin eta berriro dut, beharra balego. Eta zer egin nahi dut baldintza egin bitartean? Horretan mantendu nahi dut zer gertatzen da bitartean? Bai. N baino txikiagoa edo zero. Beraz, dagoeneko, nabarmen dugu garbitu kode hau sortu. Maileguan dugu oso sinpleak eraiki - do-while begizta. Lapurtu ditut, besterik gabe, garrantzitsua ildoak kodea hasi nintzen eta kopiatzea itsasten, ez zen jakintsu. Eta, beraz, orain benetan itsatsi noa egin hemen eta besterik ez da behin. Eta orain zer egin nahi dut Programa honen amaiera oso? Dut esan zerbait simple bezala, eskerrik asko - eta % Dut int i for - backslash n, koma, eta, ondoren, n, koma plug. Guztiak eskubidea. Beraz, ikus dezagun zer gertatzen den orain Programa hau exekutatu dut. Aurrera noa, eta positiboa egin dezaket. Malditos. A gutxi akatsak. Beraz, atzera korritu me up lehen. Ez dute lan hauen bidez atzeraka. Horien bitartez lan goi-tik behera jauzi kausituko dira eta soilik Gauza bat gaizki egon. Inplizituki adierazpena funtzioa GetInt (). Bai. Beraz, ez zen nahikoa. Mota egin dut akats bera baina apur bat desberdina, denbora honetan. Ez soilik sartu stdio.h behar dut, baina Era berean, cs50.h, eta horrek barne hartzen du, izenekoak deklarazioak lortu int, eta horrek irakasteko tresnari, edo irakasten C zer GetInt () da. Beraz, egin iezadazue resave. Beste akatsak ez ikusi dut dut Oraindik dutela espero delako joan nolabait akats zerikusia Konpondu dut. Hargatik aurrera me konpilatu eta egin dituzten positiboa, Sartu. Malditos. Hiru akatsak, oraindik ere. Let me up korrituko lehen. Erabili gabeko aldagai n. Ez dugu ikusi aurretik. Eta hau ere, pixka bat críptica. Hau konpiladoreak irteera da. Eta zer nabarmendutako lerroa ez - positive.c :9:13 - esaten da, bederatzi line on dela esanez positive.c, 13 pertsonaia da, 13 zutabea, akats hau egin duzu. Eta, bereziki, kontatzea da Niri erabili gabeko aldagai n. Beraz, ikus dezagun - line bederatzi. N erabiltzen dut zentzu batean It dut balio bat emanez. Baina zer konpiladoreak ez du gogoko da dut, itxuraz, ez da erabiltzen. Baina itxaron minutu bat, erabiltzen dut. 11 lerro batean, erabiltzen ari naiz hemen. Baina korrituko dut behera gehiago nahi izanez gero, positive.c :11 at - beraz, lerro-11, pertsonaia 12, at konpiladorea da me kontatzea, erabilera undeclared identifikatzailea n. Beraz, bide undeclared dut ez da zehaztu bezala datu-mota aldagai bat. Baina itxaron minutu bat. Zehazki hori egin nuen bederatzi linea ditu. Beraz, norbait benetan nahastu hemen. Bai da niretzat edo konpiladore duelako line bederatzi urtean, berriz ere, beti geratuko naiz int n, eta ari naiz esleitzea itzultzeko GetInt () balioa. Ondoren, aldagai n nago erabiliz line 11 eta bere balioa txikiagoa bada egiaztapena edo baino zero. Baina, antza denez, hau da, txarra eta hondatutako zergatik? Esan berriro? Ah, n aldarrikatu aurretik daukat begizta sartuz. Baina zergatik? Esan nahi dut, proposatu besterik ez dugu, pixka bat duela fina da, aldagai deklaratzeko guztiak lerro bat eta gero Hauek balio batzuk. Aldagai global A - dezagun itzuli besterik gabe, une batean ideia hori. Zergatik ipini nahi duzu it begizta kanpo? Da. Zehazki. Beraz, nahiz eta zertxobait counterintuitive, let me laburtzeko. Noiz n deklaratzeko barruan blokea do han - zehazki barruan kizkur giltza horiek - aldagai n duela zer izeneko esparrua bat - gure puntuazio-sistema zerikusirik noski -, baina hedadura hori du to kizkur giltza horiek mugatuta. Bestela esanda, normalean deklaratzeko baduzu multzo baten barruan aldagai bat kizkur giltza, aldagai hori bakarrik existitzen da horiek kizkur giltza barruan. Beraz, logika hori bakarrik, nahiz eta Deklaratu Nik n line bederatzi ere, funtsean esparrua batetik desagertzen da, memoriatik desagertzen da, nolabait esateko, denbora lerroa 11 hit dut. Linea 11, zoritxarrez delako da, horiek kizkur giltza kanpo. Beraz, tamalez, ez dut konpontzeko honetan atzera joan eta zer egin nuen aurretik. Lehen, baliteke egiteko hau. Baina, zer ez dira, orain ziklikoki egiten? Jakina, ez da ari zaren lortzean int da ziklikoki. Beraz GetInt du () utzi ahal izango dugu, eta guk GetInt du () utzi behar barruan begizta delako hori zer nahi dugu pester behin eta berriro erabiltzaileari. Baina aski ez da joan arte lerroa, hots, sei. Int n, koma. Ez eman da, balio bat delako oraindik ez duzu behar, besterik gabe. Behera, baina orain, hemen, abisua - honetan Oso erraza da akats bat izango litzateke. Ez dut nahi nire aurreko itzal n aitorpena. N erabili nahi dut benetan existitzen da. Eta, beraz, orain linea 10, Balioa N esleitu dut. Baina lerro sei, n deklaratzen dut. Eta, beraz, ahal dut edo ez dut ezazu erabili line 12 egun? Delako ezin dut artean kizkur giltza N deklaratu orain? Hemen bost line on bat. Bat hemen line 14. Beraz, bada, orain, mapan handiago dut, fitxategi hau gordetzeko, joan atzera sartu eta make positiboa da, konpilatu da une honetan. Beraz, hori jada aurrerapena. Barra. . / Positiboa, Sartu. Ematen dit eskatzen dut zenbaki oso positibo bat. Negatiboak 1. Negatiboa 2. Negatiboak 3. Zero. Ko. Eta bat esker da zer da orain inprimatu. Dezagun beste zerbait saiatu me, jakin-mina du. Naiz ari sarrera oso bat kontatu. Baina zer ordez I arkumea bada, idatzi? Beraz, orain ikusiko duzu desberdinak abisua - saiatu berriro. Baina inon nire kodean Ondo saiatu da berriro idazten dut. Beraz, zentzuzkoa da, hau saiatu da berriro galdetuko datozen esango zenuke? Bai, GetInt () bertatik. Gauzak CS50 langileek bat egiten du, beraz, zuretzat, gutxienez, hauek lehen gutxitan aste, idatzita dugu zenbateko batzuk error bermatzeko egiaztatzea bada GetInt () deitzen duzunean, gutxienez, izango duzu itzuli erabiltzailearen int bat. Ez duzu kate bat. Ez duzu karaktere bat. Ez duzu zerbait guztiz. Int bat lortuko duzu. Orain, agian ez da positiboa. Agian ez da izan negatiboa. Bermeak ez ditugu horren inguruan. Baina pester erabiltzaileak berriz saiatu gara, Berriro saiatzeko, zuen arte berriro saiatu edo zuen benetan elkarlanean aritzen da. Era berean, ez dut 1,23 bada, ez dela int bat. Baina ez dut, bada, esan, 50 idatzi, hori ematen dit balio bat nahi izan dut. Guztiak eskubidea. Beraz, ez da txarra. Zer besterik ez dugu egiten buruzko edozein galdera? Gako eramateko, argi izan behar du, ez izatearen hainbeste begizta, hau da, ikusi dugu nahiz eta benetan ez dugu aurretik erabiltzen da, baina esparrua alea, non aldagai besterik ezin daiteke soilik erabili batzuk zehaztutako esparruan. Ongi da, utzi iradokizun aurre me lehenago egin duzu, baten aldagai global. Bat alde batera bezala, bihurtzen da beste bat Arazo honi irtenbidea, baina normalean okerra irtenbide edo Gaizki diseinatutako irtenbide bat, da deklaratzeko zure aldagai zer gisa izeneko aldagai global bat. Orain nire definizioa hausten mota naiz esparruaren ez direlako oso goian giltza kizkur ez eta irudi bukaerara. Baina hori inplikazioa hau da, orain lau linea, n aldagai global bat da. Eta izen gisa dakar, bere besterik eskuragarria nonahi. Scratch benetan ditu horiek. Erabili duzu aldagai bat bada, gogoratzen baliteke da bada aukeratu behar izan duzu Sprite hau edo sprites guztientzat. Beno, sprites guztiak besterik ez da argiagoa da global esaten modu. Bai? Ah, benetan ona galdera. Beraz, gogora ekarri duten lehen bertsioan nire kode denean dut gaizki deklaratu eta definitutako lerro bederatzi n - Izendatutako dut aldagaia eta eman nuen balio duen esleitzeko operadorea - hau eman zidan bi akatsak. Ko, nahiz eta n ez zela erabili, eta bi, linea hori 11 besterik ez zen geratu. Beraz, lehen ez nuen momentuan helbidea. Ez da zorrozki Errorea deklaratzeko aldagai bat da, baina ez erabiltzeko. Baina gauzak egin dugu bat CS50 tresnaren du, nahita, pedagogiko da, cranked dugu gora konpiladoreak itxaropenak egin Ziur zarela gauzak ez bakarrik bezala, baina benetan behar bezala. Zaren aldagai bat bada geratuko delako n, eta inoiz ez da erabiltzen, edo erabiltzen bezalako bezala, eta, ondoren, zer da hor? Balio du, benetan ez da helburua. Eta oso erraza da denboran zehar, baduzu ez konfiguratzeko, zure ordenagailuan Horrela, besterik gabe, izan kodea duela apur aztarnarik hemen, aztarnarik ez dago. Eta, ondoren, hilabete geroago, atzera begiratu eta bezalako bazara, zergatik lerro hau da, kodea ez? Eta ez bada, pisuzko arrazoirik ez da, ez du onura edo zure lankideek errepidera jaitsiko dute gainean stumble orduan. Bat alde batera bezala, non dago datorren hori? Beno, denbora gogoratzen dugu behin bildu duten programa, stuff hori guztia da ari inprimatu. Beraz, itzuli behar dugu hau. Baina, berriro ere, egiteko utilitate bat da, biltzeko prozesua automatizatzen arabera benetako konpiladoreak exekutatzen izeneko clang. Gauza hau, azkenean ikusiko dugu, hau da, to arazketa zerikusirik berezi batekin izeneko programa araztailea. Honek ez dauka zerikusirik optimizatzeko kodea - gehiago etorkizun hori. STD = c99 - honek esan nahi du, besterik gabe, erabil 1999 bertsioaren C. C inguruan egon are luzeagoa baino , baina polita egin dute aldaketak, gehi 10 urte. Eta hemen, garrantzitsuak direnak da. Ezer egin esaten ari gara hori Aurretik zatekeen abisua Errore bat ikaslea saihestuz biltzen ditu. Horma eta horretarako bat osoan gauza mordoa, ez besterik aldagaiak lotuta. Eta, ondoren, let me joan lerro honen amaieran. Eta hau ere, azkenean dizkizugu itzuli. Hau da, jakina, izen fitxategia biltzen ari naiz. Honek fitxategi izena gogoratzen Izen gisa naiz outputting nire programa runnable du. -Lcs50 Honek esan nahi du, besterik gabe, erabili CS50 du liburutegia, eta zero eta irakatsi langileek idatzi eta konpilatu lehenago aurten, integratu nire programa horiek. Eta edonork daki zer-lm da? Math-liburutegia da, hau da, besterik ez bada ere, zauden ez da edozein matematika egiten. Honez besterik automatikoki emandako gurekin bat egin du. Beno, goazen beste adibide bat egin zidan Hemen berriak irekitzea fitxategi batek. Eta utzi hau gorde me string.c gisa. Bihurtzen da datuak buruz hitz egiten duten motak, gaur egun, ez da, are gehiago gertatzen kanpaia azpian Nik baino ikusten dugu, beraz, oso urrun. Beraz, do me azkar azkar programa bat. Besteak beste, stdio.h. Eta hori gorde dut. Eta badakizu, utzi egin ez dit akats bera behin eta berriro. Besteak beste, cs50.h. Eta utzi aurrera me orain eta zer int main (void). Eta orain, nahi ditut, besterik gabe, programa bat egin horrela, ez honetan - deklaratzeko katea izeneko s eta kate bat lortzeko erabiltzaileari. Eta utzi pixka bat egin zidan argibideak hemen - mesedez me kate bat - beraz erabiltzaileak badaki zer egin. Eta, ondoren, behera hemen horren azpitik, Honako hau egin nahi dut - int for zero lortzen i. Berriz ere, ordenagailu zientzialari normalean hasteko zero at kontatuta, baina ezin izan dugu bat egin duten benetan nahi izan dugu. Orain egin dut txikiagoa da i s luzera katea baino. Beraz strlen - S-T-R-L-E-N - berriro ere, laburra da da errazagoa delako , idatzi arren da bat apur críptica. Duten funtzio bat ez dugu erabiliko da baina aurretik, hitzez hitz egiten duten - niri itzultzeko zenbaki bat dagoela adierazten du katearen luzera Erabiltzaileak idatzitako. Kaixo dute idatzitako bada, itzuliko luke bost dago bost delako kaixo letrak. Ondoren, iterazio bakoitzean an begizta hau, i Plus. Beraz, berriro ere, estandar bat eraikitzeko, nahiz eta Oraindik ez duzu nahiko eroso gehiegi edo da ezagutzen oraindik. Baina orain begizta honen iterazio bakoitzean, nabarituko zer egin behar dut. Aurrera joan eta inprimatu nahi dut bakar pertsonaia out - beraz,% c backslash berri bat on line n. Eta gero, zer egin nahi nuen, badakizu? Whatever hitza da erabiltzaile-mota , en kaixo bezala, inprimatu nahi dut H-E-L-L-O, lerro bakoitzeko pertsonaia. Beste era batera esanda, eta bertan lortu nahi dut Kate karaktere banako, Horren bidez, orain arte kate bat besterik ez du karaktere-sekuentzia bat da. Eta s, tarte dut egin dezakezu izarrekin bihurtzen da, i, itxi kortxetea, itxi parentesi, koma. Eta izan dut gauza bat gehiago egiteko. Deitzen string.h fitxategi batean strlen hori izendatu zuten. Beraz, bada, funtzio hori erabili nahi dut, Konpiladore esan behar dut, espero erabiltzeko. Orain aurrera egin eta niri programa izeneko katea. Puntu, barra, katea. Mesedez eman dit katea. Aurrera egingo dut, eta idatzi. Kaixo, txanoak guztiak, idatzi. Eta orain, inprimatutako nabarituko dut hau karaktere bat bestearen atzetik. Beraz, xehetasun berria hemen da kate bat dela, egunaren amaieran, ezin izango bere bakarkako bidea sartu plazan jarrita pertsonaiak tarte idazkera. Eta hori kate bat azpian delako kanpaia da, hain zuzen ere, sekuentzia baten karaktereak. Baina zer da haiei buruzko neat da ordenagailuaren RAM-en - Mac, PC, edozein da - Oraindik dute literalki itzuli itzuli itzuli nahi - H-E-L-L-O - , banakako alboko at memorian byte. Beraz, bada, hala nola, zortzigarren at lortu nahi duzun byte, eta horrek begizta hau litzateke parentesi zero, tarte bat, tarte bi, parentesi hiru, lau tarte - hori zero indexatutako bost arte - hori inprimatu egingo H-E-L-L-O bere on line egin. Orain, esaldi bat, let me erakutsiko dizu gauza askotan, azkenean izango zara gai ulertzeko, gutxienez itxi batzuk ere bila. Ko, zer sartzen dira gaur egun dugun adibideak, Nahi izanez gero, benetan da oso lehen jailbreaks bat iPhone-rako. Jailbreaking esan telefono cracking beraz, benetan erabil dezakezu batean desberdinen eramaile edo instalazioa Zeure softwarea. Eta iragarki honen itxura erabat izango zara críptica, ziurrenik. Baina begiratu. IPhone zen itxuraz pitzatu batekin begizta bat, egoera bat izanez gero, beste bat baldintza, funtzio sorta bat ez dugu ikusten. Eta, berriro ere, ez duzu etxean Lehenengo begirada batean, seguruenik, ulertzen nola lan hau. Dena Ordena dugun hartu gure bizitza modernoan emandako Egia esan, nahiz eta joera murrizteko batzuk oinarriak hauek izan gara begira. Let me aurrera eta bat irekitzeko beste programa, holloway.c. Beraz, honetan ere, ez da zerbait ez benetan jakin. Nahiz eta langile edo bat ere ez nuen ziurrenik irudikatu hau begiratzen hau da, norbaiten kodea ez delako izan zen zer aurkeztu historikoki nahasia C bezala ezagutzen lehiaketa, non, programa bat idatzi biltzen duten eta exekutatzen ditu, baina ez da hain madarikatua críptica ez giza zer ulertzen egin da joan arte exekutatu benetan dute. Beraz, hain zuzen ere, bada begiratu dituzun kodea, switch bat ikusten dut. Nagusiak ikusten dut. Kortxeteak horiek ulertuta ikusten dut array bat. Norbaitek nahi zer Programa honetan, benetan du exekutatu dut Holloway bada? Bai. Ados. Ondo egin. Beraz, soilik langileak eta nik ez daki zer gauza horiek egin dira. Eta orain, azkenik, goazen aurrera me eta ireki bat beste programa. Hau - berriro ere, iturburu-kodea egin dugu eskuragarri online - hau da, besterik gabe, nolako politak ikusteko. Guztiak egin zuten da hit espazio-barra, nahiko pixka bat. Baina hau benetako kodea da. Beraz, bada, hori da polita, bada uste duzu dugu benetan exekutatu hau gonbitan, azkenean ikusiko dugu nola izango zara gauza egin dezake hau atsegin du. Beraz, utzi dugu ohar horretan eta ikusiko duzu, asteazkenean. [Musika jotzen] HIZLARIA 2: hurrengo CS50 egun, TFS eszenatokia mutiny bat. HIZLARIA 3: Ez zuen. Talde bera! [Musika jotzen]