[Powered by Google Translate] DAVID J. MALAN: Bütün sağ, bu CS50, bu isə həftə iki başlamaq. Təşəkkür edirik. Bizə zəng burada başlasın. 617-BUG-CS50 yığmaq Mən deyiləm. CS50: Bu CS50 edir. Shuttle Boy, 1 düyməsini basın. Artıq başlamaq üçün 9 basın. DAVID J. MALAN: O Shuttle Boy, mətbuat üçün 1 bildirib. Belə ki, 1 düyməsini basın olacaq. CS50: Sizin mənşəli nədir? Üçün dörd, mətbuat 1. Mather, mətbuat 2. Boylston, mətbuat 3. Lamont, mətbuat 4. Mem Hall, mətbuat 5. Başlamaq üçün, 0 sıxın. DAVID J. MALAN: Biz dörd üçün 1 düyməsini basın bilərsiniz. CS50: Next servis 1:10 PM Bu çox dəqiqə yarpaq, və sonra 1:20 PM, 1:30 PM, 1:40 PM. Bu CS50 edir. DAVID J. MALAN: Yəni bu CS50 səsi deyil. Və bunun üçün yekun layihələrin növ nümunə var Məsələn, siz doğru yola yemək bilər dövr sonu. Məsələn, o shuttleboy.cs50.net var - Mən ilk CS51 sonra yazdı ki, həqiqətən bir layihə geri Mən bir lisenziya idi. Və burada ilham sonra geri idi, onlar bütün idi çap avtobus cədvəllər, orada heç idi online qədər şeylər axtarır anlayışı. Və mən bir həftə sonu göyərçin növ, vasitəsilə tökülür cədvəli çap və kompüter proqramı üçün daşıdıq. Zamanda, kompüter proqramı yazılır oldu C. Və həqiqətən də yazaraq Shuttle Boy ilə qaçdı biz bu günə qədər bunu etdik kimi yanıb-sönən təklif. Amma il ərzində, bu ani çevrilmişdir oldu mesajlaşma bot. Bu daxil, bu veb daha son inkişaf edir SMS-based, habelə bu səs-based daxil kimi. Bu şeyi növləri ilə işarə edir siz ki, semestr sonuna özünüz edin. Məsələn, orada Shuttle oğlan SMS versiyası olur aşağıdakı kimi fəaliyyət. , Mobil telefon, sizə 41411, mətn mesajı göndərmək və əgər sonra Shuttle Boy üçün xüsusi simvolu sboy göndərmək A və A mənşəli olduğu B və B sonra bir hedef - Məsələn, Boylston Space Dördlüyü - nə bir neçə saniyə ərzində almaq geri olmalıdır mətn Shuttle Boy mesaj belirten dəqiq zaman Növbəti bir neçə Servislerimiz ki baxımından, A ki, davam edir point B. Bu kimi tanınan nə daha ümumi nümunə bir API istifadə edir. Belə ki, məsələn, burada bu, yalnız shuttleboy.cs50.net edir Bu faktiki web-based təcəssüm. Lakin bu və digər apps vurğulayır ki, məlumatlar CS50 inkişaf bütün şəklində burada hər kəs məruz API, ərizə proqramlaşdırma interfeys. Və yalnız insanların biz istərdik ki, bir xülya yolu İnternet və başqaları yaradılması müəyyən vaxt sərf Bizə məlumat işğalçı və üçün istifadə edə bilərsiniz ki, proqram sonra top öz applications qurmaq məlumatlar dəsti. Belə ki, məsələn, burada bu Shuttle Boy API səhifə olan mahiyyətcə CS50 dərslik, sənədləri olmaq olur Məlumat üçün CS50 serverlər xahiş haqqında getmək necə. Məsələn, CSV faylları, vergül ilə tanış değilseniz dəyərlər ayrılmış, bu yalnız sort var sürətli və çirkli Excel kimi faylları. Beləliklə, siz bütün məlumat bütün Shuttle Boy xahiş edə bilər evləri və onların GPS koordinatlarını, siz almaq lazımdır kimi geri, mahiyyətcə bir elektron tablo ki, Əgər sonra öz proqram oxumaq olar , nəticələr yaratmaq Shuttle Boy özü kimi məşğul olur. O daha çox tanış, daha müasir data nümayəndəlikləri üçün JSON, JavaScript Obyekt Notation daxildir. Something doğru geri gələcək dövr sonu. Ancaq yenə də, bu, yalnız CS50 öz API bir neçə biridir. Və maraqlı şey, indi Facebook bu gün və Twitter və Google və olduqca çox hər məşhur veb həyata Siz oxumaq deməkdir API, bir növ var var onların veb sənədləri, bir üçün qeydiyyatdan hesab, sonra üst proqram yazmağa başlayın bilər orada təmin hər hansı alətləri və ya məlumat ki, şirkət. Bir neçə il geri öz tədris yoldaşları və belə bir bu bir Mac versiyası yazdı. Belə ki, sol üst burada Mac adlı link, həqiqətən bilərsiniz də bunu öz Mac çalışır ki, bir Mac OS widget download şeyi eyni cür. Belə ki, bu kimi məlumatlar dəsti üst tikinti haqqında bütün var. Dövr sonuna ki,, lakin daha çox. Belə edək yalnız növ almaq və, bir hata real tez dalış şeylər bəzi geri indiyə qədər isidilmiş və hesab edirəm ki, şeyi biz ötən həftə baxdı. Xüsusilə, demək, məni irəli getmək və qoparmaq imkan burada bu misal. Buggy1.c, bu kurs saytında mövcuddur siz isterseniz yükləyin və özünüzü ətrafında soxmaq istəyirəm. Amma qoy bu ədalətli qısa proqram burada zoom və yalnız əsas bloklar ki, bəzi super-sürətli recap biz, həqiqətən, yalnız göydən alaraq başlamaq niyyətindəyik. Mavi məhsulları Belə ki, 9 vasitəsilə xətləri 1-ci, yalnız voleybol suallar. Belə ki, bu yalnız şərh edir. Onlar heç bir funksional mənası var. Lakin onlar qeyd olduğunu mənada şərh olduğunu Mən, insan ki, mühazirə və sonra belə özüm üçün mühazirə, mən, həqiqətən, xatırlayıram nə bu proqram xətti ilə bu xətt vasitəsilə oxumaq olmadan edir və fikrimi tarixi yeniden. Bundan başqa, mən kimi başqasına bu proqram əl əgər Sizcə, bu, çünki bu kimi şərh, sizə daha aydın var proqram həqiqətən bunu nə, və ya ən azı nə proqram etdiyini güman edir. Doğru olsun və ya tamamilə başqa məsələdir. İndi, C, multi-line şərh ilə xatırlayıram ki, line bir burada / *, sehrli rəmzidir. Bu comment başlanğıc gəlir burada deməkdir. Siz son terminator çatana qədər başqa heç bir məsələ * /, qarşı olan. Mən buradan 80-bir tək ulduz var ki, sağ həqiqətən yalnız bir estetik detal. Bu, heç bir funksional mənası vardır. İndi necə line 11? Bu layman nin baxımından nə edir? Nə olub? Auditoriya: standart daxildir. DAVID J. MALAN: OK, yaxşı. Belə ki, stdio.h kitabxana daxildir. Belə ki, nə deməkdir? Yaxşı ki, fayl daxilində, stdio.h, bütün dəstə var funksiyası bəyannamələrin - ki, bir başqası yazdı kodu. Elan etdiyi bir funksiyası və mükəmməl bir misal stdio.h deyil - olan sevimli indi? Belə printf, ən ümumi olanların bir əlbəttə, istifadə etmək erkən ki, kitabxana var. Mən kodu ki, xətt istisna varsa, cingilti fəğan edir bir elan edilməmiş simvolu istifadə haqqında mənə bir şey. Çünki elan edilməmiş bir şey yəqin ki, söz deyil biz printf görünür nə compiler məlumat yoxdur biz line daxildir halda istəyirəm. Və daha aşağı Earth, həqiqətən, nə xətt söyləyərək edir bu server edir yerdə ki, fayl, stdio.h, açmaq sabit və ya cihaz sabit sürücü və surəti yapışdırıb bu orada mənim fayl daxil olmadan mənim ki, əl ilə etmək var. İndi, bir dəfə biz əvvəl biz başlamaq lazımdır, əsas burada aşağı almaq etibarsız nə int və nə ayrı zəhlətökən. Amma indi üçün də üç xətt baxaq ərzində 15 17. Burada Bu arabası kimi iddia edirlər. Mənim şərh Line 7 "10 çap lazımdır deyir ulduz deyil. "Niyə bu, əslində, çap deyil deyil 10 belə ulduz? Auditoriya: [işitilemez]. DAVID J. MALAN: Exactly. Belə ki, 0-dan saymaq başlayaraq edirik ki, görürsünüz. Bu həqiqətən proqramlaşdırma konvensiya və oxunma başlayaraq ümumiyyətlə informatika, 0 əvəzinə 1-dən. Və bu, həqiqətən yalnız üçün fakt irəli gəlir Məsələn, biz səhnədə səkkiz nəfər idi, zaman heç bir əl qaldırmaq, onlar idi bütün səmərəli adet sıfır. Və o, belə bir kompüter konvensiyanın yalnız növü Buna görə də, 0-dan hesablanması başlamaq. Ən aşağı sıra Əgər ikili təmsil edə bilər. Belə ki, burada biz 0 i başlatılıyor açılmış etdik. Biz 0 i bərabər müəyyən etdik. Lakin sonra mən və ya i az deyərək, burada bu səhv etdi 10 bərabərdir. Amma mən 0 başlamaq və əgər vasitəsilə mən getmək hesab edirəm ki, əgər qədər 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, mən, həqiqətən, gedirəm Mən getdi sonra, çünki ekran 11 ulduz çap və 10-bərabərdir. Belə ki, burada asan fix sonra nə? Auditoriya: [işitilemez]. DAVID J. MALAN: Sadece az dəyişdirmək. Həqiqətən istəyirsinizsə, siz bunu edə bilər. Amma ümumi ki, üzərinə qaşqabağını töküb üzünü oldu. Və 0 saymaq başlayaraq yalnız lazımdır şey adətən istifadə almaq. İndi nə özü və bu bütün şekli haqqında? Loop Bu xətt 15 demarks a. Belə bir funksiya deyil. Bu, sadəcə bir şərh var. Biz Not gördüm kimi, bir loop tikinti var. Və bu üç hissələri var. Üçün ilk hissəsi olduğunu edək də nöqtəli vergül və sol. Iki semicolons arasında orta hissəsi var. Və sonra sağ sağ hissəsi var ikinci nöqtəli vergül edir. İndi, bu ilk nə edir? Auditoriya: [işitilemez]. DAVID J. MALAN: Geri var? Evet? Auditoriya: Başlatma. DAVID J. MALAN: Başlatma. Belə ki, bu nə deməkdir? Biz i adlı dəyişən elan etmişik. Mən int i müəyyən etdik, çünki növü int edir. Mən 0 dəyərinə i başlatılıyor alıram. Beləliklə, bu, həqiqətən, nə deyən var? Bu kifayət qədər səmərəli mənə vermək, hey kompüter deyərək oldu sonra yaddaş, kifayət qədər RAM, bir sıra uyğun və qoymaq RAM ki yığın sayı 0. Və bir kənara kimi, ən azı daxili, adətən bir int necə böyük Aracın və? Auditoriya: 32 bit. DAVID J. MALAN: 32 bit. Mənə başqa 4 bayt kimi tanınan 32 bit, vermək deməkdir ki, və olduqca asan olan bu dəyəri 0 qoymaq çünki yalnız 0 bütün bit qurmaq deməkdir. Beləliklə, burada ikinci hissəsi şərtdir. Və vəziyyəti, adı təklif kimi, yoxlanılır nə təkrar və yenidən doğru və ya yalan olub kimi. Belə ki, bu yalnız aşağıdakı kod xətləri nə deyib - yəni line 16, indented yalnız bir ki, çünki altında - belə uzun i 10-dən az kimi. Bu loop hər iteration sonra nə Bu halda olan incrementation, i + +. İndi i + + olmaq deyil. Bu i ola bilər -. Mən bunu Lakin, nə davranış olacaq Bu proqram olacaq? Auditoriya: Bu sonsuz loop olacaq. DAVID J. MALAN: Bu sonsuz loop bir növ olacaq, biz mənfi 2 milyard və ya sonra þanslý halda. Bəlkə şeyi yalnız məhdud təbiəti ilə, ətrafında kesmek edəcək biz int üçün ayrılan ki bit sayı. Amma əlbəttə 10 daha çox təkrarlamaq gedən və oldu əlbəttə burada çox 11 dəfə. İndi kimi bir kənara, həyata keçirən i + + və i - həqiqətən yalnız sintaktik şəkər var. Bu bir az daha çox nə üçün yalnız stenoqrafiya notation var aydın şəkildə aşağıdakı kimi yazılı: i = i + 1. I eyni Yəni + +. Bu, sadəcə cür demək gözəlləşir görünür i + +. Daha çox oxunaqlı, daha yığcam var. Və ən insanların əvəzinə edin. Amma bu funksional eynidir biz yalnız gördüm nə. Belə ki, qısa, burada sürətli fix yalnız i təkrarlamaq demək bütün yolu 0-dan az 10. Və sonra biz həqiqətən 10 ulduz almaq lazımdır. Belə ki, bu cəhd edək. Mənə altındakı terminal açmaq edək. Bu da ki, məni dizine gedək Mən indi cingilti ilə özünüz tərtib gedirəm. Mən daxil edin buggy1.c kimi tərtib gedirəm. İndi buggy1, niyə belə fayl və ya qovluq yoxdur buggy1 deyilən? Auditoriya: [işitilemez]. DAVID J. MALAN: Bəli. Belə ki, həqiqətən a.out deyirlər. Yalnız cingilti run əgər cingilti olduğu Belə ki, geri ki, compiler və siz istədiyiniz adı müəyyən etmir proqram vermək, bu a.out u mənim olacaq. Belə ki, həqiqətən mən ls əgər - oops. Mən didn't - qara-ağ məsələ bəzi siz müəyyən edilmişdir üzləşib. Amma mənə bunu bildirin. Var biz sol tərəfində a.out var. Belə ki, əvəzinə buggy1 və a.out run var. Mənə irəli getmək və bunu bildirin. . / A.out daxil edin. Mən yəqin nə etmədi? Auditoriya: saxla. DAVID J. MALAN: mənim fayl saxla. Belə asanlıqla nəzarət S dəyən ya gedərək həll edir ki, Fayl, ən proqramları kimi saxla. Mənə, burada enmək ekran sil yenidən run edək. Və bir səhv hələ var. Belə ki, nə gedir - Auditoriya: Siz tərtib etməyib. DAVID J. MALAN: Ah, yaxşı. Mən onu tərtib etməyib. Bir axmaq kimi, mən yanlış görmek üçün kodu at arıyorum. Belə ki, cingilti buggy1.c, indi a.out. Və Phew xilas. Yeni xətt var, çünki Belə ki, bir az çirkin görünür hər hansı proqram. Ancaq yenə də, yalnız bir estetik detal var. Biz o sayırıq əgər ən azı, biz olmalıdır artıq 10 belə ulduz oldu. Bəli, bu ikinci isti-up Məsələn haqqında nə? Belə buggy2, mən bu versiyası da çap edəcək iddia 10 ulduz, satır başına bir. Bu zaman Belə ki, yalnız etmək, bir newline xarakter bir az gözəlləşir şeylər. Amma əvəzində nə almaq bu. Belə ki, daxil edin, mənə cingilti buggy2.c bunu bildirin. İndi yenidən a.out deyirlər. Daxil edin. Mən yalnız bir yeni xətt yalnız son yeni xətt bax növbəti line mənim tez hərəkət edir. Və hələ aydın mən, sonra bir yeni line * çap etdik *, Sonra yeni bir xətt. Amma burada səhv nədir? Evet? Auditoriya: [işitilemez]. DAVID J. MALAN: Exactly. Belə ki, Python, Ü abzas kimi bəzi dillər, fərqli həqiqətən də, funksional mənası var C kimi dil - biz görəcəksiniz kimi, PHP, JavaScript - bu abzas yalnız insanlar 'xeyrinə həqiqətən. Mən line 16 və 17 indented etdik ki, böyük görünür lakin burada heç bir funksional mənası vardır. Mən həm xətləri üzrə bir hissəsi kimi icra etmək istəyirsinizsə loop, sonra bu etməklə qıvrım aşırma onlara əlavə olmalıdır. Siz yalnız küncü kəsilmiş və qıvrım aşırma əgər buraxmaq bilər işin var? Auditoriya: Yalnız bir xətt. DAVID J. MALAN: Just bir xətt. Belə ki, sintaksis ətraflı gözəl növ yalnız sort var ki, Siz iki olan, üç xətt yazı vaxt sərf etməyin qıvrım aşırma, yalnız kodu bir line yazmaq. Amma iki və ya daha çox xətləri varsa, biz həqiqətən bunu etmək lazımdır. Belə ki, indi mənə bu qazanc imkan verir. Mənə davam və yenidən run cingilti edək. Sonra mənə a.out təkrar edək, və indi onlara satır başına bir almaq. İndi a.out yenidən bir proqram üçün bir lal adı növüdür. Mən, həqiqətən, mənə bir fayl adı vermək cingilti deyə bilərsiniz ki buggy2 özü kimi, daha çox istifadəçi dostu var? Bir az daha dəqiq? Auditoriya: [işitilemez]. DAVID J. MALAN: OK, mən, həqiqətən, çox bilər istifadəçi dostu qısa və yalnız yazmaq buggy2 edir. Mən bu halda. C daxil, Enter yoxdur. Və nə etmək nə onun mənim üçün buggy2.c tərtib edir bunu cingilti xahiş etmişdir. Xüsusilə, bu, cingilti çağırır, bu yol daha istifadə cingilti çalışır komanda-line dəlilləri və ya Mən, həqiqətən, ehtiyac çox açarları. Zaman, bu müxtəlif nə bütün qayıda bilərsiniz sirli hyphenated ifadələr deməkdir. Amma indi üçün, yalnız mənim narahatlıq qənaət edir yadda olan və bu bütün yazın olan müxtəlif hyphenated ifadələr. Və onun ayaq nəhayət edir İndi buggy2 var. Mən əl bunu istəyirsinizsə, baxmayaraq ki, mən əvəzinə bunu edə bilərsiniz - zınqıltı-o buggy2 və sonra buggy2.c. Və eyni me buggy2 adlı fayl verəcək. Belə ki, qısa, cingilti olan compiler edir. Olun daha çox istifadə lazımdır ki, yalnız bir istifadəçi dostu vasitədir və daha çox, sadəcə başlayır, çünki bizim üçün şeyi sadələşdirmək. Və biz nəhayət, 0 qayıtmaq. İndi, yalnız, ancaq bir hissəsi zəhlətökən başlamaq lazımdır bu gün və çərşənbə günü. Bu hər hansı bir hər hansı suallar? Evet? Auditoriya: [işitilemez] orada quotes ls? DAVID J. MALAN: OK. Zaman mənə bir sehrli edirdi ki, quotes tipli ls, pərdə arxasında bir səhv düzeltmek üçün. Biz sizi çox izah etdik kimi, mən unuttum bunu müzakirə lövhələr, - biz indi edəcəyik - sudo yum-y yeniləmə appliance50. Whoops, sağ yazıldığına var ki. Belə ki, cihaz əməliyyat sistemi kimi. Bu Fedora adlanan bu əməliyyat sistemi çalışan edir. İndi çünki mənim yavaş internet bağlantısı, mən var həqiqətən hosed. Biz nə sizə Beləliklə, sudo yum yeniləmə çalışan problem dəsti, mahiyyətcə avtomatik güncellemeler çalışan nasıl Mac OS və ya Windows. Və çox əvvəlində bu qaçış səbəbi çünki biz cihaz yaradılmışdır zaman, mən problem müəyyən edilir qədər messed və mən təsadüfən proqramları bütün baxmaq etdi Əgər siz onları görən deyilik niyə bir qara ekran qara, olan default. Lakin cihaz ən son versiyası bu giderir. İnternet var, bir dəfə və mən fasilə zamanı düzeltmek lazımdır keçid. Belə ki, quotes, yalnız çox Sessiz, mənim səhv gizlədir yəqin. Digər suallar? Bəli? Auditoriya: etmək haradan gelir? [Işitilemez] DAVID J. MALAN: Yaxşı sualdır. Etmək haradan gelir? Bu bir çox il mövcud olan bir Linux proqram, uzun CS50 əvvəl. Və Fedora kimi bir əməliyyat sistemi ilə gəlir. Bu CS50 kitabxana deyil. Əslində, CS50 kitabxana gəlib təkcə İndiyədək biz gördük ki, GetString, GetInt, bütün var bu funksiyaları alın və sözü simli, və bəzi dərəcədə bool sözü. Biz CS50 daxil dalış Lakin biz ayrı dolaşmaq lazımdır cihaz özü. Belə ki, bəli, burada daha bir sual. Auditoriya: siz arabası və sonra dedi, necə edir kompüter [işitilemez] bilirsinizmi? DAVID J. MALAN: Yaxşı sualdır. Belə ki, yalnız çalıştırdığınızda buggy1 etmək və ya buggy2 etmək, necə Bildiyiniz edir? Siz buggy1 etmək yazın Belə ismarıcları, bir üçün görünür etmək fayl buggy1.c çağırıb. Və sonra o, müvafiq cingilti əmrləri icra bununla a.out adlı default çıxış fayl əsas. Əslində, biz etmək nə baxsaq, nə - bu çıxmaq imkan verir. Biz həqiqətən edirdi etmək nə baxsaq, buggy2 etmək bu günə qədər artıq var. Belə ki, mənə rm komanda aradan qaldırılması bildirin proqram əvvəl yazmışdır. Y-E-S mən aradan qaldırılması üçün istədiyiniz təsdiq yazaraq. Mən indi etmək Əgər, bu çox uzun-uzadı görə Bu son şey burada, o buggy2 var. Bütün markası edir, belə danışmaq, bu arqument keçir Cingilti, mən özüm yazın yoxdur. Bütün hüquqlar, belə inzibati sürətli bir neçə elanlar. Belə təbəqələri üçün olan rəsmi gələn başladı Bazar, həmişə, əgər gətirmək lazımdır bir, bir laptop var. Bir laptop yoxsa, mənə həyata çatmaq yoxdur mənə bir e-poçt düşmə. Və biz bir iş anlamaq lazımdır. Nə ümumiyyətlə siz bölməsində tapa bilərsiniz onlar iştirak edirik ki, konseptual iştirak praktiki. Biz konkret məsələləri bölməsində hissəsi istifadə edəcəyik bəzi vasitəsilə gəzmək üçün həftə problem dəsti, mühazirə dən konseptual material. Və cari problem set bütün var. Və biz də bəzən, bəzi praktiki fəaliyyətinə dalış lazımdır olan bəzən təqdim etmək tələb olunacaq olmayan olacaq. Məsələn, bu ilk həftə, onlar yalnız bir kimi nəzərdə edirik isti-up həyata keçirir. Və bu problemlərin yalnız həqiqətən ki, tapa bilərsiniz. Onlar mütləq ədalətli kiçik nəzərdə, lakin edirik Mütləq deyil ki, yazmaq mənasız proqramları, özləri və maraqlı ancaq yaxşı imkanlar bir rahat, yeni funksiyaları ilə, sintaksis ilə təcrübə sizin sinif yoldaşları bir neçə olduğu bölmə kimi təqdim Sizin TF həmçinin. Və nə zaman üzərində edəcəyik, CS50 məkanı adlı alət istifadə vasitəsi əvəzinə yalnız CS50 Aracı istifadə, will siz edə bilərsiniz yerləşir əvəzinə, bir brauzerinizin bir web page getmək bölmə zamanı brauzer pəncərəsində kod yazmaq üçün. Siz seçə əgər, sonra tədris fellow sonra göstərə bilər sizin brauzerinizin ekranda yazaraq olduğunuz nə və ya anonim olub sinif ön pəncərə up, açıq, belə ki, o, sonra vasitəsilə gəzmək olar Sizin sinif yoldaşları yaxşı nə, yaxşı nə etmədi. Və yenə qalan bütün bu gözəl anonim bilər arxayın ola bilərsiniz. Amma daha çox üçün gözəl imkan olacaq mühazirə kimi bir çox interaktiv verir. Eyni zamanda, biz bu şeylər super deyilən lazımdır isteğe, lakin hər kəs üçün açıq olan bölmələr sinif, belə ki, sizin üçün daha kollektiv edə bilərsiniz problem bir seçin. Burada cədvəli var. Bu da cs50.net da ana yerləşdirilir. Bir hacker-spesifik ola bilərsiniz edək ki, bir sabah günortadan sonra. Və biz bir gün və bir sabah film və bu post olacaq 24 saat ərzində online. Siz, bu dəfə hər hansı edə bilməz Belə ki, narahat deyil. Və yenə cədvəli cs50.net hazırda online. Özü sectioning baxımından bir kazanılmış olmalıdır siz tapmaq üçün kurs ana getmək üçün göstəriş e-poçt Sizin bölməsində həyata. Həyat dəyişdi və sizin bölmə dəyişdirmək lazımdır, problem deyil. Eyni URL, cs50.net/section, tək geri dön, siz ki, və oxşar formu doldurun bilərsiniz sonra bizə arzularım verir. Biz əlimizdən nə kimi həftənin sonuna qədər təqib edəcəyik yerləşdirmək. Ötən həftə, biz CS50 müzakirə edərək təklif geri mühazirə zamanı müzakirə alət. Belə ki, biz xahiş edilmişdir ki, 40 sual var idi mühazirə zamanı cavablandırdı. Belə ki, yaxşı idi, biz davam edəcəyik Bunun üçün çalışırıq. , Mühazirə zamanı, yalnız rahat artırılması hiss deyilsə Sizin tərəfdən bir problem. Cs50.net/discuss gedin, orada yazmaq və tədris biri yoldaşları elektron cavab və ya artıracaq ya onların olaraq, xahiş anonim adınıza əl sualına xarakterindən. Və rəy baxımından, ümumiyyətlə, psets olacaq bir həftə ərzində döndü. Bölmələr nail olmaq üçün bir müddət alır Çünki tarazlıq, ilk pset, 0 və 1, az olacaq şeyi aşağı həll kimi təxirə saldı. Amma qalmaq gələcək həftə üçün sazlana. Bütün hüquqlar, belə ki, mənim ciddi qoymaq bildirin yalnız bir an üçün səs. Beləliklə, bu, həqiqətən olmaq maraqlı iqlimi nə başqa şeylər bütün bu müzakirə kampus əlaqədar ona üzərində gedir. Amma CS50 əlbəttə, bu, onun tarixi vardır çox bu kurs, hər il olduğu kimi çox mövzunun, il, Ad-Forumlar sinif təxminən 3%. Bu ən son il, 2011, CS50 35 tələbə Ad-mindik. Bu, hesab edirəm ki, aydınlıq olmaması səbəbindən deyil. Kursun-nin proqramı ilə bir səhifə var ki, həyata xətləri olduğu izah edilir. Həmin bəyanat hər bir təkrarlanır problem səhifə biri edir. Mən, həqiqətən, yalnız etmək üçün bu gün qeyd Bu nəzərə insanlar. Biz fərqli şeylər cəhd etdik. Mən bu gün bunu düşündüm nə yalnız bir an almaq edir həqiqətən qədər gəlib keçmiş hallarda bəzi oldu. Daha çox həqiqətən, bu kimi kirli az sirri saxlamaq biz aşkar nə tələbələri etdik və necə qeyd bu və həqiqətən mühüm motivasiya üçün nə hətta bu söhbət. Bildirib ki, ilə Belə ki, xətt mahiyyətcə bu - proqramın hər bir şey, sizin üçün təşviq edirik sinif yoldaşları ilə danışmaq. Ki, bu əməkdaşlıq olan bütün məqsəd var ofis Annenberg saat və üçün həvəsləndirici nəfər yekun layihə birlikdə işləmək. Faktiki yazmaq üçün vaxt gələndə Lakin xətti çəkilir son həlli. Yalançı kodu danışan, tamamilə gözəl İngilis, danışan tamamilə gözəl. Onlara baxmaq bildirerek, bir sinif yoldaşı sizin pset e-poçt əlində yazaraq davam kimi ekran, xətti üzərində həmçinin. Xüsusi xətləri üçün tədris proqramı baxmaq etməyin. Amma yalnız bu təəssüf ki, necə bir şəkil boya reallıq, web orada var ki, həyata ki, Bu sinif və bir çox digər sinif həllər var. Siz və ya bəzi 3% bu var ki, bilirik ki, biz bu var ki, bilmək deməkdir. Ü saytları bu kimi var ki, həqiqətən, sizin problem dəstləri etmək kimsə ödəyə bilər - bu idi keçən il gəldi ki, faktiki halda. Bu odesk.com adlı bir web sitesidir. Və Tim üzrə poçt edən burada şəxsin adı Bu veb və onun pset 7 bunu kimsə xahiş bu halda. Yaxşı, odesk.com çox Google-edə və biz də var Googling çox yaxşı. Burada da saytlar var - və bu bir çox var dəhşətli, açıq. [Gülüş] DAVID J. MALAN: Bu site haqqında məzəli şey varsa, Siz haqqında səhifə oxumaq, onlar korporativ haqqında danışmaq mədəniyyət və necə müştəri xidməti onların sayı-biri sizin tapşırıqları almaq əmin etmək prioritet vaxt çevrilmişdir. Amma bütün ciddiliyi ilə, təkrar olması bu saytlar var, çox, biz bilirik və biləndir var sites bu cür. Və nə hissi vermək üçün, adətən, bu formaları edir, biz ümumiyyətlə, böyük qalmaqallar yoxdur yerləşir nəfər kütləvi hər cür əməkdaşlıq, əksinə olunur Siz var ki, zəiflik bu gec-gecə anlar var nə çox, bu, AM 4:00, siz canı, siz etdiyiniz özünüz üçün hesab edirəm ki, yaxşı, mənə yalnız mənim nəzər edək roommate və ya dostum kodu və ya kimi. Və bu təzahürləri təəssüf ki, Tələbə cəlb Bu və Tələbə B təqdim kimi təqdim bir şey kompüter bu kimi bir şey, bu əlbəttə ki, elm sinif, kompüter alimlər üçün olduqca asandır proqram təminatı ilə aşkar etmək. Siz növ var bu başqa ümumi paradiqma edir bəlkə danışan kimsə yanaşı çalışır İngilis, yalnız gözəl, pseudocode. Lakin o, həqiqətən təqdim zaman gəlir və psets yalnız e-poçt və ya Dropbox və ya analoji ilə mübadilə almaq. Ancaq bu ki, az aydın etmək cəhdi baş verənlərə, bu təqdim edir budur. Bu, çox, səfər qədər yaxşı yazılmış parçaları deyil biz, həqiqətən, aşkar etmək üçün var proqram kimi şeyləri bu cür. Və həqiqətən nə biz bütün müqayisə ki run proqram Ötən il bütün qarşı bu il arqumentləri arqumentləri, hər şey qarşı biz aşkar Orada hər iş veb qarşı Internet. Bu, bütün çox avtomatlaşdırılmış var. Və biz 97% böyük ədalət həqiqətən bunu kim həqiqətən bu və digər onların eşşəklərdir off çalışır dərsləri və səy bütün qoyaraq ki, iş onlar nəticədə təqdim öz edir. Mən yaş üçün getmək bilər. Bu yalnız ötən il hallarda bir neçə var. Bir neçə tələbələr, pset 2 eyni bu faylları təqdim pset 3, pset 4, pset 5, pset 6, pset 9. Bu halda, bu viktorina 0 və ötən il iki idi tələbələr arasında çox eyni bu cümlə təqdim başqaları "tipli sorğu -" nöqtə, nöqtə, nöqtə. Belə ki, hətta 600 sinfində biz bu aşkar etməyib haqqında sınavlar təqdim edib. Belə ki, qısa, bu - açıq, mən bu cür olan nifrət söhbət - amma bu, həqiqətən bir qəsdən cəhd edir bu il ki sayı aşağı çəkmək üçün cəhd. Çünki demək olsa belə şeyləri bu cür hər il, bir neçə üçün bu yaşayan edərək reallığı hesab adi daha saniyə daha faktiki olaraq yalnız işarə nə az, belə bir böyük deyil, eh, kimi görünə bilər ki, bu an geri edirəm, həm də ədalətli şəkildə Özünüzü və burada sinif yoldaşları üçün. Əgər hər hansı bir sualınız Belə ki, əgər Ü xətti , yalnız şəxsən mənə çatmaq edin. Amma cavab tam qeyd, həmişə son dəqiqə, bir gün gec pul. Və ya hər hansı bir gec gün olmayan bir məsələ varsa, vicdanla, şəxsən mənə e-poçt. Biz bir şey anlamaq lazımdır. Xahiş edirik risk Harvard burada vaxt qoymaq deyil. İndi biz əhval işıqlandırmaq lazımdır düşündüm, mən növbəti slayd kimi daxil olmuşdur. [Gülüş] DAVID J. MALAN: Bu haqqinda, böyük idi. Mən, həqiqətən, bir az çevirirsən var. Bu var. Və bu bir gözəl idi. Edərkən OK, belə gecə gec ki, kitten hesab həmin qərarlar. Bütün hüquqlar, belə geri daha çox əyləncə və az ağır məhsulları kimi şərtlər. Bütün hüquqlar, belə ki, biz bu barədə qısa söhbət etdik. Bu yəqin ki, tamamilə tanış ki, bir şey Not dünya. Və Not dünyanın, biz bəzən bu ehtiyac var yol çəngəllər etmək gedin. Ya bu və ya burada və ya bu başqa şey. Və biz bunu istədiyiniz zaman, bu halda, C, indi istifadə edə bilərsiniz başqa tikintisi. Və sonra biz burada Boolean ifadələr var. Məsələn, burada Boolean ifadələr, biz ya birlikdə, biz ya bu vəziyyət o mənada ki bu şərtlə ki,. Biz istəyirik ki, mənada birlikdə VƏ onları bilər Bu vəziyyət VƏ şərti yoxlayın. Və burada belə deyil ki, indi bir keçid haqda şərtlər bu cür syntactically oxşar, lakin bizə başqa başqa başqa əgər bərabər, əgər, əgər, imkan verir sadəcə onlara hal sadalamağa olduqda və kimi hal ilə. Belə ki, o, son dəfə gördüm. Və sonra biz loops kimi şeylər toxunan başladı. Biz yalnız bir an əvvəl bu bir gördüm. Lakin bu digər loop yapıları var. Məsələn, bu burada. Belə ki, (vəziyyət), təkrar bu şey isə. Belə ki, əsaslı, nə bu arasında müxtəlif görünür burada loop və bu isə loop üçün? Loop və bu isə loop üçün. Evet? Nə olub? Auditoriya: [işitilemez]. DAVID J. MALAN: Yaxşı. Belə ki, loop vəziyyət üçün isə aydın var daha sintaksis. Bu başlatma var, bu yeniləmə var. Bir müddət loop, bu vəziyyət yalnız var. Belə ki, bunun üçün qarşı aşağı pared bir az var ki, görünür, loop olan biz dəyişənlərin etmək istəyirsinizsə deməkdir və biz istəyirik incrementation var, biz, həqiqətən, var bu şey özümüz edirik. Mənə davam və gedit açmaq bildirin. Mənə cihaz üzərində keçid edək. Və edək ki, yalnız bir sürətli kiçik nümunə, nə digər tərəfdən bu bir fərqləndirir. Burada mənim mind geri, bir şey demək lazımdır. Mən xüsusi adı Tim bildirdi. Tim bir tələbə nə tapmaq üçün cəhd əslində kimsə idi onlara öz ev tapşırığı. Biz xüsusi bölmə heç Tim idi. Mən tələbə açıqlanır deyə Belə ki, həyata, bir tələbə idi. Bu şeyler İnternet təsadüfi adam idi proxy keçən il. Beləliklə, biz də ki, tapa bilərsiniz. Belə ki, burada bu halda, mənə irəli gedək və yeni bir fayl açmaq. Fayl, Yeni. Bu məni buraya nişanı verir. Mənə davam və saxlamaq edək loop.c. Mənə getmək və Saxla basın edək. Və sonra aşağı, burada nin irəli getmək və yazmağa başlayın bildirin # Daxildir. Mənə daxil zoom edək İndi biz int əsas (void) edəcəyik. I <; İndi (int i = 0 üçün mənə irəli getmək və bunu bildirin oh, 10; i + +). İndi davam və ulduz çap edirsiniz gedirəm ki, əvvəllər idi. Və sonra bu proqramın sonunda, biz yalnız olacaq yalnız belə ki, tez bir yeni çap bütün messy baxmaq deyil. 0 qaytarın. Syntactically doğru görünür? İndiyə qədər. Belə nin görək. Belə ki, mənim terminal pəncərə getmək, mənə zoom imkan verir. Mən bu deyilən, çünki, mənə irəli getmək və loop run bildirin şey loop.c. Belə ki, loop etmək. OK tərtib görünür. Mənə loop run, indi daxil edək. Və 10 ulduz çap görünür. Belə ki, yalnız bir müddət loop bu çevirmək və nə edək məsələləri biz səfər üzərində növləri. Əvəzinə bu Belə ki, i isə mənə burada getmək və deyək 10-dən az - Mənə loop üçün xilas edək. OK, belə ki, biz artıq problemlərin bir neçə var. Belə vəziyyət eyni, lakin mən açıq-aydın itkin alıram başlatma. Mən incrementation itkin edirəm. Mən cəhd Belə ki, nə compiler ehtimal mənə lazım Bu proqram tərtib? Evet? Auditoriya: [işitilemez]. DAVID J. MALAN: Yaxşı. Belə ki, elan olunmamış kimi bir şey demək olacaq - bu halda, i dəyişən. Və həqiqətən, elan olunmamış identifikator i istifadə edin. Və bu PHP kimi dil ilə fərqli və Python və Ruby, ilə siz bəzi tanış ola harada dəyişənlər istifadə edərək start yalnız cür bilərsiniz istər-istəməz və onlara bəyan narahat aydın həmişə. C və Java və C kimi dillərdə + +, siz olmalıdır açıq super. Siz i adlı dəyişən istəyirsinizsə, siz mənə var dəyişən nə cür olur. Beləliklə, biz bu aşağıdakı kimi müəyyən etmək üçün olacaq. Mən burada getmək və int i yazın üçün gedirəm, buna görə də Mən adlı dəyişən elan etmişik. İndi bir addım atlandı etdik. Mən açıq-aşkar bu başlatılmadı sonra, lakin görmək edək ki, əgər ən markalı cingilti stop şikayətçi. Mənə bu proqram yeniden yapmak bildirin. Bütün hüquqlar, indi yalnız şikayətçi oldu fərqli bir səbəb üçün. "Burada istifadə Dəyişən 'i' uninitialized edir." Bütün hüquqlar, belə ki, olduqca aydın deyil. Başlatılmış bir dəyəri bərabər yaradılması deməkdir. Və biz, belə ki, 0 bərabərdir mənə edək ki, etmədi etdik. İndi yenə bu cəhd və yenidən run cingilti bildirin. Bu dəfə tərtib. Mən bu run haqqında deyiləm. Amma böyük köhnə sonsuz loop, mən etdik çünki başlatma, mən vəziyyəti etdik, amma həyata heç etdik incrementation hər cür. Belə ki, necə mən incrementation edə bilər? Mən gedirəm kimi Yaxşı, bir müddət loop, bu hiss çünki çox ilk kimi, loop daxilində bunu ilə kimi loop yapıları edir həftə nümunələri, corabları və özünü hesablanması ilə, biz idi çox sonunda bir şey, növbəti line geri istəyirəm. Mən irəli getmək və əgər bu i + + here? Nin, hətta bu tərtib deyil edək. Artıq məni tutmaq. Burada səhv nədir? Auditoriya: [işitilemez]. DAVID J. MALAN: Belə ki, mütləq int deyil. Bu i var. Və əvvəl kimi qıvrım aşırma, indentation kifayət deyil. Belə ki, indi bu tikintisi var. I 10-dən az olduğu halda ki, bir ulduz çap sonra i arttırmayı. Və yol bir loop işləri siz hit kimi tezliklə kimi isə Bu halda line 10 kimi görünür olan loop aşağı, ki, xətt 6 geri olacaq olan məqam da vəziyyət yenidən yoxlanılacaq. I hələ 10-dən az olduğu halda, biz xətləri 8 edə və olacaq sonra 9, sonra biz 10 hit olacaq və 6 geri yenidən və təkrar və yenidən uzun i 10-dən az kimi. Belə edək yenidən run burada etmək. OK, biz tamam tərtib etdik. Mənə yenidən run loop edək. İndi faktiki iş görünür. Burada müsbət və minuses Belə ki? Yaxşı, bu günə qədər həqiqətən FAT bütün yoxdur - so cute. Bütün sağ, bir idi - ah, bir qəza oldu. Bütün hüquqlar, belə nin loop üçün geri imkan verir. Onlar super aydın istəyirik Çünki loops üçün gözəl edir. Onlar yazmaq üçün bir az clunky olmalarına baxmayaraq, bu çox güclü və sizə imkan verir Eyni anda birdən çox şeylər. Loops dəyər böyük bir məbləği görünmüyor isə yalnız biz yalnız daha çox iş var kimi hələ, çünki o hiss edir. Biz burada, bu başlatma qablaşdırılmış var burada aşağı yeniləmək və biz bütün bunu unutmayın lazımdır. Beləliklə, biz isə loops həqiqətən borc o zaman görəcəksiniz özlərini yalnız müxtəlif kontekstlərdə, müxtəlif data siyahıları və hash masalar kimi strukturları, hər şeyi biz almaq lazımdır orta dövr. Amma indi üçün, kimi tanınan bu üçüncü növü var bilirsiniz ki, bir do- loop edir. Və biz bu qısa gördük. Bu pset 1 super faydalı ola bilər. Əgər bir şey və istədiyiniz zaman kontrol əgər istifadəçi əməkdaşlıq və onlar olmasaydı, yenə bunu bir do- loop məntiq belə özünü verir edir. Burada alt üst sifariş təklif kimi Çünki, sanki bu deməkdir yoxdur. Və təkrar Bunu ki, nə ola bilər? Bəlkə sonra zəng GetInt ya GetString və vasitələri GetInt ya GetString dəyəri yoxlanılması və sonra böyle istifadəçi da onlara soruşaraq əməkdaşlıq əgər təkrar və yenidən. Əgər bir şey etmək istədiyiniz sonra bir vəziyyət oldu. Belə ki, bu cəhd edək. Mənə həqiqətən do-isə loop indi bu dəyişiklik edək. Mən irəli getmək və aşağıdakı gedirəm. Belə ki, aşağıdakı. Nə edək int i = GetInt (); lakin ilk istifadəçi söyleyeyim nə. Bir az fərqli bu dəfə belə. "Mənə bir int ver". Mən bunun üçün printf istifadə edəcəyik. İndi burada enmək gedirəm və mən bunu gidiyorum i isə daha çox, deyək - nin görək, i deyil, az 0, deyək, ya i deyil 10 daha çox. Başqa sözlə, yalnız 1-dən 9-bir sıra istəyirəm özbaşına. Mən burada bir araya Boolean ifadəsini istifadə edirəm i, 10-dən az və ya daha çox 0 əmin olun ki, halda mən yenə burada bu loop edəcək. Belə ki, daha, bu - i isə az 0 və ya i 10-dən çoxdur. Belə ki, indi-nin irəli getmək və biz etdik dəfə bunu bildirin. Yalnız tez ağlı başında olma çek nə edək. printf (i, "Thanks, i% d"). Belə ki, bu sadə proqram, bir int istifadəçi soruşur bəzi sıra 1-dən 9 əhatə ərzində emin edir və sonra onlara xatırladan nə onlar yalnız istifadəçi thanks yalnız bir az ağlı başında olma çek kimi, ildə yazılmış. Amma bu kimi nəzərdə işləri nin görək. Mənə burada baş aşağı getmək və loop etmək yenidən run edək. Hmm. "Bəyan identifikator 'i' istifadə". Bu qəribə deyil. Mən ki, həll düşündüm. Eyni simptom lakin müxtəlif kodu. Evet? Auditoriya: [işitilemez] iki daxilində, biz var [Işitilemez]. DAVID J. MALAN: Exactly. Beləliklə, bu, həqiqətən, əhatə dairəsi kimi tanınan bir mövzu bizi gətirib çıxarır. Bu C, yenidən, bu, həqiqətən sözün sizi çıxır ki. Bu kimi bir şey varsa bir int bəyan yerləşir sonra bəzi dəyəri təyin, ancaq bir ki, daxili etmək qıvrım aşırma ilə cüt, nə C yoxdur onu nəzərdə tutur ki, yalnız i mövcud kimi məlumdur bu 32 bit istəyirəm xətləri çərçivəsində bu qıvrım aşırma kontekstində, 9 6. Belə i elan edilir və təyin olunur line 8 dəyəri, ancaq tezliklə siz kənarda almaq kimi bu buruq brace aşağıda line 9, i artıq daxilində, belə danışmaq. S-C-O-P-E. Bu hüququ kontekstində artıq var. Belə ki, indi orada i yoxdur, biz hətta baxmayaraq kimi bu bütün bu elan etdi. Belə ki, bu kimi bir şey sonra bir düzeltme, nə əgər səbəbi, i qıvrım aşırma ərzində elan edilir ki, hansı yəqin pis? Burada? Auditoriya: [işitilemez]. DAVID J. MALAN: Bəli. Belə ki, biz ondan kənarda başlamaq olar. Mənə davam və bəyannamə hissələri vasitəsi silmək imkan Mən növü müəyyən və mənə burada bu qədər bunu bildirin. Belə ki, xətt 5-ci, indi "Mənə bir int verin." Deyir O i edin. Line 9 edək, mən bunu istəmirəm, çünki mən artıq 32 bit var. Mən üçün kompüter soruşmaq istəmirəm müxtəlif 32 bit. Mən həmin 32 bit istifadə etmək istəyirik. İndi i line 5 elan, çünki hələ legit var line 11 və line 12 istifadə üçün. Belə ki, mənə bu derleyeceğiz cəhd və görək zınqıltı vermir əgər böyle. loop etmək. Belə ki, indi bu funksiyanın "gizli bəyannamə deyil "GetInt" C99 etibarsız edir. "Nə deməkdir? Evet? Auditoriya: [işitilemez]. DAVID J. MALAN: Bəli. Belə ki, indi mən həqiqətən GetInt kullanıyorum ki, bu bir şey deyil C. Bu CS50 gəlir ki, yalnız gəlir. Beləliklə, biz burada bu lazımdır. Və mənə tez aşağı geri bildirin burada etmək və yenidən axır. OK, nəhayət. İndi biz və digər səhv həll etdik. Mənə indi loop run və nə görmək edək. "Mənə bir int verin." Mən 11 verəcəyik. Mən bunu -1 verəcəyik. Mən bu foo verəcəyik. Mən onu 5 verəcəyik. İndi həqiqətən işləyir. Amma tezliklə bura səbəbdən dəyişdi. Niyə bu dəfə bir yeniden amma mənə vermək demək idi Digər üç dəfə int? Niyə davranış fərqli? Auditoriya: bir string verdi. DAVID J. MALAN: Üzr istəyirik? Auditoriya: Siz simli verdi. DAVID J. MALAN: Bəli. Beləliklə, biz bu üçüncü cəhdi simli verdi Mən foo yazdığınız zaman. Foo simli edir. Bu açıq-aydın bir int deyil. Və CS50 GetInt həyata ki, bir yoldur ki, bir şey varsa yoxlamaq yoxdur 10-dən az və ya daha çox 0 sizin üçün, necə biz əvvəlcədən bilirik, çünki hansı istədiyiniz int? Amma biz minimal ən azı, siz istifadəçi idi kontrol edə bilərsiniz bir tam yazın? Onlar olmasaydı, biz "yeniden" yazaraq istifadəçi fəğan ekran. Belə ki, indi biz loop ki, bir proqram var. Okay. İndi, bu, hansı daha yaxşı tikinti növ edir? Beləliklə, bu, hər şeyi bir az messy almaq üçün başlamaq Ü edir Burada dəyişən qədər bəyan unutmayın ki, fakt bəzi daxilində istifadə etmək istəyirsinizsə, qıvrım aşırma və xaricində. Amma bu ilk bir az sirli görünür, hətta baxış, yalnız yenə də sadə məntiq xatırlayıram. Bir funksiyası var və ya olub, C bir şey istifadə etmək üçün bir dəyişən, siz bir funksiyası varsa daxil etmək bir kitabxana və ya bəyan etmək lazımdır. Amma indi siz ondan əlavə nəzərə etmək lazımdır ki, sağ daxilində bu elan edirik. Siz mötərizə daxilində çox sıx o verilməsi deyilik. Mənə həqiqətən geri roll imkan verir. Biz əvvəllər məsələn bizim geri, mən getmək Əgər geri int üçün int i = 0; i <10; i + +, və mən bu kimi printf ulduzları, sonra yaxın paren, indi nə printf i indi - Mən cəhd etdikdə eyni məntiqə görə, nə olacaq Bu proqram tərtib? Auditoriya: Invalid identifikatoru. DAVID J. MALAN: Belə ki, başqa etibarsız identifikator var, elan edilməmiş identifikatoru. İndi səbəb bir az fərqli. Burada açıq-aydın heç bir qıvrım aşırma, lakin eyni fikir, əhatə dairəsi eyni hekayə aiddir. Bir daxilində i kimi bir dəyişən elan Əgər loop üçün, aydın buruq yazılı deyil, hətta aşırma, hələ kimi ruhi onlara hesab edən halda i loop üçün yalnız etibarlı daxilində deyil. Siz ki, növbəti line almaq sonra etibarlı deyil Bu halda indi 10-dur. Belə ki, həcmi və kimi yalnız bir neçə məsələlər. Bütün hüquqlar, hər hansı suallar? Bütün hüquqlar, belə ki, bu, mənasız bir az proqramı növ yalnız az ulduz çap. Amma burada bu mahnı xatırlayıram əgər in görək. Bu uşaqlar oxumaq olardı inanılmaz annoying mahnı deyil məktəb avtobus və kimi. Amma nə bu barədə gözəl, bu cyclicity var ki, elə ki, "divar pivə 99 şüşə var Pivə 99 şüşə. Bir yazmaq onun ətrafında keçə üzrə 98 şüşə pivə divar. "Və sonra mahnı sonra, sonra, 96 97 təkrar 95, sonra 94, bütün yol həqiqətən var əgər 0 aşağı ki, qədər avtobus. Beləliklə, bu, çünki, həyata və düzmək üçün gözəl proqram mənim Allah, bir neçə ilə bu həyata bilər kodu xətləri, bu, bütün lyrics tüpürmək bilər olduqca tez mahnı. Lakin yol boyunca, indi bəzi başqa tease başlaya bilərsiniz bu əsas loop yapıları və indi də biz özümüz yazmaq funksiyaları təqdim dəyərlər qayıtmaq biz ətrafında keçir ki. Lakin ilk, niyə biz irəliyə getmək və beş dəqiqəlik etmirlər burada qırmaq? Və biz geri almaq zaman, biz bu mahnı ifa edəcək. Bütün hüquqlar, biz geri edir. Mən indi bu mahnı ifa edəcək deyəndə, mən demək program deyil, şifahi. Belə ki, burada biz bu bir həyata olan beer1.c var xüsusi mahnı. Və yalnız həmin tanımadığı üçün, aydın olmaq üçün nə bu şey kimi, mənim irəli gedək görünür və daxil beer1 edir. İndi mənə beer1 run bildirin, biz görəcəksiniz - neçə şüşə pivə olacaq? Mahnı deyir kimi I, 99 yazın lazımdır. Daxil edin. İndi biz vasitəsilə hərəkət olduqda - oops - biz bu bütün vasitəsilə gedin, biz görəcəksiniz ki, Bu, həqiqətən bütün mahnı oxumaq idi. Bir dəqiqə gözləyin. Mənim gedin bar up messed bir az var. Nin böyük pəncərə istifadə edək. Beer1, 99 Belə ki, orada biz gedin. Belə ki, burada biz çox sürətli ifa bütün mahnı var bu bizim bilərdi artıq kompüter. Belə ki, burada olsa da, dövri təbiət bilərsiniz. Bu 99, sonra 99, sonra "bir yazmaq, bu keçmək deyir ətrafında, "sonra 98. İndi təkrar təkrar edir. Belə ki, bu əslində bir növ üçün mükəmməl bir fürsətdir tikintisi loop. Mən burada bir küncündə kəsmə cür Ben edək ki,. Mən divar "pivə 98 şüşə dedi alıram edək ki, 97 divara pivə qabları "və yalnız belə idi biz pivə bir şüşə almaq zaman, mən yoxdur İngilis dili qrammatika narahat. Amma biz də əgər bir az bu düzeltebilirsiniz vəziyyəti, bəlkə. Bu sayı sinqulyar varsa, davam və "şüşə" demək bu cəm var başqa varsa, "şüşə" demək. Amma indi, mən tamamilə ki, künc kəsici alıram. Beləliklə, biz burada var nə edək. Belə ki, üst bir şərh var. Mən bu iki kitabxana, o cümlədən alıram biz adətən bilərsiniz. İndi mənə ilk aşağı diyirləyin bildirin kodu faktiki satır. Line 17 əsas başlayıb. Line 21 və 20 neçə şüşə pivə olacaq var? Və sonra GetInt çağırırıq. İndi bir ağlı başında olma çek bir az var. Belə ki, bu biz indi qəbul başlamaq lazımdır ki, Konvensiyanın edir daha ciddi istifadəçi daxil edin. Bəzən yalnız onları yenidən təklif istəmirəm və təkrar. Gözəl, ən istifadəçi vida edin və əməkdaşlıq deyil. Çıxın və yalnız onlarla yoxdur. Və belə ki, mən burada yapýyorum nə var. N 1-dən az olarsa, mən yalnız istifadəçi fəğan gedirəm "Bağışlayın, heç bir əhəmiyyət kəsb edir." Və sonra mən gedirəm özbaşına 1 qaytarın. Belə ki, yenidən, bu, yalnız istifadə almaq üçün konvensiya deyil. İndi, iman onu edir. Ancaq indiyə qədər biz həmişə, çünki 0 qaytarılması olduğunuz biz 0 işarə nə qaytarılması bildirib etdik? Auditoriya: Uğur. DAVID J. MALAN: Uğur, bütün var. Belə ki, indi biz nəhayət düşünməyə başlayan etdiyiniz qeyri-uğurlar - - başqa sözlə, künc hallarda səhv şəraitdə İndi bir sonsuz təchizatı, və ya ən azı dörd milyard mənim proqramları yanlış getmək mümkün şeylər. Mən onlara fərdi nömrələri təyin başlaya bilərsiniz. İndi, ümumiyyətlə, yalnız qayıtmaq üçün kifayətdir 0-dən başqa bir şey. Belə ki, biz sadəcə indi 1 qayıtmaq olacaq. Amma 1 qaytarılması üçün səbəb kimi tezliklə qayıtmaq kimi 1, proqram qalan nə tahmin? Bu dayanır. Vəssalam. Mən 1 qaytarılması edirəm ki, səmərəli deyil Bu proqramın icrası qısa qapanması ki, line 27 aşağıda heç bir şey həyata davam edəcək. Kimi tezliklə əsas yekunları kimi, o qədər. Istifadəçi əgər bütün sağ, belə ki, əməkdaşlıq və biz line 30 olmaq onlar qanuni sıra tipli, çünki burada mənim deyil bu mahnı həyata keçirilməsi. Mən ilk yalnız bir newline xarakter çap estetika. İndi loop üçün var. Mən bir az şeyi edirəm qeyd fərqli bir istiqamətdə. Mən az nə yoxdur, mən + + nə yoxdur. Mən əvəzinə bərabər müəyyən bir dəyişən i başlamaq demək olar n, istifadəçi Yığdığınız sayı, sonra ki, aşağıdakı i 0 daha çox kimi uzun, sonra i - sonra bu loop biri iteration başa etdik. Beləliklə, biz həm loop üçün istifadə aşağı saymaq olar. İndi bu printf ilə, bir şeylər artıq olduqca çox həftəsidir. Belə print "divara pivə% d şüşə". Print "% d pivə butulka. "", bir aşağı alın ətrafında keçir. "Print "Divara pivə% d şüşə". Belə ki, hələ% d, lakin arqumenti printf dəyişir ki, görürsünüz. Mən 99 demək istəyirəm, çünki vergül sonra, i var. Mən 99 demək istəyirəm, çünki bu vergül sonra, i var. Bu vergül sonra, i var - 1, mən 98 demək istəyirəm, çünki Bu ilk iteration, və s. İndi aşağı burada, yalnız bəzi axmaq az qeyd var. Və sonra line 42, mən signifying, Konvensiyanın 0 qayıtmaq ki, hər şey tamam. Mən goofed nə olur? Burada ümumi səhv nə ola bilər? Mən təsadüfən də bildirib əgər yaxşı, mən ümid nə istəyirsiniz 0 aşağı, mən divar pivə 0 şüşə istəyirsiniz? Deyə Beləliklə, i və ya daha çox 0 bərabərdir. Mən derleyeceğiz əgər mən indi görürəm ki, simptom olacaq nə beer1 və run? Auditoriya: Mənfi. DAVID J. MALAN: Bəli, bu, mənfi getmək mý var. Bu off-bir səhv var, inanılmaz ümumi səhv etmək. Gəlin əslində terminal pəncərə geri və bunu burada, biz bir dəfə daha görə bilərsiniz. , Pivə 99 şüşə daxil edin. Yaxın, lakin biz çox belə qədər heç getdi. Biz indi edib, belə ki, çox aşağı mahnı oxudu mənfi nömrəsini. Belə ki, kifayət qədər iş deyil. Bütün hüquqlar, biz asanlıqla düzəltmək olar ki, geri gedən yolu bir dəfə idi. Lakin bəzi imkanlar indi nə təkmilləşdirilməsi? Yaxşı, məni beer2.c açmaq və burada aşağı diyirləyin imkan və almaq Bu versiya oldu. Nə müxtəlif kimi həyata atlamalar ki, ilk şey burada bu versiya? Auditoriya: [işitilemez]. DAVID J. MALAN: Bəli, heç bir daha çox i, bu meydana çünki mənə nə, mən deyiləm sonra n üçün istifadəçi tələb və alıram bilirik n i bərabər yaradılması, sonra i dəyişən edirəm, amma heç deyiləm toxunan n yenidən. Beləliklə what the heck başqa 32 ayrılması siz nöqtəsi oldu bit Mən müxtəlif dəyişən ola bilər yalnız, belə ki i adlanır? Belə ki, bu halda, mən növ tanınmış lazımsız dizayn xüsusiyyət. N 0 daha çox isə və mən indi demək gedirəm, getmək qabaqda və kimi printf üçün n keçən, eyni mahnı çap İkinci arqument və n - aşağı burada ikinci arqument kimi 1. Və sonra bu loop hər iteration haqqında qabaqda və yalnız getmək azalma n özü. İndi, funksional, bu proqram eyni olacaq. Mən 99 yazın varsa, n 99-da başlayacaq. Mən azalma, azalma, azalma, azalma. Mən pivə biri şüşə "üçün bütün yol aşağı gedirəm divar, pivə bir şüşə. Bir yazmaq ətrafında keçir. Mən divar pivə 0 şüşə ". Sonu etdi, çünki vəziyyəti düzgün almaq. Bu 0 daha çox var. Mən bu səhv etmədik. Belə olan versiyası bir və ya bir versiyası iki, daha yaxşıdır? Mən iki murmurings bir dəstə eşitdim. Niyə iki? Nə olub? Auditoriya: [işitilemez]. DAVID J. MALAN: Oh, tamam. Belə ki version birində, 0 aşağı getmək, lakin unutmayın deyil orijinal doğru versiyasını ya 0 aşağıda getmədi. Beləliklə, bu düzgün versiyası olduğunu unutmayın. Belə ki, ən azı iki düzgün versiyasını müqayisə edək. Version lehinə bir dəlil nədir iki olan MMM, daha yaxşı? Evet? Auditoriya: Bu az yer istifadə edir. DAVID J. MALAN: OK, belə ki, sağ az yer istifadə edir? Versiya bir 32 n bit, və sonra başqa bir istifadə halda I üçün 32 bit. Version iki yalnız n 32 bit istifadə edir, belə ki, bir plus görünür. Digər fikir? Hər kəs bir xeyrinə mübahisə istəyir? Evet? Auditoriya: Siz n üçün kodu əlavə xətt istifadə etmək -. DAVID J. MALAN: OK, əmin olun. Belə ki, ədalətli deyil. Azı mənə, yalnız belə - Mən bu həqiqətən bir az Messier hiss faktı deməkdir ki, Mən bir mənim məntiq bütün içine və sort bilməz loop üçün bilərsiniz kimi loop üçün gözəl xətti,. Burada cür bu n tack var - loop sonunda, çünki bu məntiqi lazımdır. Amma bu cür mənə səhv yol rubs, yalnız çünki baxmayaraq, qədər burada məntiqi ayrı görünür yenidən, bu, lazımdır. Digər fikir? Evet? Auditoriya: [işitilemez]. DAVID J. MALAN: Bəli. Yerine Belə ki, nə mahnı sonunda istədi yenə mahnı adı çap? "Pivə 99 şüşə oynayan üçün təşəkkür edirik" kimi və ya bir şey kimi silly? Amma point, orijinal dəyər əldə etmək istəyirdi. Hər barədə n mutated və ya değiştirdik ki, iteration və buna görə də onun orijinal dəyəri məhv yalnız sonunda bunu edə bilməz deməkdir. İndi, arguably, biz aydın etmək istəmirəm Bu proqram. Belə ki, kimin umurunda? Lakin bir çox etibarlı nöqtə var. Və vicdanlı olmaq, heç kim həqiqətən var Burada cavab. Onlar həm də eyni dərəcədə doğru edirik. Mən ya yol əmin ola bilər. Mən ümumiyyətlə, yaxşı bir prinsipi var, deyirlər ki, əgər siz bəzi dəyəri üçün istifadəçi xahiş və bir dəyişən saxlanılır sort prinsipi üzrə n kimi, yalnız, yəqin ki, yaxşı ki, ətrafında saxlamaq. Və hər hansı bir məlumat yalnız, təkrar mutate istəyirəm yalnız belə, özünüzü dəyişən surəti verir ki, orijinal girmə imkanı vardır. Siz 32 daha bit sərf olunur, amma reallıq bu kompüter, RAM iki gigabayt bu gün istəyirəm ki, və biz 32 bit üzərində quibbling mi? Həqiqətən, belə bir böyük. Və hətta yarım konsert və ya burada bu cihaz haqqında RAM gigabyte, 64 bit qarşı 32 bit, belə bir böyük. Əlbəttə, bu gün bu ölçüsü ilə overwhelmed yol olacaq proqram özü olan bir neçə yüz olacaq kilobayttan, əgər bir neçə megabayt, bu gün. Belə ki, ağlabatan narahatlıqlar, bir heç bir düzgün cavab. Amma ən azı bu başlamaq lazımdır ki, fikir edir fikrinizi keçir? Pset 0, biz, həqiqətən, yalnız gözlənilir baxmayaraq Çünki düzgünlüyünə və ya ən azı müxtəlif hataları disclaiming biz irəliyə kimi, qarşılaşdıqları bilər, dizayn digər əsas aspekti olacaq, həm kodu yazmaq həmçinin kodu qiymətləndirilməsi. Və ən azı bu kimi şeylərə fikir verin. Və yalnız bir şey işlərin, çünki yaxşı demək deyil yaxşı dizayn var demək deyil. Və müəllim yoldaşları hər biri və problem dəstləri bizə vaxt artıq hissəsi tease kömək edəcək. Yaxşı, haqqında, burada, demək bu versiyası nə edək? Mənə bir an burada bir az sexy bir şey edək. Birinci mənə bu xilas edək. İndi bu qrammatik sorunu bildirin. Belə ki, bu versiya, mən qrammatika düzeltmek üçün mənə ki, daha çox yalnız ara s "şüşə" kimi demək və ya "şüşə" - Hesab edirəm ki, küncü kəsilmiş istəmirəm - Mən də dinamik sözü "şüşə" çap istəyirəm bununla da bu gün bu% s placeholders istifadə edərək və ya "şüşə". Mən şərti i dəyəri nə yoxlamaq lazımdır. 1 varsa, mən "şüşə" demək istəyirəm, və onun bir şey varsa, başqa, mən "şüşə" demək istəyirəm. Belə ki, bu etmək üçün cəhd edək. I == 1 Belə ki, sonra mənə irəli getmək və elan edək - Mən bir string lazımdır, belə ki, bu, çünki mənə string s1 bunu bildirin ilk simli İndi qayğı. Mən "şüşə" demək gedirəm. Və sonra, simli, gəlin görək s2 - və mən bir anda gidiyorum harada izah edəcəyik - "Şüşə". Belə ki, bu mahnı, biz lazımdır ki, xatırlayıram potensial əşyalar, iki müxtəlif sözləri çap. Burada geri baxmaq Belə ki, əgər biz almaq zaman ki, qeyd burada bu, məsələn, "divar pivə iki şüşə, pivə iki şüşə, bir aşağı almaq istəyirəm ", onun ətrafında keçə bu dördüncü xətt indi də "pivə bir şüşə demək divar şüşə "və ya". mən qərar lazımdır ki, demək istəyirəm " "Şüşə"? Mən, özbaşına demək doğru gedirəm İndi bir dəyişən adlı s1, simli bəyan gedirəm bir ki, burada da burada takıldığından olacaq bu sözlər həmişə eynidir, yalnız çünki görə mahnı təbiəti. Mən istəyirəm nə söz s2 zəng gedirəm nəticədə burada görünür. İndi, sözün, 100 həyata 99 dəfə, bu olacaq 3 cəm, çünki o hallarda həm eyni, 2 cəm, 4 cəm edir. Amma bu künc halda, biz burada 2 almaq və sonra 1, və ya hətta 1 və sonra 0, mən bu məntiq lazımdır. Mən doğru almaq mənim kodu bəzi vaxt sərf etmək lazımdır. Mən bunu əgər, "şüşə" bərabər müəyyən s1 sonra, i == 1 əgər və "şüşə", bərabər s2 bu 1 olacaq, çünki şüşə və bu 0 şüşə olacaq. Və burada, bu nə təmsil edir? Just aydın olmalıdır. Bu yalnız bir comment edir. Belə ki, tək-line şərh ola bilər ki, siz deməkdir bu kimi kodu şərh, lakin başqa ümumi bilər paradiqma da ki, bir super-qısa söz var ki, əgər özünüzü qoymaq istəyirik və qoymaq üçün daha çox oxunaqlı deyil sağ kodu xəttinin sonunda, siz tamamilə bu kimi bir şey yoxdur. Belə ki, indi nə mən bunu əgər? I 1 bərabər deyil Else əgər. Belə ki, bang bərabərdir - ünlem "bang" kimi tanınır. = 1 bang edir. I 1 bərabər deyil Belə ki, mən əvəzinə nə istəyirsiniz? Yaxşı, mən nə istəyirəm ilk sözü? Belə ki, simli 1, cəm butulkalar üçün "şüşə" olmalıdır və bu indi, eləcə cəm "şüşə" olacaq. Bu, həqiqətən, bizə olur əgər biz görəcəksiniz biz getmək istəyirəm yerləşir. Burada aşağı diyirləyin Belə ki, indi mən sayede edirəm ki, görürsünüz i, lakin s1 yalnız. Mən və s1 ildə sayede alıram. Və sonra aşağı burada, mən eyni olan, 1 minus deyiləm əvvəl, lakin s2. Başqa sözlə, mən əsasən dəyişdirmək üçün ingilis sözü istəyirəm bu məntiqə. İndi bu kodu bəzi problemlər artıq var. Burada qapısının artıq nə sınıq olunur? Evet? Auditoriya: [işitilemez]. DAVID J. MALAN: Exactly. Mən artıq çərçivəsində dərs pozulmuş etdik. Mən s1 və s2 elan etdik, amma daxilində bunu etdik Bəli, bu kodu işləyəcək deməkdir qıvrım aşırma, line 42 qədər, amma tezliklə mən line 43 hit, tahmin hansı artıq mövcud? S1 ya s2 nə - Yaxşı, əhatə dairəsi artıq nə danışarlar. Beləliklə, biz bu düzeltmek üçün var. Belə ki, mənə bəyanatlar silmək imkan verir. Mən burada dəyişən adları tərk və bu silmək lazımdır və burada bu silin. Və nə xətləri Mən, həqiqətən, bu şeyləri bəyan etməlidir? Auditoriya: [işitilemez]. DAVID J. MALAN: Bəli, belə yəqin ki, sağ qədər burada 33-ish. String s2 sonra simli s1 Belə və. Və çıxır, mən bunu edə bilərsiniz. Eyni tipli iki dəyişənlərin elan edirsinizsə, həqiqətən, yalnız bir vergül istifadə edə bilərsiniz ki, C. bütün sağ, belə ki, indi iki dəyişənlər var - s1 və s2. Bu onların dəyərləri təyin alıram burada şərait, və ya burada. Və sonra aşağıda onları aşağı kullanıyorum. Necə bu artıq iş gedir? Bəli, hələ bir az arabası, lakin ən azı görmək edək nə qədər biz kazanılmış etdik. Mənə davam və beer3 edək. Bu beer3 mı? Yep, bu beer3 edir. İndi mənə irəli getmək və beer3 run bildirin. 399 99. Biz yəqin ki, onların əksəriyyəti atlayabilirsiniz. Və aşağı burada, bu oldu. "Divara pivə biri şüşə, pivə bir şüşə almaq aşağı biri, divar, pivə 0 şüşə ətrafında keçir. " Amma həlli yalnız yarısı üçün diqqət çəkən deyiləm. Şərti burada berbat. Belə ki, i bərabərdir zaman künc hallarda yaranır ki, görünür nə iki dəyərlər? Auditoriya: 2, 1. DAVID J. MALAN: 2 və 1. Bu 1 deyil 1 və deyil. Bu, həqiqətən, bu mahnı yalnız bu son iki beytlik var. Mən bunun əvəzinə nə istəyirsiniz? Mən i == 1 əgər olduğu halda tutuldu ki, görünür sonra ilk sözü "şüşə", ikinci söz "şüşə" dir. Amma burada, bu == 2 olmaq dəyişdirmək istəyirik. Bu halda, mən nə istəyirəm ki, ilk sözü olacaq? Auditoriya: "Butulkalar". DAVID J. MALAN: belə iki şüşə üçün "Butulkalar". Və sonra burada bu söz olmalıdır - Auditoriya: "Şüşə". DAVID J. MALAN: "Bottle", sinqulyar. Bütün hüquqlar isə, zoom buraya geri qoy etmək yenidən run, yenidən run beer3, növü daha 99. Okay, "Segmentasyon günah (əsas tullanır)." Mən nə zülm? Auditoriya: Siz bir dəyəri yoxdur [işitilemez]. DAVID J. MALAN: Ah, əla nöqtəsidir. Bütün hüquqlar, belə ki, burada səhv nədir? Seqmentasiya günah Belə ki, biz, həqiqətən, görmək olacaq bu bir neçə gələcəkdə dəfə, qəsdən. Amma indi, bu həqiqətən nə deməkdir? A seqmentasiyası günah demək olar ki, həmişə var deməkdir birtəhər kompüter yaddaş, RAM daxil olmaq üçün çalışdı, həqiqətən, xahiş deyil öz deyil ki, üçün əməliyyat sistemi. Belə ki, bu halda, olan I etdiyiniz nə görürsünüz mənim məntiqi flawed. I 1 bərabərdir əgər mən s1 və s2 bir dəyər təyin edir. I 2 bərabər, mən də etdik. Amma digər sonsuz sayda bunu deyil imkanları - xüsusilə, 3 və ya 4 və ya nöqtə, nöqtə, nöqtə, 99. Beləliklə, bu üçün bir düzeltme yalnız edək ola bilər bir başqa vəziyyət var. Və mənə burada getmək və s1 bərabər deyək - burada nə olmalıdır? Auditoriya: [işitilemez]. DAVID J. MALAN: Çünki ümumi halda "Butulkalar" yalnız eyni şey. Belə ki, quote, dırnağı bağlamaq, "şüşə". Bərabərdir Belə ki, cəm üçün şüşə, və sonra, burada cəm butulkalar üçün. OK, belə ki, indi mənim terminal pəncərə geri bildirin yeniden derlemeyle ki, yenidən axır. 99. Whew. Və tez ağlı başında olma çek nə edək. Texniki, biz əmin olmaq üçün bütün bu oxumaq istəyirəm onlar doğru istəyirik, ancaq baxmaq edək məşhur günahkarları ən. 3 şüşə, 2 şüşə, 2 şüşə, 1 şüşə, 1 şüşə, 0 şüşə. Biz ən azı indi üçün müəyyən etmək görünür. Amma burada tutmaq nə bir tanrı dəhşətli mess bu ki, yalnız bir axmaq həll etmək bir xarakter qrammatik ətraflı. Mən bu küncü kəsilmiş bir səbəb növü var əvvəllər üçün yalnız tamamilə annoying, çünki bu qədər kodu yazın. Amma bu qədər çox zərif yolu var ki, həyata çevirir eyni şey ifadə. Və biz aşağıdakı kimi edə bilərsiniz. Mənə bir an üçün ekranda bu tərk edək və bir ternary operator kimi tanınan bir şey təqdim edir. Bu etmək üçün nəzərdə ki, bir-liner cür bizim kimi söz bir az sexier, yaşayır. Mən bu aşağıdakı kimi etmək üçün gedirəm. Mənə s1 adlı simli ver və mənə bildirin o aşağıdakı kimi təyin. (I == 1)? "Şüşə", başqa "şüşə". S2 String (i == 2) olur? "Şüşə", başqa "şüşə". Belə ki, burada fərq nə sonra var? Kodu Bu iki xətləri, mən iddia edə Bu bütün mess dəyişin. Mən bu cür mənə rubs yalnız, çünki bir mess zəng bu kodu çox xətləri ki, yanlış yol. Yanlış deyil. Bu pis dizayn deyil. Kimi, bu mükəmməl düzgün və mükəmməl yaxşı. Siz özünüzü ifadə etmək Lakin coding yorucu olur təkrar və daha sadə xüsusi kahretsin bu kimi ssenari. Belə ki, C belə, bəzi qısa malikdir. Belə ki, bu mahiyyətcə s1 adlı simli bəyan dedi və bu dəyər və ya i == əgər bu dəyər və ya onu təyin - Bağışlayın, mən daha dəqiq bu demək lazımdır. , Dəyişən s1 bəyan bu doğru əgər bu dəyər tapşırılsın. Əks halda, bu dəyər tapşırılsın. Belə ki, başqa sözlə, bu bir-line yolu növ əgər başqa deyərək amma yol boyunca bir tapşırıq edir. I 1 Belə ki, sonra irəli getmək və bu "şüşə" deyirlər. Və sonra başqa bu, o, "şüşə" deyirlər. Eyni zamanda, s2 ki, i 2 bərabərdir əgər biz müəyyən etmək lazımdır ki, ikinci söz, biz rəftar "şüşə" üçün s2 seçin. Əks halda, "şüşə" seçin. Və nə bu mən, bu keçir və bütün silin İndi deməkdir kodu həmin satır. Mən deyəndə, bir qədər ridiculously, indi ki, sexier, bu üslub mənada cür sexier var. Funksional, bu kodu həqiqətən gedir ki, eyni şey. Və ilk sirli bir az ola bilər, baxmayaraq ki, nəzər, biz əvvəl bu tikinti görmədim etdik, çünki mən had bu son nəticədə çox daha çox olacaq ki, mübahisə oxunaqlı və biz insanlar düzmək üçün çox asan İndi yalnız oxumaq olar, çünki anlamaq bir line kodu bütün. Bu bu deyil, əgər hələ ruhu oxşar vəziyyəti və bu əgər içərisində nə və bu da başqa daxili nə edir. Amma biz yalnız daha zərif bunu edə bilərsiniz. Mən indi mənim terminal geri, bütün silinmiş olan o xətləri və yalnız bu iki ilə əvəz yeniden derlemeyle, 99 ilə pivə yenidən run şüşə ki, bildiriş mənim qrammatika hələ, əslində doğru deyil. Belə ki, yenidən başlamaq üçün bir şey. Pivə 2 şüşə, pivə, 1 şüşə. Sağ görünür. Bəli. Belə ki, orada biz daha qısa həlli var. Da, bu Belə ki, C ilə daha rahat almaq kimi lakin, ilk pset və ya hətta ikinci mütləq yapıları bizə heç şeyə icazə edə bilirik daha zərif. İndi burada başqa bir şey edək. Mənə davam və return1.c açmaq edək. İndi bir şəkildə başqa bir problemi həll etmək üçün başlamaq edək daha inkişaf etmiş kodu yazmaq imkan verir. Belə ki, burada onların məqsədi həyatında sadə kiçik proqram dəyərlər arttırmayı edir. Və həqiqətən, geri addım götürək. Mənə əl bunu edək. Mənə əsas (void) daxildir və int edək. Və mənə bu increment.c zəng edək. Mən nə istəyirəm? Mən irəli getmək və bir şey kimi demək gedirəm - biz ədədləri eyni zəng edəcək - int x. Belə ki, int x 2 alır; printf x% d, yeni xətt, x. Mən indi sürətli, amma tanış məhsulları sort yazaraq alıram. Sonra x + + etməyə gedirəm. Sonra yenə eyni cümlə çap gedirəm. Və sonra mən yalnız proqram çıxmaq 0 qayıtmaq üçün gedirəm. Bütün hüquqlar, bu bir proqramdır əlavələr bir sıra. İlk bu sonra 2 bir şey başlamaq üçün gedən, və oldu bu arttırmayı və yenidən çap gedir. Belə edək, inanılmaz sadə proqram artım axır. Amma bunu, mən kub dəyəri istəyirəm ki, indi güman qədər özbaşına bir şey. Mən həqiqətən x onun kub əldə etmək istəyirik. Mən POW funksiyası adlanır nə istifadə edə bilər, amma deyil ki, hələ burada, həqiqətən, bilirəm. Mən bu köhnə yol etmək üçün gedirəm. x dəfə x dəfə x dəfə x bərabərdir. Mən yenə özü tərəfindən vurulması, dəyəri cubing alıram və təkrar ki, biz enerji almaq bu halda 3. Belə ki, indi çap etməli nömrələri biz görəcəksiniz kimi olmalıdır burada - increment etmək, belə ki, bu, həqiqətən, həqiqətən arttırmayı deyil artıq, lakin biz təkcə ad tərk edəcəyik - Sonra 2 və 8. İndi biz zəriflik üçün imkan əvvəlindən var Burada əsasən bir sıra vurulması bu cubing şey özü özlüyündə özü bu kimi hiss yalnız ola bilər faydalı kimsə qərar çox kimi bir funksiyası var il əvvəl - Bilirsiniz, mehriban əgər faydalı bizi biri aşağı oturur və printf belə dünyanın qalan istifadə edə bilərsiniz ki, yazır niyə biz oturub kub adlı funksiyası yazmaq deyil Bizim üçün bu cubing edir ki, biz əl yoxdur ki, burada dəyərlər cubing anlayışı həyata? Sadə misal Beləliklə, amma nin irəli getmək və istifadə qoy bu kimi öz funksiyasını yazmaq imkanı. Belə ki, bu günə qədər, yalnız əsas istifadə etdiyiniz, biz digər istifadə etdiyiniz xalq funksiyaları, amma biz öz yazılı deyil. Belə ki, burada biz gedin. Mən irəli getmək və kub adlı funksiyası yazmaq üçün gedirəm. Mən bu giriş etmək üçün gedirəm. Belə ki, giriş bir tamsayı olacaq. Və nə bunu edir? Bu int çıxış bəyan olacaq = giriş dəfə daxil dəfə daxil etmə. Və sonra bu məhsulun geri olacaq. Və sonra mən artıq konkret olmalıdır. Bu funksiya bir int geri gedir. Belə ki, burada sonra öz funksiyalarını yazmaq istədiyiniz necə. Siz ilk olaraq adı nə qərar funksiyası olacaq. Və ümumiyyətlə, izahlı bir şey yaxşıdır, mən rəftar bu kub çağırırıq. Sonra geri olacaq nə müəyyən etmək üçün var, nə onun çıxışı olacaq. Biz hələ ki, bir çox variantları yoxdur. Int, char, float, bool, simli. Mən bunu istəyirəm, çünki indi, mən, bir int ilə stick gedirəm bir tam qayıtmaq üçün. Sonra onun giriş, əgər nə müəyyən etmək lazımdır. Və kub mübahisə edir, əgər arasında bir şey edir parantez, bu arqument bir ad vermək lazımdır ki, siz həyata və ya yazılı etdiyiniz kimi siz bir şey zəng edə bilərsiniz bu funksiya, siz bir növ, vermək olan bu halda int olacaq. Belə ki, qısa, kub bir tamsayı edir ki, funksiyası giriş və çıxış qaytarır kimi bir tam kimi. Belə ki, daxil olan nə edir? Yaxşı, line 14, mən bir dəyişən adlı çıxış bəyan və mən bu dəyər, giriş dəfə giriş dəfə daxil tapşırılsın. Və sonra mən çıxış qaytarır. Belə ki, necə bu istifadə edirsiniz? Mən xətt bu qeyd simvol nə dəyişə bilərəm 7, sizcə olunacaq? Auditoriya: [işitilemez]. DAVID J. MALAN: Bəli, x belə kub. Belə x bəzi dəyəri keçirir deməkdir ki, dəyişən edir. Xoşbəxtlikdən, bu tipli tam var. X bir int edir, çünki, mən kub onu keçə bilər. Mən dəyəri x dəyəri əsas alıram baxmayaraq kub x, kimi, bu günə qədər heç vaxt belə olmuşdur bərabər işarəsi və kodu bir line, sagdaki heyəti var icra olur və sonra təyin edilir sol dəyəri. Belə əməliyyatlar üçün biz ümid kimi deyil. Belə işləyir? Yaxşı, məni burada gedək. Mənim terminal pəncərə açmaq edək. Mənə daxil edin artım edə bilərəm edək. Funksiyası "kub" və "Örtük bəyannaməsində yanlışdır Olduğu kimi C99 ". Bir kənara kimi, C99 dil C istinad 1999-cu ildə müəyyən olan versiyası üzərində yeniləmə idi Orijinal üzərində yeniləmə olan 1989. Belə ki, bütün o deməkdir ki, var. Belə ki, "gizli bəyannamə nə deməkdir funksiyası "kub" yanlışdır? "Bu sağ burada. Bu xətt 12 doğru var. Auditoriya: [işitilemez]. DAVID J. MALAN: Nə olub? Auditoriya: Bu əvvəl deyil. DAVID J. MALAN: Bu əvvəl deyil. Belə ki, bu şey. C cür axmaq edir, və ya C derleyiciler axmaq növü var. Onlar, həqiqətən, yalnız onlara nə demək nə. Və onlar, xüsusilə, yalnız, alt üçün üst kodu oxumaq sağ. Derleyiciyi, cingilti, kodu oxumaq əgər, line 1, bu, Bunu necə tutulur. Oh, burada əsas gəlir. Okay, mənə irəli getmək və bir dəyişən x bəyan edək. Mənə bir şey çap edək. Line 7, heck kub nədir? Bu stdio.h elan deyil. Mən nə heç bir fikrim yoxdur C. ilə gəlmək deyil. Və cingilti yalnız bails və səhv mesajı ilə başabaş. Belə ki, yolları bir neçə bu düzeltebilirsiniz. Biz kub yalnız burada hərəkət nə cingilti öğretebilir bəyannamə edir. Mən kəsilmiş və əsas üstün o yapışdırılır. İndi əsas ilk artıq olduğuna görə, bu ki, həyata hələ default həyata. Əsas əsas deyil. Bu default funksiyası adı var. Bir fayl olduğu əhəmiyyətli deyil. Mən onu istifadə etməzdən əvvəl Amma ən azı indi cingilti kub gördü. Belə ki, cingilti indi xoşbəxt olduqda nin görək. Artım olsun, bu dəfə tərtib etməyib. Mənə artım run edək. Və həqiqətən, bu iş görünür. İndi nəhayət yerləşir ssenariləri ilə gəlmək olar hər funksiyası qoymaq mümkün deyil hər funksiyası yuxarıda. Siz, əslində bu sonsuz döngü takılıyorum olacaq Bu adam burada ancaq bu olmaq istəyir yerləşir oğlan var olmaq lazımdır. Belə ki, həmişə işləmir. Belə ki, təşəkkürlə, C, daha zərif həll var. Bu idi Mən bu geri qoymaq gedirəm, çünki mən prinsip məsələsi kimi, üstünlük əsas həmişə başında, çünki görmək yalnız gözəl nə bu proqram default yapar. Və nə mən burada nə gedirəm deyirlər nə bəyan edir bir prototip. Mən sözün mənim kub funksiyası yenidən bəyan gedirəm çıxarmaq ve yapıştırma. Əslində, bu sözün deyil. Belə ki, sözün line 15 çıxarmaq ve yapıştırma up line 6 yuxarıda. Bu qədər başa nə line etməz. Bu line 4-də olur. Amma əvvəl əsas olmaq yoxdur. Amma fərq görürük. Bir nöqtəli vergül ilə Line 4 bitir olan, hey deməkdir Cingilti, funksiyanı var ki, mənim söz almaq bir int edir və bir int qaytarır ki kub çağırıb. Amma bu hələ nə demək mý deyiləm. Sadəcə mən nəhayət sizə söz verirəm ki, bilirik. And olsun ki, indi bu aşağı edir ki, OK. Beləliklə, bu üst çünki onda, ümumiyyətlə, daha yaxşı fayl, yalnız, sürətli yanğın, bir xətt birnəfəsə danışmaq olar hər, sizin funksiyaları adları nə, nə onların giriş onların nəticələri nə var. Və daha aydın olması üçün, giriş ümumiyyətlə dəlil deməkdir və ya parametri, sinonimidir. Çıxış o nə, qayıdış dəyər deməkdir geri mənə əl. Belə ki, burada bu halda, kub üst elan lakin həyata kimi müəyyən başqa altına bilinir. Belə ki, indi-nin burada geri getmək və bu yenidən run bildirin. Belə ki, indi yenidən run artırılması, mənə davam etmək və yenidən run bildirin. Və indi yalnız gözəl iş görünür. Belə ki, indi biz kimi bir şey davam və amil bilər bu dördüncü versiyası pivə nümunəsidir. Mənə burada aşağı diyirləyin bildirin. Mən cür yalnız indi ürək bu dərs vermiş bilərsiniz. Mən yenə eyni bənd ifa edilmişdir ki, təkrar, mahnı eyni xor xətti, hiss niyə bir funksiyası daxil amil ki, yox kimi? Və həqiqətən, bu motivasiya biri olmalıdır. Dünyanın başqa kimsə edə bilərsiniz ki, başqa bir kub funksiyasından istifadə etmək - ki, bir şey amil və yazmaq üçün yaxşı bir səbəb var öz xüsusi funksiyası - kodu bir yığın yalnız edir ki, proqram varsa ne cür bir vermək istəyirəm ki, konseptual mənada adı - bu halda, xor kimi - sonra eyni bir ayrı funksiyası kimi yaza bilərsiniz. Siz əsas hər şeyi yazmaq üçün yoxdur, yalnız əgər onu ayrı-ayrı və bir ad vermək təmiz hiss edir. Belə ki, burada bu halda, mən üstün bir şərh olduğunu fark yalnız haqqında oxuyur ki, bu funksiya şüşə müəyyən nömrələri. Mən bu zəng etmək lazım deyil ki, burada edək şeyi giriş və çıxış. Əslində, bu dəfə yalnız şüşə üçün giriş b çağırıb. Burada qeyd, etibarsız nə təklif? Yəni xor - Auditoriya: geri deyil. DAVID J. MALAN: bir dəyər qayıtmaq yoxdur. Və həqiqətən, funksiyaları dəyərlər qayıtmaq yoxdur. Onlar bir şey yalnız bilər. Onlar yan təsirləri adlanır nə ola bilər ki, bu halda yalnız ekranda çap bütöv bir dəstə edir. Belə ki, burada bu kodu, mən sanki təkcə stole ki, görürsünüz əvvəlki nümunəsi. Yeganə fərq əvəzinə mənim kimi i istifadə edir dəyişən, indi mənim dəyişən kimi b kullanıyorum. Mən aşağı burada b var, aşağı burada b var, b var burada 1 minus. Amma kodu tam eyni deyil. Lakin biz bu istifadə edə bilərsiniz necə artıq sizə göstərmək, mənə gedək qabaqda və faktiki loop üçün üçün bu dəyişir. (i; i> n int i = n -) üçün. Mən ki, bizim əvvəlki Məsələn oğurlanmış etdik. Əvvəllər mən başlamışdır ki, xətt 37 var Bu annoying mahnı oxuyan. Ancaq əvəzinə, yalnız indi i xor zəng etmək üçün gedirəm. Done. Belə ki, indi bu loop hər iteration, mən bu digər zəng mən yazmaq baş funksiyası, xor. Bu il əvvəl başqası tərəfindən yazılı deyil. Lakin xor, eyni zamanda, çap printf istifadə bu dörd xətləri həyata. Amma bir daha və yenidən xor zəng edirəm ki, loop Mən, çox sonunda almaq üçün gidiyorum o deməkdir ki, Mən bu günə qədər olduğu kimi dəqiq eyni mahnı. Belə ki, qısa, indi mənim kodu geri baxmaq əgər, baxmayaraq funksional bu bərabərdir, bu fark daha oxunaqlı almaq üçün başlayır. Mən dəqiq bilmirəm necə GetInt həyata keçirilir. Açığı, mən xor həyata necə bilmirəm. Amma mənə məsələ deyil. Indi mən çeşidləyə bilərsiniz, çünki mən oxumaq, bir insan kimi, vecimə deyil Bu top-dən aşağı. Və funksiyaları nə görə adına çünki nə, mənim kodu getdikcə oxunaqlı edir. Və proqramlar daha mürəkkəb almaq kimi - dövr sonuna, siz xətləri yüzlərlə yazılı olacaq PHP və JavaScript və kimi kimi dillərdə kodu - siz onu izlemek üçün çox daha asan olduğunu görəcəksiniz siz etdiyiniz nə. Və start zaman dostları ilə əməkdaşlıq və ya tərəfdaşlar və ya həmkarları, daha çox yazmaq edə bilərsiniz bu əsas həyata başlayaraq kütləvi proqramları bloklar. Bildirib ki, ilə Belə ki, niyə biz bir gün zəng deyil? Və biz Çərşənbə günü görəcəksiniz. [Alqış]