[MUSIC ifa] DAVID J. MALAN: Bütün hüququ. Bu CS50 və bu həftə iki başlanğıc. Belə ki, bizə bir səhv ilə bu gün başlasın. A bug, əlbəttə, bir bir proqramda səhv, və çox almaq lazımdır Bu konsepsiya ilə tanış Siz proqramlaşdırılmış heç etdik əgər əvvəl. pset0 və indi pset1. Amma bir şey hesab edək ilk bir az sadə. I ki, burada bu proqram , əvvəlcədən birlikdə atdı və bu çap edilməlidir ki, iddia Printf istifadə edərək ekranda 10 ulduz, lakin yəqin bir şəkildə arabası var. Dəqiqləşdirilməsi nəzərə alaraq ki, 10 ulduz çap etməlidir lakin yəqin deyil, nə səhv iddia olardı? Bəli? Belə ki, bir səhv bir off var, və bu nə deməkdir? OK. Əla. Belə ki, biz müəyyən etdik i sıfır dəyəri başlamaq, və biz, 10 n dəyərini müəyyən etdik lakin biz çox və ya bərabər daha az istifadə etdik. Və bu ki, səbəb iki simvol və yalnız bir simvolu, riyaziyyat kitab kimi, Siz yoxdur ki, ifadə edən bir yoldur bir xarakter bərabərdir. Belə ki, az deməkdir, lakin Siz sıfır hesablanması başlamaq əgər, ancaq bütün yol saymaq 10 vasitəsilə və bərabər, Siz kurs davam edirik cəmi 11 şeylər saymaq. Və belə ki, 11 ulduz çap olacaq. Belə ki, nə bu üçün bir düzeltme ola bilər? Bəli? Belə ki, yalnız çox az tənzimləmək və ya yalnız az bərabər, və bəlkə, mən iddia var çox başqa bir həll. Başqa nə edə bilər? Bəli? Belə ki, 1 üçün bərabər başlamaq, və az və ya bərabər daha az tərk. Və səmimi mən iddia edirəm ki, tipik insan üçün, Bu yəqin ki, daha sadə deyil. 1 hesablanması başlamaq və 10 vasitəsilə count. Əsasən demək nə. Amma reallıq var proqramlaşdırma, biz gördük kimi, kompüter alim və proqramçılar ümumiyyətlə sıfır hesablanması başlamaq yoxdur. Və belə ki, bir dəfə gözəl Siz onu istifadə almaq. Sizin vəziyyəti ümumiyyətlə edəcək az kimi bir şey ola bilər. Belə ki, sadəcə məntiqi səhv ki, biz indi bilər düzeltmek və nəticədə compile Bu və yalnız 10 almaq. Yaxşı, necə burada səhv haqqında? Burada yenə, Mən ki, iddia 10 stars-- çap bir məqsədi line bu dəfə başına bir, lakin bu deyil. Biz təklif əvvəl nə Bu fix bu nə edir mən tərtib olsaydı vizual çap və bu proqram sizcə run? Bəli? Star. Bu belə bütün ulduzları Eyni line eşitdim edir, və sonra yeni xətt xarakter. Belə ki, cəhd edək. Belə ki, buggy-1, daxil etmək, və mən cingilti komanda oldu biz son dəfə söhbət. ./buggy-1, həqiqətən, Mən bütün 10 ulduz görmək Mən iddia baxmayaraq eyni xətt üzrə Mənim dəqiqləşdirilməsi üstün yalnız bir comment-da Mən bir başına etmək üçün nəzərdə ki, kodu line. Amma bu doğru görünür. Mən kimi indi line 15 görünür sonra ulduz çap və line 16 Mən çap alıram kimi görünür yeni xətt xarakter, və onlar həm indented edirik Mən aydın loop daxilində deyiləm. Mən ulduz bunu lazım deyil, yeni line, star, yeni xətt, star, yeni xətt? Bəli? Bəli, bir dil fərqli kimi Python, siz tanış değilseniz, abzas deyil kompüter əhəmiyyətli. Bu, yalnız insan məsələləri. Halbuki burada mən icad etdik xətləri belə 15 və gözəl görünür ki, 16 giriş, lakin kompüter qayğı deyil. Kompüter haqqında qayğı həqiqətən qıvrım aşırma olan kodu bu xətlər ətrafında. Belə ki, yalnız kimi clear-- var Scratch-- kodu həmin iki xətləri ki, icra olunmalıdır. O sarı Scratch puzzle biri kimi ədəd təkrar və yenidən. Mən əgər Belə ki, indi yenidən run program-- ./buggy-2-- Hm. Mən indi bir səhv var. Mən nə üçün unutmaq idi? Bəli, mən onu tərtib etməyib. Belə ki, buggy-2 olun. Belə bir fayl almadım əslində ikinci versiyası tərtib edir. Belə ki, indi maraqlı undeclared 2 deyil dəyişən. Biz 1 edirik. İndi arabası-1-- ./buggy-1-- etmək Onların hər biri eyni xətt üzrə. İndi bir istisna var Mənim bu ehtimal iddia ki, bu qıvrım aşırma lazımdır. Zaman əslində OK-- etdik əgər bölmə və ya textbooks-- qeyd qıvrım aşırma buraxmaq? Bəli? Dəqiq. Yalnız bir zaman kod line ki, ilə bağlı istəyirəm İlk Məsələn kimi loop. Bu mükəmməl qanuni qıvrım aşırma buraxmaq yalnız bir rahatlığı növ kimi Sizə compiler edir. Bəli? Yaxşı sualdır. Bu bir stil səhv hesab olunacaq? Biz CS50 kimi promote-- olardı style guide, olan URL ki, həmişə pset1-- edir qıvrım aşırma istifadə edin. Əlbəttə proqramlaşdırma yeni əgər. Reallıq biz deyilik ki, sizə qadağan gedir Bu şərait bunu. Amma yalnız alıyorsanız şeyi swing daxil, tamamilə yalnız həmişə buruq istifadə Siz onun asmaq almaq qədər aşırma. Yaxşı sualdır. Bütün hüquqlar. Belə ki, sonra bir səhv idi. Kifayət qədər sadə bir şey azı. Və hələ siz bu hesab bilər sağ, olduqca elementar? Bu, birinci həftə sort dilində baxaraq kimi, sizin hataları orada görürük. Amma reallıq bu var həqiqətən nümayəndəsi bəzi olduqca qorxulu problemləri ki, real dünyada yarana bilər. Belə ki, bəzi xatırlayıram bilər Siz texnologiya xəbər edin, və ya bəlkə hətta tutuldu Fevral ayında bu külək Apple ki, bu ötən ilin , həm də iOS bir səhv bir az etdi üzrə əməliyyat sistemi onların telefonlar, həmçinin Mac OS əməliyyat sistemi onların masa üstü və noutbuk. Və bu kimi başlıqları gördüm. Və sonra, Apple bu səhv düzeltmek üçün vəd, və çox tez, iOS düzeltmek etdi lakin sonra nəticədə Mac OS sabit həmçinin. İndi bu başlıqları heç biri tək, həqiqətən, əsas problem nə aşkar, lakin səhv nəticədə salındı SSL bir səhv, təhlükəsiz sockets qat. Və uzun hekayə qısa, Bu proqram ki, bizim browser və digər proqram nə üçün istifadə? Mən SSL bildirib ki, əgər cəlb zaman sizə , HTTPS ilə başlayır ki, bir URL ziyarət sonra nə SSL ilə bağlı ola bilər? Encryption. Belə ki, haqqında danışmaq lazımdır önümüzdəki günlərdə bu. Encryption, sənəti məlumat Scrambling. Amma uzun hekayə qısa, Apple zaman bir səhv etdi əvvəl , SSL onların həyata keçirilməsində nəticədə həyata keçirir software HTTPS və ya max URL'leri də var əlaqələri. Olan nəticə ki, sizin əlaqələri potensial bilər ələ. Və əlaqələri edildi mütləq şifrelenmiş deyil Siz arasında bəzi pis oğlan olsa Siz və hedef veb edən Bu istifadə etmək üçün necə bilirdi. İndi Apple nəticədə olunub bir nəhayət bu fix, və təsviri onların fix bu idi. Secure nəqliyyat doğrulamak bilmədi əlaqədar həqiqiliyini. Bu məsələ xitab etdi itkin qiymətləndirmə addımlar bərpa. Belə ki, bu çox əl dalğalı izah edir sadəcə biz berbat olduğunu söyləyən üçün. Sözün bir var buggy idi ki, kodu line onların SSL həyata keçirilməsi və Siz online getmək və bu üçün axtarış Siz həqiqətən tapa bilərsiniz orijinal mənbə kodu. Məsələn, bu bir ekran shot edir yalnız kifayət qədər böyük fayl bir hissəsi, lakin bu yəqin adlı funksiyası SSL əlaməti server əsas mübadiləsi yoxlamaq. Və bir dəstə edir dəlilləri və giriş. Və biz diqqət fikrində deyilik orada minutia çox çox, ancaq daxili kodu diqqət əgər edək funksiyası ki topmost və ki, zoom. Siz artıq şübhəli bilər nə səhv ola bilər Siz heç bir fikrim yoxdur, hətta ola nəticədə siz aradığınız nə. Bir anormallıq növü var burada olan nədir? Bəli, Mən, həqiqətən, sevmiyorum iki keçid görünüşünü bilmir. Açığı, mən həqiqətən bilmirəm nə goto vasitələri uğursuz, lakin onların iki olan geri geri. Yalnız cür mənə rubs intellektual yanlış yol, və biz zoom əgər həqiqətən yalnız xətləri, bu C. edir Belə ki, Apple kodu bir çox özü C yazılmış, və bu yəqin həqiqətən equivalent-- edir deyil ki, olduqca abzas üçün versiyası, lakin siz tanımaq əgər fakt heç bir qıvrım aşırma var ki, nə Apple həqiqətən görünür ki, kodu yazdı bu kimi. Mən həyata zoomed və yalnız mən etdik Bu mənada abzas sabit heç bir qıvrım aşırma, ki, əgər ikinci keçid ki, sarı var uğursuz heç nə icra edir. Bu ilə bağlı deyil yuxarıda əgər vəziyyət. Belə ki, hətta daha, əgər kifayət qədər anlamaq nə bu mümkün ola bilər bunu ola bilir, bu ki, hər Bu xətlərin hər şəraitdə çox əhəmiyyətli bir addımdır yoxlanılması prosesində Sizin data əslində şifrelenir. Belə ki, bu bir atlama addımlar, ən yaxşı fikir. Amma biz bu var, çünki ikinci keçid, sarı uğursuz çünki biz bir dəfə sort estetik harada sol hərəkət məntiqi an, nə bu xətt üçün deməkdir ikinci keçid aşağıda kodu Sizcə uğursuz oldu? O, həmişə atlandı olacaq. Belə ki, gotos, ümumiyyətlə, sonra qaşqabağını töküb üzünü olunur biz, həqiqətən, daxil deyil səbəblərdən, və həqiqətən CS50 biz etməyin Bu bəyanat keçid öyrətmək, lakin keçid hesab edə bilər mənası go jump kimi uğursuz kodu bəzi digər hissəsi. Başqa sözlə atlanmaq tamamilə bu son xətt, və bu axmaq nəticə yalnız idi ki, sadə səhv yəqin ki, kimsə bir nəticə çıxarmaq və çox bir sovuşdurmaq dəfələrlə bütün ki, iOS və Mac OS təhlükəsizlik ələ həssas çox vaxt pis uşaqlar tərəfindən. Apple qədər nəhayət bu sabit. İndi bəzi həqiqətən əgər iOS və ya Mac OS köhnə versiyasını çalışan, Siz gotofail.com getmək bilər kimsə müəyyən bir haqqinda mahiyyətcə müəyyən etmək üçün program Sizin kompüter hələ həssas edir. Və səmimi, bu halda, yəqin ki, yaxşı bir fikirdir Telefonunuzu yeniləmənin və ya Bu nöqtədə sizin Mac. Amma, yalnız vəsiyyət yalnız necə bu aşağı səviyyədə artması ətraflı və ədalətli sadə fikir bilərsiniz həqiqətən qərarlar tərcümə və problemlər ki, Bu iki halda da affected-- milyonlarla insan. Rəhbərliyi artıq bir söz. Bölmə bu gələn bazar günü başlayacaq. Siz bir e-poçt alacaq bölmə barədə həftəsonu, hansı nöqtədə Bu resectioning prosesi Siz var əgər başlayacaq Siz indi həyata bəzi yeni münaqişələr. Belə ki, bu hər il baş verir və biz gələcək günlərdə yerləşdirmək olacaq. Office hours-- bir saxlamaq yoxdur Burada bu cədvəli göz. Bu həftə bir az dəyişir, xüsusilə start zaman və yeri belə müraciət yoxdur ki, ofis saat üçün mal əvvəl növbəti dörd gecə heç. İndi qiymətləndirilməsi üzrə bir söz, Siz problem dalış xüsusilə də bir və kənarda qoyur. Dəqiqləşdirilməsi başına Belə ki, Bu ümumiyyətlə baltalar boyunca biz iş qiymətləndirmək. Sayt aiddir nə dərəcədə kodu həyata keçirir xüsusiyyətləri tələb Bizim dəqiqləşdirilməsi ilə. Başqa sözlə, nə qədər bir parça set siz off yemək idi. Siz onu bir üçüncü mi, bu bir yarım, bu 100%. Bu doğru deyil, hətta, Siz nə qədər cəhd etmədi? Ki, səviyyəsi tutan belə səy və məbləği olan siz off dişlədi problem set problemləri. Bu bir Correctness-- üçün nə dərəcədə sizin kodu uyğun bizim spesifikasiyası və hataları pulsuz. Belə ki, düzgün işləyir? Biz bəzi giriş vermək, onu edir biz gözləmirik ki, çıxış verir? Design-- indi bu ilk xüsusilə keyfiyyətli olanları, və ya insan hökm tələb olanları. Biz bir heyət var niyə və həqiqətən, bu çox tədris yoldaşları və əlbəttə köməkçiləri. Nə dərəcədə sizin edir kodu yazılı? Və yenə bu çox deyil keyfiyyətcə qiymətləndirilməsi ki, sizinlə işləyəcək həftə bi-directionally gəlib. Belə ki, siz almaq zaman yalnız sayısal skorlari, həm də yazılı skorlari, və ya çap rəy, və ya İngilis dili sözlər geribildirim yazılı. Biz sizə sürücü istifadə edəcəyik nə həqiqətən yaxşı yazılı kodu doğru. Mühazirə və bölümünde, biz çalışacağıq kimi tez-tez biz can-- kimi yazaraq qeyd etmək nə bir proqram edir yalnız düzgün və funksional yaxşı, həm də yaxşı nəzərdə tutulmuşdur. Ən səmərəli ola, və ya edə bilər hətta ən gözəl ola bilər. Hansı stil gətirib çıxarır. Style nəticədə estetik qərar. Yaxşı seçdin Sizin dəyişənlərin adlar? Siz düzgün kodu indented var? Buna görə də yaxşı baxmaq, və deyil, Bu bir insan üçün asandır müvafiq oxumaq üçün onun düzgünlüyünə. İndi ümumiyyətlə tədris başına, biz hesab Beş ballıq şkala üzrə bu şeylər. Və mənə point ev çəkic imkan üç həqiqətən yaxşıdır. Çox tez insanlar bunu hesab etməklə başlayın. Onlar üç çıxmaq zaman bəzi pset üçün düzgünlüyünə beş və onlar lənətləmək ki, mən 60% olacaq olan mahiyyətcə D və ya E. edir Bu yol deyil biz bu nömrələri hesab. Üç nə həqiqətən, yaxşı, və biz ümumiyyətlə başında gözləmək müddəti siz əldə edirik, əgər ki, bəlkə three's-- bir dəstə bir neçə Sərgilər, fours-- bir neçə və ya bir neçə ikilər, fours-- bir neçə ki, başlamaq üçün yaxşı bir yer. Və biz bir qədər uzun görmək kimi zamanla yuxarı trajectory, Siz xüsusilə yaxşı bir yerdə deyilik. Biz üçün istifadə formula çəki şey mahiyyətcə tədris başına bu, yalnız biz o deməkdir ki, düzgünlüyünə daha çox ağırlıq verir. Çox tez-tez düzgün deyil, çünki ki ən çox vaxt alır. İndi mənə etibar. Siz ən azı find-- edəcək bir pset-- ki, sizə zaman 90% sərf problemin 10% üzərində işləyir. Və hər şey sort işləri bir və ya iki hatalar istisna olmaqla, və o bugs var ki, gecə gec qədər saxlamaq. Həmin olanlardır ki, sort xilas. Amma bu yuxu sonra, və ya ofis saat iştirak və ya, online sualları soruşaraq Siz 100% qol almaq zaman, ki, niyə biz çəki ən düzgün. Bir az dizayn və ki, bir az daha stil. Amma mind-- stil saxlamaq bəlkə asan deyil bu off yemək Bu style guide kimi. İndi, bir daha ciddi akademik düzlük barədə arayış. CS50 uğursuz xüsusiyyətini daşıyır Ad heyəti ən böyük istehsalçısı olan hallarda demək olar ki, hər il tarixən. Tələbələr fırıldaqçı, çünki bu deyil CS50 bir daha hər hansı digər sinif daha, lakin işin təbiəti ilə, elektron var ki, bunun üçün baxmaq, və ki, əslində biz kompüter elm adamları, Mən biz təəssüf ki, demək olar onu aşkar çox yaxşı. Belə ki, bu real olaraq nə deməkdir? Belə ki, tədris başına, Kursun fəlsəfəsi həqiqətən ağlabatan aşağı qaynatmaq deyil. Bu xətt arasında var Öz bir iş etdiklərini və bir az əldə bir dost ağlabatan yardım, və açıq üçün ki, iş sizin dost və ya ona sizin kodu göndərilməsi o sadəcə bilərsiniz ki, və ya hüququ həyata borc. Və xətti keçir biz sinif tərtib ki,. , Proqramının bax nəticədə xətləri üçün biz ağlabatan olaraq cəlb edən və əsassız davranış, lakin bu, həqiqətən boil edir Mahiyyəti aşağı iş ehtiyacı sonunda öz olun. İndi dedi ki, Heuristic var. Siz imagine-- bilər, çünki ofis saat və visuals və video biz göstərilən beləliklə far-- CS50 həqiqətən əməkdaşlıq kimi olmaq deməkdir və kooperativ və ictimai mümkün. Işbirlikçi kimi ciddi kimi. Amma bu ifadə edərək, Heuristic, Siz proqramı görəcəksiniz kimi, Bəzi problem qarşılaşdıqda zaman ki. Siz kodu bəzi səhv var ki, həll edə bilməz, bu, sizin üçün məqbul başqası üçün kodu göstərəcək. Hətta sinif A dostu, yoldaşı ofis saat siz yanında oturan, və ya işçi heyətinin üzvüdür. Lakin onlar sizə onların kodu göstərə bilər. Başqa sözlə, bir Sizin question-- cavab Mən help-- oh, burada mənim kodu deyil lazımdır. Bu bir göz atın və Siz nə bu anlamak. İndi, əlbəttə, var bir yol aydın oyun Mən sizə göstərmək lazımdır vasitəsi bu sistem bir sual olan əvvəl mənim kodu. Siz mənim sizin kodu göstərmək bir sual olan əvvəl. Amma yenə proqramının bax bu xətt harada finer ətraflı. Sadəcə, indi şəkil boya və kimi şəffaf mümkün pay biz son illərdə olduğu, Bu Reklamlar Board hallarının sayı ki, CS50 artıq olmuşdur Son yeddi il. 14 hallarda bu ən son payız ilə. Alan şagirdlər baxımından, 20 bir tək tələbələri bu son payız. 33 limiti var idi bir neçə il əvvəl tələbələr. Kimə çox təəssüf ki, artıq burada kampus. Bu faizi kimi cəlb tələbələr class tarixən 0% arasında seyr edir demək, yalnız olan 5.3% üçün Bu il bir çağırışdır. Və sonuna doğru, nə Biz bir çatdırmaq nə etmək istəyirəm biz yalnız FYI-- ilə müqayisə dd-- ki şagirdlər üçün ədalət olan müvafiq xətti aşağıdakılardır. Biz bütün cari müqayisə bütün keçmiş missiyaları qarşı təqdim Son bir çox il. Biz ətrafında Google necə çox bilmək və kodu depolar tapmaq online, müzakirə forumları online iş sites. Tələbə onu tapa bilərsiniz əgər, biz, şübhəsiz ki bilərsiniz kimi çox biz təəssüflə kimi tapa bilərsiniz. Beləliklə, nə siz tədris görəcəksiniz baxmayaraq ki, bu təəssüf bənddə deyil. Mən əlbəttə bilərsiniz yüksək qiymətləndiririk və biz bütün var heyəti kurs kimi etmiş zamanla bu və ya bu özü, əlbəttə ki, zaman kimi nə bilirik həyat zaman yol olur bir gec gecə deadline-- yalnız bu sinif, lakin another-- etdiyiniz zaman tamamilə tükənmiş, qeyd oransız sıra digər şeylər etmək. Siz bir nöqtədə da edəcək əlbəttə, pis, bəlkə gec həyat gecə qərar. Proqramın hər Belə ki, Bu bənddə var, edilməsi, belə ki, əgər ərzində 72 saat bəzi yoxsul qərar, bu qədər öz və mənə çatmaq və Kursun rəhbərlərindən biri və biz bir görüşmə edəcək. Biz hər şeyi idarə edəcək məcburi ümid bir daha olmaq tədris an və ya həyat dərsi, və bir şey deyil xüsusilə kəskin ramifications Siz burada bu çizelgeleri görmək bilər. Belə ki, bir çox ciddi ton var. Bizə yalnız bir neçə fasilə edək saniyə gərginlik qırmaq üçün. [MUSIC ifa] DAVID J. MALAN: Bütün sağ, belə ki, necə idi segue üçün? Bu gün əsas mövzular. Olan ilk abstraksiya deyil. Olan başqa olacaq olan səmimi data nümayəndəliyi necə deyərək həqiqətən quru yolu biz bilər problemlərin həlli və düşüncə haqqında getmək problemlərin həlli haqqında? Belə ki, Not gördüm, və siz var C pset1 bəlkə artıq görüldü Siz yalnız istifadə edə bilərsiniz ki, funksiyaları printf kimi, digər insanlar il keçmiş sizin üçün yazmışdır. Siz həmçinin öz funksiyaları yaza bilərsiniz. Və ola bilər, baxmayaraq ki, pset1 səmimi C bu görülən və Siz, həqiqətən, yazmaq lazım deyil Bu problem, çünki öz funksiyası bəlkə zor isə ilk görürsünüz glance-- nəticədə ilə həll edilə bilər kodu bütün bir çox xətləri. Amma ki baxımından bildirib öz funksiyasını yazmaq, vermək C etmir ki, həyata Bu qabiliyyəti. Mən bugünkü mənbə kodu getmək üçün gedirəm , artıq mövcud online və mən irəli və açıq getmək üçün gedirəm funksiyası 0.C adlı bir proqram up, və funksiyası sıfır biz bir neçə şeyi görəcəksiniz. Ilk xətləri 18 vasitəsilə 23 mənim əsas funksiyası var. Və indi biz oxumaq başlayan edirik ki, biz Tez yazılı deyilik ki kodu, ancaq mən əvvəlcədən yazdıq və ya bir problem siz müəyyən ki, olan ala bilər əvvəlcədən yazılmış. A yaxşı yol başlamaq üçün başqasının kodu oxu əsas funksiyası axtarmaq edir. Harada ki, giriş anlamaq point proqram çalışan üçün, və sonra orada məntiqi edin. Belə ki, bu proqram yəqin izləri kolon izlədi adı. Biz sonra GetString istifadə CS50 kitabxana bir simli və ya söz və ya söz almaq üçün klaviatura istifadəçi. Və sonra bu var şey burada PrintName. İndi PrintName bir deyil C. ilə gəlir ki, funksiyası Bu standart io.h. deyil Bu cs50.h. deyil Bu eyni fayl daha var. Mən aşağı diyirləyin əgər bildiriş bir bit xətləri 25 27-- üçün Bu şərh yalnız bir pretty yolu ulduz və slashes istifadə edərək kodu. Bu multi-line Şərh və bu yalnız və mavi mənim təsviri bu funksiya nə. 31 vasitəsilə xətləri 28 Çünki, Mən bir super sadə funksiyası yazdıq kimin adı PrintName edir. Bu necə bir çox edir dəlilləri deyəcəksiniz? Belə ki, bir arqument bir var, çünki mötərizə içində verilmişdir arqument. Olan növü simli deyil. Hansı PrintName demək bu qara qutu kimi edir ki, ya funksiyası Giriş simli kimi. Və String adı rahat adı olacaq. Not S deyil, N, lakin adı. Belə ki, PrintName nə edir? Bu gözəl sadə. Just kodu biri xətti üçün printf, lakin yəqin onu baskı out "Salam" belə və belə. Harada belə və belə dəlil gəlir. İndi burada böyük bir yenilik deyil. Həqiqətən, mən bilər bir proqram qəbul etdik kod biri xətti ilə yazılmışdır burada bu qədər qoyaraq, və bir şey üçün dəyişdirilə ki, altı və ya yeddi və ya daxildir aşağı burada kodu xətləri bütün yol. Amma bir və praktiki var abstraksiya kimi tanınan prinsipi. Kind yeni daxilində encapsulating bir adı var ki, funksiyası, və daha yaxşı hələ ki, adı sanki Bu nə deyir. Mən deyil printf demək xüsusilə təsviri. Mən bir yaratmaq istəyirsinizsə puzzle parça, yaxud I və əgər bir funksiyası yaratmaq istəyirik ki, kiminsə adını yazdıran bunu gözəllik Mən, həqiqətən, ola bilər, ki, funksiyası adı vermək Ki, nə təsvir edir. İndi bir giriş edir ki, Mən özbaşına adını etdik, lakin çox gözəl təsviri əvəzinə bir az daha olan S. və kimi ümumi etibarsız, indi üçün, yalnız deməkdir bu funksiya deyil ki, bir şey mənə geri əl. Bu GetString kimi deyil ki, sanki bir simli mənə geri verir kimi biz kağız parçaları ilə etdi sinif yoldaşları ilə keçən həftə, əksinə bu yalnız bir yan təsiri var. Bu ekran bir şey görüntüler. Günün sonunda, əgər mən edə bilərəm funksiyası-0, ./function-0, biz mənim ad üçün xahiş ki, görürsünüz. Mənim ad aparılan növləri David yazın, və. Mən Rob ilə daha bunu əgər, demək olacaq "Hello, Rob." Belə ki, bir sadə fikir, lakin bəlkə Bu ruhi-dən extrapolate proqramları almaq kimi , bir az daha mürəkkəbdir və siz bir yığın yazmaq istəyirəm kodu və zəng ki, kod invoke bəzi təsviri ki, kod PrintName kimi ad, C bizə bu imkanları ödəyə yoxdur. Burada başqa bir sadə misal var. Məsələn, mən bir açmaq əgər return.c adlandırılır fayl, mən burada etdik nə görürsünüz. Bu əsas funksiyası ən printf edir. Mən ilk özbaşına başlamaq sayı 2 x adlı dəyişən. Mən x indi "çap % I "x dəyəri keçən. Mən yalnız bu nə deyirəm. İndi mən yalnız cəsarətlə deyiləm printf ilə iddia. Mən ki, dəyəri x cubing edirəm və mən bir funksiyası zəng ilə bunu adlı kub keçən arqument kimi x, və sonra çıxış qənaət dəyişən özü, x. Mən x dəyəri clobbering alıram. Mən əsas deyiləm x dəyəri nə zəng nəticə Bu kub funksiyası var. Və sonra mən yalnız bəzi çap tüklü stuff burada mən nə deyirəm. Beləliklə kub nədir? Əsaslı nə görürsünüz Burada müxtəlif. Mən funksiyası təqdim etdik əvvəl kimi bir ad. Mən arqument üçün bir ad müəyyən etdik. Bu n əvəzinə adı adlanan bu zaman, lakin mən istəyirəm bir şey zəng edə bilər. Amma bu fərqlidir. Sol bu şey. Əvvəllər nə söz idi? Boys. İndi açıq-aydın int var. Belə ki, nə bəlkə də üz var? Void bildirir Halbuki sort heçliyə, və bu halda idi. PrintName şey döndü. Bu bir şey idi, lakin geri mənə əl vermədi Mən qoymaq ki, bir şey bərabər işarəsi sol tərəfdən kimi mən line 22 burada etdik. Mən line 30-daxil demək əgər, nə yəqin eyham ki nə kub haqqında mənim üçün yoxdur? Bəli? Bu tam qaytarır. Belə ki, geri mənə Hands kağız instansiya, bir parça bu barədə cavab yazıb. 2 Cubed, ya 3 Cubed, və ya 4 cubed-- Mən keçdi nə və necə bu həyata idi? Bəli, yalnız n dəfə n dəfə n Mən kub dəyəri bilər necə. Belə ki, yenə super sadə fikir, lakin demonstrative indi biz funksiyaları yazmaq necə ki, həqiqətən bizə geri idi maraq ola bilər ki, dəyərlər. Son bir misal baxaq Burada funksiyası biri adlandırıb. Bu, məsələn, başlayır daha çekici almaq üçün. Belə ki, funksiyası bir, bu program-- bildiriş nəticədə GetPositiveInt adlı bir funksiyası çağırır. GetPositiveInt bir deyil CS50 kitabxana funksiyası, Amma biz qərar mövcud etmək istəyirəm. Beləliklə, biz sonra fayl aşağıya fırladın əgər, Mən həyata haqqında getdi necə görürsünüz müsbət int almaq və mən daha çekici demək bu layiqli çünki kodu xətləri sayı. Bu, sadəcə bir silly deyil az toy program. Bu, həqiqətən, bəzi səhv yoxlanılması var və daha faydalı bir şey bunu. Siz gözden geçirmek görmədim etdik əgər Belə ki, Biz pset1 əlaqədar ki, videos, bu bir növüdür bilirik ki, ruhda oxşar C loop, şeyi Not növ edə bilərsiniz. Və bunu deyir. Bu çap. Sonra irəli getmək və n almaq bir int almaq və n onu saxlamaq, və saxlamaq təkrar və bunu daha belə uzun n az biridir. Belə ki, n az bir olacaq yalnız insan əməkdaşlıq deyil əgər. O yazaraq əgər 0 və ya -1 və ya -50 da, Bu loop saxlamaq niyyətindədir təkrar həyata. Və nəticədə, qeyd sadəcə dəyər qayıt. Belə ki, indi biz bir funksiyası var ki, gözəl olduğunuz olardı CS50 həyata əgər Sizin üçün CS50.h və CS50.c, lakin burada biz indi bilərsiniz özümüz həyata keçiririk. Lakin bəzi əsas detalları iki yapılan yorumlar. One-- niyə int bəyan etməyib n, line 29, Sizcə əvəzinə yalnız bunu burada bu, olan ilə daha ardıcıl Keçən həftə nə? Bəli? A yaxşı bir fikir. Belə ki, əgər biz bunu qoymaq idi burada, bu biz sanki var təkrar elan saxlamaq. Və özü ki, problem deyil, özlüyündə, biz yalnız lazımdır, çünki bir dəfə və sonra dəyəri biz hər halda yeni bir almaq olacaq. Amma yaxşı bir fikir. Bəli? Close. Mən n elan etdik, çünki Belə ki, line 29 loop kənarda, Bu ərzində əlçatan bütün bu funksiya. Not digər funksiyaları, çünki n bu buruq daxilində hələ də Burada aşırma. Əmin Belə ki. Dəqiq. Belə ki, bu nöqtəyə daha çox. Biz əvəzinə elan əgər n burada line 32, Bu tahmin çünki problemli başqa mən daxil olmaq üçün lazımdır? Line 34 və On thumb sadə qayda Yalnız bir dəyişən istifadə edə bilərsiniz ki, ən son qıvrım aşırma daxilində Siz bəyan. Təəssüf ki, line 34 bir line, çox gec Mən artıq bağlıdır, çünki line 33 buruq brace ki uyğundur line 30 buruq brace. Və bu deyərək bir yoldur Bu dəyişən int scoped olunur ki, yalnız daxili, danışmaq bu qıvrım aşırma. Bu yalnız onların xaricində mövcud deyil. Belə ki, həqiqətən, mən bunu əgər bu yanlış, mənə kodu saxlamaq imkan kimi səhv yazılıb That. Mənə davam və edə bilərəm edək funksiyası-1 və notice-- səhv. Bəyan identifikator n istifadə burada olan line 35-də. Və biz diyirləyin əgər daha başqa bir. Elan edilməmiş istifadə line 34 identifier n. Belə ki, compiler, cingilti, bu hiss yalnız baxmayaraq mövcud deyil aydın vizual var. Belə ki, bir sadə fix orada elan edir. İndi mənə diyirləyin bildirin fayl top. Nə kimi həyata atlamalar bir az fərqli olan məhsulları biz ötən həftə baxdı? Yalnız adı mən var, yalnız bunu Mən bəzi kəskin top up daxildir Mən deyiləm bir şey var bir prototip zəng. İndi bağrı benzer nə biz yalnız line 27-bir an əvvəl gördüm. Belə ki, müxtəlif çıxarmaq imkan mən bunu niyə səhv mesaj. Mənə davam və orada bu xətləri silin. Və belə ki, biz prototip haqqında heç bir şey bilirik. Bu faylı yeniden yapmak. Funksiyası bir olun. İndi, lənətləmək, dörd səhvlər. Nin birinci diyirləyin edək. Funksiyası gizli bəyannamə müsbət int almaq C99 etibarsız edir. C99 yalnız 1999 deməkdir dil versiyası Biz həqiqətən istifadə etdiyiniz nə olan C,. Belə ki, bu nə deməkdir? Yaxşı C-və daha çox xüsusi C pretty lal proqramları compilers-- var. Onlar yalnız var nə onlara ki, var ötən həftə həqiqətən tematik. Bu problem getmək əgər ki, Burada adı həyata haqqında, və mən adlı bir funksiyası zəng Line 20 burada GetPositiveInt, ki, funksiyası texniki deyil Bu compiler line 27 görür qədər mövcuddur. Təəssüf ki, compiler edir yuxarı, aşağı, sağ, sol şeyler, Göründüyü çünki belə GetPositiveInt həyata keçirilməsi, ancaq çalışır görür Burada onu istifadə etmək, yalnız fəğan bail-- olacaq bir səhv ilə bəlkə mesajı sirli, və həqiqətən fayl tərtib. Belə ki, qondarma prototipi burada etiraf lazımsız edir. Sanki, mən burada aşağı getdi və mən kopyalanır və bu yapışdırılır və mən burada onu qoydu. Void daha düzgün olardı, belə ki, biz will sözün seçin və bu dəfə yapışdırıb. Mən sözün sitemizi və yapışdırılır. Həqiqətən yalnız bir çörək qırıntı kimi. Compiler Bir az ipucu. Mən bunu nə bilmirəm , amma mən sizə vəd edirəm nəticədə mövcud olacaq ki,. Bu xətt ki, var line 16 giriş nöqtəli vergül ilə başa çatır. Bu dizayn lazımsız edir. Bəli? Sizin kitabxana keçid olmasaydı , oh yaxşı sual the-- üçün. Sharp header file inclusions daxildir. Olmalıdır demək olar ki, be-- lazımdır həmişə çox üst ola bir similar-- üçün fayl eyni səbəbi, bəli. Standart Çünki io.h sanki xətt bu kimi, lakin söz printf ilə, və onun dəlilləri və onun qaytarılması növü ilə. Və belə ki, kəskin etməklə daxil Burada, siz sözün bunu nə istəyirik məzmunu çıxarmaq və yapıştırma olunur kimsə başqa üst qədər yazdı. Bununla üçün sizin kodu cluing bu funksiyaları mövcuddur ki, fakt. Bəli? Absolutely. Belə ki, bir çox ağıllı və düzgün həll olacaq, siz nə bilirik? Mən bilmirəm nə prototip, lakin mən bilirəm Mən C yalnız başa düşürük ki, əgər lal və alt üst rethinks. Yaxşı nə istədiyini vermək bildirin. Onu yapışdırıb, ki kodu kəsilmiş top, indi aşağı əsas basmaq. Bu da problemi həll olardı. Amma siz çox asanlıqla ilə gəlmək bilər A B zəng etmək üçün lazım olan bir ssenari, və bəlkə B A. Bu geri çağırır recursion deyilən bir şey var və biz geri gəlmək lazımdır. Və ya yaxşı ola bilər şey, lakin siz mütləq bilərsiniz bu həll pozub. Və üstəlik, mən stylistically iddia, xüsusilə proqramları Bu uzun və bu uzun olmaq, yalnız super rahat üst əsas qoymaq Bu şey var, çünki ən proqramçılar haqqında qayğı gedir. Və belə ki, bir az təmiz, arguably, bu yol etmək üçün Mən ilk bunu bir prototip ilə hətta bir az görünür baxmayaraq ilk baxışda lazımsız. Bəli? Bağışlayın, siz Qaraçuxurlu deyə bilərsiniz? Siz yerlərdə keçid həyata keçirilməsi və prototip? Belə ki, yaxşı bir sual var. Əgər bu aşağı yenidən bəyan burada nə görmək edək. Mən bu yazmaq Belə ki, Burada, siz deyirsiniz. Oh, sorry. Louder? Hətta Qaraçuxurlu. Oh, yaxşı sualdır. Funksiyasını etibarsız olardı? Bilirsiniz, bütün bu illər sonra, mən sonra bir prototip qoymaq heç vaxt. Belə ki, funksiyası 1 etmək üçün imkan bunu sonra. [Muttering] DAVID J. MALAN: Oh, gözləyin. Biz hələ üst hər şey qoymaq lazımdır. Mən deyiləm, əgər ki, burada bu qədər bunu bildirin düzgün sual anlaşma. Mən, o cümlədən, hər şeyi qoyulması alıram əsas yuxarıda prototip, amma prototip qoyulması alıram həyata keçirilməsi aşağıda. Mən bir etmək əgər, mən alıram belə geri səhv istifadə olunmamış dəyişən n. Oh, var. Təşəkkür edirəm. Baxaq, biz bu xilas. Ki, fərqli bir səhv belə ki, ignore edək. Nin həqiqətən tez bu yeniden yapmak edək. OK, belə ki, data arqument deyil format String istifadə oh n, çünki var Mən burada bu dəyişdi. Bütün hüquqlar, biz bilirik nə cavab to-- bütün doğru gedir, burada biz gedin. Ah, müsbət thanks. Bütün sağ, mən bu kodu düzeltmek edəcək after-- bu səhv ignore Bu çalışır əmrində deyilirdi ildən cavabdır. Belə ki, yazmaq deyil nə yalnız etdik. Mən compiler şübhəli belə bir şəkildə yazılmışdır Sizin prototip məhəl ki, bədən, çünki, belə danışmaq, funksiyası artıq var ali icra edilmişdir. Mən, həqiqətən, məsləhətləşmək lazımdır compiler manual hər hansı digər varsa anlamaq üçün dolayısı, lakin ilk baxışdan yalnız çalışır və eksperiment, heç bir təsir var görünür. Yaxşı sualdır. Belə ki, indi irəliləmək hərəkət edək üz yan təsiri olan kimi bir şey ki, funksiyaları vizual printf ilə ekranda, lakin bir dəyər qayıtmaq deyil. Və funksiyaları geri var biz kimi dəyərlər yalnız bir neçə gördüm. Biz artıq, əhatə dairəsi bu anlayışı gördüm və biz təkrar bu görəcəksiniz. Amma indi, yenə, thumb qayda istifadə dəyişən yalnız istifadə edilə bilər ki, ən son açılan daxilində və biz qapalı qıvrım aşırma ki, misal gördüm. Və işarə kimi, bir ability-- var Bu, bəzi problemlərin həll edə bilər qlobal dəyişən qoyaraq bir fayl çox üst. Amma demək olar ki, bütün hallarda biz sonra çatmaq olardı, və həqiqətən belə getmək deyil İndi ki, həll. Indi üçün, belə ki, paket ki dəyişənlərin daxilində bu anlayışı var. Amma indi başqa baxaq həqiqətən axtarır quru yolu bəzi olduqca maraqlı həyata ətraflı. Biz məlumatı necə təmsil edə bilər. Və biz artıq bu baxdı Sinif ilk həftəsində. Binaries baxaraq, və ondalık özümüzü xatırladan. Lakin C var ki, ötən həftə geri müxtəlif data növləri və dəstələri daha, amma ən faydalı olanları İndi bu ola bilər. Baş verən A char, və ya xarakteri, bir byte, və ya səkkiz bit məlumat olacaq. Və ölçüsü ki var bir char yalnız bir byte edir. A bayt səkkiz bit, belə ki, bu o deməkdir ki, biz necə bir çox simvol təmsil edə bilər. Necə bir çox məktublar və ya Klaviatura üzrə rəmzləri biz bir byte ya səkkiz bit varsa. Həftə sıfır geri düşünün. Siz səkkiz bit varsa, neçə ümumi dəyərləri ilə təmsil edə bilər adet sıfır və olanları nümunələri? Daha One--. Belə ki, 256 məlumat əgər sıfırdan hesablanması başlanır. Belə ki, səkkiz bit belə biz əgər varsa , yenidən burada ikili ampüller idi Biz o işıq ampüller çevirmək bilər və 256 unikal nümunələri hər hansı off. İndi bu bir az problemlidir. İngilis və çox deyil Romantika languages, lakin əlbəttə ki, sizə təqdim zaman, üçün Məsələn, Asiya languages ​​olan kimi daha çox simvolları var Əlifbasının 26 məktubları. Biz, həqiqətən, lazım ola bilər bir byte daha çox. Və təşəkkürlə da Son illərdə cəmiyyət var istifadə qəbul edilmiş digər standartlar pulsuz birdən çox byte. Amma indi C, default üçün yalnız bir byte ya səkkiz bit edir. Bir tam, eyni zamanda, dörd bytes başqa 32 bit kimi tanınır. Hansı ən böyük mümkün nə deməkdir sayı, biz bir int ilə təmsil edə bilər yəqin? Bir milyard. Belə ki, dörd milyard vermək və ya almaq deyil. 2 32th hakimiyyətə, biz əgər heç bir mənfi nömrələri daşımır və yalnız bütün müsbət istifadə nömrələri, dörd milyard var vermək və ya imkanları almaq. A float, eyni zamanda, müxtəlif tipli Bu hələ bir sıra C. data növü, ancaq bir real sayı. Kəsir ilə bir şey. Və bu çıxır ki, C dörd bayt istifadə edir üzən point dəyərləri təmsil etmək. Təəssüf ki, nə qədər üzən point dəyərlər dünyada var? Neçə real nömrələri var? Sonsuz var sayı, və ki, məsələ integers bir sonsuz sayda var. Beləliklə, biz növ artıq edirik Burada özümüzü bir deşik qazma. Vasitəsi yəqin computers-- da them-- haqqında yazılı C azı proqramları yalnız kimi yüksək saymaq olar dörd milyard, vermək və ya almaq və üzən point dəyərləri yalnız yəqin dəqiq bir məhdud məbləği. Yalnız çox rəqəm sonra onların decimal point. Çünki əlbəttə, əgər yalnız 32 bit var, Mən biz getmək olacaq necə bilmirəm yəqin ki, real numbers-- təmsil nümunələri müxtəlif növləri ilə. Amma şübhəsiz ki, məhdud var belə nümunələri sayı, belə ki, burada da, bu problemlidir. İndi biz bir az problem qarşısını almaq olar. Bir float istifadə deyilsə, Bir cüt istifadə edə bilər C olan siz səkkiz bayt, verir adet sıfır yol daha mümkün nümunələri və olanları. Amma hansı gedir, hələ də məhdud deyil Siz proqram yazmaq əgər problem olmaq qrafik və ya xülya riyazi düsturlar. Beləliklə, siz həqiqətən istəyirəm bilər daha böyük saymaq. Uzun uzun gic named-- həmçinin səkkiz bayt və ya 64 bit edir, və bu, bir int kimi iki dəfə kimi uzun və uzun tam dəyəri var. Fun fact-- bir int, dörd bytes əgər adətən C uzun necə uzun? Həmçinin dörd bytes, lakin uzun uzun səkkiz bayt edir, və bu tarixi səbəblər üçün. Amma indi paket yalnız data var ki, bir kompüter üçün təmsil olunacaq elektrik enerjisi ilə fiziki cihaz, ümumiyyətlə sürücülük o adet sıfır və ones-- dəqiq məhdud məbləğlər ilə. Belə ki, problem sonra nə var? Yaxşı bir problem var tam daşması. Yalnız C, ancaq ümumiyyətlə kompüter. Məsələn, bu halda bir byte dəyər bir bit bu bütün səkkiz bit əgər olan sayı biridir. Nə sayı bu biz güman əgər təmsil Bu ikili bütün müsbət dəyərlər var? 255 və 256, çünki deyil sıfır aşağı sayı. Belə ki, 255 ən yüksək bir, lakin problem Mən istəyirdim ki, güman edilir Bu dəyişən arttırmayı ki səkkiz bit cəmi istifadə Mən arttırmayı istəyirsinizsə. Yaxşı mən əlavə qısa müddətdə Bu isə bütün bir, bəlkə yalnız visually-- təsəvvür edə bilərsiniz decimals-- istifadə bir balans kimi bir şey sol axını olacaq. Və həqiqətən, Mən sayı əlavə əgər bu bir, nə ikili olur geri sıfıra daşqınlar edir. Belə ki, yalnız bir int deyil use-- əgər, lakin bir byte integers saymaq bir proqramda, qısa müddətdə ismarıcları Siz 250 almaq 251, 252, 253, 254, 255-- 0, 255 sonra gəlir yəqin nə deyil bir istifadəçi gözləmək gedir. İndi isə point dünya üzən, siz də eyni problem var. Ən böyük bir sayı ilə çox deyil baxmayaraq ki, hələ bir məsələ var. Amma dəqiq məbləği ilə siz təmsil edə bilər ki,. Belə ki, bu nümunə bir nəzər edək burada da bugünkü mənbə kod dən float 0.c. Və bu super bildiriş sadə proqram ki, yəqin nə dəyəri çap lazımdır? Bu çap edir mərc nə yeni sintaksis bir az var baxmayaraq here? Belə ki, inşallah 0.1. Belə ki, bir-onuncu ekvivalent Mən 10 bölünür 1 edirəm, çünki. Mən cavab saxlanılması alıram bir dəyişən f çağırıb. Ki, dəyişən növü float, malik Mən yalnız təklif bir söz mövcud deyil. Biz əvvəl bu gördük, amma etdik bu printf bir səliqəli yolu cür neçə rəqəm müəyyən etmək üçün onluq nöqtədən sonra görmək istəyirik. Belə ki, bu notation yalnız deməkdir ki, burada bir tutucu var. Bu üzən point üçün dəyəri və oh, yolu ilə, bu kəsir ilə göstərmək bu kəsir sonra bir sıra. Belə ki, sıra əhəmiyyətli rəqəm, belə ki, istədiyiniz bilər ki, danışmaq. Mənə irəli getmək və bunu bildirin ./float-0, float-0 olun, və yəqin 1 10 bölünür 0.0 edir. İndi niyə bu? Yaxşı daha, kompüter edir Mənə sözün, və mən 1 yazılı və 10 yazılı və tahmin almaq nə bu iki ehtimal data növü dəyərlər? Bir int, texniki var bir az fərqli bir şey. Bu adətən uzun, lakin bu nəticədə ayrılmaz dəyəri. Bir üzən point dəyər. Hansı ki, bu demək deyil , bir int və bu bir int edir Bu problem kompüter ki, imkanı yoxdur hətta kəsir saxlamaq üçün. Siz 1 bunu belə bölünür 10 istifadə integers ilə Bu surət və həm də məxrəc, cavab 0.1 olmalıdır. Lakin kompüter üçün çünki bu integers var Bu 0.1 ilə nə bilmir. Belə ki, nə bu aydın edir? Bu, sadəcə, üz atma edir və mən nəticədə nə görüyorum Mən israr yalnız çünki 0.0 edir printf Mənə bir kəsir göstərir. Amma problem ki, əgər bir tam bir tam bölmək, definition tərəfindən get-- edəcək bir tam ace. Və bunu etmək niyyətində deyil gözəl və rahat bir şey qədər onu dəyirmi kimi bir yuxarı və ya aşağı yaxın. Bu kəsmək olacaq ondalık sonra hər şey. Belə ki, yalnız daxilən, yəqin ki, bir fix var? Burada sadə fix nədir? Bəli? Dəqiq. Niyə biz yalnız bu müalicə yoxdur səmərəli point dəyərləri üzən üzüb gedirdi və ya iki dönüştürerek. İndi mən əgər üzüb gedirdi-0, və ya üzüb gedirdi 1 tərtib əgər, olan eynidir yalnız nə təklif edilmişdir. Və indi üzüb gedirdi-0, indi mən 0.1 almaq yoxdur. İndi bu gözəl deyil. Amma indi gedirəm bir az fərqli bir şey. Mən, həqiqətən, nə görmək maraqlı deyiləm başlıq altında gedir, və mən bu çap gedirəm həyata 28 decimal yerlərdə. Mən, həqiqətən, görmək istəyirəm 0.1000-- bir infinite-- Ki, 0.1 sonra [Işitilemez] 27 adet sıfır. Yaxşı ki, əgər in görək Mən, həqiqətən, nə almaq. Üzüb gedirdi-0, eyni fayl olun. ./floats-0. Nin dramatik cavab zoom imkan verir. Bütün bu vaxt, siz düşünür olduğunuz 1 10 bölünür 10%, və ya 0.1 edir. Bu deyil. Ən azı indiyə qədər kimi kompüter narahat. OK why-- İndi ki, tam var 10 bölünür yalan 1 0.1. Amma ki, deyil why-- paket gün. Belə ki, niyə kompüter hesab etmir Oda bizim bütün fərqli olaraq, 1 10 bölünür ki, həqiqətən crazy dəyəri? Yəqin bunu kompüter nədir? Nə olub? Bu özlüyündə, daşqın deyil. Overflow adətən zaman Siz bir dəyər ətrafında kesmek. Bu qeyri-dəqiqlik bu məsələ var üzən point dəyər yalnız 32 olduğu və ya bəlkə hətta 64 bit. Amma sonsuz var əgər real numbers-- sayı decimal xalla nömrələri və nömrələr şübhəsiz ki thereafter-- Siz onların hamısını təmsil edə bilməz. Belə ki, kompüter verdi Bizə ən yaxın matç dəyərinə ki, istifadə təmsil edə bilər Mən, həqiqətən, istədiyiniz dəyəri çox bit, olan 0.1 edir. Təəssüf ki, əgər riyaziyyat bunu başlamaq, və ya üzən bu cür cəlb başlamaq əhəmiyyətli proqramları point dəyərləri maliyyə software, hərbi software-- şey harada hissdir yəqin ki, olduqca vacibdir. Və əlavə başlamaq bu kimi nömrələri və start ki, proqram çalışan həqiqətən böyük giriş və ya saat və ya çox çox üçün il gün və ya çox, bu kiçik kiçik səhvlər şübhəsiz ki, zamanla əlavə edə bilərsiniz. İndi bir kənara kimi, siz var əgər heç Superman 3 və ya Office Space görüldü və geri bilər necə o uşaqlar çaldı onların kompüter pul bir çox üzən point dəyərləri istifadə edərək, və az əlavə qalıqları, ümid edirəm ki, film indi daha çox əhəmiyyət kəsb edir. Bu onlar nə ki, film alluding. Bu fakt ən çox şirkətlər baxmaq deyil müəyyən sayda sonra onluq yerlərinə ki, lakin həmin qəpik fraksiyaları. Belə ki, onları əlavə başlamaq Siz pul bir çox etmək başlamaq Sizin bank hesabınıza. Belə ki, Office Space izah edir. İndi təəssüf ki kənarda Office Space var bəzi qanuni narahatlıq var və əhəmiyyətli təsirlər bu cür əsas dizayn qərarları, səbəbləri və həqiqətən bir biz əlbəttə C istifadə Əgər həqiqətən bu yer var ki, kompüter iş necə anlaşma up, necə proqram işləri və nə deyil Verilən üçün bir şey almaq. Və həqiqətən təəssüf ki, hətta ki fundamental anlayış, biz insanlar səhv edə. Və nə mən bölüşmək istədiyiniz fikir deyil Bu səkkiz dəqiqə video burada qəbul olan Modern Marvels epizod olan şeyi iş necə təhsil show ki, iki şəkillər çəkir bir zaman düzgün istifadə və anlaşma point dəyərləri üzən bəzi əhəmiyyətli səbəb uğursuz nəticələr. Bir nəzər salaq. [Video playback] -Biz Engineering qayıtmaq " Müasir möcüzə fəlakətlər ". Computers. Biz bütün qəbul gəldiniz tez-tez sinir bozucu problemləri ki, them-- bugs, virus ilə var, və kiçik qiymətləri üçün proqram glitches-- rahatlığı üçün ödəyəcək. Lakin yüksək texnologiyalı və yüksək sürətli hərbi və kosmik proqram proqramları, kiçik problem bilərsiniz fəlakət daxil ucaltdı bilər. 4 iyun 1996-cı il, alimlər hazırlanan 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ə. Daxil təxminən 37 saniyə -at uçuş, onlar ilk fərq bir şey yanlış gedir. Nozzle döner ki, bir şəkildə onlar həqiqətən lazımdır. Uçuş daxil 40 saniyə ətrafında, aydın vasitə, narahatlıq idi Onlar zaman və ki qərar onu məhv etmək. Bu sıra təhlükəsizlik zabit ilə böyük içalat, düyməni basdı bu ola bilər əvvəl və raket partladılıb ictimai təhlükəsizlik 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 katıştırılmış. Üzrə -Bu problem Ariane idi ki, var tələb edən bir sıra idi 64 bit, ifadə etmək və onlar çevirmək istədi 16-bit sayı bu. Onlar sayı güman çox böyük olacaq heç vaxt. Ki, bu rəqəm ən 64-bit sayı adet sıfır idi. Onlar yanlış idi. Bir -Bu bilməməsi proqram qəbul tərəfindən yaradılan bir sıra cür başqa uğursuzluq kök idi. Software inkişaf olmuşdu yeni texnologiya çox bahalı hissəsi. Bu Ariane 4 raket idi çox uğurlu olmuşdur. Üçün yaradılmış proqram qədər bu da Ariane 5 istifadə edilmişdir. -Əsas Problem ki Ariane 5. Faster--, sürətli sürətləndirdi və proqram ki, uçota deyil. -Bu Raket 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 deyil time data conversion problemləri müasir raket texnologiyası mürəkkəbləşdirilir. Başlaması ilə -1991 ilk Körfəz müharibəsi, Patriot raket oxşar cür yaşadı bir sıra dönüşüm problem. Və bir nəticə kimi 28 xalqı üçün 28 Amerika soldiers-- şəhid, və təxminən yüz nəfər yaralanıb. Zaman ehtimal edilən Patriot, Gələn Scuds qarşı qorumaq üçün, bir raket yanğın bilmədi. -Zaman İraqın Küveyti və Amerika işğal erkən 1991-ci ildə Desert Storm başlayıb, Patriot raket batareyaları səfərbər edilmişdir Səudiyyə Ərəbistanı və İsraili qorumaq üçün İraq Scud raket hücumları. The Patriot, ABŞ orta mənzilli edir səthi-to-hava sistemi Raytheon şirkəti tərəfindən istehsal. Patriot ölçüləri kesen özünə bu barədə təxminən 20 fut uzun və bu barədə 2,000 funt ağırlığında. Və bu, təxminən bir döyüş başlığı keçirir Mən bunu kobud hesab 150 lirə. Və döyüş başlığı özü yüksək partlayıcı olan Onun ətrafında fraqmentləri var. Belə ki, döyüş başlığı casing bir buckshot kimi hərəkət üçün nəzərdə tutulmuşdur. The raketlər keçirilir konteyner başına dörd, və yarı trailer ilə daşınıb. The Patriot anti-raket sistemi indi ən azı 20 il geri gedir. Bu, ilk nəzərdə tutulmuşdur bir raket kimi düşmən təyyarə aşağı Shoot. Ilk Körfəz müharibəsi ki, müharibə gələndə, Ordu üçün istifadə etmək istəyirdi Scuds deyil, təyyarə gülləboran etmək. İraq Air Force idi bir problem çox deyil, Ordu Scuds narahat idi. Və onlar çalışdı Patriot təkmilləşdirmək. Düşmən -Intercepting Mach 5 səyahət raket kifayət qədər çətin ola gedirdi. Amma zaman Patriot xidmət soxulmuş, Ordu xəbərdar deyil İraq modifikasiyası ki onların Scuds etdi təxminən bu mümkün deyil. Hansı baş Scuds ki, gələn qərarsız idi. Onlar wobbly idi. Bunun səbəbi Iraqis-- idi 600 kilometr çıxmaq üçün 300 kilometrlik mənzili missile-- və , ön döyüş başlığı çəkisi həyata aldı və döyüş başlığı yüngül etdi. Belə ki, indi Patriot gəlməyə çalışır Scud da, time-- və ən Bu böyük əksəriyyəti time-- yalnız Scud uçmaq. Patriot sistemi operatorları -Bir Patriot onun hədəf buraxılmış həyata onlar Patriot-nin döyüş başlığı partlatdı bu mümkün itki qarşısını almaq üçün dağılmaq icazə verildi. Yəni insanların çoxu gördüm nə idi kimi səmada böyük fireballs, və səhv Scud başlığı tutduğunu. Gecə göyə, Patriotlar-baxmayaraq uğurla məhv ortaya çıxdı Scuds, Dehran ola bilər öz fəaliyyəti barədə heç bir səhv. Orada Patriotları radar sistemi Daxil olan Scud itirilmiş track səbəbiylə başladılan heç bir proqram qüsur. Bu ilk kəşf edən israillilər artıq sistem olduğunu, böyük vaxt fərq oldu. Səbəbiylə əlaqədar bir saat sistemin kompüter. -Haqqında Iki həftə əvvəl Dhahran faciə, İsraillilər məlumat Müdafiə Nazirliyi ki, sistem vaxt itirirdi. Haqqında səkkiz saat sonra çalışan, onlar qeyd Sistemin çevrilir ki, xeyli az dəqiq. Müdafiə İdarəsi tərəfindən cavab Patriot batareyaları bütün izah sistemləri tərk etmək uzun müddət üçün. Onlar uzun müddət idi nə dedi heç. 8 saat, 10 saat, min saat. Heç kəs bilirdi. The Patriot batareya barak da konuşlu Dhahran və flawed daxili at saat 100 saat olmuşdur 25 fevral gecəsi. -Bu Bir dəqiqlik üçün vaxt izlenir bir ikinci bir onuncu haqqında. Ikinci İndi onuncu maraqlı sayı Bu ifadə edilə bilməz, çünki məhz ikili olan Bu dəqiq ifadə edilə bilməz deməkdir hər hansı bir müasir digital kompüter. Bu, inanmaq çətindir, lakin nümunə kimi istifadə edin. Nin bir nömrəli üçüncü edək. Üçdə biri ola bilməz dəqiq ondalık dilə gətirdi. Üçdə biri 0,333 edir daimi üçün gedir. Ilə bunu etmək heç bir yol yoxdur Onluq mütləq dəqiqlik. Ki, problemin tam növü var ki, Patriot baş verib. Bu artıq sistem qaçdı, pis vaxt səhv oldu. Əməliyyatın 100 saat Sonra, bu vaxt səhv yalnız bir üçüncü oldu ikinci. Amma hedefleme baxımından Mach 5 səyahət raket, bir izleme nəticələndi üzərində 600 metr səhv. Bu ölümcül səhv olardı Dehran olan əsgərlər üçün. Bir Scud launch idi hansı oldu erkən xəbərdarlıq peyk aşkar, və onlar Scud gələn bilirdi onların ümumi istiqamətdə. Bu gələn edildi Onlar bilmirdim. Bu radar qədər artıq idi Patriot sisteminin komponenti Dehran müdafiə tapmaq və saxlamaq üçün gələn düşmən raket track. The radar çox ağıllı idi. Bu, həqiqətən izlemek Scud mövqeyi və sonra proqnozlaşdırırlar yəqin ki, olacaq növbəti dəfə radar bir zərbə göndərdi. Bu sıra qapısı adlanırdı. Patriot dəfə -Sonra 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 obyekt olduğunu qərara alır. Saxta aşkar idi ki, və bu track düşər. The daxil olan Scud yox radar ekranında, və saniyə sonra, onu barak daxil slammed. Bu Scud 28 şəhid. Bu son bir qovuldu ilk Körfəz müharibəsi zamanı. Faciəli, yenilənmiş proqram Ertəsi gün sübh gəldi. Bu proqram qüsur idi olmuşdur sabit, yekun çətinlikli bir fəsil Patriot raket tarixi. [END Video playback] DAVID J. MALAN: Bu CS50 üçün var. Biz Çərşənbə günü görəcəksiniz. [MUSIC ifa]