>> [Muzikavimo]
>> DAVID J Malan: Gerai, Sveiki sugrįžę CS50.
Tai savaitės dviejų pradžia.
Iš vieno iš mūsų žodis draugai miesteliu -
jei jus domina, jei įmanoma, arba dabar arba tam tikru metu ateityje terminas
net, kai patogiau, mokymas vidurinių mokyklų moksleiviai mažai
kažkas apie kompiuterių mokslą, padaryti galva, kad URL.
Jie yra ypač reikalinga dabar iš mokytojai, ypač jei turite
turėjo tam tikrą poveikį kompiuterių mokslo.
>> Taigi priminti, kad paskutinį kartą, mes pristatėme keletas duomenų tipai C, ir
jums gali tekti pradėjo gauti savo rankas purvinas su jais iki šiol
į problemą nustatyti vieną.
Ir mes turėjome Char.
Taigi, šiek tiek techninių terminų, kas yra char kaip žinote šiandien?
>> Taigi tai simbolis, bet tegul Tiksliau dabar.
Ką mums reiškia pobūdžio arba individuali char?
Ne skaitmeninis pobūdis -
todėl nebūtinai.
Pasirodo, kad net numerius, net skyrybos ir raidės
atstovaujama su šiais duomenimis įveskite žinomas kaip Char.
Taigi tai nebūtinai abėcėlės.
Taip?
>> Taigi tai ASCII simbolių.
Taigi, jei manote, kad atgal į savaitę nulio, kai mes turėjome savo baitą savanorių
sugalvoti ir arba laikyti savo rankas ar ne, jie atstovavo bitai.
Bet kartu kaip aštuonerių grupės jie atstovavo baitą.
Ir mes pristatė ASCII sąvoka tuo paskaitą, kuri paprasčiausiai yra
kartografavimo tarp skaičių ir raidžių.
Ir ASCII panaudojimas, kaip tie žmonės numanomų, aštuonis bitus
atstovauti simbolį.
>> Taigi, atitinkamai, jei aštuonis bitus gali imtųsi vieną iš dviejų verčių -
nulis arba vienas -
Tai reiškia, kad buvo dvi galimybės už šio asmens -
nulis arba vienas -
du už šio asmens, du tai žmogus, du šio vieno.
Taigi du kartus iš viso du kartus du kartus du kartus du -
todėl du iš viso aštuntas.
Taigi, čia yra bendras simbolių skaičius 256 gali būti, kad jūs galite
sudaro su aštuonis bitus.
>> Dabar, tiems iš jūsų, kurie kalba Azijos kalbos gali žinoti, kad yra daugiau
simbolių pasaulyje ne tik Kaip ir pusryčių ir Cs ir DS.
Ir iš tiesų, ASCII nėra pakanka kalbų pasaulyje daug.
Bet daugiau apie tai kitą kartą.
Nes dabar, žinau, kad C, jei norite atstovauti laišką, gabalas
skyrybos, arba tiesiog kažkas pobūdis pobūdžio, mes naudojame Char.
Ir tai vienas baitas ar aštuonis bitus.
>> Kaip apie int?
Na, int yra sveikasis skaičius.
Kiek bitų, jei jūs žinote, buvo sveikasis skaičius paprastai?
Kiekvienas prisiminti?
Taigi, tai paprastai 32.
Jis tikrai priklauso nuo kompiuterio kad jūs naudojate.
Tačiau prietaiso, ir daug kompiuterių, tai 32 bitų ar keturis
baitų - aštuonis kartus keturi.
Ir ints tiesiog naudojama saugoti numeriai, arba neigiamas,
teigiamas arba lygus nuliui.
>> Ir jei jūs turite 32 bitų ir turite tik rūpinasi teigiamais skaičiais, gali
kas apytikrė kiek įmanoma sveikieji skaičiai kompiuteris gali atstovauti nuo
nuliui iki?
Taigi būtų du į 32, o yra maždaug keturis milijardus.
Taigi šie du įgaliojimai bus pasikartojančios temos kompiuterių mokslo.
Kaip matysime, jie gana patogus dirbti, net jei tai ne visai
lengva padaryti matematikos galvą.
>> Taigi, mes pasakyti maždaug keturis milijardus.
Dabar, ilgai ilgai -
galite rūšies atspėti.
Tai daugiau nei int.
Kiek bitų?
Taigi, 64 bitų ar aštuoni baitai.
Tai tiesiog reiškia, kad jums gali atstovauti net didesni numeriai, didesnis teigiamas arba
didesni neigiami skaičiai.
>> Ir kaip apie plaukti?
Štai slankaus kablelio vertė 32 bitų.
Tai tik realusis skaičius, kažkas su kablelio.
Bet jei vietoj reikia daugiau vietų po kablelio arba norite
sudaro didesnę numeris su kai frakcija po to, galite naudoti
dvigubai, o tai yra 64 bitai.
>> Tačiau yra įdomus Takeaway čia.
Taigi, jei ints riboja 32 bitų ir net ilgi ilgi riboja 64
bitai, kad tarsi kyla klausimas, ką daryti, jei jūs iš tikrųjų norite suskaičiuoti
didesnis nei int 4 mlrd?
Na, jūs tiesiog naudokite ilgai ilgai.
Bet kas, jei norite skaičiuoti didesnis nei du su 64th, duoti ar priimti?
>> Dabar, kad didžiulis skaičius.
Bet galų gale, jūs iš tiesų gali rūpintis šių vertybių rūšių,
ypač jei jūs naudojate duombazę ir pradeda rinkti daug ir daug
ir daug duomenų ir Unikalių numerius kiekvienai šio duomenų gabalas.
Taigi mes tarsi turi problemą.
Ir panašiai, su slankaus kablelio vertybės - plūdes arba dviviečiai -
jei jūs tik gavau baigtinio skaičiaus bitai, kiek iš viso numeriai tu galėjai
galbūt atstovauja?
>> Na, tai mažiau akivaizdu, kai jūs įtraukti dešimtainį kablelį.
Bet tai tikrai ribotas.
Jei turite baigtinio skaičiaus bitai, ribotas skaičius žmonių, baigtinis
skaičius lemputes, be abejo, galite sudaro tik baigtinio skaičiaus
slankiojo kablelio vertybes.
Bet kiek realieji skaičiai yra jų pasaulyje?
Yra begalinis.
Štai kokios problemos, nes mes neturi begalinį kiekį
atminties arba atminties viduje mūsų kompiuteriuose.
Taigi, kai sudėtinga viskas gali atsitikti.
>> Taigi eikime į priekį ir pabandyti išreikšti tai čia.
Leiskite man eiti į priekį ir atverti gedit.
Aš ruošiuosi eiti į priekį ir išsaugoti failą vadinamas "floats0.c" tiesiog būti
atitikti pavyzdį, kuris yra galima rasti internete, jei norite.
Ir aš ruošiuosi eiti į priekį ir apibrėžti taip -
Aš ruošiuosi eiti į priekį ir pasakyti, int Pagrindinis negalioja, nes mes dažnai darome.
>> Ir tada šios programos, aš ruošiuosi paskelbti sau plūduriuoti, todėl 32 bitų
kintamasis vadinamas f savavališkai.
Ir tada aš ruošiuosi laikyti jį Aš nežinau, vieną dešimtąją, todėl 0.1.
Taigi, aš ruošiuosi pareikšti, kad viena padalintas iš 10, kurie puikiai
teisėta C.
>> Ir tada antroje eilutėje, aš tiesiog norite atsispausdinti šią vertę.
Taigi priminti, kad mes galime naudoti susipažinęs printf.
Mes nenorime naudoti% I int.
Mes norime naudoti% F plūdės.
Ir tada aš ruošiuosi daryti backslash n, Uždaryti citata, kablelis, f, kabliataškis.
>> Taigi čia mano programa.
Yra jau viena klaida.
Ar kas nors, kam tai paspaudėte jau noriu atkreipti bent
viena klaida aš padariau?
Taip?
Taip.
Aš pamiršau "# include" ne viršuje, jos simptomas, kuri, jei bandau
surinkti tai bus, kad sudarytojas ketina klykauti ne man,
sakydamas neapibrėžtą simbolį arba ką šiuo klausimu.
Ji nesupranta, ką kaip printf.
>> Taigi, aš ruošiuosi daryti "# include "Išsaugokite failą.
Ir dabar jis yra geresnės formos.
Bet aš taip pat ketina atkreipti iš viena nauja detalė šiandien.
Be to, nurodant vietą turėtojai, pavyzdžiui,% f% i% s, galite
kartais įtakoja elgesį tos vietos rezervavimo ženklą.
Pavyzdžiui, atsižvelgiant į kintamųjų atveju punkto vertė, jei aš tik noriu
rodyti vienos dešimtosios tikslumu po laikotarpis, aš iš tiesų gali padaryti 0.1f.
Taigi, kitaip tariant, aš atskirti f ir procento ženklas su 0,1, tik
sakau printf, galite turėti visą krūva skaičių po kablelio
priminti man.
Bet aš tik noriu pamatyti vieną iš jų.
>> Taigi, aš ruošiuosi eiti į priekį dabar ir sutaupykite ši programa, eikite į mano terminalo
langą, ir aš ruošiuosi eiti į priekį ir tipo, kad flotacinio 0, įveskite.
Matau, kad šiek tiek paslaptingas liniją, kuri pradės daugiau prasmės, kaip mes
erzinti jį išskiria šią savaitę ir toliau.
Dabar aš ruošiuosi eiti į priekį ir paleisti float nulį.
Ir nusispjauti.
>> Taigi yra ir kitas klaidą čia dėl kažkokios priežasties.
Aš esu gana įsitikinęs, kad viena dešimtoji, arba vienas, padalytas iš 10, yra ne 0.0.
Gal aš tiesiog ne ieško ne pakankamai skaitmenų.
Tad kodėl gi ne sakau du .2 pamatyti du dešimtųjų tikslumu, o ne tik vieną.
Leiskite man grįžti į savo terminalo langą čia ir nukentėjo iki porą kartų į
pamatyti savo istoriją.
Ar padaryti plaukti nulio vėl, ir tada vėl.
Ir dabar įeiti.
>> Ir dabar aš esu gana įsitikinęs, tai yra negerai.
Ir aš galėčiau padaryti trijų ir keturių, ir aš tikriausiai bus nuolat matau nuliai.
Taigi, kur yra klaida?
Vienas dalinant iš 10 turėtų būti 0.1.
Kažkas nori imtis Pabandyti ką esminis klausimas yra?
Taip?
Jie abu sveikieji skaičiai.
Na ir kas?
Taigi su viena padalinta iš 10, kad yra ką man daryti aritmetika.
Ir gaunu 0.1.
>> Taip.
Ir todėl, kad iš tikrųjų klausimas.
Kai domėtis kompiuterio sveikasis skaičius ir jums padalinti jį nauju sveikojo skaičiaus,
pagal nutylėjimą kompiuteris ketina manyti, kad jūs norite sveikasis skaičius.
Problema, nors, žinoma, yra kad 0.1 nėra sveikasis skaičius.
Tai realus skaičius.
Ir taip, tai ką kompiuteris veikia pagal Numatytasis tai tiesiog išmeta
viskas po kablelio.
Tai nereiškia, suapvalinti arba iki per se.
Jis tiesiog išmeta viską po kablelio.
Ir dabar, kad prasminga.
Kadangi dabar mes aiškiai liko nulio.
>> Bet palauk.
Nematau int nulį.
Aš iš tikrųjų matyti 0.00.
Taigi, kaip man suderinti tai dabar?
Jei vienas, padalytas iš 10 yra lygus nuliui, bet aš tikiu, matau 0.00, kur jis vis
konvertuoti atgal į realų skaičių?
Taip.
Būtent.
>> Taigi čia atitinka penkių, kai aš iš tikrųjų laikyti, kad 0,1, o tada
sutrumpintas iki nulio, viduje plūdės, tai iš esmės atitinka
saugoti jį ne kaip int, bet iš tiesų, kaip plūdės.
Be to, aš tada naudojant printf į aiškiai, kad atsispausdinti šį skaičių iki dviejų
tūkstantųjų tikslumu nors gali būti iš tiesų toks yra.
>> Taigi tai sucks natūra, tiesa?
Matyt, jūs negalite padaryti matematikos, bent jau šio lygio
precizijos, į kompiuterį.
Bet tikrai nėra išeitis.
Kas paprasčiausias nustatyti galėtume gal padaryti, net tiesiog intuityviai čia
išspręsti šią problemą?
Taip?
Pasukite sveikieji skaičiai į -
taip.
Net jei aš nesu visiškai tikras, kas tikrai vyksta čia, jeigu ji
esmės turi daryti su šiomis ir yra ints, gerai, kodėl gi ne aš
padaryti, kad 10,0, todėl šis 1.0, išsaugokite failą.
Leiskite man grįžti žemyn apačioje ir perkompiliuoti.
Leiskite man dabar pakartotas.
Ir ten -
Dabar, aš turiu savo vieną dešimtąją atstovavo 0,10.
>> Gerai.
Taigi, tai nėra blogai.
Ir leiskite man atkreipti dėmesį į vieną kitą pusę galėtume išspręsti šią.
Leiskite man iš tikrųjų įvirsta metu kada mes turėjome tai kaip vienas
dešimtoji metu senumo.
Ir leiskite man eiti į priekį ir išsaugokite šį failą kaip kitą failo pavadinimą, tik
šiek tiek posto.
Taigi, tai buvo variantas vienas.
O dabar leiskite man eiti į priekį ir padaryti dar vieną versiją.
Mes vadiname šią versiją du nulis indeksuojami.
>> Ir aš ruošiuosi vietoj padaryti tai - jūs žinote, ką?
Įrašyta taškas nulis veikia šioje byloje.
Bet tarkime, vienas buvo nevienoda.
Manoma 10 buvo nevienoda.
Kitaip tariant, tarkime, kad aš negalėjau tiesiog sunku kodo .0 pabaigoje
Šio aritmetinis išraiška.
Na, aš iš tikrųjų gali kažką daryti skliausteliuose vadinamas liejimas.
Galiu atiduoti, kad sveikasis skaičius nuo 10 iki plūdės, ir aš galiu atiduoti, kad sveikasis vieno
plūduriuoti, taip pat.
Tada matematikos tai bus daroma veiksmingai 1,0 padalintas 10.0,
rezultatas, kuris eina F-kaip ir anksčiau.
Taigi, jei aš perkompiliuoti tai, kaip padaryti plūdės 2, o dabar plaukioja 2, man tas pats
atsakyti, taip pat.
>> Taigi, tai yra gana nenatūralu, pavyzdžiui, išspręsti šią problemą
įvedant liejimas.
Bet apskritai, liejimo manimi bus galingas dalykas, ypač
problema nustatyti du per savaitę laiko, kai norite konvertuoti vieną duomenų tipą
kitą, kad dienos pabaigoje būtų atstovaujama vienodai.
Per dieną, kiekvieną pabaigos dalykas, mes kalbėjome apie iki šiol yra
tik ints po gaubtu.
Arba, jei tai labai žemo lygio ir jūs, jie tiesiog numeriai
po gaubtu.
Net simbolių vėl prisiminti nuo savaitės iki nulio, yra numeriai
po gaubtu.
>> Kuris yra pasakyti, mes galime konvertuoti tarp įvairių tipų numeriai Jeigu
jie tiesiog bitai.
Mes gali konvertuoti tarp skaičių ir raidės, jeigu jie tiesiog
bitai, ir atvirkščiai.
Ir liejimo tokiu būdu yra mechanizmas programavimo, kuri leidžia jums prievarta
pakeisti vieną duomenų tipą į kitą.
Deja, tai nėra taip paprasta, kaip aš galėjo patiko.
>> Aš ruošiuosi eiti atgal į plūdės 1, kuris buvo paprastesnis,
paprastas vienas su .0 Pridėta viena.
Ir kaip greitai kvalifikacijos kėlimo, leiskite man eiti į priekį ir perkompiliuoti
tai, kad plūdės 2 -
atsiprašau, tai yra, kad plūdės 1.
O dabar paleisti plūdes 1.
Ir apačioje, pastebėti kad aš iš tikrųjų gauti 0.1.
Taigi, problema išspręsta.
>> Bet dar ne.
Aš dabar ketina gauti šiek tiek įdomu, ir aš ruošiuosi grįžti į savo
printf ir tarkim, jūs žinote, ką?
Norėčiau patvirtinti, kad tai yra tikrai viena dešimtoji.
Ir aš ruošiuosi norite matyti šį , tarkim, penkis skaičiai po kablelio.
Tai ne problema.
Pakeisti po du penkių, Aš perkompiliuoti su make.
Aš pakartotas tai kaip plūdės 1.
Domina gana gera.
Mano normalumas patikrinimai gali baigtis ten, bet Gaunu šiek tiek daugiau nuotykių.
Aš ruošiuosi pakeisti 0,5-0,10.
Noriu pamatyti 10 skaitmenų po dešimtųjų tikslumu.
>> Ir aš ruošiuosi eiti į priekį ir perkompiliuoti tai ir iš naujo plūdės 1.
I rūšies gailisi išbandyti šį toliau, nes mano matematikos ne taip
ištaisyti nebėra, atrodo.
Bet palauk, gal tai tik atsitiktinumas.
Gal kompiuteris veikia šiek tiek keista.
Leiskite man eiti į priekį ir padaryti 20 dešimtųjų taškų ir nuraminti save, kad aš žinau,
kaip tai padaryti matematiką.
Aš žinau, kaip programuoti.
Padaryti plūdės 1, perkompiliuoti ir damn it.
Tai tikrai, tikrai gauti Netinka.
>> Taigi, kas čia vyksta?
Intuityviai, remiantis mūsų prielaidų anksčiau apie duomenų tipų dydžio,
kas turi būti vyksta čia po kapotu?
Taip?
Būtent.
Jei norite, kad šis daug tikslumo ir tai iš tikslumo daug gi -
20 skaičių po kablelio.
Jūs negalite galbūt atstovauti kokiam nebent turite
savavališkai bitų skaičius.
Bet mes ne.
Dėl plūdės, turime tik 32 bitus.
>> Taigi, jei 32 bitai gali būti išgrynintas į būdas - tiesiog kaip mūsų žmogui nekelia, etapas
rankas aukštyn arba žemyn - į baigtinio skaičiaus būdų, yra tik baigtinis skaičius
realiųjų skaičių galite atstovauti su tais bitais.
Ir todėl kompiuteris galiausiai teks į
pradėti pjovimo kampas.
Kompiuteris gali slėpti šiuos duomenis iš mums šiek tiek laiko.
Bet jei mes pradėsime išnyra į skaičius ir ieško vis toliau ir toliau į
gale skaičių sveikuoju skaičiumi, tada mes pradedame suprasti, kad tai
iš tikrųjų suderinti idėja dešimtadaliu.
>> Ir taip it turns out, tragiškai, ten begalinis skaičius skaičiais
mes negalime atstovauti būtent kompiuteris, bent su ribinio
bitų skaičius, ribinis suma RAM.
Dabar, deja, kartais tai turi realių pasekmių.
Jei žmonės neturi pakankamai vertiname tai arba tarsi savaime suprantamu dalyku tai,
kad jų kompiuteris tiesiog daryti tai, ką jie pasakys tai padaryti, o ne
suprasti šiuos pagrindinius atstovavimo informacija -
kuris, tiesą sakant, kai kuriose kalbose yra paslėpta nuo vartotojo, skirtingai nei C -
kai blogi dalykai gali atsitikti.
>> Ir ką aš maniau, mes norime daryti yra žengti žingsnį atgal.
Ir tai yra apie aštuonių minučių vaizdo.
Ji eteryje prieš keletą metų, ir tai suteikia įžvalgos iš tikrųjų, kas gali eiti
negerai, kai jūs nepakankamai vertina šių rūšių detales labai viskas pernelyg
realus pasaulis.
Jei galėtume artimosios šviesos per kelias minutes.
>> GARSIAKALBIS 1: Mes dabar grįžti į inžinerijos
nelaimių Šiuolaikinės stebuklai.
>> Kompiuteriai -
mes visi ateis priimti dažnai nelinksma problemų
kad eiti su jais.
Klaidas, virusai ir programinės įrangos trikdžių mažos kainos mokėti už
patogumui.
Tačiau aukštųjų technologijų ir didelės spartos karinių ir kosmoso programa
programas, mažiausias problema gali būti padidintas į katastrofą.
>> Birželio 4, 1996, mokslininkai pasirengę pradėti nepilotuojamą Ariane 5 raketų.
Ji vykdė mokslinius palydovus sukurta tiksliai nustatyti, kaip
Žemės magnetinis laukas sąveikauja su Saulės vėjai.
Raketų buvo pastatytas Europos Kosmoso agentūros ir nuimti nuo jos
įrenginys ant kranto Prancūzijos Gvianoje.
>> JACK GANSSLE: Maždaug 37 sekundžių į skrydžio, jie pirmą kartą pastebėjo
kad kažkas negerai.
Purkštukai buvo pasukamas į Kaip jie tikrai neturėtų.
Maždaug 40 sekundžių į skrydį aiškiai transporto priemonė buvo bėdų.
Ir tai, kai jie padarė sprendimas jį sunaikinti.
Diapazonas saugumo pareigūnas, su milžiniškas viduriai, paspaudėte mygtuką,
susprogdino raketa, kol ji galėtų tapti pavojinga visuomenės saugumui.
>> GARSIAKALBIS 1: Tai buvo mergautinė reiso 5 Ariane, ir apie jo sunaikinimo
įvyko dėl to, kad škvalas įterptųjų Į Raketa programinės įrangos.
>> JACK GANSSLE: nuo Ariane problema buvo tai, kad ten buvo skaičius
reikalaujama 64 bitų išreikšti.
Ir jie norėjo atsiversti į 16 bitų skaičių.
Jie manė, kad skaičius niekada nebuvo bus labai didelis, kad dauguma
tie 64 bitų skaitmenys skaičius buvo nuliai.
Jie klydo.
>> GARSIAKALBIS 1: vienos programinės įrangos nesugebėjimas programa priimti rūšies
sukurtas numeris vienas buvo prie nesėkmės priežastis.
Programinės įrangos kūrimas tapo labai brangus dalis naujos technologijos.
Ariadnė 4 raketa buvo labai sėkmingas, tiek programinės įrangos
sukurta taip pat buvo naudojamas 5 Ariane į.
>> PHILIP Coyle: pagrindinė problema buvo kad Ariane 5 buvo greitesnis,
paspartinti greičiau.
Ir programinės įrangos neturėjo sudarė už tai.
>> GARSIAKALBIS 1 iš raketos sunaikinimas buvo didžiulė finansinė katastrofa,
visi dėl per minutę programinės įrangos klaidos.
Bet tai buvo ne pirmas kartas, kai duomenys perskaičiavimo problemų buvo kentėjo modernus
raketų technologiją.
>> JACK GANSSLE: 1991 su pradžios pirmojo Persijos įlankos karo, Patriot
raketų patyrė panašaus pobūdžio nesant numerių konvertavimo problemos.
Kaip rezultatas, 28 amerikiečių kariai buvo žuvo ir apie 100 sužeistųjų
kai Patriot ", kuris turėjo apsaugoti nuo gaunamus Scuds,
nepavyko į ugnį raketa.
>> GARSIAKALBIS 1: Kai Irakas įsiveržė Kuveitas ir Amerika pradėjo dykumos audra
pradžioje 1991, Patriot raketų baterijos buvo dislokuoti apsaugoti Saudo Arabija
ir Izraelis nuo Irako skriejimas raketų atakų.
Patriotas yra JAV vidutinio nuotolio žemė-oras sistema gamina
"Raytheon" kompanija.
>> THEODORE postol: nuo Patriot dydis kolektoriaus pati yra maždaug
20 pėdų ilgio.
Ir jis sveria apie 2000 svarų.
Ir ji vykdo daug apie užtaisą -
Manau, kad tai apytiksliai 150 svarų.
Ir užtaisą pati aukštos sprogmuo, kuriam yra
fragmentai aplink jį.
Iš galvutės korpusas yra skirtas veikti kaip Buckshot.
>> GARSIAKALBIS 1: Raketos atliekami keturis už konteinerio ir vežami
pagal puspriekabe.
>> PHILIP Coyle: Patriot "priešraketinės sistema grįžta į
mažiausiai 20 metų.
Iš pradžių buvo sukurta kaip oro gynybos raketa
numušti priešo lėktuvus.
Per pirmąjį Persijos įlankos karą, kai kad karas atėjo kartu armija norėjo jį naudoti
nušauti Scuds, o ne lėktuvais.
Irako oro pajėgos nebuvo tiek daug problemų.
Bet armija buvo susirūpinę Scuds.
Ir taip jie bandė atnaujinti "Patriot".
>> GARSIAKALBIS 1: perimti priešo raketų važiuojant mach penkių buvo
bus pakankamai sudėtinga.
Bet kai Patriot puolė į paslaugos, armija nežino
Irako modifikuoti taip, kad padarė savo Scuds beveik neįmanoma pataikyti.
>> THEODORE postol: Kas nutiko yra Scuds, kurie buvo
deja, buvo nestabili.
Jie buvo Įtaka.
Dėl šios priežasties buvo irakiečiai, kad siekiant gauti 600 kilometrų iš
300 kilometrų nuotolio raketų, buvo svoris nuo priekinės galvutės.
Jie padarė užtaisą lengvesni.
Taigi dabar "Patriot bando ateiti į skriejimas.
Ir didžiąją laiko dalį, didžioji Dauguma laiko, tai būtų tik
skristi į vėjo genami debesys.
>> GARSIAKALBIS 1: Kai Patriot sistema operatoriai suprato Patriot "praleistus
savo tikslą, jie susprogdino Patriots Kovinė kad būtų išvengta galimo
aukų, jei ji buvo leidžiama patenka į žemę.
>> THEODORE postol: Tai buvo tai, ką dauguma žmonės pamatė, kaip didelis ugnies danguje
ir nesuprastas, nes sulaiko iš skriejimas galvučių.
>> GARSIAKALBIS 1: Nors nakties dangus Patriotai pasirodė sėkmingai
sunaikinti Scuds, bent Dhahran ten gali būti ne apie savo klaidą
efektyvumą.
Ten, Patriot radaras sistema prarado sekti priimamą skriejimas ir niekada
pradėtas dėl programinės įrangos defektų.
>> Tai buvo Izraelio, kuris pirmasis atrado kad kuo ilgiau sistema
buvo, didesnis laiko neatitikimas tapo dėl laikrodis
įtraukti į sistemos kompiuteryje.
>> JACK GANSSLE: Apie dvi savaites prieš tragedija Dhahran, Izraelis
pranešė Gynybos departamento kad sistema buvo prarasti laiko.
Po maždaug aštuonių valandų važiavimo, jie pastebėjo, kad sistema yra
tampa pastebimai mažiau tikslūs.
Gynybos departamentas atsakė sakau visi Patriot baterijų
kad neliktų sistemas į ilgą laiką.
Jie niekada nesakė, kas ilgą laiką buvo.
Aštuonias valandas?
10 valandas?
1000 valandas?
Niekas nežinojo.
>> GARSIAKALBIS 1: Patriot "baterija dislokuota AT Dhahran kareivinės
ir jos trūkumų vidinis laikrodis buvo nuo daugiau nei 100 valandas naktį
Vasaris 25.
>> JACK GANSSLE: Tai stebimi laiko tikslumas apie tokią antra dešimtadaliu.
Dabar antrojo dešimtas yra įdomus skaičius, nes jis negali būti
išreikštas dvejetainiu tiksliai, o tai reiškia, jis negali būti išreikšta tiksliai
bet modernus skaitmeninis kompiuteris.
Sunku patikėti, bet naudoti tai kaip pavyzdys.
Paimkime numeris trečdalį.
Trečdalis negali būti išreikšta dešimtainis lygiai.
Trečdalis yra 0,333 vyksta ant begalybės.
Nėra jokio būdo tai padaryti, kad su absoliutus tikslumas dešimtosios dalies.
Būtent tokia pat problema tai įvyko Patriot.
Ilgesnis sistema bėgo, blogiausias laikas klaida tapo.
>> GARSIAKALBIS 1: Po 100 veikimo valandų, laiku paklaida buvo tik
apie trečdalis sekundę.
Tačiau, kalbant apie orientacija raketą važiuojant mach penkių, tai lėmė
sekimo paklaida daugiau nei 600 metrų.
Būtų lemtinga klaida ir dėl kurių Dhahran kariai.
>> THEODORE postol: Kas atsitiko Skriejimas pradėti buvo aptikta anksti
įspėjamieji palydovai.
Ir jie žinojo, kad Skadi buvo dar jų bendrą kryptį.
Jie nežinojo, kur jis atėjo.
>> GARSIAKALBIS 1: Tai buvo dabar iki radaro komponentas "Patriot" sistemos
ginti DHAHRAN rasti ir išlaikyti sekti gaunamų priešo raketų.
>> JACK GANSSLE: radaras buvo labai protingas.
Tai iš tikrųjų stebėti padėtį Skadi ir tada numatyti, kur jis
tikriausiai būtų kitą kartą radaras pasiuntė impulsą iš.
Tai buvo vadinama diapazonas vartai.
>> THEODORE postol: Tada, kai "Patriot" nusprendžia pakankamai laiko praėjo eiti
atgal ir patikrinti kitą vietą Nustatytas objektas, jis eina atgal.
Taigi, kai jis grįžo į negerai vieta, tai tada nemato objektą.
Ir ji nusprendžia, kad nebuvo objektas, ji buvo klaidinga aptikimo ir
lašai takelį.
>> GARSIAKALBIS 1: Priimamojo Skadi dingo iš radaro ekrano, o
sekundžių, vėliau jis pateko į kareivines.
Skadi žuvo 28 ir buvo naujausia atleistas per pirmąjį Persijos įlankos karą.
Deja, atnaujinti programinę įrangą atvyko ne Dhahran kitą dieną.
Programinės įrangos trūkumas buvo nustatytas, uždaryti vieną skyrių iš neramus
istorija "Patriot" raketos.
>> Patriot "iš tiesų yra akronimas už etapais Array stebėjimo
Ašyje TARGET.
>> DAVID J Malan: Gerai, kad Otrzeźwiający pavyzdį, būti tikri.
Ir laimei, tai žemesnio lygio klaidų yra ne kažkas, kad mes atsiųsime
paprastai turi įvertinti, tikrai ne kai kurie iš mūsų
Seniausias programas.
Priešingai, dauguma klaidų jums susitikimas bus logiška pobūdžio,
sintaksinė pobūdžio, kuriuo kodas tiesiog neveikia teisingai.
Ir jūs žinote, kad gana greitai.
>> Bet ypač, kai mes gauti pabaigoje semestrą jis ketina
vis daugiau ir daugiau apie galimybę tikrai sunku galvoti apie dizainą
savo programas ir pagrindinių atstovavimas
ten taip pat duomenų.
Pavyzdžiui, mes jums pristatyti MySQL, kuris yra populiarus duomenų bazės variklis
kad jūs galite naudoti su svetainių saugoti duomenis ant nugaros pabaigos.
Ir jūs turite pradėti spręsti, semestro pabaigoje ne tik tai, ką
rūšių duomenys kartu šių eilučių naudoti bet tiksliai kiek bitų naudoti,
ar jūs norite saugoti datas kaip datos ir laiko, kaip visada, o taip pat
dalykų, pavyzdžiui, kaip didelis norite unikalių identifikatorių būti, tarkim, vartotojai
jūsų duomenų bazėje.
>> Iš tiesų, jei kai kurie iš jūsų turėjo "Facebook" sudaro gana ilgą laiką,
ir žinote, kaip gauti galimybę susipažinti su Jūsų Vartotojo ID -
kurie kartais pasirodo jūsų Profilis URL nebent jūs pasirinkote
slapyvardį URL, arba jei jūs Naudoti "Facebook" diagrama API
viešai API, kuriuo galite paprašyti Facebook "neapdorotus duomenis -
jūs galite pamatyti, ką jūsų skaitmeninis ID yra.
Ir prieš keletą metų, "Facebook" iš esmės turėjo pakeisti naudoti
iš Ints atitinka naudojant ilgai ilgai, nes laikui bėgant, nes vartotojai ateiti
ir eiti ir sukurti daug sąskaitų ir netikras sąskaitas, net ir jie labai lengvai
galėjo išnaudoti kažką panašaus 4 milijardų galimas vertės kaip int.
>> Taigi, labiau į tas problemas rūšių nustatantis kelių, taip pat.
Gerai, kad buvo liejimas.
Tai buvo netikslumai.
Kelių greitų pranešimai pora.
Taigi skyriai oficialiai pradėti ateinančiais Sekmadienis, pirmadienis, antradienis.
Jūs išgirsite elektroniniu paštu vėliau šią savaitę kaip savo skyriuje užduotį.
Ir jūs taip pat čia tuo momentu kaip pakeisti savo skyrių, jei jūsų
grafikas dabar pasikeitė ar jūsų komforto lygis dabar pasikeitė.
Tuo tarpu P-rinkinys vienas ir hakeris vienas yra dėl šį ketvirtadienį su galimybe į
pratęsti už terminą specifikacijos iki penktadienio
į tipišką būdu.
>> Suprantu, kad kartu su problemos standartinės specifikacijos instrukcijos
kaip naudotis CS50 prietaisą, įsitikinkite, taip pat kai CS50 specialios priemonės
kaip stiliaus 50, kuris gali suteikti jums grįžtamąjį ryšį dinamiškai
kokybė Jūsų kodas stiliaus ir taip pat patikrinti 50, kuri gali suteikti Jums su
dinamišką grįžtamąjį ryšį dėl jūsų Kodekso teisingumą.
Atleisk, kad mes vis dar lyginimo iš kelių Kinks su atbuliniu 50.
Savo klasiokų, kurie buvo pradėti keli apie 04:00 penktadienio vakarą, kai
spec pakilo pastebėjau, nes tada keletas klaidų, kad mes darbo
per, ir atsiprašyti tiems, kurie patyrė nereikalingų nusivylimų.
Kaltė yra mano.
Bet mes atsakysime į CS50 aptarti kai tai bus išspręsta.
>> Taigi ant balai patys žodį.
Taigi, tai bus savaitę ar dvi prieš jus pradėsite gauti grįžtamąjį ryšį apie problemines rinkiniai
nes jūs dar neturite mokymo kolegos.
Ir net tada, mes pradėsime vertinti C problema nustato, kol mes
grįžti atgal ir įvertinti įbrėžimams taip kad jums labiau tinka
Atsiliepimai greičiau.
Bet apskritai už mokymo programą, CS50 problema rinkiniai vertinami kartu
po keturias ašis -
apimtis, tikslumas, dizaino ir stilių.
>> Taikymo sritis bus skaičius paprastai nuo nulio iki penkių, kad
fiksuoja, kiek gabalas, kad jūs nukando.
Paprastai, jūs norite, kad tai būtų penki.
Jūs bent bandė viską.
Ir pastebėti tai dauginamasis koeficientas todėl, kad tai tik dalis
problema rinkinys nėra geriausia strategija.
>> Tuo tarpu labiau akivaizdu yra svarba teisingumą -
tiesiog jūsų programa teisingai su gerbti specifikacijos?
Tai balsai sąmoningai daugiau tarifu nei kitų dviejų krypčių pagal
veiksnys iš trijų, nes mes pripažįstame, kad paprastai jūs ketinate praleisti
daug daugiau laiko vejasi nustatantis kai kurių klaidų, gauti savo kodo į darbą, tada jūs
wcięć jį ir pasirinkti atitinkamų kintamųjų vardai ir
patinka, kuris yra kitame gale apie stilių spektrą.
>> Tai nereiškia, kad stilius yra ne svarbus, ir mes skelbiame jį per
laikas tiek paskaitų ir skyriuose.
Stilius reiškia estetika Jūsų kodas.
Jūs pasirinkote pat pavadinimu kintamieji kad yra trumpas, bet šiek tiek
aprašomasis?
Ar jūsų kodas įspaudžiami, kaip jūs mačiau paskaita ir taip, kad atitiktų
su stiliumi 50?
>> Galiausiai yra teisė į dizainą yra per vidurį.
Dizainas yra sunkiau vienas įdėti pirštu, nes tai daug
subjektyvus.
Bet tai galbūt svarbiausia trys ašys pedagoginės
vertė laikui bėgant ir kad tai bus Mokymą kolegų yra galimybė
suteiks Jums kokybinės grįžtamosios informacijos.
Iš tiesų, CS50, nors mes turime šias formules bei muzikos natos, pabaigoje
dienos tai yra labai sąmoningai labai mažos kibirai - taško verčių
nuo nulio iki trijų ir nulis ir penki.
Mes nebandome padaryti labai stambias linijas tarp probleminių grupių arba tarp
studentai, bet sutelkti kiek mes galime kokybinius, Paprastoji laišką
grįžtamasis ryšys, arba spausdintas arba žodžiu iš Jūsų pirma mokymo kolegos,
gausite žinoti, gana gerai.
>> Bet apskritai, jie yra svoriai kad įvairios ašys turės.
Tuo tarpu, taip pat verta turint omenyje, kad jums neturėtų manyti, kad
trys iš penkių yra 60% ir Todėl maždaug netinkamai.
Trys sąmoningai reiškia būti tarsi viduryje kelio gera.
Jei gaunate trise ne pradžioje semestro, tai
iš tiesų reiškia būti gera vieta pradėti.
Jei gaunate tuojau, mugės, ten tikrai tam tikrą darbą mokėti šiek tiek
daugiau dėmesio, pasinaudoti sekcijų ir darbo valandomis.
>> Jei gaunate fours ir penketai, puiku.
Bet iš tikrųjų, mes tikimės, kad trajektorijos tarp studentų - labai
individualiai vienam studentui, bet pradedant semestrą čia tarsi
du į tris srities, bet baigiasi iki čia, 4:56 asortimentą.
Štai ką mes iš tikrųjų ieško.
Ir mes nepamiršti delta, kad jūs eksponuoti tarp savaitės nulio ir savaitės
12, kai aš darau rūšys.
Nesvarbu, mums visiškai kaip jūs sąžiningai pradžioje, jei jūsų
trajektorija yra iš tiesų aukštyn ir stiprus.
>> Akademinis sąžiningumas - todėl leiskite man įdėti į mano rimtesnė balsas vos akimirką.
Taigi, šis kursas turi skirtumų siųsti daugiau studentų nei bet kuri kita
istorijoje skelbimo lentos, manau.
Mes turime rūšiuoti pamečiau skaičių į tai taškas, kaip dažnai tai vyksta.
Ir tai dar ne, nes studentai iš 50 yra, bet daugiau nesąžiningas nei jų
klasiokai kitur.
Bet suprasti ir tai, kad mes esame labai geras aptikti šis dalykas rūšiuoti.
>> Ir tai yra privalumas, kad informatikos klasė turi tuo, kad mes
gali ir mes lyginti visus studentus problema nustato porinių prieš kiekvieną
kita vertus, ne tik šiais metais bet visi prieš metus.
Mes turime galimybę, kaip studentai klasės, "Google" ir rasti kodą
svetainėse kaip GitHub ir diskusijų forumuose.
Yra absoliučiai sprendimai CS50-aisiais p nustato plūduriuojančius aplink ten.
Bet jei jūs galite juos rasti, mes galime juos rasti.
Ir visa tai yra labai automatizuotas ir paprastas, ir liūdna mus rasti.
>> Bet aš noriu pabrėžti ir tai, kad Žinoma, akademinis sąžiningumas politika
labai reiškė labai daug tos dvasios priešingybė.
Iš tiesų, šiais metais mes perfrazuoti dalykus į mokymo programas, kad būtų tai, taškas
dot dot, su išsamiau į mokymo programas.
Bet svarbiausias tema kurso tikrai turi būti pagrįstas.
Mes pripažįstame, kad yra reikšmingas suma pedagoginių
vertė bendradarbiauja, tam tikru mastu, su klasės draugais, kai jūs
du ar po tris ar jums labiau yra stovėjo balta lenta
whiteboarding, taip kalbėti, savo idėjas -
raštu iš pseudocode nuotraukose, diagramų, kas turėtų Mario, jei
jums buvo rašyti pirmas į pseudocode.
Ką reikėtų godus algoritmas -
kaip jis turėtų elgtis už problema nustato vieną?
>> Ir taip suprasti, kad elgesį kad mes skatiname yra labai
daug palei tas linijas.
Ir mokymo programą, pamatysite visa krūva kulkų pagal
pagrįstas kategorija ir nėra pagrindo kategorija, kuri padeda mums padėti
jums wrap savo mintis apie kur mes atkreipti ta linija.
Ir apskritai, padorus nykščio taisykle yra tai, kad jei jūs sunkiai sekasi spręsti
kai klaidų ir jūsų draugas ar klasiokas sėdi šalia tavęs, tai
protinga jums parodyti jam ar jai Jūsų kodas ir sako, ei, jūs galite padėti
man išsiaiškinti, kas vyksta blogai čia?
>> Mes neturime paprastai apima priešingoje pusėje.
Tai nėra teisingas atsakas į jūsų draugas ar klasiokas čia pasakyti, Oh,
tiesiog pažvelgti į mano ir figūra jis iš to.
Tai tarsi nepagrįstas.
Tačiau atsižvelgdama kažkas, kitas smegenų, kita akis pora pažvelgti
Jūsų ekrane ar pažvelgti kodą ir sako, jūs tikrai norite
turėti kilpą čia?
Ar tikrai norite kad kabliataškis čia?
Arba O, kad klaidos pranešimas reiškia tai.
Tai yra labai protinga ir skatinami elgesio.
>> Tais atvejais, kuriuos buvau tipo nuorodomis anksčiau skliautais, kai studentai yra
vėlai vakare, todėl prastas sprendimą sprendimai ir rašau savo kodą
kažkas arba tiesiog pasakyti, čia jis yra Dropbox arba
"Google" paiešką vėlai vakare.
Ir todėl norėčiau paskatinti ir maldauti jus, jei jūs turite tuos neišvengiama
akimirkos streso, jūs nelygumai iki prieš terminą, jūs neturite vėlai
dieną, nes tai jau penktadienį, kad taškas, rašykite kurso galvų arba
pats tiesiogiai.
Pasakykite, klausytis, aš ne mano lūžio taško čia.
Leiskite pokalbį ir suprasti jį.
Kreipiantis į internetą ar kokios nors kitos ne protingas elgesys niekada
sprendimas, ir per daug iš jūsų klasiokai nebegali čia
Campus, nes tos blogos sprendimą.
Bet tai labai lengva sijonas ta linija.
>> Ir čia yra šiek tiek vaizdo nudžiuginti jus iš Reddit kad dabar
viskas bus gerai.
>> Taigi greitai Priminti tada, , kur mes nerašomas.
Taigi, praeitą savaitę, priminti, kad mes pristatome sąlygos, o ne nulio
o C šiuo metu.
Ir ten buvo keletas naujų sintaksė, bet tikrai ne naujų idėjų per se.
Mes turėjome Būlio išraiškos, kad galėtume arba kartu su dviejų vertikalių
juostos arba ir kartu su dviem jungimo ženklus, sakydamas, kad tiek kairėje
ir teisė turi būti tiesa tai vykdyti.
Tada mes turėjome jungikliai, kurią mes pažvelgė bent trumpai, bet siūlau tikrai
tiesiog skirtingi sintaksė pasiekti pačios rūšies tikslą, jei jūs žinote
iš anksto, ką jūsų atvejai ketinate būti.
>> Mes pažvelgė į kilpas.
For ciklas yra gal labiausiai paplitusi, ar bent vienas, kad žmonės
paprastai pasiekti už instinktyviai.
Nors tai atrodo šiek tiek paslaptingas, pamatysite daug, daug pavyzdžių, tai
prieš ilgas, kaip jūs turite jau per vėlu praėjusią savaitę.
Nors kilpos gali panašiai pasiekti tą patį.
Bet jei norite daryti, bet incrementation ar atnaujinimas
Kintamojo reikšmės, turite padaryti daugiau nei rankiniu būdu
už kilpa iki leidžia.
Ir tada ten do-while cikle, kuri leidžia mums padaryti kažką
bent vieną kartą, o kažkas kita yra tiesa.
Ir tai ypač tinka programas arba žaidimus, jei norite
kad tai paskatins už kažką vartotoją bent vieną kartą.
Ir tada, jei jis ar ji nebendradarbiauja, galbūt norėsite tai padaryti
vėl ir vėl.
>> Su kintamųjų, tuo tarpu, mes turėjome linijas kodo, kaip šis, kuris galėtų
būti dvi eilutes.
Galite paskelbti int vadinamas skaitiklis, kabliataškis.
Arba galite tiesiog paskelbti ir ją apibrėžti, taip sakant.
Suteikite jam tuo pačiu metu reikšmė.
>> Ir tada galiausiai, mes kalbėjome apie funkcijas.
Ir tai buvo gražus pavyzdys ta prasme, kad ji iliustruoja
dviejų rūšių funkcijas.
Vienas iš jų yra GetString (), kuris, vėlgi, gauna eilutę iš vartotojo.
Bet GetString () yra rūšies įdomus, tiek, kiek mes jį naudojo,
nes mes visada naudojamas su kažkas kairėje pusėje
lygybės ženklas.
Tai reiškia, kad GetString () grąžina reikšmę.
Jis grįžta, žinoma, eilutę.
Ir tada kairėje pusėje, mes tiesiog įrašykite tą eilutę viduje
kintamasis vadinamas pavadinimą.
>> Tai skiriasi, tam tikra prasme, iš printf nes printf, bent jau mūsų
naudojimas čia negrąžina nieko.
Kaip žemę, ji grįžti kažką.
Mes tiesiog nerūpi, kas tai yra.
Bet ji turi kas vadinamas šalutinį poveikį.
Ir kas tai yra šalutinis poveikis kiekvienas atveju mes matėme iki šiol?
Ką printf daryti?
Jis spausdina kažką ekrane, rodoma tekstas arba skaičiai ar kažkas
ekrane.
Ir tai tiesiog laikoma šalutinis poveikis nes ji tikrai nėra dalijamos
jį atgal į mane.
Tai ne viduje atsakymas juoda dėžutė, kad aš galiu tada
pasiekti į ir patraukti.
Tai tiesiog daro savo, daug kaip Colton buvo įkištas į tai
black box ", praeitą savaitę, ir jis kažkaip stebuklingai buvo piešimo ant lentos
be manęs iš tikrųjų dalyvauja.
Tai būtų šalutinis poveikis.
Bet jei aš iš tikrųjų turėjo pasiekti atgal čia ir pasakyti,, oi, čia yra eilutė
nuo vartotojo, kad būtų būti grąžinta reikšmė.
>> Ir iki šiol mes tik naudojamas funkcijas kad kiti žmonės parašė.
Bet mes iš tikrųjų galite atlikti šiuos rūšių dalykų sau.
Taigi, aš ruošiuosi eiti į CS50 prietaisą iš naujo.
Leiskite uždaryti skirtuką, kad mes buvo atidaryti prieš akimirką.
Ir leiskite man eiti į priekį ir sukurti naują failą.
Ir aš ruošiuosi eiti į priekį ir vadiname positive.c.
Taigi aš noriu kažką daryti su teigiami skaičiai čia.
Taigi, aš ruošiuosi eiti į priekį ir daryti int -
sorry -
# Include.
Tegul ne padaryti tą patį klaida, kaip ir anksčiau.
Int main (void), atviras garbanotas petnešomis, uždaras garbanotais petnešomis.
>> O dabar noriu daryti toliau.
Noriu parašyti programą, kuri primygtinai reikalauja, kad vartotojas suteikia
man teigiamas sveikasis skaičius.
Taigi nėra GetPositiveInt funkcija į CS50 bibliotekoje.
Yra tik GetInt ().
Bet tai gerai, nes turiu konstruktai, su kuriais galiu neįvesti
šiek tiek daugiau suvaržymų tos vertės.
Aš galėtų padaryti kažką panašaus į tai.
>> Taigi, int n -
ir jei įvedate kartu, tiesiog suprasti, Aš ruošiuosi grįžti ir
pakeisti kai akimirkai dalykų -
taip int n lygus GetInt ().
Ir tai ketina pateikti LC viduje n.
Ir leiskite man būti labiau aprašomasis.
Leiskite man pasakyti, kaip aš reikalauti, kad galite man duoti teigiamą sveikąjį skaičių.
>> Gerai.
Taigi tik šiek tiek nurodymus.
O dabar ką aš galiu padaryti?
Na, aš jau žinau, iš mano paprasta sąlygos arba filialai, kaip ir aš
turėjo nulio, galėčiau ką nors pasakyti pavyzdžiui, jei n yra mažesnis arba lygus
nulis, tada aš noriu kažką daryti patinka, kad nėra teigiamas.
Ir tada aš galėčiau padaryti -
Gerai, bet aš tikrai noriu gauti, kad int.
Kad galėčiau eiti čia ir galėjau natūra Kitoje egzemplioriaus tai ir įtraukoje tai.
Ir tada, Gerai.
Taigi, jei n yra mažesnis arba lygi nuliui tai padaryti.
>> Dabar ką daryti, jei vartotojas nebendradarbiauja?
Na, tada aš ruošiuosi skolintis tai čia.
Ir tada aš einu čia čia ir čia.
Taigi, akivaizdu, kad tai ne sprendimas, tiesa?
Nes ten nematyti pabaigos.
Jei aš noriu reikalauti, kad vartotojas suteikia man teigiamas sveikasis skaičius, galiu
faktiškai gauti int.
Galiu tada patikrinkite tos int.
Bet tada aš noriu patikrinti ją ir vėl patikrinti jį dar kartą ir patikrinkite dar kartą.
Taigi akivaizdu, kas geriau statyti, kad naudojant čia?
Viskas gerai, todėl kai kurie iš kilpos natūra.
>> Taigi, aš ruošiuosi atsikratyti beveik visa tai.
Ir aš noriu gauti šią int bent vieną kartą.
Taigi, aš ketina pasakyti padaryti -
ir aš grįžti į o tik akimirką -
dabar ką daryti?
Aš ruošiuosi padaryti int n gauna GetInt ().
Gerai.
Taigi tai gana geras.
Ir dabar, kaip dažnai Noriu tai padaryti?
>> Leiskite man printf viduje kilpa todėl galiu reikalauti dar ir dar,
jeigu reikia,.
Ir ką aš noriu tai o būklė daryti?
Noriu išlaikyti tai daryti o kas yra?
Taip.
N yra mažesnė arba lygi nuliui.
Taigi jau mes labai išvalyti šį kodą į viršų.
Mes pasiskolino labai paprasta statyti - do-while cikle.
Aš pavogtas tik svarbius linijas kodo, kad aš pradėjau kopijavimo ir
įdėjimą, kuris buvo ne išmintingas.
Ir todėl dabar aš iš tikrųjų įklijuokite tai čia ir tiesiog vieną kartą.
>> O dabar ką noriu daryti ne labai pabaigoje šią programą?
Aš tik pasakyti ką nors paprasto, patinka, ačiū už - ir
Aš padarysiu% I int -
Backslash n kablelis ir prijunkite n, kabliataškiu.
>> Gerai.
Taigi pažiūrėkime, kas vyksta dabar kai aš paleisti šią programą.
Aš ruošiuosi eiti į priekį ir padarysiu teigiamas.
Velnias.
Keletas klaidų.
Taigi leiskite man slinkti atgal iki pirmosios.
Negalima dirbti per juos atgal.
Darbas per juos iš viršaus į apačią kad ir jie kaskada ir tik
vienas dalykas būti negerai.
Numanomas deklaracija funkcija GetInt ().
Taip.
Taigi tai nebuvo pakankamai.
I rūšies padarė tą pačią klaidą, bet šiek tiek skiriasi šiuo metu.
Man reikia įtraukti ne tik stdio.h bet taip pat cs50.h, kuri apima
vadinamieji deklaracijos gauti INT, kuri mokyti prietaisą, arba moko
C kas GetInt () yra.
>> Taigi leiskite man išsaugokite.
Aš ruošiuosi ignoruoti kitų klaidų nes aš ruošiuosi tikimės, kad jie
kažkaip susijęs su klaida Aš jau išspręsta.
Taigi leiskite man eiti į priekį ir perkompiliuoti su make teigiamas, Enter.
Velnias.
Trys klaidos, vis dar.
Leiskite man pereiti iki pirmosios.
Nepanaudoti kintamojo n.
Mes nematėme anksčiau.
Ir tai taip pat yra šiek tiek paslaptingas.
Tai yra kompiliatorius produkcija.
O tai pabrėžė linija ten - positive.c :9:13 -
sako, tai sako ant devynių linija positive.c, bent 13 simbolių,
13 stulpelis, jūs padarėte šią klaidą.
>> Ir visų pirma, tai sakau man nepanaudotų kintamasis n.
Taigi pažiūrėkime, -
linija devyni.
Aš naudoju n ta prasme, kad Aš jai suteikiant vertę.
Bet kas sudarytojas nepatinka yra kad aš ne pažiūros jį naudoti.
Bet palauk, aš naudoju jį.
Atsižvelgiant į 11, aš naudoju jį čia.
Bet jei aš slinkti toliau ne positive.c :11 -
taip ne linija 11, charakteris 12 sudarytojas man sako, naudoti
neoficialus identifikatorius n.
>> Taigi nedeklaruoti priemonė Turiu nenurodomas jį kaip
kintamasis, duomenų tipo.
Bet palauk.
Aš tiksliai, kad pagal devynių.
Taigi, kas yra tikrai supainioti čia.
Tai arba man ar sudarytojas, nes pagal devynių, vėlgi, aš skelbiantis
int n, ir aš paskiriant jį grįžti vertę GetInt ().
Tada aš naudoju, kad kintamojo n atitinka 11 ir tikrinti, ar jos vertė yra mažesnė
nei arba lygus nuliui.
Bet tai, matyt, yra blogas ir skaldytų kodėl?
Pasakykite dar kartą?
>> Ak, turiu pripažinti, n prieš patekti į kilpą.
Bet kodėl?
Aš turiu galvoje, mes tiesiog pasiūlė šiek tiek atgal, kad tai gerai deklaruoti kintamuosius
visi į vieną eilutę ir tada priskirti jiems tam tikrą vertę.
Pasaulinį kintamąjį - tegul ateina atgal į šį vos akimirką idėja.
Kodėl tu nori, kad aš įdėti tai ne kilpą?
Tai.
Būtent.
>> Taigi, nors, šiek tiek counterintuitive, leiskite man apibendrinti.
Kai paskelbti n viduje iš do bloko ten -
specialiai viduje tas garbanotas petnešos -
kad kintamasis n yra kas vadinamas apimtis -
nesusijęs su mūsų balais sistemos kursas - bet turi taikymo sritį, kad yra
tik tiems garbanotieji petnešų.
Kitaip tariant, paprastai, jei deklaruoti viduje rinkinio kintamasis
garbanotas petnešos, kad kintamasis egzistuoja tik viduje tuos garbanotieji petnešų.
Taigi, šia logika vien, nors Aš paskelbtas n atitinka devynių, jis
iš esmės dingsta iš taikymo srities, dingsta iš atminties, taip sakant,
tuo metu, kai aš paspauskite linija 11.
Kadangi linija 11, deja, yra ne tas garbanotas petnešomis.
>> Taigi, aš, deja, negaliu išspręsti šią problemą, grįžta į ką aš padariau anksčiau.
Galbūt iš pradžių tai padaryti.
Bet ką jūs dabar ne daro cikliškai?
Jūs akivaizdžiai negauna LC cikliškai.
Taigi, mes galime palikti GetInt () ir mes turėtų palikti GetInt () viduje
kilpa, nes tai, ką mes norime kvaršinti vėl ir vėl vartotojui.
Bet tai pakanka eiti iki linijos, tarkim, šešių.
Žiniasklaida n kabliataškis.
Nepasiduokite jos vertė dar, nes Jums nereikia tik dar.
>> Bet dabar žemyn čia, pranešimas - tai Būtų labai paprasta klaida.
Nenoriu šešėlis mano ankstesnį deklaracija n.
Noriu naudoti n, kad iš tikrųjų egzistuoja.
Ir todėl dabar atitinka 10 Aš priskirti n reikšmę.
Tačiau atsižvelgiant į šešių aš pareiškiu, n.
Ir taip aš galiu ar negaliu naudoti jį suderinti 12 metu?
Galiu, nes tarp kurių garbanotas petnešos yra n paskelbta dabar?
Vienas čia on-line penkių.
Vienam čia on-line 14.
Taigi, jei aš dabar nutolinti, išsaugokite šį failą, eikite atgal į ir paleisti, kad teigiamas, jį
parengė šį laiką.
Štai jau pažanga.
Slash. . / Teigiamas, Enter.
>> Reikalauju, kad jūs suteikiate man teigiamas sveikasis skaičius.
Neigiamas 1.
Neigiamas 2.
Neigiama 3.
Nulis.
Vienas.
Ir ačiū už tas yra kas dabar spausdinti.
>> Leiskite man pabandyti kažką kita, iš smalsumo.
Aš buvo pasakyta įvesti sveikasis skaičius.
Bet kas, jei aš vietoj įveskite ėrienos?
Taigi jūs dabar matote skiriasi eilutę -
bandykite dar kartą.
Bet niekur mano kodas aš rašyti bandykite dar kartą.
Taigi, kur, matyt, tai bandykite dar kartą greitai iš, pasakytumėte jūs?
Taip, nuo GetInt () pati.
Taigi, vienas iš dalykų, CS50 darbuotojai ką daro už jus, bent jau tai pirmas kelias
savaites, yra mes parašėme tam tikrą sumą Klaidų tikrinimo užtikrinti, kad, jei
skambinate GetInt (), galite bent jau bus grįžti žinutę iš vartotojo int.
Jūs negausite eilutę.
Jūs negausite Char.
Jūs negausite kažką nors apskritai.
Gausite int.
>> Dabar jis gali būti teigiamas.
Jis gali būti neigiamas.
Mes jokių garantijų, kad aplink.
Bet mes kvaršinti vartotojui pakartoti, retry, bandykite dar kartą, kol jis arba ji iš tikrųjų
bendradarbiauja.
Be to, jei aš 1,23, tai ne tarpt.
Bet jei aš įvesti, tarkim, 50, tai suteikia man vertę, kad aš norėjau.
>> Gerai.
Taigi nėra blogai.
Bet apie tai, ką mes ką tik padaryta klausimų?
Pagrindinis išsinešimui yra, turi būti aišku, ne tiek daug kilpa, kurį mes matėme
prieš nors mes ne tikrai jį naudojo, bet iš taikymo srities klausimas, kur
kintamieji gali būti tik gali būti naudojami tik per tam tikrą sritį.
>> Gerai, leiskite man atkreipti dėmesį į pasiūlymą jūs padarėte anksčiau, kad
pasaulinį kintamąjį.
Kaip žemę, it turns out, kad kita Išspręsti šią problemą, tačiau
paprastai klaidingas sprendimas arba Prastai suprojektuota sprendimas, yra
deklaruoti kintamuosius kaip kas vadinamas pasaulinį kintamąjį.
Dabar aš rūšies pažeidė savo apibrėžimą taikymo sritį, nes yra
nėra garbanotas petnešos pačiame viršuje ir labai apačioje failą.
Bet, kad implikacija tai, kad dabar atitinka keturių,
n pasaulinį kintamąjį.
Ir kaip rodo pats pavadinimas, tai tiesiog prieinama visur.
>> Momentinė iš tikrųjų turi tai.
Jei naudojamas kintamasis, galite prisiminti jums teko pasirinkti, jei tai už
Sprite arba visoms sprites.
Na, visi animacinius tik aiškiau būdas pasakyti pasauliniu mastu.
Taip?
Ak, tikrai geras klausimas.
>> Taigi priminti, kad pirmųjų versiją mano kodą, kai aš neteisingai
deklaruota ir nurodyta n linija devynių -
Aš paskelbiau, kaip kintamasis ir aš davė jam vertę
priskyrimo operatorius -
tai davė man dvi klaidas.
Vienas iš jų, tai, kad n nebuvo naudojamas, ir du, kad linija 11
tai tiesiog nebuvo deklaruoti.
Taigi pirmasis aš ne adresas tuo metu.
Tai nėra griežtai klaida deklaruoti kintamasis, bet ne naudoti jį.
Dalykų mes padarėme per vienas, bet CS50 prietaisas, sąmoningai,
pedagogiškai, yra mes alkūninis lūkesčiai kompiliatorius padaryti
įsitikinkite, kad jūs darote viską ne tik teisingai, bet tikrai teisingai.
>> Nes jei jūs deklaruojant kintamąjį kaip n ir niekada naudojant, arba naudojant jį
teisingai, kas tada jis čia veikia?
Jis tikrai neturi prasmės.
Ir tai labai lengva, laikui bėgant, jei nereikia konfigūruoti savo kompiuterį
Tokiu būdu, tiesiog turi kodą, kuris turi mažai liekanų čia, likučiai ten.
Ir tada mėnesių pažvelgti atgal ir jūs kaip, kodėl tai yra linija
kodas ten?
Ir jei nėra rimtos priežasties, tai nėra naudinga jums arba jūsų kolegoms
keliu, kad turi suklupti per jį tada.
>> Kaip žemę, kur kad ateina?
Na, priminti, kad kiekvieną kartą, kai mes kompiliuoti programa, visos šios medžiagos yra
būtų išspausdintas.
Taigi, mes grįžti į tai.
Bet vėl, kad yra programa, kuri automatizuoja sudarymo procesą
veikia faktinį kompiliatorių vadinamas žvangėjimas.
Šis dalykas, mes galų gale pamatyti, turi daryti su derinimo su ypatinga
programa, vadinama Debugger.
Tai turi daryti su optimizuoti kodas - daugiau apie tai ateityje.
Std = C99 -
tai tiesiog reiškia, naudoti 1999 versiją C. C buvo maždaug net ilgiau nei
kad, bet jie padarė keletą gražus pokyčiai 10 plius metų.
>> Ir štai atitinkamos tie.
Mes sakome, kad nieko, kad anksčiau būtų buvę įspėjimas
klaida neleidžia studentui rengtų.
Ir sienų priemonė padaryti, kad visa krūva dalykų, o ne
tiesiog susiję su kintamaisiais.
Ir tada leiskite man pereiti prie Šios linijos pabaiga.
Ir tai taip pat, mes galų gale grįžti į.
Tai akivaizdžiai pavadinimas Failas aš sudarymo.
Tai primena failo pavadinimą Aš išvedė kaip ir pavadinimas
mano vykdomąja programa.
Tai-lcs50 tiesiog reiškia, naudoti CS50 biblioteka, ir visi nuliai ir tie, kurie
darbuotojai parašė ir parengė anksčiau šiais metais, integruoti
juos į savo programą.
>> Ir kas nors žino ką-lm yra?
Tai matematikos biblioteka, kuri yra tik ten, net jei esate
ne daryti bet matematikos.
Tai tiesiog automatiškai pateikiami mums padaryti.
>> Na, leiskite man padaryti vieną kitą pavyzdį čia atveriant naują failą.
Ir leiskite man išsaugoti šį vieną, nes string.c.
Pasirodo, kad kaip mes kalbame apie duomenų rūšių šiandien, ten net daugiau
vyksta po gaubtu nei mes matėme iki šiol.
Taigi leiskite man greitai padaryti greitai programą.
Įtraukti stdio.h.
Ir aš išsaugoti tai.
Ir žinote, neleisk man padaryti pačią klaidą vėl ir vėl.
Įtraukti cs50.h.
Ir leiskite man eiti į priekį dabar ir padaryti int main (void).
>> O dabar aš tiesiog noriu padaryti programą kad tai daro - Pripažinti eilutę
vadinamas ai ir gauti eilutę nuo naudotojo.
Ir leiskite man padaryti šiek tiek Čia instrukcijos -
prašau suteikti man eilutę - taip vartotojas žino, ką daryti.
Ir tada žemyn čia toliau tai, Noriu padaryti taip -
už int i gauna nulis.
Vėlgi, kompiuterių mokslininkai paprastai pradėti skaičiuoti nuo nulio, bet mes galime
padaryti, kad vieną, jei mes tikrai norėjo.
Dabar aš ruošiuosi daryti i mažiau nei eilutės ilgis s.
Taigi strlen -
S T A L-El-N -
Vėlgi, tai trumpas, nes ji yra lengviau tipo, nors tai
šiek tiek paslaptingas.
>> Tai funkcija, mes ne naudoti anksčiau, bet tiesiog tai daro -
grįžti į mane numerį, kuris atstovauja iš eilutės ilgis
kad vartotojas turi įvesti.
Jei jie įvedėte Sveiki, tai sugrįš penkių, nes ten yra penkių
raidės Hello.
Tada ant kiekvieno pakartojimo šis ciklas, aš plius plius.
Taigi dar kartą, standartinis statyti net jei jūs ne visai pernelyg patogiai arba
susipažinę su ja dar.
>> Bet dabar apie kiekvieną šio ciklo iteracija, pastebėsite, ką aš ruošiuosi daryti.
Noriu eiti į priekį ir spausdinti iš vieno pobūdžio -
taip% c Backslash n naujoje eilutėje.
Ir tada, jūs žinote, ką aš noriu daryti?
Koks žodis yra tai, kad vartotojas įveda į, pavyzdžiui, labas, noriu spausdinti
H-El-L-L-O vieną simbolį eilutėje.
Kitaip tariant, aš noriu gauti bent atskirų simbolių eilutę,
kurią iki šiol eilutė turi tik buvo ženklų seka.
>> Ir it turns out Galiu padaryti S, laikiklis, i skliaustai uždaromi, uždarykite
skliaustelis, kabliataškis.
Ir aš turiu padaryti dar vieną dalyką.
Tai faile vadinamas string.h kad strlen yra paskelbiami.
Taigi, jei aš noriu naudoti šią funkciją, Turiu pasakyti kompiliatorių,
tikisi jį naudoti.
Dabar leiskite man eiti į priekį ir padaryti programa, vadinama eilutė.
Taškų, velniop, eilutė.
>> Prašau duoti man eilutę.
Aš eisiu į priekį ir įveskite jį.
Sveiki, visais dangteliais, Enter.
Ir dabar pastebėsite, aš atspausdintas tai vieną simbolį po kito.
Taigi nauja detalė, kad čia yra eilutė, ne dienos pabaigoje, gali būti
atvertas būdu jo asmens simbolių įdiegiant aikštėje
laikiklis žymėjimas.
Ir tai todėl, kad seka po dangtis iš tiesų seka
simbolių.
Bet kas, tvarkingas, apie juos yra į kompiuterio RAM -
Mac kompiuteris, kokia ji yra, - jie pažodžiui atgal atgal atgal -
H-El-L-L-O -
individualiu, greta baitų atminties.
>> Taigi, jei norite gauti ne aštuntasis toks baitų, kuri šiuo kilpos būtų
laikiklis nulis, laikiklis vienas, laikiklis du, laikiklis trijų, keturių laikiklis -
tai nulis indeksuojami iki penkių -
kad bus išspausdinti H-El-L-L-O atskiroje eilutėje.
>> Dabar, kaip erzina, leiskite man parodyti jums rūšių dalykų jūs galų gale būti
suprasti, bent jau su kai arti atrodo.
Už vieną, ką įtraukti į šiandien pavyzdžių, jei norite, yra iš tikrųjų
vienas iš pirmųjų Jailbreaks "iPhone".
Patarimai ir gudrybės reiškia krekingo telefoną todėl jūs iš tikrųjų galite naudoti ją
skiriasi vežėjas arba įdiegti savo programinę įrangą.
Ir jūs pastebėsite tai atrodo visiškai paslaptingas, greičiausiai.
Bet pažiūrėkite į tai.
IPhone buvo, matyt, krekingo su už linijos, jei sąlyga, kitur
sąlyga, funkcijų krūva mes nemačiau.
>> Ir vėl jūs ne Iš pirmo žvilgsnio tikriausiai
suprasti, kaip tai veikia.
Tačiau viskas, kad mes tarsi imtis savaime suprantamu dalyku mūsų moderniame gyvenime
iš tikrųjų linkęs sumažinti net kai Šių pagrindus mes jau
žiūri.
Leiskite man eiti į priekį ir atidaryti vieną kita programa, holloway.c.
Taigi tai taip pat yra kažkas, ką tikrai neturėtų žinoti.
Net nė vienas iš darbuotojų, arba galėčiau tikriausiai suprasti tai, žiūrėdamas
todėl, kad tai buvo kažkieno kodas , kuris buvo pateiktas į tai, kas
istoriškai žinomas kaip klaidinančiu C konkursas, kur jums reikia parašyti programą
kad kaupia ir dirba, bet yra taip velniškai paslaptingas ne žmogus gali suprasti, kas
jis ketina padaryti, kol jie iš tikrųjų jį paleisti.
>> Taigi, iš tiesų, jei jums pažvelgti į tai, kodas, matau jungiklį.
Matau pagrindinis.
Matau šie laužtiniuose skliaustuose reiškia kai masyvo natūra.
Ar kas nors nori atspėti, ką ši programa iš tikrųjų
ar jei aš paleisti Holloway?
Taip.
Gerai.
Gerai padaryta.
Taigi tik darbuotojai ir aš negaliu suprasti ką šitie dalykai.
>> Ir dabar, galiausiai, leiskite man eiti į priekį ir atverti dar vieną programą.
Tai vienas -
vėl, mes pasirūpinsime kodą galima rasti internete - tai vienas tik
rūšies gana pažvelgti.
Visi jie padarė nukentėjo tarpo gana didelis.
Bet tai tikras kodas.
Taigi, jei jūs manote, kad gana, jei mes iš tikrųjų paleisti tai ne greitai,
galų gale pamatysite, kaip mes gali daryti dalykus, kaip šis.
>> Taigi mes palikti jus dėl šio rašto ir jus pamatyti trečiadienį.
>> [Muzikavimo]
>> SPEAKER 2: Kitame CS50, kad TFS etape sukilimo.
>> GARSIAKALBIS 3: Štai jis.
Gauk jį!
>> [Muzikavimo]