[Powered by Google Translate] DAVID Malan: Kjo është CS50, dhe ky është fillimi i javës 1.
Ajo që ne menduam se do të bëjmë sot është të marrë një vështrim mbrapa në
diçka shumë prej jush ndoshta kanë ecur për disa kaluarën
Ora tani dhe mund të duket pak e njohur.
Kjo gjë këtu, kjo sigurisht është në -
Audienca: Shkenca.
DAVID Malan: Shkenca qendër.
Pra, kjo është në fakt një nga kompjuterat e hershme
mbështetur nga vitet 1940.
Kjo ishte një nga kompjuterat e parë elektromekanike
se ishte në gjendje të veçanërisht gjatë,
vetë-qëndrueshme computations, dhe ajo që ne shohim në të vërtetë
Qendra shkenca është vetëm një pjesë e vogël e kësaj gjëje.
Ajo që ne menduam se do të bëni pastaj është marrë një vështrim prapa në një video
që është bërë disa kohë më parë, duke futur këtë
gjë në botë.
Dhe ju do të shihni nga muzika dhe zëri i atyre që me të vërtetë
ishin shumë herë më të lumtur.
>> [Rishikim video]
-Një triumf i aftësive matematikore dhe mekanike është kjo
Llogaritësi i madh i ri automatik në Universitetin e Harvardit.
Problemet ndërlikuar në matematikë, e vënë nëpërmjet
makinë në formë të koduar në kasetë, janë zgjidhur saktë në një
pjesë minutën e kohës e nevojshme për të njeriut
Llogaritja.
Projektuar për të shpejtuar të gjitha format e matematikore dhe shkencore
hulumtim, truri gjigant mekanike do të punojë për United
Shtetet e marinës deri në fund të luftës.
>> DAVID Malan: Pra, çfarë ju mund të mos dini është se ajo ishte në
kjo pajisje njëjta që një mandat ne të gjithë tani të marrë goxha shumë
për të dhënë është shpikur, atë të një bug.
Pra, një nga inxhinierët që punojnë në këtë kompjuter
gjeti fjalë për fjalë një molë të vogël në makinë që rezultoi
në disa llogaritjeve të pasakta.
Dhe si historia shkon se mola u regjistruar në këtë log
Revista këtu, kthehet nga 9 shtator në 1940-diçka,
dhe kështu ka lindur për botën termin "bug".
Kështu tash e tutje ne e konsiderojmë të mete të ketë ndonjë lloj të gabimeve në
programe, nëse njeriu ose, në këtë rast, insekte.
>> Pra, një njoftimet pak, si ne të vazhdojë.
Pra CS50 ka një traditë për të ofruar dreka e në terezi
më premteve gjatë semestrit, ku kemi marrë 30 për
40 studentë të zjarrit dhe Ice në sheshin e rastit
thashetheme, flasin për shkenca kompjuterike,
flasim për të ardhmen.
Ne ftojmë alumni dhe miqtë nga industria për të biseduar deri
studentët si.
Vërtetë drejt një fund për të bërë çfarë është një klasë mjaft e madhe
gjithë më intime, të paktën një herë në, ndërsa për
subsets e studentëve.
Pra, nëse ju do të donte të bashkohen me ne të premten, 01:15 PM, shkoni në
CS50.net/lunch për RSVP.
Dhe ne do të bëjmë këtë recurringly, jo aq për t'u shqetësuar nëse ju nuk jeni
në mesin e 30 apo më shumë të parë këtë javë.
>> Pra, shënime shkrues.
Një fjalë mbi burimet që tani do të fillojë të qenit në dispozicion
tek nxënësve në klasën.
Kështu që krerët tuaj nuk duhet të jetë poshtë gjatë ligjëratave
scribbling poshtë gjithçka kam thënë dhe kështu me radhë, ajo që ne bëjmë
në vend të kësaj është të sigurojë nga stafi mësimdhënës a
set kanonik i shënimeve.
Pra, ne kemi një nga miqtë tanë të mësimdhënies, Andrew Sellergren,
që ulet çdo javë, shqyrton videos, dhe pastaj
shkruan ajo që ne mendojmë se është një mënyrë të drejtë
grup autoritativ i shënimeve.
Dhe dua Andrew, gjithashtu, të vënë në shënimet snarky
fund.
Pra, ju do të gëzojnë këto shpresojmë se si një libër referimi për
argëtim, dhe gjithashtu, vijnë quiz kohë, si një mundësi për të rishikuar
çfarë ndodhi në leksionet individuale.
Pra, ata janë të lidhura në faqen e leksioneve.
>> Set Problemi 0, ndërkohë, është jashtë.
Dhe në drejtim të burimeve në dispozicion për ty -
walkthrough.
Milo udhëhequr parë të premten.
Ajo ishte filmuar, të vënë në internet nga e shtuna.
Dhe kështu të kuptojë, në qoftë se ju nuk jeni me të vërtetë të sigurt ku të fillojë,
për këtë apo në të ardhmen p-grupe, gjithmonë kthehet pari që
walkthrough ose saj video.
Sectioning është në progres, në cs50.net/section është ajo ku ju
duhet të paraqesin preferencat tuaja, nëse ju nuk keni
tashmë, nga sot.
Sepse seksione do të fillojnë këtë e diela e ardhshme, e hënë,
dhe të martën.
Ne bëjmë seksione ato tri ditë, çdo javë i
semestër për pjesën më të madhe.
Dhe ne gjithashtu të futur, përsëri, këngë të ndryshme.
Pra, ju do të kërkohet në këtë formë sectioning, nëse ju
nuk e kanë parë atë tashmë, nëse ju jeni në mesin e atyre më pak
rehatshme, më të rehatshme, apo diku në mes.
Dhe në qoftë se ju jeni lloj në gardh, përgjithësisht diku në
mes është ajo që shumica e studentëve deri në fund kontrolluar.
Orari i punës të fillojë sonte.
>> Pra Scratch është çelësi mjaft e ulët, edhe pse kjo është mjaft e natyrshme
për të kandiduar në të mete të ndryshme, ose të jetë e pasigurt se si të
zbatojë diçka.
Pra, të kuptojnë se ne do të fillojmë orë zyre këtë javë.
Ata do të jenë në Annenberg hënë, e martë, e mërkurë,
E Enjte, 20:00-11:00 gjatë pushimit të trurit.
Classmen sipërme mund të merrni në, dhe nëse ndonjëherë ju keni vështirësi për marrjen
në derë, sepse ata do të swiping, vetëm të flasim në rrugën tuaj
në dhe shpjegoni ju jeni me CS50.
Zakonisht 20 deri në 30 prej nesh në stafin do të jenë atje për të ndihmuar
ju një për një.
>> Pas mbërritjes ideja është kjo: ju do të sjellë tuaj laptopë,
ju do të keni ngarkues tuaj, ne do të kemi litarët pushtet ekstra,
veçanërisht përgjatë murit jug të Annenberg ku
ka shumë priza elektrike.
Dhe pika kryesore e hyrjes për orë zyre Q & A është për të shkuar në
cs50.net/discuss dhe për të postuar
pyetjen tuaj atje.
Dhe për emërtim atë me pset 0 ose 1 pset, çfarëdo javën
mund të ndodhë që të jetë.
Dhe pastaj çfarë ne do të bëjmë është të ketë një tabelë të shokëve të mësimdhënies
dhe asistentë kurs, përgjithësisht 8 ose 10 apo më shumë prej nesh,
kalon, duke e mbajtur një sy vigjilent në bord, dhe
plucking off pyetje me të vërtetë sa më shpejt që mundemi,
ju referuar në poste të lidhura në qoftë se ju nuk e keni gjetur ata
veten, referencat online, si të përshtatshme.
Dhe pastaj, nëse ka probleme, pasi nuk ka mënyrë të pashmangshme
do të jetë, ose ai thjesht e bën më shumë kuptim për të ulemi njëri në një,
punojnë nëpër probleme me dikë.
>> Ose ju vetëm të hyjë në të vërtetë orarit të punës
kanë nevojë për atë mendim.
Ju nuk duan të kalojnë nëpër formë elektronike, ju
me të vërtetë duan të takohen me dikë.
Komunikoni se për ne, dhe çfarë do të ndodhë është kur tuaj
Pyetja është parë nga një anëtar i personelit, dhe ne
përcaktuar, Yup, kjo duhet të dërguar tek një prej 20 ose
30 anëtarët e ekipit këtu në vend, ju do të shihni në krye lënë këtë
pak Shkruani butonin radhë fillon ndezje në cs50.net /
diskutuar.
Dhe kjo është thënë se ju tani kanë qenë të ftuar, kështu që
për të folur, për të hyrë në radhë.
Dhe duke klikuar atë buton, emri juaj do të shfaqet pastaj në
një iPad që greeter CS50, një nga kokat e kursit, do të
të mbajnë pranë hyrjes së Annenberg, i cili pastaj do të
shohin përshkruar si këtu, studentët që kanë pyetje mbi
të majtë, anëtarët e stafit të cilët janë të pranishëm në të djathtë.
Dhe me një klik të majtë dhe të djathtë, browser-i juaj web do
të fillojë ndezje sa më shpejt, për shembull, Profesor McGonnagal
është i gatshëm për të parë ju në një tryezë të veçantë në Annenberg.
>> Pra, ne e bëmë disa prej këtij vitit të kaluar.
Ne kemi restartohet orë zyre dhe
ri-zbatuar shumë e softuerit.
Pra, të kuptojnë se kjo do të ngrohtë deri këtë javë.
Por edhe të kuptojë edhe në vitet e kaluara, si ju mund të keni dëgjuar
nga miqtë, orarit të punës kishte me të vërtetë 50 për
150 studentë në të njëjtën kohë.
Dhe kjo nuk është thjesht të jetë e mundur për ne për të trajtuar se
efektive, një për një, të gjithë në mbrëmje.
Dhe kështu që ajo që ne jemi me të vërtetë do të përpiqet të bëjë këtë vit është
germa në faktin se shumë pyetje janë
pyetur shpesh dhe shpesh mund të përgjigjet më mirë
asynchronously.
Kështu që ju mund të lloj të mendojnë nëpërmjet përgjigjes së stafit,
dhe ne mund të mendojmë me kodin tuaj, pa ndezur
presioni i domosdoshmërisht luftuar
nëpërmjet saj krah për krah.
Pra, ne vlerësojmë se afërsisht një e treta apo gjysma e pyetjeve
do të vendoset në person, dhe ne do të përpiqemi të këpusin jashtë si
shumë si gjysma ose më shumë elektronike,
gjatë orarit të punës.
Dhe ne do të vazhdojmë të përdorim Diskutoni
gjatë gjithë javës si.
>> Dhe së fundi, të kuptojnë se ky kurs mund të merret kalojë / dështojnë.
Pra, nëse ju jeni në gardh ose thjesht të mendoni se ju jeni me të vërtetë
Nuk jam i sigurt nëse kjo është bota për ju, apo kjo është me të vërtetë
mjaft e huaj për ju, e kuptojnë se kjo është një mënyrë e mrekullueshme
të fitimit deri disa besimin me të cilin do të futemi në
klasë, si unë e bëri sinqerisht, vite më parë.
Dhe pastaj të ketë pesë javë për të zgjidhur të figurës për
veten në qoftë se ju dëshironi të qëndroni të kalojë / dështojnë, kaloni në një letër
klasën, ose si.
Dhe zakonisht ajo të kalojë / dështojnë ka, unë mendoj se, për studentët është
se, në qoftë se keni vënë në atë 10 orë, 20 orë, çfarëdo qoftë ajo
mund të jetë në disa probleme, dhe ju jeni banging kokën tuaj
kundër murit,
dhe ju thjesht nuk mund të vërtetë diçka ndjekje poshtë, dhe ju
kanë aq shumë gjëra të tjera që ju duhet të bëni, sinqerisht, ajo që unë
mendoj se të kalojë / dështojnë, ajo merr off buzë e
situatat si kjo.
Ku e keni marrë gjënë e 90% të rrugës.
Ju e dini, kjo nuk është mjaft e përsosur.
Por ju mori një shumë prej tij, megjithatë.
Kështu që e konsiderojnë të kalojë / dështojnë duke i dhënë se
Modeli mendore, ndoshta.
>> Të gjithë të drejtë, kështu që javën e kaluar kemi pëllumb në Scratch, dhe ne
biseduar rreth programimit në një nivel mjaft të lartë grafik.
Dhe sot ne kemi bërë kalimin në një gjuhë
quajtur C, një nivel të ulët programimit gjuhë në majë të
të cilat shumë gjuhë moderne janë ndërtuar tani, duke përfshirë disa
nga ato që ne do të jetë duke përdorur drejt përfundimit termin së.
Dhe syntactically, atë që ata të duken si
është mbi të gjitha mjaft të ngjashme.
Pra, le të fillojë për të bërë këtë tranzicion këtu.
Pra, kjo ishte një program javën e kaluar se ishte thjeshtë e
përshëndetje programe botë.
Ajo thjesht të shtypura në botë ekran hello, me një
flluskë pak Fjalimi vijnë nga cat.
E pra, në qoftë se ne fillojmë tani për të përkthyer këtë në një tjetër
gjuhës, të kuptojnë se idetë sot dhe të mërkurën
janë identike, por sintaksa fillon të ndryshojë.
Pra, ndërsa javën e kaluar kemi pasur, kur flamuri gjelbër klikuar, thonë
Hello World.
Sot ne do të kemi int kryesore, zbrazëti,,, printf
kthimi, me disa sintaksë tjetër në atje si.
Formatimin e teksteve kaçurrel, dhe kllapa, dhe citate, dhe gjësend.
Por e kupton se thelbi i idesë këtu është shtypje,
dhe përfundimisht faktin se kryesor është tani do të jetë
sinonim me fillimin e një programi.
Kryesore do të jetë aty ku flamuri gjelbër nis gjërat jashtë.
>> Pra, tani le të ngas përveç disa nga blloqet e ndërtimit këtu
para se të zhyten në disa shembuj konkretë.
Pra, ne e quajti këtë javë një deklaratë e fundit, ku është vetëm
një udhëzim.
E bëjnë këtë - në këtë rast, thonë botë Hello.
E pra në C, nëse ne shikojmë në linjë vetëm atë, kjo është se si ne jemi
do të fillojnë të shprehur atë pjesë të veçantë puzzle:
printf ("Hello World");.
Dhe tani ne do të vë në lojë përveç këtyre gjithnjë e më shumë me kalimin e kohës,
por të kuptojë se ka një model këtu.
Pra një, ne kemi këtë gjë të quajtur printf, e cila është
thelb analoge me fjalën Thuaj.
Kjo është ajo që do të bëjë.
Printf, dhe f këtu do të thotë "formatuar".
Pra, kjo thjesht do të thotë që ju mund të futni
detaje të ndryshme estetike.
Pra mbyll thonjëzat quote është fillimi i asaj që ne jemi duke shkuar
të fillojnë duke e quajtur një varg.
Një fjalë, një frazë, një dënim.
Një varg në një language programuese është një sekuencë e zero
ose më shumë karakteret.
Kështu h-E-l-l-O, presje, dhe kështu radhë është,
mbyll thonjëzat quote, një varg.
Dhe tani backslash n, pak syntactically i rastësishëm, por ne
përcaktuar tashmë se javën e kaluar, si do të thotë çfarë?
Kjo është vetëm një linjë e re.
Kjo është vetëm një mënyrë për të përcjellë në kompjuter që ju doni të
ekuivalent i goditur Shkruani atje, por ju nuk e bëni
doni të vërtetë hit Enter dhe rrëmujë këtë arsye të gjithë të
Formatimi i programit tuaj aktuale.
Tani kllapat mbyllni këtë varg, të hapur dhe të prindërve
prindërve të ngushtë, dhe brenda e që është string tonë.
Sepse kjo është për shkak se në C, dhe programimi të tjera
gjuhë, gjëra të tilla si printf marrë argumente, ose të marrë
parametra.
>> Pra, filloni të menduarit tani i këtij blloku thonë purpurt si një
funksion, si një metodë, si një procedurë.
Ju mund të vërtetë të telefononi atë çka ju dëshironi për tani, por
kjo është lloj i një programi miniaturë që vetëm bën një
gjë, në një linjë të vetme, jo më pak.
Pra printf është edhe ajo që ne jemi duke shkuar për të filluar një thirrje
funksion, dhe funksionet bëjë diçka - në këtë rast
printon një varg formatuar në ekran -
por gjithashtu të marrin funksionet argumente apo parametrat.
Dhe nga argumentet apo parametrave, thank you, ne do të thotë
se sjellja e tyre mund të ndikohet nga ajo që ju kaloni në
brendësi të paranteza.
Pra, në këtë rast, nevojat printf të thuhet se çfarë për të shtypur, dhe ne
vetëm të kalojë në, në thonjëza dyshe këtu, string se ne
të vërtetë doni të shtypura.
Dhe pikëpresje në fund të kësaj linje është vetëm një
telash historike ku në fund të linjave më të kodit,
ju vënë një pikëpresje për të bërë super të qartë në kompjuter
që kjo linjë e kodit përfundon këtu.
Tani kjo është e mirë për shkak se si ne do të shohim si programe të merrni më shumë
komplekse, pikëpresje do të bëjë njerëzit super të qarta për ne,
dhe gjithashtu kompjuter, ku linjat e kodit fillim dhe në fund.
Kuptojnë se disa gjuhë nuk kanë ndonjë
nga këto detaje të njëjta.
Dhe në fakt, në JavaScript, ju nuk keni gjithmonë nevojë për diçka
si pikëpresje.
Por më shumë se për të ardhur.
>> Pra, sythe.
Ne kishim diçka si kjo, shumë intuitive, e qartë, të bëjë
diçka përsëri dhe përsëri dhe përsëri.
Doja vënë në çorape, ose thënë hello, në këtë rast.
E pra, duke filluar nga sot në C, ne mund të shprehim këtë Scratch
bllokuar si ndërsa (e vërtetë) printf ("Hello World").
Pra njoftim ne jemi duke filluar për të ndërtuar në fjalë për fjalë puzzle
copë para.
Ne kemi të njëjtin bllok purpurt, por kjo është në brendësi të kësaj
bracketed Gjithmone bllok, dhe mënyra më e mirë për të përkthyer që
C për të është si më poshtë.
Nuk ka asnjë Gjithmone fjalen.
Ju nuk mund të vetëm të tipit f-O-R-E-V-E-r në C.
Pra, analog afërt është duke.
>> Tani, ndërsa (e vërtetë) duket pak budalla, sepse ka vlera
e ndryshimit të vërtetë ndonjëherë?
Me sa duket jo.
Është si të thuash, ndërsa një, ndërsa në, ndërsa e vërtetë.
Kjo është e gjitha e njëjta gjë, e vërtetë është gjithmonë rasti.
Pra, kjo është në të vërtetë loop inducing çfarë lloj lak?
Vetëm një loop pafund, e drejtë.
Një lak Gjithmone apo si ne e quajti atë javën e kaluar,
vetëm një lak pafund.
Pra, ndonjëherë kjo është e keqe.
Ndonjëherë kjo është një bug, nganjëherë kjo është arsyeja pse ju merrni
topin tjerrje plazh ose hourglass apo si.
Por në këtë rast, ne me dashje, për çfarëdo
arsye, të kërkuar për të shkruar të njëjtën gjë përsëri
dhe përsëri dhe përsëri.
Ose në rastin e si një orë, ju doni të bëni
diçka përsëri dhe përsëri dhe përsëri.
Kështu sythe pafund mund të ketë kuptim.
Dhe kjo është se si në C ne mund të përkthehet Gjithmone të kodit.
>> Deri tani kjo është pak më specifike.
Ne kishim përsëritur 10 herë deklaratën e mëposhtme.
Kështu, ndërsa (e vërtetë) nuk ka mjaft të punojnë atje, për shkak se është e vërtetë
gjithmonë e vërtetë.
Pra, nëse ne shikojmë në vend versionin C, tani merr një sintaksë
pak më i fshehtë.
Por të jetë i sinqertë kur ju filloni për të parë këtë, ajo merr të gjitha
shumë të njohur shpejt.
Pra, kjo është ajo që quhet një për lak.
Një për lak do të them kompjuterin për të bërë diçka
përsëri dhe përsëri dhe përsëri për aq kohë sa
këto gjëra janë të vërteta.
Tani çfarë ne do të thotë me këtë?
E pra, ka tre pjesë në një për lak, dhe ne jemi duke shkuar për të
kthehen kësaj në kontekstin e aktuale
shembuj në një moment.
Pra, mos u bëni merak nëse nuk mjaft të zhytet në të gjitha përnjëherë.
Por int i = 0 është, histori të gjatë të shkurtër, duke thënë jepni një
ndryshore që është numër i plotë i tipit, kështu që jepni një numër
quhet i, dhe nisja atë për të 0.
Kjo është dhënë mua si një x algjebrike ndryshueshme dhe
nisja atë për të 0.
Por në këtë rast kemi quajtur atë unë.
Pastaj në mes, ajo thotë se i është më pak se 10.
Kjo është thënë kompjuterin e stuff në vijim në mënyrë të gjatë
si i është më pak se 10.
Dhe padyshim ajo fillon më pak se 10 për shkak
fillon në 0.
Pastaj në fund, ju mund ndoshta me mend se çfarë kam + + mjete.
Është pak e sintaksës që vetëm do të thotë shtim i.
Pra, shtoni 1 me i, përsëri dhe përsëri dhe përsëri.
>> Dhe kështu që ne do të shohim këtë lak, kjo sintaksë, në vend, zbaton
pikërisht të njëjtën gjë që, sinqerisht, në Scratch ishte vetëm aq
shumë më e lehtë për të shprehur.
Përsëriteni 10, dhe ju jeni bërë.
Në C, dhe në shumicën e gjuhëve të programimit, ne duhet të jetë një
pak më shumë instruktive për kompjuter dhe në fakt
specifikojë diçka si kjo.
Por ne do të vijnë përsëri në këtë dhe sintaksë tjetër.
>> Po në lidhje me variablat?
Në Scratch kishim diçka si këto blloqe portokalli,
ku unë mund të deklaroj një ndryshore.
Le të thërrasë atë në mënyrë arbitrare kundër.
Le nisja atë në 0, dhe pastaj
le përgjithmonë të bëjë diçka.
Në këtë rast në Scratch unë jam duke thënë se kundër, kështu që
cat do të ketë një flluskë pak fjalim që është folur
numri që është në këtë variabël.
Dhe pastaj ne kemi counter ndryshim nga 1.
Pra, e gjithë kjo është e mbështjellë brenda një lock përgjithmonë.
Pra, ne tani kemi tashmë blloqet e ndërtimit në C me
e cila për të përkthyer këtë.
>> Një mënyrë ne mund të bëjmë që është kjo.
Më jepni një numër të plotë, e quajti atë kundër.
Nisja atë për të 0
në rreshtin e parë atje.
Ndërsa (e vërtetë), kështu që unë jam duke vjedhur këtë ide nga vetëm një moment
parë, të shkojnë përpara dhe të bëjë në vijim.
Shtypura nga counter, dhe pastaj rritje counter,
përsëri, dhe përsëri, dhe përsëri.
Apo përsëri, + + thjesht do të thotë të shtoni 1 për diçka.
Por nuk është një copë e re e sintaksës këtu.
Çfarë është hedhur jashtë si nuk është në mesin shembujt tona të mëparshme?
Po, ky d%.
Kështu që ju ndoshta mund të konkludoj se çfarë është duke bërë këtë, sinqerisht, duke u bazuar
në atë bllok Scratch është duke bërë.
Por përsëri në C, ne vetëm duhet të jetë pak më të veçantë
kur është fjala për të shprehur veten.
>> Pra printf ("% d \ n").
Edhe shumica e që ne mund të hedhin larg si të njohur.
Kuotat thjesht do të thotë se kjo është një string, backslash n
është vetëm një linjë e re.
Pra, e vetmja gjë e re këtu është% d.
Dhe e gjithë kjo është një placeholder.
% D po shkon për të treguar një numër decimal.
Dhe% d kompjuter do të thotë, të vënë një numër decimal këtu.
E pra, çfarë numri ju doni të vënë atje?
E pra, si ju ndoshta mund të konkludoj, pas presje themi
counter, që është emri i një ndryshore që deklarohet, ose
krijuar nja dy rreshta më herët.
Pra, kjo është vetëm mënyrë C i mbylljen në një ndryshore në një
string dinamike.
Sepse nga ana tjetër, në qoftë se unë kam bërë diçka në vend si
kjo, printf ("kundër"), çka do të këtë
Programi në vend të bëjë, me sa duket?
Ajo do fjalë print "kundër".
I cili nuk është efekti që unë dua.
Unë kam nevojë për të zëvendësuar në një vlerë numerike.
Pra, ne do të shohim që funksionon atëherë, si printf, nuk mund të marrë
vetëm vetëm argumente të vetme, si
"Hello World".
Ata mund të marrin mbyll thonjëzat presje japin kuotën e tyre, dhe pastaj disa variabla
që do të merrni mbyllën në, si ne do të shohim vargun e mëparshme
nëpërmjet këtyre placeholders shenjë%.
>> E pra ajo që për shprehje Boolean?
Shprehjet Boolean ishin këto vlera, e vërtetë apo e rreme.
Po ose jo.
1 ose 0.
On ose off.
Pra, në Scratch ata të duken si kjo, dhe vëreni se
bllok fund këtu është vërtetë lidhje
e dy blloqeve të vogla.
Kështu që unë lloj i zvarritur dhe ra tri copa mister
së bashku për ta bërë atë pjesë të gjatë mister atje kështu që unë
mund të përcjellë idenë se unë dua x të jetë më pak se y dhe
y të jetë më pak se z.
Dhe kështu që unë mund të përkthehet këto dy linja të veçanta si më poshtë.
Një top mund të jetë shumë trivially përkthyer në C,
me vetëm x <y.
Ndoshta me disa kllapa për masë të mirë.
Dhe pastaj në C, ju nuk keni shkruar dhe për të treguar
lidhje e diçkaje.
Ju në vend të shkruani &&.
Dhe si ne do të shohim në fund, një simbol të vetëm ndodh që të
do të thotë diçka të ndryshme.
Pra && vetëm tregon idenë e dhe.
>> Pra, përsëri, edhe pse kjo fillon të duket mjaft komplekse,
një nga qëllimet e prezantimit para, përveç
vetëm duke pasur një lloj fun në-luftoj ku ju mund të bëni
diçka që është shumë e grafike, dhe të animuar, dhe
shareable dhe si, është gjithashtu për të përcjellë idenë se
të gjitha ideve ne fillim zhyten në sot e në vazhdim
janë mishëruar në edhe kaq e thjeshtë
ndërfaqe që një ditë.
Po në lidhje me këtë këtu?
>> Pra kushtet.
Pra bllokut para në të majtë nuk duket
pak më komplekse.
Por kjo është vetëm disa zvarritje dhe
rënie e pjesëve të njohura.
Nëse x është më pak se y, thonë kështu.
Tjetër në qoftë se x është më i madh se y, thonë kështu.
Tjetër, ne mund të supozojmë se është logjikisht ashtu se
ata duhet të jenë të barabartë.
Pra, thonë se ata janë të barabartë.
Tani në C në gjënë e duhur, të njëjtën saktë.
Dhe vini re se formatimin e teksteve kaçurrel do të jetë një
tipar i C dhe gjuhët e tjera që bëjnë këtë lloj
i encapsulation.
Ashtu si në qoftë se blloku është kjo gjë e verdhë që është lloj i
grabbing bllok purpurt në brendësi të saj.
Në mënyrë të ngjashme janë këto formatimin e teksteve -
këto formatimin e teksteve kaçurrel -
menduar për të sjell në mendje deri që të njëjtën ide e përqafuar një ose më shumë
rreshta të kodit që janë prerë në brendësi të tyre.
Pra, në anën e djathtë këtu, nëse më pak se x y, printf
("X është më pak se y").
Tjetër në qoftë se x është më i madh se y, të shtypura nga të njëjtën gjë.
Tjetër të shtypur në dukje se ata janë të barabartë.
>> Pra me pak fjalë, ka një hartë mjaft të drejtpërdrejtë ose të përkthimit
e gjuhës që ne kemi parë deri tani, duke përfshirë për disa
nga karakteristikat më të sofistikuara.
Pra, ju nuk mund të përdorni këtë për projektin tuaj, ose mund të mos
të jetë duke përdorur këtë për projektin tuaj këtë javë.
Por ne kemi këto gjëra quhet vargjeve në C. Në Scratch,
ata janë quajtur listat.
Dhe ne pamë këto me RPG Fruitcraft javën e kaluar.
Djalë i vogël blu që ishte në këmbë rreth, picking up
qershi dhe portokall dhe si.
Edhe në Scratch, që u realizua me këtë portokalli
bllokojë që përmban fjalë, në këtë rast, ne jemi të vërtetë
duke shtuar se "portokalli" për një
ndryshore të quajtur inventarit.
Pra në C, kjo sintaksë do të marrë pak më shumë fshehtë.
Dhe ne do të kthehemi në këtë javën e ardhshme dhe të bëjë më shumë
gjëra interesante në botën e kriptografisë me të.
Por në fund këtu, këto dy linja në thelb
përkthehet në atë që ne jemi duke bërë në një Scratch bllokuar deri atje.
Por më shumë se për të ardhur.
>> Kështu që vënë atë së bashku, këtu është një program në C. Pra, le të
shpejt ngas përveç disa pjesëve të sintaksës këtu, por
atëherë le të vërtetë të filloni të shkruani disa kodin, njoh
ju me disa nga mjetet ne do të jetë duke përdorur, dhe të shohim nëse ne
mund të ndërtojë më tani disa prej këtyre blloqeve të ndërtimit themelore nga
javën e kaluar, tani syntactically në C. Pra, në krye këtu, kjo
është ndoshta një nga programet më të mërzitshëm që ju mund të
shkruar në gjuhën e programimit më asnjë.
Por kjo lloj i ka kuptim të veçantë, sepse ajo është
Programi kanonike që çdo shkencëtar kompjuteri shkruan kur
mësimdhënies dikush një gjuhë programimi -
një program Hello World.
>> Pra, në krye, shohim këtë nocion të përfshijë #
dhe pastaj, në kllapa kënddrejtë, stdio.h.
Ne jemi duke shkuar për të ardhur përsëri në atë, por me të vërtetë se çfarë
do të thotë se nuk është një file në këtë botë quhet standarde
I / O, stdio dot h, dhe kjo është vetëm një file teksti që
dikush shkroi vjet më parë.
Dhe brenda këtij file teksti janë një bandë e tërë e
funksionet, ose metodat, procedurat, apo se dikush tjetër
shkroi se ne jemi përfitues të, sepse ne
tani mund të përdorni kodin e atij personi.
Funksionet ai ose ajo shkroi.
Në këtë rast, printf nuk është diçka që kam shkruar, kjo është
nuk është diçka që CS50 shkruajtur.
Kjo është diçka që dikush e ka shkruar vjet më parë dhe të vënë në një
file i quajtur stdio.h dhe pastaj, si një mënjanë, vendos
një pjesë tjetër të funksionit në një tjetër dosje.
Por ne do të merrni atje.
>> Pra # include është vetëm mënyra jonë për të thënë, në
C, jepni qasje në funksionet që dikush tjetër shkroi.
Dhe në këtë rast më intereson, sepse unë dua printf.
Tani kemi marrë kryesore int (i pavlefshëm).
Pra, kjo është një nga këto gjëra, sinqerisht, se në ditën e 0,
pretty much unë kam për të lloj jashtë zonës, sepse kjo është vetëm
jo interesante
intelektualisht, disa nga sintaksës.
Por tani për tani e di që funksionon, i njohur ndryshe si
procedurat, metodat apo, në përgjithësi të prodhojë disa vlera.
Ata bëjnë diçka.
Ata vijnë me një përgjigje.
Ata prodhojnë dalje.
Pra int pranë kryesor është vetëm mënyra jonë stenografi për të thënë
se ky funksion, kjo procedurë, është përfundimisht do
për të ju jap përsëri një numër.
Dhe pse kjo është, ne do të kthehen për të.
Kryesor është vetëm bota parazgjedhur standarde për mungesë
funksion që do të merrni ekzekutuar në një program C, kur
ju drejtuar atë.
Void thjesht do të thotë këtë gjë, kryesore, nuk merr
argumente, në këtë rast.
Kështu që unë jam duke u super eksplicite.
Nuk ka strings në atje, nuk ka asnjë presje.
Void do të thotë nuk ka argumente për kryesor.
>> Tani së fundi, fatmirësisht, e fundit dy linja janë të njohur.
Brenda formatimin e teksteve kaçurrel ne kemi një printf
dhe ne kemi një kthim.
Dhe kthimi është lloj i të ardhur keq që ne duhet të
vënë atë atje, sepse në këtë rast kjo nuk është bërë gjithçka që
shumë interes.
Por në një program kompjuterik, kur një funksion kthen 0,
që do të thotë të gjitha është mirë.
Asgjë nuk shkoi keq.
Në të kundërt, nëse një funksion të kthimit 1, ose 1 negativ, ose
1.337 negative, ose disa numra të rastit si kjo, që
në përgjithësi do të thotë se një gabim në të vërtetë ka ndodhur.
Pra, nëse ju jeni në Mac apo PC tuaj, nëse ju keni parë ndonjëherë
disa Mesazhi i bezdisshëm, sepse kompjuteri juaj ka u rrëzua ose
ngrirë, dhe ka një mesazh të fshehtë gabim,
dhe pastaj disa kodi, si kodi sistemi
1,2,3,4, disa numër,
që në përgjithësi është një detaj i panevojshëm për të treguar
Shumica prej nesh njerëz, por kjo është ajo që disa funksioni ose disa
Programi është kthyer në fakt, një vlerë jo-zero.
Dhe përfitimi i kësaj është se të gjithë 0 do të thotë, si edhe, dhe
atëherë ju thelb të ketë një numër të pafund të gjërave që
mund të shkojnë keq.
Cila është arsyeja pse ata zgjodhën 0 për të mirë dhe një jo-zero vlera për
keq, siç do ta shohim së shpejti.
>> Pra, le të shkojnë përpara dhe të shkruani këtë.
Pra, kujtoj se ditë të tjera kam përdorur Mac tim për të hapur një
dritare terminali, dhe pastaj kam hapur programin tekst, si
TextEdit, dhe unë filloi të shkruajë disa kodin.
E pra kjo është në rregull.
Por përvoja juaj do të jenë të ndryshme në një Mac, ose
në një kompjuter Solaris, një kompjuter Linux, çfarëdo operativ
Sistemi ju ndodh që të jeni duke përdorur.
Dhe kështu në kurs, ajo që ne në vend që të përdorin është diçka
quajtur CS50 Appliance.
Pra CS50 Appliance është një pjesë e software të shkarkohen
që ju lejon të drejtuar një sistem operativ të quajtur Linux,
posaçërisht Fedora Linux, në Mac apo PC tuaj.
Dhe ju bëni këtë duke shkarkuar diçka që quhet një hypervisor.
Pra, e gjithë kjo do të dokumentohet në grup problemit 1.
Dhe ju do të udhëhiqet drejt asaj që ju duhet për të shkarkuar.
Por rezultati përfundimtar, nëse ju keni një Mac apo PC, është që ju
download disa softuerit të lirë.
Ju pastaj shkarkoni Appliance CS50, dhe ju them se
free software - hypervisor -
për të drejtuar Appliance CS50 në një dritare në kompjuterin tuaj.
Dhe ajo që ndodh është kjo.
>> Unë kam tani, vini re këtu, atë që duket të jetë një desktop
mjedisit.
Dhe më lejoni të vërtetë tkurret këtë dritare të vetme.
Pra, kjo tani është Mac tim, me një dritare të vogël këtu, dhe brenda
e kësaj dritare ndodh të jetë një krejtësisht të
sistemit operativ të ndryshme.
Në të vërtetë nuk është kjo meny fillimi këtu poshtë, të kujton
Dritare, që ka një bandë e tërë e menutë nën, duke përfshirë
një lidhje me manualin CS50, Dropbox, dhe si.
Dhe çfarë ky mjedis tani është një mjedis standarde
që të gjithë ne tani mund të përdorni, kështu që pa marrë parasysh se çfarë tuaj
kompjuter është, ajo që ju keni instaluar në të, çfarë version
i Mac OS ose Windows që ju jeni running, ne të gjithë tani kanë
Mjedisi njëjtë.
Dhe tani në këtë mjedis, ne mund të filloni të shkruani disa kodin.
>> Kështu që unë jam duke shkuar për të shkuar përpara dhe të hapur një program të quajtur gedit.
Kjo është e krahasueshme me notepad.exe, ose
TextEdit në një Mac.
Dhe kjo është vetëm një e thjeshtë super text editing program
që duket si kjo në shikim të parë.
Tani në krye, unë kam një gamë të bardhë, në fund unë
kanë këtë dritare zi që thotë jharvard aplikim @.
Dhe kjo është për shkak llogarinë e përdoruesit që ne para-krijuar
për të gjithë është quajtur John Harvard.
Ai ka një dosje ku të gjitha dosjet e tij do të shkojnë, dhe
këtu është ku ne mund të filloni të shkruani disa kodin.
Pra më lejoni të shkoj përpara këtu dhe zoom në vetëm pak, dhe unë jam i
do të bëjmë # include , kryesore int (i pavlefshëm), dhe
atëherë unë jam duke shkuar për të bërë printf ("Hello World")
; Kthehen 0.
Tani kjo është e gjitha shumë e zezë dhe e bardhë.
>> Më lejoni të shkojnë përpara dhe të bëjë një gjë të për të mësuar atë që unë jam Gedit
vërtetë për ta bërë.
Lermë të shkoj Save As.
Unë jam duke shkuar për të zgjedhur në anën e majtë këtu jharvard.
Pra, përsëri, edhe në qoftë se ju kurrë nuk kam përdorur Linux parë, sinqerisht
këto ditë, të gjithë prej tyre janë delegimin në thelb
njëjtin lloj të ndërfaqes -
Mac OS, Windows, Linux dhe.
Pra, unë nuk kam zgjedhur dosje jharvard në shtëpi këtu.
Dhe unë jam duke shkuar për të ruajtur këtë file si hello.c.
Pra, në shumë të lartë, I shtypur hello.c; emërtimin e një C
Programi me zgjerimin. C është
çfarë është praktikë e zakonshme.
Dhe unë goditi Save.
Dhe tani ajo është e mirë është se unë kam mësuar në mënyrë efektive Gedit,
se kjo është një programi C.
Vini re se teksti im zezë dhe e bardhë është ngjyra tani koduar, ose
Sintaksa e theksuar, të cilat vetëm tërheq vëmendjen time të
pjesë të ndryshme semantike të programit.
Në krye mbetur atje, si programet e mia të merrni më shumë komplekse, unë jam
do të ketë një përmbledhje të të gjitha gjërat që kam shkruar.
Pra, kjo është ajo deri atje.
Pra më lejoni tani zoom out dhe shkoni poshtë në këtë dritare terminali.
>> Pra, kjo është ndoshta e re për shumë njerëz.
Nëse ju nuk keni përdorur një mjedis command line, ju kurrë nuk kam
përdorur DOS, ose ju kurrë nuk kam përdorur Linux, ose ju nuk keni hapur
Mac OS dritare terminali tuaj, ka shumë gjëra që ju
mund të bëjë me GUI, të tilla si duke treguar dhe duke klikuar, dhe
zvarritje, dhe rënë, dhe si, por përgjithësisht -
sigurisht në botën e shkencës kompjuterike -
duke përdorur një command line, ku ju nuk keni mausin tuaj
në përgjithësi, ju keni vetëm tastierën tuaj, është në fakt një shumë
më të fuqishme se interface, sapo ju të merrni përshtaten me klimën për
komanda të ndryshme.
Dhe ju lloj veten të lirë e që kanë nevojë për pikë dhe klikoni
në çdo gjë.
Pra, në Gedit ne do lloj të keni më të mirë të të dy botët.
Ne mund të drag dhe drop tekst, ne mund të shohim atë
bukur dhe ngjyra koduar.
Por kur vjen koha për të drejtuar programin tonë, ne do të ndonjëherë
vetëm përdorni këtë dritare të vogël këtu.
>> Kështu që unë jam duke shkuar për të shkuar përpara dhe të bëjë këtë.
Në dritaren e poshtme të zezë dhe të bardhë, unë jam duke shkuar për të shkuar përpara
dhe shkruani tingulli.
Dhe tingëllimë është emri i një përpilues.
Është një program që konverton kodin burimor time
në, kështu që, kodi objekt.
0s dhe 1s, që pamë shkurtimisht javën e kaluar.
Kujtojnë që nga java e kaluar, ne kemi premtuar se ne kemi qenë duke shkuar për të
shkojnë nga diçka si kjo - ne duhet të jenë të
diçka si kjo -
dhe kjo sigurisht nuk është diçka që një njeri që po ndodh
për të bërë me dorë.
Pra, në vend që ne jemi duke shkuar për të përdorur një program, dhe se programi në
këtë rast quhet tingëllimë.
Dhe emri i programit tim është hello.c.
Pra, në mënyrë që të hartojë hello.c nga kodi burim në
Kodi objekt, ose 0s dhe 1s, ajo duhet të mjaftojë për të vetëm të bëjë
këtë dhe hit Enter.
>> Mirë, asgjë nuk duket të ketë ndodhur.
Por unë e di tani, ose nga java e fundit, që emri i parazgjedhur
një program, kur i shkruar në C, quhet mend a.out.
Emri më jointeresant ju mund të dalë me.
Një është letër i parë i alfabetit, nga është çfarë ishte
outputted, por kështu të jetë ajo.
Ky është programi im, dhe tani dot plagë, siç do të shohim, është
në fakt vetëm një lloj funksion të sigurisë, sepse
a.out është një program që kam shkruar.
Ajo nuk ka ardhur me kompjuterin tim, kjo është
jo në Program Files.
Kjo nuk është në dosje Zbatime Mac OS s.
Unë duhet të jetë eksplicit super me kompjuter, dhe thonë
ky program, a.out, është në dosjen aktuale,
Lista aktuale.
Dhe mënyra që ju përfaqësoni këtë në një mjedis si ky
po dot përfaqëson çfarëdo folder ju jeni aktualisht in
Dhe kështu. / Thjesht do të thotë a.out kandiduar
në dosjen aktuale.
Dhe unë të drejtuar këtë me Enter, dhe voila, programin tim të parë.
>> Tani, më lejoni të marrë një hap prapa.
Kjo dritare është pak i vogël, dhe të kuptojë se poshtme
majtë të pajisjes këtu është një tjetër ikonë.
Njëra është Chrome, i cili duhet të jetë mjaft e njohur, vetëm një web
shfletuesi brendësi të pajisjes.
Dhe kjo ikonë e zezë dhe e bardhë është vetëm një
dritare terminali të mëdha.
Pra, në qoftë se ajo merr një pak i bezdisshëm të lloj ketë vetëm
kjo fetë vogël pak e një dritare me të cilin për të bashkëvepruar
me programe, ne mund të bëjmë këtë vend.
Dhe tani më lejoni të filloni të shtypni pak më shpejt
të jetë komanda të njohura.
ls.
Pra ls është komanda për listim.
Pra, në një Mac ose Windows OS, ju në përgjithësi do të klikoni dy herë një
dosje dhe pastaj, voila, ju të shihni të gjitha dosjet e ndryshme
dhe dosjet.
Në një mjedis command line, ku ju mund të shkruani
komandat apo tekst, ls është ekuivalent.
Pra, më tregoni çfarë është në këtë directory.
>> Tani ka një bandë e gjëra këtu se është edhe një pak
njohur dhe të panjohur pak.
Por njoftim se vetëm si Windows dhe Mac OS, jharvard
ka një dosje desktop.
Kështu që çdo ikona që janë në tavolinën e punës time të ndodhë
të jetë në atë dosje.
Ka një dosje shkarkime, sende që
Chrome mund të vënë atje.
Dropbox.
Pra, pajisja vjen me ndërtuar në mbështetje për Dropbox
kështu që gjatë semestrit, ju mund të sync me Dropbox tuaj
llogari në mënyrë që të gjitha programet tuaja janë të mbështetura.
Ata janë të qasshme në kompjuterin tuaj të tjera.
Nëse diçka shkon keq ndonjëherë me aplikim, ju mund të
shumë lehtë shërohen nga Dropbox.
Pra, kjo dosje është atje për këtë.
Ka dy fotografi që kam bërë - hello.c
dhe a.out.
Dhe pastaj në të djathtë ka disa dosje të tjera që ne do të
të marrë në drejtim në fund të semestrit, me web
programimit.
Kështu që kur unë bëj. /, A.out, Enter, që është thënë se të shkoni
në directory unë jam në, dosjen aktuale, dhe drejtuar
Programi quhet a.out drejtë atje.
>> Të gjithë të drejtë, kështu që është e bukur dhe e mirë, por kjo nuk është e gjitha që
bindëse për të shkruar një program të quajtur ndihmojë a.out.
Pra, ne mund të bëjë në fakt kjo pak ndryshe.
Pra, në vend të vetëm tingëllimë të rrjedhshëm, hello.c, le të shtoni
atë që quhet një argument command line.
Pra, një linjë komande argument, ose një kaloni në këtë rast, është vetëm
një fjalë apo fraza që ju shkruani në një të shpejtë pas
program që ju dëshironi për të kandiduar.
Pra, në këtë rast, është tingëllimë programi që unë dua të drejtuar,-o
prodhimi do të thotë një fotografi që është nuk quhet a.out.
Prodhimi një file të quajtur hello, dhe të bëjë kështu me hartimin e
fjala e fundit në linjë, hello.c.
Pra me pak fjalë, kjo është një përmirësim shumë margjinale, ku
në vend të kësaj a.out emrin stupidly file,
Unë tani mund të bëjë tingëllimë-o hello, atëherë hello.c, dhe
pastaj goditi Enter.
Asgjë nuk duket të ndodhë, por përsëri shumë si me 0 - kur
asgjë nuk duket të ndodhë që do të thotë asgjë të keqe ka ndodhur -
kështu që le të bëjmë ls tani, Enter, dhe në të vërtetë unë tani
kanë një program hello.
Pra, nëse unë lloji përshëndetje tani, Komanda nuk u gjet.
OK,. /.
Pra, saktësisht e drejtë.
Pra, për shkak të këtij programi kam shkruar, dhe kjo nuk ka ardhur me
kompjuter,. / hello, Enter, do të thotë
Unë tani jam running hello.
>> Pra, kjo është ajo atje.
Tani ajo që ne përfundimisht do të merrni të vijë gjithnjë e më shumë komandës
argumentet që të na lejojë të bëjë më shumë, por vetëm për ato për
cilin kjo mund të jetë vjetruar, më lejoni të vërtetë të shkojnë në një
Lista këtu dhe ju jap vetëm një ngacmues të asaj se si ne të tjerët
mund të shkoni në lidhje me zbatimin botë Hello.
Më lejoni të shkoj në këtu, dhe unë jam duke shkuar për të hapur atë.
Pra në fakt, unë jam duke shkuar për të shpjeguar atë që unë jam duke bërë, në mënyrë që
kjo është e dobishme.
Le mua back up.
>> Kështu që unë kam qenë duke e bërë këtë një kohë të gjatë.
Pra, njoftim mbi të drejtën nuk janë një çift i
directories që janë përmendur kaq të çuditshme source1m dhe source1w.
Kjo konventë është vetëm pa kuptim ne përdorim.
Burimi thjesht do të thotë kodin burim, 1 do të thotë kjo është një javë, dhe
m do të thotë se është e hënë, dhe w të thotë se është e mërkurë.
Pra, asgjë fshehtë atje.
Kjo është vetëm simbol stenografi.
Këto gjëra janë blu dosjet, i njohur ndryshe si
directories.
Unë dua të shkoj në atë dosje tani, dhe në një kompjuter normal
Unë vetëm mund të klikoni dy herë mbi një ikonë dosje dhe
ka të gjitha dosjet e mia.
Por në një mjedis command line, unë nuk mund të bëjë mjaft
që, kështu që në vend, unë kam për të ndryshuar directories me dorë.
Pra, nëse unë lloji CD dhe pastaj source1m, Enter, vërejmë se
menjëhershëm tim, gjëja në të bardhë në të majtë, ndryshoi vetëm.
Dhe kështu në të vërtetë, kur ajo vetëm tha kllapa dhe pastaj
squiggle pak, simbol tildë, që vetëm do të thotë unë kam qenë
në directory John Harvardit shtëpi, Dokumentet e mia e tij,
Fotografi të tij personale.
Por tani ai thotë se në kllapa ~ / source1m.
Kjo thjesht do të thotë që unë jam në një dosje të quajtur source1m
që është në directory John Harvardit në shtëpi.
Pra, nëse unë tani dua të listë fotografi në këtë dosje, të lehtë
pyetje, unë vetëm shkruani ls.
Dhe tani shoh të gjitha dosjet që para-krijuar për sot
leksion, të cilat, ose shumica e të cilave, të ndodhë
të përfundojë në. C.
>> Pra më lejoni të shkoj përpara dhe tani të drejtuar gedit e një programi të quajtur
holloway.c, e cila është shkruar nga disa hacker rastit
në internet, që duket pak si kjo.
Dhe ne nuk do të kalojnë nëpër këtë në ndonjë
detaje, por për ata më të rehatshme, në veçanti, nëse
ju doni të merrni me mend se çfarë ky program bën këtu.
Pjesa tjetër e siguroi, nëse ju jeni më pak ose më shumë të rehatshme,
ne nuk jemi të merrni edhe për këtë gjë e tillë deri në fund të
këtë semestër.
Kjo është ajo që është një shembull i një konkursi C turbullohet, e cila
Mjetet shkruani programin më të fshehtë kërkoni ju ndoshta
mund të mposht njerëz të tjerë të zgjuar, të cilët janë të ngjashme
duke u përpjekur për të shkruar gjëra dhe nxjerr se ata mund të shkruajnë
gjërat më të fshehta se ju.
Pra, kjo nuk është një shembull i një programi të mirë-shkrim nga
Perspektiva e stilit, ky është një shembull i një programi që
fiton një konkurs, për njerëzit duke u përpjekur të
të jetë i paqartë dhe abstrakte.
>> Pra, nëse kemi drejtuar këtë gjë, më lejoni të shkoj në dritaren time terminal,
mënyrë që të flasin.
Pra, ky mjedis i zi dhe të bardhë quhet
dritare terminali në përgjithësi.
Më lejoni të shkoj përpara dhe të përpilojnë atë.
Unë nuk jam duke shkuar për të përdorur tingulli, sepse ky program është një
pak fshehtë dhe ajo ka nevojë për një tjetër
përpilues, një i quajtur GCC.
Por kjo e bën të njëjtën gjë.
Ajo merr kodin burimor të kodit objekt.
Dhe tani, nëse unë të drejtuar, a.out atë program që ju
pashë vetëm e bën këtë.
Në mënyrë që shoku se viti fitoi atë garë.
Gjithsesi, ne nuk jemi duke shkuar në atë drejtim, në vetvete.
>> Pra, le të vërtetë të përpiqet të ngas tani përveç se çfarë ne mund të bëjmë
me këto blloqe themelore të ndërtimit për të bërë më shumë dhe më
programe interesante.
Pra, ne kemi shkruar një program, ne kemi drejtuar një program.
Tani ne fakt mund të thjeshtojë dhe nuk kanë për të shkruar
tingëllimë fjala në ftim.
Kjo rezulton nga programet tona si të merrni më shumë të fshehta, ne mund të, ose
më komplekse në vend, ne fakt mund të drejtuar këtë komandë.
Pra më lejoni të shkoj përsëri në directory e shtëpisë sime, në mënyrë që të flasin, le të më
hequr - rm është komanda hiqni - Jam duke shkuar për të hequr
file i quajtur a.out dhe përshëndetje.
Dhe tani vini re në një mjedis command line, ashtu si në
nje GUI, ju merrni bëri. Unë nuk mund të klikoni një buton edhe pse, unë
duhet të shkruani për y po, y per po.
Dhe tani, nëse unë lloji ls përsëri, njoftim se ata gjelbër
Programet - a.out dhe përshëndetje -
janë zhdukur.
Beware rm.
Ajo mund të bëjë gjëra të këqija, ashtu si ju mund të duke zvarritur
gjërat në plehra tuaj.
>> Pra, tani le të shkojë përpara - dhe unë mund ta bëjë këtë - tingëllimë-o
hello, hello -
Unë jam i mërzitur tashmë shtypur atë komandë.
Edhe pse unë shtypur atë pak më shpejt.
Kështu që ne mund të bëjmë në vend të bëni përshëndetje.
Kështu që bëni nuk është një përpilues.
Kjo është vetëm një program miqësor që vjen me Linux, në këtë
Rasti - Sistemi operativ -
që automatizojnë procesin e hartimit të programeve.
Pra, në vend të kujtohet tingëllimë-o filename dhe
atëherë kështu me radhë, sidomos kur ato linja të merrni më shumë dhe
gjatë, unë mund të shkruaj vetëm të bëjë.
Dhe kjo do të nxjerr nga goja një bandë e tërë e gjëra asaj
ne do të shohim përfundimisht këtë semestër.
Por tani, nëse vëreni I ls lloji, përshëndetje është kthyer në directory time.
Dhe me të vërtetë unë mund të kandidojë atë me. / Hello.
Pra, të bëjë vetëm automatizojnë procesin e running çfarë ishte,
në këtë rast, një shumë më të gjatë, komanda më e ndërlikuar.
Pra, ne jemi duke shkuar për të filluar përdorimin e bërë, vetëm për shkak se kjo është një shumë
më shumë përdorues miqësore.
>> Por tani le të bëjmë një program më interesante
se vetëm thonë hello.
Pra, në programet që kam shkruar deri më tani nuk ka kryesore.
Kjo është vetëm gjëja e parazgjedhur që nis çdo gjë jashtë.
Por ka edhe funksione të tjera atje, si edhe, dhe
stdio.h është gjë që e pamë në krye të tonë
fotografi më parë, dhe kjo është ajo që është e njohur si bibliotekë standarde.
Brenda bibliotekës standarde është një bandë e tërë e funksioneve
se dikush tjetër ka shkruar, dhe ne mund të fillojë duke përdorur këto
Funksionet për të shkruar më shumë
Programe interesante veten.
>> Pra më lejoni të shkoj përsëri në aplikim.
Unë jam duke shkuar për të mbyllur këtë dritare terminali.
Unë jam duke shkuar për të mbyllur gjëra kemi shkruar më herët, dhe thjesht shkoni
në hello.c, dhe vëreni tani unë mund të bëjë në vijim.
Përshëndetje Bota nuk është e gjitha që interesante, unë do të doja të
personalizosh këtë program për veten time.
Pra, në vend të thënë botës, unë jam duke shkuar për të
të shkojnë përpara dhe të them -
Unë mund të shkruani Davidin - por kjo me të vërtetë është lloj i
rrënjësisht njëjtë.
Por le të provoni këtë ide placeholder.
Kujtojnë se në C, në vend në printf, kemi pasur këto
placeholders, dhe ka më shumë se vetëm% d.
Pra, ishte% d, kontrolloni mendje e shëndoshë të shpejtë.
Mirë, numri decimal, kjo është ajo.
Shifra dhjetore, që është e gjitha.
Pra c%, pasi ne do të hasni, do të jetë një karakter.
Vendos një karakter këtu, një letër me anë të një Z,
ose simbol pikësimit.
Një karakter të vetme, f%, di ndokush nga gjuhët e tjera?
Pra, një vlerë lundrues pikë.
Një numër real.
Pra, nuk është një numër decimal - kjo është në fakt një numër i vërtetë me
një pikë dhjetore, dhe disa numri i shifrave të majtë
dhe e drejta e saj.
S%, string.
Se një ne jemi duke shkuar për të parë mjaft shpesh.
Një string, përsëri, është vetëm një fjalë, një frazë, një sekuencë e
karaktere individuale.
Dhe së fundi, Lld?
Pra, kjo është më shumë një rast qoshe.
Gjatë, decimal të gjatë.
Pra, nëse ju nuk doni vetëm një numër i madh se kjo, ju
duan një numër më të madh, ju jeni do të duhet të specifikojë të
kompjuter se ajo është një madhësi të veçantë.
>> Pra, le të shkulje këtë pak pak.
Në vend se vetëm kodin vështirë në Davidit, më lejoni pak
dinamike thonë se% s.
Kështu vënë% s këtu, e cila është një vendshënuesi për një varg.
Atëherë më lejoni të bëjë presje, dhe pastaj "Davidi" mbi këtu.
Tani kjo nuk është e gjitha që intelektualisht interesante,
sepse të gjitha unë kam bërë tani është të krijojë me të vërtetë shumë punë për
kompjuter.
Në vend se të thoni kompjuter bëni këtë të gjithë në të njëjtën kohë, unë jam tani
thënë se e bëjnë këtë dhe të futur një varg këtu përfundimisht, presje,
këtu është se string.
Pra, kjo nuk është një përmirësim të mirë, por kjo është të paktën
një hap drejt një programi më interesante.
Sepse tani, më lejoni të shkoj përpara dhe të bëjë këtë dritare pak
madhe, më lejoni të shkoj përpara dhe të bëjë të kandidojë hello.
Dhe tani,. / A.out nuk është duke punuar, pse?
Të gjithë të drejtë, tani ajo është quajtur hello.
Kështu që përsëri të bëjë, dhe gjithashtu me një tingëllimë-o, u quajt
Programi duhet të jetë diçka më interesante.
Dhe voila: tani ajo thotë përshëndetje David.
>> Të gjithë të drejtë, ende një program budalla.
Pra, tani le të kthehemi në të vërtetë këtu dhe futjen e nocionit
e një variable.
Nuk do të jetë mirë në qoftë se unë mund të deklaroj një ndryshore
cilit lloj është string?
Dhe vlera e variablit të vërtetë vjen nga përdoruesi
atë ose veten.
Pra në mënyrë arbitrare, unë jam duke shkuar për të thirrur s time ndryshueshme, e cila është
vetëm një konventë e zakonshme kur ju keni një ndryshore të quajtur
string.
Unë jam duke shkuar për të bërë shenjë të barabartë, dhe atëherë unë jam duke shkuar për të thirrur një
Funksioni quhet getString.
Pra getString nuk është diçka që vjen ndërtuar në C. Kjo është
një funksion që stafi CS50 shkroi, në të vërtetë vetëm për
këta parë disa javë, për të lehtësuar procesin e
marrë të dhëna përdoruesi dhe duke fituar të dhëna përdorues në formën
e vargjeve, ose numrat, dhe të tilla.
Pra getString është si printf, por padyshim jo
shtypura ajo do të bëjë atë që emrin e saj thotë se, të merrni një varg.
Por për të përdorur getString, ne do të duhet të bëjë një ndryshim
këtu, përtej kësaj.
Pra intuitive, ky program, me shpresë, do të disi
marrë një varg nga përdoruesit, dhe atëherë çfarë është ajo do të bëjë
me atë varg, i quajtur s?
Është vetëm do të shtypura atë, e drejtë?
Ende nuk një program stimulues, sepse e gjitha kjo po ndodh
të bëni është prizë në atë vlerë, ku në% s
thotë se duhet të shkoni.
>> Pra, le të paktën të shihni këtë në veprim.
Më lejoni të ruajtur dhe zoom jashtë.
Tani në dritaren time terminal këtu poshtë, fetë e vogël e një,
më lejoni të bëj sërish të bëjë hello.
Në rregull, dhe ah, damn, unë kam një bandë e tërë e gabimeve.
Më lejoni të lëvizni lart, dhe ne shohim sonë të parë -
kështu që le të bëjë në fakt këtë në një dritare edhe më të mëdha kështu që ju
mund të shihni se sa keq I dehur -
prandaj sigurohuni hello.
Mirë, kjo është një fatkeqësi, e drejtë?
Unë kam shkruar tre rreshta të kodit, dhe
ajo është dhënë 12 gabime.
Pra, pse është kjo?
Pra, për fat të mirë, shumë herë kur ju shikoni shumë, shumë gabime
pështypje jashtë në të njëjtën kohë, është e vërtetë vetëm për shkak se ju keni
hutuar kompjuterin deri këtu.
Dhe mbetet i hutuar nga ajo kohë merr këtu poshtë.
Dhe kështu ajo vetëm fillon fikje dhe pengues, dhe
pështypje nga më shumë sende frikshme se në të vërtetë vlen.
Pra, në përgjithësi, gjithmonë të fillojë me një top.
>> Pra shkallës shumë të lartë më të kuqe,
mesazh gabimi është kjo.
Përdorimi i vargut identifikues padeklaruar, nuk kam
do të thotë standarde në?
Unë nuk e bëri.
Unë do të thotë vargun, por kjo është për shkak se, gjithashtu, string fjala
që unë mbajtur duke përdorur verbalisht vërtetë
nuk ekziston në C ose.
Kjo është diçka që ne do të përdorim vetëm për javën e parë ose dy
këtu, por ajo ekziston në një skedar të quajtur cs50.h.
Kështu që tani për tani, e di se nuk është kjo bibliotekë të tjera që
Stafi i shkroi, kështu që ajo është shkruar më shumë se fundmi
stdio.h.
Por brenda i cs50.h është një përcaktim, një sinonim i
llojet, që krijon ky varg fjalë.
>> Kështu që tani më lejoni të kthehem në dritaren time terminal.
Unë jam duke shkuar për të pastruar këtë rrëmujë tërë nga Ctrl-L. Ne vetëm do të
fshij çdo gjë të pastër, dhe unë jam duke shkuar për të shkuar përpara dhe të bëjë
Përshëndetje përsëri, Enter.
Pra, çfarë ka ndodhur tani?
Tani të gjitha ato gabime shkoi larg.
Pra, çfarë kam bërë me të vërtetë?
Unë e kam mësuar vetëm kompjuter që string ekziston, dhe kjo është
në këtë dosje të quajtur cs50.h.
Pra mos u ankuar, sepse tani ju e dini ku mund të gjeni
Deklarata se funksioni në mënyrë që të flasin.
Ku ajo ekziston në botë.
>> Pra, tani unë jam duke shkuar për të shkuar përpara dhe për të drejtuar hello.
I duket të ketë një lak pafund, ndodh asgjë e.
Kështu që unë duhet të shkruani diçka këtu, të drejtë.
Rreshtin e parë të kodit në programin tim u getString.
Pra, kjo është fjalë për fjalë duke pritur për mua për të marrë një varg.
Pra, në këtë kuptim po, kjo është një lak pafund.
Me sa duket në getString është sjellja e parazgjedhur që ne
shkroi - Stafi -
thotë që vetëm presin dhe presin dhe presin dhe presin dhe presin,
deri kur përdoruesi ju jep një varg duke shtypur diçka in
Pra më lejoni të shkoj përpara dhe lloji në D-nje-v - I-d, Enter.
Dhe nuk është, përshëndetje David.
>> Tani që e bën këtë të duket si kjo është vetëm një akt i?
Më lejoni të shkojnë përpara dhe të shkruani në Tommy.
Shkruani, në rregull, duket të jetë duke punuar.
Punon për Rob, punon për Zamyla, punon për - rregull.
Kështu ajo do të punojë, ka shumë të ngjarë.
Kështu që ajo duhet të shtypura nga çdo gjë që ne fakt japim atë,
dhe ne mund të jetë pak e vështirë këtu.
Le të shohim nëse bëjmë diçka si përshëndetje.
Mund të shkojë gjatë këtu, le të shohim,, copy paste.
Unë nuk jam do të jetë në gjendje për të ngjitur që shumë herë këtu.
Paste, rregull, Shift + Ctrl + V. Pra, çfarë mund të
ndodhë që është e keqe këtu?
>> Mirë, kështu që, segfaults.
Kështu që disa prej jush me prejardhje mëparshme do të dini se
në përgjithësi, duke i dhënë kompjutera shumë të inputeve, kur ata janë
ndoshta nuk ka për qëllim për të marrë emrat e gjata si kjo - Bad
gjëra të ndodhë.
Në të vërtetë, në botën e internetit, shumë, kjo ndodh mjaft,
ku, kur ju jeni të hartonin një faqe interneti, kur ju jeni
projektim Facebook, ju duhet të marrë vendime arbitrare deri
para, si për sa kohë do të dikujt
Facebook emrin jetë?
Ose sa kohë do emri i parë të jetë e dikujt?
Sa kohë do të numrin e telefonit e dikujt të jetë dhe si.
Dhe në qoftë se programuesit bëjnë supozime të këqija, programe thyer
sepse ju përpiqeni duke u dhënë atyre më shumë prodhim, më shumë të dhëna
më tepër, se ata kanë memorie.
Ose RAM ndarë për të, dhe kështu që nëse tani unë hit Enter,
se programi i vërtetë ka punuar, sepse ne kemi qenë në bibliotekë
dhe ne fakt parashikuar këtë rast të veçantë.
Por padyshim këtë semestër, ju do të shkruani të paktën një
program që do të thonë këto fjalë.
Mbani mend këtë javë nga tani, ndoshta dy ditë nga tani.
Faji segmentimit është një gjë e keqe.
Ajo do t'iu referuar diçkaje tuaj duke bërë që kompjuteri
nuk parashikojnë.
Dhe në këtë rast, ju, programues, nuk parashikojnë.
Shumë si ajo që ky grumbull e çorape, ka pasur ndryshme
raste qoshe ne mund të kemi hasur.
Në mënyrë të ngjashme në programet e në qoftë se ju nuk e parashikojnë se sa kohë është
Emri i dikujt do të jetë.
Ose çfarë nëse unë kam një përdorues me qëllim të keq, dhe emri i tij ose të saj është
në fakt shumë e shkurtër, por ata janë vetëm duke u përpjekur
të luajnë me mua?
Çfarë do të jetë sjellja e programit tim?
E pra, në këtë rast, diçka që mund të vërtetë të rrëzimit.
>> Pra, le ta bëjmë këtë.
Në 90 minuta, kjo është një kohë e tmerrshme të gjatë
të bëjë shkenca kompjuterike.
Pse nuk kemi marrë në zakonin e marrjes së një minutë pesë
thyer këtu, dhe kur kemi ardhur përsëri, ne do të zhyten në disa
Programet më komplekse dhe bindëse?
Pesë minuta.
>> Dakord.
Pra, një koment të shpejtë.
Unë jam i tha se pse kjo ishte në ekran para, çfarë
doli nga goja ime ishte cs50.net/rsvp.
Kjo është e saktë. cs50.net/lunch.
Kështu që tani ju mund të provoni RSVPing për këtë në / drekë.
Por, le ta bëjmë këtë tani.
Pra, kjo ka qenë super të shpejtë, super re për një shumë të folks.
Hat të vjetra për disa folks.
Pra, le të Rewind për vetëm një moment, dhe të shohim se si ne mori për të
kjo output Hello World thjesht një moment më parë.
>> Pra, së pari, nuk është kjo Appliance CS50.
Përsëri, pjesë e problemit, software vendosur 1 do të tregojë
ju se si për ta shkarkuar atë, ku për ta shkarkuar atë, se çfarë duhet të klikoni
dhe kështu me radhë.
Dhe pastaj një herë ju do të ndiqni këto udhëzime, ju do të jetë në gjendje
për të maksimizuar dritaren tuaj, dhe Mac ose PC tuaj do të duket një
diçka e vogël si kjo.
Një sfond i zi, një dosje në shtëpi në krye, ku të gjithë
fotografi tuaja të shkojnë, një plehra mund të në të majtë të lartë,
një menu në fund.
Pra, përsëri, mjaft të ngjashme në frymë të Mac OS ose Windows,
edhe pse kjo ndodh të jetë Linux.
Pra, çfarë nuk kemi të bëjmë më tej?
E pra, kemi filluar programe me shkrim.
Dhe kujtoni nga java e fundit që të gjithë ajo merr për të shkruar një
Programi është një editor teksti të thjeshtë,
si Notepad ose TextEdit.
Sinqerisht, edhe ju mund të përdorni Microsoft Word.
Por gjëra të këqija do të ndodhë, sepse kjo është një shumë
rëndë duar zgjidhje për të shkruar një program, plus ajo do të
ruani atë në format të gabuar file.
Por kjo është vetëm një editor teksti, një përpunues teksti, është e gjitha kjo është
e nevojshme për të shkruar një program.
>> Pra, në Appliance CS50, ne mund ta bëjmë këtë në një mënyrë të thjeshtë.
Ne vetëm mund të klikoni në këtë ikonë në fund majtë.
Dhe përsëri, problemi vendosur 1 do t'ju këshillojë për këtë, dhe voila -
ju merrni këtë ndërfaqe zezë dhe të bardhë, ku ne mund të fillojë
shkruar kodin.
Pra, le të filloni të shkruani një program super të thjeshtë përsëri.
Unë jam duke shkuar për të shkuar deri tek File, Save, dhe unë jam duke shkuar për të thirrur
këtë, le të themi, hello2.c.
Dhe unë jam vetëm duke u thënë atë duke klikuar mbi jharvard, e vënë atë
në directory e saj në shtëpi, unë nuk e kujdesit të vërtetë
ku kjo e shkon.
Dhe pastaj të shpëtuar.
Dhe tani unë mund të filloni të shkruani programin tim.
Dhe unë kujtoj nga herët se unë kam për të shkruar int
kryesor (i pavlefshëm).
Zoom në në të majtë të lartë.
Dhe atëherë unë dua të them printf, të marrë dy.
Dhe tani një newline, të japin kuotën ngushtë, të ngushtë
kllapat, pikëpresje.
Dhe pastaj do të shkoj këtu poshtë në dritaren time terminal që është
ngulitur në Gedit, vetëm për lehtësi.
Dhe unë jam duke shkuar për të shkuar përpara dhe të bëjë shkruani hello, por jo
përshëndetje vetëm, hello2.
>> Pra dosjen time quhet hello2.c. Dosjen time për këtë arsye
duhet të quhet hello2, në këtë rast.
Dammit, çfarë nuk kam bërë gabim?
Të gjithë të drejtë, kështu që unë hequr një vijë të qartë, në qoftë se ju kujtohet se çfarë
programeve të mëparshme të duken si.
Por le të shohim nëse ne nuk mund të vë në lojë përveç kësaj.
Për fat të keq, shumica e njerëzve që shkruajnë programet me të cilat
kemi shkruar programe nuk thjeshtojë gjërat të gjithë që mirë.
Pra, ne duhet të lloj cek se çfarë nuk ka fare të bëjë
kuptim këtu dhe të shohim nëse ne mund të kuptoj se çfarë është e gabuar.
Linja e parë nuk thotë në mënyrë implicite deklaruar C
Funksioni Biblioteka printf me int lloji.
OK, kam kuptuar një pjesë të atë.
Por kjo duket të jetë duke aluduar në faktin që kam përdorur printf
gabuar, disi.
Dhe çfarë është ajo ndjenja e gabuar?
Unë thjesht nuk mësojnë kompjuterin se ajo është në një skedar
quajtur stdio.h.
Tani unë vetëm duhet të mësuar përmendësh vetëm tani që është printf
në stdio.h, dhe me të vërtetë nuk do të jetë tjetër
funksionon në këtë dosje të njëjtë që ne do të mësohen për të.
>> Kështu që tani më lejoni të shkoj përpara dhe e goditi Ctrl-L të vetëm e qartë se
larg, përsëritje të bëjë hello2, dhe voila.
Dhe këtë komandë përsëri, më komplekse se ne do të shpjegojë për
Qëllimet e sotme.
Por ajo ka drejtuar tingulli, Dhe tingëllimë merr kodin burim dhe
pështyn nga 0s dhe 1s.
Dhe ata 0s dhe 1s në këtë rast janë quajtur atë?
Mirë, kundërshtojnë kodin.
Dhe fotografi që ata janë në është quajtur, kështu që,
hello2, në këtë rast.
Sepse dosjen time Teksti ishte hello2.c, Enter.
Dhe tani kam marrë dy pikë thirrje, thirrje
pikë, pikë thirrje.
Të gjithë të drejtë, kështu që ne kemi tani mundësinë për të marrë strings,
me sa duket.
E pra, çfarë tjetër mund të merrni nga përdoruesit?
>> Edhe në bibliotekën CS50, ka funksione të tjera që
do të thjeshtojë jetën tonë në këto ditët e para.
GetChar, GetDouble, GetFloat, GetInt,
GetLongLong, getString.
E pra, le të këpusin off lehtë nga këto para.
GetString vërtetë e bën këtë.
Ajo vetëm ulet atje, duke pritur për përdoruesit të shkruani diçka në,
dhe sa më shpejt që unë lloji diçka në dhe hit Enter, atë
bën diçka me atë vlerë.
Pra, le të kthehemi në atë shembull për të parë saktësisht se çfarë
GetString u bërë.
Më lejoni të shkojnë përpara dhe të hapur deri në Gedit, hello.c, dhe kujtojnë
këtë të drejtë para shpërbërjes, kjo është ajo ku ne u ndërpre.
>> Pra, le të bezdis tani këtë përveç në pak më tepër hollësira.
Kështu on line 6, ka dy gjëra
ndodh në këtë moment.
Shenjë të barabartë është ndan pjesën e parë dhe pjesën e dytë.
Pra, në anën e majtë të shenjë të barabartë, ne jemi
thënë string s.
Dhe pastaj, kushtet Vetëm laik, çfarë është string s
bërë, mendoni ju?
Është krijuar një çfarë?
Pra, kjo është duke krijuar një varg të quajtur s.
Tani çfarë do që me të vërtetë do të thotë?
E pra, kjo është rezervuar hapësirë ​​për një varg quajtur s.
Kjo nuk është mjaft e drejtë.
Çfarë është kjo duke bërë?
Kompjutera dhe, siç e dini, kanë hard drives, kjo është ajo ku
fotografi tuaja janë ruajtur.
Kompjuter kanë RAM, dhe kjo është ajo ku programet janë të ngarkuar
ndërsa ata janë running.
Pra, kur ju të klikoni dy herë një ikonë dhe Microsoft Word hap
deri, Microsoft Word është i rrjedhshëm, në mënyrë që të flasin, në RAM, e cila është
pjesa elektronike e kompjuterit tuaj.
Jo fizike, pjesë mekanike që është tjerrje, ku
Të dhënat është ruajtur në përgjithësi një afat të gjatë.
Pra string s është thënë shumë e shumë kompjuter jepni
RAM të mjaftueshme për të përshtaten një varg.
Tani që është pak e një oversimplification, sepse
sa i madh është vargu do të jetë?
Edhe ne fakt nuk e di ende, kështu që në javët që do të vijnë
ne do të në fakt tërheq mbrapsht shtresë që është string dhe
ne do të ju tregojnë se çfarë është me të vërtetë.
String, tani për tani, është vetëm një thjeshtësim bukur e botës sonë.
Por string s deklaron një varg quajtur s, tani për tani.
Deklaron një varg.
Ajo ruan pak hapësirë ​​në RAM për vargun e përdoruesit është
gati për të tipit.
>> Tani le të shohim në të djathtë të shenjës të barabartë.
Pra, ai thotë se getString ().
Dhe një mendje e shëndoshë pak kontroll.
Fakti se nuk ka asgjë brenda e kllapa
nënkupton Çfarë Rreth getString?
Ajo merr asnjë argumente.
Kjo është, ju nuk mund të ndikojë në sjelljen e saj në asnjë mënyrë.
Çdo herë që e përdorin atë, ajo do të marrë një varg dhe kjo është ajo.
Në të kundërt, printf, shpresojmë se sjellja e tij nuk
të ndryshojë në çdo kohë.
Përndryshe, kjo është një funksion goxha të padobishme nëse shtypje
ajo bën të njëjtën gjë.
Në qoftë se ajo gjithmonë e Davidit shtyp ose diçka
arbitrare të gjithë kohës.
Pra printf ka kuptim që të ketë një argument.
GetString nuk ka të vërtetë nevojë për një argument, sepse kam kërkuar
për të marrë një varg nga përdoruesit dhe kjo është përdorues i cili do
të furnizimit me dinamizmin duke shtypur me shkronja te ndryshme
çdo herë në tastierë.
>> Pra, çfarë do të bëni getString përfundimisht?
Mendoni se si kjo kuti të vogël të zi.
Dhe kjo kuti e zezë merr asnjë kontribut, por kur ju zhurmë në
ajo, ajo pështyn nga një varg që përdoruesi ka shtypur in
Dhe fakti se ka një shenjë të barabartë nuk do të thotë të
çfarë është nxjerr nga goja në të djathtë dhe ruajtur atë brenda
çfarë është në të majtë.
Pra këtu shenjë të barabartë, ai në fakt nuk do të thotë
barazia, kjo do të thotë më tepër teknikisht detyrë.
Merrni vlerën në të djathtë dhe e vuri atë në
ndryshueshme në të majtë.
Pra, kjo është e gjitha që po ndodh atje.
>> Tani në linjë 7, ne jemi quajtur printf.
Pra printf shpresojmë se po bëhet një mërzitshëm pak deri tani.
Pra shkruar një varg formatuar.
Çfarë string?
Printuar jashtë, "h-E-l-l-O,% s
! \ N ".
Të gjithë të drejtë, kështu që çfarë dua të plug-in për% s?
Fjalë për fjalë, çdo gjë është ruajtur në s.
Pra, në këtë rast, kontrolloni mendje e shëndoshë pak, sa argumente ka
printf marrë?
Mirë, kam dëgjuar një të tillë.
Kam dëgjuar një herë.
Dy, kam dëgjuar dy.
Dhe si për tre?
Mirë, tre?
Shkëlqyer.
Tre përgjigjet e mundshme, vetëm njëri prej tyre është e saktë.
Pra argumente sërish ndikojnë në sjelljen e një funksioni.
Në të kaluarën, printf ka marrë vetëm një argument.
"Hello World" ishte një argument i vetëm.
Megjithatë, tani, vëreni ku kjo është e presje.
Kjo presje është jashtë kuotën / mbyll thonjëzat, që do të thotë
hey printf, këtu vjen një argument të dytë.
>> Pra, presje në shumicën e gjuhëve të programimit
argumente të veçanta të shumta.
Pra, përgjigja këtu nuk është padyshim një, sepse
nuk është kjo presje.
Pra minimalisht, printf është me sa duket duke marrë dy
Argumentet këtë kohë.
Por mundësia për një pyetje mashtrim këtu është ajo që
në lidhje me këtë presje?
A nënkupton kjo se nuk ka aktualisht tri argumente?
Kjo, kjo dhe kjo.
Kështu asnjë, sepse që presje është brenda i thonjëza, e cila
do të thotë se është me të vërtetë vetëm një estetike të gjuhës angleze.
Ajo ka asgjë të bëjë me numrin e
Argumentet në këtë program.
Pra, kjo presje është jashtë kuotat e dyfishtë.
Dhe pastaj do të ktheheni 0.
Rendit vetëm tani për tani le të marrin këtë një besim më të
sot, dhe vetëm e di se kur funksionet janë bërë ekzekutimin e
rreshta të kodit, ata duhet të kthehen në përgjithësi disa vlera.
Në këtë rast, vetëm sepse kryesor duhet të kthehet një int,
kjo është vetëm mënyra se si funksionon gjuha C.
>> Kështu sepse asgjë nuk shkoi keq, ndjehet si ky program të
mirë, unë vetëm e vështirë koduar në kthim 0.
Por në të kundërt, dhe unë jam duke shkuar për të shkruar këtë në kodin pseudo
tani, ashtu si bëri Jozefi, kur ne e bëmë çorap
Shembulli javën e kaluar.
Nëse diçka shkoi keq - kjo nuk është kodi aktual - shkova
gabuar, pastaj të kthehen, le të themi, 1.
Tjetër kthim 0.
Pra, kjo është ajo ku ne jemi duke shkuar me këtë.
Kjo nuk është e vërtetë kodi C, vetëm pseudokod.
Por kjo është se si ju mund të ktheheni
vlera të ndryshme të mundshme.
Por tani për tani unë jam vetëm duke shkuar për të shkuar përpara dhe të kthehen 0.
Të gjithë të drejtë, ndonjë pyetje deri më tani në funksionalitetin, sintaksë,
apo si?
Po, në prapa.
>> Audienca: [padëgjueshme]
DAVID Malan: A mund të flisni pak louder?
Pse e bëri këtë program 0 kthimit, dhe?
Audienca: [padëgjueshme]
DAVID Malan: Oh, kjo është për shkak se unë kam dembel, sorry.
Nuk ka përgjigje të mirë akademike, kthehet 0.
Unë mund të lloj të shpëtuar këtë, duke thënë teknikisht C, nëse kryesore
në mënyrë eksplicite nuk kthehen një vlerë, 0 do të kthehet
automatikisht për ju.
Që është e vërtetë, unë nuk jam vetëm mbulimin.
Por, unë duhet të ketë bërë atë në këtë mënyrë.
Jo takeaway interesante se sa të tjera se gabimi im.
Po?
>> Audienca: Zakonisht kur ju shkruani në zbrazëti, që do të thotë ju
nuk kthehen diçka.
DAVID Malan: Correct.
Nëse në vend të kësaj, ju specifikoni para emrin e një funksioni, për
shembull këtu, i pavlefshëm, atëherë funksioni
nuk kthehen asgjë.
Dhe për këtë arsye unë do të them vetëm, kthimin ose asgjë në të gjitha,
dhe që do të jenë në përputhje.
Dhe ne do të kthehen në atë.
Dhe vetëm FYI, një prej kap me të mësuarit
programimit në një botë që ka qindra libra dhe
qindra faqet e internetit atje është që ju do pa ndryshim
shikoni sintaksë të ndryshme në libra të ndryshëm
nga njerëz të ndryshëm.
Kuptojnë që ne do të bëjmë çmos në seksione dhe leksione të jenë të
konsistente.
Por ndonjëherë ju do të shihni sintaksë kontradiktore.
Pra, sa herë që në dyshim, thjesht pyesni.
Dhe në përgjithësi, ne do të kujdesemi në ligjërata dhe seksioneve të
pothuajse gjithmonë të pranishëm atë në rrugën e drejtë.
Dhe unë them pothuajse gjithmonë, sepse rasti në pikë.
Pyetje të tjera?
>> Audienca: A% s ekziston jashtë aparatit?
DAVID Malan: A% s ekziston jashtë aparatit?
Po.
Pra,% s ka të bëjë me faktin C. se ne jemi duke e përdorur atë në
aplikim në thelb ka të bëjë asgjë me
tiparet e gjuhës ne jemi duke përdorur.
Në të vërtetë, javën e kaluar kur kemi përdorur Mac tim, kam shkruar
Kodi C në Mac tim.
Unë mund të ketë përdorur% s në Mac tim, dhe ju mund të përdorni atë në
kompjuter Windows tuaj nëse keni të instaluar një përpilues, si
Studio vizuale nga Microsoft.
Pra,% s.
Ne jemi duke bërë gjithçka në brendësi të këtij dritare sot ka për të
bëjë me C. Dhe thellësisht asgjë të bëjë me
sistemit operativ në fjalë.
Nga ana tjetër, dritare terminali zezë dhe e bardhë - kur
Unë jam i shtypur gjëra të tilla si ls, dhe RM, dhe cd -
që ka të bëjë me sistemin operativ dhe
lundrimit përreth.
Po.
Audienca: Unë do të thotë në bibliotekë, bibliotekën CS50.
DAVID Malan: Mirë, kështu që nëse ju thotë vargun fjalen, se
ekziston vetëm në bibliotekë CS50, e saktë.
Kjo nuk ekziston në C vetë, dhe në të vërtetë në një çift
javësh ne do të hedhin larg bibliotekën CS50 dhe të fillojnë të
duke bërë gjëra nga zeroja veten, në mënyrë që të flasin.
Pyetje të tjera?
Po.
>> Audienca: [padëgjueshme]
DAVID Malan: Pyetje e mirë.
Janë rast të ndjeshme komandat?
Dhe më lejoni të bëjë një dallim këtu.
Pra, komandat janë përgjithësisht gjërat që ne do të shkruajnë në
poshtme e dritares, në dritaren e terminalit.
Asgjë deri këtu do të jetë deklarata ose kod C.
Por në të dyja rastet, përgjigja është e njëjtë, po.
Të dyja këto mjedise, kodi C në krye dhe
Sistemi operativ komandë Online
fund, janë raste të ndjeshme.
Kështu që ju duhet me germa kapitale getString me G,
Kapitali S. Ju duhet të shkruani printf në të gjitha Fjala.
Ju duhet të shkruani në të gjitha ls Fjala.
Pra, në pothuajse çdo situatë kjo, semestri rast do të, në
, fakt çështje.
Po.
>> Audienca: [padëgjueshme]
DAVID Malan: Ah, kështu rregull, çfarë nëse kemi pasur një skedar
quajtur hello.d.
Pra, ajo rezulton nga D është një gjuhë programimi.
Dhe kështu në disa raste, ne në fakt mund të shkruaj një program në
këtë dosje dhe kanë përpiluar në atë mënyrë.
Ne mund, dhe në fakt, përgjigja e shkurtër është, unë nuk e di.
Pra, ne jemi duke shkuar për të bërë këtë.
Më lejoni të shkojnë përpara dhe për të krijuar një skedë të re.
Dhe tjerr këtu, sinqerisht në përgjithësi, është kur ndonjë dyshim
këtë semestër, dhe ju keni aplikim tuaj ose kompjuter
të hapur, të shkojnë përpara dhe të provoni diçka.
Kështu që unë jam duke shkuar për të ruajtur një skedar të quajtur hello.d.
Ruaj këtë.
Dhe unë jam duke shkuar për të drejtuar bërë përshëndetje Enter.
Ajo dukej të dëshmoj se c ishte më shumë gjasa
se d, në këtë rast.
Pyetje të tjera.
Po.
>> Audienca: [padëgjueshme]
DAVID Malan: Mirë, le të themi se një herë më shumë.
Audienca: [padëgjueshme]
DAVID Malan: Si do të ju shkoni në lidhje me diagnostikimin se ose
problemeve se?
Pra ka shumë të ngjarë, sepse ata janë gjuhë të ndryshme,
ka shumë të ngjarë që ju do të merrni një plotësisht
Programi ndryshe outputted.
Ju do të merrni mesazhe krejtësisht të ndryshme gabim.
Dhe gjithashtu vetëm në aspektin e dizajnit, ndoshta kjo do të jetë një
Vendimi i varfër dizajn të shkruar dy të ndryshme
gjuhë me fotografi pothuajse identike, në emrin
Lista e saktë të njëjtën, duke përdorur një
mjet automatike si të bëjë.
Kështu që unë mund të shtyjë mbrapa dhe thonë se në 15 vjet për të bërë këtë,
kurrë nuk e bëri atë gabim.
Mund të ndodhë.
Por ka vetëm të ndryshme, unë mendoj,
mbrojtjet logjistike në vend.
Plus mesazhet e gabimit që do të pasojnë, që do të
ta zbulojnë se çfarë çështje është.
Por një rast mundur qoshe.
>> Të gjithë të drejtë, kështu që le të prezantoj vetëm nja dy të tjera
Karakteristika këtu tani, kështu që ne mund të fillojë ndërtimin e deri në më shumë
Programi dhe më komplekse.
Pra, para së gjithash, matematikë.
Pra shembuj matematikës janë vetëm lloj i lehtë në javën e parë.
Kjo nuk do të thotë se të gjitha programimi është në lidhje
matematikë.
Sigurisht, të kuptuarit karakteristika të ndryshme të
matematikë, algjebër në veçanti, është
mjaft e rëndësishme këtu.
Në klasat më të larta të nivelit CS, algjebër lineare,
gur, dhe si.
Por shumica e kuptojnë se çfarë ne do të bëjmë këtë semestër nuk redukton
për matematikë, dhe sigurisht jo me aritmetike, në vetvete, por me të vërtetë
të vetëm logjikës dhe të menduarit të kujdesshëm.
Dhe kështu këtë lidhje që shkenca kompjuterike ka pasur gjatë,
veçanërisht në nivelin e shkollës së mesme, me matematikë, është një
pak mashtruese.
Sepse shumica e programeve që do të shkruaj, me të vërtetë, janë
lloj i nivelit më të lartë dhe të përqëndrohet në zgjidhjen e problemeve që,
sigurt, mund të përdorin disa Përveç kësaj, zbritje, dhe të ndryshme
formula matematikore apo si,
por në fund të ditës, ajo është rreth të menduarit dhe të mos
vetëm zbatimin e asaj që ju mund të keni bërë në si një TI
Llogaritësi në shkollë të mesme.
>> Pra, me tha se, tani le të bëjë diçka me këto
operatorët matematike që ekzistojnë në mënyrë që ne mund të udhëtim
mbi disa nga aspektet themelore të programimit, ose në
Në këtë rast C. Pra, ka, si CS50 biblioteka sugjeruar,
dhe sot ne jemi vetëm duke përdorur getString - dhe në një moment
ndoshta një funksion tjetër -
por ka të dhëna të ndryshme lloje në një kompjuter.
Në fund të ditës, vetëm e di kompjuterat 0s dhe 1s.
Por kujtojmë se javën e kaluar kemi biseduar në lidhje me sistemin binar
në përfaqësimin numrat, si numrin 0 dhe 1, dhe 2,
të gjitha mënyra për deri në 8, si në video Nate-së.
Dhe atëherë ne mund të mbështeteni shumë më të larta si ne
bëri në skenë këtu.
Por në qoftë se ju doni për të përfaqësuar jo vetëm numrat, por shkronja,
ne, njerëzit, kanë për të dalë me disa arbitrare
konventa, të cilit, nëse në fund të ditës të gjithë kompjuterin tim
ka është aftësia për të shprehur 0s dhe 1s, edhe ne do të mirë
fillojnë standardizimin modelet e 0s dhe 1s që përfaqësojnë
gjëra të ndryshme.
Një model i 0s dhe 1s që përfaqëson një letër.
Modelet e 0s dhe 1s që përfaqësojnë z letër.
Modelet e 0s dhe 1s që përfaqësojnë blu ngjyra, ose
kuqe, ose si.
Ne duhet të përdorim të gjitha këto 0s dhe 1s për të shprehur veten në
kontekste të ndryshme, në mënyra të ndryshme që nuk janë të
domosdoshmërisht numerike.
>> Pra, në aspektin e përfaqësimit, C ka lloje të ndryshme të të dhënave,
dhe ne kemi parë një nga këto deri më tani.
Ne pamë int, dhe njoftim se çfarë nuk është në ekran
tani është string.
String nuk, në fakt, ekziston në C. Përsëri, kjo është një
thjeshtim ne jemi paraqitur për herë të parë
Nja dy javë.
Një char është një karakter individual.
Një noton është një numër real, me një pikë decimale dhe numra në
të majtë dhe të drejtën e saj.
Një dyfishtë është ajo, për ata me sfond prapa paraprak?
Pra, një të dyfishtë është dy herë diçka.
Shton dy herë më shumë saktësi.
Pra, çfarë do të thotë kjo?
Pra, në secilin prej këtyre rasteve, bota ka lloj të standardizuar
sa bit janë përdorur për të përfaqësuar
secilën nga këto gjëra.
Pra, nëse ju keni shikuar videon ASCII Nate-së tashmë për pjesën
i pset 0, ose më vonë këtë javë ju do, ju ndoshta do të dini
se ASCII -
përfaqësime karakter -
përdorin sa bit?
Dhe ju mund të mbani mend edhe nga demo tonë javën e kaluar se si
shumë njerëz ishin në skenë.
Pra 7 ose 8, zakonisht.
Pra në përgjithësi 8, dhe ka diçka të quajtur si zgjatet
ASCII që përdor të gjitha 8 bit, në vend të 7.
Por në përgjithësi, ne flasim në fuqitë e 2, kështu që në këtë rast, 8.
Pra, një char në një gjuhë programimi është zakonisht 8 bit.
Kështu që një int përgjithësi është 32 bit.
Një noton në përgjithësi është 32 bit.
Një dyfishtë në përgjithësi është 64 bit.
Dhe çfarë do të thotë kjo?
Kjo do të thotë që ju mund të përfaqësojnë numrat më të mëdha, ose në rast
e numrave reale, ju mund të ketë numra shumë më tepër pas
Vendi decimal.
Një saktësi shumë më tepër, në këtë rast.
Tani një kohë të gjatë është quajtur fat të keq.
Pra, ka një int cila është 32 bit.
Ka një kohë të gjatë që është, nope, 32 bit.
Dhe një kohë të gjatë e cila është 64 bit.
Megjithatë, disa prej atyre që janë të ndjeshme konteksti, kjo varet
çfarë lloj i kompjuterit që ju keni.
Pra, në përgjithësi, ne do të specifikojë në një detyrat e shtëpisë ose në një quiz kur
ai në fakt ka rëndësi.
Por çështja është se ka të gjitha këto të ndryshëm
përfaqësime këtu.
>> Pra, le të zhyten në fakt në një program.
Në vend se të shkruaj këtë një nga zeroja, më lër të shkoj përpara
dhe e hapur deri nga kodi burim sotme - të gjitha prej të cilave është
online - në qoftë se ju doni të kallajxhi rreth online, ose kthimi në
Mërkurën me aplikim në kompjuterin tuaj, udhëzime
për të cilat do të lidhë në faqen e kursit së.
Këtu është një program i thjeshtë super.
Por atë e mori një diçka të vogël të ri në krye se
ne nuk kemi parë.
Një tërësi shumë të linjave blu të tekstit.
Pra, këto linja blu paraqesin komente.
Pra, kjo është mjaft e dobishme në një program të jetë në gjendje për të shkruar
disa komente për veten, apo për kolegët, apo miqtë, ose
miqtë mësimdhënies, se lloj i përshkruajnë se çfarë po ndodh në
këtë file, por nuk kanë asgjë të bëjë me kodin C vetë.
Asgjë të bëjë me programin funksionalisht, kjo është vetëm
estetikë.
Pra, në mënyrë që ju ta bëni këtë në C është që ju zakonisht fillojnë tuaj
comments with / *, dhe ju të përfundojnë me komentet tuaja
* /.
Dhe në qoftë se jeni të vërtetë anal dhe si për të nxjerrë lloj të fotografive,
atëherë ju do të vënë një të tërë shumë yje, ju do të bëni një
kuti të vogël si kjo.
Por asnjë nga çështjet që.
E vetmja gjë që ka rëndësi është e parë
dhe shumë të fundit.
Kjo është ajo që quhet një koment multi-line.
Dhe kjo është vetëm Konventa e njeriut për të shpesh bëjnë yjet dhe kuti
gjëra si kjo në qoftë se ju keni një shumë kohë të lirë.
>> Pra, pasi ju kam shkruar në disa komente, në përgjithësi, të vijë
guxim aktuale e programit.
Ja njohur tonë # include .
Dhe vetëm të shpejtë, kjo është e nevojshme apo jo e nevojshme?
Audienca: e nevojshme.
DAVID Malan: Pra, kjo nuk është e vërtetë e nevojshme.
Pra, pse, pse, nuk është e nevojshme?
Kështu që nuk ka printf.
Vërtetë.
Të gjithë ne jemi duke bërë në këtë program është matematika.
Kështu që unë në fakt mund të fshini atë.
Pra, ju nuk gjithmonë duhet të përfshijë asgjë në
në krye të një programi.
>> Pra, le të lehtësuar këtë një pak.
Dhe tani vini re se çfarë ky program bën.
Jo shumë e interesit.
int x = 1.
E pra, çfarë është kjo duke bërë?
E pra, mendoj se përsëri në modelin mendor nga përpara.
Anën e majtë dorën e kësaj shprehje bën çfarë?
Krijojë hapësirë ​​për një numër të plotë.
Pra, si shumë hapësirë?
E pra, ne të ndodhë që të dini tani që ajo është 32 bit.
Më parë, një varg ishte teknikisht 32 bit, por më shumë
në se në të ardhmen.
Por një int është 32 bit.
Pra kjo shprehje në të majtë këtu, int x vetëm thotë hey
sistemit operativ, jepni 32 bit RAM -
njohur ndryshe si 4 bytes e RAM -
në mënyrë që unë mund të vënë një numër të plotë në atë hapësirë.
Çfarë integer nuk ju doni të vendosni?
E pra, vetëm numri 1.
int y merr 2, bën të njëjtën gjë e saktë, edhe pse
numër është i madh, në aspektin e madhësisë së saj.
Numri në vetvete është ende vetëm 32 bit.
Kjo është vetëm model i bit është e ndryshme për
përfaqësojnë 1 kundrejt 2.
int z tani thotë se më jepni një tjetër bit 32, e quajti atë z, dhe vënë
përmbledhje e 1 dhe 2 në atje.
Kështu që tani po duket z ruajtjen e vlerës 3,
dhe pastaj kthehen 0.
>> Tani ky program, e bën atë të bëjë asgjë me interes?
Pra, ai në fakt nuk bën asgjë interesante, në ndonjë
kuptim, sepse pse? Është bërë disa matematikë.
Por kjo nuk është kthyer përgjigje, e drejtë.
Është kthyer 0.
Kjo nuk është shtypje përgjigjen.
Pra, ky program është në thelb i pavlefshëm, si ajo
qëndron tani.
Është duke bërë disa punë.
Ajo do të marrë disa numrin e sekondave, ose microseconds, në
drejtuar, por kjo nuk është e vërtetë për ta bërë asgjë
të dobishme për njeriun.
>> Pra, le të vërtetë tashmë e hapur math2, ku tani unë jam në të vërtetë
shtypjen e rezultatit.
Pra, kjo shumë mund të nxirret nga shembujt e tona të mëparshme.
Në qoftë se unë dua të bëj disa matematikë të thjeshtë, int x = 1, y
= 2. Z është 1 plus 2 tani.
Çfarë është kjo do të shtypura nga qartazi?
Vetëm 3.
Pra, mendje e shëndoshë të shpejtë kontrolloni.
Më lejoni të hyni në këtë directory.
Pra, cd source1m.
Më lejoni të shkojnë përpara dhe të bëjë shkruani math2.
Nuk ka mesazhe gabimi doli jashtë, kështu që më lejoni të kandidojë -
Nuk a.out--let drejtuar math2. Enter.
Dhe në të vërtetë, ai printuar nga 3.
E pra, le të marrin një vështrim në një variant të kësaj.
Në math3.c, ne tani kemi këtë shembull këtu.
>> Pra, kjo lloj i interesante.
Pra, në këtë këtu, përgjigjja do të merrni 1 pjesëtuar me 10,
dhe vini re unë kam deklaruar atë si një noton.
Pse unë dua që ajo të jetë një noton?
E pra, kjo është një pjesë.
Ajo do të jetë një numër real.
Pra, kjo do të jetë 0.1, me shpresë - 10%, në këtë rast.
Dhe çfarë kam pas dua të shtypura jashtë?
E pra, kjo përgjigje.
E pra, le të ngas përveç këtyre parë.
Pra, në anën e majtë, mund të deklarojë një
noton, e quajti atë përgjigje.
Në anën e djathtë, e ndarë 1 nga 10 dhe vendos se
përgjigjen brenda të ndryshueshme.
Tani, kjo linjë duket pak më i fshehtë.
Por vëreni disa tipare të njohura. % Do të thotë këtu vjen një
placeholder.
f thotë këtu është një vlerë lundrues pikë, vetëm një e vërtetë
numër, diçka me një pikë dhjetore.
0.2 Mjetet çfarë?
Çdokush e di nga përvoja e mëparshme?
Dy numra pas presjes dhjetore.
Pra, ne nuk e kemi parë këtë më parë, por kjo është vetëm një mënyrë për të
ushtruar një kontroll pak më shumë mbi printf dhe
duke thënë se nuk më japin 30 pikë pas presjes dhjetore,
vend jepni vetëm 2.
>> Dhe pastaj le të shkojë përpara dhe të drejtuar këtë.
Pra, të bëjë matematikë 3, dhe tani më lejoni të kandidojë matematikë 3, Enter.
Dhe kjo nuk është e drejtë.
Ne duket se kanë hasur bug tonë të parë të mirëfilltë.
E pra, ndoshta unë nuk jam vetëm në kërkim mjaft të ngushtë.
Pra më lejoni të shkoj deri këtu, dhe më lejoni të vënë 20 decimal
Vendet pikë atje.
Dhe më lejoni të përpilojnë këtë, të bëjë math3, të drejtuar.
Goxha i sigurt 1 nga 10 e ndarë nuk është 0.
Pra, çfarë po ndodh?
E pra në rregull, kështu që në fakt nuk ka të bëjë me këtë.
Kjo është një mendim i mirë.
Kjo është me të vërtetë vetëm një rastësi
se ne jemi bërë këtë.
Por vetëm për të provuar se kjo nuk është ajo, unë do të
kthehet diçka të rastit.
A nuk e bëjnë këtë në shtëpi, sepse ajo është vetëm e gabuar.
Por të bëjë math3, më lejoni të drejtuar atë.
Pra, ka të bëjë asgjë me atë që unë jam kthyer, ka të bëjë vetëm
me atë që unë jam shtypje.
Por kam dëgjuar atë këtu.
Çfarë?
Audienca: Pra, ne kemi nevojë për të shkruar numrat në
ndarje si -
>> DAVID Malan: Mirë mirë.
Pra, ne kemi nevojë për të shkruar numrat pjesëmarrëse në
Ndarja këtu si pikë lundrues vlerëson veten.
Pra, problemi këtu është si më parë: C, si me një shumë të
gjuhë, ka lloje të ndryshme të të dhënave.
Dhe këto lloje të të dhënave, për shembull, janë këto këtu.
Dhe llojet e të dhënave në fjalë këtu, kur unë lloji 1 dhe pastaj unë
lloji 10, ndoshta janë lloje të të dhënave çfarë?
Pra, kjo është ndoshta një int, e drejtë?
Kjo nuk është aspak një float, sepse nuk ka asnjë decimal
pika ose diçka të tillë.
Pra me të vërtetë, unë kam një int ndarë nga një int.
>> Pra Gjëja interesante në lidhje matematikë dhe një kompjuter është që
në qoftë se ju jeni duke bërë ndarje duke përdorur integers -
1 ndarë nga 10, po është 0.1.
Megjithatë, kur ju jeni ndarë një numër të plotë nga një numër i plotë,
Përgjigja duhet të jetë gjithashtu një numër të plotë vetëm për shkak se, tani për tani.
Dhe çfarë është implikimi pastaj?
E pra, në qoftë se përgjigja është e ndarë 1 nga 10 e barabartë me 0,1, çfarë
kompjuteri do të bëjë është që unë nuk kam asnjë ide se si për të
përfaqësojnë 0,1, sepse kjo është një vlerë lundrues pikë nuk, një
integer, por do të pres jashtë gjithçka pas
Pika decimale dhe vetëm ju tregojnë 0 në fillim.
Dhe fakti se ajo është shtypjen si një pikë lundrues
vlerë, kjo është vetëm një gjë estetike.
Kjo është për shkak se unë jam detyruar kompjuter për të shkruar këtë si një
lundrues vlerë pikë.
Dhe me të vërtetë unë kam shpallur atë si një float, por është matematikë
ndodh gjatë këtu.
>> Pra më lejoni të vërtetë rregullojmë këtë në një mënyrë mjaft të lehtë.
Pse nuk mundem të bëjë vetëm 10,0 dhe 1,0, edhe pse
teknikisht unë mund të merrni larg me vetëm duke bërë një nga ato.
Tani më lejoni të shkoj përpara dhe të bëjë math3.
Më lejoni të shkojnë përpara dhe tani të drejtuar math3, Enter.
Dhe tani, oh djali.
Tani ne kemi një problem të ri krejt.
Pra, më mirë, e drejtë, ne jemi më afër 0.1, por ajo është e qartë
gabim këtu?
Nëse ne kemi qenë të gënjyer për ju për vite me rradhë, e drejtë?
1 i ndarë nga 10 është në të vërtetë nuk është mjaft 0.1, kështu që çfarë është
me të vërtetë po ndodh këtu?
E pra ju mund të lloj arsye nëpërmjet kësaj logjikisht.
Në qoftë se një kompjuter ka vetëm një sasi e fundme e RAM për të filluar
me të, dhe në të vërtetë një kompjuter i vetëm është duke përdorur 32 bit për një
lundrues vlerë pikë, ajo qëndron për arsye se me një
numër i caktuar i bit, 32 në këtë rast, po, ju mund të
paraqesin një shumë të gjëra.
Ajo në fakt është katër miliardë vlera të ndryshme mund të jenë të
përfaqësuar me 32 bit, 2 të 32, por është ende e fundme.
Pra, problemi është se ka një numër të pafund të vërtetë
numra, të drejtë.
Nëse ju jepni një numër real, unë gjithmonë mund të gjeni ju një
pak më e madhe, pak më pak, vetëm nga tweaking
Numrat që janë pas presjes dhjetore.
Pra, nëse ju nuk keni një numër të pafund të bit, ju
ndoshta nuk mund të përfaqësojnë një pafund
Numri i numrave reale.
>> Pra, nuk është kjo pasaktësi e natyrshme në kompjuterë, dhe
kjo merr morën gjatë gjithë kohës edhe në thjeshtë e
Programet e pëlqejnë këtë.
Por edhe në disa probleme shumë të vërteta të botës si.
Në fakt, le të marrin një moment për të vetëm të marrin një vështrim në
diçka që në të vërtetë ka ndodhur në realitet.
Ne do të shikojnë vetëm nja dy minuta e parë, dhe pastaj
ne do të postoni online link.
Por kjo është besëlidhja që vetëm ajo mund të shkojnë keq, shumë
sinqerisht, në një mënyrë shumë tragjike, kur këto gjëra nuk janë
vlerësuar ose vetëm ne njerëzit bëjnë gabime kur është fjala për
këto lloje të dhënat e zbatimit të kompjuterëve modern.
>> [Duke luajtur VIDEO]
-Ne tani kthehet në fatkeqësi inxhinierike në mrekulli Moderne.
Kompjuter.
Ne kemi ardhur për të pranuar të gjitha problemet shpesh frustruese
që shkojnë me ta.
Bugs, viruset, dhe glitches software janë çmime të vogla në
paguajnë për lehtësi.
Por në të lartë ushtarake të teknologjisë së lartë dhe me shpejtësi dhe hapësirë
aplikacionet e programit, problemi më i vogël mund të jetë
zmadhuar në fatkeqësi.
Më 4 qershor 1996, shkencëtarët të përgatitur për të nisur një pa pilot
Ariane 5 raketa.
Ajo mbante satelitë shkencore të dizajnuara për
vendosë saktësisht se si fusha magnetike e tokës
ndërvepron me erërat diellore.
Raketa u ndërtua për Agjencinë Hapësinore Evropiane dhe
hiqet nga jashtë objektit të tij në bregdetin e Francës Guajana.
>> -Në rreth rreth 37 sekonda në fluturimin, ata së pari
diçka e re po ndodhte gabuar, që ishin nozzles
swiveling në një mënyrë që ata me të vërtetë nuk duhet.
Rreth 40 sekonda në fluturimin, në mënyrë të qartë e automjeteve
ishte në telashe, dhe kjo është kur ata e mori vendimin për
shkatërrojë atë.
Një oficer i sigurisë varg me guxim të jashtëzakonshme presion
button, shpërtheu raketa para se të mund të bëhet një
rrezik për sigurinë publike.
>> -Ky ishte udhëtimi i vajzërisë Ariane 5, dhe e saj
Shkatërrimi u zhvillua për shkak të një krisje të ngulitura në
software Rocket së.
>> -Problemi në Ariane ishte se ka pasur një numër që
kërkon 64 bit për të shprehur dhe ata donin ta kthyer atë
tek një numër 16 bit.
Ata supozohet se numri nuk ishte
do të jetë shumë i madh,
se shumica e këtyre shifrave në numrin e bit 64 ishin 0s.
Ata ishin të gabuara.
>> -Paaftësia e një program software për të pranuar
lloj i numrit të krijuara nga një tjetër ishte në rrënjë të
dështim.
Software zhvillimit kishte bërë një pjesë shumë e kushtueshme e
teknologji e re.
E 4 rocket Ariane kishte qenë shumë i suksesshëm.
Pra, shumë prej programeve të krijuar për të është përdorur edhe
në Ariane 5.
>> -Problemi themelor ishte se Ariane 5 ka qenë i shpejtë,
përshpejtuar të shpejtë.
Dhe software nuk e kishte llogaritur për këtë.
>> -Shkatërrimi i raketave ishte një i madh financiar
fatkeqësi, të gjitha për shkak të një gabimi software minutë.
Por kjo nuk ishte hera e parë konvertimit probleme dhënat pasur
rrënuar teknologji moderne raketash.
>> DAVID Malan: Ne do të lënë atë në atë.
Por kjo është testament për të vetëm se sa zbatohen edhe disa nga
këto detaje të ulët nivelin që ne kemi filluar të
shqyrtuar sot janë.
Pra, edhe si ju merrni pak të hutuar ndoshta nga disa
Sintaksa dhe arcaneness këtu, të kuptojë se mbi
termi ne do të fokusohet vetëm në mënyrën se si zbatohet kjo është për
botëve përtej CS.
Ne do të shohim se të mërkurën.