[Powered by Google Translate] DAVID J. Malan: Në rregull, kjo është CS50, dhe ky është
fillimin e javës së dytë.
Falemnderit.
Le të fillojmë këtu me një telefonatë.
Unë jam gati për të thirrni 617-bug-CS50.
CS50: Kjo është CS50.
Për Transferim Boy, shtypni 1.
Të fillojë gjatë, shtypni 9.
DAVID J. Malan: Pra, ai tha për Boy anijes, shtyp 1.
Pra, ne jemi duke shkuar për shtyp 1.
CS50: Cila është origjina juaj?
Për kuadrat, shtypni 1.
Mather, shtypni 2.
Boylston, shtypni 3.
Lamont, shtypni 4.
Mem Hall, shtypni 5.
Të fillojë gjatë, shtypni 0.
DAVID J. Malan: Ne do të shtypni 1 për kuadrat.
CS50: anijes Next lë këtë shumë minuta në PD 01:10 dhe
pastaj në 1:20, 1:30, 1:40.
Kjo është CS50.
>> DAVID J. Malan: Pra, ky është zëri CS50 së.
Dhe kjo është një shembull i llojet e projekteve përfundimtare, për
shembull, ju mund të kafshoj drejt
në fund të semestrit.
Për shembull, që shuttleboy.cs50.net ekziston -
në fakt një projekt që kam parë shkroi pas marrjes CS51
mbrapa kur unë isha një universitare.
Dhe këtu ishte frymëzim prapa atëherë, të gjithë ata kishin qenë
të shtypura oraret e autobusëve anijes, dhe nuk kishte
Nocioni i shikuar gjërat online.
Dhe kështu që unë lloj i pëllumb në një fundjavë, derdhur përmes
shtypura orarin, dhe ported atë në një program kompjuterik.
Në atë kohë, programi kompjuterik ka ndodhur të jetë e shkruar
në C. Dhe ju të vërtetë vrapoi atë nga Boy anijes shtypur në një
keq shpejtë si ne kemi qenë bërë deri tani.
Por me kalimin e viteve, ajo evoluar në një çast
mesazheve bot.
Është evoluar më shumë kohët e fundit në këtë faqe interneti, në një
SMS-bazuar mjet, si dhe në këtë mjet zë-bazuar.
Dhe kjo është për të lënë të kuptohet në llojet e gjërave që ju mund të
bëni për veten tuaj deri në fund të semestrit së.
>> Për shembull, atje, versioni i SMS Boy anijes ndodh
për të vepruar si më poshtë.
Nëse, në telefonin tuaj celular, ju dërgoni një mesazh me tekst në 41.411 dhe
pastaj dërgoni sboy veçantë simbol, për Boy anijes,
pasuar nga A dhe B, ku A është një origjine dhe B është një
destinacion -
për shembull, Boylston Space Quad -
çfarë ju duhet të merrni përsëri brenda disa sekondave është një tekst
mesazh nga Boy anijes thënë saktësisht se kur
anijet e ardhshme janë, nga ajo pika A do të qe
Pika B.
Dhe ky është një shembull shumë të përgjithshme të asaj që është njohur si
duke përdorur një API.
>> Kështu për shembull, kjo këtu është vetëm shuttleboy.cs50.net,
aktuale web-based mishërimi i kësaj.
Por të dhënat që e nënvizon këtë dhe të tjera Apps që CS50
ka zhvilluar të gjithë janë të ekspozuar për të gjithë këtu në formë
të TV, interfaces programimit aplikimit.
Dhe kjo është vetëm një mënyrë e sofistikuar për të thënë se njerëz si ne në
Interneti dhe të tjerët kanë kaluar disa kohë duke krijuar
softuer që ju mund të përdorni në mënyrë që të kap të dhënat nga ne dhe
pastaj të ndërtuar aplikime tuaja në krye
e asaj të dhënave.
Kështu për shembull, ky djalë Shuttle API faqe këtu, i cili
ndodh të jetë në manualin CS50, në thelb dokumentet
si ju mund të shkoni në lidhje kërkuar CS50 servera për të dhëna.
Për shembull, nëse ju jeni të njohur me CSV fotografi, presje
ndarë vlerat, këto janë vetëm lloj të shpejtë dhe të pista
Excel-si fotografi.
Kështu që ju mund të kërkoni Boy anijes për të gjithë të dhënat mbi të gjitha të
shtëpitë dhe koordinon GPS e tyre, dhe ju do të merrni
prapa, në thelb, një spreadsheet si kjo që
atëherë ju mund të lexoni në një program nga mesi juaj dhe pastaj
gjenerojnë rezultate, si Boy anijes vetë
ndodh të jetë bërë.
Për ata më të njohur, përfaqësitë më moderne të dhënave
përfshijnë JSON, simbol JavaScript Object.
Diçka do të kthehet tek ju në drejtim të
në fund të semestrit.
>> Por përsëri, kjo është vetëm një nga disa prej tyre CS50 TV-së.
Dhe gjëja më emocionuese është tani, këto ditë, Facebook dhe
Twitter dhe Google dhe shumë e shumë çdo faqen e internetit të njohura nga
ka ka disa lloj API, që do të thotë në qoftë se ju lexoni
Dokumentacioni në faqen e internetit e tyre, ju regjistroheni për një
llogari, atëherë ju mund të filloni të shkruani software në krye të
çfarëdo mjete ose të dhëna që kompania ka ofron.
Dhe kështu një nga miqtë tanë të mësimdhënies vet nja dy vjet mbrapa
shkroi një version të Mac këtë.
Pra, në linkun e titulluar Mac këtu në të majtë të lartë, ju mund të vërtetë
shkarkoni një widget Mac OS që shkon në Mac tuaj për të bërë të
njëjtat lloje të gjërave.
Pra, kjo është e gjitha në lidhje me ndërtimin në krye të të dhënave përcakton si këto.
Por më shumë se drejt përfundimit të semestrit.
>> Pra, le të zhyten në të vërtetë të shpejtë me një bug, vetëm për të marrë lloj
gjëra të ngrohur deri sot, dhe mendoj se përsëri në disa nga
gjërat që ne shikuar në javën e fundit.
Në veçanti, më lejoni të shkoj përpara dhe tërheq lart, të themi,
ky shembull këtu.
Buggy1.c, kjo është në dispozicion në faqen e internetit të kursit, nëse ju do të
si për ta shkarkuar atë dhe thes rreth vetes.
Por le të zoom në këtu në këtë program mjaft të shkurtër, dhe vetëm
një super-fast radhitje e disa prej blloqeve të ndërtimit themelore që
ne me të vërtetë janë vetëm do të fillojë të marrë për të dhënë.
>> Pra stuff blu, në vija 1 deri 9, janë vetëm
Pyetjet softball.
Pra, këto janë vetëm komente.
Ata nuk kanë asnjë kuptim funksional.
Por ata janë komente në kuptimin që ata janë vëren se
Unë, njerëzor, bërë për veten time kështu që në leksion dhe pas
leksion, unë në fakt mund të mbani mend se çfarë ky program
bën pa pasur nevojë për të lexuar nëpërmjet saj rresht pas rreshti dhe
rikrijimin e historisë në mendjen time.
Për më tepër, në qoftë se unë dorë këtë program për dikë tjetër si
ju, kjo është shumë më e qartë për ju, për shkak të komenteve si kjo,
çfarë programi është në të vërtetë duke bërë, ose të paktën se çfarë
Programi është menduar të jetë bërë.
Nëse është apo nuk është e saktë është një tjetër çështje krejtësisht.
Tani, në C, me multi-line komente, kujtojmë se në linjë
një këtu është simbol magjik, / *.
Kjo do të thotë këtu vjen fillimin e një koment.
Dhe asgjë tjetër çështje deri sa të arrijë në fund Terminator,
cila është * /, kundërta.
Pra, fakti që unë kam 80-disa yjeve të çuditshme këtu nga
majta në të djathtë është me të vërtetë vetëm një detaj estetik.
Ajo nuk ka kuptim funksional.
>> Tani se si për linjë 11?
Çfarë do të bëni këtë në kushtet e laik?
Çfarë është ajo?
Audienca: Përfshin standardin.
DAVID J. Malan: OK, i mirë.
Pra, ajo përfshin bibliotekën stdio.h.
Pra, çfarë do të thotë kjo?
E pra, brenda kësaj dosje, stdio.h, janë një bandë e tërë e
Deklaratat funksion -
që është, kodin që dikush tjetër ka shkruar.
Dhe një shembull i përsosur i një funksion që është deklaruar në
stdio.h është -
që të pëzgjedhur nga tani?
Pra printf, një nga ato më të zakonshme për të përdorur, sigurisht
më herët, nga se biblioteka është atje.
Nëse unë përjashtojë atë linjë të kodit, tingëllimë do të bërtas
në mua diçka në lidhje me përdorimin e një simbol palajmëruar.
Diçka padeklaruar është ndoshta fjalen, sepse
ne nuk kemi informuar atë përpilues printf duket
si nëse ne të përfshijë atë linjë.
Dhe më poshtë në Tokë, me të vërtetë, ajo që është thënë është linjë
hapur këtë dosje, stdio.h, kudo që ai është në server të
hard drive, hard drive ose aplikim, dhe copy-paste se
ka të drejtë në dosjen time, pa e mia
pasur nevojë për të bërë këtë me dorë.
>> Tani, pasi ne të merrni këtu poshtë në kryesor, para se të gjatë ne do të fillojnë
ngacmim përveç asaj int dhe çfarë është e pavlefshme.
Por tani për tani, le të shikojmë në tre linja
brenda 15 nëpërmjet 17.
Kjo këtu unë pretendojnë si buggy.
Linja 7 në komentet e mia thotë: "Duhet të shtypura 10
asterisks, por nuk ka. "Pse e bën këtë jo të shtypura, në fakt,
10 yjet e tilla?
Audienca: [padëgjueshme].
DAVID J. Malan: Pikërisht.
Pra, vini re se ne jemi duke filluar për të numëruar nga 0.
Dhe kjo është në fakt një konventë në programimin dhe
shkenca kompjuterike në përgjithësi, duke filluar për të numëruar
nga 0 në vend të 1.
Dhe kjo me të vërtetë vetëm rrjedh nga fakti që, për
shembull, kur ne kishim tetë njerëz deri në fazën, kur
askush nuk ishte ngritur duart e tyre, ata ishin
të gjitha zero në mënyrë efektive.
Dhe kështu kjo është vetëm një lloj konvente kompjuter kështu,
Prandaj, për të filluar numërimin nga 0.
Nëse kjo është numri më i vogël që ju mund të përfaqësojnë në binar.
>> Pra, këtu kemi filluar Initializing i të 0.
Ne kemi vendosur i barabartë me 0.
Por pastaj kam bërë këtë gabim këtu, duke thënë se i është më pak se ose e
barabartë me 10.
Por në qoftë se ju mendoni që përmes, në qoftë se unë të fillojë në 0 dhe pastaj do të shkoj
deri në 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, unë jam në të vërtetë do të
shtypura nga 11 yjet në ekran, sepse unë kam shkuar deri
për të dhe të barabartë me 10.
Pra, fix lehtë këtu, atëherë është ajo?
Audienca: [padëgjueshme].
DAVID J. Malan: Vetëm të ndryshojë atë për më pak se.
Nëse jeni të vërtetë dëshironi, ju mund të bëni këtë.
Por në përgjithësi, që është frowned.
Dhe kështu duke filluar për të numëruar nga 0 është vetëm diçka që ju duhet
zakonisht mësohen për të.
Tani, ajo në lidhje me këtë konstrukt të tërë në vetvete?
Kjo linjë 15 demarks një për lak.
Pra, për të nuk është një funksion.
Kjo është vetëm një deklaratë.
Kjo është një konstrukt looping, ashtu siç e pamë në Scratch.
Dhe ajo ka tre pjesë.
Vini re se nuk është pjesa e parë për të
të majtë e pikëpresje.
Nuk është pjesa e mesme në mes të dy pikpresje.
Dhe pastaj nuk ka djathtë pjesë të drejtë
e pikëpresje dytë.
Tani, i pari nga këto, çfarë?
Audienca: [padëgjueshme].
DAVID J. Malan: Back atje?
Po?
Audienca: initialization.
>> DAVID J. Malan: initialization.
Pra, çfarë do të thotë kjo?
Ne kemi deklaruar një ndryshore të quajtur i.
Ajo është e tipit int, sepse unë kam specifikuar int.
Dhe unë jam i Initializing në vlerë prej 0.
Pra, çfarë është kjo me të vërtetë duke thënë?
Është thënë në mënyrë efektive në kompjuter hej, më jepni të mjaftueshme
, RAM memorie të mjaftueshme për të përshtaten një numër, dhe pastaj të vënë
Numri 0 në atë copë të RAM.
Dhe si një mënjanë, sa i madh është një int zakonisht, të paktën brenda
e pajisjes?
Audienca: 32 bit.
DAVID J. Malan: 32 bit.
Kështu që do të thotë të më jepni 32 bit, i njohur ndryshe si 4 bytes,
dhe të vënë në vlerën 0 në të, e cila është shumë e lehtë, sepse
ai thjesht do të thotë të vendosur të gjitha bit në 0.
>> Deri tani, pjesa e dytë këtu është kusht.
Dhe kushti, siç sugjeron emri, është ajo që është e kontrolluar
përsëri dhe përsëri dhe përsëri për të parë nëse është e vërtetë apo e rreme.
Pra, kjo është vetëm duke thënë të bëjë linjat e mëposhtme të kodit -
domethënë Shkarko 16, sepse kjo është e vetmja prerë
nën -
për aq kohë sa unë është më pak se 10.
Dhe pas çdo ripërsëritje përmes këtij loop, të bëjë
incrementation, e cila në këtë rast është i + +.
Tani, kjo nuk duhet të jetë i + +.
Kjo mund të jetë i -.
Por, nëse unë e bëri këtë, çfarë po ndodh sjellja
të jetë i këtij programi?
Audienca: Ajo do të jetë një lak pafund.
DAVID J. Malan: Ajo do të jetë një lloj lak të pafund,
nëse ne të merrni me fat, pasi 2 miliardë negativ apo më shumë.
Ndoshta gjërat do të përfundojë rreth, vetëm nga natyra e fundme
Numri i bit që ne kemi alokuar për një int.
Por kjo me siguri do të iterate më shumë se 10 dhe
sigurisht më shumë se 11 herë këtu.
>> Dhe tani, ashtu si një mënjanë, e kupton se i + + dhe unë -
janë me të vërtetë vetëm sheqer sintaksore.
Kjo është vetëm simbol stenografi për atë që është pak më shumë
shkruar shprehimisht si vijon:
i = i + 1.
Kjo është identike me i + +.
Ajo vetëm lloj i duket prettier të them unë + +.
Kjo është më e ngjeshur, më i lexueshëm.
Dhe kështu shumica e njerëzve bëjnë këtë vend.
Por kjo është identike funksionalisht të
ajo që ne vetëm e pa.
Pra me pak fjalë, doze këtu është vetëm për të thënë iterate i
nga 0 të gjithë rrugën deri në më pak se 10.
Dhe pastaj ne do të vërtetë të marrë 10 yje.
>> Pra, le të provoni këtë.
Më lejoni të hapur të terminalit në fund.
Më lejoni të shkoj në directory se ky është in
Dhe unë jam duke shkuar për të hartuar atë me dorë me tingëllimë për tani.
Dhe unë jam duke shkuar për të hartuar këtë si buggy1.c, Enter.
Dhe tani buggy1, pse nuk ka ndonjë fotografi të tilla apo directory
quajtur buggy1?
Audienca: [padëgjueshme].
DAVID J. Malan: Po.
Pra, ajo që quhet në të vërtetë a.out.
Pra, nëse ju kujtohet vetëm të drejtuar tingëllimë, ku është tingëllimë
përpilues, dhe ju nuk e specifikoni emrin që ju dëshironi për të
dhënë për programin tuaj, ajo do të parazgjedhur për a.out.
Pra, me të vërtetë, nëse unë bëj ls -
oops.
Dhe unë didn't - çështjen e zi-dhe-bardhë disa prej
ju ballafaquar ka qenë fikse.
Por më lejoni të bëjë këtë.
Nuk kemi a.out në anën e majtë atje.
Pra, ne kemi për të kandiduar a.out vend të buggy1.
>> Pra më lejoni të shkoj përpara dhe të bëjë këtë.
. A.out /, Enter.
Dhe unë me sa duket nuk e ka bërë çfarë?
Audienca: Save.
DAVID J. Malan: Ruaj skedarin tim.
Kështu që është zgjidhur lehtë nga goditjet e kontrollit, ose do të
File, Save, si në shumicën e programeve.
Më lejoni të shkoj këtu poshtë, qartë në ekran, e drejtuar atë përsëri.
Dhe nuk ka ende një bug.
Pra, çfarë po ndodh -
Audienca: Ju nuk përpilojnë.
DAVID J. Malan: Ah, mirë.
Unë nuk përpilojnë atë.
Si një idiot, unë jam duke kërkuar në kodin për të parë se çfarë është e gabuar.
Pra buggy1.c tingëllimë, tani a.out.
Dhe uh, ruhen.
>> Pra, kjo duket pak e shëmtuar, sepse nuk ka asnjë linjë të re
kudo në program.
Por përsëri, kjo është vetëm një detaj estetik.
Dhe të paktën në qoftë se ne numërimin e atyre jashtë, ne duhet
tani e shohin 10 yjet tilla.
E pra, çka në lidhje me këtë shembull të dytë të ngrohtë-up?
Pra, në buggy2, unë pretendojnë se ky version, gjithashtu, do të shtypura
10 yjet, e për çdo rresht.
Pra këtë kohë, unë kam një karakter newline, vetëm për të bërë
gjërat pak prettier.
Por në vend që ajo që unë të marrë është kjo.
Pra më lejoni të bëjë buggy2.c tingëllimë, Enter.
Tani ajo është quajtur përsëri a.out.
Enter.
Unë shoh vetëm një linjë të re, vetëm linjë e fundit e re që shumë
lëviz shpejtë time të vijë e ardhshëm.
Dhe ende e qartë unë kam qenë shtypjen *, pastaj një linjë të re,
*, Pastaj një linjë e re.
Por ajo që është bug këtu?
Po?
Audienca: [padëgjueshme].
>> DAVID J. Malan: Pikërisht.
Pra, ndryshe nga disa gjuhë, si Python, ku Dhëmbëzim
vërtetë ka kuptimin funksional, në një
Gjuha si C -
si ne do të shohim, PHP, JavaScript -
Dhëmbëzim është me të vërtetë vetëm për të mirën e njerëzve.
Pra, fakti që unë kam prerë linjë 16 dhe 17 duket e madhe,
por kjo nuk ka kuptim funksionale këtu.
Nëse unë dua të dy linjave të ekzekutuar si pjesë e për
loop, atëherë unë duhet të mbyllni ato në formatimin e teksteve kaçurrel duke e bërë këtë.
Ju vetëm mund të prerë atë qoshe dhe heq formatimin e teksteve kaçurrel nëse
çfarë është rasti?
Audienca: Vetëm një linjë.
DAVID J. Malan: Vetëm një linjë.
Pra, kjo është vetëm një lloj lloj sintakse e bukur detaje në mënyrë që
ju nuk e humbni kohën shkruar tre rreshta, dy prej të cilave janë
formatimin e teksteve kaçurrel, vetëm për të shkruar një linjë të vetme të kodit.
Por në qoftë se ju keni dy ose më shumë linja, ne
me të vërtetë nevojë për të bërë këtë.
>> Kështu që tani më lejoni të shpëtuar këtë.
Më lejoni të shkoj përpara dhe të ri-drejtuar tingëllimë.
Atëherë më lejoni përsëritje a.out, dhe tani unë të marrë ato një për çdo rresht.
Tani, a.out përsëri është lloj i një emri memec për një program.
Si mund të them tingëllimë të vërtetë të më jepni një emër file
kjo është shumë përdorues-miqësor, si buggy2 vetë?
Pak më qartë?
Audienca: [padëgjueshme].
DAVID J. Malan: OK, kështu që unë në fakt mund të marrë shumë
user-friendly shkurtore dhe vetëm shkruani bëjë buggy2.
Unë nuk e specifikon. C në këtë rast, dhe hit Enter.
Dhe çfarë bëjnë nuk është ajo harton buggy2.c për mua nga
tingëllimë kërkuar për të bërë atë.
Në mënyrë të veçantë, ajo e quan tingëllimë, ajo shkon tingëllimë duke përdorur mënyra më
command-line argumente apo çelsin se unë vërtetë nevojë.
Me kalimin e kohës, ne do të kthehen në atë që të gjithë e këtyre të ndryshme
Shprehjet fshehta shkruar me vizë të thotë.
Por tani për tani, kjo është vetëm duke kursyer më probleme të
që të mbani mend dhe të kesh të tipit nga të gjithë ata
Shprehjet ndryshme shkruar me vizë.
Dhe kokë e saj në fund të fundit është
se tani kam buggy2.
Në qoftë se unë dua të bëj këtë me dorë, edhe pse, unë
mund ta bëjë këtë në vend -
tingëllimë-o buggy2 dhe pastaj buggy2.c.
Dhe që do ngjashme jepni një skedar të quajtur buggy2.
>> Pra me pak fjalë, është tingëllimë përpiluesit.
Të bëjë është vetëm një mjet përdorues-miqësor që ne do të jetë duke përdorur më shumë
dhe më shumë, për shkak se ajo vetëm fillon të
thjeshtojë gjërat për ne.
Dhe ne kthim 0, fundi.
Tani për tani, vetëm për shkak se, por ne do të fillojnë ngacmim atë pjesë
sot dhe të mërkurën.
Çdo pyetje për ndonjë të këtij?
Po?
Audienca: [padëgjueshme]
ls në kuotat atje?
DAVID J. Malan: OK.
Kur unë ls typed në thonjëza, që ishte bërë më pak magji
prapa skenave për të rregulluar një bug.
Kam harruar, si ne kemi qenë të thënë shumë nga ju në
bordet diskutim, për të bërë -
ne do të bëjmë këtë tani - sudo yum-y përditësim appliance50.
Uh, kjo që është shkruar drejtë.
Pra aplikim është si një sistem operativ.
Është drejtimin e këtij sistemi operativ të quajtur Fedora.
Dhe tani për shkak të lidhjes sime të ngadaltë të internetit, unë kam
hosed me të vërtetë atë.
Pra drejtimin përditësim sudo yum, si ne të ju tregojnë për të bërë në
caktuar problemi, është në thelb si drejtimin përditësimet automatike
në Mac ose Windows OS.
Dhe arsyeja për këtë drejtimin në fillim shumë e
set Problemi është sepse kur kemi krijuar pajisjen, unë
messed up, dhe unë rastësisht bërë të gjitha programet tuaja të duken
zezë në një ekran të zi, e cila është arsyeja pse ju nuk jeni duke parë ato
by default.
Por versioni i fundit i pajisjes fixes këtë.
Dhe unë do të rregullojmë se gjatë pushimit dikur kam internet
lidhjes.
>> Kështu citon vetëm fsheh gabim time, shumë diskrete,
me sa duket.
Pyetje të tjera?
Po?
Audienca: Ku e bën të vijë nga?
[E padëgjueshme]
DAVID J. Malan: Pyetje e mirë.
Ku e bën të vijë nga?
Kjo është një program Linux që ka ekzistuar për shumë vite, gjatë
para CS50.
Dhe ajo vjen me një sistem operativ si Fedora.
Kjo nuk vjen nga biblioteka CS50.
Në fakt, të vetmet gjëra që vijnë nga biblioteka CS50
deri më tani, që ne kemi parë, janë getString, GetInt, të gjithë
ato Get funksionet, dhe vargu fjalë, dhe tek disa
mase, fjala bool.
Por ne do të bezdis se përveç kur zhyten në CS50
aplikim vetë.
>> Pra, po, një pyetje më shumë këtu.
Audienca: Kur ju ka thënë të bëni dhe pastaj buggy, si e bën
kompjuteri e di [padëgjueshme]?
DAVID J. Malan: Pyetje e mirë.
Kështu që kur ju drejtuar vetëm bëni buggy1 ose të bëjë buggy2, si
bën e di?
Pra by default, në qoftë se ju shkruani bëni buggy1, të bëjë duket për një
file i quajtur buggy1.c.
Dhe pastaj ajo ekzekuton komandat e duhura tingëllimë,
duke mbizotërues dosjen e prodhimit të parazgjedhur quajtur a.out.
Në fakt, nëse ne shikojmë se çfarë bëjnë, çfarë -
le të lë këtë.
Nëse ne shikojmë se çfarë të bëjë në fakt është bërë, bëjnë buggy2,
kjo është tashmë deri në datën.
Pra më lejoni të heq komandën rm, të
Programi kam shkruar më parë.
Shtypni Y-E-S ta konfirmoj që unë dua për të hequr atë.
Nëse unë tani nuk bëjnë, vërejmë se në këtë linjë shumë të gjatë,
nuk është kjo gjëja e fundit këtu,-o buggy2.
Të gjithë bëjnë është duke bërë është duke kaluar këtë argument, në mënyrë që të flasin, të
Tingëllimë, kështu që unë nuk duhet të shkruani atë vetë.
>> Të gjithë të drejtë, kështu që një çift i shpejtë administrative
Shpalljet.
Kështu që për seksionet, e cila zyrtarisht filloi kjo vjen
E diel, ju gjithmonë do të duan për të sjellë, në qoftë se
ju keni një, një laptop.
Nëse ju nuk keni një kompjuter portativ, nuk arrijnë te mua nga
rënë një email.
Dhe ne do të gjej një workflow.
Çfarë në përgjithësi ju do të gjeni në seksionin është se ata janë pjesë e
konceptuale, pjesa duart-në.
Ne do të përdorim në mënyrë specifike seksionin e pyetjeve, pjesë e
Set jave problem, të ecin nëpër disa nga
Materiali konceptual nga leksion.
Dhe kjo është e gjitha në grup problemeve aktuale.
Dhe ne gjithashtu do të zhyten në disa duart-në aktivitete, ndonjëherë
nga të cilat do të kërkohet që të dorëzohet, ndonjëherë i
e cila nuk do të.
Për shembull, këtë javë të parë, ata janë menduar vetëm si një
të ngrohtë-up stërvitje.
Dhe ju do të gjeni se këto probleme janë me të vërtetë vetëm se.
Ata janë menduar të jetë mjaft i vogël, por jo domosdoshmërisht
Programet e parëndësishme për të shkruar, që nuk janë domosdoshmërisht
mundësitë emocionuese në vetvete, por janë të mira për
praktikoni me sintaksë, me funksionet reja, në komoditetin e një
seksion ku ju keni disa nga shokët e klasës tuaj paraqesin si
edhe TF tuaj.
>> Dhe çfarë ne do të bëjmë me kalimin e kohës është të përdorni një mjet të quajtur CS50 Spaces,
ku në vend të vetëm duke përdorur aplikim CS50, ju do të
në vend të shkoni në një faqe interneti në një shfletues, ku ju do të jetë në gjendje
të shkruani kodin në një dritare të shfletuesit gjatë seksion.
Dhe pastaj nëse ju zgjedhin, shokët tuaj mësimi pastaj mund të tregojë
çfarëdo qoftë ajo është që ju jeni shtypur në ekranin tuaj në shfletuesin tuaj
dritare deri në pjesën e përparme të klasës, qoftë anonime ose
publikisht, në mënyrë që ai ose ajo pastaj mund të ecin me me
shokët e klasës tuaj atë që ju bëri mirë, çfarë ju nuk bëni mirë.
Dhe përsëri, pjesa tjetër e siguroi të gjithë kjo mund të jetë anonime bukur.
Por kjo do të jetë një mundësi e mirë për më shumë
interaktive se diçka si leksion lejon.
>> Në ndërkohë, ne do të kemi këto gjëra quhet super
seksione, të cilat janë fakultative, por janë të hapura për të gjithë në
klasa, në mënyrë që ju mund ta bëni këtë shumë kolektivisht për
Problemi vendosur një.
Këtu është orari.
Kjo është postuar edhe në faqen në cs50.net.
Vini re se nuk do të jetë një hacker-e të Caktuar
një pasdite nesër.
Dhe ne do të filmojnë një sot dhe nesër dhe pas një ato
online brenda 24 orëve.
Pra, në qoftë se ju nuk mund të bëjë asnjë nga këto kohë, për t'u shqetësuar.
Dhe përsëri, orari është në linjë tani në cs50.net.
>> Në kushtet e sectioning veten, ju duhet të keni marrë një
email udhëzuar ju të shkoni në faqen e kursit për të gjetur
nga seksionin tuaj.
Nëse jeta ka ndryshuar dhe keni nevojë për të ndryshuar seksionin tuaj,
nuk është një problem.
Kthehu mbrapa në atë URL njëjtë, cs50.net/section, njëjës,
dhe ju do të plotësoni formularin e ngjashme në mënyrë që ju mund të
pastaj na japin preferencat tuaja.
Dhe ne do të ndjekë deri nga fundi i javës se çfarë ne mund
akomoduar.
Javën e kaluar, kujtojmë se kemi propozuar përdorimin CS50 diskutuar,
mjet Kursi së diskutim, në leksion.
Pra, kemi pasur 40 pyetje që janë kërkuar dhe
përgjigjur gjatë ligjëratës.
Pra, ajo dukej për të punuar mirë, kështu që ne do të vazhdojmë
duke u përpjekur për të bërë këtë.
Nëse, gjatë ligjëratës, ju nuk vetëm ndjehen të ngritjes rehatshëm
dora jote, nuk është një problem.
Shko tek cs50.net/discuss, postoni atje, dhe një e mësimit tonë
miqtë ose do të përgjigjem atë elektronike apo të rritur e tyre
dorë në emër tuaj anonime për të kërkuar, në varësi
nga natyra e çështjes.
Dhe në drejtim të reagime, në përgjithësi do të jetë psets
u kthye brenda një jave.
Për shkak se ajo merr pak kohë për të arritur seksione
ekuilibrit, të pset parë, 0 dhe 1, do të jetë pak
vonuar si gjërat zgjidhur poshtë.
Por, stay tuned për këtë në javët që do të vijnë.
>> Të gjithë të drejtë, kështu që më lejoni të vënë në serioze tim
zëri për vetëm një moment.
Pra, kjo është në fakt një klimë të jetë interesante
pasur këtë diskutim, ajo me të gjitha gjërat e tjera
ndodh në to kampus të lidhura.
Por CS50 ka siguri kishte historinë e saj të veçantë të kësaj
temë, në sa më shumë si çdo vit, ky kurs, për shumë
vjet, Ad-Boards afërsisht 3% e klasës.
Këtë vit më i fundit, 2011, CS50 Ad-hipi 35 studentëve.
Kjo nuk është, mendoj unë, për shkak të mungesës së qartësisë.
Kuptojnë se në planin mësimor të kursit, nuk është një faqe e
Deklarata shpjeguar ku linjat janë.
Kjo deklaratë njëjtë përsëritet në çdo një nga
Problemi i vendos në një faqe.
>> Kështu që unë përmend këtë sot me të vërtetë vetëm për të bërë
folks të ndërgjegjshëm për këtë.
Dhe ne kemi provuar gjëra të ndryshme.
Dhe çfarë kam menduar ne do të bëjmë sot është të marrë vetëm një moment për të
vërtetë të shikojmë disa nga rastet e fundit që kanë dalë.
Në vend se të mbajë këto sekrete si pista pak, në të vërtetë
nxjerr në pah atë që studentët kanë bërë dhe se si kemi zbuluar
atë dhe me të vërtetë se çfarë motivimi kryesor është për
edhe duke pasur këtë bisedë.
Pra, me tha se, linja thelb është kjo -
per planin mësimor, ju jeni i mirëpritur, ju jeni të inkurajuar, për të
bisedojnë me shokët e klasës.
Kjo është tërë qëllimi i pasur këto bashkëpunues
orarit të punës në Annenberg dhe njerëz inkurajuese për
Projekti final për të punuar së bashku.
Por vijë është tërhequr kur vjen koha për të vërtetë të shkruar
zgjidhja tuaj përfundimtar.
Duke folur në anglisht, krejtësisht gjobë, duke folur në kodin pseudo,
krejtësisht gjobë.
Emailing një shok klase pset tuaj, i lënë ata të duken mbi
ekran si duart vazhdojnë shtypur,
mbi të linjës si edhe.
Mos shikoni në planin mësimor për linjat e veçanta.
>> Por vetëm për një tabllo se si kjo është për fat të keq një
realitet, e kuptojnë se janë faqet e internetit atje që
kemi zgjidhje nga kjo klasë klasa dhe shumë të tjera.
Fakti që ju ose rreth 3% nga ju e dini se kjo ekziston
do të thotë se ne e dimë se kjo ekziston.
Fakti që janë faqet e internetit si kjo ku ju
mund të paguajnë dikë që të bëjë në fakt përcakton tuaj problem - kjo ishte
një rast aktual që doli vitin e kaluar.
Kjo është një website të quajtur odesk.com.
Dhe Tim ishte emri i personit i cili ishte këtu postimin në
Kjo faqe e internetit dhe e pyeti dikë për të bërë pset tij 7 në
Në këtë rast të veçantë.
E pra, është shumë e odesk.com Google-gjendje, dhe ne jemi shumë të
shumë të mirë në Googling.
Këtu, gjithashtu, nuk janë vende - dhe kjo është një vend
tmerrshme, sinqerisht.
[Qeshura]
DAVID J. Malan: Funny gjë në lidhje me këtë faqe është nëse
ju lexoni faqen e Rreth, ata flasin për të korporatave të tyre
Kultura dhe si shërbimi ndaj klientit është i tyre numër një
prioritet, për të siguruar që detyrat tuaja të merrni
u kthye në kohë.
>> Por në të gjithë seriozitetin, përsëri, fakti që këto vende
ekzistojnë, realizuar ne, gjithashtu, janë të vetëdijshëm për
këto lloje të faqet.
Dhe për të ju jap një kuptim të asaj që përbën kjo në përgjithësi
merr, ne në përgjithësi nuk kanë skandale të mëdha, ku njerëzit
po bashkëpunojnë në çdo lloj shkallë masive, por
kjo është këto natën vonë momentet e dobësisë, ku ju keni kaq
shumë për të bërë, kjo është 4:00, ju jeni të lodhur, dhe ju
mendoj për veten, mirë, më lejoni vetëm të marrë një sy në tim
shokun ose të mikut tim Kodi ose si.
Dhe manifestimet e kësaj për fat të keq të përfshijë Student
Një diçka e paraqitjes si kjo dhe B Student dorëzimit
diçka si kjo, e cila sigurisht, në një kompjuter
klasë shkenca, është shumë e lehtë për shkencëtarët kompjuterike
për të zbuluar me software.
Ky është një tjetër paradigmë të përbashkët, ku ju keni lloj
qenë duke punuar së bashku e dikujt, ndoshta duke folur në
Anglisht, vetëm gjobë, pseudokod.
Por pastaj vjen koha që në fakt paraqesin, dhe psets
vetëm merrni shkëmbyer përmes emailit ose Dropbox ose si.
Por në një përpjekje për ta bërë atë më pak të dukshme se kjo është
çfarë ka ndodhur, atëherë kjo është ajo që është dorëzuar.
Kjo, gjithashtu, nuk udhëtim deri edhe-shkruar copë
software si ne duhet të vërtetë të zbuluar
këto llojet e gjërave.
Dhe me të vërtetë atë që ne bëjmë është softuer drejtuar që krahason të gjitha
parashtresat e këtij viti kundër të gjithë vitit të kaluar
parashtresa, kundër çdo gjë që gjendet në
Internet, kundër çdo faqen e internetit të punës atje.
Kjo është e gjitha shumë e automatizuar.
Dhe kështu që ne bëjmë këtë me të vërtetë në drejtësi të madhe për 97% që
janë me të vërtetë duke punuar gomarët e tyre jashtë në këtë dhe në të tjera
Klasat dhe vënien në të gjithë këtë përpjekje në mënyrë që puna e
ata përfundimisht është dorëzojnë tyre.
Dhe unë mund të shkojnë në për moshat.
>> Këto janë vetëm një pjesë të vogël të rasteve të vitit të kaluar.
A pak nxënës dorëzuar këto fotografi identike për pset 2,
pset 3, pset 4, pset 5, pset 6, pset 9.
Në këtë rast, kjo ishte quiz 0 dhe në vitin e kaluar, ku dy
Studentët dorëzuar identike këtë fjali në mesin e shumë
të tjerët, "Kërkesa e tipit -" dot, dot, dot.
Pra, edhe në një klasë prej 600 nuk e kemi zbuluar këtë
on dorëzuar kuize.
Pra me pak fjalë, kjo - sinqerisht, unë të urrej pasur këtë lloj të
Biseda - por kjo është me të vërtetë një përpjekje të qëllimshme
këtë vit në përpjekje për të përzënë poshtë atë numër.
Sepse edhe pse ne themi që këto llojet e gjërave çdo
vit, unë mendoj se realitetin e ka ndal në atë për disa
sekonda më shumë se zakonisht dhe në fakt vetëm duke vënë në dukje
se ajo që mund të duket si, eh, jo një marrëveshje të tillë e madhe, të paktën
mendoj se prapa në këtë moment të veçantë, si në drejtësi për
veten dhe për shokët e klasës tuaj këtu.
Pra, nëse ju ndonjëherë keni ndonjë pyetje, si për të, ku vija
është, ju lutem vetëm të arrijnë te mua personalisht.
Por përgjigja është gjithmonë krejtësisht theksoi në të
minutën e fundit, të holla në një ditë fund.
Ose në qoftë se kjo është një çështje e nuk ka ndonjë ditë vonesë,
sinqerisht, email mua personalisht.
Ne do të kuptoj diçka.
Ju lutem mos vënë kohën tuaj këtu në Harvard në rrezik.
>> Tani, mendova se ne duhet të ndriçohet humor, kështu që unë
përfshirë këtë si rrëshqitje tjetër.
[Qeshura]
DAVID J. Malan: Kjo faqe e internetit ishte e madhe.
Unë në fakt mori një pak i hutuar.
Nuk është kjo një.
Dhe pastaj kjo ishte e mahnitshme.
Mirë, kështu që mendoj se i atij kotele natën vonë, kur bën
këto vendime.
Të gjithë të drejtë, stuff kështu përsëri në më shumë argëtim dhe më pak serioze, si
kushtet.
>> Të gjithë të drejtë, kështu që ne biseduam shkurtimisht në lidhje me këto.
Kjo është diçka që është ndoshta mjaft të njohur nga
Bota e Scratch.
Dhe në botën e Scratch, ne kemi këtë nevojë ndonjëherë të
shkojnë të bëjnë forks në rrugë.
Ose të bëjë këtë apo atë apo këtë gjë tjetër këtu.
Dhe kur ne duam të bëjmë këtë, ne mund të përdorim, në C tani, kjo, nëse
tjetër ndërtojnë.
Dhe atëherë këtu kemi shprehje boolean.
Për shembull, shprehjet Boolean këtu, ne mund OSE
ata së bashku, në kuptimin që ne kemi këtë gjendje OSE
se gjendja.
Ne mund dhe ata së bashku, në kuptimin që ne duam të
kontrolloni këtë kusht dhe se kusht.
Dhe këtu kemi një deklaratë të kaloni tani, e cila nuk është aq
syntactically ngjashme me ato llojet e kushteve, por ajo
na lejon të bëjmë ekuivalentin e në qoftë se, në qoftë se, tjetër tjetër nëse, tjetër
nëse, dhe si thjesht duke numëruar atyre rast pas rasti
pas rasti nga rasti.
Pra, ne pamë ato për herë të fundit.
Dhe pastaj kemi filluar prekur gjëra të tilla si sythe.
Ne pamë një nga këto vetëm një moment më parë.
Por nuk janë këto punime të tjera looping.
>> Për shembull, kjo këtu.
Kështu, ndërsa (kusht), e bëjnë këtë gjë përsëri dhe përsëri.
Pra në thelb, atë që duket të jenë të ndryshme në mes të kësaj
për lak dhe në këtë lak ndërsa këtu?
Kjo për lak dhe në këtë lak ndërsa.
Po?
Çfarë është ajo?
Audienca: [padëgjueshme].
DAVID J. Malan: Mirë.
Pra, ndërsa në gjendje për loop, nuk ka në mënyrë të qartë
Sintaksa më shumë.
Nuk është kjo initialization, ka këtë update.
Në një lak, ndërsa, nuk është vetëm ky kusht.
Pra, duket se kjo është pak krahasuar kundrejt poshtë për
loop, që do të thotë në qoftë se ne duam të kemi variablave dhe ne duam
të ketë incrementation, ne fakt duhet te
bëni këtë gjë veten.
>> Pra më lejoni të shkoj përpara dhe të hapur deri Gedit.
Më lejoni të kaloni mbi të pajisjes.
Dhe le të bëjë vetëm një shembull të shpejtë pak se
dallon një nga këto nga të tjerë.
Dhe në pjesën e prapme të mendjen time këtu, unë duhet të them një gjë.
Unë veçanërisht përmendur emrin Tim.
Tim ishte në të vërtetë dikush që një student u përpoq për të gjetur për të bërë
detyrat e tyre për ta.
Ne nuk kishte asnjë Tim në atë seksion të veçantë.
Pra e kuptojnë, që të mos zbulohet një student, kjo nuk ishte një student.
Ajo ishte një person të rastit në internet duke bërë gjëra të
nga viti prokurë kaluar.
Pra, ne kemi gjetur se, too.
Pra, në këtë rast këtu, më lejoni të shkoj përpara dhe të
të hapur një skedë të re.
File, New.
Kjo më jep një skedë këtu.
Më lejoni të shkojnë përpara dhe për të shpëtuar atë si loop.c.
Më lejoni të shkoni dhe klikoni Ruaj.
Dhe pastaj poshtë këtu, le të shkojnë përpara dhe të filloni të shkruani
# Include .
Më lejoni të zoom in
Tani ne do të bëjmë kryesore int (i pavlefshëm).
Tani më lejoni të shkoj përpara dhe të bëjë për (int i = 0; i <
oh, 10; i + +).
Dhe tani unë jam duke shkuar për të shkuar përpara dhe e shtypura yllin që unë
bëri më parë.
Dhe pastaj në fund të këtij programi, ne jemi vetëm do të
shkruar një linjë të re, vetëm në mënyrë që të shpejtë e mia
nuk duket të gjitha helaq.
0 kthehen.
Duket syntactically saktë?
Deri më tani.
Pra, le të shohim.
>> Pra më lejoni të zoom jashtë, shkoni në dritaren time terminal.
Dhe më lejoni të shkoj përpara dhe të drejtuar lak, sepse unë e quajti këtë
loop.c. gjë
Kështu që bëni lak.
Duket të përpilojë OK.
Më lejoni të drejtuar lak, dhe tani Enter.
Dhe kjo duket të ketë shtypur 10 yjet.
Pra, le të vetëm të kthyer këtë në një lak kohë dhe shikoni se çfarë
llojet e çështjeve që na ngatërron më shumë.
Pra, në vend të kësaj, më lejoni të shkoj në këtu dhe të thonë, ndërsa i është
më pak se 10 -
më lejoni të shpëtoj për lak.
OK, kështu që ne kemi një çift të problemeve tashmë.
Pra, gjendja është e njëjtë, por unë jam padyshim humbur
initialization.
Unë jam i humbur incrementation.
Pra, çfarë duhet të përpiluesit të ngjarë të më thoni, kur unë të përpiqet të
hartojnë këtë program?
Po?
Audienca: [padëgjueshme].
>> DAVID J. Malan: Mirë.
Pra, kjo do të thotë diçka si pashpallur - në këtë
rasti, i ndryshueshme.
Dhe me të vërtetë, përdorimi i padeklaruar identifikues i.
Dhe kështu kjo është në kontrast me gjuhë si PHP dhe
Python dhe Ruby, me të cilën disa prej jush mund të jetë e njohur,
ku ju mund vetëm lloji i fillimit përdorur ndryshoret
dashur padashur dhe nuk duhet të shqetësohen për shpalljen e tyre
eksplicite gjithmonë.
Në C dhe në gjuhë si Java dhe C + +, ju duhet të jenë të
super eksplicite.
Dhe në qoftë se ju doni një ndryshore të quajtur i, ju duhet të thoni
çfarë është e ndryshueshme.
Pra, ne do të kemi për të rregulluar këtë si më poshtë.
Unë do të keni për të shkuar deri këtu dhe shkruani int i, prandaj,
Unë kam deklaruar një ndryshore të quajtur i.
Tani, unë kam anashkalua një hap.
Unë e kam nisur nuk duket, por le të shohim nëse që në
paktën e bën të ndaluar tingëllimë ankuar.
Pra më lejoni të ribërë këtë program.
>> Të gjithë të drejtë, tani ajo është vetëm ankohen
për një arsye të ndryshme.
"Ndryshueshme 'i' është uninitialized kur përdoret këtu." Të gjithë të drejtë, kështu që
që është mjaft eksplicit.
Initialized thjesht do të thotë se vendosjen e barabartë me një vlerë.
Dhe ne nuk e kemi bërë këtë, kështu që më lejoni të provoni barabartë me 0.
Tani le të provoni këtë përsëri dhe ri-drejtuar tingëllimë.
Hartuar këtë kohë.
Dhe unë jam gati për të drejtuar atë.
Por madh loop pafund të vjetra, sepse unë e kam bërë
initialization, unë kam bërë kusht, por unë kurrë nuk kam bërë
çdo lloj incrementation.
Pra, si mund ta bëjë incrementation?
E pra, në një loop ndërsa, ai ndjehet si unë jam do të ketë
për të bërë atë brenda lak, sepse ashtu si i pari
shembuj jave e të bërit konstruktet looping, si me
çorape dhe me vetë-numërimit, kemi pasur të bëjmë
diçka në fund, si të kthehemi në linjë tjetër.
Çfarë ndodh nëse unë shkoj përpara dhe të bëjë këtë i + + këtu?
Le të mos e përpilojnë edhe këtë.
Kapur mua tashmë.
Çfarë është e gabuar këtu?
Audienca: [padëgjueshme].
>> DAVID J. Malan: Pra, kjo definitivisht nuk int.
Është i.
Dhe formatimin e teksteve kaçurrel, si më parë,
gjurmë nuk është e mjaftueshme.
Deri tani unë kam këtë ndërtojnë.
Kështu, ndërsa unë është më pak se 10, printoni një yll,
pastaj rritje i.
Dhe një mënyrë, ndërsa punon loop është se sa më shpejt që ju goditi
fund të lak, e cila në këtë rast duket si linjës 10,
ajo do të kthehemi në linjë 6, në të cilën pikë
kusht do të kontrollohet përsëri.
Dhe në qoftë se unë ende është më pak se 10, ne do të bëjmë linjat 8 dhe
pastaj 9, atëherë ne do të goditur 10, dhe të kthehemi në 6, përsëri dhe
përsëri dhe përsëri dhe përsëri, për aq kohë sa unë është më pak se 10.
Pra, le të ri-drejtuar të bërë këtu.
>> Mirë, ne kemi hartuar në rregull.
Më lejoni të ri-drejtuar loop.
Dhe tani ai në fakt duket për të punuar.
Pra pluses dhe minuses këtu?
E pra, deri më tani nuk ka të vërtetë nuk është një tërësi e PLO -
so cute.
Të gjithë të drejtë, se ishte një - ah, që ishte një aksident.
Të gjithë të drejtë, kështu që le të kthehemi për lak.
Pra, për sythe janë të këndshme, sepse ata janë super të qartë.
Dhe, edhe pse ata janë pak clunky për të shkruar, është e
shumë të fuqishme dhe kjo ju lejon të bëni
gjëra të shumta në të njëjtën kohë.
Ndërsa sythe nuk duket të ketë një sasi të madhe të vlerës së vetëm
ende, sepse ajo ndjehet si ne vetëm duhet të bëjë më shumë punë.
Ne kemi për të vënë inicializimit deri këtu,
Përditëso këtu poshtë, dhe ne duhet të mbani mend që të bëjë të gjitha që.
Pra, ne do të shohim në kohë që sythe ndërsa në fakt huazon
vetë në kontekste të ndryshme, vetëm të dhëna të ndryshme
Strukturat si listat dhe tavolina hash, gjërat që ne do të merrni për të
në mes të semestër.
Por tani për tani, e di se ka ky lloj i tretë i njohur si një njeri që
ndërsa loop.
Dhe ne kemi parë këtë shkurtimisht.
Dhe kjo mund të jetë e dobishme super me pset 1.
Çdo herë që ju doni të bëni diçka dhe pastaj kontrolloni nëse
përdoruesit bashkëpunuar, dhe nëse ata nuk e bëri, të bëjë atë përsëri, një do-
ndërsa loop jep veten për atë lloj të logjikës.
Sepse si urdhëruar nga lart poshtë këtu sugjeron,
do të thotë fjalë për fjalë ta bëjë këtë.
Dhe të bëjë këtë përsëri dhe përsëri, ajo mund që të jetë?
Ndoshta kjo do të thotë GetInt thirrje apo getString dhe pastaj
kontrolluar vlerën e GetInt ose getString dhe pastaj yelling
në përdoruesit, nëse ata nuk kanë bashkëpunuar duke i pyetur ata
përsëri dhe përsëri dhe përsëri.
Ku ju doni të bëni diçka një herë,
pastaj shikoni disa kusht.
>> Pra, le të provoni këtë.
Më lejoni të vërtetë të ndryshojë këtë tani në një lak për ta bërë, ndërsa.
Dhe unë jam duke shkuar për të shkuar përpara dhe të bëjë në vijim.
Pra, nuk e mëposhtme.
Le të bëjmë int i = GetInt (), por le të parë të treguar përdoruesit
çfarë duhet të bëni.
Pra, pak më ndryshe këtë herë.
"Më jep një int".
Kështu që unë do të përdorë printf për këtë.
Dhe tani unë jam duke shkuar për të shkuar poshtë këtu, dhe unë jam duke shkuar për të bërë këtë
ndërsa unë është, le të themi, më i madh se -
le të shohim, unë është, le të themi, më pak se 0, ose i është
më i madh se 10.
Me fjalë të tjera, unë dua një numër 1-9, vetëm
në mënyrë arbitrare.
Kështu që unë jam duke përdorur një shprehje të kombinuar Boolean këtu për
sigurohuni që I është më pak se 0 ose më e madhe se 10, në të cilën
rast unë do të bëj këtë lak këtu përsëri.
Pra, përsëri, e bëjnë këtë -
ndërsa unë është më pak se 0 ose unë është më e madhe se 10.
>> Pra, tani le të shkojnë përpara dhe të bëjë këtë herë ne kemi bërë atë.
Le të vetëm të bëjë një kontroll të shpejtë mendje e shëndoshë.
printf ("Faleminderit, I është% d", I).
Pra, ky program i thjeshtë pyet përdoruesin për një int,
e bën të sigurt se është në një varg, 1-9 gjithëpërfshirës,
dhe pastaj falenderon përdorues duke i kujtuar atyre se çfarë ata vetëm
shtypur në, vetëm si një kontroll sanitar pak.
Por le të shohim nëse kjo punon si qëllim.
Më lejoni të shkoj kokën këtu poshtë dhe ri-drejtuar bëjnë lak.
Hmm.
"Përdorimi i padeklaruar identifikues" i ". Kjo është e çuditshme.
Mendova se ne zgjidhur atë.
Simptomë e njëjta, por kodi ndryshme.
Po?
Audienca: [padëgjueshme] në brendësi të dy, ne duhet të
[E padëgjueshme].
>> DAVID J. Malan: Pikërisht.
Pra ky fakt na çon në një temë të njohur si qëllim.
Ajo rezulton se C, përsëri, me të vërtetë ju merr fjalë për fjalë.
Dhe në qoftë se ju bëni diçka si kjo ku ju shpallte një int
dhe pastaj të caktojë atë disa vlera, por ju bëni atë brenda një
formatimin e teksteve kaçurrel palë, çfarë C nuk është ajo supozon se ju
vetëm duan ato pak 32 të njohura si unë të ekzistojë brenda
Konteksti i këtyre formatimin e teksteve kaçurrel, brenda kontekstit të linjave
6 deri 9. Kështu që i është shpallur, dhe është caktuar një
Vlera në linjë 8, por sa më shpejt që ju të merrni jashtë
Linja 9 nën mbajtëse kaçurrel, i nuk është më në
Shtrirja, kështu që të flasin.
S-C-O-P-E. Ajo nuk është më në kontekstin e duhur.
Deri tani nuk ka asnjë unë, kështu që kjo është sikur ne nuk ka pasur edhe
shpallur atë në të gjitha.
>> Pra, çfarë është një fix pastaj për diçka si kjo, nëse
Arsyeja është se i është shpallur në formatimin e teksteve kaçurrel, i cili
është me sa duket e keqe?
Ketu?
Audienca: [padëgjueshme].
DAVID J. Malan: Po.
Kështu që ne mund nisja atë jashtë.
Pra më lejoni të shkoj përpara dhe fshini pjesë e deklarimit ku
Unë të specifikojë llojin, dhe më lejoni të bëjë atë deri këtu.
Pra, në përputhje 5, ajo tani thotë se "Më jepni një int." Telefononi jam unë.
Vini re në përputhje 9, unë nuk dua të bëj këtë, sepse unë
tashmë kanë bit 32.
Unë nuk dua të kërkoni për një kompjuter
bit të ndryshme 32.
Unë dua të përdorin ato të njëjtat 32 bit.
Dhe tani, sepse unë është shpallur në përputhje 5, kjo është ende legit
të përdorin atë në përputhje dhe linjës 11 12.
>> Pra më lejoni të përpiqen për të përpiluar këtë dhe të shohim
nëse tingëllimë ndalet yelling.
bëjnë lak.
Kështu që tani ajo është "deklarata e nënkuptuar e funksionit
'GetInt "është i pavlefshëm në C99." Çfarë është kjo?
Po?
Audienca: [padëgjueshme].
DAVID J. Malan: Po.
Pra, tani që unë jam në të vërtetë duke përdorur GetInt, kjo nuk është diçka
që vetëm vjen me C. Kjo vjen nga CS50.
Pra, ne kemi nevojë për këtë këtu.
Dhe më lejoni të kthehemi në të shpejtë poshtë
këtu dhe ri-drejtuar bërë.
Mirë, më në fund.
Tani ne kemi zgjidhur atë dhe gabim tjetër.
Më lejoni tani të drejtuar lak dhe shikoni se çfarë ndodh.
"Më jep një int." Unë do të të jap 11.
Unë do të të jap -1.
Unë do të të jap foo.
Unë do të të jap 5.
Dhe tani ajo me të vërtetë punon.
Por shpejtë ndryshuar për një arsye këtu.
Pse thuhet rigjykuar një nga këto kohë, por më jepni një
int e tjera tri herë?
Pse është se sjellja ndryshe?
Audienca: dha një varg.
DAVID J. Malan: Na vjen keq?
Audienca: Ju dha një varg.
DAVID J. Malan: Po.
Kështu që ne i dha asaj një varg në këtë përpjekjen e tretë,
kur kam shtypur foo.
Foo është një varg.
Kjo nuk është padyshim një int.
Dhe mënyra se CS50 ka zbatuar GetInt është se ne
nuk kontrolloni nëse diçka më pak se 0 ose më e madhe se 10
për ju, sepse si mund ta dimë paraprakisht se çfarë lloj
int doni?
Por ne mund minimalisht kontrolloni për ju, ae përdorues të paktën
shkruani një numër të plotë?
Dhe në qoftë se ata nuk e bëri, ne çirrem në përdorues duke shtypur "rigjykuar" në
ekran.
>> Deri tani ne kemi një program që është looping. Rregull.
Tani, cila nga këto është lloj i konstrukti të mirë?
Pra, kjo është ajo ku gjërat fillojnë të marrin një çrregullt pak,
Fakti që ju duhet të mbani mend që të deklarojë një ndryshore deri këtu
në qoftë se ju doni të përdorni atë brenda disa
formatimin e teksteve kaçurrel dhe jashtë.
Por edhe në qoftë se kjo duket pak e fshehtë në fillim
shikim, vetëm një herë, kujtoj logjikën e thjeshtë.
Në mënyrë që të përdorni asgjë në C, nëse kjo është një funksion ose
kjo është një variabël, ju duhet të përfshijë atë në qoftë se ajo është një funksion
në disa bibliotekë, ose keni nevojë për të deklaruar atë.
Por tani ju duhet të jenë të ndërgjegjshëm ekstra për faktin se
ju jeni deklaruar atë në fushën e duhur.
Ju nuk jeni vënë atë shumë fort brenda kllapa.
>> Pra më lejoni të vërtetë rrokulliset prapa.
Nëse ne do të shkojmë përsëri në tonë për shembull nga më parë, dhe unë po shkoj
përsëri në për int, int i = 0; i <10; i + +, dhe unë
bëjnë yjet printf, si ky, dhe pastaj të prindërve të ngushtë, dhe tani
printf i është tani -
sipas të njëjtën logjikë, çfarë do të ndodhë kur unë të përpiqet të
hartojnë këtë program?
Audienca: Invalid identifikues.
DAVID J. Malan: Pra, kjo është një tjetër identifikues i pavlefshëm,
identifikues padeklaruar.
Tani, arsyeja është pak më ndryshe.
Nuk ka formatimin e teksteve kaçurrel padyshim këtu, por e njëjta
Ideja, historia e njëjtë të fushës vlen.
Nëse ju keni deklaruar një ndryshore si unë në brendësi të një
për lak, edhe në qoftë se ju nuk e keni shkruar në mënyrë eksplicite kaçurrel
përgatitet, mendoj e tyre mendërisht si ende qenit atje, në të cilën
Rasti i është vetëm brenda vlefshme për lak.
Kjo nuk është e vlefshme kur ju të merrni në linjë tjetër, e cila në
ky rast është tani 10.
Pra, vetëm disa çështje të fushës dhe si.
Të gjithë të drejtë, ndonjë pyetje?
>> Të gjithë të drejtë, kështu që kjo është lloj i një programi të parëndësishëm pak,
shtypjen vetëm pak yjet.
Por le të shohim nëse ju mbani mend këtë këngë këtu.
Kjo është një këngë tepër i bezdisshëm fëmijët do të këndojë në
autobusin e shkollës dhe si.
Por ajo që është e bukur për këtë është se ajo ka këtë cikliciteti,
ku është e "99 shishe birrë në mur,
99 shishe birrë.
Merrni një poshtë, të kalojë atë rreth, 98 shishe birrë në
mur. "Dhe pastaj këngë përsërit 97, pastaj 96, pastaj
95, pastaj 94, të gjithë rrugën poshtë për të 0 në qoftë se ju në të vërtetë mori se
larg në autobus.
Pra, kjo është një program i mirë për të zgjidhur të zbatuar, sepse mia
Perëndia, në qoftë se ju vetëm mund të zbatojë këtë me disa
rreshta të kodit, ju mund të nxjerr nga goja lyrics gjithë për këtë
këngë mjaft shpejt.
Por gjatë rrugës, ne mund të fillojnë të bezdis tani përveç disa
e këtyre ndërton bazë looping dhe tani edhe
futur funksionet që kemi shkruar veten, kthehen vlerat
që ne të kalojë rreth.
Por së pari, pse nuk shkojmë përpara dhe të marrë pesë minuta tonë
thyer këtu?
Dhe kur ne të kthehemi, ne do të këndojmë këtë këngë.
>> Të gjithë të drejtë, kështu që ne jemi prapa.
Dhe kur them që ne tani do të këndoj këtë këngë, unë do të thotë
programuar, jo me gojë.
Pra, këtu kemi beer1.c, e cila është një zbatimi i kësaj
këngë të veçantë.
Dhe vetëm të jetë i qartë, për ata të panjohur me atë
kjo gjë si duket, më lër të shkoj përpara
dhe të bëjë beer1, Enter.
Tani, më lejoni të drejtuar beer1, dhe atë që ne do të shohim - sa shishe
e birrës do të ketë?
Unë do të shkruani në 99, si këngë thotë.
Enter.
Dhe tani në qoftë se ne lëvizni nëpër -
oops - nëse lëvizni nëpër të gjithë këtë, ne do të shohim se
kjo bëri me të vërtetë të këndoj këngë të tërë.
Prisni një minutë.
Bar scroll im është pak messed up.
Le të përdorni dritare të mëdha.
Pra beer1, 99, nuk shkojmë.
Pra, këtu kemi këngë të tërë, këndohet shumë shpejt nga
kompjuter se ajo mund të ketë qenë nga ne.
Pra njoftim, edhe pse, natyrën ciklike këtu.
Ajo thotë se 99, atëherë 99, pastaj "të marrë një poshtë, të kalojë atë
rreth, "pastaj 98.
Dhe tani ai e përsërit përsëri dhe përsëri.
>> Pra, kjo është në fakt një mundësi e përkryer për disa lloj
looping ndërtojnë.
Vini re se unë jam natyrë e prerjes një qoshe këtu.
Vini re se unë jam duke thënë se "98 shishe birrë në mur,
97 shishe birrë në mur ", dhe se ishte vetëm aq
se kur ne të merrni për një shishe të birrës, nuk kam
për t'u shqetësuar në lidhje me gramatikën angleze.
Por ne gjithashtu mund të rregullojmë këtë me një pak e një, nëse
kusht, ndoshta.
Nëse ky numër është njëjës, të shkojnë përpara dhe të thonë "shishe",
përndryshe nëse është shumësi, thonë "shishe".
Por tani për tani, unë jam plotësisht i prerjes se qoshe.
Pra, le të shohim se çfarë ne kemi marrë këtu.
Pra, ne kemi marrë disa komente në krye.
Unë jam përfshirë këto dy biblioteka, si
ne kemi qenë zakonisht.
Dhe tani më lejoni të lëvizni poshtë për të parë
linjat aktuale të kodit.
Linja 17 nis kryesore.
Line 21 dhe 20 ka sa shishet e birrës do të ketë?
Dhe pastaj unë e quaj GetInt.
Dhe tani kam një grimë e një kontroll sanitar.
>> Pra, kjo është një konventë që ne tani do të fillojnë të miratuar të
më rigoroze kontrolloni input të përdoruesit.
Ndonjëherë ju thjesht nuk duan të nxisin ato përsëri
dhe përsëri dhe përsëri.
Nëse përdoruesi vida dhe nuk bashkëpunojnë, gjobë.
Quit dhe thjesht nuk merren me ta.
Dhe kështu kjo është ajo që unë jam duke bërë këtu.
Nëse n është më pak se 1, unë jam vetëm do të çirrem në të përdoruesit,
"Më vjen keq, që e bën nuk ka kuptim." Dhe atëherë unë jam duke shkuar për
arbitrare kthehen 1.
Pra, përsëri, kjo është vetëm një konventë të mësohen për të.
Tani për tani, të marrë atë në besim.
Por deri tani, ne kemi qenë gjithmonë të kthehej 0, sepse
kemi thënë kthehej 0 tregon se çfarë?
Audienca: Suksesi.
DAVID J. Malan: Suksesi, kjo është e gjitha.
Pra, tani që ne jemi në fund duke filluar për të menduar për
jo-Sukseset -
me fjalë të tjera, rastet qoshe, kushtet e gabimit -
tani unë kam një furnizim të pafund, ose të paktën katër miliard
gjërat e mundshme që mund të shkojnë keq në programet e mia.
Dhe unë mund të fillojnë të caktuar atyre numrat individuale.
Tani, në përgjithësi mjafton vetëm të kthehen
diçka tjetër se 0.
Pra, ne jemi duke shkuar për të thjesht kthehen 1 tani për tani.
Por arsyeja për kthimin e 1 është se sa më shpejt që ju të ktheheni
1, me mend se çfarë ndodh me pjesën tjetër të programit?
Ajo ndalet.
Kjo ishte.
Pra, fakti që unë jam kthyer 1 është në mënyrë efektive
Një qark i shkurtër ekzekutimin këtë program në mënyrë që
asgjë poshtë vijës 27 do të vazhdojë ekzekutimin.
Sa më shpejt që kthimet kryesore, që është ajo.
>> Të gjithë të drejtë, kështu që nëse përdoruesi ka bashkëpunuar dhe kemi arritur linjë 30
sepse ata shtypen në një numër të ligjshme, këtu është my
Zbatimi i kësaj kënge.
Kështu që unë së pari të shtypura nga një karakter newline, vetëm për
estetikë.
Unë tani kanë një për lak.
Dhe vini re unë jam duke bërë gjërat në një grimë
i një drejtim të ndryshme.
Unë nuk kam për të bërë më pak se, unë nuk kam për të bërë + +.
Unë mund të them në vend të nisja një variabël unë vendosur atë barabartë me
n, numri përdorues shtypen në, pastaj të bëjë në vijim, në mënyrë që
kohë sa unë është më e madhe se 0, atëhere unë -
një herë ju keni përfunduar një përsëritje të këtij lak.
Pra, ne mund të mbështeteni poshtë duke përdorur një për lak si.
Tani, kjo është një javë shumë e shumë gjëra tani, me printf.
Kështu print "% d shishe të birrës në mur." "Print% d
shishe birrë. "" Merrni një poshtë, të kalojë atë rreth. "Printo
"% D shishe të birrës në mur." Pra, kjo është ende% d, por
vini re se argumenti për printf po ndryshon.
Pas presje, unë kam, sepse unë dua të them 99.
Pas kësaj presje, unë kam, sepse unë dua të them 99.
Pas kësaj presje, unë kam - 1, sepse unë dua të them në 98
kjo përsëritje parë, dhe kështu me radhë.
Dhe tani këtu poshtë, unë vetëm kanë disa vërejtje budallaqe pak.
Dhe pastaj linjës 42, ta kthej 0 nga Konventa, duke nënkuptuar se
çdo gjë është në rregull.
>> Pra, çfarë nëse unë goofed?
Çfarë mund të një gabim i përbashkët këtu të jetë?
E pra, çfarë nëse unë rastësisht thënë mirë, unë nuk dua për të numëruar
poshtë për 0, unë dua 0 shishe të birrës në mur?
Kështu që unë them, unë është më e madhe se ose e barabartë me 0.
Çfarë do të jetë simptomë që unë tani të shohim nëse unë recompile
beer1 dhe drejtuar atë?
Audienca: Negativ.
DAVID J. Malan: Po, kjo është gonna të shkojnë negative.
Kjo është një off-nga-një gabim, një tepër
gabim i përbashkët për të bërë.
Le të vërtetë të shkojnë prapa në dritaren e terminalit dhe të bëjë atë
këtu, kështu që ne mund të shohim më shumë në një kohë.
Shkruani, 99 shishe birrë.
Ngushtë, por ne kemi shkuar ndonjëherë në mënyrë pak më shumë larg.
Ne këndoi këngën shumë larg poshtë, të tilla që ne tani goditur
Numri negative.
Kështu që nuk ka mjaft të punojnë.
>> Të gjithë të drejtë, kështu që ne lehtë mund të rregullojmë se duke shkuar prapa në
mënyrë ajo dikur ishte.
Por cilat janë disa mundësi tani për
përmirësim?
E pra, më lejoni të hapur beer2.c dhe lëvizni poshtë këtu dhe për të marrë një
shikoni në këtë version.
Cila është gjëja e parë që në hedhje nga ju si e ndryshme
në këtë version këtu?
Audienca: [padëgjueshme].
DAVID J. Malan: Yeah, kështu që nuk jam më unë, sepse kjo ka ndodhur me
mua ju e dini se çfarë, unë jam duke kërkuar për përdorues n, dhe atëherë unë jam i
vendosjen i barabartë me n, dhe atëherë unë jam i ndryshuar, por unë kurrë nuk jam
prekur n përsëri.
Pra, çfarë dreq ishte pika e ndarjes jush një tjetër 32
BITS quajtur i vetëm kështu që unë mund të ketë një ndryshore tjetër?
Pra, në këtë rast, unë lloj i njohur se panevojshme
funksion të projektimit.
Dhe unë jam tani do të thonë, ndërsa n është më e madhe se 0, shkoni
përpara dhe të printoni të njëjtën këngë, duke kaluar një n për printf si
Argumenti i dytë, dhe n - 1 si argument të dytë këtu poshtë.
Dhe pastaj në çdo përsëritje të këtij lak, të shkojnë përpara dhe vetëm
pakësim n vetvete.
Tani, funksionalisht, ky program
do të jetë identike.
Nëse unë lloji në 99, n fillon në 99.
Unë pakësim, pakësim, pakësim, pakësim.
Unë jam duke shkuar për të marrë të gjithë rrugën poshtë për të "Një shishe birrë në
mur, një shishe birrë.
Merrni një poshtë, të kalojë atë rreth.
0 shishet e birrës në mur ". Fund, sepse kam bërë
merrni kusht saktë.
Kjo është më e madhe se 0.
Unë nuk e kam bërë këtë gabim.
>> Pra, cila është më e mirë, version një ose dy version?
Pra, dëgjova një bandë e murmuritjet për dy.
Pse dy?
Çfarë është ajo?
Audienca: [padëgjueshme].
DAVID J. Malan: Oh, ne rregull.
Pra, ajo nuk do të shkojë më poshtë 0, por mos harroni, në versionin anë,
Versioni origjinal i saktë nuk ka shkuar më poshtë ose 0.
Pra, mbani mend se ky është versioni i saktë.
Pra, le të paktën krahasohen dy versionet e sakta.
Çfarë është një argument në favor të verzionit
dy qenie, mmm, mirë?
Po?
Audienca: Ajo përdor më pak hapësirë.
DAVID J. Malan: Mirë, kështu që ai përdor më pak hapësirë, e drejtë?
Ndërsa një version i përdorur 32 bit për n, dhe pastaj një tjetër
32 bit për i.
Versioni dy përdor vetëm 32 bit për n, në mënyrë që
duket të jetë një plus.
Mendime të tjera?
A ka dikush duan të argumentojnë në favor të një?
Po?
Audienca: Ju duhet të përdorni linjë shtesë e kodit për n -.
>> DAVID J. Malan: Mirë, sigurisht.
Pra, kjo është e drejtë.
Pra, kjo thjesht, të paktën për mua -
Unë do të thotë, kjo në fakt ndjen një Messier pak, fakti që
Unë nuk mund të lloj të encapsulate gjithë logjikën time në një
Shkarko bukur, për lak, si për lak mund.
Ja, unë lloj i duhet të litar në këtë n -
në fund të lak, sepse
kjo është logjikisht e domosdoshme.
Por kjo lloj i fërkon mua rrugën e gabuar, vetëm për shkak se ajo
Duket ndarë nga logjika e deri këtu, edhe pse,
përsëri, kjo është e nevojshme.
Mendime të tjera?
Po?
Audienca: [padëgjueshme].
>> DAVID J. Malan: Po.
Pra, çfarë nëse ju në vend, në fund të këngës, të kërkuar për të
printoni përsëri emrin e kenges?
Si "Thanks për të luajtur 99 shishe birrë", apo diçka
silly si kjo?
Por pikë është, që ju të kërkuar qasje në vlerën origjinale.
Fakti që ju keni mutated ose të ndryshohet në çdo n
përsëritje dhe për këtë arsye e kanë shkatërruar vlerën e saj origjinale
do të thotë që ju thjesht nuk mund të bëjë që në fund.
Tani, ndoshta, ne në mënyrë të qartë nuk duan të bëjnë
se në këtë program.
Pra, kush kujdeset?
Por kjo është një pikë shumë të vlefshme.
Dhe të jetë i sinqertë, nuk ka të vërtetë nuk ka një
drejtë përgjigjen këtu.
Ata janë të dy në mënyrë të barabartë të sakta.
Unë mund të jetë i bindur ose mënyrë.
Unë do të them se, në përgjithësi, kjo është një parim i mirë në qoftë se ju
pyeti përdorues për disa vlera dhe ju të ruhet në një variabël
si n, vetëm lloj i në parim, kjo është ndoshta mirë
për të mbajtur atë rreth.
Dhe çdo të dhënave që ju doni të shndrrohet përsëri dhe përsëri, vetëm
t'i japë vetes një kopje të kësaj variable, vetëm kështu që ju
të kenë qasje në origjinal.
Ju jeni të shpenzimeve 32 bit me shume, por realiteti është ky
kompjuter ka, si, dy gigabajt të RAM këto ditë,
dhe ne jemi quibbling mbi 32 bit?
Të vërtetë nuk është e tillë një punë e madhe.
Dhe madje edhe në këtë pajisje këtu, me një gjysmë një koncert apo një
Gigabyte RAM, 32 bit 64 bit kundrejt,
nuk është e tillë një punë e madhe.
Sigurisht sot, ajo do të jetë mënyra e përshkuar nga madhësia
e programit të vetë, e cila do të jetë disa qindra
kilobytes, nëse nuk është një megabajt pak, këto ditë.
>> Shqetësimet në mënyrë të arsyeshme, ka një përgjigje të drejtë.
Por të paktën ata janë mendime që duhet të fillojë të
kalojnë nëpër mendjen tuaj?
Sepse në pset 0, edhe pse ne me të vërtetë pritet vetëm
korrektësisë, ose të paktën disclaiming mete të ndryshme që
ju mund të keni hasur, si ne shkojmë përpara, dizajni është
do të jetë një tjetër aspekt kyç, dy prej të shkruar kodin
dhe gjithashtu vlerësimin tonë kod.
Dhe kështu të paktën të japë menduar për gjëra të tilla si kjo.
Dhe vetëm sepse veprat diçka nuk do të thotë se është mirë,
nuk do të thotë se është mirë-projektuar.
Dhe kjo është një nga gjërat Fellows mësimore dhe
përcakton problemi do të na ndihmojë ngas pjesë me kalimin e kohës.
>> E pra, çfarë në lidhje me, le të themi, ky version ketu?
Më lejoni të bëj diçka pak sexy këtu në një moment.
Së pari më lejoni të hequr qafe këtë.
Dhe tani le të rregullojmë këtë çështje gramatikore.
Pra, në këtë version, unë dua të rregulluar gramatikë në mënyrë që,
në vend se të them vetëm cilësues s, si "shishe"
apo "shishe" -
Unë nuk dua të prerë atë qoshe -
Unë gjithashtu dua të dinamike të shtypura nga fjala "shishe"
apo "shishe", duke përdorur placeholders këtyre% s sot.
Kështu që kam nevojë për të kontrolluar atë që është kusht vlera e i.
Dhe në qoftë se kjo është 1, unë dua të them "shishe", dhe në qoftë se çdo gjë është e
tjetër, unë dua të them "shishe". Pra, le të përpiqemi për të bërë këtë.
Pra, nëse unë == 1, atëherë më lejoni të shkoj përpara dhe të deklarojë -
Unë kam nevojë për një varg, kështu që më lejoni të bëjë S1 string, sepse kjo është
string pari I intereson tani.
Unë jam duke shkuar për të thonë "shishe". Dhe pastaj, le të shohim, string
s2 - dhe unë do të shpjegojë se ku unë jam duke shkuar në një moment -
"Shishe". Pra kujtoj se, në këtë këngë, ne duhet të jetë në gjendje
gjëra të shtypura, dy fjalë të ndryshme potencialisht.
Pra, nëse ne shikojmë prapa këtu, vini re se kur ne të merrni për të
ky shembull këtu, "dy shishe të birrës në mur,
Dy shishet e birrës, të marrë një poshtë, të kalojë atë rreth ", unë dua
Kjo linjë e katërt për tani them "një shishe birrë në
mur ". Kështu që unë duhet të vendosë, nuk dua të them" shishe "ose
"Shishe"? Kështu që unë jam duke shkuar për të thonë në mënyrë arbitrare, të gjithë të drejtë,
Unë jam duke shkuar për tani deklarojë një ndryshore të quajtur S1 varg,
një, që do të marrë mbyllën në këtu dhe edhe këtu,
sepse këto fjalë janë gjithmonë të njëjta, vetëm për shkak të
Natyra e këngës.
Dhe unë jam duke shkuar për të thirrur s2 çfarëdo fjala që unë dua të
përfundimisht duket këtu poshtë.
Tani, fjalë për fjalë, 99 herë nga 100, ajo do të jetë
njëjtë në të dyja këto raste, sepse 3 është shumësi, 2 është
shumësi, 4 është shumësi.
Por në këtë rast këndi, ku ne të merrni për të 2 dhe pastaj 1, ose
edhe 1 0 dhe pastaj, Unë kam nevojë për këtë logjikë.
Kështu që unë duhet të kalojnë disa kohë në kodin tim duke marrë atë të drejtë.
Pra, nëse unë ta bëjë këtë, në qoftë se unë == 1, atëherë s1 vendosur të barabarta për "shishe"
dhe s2 të barabartë me "shishe", sepse kjo do të jetë për 1
shishe, dhe kjo do të jetë për 0 shisheve.
Dhe kjo këtu, çfarë përfaqëson kjo?
Vetëm të jetë i qartë.
Kjo është vetëm një koment.
Pra, fakti se ju mund të keni të vetme-line komente thotë ju
mund të komentojë kodin tuaj si kjo, por një tjetër të përbashkët
paradigmë, gjithashtu, është se në qoftë se ju keni një frazë super-shkurtër që
ju doni të vënë veten dhe kjo është vetëm më i lexueshëm për të vënë
atë të drejtë në fund të vijës së kodit, ju mund të
absolutisht të bëjë diçka si kjo.
>> Deri tani, çfarë nëse unë bëj këtë? Tjetër në qoftë se unë nuk është e barabartë me 1.
Pra Bang barabartë -
pikë thirrje është i njohur si "zhurmë".
Pra Bang = 1.
Pra, në qoftë se unë nuk është i barabartë me 1, çfarë unë dua të bëj në vend?
E pra, fjala e parë që unë dua të jetë ajo?
Pra string 1 duhet të jetë "shishe" për shishe shumës,
dhe pastaj kjo do të jetë shumësit "shishet", si dhe, tani për tani.
Dhe ne do të shohim nëse kjo vërtetë na merr në
ku duam të shkojmë.
Kështu që tani, nëse unë lëviz këtu poshtë, vëreni se unë jam në mbylljen e
jo vetëm unë, por s1.
Unë jam në mbylljen e I dhe S1.
Dhe pastaj këtu poshtë, unë jam minus 1, e cila është e njëjtë si
më parë, por s2.
Me fjalë të tjera, unë dua fjalën angleze për të ndryshuar bazuar
në këtë logjikë.
Tani, ka tashmë disa probleme në këtë Kod.
Çfarë është thyer tashmë nga porta këtu?
Po?
Audienca: [padëgjueshme].
>> DAVID J. Malan: Pikërisht.
Kështu që unë tashmë e kam shkelur mësimin e fushës.
Kështu që unë kam deklaruar s1 s2 dhe, por unë kam bërë atë në brendësi të
formatimin e teksteve kaçurrel, që do të thotë, vërtet, ky kod do të punojë deri
deri linjës 42, por sa më shpejt që unë goditi linjë 43, guess what asnjë
ekziston më?
Well, guess what nuk është më në fushëveprimin - as s1 s2 ose.
Pra, ne kemi për të rregulluar këtë.
Pra më lejoni të fshini deklaratat.
Dhe unë do të largohet nga emrat e ndryshueshme dhe të fshini këtë këtu
dhe fshini këtë këtu.
Dhe në çfarë unë me të vërtetë duhet të linjave të shpallë këto gjëra?
Audienca: [padëgjueshme].
DAVID J. Malan: Yeah, kështu që ndoshta
drejtë deri këtu, 33-ish.
Pra s1 vargut dhe pastaj string s2.
Dhe kjo rezulton, unë mund ta bëjë këtë.
Nëse ju jeni duke deklaruar dy variabla të të njëjtit lloj,
të vërtetë ju mund të përdorni vetëm një presje dhe të bëjë që në C. Të gjitha
drejtë, kështu që tani unë kam dy variablave -
s1 s2 dhe.
Unë jam caktimin e atyre vlerave në këto
Kushtet këtu, apo në këtu.
Dhe atëherë unë jam duke përdorur ato poshtë.
Sa mirë është kjo tani do të punojë?
>> E pra, kjo është ende një buggy pak, por le të shohim së paku
se sa larg kemi marrë.
Pra më lejoni të shkoj përpara dhe të bëjë beer3.
Është kjo beer3?
Yep, kjo është beer3.
Dhe tani më lejoni të shkoj përpara dhe të drejtuar beer3.
399 99.
Ne ndoshta mund të kaloni shumicën e tyre.
Dhe këtu poshtë, shikoni në atë.
"Një shishe birrë në mur, një shishe birrë, të marrë
një poshtë, të kalojë atë rreth, shishe të birrës 0 në mur ".
Por unë jam tërhequr vëmendjen tuaj për gjysmën e vetme e zgjidhjes.
Lloji i dehur deri këtu.
Pra, duket se rastet qoshe lindin kur i barabartë me atë që
dy vlera?
Audienca: 2, 1.
DAVID J. Malan: 2 dhe 1.
Kjo nuk është 1 dhe jo 1.
Është me të vërtetë vetëm këto dy stanzas fundit të kësaj kënge.
Pra, çfarë mund të në vend të dëshironi të bëni?
Kështu që unë duket se kanë kapur rastin kur është në qoftë se unë == me 1,
pastaj fjala e parë është "shishe", por fjala e dytë
është "shishe". Por këtu, unë dua të ndryshojë këtë të jetë == 2.
Dhe në qoftë se ky është rasti, çfarë dua
fjala e parë që të jetë?
Audienca: "shishe".
DAVID J. Malan: "shishe", kështu që për dy shishe.
Dhe pastaj kjo fjalë këtu duhet të jetë -
Audienca: "shishe".
DAVID J. Malan: "shishe", njëjës.
>> Të gjithë të drejtë, le të zoom jashtë, të shkojnë prapa gjatë këtu, ri-drejtuar bërë,
ri-drejtuar beer3, lloji 99 përsëri.
Mirë, "faji segmentimit (core hedhur)."
Çfarë kam bërë gabim?
Audienca: Ju nuk kanë një vlerë [padëgjueshme].
DAVID J. Malan: Ah, pikë e shkëlqyer.
Të gjithë të drejtë, kështu që çfarë është e gabuar këtu?
Pra faji segmentimit, dhe ne jemi në të vërtetë do të shohim
kjo mjaft disa herë në të ardhmen, me qëllim.
Por tani për tani, çfarë e bën këtë të vërtetë do të thotë?
Një faji segmentimit pothuajse gjithmonë do të thotë se ju keni
u përpoq për të hyrë disi, RAM memorie në kompjuterin tuaj,
se ju nuk bëni vet, se ju nuk keni të vërtetë kërkuar
sistemit operativ për të.
Pra, në këtë rast, njoftim se çfarë kam bërë, e cila është
meta në logjikën time.
Unë kam caktuar s1 s2 dhe një vlerë të barabartë nëse i 1.
Unë e kam bërë gjithashtu se në qoftë se i barabartë me 2.
Por unë nuk e kanë bërë atë në numër të pafund të tjera
Mundësitë -
në veçanti, 3 ose 4, ose dot, dot, dot, 99.
Pra, një fix për këtë mund të jetë vetëm le
kanë një kusht tjetër.
Dhe më lejoni të shkoj në këtu dhe thonë S1 barabartë -
çfarë duhet të jetë këtu?
Audienca: [padëgjueshme].
>> DAVID J. Malan: "shishe", sepse në rastin e përbashkët,
kjo është vetëm e njëjta gjë.
Pra, është e barabartë me kuotën mbyll thonjëzat, "shishe". Kështu që për shumësit
shishe, dhe pastaj deri këtu, për shishet shumës.
Mirë, kështu që tani më lejoni të kthehem në dritaren time terminal,
recompile, ri-drejtuar atë.
99.
Uf.
Dhe le të bëjë një kontroll të shpejtë mendje e shëndoshë.
Teknikisht, ne do të duan për të lexuar të gjitha këto për të siguruar
ata janë korrekt, por le të shohim në
pak fajtorët njohur.
3 shishe, shishe 2, 2, 1 shishe
shishe, 1 shishe, shishe 0.
Ne duket se kanë të paktën fixed it tani për tani.
Por kapur këtu është se çfarë një rrëmujë e tmerrshme kjo është perëndia
vetëm për të zgjidhur një budalla
një karakter gramatikor detaj.
Pra, ka një lloj arsye që unë prerë këtë cep
më herët, sepse ajo është vetëm krejtësisht i bezdisshëm që të ketë për të
shkruaj këtë kod shumë.
Por kjo rezulton se ka mënyra pak më elegante e
shprehur njëjtën gjë e saktë.
Dhe ne mund ta bëjmë këtë si më poshtë.
>> Më lejoni të lënë këtë në ekran për një moment dhe
prezantuar diçka të njohur si një operator tresh.
Kjo është lloj i një një astar-që është menduar vetëm për të bërë tonë
jeton një sexier pak, siç është premtuar.
Dhe unë jam duke shkuar për të bërë këtë si më poshtë.
Më jepni një varg quajtur s1, dhe le të më
caktojë atë si vijon.
(I == 1)?
"Shishe", ndryshe "shishe". String s2 merr (i == 2)?
"Shishe", ndryshe "shishe".
Pra, çfarë atëherë është dallimi këtu?
Këto dy rreshta të kodit, unë argumentojnë, mund të
zëvendësojë këtë rrëmujë tërë.
Kështu që unë e quaj atë një rrëmujë, vetëm për shkak se ajo lloj fërkon mua
mënyrë të gabuar se ajo është aq shumë linja të kodit.
Jo keq.
Kjo nuk është dizajn i keq.
Pëlqen, kjo është krejtësisht e saktë dhe të përkryer gjobë.
Por coding merr lodhshme qoftë se ju keni për të shprehur veten në mënyrë
mallkuar specifike përsëri dhe përsëri dhe përsëri me një të thjeshtë
skenar si kjo.
Pra C ka disa shkurtesat, si kjo.
Pra, kjo në thelb është e thënë të deklarojë një varg quajtur S1 dhe
caktojë atë ose këtë vlerë, ose nëse kjo vlerë është i == -
Na vjen keq, unë duhet të them këtë më qartë.
Shpallë një S1 ndryshueshme, të caktojë në këtë vlerë nëse kjo është e vërtetë.
Përndryshe, të caktojë në këtë vlerë.
Pra, me fjalë të tjera, kjo është lloj i një mënyrë të një-line të
duke thënë se në qoftë tjetër, por duke bërë një detyrë përgjatë rrugës.
Pra, nëse unë është 1, atëherë shkoni përpara dhe e quajnë këtë "shishe". Dhe
atëherë kjo tjetër, e quajti atë "shishe". Ndërkohë, s2,
Fjala e dytë që ne kemi nevojë për të përcaktuar, nëse i barabartë me 2, ne do
s2 vendosur në "shishe". Përndryshe, vendosur atë në "shishe". Dhe çfarë
kjo do të thotë tani është që unë mund të shkoni nëpër këtë dhe fshini të gjithë
këto rreshta të kodit.
Dhe kur them, disi qesharake, se kjo është tani
sexier, kjo është sexier në lloj kuptim stilistik.
Fakti që funksionalisht, ky kod është në të vërtetë do të
të bëjë të njëjtën gjë e saktë.
Dhe, edhe pse ai mund të duket pak e fshehtë në fillim
shikim, sepse ne nuk e kemi parë këtë ndërtimin e një të parë, unë do të
argumentojnë se ajo përfundimisht do të jetë shumë më shumë
lexueshëm dhe shumë e lehtë për ne njerëzit të lloj
kuptojnë, sepse tani ju mund të lexoni
Kodi gjitha në një rresht.
Është ende e ngjashme në frymë të një rast, ku kjo është
kusht dhe atëherë kjo është ajo që është brenda, nëse dhe kjo
është ajo që është brenda tjetër.
Por ne mund ta bëjmë këtë vetëm shumë më elegante.
>> Dhe në qoftë se unë tani të shkojnë prapa në terminalin e mia, duke fshirë të gjitha
e këtyre linjave dhe zëvendësuar ato me vetëm ata dy,
recompile, ri-drejtuara shishet e birrës me 99, njoftim se mia
gramatika është, në fakt, ende saktë.
Pra, përsëri, diçka për të filluar.
2 shishe të birrës, 1 shishe birrë.
Duket e drejtë.
Po.
Kështu që nuk kemi një zgjidhje shumë më i ngjeshur.
Pra, kjo, shumë, si ju merrni më të rehatshme me C nuk,
domosdoshmërisht me pset parë apo edhe të dytë, por
kuptojnë se këto punime mund të na lejojë të bëjmë gjëra kurrë
më shumë elegante.
Tani le të bëjmë një gjë tjetër këtu.
Më lejoni të shkoj përpara dhe të hapur deri return1.c.
Tani le të fillojë për të zgjidhur një problem tjetër në një mënyrë që
na lejon të shkruani kodin më të sofistikuar.
>> Kështu që këtu është një program i thjeshtë pak qëllimi i të cilit në jetë
është rritja e vlerave.
Dhe në fakt, le të marrin një hap prapa.
Më lejoni të bëjë këtë me dorë.
Më lejoni të bëj të përfshijë dhe int main (void).
Dhe më lejoni të thërrasë këtë increment.c.
Dhe çfarë unë dua të bëj?
Unë jam duke shkuar për të shkuar përpara dhe të thonë diçka si -
do që ne e quajmë numrat njëjtë -
x int.
Pra x int merr 2, x printf është% d, linjë e re, x.
Kështu që unë jam i shtypur shpejt, por një lloj të stuff njohur tani.
Atëherë unë jam duke shkuar për të bërë x + +.
Atëherë unë jam duke shkuar për të shkruar atë fjalinë e njëjtë përsëri.
Dhe atëherë unë jam duke shkuar për t'u kthyer vetëm për të lënë 0 programin.
Të gjithë të drejtë, kështu që ky është një program që
increments një numër.
Është parë do të nisja diçka për 2, dhe atëherë është
Rritja do të shtypura atë dhe atë përsëri.
>> Pra, le të drejtuar rritje të, program tepër të thjeshtë.
Por mendoj se tani unë dua të kubike vlerën, kështu që nuk
diçka disi arbitrare.
Dhe unë në fakt dua të bëj x merr kubike e saj.
Kështu që unë mund të përdorin atë që quhet funksioni pow, por unë nuk
të vërtetë e di se ku është ende.
Kështu që unë jam duke shkuar për të bërë këtë mënyrë modës së vjetër.
x herë kjo është e barabartë me x here x x herë.
Kështu që unë jam cubing vlerën, shumëzuar atë me vete përsëri
dhe përsëri dhe përsëri, në mënyrë që ne të merrni fuqi
e 3 në këtë rast.
Deri tani numrat unë duhet të shtypura duhet të jetë, siç do të shohim
këtu - të bëjë rritje të, kështu që në fakt nuk është e vërtetë ardhura
më, por ne do të lënë vetëm emrin -
2 dhe pastaj 8.
Tani, ne kemi fillimet e një mundësi për sqimë
këtu, ku kjo gjë cubing e shumëzuar një numër
vetë në vetvete në vetvete ndjehet si kjo mund të jetë vetëm
dobishme që të ketë si një funksion, ashtu si dikush vendosi
vjet më parë - ju e dini, lloj i dobishëm në qoftë se njëri prej nesh ulet
dhe shkruan printf në mënyrë që pjesa tjetër e botës mund të përdorin atë,
pse nuk kemi ulen dhe të shkruajnë një funksion të quajtur kubike
që e bën këtë cubing për ne kështu që ne nuk kemi në dorë
zbatojë nocionin e vlerave cubing këtu?
>> Pra një shembull të thjeshtë, por le të shkojnë përpara dhe të përdorni këtë si një
mundësi për të shkruar funksionin tonë.
Pra deri tani, ne kemi përdorur vetëm kryesor, dhe ne kemi përdorur tjera
Funksionet e njerëzve, por ne nuk kemi shkruar tonat.
Pra, këtu ne do të shkojmë.
Unë jam duke shkuar për të shkuar përpara dhe të shkruajnë një funksion të quajtur kubike.
Dhe unë jam duke shkuar për të marrë që të ketë një kontribut.
Pra, kontributi i saj do të jetë një numër të plotë.
Dhe çfarë është ajo do të bëni?
Ajo do të shpallë dalje int = input input herë
herë input.
Dhe pastaj ajo do të kthehet se prodhimit.
Dhe atëherë unë duhet të jenë specifike tani.
Ky funksion do të kthehet një int.
Kështu që këtu, atëherë është se si ju do të shkruani funksionet tuaja.
Ju së pari të vendosë se çfarë është emri i juaj
Funksioni do të jetë.
Dhe në përgjithësi, diçka shpjeguese është e mirë, kështu që unë do të
quajnë atë kubike.
Atëherë ju duhet të përcaktojë se çfarë ajo do të kthehet, çfarë është
prodhimin e saj do të jetë.
Dhe ne nuk kemi mundësi që shumë ende.
Int, char, noton, bool, string.
Tani për tani, unë jam duke shkuar për të rrinë me një int, sepse unë dua atë
për t'u kthyer një numër të plotë.
Atëherë ju duhet të përcaktojë se çfarë inputet e saj, nëse ka ndonjë, janë.
Dhe në qoftë se kubike merr një argument, merr diçka në mes
kllapat, ju duhet të jepni këtë argument një emër që
ju mund të telefononi atë si diçka që ju jeni zbatimin ose me shkrim
ky funksion, dhe ju keni për të dhënë atë një lloj, që në këtë
Rasti do të jetë int.
Pra me pak fjalë, kubike është një funksion që merr një numër të plotë
si input dhe kthehet si një numër të plotë prodhimit.
>> Pra, çfarë e bën atë të bëjë me atë input?
E pra, në përputhje 14, unë deklaroj një dalje ndryshueshme quajtur, dhe unë
caktojë atë vlerën, herë herë input input input.
Dhe atëherë unë kthehen prodhimit.
Pra, si mund ta përdorin këtë atëherë?
Çfarë mund të ndryshojë këto karaktere theksuara në linjë
7 të, mendoni ju?
Audienca: [padëgjueshme].
DAVID J. Malan: Yeah, kështu kubike e x.
Pra, x është një variabël, që do të thotë se ka disa vlera.
Për fat të mirë, kjo është e tipit integer.
Dhe për shkak se x është një int, që do të thotë unë mund të kalojë atë në kubike.
Dhe edhe pse unë jam thelbësore vlerën e x me vlerë
nga x kubike, siç ka qenë rasti deri më tani, çdo herë që
kanë shenjë të barabartë dhe një linjë e kodit, sende të drejtë
merr ekzekutuar dhe pastaj merr caktuar për
vlera në të majtë.
Pra, rendi i operacioneve është si ne do të shpresojmë.
Pra, e bën këtë punë?
E pra, më lejoni të shkoj këtu poshtë.
Më lejoni të hapur dritaren time terminali.
Më lejoni të bëjnë rritje të, Enter.
"Deklarata e nënkuptuar 'kubike' funksion është i pavlefshëm në
C99. "Si një mënjanë, C99 C referohet gjuhës ashtu siç ishte
përcaktuar në vitin 1999, e cila ishte një përditësim mbi versionin nga
1989, e cila është një freskimin mbi origjinal.
Pra, kjo është e gjitha që do të thotë.
>> Pra, çfarë do të thotë se "deklarata e nënkuptuar
'kubike' funksion është i pavlefshëm? "Është e drejtë këtu.
Kjo është e drejtë atje në linjë 12.
Audienca: [padëgjueshme].
DAVID J. Malan: Çfarë është ajo?
Audienca: Kjo nuk është parë.
DAVID J. Malan: Kjo nuk është e para.
Pra, kjo është gjë.
C është lloj i trashë, ose përpiluesit C janë lloj i trashë.
Ata me të vërtetë vetëm bëni atë që ju them që ata të bëjnë.
Dhe ata, në mënyrë të veçantë, vetëm lexoni kodin tuaj të lartë deri në fund,
majta në të djathtë.
Pra, nëse përpilues, tingëllimë, është lexuar kodin tuaj, alineja 1, ajo
shifra se si ta bëni këtë.
Oh, këtu vjen kryesore.
Mirë, më lejoni të shkoj përpara dhe të deklarojë një ndryshore x.
Më lejoni të shkruar diçka.
Linja 7, çfarë dreq është kubike?
Kjo nuk është deklaruar në stdio.h.
Ajo nuk ka ardhur me C. Unë nuk kam asnjë ide se çfarë të bëni.
Dhe kështu tingëllimë vetëm bails dhe shpërblej me atë mesazh gabimi.
Kështu që ne mund të rregullojmë këtë në disa mënyra.
Ne mund të mësojmë se çfarë tingëllimë kubike është duke lëvizur vetëm kur
Deklarata është.
Kështu që unë prerë dhe të ngjit atë në majë kryesore.
Tani e kuptojnë se vetëm për shkak kryesor nuk është më parë, kjo është
ekzekutuar ende nga default.
Kryesor është kryesore.
Kjo është funksioni i parazgjedhur emrin.
Kjo nuk ka rëndësi se ku ajo është në një skedar.
Por të paktën tani tingëllimë ka parë kubike para se unë e përdorin atë.
Pra, le të shohim nëse është tingëllimë lumtur tani.
Të bëjë rritje të, ajo ka hartuar këtë kohë.
>> Më lejoni të drejtuar rritje të.
Dhe me të vërtetë, ajo duket të jetë duke punuar.
Tani, ju mund të dalë me skenare ku përfundimisht
kjo nuk është e mundur për të vënë çdo funksion
përmbi çdo funksion tjetër.
Ju do të merrni mbërthyer në këtë lak të pafund në realitet,
ku ky djalë dëshiron të jetë këtu, por kjo
djalë duhet të jetë atje.
Kështu që nuk gjithmonë punë.
Pra fatmirësisht, C ka një zgjidhje më elegante.
Unë jam duke shkuar për të vënë këtë përsëri aty ku ishte, vetëm për shkak se unë
preferojnë, si një çështje e parimit, që gjithmonë të jetë kryesore
në krye, sepse kjo është vetëm mirë për të parë se çfarë ky program
bën by default.
Dhe ajo që unë jam duke shkuar për të bërë deri këtu është shpallë atë që quhet
një prototip.
Unë jam duke shkuar për të ri-deklaruar funksionin tim kubike nga fjalë për fjalë
kopjimi dhe pasting.
Në fakt, kjo nuk është fjalë për fjalë.
Pra, fjalë për fjalë kopjimi dhe pasting linjë 15
lart vijës 6.
Kjo nuk ka rëndësi se çfarë Shkarko këtë përfundon deri në.
Ajo ndodh të jetë në përputhje 4.
Por kjo nuk duhet të jetë para kryesore.
Por vini re ndryshimin.
Line 4 përfundon me pikëpresje, që do të thotë hey,
Tingëllimë, të marrë fjalën time për atë se ekziston një funksion
quajtur kubike që merr një int dhe kthen një int.
Por unë nuk jam gonna të ju tregojnë se çfarë është ajo ende.
Vetëm e di që unë premtimin për të ju them përfundimisht.
Dhe me të vërtetë, tani kjo është në rregull se kjo është poshtë.
>> Pra, kjo është në përgjithësi i mirë, sepse atëherë në krye të
dosjen tuaj, ju vetëm mund të nxjerr nga goja, të shpejtë-zjarr, një linjë
secila, çfarë emrat e funksioneve tuaja janë, çfarë tyre
inputet janë, çfarë rezultatet e tyre.
Dhe për të qenë më të qartë, të dhëna në përgjithësi do të thotë argumentin ose
parametër, sinonime.
Prodhimi do të thotë kthimi i vlerës, çfarë e bën atë
dora përsëri në mua.
Pra, në këtë rast këtu, kubike është deklaruar në krye, por
përcaktuar, i njohur ndryshe si zbatohet, në pjesën e poshtme.
Pra, tani le të kthehemi këtu dhe ri-drejtuar këtë.
Kështu që tani më lejoni të shkoj përpara dhe të ri-drejtuar bërë, ri-drejtuar rritje.
Dhe tani duket të jetë duke punuar vetëm gjobë.
Deri tani ne mund të shkoni përpara dhe faktorit nga diçka si
birrë shembull në këtë version të katërt.
Pra më lejoni të lëvizni poshtë këtu.
Dhe vëreni se unë lloj i mori këtë mësim në zemër vetëm tani.
Fakti që unë u kënduar Stanza e njëjtë përsëri dhe
përsëri dhe përsëri, të njëjtën linjë në kor këngën, ndjeu
like pse nuk kam faktor që jashtë në një funksion?
Dhe vërtet, kjo duhet të jetë një nga motivet.
Përveç faktit se dikush tjetër në botë mund të dëshironi
të përdorni një funksion kubike -
kjo është një arsye e mirë për të faktor diçka dhe shkruani tuaj
funksion vetë me porosi -
në qoftë se ka një copë të kodit në programin tuaj që vetëm bën
kuptim konceptual, se ju lloj i duan për të dhënë atë një
Emri - si në këtë rast, kor -
atëherë ju mund të shkruani në mënyrë të ngjashme se si një funksion të veçantë.
Ju nuk duhet të shkruani gjithçka në kryesore në qoftë se ajo vetëm
ndihet pastër për të ndarë atë dhe t'i jepte një emër.
>> Pra, në këtë rast këtu, vëreni se unë kam një koment majë
ky funksion që vetëm këndon në lidhje
Numrat e specifikuara e shisheve.
Vini re këtu se unë nuk kam nevojë për të thirrur këto
gjërat input dhe output.
Në fakt, këtë herë unë vetëm e quajti b time input për shishe.
Dhe vini re këtu, i pavlefshëm sugjeron çfarë?
Kjo kor -
Audienca: Nuk kthejë atë.
DAVID J. Malan: Nuk kthehen një vlerë.
Dhe me të vërtetë, funksionet nuk duhet të kthehen në vlera.
Ata vetëm mund të bëjnë diçka.
Ata mund të kenë atë që janë quajtur efekte anësore, të cilat në këtë
rast është vetëm një bandë e tërë e shtypjes në ekran.
Pra, vini re se ky kod këtu, unë fjalë për fjalë vetëm vodhi nga
Shembulli më parë.
Dallimi i vetëm është në vend të përdorimit si i tim
ndryshueshme, unë jam tani duke përdorur b si variabël tim.
Pra, unë kam b këtu poshtë, unë kam b këtu poshtë, unë kam b
minus 1 këtu poshtë.
Por kodi është saktësisht e njëjtë.
Por vetëm për të ju tregojnë se si ne tani mund të përdorni këtë, më lejoni të shkoj
përpara dhe në të vërtetë të ndryshojë kjo të jetë një lak për të.
për (i int = N; I> N; I -).
>> Kështu që unë kam vjedhur që nga shembullin tonë të mëparshëm.
Më parë, kjo është në përputhje 37 që unë do të kanë filluar
kënduar këtë këngë bezdisshëm.
Por në vend, unë jam vetëm duke shkuar për tani thirrje korin e i.
Bërë.
Deri tani në çdo përsëritje të këtij loop, unë e quaj këtë tjetrin
, funksioni kor, që unë ndodhi të shkruar.
Kjo nuk ishte shkruar nga dikush tjetër vjet më parë.
Por kor, ndërkohë, përdor printf për të shtypur
nga këto katër rreshta.
Por fakti që unë jam duke bërë thirrje kor përsëri dhe përsëri në një
lak thotë që unë jam duke shkuar për të marrë, në fund,
Kënga e saktë njëjtë si unë kam deri tani.
Pra me pak fjalë, tani në qoftë se unë shoh prapa në kodin tim, edhe pse
funksionalisht kjo është ekuivalente, vëreni se ajo është
filluar të marrë edhe më shumë i lexueshëm.
Unë nuk e di saktësisht se si GetInt
është zbatuar.
Sinqerisht, unë nuk e di se si kor është zbatuar.
Por kjo nuk ka rëndësi për mua.
Unë nuk bëj kujdes, sepse tani unë mund të lloj të, si një njeri, të lexuar
kjo nga maja e deri në fund.
Dhe për shkak se funksionet janë quajtur sipas asaj që ata
bërë, kodi im është gjithnjë e më i lexueshëm.
Dhe si programet tona të merrni shumë më kompleks -
deri në fund të semestrit, ju do të jetë me shkrim qindra e linjave të
e kodit në gjuhë të tilla si PHP dhe JavaScript dhe si -
ju do të gjeni se është shumë më e lehtë se sa për të mbajtur gjurmët e
atë që keni bërë.
Dhe kur ju filloni bashkëpunon me miqtë apo
partnerët apo kolegët, ju do të jetë në gjendje të shkruaj më shumë
programe masive duke filluar për të ushtruar këto themelore
blloqe ndërtimi.
>> Pra, me tha se, pse nuk e quajmë atë një ditë?
Dhe ne do të shihemi të mërkurën.
[Duartrokitje]