[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]