[GROJA MUZIKA]
>> David J. Malan: Gerai, tai yra CS50.
Ir tai yra viena savaitę.
Taigi priminti, kad paskutinį kartą nulinis savaitę mes sutelktas į skaičiavimo mąstymo.
Ir mes perkėlėme iš kad Nulio, grafinis programavimas
kalba iš mūsų draugų ne MIT Media Lab.
>> Ir su nulio, tai mes ištirti idėjos, kaip funkcijų, ir sąlygos,
ir kilpos, ir kintamieji, ir net įvykiai ir siūlai, ir dar daugiau.
Ir šiandien, mes ketiname toliau naudoti šias idėjas,
ir tikrai vartojate juos suteikta, tačiau paversti juos
į kitą kalbą, žinomas kaip C. dabar C yra labiau tradicinis kalba.
Tai žemesnio lygio kalba, jei bus.
>> Tai grynai tekstinę.
Ir taip iš pirmo žvilgsnio, tai visi ketiname ieškoti gana paslaptingas
jei jūs niekada užprogramuotas anksčiau.
Mes ketiname turėti kabliataškiai ir skliaustai,
ir garbanotas petnešos, ir dar daugiau.
Bet suprantu, kad net nors sintaksė
apie atrodyti šiek tiek susipažinę dauguma iš jūsų, matyti anksčiau, kad.
Ir pabandyti pamatyti idėjas kad yra, iš tiesų, žino,
nes čia savaitę vienas ką pradėsime daryti yra palyginti,
Iš pradžių, Scratch, palyginti su C
>> Taigi, pavyzdžiui, prisimena, kad kai mes įgyvendinti pirmasis mūsų programos
Paskutinį kartą mes turėjome bloką, kad atrodė šiek tiek kažkas panašaus this-- kada
Žaliosios vėliavos paspausti, o tada mes turėjome vienas ar daugiau įspūdį po juo,
šiuo atveju, tarkim, Hello world.
Taigi, iš tiesų, nulio, Kai paspaudžiu, kad žalioji vėliava
paleisti savo programą, todėl kalbėti, tai yra
blokų, kad gauti įvykdytas, arba paleisti.
Ir būtent, įbrėžimams sakė, Labas, pasauli.
>> Dabar, aš galėjo nustatyti skirtingi žodžiai čia.
Bet mes matome, kad, tiesą sakant, daugelis Šių blocks-- Ir iš tiesų,
C daug functions-- gali būti Parametrizuotieji ar individualų
daryti skirtingus dalykus.
Iš tiesų, į C temperatūroje, jei mes norite konvertuoti, dabar
tai įbrėžimams programa šios kita kalba,
mes ketiname parašyti tiek kažkas panašaus į tai.
>> Natūralu, kad yra kai nepažįstamas sintaksė yra labiausiai tikėtina, INT,
ir skliaustai ir tuščia.
Bet printf--, net jei būtų manau, kad tai būtų tik spausdinti.
Bet Spausdinti reiškia Spausdinti suformatuotas, kaip mes greitai pamatyti.
Tai tiesiog spausdinti į ekraną kokia
yra viduje tų skliausteliuose, kuris Žinoma, šiuo atveju yra hello world.
>> Tačiau jūs pastebėsite, kai kurie kiti sintaksė, kai kabutes,
kad tuo tikslu skliaustai, pusiau-gaubtinės žarnos ir pan.
Taigi ten yra pridėtinių tiek, taip sakant, tiek pažintinių
ir sintaksiškai, kad mes ketiname turėti prisiminti prieš ilgas.
Bet suprantu, kad su praktika, tai pradės iššokti į tave.
>> Iš tiesų, tegul dėmesį, kad vienas funkcija specifically-- šiuo atveju,
sako hello world.
Taigi pasakyti, kad funkcija.
Sveiki pasaulis yra jos parametras, arba argumentas, jo pritaikymas.
>> Ir C lygiavertiškumas yra tik bus šį vieną eilutę čia
kur printf yra lygiavertis, tarkim, dvigubas cituojamas virvutė, labas
pasaulyje yra lygiavertis, žinoma, į tai, kas į baltą dėžutę ten.
Ir Backslash N, nors šiek tiek keista ir nėra nuo nulio,
tiesiog ketina turėti poveikį mes matyti kompiuterio, kaip mano Mac arba PC,
tiesiog judinant žymeklį į kitą eilutę.
Tai kaip pataikyti Įveskite savo klaviatūroje.
>> Taigi mes matome, kad vėl prieš ilgas.
Bet pirmiausia, tegul tai žiūrėti Kitas pavyzdys vyrių atveju.
Mes turėjome šį amžinai kilpa paskutinį kartą, kuris buvo įspūdį serija
kad padarė kažką pažodžiui forever-- šiuo atveju,
pasakyti, Hello world, Hello world, Hello world, Hello world.
Taigi, tai begalinis ciklas dizainas.
>> C, jei norime įgyvendinti šią pačią idėją, mes galime tiesiog tai padaryti.
Nors tiesa, printf Sveiki world-- dabar o, tik semantiškai, rūšies
asocijuosis su daro idėja kažkas ir vėl, ir vėl, ir vėl,
ir kaip ilgai?
Na, true-- Prisiminkite, kad tiesa yra tik arba viena.
>> Ir tiesa, žinoma, visuomet tiesa.
Taigi tai tipo beprasmė pareiškimas tiesiog pasakyti tiesa.
Bet iš tikrųjų, tai yra sąmoningas, nes jei tiesa yra tik visada teisinga,
nei, o tiesa tiesiog reiškia, jei šiek tiek netiesiogiai,
kad šių eilučių kodo tarp tų garbanotas petnešos
tiesiog reikia atlikti iš naujo, ir vėl, ir vėl, ir iš tikrųjų niekada sustoti.
>> Bet jei jūs norite, kad jūsų kilpa sustoti, kaip mes
darė paskutinį kartą kažką panašaus tai, pakartoti šiuos 50 kartų,
C galėsime daryti tą patį, ką tai vadinamas už loop-- raktažodį
nėra, o, bet.
Ir tada mes turime keletą naujų sintaksė čia su int i lygu 0, I mažiau nei 50 metų,
i ++.
Ir mes grįžti prie to.
Bet tai yra tiesiog kaip mes norėtume išversti nulio blokų rinkinys
iki C eilučių kodo rinkinys.
>> Tuo tarpu, mano kintamuosius.
Ir, tiesą sakant, mes tiesiog mačiau vieną prieš momentas.
Ir iš nulio atveju, jei mes norėjau paskelbti kintamąjį vadinamą i
Aš būdamas sveikas, tiesiog skaičius, ir mes norime jį tam tikru vertės,
mes naudoti šį apelsiną blokuoti here-- nustatyti i 0.
>> Ir mes matome šiandien ir už jos ribų, kaip praeitą savaitę,
programuotojai padaryti beveik visada pradėti skaičiuoti nuo nulio, tikrai
pagal susitarimą.
Bet taip pat, nes susigrąžinimas iš Mūsų diskusija dvejetainis,
mažiausias kiekis, kurį galite atstovauti su bet bitų skaičius
tiesiog bus 0. pati.
Ir todėl mes paprastai prasideda Inicijuojama net mūsų kintamuosius 0.
>> Ir C padaryti tą patį, mes ketiname pasakyti, int
už sveikojo skaičiaus, aš tiesiog pagal susitarimą.
Galėjau vadinamas šis kintamasis ką aš noriu, kaip ir nulio.
Ir tada yra lygus 0 tik priskiria vertė 0 iš dešinės
ir įdėkite jį į kintamąjį arba saugojimo konteineris yra, kairėje pusėje.
Ir kabliataškis, kaip mes see-- ir mes matėme keletą šių already--
tiesiog reiškia galą minties.
Tęskite daryti ką nors kita linijose, kurie seka.
>> Dabar, ką apie Būlio išraiškos?
Prisiminkite, kad nulio, tai buvo išraiška
kad yra arba tiesa arba false-- klausimai,
tikrai, kad yra arba true arba false.
Taigi iš nulio atveju, mes galime užduoti paprastą klausimą, kaip tai,
yra man mažiau nei 50?
Todėl aš, dar kartą, yra sveikas skaičius.
Gal mes jį naudoti į Scratch programos
sekti dviejų dešimčių arba kažkas panašaus.
Taigi tai sintaksė čia Scratch tiesiog reiškia, yra i mažiau nei 50?
Na, laimei, kad kažkas yra paprastas C. Ir versti,
tai mes tiesiog pasakyti, kad aš mažiau nei 50, naudojant pažįstamą raktą
klaviatūroje.
>> Tuo tarpu, jei norite pasakyti kažką apskritai
kaip gerai, yra x mažiau nei y, kur kiekvienas iš X ir Y yra tokie, patys kintamieji?
Mes galime padaryti tą patį C, tol, kol mes
sukurta šiuos kintamuosius jau.
Ir mes pamatyti, kaip padaryti, kad prieš ilgas.
Mes tiesiog pasakyti x mažiau nei m.
>> Taigi jūs pradedate matyti tam tikrų panašumų.
Ir tie žmonės, kurie pagaminti Įbrėžimams buvo tikrai
įkvėpė kai kurie iš šių pagrindinių idėjų.
Ir pamatysite šios rūšies sintaksė daugelyje languages--
ne tik nulio, ne tik C, bet Python
ir "JavaScript", ir Kitos kalbos dar.
>> Apsvarstykite vieną konstruktą iš C, iš būklės sąvoka,
daro kažką lygtinai.
Jei kažkas yra tiesa, tai padaryti.
Tai tarsi programavimo ekvivalentas į kelio šakute.
Gal tai dvipusis šakutė, trijų-būdas šakutė, arba daugiau.
Ir nulio, mes galime turėti matyti kažką panašaus į tai.
>> Taigi tai vienas didelis vienas.
Tačiau mano, santykinis paprastumas logika.
Jei x yra mažiau nei y, tada pasakyti x yra mažiau nei y, kitas, jei x yra didesnis nei y,
tada pasakyti x yra didesnis nei m.
Ir tada, logiškai, jei manote atgal į nulio
ar tik savo žmogaus intuicija, gerai, jei x yra ne didesnis nei y, ir x
yra ne mažesnis kaip y, tada, žinoma, x bus lygus y.
Šiuo atveju taip, pagal lizdus tie Scratch blokai,
mes galime pasiekti trys būdas kelio išsišakojimas?
>> Tuo tarpu, jei norime padaryti, kad C, tai, be abejo,
atrodo šiek tiek simpler-- bent kai gausite susipažinę su sintakse.
Jei x yra mažiau nei Y, printf x yra mažiau nei m.
Kitas, jei x yra didesnis nei y, printf x yra didesnis nei m.
Kita printf x yra lygus y-- ir vėl su tais, Backslash baigiasi tik
už tų naujų linijų, kad jei iš tikrųjų vyko šią programą natūra
tai tiesiog perkelti kursorius galiausiai
į kitą eilutę ekrano.
>> Dabar, tuo tarpu "Scratch turėjo kitą daugiau sudėtingų funkcijų, tik
kai kurie iš jų mes ketiname iš pradžių pereiti prie C pasaulyje
Ir vienas iš jų buvo vadinamas sąrašas nulio.
Ir tai buvo ypatinga tipo kintamasis, kuris
leido jums laikyti kelis dalykus į jį atgal, atgal, atgal, atgal.
>> C, ji neturi sąrašai, per se, bet kažkas
kad yra daugiau paprastai vadinamas matricos, nors mes
grįžti vėliau šį semestrą į žiūri kažką
vadinamas sąrašą ar tikrai susietą sąrašą.
Bet dabar, arčiausiai ekvivalentas C mus
bus kažkas vadinamas masyvo.
Ir masyvas yra tiesiog specialaus tipo kintamojo
kuri leidžia jums saugoti duomenis atgal, atgal, atgal, į nugarą.
>> Ir, iš tiesų, nulio, jei mes norėjome pasiekti
pirmasis elementas masyvo arba list-- ir aš ruošiuosi jį vadiname,
pagal susitarimą argv, argumentas vektorius, bet daugiau apie tai prieš ilgas.
Jei aš noriu gauti pirmo elemento iš argv, į nulio pasaulyje
Jūs iš tikrųjų paprastai pradėti skaičiuoti nuo 1.
>> Ir todėl aš gali gauti iš argv 1 punktą.
Tai tiesiog kaip MIT įgyvendinti Sąrašų sąvoka.
Tačiau C, aš ruošiuosi daugiau tiesiog tiesiog pasakyti, argv,
kuris vėl yra pavadinti savo list-- arba būti aišku, masyvas.
O jei aš noriu pirmas elementai, aš ruošiuosi
naudoti skliaustus,, kuris jus gali ne dažnai naudojamas pagal klaviatūra.
>> Bet 0 tiesiog reiškia, gauti man pirmas.
Taigi kartais, ir kaip laikas eina, mes ketiname
pradėti žiūrėti šiuos dichotomijas tarp nulio ir C,
kuriuo įbrėžimams naudoja vieną.
Mes C naudoti 0 čia.
Bet jūs greitai pamatyti kai jūs suprantate,
kiekvienos kalbos pamatus, šie dalykai pradeda gauti dar
susipažinę per praktiką ir praktikos.
>> Tad tikrai atrodo dabar programai.
Čia turi būti pirmasis mūsų C kodo sukomplektuotų programas.
Ir programa mes ketiname pasiūlyti apsvarstyti
yra vienas, kad yra lygiavertis tai anksčiau Scratch gabalas.
>> Taigi čia mes turime tai, kas be abejo, paprasčiausias, C programa
galite parašyti, kad tikrai daro kažką.
Dabar, mes pažvelgti praeitį, dabar, jau yra,
standartinis io.h, ir tai kampas skliausteliuose, ir INT ir tuščia,
ir klamrami, ir pan.
>> Ir tegul tik sutelkti dėmesį į kas, bent jau intuityviai,
gali iššokti į tave jau.
Iš tiesų, pagrindinis, aš ne visada žino, kas tai yra,
bet panašiai kaip Scratch turėjo, kad kai Žaliosios vėliavos paspausti įspūdį,
todėl nėra C kaip programavimo kalba turėti pagrindinį kodo fragmentą, kad
paleidžiama vykdyti pagal nutylėjimą. Ir, tiesą sakant, tai tiesiog bus vadinamas pagrindinis.
>> Taigi pagrindinis yra funkcija.
Ir tai speciali funkcija, kuri egzistuoja C, kad paleidus programą,
tai pagrindinis, kad gauna valdo numatytas. Atsižvelgiant į nulio pasaulyje,
ji paprastai buvo, kai žalia vėliava paspaudėte, kad gavo paleisti pagal nutylėjimą.
>> Tuo tarpu, mes matėme prieš tai, printf ar spausdinimo formato, tai
bus funkcija, kuri ateina su C, kartu su visa krūva kitų,
kad valia laiko ir laiko nuo vėl, tam, kad padaryti tiksliai
kaip rodo jo pavadinimas, spausdinti kažką.
Ką mes norime spausdinti?
Na, mes matome, kad iki apsupimo simbolių
kaip these-- hello world, Backslash n dvigubų kabučių,
mes galime pasakyti printf tiksliai Ką spausdinti ekrane.
>> Tačiau, norint tai padaryti kad mes, deja,
reikia imtis kažką, kad yra jau paslaptingas į mus žmonių,
bet bent jau tai šiek tiek readable-- SHARP apima, standartinis io.h, INT,
Pagrindinis, tuščia, printf, visi stebuklinga užkalbėjimai mes tik pamačiau ekrane.
Bet mes iš tikrųjų turi eiti daugiau paslaptingą dar.
Mes pirmiausia reikia išversti kodą kad mes rašome į mašininį kodą.
Ir prisiminti, nuo praeitos savaitės, kad mašinos, bent tie žinome čia
ne dienos pabaigoje tik suprasti nulių ir.
>> Ir mano Dieve, jei mes turėjome rašyti tai nulių ir faktiškai programos
tai būtų labai, labai greitai imtis įdomus iš nieko.
Bet pasirodo, už praeitą savaitę, kad šie nulių ir modeliai
tiesiog ypatingą reikšmę.
Tam tikrais kontekstuose, jie gali reikšti numerius.
>> Kai kontekstuose, jie gali reikšti laiškus ar spalvos, ar bet koks skaičius
Kitų abstrakcijų ten ant.
Bet kaip kompiuteris yra CPU, centrinis apdorojimo blokas,
arba viduje kompiuterio smegenys.
Tai paprastai "Intel" viduje, nes tai
viena iš didžiausių bendrovių kad daro procesorius kompiuteriams.
>> Na, "Intel" procesoriai ir kiti tiesiog nusprendė iš anksto
kad tam tikri modeliai nuliai ir tie tai konkrečių dalykų.
Kai kurie modeliai nulių ir reikš, atspausdinti į ekraną,
arba pridėti šiuos du numerius arba atimti šiuos du skaičius,
arba perkelti šį duomenų gabalas iš Mano kompiuteris atminties daugiau nei čia
arba bet kurį kitą labai žemo lygio numeris, bet galiausiai naudinga, operacijų.
Bet, laimei, mes, žmonės nesiruošia to reikia žinoti, kad šis išsamumo lygį.
Iš tiesų, kaip ir paskutinį kartą, kur mes išgaunamo vėl, ir vėl, ir vėl,
Pastatas nuo labai žemo lygio primityvai kaip nulių ir
Į aukštesnį lygį sąvokų kaip skaičiai ir raidės,
ir spalvos, ir daugiau, taip mes galime programuotojais
stovi ant pečių kiti, kurie atvyko prieš mus
ir naudoti programinę įrangą, kad kiti žmonės parašyta prieš us--
ty programos vadinamas kompiliatoriai.
>> C yra kalba, kuri paprastai parengta,
o tai reiškia, konvertuoti iš kodą į mašininį kodą.
Visų pirma, ką tai reiškia yra tai, kad jei jūs turite savo šaltinį
kodą, kurį sau rašyti, kaip mes greitai bus vos akimirką ekrane,
ir norite jį paversti galiausiai mašina code--
tie nuliai ir tie, kurie tik jūsų Mac arba jūsų kompiuteris
understands-- jūs turite pirmas pašarus, šaltinio kodą, kaip
indėlis į ypatingas programa, vadinama sudarytojas,
įtaisas, kurio išėjimas mes regės yra mašina kodą.
Ir, tiesą sakant, paskutinį kartą mes kalbėjome apie, tikrai, bent dienos pabaigoje,
problemų sprendimas.
Jūs turite įėjimai.
Ir jūs turite rezultatus.
Ir jūs turite šiek tiek natūra algoritmas viduryje.
>> Algoritmai tikrai gali būti įgyvendinama programa,
kaip matėme su Pseudocode paskutinę savaitę ir kaip matysime su faktine kodas
šią savaitę.
Ir todėl kompiliatorius tikrai tik turi algoritmų rinkinį viduje
tai, kad nežino, kaip konvertuoti specialius žodžius,
kaip pagrindinio ir printf, ir kiti, kad mes tiesiog
pamačiau į nulius modelius ir tie, kurie "Intel viduje ir kiti procesorius
iš tikrųjų supranta.
Taigi, kaip mes tai darome?
Kur mes gauti kompiliatorių?
>> Daugelis iš mūsų čia turite Mac ar PC.
Ir jūs naudojate Mac OS, arba "Windows" arba "Linux arba Solaris
arba bet kitas numeris Operacinės sistemos.
Ir, iš tiesų, mes galime išeiti į internetą
ir atsisiųsti kompiliatorių Jūsų Mac ar kompiuteryje
savo pirma operacinę sistemą.
Bet mes visi būti skirtingi puslapiai, taip sakant.
Mes norime šiek tiek turi skirtingų konfigūracijų.
Ir viskas nebūtų dirbti visi tą patį.
Ir, iš tiesų, šių dienų Daugeliui iš mūsų nereikia naudoti
programinė įranga, kuri veikia tik ant mūsų nešiojamieji kompiuteriai.
Vietoj to, mes naudojame kažką kaip naršyklę, kuri
leidžia mums naudotis interneto pagrindu paraiškas debesyje.
Ir vėliau šį semestrą, mes padarysime lygiai taip pat.
Mes parašyti programas ar programinė įranga, naudojant code-- ne C
bet kitos kalbos kaip Python ir JavaScript--, kad paleisti į debesis.
>> Ir tai padaryti, mes patys semestro metu
bus iš tikrųjų naudoti debesis pagrįstas aplinka žinomas kaip CS50 IDE.
Tai internetinė programavimas aplinka, arba integruotas vystymas
aplinka, IDE, kad pastatytas ant kai atviro kodo programinė įranga vadinama Debesis 9.
Ir mes padarėme kai pedagoginė supaprastinimai į jį
taip, kad paslėpti tam tikri elementai Pirmosiomis savaitėmis, kad mums nereikia,
po kurio galite atskleisti juos ir padaryti dauguma
Viskas, ką norite su aplinka.
>> O tai leidžia mus, taip pat, kad iš anksto įdiegti tam tikrą programinę įrangą.
Dalykų, pavyzdžiui, vadinamasis CS50 biblioteka, kurią mes netrukus pamatysite
suteikia mums C su kai Papildomos funkcijos.
Taigi, jei jūs einate į galiausiai CS50.io, būsite paraginti prisijungti,
ir kai jūs darote ir sukurti paraiška nemokamą paskyrą,
galėsite prieiti prie aplinka, kuri atrodo gana panašus į šį.
>> Dabar, tai yra numatytąją režimu.
Viskas yra gražus ir šviesus ekrane.
Daugelis iš mūsų turime įprotį darbo CS50 gabalas tai
gana vėlyvos nakties.
Ir taip kai kurie iš jūsų norėti paversti jį nakties režimą, taip sakant.
>> Bet, galų gale, ką jūs ketiname pamatyti per CS50 IDE
yra tris skirtingas areas-- sritis, kairėje ir tais
failai bus į debesis, sritis, viršutiniame dešiniajame
kur jūsų kodas bus redaguojami.
Galėsite atidaryti individualūs skirtukai bet kurią programą
kad rašote šį semestrą viduje tos viršutiniame dešiniajame kampe.
Ir tada pats arcanely, ir dar stipriai,
bus šis dalykas ne iš apačios į žinomas kaip terminalo lange.
>> Tai senosios mokyklos Komandinės eilutės sąsaja,
arba CLI, kuri leidžia jums vykdyti komandas
dėl šiuo atveju computer--, tačiau prasidėjusi cloud-- kompiuteris
daryti tokius dalykus kaip kaupti kodą iš išeities kodo į mašininį kodą,
paleisti savo programas, arba pradėti savo žiniatinklio serveris, ar prieiti prie jūsų duomenų bazės,
ir bet kurį iš kitų metodų numeris kad mes pradėsime naudoti prieš ilgai.
Bet ten, mes ketina iš tikrųjų turi
prie interneto ir pradėti žaisti.
Ir tai padaryti, tegul pirmas pradėti skardinimo su pagrindiniu,
ir rašyti pagrindinį programos dalis.
Ir tegul naudoti šią funkciją printf, kurį mes naudojamas anksčiau,
tiesiog pasakyti kažką.
>> Taigi čia aš jau viduje CS50 IDE.
Aš prisijungęs anksto.
Ir aš visiškai patikrintas langą.
Ir taip, galiausiai jums per ateinančiais problemų
seks panašius veiksmus, teiks internetu dokumentaciją.
Taigi jums nereikia jaudintis sugeria kas mažai techninę žingsnis
kad aš čia šiandien.
>> Bet jūs gausite panašaus ekraną.
Aš atsitikti, kad naktiniu režimu.
Ir jūs galite pašviesinti viską iki išjungti naktinį režimą.
Ir galutinio dieną, jūs ketinate pamatyti
tai trys pagrindinės areas-- failą Naršyklė kairėje, kodų skirtukai iki viršaus,
ir terminalo langą apačioje.
>> Leiskite man eiti į priekį ir rašyti savo pirmąją programą.
Aš ruošiuosi Preemptively eikite į File, Išsaugoti ir išsaugoti savo failą taip hello.c.
Iš tiesų, pagal susitarimą, bet programa, kurią mes parašyti, kad parašyta C kalba
turėtų būti pavadintas kažką taškas c, pagal susitarimą.
Taigi, aš ruošiuosi pavadinkite jį hello.c, nes Aš tik noriu pasakyti labas pasaulyje.
Dabar aš ruošiuosi padidinti iš ir spustelėkite Įrašyti.
Ir viskas, ką turiu čia dabar yra skirtukas į kurį galiu pradėti rašyti kodą.
>> Tai nesiruošia sudaryti.
Tai reiškia, nieko.
Ir net jei aš konvertuoti tai nulių ir,
CPU teks ne idėja, kas vyksta aplink.
Bet jei aš rašau linijas, kurios atitiktų su C anketa conventions-- C būties,
Vėlgi, tai language-- su sintakse, kaip tai, printf Sveiki world-- ir aš
Dotarłeś patogiai Tokiu būdu per tam tikrą laiką.
Taigi, aš nemanau, kad aš padariau bet tipografijos klaidų.
>> Bet visada, pats pirmas laikas tai padaryti, jums bus.
Ir ką aš esu apie tai galėtų labai gerai neveikia už jus pirmą kartą.
Ir tai puikiai Gerai, nes dabar tu
gali tik pamatyti visai daug naujumo, tačiau laikui bėgant kai gausite susipažinę
su šioje aplinkoje, ir Ši kalba, o kiti,
Jūs pradėsite matyti dalykus, kurie yra arba teisingas, arba klaidingas.
>> Ir tai, ką Mokymo bičiuliai ir žinoma
padėjėjai gauti taip gerai per tam tikrą laiką, yra tepimas klaidų ar klaidų savo kodą.
Bet aš teigti, kad egzistuoja nėra šio Kodekso klaidas.
Taigi, aš dabar norite paleisti šią programą.
>> Dabar ant mano paties Mac arba PC, aš dvigubų Paspaudę piktogramos įprotis
kai noriu paleisti kai programą.
Bet tai dar ne modelis čia.
Šioje aplinkoje, kuri yra CS50 IDE.
Mes naudojame vykdantis sistema, vadinama "Linux".
Linux yra primenantis kitą operacinė sistema, visuotinai žinoma
kaip Unix.
Ir Linux ypač žinomas dėl turintys Komandinės eilutės aplinka, CLI.
Dabar, mes naudojant specialias skonio Linux vadinamas Ubuntu.
Ir Ubuntu yra tiesiog tikra versija Linux.
>> Tačiau šie Linux šių dienų tai tikrai ateiti su grafinės vartotojo sąsajos.
Ir viena, mes atsitikti naudojate čia yra žiniatinklio.
Taigi tai gali atrodyti net šiek tiek skiriasi nuo kažko
tu gali turėti matyti arba paleisti praeityje.
>> Taigi, aš ruošiuosi eiti į priekį dabar ir atlikite šiuos veiksmus.
Aš išgelbėti šį failą kaip hello.c.
Aš ruošiuosi eiti į priekį ir tipo clanghello.c Taigi žvangėjimas
už C kalba yra kompiliatorius.
Tai iš anksto įdiegta į CS50 IDE.
Ir jūs galite atsisiųsti ir visiškai įdiegti šią savo Mac arba PC.
>> Bet, vėlgi, jums nereikės visi iš anksto konfigūracija padaryta už jus.
Taigi dabar, aš tiesiog ketina paleisti clanghello.c.
Ir dabar pastebėsite šį sintaksė čia galų gale
suprasti, tiesiog reiškia, kad aš esu A aplankas arba katalogas vadinamas Workspace.
Tai dolerio ženklas yra tik konvencija prasmės, įveskite savo komandas čia.
>> Tai, kas vadinama greitai, tik pagal susitarimą yra dolerio ženklas.
Ir jei aš einu į priekį dabar ir spustelėkite Įveskite, nieko, atrodo, atsitiko.
Bet tai tikrai geras dalykas.
Kuo mažiau, kad vyksta Jūsų ekranas, tuo labiau tikėtina,
Jūsų kodas turi būti teisinga, bent sintaksiškai.
>> Taigi, jei aš noriu paleisti tai Programa, ką man daryti?
Na, tai paaiškėja, kad Numatytasis vardas pagal susitarimą
programas, kai jūs nenurodote vardą savo programa yra tik a.out.
Ir tai sintaksė taip pat jums susipažinti su prieš ilgas.
>> Dot velniop tiesiog reiškia, ei, CS50 IDE, paleisti programą, pavadintą a.out
kad viduje mano dabartinis kataloge.
Kad taškas reiškia einamą aplanką.
Ir mes pamatyti, ką kiti tokias sekas simbolių reiškia prieš ilgas.
>> Taigi čia mes einame, Enter hello world.
Ir jūs pastebėsite, kad tai, kas atsitiko?
nebuvo tik ji spausdinti hello world.
Ji taip pat persikėlė žymeklį į kitą eilutę.
>> Ir kodėl tai buvo?
Koks buvo kodas, rašėme prieš kad užtikrinti, kad žymeklis būtų
eiti į kitą eilutę?
Įdomiausia maždaug Kompiuteris tai tik ketina
daryti tiesiog ką pasakyti, daryti.
>> Taigi, jei jūs pasakyti, kad printf Sveiki, kablelis, tarpas, pasaulis, netoli citata,
tai tiesiog tik ketina spausdinti tuos simbolius.
Bet aš turėjau šią ypatingą charakterį pabaigoje Prisiminkite, pasvirąjį n.
Ir tai, kas užtikrino kad charakteris išvyko
į kitą eilutę ekrano.
>> Tiesą sakant, leiskite man eiti ir tai padaryti.
Leiskite man eiti į priekį ir ištrinti.
Dabar, pastebėsite, kad Į viršų mano ekrano ten
šiek tiek raudonos šviesos skirtukas nurodant,
Ei, jūs išsaugojote failą.
Taigi, aš ruošiuosi eiti į priekį su kontrolės S arba komandų S išsaugoti failą.
Dabar goes-- išvyko moment-- žalia.
Ir dabar jis vėl tiesiog yra artimas ikona.
>> Jei aš dabar paleisti clanghello.c vėl Įveskite, taškas velniop, a.out, Enter
pamatysite, kad ji vis dar dirbo.
Bet tai, be abejo, šiek tiek Buggy.
Dabar, mano prompt-- Workspace, ir tada, kad dolerio ženklas,
ir tada mano tikrasis prompt-- yra visi toje pačioje eilutėje.
Taigi, tai, žinoma, estetinis klaidą, net jei tai tikrai nėra logiška klaidą.
>> Taigi, aš ruošiuosi atšaukti ką tik padarė.
Aš ruošiuosi pakartotas a.out.
Pranešimo I pridėjome naujos eilutės simbolis atgal.
Aš išsaugoti failą.
>> Taigi, aš ruošiuosi pakartotas a.out, and-- Dammit, klaida, klaida reiškia klaidą.
Taigi klaida yra tai, kad nors Aš pridėjo kairinį brūkšnį, n ten,
Re išsaugotas, vėl bėgo programą, elgesį buvo tas pats.
Kodėl tai būtų?
>> Aš trūksta žingsnį, tiesa?
Tai svarbus žingsnis anksčiau buvo, kad jūs turite to--, kai jūs pakeičiate savo kodą,
paaiškėja, taip pat paleisti tai per sudarytojas
vėl taip gausite naują mašininį kodą.
Ir mašina kodas, kad nulių ir,
ketinate būti beveik identiški, tačiau nėra visiškai taip, nes mes turime,
Žinoma, kad nauja linija.
>> Taigi, norint išspręsti šią problemą, aš ruošiuosi reikia Pakartotinas clanghello.c, įveskite, taškas
velniop, a.out.
Ir dabar, Hello world atgal kur aš tikėtis, kad ji bus.
Taigi tai yra viskas gerai ir gerai.
Bet a.out yra gana kvailas vardas dėl programa, nors tai atsitinka būti,
dėl istorinių priežasčių default-- reiškia surinkimo rezultatus.
>> Bet leiskite man eiti į priekį čia ir tai padaryti kitaip.
Aš noriu, kad mano hello world programa kad iš tikrųjų galima pavadinti labas.
Taigi, jei ji būtų piktogramą ant mano darbastalio, tai nebūtų a.out.
Tai būtų galima pavadinti labas.
>> Taigi, norint tai padaryti, ji Pasirodo, kad žvangėjimas, kaip ir daugelis programų,
palaiko komandinės eilutės argumentus, arba vėliavos, ar jungiklių,
kuris tiesiog paveikti jo elgesį.
Tiksliau, klingsėti palaiko brūkšnelį o vėliava, kuris vėliau į antrą žodį.
Šiuo atveju, aš savavališkai, bet protingai, ją vadina labas.
Bet galėčiau jį pavadinti nieko Noriu, išskyrus a.out, kuris
būtų gana be taško.
>> Ir tada tiesiog nurodykite vardą Bylos aš noriu rinkti.
Todėl dabar, nors šiuo metu pradžioje apie komandą dar turiu žvangėjimas,
ties komandos pabaigoje Aš vis dar turiu failo pavadinimą,
dabar turiu šias komandų eilutę argumentai, šios vėliavos, kad sako,
Oh, beje, išėjimas-O, byla vadinamas Sveiki, nėra numatytoji a.out.
>> Taigi, jei nukentėjo Aš Įveskite dabar nieko Panašu, kad atsitiko.
Ir dar, dabar galiu padaryti dot velniop labas.
Taigi, tai tą pačią programą.
Į nulių ir yra identiški dienos pabaigoje.
>> Bet jie į dvi skiriasi files-- a.out,
kuri yra pirmoji versija ir tiesiog kvailai pavadintas,
o dabar labas, kuri yra daug patrauklesnės pavadinimas programą.
Tačiau, sąžiningai, aš esu niekada ketina prisiminti tai vėl,
ir vėl, ir vėl.
Ir, iš tikrųjų, kaip mes rašome daugiau sudėtingas programas,
komandas esate teks rašyti
ketinate gauti net daugiau sudėtinga dar.
>> Ir taip nesijaudinti.
Pasirodo, kad žmonės prieš mums jau supratau, jie taip pat
turėjo būtent šį tą pačią problemą.
Jie taip pat neturėjo būtinybės įrašykite gana ilgas, paslaptingų komandas,
jau nekalbant apie juos prisimename.
Ir taip žmonės prieš mus padarė Kitos programos, kad būtų lengviau
sudaryti savo programinę įrangą.
>> Ir, tiesą sakant, vienas iš tokių Programa vadinama padaryti.
Taigi, aš ruošiuosi eiti į priekį ir tai padaryti.
Aš ruošiuosi atšaukti viską, Aš tiesiog padarė taip.
Leiskite tipo LS.
Ir jūs pastebėsite trijų Quake a.out ir žvaigždė, labas
ir žvaigždė, ir hello.c.
Tikimės, kad tai turėtų būti šiek tiek paprastesnis,
kiek anksčiau ten buvo niekas šioje darbo vietos.
Nebuvo nieko, kad man teko sukurta kol mes pradėjo klasę.
>> Ir aš sukūriau hello.c.
tada aš surinkti jį ir pavadino jį a.out.
Ir tada aš surinkti jį vėl šiek tiek skirtingai ir pavadino jį labas.
Taigi turiu tris failus šiame kataloge, šiame aplanke vadinamas darbo vietos.
Dabar matau, kad taip pat jei aš nutolinti tikrųjų.
>> Jei aš nutolinti čia ir pažvelgti, kad viršutiniame dešiniajame
kampe, kaip buvo žadėta kairė pus ekrano
visada bus parodyti jums kas savo sąskaitoje, kas
viduje CS50 IDE.
Ir yra trys failai ten.
>> Taigi noriu atsikratyti a.out ir labas.
Ir kaip jums gali įsivaizduoti, intuityviai, jums
gali rūšiuoti valdymo paspaudimu arba dešiniuoju pelės mygtuku spustelėkite šią.
Ir tai mažai meniu pasirodo.
Galite atsisiųsti failą, paleiskite IT, peržiūrėti jį, atnaujinkite, pervardyti,
ar kas ne.
>> Ir aš galėčiau tiesiog ištrinti, ir ji neišnyks.
Bet darykime ką su komanda linija dabar, taip, kad būtų gauti patogi
su tuo, ir atlikite šiuos veiksmus.
Aš ruošiuosi eiti į priekį ir išimkite a.out įvesdami pažodžiui rma.out.
Pasirodo, kad komandą pašalinti ar ištrinti kažką
nėra pašalinti ar ištrinti.
>> Tai daugiau glaustai RM, tik sutaupyti jums keletą klavišų, ir paspauskite "Enter".
Dabar mes ketiname būti šiek tiek cryptically pašalinti reguliariai failo a.out.
Aš tikrai nežino, kas yra nereguliarus failas būtų dar.
Bet aš noriu jį pašalinti.
>> Taigi, aš ruošiuosi Y tipo už "taip".
Arba galėčiau įrašyti jį iš, ir paspauskite "Enter".
Ir, vėlgi, nieko atrodo, kad taip atsitiktų.
Bet tai, paprastai, yra geras dalykas.
>> Jei aš tipo LS šį kartą, ką turėčiau pamatyti?
Tikimės, tik labas ir hello.c.
Dabar, kaip panaikinti, jums pastebėti šį žvaigždė, pažymėtus žvaigždute,
tai ne mano programų pabaigoje.
Ir jie taip pat rodo žalia spalva.
Tai tiesiog CS50 IDE būdas iš cluing jus į tai,
kad tai ne kodo.
Štai vykdomąjį A Runnable programa, kad jūs iš tikrųjų galite paleisti
daro dot velniop, tada tai vardas.
>> Dabar leiskite man eiti į priekį ir išimkite tai, RM Sveiki, Enter pašalinti reguliariai
file Sveiki, taip.
Ir dabar, jei aš tipo LS, mes grįžome į hello.c.
Stenkitės ne ištrinti savo Tikrasis kodo.
Nors yra funkcijos pastatytas į CS50 IDE kur
galite eiti per savo peržiūros istorija ir atgal laiku, jei jūs netyčia
ištrinti kažką daryti nepamiršti kaip už šių raginimų TAIP arba NE,
ką jūs iš tikrųjų norite daryti.
Ir jei man eiti į viršų kairiajame kampe čia
belieka hello.c.
Taigi ten kekių kitas komandas, kad jūs
gali vykdyti, Linux pasaulyje, iš kurių vienas yra, vėlgi, Make.
Ir mes ketiname padaryti mano programa dabar taip.
>> Užuot žvangėjimas, užuot žvangėjimas-o,
Aš ruošiuosi tiesiog tiesiog tipą, markę Hello.
Ir dabar pastebėsite, aš esu ne rašyti, kad hello.c.
Aš rašyti padaryti Hello.
>> Ir ši programa Padaryti, kad ateina su CS50 IDE, ir dar daugiau
paprastai su Linux, yra programa, kuri yra
ketina padaryti programą, pavadintą Sveiki.
Ir jis ketina prisiimti, pagal susitarimą, kad, jei ši programa gali būti,
jis ketina būti pagaminti iš šaltinio kodas failas baigiasi dot C, hello.c.
>> Taigi, jei nukentėjo Aš Įveskite dabar, pranešęs, kad komanda, kad paleidžiama vykdyti
yra iš tikrųjų net ilgiau Prieš nei anksčiau.
Ir tai todėl, kad mes sukonfigūruotas CS50 IDE turi
keletas papildomų funkcijų pastatytas, kad mums nereikia, tik dar, bet greitai bus.
Bet pagrindinis dalykas suvokti dabar turiu Hello programą.
>> Jei aš tipo LS vėl, aš turi Hello programą.
Ir aš galiu paleisti jį su taškas velniop a.out, ne,
nes visa šios pratybos buvo taškas velniop labas.
Ir dabar turiu hello world programa.
Taigi juda į priekį, mes beveik visada tik
ketina sudaryti mūsų programas naudojant komandų padaryti.
Ir tada mes ketiname paleisti juos taškas velniop, ir programa vardas.
Bet suprasti, ką padaryti yra darai tu, tai yra pati ne kompiliatorius.
Tai tiesiog patogumo programa kad žino, kaip sukelti kompiliatorių
paleisti, kad tu gali ją naudoti.
>> Kas kitas komandas egzistuoja "Linux", ir, savo ruožtu CS50 IDE?
Mes netrukus pamatysite, kad ten Kompaktinių diskų komandą, Pakeisti katalogas.
Tai leidžia jums per Jūsų komandų eilutės sąsaja
judėti į priekį ir atgal, ir atverti skirtingus aplankus
nenaudojant pelę.
>> LS matėme, kuris reiškia sąrašą Į einamojo katalogo failus.
Padaryti Dir, galite tikriausiai pradėti daryti išvadą,
kas tai reiškia now-- padaryti katalogas, Jei norite sukurti aplanką.
RM už pašalinti RM Rež už pašalinti directory-- ir tai,
vėl yra komandų eilutės ekvivalentai, ką
gali daryti CS50 IDE su pele.
Bet jūs netrukus rasite kad kartais tai tiesiog
greičiau reikia daug padaryti dalykus su klaviatūra,
ir galiausiai daug daugiau galingas.
>> Bet tai sunku ginčytis, kad ką mes jau darome iki šiol
yra viskas, galingas, kai visi mes jau sakoma, Hello world.
Ir, tiesą sakant, aš kieta žodžiai Sveiki pasaulį į mano programą.
Nėra dinamiškumas dar.
Įbrėžimams buvo dydžio, kad įdomiau praėjusią savaitę.
>> Ir taip galime gauti ten.
Paimkime žingsnį link, kad būdas kai kurie iš šių funkcijų.
Taigi ne tik C ateiti su printf, ir kekių kitų funkcijų
kai kurie iš jų matysime laikui bėgant, ji nėra
kad visa tai taip paprasta tiesiai iš iš gauti vartotojo įvesties vartų.
>> Iš tiesų, vienas iš trūkumų kalbų kaip C,
ir net "Java" ir dar kiti, yra tai, kad jis nėra
kad būtų lengva tiesiog gauti dalykų, pavyzdžiui, sveikieji skaičiai iš vartotojų, arba stygos, tariant,
ir frazės, jau nekalbant apie tokius dalykus kaip slankiojo kablelio reikšmes ar realieji skaičiai
su dešimtųjų kiekis, ir tikrai ilgi numeriai, kaip mes greitai pamatyti.
Taigi tai funkcijų sąrašas čia, tai yra kaip ir kiti įbrėžimams įspūdį
kad mes turime iš anksto įdiegta į CS50 IDE, kad mes naudosime keletą savaičių
kaip mokymo ratų rūšių ir galiausiai juos išjungti, ir surasti
po kapotu, ko gero, ne kaip šie dalykai būtų įgyvendintos.
>> Tačiau tai padaryti, tegul realiai parašyti programą.
Leiskite man eiti į priekį dabar.
Ir aš ruošiuosi kurti naujas failą spustelėdami šį mažą pliusą,
ir paspauskite New file.
>> Aš ruošiuosi išsaugoti tai kitas vienas kaip, tarkim, string.c,
nes aš noriu žaisti su stygos.
Ir styginių C yra tik simbolių seka.
Taigi, dabar galime eiti į priekį ir atlikite šiuos veiksmus.
>> Įtraukti standartas IO.h-- ir paaiškėja, standartinis IO,
IO reiškia tiesiog įvesties ir išvesties.
Todėl Pasirodo, kad Ši linija čia yra ką
yra kaimyninių mums naudoti printf.
Printf, žinoma, gamina išvestį.
Taip kad būtų galima panaudoti printf, ji virsta iš jūs turite turėti šią eilutę kodo
ne jūsų failo viršuje.
>> Ir mes grįžti į tai, kas kad iš tikrųjų reiškia prieš ilgas.
Ji Pasirodo, kad bet C programą, rašau,
Aš turiu jį paleisti su kodas, kuris atrodo taip.
Ir jūs pastebėsite CS50 IDE ir kita integruota kūrimo
aplinka patinka, ketiname bandyti kaip geriausias
jie gali baigti savo mintis.
Tiesą sakant, akimirką prieš, jei aš atšaukti ką aš ką tik padariau, aš paspauskite Enter.
>> tada aš paspauskite atvirą garbanotas petnešomis, paspauskite Enter dar kartą.
Ir tai baigiau savo mintis.
Jis davė man naują liniją, atitraukiama ne mažiau for nice stilistinių priežasčių mes pamatysime.
Ir tada jis automatiškai man davė kad garbanotas petnešomis baigti savo mintis.
Dabar ji ne visada atspėti, ką norite daryti.
Bet didele dalimi, ji sutaupyti keletą klavišų.
Taigi prieš momentas, nubėgome šį program-- Sveikas, pasauli, o tada surinkti jį,
ir tada bėgo.
Tačiau nėra dinamiškumas čia.
Ką daryti, jei mes norėjome daryti kažką kitą?
Na, ką, jei aš norėjau, kad iš tikrųjų gauti eilutę iš vartotojas?
Aš ruošiuosi naudoti įspūdį vadinamas tiksliai that-- gauti eilutę.
>> Pasirodo, C, kad, kai jūs nenorite siekiant prisidėti prie dėlionės gabalas,
ar daugiau tinkamai funkcija, galite tiesiog tiesiog padaryti atvirą skliaustų,
Uždaryti skliausteliuose.
Taigi, tai, kaip nors ten ne baltas langas įvesti į.
Tarkim blokas prieš turėjo mažai baltas langas.
Neturime kad baltas langas dabar.
>> Bet kai aš skambutis Gauti eilutę, aš norite įdėti rezultatą kažkur.
Taigi labai dažna paradigma C yra skambinti funkciją, pavyzdžiui, get eilutę čia
ir tada laikyti savo sugrįžimo vertę.
Tai rezultatas jo pastangos kažką.
>> Ir kas yra statyti programavimo,
ar tai naujo ar dabar C, kad mes galima naudoti iš tikrųjų laikyti kažką?
Vadinamas jis kintamas, tiesa?
Ir nulio, mes tikrai ne rūpintis, kas vyksta per kintamuosius.
>> Tačiau šiuo atveju, mes iš tikrųjų.
Aš ruošiuosi pasakyti eilutę.
Ir tada aš galėčiau skambinti tai ką aš noriu.
Aš ruošiuosi ją vadina vardas, gauna gauti eilutę.
>> Ir dabar, net jei esate šiek tiek nauja tai,
pastebėsite, kad aš trūksta šiek tiek detalių.
Aš pamiršta kabliataškiu.
Man reikia baigti šį minties.
Taigi, aš ruošiuosi perkelti savo žymeklį, ir paspauskite kabliataškį ten.
Ir ką aš ką tik padariau?
Šiame kodo eilutę, numeris 5 šiuo metu,
Aš skambina get eilutę su be įėjimai.
Taigi nėra tiek balta Lauke kaip Išsaugoti blokas turi.
>> Aš tiesiog pasakyti, ei, kompiuteris, gauti man eilutę.
Lygybės ženklo yra tai tikrai ne lygybės ženklas per se.
Tai užduotis operatorius, o tai reiškia,,
ei, kompiuteris, perkelti vertę iš daugiau nei į kairę dešinėje.
Ir kairėje, turiu taip.
>> Ei, kompiuteris, duok man string-- simbolių seka.
Ir skambinti, kad string vardas.
Ir aš nemanau, net jį vadinti vardu.
>> Galėčiau jį pavadinti, tradiciškai, kažkas panašaus į S
panašiai kaip mes naudojome i į skambinti kintamasis i.
Bet dabar man reikia kažką daryti su juo.
Būtų gana kvaila išbandyti šį kodą sudarymą, ir veikia
ši programa, nors Gaunu eilutę,
nes tai dar tik ketinate pasakyti labas pasaulį.
>> Bet kas, jei aš noriu tai pakeisti.
Kodėl ne aš tai padaryti?
Proc S, kablelis Š.
Ir tai yra šiek tiek paslaptingas dar.
>> Taigi leiskite man padaryti, kad mano kintamieji labiau aišku.
Leiskite pavadinti šį Kintamojo pavadinimas.
Ir tegul pamatyti, jei mes negalime erzinti išskyrus tai, kas vyksta čia.
>> Taigi on-line penkių, gaunu eilutę.
Ir aš saugoti, kad eilutę, kokia vartotojas įvedėte
jo ar jos klaviatūrą, į kintamąjį vadinamą pavadinimą.
Ir paaiškėja, kad printf ne tik
išgerkite vieną argumentą dvigubai Citatos, vienas įėjimas į kabutes.
>> Ji gali imtis dviem arba trimis, ar daugiau, pavyzdžiui kad antrasis, arba trečioji arba ketvirtoji,
yra visi kintamieji vardai arba specialiai vertybes,
kad norite prijungti prie, dinamiškai, kad eilutė į kabutes.
Kitaip tariant, kas Būtų negerai su tai?
Jei aš ką tik pasakė labas vardas, Backslash N, išgelbėjo mano byla, vedama savo kodą,
ir vyko tai, kas nutiktų?
>> Tai tiesiog ketinate pasakyti, labas vardas, pažodžiui N A M E
kuris yra tipo kvaila, nes tai nesiskiria nuo pasaulio.
Taigi nieko kabučių yra kas pažodžiui bus atspausdintas.
Taigi, jei aš noriu turėti rezervuota vieta ten,
Aš iš tikrųjų reikia naudoti kai specialią sintaksę.
Ir it turns out, jei jūs skaityti dokumentacija printf funkcijai,
jis jums pasakys, kad jei naudojate proc s,
Jūs vertę gali pakeisti taip.
>> Po kablelio po to dvigubas citata, tiesiog
rašyti vardo kintamasis, kurį norite
prijungti į tą formatu kodas, arba formatas specifikatorius,
proc s stygos.
Ir dabar, jei aš išgelbėjo mano bylą, Aš einu atgal į mano terminalo.
Ir aš tipo Padaryti eilutę, nes, vėlgi, kad šis pavadinimas
failą, kad aš pasirinkau prieš string.c.
>> Taigi, aš ruošiuosi pasakyti Padaryti String, įveskite.
Oh my gerumas, pažvelgti visus klaidos mes padarėme jau.
Ir tai is-- ką, tai yra tikrai kaip šešis, septynis eilutės programa?
Taigi, tai yra ten, kur jis gali labai greitai gauti didele.
>> Šis terminalas langas turi dabar tik atryjama
labai daug klaidų pranešimus.
Žinoma, aš neturiu daugiau klaidą pranešimai nei aš eilučių kodo.
Taigi, kas vyksta?
>> Na, geriausia strategija daryti bet kada
Ar susidūrėte su didele sąrašas klaidų, kaip kad,
yra slinkti atgal, ieškoti komandą jūs tiesiog bėgo, o mano atveju
yra padaryti eilutę.
Pažvelkite, ką padaryti ir padariau, tai, kad ilgai klingsėti komandą, ne big deal ten.
>> Bet raudona yra blogai.
Žalioji bando būti švelnus ir naudinga.
Bet tai vis tiek blogai, ir šiuo atveju.
Bet kur tai blogai?
>> String.c, linija penkių, charakteris penki.
Taigi tai yra tik bendras konvencijos.
Kažkas dvitaškis kažkas tai eilutės numeris ir pobūdis, skaičius.
Klaida, naudojimas nedeklaruota identifikatorius eilutė.
Ar Jūs turėjote galvoje standartas?
>> Taigi, deja, klingsėti bando būti naudinga.
Bet tai yra negerai, ir šiuo atveju.
Ne, klingsėti, nenorėjau standartinį IO.
Aš norėjau, kad on-line vieno, taip.
>> Bet linija penkių tai vienas čia.
Ir klingsėti nėra suprasti S-t-R-i-N-G.
Tai nedeklaruota identifikatorius A Žodis ji tiesiog niekada matęs.
Ir tai todėl, kad C kalba mes rašote kodą dabar,
neturi kintamieji vadinami eilutes.
>> Tai nereiškia, pagal nutylėjimą, paramos kažkas vadinamas eilutę.
Tai yra CS50 gabalas žargonu, bet labai tradicinis.
Bet aš galiu išspręsti šią problemą taip.
>> Jei aš pridėti vieną eilutę kodo į šios programos viršuje,
įtraukti CS50.h, kuris yra kito failo kažkur viduje CS50 IDE, kažkur
kietajame diske, taip sakant, iš Ubuntu operacinės sistemos
kad Bėgu, kad yra failas tai
einu išmokyti operacinės sistema, kas yra eilutė, tiesiog
kaip standartinis io.h yra failas operacinė sistema ŠTAI
ketina mokyti ką printf yra.
>> Iš tiesų, mes Dotarłeś labai panaši žinutė
jei IO prisipažino standartą IO.h ir bandė naudoti printf.
Taigi, aš ruošiuosi eiti į priekį ir tik Imkis L išvalyti savo ekraną.
Arba galite įvesti aiškus ir jis bus tiesiog išvalyti terminalo langą.
Tačiau jūs vis dar galite slinkti atgal laiku.
>> Ir aš ruošiuosi pakartotas Padaryti eilutę.
Kirsti mano pirštai šį kartą, "Enter".
Oh my God, jis dirbo.
tai rodo, man ilgą paslaptingas komandą tai ką daryti sugeneruotas per žvangėjimas,
bet nėra klaidų pranešimų.
Taigi suprantame, nors galite gauti visiškai
užvaldo su skaičius klaidų pranešimų,
jis tiesiog gali būti tai erzina pakopinių efektas, kur klingsėti nesupranta
vienas dalykas, o tai reiškia, kad tada nesupranta kitą žodį,
arba kitą eilutę.
Ir taip jis tiesiog droseliai ant jūsų kodu.
Tačiau nustatyti gali būti paprastas.
Ir taip visada sutelkti dėmesį į Pats pirmasis linijos produkcija.
Ir jei jūs neturite suprantu, tiesiog ieškoti
raktažodžius, kurie gali būti užuominos, o eilutės numeris,
ir simbolis, kur kad klaida gali būti.
>> Dabar leiskite man eiti į priekį ir įveskite taškas velniop, eilutę, įveskite.
Hm, tai ne saying hello nieko.
Kodėl?
Na, žinote, kur jis veikia?
>> Tai tikriausiai įstrigo metu kilpa, jei bus, on-line šešių,
nes Gauk String konstrukcijos, parašyta CS50 darbuotojų,
yra tiesiog reiškė tiesiog sėdėti ten laukia, ir laukia,
ir laukia eilutę.
Visi mes vadiname eilutę yra žmogaus įėjimo.
Taigi jūs žinote, ką?
Leiskite man eiti į priekį.
Ir tik dėl užgaidos, leiskite man įrašykite savo vardą, Dovydą, įveskite.
Dabar turiu daugiau dinamišką programą.
Jis sakė, labas Davidas.
>> Jeigu aš eiti į priekį ir vėl paleisti tai, leiskite man pabandyti pasakyti Zamila vardą, įveskite.
Ir dabar mes turime dinamišką programą.
Aš ne sunku koduojami pasaulį.
Aš ne sunku koduojami pavadinimas arba Deividai, ar Zamila.
>> Dabar tai daug labiau patinka programų mes žinome, kur, jei reikia, įvesties,
ji gamina šiek tiek kitokią produkciją.
Dabar, tai nėra geriausias vartotojo patirtį, arba UX.
Aš paleisti programą.
>> Aš nežinau, ką aš turėtų daryti, jei aš iš tikrųjų pažvelgti
ar prisiminti kodą.
Taigi padarykime vartotojui patirti šiek tiek geriau
su paprasčiausias dalykų.
Leiskite man eiti atgal į tai programa, ir tiesiog pasakyti printf.
>> Ir leiskite man eiti į priekį ir pasakyti vardą, dvitaškis, ir erdvė, ir tada pusiau-gaubtinės žarnos.
Ir tik prasideda ne tarpelis N.
Ir tai sąmoningas, nes aš nenoriu
operatyvus perkelti į kitą eilutę.
>> Noriu, vietoj to, tai padaryti, eilutę perkompiliuoti savo kodą į naują mašiną
kodas taškas velniop eilutę.
Ak, tai daug gražiau.
Dabar aš tikrai žinau, ką kompiuteris nori man padaryti, suteikti jai pavadinimą.
>> Taigi, aš ruošiuosi eiti į priekį ir įveskite į Rob, įveskite ir labas, Rob.
Taip, reikia suprasti,, tai yra vis dar, pabaigoje dienos, tik devynios eilutės programa.
Bet mes atlikome šiuos kūdikių veiksmus.
>> Mes rašė vieną liniją, su kuria mes buvo pažįstamas, printf, Hello world.
Tada mes undid truputį, kad.
Ir mes iš tikrųjų naudoti get eilutę.
Ir mes blaškoma šią vertę į kintamąjį.
Ir tada mes nuėjome į priekį ir pagerino Be to, su trečiąja linija.
Ir tai iteracinis procesas Rašymas Software tikrai raktas.
Be CS50 ir gyvenime apskritai, Jūs paprastai neturėtų atsisėsti,
turėti programą galvoje, ir bandyti rašyti visa velniškai dalykas visus iš karto.
>> Jis bus neišvengiamai sukelti būdu daugiau klaidų nei mes patys čia matė.
Net aš, iki šios dienos, nuolat atlikti kitus kvailus klaidų,
yra tikrai sunkiau klaidų kad yra sunkiau išsiaiškinti.
Bet jūs padaryti daugiau klaidų daugiau eilučių kodo rašote visi iškart.
Ir todėl šis praktika, rašyti truputį kodas
kad esate patenkintas, kaupia tai, paleiskite jį, išbandyti jį apskritai
tada pereiti on-- taip kaip mes nuolat sluoksniavimasis ir sluoksniavimasis praėjusią savaitę,
statybos nuo kažko labai paprasta kažką sudėtingesnio,
daryti tą patį čia.
Nesisėskite, ir bandyti rašyti visą problemą.
Tiesą sakant imtis šių kūdikių veiksmus.
>> Dabar, stygos ne visi kad naudinga pas save.
Mes norime iš tikrųjų, idealiu atveju, kaip į turi kažkas mūsų priemonių rinkinį.
Taigi leiskite tikrųjų būtent tai.
>> Leiskite man eiti į priekį ir dabar pakelti šiek tiek kitokią programą.
Ir mes tai vadiname int.c, už sveikojo skaičiaus.
Aš ruošiuosi panašiai įtraukti CS550.h.
Aš ruošiuosi būti standartinis IO.
Ir tai bus gana dažnai šiose pirmas kelias dienas po klasės.
>> Ir aš ruošiuosi pasiruošę aš su pagrindinės funkcijos.
O dabar vietoj gauti eilutę, eikime į priekį ir gauti int.
Leiskite ją vadina aš ir vadina tai gauti INT, artimi skliaustų, kabliataškis.
O dabar padarykime kažkas su juo, printf.
>> Tarkime, kad kažką panašaus Sveiki, Backslash N, kablelis aš.
Taigi, aš gana daug mėgdžiodami ką aš padariau vos prieš akimirką.
Turiu rezervuotą vietą čia.
Aš kableliu Aš čia, nes noriu prijungti i į tą rezervuotą vietą.
>> Taigi eikime į priekį ir pabandyti Sudarant šią programą.
Šis failas yra vadinamas int.c.
Taigi, aš ruošiuosi pasakyti, kad int, įveskite.
Oh my God, bet nieko baisaus, tiesa?
Yra klaida.
>> Yra sintaksės klaida čia toks, kad programa negali
būti rengiami viduje int.c, linijos septyni, charakteris 27, klaidų formatas
nurodoma tipo char žvaigždė, nepaisant, kad yra.
Tačiau šis argumentas tipas int.
>> Taigi čia taip pat mes neketiname to-- nors šiandien yra daug medžiagos,
mes ketiname sukrėsti tave su absoliučiai kiekvienas C funkcija,
ir programavimo apskritai vos šių pirmąsias kelias savaites.
Taigi ten dažnai bus žargonu su kuria nesate susipažinę.
Ir, iš tiesų, simbolis žvaigždė yra kažkas mes ketiname grįžti į
per savaitę arba du laiko.
>> Bet dabar, pažiūrėkime, jei mes galime apdoroti žodžius, kurie yra susipažinę.
Skirtingus formatus taip išgirdome formatą specifikatorius, formatas kodas anksčiau.
Štai pažįstamas.
Type-- bet argumentas tipo int.
Palaukit, i int.
>> Gal proc -ai tikrųjų turi apibrėžtą prasmę.
Ir, iš tiesų, ji daro.
Sveikas, jei norite printf jį pakeisti,
jūs iš tikrųjų turite naudoti skiriasi formatas specifikatorius.
Ir jūs nežinote tai nebent kas nors Jums sakė,
ar jums buvo prieš tai padarė.
Bet proc i ką gali būti visuotinai naudojamas
į printf įkišant į sveikojo skaičiaus.
Taip pat galite naudoti procentų D dešimtainis sveikasis skaičius.
Bet aš tai gražus ir paprastas čia.
Taigi mes eiti su tuo.
>> Dabar leiskite man eiti į priekį ir pakartotinis makiažo INT, Enter.
Tai gerai, jokių klaidų.
Dot velniop int-- Ok, blogas vartotojo patirtį, nes aš nepasakiau sau
ką daryti.
Bet tai gerai.
Aš gaudyti ant greitai.
>> O dabar leiskite man eiti į priekį ir įveskite Dovydą, OK, Zamila, Rob.
Gerai, kad tai yra geras dalykas.
Šį kartą, aš naudoju funkciją, Dėlionė gabalas, vadinamas Gauti int.
Ir paaiškėja out-- ir mes pamatyti šį Vėliau term--
CS50 darbuotojai įdiegė gauti eilutę tokiu būdu,
kad tai bus tik fiziškai gauti eilutę jums.
>> Ji įgyvendino get int į tokiu būdu, kad tik jis bus
gauti sveikąjį skaičių už jus.
Ir jei jūs, žmogaus, nebendradarbiauja, tai
tiesiog tik ketina pasakyti pakartoti, pakartoti, pakartoti,
tiesiog sėdi ten apsisukimo, kol Jūs įpareigoti su kai magišką skaičių,
kaip 50, and hello 50.
>> Arba, jei mes paleisti tai vėl ir tipo 42, labas 42.
Ir taip GET INT funkcija viduje tą įspūdį
yra pakankamai logika, pakankamai mintis, išsiaiškinti, kas yra žodis?
Ir kas yra skaičius?
Tik priimdamas galiausiai numeriai.
>> Todėl Pasirodo, kad tai yra ne visi, kad išraiškingas.
iki šiol.
Taigi, Yay, paskutinį kartą mes ėjo gana greitai
į įgyvendinimo žaidimai, ir animacija, ir meniniai darbai nulio.
Ir čia mes yra turinys su hello world, and hello 50.
>> Tai dar ne viskas, kad įkvepiantis.
Ir, iš tiesų, tai pirmas kelias pavyzdžiai užtruks šiek tiek laiko
kelią iki visų įspūdžių.
Bet mes turime daug daugiau kontroliuoti dabar, iš tikrųjų.
Ir mes ketiname labai greitai pradėti sluoksniavimasis
ant šių pagrindinių primityvų.
>> Bet pirmiausia, tegul supranta ką apribojimai.
Iš tiesų, vienas iš dalykų, Įbrėžimams nėra lengvai
darykime tai tikrai atrodo po gaubtu,
ir suprasti, kas yra kompiuteris, ką ji gali padaryti,
ir ką jos apribojimai yra.
Ir, tiesą sakant, kad trūksta supratimas, potencialiai ilgalaikis
gali sukelti mūsų mistakes-- raštu klaidas, rašymo nesaugus programinę įrangą, kuri
laužiami tam tikru būdu.
>> Taigi leiskite šiek tiek žingsnių suprasti tai šiek tiek geriau
būdas, tarkim, tokį pavyzdį.
Aš ruošiuosi eiti į priekį ir įgyvendinti nekilnojamojo greitai programa, vadinama padidinimai.
Kaip, Pridėkime keletą numerius kartu.
Ir aš ruošiuosi kodą keletą kampus čia, ir tiesiog nukopijuokite ir įklijuokite
kur buvau anksčiau, tiesiog todėl mes galime pradėti žaisti greičiau.
Taigi dabar aš turiu pagrindinius pradžią apie programą "angis.
>> Ir eikime į priekį ir tai padaryti.
Aš ruošiuosi eiti į priekį ir tarkim, intx gauna gauti int.
Ir žinote ką?
Kurkime geresnį vartotojų patirtį.
>> Taigi galime tik pasakyti, x yra, ir efektyviai raginimas vartotojui suteikia mums x.
Ir tada leiskite man eiti į priekį ir pasakyti, printf kaip apie y, šį kartą laukiasi
Abu šie dydžiai nuo naudotojo.
Ir tada tegul tiesiog eiti į priekį ir tarkim, printf, X ir y suma yra.
Ir dabar aš nenoriu daryti proc s.
Noriu daryti proc i, Backslash N, o tada prijunkite suma vertę.
>> Taigi, kaip aš galiu eiti apie tai daryti?
Zinai ka?
Aš žinau, kaip naudoti kintamuosius.
Leiskite man tiesiog paskelbti naują, int z.
>> Ir aš ruošiuosi imtis atspėti čia.
Jei yra lygios ženklai tai kalba, o gal galiu tiesiog x plus y
tol, kol aš galų mano maniau su kabliataškiu?
Dabar galiu eiti atgal čia, prijunkite z, baigti šį minties su kabliataškiu.
Ir pažiūrėkime dabar, jei jie sekos lines-- X yra gauti int.
Y yra gauti int.
>> Pridėti x ir y, saugoti vertės z-- Taigi, vėl prisiminti lygybės ženklą
nėra lygus.
Tai užduotis iš dešinės į kairę.
Ir tegul atsispausdinti, kad suma iš X ir Y yra ne pažodžiui Z,
bet kas viduje Ž.
Taigi padarykime padidinimai - gražus, jokių klaidų šiuo metu.
Dot velniop padidinimai, įveskite, x bus 1 d.
>> Metai bus 2.
Ir x ir y suma yra 3.
Taigi, kad viskas gerai ir gerai.
>> Taigi jums būtų įsivaizduoti, kad matematikos turėtų dirbti programą, kaip šis.
Bet žinote ką?
Ar šis kintamasis, linija 12, netgi būtina?
Jums nereikia gauti į įpročiai tiesiog laikyti dalykų kintamųjų
tik todėl, kad jūs galite.
Ir, iš tiesų, tai paprastai apgalvoto blogas dizainas
jeigu kuriate kintamąjį, vadinamas Z šiuo atveju, saugoti kažką į jį,
ir tada iš karto naudojant jį, bet niekada vėl.
Kodėl ką nors duoti vardą kaip z, jei esate tiesiog
ketinate naudoti, kad dalykas tik vieną kartą, ir taip
proksimalinio, kur jūs sukūrėte ji į pirmąją vietą,
taip arti požiūriu eilučių kodo?
Taigi jūs žinote, ką?
Pasirodo, kad C yra gana lanksti.
Jei aš iš tikrųjų noriu plug-in vertybių čia
Man nereikia deklaruoti naują kintamąjį.
Galėčiau tik plug-in x plius Y, nes C supranta
aritmetika, ir matematiniai operatoriai.
>> Taigi aš galiu tiesiog pasakyti, tai padaryti matematiką, x plius Y, nepriklausomai nuo tos vertės,
prijunkite gautas sveikasis skaičius į tą eilutę.
Taigi, tai gali būti, nors tik viena eilutė trumpesnė,
geriau dizainas, geresnis programa, nes ten mažiau kodas, todėl
mažiau už mane suprasti.
Ir tai taip pat tik siurblys, kiek mes ne
naujų žodžių, naujus simbolius, kaip z,
nors jie nelabai tarnauti daug tikslu.
>> Deja, matematika nėra Visa tai patikimi kartais.
Vykime į priekį ir tai padaryti.
Aš ruošiuosi eiti į priekį dabar ir atlikite šiuos veiksmus.
>> Darom printf, proc I, plius proc i turi būti procentų i Backslash N.
Ir aš ruošiuosi daryti this-- xyx plius m.
Taigi, aš tik ketina perrašyti tai šiek tiek kitaip čia.
Leiskite tai padaryti greitai naudojama logiškai patikrinimą.
Vėlgi, tegul ne gauti prieš save.
Padaryti padidinimas, DOT velniop angis.
x yra 1, y yra 2, 1 plius 2 yra 3.
Taigi, kad gerai.
Bet tegul komplikuoti tai dabar šiek tiek, ir sukurti naują failą.
>> Aš ruošiuosi skambinti šį vieną, pasakyti, ints, Val už sveikieji skaičiai.
Leiskite man pradėti, kur buvau prieš momentas.
Bet dabar padarykime keletą kitų linijų.
Leiskite man eiti į priekį ir atlikite šiuos veiksmus, printf, proc i atėmus proc i
yra procentai i kablelis x kablelis yx atėmus m.
Taigi darau šiek tiek skiriasi matematikos ten.
Darom kitą.
Taigi proc i karto proc i proc i Backslash N.
Leiskite plug-in X ir Y ir X kartų y.
Mes naudosime žvaigždutę ant Jūsų kompiuteris kartus.
>> Jūs negalite naudoti x. x yra kintamojo vardas čia.
Galite naudoti dauginimo žvaigždė.
Darom vienas.
Printf proc aš, padalintas iki proc i, yra procentai i
Backslash N. XY, padalytą iš y-- todėl jūs naudojate įstrižas brūkšnys į C
daryti padalinys.
Ir darykime vienas kitas.
Likęs proc i, padalintas iki proc i, yra procentai aš.
xy-- ir dabar likusi yra tai, kas liko.
Kai bandote dalijant vardiklis į skaitiklį,
kiek yra likę, kad tu negali padalinti iš kitų?
>> Taigi ten tikrai ne, nebūtinai, simbolis
mes naudojamas pradinėje mokykloje už tai.
Bet ten C. Galite pasakyti x modulį y kur
Tai procento ženklas šioje context-- klaidinančiai, kai esate viduje
dvigubų kabučių, Viduje printf, proc
naudojamas kaip formato specyfikator.
>> Kai naudojate proc ribų kad matematinė išraiška,
tai tas modulį operatorius modulinės arithmetic-- mūsų tikslais
čia tiesiog reiškia, kas yra Likusi x padalytą y?
Taigi x padalytą y yra x velniop m.
Kokia x likusi padalytą Y?
Tai x mod y, kaip programuotojas pasakytų.
>> Taigi, jei aš padariau ne klaidų čia, leiskite man eiti į priekį ir padaryti ints, Val, gražus,
ir taškas pasvirasis brūkšnys ints.
Ir eikime į priekį ir padaryti, tarkim, 1, 10.
Gerai, 1 plius 10 yra 11, patikrinimas.
1 minus 10 yra neigiamas 9, patikrinkite.
>> 1 kartų 10 10, patikrinimas.
1, padalytą iš 10 is-- Gerai, mes praleisti, kad vienas.
Likusi 1, padalytą iš 10 yra 1.
Teisingai.
Bet ten klaida čia.
>> Taigi vienas aš įdėti savo perduoti, nėra teisinga.
Aš turiu galvoje, tai artimas 0.
1, padalytą iš 10, žinote, jei mes pjovimo keletą kampus, tikrai, tai nulis.
Bet tai tikrai turėtų būti 1/10, 0,1 arba 0,10, 0.1000, ar kt.
>> Tai tikrai neturėtų būti lygus nuliui.
Na, it turns out, kad kompiuteris yra daro tiesiog tai, ką mes papasakojo daryti.
Mes darome matematikos kaip apskaičiuojamas dalijant x iš y.
Ir abu x ir y, per linijų kodo anksčiau, yra sveikieji skaičiai.
>> Be to, on-line 15, mes esame sakau printf, ei, printf Plug-in
sveikasis skaičius, plug-in sveikasis skaičius, plug-in yra integer-- specialiai
x, ir tada Y, ir tada x padalytą m. X ir Y yra ints.
Mes gerai ten.
>> Bet kas yra x, padalytą iš X?
x, padalytą iš Y turėtų būti, matematiškai, 1/10 arba 0,1,
kuris yra tikras skaičius, realus skaičius turintys, gal net kablelio.
Tai nėra sveikasis skaičius.
>> Bet kas yra arčiausiai sveikasis skaičius 1/10, arba 0,1?
Taip, tai rūšies yra lygus nuliui.
0,1 yra tokia daug.
Ir 1 tai daug.
Taigi 1/10 yra arčiau 0, nei ji yra viena.
>> Ir taip kas C darai us-- rūšies, nes mes papasakojo to--
yra trumpinamas, kad sveikasis skaičius.
Tai atsižvelgiant į vertę, kuri vėl yra turėtų būti kažkas panašaus į 0.1000,
0 ir taip toliau.
Ir tai nutraukiant viską po kablelio
taip, kad visa tai Daiktai, nes ji nėra
tilptų į sveikojo skaičiaus sąvoką, kuri yra tik kaip neigiamas 1, 0, 1 numeris
aukštyn ir žemyn, jis išmeta viską po kablelio, nes jūs
netelpa kablelio į pagal apibrėžimą sveikojo skaičiaus.
>> Todėl čia atsakymas yra lygus nuliui.
Taigi, kaip mes išspręsti šią problemą?
Mes turime kitą sprendimą visi kartu.
Ir mes galime tai padaryti, taip.
>> Leiskite man eiti į priekį ir kurti naujas failą, tai vienas vadinamas floats.c.
Ir išsaugokite jį čia į pats katalogas, float.c.
Ir leiskite man eiti į priekį ir kopijuoti kai tos kodą iš anksčiau.
>> Bet užuot int, tegul tai padaryti.
Duok man slankiojo kablelio skaičius vadinamas x. kai slankiojo kablelio
vertė yra tik pažodžiui kažkas su kintamomis kablelio.
Jis gali judėti į kairę, į dešinę.
Tai realus skaičius.
>> Ir leiskite man skambinti ne gauti int, bet ir gauti plūdę,
kuris taip pat buvo tarp meniu iš variantų C250 bibliotekoje.
Keiskime Y trintuve.
Taigi tai tampa gauti plūdę.
>> Ir dabar, mes nenorime prijungti int.
Pasirodo, mes turime naudoti procentų F plūdės, proc F plūdės,
ir dabar išsaugokite jį.
Ir dabar, kumščius, kad plūdės, Nica, dot pasvirasis brūkšnys plūdės.
x bus vienas 1. Y Bus 10 dar kartą.
>> Ir gražus, gerai mano papildymas yra teisinga.
Aš tikėjausi daugiau, bet aš pamiršau parašyti.
Taigi eikime ir išspręsti šią loginę klaidą.
>> Vykime į priekį ir patraukti toliau.
Mes tiesiog padaryti šiek tiek kopijuoti ir įklijuoti.
Ir aš ruošiuosi pasakyti minusas.
>> Ir aš ruošiuosi pasakyti kartus.
Ir aš ruošiuosi pasakyti padalintas.
Ir aš neketinu daryti modulo, kuris yra ne kaip Germane čia,
padalytą iš F ir laikai plus-- Gerai, tegul tai padaryti dar kartą.
>> Padaryti plūdes, dot pasvirasis brūkšnys plūdes, ir 1, 10, and-- gražus, ne, Gerai.
Taigi, aš idiotas.
Taigi tai yra labai dažnas kompiuterių mokslo
padaryti kvailų klaidų kaip šis.
>> Dėl švietimo tikslais, ką aš tikrai norėjau padaryti
buvo pakeisti mokslą čia į pliuso, minusas, kad kartais,
ir padalinti, kaip jūs, tikiuosi, pastebėjau per šį pratimą.
Taigi, dabar tegul iš naujo kompiliuoti tai programa, tai dot velniop plūdės.
>> Ir trečią kartą, tegul pamatyti, jei ji atitinka mano lūkesčius.
1, 10, įvesti, taip, gerai, 1.000, padalytą iš 10000, yra 0,100000.
Ir paaiškėja, mes galime kontroliuoti, kiek numeriai yra po šių ženklų po kablelio tikslumu.
Mes iš tikrųjų bus.
Mes grįžti prie to.
>> Bet dabar, iš tiesų, matematika yra teisinga.
Taigi, vėl, kas yra Takeaway čia?
Pasirodo, kad C, yra ne tik tiesiog strings-- ir, tiesą sakant,
ten tikrai ne, nes mes pridėti tiems, su CS50 bibliotekoje.
Tačiau yra ne tik ints.
>> Taip pat yra plūdės.
Ir paaiškėja, daug kitų duomenų krūva rūšys taip pat, kad mes naudosime prieš ilgas.
Pasirodo, jei norite vieno charakteris, o ne simbolių eilutė,
galite naudoti tik char.
>> Pasirodo, kad jei norite Bool, Būlio vertė, true arba false tik
dėka CS50 bibliotekoje, mes įtraukta į C bool tipo duomenų, taip pat.
Bet jis taip pat pristatyti daugelis kitų kalbų, taip pat.
Ir paaiškėja, kad kartais jums reikia didesnių numerius tada ateis pagal nutylėjimą
su int ir plūdės.
>> Ir, iš tikrųjų, dvigubas yra skaičius kad naudoja ne 32 bitų, bet 64 bitus.
Ir gana ilgo yra skaičius, kuris naudoja ne 32, bitai, bet 64 bitus,
atitinkamai, už slankiojo kablelio vertybės ir sveikieji skaičiai, atitinkamai.
Tad tikrai dabar pamatyti šį veiksmą.
>> Aš ruošiuosi eiti į priekį čia ir pakelti vieną kitą programą.
Čia aš ruošiuosi eiti į priekį o yra CS50.h.
Ir leiskite man eiti, apima standartinį IO.h.
>> Ir jūs pastebėsite kažką funky, kas vyksta čia.
Tai ne spalvine dalykų taip pat, kaip tai darė anksčiau.
Ir it turns out, kad todėl, kad aš nedavė dalykas failo pavadinimą.
>> Aš ruošiuosi skambinti šį vieną sizeof.c ir paspauskite Saugoti.
Ir pastebėti, kas atsitinka su mano labai balta kodas prieš tą juodą foną.
Dabar, bent jau ten kai violetinė ten.
Ir tai yra sintaksė paryškintas.
>> Tai todėl, kad, paprasčiausiai, aš sakė IDE kokio tipo failą
tai suteikiant jam pavadinimą ir specialiai failo plėtinį.
Dabar galime eiti į priekį ir tai padaryti.
Aš ruošiuosi eiti į priekį ir labai tiesiog atsispausdinti following-- bool
yra proc GV.
>> Mes grįžti į kad vos akimirką.
Ir tada aš ruošiuosi spausdinimo dydį bool.
Ir dabar, tik sutaupyti aš šiek tiek laiko, aš
ketinate daryti vieną visumą krūva iš jų vienu metu.
Ir būtent, aš ruošiuosi pakeisti į char ir char.
Tai vienas, aš ruošiuosi keisti dvigubo ir dvigubai.
>> Tai vienas, aš ruošiuosi keisti į plūdę ir plūdės.
Tai vienas, aš ruošiuosi pakeisti į int ir int.
Ir tai viena, aš ruošiuosi pakeisti į ilgas ilgas.
Ir tai dar vartojate ilgą laiką, kol ilgai.
>> Ir tada, pagaliau, daviau pats vienas per daug, eilutė.
Pasirodo, kad C, ten specialus operatorius vadinamas
dydis tai tiesiog ketina, kai paleisti,
pasakyti mums dydį kiekvienas iš šių kintamųjų.
Ir tai yra būdas, dabar, galime prijungti atgal
į praėjusios savaitės diskusijų Duomenų ir atstovavimo.
>> Leiskite man eiti į priekį ir kaupia dydis dot slash dydžio.
Ir pažiūrėkime.
Pasirodo, kad C, konkrečiai CS50 IDE,
specialiai dėl Operacinė sistema Ubuntu,
kuris yra 64-bitų operacinėje sistema šiuo atveju,
bool ketina naudoti vieną baitą erdvėje.
Štai kaip dydis matuojamas, ne bitais, bet baitais.
Ir prisiminti, kad vienas baitas yra aštuoni bitai.
Taigi bool, net jei techniškai reikia tik 0 arba 1,
tai šiek tiek kainuojančio kaip mes ją įgyvendino.
Tai iš tikrųjų ketinate naudoti vieną visumą byte-- todėl visi nuliai, yra gal
visi tie, ar kažkas panašaus, ar tik vienas 1 tarp aštuonių bitų.
>> Char, tuo tarpu, naudojamas pobūdžio kaip ASCII simbolių per paskutinę savaitę,
bus vienas simbolis.
Ir tai synchs su mūsų samprata jis yra ne daugiau nei 256 bits-- o,
synchs su juo nesant ilgiau nei 8 bitai, kurie
suteikia mums daugiau kaip 256 vertybes.
Dvigubas ketina būti 8 baitų arba 64 bitų.
>> Plūduras yra 4.
Int yra 4.
Ilgas, ilgas yra 8.
Ir eilutė yra 8.
Bet nesijaudinkite apie tai.
Mes ketiname žievelės atgal, kad sluoksnis.
Pasirodo, stygos gali būti ilgesnis nei 8 baitai.
>> Ir, tiesą sakant, mes parašiau Stygos jau Hello world,
ilgiau nei 8 baitai.
Bet mes grįžti į kad vos akimirką.
Bet atimti čia yra tokia.
>> Kiekvienas kompiuteris turi tik ribotas atminties kiekis ir erdvėje.
Galite tik saugoti tiek daug failai jūsų Mac arba PC.
Galite išsaugoti tik tiek daug programas RAM veikia vienu metu, nebūtinai, net
su virtualios atminties, nes turite baigtinių sumą RAM.
>> Ir tik picture-- jei Jūs niekada atvėrė nešiojamas
arba užsisakyti papildomą atminties už kompiuterio, jums
gali nežinoti, kad viduje kompiuterio
yra kažkas, kad atrodo kaip ši mažai.
Taigi tai yra tik bendras įmonės pavadinimą Svarbu, kad daro RAM kompiuterius.
Ir RAM Kai programos gyventi, o jie veikia.
>> Taigi kiekvienu Mac arba PC, kai dukart spustelėkite programą, ir tai atveria,
ir ji atveria šiek Word dokumentas arba kažkas panašaus,
ji saugo ją laikinai RAM, nes RAM greičiau
nei kietajame diske, arba Jūsų kietojo disko.
Taigi, tai tik ten, kur programos eiti gyventi, kai jie veikia,
arba kai yra naudojami failai.
>> Taigi jūs turite tai, kas atrodo kaip šis jūsų nešiojamojo kompiuterio viduje,
ar šiek tiek didesni dalykai viduje darbalaukyje.
Bet svarbiausia yra jūs turite tik baigtinis skaičius šių dalykų.
Ir yra tik baigtinis dydis aparatūros sėdi ant šio stalo teisė
čia.
>> Taigi, žinoma, mes negalime laikyti be galo ilgi numeriai.
Ir dar, jei jūs manote, grįžti į Mokyklos, kiek skaitmenų gali
jūs turite dešinę iš dešimtainio taško?
Šiuo klausimu, kiek skaitmenų gali turite prie kairę nuo dešimtainio kablelio?
Tikrai, be galo daug.
>> Dabar, mes, žmonės, tik galėtų žinoti, kaip ištarti milijonai
ir milijardus, trilijonus ir Kwadrylion ir kvintilijonas.
Ir aš stumti ribas Mano understanding-- arba my-- suprantu
numeriai, bet mano tarimas numerius.
Tačiau jie gali gauti be galo didelio su galo daug skaitmenų kairėje
arba prie dešimtainio taško teisę.
>> Bet kompiuteriai turi tik ribinis dydis atminties,
baigtinis skaičius tranzistorių A baigtinis skaičius lemputes viduje.
Taigi, kas atsitinka, kai paleisti iš vietos?
Kitaip tariant, jei tau prisiminkite paskutinę savaitę
kai mes kalbėjome apie skaičių patys yra atstovaujama dvejetainis,
Tarkime, kad mes turime tai 8 bitų vertė čia.
>> Ir mes turime septynis 1 "ir vieną 0.
Ir manau, kad mes norime pridėti 1 iki šios vertės.
Tai tikrai didelis skaičius dabar.
>> Tai 254, jei aš atsimenu matematikos nuo praėjusią savaitę dešinėje.
Bet kas, jei aš pakeisiu kad dešinė 0 į 1?
Sveikasis skaičius, iš Žinoma, tampa aštuonių 1 s.
Taigi mes vis dar geras.
>> Ir tai tikriausiai yra 255, nors priklauso nuo konteksto ir
ji iš tikrųjų gali atstovauti neigiamas skaičius.
Bet daugiau apie tai kitą kartą.
Tai jaučiasi tai apie kaip aukštas, kaip aš galiu pasitikėti.
>> Dabar, tai tik 8 bitus.
Ir mano Mac ", žinoma, yra būdas daugiau nei 8 bitai atminties.
Bet ji turi ribotas.
Taip tas pats argumentas taikomas, net jei mes turėti daugiau iš šių tie ekrane.
>> Bet kas atsitinka, jei esate saugoti šį numerį 255,
ir norite skaičiuoti 1 šiek tiek didesnis?
Jūs norite eiti nuo 255 iki 256.
Problema, žinoma, yra, kad jei pradėti skaičiuoti iki nulio, kaip praeitą savaitę,
Jums negali tikėtis tokio pat aukščio kaip 256, jau nekalbant apie 257,
jau nekalbant apie 258 m, nes tai, ką atsitinka, kai jūs pridėti 1?
Jei seną pradinėje mokykloje požiūris, jūs įtraukėte 1 čia
ir tada 1 plius 1 yra 2, bet tai tikrai nulis, nešiodami 1,
atlikti 1, nešti 1 d.
Visi šie dalykai, Šios 1 s, eikite iki nulio.
Ir jūs baigti taip, kaip kažkas nurodė, a 1 kairėje pusėje.
Bet viskas, ko jums gali realiai pamatyti ir tilptų atmintyje
yra tik aštuoni 0 ųjų, kuri yra pasakyti tam tikru momentu, jei jus, kompiuteris,
Bandžiau skaičiuoti pakankamai aukštai, jūs vyksta į kuriuos vyniojami aplink, atrodo,
nuliui, o gal net neigiamas numeriai, kurie yra dar mažesnis už nulį.
>> Ir mes galime rūšies pamatyti tai.
Leiskite man eiti į priekį ir rašyti nekilnojamojo greitai programa čia.
Leiskite man eiti į priekį ir rašyti programa, vadinama Perpildyta.
Įtraukti CS50.h, apima standartinis IO.h-- oh,
Aš tikrai praleidau savo sintaksės.
Taigi leiskite Išsaugoti kaip overflow.c.
>> Ir dabar int main void-- ir prieš ilgas, mes
grįžti į paaiškinti, kodėl mes nuolat raštu int main negaliojančiu.
Bet dabar, tegul tiesiog padaryti jis, atsižvelgiant savaime suprantamu dalyku.
Duokime sau int, inicijuoti ir ją iki 0.
>> Tegul tada s padaryti int gaunu zero-- Tiesą sakant, darykime begalinis ciklas
ir pamatyti, kas atsitiks.
Nors tiesa, tada tegul atsispausdinti N yra procentai i Backslash N, plug-n.
Bet dabar, darykime N gauna n plius 1.
>> Taigi, kitaip tariant, kiekvienas iteracijos šio begalinis ciklas,
Paimkime N vertę, ir pridėti 1 į jį, ir tada
saugoti rezultatą atgal į n kairėje pusėje.
Ir, tiesą sakant, mes matėme sintaksė šiek tiek panašaus į tai, trumpai.
Cool Apgaulė yra vietoj rašyti visa tai iš,
jūs iš tikrųjų galite pasakyti N plius lygus 1.
>> Arba, jei jūs tikrai norite būti išgalvotas, galite pasakyti n plius plius kabliataškis.
Tačiau pastarieji du yra tiesiog ką mes norime paraginti sintaksinis cukraus
pirmą dalykas.
>> Pirmas dalykas yra aiškesnis, visiškai gerai, visiškai teisinga.
Bet tai yra daugiau bendro, aš pasakyti.
Taigi mes padarysime tai už tik akimirkai.
>> Leiskite dabar padaryti perpildymo, kuris skamba o grėsmingas, taškas velniop perpildymo.
Pažiūrėkime, N manimi gauti gana didelis.
Bet pagalvokime, kaip didelis gali N gauti?
>> n yra tarpinis junginys.
Mes matėme prieš akimirka su dydžiu pavyzdys, kad int yra keturi baitai.
Mes žinome iš praeitą savaitę, keturi baitai yra 32 bitų, nes 8 kartus 4, tai 32.
Štai bus 4 mlrd.
>> Ir mes iki 800,000.
Tai ketina imtis amžinai tikėtis tokio pat aukščio kaip aš galbūt galite.
Taigi, aš ruošiuosi eiti į priekį, kaip jums gali, prieš ilgą,
ir paspauskite Control C-- atvirai, kontrolės C daug, kai kontrolės, C paprastai
priemonės atšaukti.
Deja, nes tai veikia debesyje,
kartais debesis spjaudė iš tiek daug dalykų,
tiek daug produkcijos, jis ketina užtrukti mano indėlis
patekti į debesis.
Taigi, nors aš paspauskite Valdymo C prieš kelias sekundes,
tai tikrai pusė poveikis begalinis ciklas.
>> Ir taip tokiais atvejais mes ketina palikti, kad būtų.
Ir mes ketiname pridėti dar terminalo langą per čia
su pliuso, kuris, žinoma, ne panašaus, nes jis vis dar galvoju.
Ir eikime į priekį ir būti šiek tiek labiau pagrįsta.
>> Aš ruošiuosi eiti į priekį ir daryti tai tik žinoma daug kartų.
Leiskite naudoti for ciklas, kurį aš užsiminiau anksčiau.
Padarykime tai.
Duok man dar vieną kintamąjį int i gauna 0.
i yra mažiau nei, tarkim, 64 i ++.
O dabar leiskite man eiti į priekį ir spausdinti iš n proc i kableliu N.
Ir tada n-- tai dar ketina imtis amžinai.
Padarykime tai.
>> N gauna n kartų 2.
Arba galėtume būti išgalvotas ir daryti kartų lygus 2.
Bet tegul tiesiog pasakyti n lygi pati laikai 2.
Kitaip tariant, į tai nauja versija programos,
Aš nenoriu laukti amžinai iš, kaip 800,000 iki 4 mlrd.
Tegul tik gauti šią per su.
>> Leiskite tikrųjų dvigubai N kiekvieną kartą.
Kuris, prisiminti, dvejinimo yra priešais turėti, žinoma.
Ir kadangi praėjusią savaitę turime kažkas ir vėl, ir vėl,
ir vėl, super greitai, padvigubinti, be abejo,
gauti mus nuo 1 iki galimas didžiausias vertė, galime tikėtis, kad su tarpt.
>> Taigi darykime tiksliai tai.
Ir mes grįžti prie šio prieš ilgas.
Tačiau tai, dar kartą, yra tik kaip kartojimo blokas nulio.
Ir jūs naudojate tai prieš ilgai.
>> Tai tiesiog reiškia skaičių nuo nulio iki, bet nėra lygus, iki 64.
Ir kiekviename Šiam iteracijos kilpa, tiesiog laikyti incrementing i.
Taigi i ++ - ir tai apskritai konstruktas on-line 7 yra tiesiog super paplitęs būdas
kartoti keletą eilučių kodas, kai kurie iš karto.
Kuris eilučių kodo?
Šie garbanotas petnešos, kaip jūs galėjo surinktą iš dabar
reiškia, atlikite šiuos veiksmus.
>> Jis yra kaip naujo, kai ji turi geltona blokų
ir kitos spalvos, kad šios rūšies priimti ar apkabinti kitus blokus.
Štai ką tie garbanoti petnešos darai čia.
Taigi, jei aš gavau mano sintaksė right-- jus galite pamatyti morkų simbolį C priemonėmis
tai kiek kartų buvau bando išspręsti šią problemą.
Taigi galime atsikratyti, kad vienas apskritai, ir uždaryti šį langą.
Ir mes naudosime naują.
Padaryti perpildymo, dot velniop perpildymo, "Enter", visos teisės,
atrodo neblogai pirmas.
Bet tegul slinkti atgal laiku, nes Aš tai 64 kartų.
>> Ir pranešimas pirmą kartą, n yra 1.
Antrą kartą, n yra 2, tada 4, tada 8, tada 16.
Ir atrodo, kad kuo greičiau Gaunu maždaug 1 mlrd,
jei aš dvigubai jį dar kartą, kad turėtų duoti man 2 mlrd.
Bet pasirodo, tai tiesiai ant smaigalys.
>> Ir taip iš tikrųjų perpildymo int nuo 1 mlrd
iki maždaug neigiamas 2 milijardų, nes sveikasis skaičius,
skirtingai skaičius, kurių buvo prisiimti praėjusią savaitę,
gali būti tiek teigiamas ir neigiamas iš tikrųjų ir į kompiuterį.
Ir todėl bent vienas iš tų, bitai yra veiksmingai pavogtas.
Taigi mes tikrai turime tik 31 bitai, arba 2 mlrd galimos reikšmės.
>> Bet dabar, Takeaway yra gana tiesiog, nepriklausomai šie skaičiai yra
ir kokia matematika yra, kažkas blogo atsitiks, galų gale,
nes galiausiai bandote Iškeisti bitai vienas per daug kartų.
Ir jūs efektyviai eiti iš visų 1 s gal visi 0 s, o gal
tiesiog kai kurie kiti rašto, kad jo aiškiai, priklauso nuo konteksto ir,
gali būti aiškinama kaip neigiamas skaičius.
Ir taip atrodytų aukščiausią I gali tikėtis šioje konkrečioje programoje
yra tik maždaug 1 mlrd.
Bet yra dalinis sprendimas čia.
Zinai ka?
>> Leiskite keisti iš int į ilgas ilgas.
Ir leiskite man eiti į priekį čia ir say-- Aš ruošiuosi
pakeisti tai nepasirašytas ilgai.
Arba pažiūrėkime, aš niekada prisiminti save.
>> Vykime į priekį ir padaryti perpildymo.
Ne, tai ne tai, LLD, ačiū.
Taigi kartais klingsėti gali būti naudingas.
Aš neprisimenu, ką formatą specifikatorius buvo ilgą laiko.
>> Bet, tiesą sakant, klingsėti man pasakė.
Žalioji yra kai geras Geras, dar reiškia, kad jūs padarėte klaidą.
Tai atspėti, kad aš reiškė LLD.
>> Taigi leiskite man pasinaudoti, tai patarimas, ilgas ilgas Dešimtainis skaičius, išskyrus tai, kad.
Ir leiskite man pakartotas ją, dot Slash perpildymo, Enter.
O dabar kas kietas tai.
>> Jei aš slinkti atgal laiku, mes vis dar pradėti skaičiuojant tuo pačiu place-- 1, 2, 4,
8, 16.
Atkreipkite dėmesį, mes visi kelią iki 1 mlrd.
Bet tada mes saugiai gauti 2 mlrd.
>> Tada mes gauti iki 4 mlrd, tada 8 mlrd, 17 mlrd.
Ir mes einame didesnis, o aukščiau ir aukščiau.
Galų gale, tai irgi pertraukos.
>> Galų gale, su ilga ilga, kuris yra 64-bitų reikšmės, o ne
32 bitų vertė, jei skaičiuoti per didelis, jums wrap aplink 0.
Ir šiuo atveju, mes atsitikti galų gale su neigiamas skaičius.
>> Todėl tai yra problema.
Ir ji Pasirodo, kad tai Problema yra ne visi, kad paslaptinga.
Nors aš sąmoningai sukeltas jį su šių klaidų,
paaiškėja, matome kokios visi aplink mus, arba bent jau kai kurie iš mūsų padaryti.
>> Taigi Lego Star Wars, jei jūs kada nors grojo žaidimą,
paaiškėja, galite eiti aplink nesilaikantiems viską į LEGO pasaulyje
ir rinkti monetas, esmės.
Ir jei jūs kada nors grojo Šis žaidimas taip per daug laiko,
kaip šis bevardis individo čia padarė, iš viso
monetų, kad jūs galite gauti yra, atrodytų, 4 mlrd.
>> Dabar, tai tikrai apvali.
Taigi Lego bandžiau išlaikyti dalykų patogi.
Jie neturėjo daryti tiksliai 2 iki 32 galia, už praeitą savaitę.
Bet 4 mlrd yra priežastis.
Atrodo, remiantis šia informacija, kad Lego ir kompanija,
padarė šį faktinį programinę įrangą, nusprendė kad kuo daugiau monetų
vartotojas gali kauptis yra, iš tiesų, 4 milijardus,
nes jie pasirinko savo kodą naudoti nėra ilgas ilgas, matyt,
bet tik sveikas, nepasirašytas sveikasis skaičius, tik teigiamas sveikasis skaičius, kurio
Max vertė yra maždaug tai.
Na, čia dar vienas juokingas vienas.
Taigi žaidimas Civilizacija, kuri kai kurie iš jūsų gali būti susipažinę su
paaiškėja, kad prieš keletą metų ten buvo šiame žaidime, kuriuo klaidą
jei suvaidino vaidmenį Gandhi į žaidimą,
vietoj jo yra labai pacifistas, o buvo neįtikėtinai, neįtikėtinai
agresyvi, esant tam tikroms aplinkybėms.
Visų pirma, taip, kad civilizacija darbai, kad jei jūs, žaidėjas,
priimti demokratiją, jūsų agresyvumas rezultatas pasireiškia
mažėjančią reikšmę iš dviejų, todėl minusas atėmus, tada minusas minuso.
>> Taigi jūs atimti 2 nuo Jūsų tikrasis Iteracja.
Deja, jei jūsų Iteracja yra Iš pradžių 1, ir jūs atimti 2 iš jos
priėmus demokratiją kaip Gandhi čia galėtų
padariau, nes jis buvo labai passive-- 1 dėl agresyvumo mastu.
Bet jei jis priima demokratiją, tada jis eina nuo 1 iki neigiamo 1 d.
>> Deja, jie buvo naudojant nepasirašytas numerius,
tai reiškia, jie gydomi net neigiamas numeriai taip, lyg jie buvo teigiami.
Ir paaiškėja, kad teigiamas ekvivalentas neigiamas 1,
tipiškų kompiuterinių programų, yra 255.
Taigi, jei Gandis priima , Todėl demokratija
jo agresyvumas rezultatas sumažėjo, ji iš tikrųjų ritininis aplink 255
ir daro jį labiausiai agresyvus charakteris žaidime.
Taigi galite google ant tai.
Ir tai buvo, Iš tiesų, atsitiktinis programavimo klaida,
bet tai įrašyta gana kraštotyros šiol.
>> Tai viskas, įdomus ir mielas.
Daugiau bauginantis, kai faktinis nekilnojamojo pasaulio įrenginiai, o ne žaidimai,
turi tas pačias klaidas.
Iš tiesų, vos prieš metus gaminys atėjo sužinoti apie Boeing 787 Dreamliner.
>> Ir ne pirmas straipsnis Žvilgsnis skaito mažai slaptas.
Bet jis pasakė tai, programinė įranga pažeidžiamumas "Boeing"
Naujas 787 Dreamliner srove turi gali sukelti pilotai
prarasti kontrolę orlaivis, galbūt
viduryje skrydžio, FAA pareigūnai įspėjo oro linijų neseniai.
Tai buvo nustatymas kad modelis 787
kad lėktuvas, kuriuo buvo varomas nepertraukiamai 248 dienų
gali prarasti visą kintamoji elektros srovė, srovės, elektros energijos dėl to, kad generatoriaus
valdymo blokai, GCUs, tuo pačiu metu vyksta į nepavyks saugiuoju režimu.
Tai tipo prarasti mane.
Tačiau pranešime buvo nurodyta, Gerai, dabar aš turiu, kad sąlyga sukėlė programinė įranga
kovoti su vidiniais generatorius kontrolė
vienetų, kurie bus perkrautas po 248 dienų nepertraukiamo galią.
Mes išdavimo ši pastebėti, kad neprarastumėte
Visų kintamosios srovės elektros galia, kuri galėtų sukelti
nevaldoma lėktuvo.
>> Taigi, pažodžiui, yra tam tikrų sveikasis skaičius, arba kai lygiaverčių duomenų tipas,
naudojamas programinės įrangos į faktinį lėktuvo
kad jei norite išsaugoti savo lėktuvą pakankamai ilgai, o, matyt,
gali būti tuo atveju, jei jūs tiesiog veikia juos nuolat ir niekada išjungiant
Jūsų lėktuvas, atrodo, arba nuomos jos baterijos mirti,
ilgainiui suskaičiuoti, ir daugiau, ir daugiau, ir daugiau, ir daugiau, ir daugiau.
>> Ir gamta A ribinis dydis atminties
bus perkrautas, riedėjimo atgal nulis arba kai neigiama reikšmė,
šalutinis poveikis, kuris yra grėsmingai nekilnojamojo realybė
kad lėktuvas gali prireikti turi būti paleistas, efektyviai,
ar gali kristi, dar blogiau, nes jis skrenda.
Taigi šie klausimai rūšių vis dar su mumis,
even-- tai buvo 2015 straipsnis, tuo labiau bauginantis
kai jūs nebūtinai suprasti, vertinti, ar numatyti
tie rūšių klaidų.
>> Taigi paaiškėja, ten vienas kitas blogas dalykas, apie duomenų pateikimo.
Pasirodo, kad net plūdės yra rūšies ydingas, nes plūdės, taip pat,
Aš pasiūliau yra 32 bitai, arba gal 64, jei jūs naudojate dvigubai.
Bet tai vis tiek ribotas.
>> Ir laimikis, kad jei galite įdėti begalę numerių
po kablelio, nėra jokio būdo galite
gali atstovauti visus galima numeriai, kad mes buvo mokomi
lygiui mokykla gali egzistuoti pasaulyje.
Kompiuteris, iš esmės, turi pasirinkti iš šių skaičių poaibis
atstovauti tiksliai.
>> Dabar, kompiuteris gali apvalios gal šiek tiek,
ir gali leisti jums maždaug parduotuvėje bet koks skaičius galbūt galbūt nori.
Bet tik intuityviai, jei jums turi baigtinį skaičių bitų,
galite sukeisti tik juos tiek daug baigtinių būdais.
Taigi, jūs negalite galbūt naudoti baigtinio skaičiaus
iš kombinacija bitų, modeliai nulių ir,
atstovauti begalinė skaičius numerius,
Tai rodo, kad kompiuteriai galėtų labai gerai būti gulėti mums kartais.
>> Iš tiesų, tegul tai padaryti.
Leiskite grįžti į CS50 IDE.
Leiskite man eiti į priekį ir sukurti mažai programą
vadinamas paklaidos, rodo, kad kompiuteriai, tiesą sakant, netikslus.
>> Ir leiskite man eiti į priekį ir pradėti kai šio kodekso iš anksčiau,
o dabar tiesiog atlikite šiuos veiksmus.
Leiskite man eiti į priekį ir daryti printf, proc F, Backslash n 1 padalytą iš 10.
Kitaip tariant, galime pasinerti giliau 1/10, kaip 1 ir dalijami iš 10.
Žinoma, kompiuteris gali atstovauti 1/10.
>> Taigi eikime į priekį ir padaryti netikslumų.
Pažiūrėkime.
Formatas nurodoma tipo dvigubai.
Tačiau šis argumentas yra tipo int.
Kas vyksta?
>> O, įdomu, todėl tai pasimokyta iš anksčiau.
Aš sakau, ei, kompiuteris rodo man plūdė su f proc.
Bet aš suteikti jai 2 int.
Taigi paaiškėja, galiu sutvarkyti tai įvairiais būdais pora.
>> Galėčiau tiesiog pasukite vienas į 1,0, o 10 į 10,0, kuri, tiesą sakant,
turi galimybę konvertuoti poveikį juos į floats-- dar tikiuosi
tas pats numeris.
Arba it turns out, kad kažkas matysime vėl prieš ilgas.
Jūs galite atiduoti numerius.
>> Galite, naudojant šią suskliaustos išraiška, galima sakyti,
ei, kompiuteris, į tai 10, kurį aš žinau, yra int.
Bet su ja elgiamasi, prašome taip, tarsi tai plūdė.
Bet tai jaučiasi pernelyg sudėtingos.
>> Mūsų tikslams šiandien tegul tik pažodžiui
padėti jiems slankiojo kablelio vertybes su dešimtainio taško, kaip šis.
Leiskite man eiti į priekį ir pakartotinis, kad netikslumas, gera, taškas velniop
netikslumas, įveskite.
Gerai, mes ieškome gerai.
>> 1, padalytą iš 10, pagal mano "Mac" čia yra, iš tiesų, 0,100000.
Dabar aš buvo mokoma pradinėje mokykloje yra turėtų būti begalinis skaičius 0 aisiais.
Taigi leiskite bent pabandyti pamatyti kai iš tų.
Pasirodo, kad printf yra šiek tiek mėgėjas dar nei mes jau naudojate.
Pasirodo, jūs neturite nurodyti tiesiog proc F, arba tiesiog proc aš.
Jūs iš tikrųjų galite nurodyti kai kurios kontrolės parinktis.
>> Tiksliau, aš ruošiuosi pasakyti, ei, printf,
iš tikrųjų rodo, man 10 dešimtainių taškų.
Taigi atrodo šiek tiek keistai.
Bet tu sakai procentų, DOT, kiek numeriai
Norite pamatyti po kablelio, tada f
vienodo, tik todėl, kad tai ką dokumentacija sako.
Leiskite man eiti į priekį ir išsaugoti, kad.
>> Ir pastebėsite per daug, aš gaunu pavargau perspausdinimas dalykų.
Taigi, aš tiesiog nustatant aukštyn ir rodyklę žemyn ant mano raktus čia.
Ir jei aš nuolat pataikyti, jūs gali matyti visi iš komandų
kad aš padariau, ar neteisingai padarė.
>> Ir aš ruošiuosi eiti į priekį ir dabar ne iš tikrųjų naudoti, kad, matyt.
Padaryti netikslumą, DOT Slash imprecision-- taip
kas man buvo mokoma Mokyklos patikrinimus iš.
Net jei aš jį atspausdinti iki 10 dešimtosios Kavinės, tai, tiesą sakant, yra 0,10000.
Bet žinote ką?
>> Leiskite gauti šiek tiek godus.
Tarkime, pavyzdžiui, parodykite man 55 atkreipia po dešimtainio.
Leiskite tikrai imtis šio programuoti iš už nugaros.
Leiskite perdaryti jį su modelio netikslumas, taškas velniop, netikslumai.
>> Ir čia mes einame.
Jūsų vaikystės buvo melas.
Matyt, 1, padalytą iš 10 iš tikrųjų yra 0.100000000000000005551115123--
>> Kas vyksta?
Na, it turns out, jei rūšies atrodo pakankamai toli į pagrindinių
atstovavimas tai skaičius, iš tikrųjų
nėra tiksliai 1/10 arba 0,1 ir begalinis skaičius nulių.
Dabar, kodėl taip yra?
>> Na, nors tai paprastas skaičius mus žmonės, 1, padalytą iš 10
tai dar vienas be galo daug numeriai, kad galėtume sugalvoti.
Bet kompiuteris gali atstovauti tik žinoma daug todėl numeriai.
Ir taip, efektyviai, ką kompiuteris rodo mums yra jo artimiausi
Įstatymų į numerį norime tikėti yra 1/10,
ar tikrai 0,10000 ad infinitum.
>> O, nors, tai yra taip arti, kaip jis gali gauti.
Ir, iš tiesų, jei jums atrodo po gaubtu,
nes mes esame čia, žiūrėdamas 55 ženklų po kablelio,
mes iš tikrųjų matyti, kad tikrovę.
Dabar, kaip panaikinti, jei jūs nors matė movie--
dauguma iš jūsų tikriausiai haven't-- bet prieš Supermenas 3 kelerius metus,
Richardas Pryor esmės skolintomis tai Realybė jo bendrovė pavogti daug
frakcijų ir frakcijų centus, nes draugija, kaip prisimenu,
tai buvo while-- buvo iš esmės mesti toli nieko, kad netilpo
į centų sąvoka.
>> Bet jei jūs pridėti iki visa tai maža, maža, maža numeriai vėl
ir vėl, ir vėl, jūs galite, kaip jo byla, padaryti gerą pinigų sumą.
>> Tą pačią idėją apiplėšti naujesnis, bet vis tiek dabar vyresni
Filmas, pavadintas biurų patalpos, jeigu tame filme vaikinai,
padarė tą patį, prisukamas jį visiškai baigėsi taip per daug
pinigų į savo banko sąskaitą.
Visa tai buvo labai įtartinas.
Tačiau tuo dienos pabaigoje, netikslumas yra visur aplink mus.
>> Ir kad, taip pat gali būti Baugina bylą.
Pasirodo, kad supermenas 3 ir biuro erdvė žemę, ten
gali būti kai labai reali pasaulio pasekmių
iš netikslaus realijas atstovavimas duomenų
kad net mes, žmonės į ši diena nebūtinai
suprasti taip pat turėtume ar prisiminti, kaip dažnai, kaip turėtume.
Ir, tiesą sakant, taip klipas nuo tam tikru labai realaus pasaulio išvaizdą
pasekmių, kas atsitiks, jei nereikia vertiname netikslumą, kad
gali atsitikti skaičiais atstovavimo.
>> [Vaizdo įrašų atkuriamų]
>> -Computers, Mes visi ateiti sutikti kad dažnai nelinksma problemų, kurios
eiti su, išbandyti klaidų, virusai, ir programinės įrangos trikdžių,
mažoms kainos mokėti nes patogu.
Tačiau aukštųjų technologijų ir didelės spartos karinių ir kosmoso programos paraiškas,
mažiausia problema gali Tebūna išaukštintas į katastrofą.
>> Birželio 4, 1996, mokslininkai parengė pradėti nepilotuojamas "Ariane 5 raketų.
Jis nešėsi mokslo palydovai skirta
nustatyti tiksliai, kaip Žemės magnetinio lauko sąveikauja
su saulės vėjų.
Raketa buvo pastatyta Europos kosmoso agentūra,
ir pakilo iš savo įrenginio nuo Prancūzijos Gvianos priekrantės.
>> -At Apie 37 sekundžių į skrydis, jie pirmą kartą
pastebėjau, kad kažkas negerai.
Purkštukai buvo pakreipti į būdas jie tikrai neturėtų.
Maždaug 40 sekundžių į skrydžio Akivaizdu, kad transporto priemonė buvo bėdų.
>> Ir tai, kai jie padarė sprendimas jį sunaikinti.
Asortimentas saugos pareigūnas, su milžiniškas viduriai, spaudžiamas mygtukas,
susprogdino raketų, kol jis galėtų tapti pavojaus į visuomenės saugumui.
>> -Tai Buvo mergautinė kelionė į Ariane 5 d.
Ir jos naikinimo veiksmai buvo padėkite, nes škvalas
įdėta į raketą programinės įrangos.
-The Problema ant Ariane buvo kad ten buvo skaičius, kuris
reikia 64 bitus išreikšti.
Ir jie norėjo atsiversti jį į 16-bitų skaičių.
Jie prielaida, kad skaičius buvo niekada
būti labai didelis, kad dauguma tų skaičiai 64 bitų skaičius buvo nuliais.
Jie buvo neteisūs.
>> -The Vienos nesugebama programa sutikti
numeris, nurodytas rūšies generuoja kitą buvo tuo, kad nebuvo šaknies.
Programinės įrangos kūrimas tapo labai brangus dalis naujos technologijos.
"Ariane" raketa buvo labai sėkmingas, todėl daug programinės įrangos
sukurta ji taip pat buvo naudojamas Ariane 5 d.
>> -The Pagrindinė problema buvo tai, kad "Ariane 5 buvo greitesnis, pagreitinto greičiau.
Ir programinę įrangą, turėjo ne sudarė tai.
>> -Iš Raketų sunaikinimo buvo didžiulė finansinė katastrofa,
visi dėl į minutę programinės įrangos klaidos.
Bet tai buvo ne pirmas laiko duomenų konvertavimo problemos
buvo kentėjo modernią raketų technologiją.
>> -in 1991, su pradžios pirmojo Persijos įlankos karo,
Patriot raketų patyrė panašų natūra
skaičiaus perskaičiavimo problema.
Ir kaip rezultatas, 28 žmonės, 28 amerikiečių karių,
žuvo, o apie 100 žaizdos,
kai Patriot, kuris turėjo apsaugoti nuo gaunamų scuds,
nepavyko ugnį raketa.
>> -Kai Irakas įsiveržė Kuveitas, ir Amerikoje pradėjo Desert Storm 1991 pradžioje,
Patriotas raketų baterijos buvo dislokuota apsaugoti Saudo Arabija ir Izraeliu
iš Irako Skadi raketų atakų.
Patriot yra JAV vidutinio nuotolio paviršiaus oro sistemos, pagaminti
pagal Raytheon kompanijos.
>> -Iš Patriot Interceptor dydis pati yra apie maždaug 20 pėdų ilgio.
Ir ji sveria apie 2000 svarų.
Ir ji vykdo daug apie galvutę, Manau, kad tai maždaug 150 svarų.
Ir pati užtaisą yra aukštos sprogmenį, kuris
turi fragmentus aplink jį.
Iš galvutės korpusas sukurta veikti kaip šautuvo šratai.
>> -The Raketų atliekami keturi už konteinerį,
ir yra gabenami pusiau priekaba.
>> -The Patriot "priešraketinės gynybos sistemą nueina ne mažiau kaip 20 metų.
Iš pradžių buvo sukurta kaip oro gynybos raketų
nušauti priešo lėktuvus.
Per pirmąjį Persijos įlankos karą, kai, kad karas atėjo kartu,
armija norėjo jį naudoti numušti scuds, o ne lėktuvais.
>> Irako oro pajėgų buvo ne tiek daug problemų.
Bet armija buvo neramu apie scuds.
Ir taip jie bandė atnaujinti Patriot.
>> -Intercepting Priešą raketa keliaujant mach 5
ketino būti pakankamai sudėtinga.
Bet kai Patriot buvo skubėjome eksploatuoti,
armija nieko nežinojo apie Irako modifikacija, kad padarė
jų scuds beveik neįmanoma pataikyti.
>> -Kas Atsitiko yra scuds kad ateidavo į buvo nestabili.
Jie buvo Įtaka.
Dėl šios priežasties buvo irakiečiai, kad
gauti 600 kilometrų iš 300 km
diapazonas raketa, paėmė svorį iš priekinės galvutės.
Jie padarė užtaisą lengvesni.
>> Taigi dabar Patriot yra bando ateiti Skadi.
Ir didžiąją dalį metu, Dauguma laiko,
tai tiesiog skristi iš Skadi.
Kai Patriot sistemos operatoriais supratau Patriot praleido savo tikslą,
jie susprogdino Patriot anketa kovinę galvutę išvengti galimų aukų, jei jis
buvo leista patenka į žemę.
>> -Tai Buvo ką dauguma žmonių matė, tie dideli ugnies į dangų,
ir nesuprato, kaip ašyje Skadi galvučių.
>> -Although Naktį dangus, patriotai atsirado
būti sėkmingai sunaikinti Scuds, bent Dhahran,
ten gali būti ne klaida apie jos veiklą.
Ten, Patriot radaras sistema neteko stebėti priimamą Skadi,
ir niekada pradėjo dėl į programinės įrangos trūkumas.
Tai buvo Izraelio, kuris pirmą kartą atrado , kad kuo ilgiau sistema buvo įjungtas,
tuo didesnis laiko skirtumas tapo, nes laikrodis įterptųjų
Šioje sistemoje kompiuteryje.
>> -About Prieš dvi savaites iki Į Dhahran tragedija,
Izraelis pranešė, kad Gynybos departamentas
, kad sistema buvo prarasti laiko.
Po maždaug aštuonias valandas iš eilės, jie pastebėjo, kad sistema
buvo vis pastebimai mažiau tiksli.
Gynybos departamentas atsakė sakau visi Patriot baterijų
ne palikti sistemas dėl ilgą laiką.
Jie niekada sakė, kas ilgą laiką was-- aštuonias valandas, 10 valandų, 1000 val.
Niekas nežinojo.
>> -The Patriot "baterija dislokuota kareivinėse
ne Dhahran ir jos trūkumų vidaus laikrodis Buvo daugiau nei 100 valandų
dėl vasario 25 naktį.
>> -Tai Stebimi laiko tikslumu apie sekundės dešimtoji.
Dabar, per sekundės dešimtoji yra įdomi numeris
nes ji negali būti išreikšta dvejetainiu tiksliai, kuris
išteklius ji negali būti išreikšta tiksliai į bet kurios šiuolaikinės skaitmeninio kompiuterio.
Sunku tikėti.
>> Bet tai naudoti kaip pavyzdys.
Paimkime skaičių trečdalį.
Trečdalis negali būti išreikštas dešimtaine tiksliai.
Trečdalis yra 0,333 vyksta už begalybę.
>> Nėra jokio būdo, kaip tai padaryti su absoliutus tikslumas po kablelio.
Štai tiksliai tokios problemos kad atsitiko Patriot.
Kuo ilgiau sistema bėgo, The blogiau tapo laikas klaida.
>> -Po 100 valandų operaciją, klaida metu buvo tik apie trečdalis
sekundės.
Bet kalbant apie skirtomis raketa keliaujant mach 5
ji lėmė sekimo paklaida daugiau nei 600 metrų.
Būtų lemtinga klaida kariams apie tai, ką
atsitiko yra Skadi paleidimas buvo aptikta išankstinio perspėjimo palydovai
ir jie žinojo, kad Skadi buvo ateina jų bendrą kryptį.
Jie nežinojo, kur ji atėjo.
>> -Tai Buvo dabar iki radaro komponentas Patriot sistemos
ginti Dhahranas surasti ir išlaikyti kelio nuo gaunamus priešų raketos.
>> -The Radaras buvo labai protingas.
Tai iš tikrųjų būtų sekti Iš Skadi pozicija,
ir tada numatyti, kur jis tikriausiai būtų kitą kartą radaro siunčiami
impulsas iš.
Tai buvo vadinama asortimentas vartai.
>> -Tada, Kai į "Patriot" nusprendžia pakankamai laiko turi
praėjo grįžti ir patikrinti kitą vieta šio aptikto objekto,
jis eina atgal.
Taigi, kai jis grįžo į tą vieta, tai tada nemato objektą.
Ir ji nusprendžia, kad nebuvo objektas, tai buvo klaidinga aptikimo,
ir lašai takelį.
>> -The Priimamojo Skadi dingo iš radaro ekrano.
vėliau ir sekundes, ją pateko į kareivines.
Skadi žuvo 28 ir buvo paskutinis viena kūrenama per pirmąjį Persijos įlankos karą.
>> Tragiška, atnaujinta programinė įranga atvyko Dhahran kitą dieną.
Programinė įranga škvalas turėjo buvo fiksuota, uždarymas
vienas skyrius neramus istorija Patriot raketos.
>> [Vaizdo įrašų atkuriamų]
David J. Malan: Taigi visa tai, kad pasakyti, kad šių perpildymo problemas
ir visi netikslumai yra labai reali.
Taigi, kaip mes ten patekome?
Mes pradėjome su tik kalbame apie printf.
Vėlgi, tai funkcija, kuri spausdina kažką ekrane,
ir mes po to pristatė keletas kitų funkcijų
iš vadinamojo CS50 bibliotekoje.
Ir mes toliau pamatyti tai laiku.
Ir mes, ypač, naudojamas get eilutę, ir gauti int, ir dabar taip pat gauti plūdę,
ir dar kiti vis dar susiduriame su ir naudoti save prieš ilgas.
>> Bet kartais turi mes jau matėme, kad reikia
saugoti, kas tas funkcijas ranka atgal?
Jie perduoti mums atgal eilutę, arba LC, arba flotacinio.
Ir kartais mums reikia įdėti, kad eilutė, ar INT, ar plūdė, kažkur.
>> Ir saugoti tuos dalykus, prisiminti tik kaip ir nulio ", mes turime kintamuosius.
Tačiau skirtingai nei nulio, C turime faktinius tipai
iš variables-- duomenų tipai, daugiau generally--
tarp jų eilutė, int A plūduriuoti, ir šie kiti dar.
>> Ir todėl, kai mes pareiškiame kintamuosius C, mes turime pripažinti mūsų duomenų tipus.
Tai nėra kažkas, mes daryti vėliau semestro
kaip mes pereiti į kitas kalbas.
Bet dabar, mes turime į iš anksto priori
paaiškinti prie kompiuterio, kokio tipo kintamojo mes norime, kad ji mums duoda.
>> Dabar, tuo tarpu, spausdinti tie rūšių duomenų tipų,
mes turime pasakyti printf, ko tikėtis.
Ir mes matėme proc s stygos, ir procentai I sveikieji skaičiai,
ir keli kiti jau.
Ir tie, kurie paprasčiausiai reikalavimai už vizualinio pateikimo
tos informacijos.
>> Ir kiekvienas iš jų gali būti iš tiesų Parametrizuotieji arba nežymiai tam tikru būdu,
jei norite toliau kontroliuoti produkcijos tipą, kuris jums.
Ir, iš tiesų, paaiškėja, kad ne tik yra ten Backslash N naują eilutę.
Yra kažkas pavadino Backslash R už vežimo grįžti, kuris
yra labiau panašus į senosios mokyklos rašomųjų mašinėlių,
ir taip pat langai naudojamas daugelį metų.
>> Yra Backslash t skirtukus.
Pasirodo, kad jei norite, kad dvigubas citata viduje eilutę,
Prisiminkite, kad mes naudojamas dvigubas citata dvigubai
citata kairėje ir dešinėje baigiasi mūsų stygas iki šiol.
Tai, atrodo, painioja dalykus.
>> Jei norite įdėti dvigubą citata iš administracine arba string-- ir, tiesą sakant viduryje,
tai paini pamatyti.
Ir todėl jūs turite pabėgti, taip sakant, dvigubos kabutės su kažkuo
patinka, tiesiog, backslash dvigubos kabutės.
Ir yra keletas kitų dar.
Ir mes pamatysime daugiau tų faktinio naudojimo prieš ilgas.
>> Taigi leiskite dabar pereiti nuo duomenys, ir atstovavimas,
ir aritmetines operacijas, visa kurios davė mums šiek tiek pastatą
blokai, su kuriomis groti.
Bet dabar tegul iš tikrųjų duoti mums žodyno poilsio
kad mes jau Praėjusią savaitę su Scratch
imant pažvelgti kita stato į C-- ne visi iš jų.
Tačiau idėjos mes Apie pamatyti tikrai tik
pabrėžti vertimą iš viena kalba, įbrėžimams, į kitą C.
>> Ir laikui bėgant, mes pasiimti daugiau įrankių mūsų priemonių rinkinį,
taip sakant, sintaksiškai.
Ir, tiesą sakant, jūs pamatysite, kad idėjos dabar yra gana pažįstamas iš praeitą savaitę.
Taigi leiskite tai padaryti.
>> Vykime į priekį ir pakelti programą kad iš tikrųjų naudoja kai išraiškas,
Būlio išraiška.
Leiskite man eiti į priekį čia ir sukurti naują failą.
Aš tai vadina condition.c.
>> Leiskite man eiti į priekį ir įtraukti CS50 biblioteką.
Ir leiskite man eiti į priekį ir taip pat standartinis IO.h mūsų funkcijų,
ir printf, ir daugiau atitinkamai.
Leiskite man duoti sau, kad Standartiniai int main negaliojančiu, kurio paaiškinimas mes
grįžti į ateityje.
>> Dabar leiskite man eiti į priekį ir suteikti aš int per get tarpt.
Tada leiskite man eiti į priekį ir tai padaryti.
Aš noriu pasakyti, jei i less-- tegul atskirti teigiamas, neigiamas,
arba nulines vertes.
>> Taigi, jei i yra mažiau nei nulis, leiskite man tiesiog ši programa tiesiog pasakyti,
neigiamas, Backslash N, kita jei i yra didesnis už nulį.
Dabar aš, žinoma, ketina pasakyti printf teigiamą, backslash n.
Ir tada dar if-- galėčiau tai padaryti.
>> Aš galėčiau padaryti, jei aš lygus 0.
Bet aš būčiau priėmimo metu bent vienas jau klaida.
Prisiminkite, kad lygybės ženklas yra nėra lygūs, nes mes, žmonės jį žinome.
>> Bet tai perleidimas operatorius.
Ir mes nenorime imtis 0 Į teisė ir įdėti jį į i kairėje.
Taigi, norint išvengti šios painiavos, arba gal netinkamas lygybės ženklą,
žmonės nusprendė prieš keletą metų kad daugeliu programavimo kalbų
kai norite patikrinti lygybės tarp kairės ir dešinės,
jūs iš tikrųjų naudoti lygus lygių.
Taigi jūs nukentėjo lygybės ženklą du kartus.
Kai norite priskirti iš dešinės į kairę, naudokite vieną lygybės ženklą.
Taigi, mes galime padaryti this-- kitur jei aš lygus lygus nuliui.
>> tada galėčiau eiti ir atidaryti savo garbanotas petnešos,
ir pasakyti, printf 0, Backslash n padaryta.
Bet atsiminkite, kaip jie šakės kelyje gali dirbti.
Ir, tikrai, tiesiog galvoti apie logika.
i yra skaičius.
Tai sveikas, specialiai.
Ir tai reiškia, kad jis bus mažiau už 0 arba didesnė už 0, arba 0.
Taigi yra natūra tai numanoma numatytąją atveju.
>> Ir taip galėtume, kaip ir Įbrėžimams, apsieiti su kita, jei
ir tiesiog pasakyti kitur.
Logiškai mąstant, jei Jums programuotojas žino, yra tik
trys kibirai, į kurią scenarijus fall-- pirmas,
antra, ar trečioji šiame case-- ne
vargintis pridedant papildomą tikslumą ir papildomas logika ten.
Tiesiog eiti į priekį su Numatytasis atveju iš kitur.
>> Dabar galime eiti į priekį Įrašę šią, kad
sąlygos dot velniop conditions-- nėra labai vartotojo sąsaja,
nes aš nesu paskatino vartotojas, kaip jau minėjau anksčiau.
Bet tai gerai.
Mes keep it simple.
Pabandykime skaičių 42.
Ir tai teigiamas.
Pabandykime numerį neigiamas 42, neigiamas.
>> Pabandykime vertę 0.
Ir, iš tiesų, ji veikia.
Dabar, pamatysite su problemomis prieš ilgio, testavimo dalykų tris kartus,
tikriausiai nepakanka.
Jūs tikriausiai norite išbandyti kai Didesnės numeriai, kai mažesni
numeriai, kai kampiniai atvejais, mes ateiti į juos apibūdinti.
>> Bet dabar, tai yra gana paprasta programa.
Ir aš esu gana įsitikinęs, logiškai, kad jis patenka į tris atvejus.
Ir iš tiesų, nors mes tiesiog orientuota į potencialius praradimas
netikslumu ir perpildymo, į Realybė kur daugelis CS50 problemas,
mes neketiname jaudintis apie, visą laiką,
tie perpildymo problemos ir netikslumas, nes, iš tiesų, C,
tai tikrai ne viskas, kad lengva išvengti šių dalykų.
Jei norite suskaičiuoti iki didesnis ir didesnis, ir daugiau,
paaiškėja, yra būdų jums galima naudoti, dažnai įtraukiant dalykus, vadinamus
bibliotekos, kolekcijos kodą, kad kiti žmonės rašė, kad galite naudoti,
ir kitomis kalbomis, pavyzdžiui, Java ir kiti, iš tikrųjų
padaryti daug lengviau skaičiuoti dar didesnis.
Taigi ji tikrai yra kai kurie iš šių pavojų iš naudojamą kalbą funkcija.
Ir per ateinančias savaites, mes pamatyti, kaip pavojingą C tikrai
gali būti, jei nenorite naudoti tinkamai.
Bet iš ten, ir su Python ir "JavaScript", bus
mes sluoksnis keletą papildomų apsaugų, ir paleisti mažiau iš tų pavojų.
>> Taigi padarykime šiek tiek daugiau įdomus logika mūsų programoje.
Taigi leiskite man eiti į priekį ir kurti programa, vadinama Loginiai
tiesiog, kad aš galiu žaisti su kai Tikrasis logika, logical.c.
Aš tiesiog nukopijuokite ir įklijuokite kai Kodas iš anksčiau, kad aš grįšiu
į šį gražus atspirties taškas.
>> Leiskite man šį kartą padaryti char C. Aš tikiu ketina suteikti jai iš C vardą
tik todėl, kad tradicinių, gauti simbolį iš vartotojo.
Ir tegul apsimeta kaip Aš įgyvendinimo dalis
tos Rm programa, pašalinti programa prieš tai paskatino vartotoją
pašalinti failą.
Kaip mes galime tai padaryti?
>> Aš noriu pasakyti, jei C yra lygi lygus, citata citatos pabaiga,
Y, tada aš ruošiuosi daryti prielaidą, kad vartotojas pasirinko taip.
Aš tik ketina spausdinti taip.
Jei jis iš tikrųjų buvo raštu pašalinimo programa,
galėtume pašalinti failą daugiau eilučių kodo.
Bet mes keep it simple.
>> Else if c lygu lygu n-- o dabar čia, aš ruošiuosi pasakyti,
vartotojas turi reiškė, Nr.
Ir tada kitas, žinote ką?
Aš nežinau, ką dar vartotojas ketina įvesti.
Taigi, aš tiesiog norėčiau pasakyti, kad kad yra klaida, nepriklausomai
jis ar ji iš tikrųjų įvedėte.
>> Taigi, kas čia vyksta?
Yra esminis skirtumas palyginti, ką aš padariau praeityje.
Dvigubas kabutes, kabutes, dvigubas citatos, ir dar, Viengubomis kabutėmis,
Viengubomis kabutėmis.
Pasirodo, C, kad kai norite parašyti eilutę,
jums naudoti kabutes, kaip mes naudoju visą šį laiką su printf.
>> Bet jei norite susidoroti su tik vienas simbolis, vadinamasis simbolis,
tada jūs iš tikrųjų naudoti kabutes.
Tie iš jūsų, kurie jau užprogramuotas anksčiau, galbūt ne
turėjo jaudintis atskirti tam tikromis kalbomis.
C, ji dalykas.
Ir todėl, kai aš gauti char ir aš noriu palyginti, kad char naudojant lygu
lygus Some Like Y arba N raide, aš, Iš tiesų, reikia turėti Viengubomis kabutėmis.
>> Dabar galime eiti į priekį ir tai padaryti.
Vykime į priekį ir padarysiu loginiai taškas velniop logiška.
Ir dabar aš raginami.
Taigi, matyt, geriau naudoti patirtis iš tikrųjų man pasakyti, ką daryti čia.
Bet aš ruošiuosi tik aklai pasakyti Y taip, gerai, gražus.
>> Leiskite paleisti jį iš naujo, n ne, gražus.
Tarkime, pavyzdžiui, tam tikrų žmonių, aš žinau, mano kepurės lock yra pernelyg dažnai.
Taigi darau kapitalo Y atvykti, klaidą.
Gerai, tai ne ką aš laukiu.
Iš tiesų, kompiuteris daro pažodžiui, ką
Pasakiau jai do-- patikrinti mažosiomis raidėmis y ir mažosiomis raidėmis N.
Tai neturi jaustis kaip gera vartotojo patirtį, nors.
Leiskite paklausti, ir priimti arba mažosiomis raidėmis, arba didžiosios.
Taigi paaiškėja, galbūt norėsite pasakyti kažką panašaus į nulio,
kaip pažodžiui arba C lygu lygus kapitalo vieną cituojamą m.
Pasirodo, C neturi tai pažodinis reikšminį žodį arba.
>> Bet ji turi du vertikalūs stulpeliai.
Turite turėti Shift paprastai, jei jūs naudojate JAV klaviatūra,
ir paspauskite vertikalią juostą raktas aukščiau grąžą raktu.
Bet tai vertikali juosta vertikali juosta reiškia, arba.
>> Jei, priešingai, norėjome pasakyti ir, kaip ir nulio,
mes galime padaryti ampersendo konjunkcijos.
Tai daro ne logine prasme čia nes žmogus negalėjo
įvedėte tiek y ir mažosiomis raidėmis Y ir kapitalo Metai kaip to paties pobūdžio.
Taigi ar tai, ką mes ketiname čia.
>> Taigi, jei aš tai padaryti abiejose vietose arba C lygi lygu kapitalo N dabar pakartotas,
markę logiška, pakartotas logiška.
Dabar galiu įrašyti m.
Ir aš galiu tai padaryti dar kartą su kapitalo Y arba kapitalo N.
Ir galėčiau pridėti papildomas deriniai ramiai.
>> Taigi tai yra logiška programa, kiek dabar
Aš patikrinti logiškai už ši vertė arba ši vertė.
Ir aš neturiu, būtinai sugalvoti dar du IF arba dar IFS.
Aš iš tikrųjų galite sujungti kai kurie iš susijusios logika kartu tokiu būdu.
Taigi tai būtų geresnis sukurta nei tiesiog
sakydamas: Jei c yra lygus mažąją y, spausdinti taip, kitur Jei c yra lygus kapitalo Y,
spausdinti taip, kitur Jei c yra lygus lower-- kitaip tariant,
Jums nereikia turėti vis daugiau ir daugiau šakų.
Galite derinti kai kurių lygiavertis filialai Logiškai mąstant, kaip šiuo būdu.
>> Taigi leiskite pažvelgti tik vienas galutinis komponentas, vienas galutinis konstruktas,
kad C leidžia.
Ir mes grįžti į ateitis kiti vis dar.
Ir tada mes sudaryti, žiūrėdamas ne ne su code-- teisingumą
gauti kodą work-- bet dizainas kodo ir pasodinsi tas sėklas anksti.
>> Taigi leiskite man eiti į priekį ir atverti naują failą čia.
Zinai ka?
Aš ruošiuosi vėl įgyvendinti kad pati programa,
tačiau naudojant kitą konstruktą.
>> Taigi leiskite man greitai duoti save prieiga įtraukti CS50.h
už CS50 bibliotekoje, standartinis Io.h už printf.
Duok man mano int main negaliojančiu.
Ir tada per čia, leiskite man eiti į priekį ir tai padaryti.
>> Char c gauna gauti char, kaip anksčiau.
Ir aš ruošiuosi naudoti naują konstruktą now-- pereiti, kokiu charakterio?
Taigi jungiklis yra lyg perjungimo traukinio takelius.
Arba, iš tikrųjų, ji yra rūšies IF kitur, jei kitur, jei
bet parašyta šiek tiek kitaip.
>> Jungiklis atrodo taip.
Jūs turite pereiti, o kas tada raidės arba skaitmens norite ieškoti,
tada kai garbanotas petnešos patinka Nulio, tik pasakyti tai padaryti stuff.
Ir tada jūs turite skirtingus atvejus.
>> Jūs negalite naudoti ar ir kitur.
Jūs tiesiog naudoti žodį bylą.
Ir jūs sakyčiau kažką panašaus į tai.
>> Taigi į mažosiomis y atveju arba kapitalo Y atveju
eiti į priekį ir atsispausdinti Taip.
Ir tada išeiti iš jungiklio.
Viskas.
Mes padaryti.
>> Else if, taip sakant, mažesnis Byla N arba kapitalo N
tada eiti į priekį ir spausdinti iš ne, ir tada pertrauka.
Else-- ir šios rūšies yra Numatytasis atveju indeed-- printf error--
ir tiesiog gera priemonė, nors Logiškai mąstant, tai pertrauka nebūtina
nes mes pabaigoje jungiklio bet kokiu atveju,
Aš dabar išeities iš jungiklio.
Taigi, tai atrodo šiek tiek kitokia.
>> Bet, logiškai, tai tikrai lygiaverčiai.
Ir kodėl gi jūs naudojate vienas per kitą?
Kartais, tiesiog asmeninio skonio, kartais estetika,
jei aš pažiūrėjus į tai dabar yra kažkas
galima pasakyti, kad skaitomumas šį kodą.
Aš turiu galvoje, niekada omenyje tai, kad ši kodas yra nauja daugelis iš mūsų į kambarį.
>> Bet tai tiesiog rūšies yra gana.
Jūs matote mažosiomis raidėmis y kapitalo Y, mažoji n kapitalo N. nutylėjimą,
tai tiesiog rūšies šuoliai į tave taip,
kad, be abejo, gal ankstesnis pavyzdys
su IFS, ir vertikalių strypų, ir kitur IFS, gali neturėti.
Taigi tai tikrai priklauso nuo asmeninio nesvarbu pasirinkimas, tikrai, ar skaitomumas,
kodo.
>> Bet kalbant apie funkcionalumą, leiskite man eiti į priekį ir padaryti jungiklis, dot velniop
jungiklis, o dabar tipo mažosiomis y, kapitalo Y mažosios n kapitalo N
Dovydas bandykite dar kartą, nes tai ne vienas simbolis.
Darom x, klaidą, kaip ir tikėtasi.
Ir logically-- ir tai yra kažkas Norėčiau paskatinti į general-- net
nors mes tik įbrėžimas paviršius kai kurie iš šių funkcijų.
>> Ir tai gali būti ne akivaizdu, kai jums Būk susėsti prie klaviatūros,
Kaip tai veikia?
Ką tai daryti?
Gražus dalykas, apie kurių nešiojamas ar stalinis, ar prieigos
prie kompiuterio su kompiliatorių, ir su kodiniu redaktorius panašaus į tai,
yra galima beveik visada atsakyti į šiuos Klausimai sau, tiesiog bando.
>> Pavyzdžiui, jei retorinis klausimas po ranka buvo,
kas atsitiks, jei pamiršti Jūsų pertrauka teiginiais?
Kuris iš tiesų yra labai dažnas dalykas daryti,
nes ji neatrodo kaip jūs tikrai jų reikia.
Jie tikrai ne baigti savo maniau kaip skliaustuose ar garbanotieji
įtvaras veikia.
Vykime į priekį ir perkompiliuoti kodą ir pamatyti.
Todėl įsitikinkite, jungiklis, taškas velniop jungiklį.
Leiskite įvesti mažosiomis raidėmis y top atveju Enter.
Taigi, aš įvedėte m.
>> Programa pasakė "taip, ne, klaida, taip, tarsi tai buvo keisti savo mintis.
Bet tai kokios buvo, nes tai, kas vyksta su jungikliu yra pirmas atvejis, kad
Rungtynės iš esmės reiškia, ei kompiuteris, vykdyti visų kodą po juo.
Ir jei jūs neturite pasakyti pertrauka, arba nesakau pertrauką, arba nesakyk pertraukos,
kompiuteris ketina smūgis per visus tuos linijų
ir vykdyti juos visus, kol jis gauna tai garbanotais petnešomis.
Taigi stabdžiai, iš tiesų, reikia.
Bet Takeaway čia yra, kai abejojate, pabandykite kažką.
Gal išsaugoti savo kodą, pirma, arba išsaugokite jį papildomą failą
Jei esate tikrai susirūpinęs Messing ir turintys susigrąžinti
darbas, kurį jūs žinote, yra darbo.
>> Bet pabandykite dalykų.
Ir nereikia būti bijo, ko gero, ką kompiuteris gali padaryti,
arba, kad jums gali sulaužyti kažką.
Jūs visada galite grįžti atgal tam tikru ankstesnę versiją.
>> Tad pabaigoje, žiūrėdamas tuo kodo dizainą.
Mes turime šį gebėjimą dabar rašyti sąlygos, ir rašyti kilpos,
ir kintamieji, ir skambučių funkcijos.
Taigi, tiesą sakant, mes rūšies atgal kur buvome prieš savaitę su nulio,
nors ir su mažiau įtikinamų tekstinės aplinka nei nulio leidžia.
>> Tačiau pastebėti, kaip greitai mes įsigijo kad Žodynas, net jei tai
ketina imtis šiek tiek laiko kriaukle, taip, kad dabar mes galime naudoti šį žodyną
rašyti daugiau įdomių programų.
Ir tegul kūdikio žingsnis link, kad, kaip nurodyta toliau.
Leiskite man eiti į priekį ir sukurti naują failą čia.
>> Aš ruošiuosi skambinti šiuo prototype.c ir pristatyti
pirmą kartą, gebėjimas padaryti savo funkcijas.
Kai kurie iš jūsų gali turėti padaryta tai su nulio,
kuriuo galite sukurti jūsų individualizuotos blokų nulio,
ir tada vilkite juos į vietą kur norėtumėte C
Ir daugumoje programavimo kalbos, tai galite padaryti būtent
that-- padaryti savo funkcijas, jei jie dar nėra.
>> Taigi, pavyzdžiui, leiskite man eiti į priekį ir apima CS50.h, ir apima
standartinis IO.h, int main negaliojančiu.
Ir dabar mes turime rezervuotos vietos pasiruošę eiti.
Aš nuolat spausdinimo dalykus kaip žmonių vardais šiandien.
Ir tai jaučiasi like-- nebūtų malonu, jei ten
buvo funkcija vadinama Spausdinti vardas?
Aš neturiu naudoti printf.
Aš neturiu prisiminti visi formato kodai.
Kodėl ne aš, arba kodėl nebuvo ką nors prieš mane,
sukurti funkciją vadinama Spausdinti vardas, kad suteikta tam tikra vardą,
tiesiog spausdina jį?
>> Kitaip tariant, jei aš sakau, ei, kompiuteris, duok man eilutę
klausia vartotoją, pavyzdžiui, per CS50 get styginių funkcija.
Ei, kompiuteris, padėkite tą eilutę kairiojoje pusėje kintamasis,
ir vadina tai ai.
Ir tada, ei kompiuteris, eiti į priekį ir spausdinti, kad asmens vardas, padaryta.
>> Dabar, tai būtų malonu, nes Ši programa, taikliai pavadinta,
man sako, ką jis turėtų daryti būdu šiuos funkcinius vardų.
Leiskite man eiti ir padaryti prototipą, "Enter".
Ir, deja, tai nesiruošia skristi.
>> Prototype.c, linija 7, charakteris 5, klaida, numanomas pareiškimas
Funkcijų spausdinimo pavadinimas negalioja C99, C99
reiškia iš C versiją kad išėjo 1999 m.
Tai viskas.
>> Taigi, aš nežinau, ką Visa tai reiškia, dar.
Bet aš pripažinti klaidą raudonai.
Tai gana akivaizdu.
>> Ir atrodo, kad su žalia charakteris čia
klausimas yra su spausdinimo vardu, atvira paren S, artimi paren, kabliataškis.
Tačiau numanomas deklaracija funkcija mes padarėme trumpai anksčiau pamatyti.
Tai reiškia, kad tiesiog, kad klingsėti nežino, ką turiu galvoje.
>> Aš naudojau žodyną žodį, kad tai niekada arba buvo mokoma anksčiau.
Ir todėl man reikia mokyti jį ką ši funkcija reiškia.
Taigi, aš ruošiuosi eiti į priekį ir daryti.
>> Aš ruošiuosi eiti į priekį ir įgyvendinti mano paties funkcija vadinama Spausdinti vardas.
Ir aš ruošiuosi pasakyti, taip, kad Jis tai daro, printf, hello, proc
ai, Backslash N, vardas, kabliataškis.
Taigi, ką aš tiesiog padaryti?
>> Taigi paaiškėja, kad įgyvendinti savo funkciją,
mes rūšies skolintis kai tos pačios struktūros, kaip pagrindinis
kad mes ką tik buvo savaime suprantamu dalyku, o aš
žinau tik kopijavimo ir įdėjimą gana daug, ką
Aš rašyti praeityje.
Bet pastebėsite modelis čia.
Žiniasklaida, Maino, atkrenta, mes erzinti išskyrus prieš ilgas, ką tai iš tikrųjų reiškia.
>> Tačiau šiandien, tiesiog pastebėti paralelių.
Atkrenta, spausdinti vardas string vardas, todėl nėra
raudonos raktažodis, kuris mes ketiname pradėti
paskambinę grąžinimo rūšį, pavadinimą funkcija, ir tada įvesties.
Taigi, iš tikrųjų, mes galime distiliuoti tai tipo kaip paskutinę savaitę
kaip, tai yra pavadinimas arba algoritmas kodas einame
ketina write-- algoritmas pagrindinės
kodas mes ketiname rašyti.
>> Tai jo indėlis.
Tai jos produkcija.
Ši funkcija, spausdinti pavadinimas, yra sukurtas užtrukti eilutę, pavadintą vardas
ar kas, kaip pirkimo, tada negaliojančiu.
Tai negrąžina nieko, kaip gauti eilutę arba gauti int daro.
Taigi jis ketina perduoti man kažką atgal.
Tai tiesiog teks šalutinis poveikis, taip sakant,
spausdinti asmens vardą.
Taigi pastebėti, linija 7, aš galite skambinti spausdinimo vardą.
10 linija, galiu apibrėžti arba įgyvendinti spausdinimo vardą.
Bet, deja, tai nėra pakankamai.
>> Leiskite man eiti į priekį ir perkompiliuoti tai po taupymas.
Oho, dabar, aš padariau tai Blogiau, atrodytų.
Taigi numanoma deklaracija funkcija spausdinti pavadinimas yra neteisingas.
Ir, vėlgi, ten daugiau klaidų.
Bet kaip aš įspėjo anksčiau, net Jei gauti užvaldo su,
arba šiek tiek liūdna matyti tiek daug klaidų, sutelkti dėmesį tik į pirmą
iš pradžių, nes tai gali būti tiesiog turėjo domino efektą.
Taigi C arba žvangėjimas konkrečiau, dar neatpažįsta spausdintuvo pavadinimą.
>> Ir tai todėl, kad klingsėti, konstrukcijos, yra natūra kvailas.
Ji tik ką galite pasakyti daryti.
Ir tai daro tik todėl tvarka kurioje galite pasakyti tai daryti.
>> Taigi aš apibrėžta pagrindinė on-line keturių, kaip mes darome gana dažnai.
Aš apibrėžta spausdinimo vardą on-line 10 d.
Bet aš stengiuosi naudoti Spausdinti vardas on-line septyni.
>> Tai per anksti, dar neegzistuoja.
Taigi, aš gali būti protingas, ir būti kaip, Gerai, kad tegul tiesiog žaisti kartu,
ir perkelti spausdinimo vardą iki čia, ir iš naujo kompiliuoti.
O Dieve.
Pavyko.
Tai buvo taip paprasta, kaip kad.
>> Tačiau logika yra būtent tai.
Jūs turite mokyti žvangėjimas, kur yra apibrėžiant funkciją pirmas.
Tada galite jį naudoti.
Bet, tiesą sakant, tai jaučiasi kaip slidaus šlaito.
>> Taigi kiekvieną kartą, kai aš paleisti į problemą, aš tiesiog
ketina pabrėžti ir nukopijuokite kodą Parašiau, nukopijuokite jį ir įklijuokite jį čia.
Ir, be abejo, mes galime Sugalvoti kai scenarijus
kur viena funkcija galėtų reikia paskambinti kitą.
Ir jūs tiesiog negalite įdėti kiekvieną funkcija virš visos kitos.
>> Taigi paaiškėja, ten geresnis sprendimas.
Galime palikti tai bus.
Ir, tiesą sakant, tai paprastai gražus, ir patogu, ir geras dizainas
įdėti pagrindinė sritis, nes, vėlgi, Pagrindinis tiesiog patinka, kai žalia vėliava paspaudėte,
kad yra funkcija, kuri paleidžiama vykdyti pagal nutylėjimą.
Taigi jūs galite taip pat įdėti ji tuo failo viršuje
taip, kad, kai jūs ar Kiti žmogiškieji žiūri į failą
žinote, kas vyksta tiesiog skaitant pagrindinė pirmas.
Taigi paaiškėja, mes galime pasakyti, žvangėjimas aktyviai, ei, klingsėti, on-line keturių,
Pažadu įgyvendinti funkcija vadinama Spausdinti
Vardas kad mano string vadinamas vardą kaip indėlį ir grąžina nieko, tuštuma.
Ir aš gausiu aplink ją įgyvendinant vėliau.
>> Čia ateina Main.
Pagrindinė dabar on line 9, galite naudoti Spausdinti pavadinimą, nes klingsėti
yra pasitikėti, kad galiausiai jis iškils apibrėžimo
apie Spausdinti pavadinimas įgyvendinimą.
Taigi, po išgelbėdamas mano bylą, tegul man eiti į priekį ir padaryti prototipą,
gera šį kartą atrodo.
Dot velniop, prototipas, leiskite man eiti į priekį ir įveskite pavadinimą.
Dovydas Sveiki Dovydas Zamila, labas Zamila, ir, tiesą sakant, dabar ji veikia.
>> Taigi čia ingredientas yra tai, kad mes padarė užsakymą funkciją, kaip papročio
Įbrėžimams blokas mes vadiname tai.
Tačiau skirtingai nuo nulio, kur Jūs galite tiesiog sukurti ir pradėti jį naudoti,
dabar turime būti šiek tiek daugiau pedantiškas,
ir iš tikrųjų mokyti žvangėjimas naudoti, arba jį tikėtis.
Dabar, kaip panaikinti, kodėl visą tą laiką turi mes buvo tiesiog aklai tikėjimu, įskaitant
CS50.h, įskaitant standartinio IO.h?
>> Na, it turns out, tarp kelių kitų dalykų,
visi tai tose dot h failus, kurie atsitiktų būti failus.
Jie header failus, taip sakant.
Jie vis dar parašyta C Bet jie skirtingo tipo failą.
>> Nes dabar, jums gana daug galima daryti prielaidą, kad viskas, kas yra viduje CS50.h
yra keletas vienas ūdomis žvejojantys laivai kaip šis, ne funkcijas, vadinamas Spausdinti vardas,
bet Gauk String, gauti Plūdės, ir keletas kitų.
Ir yra panašūs prototipai, vienas įdėklai, viduje standartinio IO.h
už printf, kuris dabar yra mano paties Spausdinti vardas funkcija.
Taigi, kitaip tariant, visas šis laikas mes tik buvo aklai kopijuodami
įtraukti tai, apima tai, kas vyksta?
Tai yra tik rūšies įkalčiais į žvangėjimas, ką funkcijų
yra, iš tiesų, įgyvendino tik kitur skirtingus failus
kitur sistemoje.
>> Taigi, mes įdiegėme spausdinimo vardą.
Ji turi šį šalutinį poveikį spausdinti kažką ekrane.
Bet tai iš tikrųjų nėra ranka man kažką atgal.
Kaip mes eiti apie Įgyvendinant programą, kuri
ar ranka man ką nors atgal?
>> Na, pabandykime tai.
Leiskite man eiti į priekį ir įgyvendinti failas vadinamas return.c
kad galėtume parodyti, kaip kažką kaip gauti eilutę, arba gauti Int,
yra iš tikrųjų grįžta kažką atgal vartotojui.
Vykime į priekį ir nustatyti int main negaliojančiu.
>> Ir vėl, ir ateityje, mes paaiškinti, kas tai int ir kad tuščia
yra iš tikrųjų daro.
Bet šiandien mes laikyti savaime suprantamu dalyku.
Aš ruošiuosi eiti į priekį ir printf, už gerą vartotojo patirtį, x yra.
Ir tada aš ruošiuosi laukti vartotojui duoti man x su get tarpt.
>> Ir tada aš ruošiuosi eiti į priekį ir atsispausdinti X aikštėje.
Taigi, kai jūs turite tik klaviatūra, žmonės paplitusios
naudoti tiek morkų Simbolis ant klaviatūros
atstovauti į valdžią d arba eksponentė.
Taigi x kvadratu yra dovana, kurią aš.
>> Ir dabar aš ruošiuosi tai padaryti.
Galėčiau tik do-- kas x kvadrato? x kvadratu yra X kartų x.
>> Ir mes tai padarė kai prieš laikas jau šiandien.
Tai neturi jaustis kaip visi, kad daug pažangos.
Zinai ka?
Leiskite sverto kai tos idėjos nuo paskutinio karto abstrakcijos.
>> Ar nebūtų puiku, jei ten yra funkcija vadinama
kvadratinių, kad būtent tai?
Jis vis dar tuo galutinio dieną, daro tą matematiką.
Bet tegul abstraktūs atstumu nuo priėmimo idėja
vienas skaičius, padaugintas iš kitą, ir tiesiog suteikti jai pavadinimą,
kaip aikštė šią vertę.
>> Ir, kitaip tariant, C kurkime funkcija
vadinama aikštė kad daro būtent tai.
Jis bus vadinamas kv.
Ji ketina imtis int.
Ir mes tiesiog jį vadiname n pagal nutylėjimą.
>> Tačiau mes galime jį vadinti ką mes norime.
Ir visa tai jis ketina padaryti, tiesiog, yra grąža
n kartų n rezultatas.
Bet kadangi ji yra grįžti kažką, kuris
yra purpuru mes raktažodžių niekada anksčiau, aš, on-line 11
negali tiesiog pasakyti negaliojančiu šį kartą.
>> Atkrenta, pavyzdyje mes tik pamačiau o iš spausdinimo vardu, tiesiog reiškia,
kažką daryti.
Tačiau nereikia ranka man kažką atgal.
Šiuo atveju, aš noriu grįžti n kartų n
ar kas tai yra, kad skaičius.
>> Taigi, aš negaliu pasakyti, ei, kompiuteris, Grįšiu nieko, tuščia.
Jis ketina grįžti iš prigimties, int.
Ir taip, kad viskas, kas vyksta čia.
>> Įvesties kvadratinių bus int.
Ir, kad galėtume jį naudoti, ji turi turėti pavadinimą N. Ji ketina produkcijos
int, kad nereikia vardą.
Galime palikti pagrindinė, ar kas yra naudojant mane prisiminti šią vertę, jei mes
nori su savo kintamasis.
>> Ir, vėlgi, vienintelis naujas raktažodžių čia yra grąžinimas.
Ir aš tiesiog daro kai matematiką.
Jei aš tikrai norėjau būti nereikalingas, Galėčiau pasakyti, INT Produktui patekus n kartų n.
>> Ir tada galėčiau pasakyti, grąžinti produktą.
Bet vėl gi, mano taško ankstesnė tai tik nėra geras design--
kaip, kodėl įvesti vardą, simbolis, kaip ir produktas,
tiesiog iš karto ją grąžinti?
Tai šiek tiek švaresnis, šiek tiek griežtesnė, todėl
kalbėti, tiesiog pasakyti grąža n kartų n atsikratyti šios linijos apskritai.
>> Ir tai tik mažiau kodas skaityti, mažiau galimybė klaidų.
Ir pažiūrėkime, jei tai realiai dabar dirba.
Dabar aš ruošiuosi eiti į priekį ir padaryti grąžinimą.
>> Uh-oh, numanoma deklaracija funkcija.
Aš padariau šią klaidą anksčiau, ne big deal.
Leiskite tiesiog įveskite arba pažymėkite ir kopijuoti, lygiai toks pats funkcija prototipas,
arba parašas, iš funkcijos čia.
Arba galėčiau judėti visą funkciją.
>> Bet tai šiek tiek tingus.
Taigi, mes to nedarys.
Dabar leiskite man padaryti grąžinimą vėl dot velniop grąžą.
>> x yra 2 x kvadratu yra 4. x yra 3 x kvadratu yra 9.
Ir ši funkcija atrodo dabar, kad reikia dirbti.
Taigi koks skirtumas čia?
Turiu funkciją, kuri vadinama aikštė, šiuo atveju, kurį aš įdėti į vieną iš įvesties duomenų.
Ir aš grįšiu išėjimą.
Ir dar, anksčiau, jei Aš atidaryti kitą pavyzdį
iš anksčiau, kuris buvo vadinamas prototype.c,
Turėjau spausdinimo vardą, kuris grįžo negaliojančiu, taip sakant,
Arba jis grįžo nieko, ir tiesiog turėjo šalutinį poveikį.
>> Taigi, kas čia vyksta?
Na, mano funkcija gauti eilutę tik už momentu.
Mes jau naudojant funkciją gauti eilutę tokiu būdu:.
>> Mes turėjome funkcija gauti eilutė, kaip įtraukti CS50.h,
įtraukti standartinę IO.h, INT, Main, negaliojančiu.
Ir tada kiekvieną kartą aš vadinamas Gauti eilutė iki šiol,
Sakiau kažkas panašaus, styginių -ai gauna gauti eilutę, nes vakaronė string--
tegul vadina get.c-- get eilutę pati grąžina eilutę, kad aš galiu tada
naudoti, ir sako, labas, kablelis, proc S, Backslash N, S.
>> Taip tai yra tas pats pavyzdys, tikrai, kad mes turėjome anksčiau.
Taigi gauti eilutė grąžina vertę.
Tačiau prieš akimirką, spausdinti eilutė negrąžina vertę.
Ji tiesiog turi šalutinį poveikį.
Taigi tai yra esminis skirtumas.
Mes matėme skiriasi tipų funkcijas dabar,
kai kurios iš jų grąžintas vertybes, iš kurių kai kurie ne.
Taigi gal tai virvutė, ar INT, ar plūdė.
O gal tai tiesiog tuščia.
>> Ir skirtumas yra kad šios funkcijos, kad
gauti duomenis ir grąžina reikšmę iš tikrųjų yra pareikšti kažką atgal prie stalo,
taip sakant.
Taigi eikime į priekį ir pažvelgti vieną galutinį rinkinys
pavyzdžių, kad įprasmina, dabar iš kaip mes galime, tiesą sakant, abstraktus geriau,
ir geriau, ir geriau, ar daugiau, ir daugiau, ir daugiau, tam,
rašyti, galiausiai geriau kodą.
Vykime į priekį, ir dvasia nuo nulio, atlikite šiuos veiksmus.
>> Leiskite man eiti į priekį ir taip pat CS50.h ir standartinė IO.h.
Leiskite man eiti į priekį ir suteikti aš int, pagrindinė, negaliojančia.
Ir leiskite man eiti į priekį, tai vadiname cough.c.
>> Ir leiskite man eiti į priekį ir tik kaip nulio, atsispausdinti kosulio / n.
Ir aš noriu tai padaryti tris kartus.
Taigi, aš, žinoma, tik ketina nukopijuoti ir įklijuoti tris kartus.
Aš dabar ketina padaryti kosulys dot velniop kosulys.
Duokime sau šiek tiek daugiau vietos čia Įveskite, kosulys, kosulys, kosulys.
>> Yra, žinoma, jau yra galimybė tobulinti.
Aš nukopijuoti ir įklijuoti kelis kartus šiandien.
Bet tai buvo tik todėl aš ne turite įvesti kaip daug simbolių.
Aš vis dar pasikeitė, ką tie eilučių kodo yra.
>> Šie trys geležinkelio linijos yra identiški, kuris jaučiasi tingus ir iš tiesų yra,
ir tikriausiai nėra teisingas požiūris.
Taigi, ką ingredientas galėtume pagerinti šį kodą?
Neturime kopijuoti ir įklijuoti kodą.
>> Ir, iš tiesų, bet kuriuo metu galite jaustis Būk kopijuodami,
ir net ne keisti kodą, šansai yra ten geriau.
Ir, iš tiesų, yra.
Leiskite man eiti į priekį ir daryti už kilpos, nors sintaksė gali ne
ateiti natūraliai dar.
>> Ar tai tris kartus, tiesiog atlikdami following--
ir aš atsitikti žinau, tai iš praktikos.
Bet mes turime pavyzdžių dabar.
Ir pamatysite internete daugiau nuorodos ramiai.
>> Tai yra sintaksė 6 linija, kad panašiai kaip nulio, kad kartoja
blokas, pakartoti šiuos tris kartus.
Tai šiek tiek magiška dabar.
Bet tai gaus daugiau, ir labiau susipažinę.
>> Ir tai vyksta pakartoti linija aštuonių tris kartus,
taip, kad jei aš iš naujo kompiliuoti makiažo kosulys, taškas velniop kosulys, kosulys, kosulys, kosulys.
Jis vis dar veikia taip pat.
Taigi, kad viskas gerai ir gerai.
Bet tai nėra labai abstrakti.
>> Tai visiškai teisinga.
Tačiau ji mano, kaip ten galėtų būti galimybė,
kaip ir pasaulyje Nulio, kad rūšies pradžios
Tam tikru semantiką įtraukti čia, kad Nemanau, tiesiog kai už kilpos,
ir funkcija, kuri sako kosulys, ar nėra kosulys.
Zinai ka?
Leiskite man pabandyti būti tiek žemesnė nei, kad
ir iš tikrųjų parašyti funkciją, kuri turi keletą šalutinį poveikį, vadina tai kosulys.
>> Ir tai trunka ne įvestį ir grįžta jokios vertės, nes produkcijos.
Bet žinote, ką ji daro?
Ji this-- printf, citata citatos pabaiga, kosulys.
>> Ir dabar čia, aš ruošiuosi eiti į priekį ir int,
Aš gauna nulį, aš mažiau nei 3, I plius plius.
Aš ruošiuosi negali padaryti printf, kuris yra be abejo lygio įgyvendinimas mažas
detalė.
Man nerūpi, kaip kosulys.
Aš tik noriu naudoti kosulys funkciją.
Ir aš tik ketina skambinti kosulys.
>> Dabar, pastebėsite dichotomiją.
Kai skambinate funkciją, jei jūs neturite noriu duoti tai įėjimai, visiškai gerai.
Just do atviros paren, netoli paren ir baigsite.
>> Kai jūs nustatote funkciją arba paskelbti funkcija anketa prototipas,
jei iš anksto žinoti, kad tai ne ketina imtis jokių argumentų,
pasakyti negalioja tose skliausteliuose ten.
Ir tai daro tam, kad jūs nebus netyčia netinkamai ją.
Leiskite man eiti į priekį ir padaryti kosulys.
Ir, žinoma, aš padariau klaidą.
>> Po perkūnais, ten, kad numanomas pareiškimas.
Bet tai gerai.
Tai lengva nustatyti.
Aš tiesiog reikia prototipas aukščiau mano failo nei aš iš tikrųjų jį naudoti.
>> Taigi dabar leiskite man padaryti kosulys vėl gražus.
Dabar ji veikia.
Padaryti kosulį, kosulys, kosulys, kosulys.
Taigi jūs manote, kad mes tikrai tik per inžinerija šią problemą.
Ir, tiesą sakant, mes esame.
Tai nėra geras kandidatas programos
metu ir yra skirti metu Pertvarkymas, ir daro tai, kas
vadinama hierarchinė, skilimas, kur jūs imtis tam tikrą kodą, tada
jums rūšies faktorius dalykų, ir todėl kaip priskirti daugiau semantiką jiems
ir pakartotinai jį galiausiai ilguoju laikotarpiu.
Bet tai statybinis blokas link sudėtingesnių programų
kad mes pradėsime raštu prieš ilgas, kad
leidžia mums turėti žodyną su kuriuo būtų galima rašyti geriau kodą.
Ir, iš tiesų, galime pamatyti, jei mes negali apibendrinti tai toliau.
>> Atrodo šiek tiek chromo, kad aš, pagrindinė, reikia nerimauti šio darn už kilpos,
ir vėl ir vėl skambina kosulys.
Kodėl aš negaliu tiesiog pasakykite kosulys, Prašome kosulys tris kartus?
Kitaip tariant, kodėl negaliu aš tiesiog duoti prisidėti prie kosulys ir tai padaryti?
>> Kodėl aš negaliu tiesiog pasakyti, kad Pagrindinis kosulys tris kartus.
O dabar, tai yra rūšies stebuklinga.
Tai labai pasikartojantis čia.
Ir tai, tiesą sakant, kūdikis žingsnis.
>> Bet tik gebėjimas pasakyti linija aštuoni, kosulys tris kartus,
tai tik tiek daug skaityti.
Ir plius, aš neturiu žinoti ar rūpintis, kaip kosulys yra įgyvendinama.
Ir, tiesą sakant, vėliau į Terminas ir galutinių projektų,
jei jums spręsti projektą su klasiokas ar du klasiokai,
jūs suprasite, kad jūs ketinate turi, ar nori, padalinti darbą.
>> Ir jūs ketinate norite nuspręsti iš anksto, kas vyksta ką daryti,
ir kurioje vienetų?
Ir ar nebūtų malonu jei jums, pavyzdžiui,
pasirūpinti rašymo Main, padaryti.
Ir jūsų draugas, ar jūsų partneris apskritai
rūpinasi įgyvendinimo kosulys.
>> Ir šis skyrius, tai sienos imti,
ar sluoksniai abstrakcijos jei jūs, yra super galingas,
nes ypač didesni, daugiau sudėtingų programų ir sistemų,
tai leidžia keliems žmonėms kurti viskas kartu, ir galiausiai
dygsnio savo darbą kartu šiuo būdu.
Bet, žinoma, mes reikia dabar nustatyti kosulys.
Turime pasakyti, kosulys kad, ei, jūs žinote, ką?
Jūs ketinate reikia vartoti input-- todėl ne tuščias, bet int ir dabar.
Vykime į priekį ir įdėti į kosulys Int. Aš gauna nulį.
>> i yra mažiau nei kaip daug kartų.
Pasakiau tris anksčiau.
Bet tai nėra tai, ką aš noriu.
Noriu kosulys turi būti apibendrinti remti bet kokią iteracijų skaičių.
>> Taigi, iš tiesų, tai N, kad aš noriu, kokia vartotojas man sako.
Dabar galiu eiti į priekį ir pasakyti spausdinimo kosulys.
Ir nesvarbu, ką numeris vartotojas pereina į,
Aš pakartoti, kad daug kartų.
>> Būdamas dienos pabaigoje, Programa yra identiški.
Tačiau pastebėti visą šį stuff netgi gali būti kitoje byloje.
Iš tiesų, aš nežinau, ne momentas, kaip printf yra įgyvendinama.
>> Aš nežinau, šiuo metu, kaip gauti eilutė, arba gauti int, arba gauti plūdę
būtų įgyvendintos.
Ir aš nenoriu matyti mano ekrane.
Kadangi tai yra, aš pradedu sutelkti dėmesį į mano programa, o ne tas funkcijas.
>> Ir taip, iš tiesų, kaip tik Jums pradėti faktoringo kodą panašaus į tai dėmesį,
gal mes net judėti kosulys į atskirą failą?
Kažkas gali ją įgyvendinti.
Ir jūs, ir jūsų programa tapo labai graži, ir labai skaitoma,
be abejo, tikrai keturi eilutės programa teisę ten.
>> Taigi eikime į priekį dabar ir padaryti dar vieną pakeitimą.
Atkreipkite dėmesį, kad mano prototipas turi pakeisti iki viršaus.
Taigi leiskite man nustatyti, kad tiek I do not get rėkė ne.
>> Padaryti kosulys, leiskite man paleisti kosulys kartą daugiau, vis dar daro tą patį.
Bet dabar, pastebėsite, mes turime ingredientas vieną galutinę versiją.
Zinai ka?
Aš nenoriu tiesiog kosulys, nebūtinai.
Noriu turėti kažką bendresnio pobūdžio.
Taigi jūs žinote, ką?
Noriu tai padaryti.
Noriu turėti, panašiai kaip nulio daro A tarkim blokas, bet ne tik
pasakyti kažką šiek kartų.
Noriu pasakyti, labai konkrečią eilutę.
Ir todėl aš ne nori, kad ji tiesiog pasakyti kosulys.
Noriu pasakyti, kokia eilutė praėjo.
>> Taigi pastebėti, aš apibendrinti tai, kad dabar
tarkim jaučiasi gerą vardą už tai, kaip nulio,
trunka du argumentus, skirtingai nuo nulio.
Vienas iš jų yra eilutė.
Vienas iš jų yra int.
>> Ir aš galėčiau juos pereiti.
Aš tiesiog lyg idėjos pasakyti eilutę, ir tada
kiek kartų vėliau.
Tuštuma reiškia, kad jis vis dar negrąžina nieko.
Tai tik vizualus pusė poveikis, pavyzdžiui, su [? Jordanija,?]
žodinis šalutinis poveikis šaukti.
Jis vis dar daro kažką n kartų, 0 iki, bet nėra lygus n.
Tai reiškia, N bendras kartus.
Ir tada tiesiog atsispausdinti kad ir ką eilutė yra.
Taigi aš tikrai apibendrintas Ši eilutė kodo.
Taigi, dabar, kaip man įgyvendinti kosulys funkcija?
>> Galiu padaryti void kosulys.
Ir aš vis dar galite imtis, kaip daug kartų norite kosulys.
Bet žinote ką?
Dabar galiu punktas turi pasakyti.
>> Galiu skambinti pasakyti su Žodis kosulys, einančios į n.
O jei aš noriu taip pat įgyvendinti tiesiog for fun, čiaudant funkcija,
Galiu čiaudėti tam tikrą skaičių kartų.
Ir galiu laikyti pakartotinai n, nes pastebėti, kad M Šiame kontekste arba taikymo srities
egzistuoja tik per šią funkciją.
>> Ir n šiuo atveju tik egzistuoja per šią funkciją čia.
Taigi mes grįžti į Šie apimties klausimus.
Ir čia, aš tik norėčiau pasakyti, achoo, tada n kartų, kabliataškis.
>> Ir dabar, aš tiesiog reikia skolintis tai funkcija parašai čia.
Taigi kosulys yra teisinga.
Atkrenta čiaudėti yra teisinga dabar.
>> Ir aš vis dar tiesiog reikia pasakyti.
Taigi, aš ruošiuosi pasakyti, tarkim eilutė S, int n, kabliataškis.
Taigi aš per Inžinerijos gi iš šios programos.
>> Ir tai daro ne nebūtinai reiškia tai
ką daryti, kai raštu net programas Paprasčiausias.
Imtis ko nors tai akivaizdžiai tikrai paprasta, tikrai trumpas,
ir ją iš naujo įdiegti naudojant taip per daug kodą.
Bet jūs iš tikrųjų pamatysite ir laikas atsigręžti į šiuos pavyzdžius,
ir suvokti, oi, tai yra žingsniai mes priėmėme, kad iš tikrųjų apibendrinti,
veiksnys kažką iš, kol ne dienos pabaigoje
mano kodas yra iš tikrųjų labai protinga.
Nes jei aš noriu kosulys trys kartų tada čiaudėti tris kartus,
Aš tiesiog ketinate pakartotas tai, Programa padaryti kosulį, ir paleisti kosulys.
Ir aš turiu tris kosulys ir trys čiaudint.
>> Ir todėl tai yra pagrindinis paradigma, jei norite,
kiek mes galime eiti apie realiai įgyvendinti programą.
Bet tegul tik pamatyti, ką tai mes darome visą šį laiką,
ir ką kai kurie iš galutinių gabalus yra už šią paprastą komandą.
Tuo dienos pabaigos, mes buvo naudojant žvangėjimas, kaip mūsų kompiliatorių.
Mes jau raštu šaltinį kodas, konvertuoti jį
per žvangėjimas į mašininį kodą.
>> Ir mes jau naudojate Padaryti tik siekiant palengvinti mūsų klavišų taip
kad mes neturime prisiminti tie užkalbėjimai apie pati žvangėjimas.
Bet kas yra Padaryti tikrųjų daro?
Ir, savo ruožtu, kas yra Žvangėjimas tikrųjų daro?
>> Pasirodo, nors mes supaprastinta Šiandienos diskusija, sakydamas,
vartojate kodą, perduoti ją kaip įėjimo į kompiliatorių, kuris suteikia jums
galingumas mašina kodas, paaiškėja, ten
keletas skirtingų žingsnių viduje ten.
Bei rengiant atsitinka būti skėtis terminas, visa krūva žingsnius.
Bet tegul tiesiog erzinti tai iš tikrųjų greitai.
>> Pasirodo, kad mes darome daugiau dalykų, kiekvieną kartą, kai aš paleisti programą,
arba kiekvieną kartą aš parengia programą šiandien.
Taigi pirminio apdorojimo remiasi this-- nieko C programa,
kaip matysime vėl ir vėl, kad prasideda šio grotelėmis,
arba hashtag simbolis čia reiškia tai Preprocesorius direktyva.
Tai reiškia, kad, šiuo atveju, ei kompiuteris, kažką daryti su šiuo failu
kol jūs iš tikrųjų kaupia savo nuosavą kodą.
>> Šiuo atveju, maišos apima yra, iš esmės, C anketa būdas pasakyti,
ei kompiuteris, eikite gauti turinį iš CS50.h ir įklijuokite jį čia.
Ei kompiuteryje, eikite gauti turinys standartinio IO.h,
kur, kad yra dėl kietąjį diską, įdėkite jį čia.
Taigi tie dalykai atsitiks Pirmasis pirminio apdorojimo metu.
>> Ir klingsėti daro visa tai mums.
Ir ji ją taip adyti greitai, jums net nereikia
matyti keturis skirtingus dalykus vyksta.
Bet tai pirmas toks žingsnis.
>> Kas iš tikrųjų vyksta toliau?
Na, kitą oficialus žingsnis yra sudarymą.
Ir paaiškėja, kad Sudarant programą
techniškai tai vyksta nuo kodo, stuff mes
buvo raštu šiandien kažką vadinamas surinkimo kodas, kažkas
kad atrodo šiek tiek kitoks.
>> Ir, iš tiesų, galime pamatyti tai labai greitai.
Leiskite tikrųjų eiti į mano IDE.
Leiskite man eiti į priekį ir atvira hello.c, kuris yra pirmasis programa, su kuria mes
prasidėjo šiandien.
Ir leiskite man eiti į priekį ir paleisti žvangėjimas A šiek tiek kitaip, klingsėti-S, hello.c,
kuris yra iš tikrųjų ketiname duok man kitą failą hello.s.
>> Ir mes tikriausiai niekada vėl pamatyti šį kodą natūra.
Pavartojus žemesnio lygio sistemos klasė kaip CS61,
pamatysite daug daugiau Šio kodo rūšies.
Bet tai asemblerio kalba.
Tai X86 asemblerio kalba kad CPU, kuris yra grindžiamas
CS50 IDE tiesų supranta.
>> Ir paslaptingas, kaip ji veikia atrodo, kad yra kažkas
kompiuteris supranta gana gerai.
Q punktas tai yra atimties.
Yra judesiai.
>> Yra skambina funkcijų čia x oring, judėjimas, add, pop,
grįžti.
Taigi yra keletas labai žemo lygio instrukcijos
kad procesorius suprantu, kad Aš užsiminiau anksčiau.
Tai yra tai, ką "Intel" viduje.
>> Yra modeliai nuliai ir tie, kurie
žemėlapį į juos arcanely suformuluotas, tačiau šiek tiek gerai pavadinta, instrukcijos,
taip sakant.
Tai yra tai, kas atsitinka, kai Jūs kaupia kodą.
Jūs gaunate surinkimas kalba iš jo, kuris
reiškia, kad Trečiasis žingsnis yra surinkti kad surinkimas kodą į galiausiai
mašina code-- nulių ir, ne tekstas, kad mes tik pamačiau prieš momentas.
>> Taigi iš anksto apdorojimas ar tai rasite ir pakeisti, ir keletas kitų dalykų.
Kaupimas trunka jūsų šaltinis Kodas iš C kodo
kad mes rašė, kad susirinkimų kodas, kad mes tiesiog žvilgtelėjau.
Montavimas trunka šioje asamblėjoje kodas nulių ir tie
kad CPU tikrai bus suprasti tuo dienos pabaigoje.
Ir susiejimas yra paskutinis žingsnis kad atsitinka us-- vėl
taip greitai mes net notice--, kad sako,
ei kompiuteris, imtis visų NULIUS ir tie, kurie
lėmė sudarymo Dovydo kodą ir jo pagrindinė funkcija šiuo atveju.
>> Ir ei kompiuteris, eikite gauti visi nulių ir
kad CS50 darbuotojai rašė viduje CS50 bibliotekoje.
Sumaišykite tie su Dovydo.
Ir ei kompiuteryje, eikite gauti visus nulius ir tie, kurie kažkas rašė metų
prieš už printf.
Ir pridėti tuos Into the Visa tai, kad mes
gavau mano nulių ir The CS50 štabo nulių ir,
kad printf nulių ir, ir visa kita mes naudojame.
>> Jie visi gauti sujungti kartu į vieną programa, vadinama, šiuo atveju, labas.
Taigi nuo šiol, mes tiesiog naudoti žodį sudarymą.
Ir mes priimame kaip savaime, kad kai mes sakome, sudaryti savo programą, tai reiškia,
ei padaryti pirminį tvarkymą, montavimas, ir susiejimas.
Bet ten tikrai kai sultingas Daiktai ten vyksta po gaubtu.
Ir ypač jei gauti smalsu šiek tiek laiko,
galite pradėti išnyra aplink šio žemesnio lygio.
Bet dabar, suprantu, kad tarp šiandienos takeaways
yra gana tiesiog pradžioje proceso,
gauti patogi su kažkas panašaus hello world.
Iš tiesų, dauguma, ką mes padarėme šiandien tikrai nebus kriaukle super greitai.
Ir tai bus šiek tiek laikas, o kai praktika.
Ir šansai yra, jūs rūšiuoti iš norime, kad pasiektų savo klaviatūra
arba klykauti į ekraną.
Ir visa tai Gerai.
Nors, galbūt bandyti ne tai padaryti bibliotekoje tiek daug.
>> Ir galiausiai, jūs Gebėti nors pradėti
matome modelius, tiek geros kodas kad rašėte ir klaidų
kad jūs atlikote.
Ir panašiai kaip proceso tampa TF arba CA yra panašus,
Jūs pradėsite geriau ir geriau pamatyti tuos modelius,
ir tik sprendžiant savo savo problemas galiausiai.
Tuo tarpu, ten bus daug mums skolinti jums paramą ir jums
per tai.
Ir rašymo langų už visų problemų
jums reikia vadovautis per visi iš komandų
kad aš tikrai žinau iš daug praktikos dabar,
bet galėjo nuskraidinti virš galvos dabar.
Ir tai visiškai gerai.
>> Bet, galų gale, jūs ketinate pradėti pamatyti modeliai atsirasti.
Ir kai jūs saves palikti visas kvailas detalės, pavyzdžiui, skliausteliuose,
ir garbanotas petnešos, ir kabliataškiai, ir stuff, tiesą sakant,
kad yra ne visi intelektualiai įdomu.
Ir ji yra ne tikslas vartojant bet kokį įvadinio užsiėmimo.
Tai idėjos, kurios ketina pailsėti.
>> Tai kilpos, o sąlygos, ir funkcijos, kurios,
ir galingiau abstrakcija, ir kodas faktoringas,
ir geras dizainas ir gera stiliaus, ir galiausiai teisingumas
Jūsų kodas, tai galiausiai ketina klausimas labiausiai.
Taigi, kitą savaitę, mes imsimės juos idėjos, kad mes pirmą kartą pamačiau per Scratch
ir dabar išversti C. Ir mes pradėsime
pasirinkti pirmąją iš Žinoma nekilnojamojo pasaulio domenai.
>> Mes sutelkti dėmesį į saugumą pasaulyje, o konkrečiau kriptografijos,
iš kodavimo informacijos str.
Ir vienas iš pirmųjų problemos tu
gaus rašyti ne tik žaisti su kai kurių sintaksė
ir sprendžiant kai logiška problemos, galiausiai prieš ilgas,
yra iš tikrųjų peštynės arba užšifruoti, ir galiausiai iššifruoti informaciją.
Ir viskas, ką padarei Šiandien bus gana žemas
lygis, yra tik ketina leisti mums imtis vieno, ir vienas,
ir dar vienas žingsnis link aukščiau raštu įdomiausią kodą dar.
>> Taigi daugiau apie tai kitą savaitę.
>> [Vaizdo įrašų atkuriamų]
>> -Kas Gali man pasakyti apie paskutinį kartą matėte jį?
-Kas Aš galiu pasakyti, tikrai?
Aš turiu galvoje, tai buvo kaip ir visi kiti prieš gamybą repeticija,
išskyrus ten buvo kažkas pasakė pačioje pabaigoje, kad pakimba su manimi.
>> -Tai Buvo CS50.
>> -Tai Yra supjaustyti visi, puikus darbas ant repeticija.
>> -Tai Pietums?
>> -Yeah, Tu ir aš galiu patraukti sumuštinį truputį.
Leiskite aptarime su Davidas tikrai greitai.
Dovydas?
>> [PABAIGA PLAYBACK]