[MUSIC PLAYING] DAVID J. MALAN: Bütün sağ, bu CS50 edir. Bu həftə biridir. Belə ki, həftə sıfır ki, son dəfə xatırlayıram, biz hesablama düşüncə diqqət. Və biz ki transitioned Scratch, qrafik proqramlaşdırma Bizim dostların dil MİT-in Media Lab. Və Scratch ilə, biz araşdırmaq idi funksiyaları kimi fikir və şərtləri, və loops və dəyişənlərin və hətta hadisələr və mövzuları, və daha çox. Bu gün biz olacaq həmin ideyaları istifadə edərək, davam, və həqiqətən onları alaraq verilmiş, lakin onlara tərcümə C. İndi kimi tanınan başqa bir dil, C daha ənənəvi dilidir. Bu aşağı səviyyədə var dil, siz olacaq. Bu sırf mətn var. Və belə ki, ilk baxışdan, bu bütün olduqca sirli baxmaq olacaq əvvəl proqramlaşdırılmış heç varsa. Biz olacaq yarı colons və parantez, qıvrım aşırma, və daha. Amma hətta həyata syntax olsa tanımadığı bir az baxmaq haqqında Siz ən ki, keçmiş oldu. Və ideyaları görmək üçün cəhd ki, həqiqətən, tanış, Burada həftədə bir çünki biz müqayisə etmək nə başlamaq lazımdır ilkin C. qarşı Scratch Belə ki, məsələn, geri zaman ki, Bizim proqramların ilk tətbiq Sonuncu dəfə biz baxdı bir blok idi şeylərdir zaman kimi bir az bir şey yaşıl bayraq tıklayan və sonra keçirdik aşağıdakı bir və ya daha puzzle ədəd, bu halda, salam dünya, deyirlər. Belə ki, həqiqətən, Not, Hesab edirəm ki, yaşıl bayrağı basın Belə ki, mənim proqram run bunlar danışmaq edam almaq blokları, və ya run. Və xüsusilə, Scratch hello, dünya bildirib. İndi müəyyən ola bilər burada müxtəlif sözləri. Amma biz, həqiqətən, ki, bir çox görəcəksiniz Həqiqətən, bu blocks-- və, C çox funksiyaları ola bilər parametrized və ya özelleştirilmiş fərqli şeylər etmək. Əslində, C biz əgər indi çevirmək istəyirsinizsə, Bu Scratch proqram bu digər dil, biz yazmaq olacaq bu kimi kiçik bir şey. Düzdür, bəzi tanımadığı var orada syntax çox güman ki, int, və parantez, və etibarsız. Siz baxmayaraq Lakin hətta printf yalnız çap olardı. Amma çap çap deməkdir biz tezliklə görəcəksiniz kimi, biçimlendirilmiş. Bu sözün çap edəcək ekran nə O parantez daxilində olan Əlbəttə, bu halda, salam dünya. Amma bəzi digər görəcəksiniz syntax bəzi double quotes, ki, sonunda parantez, yarı kolon kimi. Belə ki, yerüstü bir az var, belə ki, danışmaq, həm cognitively üçün və syntactically, biz olacaq ki, uzun əvvəl xatırlamaq lazımdır. Lakin, təcrübə ilə dərk Bu sizə sıçramaq başlayacaq. Əslində, ki bir diqqət edək funksiyası, bu halda specifically-- salam dünya demək. Belə ki, funksiyası demək. Hello dünya onun parametri, və ya dəlil onun özelleştirme. Və C ekvivalentlik yalnız Burada bu bir xətt olacaq, printf bərabər olduğu, demək double sitat string, salam dünya, əlbəttə, bərabərdir orada ağ qutusuna nə üçün. Və backslash n, bir az olsa qəribə və sıfırdan yox, sadəcə biz lazımdır təsir gedir kompüter görmək mənim Mac və ya PC kimi, yalnız hərəkət növbəti line kursor. Bu vuruş kimi Klavyenizdeki daxil edin. Belə ki, biz uzun əvvəl daha görəcəksiniz. Lakin ilk, bu nəzər salaq loops halda digər nümunəsidir. Biz son dəfə bu əbədi loop idi puzzle ədəd bir sıra idi ki, sanki bir şey etdi bu halda əbədi, demək, salam dünya, salam dünya, salam dünya, salam dünya. Belə ki, dizayn sonsuz loop var. C, biz bu həyata keçirmək istəyirsinizsə Eyni fikir, biz sadəcə bunu edə bilər. doğru olsa da, salam printf indi vücuda isə yalnız semantically cür bunu fikir qədər conjures bir şey yenidən və yenidən və yenidən, və nə qədər? Yaxşı, true-- geri ki, əsl yalnız və ya biridir. Və əsl həmişə, əlbəttə, doğrudur. Belə ki, mənasız cür bəyanat yalnız doğru demək. Şübhəsiz ki, bu, qəsdən əsl yalnız həmişə doğru, çünki, əsl yalnız nəzərdə tutur isə daha dolayı bir az əgər, kod aşağıdakı xətt ki, bu qıvrım aşırma arasında yalnız yenidən və yenidən icra etməlidir, və yenidən və həqiqətən dayandırmaq heç vaxt. Amma istəyirəm əgər sizin loop biz kimi, dayandırmaq üçün kimi bir şey ilə son dəfə idi Bu, aşağıdakı 50 dəfə təkrar C, biz nə ilə eyni edə bilərsiniz söz loop üçün çağırıb isə, lakin olmayan. Və sonra biz burada bəzi yeni sintaksis var int i, i az 50 0 bərabərdir i ++. Və biz geri gəlmək lazımdır. Amma bu sadəcə necə biz Scratch bloklarının sıra tərcümə kod C xətləri bir sıra. Eyni zamanda, dəyişənlər hesab edir. Və əslində, biz yalnız bir an əvvəl bir gördüm. Və Not halda, biz əgər i adlı dəyişən elan istədi i tam olduğu üçün, yalnız bir sıra və biz bir dəyəri müəyyən etmək istəyirsinizsə, Biz bu narıncı istifadə edir blok burada i 0 seçin. Və biz bu gün görəcəksiniz və kənarda, yalnız son həftə kimi, proqramçılar demək olar ki, həmişə həqiqətən, sıfırdan hesablanması başlamaq Konvensiya tərəfindən. Lakin geri çünki ikili bizim müzakirə, kiçik sayı bilərsiniz bit hər hansı bir sayı təmsil edir yalnız 0 özü olacaq. Və belə ki, biz ümumiyyətlə başlamaq lazımdır 0 hətta dəyişənlərin başlatılıyor. Və C, eyni etmək biz int demək olacaq tam üçün, yalnız Konvensiyanın edir. Mən bu dəyişən çağırıb bilər bir şey Mən yalnız Not kimi, istəyirəm. Və sonra 0 yalnız verir bərabərdir sağ dəyər 0 və dəyişən onu qoyur, ya sol, orada storage konteyner. Və yarı kolon biz see-- lazımdır və bu already-- bir neçə gördüm Yalnız fikir sonu deməkdir. başqa bir şey davam təqib xətləri üzrə. İndi nə Boolean ifadələr haqqında? Not Xatırladaq ki, bu ifadələr idi ya doğru olduğunu və ya yalan suallar həqiqətən, doğru və ya yalan ya var ki. Belə Not halda, biz bilər oxşar sadə sual, i 50-dən az? Mən yenə bir tam deyil. Bəlkə biz istifadə etdiyiniz Not proqramı bir hesab takip və ya kimi bir şey. Not burada Belə ki, bu syntax Yalnız i 50-dən az deməkdir? Yaxşı, təşəkkürlə, bir şey deyil C. və tərcümə üçün sadə, bu sadəcə az mən deyərdim 50-dən çox tanış düyməsini istifadə Klavyenizdeki. Eyni zamanda, əgər istəyirdi bir şey daha ümumi demək, kimi, yaxşı, y hər bir daha x az x və y özləri dəyişənlər var? Biz eyni şey edə bilərsiniz C, belə uzun biz sizin kimi artıq bu dəyişənlərin yaratmışdır. Və biz necə görürsünüz uzun əvvəl bunu. Biz sadəcə y daha x az demək olardı. Belə ki, üçün başlanğıc edirik bəzi oxşarlıqlar görmək. etdi və o insanlar Scratch əlbəttə idi Bu əsas ideyaları bəzi ilham. Və bu cür görəcəksiniz çox dillərdə sintaksis yalnız deyil, Scratch yalnız C, lakin Python, və JavaScript, və hələ digər dillərdə. Başqa bir tikintinin nəzərdən keçirək C, vəziyyəti anlayışı, şərti bir şey bunu. Bir şey doğru deyil, bunu. başqa bir şey doğru deyil, bunu. Bu proqramlaşdırma sort yolun bir çəngəl bərabər. Bəlkə iki yol çəngəl var, üç yol çəngəl, və ya daha çox. Və Not, biz ola bilər bu kimi bir şey göründüyü. Belə ki, bu bir böyük biridir. Lakin nisbi hesab məntiq sadəlik. x y azdırsa, onda x az demək y daha x y daha böyük başqa əgər, sonra x y daha çox olduğunu söyləyirlər. Və sonra, məntiqi, əgər Siz Not geri edirəm və ya yalnız öz insan intuisiya, yaxşı, x y üstün deyil, əgər, və x Əlbəttə, sonra y az deyil x y bərabər olacaq. bu halda, quş balası ilə So o Scratch blokları, biz üç nail ola bilər yol yol fork? Eyni zamanda, biz istəyirsinizsə Bu arguably, C bunu ən azı bir az simpler-- görünür Siz sintaksis ilə tanış dəfə. x y azdırsa, printf x y azdır. x y daha böyük olduqda Else, printf x y daha böyükdür. Else printf x, y-- və bərabərdir yenə olanlar backslash yalnız bitir bu yeni xətləri üçün ki, əgər belə həqiqətən proqram bu cür qaçdı yalnız hərəkət olardı Sizin kursor nəticədə Ekranın növbəti line. İndi isə Scratch digər idi daha mürəkkəb xüsusiyyətləri, yalnız olan bəzi biz olacaq ilkin C. dünya üzərində hərəkət Onların biri idi Not siyahısı çağırıb. Və bu xüsusi idi dəyişən növü ki, Bir neçə şeyi saxlamaq üçün icazə geri bu, geri, geri, geri. C, bu yoxdur siyahıları, özlüyündə, lakin bir şey ümumiyyətlə ki, , Seriallarda baxmayaraq ki, biz lazımdır çağırıb sonra bu dövr geri qayıtmaq bir şey axtarır bir siyahısı, və ya, həqiqətən, bir bağlı siyahı çağırıb. Amma yaxın indi bizim üçün C ekvivalent bir şey olacaq bir sıra çağırıb. Və bir sıra sadəcə bir deyil dəyişən xüsusi növü ki, məlumat saxlamaq üçün imkan verir geri geri, geri, geri. Və həqiqətən, Not, biz daxil olmaq istəyirdi bir sıra ilk element və ya bir list-- və mən onu zəng etmək üçün gedirəm Konvensiya, argv, dəlil ilə vektor, lakin daha uzun əvvəl. Mən ilk element almaq istəyirsinizsə of Not dünyada, argv Siz, həqiqətən, adətən nə 1-dən hesablanması başlamaq. Və mən argv 1-ci bəndi əldə edə bilər. Bu MIT həyata necə var siyahıları anlayışı. Lakin C, mən gedirəm daha çox sadəcə demək, argv, yenə adı mənim list-- və ya aydın olmaq, bir sıra. Mən ilk istəyirsinizsə elementləri, mən gedirəm , Kvadrat mötərizədə istifadə üçün təşəkkür tez-tez klaviatura ilə istifadə edə bilər. Amma 0 yalnız o deməkdir ki, mənə ilk almaq. Belə ki, münasibətilə və vaxt gedirik edir Bu dichotomies görmək üçün başlamaq üçün Not və C arasında, vasitəsi Scratch istifadə edir. C Biz burada 0 istifadə edin. Amma tez görürsünüz Sonra başa düşürəm Hər dil təməlləri ki, bunlar daha almaq üçün başlamaq təcrübə və təcrübə vasitəsilə tanış. Belə ki, həqiqətən bir proqram indi baxaq. Burada C ilk olacaq tam proqramları üçün mənbə kodu. Və proqram gedirik baxılması üçün təklif ekvivalent var bir ki, əvvəllər Scratch parça. burada Belə ki, biz nə var arguably sadə C proqram ki, yaza bilərsiniz həqiqətən bir şey yoxdur. İndi biz keçmiş baxmaq lazımdır, İndi daxildir ki, standart io.h və bu bucaq mötərizədə, və int və etibarsız, və qıvrım aşırma, və s. Və yalnız diqqət edək ən azı daxilən nə, artıq sizə sıçramaq bilər. Əslində, əsas, mən deyil mütləq bu nə, lakin Not kimi çox idi ki, yaşıl bayraq, puzzle parça tıklayan belə bir proqramlaşdırma dili C yoxdur kod əsas parça var ki, ismarıcları icra olur. Və həqiqətən, bu sözün əsas adlandırmaq olacaq. Belə ki, əsas bir funksiyası var. Və mövcud xüsusi funksiyası var C bir proqram çalıştırdığınızda ki, Bu tərəfindən olur ki, əsas deyil default. Not dünyada, Bu zaman yaşıl bayraq adətən idi tıklayan default tərəfindən oldu ki. Eyni zamanda, biz əvvəl bu gördüm, printf ya çap biçimlendirilmiş, ki ilə gəlir bir funksiyası olacaq C, digər bütün dəstə ilə yanaşı, vaxt və zaman ki, iradə yenə qaydada dəqiq nə Onun adı təklif kimi, bir şey çap. Biz çap istəyirsiniz? Yaxşı, biz ki, görürsünüz enclosing simvol these-- salam dünya kimi, ikiqat quotes backslash n, biz məhz printf demək olar Ekranda nə çap. Amma nə etmək ki, biz təəssüf ki, ki, bir şey etmək lazımdır Bizə insanlar artıq sirli, lakin ən azı bu qədər oxunaqlı deyil kəskin daxildir standart io.h, int, əsas, etibarsız, printf, sehrli bütün incantations biz yalnız ekranda gördüm. Amma biz, həqiqətən, var daha gizli gedin. Biz ilk kodu tərcümə etmək lazımdır Biz maşın kodu daxil yazmaq. Və son həftə geri maşınları ki, ən azı isə biz burada bilirik, Günün sonunda yalnız adet sıfır və olanları başa düşürük. keçirdik əgər Allahım, bu yazmaq həqiqətən proqram adet sıfır və olanları, bu, çox, çox tez olardı bir şey fun həyata edir. Amma bu, son həftədə çıxır ki, adet sıfır və olanları bu nümunələri yalnız xüsusi mənası var. müəyyən kontekstlərdə, Onlar nömrələri demək bilər. Bəzi kontekstlərdə, onlar demək bilər məktublar, və ya rəng, və ya hər hansı bir sayı orada sonra digər çıkarıldığının. Lakin kompüter var kimi bir CPU, Central Processing Unit, və ya kompüter daxilində beyin. Bu adətən Intel var daxili, ki, çünki ən böyük şirkətlərindən biri ki kompüterlər üçün CPU'lar edir. Yaxşı, Intel CPU'lar və başqaları sadəcə əvvəlcədən qərarına gəldik ki, adet sıfır müəyyən nümunələri və olanları xüsusi şeyi başa düşülür. adet sıfır və olanları müəyyən nümunələri demək, ekran bu çap edəcək, və ya bu iki ədəd əlavə və ya Bu iki ədəd çıxmaq və ya məlumatların bu parça hərəkət mənim kompüter yaddaş burada, və ya digər çox aşağı səviyyədə hər hansı bir sayı, amma nəticədə faydalı, əməliyyatları. Amma şükürlər olsun ki, biz insanlar niyyətində deyil detal bu səviyyədə bilmək lazımdır. Həqiqətən, yalnız burada, son dəfə kimi biz yenidən və yenidən və yenidən Abstrak, çox aşağı səviyyədə bina adet sıfır və olanları kimi primitives yüksək səviyyədə anlayışlar nömrələri, və məktublar kimi, və rəng, və daha çox, Belə ki, biz proqramçılar kimi bilərsiniz çiyinlərində durmaq bizdən əvvəl gəlib başqaları və digər ki, proqram istifadə insanlar us-- əvvəl yazılı yəni proqramları derleyicileri çağırıb. C bir dil olduğunu adətən tərtib, olan konvertasiya deməkdir maşın kodu mənbə kodu. Xüsusilə, nə deməkdir ki, sizin mənbə var, əgər Özünüz tezliklə biz kimi yazmaq kodu Ekranda yalnız bir anda olacaq, və siz çevirmək istədiyiniz nəticədə maşın kod o adet sıfır və olanları ki, yalnız Mac və ya PC understands-- Siz ilk var kimi ki, mənbə kodu yem xüsusi giriş proqram compiler adlı çıxış edən biz görəcəksən maşın kodu. Və həqiqətən, son dəfə danışdıq haqqında, həqiqətən, günün sonunda, problem həll. Siz giriş var. Və nəticələr var. Və bir növ var ortada alqoritm. Alqoritmlər, şübhəsiz ki, ola bilər proqram tətbiq, biz pseudocode ötən həftə gördüm kimi və biz faktiki kodu ilə görəcəksiniz kimi bu həftə. Və belə bir compiler həqiqətən yalnız daxili alqoritmlər bir sıra var Bunun bilirik ki, necə xüsusi açar sözlər çevirmək, əsas və printf kimi, və başqaları ki, biz yalnız adet sıfır nümunələri gördüm və olanları ki Intel daxilində və digər CPU'lar həqiqətən anlayır. Belə ki, necə biz bu etməliyəm? Harada biz compiler alıram? Bizim ən burada Mac və ya PC var. Və Mac OS çalışan, və ya edirik Windows və ya Linux, və ya Solaris, və ya digər hər hansı bir sayı əməliyyat sistemləri. Və həqiqətən, biz bilər internet üzərində çıxmaq və compiler yukle Mac və ya PC üçün xüsusi əməliyyat sistemi üçün. Amma biz bütün olacaq müxtəlif pages, belə danışmaq. Biz bir az var ediyorum müxtəlif konfiqurasiyaları. Və hər şeyi eyni işləməyəcək. Və həqiqətən, bu gün istifadə etməyin bizə bir çox yalnız bizim noutbuk çalışır proqram. Əksinə, biz bir şey istifadə Bir brauzer kimi ki, Bizə daxil olmaq üçün imkan verir web-based bulud applications. Və sonra bu dövr, biz məhz bunu edəcəyik. Biz ərizə yazacaq və ya software, C kod deyil istifadə lakin Python kimi digər dillər və bulud run JavaScript. Və biz özümüzü bunu semestr ərzində həqiqətən bir bulud-based istifadə edəcək CS50 IDE kimi tanınan mühit. Bu web-based proqramlaşdırma var ətraf mühit, və ya entegre inkişaf ətraf mühit, IDE, bəzi üstün inşa Cloud 9 adlı açıq mənbə proqram. Və biz bəzi pedaqoji etdik bu simplifications müəyyən xüsusiyyətləri gizlətmək kimi biz ehtiyac yoxdur ilk həftə, sonra siz onları aşkar və bunu ən bir şey ətraf mühit ilə istədiyiniz. Və bu, çox, bizə imkan verir müəyyən proqram pre-quraşdırma. qondarma CS50 kimi şeylər biz tezliklə görəcəksiniz kitabxana, bəzi C bizi təmin edir əlavə funksionallıq. Belə ki, siz getmək əgər, nəticə etibarilə, CS50.io, Siz daxil istenir və nə yaratmaq dəfə Pulsuz üçün bir haqq-hesab, Bir daxil olacaq çox bu kimi görünür mühit. İndi bu default rejimindədir. Hər şey gözəl və Ekranda parlaq. Bizim bir çox bir vərdiş var var CS50 parça üzərində işləyir çox gec gecə. Və belə ki, bəzi tercih edə belə danışmaq, gecə rejimi çevirmək. Lakin, nəticədə, siz nə istəyirik CS50 IDE ərzində görmək olacaq üç fərqli areas-- edir sol harada sahəsi Sizin faylları olacaq bulud, sağ üst sahəsi harada code düzenlenebilir olacaq. Siz açmaq edə bilərsiniz hər hansı bir proqram üçün fərdi Nişanlar Siz daxilində bu dövr yazmaq ki, sağ üst küncündə edir. Və sonra ən arcanely, və hələ güclü, bu şey olacaq bir terminal pəncərə kimi tanınan aşağı. Bu köhnə məktəb Command Line Interface, və ya CLI ki, imkan verir Siz əmrləri icra etmək Bu halda kompüter üçün də, bulud kompüter kodu tərtib kimi şeylər mənbə kodu maşın kodu, Sizin proqramları çalıştırmak və ya başlamaq üçün web server, və ya verilənlər bazası daxil olmaq üçün, və digər texnika hər hansı bir sayı biz uzun əvvəl istifadə başlamaq lazımdır ki. Amma orada almaq üçün, biz istəyirik həqiqətən gedir online getmək və oynayan başlamaq üçün. Və bunu, ilk edək əsas ilə kustarlıq başlamaq, və proqramın əsas hissəsini yazın. Və ki, funksiyası istifadə edək Biz əvvəllər istifadə printf, sadəcə bir şey demək. Belə ki, burada mən CS50 IDE daxilində artıq deyiləm. Mən əvvəlcədən daxil etdik. Mən tam pəncərə nümayiş. Belə ki, son nəticədə, siz çox önümüzdəki problemləri oxşar adımları ki online sənədləri təmin edəcək. Belə ki, narahat ehtiyac yoxdur hər kiçik texniki addım udma Mən bu gün burada ki. Amma bu kimi bir ekran almaq lazımdır. Mən gecə rejimi olmaq nə. Və hər şey şadlanmaq bilər gecə rejimi aradan tərəfindən. Və sonunda gün, siz görmək olacaq fayl areas-- bu üç əsas sol browser, üst qədər code Nişanlar, və altındakı terminal pəncərə. Mənə davam edək mənim ilk proqram yazmaq. Mən preemptively Fayl getmək üçün gedirəm Edin və hello.c kimi qeyd edin. Həqiqətən, Konvensiya tərəfindən, hər hansı bir proqram biz C dilində yazılı yazmaq bir şey adına olmalıdır Konvensiya tərəfindən dot c. Mən, çünki hello.c ad gedirəm Mən dünyaya salam demək istəyirəm. İndi zoom gedirəm həyata və Saxla basın. Mən indi burada bütün bir nişanı var olan I kodu yazılı başlaya bilərsiniz. Bu tərtib etmək niyyətində deyil. Bu heç bir şey deməkdir. Mən çevrilir hətta əgər adet sıfır və olanları bu, CPU heç bir gedir fikir ətrafında neler. Mən xətləri yazmaq əgər Amma uyğun yoxdur C conventions-- C olan ilə, Yenə də, bu kimi sintaksis ilə language-- Mən var və bu, salam printf vücuda rahat kazanılmış zamanla bunu. Mən Mən düşünmürəm hər hansı bir mətbəə səhvlər. Amma daim, ilk dəfə bunu, siz olacaq. Mən nə haqqında am nə çox bilər də sizin üçün ilk dəfə iş deyil. Və mükəmməl OK İndi, çünki siz Yalnız yenilik bir çox görə bilərsiniz, lakin zaman keçdikcə tanış dəfə bu ətraf mühit ilə və Bu dil, və başqaları hər şeyi görmək üçün başlamaq lazımdır ki, doğru və ya yanlış ya var. Bu nədir tədris yoldaşları və əlbəttə köməkçiləri artıq vaxt belə yaxşı almaq Sizin kodu səhvlər və ya hataları tespit. Amma ki, iddia var Bu kodu heç bir bugs var. Mən indi bu proqram run etmək istəyirəm. İndi öz Mac və ya PC, mən deyiləm ikiqat tıklayarak nişanlar vərdiş Mən bəzi proqram çalıştırmak üçün istədiyiniz zaman. Amma burada model deyil. CS50 IDE Bu mühitdə, edir. Biz bir əməliyyat istifadə olunur Linux adlı sistemi. Linux başqa xatırladan əməliyyat sistemi, ümumiyyətlə, məlum Unix kimi. Və Linux xüsusilə tanınır bir Command Line Environment, CLI olan. İndi biz bir xüsusi istifadə etdiyiniz Linux ləzzət Ubuntu çağırıb. Və Ubuntu sadəcə deyil Linux müəyyən versiyası. Lakin bu Linux-nin bu gün həqiqətən qrafik istifadəçi interfeys ilə gəlir. Və biz başına bir Burada istifadə web-based. Belə ki, bu hətta ola bilər bir şey az fərqli Özünüz ola bilər görüldü və ya keçmişdə axır. Mən irəli getmək üçün gedirəm indi və aşağıdakı. Mən hello.c kimi bu faylı xilas etdik. Mən irəli getmək üçün gedirəm və növü clanghello.c cingilti So C dili üçün bir compiler edir. Bu əvvəlcədən quraşdırılmış var CS50 IDE. Və tamamilə download və Öz Mac və ya PC bu edin. Amma, yenə də, siz bütün olmazdı pre-konfiqurasiya sizin üçün həyata. İndi Belə ki, mən yalnız deyiləm clanghello.c çalıştırmak üçün gedir. Və indi bu sintaksis qeyd burada nəhayət olacaq Mən bir Ben o deməkdir ki, həyata qovluq və ya kataloq İş çağırıb. Bu dollar işarəsi yalnız konvensiya deyil mənası, burada komutları yazın. Bu, sadəcə, bir tez deyirlər nə Konvensiyanın dollar əlamətidir. Və mən indi irəli getmək və əgər basın Daxil edin, heç bir şey baş görünür. Amma həqiqətən yaxşı bir şey deyil. az olur ekran, daha çox Sizin indeksi doğru olmaq, ən azı syntactically. Mən bu almaq istəyirsinizsə Belə ki proqram, mən nə etməliyəm? Bəli, bu çıxır ki, Konvensiya tərəfindən default adı Bir müəyyən deyil zaman proqramları Proqram yalnız a.out üçün ad. də bu sintaksis, siz lazımdır uzun əvvəl ilə tanış. Dot yalnız hey, CS50 deməkdir doğramaq IDE, a.out adlı proqram run ki, mənim cari kataloq daxilində var. Bu dot cari kataloq deməkdir. Və biz nə kimi digər ardıcıllığı görəcəksiniz simvol uzun əvvəl deməkdir. Belə ki, burada biz salam dünya daxil edin, getmək. Və nə oldu ki, görəcəksiniz? Bu salam dünya çap etmədi yalnız. O, həmçinin köçürülüb növbəti line kursor. Və niyə nə idi? biz əvvəl yazdığı kodu nə idi ki, təmin kursor verəcəklərini ifadə növbəti line getmək? təxminən Funny şey kompüter yalnız olacaq edir sözün nə siz bunu demək nə. Belə ki, salam printf demək əgər, vergül, məkan, dünya, yaxın quote, bu sözün yalnız olacaq bu simvol çap. Amma bu xüsusi xarakter idi sonunda, geri, backslash n. Və təmin budur xarakter getdi ki, Ekranın növbəti line. Əslində, mənə getmək və bunu bildirin. Mənə irəli getmək və bu silmək edək. İndi ki, qeyd Mənim ekranın üst var bir az qırmızı işıq da ifadə tab, hey, sizin fayl xilas etdik. Mən nəzarət davam gedirəm S və ya command S, faylı qeyd edin. İndi an yaşıl getdi goes--. Və indi geri var yalnız yaxın icon olan. İndi yenidən clanghello.c varsa, , Dot çizgi, a.out, daxil edin, Siz hələ də işləyib ki, görürsünüz. Amma arguably bir az arabası var. Hal-hazırda, mənim prompt-- iş, və sonra dollar işarəsi, və sonra mənim faktiki prompt-- bütün eyni xətt edir. Belə ki, bu, əlbəttə, bir estetik bug, hətta bu, həqiqətən məntiqi səhv deyil. Belə ki, mən yalnız nə geri gedirəm. Mən a.out təkrar gedirəm. Mən əlavə etdik edək newline xarakter geri. Mən fayl xilas etdik. Mən a.out təkrar gedirəm and-- dammit, bir səhv, səhv, yəni bir səhv. Belə bug ki, hətta baxmayaraq ki Mən n orada backslash əlavə yenidən xilas proqram yenidən qaçdı davranış eyni idi. Nə ola bilər? Mən, bir addım itkin alıram? Bu mühüm addım daha əvvəl var idi ki, Siz mənbə kodu dəyişdirmək zaman to--, bu da axır çıxır compiler vasitəsilə daha yeni maşın kodunu belə. Və maşın indeksi, adet sıfır və olanları, Demək olar ki, eyni olacaq, lakin mükəmməl, belə ki, biz lazımdır, çünki, əlbəttə ki, yeni xətt. Mən ehtiyac gedirəm, bu düzeltmek üçün Daxil, dot clanghello.c təkrar etmək , A.out doğramaq. İndi, salam dünya geri Mən gözləmək harada olmaq. Belə ki, bu bütün gözəl və yaxşı. Amma a.out bir üçün olduqca axmaq adı proqram, bu olur, baxmayaraq ki, tarixi səbəblərə görə, montaj nəticələr deməkdir ismarıcları. Amma mənə burada irəli gedək və fərqli bunu. Mən salam dünya proqramı istəyirəm həqiqətən salam adlanır. Belə ki, bir icon idi mənim desktop, bu a.out olmaz. Bu salam adlandırmaq olardı. Belə ki, bunu çıxır Cingilti ki, bir çox proqramlar kimi, , Command line dəlilləri dəstəkləyir və ya bayraqları, və ya açarları, sadəcə onun davranış təsir edir. Xüsusilə, cingilti bir dash o dəstəkləyir sonra ikinci söz edir bayraq. Bu halda, mən özbaşına lazımdır, lakin əsaslı, salam çağırırıq. Amma bir şey zəng edə bilər Mən a.out istisna olmaqla, istədiyiniz daha nöqtəsində başqa olardı. Və sonra yalnız adını daxil fayl I tərtib etmək istəyirəm. Belə ki, indi hətta əvvəlində baxmayaraq Mən hələ cingilti var komanda, komanda sonunda Mən hələ fayl var, İndi bu command line var dəlillər deyərək bu bayraqları, oh, yolu ilə, çıxış-o, bir fayl Biz default a.out, salam çağırıb. Mən hit əgər, heç bir şey indi daxil edin baş görünür. Və hələ, indi salam dot çizgi edə bilərsiniz. Belə ki, eyni proqram. adet sıfır və olanları günün sonunda eyni. Lakin onlar iki istəyirik müxtəlif fayllar var a.out, ilk versiyası və yalnız gic-gic adlı və indi salam olan bir çox bir proqram üçün daha çekici adı. Amma vicdanla, mən heç vaxt am yenə bu xatırlayıram gedir, və yenidən və yenidən. Və həqiqətən, biz yazmaq daha mürəkkəb proqramları, sen əmrləri yazmaq üçün gedir hətta almaq üçün gedir daha hələ mürəkkəb. Və belə narahat deyil. Belə çıxır ki, insanlar əvvəl Bizə çox onlar həyata Bu eyni problem var idi. Onlar da olan zövq vermədi , Kifayət qədər uzun, gizli komutları yazın Dursun onları xatırlayıram. Və bizdən əvvəl insanlar etdik daha asan digər proqramları proqram tərtib etmək. Və həqiqətən, belə bir proqram Make adlanır. Mən irəli getmək və bunu gedirəm. Mən hər şeyi geri gedirəm mən Yalnız bu şəkildə idi. Mənə LS yazın edək. Və üç görəcəksiniz hər şeyə a.out, və bir ulduz, salam bir ulduz, və hello.c və. Ümid edirəm ki, bu olmalıdır Bir az intuitiv olmaq kimi əvvəllər var idi insofar Bu iş heç bir şey. Mən heç bir şey yox idi biz sinif açılmış qədər yaratmışdır. Mən hello.c yaratmışdır. Mən onu tərtib və a.out çağırıb. Və sonra mən bir az yenidən tərtib fərqli və salam adlandırıb. Mən bu kataloq üç faylları, İş adlanan bu qovluqda. İndi mən də görə bilərsiniz Mən, həqiqətən, zoom əgər. Mən burada kiçiltmək Əgər ki, sağ üst tərəfdən baxmaq künc vəd kimi sol Ekranın tərəfdən həmişə göstərmək niyyətindədir Sizin hesab var, nə var CS50 IDE daxilində. Və üç faylları var. Mən salam və a.out xilas olmaq istəyirəm. Və siz bilər , Daxilən siz təsəvvür nəzarət klik sort bilər və ya sağ bu basın. Bu kiçik menyu açılır. Siz fayl yükləyə bilərsiniz, run Bu, önizleme, yenileyin, adını dəyişmək, və ya nə deyil. Mən yalnız silmək bilər, və getmək olardı. Amma bir komanda ilə hər şeyi edək İndi line, belə ki, rahat almaq üçün Bu və aşağıdakı. Mən irəli getmək və aradan qaldırılması üçün gedirəm sanki rma.out yazaraq a.out. Bu komanda üçün çıxır aradan qaldırılması və ya bir şey silmə aradan qaldırılması və ya silmək deyil. Bu, sadəcə saxlamaq üçün daha müfəssəl RM var Bəzi tuş vuruşlarını və Enter düyməsini basın. İndi biz bir qədər olacaq cryptically müntəzəm fayl a.out çıxarın. Mən, həqiqətən, nə bilmirəm qeyri-fayl hələ olacaq. Amma aradan qaldırılması üçün istəyirəm. Mən yes üçün y yazın gedirəm. Yoxsa mən onu yazın və Enter düyməsini basın bilər. Və yenə, heç bir şey görünür. Amma, ümumiyyətlə, yaxşı bir şey deyil. Mən bu dəfə LS yazın, Mən nə görmək lazımdır? Ümid edirəm ki, yalnız salam və hello.c. İndi kimi kənara, siz lazımdır , Ulduz bu ulduz qeyd, ki, mənim proqramları sonunda var. Və onlar da yaşıl qədər göstərir. Bu yalnız CS50 IDE yoldur Əslində sizi cluing of ki, mənbə kodu deyil. Ki, bir runnable bir yürütülebilir deyil Siz, həqiqətən, çalıştırabilirsiniz proqramı sonra dot çizgi bunu, və bu adı var. İndi mənə irəli getmək və aradan qaldırılması imkan Bu, salam rm daxil edin müntəzəm aradan qaldırılması Bəli, salam fayl. İndi, LS yazın əgər geri hello.c istəyirik. silmək üçün cəhd edin, sizin faktiki mənbə kodu. xüsusiyyətləri var baxmayaraq CS50 IDE harada daxil Siz revision tarixi ilə getmək olar və vaxtında əgər təsadüfən geri bir şey silmək, nəzərə nə bu komutları bəli və ya xeyr uyğun olaraq, Siz, həqiqətən, nə etmək istəyirəm nə. Mən üst qədər getmək əgər burada küncündə sol, hello.c bütün qalır. Belə dəstələri var digər əmrləri ki, Linux dünyada həyata keçirə bilər, biri yenə olun edir. Və biz etmək olacaq Mənim proqramı kimi edir. Əvəzində cingilti bunu, əvəzinə cingilti-o bunu, Mən sadəcə gedirəm sanki salam etmək yazın. İndi mən, qeyd hello.c etmək yazaraq deyil. Mən salam etmək yazaraq edirəm. Bu proqram əmin olun CS50 IDE, və daha çox ilə gəlir ümumiyyətlə Linux, bir proqram Hello adlı proqram etmək niyyətindədir. Bu, Konvensiyanın, güman olacaq Bu proqram edilə bilər ki, bir mənbədən ediləcək olacaq dot c bitən kodu fayl hello.c. Mən hit əgər indi bildiriş daxil edin icra olur komanda hətta artıq əslində daha əvvəl. biz sizin, çünki ki önceden CS50 IDE üçün ki, inşa bəzi əlavə funksiyalar biz yalnız hələ lazımdır, lakin tezliklə olacaq yoxdur. Amma əsas odur ki, həyata keçirmək üçün Mən Hello proqram var indi. Mən yenə LS yazın, mən Bir salam proqramımız var. Mən onu çalıştırabilirsiniz dot, yox, a.out doğramaq Bu bütün point, çünki həyata dot çizgi salam idi. İndi mən salam dünya proqramı. Belə ki, irəli hərəkət, biz yalnız demək olar ki, her zaman Bizim proqramları tərtib gedir komanda Make istifadə edərək. Və sonra biz onları run olacaq dot çizgi və proqramın adı. Amma bunu etmək nə dərk Siz, bir compiler özü deyil. Bu, sadəcə bir rahatlığı proqram ki, compiler tetiklemek üçün necə bilir Özünüz istifadə edə bilərsiniz, belə ki, çalıştırmak üçün. Hansı əmrləri mövcuddur Linux, və öz növbəsində CS50 IDE var? Biz tezliklə var ki, görəcəksiniz CD komanda, Change Directory. Bu ərzində sizə imkan verir Sizin command line interface geri irəli hərəkət, və, və müxtəlif qovluq açmaq siçan istifadə etmədən. siyahısı üçün dayanır gördük LS, cari kataloq faylları. Dir olun, siz yəqin ki, nəticə çıxarmaq başlamaq Bu kataloq etmək now-- demək nə, Bir qovluq yaratmaq istəyirsinizsə. aradan qaldırılması üçün RM, RM Dir üçün , Qovluğu daxil və bu aradan qaldırılması yenə command line var Siz nə ekvivalentləri Siçan ilə CS50 IDE edə bilər. Amma tezliklə tapa bilərsiniz ki, bəzən yalnız var sürətli bir çox etmək bir klaviatura ilə hər şeyi, və nəticədə bir çox daha güclü. Amma ki, mübahisə etmək çətindir bir şey bu günə qədər bunu etdik zaman bütün ki, bütün güclü biz salam dünya, IS deyərək etdik. Və əslində, mən hardcoded Mənim proqram salam dünya sözlər. heç bir dinamizm hələ yoxdur. Scratch gücündə bir sifariş idi daha maraqlı keçən həftə. Və belə ki, orada almaq imkan verir. tərəfindən olduğunu doğru bir addım edək Bu funksiyaların bəzi yol. Belə ki, yalnız C printf ilə gelir, digər funksiyaları və dəstələri olan bəzi görəcəyik Zamanla, bu deyil doğru ki, bütün asan istifadəçi daxil əldə qapısı. zəif Əslində, bir C kimi dil, və hətta Java və hələ digər bu deyil ki, kimi şeylər almaq üçün asan istifadəçilər, və ya strings, sözləri integers, və ifadələr, kimi tək şeylər edək point dəyərləri, və ya real nömrələri üzən həqiqətən decimal bal, və biz tezliklə görəcəksiniz kimi uzun nömrələri. Belə ki, burada funksiyaları bu siyahı, bu digər Scratch puzzle ədəd kimi biz CS50 əvvəlcədən quraşdırılmış ki, biz bir neçə həftə istifadə edəcəyik IDE təlim növ təkərlər, və nəticədə onları almaq, və baxmaq başlıq, bəlkə də, at altında bunlar necə həyata keçirilir. Amma bunu, edək həqiqətən bir proqram yazmaq. mənə indi davam edək. Mən yeni bir yaratmaq üçün gedirəm Bu kiçik plus tıklayarak fayl, və yeni fayl tıklayarak. Mən bu növbəti saxlamaq üçün gedirəm , Deyək kimi bir string.c, Mən strings ilə oynamaq istəyirəm, çünki. Və C string yalnız simvol bir ardıcıllıqla. Belə ki, indi davam edək və aşağıdakı. Əlavə standart IO.h-- və Bu standart IO çıxır IO yalnız giriş və çıxış deməkdir. Belə ki, çıxır ki, Burada bu xətt nədir printf istifadə bizə qonşu olunur. Printf, əlbəttə, çıxış istehsal edir. Belə ki, printf istifadə etmək üçün, bu çevrilir out kodu bu xətt var Sizin fayl üst. Və biz geri gəlmək lazımdır nə ki, həqiqətən uzun əvvəl deməkdir. Bu ki, çıxır Mən yazmaq hər hansı bir C proqram, Mən başlamaq üçün var bu kimi görünür kodu. Və CS50 IDE bildiriş və lazımdır digər inteqrasiya inkişaf bu kimi mühit, ən yaxşı cəhd edir onlar sizin fikir başa bilər. Əslində, bir an əvvəl geri əgər Mən nə, mən Enter düyməsini basın. Mən açıq buruq edib brace yenidən Enter düyməsini basın. Və bu, mənim fikir tamamladı. Bu, mənə yeni xətt verdi az girintili gözəl üslub səbəblərdən görəcəyik. Və sonra avtomatik olaraq mənə verdi ki, buruq brace mənim fikir başa çatdırmaq üçün. İndi, bu həmişə deyil Siz istədiyiniz nə danışarlar. Amma böyük bir hissəsi, yoxdur bəzi tuş vuruşlarını edin. Belə ki, bir an əvvəl biz bu proqram qaçdı hello, dünya, və sonra tərtib, və sonra qaçdı. Amma heç bir dinamizm burada var. biz istəyirdi nə fərqli bir şey? Bəli, Mən, həqiqətən, nə istəyirdi istifadəçi bir string almaq? Mən puzzle parça istifadə gedirəm string almaq that-- dəqiq çağırıb. C çıxır istəmirəm zaman bir puzzle parça daxil təmin etmək, və ya daha düzgün bir funksiyası, siz sözün yalnız açıq mötərizə etmək yaxın mötərizə. var sanki Belə ki, var ağ qutusuna yazın. demək blok əvvəl bir az ağ qutusu idi. Biz indi ağ qutusu yoxdur. Amma get simli zəng zaman, mən haradasa nəticə qoymaq istəyirik. Belə ki, C bir çox ümumi paradiqma edir Burada get string kimi bir funksiyası zəng, və sonra onun qaytarılması dəyəri saxlamaq. Bu nəticəsi onun bir şey səy. Və nə proqramlaşdırma tikintisi, C indi Not ya olsun, biz ki, həqiqətən, bir şey saxlamaq üçün istifadə edə bilərsiniz? sağ, bir dəyişən adlanır? Və Not, biz, həqiqətən deyil dəyişənlərin gedirdi nə qayğı. Amma bu halda, biz, həqiqətən, yoxdur. Mən simli demək gedirəm. Və sonra mən zəng edə bilər Mən istəyirəm bu bir şey. Mən zəng etmək üçün gedirəm adı, string almaq olur. İndi etdiyiniz hətta əgər bu bir az yeni, Mən bəzi detal yoxdur edirəm ki, görürsünüz. Mən yarı kolon unutmadan alıram. Mən bu fikir bitirmək lazımdır. Mən mənim kursor hərəkət etmək üçün gedirəm və orada yarı kolon edib. Mən yalnız nə etmişəm? kodu bu xətti, hazırda sayı 5, Mən heç bir giriş ilə get simli zəng edirəm. Belə ki, heç kiçik ağ var Save blok var kimi qutusu. Mən yalnız hey, deyirəm kompüter, mənə bir string almaq. bərabər işarəsi həqiqətən deyil bərabər işarəsi, per se. Bu tapşırıq var deməkdir operator, hey, kompüter, dəyəri hərəkət sol üzərində sağ. Sol, mən aşağıdakı var. Hey, kompüter, mənə string vermək simvol bir ardıcıllıqla. Və string adı çağırırıq. Mən hətta Adı zəng yoxdur. Mən şərti, zəng edə bilər, S kimi bir şey, biz Mən istifadə çox kimi dəyişən i zəng. Amma indi bu bir şey etmək lazımdır. Bu olduqca axmaq olardı çalışan, bu kodu tərtib cəhd bu proqram olsa Mən bir simli alıram, yalnız hələ, çünki salam dünya demək gedir. Amma bu dəyişə nə istəyirəm əgər. Niyə bu yoxdur? Yüzdə s, vergül s. Bu hələ bir az sirli edir. Belə ki, mənim dəyişənlərin daha aydın edək. oxşar dəyişən ad edək. Və biz sataşmaq edə bilməz, əgər nin görək ayrı burada neler. Belə ki, xətt beş, Mən bir simli alıram. Mən ki, simli saxlanılması alıram, nə istifadəçi tipli onun klaviatura, Adı adlı dəyişən. Və bu çıxır ki, printf yalnız deyil ikiqat bir mübahisə edirlər quotes, ikiqat quotes bir giriş. Bu iki və ya üç və ya daha çox, belə edə bilərsiniz ikinci və ya üçüncü, ya dördüncü ki, dəyişənlərin bütün adları, və ya xüsusi, dəyərlər Siz daxil plug istəyirəm ki, dinamik quotes ki, simli. Başqa sözlə, nə bu yanlış ola bilər? Mən yalnız etdi salam adı, backslash n, mənim fayl xilas mənim kodu tərtib və bu qaçdı, nə olardı? Bu, sadəcə salam demək olacaq sanki N-A-M-E, adı, hansı növ axmaq, çünki dünyanın heç bir fərqli. Belə ki, quotes bir şey deyil nə sözün çap olur. Mən istəyirəm əgər bir tutucu, Mən, həqiqətən, istifadə etmək lazımdır bəzi xüsusi syntax. Əgər oxumaq əgər çıxır printf funksiyası üçün sənədləşdirmə, bu sizə xəbər verəcəkdir Siz faiz s istifadə əgər, aşağıdakı kimi bir dəyər əvəz edə bilərsiniz. sonra bir vergül sonra ikiqat quote, sadəcə adını yazmaq Istədiyiniz dəyişən ki, formatında plug kodu və ya format belirteci, faiz s strings üçün. İndi, mənim fayl xilas etdik əgər Mən terminal aşağı geri. Mən String olun yazın, çünki bu yenidən adı Mən əvvəl seçdi fayl string.c edir. Mən daxil String etmək demək gedirəm. yaxşılıq mənim Oh, bütün baxmaq səhvlər biz artıq etdik. Və bu həqiqətən nə, is-- altı, yeddi line proqram kimi? Belə ki, bu harada çox can var tez böyük əldə. Bu terminal pəncərə var İndi yalnız mədəsindən geri qaytardı səhv bir çox. Şübhəsiz ki, mən daha çox səhv yoxdur Məndən messages kodu xətləri var. Belə ki, nə baş verir? Yaxşı, ən yaxşı strategiya istədiyiniz zaman nə böyük qarşılaşa yoxdur kimi səhvlərin siyahısı geri hərəkət edir, komanda axtarmaq yalnız qaçdı mənim halda olan simli olun. etdi etmək nə baxın ki, ki uzun cingilti komanda, heç bir böyük. Amma qırmızı pis. Green olmağa çalışır incə və faydalı. Amma bu halda, hələ də pis. Amma pis deyil? String.c, line beş, karakter beş. Belə ki, bu yalnız ümumi konvensiya var. Something colon şey deməkdir line sayı və xarakteri nömrəsi. Error, qeydiyyatdan kənar xarici istifadə identifikatoru string. Siz standart demək mi? Belə ki, təəssüf ki, cingilti faydalı olmağa çalışır. Amma bu halda, yanlış. Xeyr, cingilti, mən standart IO demək deyil. Bəli, xətti biri idi. Amma line beş burada bu biridir. Və cingilti deyil S-T-R-I-N-G başa düşürük. Bu elan olunmamış identifikator, bir var bu, yalnız əvvəl görüldü heç vaxt söz. Və C, çünki, dil var biz indi kodu yazıyoruz strings adlı dəyişənlər yoxdur. Bu default, dəstəyi ilə deyil bir şey bir simli çağırıb. Bu bir CS50 parça var jargon, lakin çox şərti. Aşağıdakı kimi Amma bu düzeltebilirsiniz. Mən kodu bir line əlavə edin Bu proqram üst, başqa fayl CS50.h daxildir haradasa CS50 IDE daxilində haradasa sabit, belə danışmaq, Ubuntu əməliyyat sistemi Mən çalışan alıram ki, ki, fayl var əməliyyat öyrətmək üçün gedir simli nə sistem yalnız standart io.h kimi fayl əməliyyat sistemi nə printf onu öyrətmək üçün gedir. Həqiqətən, biz kazanılmış olardı bir çox oxşar mesaj IO standart qəbul əgər Io.h və printf istifadə etməyə cəhd. Mən irəli və yalnız getmək üçün gedirəm Mənim ekran sil Control L almaq. Yoxsa aydın yazın və olacaq yalnız terminal pəncərə sil. Amma siz hələ vaxt geri hərəkət edə bilər. Mən String olun təkrar gedirəm. Daxil edin mənim barmaqlarını bu dəfə keçir. Allahım Oh, o, işləyib. mənə uzun sirli komanda göstərir ki, nə cingilti vasitəsilə yaradılan olun lakin heç bir səhv messages. Belə ki, baxmayaraq ki, həyata Siz tamamilə əldə edə bilər ilə overwhelmed səhv sayı yalnız bu annoying Cascading ola bilər Cingilti anlamır təsiri sonra onu deməkdir ki, bir şey, Növbəti sözü dərk etmir, və ya növbəti line. Və belə ki, yalnız kodunu şoklar. Amma fix sadə ola bilər. Və belə ki, həmişə diqqət çıxdı ilk line. Və siz əgər onu anlamaq, yalnız baxmaq açar sözlər, üçün ola bilər ipuçları və line sayı, və xarakteri, harada ki, səhv ola bilər. İndi mənə irəli getmək və yazın imkan dot daxil edin, simli doğramaq. Hm, bu salam bir şey deyən deyil. Niyə? Yaxşı, harada çalışan, geri? Bu yəqin ki, hazırda vurulmuş oldu bir loop, xətti altı on, Siz, dizayn String alın, çünki, CS50 heyəti tərəfindən yazılı, sözün yalnız oturmaq üçün nəzərdə tutulmuşdur orada gözləyir, və gözləmə, və simli gözləyir. biz simli demək bütün insan daxil edir. Belə ki, nə? Mənə davam edək. Və yalnız bir şıltaqlıq, mənə imkan Mənim adı, David yazın daxil edin. İndi bir daha dinamik proqram var. Bu salam David bildirib. Mən irəli getmək və yenə bu çalıştırıyorsanız, Mənə daxil edin Zamila adını demək edək. İndi biz dinamik proqram var. Mən ağır dünyaya kodlu deyil. Mən ağır kodlu deyil adı, və ya David, ya Zamila. İndi proqramları kimi daha çox var Bu giriş əgər biz burada bilirik Bu qədər müxtəlif çıxış istehsal edir. İndi bu yaxşı deyil istifadəçi təcrübəsi, və ya UX. Mən proqramı. Mən güman edirəm nə bilmirəm Mən, həqiqətən, baxmaq halda, nə üçün və ya kodunu xatırlayıram. Belə ki, istifadəçi edək bir az daha yaxşı təcrübə şeyi sadə ilə. oxşar geri gedək proqram, və sadəcə printf demək. Və mənə irəli getmək və adı, kolon deyək və yer, və sonra yarı kolon. Və yalnız kicks üçün, heç bir boşluq n. Və, qəsdən deyil Mən istəmirəm, çünki tez növbəti line hərəkət etmək. Mən simli etmək əvəzinə, bunu istəyirəm yeni maşın mənim kodu compile code dot simli doğramaq. Ah, bu qədər cazibədar və gözəl edir. İndi həqiqətən nə kompüter bilmək Mənə nə bir ad vermək istəyir. Mən irəli getmək və yazın gedirəm Rob da, salam Rob daxil edin və. Belə ki, bu ilin sonunda, hələ də, həyata gün, yalnız bir doqquz line proqram. Amma biz bu körpə addımlar etdik. Biz bir xətt yazdığı biz tanış, printf, salam dünya idi. Sonra biz bir az undid. Və biz, həqiqətən, get string istifadə olunur. Və biz bir dəyişən ki, dəyəri atdı. Və sonra biz önə keçdi və təkmilləşdirilmiş Bu üçüncü xətti ilə daha. Və bu iterativ proses proqram yazılı həqiqətən vacibdir. CS50, və ümumiyyətlə həyat, ümumiyyətlə, aşağı oturmaq lazım deyil nəzərə bir proqram var və yazı cəhd bütün bir dəfə bütün lənətləmək şey. Bu, istər-istəməz, yol səbəb olacaq özümüz burada gördüm biz daha çox səhvlər. Hətta mən bu günə qədər daim digər axmaq səhvlər, həqiqətən çətindir səhvlər var anlamaq çətindir ki. Amma daha çox səhvlər daha çox olacaq kod xətləri bir dəfə bütün yazın. Və bu təcrübə kod bir az yazmaq Siz rahat istəyirik ki, tərtib Bu, run ümumiyyətlə test sonra biz saxlanılır, belə ki, kimi Us hərəkət layering və son həftə layering, bir şey bina çox daha mürəkkəb bir şey sadə, Burada eyni. aşağı oturmaq və cəhd etməyin bütün problem yazın. Əslində bu körpə addımlar. İndi strings bütün deyil özləri yanına faydalı. Biz kimi, ideal, həqiqətən istədiyiniz Bizim Toolbar başqa bir şey var. Belə ki, həqiqətən məhz bunu edək. Mənə indi irəli getmək və qızışdırmaq edək bir az fərqli proqram. Və biz tam üçün, bu int.c zəng edəcəyik. Mən eyni, gedirəm, CS550.h daxildir. Mən standart IO daxil gedirəm. Və olduqca ümumi olacaq sinif bu ilk bir neçə gün. Mən hazır gedirəm özümü əsas funksiyası ilə. İndi əvəzinə simli almaq, Nin irəli getmək və bir int əldə edək. nin i zəng edək və bu almaq zəng int yaxın parens yarı kolon. İndi nə edək bu bir şey, printf. nin kimi bir şey demək edək salam, backslash n, vergül i. Mən olduqca çox imitasiya alıram Mən yalnız bir an əvvəl nə. Mən burada bir tutucu var. Mən istəyirəm, çünki mən, burada vergül var ki, tutucu i yerləşdirin. Belə ki, irəli getmək və cəhd edək Bu proqram tərtib. Fayl int.c. adlanır Mən daxil int etmək, demək gedirəm. Pərvərdigara, lakin heç bir böyük, sağ? bir səhv var. bir sintaktik səhv var Burada belə ki, proqram bilməz int.c xətti daxilində tərtib yeddi, karakter 27, səhv format növü char müəyyən ki, nə, ulduz. Amma dəlil növü int edir. Da biz Belə ki, burada to-- fikrində deyilik Bu gün maddi bir çox olsa da, Biz sizə qorxudaraq olacaq tamamilə C hər bir xüsusiyyət, və daha çox, ümumiyyətlə proqramlaşdırma yalnız bu ilk bir neçə həftə. Belə ki, tez-tez jargon var olacaq hansı ilə tanış deyilik. Və əslində, char ulduz bir şey deyil biz geri gəlmək olacaq bir həftə və ya iki vaxt. Amma indi, biz əgər nin görək tanış sözləri analiz. Formats-- biz format eşitdim belirteci, format kodu əvvəl. Bu tanış deyil. Tipli lakin dəlil növü int var. Bir dəqiqə gözləyin, i bir int edir. həqiqətən Bəlkə faiz s bəzi müəyyən mənası var. Və həqiqətən, yoxdur. Bir tam, əgər siz onu əvəz etmək üçün printf, Siz, həqiqətən, bir istifadə etmək müxtəlif format belirteci. Və bu bilmirəm halda kimsə sizə dedim və ya əvvəl etmişdi. Amma faiz mən nə çox istifadə edilə bilər bir tam sayede üçün printf edir. Siz həmçinin faiz istifadə edə bilərsiniz bir bu tam üçün d. Amma burada gözəl və sadədir. Beləliklə, biz ki, getmək lazımdır. İndi mənə irəli gedək və təkrar etmək int daxil edin. Bu, heç bir səhvlər yaxşı. Dot, int OK, pis user experience doğramaq Mən özümü bildirib, çünki nə. Amma ki, gözəl var. Mən tez tutmaq alıram. İndi mənə irəli getmək və David, OK, Zamila, Rob yazın. OK, belə ki, bu yaxşı bir şey deyil. Bu dəfə mən bir funksiyası istifadə edirəm get int adlı puzzle parça. Və çıxır və biz lazımdır term-- bu sonra görəcəksiniz CS50 heyəti həyata keçirdi belə bir şəkildə simli almaq ki, yalnız fiziki edəcək Sizin üçün bir string almaq. Bu, get int həyata keçirdi Belə bir yol ki, yalnız edəcək sizin üçün bir tam almaq. Və əgər, insan, əməkdaşlıq deyil, bu, sözün yalnız gedir , Yeniden, yeniden yeniden demək sanki qədər loop orada oturan Bəzi sehrli sayı məcbur, 50 və 50 salam kimi. Yoxsa biz yenə bu run əgər və növü 42, 42 salam. Və get int funksiyası ki, puzzle parça daxili kifayət qədər məntiq, kifayət qədər fikir, anlamaq üçün, bir söz nədir? Və bir sıra nədir? Yalnız nəticədə, nömrələri, qəbul. Belə ki, bu çıxır ki, bütün ifadəli deyil. indiyə qədər. Belə ki, yay, son dəfə biz olduqca tez getdi həyata oyunlar və animasiya, Not və bədii əsərləri. Və burada, biz content olunur salam dünya və 50 salam ilə. Bu bütün ruhlandırıcı deyil. Və həqiqətən, bu ilk bir neçə nümunələri bir az zaman alacaq həyəcan ramp. Amma biz çox daha çox var Əslində, indi nəzarət. Və biz olacaq çox tez layering başlamaq Bu əsas primitives üst. Lakin ilk, bu anlamaq imkan məhdudiyyətlər var nə. şeyi Əslində, bir Scratch asanlıqla deyil baxmaq, həqiqətən, bizə nə edək başlıq altında, və nə anlamaq kompüter, bunu edə bilər nə var və məhdudiyyətlər nə var. Və həqiqətən, çatışmazlığı anlaşma, potensial uzunmüddətli öz səhvlər yazılı gətirib çıxara bilər etibarsız proqram yazılı bugs ki, bir şəkildə Hesabıma girildi olur. Belə ki, doğru bəzi addımlar imkan bu bir az daha yaxşı dərk , Yolu aşağıdakı nümunə deyirlər. Mən irəli getmək və həyata keçirilməsi üçün gedirəm Gürzə adlı proqram real sürətli. Kimi, birlikdə bir ədəd əlavə edək. Mən bəzi guşələrindən kod gedirəm burada və yalnız surəti və yapışdırıb Mən yalnız əvvəl idi belə ki, biz tez gedir əldə edə bilərsiniz. İndi Mən əsas yaranma var Gürzə adlı proqram. Və irəli getmək və bunu bildirin. Mən irəli getmək üçün gedirəm və demək, intx int almaq olur. Və nə bilirik? nin daha yaxşı bir istifadəçi experience edək. Belə ki, yalnız x və səmərəli deyək istifadəçi təklif bizə x vermək. Və sonra mənə printf, irəli getmək və deyək necə y haqqında, bu dəfə gözləyirik istifadəçi iki dəyərlər. Və sonra, yalnız irəli getmək və demək, printf, x və y cəmidir. İndi yüzdə s etmək istəmirəm. Mən faiz etmək istəyirəm, backslash n, sonra məbləği dəyər yerləşdirin. Belə ki, necə bunu barədə getmək olar? Siz nə bilirik? Mən dəyişənlərin necə istifadə bilirik. Mənə yalnız yeni bir, int z elan edək. Mən burada bir tahmin etmək gedirəm. Bu bərabər əlamətləri varsa dil, bəlkə mən x plus y edə yalnız bilər, belə uzun mənim son olaraq yarı-nöqtə ilə fikir? İndi, aşağı burada geri z plug bilər, yarı-nöqtə ilə bu fikir tamamlayın. Və bu halda, indi görək xətləri X ardıcıllığı int almaq. Y int almaq. , X və y əlavə dəyər saxlamaq z-- Belə ki, daha bərabər işarəsi xatırlayıram bərabər deyil. Bu sağdan sola tapşırıq var. Və məbləğ ki, çap edək x və y, sözün z deyil lakin z daxilində nə var. Belə ki, gürzə edək - gözəl, səhvsiz bu dəfə. Dot, gürzə daxil doğramaq x 1 olacaq. Y 2 olacaq. Və x və y məbləği 3. Belə ki, bütün gözəl və yaxşı. Belə ki, riyaziyyat təsəvvür bu kimi bir proqram işləməlidir. Amma nə bilirik? Bu dəyişən line edir 12, hətta lazım? Siz vərdiş almaq üçün ehtiyac yoxdur yalnız dəyişənlərin şeyi saxlanılması yalnız çünki. Və əslində, bu, ümumiyyətlə, var hesab pis dizayn Bir dəyişən yaratmaq varsa, adlı Bu halda z, bu bir şey saxlanılması, və sonra dərhal lakin heç vaxt yenidən istifadə. Niyə bir şey bir ad vermək z kimi sözün əgər ki, istifadə etmək niyyətində şey yalnız bir dəfə, və Yaratdığınız harada proksimal ilk növbədə bu, kodu xətləri baxımından çox yaxın? Belə ki, nə? Bu C olduqca çevik çıxır. Mən, həqiqətən, istəyirsinizsə plug-in dəyərlər burada, Mən yeni dəyişən elan etmək lazım deyil. Mən yalnız plug-in bilər x plus y, C anlayır, çünki hesab və riyazi operatorları. Mən sadəcə, bu math edə, demək olar x plus y, o dəyərlər nə olursa olsun, nəticəsində plug ki, simli daxil tam. Belə ki, bu, baxmayaraq ki, ola bilər, yalnız bir xətt qısa, Daha yaxşı dizayn, daha yaxşı proqram, az code Buna görə də, var, çünki Mənə anlamaq üçün azdır. Və bu da yalnız təmiz biz deyilik insofar kimi yeni sözlər təqdim, yeni simvollar, z kimi, baxmayaraq ki, onlar həqiqətən deyil məqsədi çox xidmət edir. Təəssüf ki, riyaziyyat deyil bütün etibarlı bəzən. Nin irəli getmək və bunu edək. Mən irəli getmək üçün gedirəm indi və aşağıdakı. printf, yüzdə i, plus faiz edək i, yüzdə i, backslash n olacaq. Mən şeylərdir xyx plus y gedirəm. Mən yalnız yeniden yazmaq üçün gedirəm bu bir az fərqli burada. Mənə yalnız tez ağlı başında olma çek edək. Yenə nin irəlidə özümüz almaq deyil bildirin. gürzə, dot çizgi gürzə olun. x 1, y 2, 1 plus 2 3 edir. Belə ki, yaxşı. Amma indi bu mürəkkəbləşdirmək imkan bir az, və yeni bir fayl yaratmaq. Mən bu bir zəng etmək üçün gedirəm, ints, integers üçün cəm, deyirlər. Mən bir an əvvəl olduğu mənə başlamaq edək. Amma indi bir neçə digər xətləri edək. Mənə irəli getmək və aşağıdakı edək printf, yüzdə i, minus faiz i, faiz i, vergül x, vergül YX minus y edir. Mən bir az edirəm orada müxtəlif math. nin başqa bir edək. Belə ki, faiz i dəfə faiz i faiz i, backslash n. nin plug-in X, və y, və x dəfə y edək. Biz ulduz istifadə edəcəyik dəfə kompüter. Siz X istifadə etməyin. x Burada dəyişən adı. Siz vurma üçün ulduz istifadə edin. daha bir edək. Printf faiz Mən bölünür faiz I, faiz i backslash n. xy y-- bölünür belə ki, C irəli çizgi istifadə bölgüsü yoxdur. Və digər bir nə edək. faiz i qalan bölünür faiz I, yüzdə i. xy-- və indi qalan üzərində sol nə edir. Bir bölünməsi çalıştığınızda bir surət daxil məxrəc, ki, artıq qalıb nə qədər Siz bölmək bilməz? Belə ki, həqiqətən yoxdur mütləq simvolu biz bu grade məktəb istifadə etdik. Amma C. Siz demək x modulo y, harada Bu kontekstdə bu faiz işarəsi dolaşıq daxili olduğunuzda ikiqat quotes, printf ki, faiz daxili format belirteci kimi istifadə olunur. Siz kənarda faizini istifadə edərkən riyazi ifadə ki, Bu modul üçün modulo operator var bizim üçün arithmetic-- Burada yalnız o deməkdir ki, nə x qalan y bölünür? y bölünür x So x çizgi y edir. y bölünür x qalan nədir? bir proqramçı deyərdim ki, mod y x var. Mən burada heç bir səhvlər Belə ki, mənə imkan irəli getmək və cəm ints, gözəl etmək, və dot çizgi ints. Və irəli getmək və Bunu, bu, 1, 10 deyək. Bütün sağ, 1 plus 10 çek 11. 1 minus 10 yoxlamaq, mənfi 9. 1 dəfə 10 çek 10. 1 10 is-- bölünür OK, biz bir keçmək lazımdır. 10 bölünür 1 qalan 1. Bu doğru deyil. Amma burada bir səhv var. Belə ki, bir mən qoymaq mənim doğru deyil, təhvil. Hesab edirəm ki, 0 yaxın deməkdir. biz əgər 10 bölünür 1, bilirsiniz, bəzi guşələrindən kəsici, əmin, bu sıfır var. Amma həqiqətən, 1/10 olmalıdır 0.1 və ya 0.10, 0,1000 və ya s. Bu, həqiqətən sıfır olmamalıdır. Bəli, bu kompüter çıxır ki, sanki bunu biz bunu izah. Biz y bölünür x kimi riyaziyyat edirik. Və xətləri hər iki x və y, kodu əvvəllər tam ədədlərdir. Bundan əlavə, xətt 15-də biz izah printf, hey, printf plug-in tam, plug-in bir tam, plug-in bir integer-- xüsusi x, və sonra y, və sonra x y bölünür. x və y ints var. Biz orada yaxşı deyilik. Amma x x nə bölünür? x y olmalıdır bölünür, riyazi, 1/10 və ya 0,1, hansı bir real sayı, bir real sayı Potensial, bir decimal point olan. Bu tam deyil. Amma yaxın nə 1/10, və ya 0.1 üçün tam? Bəli, bu cür sıfır. 0.1 bu qədər kimi. Və 1 Bu qədər. Belə ki, 1/10 yaxın 0 Bu bir daha. Və C us-- üçün nə cür biz bunu to-- bildirib, çünki ki, tam truncating edir. Bu yenidən dəyər alaraq 0.1000 kimi bir şey olması ehtimal, 0 və s. Və hər şeyi truncating oldu bu kəsir sonra Bu ki, bütün belə stuff, bu deyil, çünki , Bir tam anlayışı uyğun olan 1, 0, 1 mənfi kimi yalnız bir sıra deyil yuxarı və aşağı, hər şey üz salır çünki bu kəsir sonra decimal point uyğun bilməz müəyyən bir tam. Belə ki, burada cavab sıfır. Belə ki, necə biz bu düzeltmek üçün nə etməliyəm? Biz bütün birlikdə başqa bir həll lazımdır. aşağıdakı Və biz bunu edə bilərsiniz. Mənə davam edək və yeni yaratmaq fayl, bu floats.c çağırıb. Və burada qeyd edin Eyni directory, float.c. Və mənə irəli getmək və surəti imkan əvvəlki kod bəzi. Amma əldə bir int, bunu edək. Mənə bir üzən point dəyər verin x çağırıb. harada üzən point dəyəri yalnız sözün üzən nöqtə ilə bir şey. Bu sağ, sol hərəkət edə bilər. Bu real sayı var. Və mənə deyil zəng edək int almaq, ancaq float almaq, həmçinin menyu arasında idi C250 kitabxana variantları. Bir float y dəyişdirmək edək. Belə ki, bu float almaq olur. İndi, biz ints plug istəmirəm. Bu faiz istifadə etmək lazımdır çıxır float üçün f, float üçün faiz f, və indi edin. İndi, barmaqlarını keçib etmək üzüb gedirdi, gözəl, dot çizgi üzüb gedirdi. x bir 1. y olacaq yenə 10 olacaq. Və gözəl, OK mənim əlavə doğru deyil. Mən daha çox ümid oldu ancaq yazmaq unuttum. Belə ki, getmək və bu məntiqi səhv düzeltmek bildirin. Nin irəli getmək və aşağıdakı qamarlamaq edək. Biz yalnız bir az surəti və yapışdırıb edəcəyik. Mən minus demək gedirəm. Mən dəfə demək gedirəm. Mən bölünür demək gedirəm. Mən modulo etmək niyyətində deyiləm ki, burada kimi ilgili deyil f bölünür, və dəfə plus OK, Bunu yenidən edək. Olun üzüb gedirdi, dot çizgi üzüb gedirdi, 1, 10, and-- gözəl, yox, OK. Mən bir idiot deyiləm. Belə ki, bu çox ümumi kompüter oxşar axmaq səhvlər etmək. pedaqoji məqsədləri üçün, nə mən, həqiqətən etmək istəyirdi Burada elm dəyişiklik idi Plus, mənfi, dəfə, və inşallah sizin kimi, bölmək Bu Manevr zamanı gördük. Belə ki, indi bu yenidən tərtib edək proqram, dot çizgi üzüb gedirdi yoxdur. Və üçüncü dəfə, edək mənim gözləntiləri cavab oldu. 1, 10, 1000, OK, bəli, daxil, 10.000 bölünür, 0,100000 edir. Və biz nəzarət edə bilərsiniz çıxır neçə nömrələri həmin decimal bal sonra. Biz, həqiqətən, olacaq. Biz geri gəlmək lazımdır. Amma indi, əslində, riyaziyyat doğrudur. Belə ki, daha, paket burada nə var? Bu C var çıxır ki, Biz yalnız əslində strings-- və Həqiqətən yoxdur, çünki biz CS50 kitabxana olanlar əlavə edin. Amma yalnız ints yoxdur. də üzüb gedirdi var. Və digər məlumatlar bir dəstə çıxır növləri də biz uzun əvvəl istifadə edəcəyik ki. Bir istəyirsinizsə çıxır simvol xarakteri deyil, simli, Yalnız bir char istifadə edə bilərsiniz. Bir bool istəyirsinizsə çıxır ki, yalnız doğru və ya yalan bir Boolean dəyəri, CS50 kitabxana sayəsində, biz sizin eləcə də C bool data növü əlavə edib. Lakin bu da təqdim edir bir çox digər dillərdə həmçinin. Və bəzən sizə çıxır sonra default gəlmək böyük nömrələri lazımdır ints və üzüb gedirdi ilə. Və əslində, ikiqat bir sıra ki 32 bit, lakin 64 bit istifadə edir. Və uzun uzun bir sıra ki, Deyil, 32 bit lakin 64 bit istifadə edir müvafiq olaraq, üzən point müvafiq dəyərlər və integers. Belə ki, indi həqiqətən edək fəaliyyət görürük. Mən burada irəli getmək üçün gedirəm və başqa bir proqram qızışdırmaq. Burada mən irəli getmək üçün gedirəm və cs50.h. daxildir yoxdur Və mənə gedək, daxildir Standart io.h. Və bir şey görəcəksiniz funky burada baş verir. Bu şeyi kodlaşdırma rəng deyil əvvəl olduğu kimi eyni şəkildə. Və bu mən var, çıxır şey bir fayl adı verilmiş deyil. Mən bu bir zəng etmək üçün gedirəm sizeof.c və Saxla edib. Və mənim çox nə görürsünüz qara fonunda ağ kodu. İndi ən azı var bəzi orada bənövşəyi. Bu syntax vurgulanır. , Sadəcə, mən var ki, var fayl növü IDE bildirib Bu bir ad verərək və xüsusi bir fayl uzantısı. İndi irəli getmək və bunu bildirin. Mən irəli və çox getmək üçün gedirəm sadəcə aşağıdakı kimidir bool çap faiz LU edir. Biz geri gəlmək lazımdır yalnız bir anda ki. Və sonra mən gedirəm bool çap ölçüsü. İndi, yalnız saxlamaq üçün özüm bir müddət, mən bir bütün edəcəyimiz bir dəfə bu dəstə. Və xüsusilə, mən gedirəm bir char və char bu dəyişir. Bu, mən dəyişdirmək üçün gedirəm ikiqat və ikiqat. Bu, mən dəyişdirmək üçün gedirəm bir float və bir float. Bu, mən gedirəm bir int və bir int dəyişdirmək. Və bu, mən gedirəm uzun uzun dəyişdirmək üçün. Və hələ də alaraq Uzun müddət, uzun uzun. Və sonra, nəhayət, verdim özümü bir çox, simli. Bu C var çıxır ki, adlı xüsusi operator ki, ölçüsü sözün var Zaman çalıştırmak üçün gedir, bizə ölçüsü demək bu dəyişənlərin hər. Bu, indi bir yoldur Biz geri qoşula bilər Keçən həftə müzakirə məlumat və nümayəndəliyinin. Mənə davam və tərtib edək dot çizgi ölçüsü ölçüsü. Və nin görək. Bu C çıxır ki, xüsusi CS50 IDE haqqında, xüsusi on əməliyyat sistemi Ubuntu, 64-bit əməliyyat olan bu halda sistem, bir bool gedir yer bir byte istifadə edin. Ölçüsü ölçülür necə, Biz bit, lakin bayt. Və bir byte səkkiz bit olduğunu xatırlayıram. Belə ki, bir bool, hətta baxmayaraq texniki lazımdır bir 0 və ya 1, bir az israfçı var necə biz bunu həyata etdik. Bu, həqiqətən bir bütün istifadə etmək olacaq byte-- bütün adet sıfır, bəlkə var kimi bütün olanları, və ya bir şey, və ya yalnız bir 1 səkkiz bit arasında. A char, eyni zamanda, bir xarakter üçün istifadə son həftədə bir Ascii xarakter kimi, bir xarakter olacaq. Və bizim anlayışı ilə synchs Bu, daha çox 256 bits-- olan Bu, heç bir olan synchs up artıq 8 bit olan Bizə bir çox 256 kimi dəyərlər verir. A ikiqat gedir 8 bayt və ya 64 bit ola bilər. A float 4. Bir int 4. A uzun, uzun 8. Və simli 8. Amma bu barədə narahat olmayın. Biz bu qat geri soymaq olacaq. Bu strings bilərsiniz çıxır 8 bayt artıq ola bilər. Və həqiqətən, biz yazdıq artıq strings, salam dünya, 8 bayt artıq. Amma biz geri gəlmək lazımdır yalnız bir anda ki. Amma üz burada aşağıdakılardan edir. Hər hansı bir kompüter yalnız məhdud var yaddaş və məkan məbləği. Siz yalnız bir çox saxlaya bilərsiniz Mac və ya PC faylları. Siz yalnız çox proqramlar bilərsiniz RAM hətta mütləq bir dəfə çalışan virtual yaddaş, çünki Siz RAM məhdud miqdarı var. Və yalnız əgər picture-- üçün Bir laptop açıldı heç etdik və ya əlavə yaddaş sifariş bir kompüter üçün, ki, bilmirəm bilər Sizin kompüter daxilində görünür ki, bir şey bu kimi bir az. Belə ki, bu adlı yalnız ümumi şirkət Mühüm ki kompüterlər üçün RAM edir. Və RAM burada proqramları onlar çalışan etdiyiniz zaman yaşayır. Belə ki, iki dəfə hər Mac və ya PC-də bir proqram basın və açılır, və bəzi Word sənəd açır və ya kimi bir şey, müvəqqəti olaraq onu mağazalar RAM, RAM sürətli, çünki sabit disk daha, və ya Sizin bərk dövlət disk. proqramları getmək harada Belə ki, yalnız var onlar çalışan etdiyiniz zaman yaşamaq, və ya faylları istifadə olunur zaman. Belə ki, baxmaq şeylər Sizin laptop bu daxilində kimi, və ya az daha böyük şeylər masa üstü daxilində. Amma əsas yalnız bir var ki, bunlar məhdud sayı. Və yalnız bir məhdud məbləği var hardware bu masası üzərində oturan sağ burada. Belə ki, şübhəsiz ki, biz saxlamaq olmaz sonsuz uzun nömrələri. Və hələ, siz geri düşünüyorsanız grade məktəb, neçə rəqəm bilər Siz sağ var bir bu kəsir? ki, məsələ üçün, neçə rəqəm bilər Bir bu kəsir sol var? Həqiqətən, sonsuz bir çox. İndi biz insanlar yalnız bilər milyon tələffüz necə, və milyard trilyon, və katrilyon və quintillion. Mən sərhədlərini məcbur edirəm mənim understanding-- ya my-- mən başa nömrələri, lakin mənim nömrələri tələffüz. Lakin onlar ilə sonsuz böyük əldə edə bilərsiniz sol sonsuz bir çox rəqəm və ya bu kəsir sağ üçün. Amma kompüter yalnız bir var yaddaş məhdud məbləği tranzistorlar məhdud sayı, bir daxili yüngül ampüller məhdud sayı. Belə ki, nə olur Əgər yer tökülmək? Başqa sözlə, əgər geri keçən həftə düşünmək biz nömrələri haqqında söhbət zaman özləri ikili təmsil olunur biz var Güman Burada bu 8-bit dəyər. Və biz yeddi 1 və bir 0 var. Və biz istəyirik ki, güman Bu dəyər 1 əlavə edin. Bu indi, həqiqətən, böyük rəqəmdir. Mən xatırlayıram, bu, 254 deyil Keçən həftə sağ riyaziyyat. Amma nə dəyişdirmək əgər rightmost 0 1 ki? tam ədəd olan Əlbəttə ki, səkkiz 1-in olur. Belə ki, biz hələ yaxşı deyilik. Və yəqin ki, təmsil 255, baxmayaraq məzmunundan asılı olaraq Bu, həqiqətən təmsil edə bilər mənfi nömrəsi. Amma başqa bir zaman daha çox. bu barədə kimi bu hiss Mən arxalana bilər kimi yüksək. İndi, yalnız 8 bit var. Və mənim Mac, şübhəsiz ki, yolu var yaddaş artıq 8 bit. Amma məhdud yoxdur. Belə ki, eyni arqument belə, tətbiq biz ekranda bu olanları daha çox var. Amma nə edirsinizsə olur bu sayı 255 saxlanılması, və 1 bit yüksək saymaq istəyirsiniz? Siz 255-dən 256 getmək istəyirəm. problem, əlbəttə, ki, əgər Keçən həftə kimi sıfır hesablanması başlamaq, Siz kimi yüksək saymaq bilməz 256 kimi, tək 257 ili Tək 258 ili m nə çünki Bir 1 əlavə ne olur? Siz köhnə grade məktəb varsa yanaşma, siz burada bir 1 qoymaq və sonra 1 plus 1 2, lakin ki həqiqətən sıfır, 1 aparmaq, 1 aparmaq 1 daşıyır. Bunlar hamısı, Bu 1-in sıfıra gedin. Və kimsə kimi, bəli, qurmaq sol tərəfində, 1 diqqət çəkdi. Amma hər şey edə bilərsiniz həqiqətən görmək və yaddaş uyğun demək yalnız səkkiz 0 nin edir bir anda əgər, kompüter, kifayət qədər yüksək hesablanması cəhd, sen ətrafında kesmek gedir ki, görünür bəlkə sıfır, hətta mənfi sıfır daha aşağı nömrələri. Və biz növ bu edə bilərsiniz. Mənə davam və yazmaq edək burada real sürətli proqram. Mənə davam və yazmaq edək Overflow adlı proqram. daxildir, cs50.h daxildir standart IO.h-- oh, Mən, həqiqətən, mənim sintaksis işıqlandırılması qaçırdı. Belə ki, overflow.c bu xilas edək. İndi int əsas void-- və uzun əvvəl alacağıq niyə izah qayıtmaq biz int əsas etibarsız yazılı saxlamaq. Amma indi üçün, yalnız nə edək verilən bu alaraq. nin özümü bir int verim, və 0 onu başlamaq. ardından int edək i sıfır almaq həqiqətən, bu sonsuz loop edək və nə görmək. doğru olsa da, sonra n çap imkan faiz i, backslash n, plug-in n. Amma indi, bu n n plus 1 olur nə edək. başqa sözlə, hər So Bu sonsuz loop iteration, nin N dəyəri götürək, və sonra 1 əlavə və sol geri n nəticə saxlamayın. Və əslində, biz sintaksis gördüm qədər bu kimi qısa. A cool oyun əvəzinə bütün bu yazı, Siz, həqiqətən, bir n plus 1 bərabərdir demək olar. Yoxsa həqiqətən fantezi olmaq istəyirsinizsə, Siz n plus plus yarı kolon demək olar. Lakin bu sonuncu iki yalnız var biz sintaktik şəkər zəng istədiyiniz nə ilk şey üçün. ilk şey, daha aydın edir tamamilə gözəl, tamamilə doğru. Amma bu daha çox, mən demək lazımdır. Beləliklə, biz yalnız bir an üçün bu edəcəyik. səsləri indi edək daşqın, daha uğursuz, dot çizgi daşqın. nin n olduqca böyük əldə, görmək edək. Amma hesab edirəm ki, qoy, n necə böyük əldə edə bilərsiniz? n bir int edir. Biz ölçüsü ilə bir an əvvəl gördüm misal bir int dörd bytes edir. Biz ötən həftə bilirik, dörd bytes edir 32 bit, çünki 8 dəfə 4 32 var. 4 milyard olacaq. Və biz 800.000 qədər. Bu, əbədi etmək niyyətindədir Mən bəlkə kimi yüksək saymaq. Mən irəli getmək üçün gedirəm kimi, uzun əvvəl bilər və səmimi nəzarət Control ace edib C, bir çox harada Control C ümumiyyətlə deməkdir ləğv. Təəssüf ki, bu, çünki bulud çalışan, bəzən bulud qədər stuff həyata spitting, qədər çıxdı, bu olacaq Mənim giriş üçün bir az müddət bulud almaq üçün. Mən hit olsa da Bir neçə saniyə əvvəl Control C, bu mütləq tərəfi sonsuz loop təsiri. Və belə hallarda, biz istəyirik ola tərk. Və biz bir əlavə olacaq burada terminal pəncərə Əlbəttə deyil plus ilə kimi, hələ də düşünür etibarən. Və irəli getmək və olsun bir az daha məqbul. Mən irəli getmək və bunu gedirəm Bu yalnız finitely dəfələrlə. Nin loop üçün istifadə edək Mən əvvəllər alluded. Gəl bunu edək. mənə 0 olur bir dəyişən int verin. i, bu, i ++ 64 deyək azdır. İndi mənə irəli və çap gedək n faiz i həyata n vergül. Və bu hələ sonra n-- əbədi etmək niyyətindədir. Gəl bunu edək. n olur n dəfə 2. Yoxsa biz xülya ola bilər dəfə 2 bərabərdir yoxdur. Amma yalnız n deyək dəfə 2, özü bərabərdir. Başqa sözlə, bu Proqramın yeni versiyası Mən əbədi gözləyin istəmirəm kimi 800,000 4 milyard olan. Yalnız bu aşmaq edək. həqiqətən n hər dəfə ikiqat edək. Hansı, geri, iki qatına çıxarır əlbəttə, olan əks. Və son həftə isə biz bir şey yenidən və yenidən, və yenə super sürətli, misli mütləq olacaq ən böyük mümkün 1 bizi almaq biz bir int ilə saymaq olar dəyəri. Belə ki, məhz bu nə edək. Biz uzun əvvəl geri bu gəlmək lazımdır. Amma bu, yenə yalnız kimi Not təkrar blok. Və uzun əvvəl bu istifadə edəcəyik. Bu yalnız sıfırdan sayı deməkdir 64, lakin bərabər qədər. Bu hər iteration loop, yalnız i incrementing saxlamaq. Belə ki, i ++ - və bu ümumi tikinti line 7 yalnız bir super ümumi bir yoldur of bəzi xətləri təkrar Kodu dəfə bəzi nömrəsi. Hansı kodu xətləri? Bu qıvrım aşırma, sizin kimi İndi gleaned ola bilər, , Aşağıdakı etmək deməkdir. Bu kimi Not var zaman sarı blokları var və digər rənglər bu cür əhatə və ya digər bloklar tebrik. Bu nə o buruq var aşırma burada edirik. Beləliklə, mən sintaksis var, əgər right-- sizə C vasitələri kök simvolu görə bilərsiniz ki, mən neçə dəfə var bu problemi həll etməyə çalışırıq. Belə ki, bir xilas edək tamamilə ki, pəncərə bağlayın. Və biz yeni bir istifadə edəcəyik. daşqın, dot çizgi olun daşqın daxil edin, bütün sağ, Bu ilk pis görünür. Amma vaxt geri hərəkət edək, Bu 64 dəfə, çünki. Və ilk dəfə qeyd n 1. İkinci dəfə, n, 2 sonra 4, sonra 8, sonra 16. Və bu qısa müddətdə ki, görünür Mən təxminən 1 milyard almaq Mən yenidən ikiqat ki, əgər Mənə 2 milyard verməlidir. Amma bu, çıxır zirve hüququ. Və belə ki, həqiqətən daşqınlar 1 milyard bir int 2 təxminən mənfi milyard, bir tam çünki, nömrələri biz fərqli Keçən həftə fərz edilmişdir, müsbət və mənfi də ola bilər əslində bir kompüter. Və bu belə ən azı bir bit səmərəli oğurlanması. Belə ki, biz, həqiqətən, yalnız 31 bit var və ya 2 milyard mümkün dəyərlər. Amma indi, paket olduqca sadəcə, nə bu nömrələri və riyaziyyat, nə pis bir şey, nəticədə baş nəticədə üçün çalışırıq, çünki bit bir çox dəfə permute. Və səmərəli bütün getmək 1-in bəlkə bütün 0, və ya bəlkə yalnız bəzi digər model bu ki, aydın, kontekstdən asılı olaraq, mənfi sıra kimi təfsir edilə bilər. Və belə ki, ən yüksək I görünür bu proqramda arxalana bilər yalnız təxminən 1 mlrd. Amma burada qismən həll var. Siz nə bilirik? Mənə bir dəyişməyə edək uzun uzun int. Və mənə burada irəli gedək Mən gedirəm demək bir imzasız uzun bu dəyişdirmək üçün. Və ya, özümü xatırlayıram heç vaxt görək. Nin irəli getmək və daşqın edək. Xeyr, bu deyil, LLD təşəkkür edirəm. Belə ki, bəzən cingilti faydalı ola bilər. Mən nə format yadda etməyib belirteci uzun uzun idi. Lakin, həqiqətən, cingilti mənə. Green, yaxşı bir növ hələ bir səhvə yol deməkdir. Mən LLD demək ki guessing edir. Belə ki, mənə məsləhət almaq uzun edək uzun decimal sayı ki, edin. Və nöqtə, mənə təkrar edək Daxil edin daşqın doğramaq. İndi nə sərin var bu. Mən vaxtında deyilsə, biz hələ başlayın eyni place-- hesablanması 1, 2, 4, 8, 16. Notice, biz almaq bütün yol 1 milyard. Amma sonra biz təhlükəsiz 2 milyard almaq. Sonra 4 milyard almaq, sonra 8 milyard 17 milyard. Və biz ali getmək və ali və ali. Nəhayət, bu da pozur. Nəhayət, uzun uzun, 64-bit dəyər deyil, olan 32-bit dəyəri, siz saymaq əgər çox yüksək, siz ətrafında 0 kesmek. Və bu halda, biz baş mənfi sıra ilə başa. Belə ki, bu bir problem deyil. Və bu çıxır ki, problem bütün gizli deyil. Mən qəsdən var olsa Bu səhvlər ilə bağlı, biz bütün növ görmək çıxır bizə, və ya bizə ən azı bir ətrafında yoxdur. Lego Star Wars, Belə ki Əgər oyun ifa etdiyiniz, Əgər ətrafında getmək bilər çıxır LEGO dünyada şeyi qırılma, və mahiyyətcə, sikkələr toplanması. Və heç ifa etdiyiniz əgər Bu oyun yol çox vaxt, bu adsız fərdi kimi Burada ümumi sayı etdi Siz toplamaq bilər ki, pul Bu, 4 milyard görünür edir. İndi ilə həqiqətən dairəvi var. Belə ki, LEGO çalışır dostluq şeylər istifadəçi saxlamaq. Onlar məhz 2 etmədim Keçən həftədə 32 güc. Amma 4 milyard səbəb olur. Bu məlumatlar əsasında, görünür, ki LEGO və şirkətin ki, Bu faktiki proqram edilən qərar ki, pul maksimum sayı istifadəçi toplamaq bilər deyil, həqiqətən, 4 milyard Onların kodu seçdi yəqin, uzun uzun istifadə etmək, lakin yalnız bir tam bir imzasız Onun tam, yalnız bir müsbət tam, max dəyəri ki, təxminən edir. Yaxşı, burada başqa funny biri. Oyun Civilization Belə ki, hansı Siz bəzi tanış ola bilər, Bu il orada çıxır ki, Bu oyun vasitəsi bir səhv idi Siz rol oynamışdır əgər Oyun Qandi, Onun yerinə, çox pasifist olan əvəzinə inanılmaz, inanılmaz idi təcavüzkar, bəzi hallarda. Xüsusilə, yolu Civilization işlər ki, əgər, player, , Demokratiya qəbul sizin təcavüzkarlıq hesab olur iki belə mənfi tərəfindən endirildiyi minus, sonra minus minus. Belə ki, 2 çıxmaq faktiki iterating. Təəssüf ki, sizin iterating əgər ilkin 1, siz 2 çıxmaq demokratiya qəbul sonra Burada güc Qandi kimi O, çox passive-- idi, çünki, görmüşük təcavüzkarlıq miqyasında 1. Lakin o, demokratiyanı qəbul əgər o 1-dən mənfi 1 gedir. Təəssüf ki, onlar imzasız nömrələri istifadə edərək, deməkdir hətta mənfi müalicə sanki nömrələri onlar müsbət idi. Və bu çıxır ki, 1 Mənfi müsbət ekvivalent, tipik kompüter proqramları, 255 edir. Gandhi qəbul Belə ki, əgər demokratiya və buna görə də var onun təcavüzkarlıq hesab azalıb, Bu, həqiqətən 255 ətrafında rulonlarda və onu ən edir Oyun aqressiv xarakter. Belə ki, bu qədər Google bilər. Və bu, həqiqətən, oldu təsadüfi proqramlaşdırma bug, lakin kifayət qədər daxil oldu beri irfan. Bütün fun və cute edir. Daha qorxulu zaman aktualdır real dünya cihazlar, və oyunlar, bu eyni hatalar var. Əslində, yalnız bir il əvvəl bir maddə çıxdı Boeing 787 Dreamliner haqqında. Və ilk məqalə nəzər bir az gizli deyilir. Amma belə bu, bir proqram Boeing-nin açığı yeni 787 Dreamliner təyyarəsi var potensial pilot səbəb nəzarət itirmək təyyarə, bəlkə Mid-uçuş, FAA rəsmiləri Bu yaxınlarda xəbərdarlıq Aviaşirkətlər. Bu müəyyən oldu ki, model 787 powered edilmişdir təyyarə davamlı üçün 248 gün bütün alternativ cari itirə bilər, AC, generator səbəbiylə elektrik nəzarət ədəd, GCUs, eyni zamanda gedən təhlükəsiz rejimi bilmir. Mənə itirmək növü var. Amma memo OK, indi ki var, ifadə, vəziyyəti bir proqram səbəb oldu daxili qarşı generator nəzarət sonra daşqın edəcək bölmələri davamlı güc 248 gün. Biz bu verilməsi itkisinin qarşısını almaq üçün qeyd bütün AC elektrik nəticələnə bilər enerji, təyyarə nəzarət zərər. Belə ki, sanki, bir tam var, və ya ekvivalent data type, proqram istifadə olunur faktiki təyyarə Siz təyyarə saxlamaq ki, əgər hansı yəqin, kifayət qədər uzun Yalnız yayınlıyorsanız halda ola bilər Onlara daim və heç unplugging Sizin təyyarə, görünür, və ya Onun batareyaları ölmək imkan nəhayət qədər saymaq, və, və, və, və, və. Və təbiət, bir yaddaş məhdud məbləği , Daşqın geri yayma olacaq sıfır və ya bir mənfi dəyər, bir yan təsiri var frighteningly real reallıq təyyarə lazım ola bilər ki, rebooted etmək, səmərəli, və ya pis düşmək bilər, bu uçur kimi. məsələlər Belə ki, bu cür bizə hələ də, even-- bu, 2015 məqalə idi daha qorxulu Siz mütləq nə zaman Anlamaq üçün təşəkkür edirik, və ya tahmin səhvlərin bu cür. Belə ki, digər bir var çıxır data təmsil haqqında pis bir şey. Bu da üzüb gedirdi çıxır ki cür flawed, üzüb gedirdi, çünki çox, Mən 32 bit var təklif, və ya bəlkə 64 Bir cüt istifadə edin. Amma hələ məhdud deyil. Və tutmaq əgər ki, nömrələri sonsuz sayda qoymaq bu kəsir sonra, heç bir yol yoxdur bütün mümkün təmsil edə bilər biz tədris edilmişdir nömrələri sinifdə məktəb dünyada mövcud ola bilər. Kompüter, mahiyyətcə, var bu ədəd alt seçin dəqiq təmsil etmək. İndi, kompüter bilərsiniz dəyirmi bəlkə bir az bit, və təxminən mağaza imkan bilər Bəlkə istədiyiniz bilər hər hansı bir sayı. Amma daxilən, əgər bit məhdud sayda var, yalnız onlara permute bilər bir çox məhdud yollarla. Belə ki, bəlkə bilməz məhdud sayda istifadə bit permutation ki, adet sıfır və olanları nümunələri, sonsuz təmsil etmək ədəd sayı, hansı kompüter bilər ki, təklif çox yaxşı bəzən bizə yalan ola bilər. Əslində, bunu edək. Mənə CS50 IDE geri getmək edək. Mənə davam edək bir az proqram yaratmaq göstərir ki, qeyri-dəqiqlik deyilən kompüter, həqiqətən, qeyri-dəqiq olur. Və mənə irəli getmək və ilə başlamaq edək əvvəl kod bəzi və indi yalnız aşağıdakı. Mənə davam və printf, faiz edək f, 10 bölünür backslash n, 1. Başqa sözlə, bu dərin dalış imkan 1/10 kimi 1 və 10 bölünür üçün. Həqiqətən, kompüter 1/10 təmsil edə bilər. Belə ki, irəli getmək və qeyri-dəqiqlik edək. Görək. Format ikiqat növü müəyyən edir. Amma dəlil növü int var. Nə baş verir? Oh, maraqlı, belə ki, bir var dərs əvvəl öyrəndim. Mən hey, kompüter show, deyirəm Mənə faiz f bir float. Amma bu 2 ints verirəm. O çıxır ki, mən düzeltebilirsiniz yolları bir neçə bu. Mən yalnız 1.0 daxil bir növbəsində bilər və 10.0 10 olan ki, həqiqətən, konvertasiya təsiri var floats-- daxil onlara hələ ümid Eyni nömrəsi. bir şey var həyata Yoxsa çıxır Biz uzun əvvəl yenə görəcəksiniz. Siz ədəd tökmə bilər. Siz bu ara istifadə edə bilərsiniz ifadə, siz deyə bilərsiniz hey, kompüter, bu almaq Mən bilirəm 10 bir int edir. Lakin, xahiş edirik müalicə sanki bir float var. Amma bu lazımsız kompleks hiss edir. Bizim məqsədləri üçün, bu gün yalnız sözün edək onlara üzən point dəyərləri etmək oxşar bu kəsir ilə. Mənə davam edək və təkrar etmək qeyri-dəqiqlik, yaxşı, dot çizgi qeyri-dəqiqlik, daxil edin. OK, yaxşı baxırıq. 1 məlumatına görə, 10 bölünür mənim Burada Mac, həqiqətən, 0.100000 edir. İndi orada grade məktəb oxuduldu 0 nin sonsuz sayda olmalıdır. Belə ki, ən azı cəhd edək o bəzi görmək. Bu printf bir az çıxır ki Biz istifadə etdiyiniz daha meraklısı hələ. Bu belirttiğiniz yoxdur çıxır yalnız faiz f, və ya yalnız faiz i. Siz, həqiqətən, daxil edə bilərsiniz burada bəzi nəzarət variantları. Xüsusilə, mən gedirəm demək, hey, printf, həqiqətən mənə 10 dən xal göstərir. Belə ki, bir az qəribə görünür. Amma faiz demək, dot, neçə ədəd sonra görmək istəyirəm decimal point, və sonra f Mənzil, ki, yalnız çünki sənədlərin deyir. Mənə irəli getmək və xilas edək. Mən alıram, çox hiss şeyi retyping yorğun. Mən yalnız Ayarlama edirəm və aşağı burada mənim düymələri arrow. Və mən vuruş saxlamaq, siz əmrləri bütün bilərsiniz Mən, və ya səhv etdi. Və mən indi irəli getmək üçün gedirəm və həqiqətən yəqin ki, istifadə edin. qeyri-dəqiqlik, dot etmək belə imprecision-- zərbə mən tədris edilmişdir Bu sinif məktəb həyata yoxlayır. 10 ondalık üçün çap olsa belə onu verir, həqiqətən, 0,10000 edir. Amma nə bilirik? Bir az görməmiş əldə edək. Mənə 55 göstərir nin kimi, deyirlər ondalık sonra göstərir. həqiqətən bu salaq Bir spin üçün proqram. Mənə ilə yeniden yapmak edək qeyri-dəqiqlik, dot çizgi, qeyri-dəqiqlik. Və burada biz gedin. Sizin uşaqlıq bir yalan idi. Görünür, 10 bölünür 1 həqiqətən 0.100000000000000005551115123-- Nə baş verir? Bəli, bu, əgər cür çıxır əsas həyata uzaq kifayət qədər baxmaq Bu nümayəndəliyi sayı, bu, həqiqətən tam 1/10 və ya 0,1 və adet sıfır sonsuz sayı. İndi ki, niyə? Bəli, bu sadə olsa Bizə insanlar sayı 1, 10 bölünür hələ də sonsuz bir çox biri nömrələri biz hesab edə bilər ki. Amma bir kompüter yalnız təmsil edə bilər finitely çox belə nömrələri. Belə ki, səmərəli, nə kompüter, ABŞ onun yaxın göstərən nömrəsinə uyğunlaşdırılması biz 1/10 hesab istəyirəm və ya həqiqətən 0,10000 reklam infinitum. Əksinə, baxmayaraq ki, bu Bu əldə edə bilərsiniz kimi kimi yaxın. Və həqiqətən, siz baxmaq əgər başlıq altında, biz baxaraq burada kimi ondalık sonra 55 rəqəm, biz, həqiqətən ki, reallığı görmək. İndi var bir kənara kimi, əgər Heç movie-- görüldü Siz çox güman ki, have not lakin Superman 3 bir neçə il əvvəl, Richard Pryor mahiyyətcə bu leveraged onun şirkəti reallıq bir çox oğurlamaq pennies fraksiyaları və fraksiyaları, , Mən xatırlayıram kimi company-- çünki Bu mahiyyətcə idi while-- bir oldu bir şey atmaq uyğun deyil ki, qəpik anlayışı daxil. Amma əlavə əgər bütün bu daha kiçik, kiçik, kiçik nömrələri, və yenidən və yenidən, siz kimi, can onun işi, pul yaxşı məbləği etmək. Həmin ideya ilə dolandırıldı İndi köhnə hələ daha yeni, lakin Office Space adlı film, harada film uşaqlar, , Eyni şey idi bu qədər berbat tamamilə çox yolu ilə sona çatdı Onların bank hesabına pul. Bu, bütün çox şübhəli idi. Lakin günün sonunda, qeyri-dəqiqlik hamımız ətrafında edir. Və ki, bu da ola bilər işi frighteningly. Belə çıxır ki, Superman 3 və Office Space kənara, orada bir çox real ola bilər dünya ramifications dövrü qəti olmayan həqiqətləri məlumatların nümayəndəliyi ki, hətta biz insanlar üçün Bu gün mütləq bunu həm də olduğu kimi anlamaq, və ya tez-tez biz olmalıdır kimi xatırlayıram. Və həqiqətən, aşağıdakı clip edir bir çox real dünya bir göz əgər olur nə ramifications qeyri-dəqiqlik qiymətləndiririk yoxdur ki, nömrələri təmsil baş verə bilər. [Video playback] -Kompüter, Biz bütün qəbul gəldiniz tez-tez sinir bozucu problemləri ki, , Odur hatalar ilə viruslar getmək, və proqram glitches, kiçik qiymətləri ödəmək üçün rahatlığı üçün. Lakin yüksək texnologiyalı və yüksək sürətli hərbi və kosmik proqram applications, kiçik problem ola bilər fəlakət daxil böyüdüləcək. June 4, 1996-də, alimlər hazırlanır insansız Ariane 5 raket başlamaq üçün. Bu elmi daşıyan peyklər nəzərdə dəqiq necə yaratmaq Yerin maqnit sahəsində qarşılıqlı Günəş küləkləri ilə. raket üçün inşa edilmişdir Avropa Kosmik Agentliyi, və onun harada off qaldırdı Fransız Quyanası sahilində. təxminən 37 saniyə -Hazırda uçuş, onlar ilk fərq bir şey yanlış gedirdi. nozzle ilə döner edildi bir yol həqiqətən olmamalıdır. uçuş daxil 40 saniyə ətrafında, aydın, vasitə problem idi. onlar zaman ki qərar onu məhv etmək üçün. Range təhlükəsizlik zabit ilə böyük içalat, düyməni basdı, bu ola bilər əvvəl, raket partladılıb ictimai təhlükəsizlik üçün təhlükə olur. -Bu Qız idi Ariane 5 səyahət. Və onun məhv etdi çünki qüsur yerləşdirmək raket proqram daxil. Ariane on -Bu problem idi bir sıra var idi ki, ifadə etmək 64 bit tələb olunur. Onlar çevirmək istəyirdi 16-bit sayı bu. Onlar güman ki, sayı heç gedirdi Çox böyük olması o ən çox 64-bit sayı rəqəm zeroes idi. Onlar yanlış idi. bir -Bu bilməməsi proqram qəbul tərəfindən sıra cür başqa uğursuzluq kök idi. Software inkişaf oldu bir yeni texnologiya çox bahalı hissəsidir. Ariane raket çox olmuşdur proqram uğurlu, çox bu da idi yaradılmışdır Ariane 5 istifadə olunur. -Bu Əsas problem Ariane idi 5, sürətli idi sürətli sürətləndirdi. Və proqram idi ki, düşür. raket -Bu məhv böyük bir maliyyə fəlakət idi bütün səbəbiylə dəqiqə proqram səhv. Amma bu ilk deyildi time data conversion problemlər müasir raket texnologiyası mürəkkəbləşdirilir idi. başlaması ilə 1991-ci il -In ilk Körfəz müharibəsi, Patriot raket bənzər bir növ təcrübəli sayı dönüşüm problem. Və nəticə olaraq, 28 nəfər, 28 Amerika əsgəri, şəhid, haqqında idi 100 nəfər yaralanıb, zaman idi Patriot, Gələn scuds qarşı qorumaq üçün, bir raket yanğın bilmədi. -Zaman İraq Küveyt və Amerika işğal erkən 1991-ci ildə Desert Storm başlayıb Patriot raket batareyalarının dağıtdılar Səudiyyə Ərəbistanı və İsraili qorumaq üçün İraq Scud raket hücumlarından. Patriot ABŞ orta mənzilli edir hava sistemi səthi istehsal Raytheon şirkəti tərəfindən. Patriot kesen -Bu ölçüsü özü haqqında təxminən 20 fut uzun. Və 2000 funt ağırlığında. Və bu barədə bir döyüş başlığı daşıyan Hesab edirəm ki, təxminən 150 lirə hesab edirəm. Və başlığı özü yüksək partlayıcı olan ətrafında fraqmentləri var. döyüş başlığı casing edir buckshot kimi hərəkət üçün nəzərdə tutulmuşdur. -Bu Raketlər keçirilir konteyner başına dörd, və yarı trailer ilə nəql olunur. -Bu Patriot füzesavar sistemi indi ən azı 20 il geri gedir. Bu, ilk nəzərdə tutulmuşdur hava müdafiə raket kimi düşmən təyyarələr gülləboran etmək. ilk Körfəz müharibəsi, ki, müharibə boyunca gələndə, Ordu üçün istifadə etmək istəyirdi scuds deyil təyyarələr gülləboran etmək. İraq Air Force idi bir problem çox deyil. Amma Army scuds narahat idi. Və onlar üçün cəhd Patriot yükseltin. düşmən -Intercepting raket Mach 5 səyahət kifayət qədər çətin olacaq idi. Amma Patriot xidmətə qaçdı edilib Ordu bir xəbəri olmadığını edilən İraq modifikasiya Onların scuds hit üçün təxminən mümkün. -Nə Baş scuds ki da gəlirdi qeyri-sabit idi. Onlar wobbling edildi. Bunun səbəbi idi üçün İraqlılar, 600 kilometr almaq üçün 300 kilometr həyata mənzilli mərmi çəki etdi ön döyüş başlığı həyata. Onlar başlığı yüngül etdi. Belə ki, indi Patriot edir Scud gəlmək üçün çalışırıq. Və çox vaxt, zaman böyük əksəriyyəti, yalnız Scud ilə uçmaq olar. Patriot sistemi operatorları bir , Patriot onun hədəf buraxılmış həyata Onlar Patriot'un başlığı partlatdı bu mümkün itki qarşısını almaq üçün dağılmaq icazə verildi. insanların çoxu gördüm nə -Bu idi göy o böyük fireballs, və səhv Scud başlığı kəsir. gecə-baxmayaraq göy, Patriots çıxdı uğurla olmaq Dhahran da Scuds məhv heç bir səhv ola bilər öz fəaliyyəti barədə. Orada Patriot'un radar sistemi Daxil olan Scud itirib, səbəbiylə başladılan heç bir proqram qüsur. Bu ilk kəşf İsrail oldu Artıq sistem olduğunu, böyük vaxt uyğunsuzluq görə əlaqədar bir saat oldu sisteminin kompüter. -Haqqında Iki həftə əvvəl Dhahran faciəsi, İsrail bildirildi Müdafiə Nazirliyi ki, sistem vaxt itirirdi. səkkiz saat və ya çalışan sonra, onlar sistemi fark xeyli az dəqiq olmaq edilib. Müdafiə Nazirliyi cavab verdi Patriot batareyaları bütün izah sistemləri tərk etmək Uzun müddət üçün. Onlar nə uzun müddət heç vaxt Idi Səkkiz saat, 10 saat, 1000 saat. Heç kim bilirdi. -Bu Patriot batareyası Qışla konuşlu Dhahran və flawed daxili at 100 saat ərzində saat olmuşdur Fevral 25 gecə. -Bu Bir dəqiqliyi üçün vaxt izlenir ikinci bir onuncu haqqında. ikinci İndi onuncu maraqlı sayı, Bu ifadə edilə bilməz, çünki Tam ikili olan tam ifadə edilə bilməz deməkdir hər hansı bir müasir digital kompüter. Bu inanmaq çətindir. Amma nümunə kimi istifadə. bir nömrəli üçdə edək. Üçdə biri ola bilməz tam ondalık dilə gətirdi. Üçdə biri 0.333 edir daimi davam. ilə heç bir yol yoxdur ondalık mütləq dəqiqlik. Ki, problem tam cür ki, Patriot baş verib. Artıq sistemi qaçdı, pis vaxt səhv oldu. Əməliyyat 100 saat sonra, vaxt səhv yalnız bir üçüncü oldu ikinci. Amma hədəf baxımından raket Mach 5 səyahət bir izleme nəticələndi 600-dən çox metr səhv. Bu ölümcül səhv olardı nə əsgərlər üçün baş verən Scud launch idi erkən Warning peyklər aşkar və onlar Scud bilirdi ki onların ümumi istiqamətdə gəlir. Bu gələn Onlar bilmirdim. -Bu Radar qədər artıq idi Patriot sisteminin komponenti Dhahran müdafiə tapmaq və saxlamaq üçün daxil olan düşmən raket track. -Bu Radar çox ağıllı idi. Bu, həqiqətən, track olardı Scud mövqeyi, və sonra burada yəqin ki, proqnozlaşdırmaq radar göndərilən növbəti dəfə olacaq həyata pulse. Bu bir sıra qapısı adlanırdı. -Sonra, Patriot dəfə kifayət qədər vaxt var qərar geri getmək və növbəti yoxlamaq keçdi bu aşkar obyekt üçün yer, geri gedir. Belə ki, yanlış geri getdi zaman yer, sonra heç bir obyekt görür. Və heç bir var idi ki, qərar obyekt, bir yalan aşkar idi, və track düşər. -Bu Gələn Scud yox radar ekran. Və saniyə sonra, onu Qışla çarpdı. Scud 28 nəfər ölüb, və son idi bir ilk Körfəz müharibəsi zamanı atəş etdi. Faciəvi yenilənir software Aşağıdakı gün Dhahran gəldi. proqram qüsur var idi olmuşdur sabit bağlanış çətinlikli bir fəsil Patriot raket tarixi. [Video playback] DAVID J. MALAN: Belə ki, bu bütün var demək daşması bu məsələlərə ki və qeyri-dəqiqlik bütün çox real edir. Belə ki, necə biz burada əldə etdiniz? Biz yalnız printf söhbət başladı. Yenə də, bu funksiyası Ekranın bir şey yazdıran və biz bundan sonra təqdim bir neçə digər funksiyaları sözdə CS50 kitabxana. Və biz davam edəcəyik vaxtında bu görürük. Və biz, xüsusilə, get simli istifadə və int almaq və indi də float almaq, və hələ başqaları hələ də qarşılaşacaq və uzun əvvəl özümüz istifadə edin. Amma münasibətilə var Biz artıq ehtiyac görüldü geri nə bu funksiyaları əl saxlamaq üçün? Bizi geri string əl, bir int və ya float və ya. Və bəzən biz qoymaq lazımdır yerdə simli, və ya int və ya float. Və o şeyi saxlamaq üçün, yalnız geri Not kimi, biz dəyişənlər var. Amma Not fərqli olaraq, C biz faktiki növləri var dəyişənlər məlumatların növləri, daha ümumi Onların arasında, simli, bir int, bir float və hələ də bu başqaları. Və belə ki, biz C dəyişənlərin elan zaman, biz data növləri elan etmək lazımdır. Bu lazımdır bir şey deyil dövr sonra nə etmək lazımdır biz digər dillərə keçid. Amma indi, biz lazımdır əvvəlcədən a priori üçün, Kompüter növü izah dəyişən biz bizə vermək istəyirəm. İndi, eyni zamanda, çap data növləri bu cür, biz demək gözləmək nə printf var. Biz strings üçün yüzdə s gördüm və integers üçün faiz i, artıq və bir neçə başqaları. Və bu sadəcə tələblər vizual təqdimat ki, informasiya. Və bu hər həqiqətən ola bilər parametrized və ya bir şəkildə tweaked, Siz nəzarət daha istəyirsinizsə Siz almaq çıxdı növü. Və əslində, bu yalnız çıxır yeni xətt üçün backslash n var. başqa backslash deyilən bir şey var bir vaqon qaytarılması üçün r olan bir daha yaxın edir köhnə məktəb makina, həmçinin Windows bir çox illər üçün istifadə olunur. Nişanlar üçün backslash t var. Əgər istəyirsinizsə ki, çıxır simli daxilində ikiqat quote, Biz istifadə etdiyiniz geri double quote double sol və sağ quote bu günə qədər bizim strings bitir. Bu şeyi çaşdırmaq görünür. Siz ikiqat quote qoymaq istəyirsinizsə həqiqətən, bir simli və orta, görmək qarışıqdır. Və belə ki, belə ki, qaçmağa var , Bir şey ilə ikiqat quote danışmaq kimi, sanki, double quote backslash. Və hələ bir neçə digər var. Və biz o daha çox lazımdır uzun əvvəl faktiki istifadə. Belə ki, indi keçid imkan məlumat və nümayəndəliyi, və hesab operatorları, bütün olan bizə bəzi bina verdi ilə blokları oynamaq. Amma indi həqiqətən verək Bizə söz qalan biz artıq idi ki, Scratch ilə ötən həftə bəzi digər nəzər alaraq , C ilə konstruksiyaların onların bütün. Amma fikir biz istəyirik həqiqətən, yalnız görmək haqqında olan tərcümə vurğulamaq bir dil, Scratch, başqa, C. Və zaman keçdikcə, biz ala bilərsiniz Bizim aracı üçün daha tools, belə syntactically danışmaq. Və həqiqətən, siz fikir ki, görürsünüz artıq son həftə olduqca tanışdır. Belə ki, bunu edək. Nin irəli getmək və bir proqram qızışdırmaq edək həqiqətən bəzi ifadələr istifadə edir, bir Boolean ifadə. Mənə burada irəli gedək və yeni bir fayl yaratmaq. Mən bu condition.c zəng edəcəyik. Mənə davam edək CS50 kitabxana daxildir. Və mənə irəli getmək və daxil imkan Bizim funksiyaları üçün standart io.h, və printf, və daha çox olaraq təyin olundu. Mənə özümü o boilerplate verək Onun şərh alacağıq int əsas etibarsız, geri gələcəkdə gəlir. İndi mənə irəli getmək və verək özüm get int vasitəsilə int. Sonra mənə irəli getmək və bunu bildirin. i edək less--, mən demək istəyirəm mənfi, müsbət ayırmaq, və ya sıfır dəyərlər. i sıfır az Belə ki, mənə imkan yalnız bu proqram sadəcə demək ki, mənfi, backslash n başqa i sıfırdan böyük olduqda. İndi, əlbəttə, demək gedirəm müsbət, backslash n printf. Və sonra başqa mən bunu edə bilər Varsa. i 0 bərabərdir əgər mən nə edə bilər. Amma mən qəbul olarıq artıq ən azı bir səhv. bərabər işarəsi Xatırladaq ki bərabər, biz insanlar bunu bildiyiniz kimi. Amma bu tapşırıq operator var. Və biz 0 etmək istəmirəm sağ və sol i qoyun. Belə ki, bu qarışıqlıq qarşısını almaq, və ya bəlkə bərabər sui-istifadə imzalamaq, insanlar bir neçə il əvvəl qərar ki, bir çox proqramlaşdırma dilləri Siz bərabərlik yoxlamaq üçün istədiyiniz zaman sol və sağ arasında Siz, həqiqətən, bərabərdir istifadə edin. Belə ki, bərabər iki dəfə imza edib. Siz sağ təyin etmək istədiyiniz zaman sol, bir bərabər işarəsi istifadə edin. Belə ki, biz şeylərdir başqa nə edə bilər i bərabərdir əgər sıfır bərabərdir. Mən getmək bilər Mənim qıvrım aşırma açmaq və printf 0, backslash n, həyata, deyirlər. Amma necə bu xatırlayıram yol çəngəllər işləyə bilər. Və həqiqətən, yalnız məntiqi düşünmək. i bir sayı. Bu xüsusi bir tam var. Və az olacaq deməkdir 0, ya 0-dən 0 və ya daha çox. Belə ki, bu cür var örtük default halda. Və belə ki, biz yalnız kimi ola bilər Scratch, başqa, əgər ilə paylamaq və yalnız başqa deyirlər. Məntiqi, əgər proqramçı orada yalnız bilirik üç buketler olan daxil ssenari ilk fall-- bilər ikinci, ya üçüncü bu yoxdur case-- da əlavə dəqiq əlavə narahat orada əlavə məntiq. Just davam Burada başqa default halda. İndi irəli gedək Bu qənaət sonra etmək şərait conditions-- doğramaq nöqtə Biz böyük bir istifadəçi interfeysi, Mən isteyen deyiləm, çünki istifadəçi Bayaq qeyd etdiyim kimi. Amma ki, gözəl var. Biz sadə saxlamaq lazımdır. nömrəsi 42 cəhd edək. Və müsbət var. nömrəsini cəhd edək mənfi, 42 mənfi. dəyəri 0 cəhd edək. Və həqiqətən, işləyir. İndi, əvvəl problemləri ilə görürsünüz uzun, test şeyi üç dəfə yəqin ki, kifayət deyil. Siz yəqin ki, bir test etmək istəyirəm böyük nömrələri, bəzi kiçik nömrələri, bəzi künc hallarda, kimi biz onları təsvir etmək üçün gəlmək lazımdır. Amma indi, bu bir olduqca sadə proqram. Mən, məntiqi, olduqca əminəm üç hallarda düşür ki. Və həqiqətən, hətta baxmayaraq ki, yalnız Potensial downsides diqqət qeyri-dəqiqlik və daşması ildə CS50 bir çox problemi reallıq olduğu, biz narahat niyyətində deyil Bütün vaxt haqqında, daşması o məsələləri və qeyri-dəqiqlik, çünki, əslində, C, Bu, həqiqətən, bütün deyil ki, o şeyi qarşısını almaq üçün asan. Siz saymaq istəyirsinizsə böyük və daha böyük və daha böyük, Bu texnika var çıxır tez-tez deyilən şeylər cəlb istifadə edə bilərsiniz kitabxana, kodu kolleksiyalar ki, istifadə edə bilərsiniz ki, digər insanlar yazdı kimi digər dillərdə həqiqətən Java və digər Bu çox asan etmək daha yüksək saymaq. Belə ki, həqiqətən bu təhlükələr bəzi istifadə dili funksiyası. Və gələn həftə alacağıq həqiqətən necə təhlükəli C görmək Siz düzgün istifadə etməyin, əgər ola bilər. Amma oradan, və Python, və JavaScript edəcək biz bəzi əlavə müdafiə on qat, və həmin risklərin az axır. Belə ki, edək bir az daha Bizim proqram maraqlı məntiq. Mənə irəli getmək və yaratmaq imkan Məntiqi adlı proqram yalnız mən bir ilə oynaya bilər faktiki məntiq, logical.c. Mən yalnız surəti və bəzi yapışdırıb lazımdır əvvəllər belə kod mən geri almaq Bu gözəl başlanğıc nöqtəsi. Mən char C. nə mənə bu dəfə edək bu C bir ad verəcəyəm Bu şərti yalnız çünki, istifadəçi bir xarakter almaq. Və kimi iddia edək Mən iştirak həyata alıram ki, Rm proqram aradan qaldırılması əvvəl proqram istifadəçi təhrik Bir fayl aradan qaldırılması üçün. Bunu necə edə bilər? C bərabərdir, mən demək istəyirəm , Quote dırnağı bağlamaq, bərabərdir y, sonra güman gedirəm istifadəçi yes seçdi ki. Mən yalnız yes çap gedirəm. Bu, həqiqətən yazılı idi aradan qaldırılması proqramı, biz fayl aradan qaldırılması bilər kod daha xətləri ilə. Amma biz sadə saxlamaq lazımdır. Else c bərabərdir əgər n-- bərabərdir və indi burada, mən demək gedirəm istifadəçi nəzərdə olmalıdır. Və sonra başqa, siz nə bilirik? Mən başqa bilmirəm istifadəçi yazın gedir. Beləliklə, mən yalnız demək gedirəm ki, bir səhv, nə o, həqiqətən, çap. Belə ki, nə burada olub? bir fundamental fərq var Mən keçmişdə etdiyiniz nə qarşı. Double quotes, ikiqat quotes, ikiqat quotes, və hələ, bir quotes, tək quotes. Bu zaman, C çıxır Bir simli yazmaq istəyirəm, Siz biz sizin kimi, ikiqat quotes istifadə etmək printf ilə bütün bu vaxt istifadə. Amma yalnız bir ilə məşğul olmaq istəyirsinizsə, bir xarakter, bir qondarma char, sonra həqiqətən bir quotes istifadə edin. proqramlaşdırılmış etdik sizə o əvvəl, ola bilər bu barədə narahat idi müəyyən dildə daşıyır. C, bu məsələ yoxdur. Mən char almaq və zaman mən istəyirəm bərabər istifadə edərək char müqayisə etmək y və ya n kimi məktub bərabərdir, mən, həqiqətən, bir quotes lazımdır. İndi irəli getmək və bunu bildirin. Nin irəli getmək və etmək edək Məntiqi dot məntiqi doğramaq. İndi istenir alıram. Belə ki, güman, daha yaxşı bir istifadəçi experience həqiqətən mənə nə burada. Amma yalnız kor-koranə gedirəm gözəl, OK, bəli üçün y deyirlər. yenidən run edək n heç bir üçün gözəl. Mən bilirəm ki, müəyyən insanlar kimi düşünək, Mənim caps əsas çox tez-tez bütün edir kilidi. Mən kapital Y daxil səhv yoxdur. OK, mən gözləyirəm dəqiq nə deyil. Həqiqətən, kompüter sözün nə edir Mən kontrol do-- bu bildirib kiçik y və kiçik n. Bu yaxşı kimi hiss etmir istifadəçi təcrübəsi, baxmayaraq ki. Mənə xahiş edək və qəbul aşağı halda və ya yuxarı halda bilərsiniz. bu çıxır ki, istədiyiniz bilər Not kimi bir şey demək, kimi sözün və ya C bərabərdir kapital bir sitat y bərabərdir. Çıxır, C yoxdur bu hərfi söz və ya. Amma iki şaquli bar var. Siz adətən Shift keçirilməsi üçün var Bir ABŞ klaviatura istifadə edirsinizsə, və şaquli bar hit qayıdacaqsınız əsas yuxarıda düyməsini basın. Amma bu şaquli bar şaquli bar deməkdir və ya. Əgər, əksinə, biz istədik Not kimi, demək və, biz işareti işareti edə bilər. Ki, burada heç bir məntiqi əhəmiyyət kəsb edir Çünki bir insan bəlkə bilmədi yazdığınız həm y və kiçik y və eyni xarakter kimi kapital Y. Belə ki, ya biz burada nə niyyətindəyik. Mən həm yerlərdə bunu əgər, və ya c So Paytaxt N, indi təkrar bərabərdir bərabərdir Məntiqi məntiqi təkrar etmək. İndi y edəbilərsiniz. Və mən yenə bunu edə bilərsiniz kapital Y, və ya kapital N. Mən əlavə əlavə edə bilər hələ birləşməsi. Belə ki, bu bir məntiqi İndi insofar proqram Mən məntiqi yoxlanılması alıram Bu dəyəri və ya bu dəyər. Mən mütləq yoxdur iki IFS və ya başqa ifs ilə gəlib. Mən, həqiqətən, bəzi birləşdirə bilər Bu şəkildə bir araya məntiq bağlı. Belə ki, bu daha yaxşı olardı sadəcə çox dizayn C aşağı halda y bərabərdir əgər söyləyərək, c paytaxtı Y bərabərdir əgər başqa, bəli çap c bərabərdir əgər başqa, bəli çap başqa sözlə lower--, siz yoxdur daha çox filialları. Siz ekvivalenti bəzi birləşdirə bilər bu yolu kimi məntiqi filialları. Belə ki, yalnız bir nəzər edək son tərkib hissəsi, bir final tikinti, ki, C imkan verir. Və biz geri gəlmək lazımdır hələ başqaları gələcək. Və sonra biz baxaraq bağlamaq lazımdır kod deyil düzgünlüyünə at Kodu əldə work-- lakin dizayn kodu və erkən həmin toxum əkmək. Mənə irəli getmək və Burada yeni bir fayl açmaq. Siz nə bilirik? Mən yenidən həyata gedirəm eyni proqram, lakin müxtəlif tikintinin istifadə edərək. Belə ki, özümü vermək tez mənə imkan giriş CS50.h daxil CS50 kitabxana üçün, printf üçün standart io.h. Mənə int əsas etibarsız verin. Və sonra burada, qoy Mənə irəli getmək və bunu. Char c əvvəl kimi, char almaq olur. Mən yeni tikintinin istifadə gedirəm nə xarakter, keçid now--? Belə ki, keçid növ kimi Bir qatar parçaları keçid. Və ya, həqiqətən, bu cür deyil bir başqa əgər, əgər başqa əgər, lakin bir qədər fərqli yazılı. A switch bu kimi görünür. Siz keçid, və sonra nə xarakter və ya siz baxmaq istəyirəm sayı, sonra bəzi buruq aşırma kimi Scratch, yalnız bu məhsulları nə demək. Və sonra müxtəlif hallarda var. Siz əgər başqa istifadə etməyin. Siz sözün söz halda istifadə. Və bu kimi bir şey demək olardı. Belə ki, bir kiçik y halda, və ya kapitalın Y halda, irəli getmək və bəli çap. Və sonra keçid çıxmaq. Bu belədir. Biz tamamlayın. belə danışmaq, əgər Else, aşağı halda n, və ya kapital N, sonra irəli getmək və çap Həyata heç bir, sonra pozub. Else-- və bu cür default halda indeed-- printf səhv, və yalnız baxmayaraq, yaxşı tədbir üçün məntiqi bu fasilə lazım deyil biz sonunda istəyirik, çünki hər halda keçid, İndi keçid həyata qırılma alıram. Belə ki, bu bir az fərqli görünür. Lakin, məntiqi, bu həqiqətən ekvivalent. Və niyə istifadə edir digər üzərində bir? Bəzən, yalnız şəxsi üstünlük, bəzən estetik, Bu nəzər əgər indi bir şey var üçün belə bu Məcəllənin okunabilirlik. Mən demək, bu ki, ağla heç vaxt code otağında bizə çox yeni. Amma bu yalnız cür olduqca. Siz kiçik y, paytaxt Y görmək aşağı halda n paytaxt N default, yalnız cür jumps bir şəkildə siz həyata arguably, bəlkə ki, əvvəlki misal IFS və şaquli bar ilə, və başqa ifs, ola bilər. Belə ki, bu şəxsi həqiqətən məsələsidir seçim, həqiqətən, və ya okunabilirlik, kodu. Amma funksionallıq baxımından, mənə imkan irəli getmək və keçid, dot çizgi etmək switch, indi, kiçik y yazın Paytaxt Y, kiçik n, kapital N, ki, çünki David, yeniden heç bir xarakter. gözlənildiyi kimi ki, x, səhv edək. Və logically-- və bu bir şey deyil Mən, ümumiyyətlə belə tavsiye ederim biz yalnız cızma etdiyiniz Bu xüsusiyyətləri bəzi səthi. Bu aydın ola bilər zaman Özünüzü, klaviatura aşağı oturmaq necə işləyir? Bu nə edərdiniz? olmaması haqqında gözəl şey bir laptop və ya masa üstü, və ya giriş bir compiler ilə kompüter, və bu kimi bir kod redaktoru ilə, demək olar ki, həmişə bu cavab bilər yalnız çalışır özünüz üçün suallar. Məsələn, ritorik əgər əl sual idi, Siz unutmaq əgər nə olur Sizin break hesabatları? Hansı həqiqətən, Bunu şey çox ümumi, baxmaq deyil, çünki kimi, həqiqətən, onlara lazımdır. Onlar, həqiqətən, tam olmayan bir mötərizə və ya buruq kimi fikir brace edir. Nin irəli gedək və Kodu compile və görürük. Belə keçid, dot çizgi keçid etmək. aşağı halda yazın edək y, top halda, daxil edin. Mən y yazılmış. proqram yox, bəli dedi, səhv, sanki onun mind dəyişir edildi. nə olar, çünki bu cür idi bir keçid ilə ilk haldır ki, matçında mahiyyətcə deməkdir hey kompüter, altında bütün kodu icra. Və demək yoxsa break, və ya fasilə demək deyil, və ya fasilə demək deyil, kompüter əsəcək gedir o xətləri bütün vasitəsilə qədər onların hamısı icra bu buruq brace olur. Belə ki frenler, həqiqətən, vacibdir. Amma burada bir paket, zaman Şübhə, bir şey keçir. Bəlkə ilk kodu saxlamaq, və ya əlavə fayl saxlamaq Siz həqiqətən narahat olduğunuz halda qədər messing və bərpa olan Bildiyiniz iş çalışır. Amma hər şeyi cəhd edin. Və bəlkə də, kimi qorxma kompüter edə bilər nə, və ya bir şey qırmaq bilər ki. Siz həmişə geri dönmek bilər bir əvvəlki versiyası. Belə ki, baxaraq son qoy kod dizayn. Biz yazmaq üçün bu imkanı var şərait və yazmaq loops, və dəyişənlərin və zəng funksiyaları. Belə ki, səmimi, biz geri gözləyirik biz, Not ilə bir həftə əvvəl idi bir az çekici mətn ilə də olsa Not artıq mühit imkan verir. Amma biz əldə etdik necə tez hiss Bu belə ki, lüğət, in endirmək üçün bir az gedir, Biz indi bu söz istifadə edə bilərsiniz ki daha maraqlı proqramları yazmaq üçün. Və bir körpə addım götürək ki doğru olaraq belə. Mənə davam edək Burada yeni bir fayl yaratmaq. Mən bu zəng etmək üçün gedirəm prototype.c və təqdim ilk dəfə, qabiliyyəti Öz funksiyalarını etmək. Əgər bəziləri ola bilər Scratch ilə bunu, vasitəsi yaratmaq bilərsiniz Not öz xüsusi blokları, və sonra yer onları sürükleyin yerdə C. istədiyiniz Və ən proqramlaşdırma dil, tam edə bilərsiniz that-- öz funksiyalarını etmək Onlar artıq yoxdur, əgər. Belə ki, məsələn, mənə irəli gedək və cs50.h daxildir, və daxildir standart io.h, int əsas etibarsız. İndi biz bir var getmək üçün hazır tutucu. Mən çap şeyi saxlamaq insanların adları bu gün kimi. Və like-- hiss gözəl ola bilməz, əgər orada print adını funksiyası idi? Mən printf istifadə etmək yoxdur. Mən xatırlayıram yoxdur bütün format kodları. Nə mən, ya nə , Məndən əvvəl kimsə etmədi bir funksiyası adlanır çap yaratmaq adı bir adı verilmişdir ki, sadəcə çap? Başqa sözlə, mən, hey, demək kompüter, mənə bir string vermək Belə istifadəçi xahiş, CS50 get string funksiyası vasitəsilə. Hey, kompüter, ki, simli qoymaq sol tərəfində dəyişən, və bu s zəng. Və sonra, kompüter hey, davam və şəxsin adı, görülən ki, çap. İndi, bu, gözəl çünki olardı Bu proqram, tutarlı adlı bunu ehtimal nə mənə deyir o funksiyasının adları yolu ilə. Mənə getmək və prototip etmək daxil edin edək. Və təəssüf ki, Bu uçmaq niyyətində deyil. Prototype.c, line 7, karakter 5, səhv, gizli bəyannamə funksiyası print adı C99, C99 yanlışdır C versiyası deməkdir ki, 1999-cu ildə çıxdı. Bu hamısıdır. Mən bilmirəm nə Bütün bu hələ deməkdir. Amma qırmızı səhv tanımaq yoxdur. Bu olduqca aydın deyil. Və bu ilə görünür Burada yaşıl xarakteri, məsələ print adı ilə açıq paren s, yaxın paren, yarı kolon. Amma gizli bəyannamə funksiyası biz qısa əvvəllər gördünüz. Bu ki, sadəcə deməkdir cingilti Mən demək nə bilmir. bu ki, mən bir söz söz istifadə etdiyiniz görüldü və ya əvvəl tədris heç vaxt. Və mən onu öyrətmək lazımdır bu funksiya nə deməkdir. Mən irəli getmək və bunu gedirəm. Mən irəli getmək və həyata keçirilməsi üçün gedirəm Print adını öz funksiyası. Aşağıdakı kimi Mən ki, demək gedirəm Bu, printf, salam, yüzdə yoxdur s, backslash n, adı, yarı kolon. Mən yalnız nə idi? Belə ki, çıxır Öz funksiyasını həyata biz növ bəzi borc Əsas eyni strukturu biz yalnız oldum ki, qəbul üçün verilən və mən bilirsiniz çıxarmaq və olduqca çox nə sovuşdurmaq Mən keçmişdə yazılı etdik. Amma burada model bilərsiniz. Int, Main, Ləğv, biz ayrı tease lazımdır uzun əvvəl həqiqətən nə deməkdir. Amma bu gün üçün, yalnız paralellik bilərsiniz. Void, çap adı, string adı, belə ki, var bənövşəyi söz olan biz başlamaq olacaq bir qaytarılması növü zəng adı funksiyası, və sonra daxil. Belə ki, həqiqətən, biz çəkmək bilər kimi ötən həftə bu cür Bu adı və ya kimi biz istəyirik kodu alqoritm yazma gedir əsas alqoritm code biz yazmaq olacaq. Bu giriş edir. Bu, onun çıxış edir. Bu funksiya, çap adı, adını bir simli almaq üçün nəzərdə tutulmuşdur və ya nə olursa olsun, giriş kimi, sonra etibarsız. Bu heç bir şey geri deyil kimi simli almaq və ya int deyil almaq. Belə ki, geri mənə bir şey əldən olacaq. Bu, sadəcə bir var olacaq yan təsiri, belə danışmaq, bir şəxsin adı çap. Mən line 7, qeyd print adı zəng edə bilərsiniz. Line 10, mən müəyyən edə bilərsiniz və ya çap adını həyata keçirir. Amma təəssüf ki, ki, kifayət qədər deyil. Mənə davam edək qənaət sonra bu compile. Whoa, indi mən bunu etdik pis görünür. Belə ki, gizli bəyannamə funksiyası print səhvdir. Və yenə, daha səhvlər var. Amma hətta əvvəllər xəbərdarlıq kimi ilə overwhelmed almaq, və ya bir az kədərli bir çox görmək səhvlər, ilk yalnız diqqət ilkin çünki güc yalnız kaskad təsiri var. , Daha çox xüsusi C, və ya cingilti So hələ print adı tanımır. Və çünki cingilti var dizayn cür lal edir. Bu, yalnız nə demək nə. Və yalnız üçün belə yoxdur Siz nə demək. Mən xətt dörd əsas müəyyən etmişik kimi biz olduqca tez-tez bunu etdik. Mən line 10 print adı müəyyən etdik. Amma istifadə çalışıram line yeddi çap adı. Bu da tezliklə hələ mövcud deyil ki. Mən ağıllı ola bilər, və kimi ola bilər, OK, belə ki, yalnız birlikdə oynamaq imkan, və çap adını hərəkət burada və yenidən tərtib edir. Aman Tanrım. Bu çalışmışdır. Bu kimi sadə idi. Amma məntiq məhz edir. Siz cingilti öyrətmək lazımdır nə ilk funksiyası müəyyən edir. Sonra istifadə edə bilərsiniz. Amma səmimi, bu hiss sürüşkən yamacında kimi. Belə ki, hər dəfə run bir problem daxil, mən yalnız deyiləm vurğulamaq və kodu kopyalayın gedir Mən onu kəsmək və burada onu yapışdırıb yazdı. Və şübhəsiz ki, biz bilər bəzi ssenarilər contrive burada bir funksiyası bilər başqa zəng etmək lazımdır. Və yalnız hər qoymaq bilməz hər yuxarıda funksiyası. Belə ki, orada çıxır Daha yaxşı həlli. Biz bu ola bilər. Və səmimi, bu, ümumiyyətlə, gözəl və rahat və yaxşı dizayn Çünki, yenə ilk əsas qoymaq, Yalnız yaşıl bayraq tıklandığında kimi əsas, ki, funksiyası ki, ismarıcları icra olur. Belə ki, həmçinin qoymaq bilər fayl üst bu ki, siz və ya hər hansı zaman digər insan fayl baxır Siz neler bilirik yalnız əsas ilk oxuyaraq. O çıxır ki, biz cingilti deyə bilərsiniz fəal, hey, cingilti, xətti dörd, Mən həyata keçirilməsi üçün söz bir funksiyası adlanır Print simli adlı adını alır Adı giriş, və gəlirlər heç bir şey, etibarsız kimi. Mən ətrafında almaq lazımdır sonra həyata. Burada əsas gəlir. İndi line 9 istifadə edə bilərsiniz Main Print Adı çünki cingilti nəhayət ki, imanın, Bu müəyyən qarşılaşacaq Print adı həyata keçirilməsi. Belə ki, mənim fayl qənaət sonra, imkan Mənə davam və prototip etmək, bu dəfə yaxşı görünür. Dot prototip, mənə bildirin, çizgi irəli getmək və bir ad yazın. David, hello David, Zamila, salam Zamila və həqiqətən, indi işləyir. Belə ki, burada tərkib hissəsi biz etdik ki xüsusi kimi, xüsusi funksiyası etdi Scratch blok biz zəng edirik. Amma Not fərqli olaraq burada siz yalnız yaratmaq və istifadə başlamaq, İndi biz bir olmalıdır Daha xırdaçı az və həqiqətən cingilti məşq istifadə etmək, və ya gözləmək. İndi bir kənara, bütün bu dəfə niyə biz, o cümlədən iman yalnız kor-koranə olmuşdur standart io.h o cümlədən CS50.h və? Bəli, bu çıxır, bir neçə digər şeylər arasında, bütün bu dot saat var baş faylları, faylları olmaq. Onlar danışmaq faylları header edirik. Onlar hələ də C. yazılı ama onlar fayl müxtəlif növü istəyirik. İndi, siz olduqca çox kəsb edə bilər Cs50.h daxilində deyil ki, bütün bu kimi bəzi bir-liners deyil Print adını funksiyaları üçün, lakin string almaq üçün alın Float və bir neçə başqaları. Və oxşar prototipləri var, standart io.h daxilində bir liners, indi printf üçün Öz Print adı funksiyası. Belə ki, başqa sözlə, bu bütün vaxt biz sizin yalnız kor-koranə çıxarmaq və sovuşdurmaq edilmişdir daxildir, bu daxildir ki, nə olub? Həmin ipuçları yalnız cür nə funksiyaları kimi cingilti etmək , Həqiqətən, yalnız həyata keçirilir başqa müxtəlif fayllar başqa sistemi. Beləliklə, biz print adını həyata etdik. Bu bu yan təsiri yoxdur ekranda bir şey çap. Amma bu, həqiqətən deyil geri mənə bir şey əl. biz getmək necə bir proqram həyata ki, geri mənə bir şey əl edir? Yaxşı, bu cəhd edək. Mənə davam və həyata keçirilməsi edək bir fayl deyilən return.c belə ki, biz necə bir şey nümayiş edə bilər kimi string almaq, və ya int almaq, həqiqətən qaytarılması deyil istifadəçi geri bir şey. Nin irəli getmək və int əsas etibarsız müəyyən edək. Və yenə, gələcəkdə alacağıq ki, int ki boşluğu izah həqiqətən edir. Amma bu gün, biz lazımdır verilən üçün almaq. Mən irəli və printf getmək üçün gedirəm yaxşı bir istifadəçi experience üçün, x. Və sonra mən gözləmək gedirəm istifadəçi get int x mənə vermək. Və sonra mən irəli getmək üçün gedirəm və kvadrat x çap. Belə ki, yalnız bir zaman adətən klaviatura, insanlar az kök istifadə klaviatura simvolu hakimiyyətə təmsil etmək of, və ya eksponent. Belə ki, kvadrat x i edir. İndi mən bunu gedirəm. Mən x nə do-- bilər kvadrat? x kvadrat x dəfə x. Və biz etdik bu bir müddət əvvəl artıq bu gün. Bu kimi hiss etmir bütün çox irəliləyiş. Siz nə bilirik? ki fikir bəzi leverage edək abstraksiya son dəfə. əgər gözəl olmazdı adlı bir funksiyası var dəqiq ki, yoxdur kvadrat? sonunda hələ ki, gün, eyni riyaziyyat yoxdur. Amma mücərrəd edək alaraq üz fikir bir sıra vurulur başqa, yalnız bir ad vermək, kimi bu dəyər kvadrat. Və başqa sözlə, da C, bir funksiyası yaratmaq imkan dəqiq ki, yoxdur adlı kvadrat. Bu kvadrat adlandırmaq olacaq. Bu int almaq olacaq. Və biz lazımdır yalnız olacaq Mənim cari olaraq, n zəng. Amma biz istəyirik bir şey zəng edə bilər. Və bütün bu olacaq ki, sanki dönüşü, nə n dəfə n nəticəsidir. Amma, çünki Bir şey qaytarılması olan biz sizin bənövşəyi söz deyil heç mən line 11, əvvəl görüldü, yalnız bu zaman boşluq deyə bilmərəm. Void Məsələn biz yalnız gördüm print adı deyil, yalnız deməkdir nəsə et. Amma geri mənə bir şey əl deyil. Bu halda, mən istəyirəm n dəfə n qayıtmaq üçün, və ya nə, ki sayı. Mən deyə bilmərəm, hey, kompüter, Mən etibarsız, heç bir şey qayıtmaq. Bu təbiət, bir int geri olacaq. Və belə ki, burada davam ki, bütün var. input kvadrat bir int olacaq. biz bunu istifadə edə bilərsiniz ki, bu var bir adı var, N. çıxış olacaq bir ad lazım deyil ki, bir int. Biz əsas onu tərk edə bilər, və ya kim var Məni istifadə edərək biz bu dəyər yadda öz dəyişən ilə istədiyiniz. Və yenə yalnız yeni burada söz Return edir. Mən yalnız bir riyaziyyat edirəm. Mən, həqiqətən, lazımsız olmaq istəyirdi, Mən int məhsul n dəfə n olur deyə bilər. Və sonra mən məhsul qayıtmaq, deyə bilər. Ancaq yenə mənim əvvəlki Bu yalnız olmayan yaxşı design-- kimi, niyə bir ad təqdim, simvolu, məhsul kimi, yalnız dərhal qayıtmaq? Bu, bir az təmiz bir az daha möhkəm, belə ki, yalnız geri n dəfə demək, danışmaq n, tamamilə bu xəttin xilas. Bu oxumaq üçün yalnız az code var səhvlər az imkanı. Və bu halda görək həqiqətən indi işləyir. İndi getmək üçün gedirəm irəli və geri edir. Uh-oh, funksiyası gizli bəyannamə. Mən əvvəl heç bir böyük, bu səhv etdi. Mənə yalnız yazın edək, və ya qeyd və surəti, eyni funksiyası prototip, və ya imza, burada funksiyası. Və ya bütün funksiyası hərəkət edə bilər. Amma bir az tənbəl var. Belə ki, nə olacaq. İndi mənə geri edək yenə çizgi geri nöqtə. x 2. x kvadrat 4 edir. x 3. x kvadrat 9 edir. Və funksiyası görünür indi iş üçün. Belə ki, fərq burada nə var? Mən kvadrat deyirlər bir funksiyası var Mən giriş qoymaq bu halda. Mən bir çıxış geri almaq. Və hələ, əvvəllər, əgər Mən digər nümunə açmaq Əvvəllər yaranan , Prototype.c adlı idi Mən print adı, olan belə danışmaq, etibarsız döndü Yoxsa heç bir şey geri, və sadəcə bir yan təsiri var idi. Belə ki, nə burada olub? Yaxşı, funksiyası hesab yalnız bir an üçün simli almaq. Biz funksiyası istifadə etdik aşağıdakı şəkildə string almaq. Biz bir funksiyası almaq etdik string kimi, cs50.h daxildir standart io.h, int, əsas, etibarsız daxildir. Və sonra hər dəfə mən var indiyə qədər get string adlanır Dedim bir şey string s, kimi get simli, çünki simli almaq olur Bu get.c-- almaq simli zəng edək özü ki, mən bundan sonra simli qaytarır vergül istifadə və salam demək, faiz s, backslash n, s. Belə ki, bu eyni nümunə, Həqiqətən, biz əvvəllər idi. Belə ki, simli bir dəyər qaytarır almaq. Amma bir an əvvəl çap string bir dəyər qayıtmaq deyil. Bu, sadəcə bir yan təsiri var. Belə ki, bu bir fundamental fərqdir. Biz müxtəlif gördüm İndi funksiyaları növləri, olan bəzi qayıdıb dəyərlər, olan bəzi yoxdur. Belə ki, bəlkə string və ya int və ya float var. Və ya bəlkə yalnız etibarsız var. Və fərq bu funksiyaları ki, məlumat almaq və bir dəyər qayıtmaq həqiqətən masa geri bir şey gətirilməsi, belə danışmaq. Belə ki, irəli getmək və bir final set baxmaq , indi, hissi verir nümunələri necə biz bilər, həqiqətən, mücərrəd daha yaxşı, və daha yaxşı və daha yaxşı və ya daha çox, üçün, və daha çox, və daha çox , Nəticədə, daha yaxşı kod yazmaq üçün. Nin irəli getmək və ruh edək Not, aşağıdakı. Mənə davam və daxil edək CS50.h və standart io.h. Mənə davam və verək əsas özüm bir int, etibarsız. Və mənə irəli getmək bu cough.c zəng edək. Və mənə irəli və yalnız gedək Not kimi, öskürək / n çap. Mən bu üç dəfə etmək istəyirəm. Mən, əlbəttə, yalnız gedirəm surəti və üç dəfə yapışdırıb. İndi etmək gidiyorum dot çizgi öskürək öskürək. nin özümü bir az daha çox otaq verək Burada, öskürək, öskürək, öskürək, daxil edin. artıq açıq-aydın var bir yaxşılaşdırılması üçün imkan. Mən kopyalanamaz və yapışdırılır sonra bir neçə dəfə bu gün. Mən nə qədər Amma bu yalnız idi kimi bir çox simvol yazın var. Mən hələ dəyişib nə Kodu o xətləri var. Bu üç xətləri, eynidir olan tənbəl hiss və həqiqətən, və yəqin ki, doğru bir yanaşma deyil. nə tərkib hissəsi ilə So biz bu kodu yaxşılaşdırılması bilər? Biz surəti və yapışdırıb code yoxdur. Və həqiqətən, heç bir zaman hiss Özünüzü çıxarmaq və sovuşdurmaq, və hətta kodu dəyişən deyil odds daha yaxşı bir yol var var. Və həqiqətən, var. Mənə davam edək loop üçün etmək, baxmayaraq ki, syntax deyil bilər hələ təbii gəlir. sadəcə, bu üç dəfə nə aşağıdakı kimidir etməklə Mən təcrübə bu bilmək baş verir. Amma biz indi nümunələri bir sıra var. Və siz online görürsünüz daha istinadlar. Bu ki, xətt 6 sintaksis təkrar Not kimi çox blok, aşağıdakı üç dəfə təkrar edin. İndi bir az sehrli var. Amma bu daha çox olacaq, və daha çox tanış. Və təkrar olacaq line səkkiz üç dəfə Mən əgər etmək öskürək yenidən tərtib ki, dot öskürək, öskürək, öskürək, öskürək doğramaq. Bu hələ eyni şəkildə işləyir. Belə ki, bütün gözəl və yaxşı. Amma çox Abstrak deyil. Bu mükəmməl doğru deyil. Amma orada kimi hiss bir fürsət ola bilər dünya kimi start cür Scratch, ki, burada semantika əlavə etmək Mən yalnız loop üçün yoxdur və bir funksiyası olduğunu deyir öskürək, və ya öskürək etmir. Siz nə bilirik? Mənə bir olmaq üçün cəhd edək daha az soyuq, və həqiqətən bir funksiyası yazmaq bir yan təsiri var, bu öskürək zəng. Və heç bir daxil edir və çıxış kimi heç bir dəyər qaytarır. Amma bunu nə bilirik? Bu şeylərdir printf edir dırnağı bağlamaq quote, öskürək. İndi burada mən gedirəm irəli və int üçün getmək üçün, i, i plus plus, sıfır olur i az 3. Mən olan printf nə gedirəm arguably aşağı səviyyədə həyata keçirilməsi detal. Mən öskürək necə qayğı yoxdur. Mən yalnız öskürək funksiyası istifadə etmək istəyirik. Mən yalnız öskürək zəng etmək üçün gedirəm. İndi dichotomy bilərsiniz. Əgər deyilsə, siz bir funksiyası zəng zaman Bu tamamilə gözəl, giriş vermək istəyirəm. Yalnız açıq paren, yaxın etmək paren, və siz tamamlayın. Bir funksiyası müəyyən, və ya Bir funksiyasının prototip elan Siz əvvəlcədən bilirsinizsə bu deyil hər hansı arqumentlər etmək niyyətindədir, orada o mötərizədə etibarsız deyirlər. Və müəyyən edir ki, siz təsadüfən sui-istifadə edəcək. Mənə davam və öskürək edək. Və, əlbəttə, mən səhv etdik. Dammit, ki, var gizli bəyannamə. Amma ki, gözəl var. Bu, asan fix var. Mən yalnız prototip ali lazımdır Mənim fayl Mən, həqiqətən, istifadə edirəm çox. Belə ki, indi mənə öskürək yenə gözəl etmək edək. İndi işləyir. öskürək, öskürək, öskürək, öskürək olun. Belə ki, biz, həqiqətən, olduğunu hesab edə bilər artıq bu problem mühəndislik. Və həqiqətən, biz. Bu yaxşı deyil bir proqram namizədi üçün hazırda refactoring və nə etdiyini iyerarxik parçalanma adlanır harada bəzi kodu almaq və sonra belə ki, siz cür amil şeyi, onlara daha semantika isnad etmək, və nəticədə uzun müddət təkrar. Amma doğru bir bina blok var daha mürəkkəb proqramları biz başlayacaq uzun əvvəl yazılı Bizə söz üçün imkan verir hansı ilə daha yaxşı kod yazmaq üçün. Və həqiqətən, əgər görək biz daha bu ümumiləşdirmək bilməz. Bu bir az Topal görünür ki, mən, əsas, loop üçün bu lənətləmək haqqında narahat ehtiyac, və təkrar öskürək zəng. Niyə yalnız öskürək deyə bilməz üç dəfə öskürək edin Başqa sözlə, niyə bilməz yalnız öskürək və bunu giriş verir? Niyə yalnız, deyə bilmərəm Əsas öskürək üç dəfə. İndi, bu cür sehrli edir. Burada çox iterativ var. Və bu, həqiqətən, bir körpə addım var. Lakin qabiliyyəti demək line səkkiz üç dəfə öskürək, yalnız çox daha çox oxunaqlı edir. Və plus, mən bilmək yoxdur və ya öskürək həyata necə qayğı. Və həqiqətən, daha sonra müddətli və final layihələr üçün, Bir layihə ilə həll əgər bir sinif yoldaşı və ya iki sinif yoldaşları, Siz olacaq ki, həyata lazımdır var, və ya iş bölmək istəyirəm. Və qərar istəyirəm olacaq əvvəlcədən, kim nə olacaq, və hansı ədəd? Və bu gözəl ola bilməz əgər, məsələn, yazı MAIN pulsuz, görülən almaq. Və roommate və ya ortaq ümumiyyətlə, öskürək həyata qayğısına qalır. Bu bölmə, bu abstraksiya divarları, abstraksiya və ya qat əgər siz super güclü olacaq , Xüsusilə böyük çünki daha mürəkkəb proqramları və sistemləri, Bir çox insanlar yaratmaq üçün imkan verir şeyi birlikdə və nəticədə bu şəkildə birlikdə işlərini stitch. Lakin, əlbəttə, biz İndi öskürək düzeltmek lazımdır. Biz öskürək demək lazımdır ki, hey, siz nə bilirik? Siz lazımdır olacaq input-- belə etibarsız, lakin int və indi. Nin irəli getmək və daxil edək int öskürək. i sıfır olur. i neçə dəfə azdır. Mən üç əvvəl bildirib. Amma mən istəyirəm nə deyil. Mən ümumiləşdirilmiş ediləcək öskürək istəyirəm tekrarlamalar bir sıra dəstəkləyir. Belə ki, həqiqətən, Mən istəyirəm n var, nə user mənə deyir. İndi irəli getmək və çap öskürək demək olar. Və nə olursa olsun sayı istifadəçi keçir Hesab edirəm ki, bir neçə dəfə təkrarlamaq olacaq. Günün sonunda So proqram eynidir. Amma bu məhsulları bütün qeyd hətta başqa fayl ola bilər. Həqiqətən, Mən bilmirəm an necə printf həyata keçirilir. Mən almaq necə bu anda bilmirəm simli, və ya int almaq, və ya float almaq həyata keçirilir. Mən istəmirəm Mənim ekranda onları görmək. Olduğu kimi, mən diqqət başlayan alıram Mənim proqram deyil, bu funksiyaları. Belə ki, həqiqətən, tezliklə sizin kimi oxşar kodunu faktoring başlamaq, biz hətta öskürək hərəkət edə bilər ayrı fayl? Başqası bunu tətbiq edə bilər. Və sizin və proqram olmaq çox gözəl və çox oxunaqlı, arguably, həqiqətən dörd orada line proqramı. Belə ki, indi irəli gedək və daha bir dəyişiklik. Qeyd ki, mənim prototip üst qədər dəyişdirmək üçün var. Mənə belə ki, düzeltmek bildirin Mən yelled almaq deyil. öskürək olun, mənə bir dəfə öskürək run edək daha çox hələ də eyni şey bunu. Amma indi, biz bir var fark bir final versiyası üçün tərkib hissəsi. Siz nə bilirik? Mən mütləq yalnız öskürək istəmirəm. Mən daha çox ümumi bir şey etmək istəyirəm. Belə ki, nə? Mən bunu istəyirəm. Mən çox Not kimi etmək istəyirəm , Görən bir demək blok, lakin yalnız bir şey dəfə bəzi sayını deyirlər. Mən bir çox xüsusi simli demək istəyirəm. Və buna görə də, mən deyil yalnız öskürək demək istəyirəm. Mən demək istəyirəm nə string qəbul edilir. Belə ki, qeyd, mən ümumiləşdirilmiş sonra bu indi demək yaxşı ad kimi hiss Bunun üçün ödəniş kimi, Not fərqli olaraq, iki dəlilləri edir. Bir simli edir. One bir int edir. Mən onlara keçid edə bilər. Mən yalnız cür ideyası kimi ilk simli demək və sonra neçə sonra dəfə. Void hələ deməkdir heç bir şey geri deyil. Bu yalnız vizual yan [kimi təsiri? Jordan?] böyle bir şifahi yan təsiri. Bu hələ bir şey n dəfə deyil qədər 0, lakin n bərabər deyil. Bu n ümumi dəfə deməkdir. Və sonra yalnız çap nə ki, simli edir. Mən, həqiqətən, ümumiləşdirilmiş etdik kodu bu xətt. Belə ki, indi, necə həyata yoxdur öskürək funksiyası? Mən etibarsız öskürək edə bilərsiniz. Və mən hələ necə edə bilər neçə dəfə öskürək istəyirəm. Amma nə bilirik? İndi demək ayaqla zərbə olar. Mən demək zəng edə bilərsiniz söz öskürək, n keçən. Mən də həyata keçirmək istəyirsinizsə, yalnız əyləncə üçün, bir asqırmaq funksiyası, Mən dəfə bir sıra asqırmaq bilərsiniz. Mən, çünki n yeniden edə bilərsiniz Bu çərçivədə və ya əhatə dairəsi ki, m qeyd yalnız bu funksiya daxilində mövcuddur. Və n bu çərçivədə yalnız burada bu funksiya daxilində mövcuddur. Belə ki, biz geri gəlmək lazımdır çərçivəsində bu məsələlər. Və burada, yalnız, demək gedirəm achoo, sonra n dəfə yarı kolon. İndi, yalnız borc lazımdır Bu funksiya burada imza. Belə ki, öskürək doğru deyil. Void asqırmaq indi doğru deyil. Və mən hələ demək lazımdır. Mən demək, demək gedirəm string s, int n, yarı kolon. Mən artıq engineering etdik Bu proqramın həyata heck. Bu deyil mütləq bu demək yazılı zaman nə etməli proqramların hətta sadə. ki, açıq-aydın bir şey edin həqiqətən qısa, həqiqətən sadə, və yenidən həyata yol çox kodu istifadə edərək. Amma həqiqətən görmək və lazımdır vaxt bu nümunələr geri baxmaq və həyata, oh, bu addımlar Biz, həqiqətən, ümumiləşdirmək etdi bir şey amil, Günün sonunda qədər Mənim code həqiqətən olduqca ağlabatan deyil. Mən üç öskürək istəyirsinizsə, çünki dəfə sonra, üç dəfə asqırmaq Mən sadəcə, bu təkrar gedirəm proqram öskürək etmək və öskürək axır. Mən üç öskürək var və üç asqırarkn. Və bu əsas paradiqma, Siz, biz getmək bilər necə həqiqətən bir proqram həyata keçirir. Amma yalnız indi nə edək biz bu zaman bütün bunu etdik və nə final ədəd bəzi Bu sadə əmri arxasında. Günün sonunda, biz sizin Bizim compiler kimi cingilti istifadə edilmişdir. Biz mənbə yazılı olduğunuz Kodu onu konvertasiya maşın kodu daxil cingilti vasitəsilə. Və biz yalnız olun istifadə etdik belə ki, bizim tuş vuruşlarını asanlaşdırmaq üçün biz yadda yoxdur ki, Cingilti özü o incantations. Amma əslində, Marka bunu nədir? Və öz növbəsində, nə Cingilti həqiqətən bunu? biz sadələşdirilmiş var, baxmayaraq ki, çıxır deyərək bu gün müzakirə Siz mənbə kodu almaq kimi keçmək verir bir compiler, giriş maşın çıxdı kodu var çıxır orada bir neçə müxtəlif addımlar. Və tərtib çətir olur addımlar bütün dəstə müddəti. Amma yalnız tease bildirin bu həqiqətən tez. Bu bunu etdik çıxır ki, daha çox şey bir proqram run hər dəfə, və ya hər dəfə mən bu gün bir proqram tərtib edir. Belə ki, preprocessing aiddir C proqram bir şey şeylərdir, biz təkrar görəcəksiniz kimi, ki, bu hash simvolu ilə başlayır və ya burada hashtag simvolu deməkdir bir preprocessor direktiv var. Bu hey, bu halda, o deməkdir kompüter, bu fayl ilə bir şey Siz, həqiqətən, öz kodu tərtib əvvəl. Bu halda, hash daxildir, mahiyyətcə, deyərək C yolu, hey kompüter, məzmunu almaq getmək və cs50.h burada yapışdırın. Hey kompüter, almaq getmək standart io.h məzmunu, ki, hər yerdə sabit, burada yapışdırıb. Belə ki, həmin şeylər ilkin emalı zamanı ilk. Və cingilti bizim üçün bütün bu yoxdur. Və belə darn yoxdur sürətli, hətta deyil baş dörd fərqli şeylər görürük. Amma ilk addımdır. Nə həqiqətən gələn olur? Yaxşı, növbəti rəsmi addım tərtib olunur. Və bu çıxır ki, bir proqram tərtib texniki gedən deməkdir mənbə kodu, biz sizin stuff bir şey, bu gün yazılı edilmişdir bir şey, montaj kodu çağırıb ki, bir az fərqli görünür. Və əslində, biz real sürətli görə bilərsiniz. Mənə, həqiqətən, mənim IDE daxil edək. Mənə irəli və açıq hello.c gedək ki, ilk proqram olan biz bu gün başladı. Və mənə irəli getmək və cingilti bir run edək fərqli az, cingilti-s, hello.c, həqiqətən olan gedir mənə bir fayl hello.s verir. Və biz heç vaxt yəqin ki, olacaq yenə kodu bu cür görürük. Bir aşağı səviyyədə alsaq CS61 kimi sistemləri sinif, bir çox daha çox olacaq kodu bu cür. Amma bu toplaşmaq dilidir. Bu X86 montaj dili ki, yatan olunur CPU CS50 IDE həqiqətən anlayır. Bu sirli kimi bu bir şeydir baxmaq kompüter olduqca yaxşı anlayır. Sub q, bu çıxmaq deyil. hərəkəti var. Burada funksiyaları var zəng x ORing, bir hərəkət, bir eklenti, bir pop, geri. Belə ki, orada bəzi çox aşağı səviyyədə təlimat CPU'lar başa düşürük ki, ki, Mən əvvəllər alluded. Bu nə Intel Inside edir. nümunələri var adet sıfır və olanları ki, Bu arcanely mətni xəritəsi, lakin qədər yaxşı adına təlimat, belə danışmaq. Bu zaman nə baş verir Siz kodu tərtib edir. Siz montaj almaq həyata dil olan Üçüncü addım toplaşmaq deməkdir ki, montaj kodu daxil nəticədə, maşın kod adet sıfır və olanları deyil, biz yalnız bir an əvvəl gördüm mətn. Belə ki, pre-emal ki, tapa bilərsiniz edir əvəz və bir neçə başqa şeylər edir. Tərtib mənbə edir C indeksi, mənbə kodu biz toplaşmaq, yazırdı ki, biz yalnız nəzər kodu. Montajı ki toplaşmaq edir zeroes və olanları kodu CPU həqiqətən olacaq ki, günün sonunda başa düşürük. Və bağlayan son addım ki, yenə us-- olur belə sürətli biz hətta deyil Deyir ki, xəbərdarlıq hey kompüter, bütün almaq adet sıfır və olanları ki, Davudun kodu tərtib nəticəsində və bu halda onun əsas funksiyası. Və kompüter hey, almaq getmək adet sıfır və olanları bütün CS50 heyəti yazırdı ki, CS50 kitabxana daxili. David ilə olanlarda qarışdırılır. Və hey kompüter, bütün adet sıfır almaq getmək və başqasının il yazırdı olanları ki, bundan printf üçün. Və o əlavə bütün şey, biz sizin ki Mənim adet sıfır və olanları var CS50 heyətinin adet sıfır və olanları, printf adet sıfır və olanları, və başqa bir şey biz istifadə edirik. Onlar bir araya almaq proqram Salam, bu halda, çağırıb. Belə ki bundan sonra, biz yalnız söz tərtib istifadə edin. Və biz verilən olacaq zaman Biz bu o deməkdir ki, sizin proqram tərtib, demək hey pre-emal etmək, montaj və birləşdirən. Amma əslində bir şirəli stuff var başlıq altında orada gedir. Və xüsusilə əgər , Maraqlı bir vaxt almaq Siz poking başlaya bilərsiniz ətrafında bu aşağı səviyyədə. Amma indi, ki, həyata Bu gün üçün takeaways arasında olduqca sadəcə bir prosesin başlanğıcı, rahat əldə salam dünya kimi bir şey. Həqiqətən, biz bu gün nə çox əlbəttə super sürətli endirmək deyil. Və bəzi olacaq vaxt və bəzi təcrübə. Və odds, siz sort edəcək sizin klaviatura hit istədiyiniz və ya ekran fəğan. Və bütün OK. Baxmayaraq ki, bəlkə üçün cəhd edin qədər kitabxana bunu. Və nəticədə, will Olsa qadir başlamaq edilə yaxşı kodu, həm də nümunələri görən Siz yazdıq ki, səhvlər Siz etdik ki. Və proses kimi çox bir TF olmaq və ya CA kimi, daha yaxşı almaq üçün başlamaq lazımdır və o nümunələri görən daha yaxşı, və yalnız həll nəticədə öz problemləri. Bu vaxt, çox olacaq Bizə dəstək borc və siz almaq üçün bu yolu. Və yazmaq-up problemlərin bütün Siz vasitəsilə doğru yola olunacaq əmrləri bütün Mən, əlbəttə, bilirik ki, artıq təcrübə bir çox lakin oldu ola bilər İndi bir baş üzərində. Və tamamilə gözəl var. Lakin, nəticədə, siz olacaq nümunələri ortaya görmək üçün başlamaq üçün. Və bütün keçmiş olsun dəfə axmaq məlumat, parantez kimi, və qıvrım aşırma, və yarı-colons, və stuff, səmimi, ki, bütün deyil intellektual maraqlı. Bu məqsədi deyil Hər hansı bir giriş sinif alaraq. Fərq gedir fikir var. Bu loops, və şərait və funksiyaları, və daha güclü abstraksiya, və kodu faktorinq, və yaxşı dizayn və yaxşı stil və nəticədə düzgün Sizin kodu ki, nəticədə var ən əhəmiyyətli olacaq. Belə ki, növbəti həftə, bu olacaq biz ilk Not gördüm fikir və indi tərcümə var C. Biz başlamaq lazımdır ilk təqdim etmək Kursun real dünya domains. Biz təhlükəsizlik dünyanın diqqət lazımdır və daha çox xüsusi, kriptoqrafiya məlumat Scrambling sənətidir. İlk arasında problemlər özünüz kənarda yazmaq olacaq sintaksis bəzi oynayan və bəzi məntiqi həll problemlər, nəticədə uzun əvvəl, həqiqətən dırmaşma, və ya şifrelemek ki, və nəticədə məlumat decrypt. Və hər şey etdik bu gün olacaq kifayət qədər aşağı səviyyəsi, yalnız imkan gedir ABŞ, bir və bir almaq və yuxarıda doğru daha bir addım hələ ən maraqlı kodu yazmaq. ki, gələn həftə daha çox. [Video playback] -Ne Haqqında mənə deyə bilərsiniz Siz onu gördüm son dəfə idi? -Nə Mən, həqiqətən, demək olar? Mən demək, hər hansı digər kimi idi pre-istehsal məşq, bir şey var idi istisna olmaqla, dedi mənə vurulmuş çox sonunda. -Bu CS50 idi. -Bu, Bir cut hər kəs məşq böyük iş. -Bu Nahar? -Bəli, Siz və mən bir az bir sendviç qamarlamaq. Mənə yalnız ilə debrief edək David həqiqətən tez. David? David? [END playback]