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