DAVID J Malan: Bütün sağ, belə ki, bu CS50 edir. Bu aydın Cümə. Bu həftə bir sonu. Belə ki, biz off tərk geri bilər, növ bir cliffhanger ilə son dəfə. Vasitəsi biz bu yalan ifşa yoxdur ki, məsələ artan tədris olduğunuz nə qədər 10 bölünür 1 deyil Əslində 0.1 və ya 0.100 və ya 0,10000. Əslində, əgər biz bu tərtib proqram, biz dünən, kimi, qeyri-dəqiqlik etmək, sonra dot etmək, çizgi, qeyri-dəqiqlik, bu nə olduğu öyrənildi 1 əslində 10 bölünür. Belə ki, həqiqətən, olduqca işi deyil. Amma bu bəzi işarə edir kompüter fundamental məhdudiyyət. Həqiqətən, arasında şeylər nə olacaq Bu gün niyə nəzər var oldu, bu nə təsiri, insanlıq uğursuz necə bir çox bu tutmaq üçün ciddi situations-- nəticəsində olduqca faciəli olmuşdur və həmçinin expensive-- və Biz necə nəzər həqiqətən müdafiə edə bilər məhdudiyyətlər bu cür qarşı. Belə ki, daxilən, bəlkə, niyə 1 10 bölünür, Mənim kompüter görə Burada yalnız 1/10, 0.10? Bəli. Siz nə düşünürsünüz? Tamaşaçı İstifadəçi: radix fərqlidir? DAVID J Malan: nədir? Oh, radix fərqlidir? Belə ki, olduqca. Bu, həqiqətən çox var hardware fundamental. Digər fikir? Bəli. Auditoriya ÜZV: Onlar fərqli nömrələri təmsil? DAVID J Malan: Belə ki, they-- Right. Onlar fərqli nömrələri təmsil edir. Qeyri-dəqiq, yəqin. Yaxşı is-- Belə ki, fərqli nə olan? Və ya kimə? Bizdən? Tamaşaçı İstifadəçi: Bəli. Onlar decimal istifadə etməyin [Işitilemez] sistem. DAVID J Malan: OK. Bir mənada, belə ki, onlar bunu bu sistemi istifadə. Başlıq altında, hər şey, həqiqətən, ikili edir ki, əslində, əlaqədar var. Amma hətta sadə deyil daha izahat. Bəli. Auditoriya ÜZV: Onlar yalnız çox bit var. Onlar yalnız müəyyən saxlaya bilərsiniz dərəcədə, ondalık kimi. DAVID J Malan: Bəli. Bu, həqiqətən, ona əldə edir. Bu kompüter çıxır adətən, həmişə yalnız məlumat məhdud miqdarda istifadə bir şey təmsil etmək. Sağ? Bütün sonra, biz yalnız bir sabit var sabit disk məbləği. Biz yalnız bir sabit məbləğ var RAM, və ya kompüter yaddaş. Və yalnız bir varsa bir şey sabit məbləği, şübhəsiz ki, siz həqiqətən saymaq bilməz daimi və ya istədiyiniz hər hansı bir sayı. Siz cür, var seçin və nə üçündür seçin siz dəstək olacaq qiymətləndirir. Və belə, məsələn, bir həftə və ya iki bundan əvvəl biz ASCII haqqında söhbət zaman, və biz 8 bit söhbət, və ya bir byte, belə ki, danışmaq ən böyük sayı biz bilər 8 bit ilə nə idi etdirir? 255. Və biz 256 ümumi dəyərlər təmsil edə bilər lakin biz onlardan biri sərf əgər Yaxşı 0-, lakin biz əgər 0 onların biri sərf, sonra ən böyük sayı 255, əlbəttə, var. Belə ki, bu ki, çıxır bu çərçivədə də işi. Biz söhbət, son dəfə başladı üzən-point nömrələri, haqqında olan da, integers fərqli Onlar decimal nöqtəsi var ki, və ümid edirəm ki, bəzi nömrələri bundan sonra, lakin onlar da var. A kompüter yalnız adətən gedir 32 bit, bəlkə 64 bit istifadə etmək bir üzən point dəyər təmsil etmək. Baxmayaraq ki, belə ki, biz böyüyüb etdik riyaziyyat öyrənmək və bilmədən Siz tamamilə ola bilər ki, nömrələri sonsuz sayda bu kəsir, sonra Siz məhdud yaddaş var. Siz cür, dəyirmi var, və ya seçin və seçdiyiniz nömrələri təmsil olacaq. Və belə ki, bir mənada, hesab edə bilər, Bu olan kompüter yaxın dəyəri 1/10 üçün uyğunlaşdırılması ki, yalnız 32 və ya belə bit ilə əldə edə bilərsiniz. Və yalnız 1/10 deyil. Məsələn, mən bu dəyişdirmək əgər Biz hesab edirik ki 1/3, daha asandır. Belə ki, 1 3 bölünür. Mənə faylı edək. Mənə davam və derleyeceğiz edək. Və mənə yenidən run edək. Burada da, görünür, 1/3 0.3 deyil və sonra 3-nin sonsuz sayda sonra. Siz sonunda bu qeyri-dəqiqlik var. Belə ki, biz insanlar doğru və nə Siz, əslində, düzgün öyrəndim lakin biz bumping edirik bəzi məhdudiyyətlər qarşı. Mən fikir nə Bu gün istədiyiniz, başlayacaq səmimi, baxaraq Bu faciəli nəticələri bəzən, zaman insanlar olduqca tətbiq etmir Bu reallıq bu məhdudiyyətlər üçün. Və biz vignettes bir sıra görəcəksiniz edir Tarix Kanal Necə şeyi bir göz yanlış getdi. Bu, təxminən 8 dəqiqə davam edir və biz bu sonra geri gəlmək lazımdır və dəqiq nəzər nə yanlış getmək bilər. Biz işıqları dim bilər [Video playback] -Kompüter, Biz bütün qəbul gəldiniz tez-tez sinir bozucu problemləri ki, onlara getmək. Bugs, virus və proqram təminatı glitches kiçik qiymətləri 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 böyüdüləcək. 4 iyun 1996-cı il, alimlər hazırlanmış insansız Ariane 5 raket başlamaq üçün. Elmi daşıyan peyklər nəzərdə dəqiq necə yaratmaq Yer 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 Qvianasında sahilində. -Və 30 saniyə daxil uçuş, onlar ilk qeyd bir şey yanlış gedirdi. Nozzle döner ki, bir şəkildə həqiqətən olmamalıdır. Uçuş daxil 40 saniyə ətrafında, aydın vasitə, problem idi Onlar zaman və ki qərar onu məhv etmək. A Range Təhlükəsizlik 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ə olmaq. -Bu Qız idi Ariane 5 səyahət, və onun məhv etdi çünki bir qüsur yerləşdirmək raket proqram daxil. On -Bu problem Ariane idi ki, orada tələb olunan sayı 64 bit, ifadə etmək və o çevirmək istəyirdi bir 16 bit sayı. Onlar sıra güman çox böyük olacaq heç vaxt, ki, həmin rəqəm ən 64 bit sayı 0-nin 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 olmuş yeni texnologiya çox bahalı hissəsidir. Ariane 4 raket çox olmuşdur proqram uğurlu qədər bu da oldu yaradılmışdır Ariane 5 istifadə. -Bu Əsas problem Ariane idi 5, sürətli idi sürətli sürətləndirdi. Və proqram idi ki payına düşür. Raket -Bu məhv böyük bir maliyyə fəlakət idi bütün ötəri bir dəqiqə proqram səhv. Amma bu ilk deyil vaxt data conversion problemləri müasir raket texnologiyası mürəkkəbləşdirilir etmişdir. Başlaması ilə 1991-ci il -In Birinci Körfəz Döyüşünün, Patriot raket oxşar cür yaşadı sayı dönüşüm problem. Nəticədə, 28 nəfər, 28 Amerika əsgəri ölən və haqqında edildi 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 səthi-hava sistemi Raytheon şirkəti tərəfindən istehsal. Patriot kesen -Bu ölçüsü, özü, təxminən 20 ayaqları uzun, edir. Və 2000 funt ağırlığında. Və bu about-- bir döyüş başlığı keçirir Mən təxminən 150 lirə hesab edirəm. Və döyüş 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 var 4 konteyner başına keçirilir, və yarı-trailer ilə nəql olunur. -Bu Patriot raket əleyhinə 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ə gülləboran etmək. First Gulf 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 Force idi bir problem qədər, lakin Army scuds narahat idi. Və onlar üçün cəhd Patriot yükseltin. Düşmən -Intercepting raket Mach beş səyahət kifayət qədər çətin olacaq oldu. Amma Patriot xidmət soxulmuş idi, Ordu bir xəbəri olmadığını Edilən İraq modifikasiyası onların scuds hit üçün təxminən mümkün. -Nə Oldu, scuds ki gələn idi, qeyri-sabit idi Onlar wobbling edilmişdir. Bunun səbəbi, üçün, İraqlılar idi həyata 600 kilometr almaq üçün 300 kilometr mənzilli mərmi, ön döyüş başlığı həyata çəki etdi və başlığı yüngül etdi. Belə ki, indi Patriot nin gəlmək üçün çalışırıq Scud, və çox vaxt, böyük əksəriyyəti vaxt, yalnız Scud uçmaq olardı. Patriot sistemi operatorları -Bir , Patriot onun hədəf buraxılmış həyata onlar Patriot döyüş 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ığı tutduğunu. Gecə Baxmayaraq ki, göy, Vətənpərvərlər ortaya çıxdı uğurla olmaq Dhahran da scuds məhv heç bir səhv ola bilər öz fəaliyyəti barədə. Orada Patriot radar sistemi Daxil olan Scud itirib, və başladılan heç bir proqram qüsur görə. Bu ilk kəşf İsrail oldu Artıq sistem olduğunu, daha çox vaxt uyğunsuzluq görə əlaqədar bir saat oldu sistemin kompüter. -Haqqında 2 həftə əvvəl Dhahran faciəsi, İsraillilər məlumat Müdafiə Nazirliyi, sistem vaxt itirirdi ki, ki, çalışan təxminən 8 saat sonra, onlar sistem olduğunu qeyd xeyli az dəqiq olmaq. Müdafiə Nazirliyi cavab verdi 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? 1000 saat? Heç kəs bilirdi. -Bu Patriot batareya Qışla konuşlu Dhahran və onun flawed daxili at 100 saat ərzində saat olmuşdur Fevralın 25-nə keçən gecə. -Bu Bir dəqiqliyi üçün vaxt izlenir haqqında 1/10 ikinci edir. İndi ikinci 1/10 var maraqlı sayı ola bilməz, çünki dəqiq, ikili dilə gətirdi. Hansı bilməz deməkdir ifadə, dəqiq, hər hansı bir müasir digital kompüter. Bu, inanmaq çətindir, lakin nümunə kimi istifadə. Nömrəsi, 1/3 edək. 1/3 ifadə edilə bilməz ondalık da, dəqiq. 1/3 daimi davam 0.333 edir. Bunu etmək üçün heç bir yol ilə var, ondalık mütləq dəqiqlik. Ki, eyni cür Patriot baş problem. Artıq sistemi qaçdı, pis vaxt səhv oldu. Əməliyyat 100 saat sonra, səhv vaxt yalnız 1/3 ikinci idi. Amma hedefleme 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ı Dhahran da əsgərlər üçün. Baş hansı bir Scud başlamaq idi erkən xəbərdarlıq peyklər aşkar, və onlar Scud idi ki, yeni onların ümumi istiqamətdə gəlir. Bu gələn onlar bilmirdim. -Bu Radar qədər artıq idi Patriot sisteminin komponenti tapmaq və saxlamaq üçün, Dhahran müdafiə 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 proqnozlaşdırmaq Bu, yəqin ki, olacaq Növbəti dəfə, radar bir zərbə göndərdi. Bu 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. Daxil olan Scud yox radar ekran, və saniyə sonra, onu Qışla çarpdı. Scud 28 şəhid və son bir ilk Körfəz müharibəsi zamanı atəş etdi. Faciəli, yenilənmiş proqram təminatı Aşağıdakı gün Dhahran gəldi. proqram qüsur var idi olmuşdur sabit, yekun çətinlikli bir fəsil Patriot raket tarixi. [END playback] DAVID J Malan: Belə ki, biz bir nəzər lazımdır Yalnız bir az bəzi oxşar məhdudiyyətlər. Lakin ilk, edək bir neçə keçid FYI var. Bu həftə sonu one-- Belə ki, orada super bölmələr olacaq, supplant üçün nəzərdə tutulub ki, müntəzəm təyin bölmələr olan beləliklə bir həftə başlayacaq. CS50 veb bir göz atın o haqqında daha ətraflı məlumat üçün. Onlar həmçinin lentə və axın edəcək iştirak etmək iqtidarında olanlar üçün yaşayır. Problem 1 set artıq kurs haqqinda, və biz bir nəzər lazımdır yalnız bir az ki. Və ofis saat da keçiriləcək Cümə axşamı vasitəsilə bu Bazar ertəsi yer. Belə ki, bu ən canonical idi proqramı son dəfə baxdı. Bu sadə kimi C yaza bilərsiniz proqram, və hətta bir qalın iddia bir az var. Sağ? Bir çox var, çünki bu mürəkkəbliyi zahiri. Belə ki, bir sürətli nəzər salaq nə bu elementlərinin bəzi idi və sonra təmin etməyə çalışırıq necə bir ruhi model proqramların bu sadə iş, sonra biz başlamaq lazımdır daha mürəkkəb şeylər axtarır. Belə ki, bu xətt burada, indi qeyd sarı, biz demək nə, son dəfə, Bu, bizim üçün ki? Bu xidmət məqsədi nədir? Bu uzaq geri hər kəs? Bəli. Auditoriya ÜZV: [işitilemez] DAVID J Malan: Yaxşı. Belə ki, bu imkanı verir əmrləri, və ya edək onlara zəng funksiyaları, kimsə başqa elan olunur ki, yazdı belə ki, bəzi digər fayl danışmaq. Beləliklə, biz dəqiq nə bir h fayl görürsünüz nəhayət, bir C fayl qarşı deyil. Amma indi üçün, yalnız bilirik ki printf, məsələn, olmuşdur funksiyaları arasında haradasa, bəzi digər fayl elan Buludun sabit başqa Bizə printf daxil olmaq və istifadə etməyə imkan verir yenidən kəşf olmadan özümüzü təkər ki. Eyni zamanda, əsas. Əsas, keçən həftə analog nə idi? Bəli. Auditoriya ÜZV: Green bayraq tıklandığında. DAVID J Malan: Bəli. Scratch-nin, yaşıl bayraq tıklandığında. Bu puzzle parça kimi ki, hər şeyi başlayıb. Və eyni, dünya etdi , C bir neçə il əvvəl qərara aldı ki, və digər dillərdə bir dəstə, Siz bir proqram yazmaq istəyirsinizsə, ilk funksiyası Əsas adlı edilməlidir. Və bu kimi baxmaq var. Amma biz, geri gəlmək lazımdır başqa vaxt, nə üçün, int, və, etibarsız, bu kontekstdə deməkdir. İndi, qıvrım aşırma növ bir Not puzzle parça forma kimi ki xətlərinin bəzi sayı kapsüller. Və xətləri üzrə arasında burada, burada bu biridir. printf onun məqsədi bir funksiyası var Həyat bir biçimlendirilmiş string çap edir. Və biçimlendirilmiş, mən sizə demək tutucu dəyərlər plug bilər, və necə bir çox decimal belirtebilirsiniz bal, neçə ədəd çap bir bu kəsir və kimi sonra. Və printf, əlbəttə, birini tutur və ya dəlilləri və ya parametrləri daha çox, başqa daha çox sadəcə, giriş kimi tanınır. Bir çox kimi, Belə ki, printf funksiyaları, giriş edir. Və bu giriş əhatə edir burada iki parantez tərəfindən. Və o daxilində bir giriş var. Biz adlandırıb etdiyiniz kimi, bir simli var, olan simvol yalnız bir ardıcıllıqla deyil, Bir sözlə, və ya bir söz, və ya bütövlükdə kimi inşa hətta ikiqat quotes arasında. Və təsir neler var printf davranış, çünki, əlbəttə, yalnız ümumi bir çap funksiyası var. Nə bilmək niyyətində deyil Siz onu demək halda, çap. Və sonra, bəzi minutiae. Bu qəribə nə demişdi rəmzləri ardıcıllığı? Bəli. Tamaşaçı İstifadəçi: New line. DAVID J Malan: New line. Belə ki, yalnız hit bilməz, çıxır, proqram yazılı etdiyiniz zaman, daxil edin. Ümumiyyətlə, compiler almaq üçün gedir Siz demək nə kimi bir az qarışıq. Əksinə, siz sözün var Burada mənə yeni bir xətt verir, deyirlər. Və belə / n nə biz ümumiyyətlə bir escape xarakter zəng. Belə ki, n, yeni xətt üçün. Və compiler bilir ki, / n gördüyü zaman, Bu, həqiqətən kompüter vadar etməlidir, nəticədə, və ya printf, bu halda, faktiki Yeni çap line vuruş kimi, daxil Klavyenizdeki düyməsini basın. Və nəhayət, biz demək idi sintaksis bu parça üçün? Bu nəyi təmsil edir? Bəli. Auditoriya ÜZV: [işitilemez] DAVID J Malan: Bu, yalnız var xəttinin sonu. Bu bəyanatın sonunda var. Və biz deyil ki, həyata hər yerdə onları qoydu. Biz əlbəttə ki, onları qoymaq deyil hər xətti ucunda. Məsələn, heç biri var ilk line, heç xəttində var əsas ilə, heç biri yoxdur qıvrım aşırma sonra, lakin görmək və almaq üçün başlamaq lazımdır Bu çağırışı harada ilə tanış. Və bir funksiyası sonra demək olar ki, həmişə var bəzi fəaliyyət, zəng və ya bir bəyanat ki, həqiqətən qəbul edirik. Və xüsusilə də əgər indi bilirəm az rahat arasında, bu axmaq şeylər növ Siz təsadüfən tarpıltı başa lazımdır ki, üzərində divar qarşı baş. Siz məntiqi olacaq, çünki bir problem əmin Bir problem üçün həll etdik set və yalnız lənətləmək şey tərtib və ya hətta çalışmaz. Və tez-tez, erkən, bu olacaq Bir mötərizə buraxılmış çünki, və ya bir nöqtəli vergül qaçırdı. Və belə ki, yalnız nəzərə şeyi bu cür, və ilə incidir almaq üçün cəhd edin onlara çox tez bu çünki köhnə papaq olur. Amma bu almaq üçün çox asandır nəticəsində erkən incidir. Belə ki, indi, bu necə bir nəzər edək bu xətt həqiqətən işləyir və sonra bir az baxmaq daha mürəkkəb bir. Beləliklə, biz burada, üzərində Bu ekranda çəkmək imkanı. Və güman edək Bu, mənim kompüter ekran amma, salam proqram yazıram və mən printf həyata deyil. Başqası, printf həyata keçirmişdir. Kim iddia istəyirəm , printf həyata var? Biz bilər, əgər? Bütün hüquqlar, adınız nədir? TƏLƏBƏ 1: [? Copal. ?] DAVID J Malan: Copal qədər gəlib. Qədər gəlib. Bütün hüquqlar. Beləliklə, biz burada var, bəzi adı tags, bu bir az oyun etmək lazımdır ildən. Və biz printf, sizə zəng edəcək. Və buraya gəlmək istəyirsinizsə, nə, yalnız ekranda tərtib etdik, Bu, mənə var, sadəcə bu var. Bütün hüquqlar, belə ki, salam mənim adı, printf, o qoymaq istəyirsinizsə. Bütün hüquqlar. Və durmaq getmək bilər Kompüter ekran sanki funksiyası var ki, Bu kompüter sistemi ilə gəldi. Və həyat sizin məqsədi həqiqətən, bir şey çap. Lakin proqram kimi çox biz Yalnız burada, ekranda idi, biz olacaq həqiqətən bəzi giriş verir. Belə ki, mənim giriş, əgər burada var yəqin, nə printf qəbul edilir, cür bu kimi onu istehza imkan verir. Mən sözün yazmaq üçün gedirəm kağız parçası, "Salam, dünya" backslash N. Və aydın olmaq nə Mən yalnız kağız bu parça tərtib etdik bu kimi görünür. Mən bu proqram run, və bu zaman kod sarı xətt icra olur, Mən, salam proqramı sanki var funksiyaya off bəzi giriş verilməsi edirəm başqasının yazdı. Və əgər, sizin barmaq ilə, həqiqətən bilər, sizin barmaq ilə, ekranda çəkmək nə bu təqdim edilmişdir, təsiri, nəticədə, edir məhz, ekranda görmək. Və burada bir az künc halda. Və yaxşı ki, biz görmək lazımdır Bu nöqtədə yeni xətt. Bu sizin üçün düzgün olardı açıq newline cəlb etmək. Amma biz saxlanılır əgər sözləri yazmaq ekran, onlar aşağıdakı sona çatacağını. Belə ki, çox təşəkkür edirəm, amma qalmaq Buralarda yalnız bir an üçün. Biz indi başqa bir ehtiyac könüllü, biz bilər, əgər, bu rolu oynamaq lazımdır olacaq of-- Bu orkestr yalnız insanlar var indi. Necə OK about--. Burada. Qədər gəlib. Sizin adınız nədir? STUDENT 2: [? Ivay. ?] DAVID J Malan: Sorry? STUDENT 2: [? Ivay. ?] DAVID J Malan: Ethan qədər gəlib. No? Mən hətta yanlış almaq idi Siz iki dəfə söylədi? Qədər gəlib. Bu burada eşitmək çətindir. OK. Mən təəssüf edirəm, adınız nədir? STUDENT 2: [? Ivay. ?] [? DAVID J Malan: Ivay. ?] OK. İndi, əgər deyil mind, siz GetString olunur. STUDENT 2: OK. Cool. DAVID J Malan: Siz istəyirsinizsə Belə ki, yalnız bir an üçün burada durmaq, Bir az nəzər salaq daha mürəkkəb proqram ki, İndi kodu üç xətləri var. Beləliklə, biz bir var istifadə edərək, dövlətin adı printf; iki, GetString zəng, bir bir tapşırıq izlədi dəyişən string s adlı, və ya s adlı; və sonra printf, başqa bir zəng, lakin iki giriş ilə bu dəfə. Belə ki, biz artıq etdik dövlət adı, daha doğrusu, biz artıq printf zəng edilir. Beləliklə, mən adınızı dövlət, yazmaq üçün gedirəm. Beləliklə, mən nə gedirəm yalnız bir anda, printf, ötürmək, Bu, kifayət qədər sadəcə deyil. Siz irəli getmək və bu çəkmək istəyirsinizsə Belə ki, Ekranda ki, sizin giriş indi. Bütün hüquqlar. Və biz indi, simli unutmaq burada kodu öz xətti. Belə ki, GetString, biz lazım həqiqətən, GetString zəng etmək üçün. Belə ki, həyat sizin məqsədi yalnız gəzmək edir orkestr daxil, siz ola bilər, əgər, və kiminsə adı almaq. Amma sizə verək bir şey qoymaq. Siz istəyirsinizsə, getmək irəli və bir string almaq, ki, kiminsə adını almaq kağız parçası, siz ola bilər, əgər. Bütün hüquqlar. Və biz yalnız bir anda, görəcəksiniz Onun adı alırıq. Eyni zamanda, mən nə gedirəm hazır, boş parça kağız, olan, mən gedirəm saxlamaq üçün nə dəyər GetString mənə qayıdır ki, Mən adlı simli dəyişən, s olan. Bütün hüquqlar. Belə ki, burada nə var? Nik. Bütün hüquqlar. Beləliklə, biz burada Nik adı var. Belə ki, bu nə sözün deyil qaytarılıb Mənə, belə ki, GetString ilə danışmaq. Mən gedir, indi edirəm sol tərəfində icra Mən sadəcə ifadə edərək, Bugünkü məqsədləri Nik üçün kopyalayın. Belə ki, indi mən bir dəyişən var adlı Nik adı saxlanılması, s. Mən artıq təslim etdik printf, bir əvvəlki dəlil. Amma üçüncü və son xətt indeksi, Mən, həqiqətən, əl printf var bir az different-- şey "Salam,% s" backslash n. Və belə ki, son line Mən gedirəm Mən son şey send-- üçün İndi yazmaq üçün gedir, bu. Belə kodu iki xətləri, və ya Kodu son xəttin daha doğrusu, iki inputs-- üçün zənglər bir, bu, iki, bu. Bizim printf funksiyası Belə ki İndi giriş kimi bu edə bilər, Mənə sizin üçün ekran sil imkan verir. Əslində heç, siz davam edə bilər. Biz-ci ildən, onu tərk edəcəyik eyni proqram var. Biz, hello, Ləqəb görmək lazımdır. Bütün hüquqlar. Belə ki, bu bir neçə idi hoops yalnız vasitəsilə jump yazmaq, dövlət sizin , hello, Ləqəb adı və. Ancaq mesaj keçən bu sadə fikir, giriş keçən və çıxış aldığı, biz olacaq model dəqiq deyil hətta ən mürəkkəb funksiyaları üçün. Belə ki, həm də çox təşəkkür edirəm. Biz bir sevimli stress var sizin üçün top. Və GetString təşəkkür edirəm eyni və printf könüllü. Təşəkkür edirəm. Bütün hüquqlar. Siz də təşəkkür edirəm. Beləliklə, biz söhbət etdik indiyədək, əsasən strings haqqında. Və bu C, həqiqətən bilər çıxır bir neçə müxtəlif data növləri başa düşürük. Əslində, götürək Burada bu oldu. Belə ki, C, və dil bir çox, chars adlı şeyi başa düşürük. A char ümumiyyətlə deyil bir byte, və ya səkkiz bit. Və bir xarakter təmsil, A hərfi, və ya kapital kimi məktub A, və ya kiçik məktub A, və ya bir nida point, və ya hər hansı xarakter yazın bilər ki, Sizin klaviatura, bəzən hətta daha çox. Biz də üzüb gedirdi görmək üçün baş verir. A float, ümumiyyətlə, bir 32-bit dəyəri, və ya dörd bytes yenidən, çünki bir byte səkkiz bit edir. Belə ki, bir float üzən point dəyəri, bir bu kəsir ilə bir şey. And olsun ki, nə var Film söhbət Onlar üzən barədə danışarkən haqqında point dəyərləri, bit bəzi sabit sayı bir real sayı təmsil etmək üçün istifadə olunur. Lakin ikiqat adlı şey var. Bu, Java mövcud Siz APCS qəbul etdiyiniz əgər, və bir cüt kimi adı təşəkkürlə təklif iki dəfə bir float kimi böyük. Bu hələ bir real sayı, Bu daha çox bit var olan, daha dəqiq desək və ya daha nömrələri saxlamaq üçün. int asandır. Biz bu son dəfə danışıb. Bu, sadəcə bir tam var. Və ümumiyyətlə, 32 var bit, və ya dörd bytes. Belə ki, siz varsa, indi görək 32 bits-- və biz həftə 0 bunu, varsa heç belə briefly-- 32 bit, böyük nə var Bir tam kimi təmsil edə bilər sayı? Vermək və ya almaq? Bu 4 milyard kimi və biz etdiyiniz yalnız var müsbət nömrələri yalnız təmsil. 32 bit var və siz istəyirsinizsə eləcə də mənfi nömrələri təmsil, Range mahiyyətcə, mənfi 2 milyard müsbət 2 milyard. Amma ümumiyyətlə, biz başlamaq lazımdır 0 4 milyard qədər getmək. Siz dəqiq bilmək lazımdır, lakin yalnız mən əgər biz, əslində, bu görə bilərsiniz Burada bir az kalkulyator açmaq. Mən 32 2 edə bilər, və ki, tam olaraq necə böyük var, neçə dəyərlər bilərsiniz 32 bit ilə təmsil edir. Və təxminən 4 milyard var. Beləliklə, biz ki sayı görən davam edəcəyik bir neçə müxtəlif yerlərdə. Ancaq artıq lazımdır, əgər daha nömrələri, orada çıxır bir şey uzun uzun çağırıb. Və uzun uzun ümumiyyətlə 64 bit olan Bu gücündə bir sifariş deməkdir bir int daha böyük. Belə ki, hətta ən böyük tələffüz edə bilməz Siz təmsil edə bilər sayı, lakin bu dərəcədə böyükdür. İndi bir kənara, tarixən, bir int 32 bit əgər, və uzun uzun 64 bit, necə böyük bir uzun deyil, uzun uzun edir? Siz bir int artıq hesab edirəm ediyorum amma bəlkə az uzun daha uzun uzun, lakin bu, həqiqətən asılıdır. Və belə ki, bir çıxır çox frustrations, Müəyyən sistemi kod yazı ilə, ki, bu veri növləri bütün əvvəlcədən müəyyən dəyərlər var. Bəzən bu çox bit var. Bəzən çox bit var. Beləliklə, siz həqiqətən bilmək lazımdır, bəzən, nə hardware Siz proqram çalışan edirik. Təşəkkürlə, digər dillərdə və İndi mövcud olan digər məlumatlar növləri Siz daha dəqiq olmaq üçün imkan verir. Yaxşı, biz, simli gördüm və biz də bool gördüm lakin bu gəlmək çıxır yalnız CS50 kitabxana ilə. Belə ki, həmin inşa deyil C. o əvəzinə, adlı fayl gəlib CS50.h ki, biz nəhayət lazımdır qat geri soymaq. Amma indi üçün, onlar yalnız istəyirik əlavə məlumat növləri. A bool bir doğru və ya yalan və var string simvol bir ardıcıllıqla deyil, bir söz kimi. İndi printf, biz gördük var placeholders,% s biridir. Və, indi, ola bilər bu digər nümunələri, necə nəticə çıxarmaq Bir tutucu ola bilər müxtəlif data növləri üçün. Məsələn, bir tahmin almaq əgər istifadə edərək, bir char çap etmək istədi printf, tutucu yəqin% c. Və bir çap istəyirsinizsə tutucu,% i ilə tam. % LLD, uzun uzun decimal dəyəri lakin uzun uzun ki, xəritələr belə. Üzən və sonra% f point dəyəri və ya ikiqat üçün, belə ki, bəzən onlar yenidən istifadə etdiyiniz müxtəlif kontekstlərdə. Beləliklə, biz görürük və istifadə edəcəyik zamanla o bəzi. Printf və digər funksiyaları və dəstək başqalarının escape ardıcıllığı, və bəzən bu lazımdır. Belə ki, backslash n yeni bir xəttidir. Backslash t, hər kəs yoxdur bir zərbə almaq istəyirsiniz? Tamaşaçı İstifadəçi: Tab. DAVID J Malan: Tab. Siz, həqiqətən, istəyirəm əgər , nişanı deyil çap fəzalarda bir sabit sayı lakin faktiki tab xarakter, sizin basmayın klaviatura nişanı, əsas, ümumiyyətlə, Siz, həqiqətən, backslash t yoxdur. Backslash ikiqat quote, niyə heç ki istəyirsiniz? Sağ? Niyə yalnız bir yazın bilməz mənim klaviatura ikiqat quote? Tamaşaçı İstifadəçi: Başqa, bu, çünki Bu son hesab gedir sizin çap [istəyirsiniz? mətn. ?] DAVID J Malan: Məhz. Ilə Unutmayın, bizim printf nümunələri, zaman biz girdi printf keçən, giriş simli sol, ki, giriş sağ yaz, əlbəttə, ikiqat quote idi. Öz giriş ikiqat varsa ki, ortasında quote, kompüter potensial bilər kimi, qarışıq almaq, Bu ikiqat quote yoxdur ortada aid? Sol biri ilə məxsusdur? Bu doğru bir ilə məxsusdur? Belə ki, siz super bunu etmək istəyirsinizsə aydın, siz ikiqat quote backslash yoxdur, Bu xilas oldu ki, belə danışmaq, və Bu başqa bir şey üçün conflated deyil. Və burada bir neçə başqaları var backslash r, bir quotes, 0, ki, biz də, zamanla görə bilərsiniz. İndi nə funksiyaları haqqında? Biz belə uzaq edə bilərsiniz hərəkətləri belə bu dildə, C, yaxşı, biz gördük, printf, əlbəttə, və bütün Ekranda digər, Burada biz istifadə edəcəyik ki, yalnız Kursun ilk bir neçə həftə, zaman CS50 kitabxana gəlib. Və onlar, bu, çox asan C, həqiqətən, istifadəçi daxil almaq üçün. Bu C çıxır ki, və səmimi bir neçə dildə, bunu boyun bir real ağrı var tez istifadəçi kimi sadə bir şey, onun giriş üçün klaviatura üçün. Və belə bu funksiyaları daha asan. Və bu da səhv var ərzində yoxlanılması, belə zaman ki, Çərşənbə biz də geri , yeniden, xəbərdarlıq gördüm Mən əməkdaşlıq etməyib zaman, Mən bir söz əvəzinə bir sıra tipli? Biz erkən ağır atletika etdik istifadəçi əməkdaşlıq əmin olun. Amma bu yalnız təlim ki, biz nəhayət olacaq disklər, və tez çıxarmaq. Recap Belə ki, sonra, nin tez nəzər salaq, biz Not da ilə nə çox kimi C. bəzi canonical konstruksiyaların Bu sort, üçün nəzərdə tutulmuşdur ki, bir qasırğa tur olmaq, ki, yalnız belə bir arayış var və ilk şeyi gördüm ki. Amma sonra biz faktiki kodlaşdırma baxmaq lazımdır Bu bloklar bəzi istifadə. Belə ki, çox Not kimi, biz hesabatları kimi zaman, C, biz var, gözləyin, demək və ya printf kimi də fəaliyyət göstərir. Biz vəziyyəti ifadə etmək istəyirsinizsə, C, bu ruhu, oxşar, ki, puzzle parça ki, Not bu kimi baxdı. Ancaq əvəzinə, biz sözün yalnız əgər yazın. Və sonra, parantez, biz bir şərt qoymaq, ki, vəziyyəti olduğu nə biz lazımdır bir boolean ifadə, yenə zəng. Və yenə bu pseudocode sortudur. Və əslində, // Şərh var. Bu özüm üçün yalnız İngilis dili sözlər var. Amma bu ümumi deyil bir, əgər, vəziyyəti strukturu. Amma biz konkret görəcəksiniz yalnız bir anda nümunələri. Bir istəyirsinizsə yol iki yol çəngəl, çox kimi biz bizim könüllü ilə etdi Çərşənbə, başqa, əgər bir ola bilər. Və üçüncü etmək istəyirsinizsə və son vəziyyəti, və ya default vəziyyət, Orada yalnız bir başqa blok ola bilər. Və eyni, boolean ifadələri ilə, Əgər siz onları birlikdə edə bilərsiniz, və. Və biz Çərşənbə günü gördüm ki, bu bir işareti deyil, aşağı səviyyədə səbəblərə görə, iki ki, biz nəhayət görmək və oynamaq lazımdır. Şeyi birlikdə Or-Ing 2 şaquli bar edir. ABŞ klaviatura, bu əsas ümumiyyətlə Yuxarıda Shift düyməsi ilə Sizin əsas daxil edin və ya düyməsini qayıt. Sonra bu şeylər var ki, bir dəfə və ya iki dəfə, bəlkə istifadə edəcəyik. Onlar funksional ekvivalent əgər nə əgər bir ilə edə bilərsiniz, başqa başqa əgər, tikintisi, lakin onlar bir keçid adlı edirik. Onlar çox müxtəlif baxmaq, lakin biz lazımdır Bizim bölüşdürülməsi kodu bəzi görmək, gələcək problem set, çox güman ki, yalnız bəzən bir gözəlləşir ki, bir bütün ifadə yolu şərait dəstə, qıvrım aşırma bir çox olmadan və parantez və abzas bir çox. Amma onlar bizə heç bir daha çox vermək elektrik biz artıq daha. İndi ilmə. Və bu, biz baxmaq lazımdır daha yavaş bir az. Amma sonra, biz bu istifadə etmək başlamaq lazımdır, xüsusilə artıq tanış olanlar üçün. Bu halda inanılmaz, canonical yoludur gizli şəkildə, C. bir loop yazmaq İndi Not bir loop idi olduqca sadə. Siz əbədi, blok var. Siz, təkrar, blok ilə var yalnız bir sayı yazın var. Və üçün loop, siz , həmin ideyaların, həm də həyata keçirilməsi lakin bir az daha texniki var. Amma səmimi, bu da var nisbətən sadə. Siz sifariş bilirik sonra əməliyyatlar, sözün yalnız dəyərlər plug gedir və nə kompüter demək. Belə ki, burada bir misal var. Bu loop ki, olduqca sadəcə, bir sıra qədər sayar başqa vasitəsilə. Və yalnız salan ilə Siz olsa belə, bu, heç bir təcrübəsi Bu dil, nə sayı Bu yəqin ki, hesablanması başlayır? OK, 0. Mən ki, çünki təxmin edirəm bir int və i var ki, görəcəksiniz olan dəyişir. Bu 0 başlatılmış edir. Və sonra, bu kimi görünür Biz bir dəyər printf keçən edirik. Və əslində, mən burada bir az typo etdi. Amma ki, asanlıqla müəyyən edir. Mənə Burada əlavə edək. Biz indi printf mövcüdsən ki, tutucu dəyər keçdi. Və vasitəsilə saymaq neler? Auditoriya: 50. 50. 49. DAVID J Malan: 49. Belə ki, 50 ilk baxışda doğru görünür. Amma ki, bu çıxır, olacaq Biz yoxlanılması saxlamaq bizim şərt. Və biz bir dəfə dayandırmaq olacaq i artıq 50-dən azdır. Belə ki, bu loop, əksinə, olmalıdır belə uzun i 50-dən az olduğu kimi, icra. Amma bu 50 və ya 51 olur kimi tezliklə, və ya pis, avtomatik olaraq dayandırmaq lazımdır. Bütün hüquqlar. Belə ki, nə həqiqətən burada olur? Belə ki, bu sifariş edir bir loop üçün əməliyyatları. One, siz başlatma qondarma. Bu sarı qeyd yığın kodu ilk icra edilir və bu təsiri başına var Çərşənbə, yəqin ki, təsəvvür. Bu dəyişən i və adlandırıb yaradır ki, dəyişən mağazalar dəyəri 0. Belə ki, i hekayə bu nöqtədə 0 edir. növbəti şey ki, bu tikintisi olur, vəziyyəti yoxlanılır olur ki. Beləliklə, mən dərhal yoxlamaq i 50-dən az? Və əlbəttə, cavab İndi bəli, şübhəsiz ki, var. Bəli i, 0, çünki ki, şübhəsiz ki, 50-dən az var. Sonra nə olar, bu ki, kod line edam olur. Və əslində, əgər çox var bu qıvrım aşırma kodu xətləri, onlar bütün bir-bir edam almaq. Və burada təsiri var yəqin, çap gedir sayı i, 0, sonra 1, sonra 2 ola bilər. Amma niyə? Nə artırılacağını almaq deyil? Yaxşı, dördüncü şey baş, bu sintaksis ki, nöqtəli vergül sonra edam edilir. i deyərək bir steno yoldur ++; i dəyəri almaq və ona 1 əlavə; və sonra ətrafında növbəti dəfə əlavə Bu 1; və ətrafında növbəti dəfə, bu 1 əlavə edin. Beləliklə, biz davam əgər, nə baş verəcək növbəti I fikrində deyiləm ki, daha i başlamaq. Mən başlatılıyor saxlanılır əgər i 0, bu nümunə Çünki son heç vaxt i 0 vurulmuş olunacaq. Amma baş verənləri deyil vəziyyəti yoxlanılacaq ki, kod line edam olacaq, i, incremented olunacaq vəziyyəti yoxlanılacaq, code icra edəcək. Və yenə velosiped saxlanılır və yenidən və yenidən, i qədər ++ 50 bir dəyər truces. vəziyyəti daha sonra deyir 50-dən 50-az? Cavab, əlbəttə, heç bir, və belə ki, bütün code icra dayanır. Və ekranda daha kodunu varsa aşağı, ki, növbəti olur. Bu qıvrım aşırma həyata pops və bundan sonra daha çox çap davam edir. Belə ki, Foxtrot artıq bir zarafat, ki, bəlkə indi anlamaq lazımdır. O, həmişə komik. Bu chuckles kimi cür, sızmaq və sonra həyata olmamalıdır oxşar yumor da laughing olacaq. Lakin bəzi paket var burada pedaqoji da. Belə ki, mən çıxır ki, sintaksis bir parça itkin, və ya Foxtrot nin itkin burada sintaksis parça. Biz etdik ki, itkin hər Məsələn, indiyə qədər? Return, belə ki, var ki, başqa bir şey biz uzun əvvəl geri gəlmək lazımdır ki,. Nə itkin, baxmayaraq ki? Bəli. Tamaşaçı İstifadəçi: [Işitilemez] başlatma. DAVID J Malan: OK. Belə ki, Bəli. Belə ki, əslində, bu Well is--, və count başlatılmış olunur yuxarıda, daha doğrusu, yuxarıda elan etdi. Belə ki, bu bunu bir yoldur. Amma bir xətt baxmayaraq etibarlı deyil. Necə burada? Auditoriya ÜZV: Bu qıvrım aşırma deyilmi? DAVID J Malan: Bəli. Belə ki, qıvrım aşırma yoxdur. Amma bu kodu, mən onların kredit, demək, həqiqətən, syntactically etibarlıdır. Bu çıxır, siz deyil qıvrım aşırma lazımdır Yalnız kod bir xətt var ki, əgər Siz loop daxilində icra etmək istəyirəm. İndi biz həmişə sinif və Bizim distribution kodu bütün, qıvrım aşırma daxildir hər halda, yalnız aydınlıq xatirinə. Amma dərsliklərdə ki, həyata və online nümunələri, Siz çox yaxşı buruq ola bilər vaxtsa itkin aşırma. Və, OK nə əgər girintili və nəzərdə tutulan var kod yalnız bir xətt deyil, potensial kodu çox xətləri. Bütün hüquqlar. Məsələsinə belə əlaqədar qeyri-dəqiqlik, daşqın bir məsələdir mənada ki, eyni, integers onlara məhdudiyyətlər var yalnız point dəyərləri üzən kimi? Dünyanın üzən Point dəyərlər, biz yalnız, belə ki, dəqiq ola bilər bəzən, sonra pis şeylər ola bilər, və proqramları arabası və səhv ola bilər. İndi hətta integers ilə, Əgər problem daxil edə bilərsiniz. İndi bir tam bir yoxdur decimal point və ya sonra nömrələri. Bu adətən yalnız bir təbii sayı var. Belə ki, bir int ilə yanlış nə getmək bilər? Mən int istifadə edirəm , yanlış nə getmək bilər count? Bir çox sadə görünür. Bəli. Tamaşaçı İstifadəçi: Əgər sayı olur [işitilemez] DAVID J Malan: Bəli. Siz, belə ki, yüksək saymaq sizə ki, əgər nə ki, həqiqətən, böyük sayı ifadə edə bilməz. Sağ? Bir nöqtədə, siz olacaq sərhədləri artıq 32-bit dəyəri və ya 64-bit dəyər. İndi yenə necə əmin deyiləm 64-bit dəyər tələffüz, amma 32-bit tam bilirik, ola bilər ən böyük dəyəri, yalnız müsbət əgər dəyərlər, təxminən 4 mlrd. Mən 5 milyard saymaq üçün cəhd edin, belə ki, bir şey baş verəcək. Amma əslində, ola bilər nə görmək edək. Tam dünya daşqın, harada, bir mənada, Bir potensialının daşqın tam, nə baş verə bilər? Belə ki, burada bir ikili sayı, Bu 0 throwback var. Bu, bütün 1-in və placeholders var orada 2 səlahiyyətləri, bu ikili edir. Belə ki, bu ekranda 8, 1 bit var. Və geri və ya tez riyaziyyat etmək, nə dəyəri təmsil olunur Burada bu səkkiz 1 bit ilə? 255. Və kifayət qədər əmin deyil, hətta əgər riyaziyyat, siz onu edə bilər. Və ya yalnız cür ola bilər səbəbi onun vasitəsilə, Mən əgər, bir dəqiqə gözləyin 8 bit əhəmiyyət kəsb edən, Mən 256 mümkün dəyərlər var, lakin ilk, 0 Mən bilirəm ki, ən böyük 255 olacaq və bu biri ola bilər nə. Mən bu dəyər 1 əlavə etmək üçün çalışırıq güman edirlər. Siz sinifdə nə edərdiniz məktəb 1 əlavə və bu zaman həqiqətən, çünki uyğun deyil Siz 1 keçirmək? Gedən bu rəqəm nədir Siz 1 əlavə olmaq üçün? Bu 0 olmaq olacaq. Sağ? Daha çox bits-- idi və əgər, çünki mən lazımdır cür, cəhd burada onu yazın daha çox bit olsa biz 1 əlavə burada edə bilər, və sonra biz bu almaq istiyorum. Whoops. Biz burada bir 1 az bütün yol var ediyorum. Amma bu məhdud əgər dəyəri, yalnız 8 bit var, ki, pre-müəyyən var kompüter tərəfindən, 1 səmərəli deyil. Bu, sadəcə cür bir uçurum off düşür. Və belə ki, 255 1 əlavə, nə Siz yəqin dəyəri alıram? 0. Və təsadüfən nömrələri, belə ki, və bəlkə də, bilmədən, oxşar ətrafında wrapping son. Belə ki, nə bu dolayısı ola bilər? Yaxşı, bir neçə müxtəlif şeylər var. Belə ki, bir, bu axtarır başa etmir 0 kimi, bilmədən, ancaq cür görə bilərsiniz hətta real dünyada, yaxşı və ya pis üçün, bir limit bu ideyanın təzahürləri. Məsələn, siz hər hansı kim Heç Lego Star Wars oynamışdır, hər kəs bilmək baş verir pul maksimum sayı Siz Lego Star Wars toplamaq olar? Əsasında tahmin edin bu gün aparıcı suallar. Bu 256 və ya 255-dən çox böyükdür. Bu 4 milyard var. Belə çıxır və bəzi insanlar var bəzi googling təsdiq son Gecənin 4 milyard qızıl sikkələr kazanılmış, və ya Lego Star Wars etajer. Yəqin olsa da, var bir yol oyun bezemek, bir səhv və ya xüsusiyyət var ki, sizə imkan verir yalnız çox və bal çox hesablanır. Amma ən böyük mümkün dəyəri görə Kimsə I bu ekran shot online aşkar, həqiqətən 4 mlrd. İndi niyə ki? Bu, dəqiq 4 milyard var yəqin ki, kimsə qərar, çünki, Kim bu oyun yazırdım, onlar 4 milyard edə bilər ki, bir şey, bir şey, bir şey, dəyəri kimi mən qablaşdırılmış kalkulyator ilə əvvəllər, lakin Bu insanlar üçün bir az təmiz maksimum demək sikkələr və ya studs, Onlar sizə ki, Odur zəng kimi toplamaq bilər 4 mlrd. Belə ki, bu nə? Necə LEGO oyun Counter həyata ki takip saxlanılması siz sikkələr sayı? Onlar nə istifadə edirik? Auditoriya ÜZV: Bu vermir 4 milyard sonra hesablanması. DAVID J Malan: Bu vermir 4 milyard sonra hesablanması, siz edə bilərsiniz deməkdir bir proqramçı kimi, nəticə çıxarmaq, Onlar yəqin edirik ki, 32 bit tam istifadə edərək. Proqramçı kimi sözün yalnız tipli, int, onun kodu, ki, dəyişən növü var ki, Onlar kiminsə kodu saxlamaq üçün istifadə edirik. Belə ki, digər təzahürləri var məhdudiyyətlər bu cür. Mən bu OYUN QƏNAƏT ifa deyil və mən tarixi qədər oxuyurdum much-- lakin təsdiq etmək Sivilizasiya, orijinal versiyası Siz yəqin hər ilə qarşılıqlı digər və müharibə və ya sülh ola bilər, Gandhi biri olmaq idi ən dinc simvol kimi ilk, onu başa düşmək Sivilizasiya versiyası. Və əslində, 1-dən 10 miqyasında, onun təcavüzkarlıq yalnız 1 idi. Belə ki, heç belə yumşaq aqressiv, yəqin. Amma bir anda, siz yəqin edə bilərsiniz Sizin coğrafiyada demokratiya bərpa edin. Və demokratiya yüklerseniz oyun sizin versiyası, sonra təcavüz səviyyəsi enir. Bu yaxşı bir şey deyil. İnsanlar daha sakit var yəqin ki, vəziyyət. Amma yəqin, kimsə etdi bir, əgər vəziyyət deyil kod orijinal versiyası. Belə ki, Qandinin təcavüz səviyyəsi getdi 1 müsbət mənfi 2, 1 mənfi, lakin oyun deyil mənfi nömrələri başa düşürük. Belə ki, nə baş Qandinin təcavüz etdi level 1 mənfi, 0, 1-dən getdi təsiri olan olan ətrafında wrapping ən aqressiv xarakter oyun, 255 bir dəyəri ilə, 10 1 miqyasında. Və sonra, olub Bu oyun daha çox incarnations, və onlar kimi saxlanılır etdik Pasxa yumurta bir növ, Gandhi yəqin ki, belə olduqca aqressiv. Amma bir nəticəsi idi çox sadə proqramlaşdırma səhv Oyun çox erkən versiyası. İndi daha disturbingly, daha yaxınlarda Boeing 787 bir olan kimi sənədləşdirilmişdir cihaz bug deyil, mehriban Siz xüsusilə bir səhv olsun. Və simptomlar, mən oxumaq lazımdır Burada online bir məqalə, bu bir model 787 təyyarə idi ki, davamlı powered edilmişdir 248 gün bütün itirə bilər cərəyan, AC, səbəbiylə elektrik, generator nəzarət ədəd, GCUs, eyni zamanda Fail-təhlükəsiz rejimi gedir. Belə ki, bu verilmiş xəbərdarlıq idi Bu problem aşkar zaman. Bu vəziyyət səbəb olur bir proqram counter ilə, , GCUs daxili belə bir tam və ya dəyişən, 248 sonra iradə daşqın davamlı güc gün. Boeing prosesi bir GCU proqram yenilənməsi inkişaf ki, təhlükəli vəziyyəti düzəltmək olacaq. Raket kimi Belə ki, çox ssenari, buradakı Onlar dəyişən bir növ idi ki, hesablanması, və hesablanması oldu və hesablama, lakin tədricən coşğun onun qabiliyyəti sərhədləri, eyni lənətləmək təyyarə etdi dəyişən daşqın var çalışan kifayət qədər vaxt sonra. Və belə dil-in-yanaq yol Bu məsələ ətrafında iş Həqiqətən, reboot, təyyarə hər edir Yaddaş məhv olur, belə ki, 247 gün, və dəyişən 0 geri gedir. Lakin həyata, bu, çox deyil proqram böyük təcəssüm, lakin biz Apple haqqında eşitmək xüsusilə avtomobil gedən əməliyyat sistemləri, və Google avtomobil özünü idarə və proqram incarnations hər hansı bir sayı Gündəlik həyatımızın, televizorlarda və saatlar, və daha çox, proqram ilə əhatə olunmuşdur həyata, olan bütün us insanlar tərəfindən yazılmışdır. Və biz bütün tezliklə tapmaq lazımdır kimi, çox asan və çox tipik var proqram yazarkən səhv etmək. Və onları tutmaq yoxsa, bəzi pis şeylər ola bilər. İndi bəzən, bəzi gülməli şeylər ola bilər, və ya ən azı bəzən biz bir pisliyi gözləmək bilirik. Belə ki, 0 sinifdən 0 bölünür məktəb, ümumiyyətlə pis bir şey deyil. Bu undefined var. Və çıxır və əgər görək bu seçə bilərsiniz, mənim mic ki, Apple gündəmə bu yaxınlarda bu bəzi əyləncə var idi. Mən burada bir iPhone var. Mən Siri danışmaq və onun xahiş gedirəm Mənə 0 bölünür 0 cavab vermək üçün. 0 0 nə bölünür? SIRI: Siz 0 var Təsəvvür edin ki, cookies, və bərabər onlara split 0 dostları arasında. Hər bir şəxs neçə cookies almaq deyil? Bax? Bu mənada etmir. Və Cookie Monster kədərli heç bir cookies var ki. Və bu kədərli Siz heç bir dostları var. DAVID J Malan: Bu obnoxious növü var. Belə ki, bu yalnız orada bildirib budur. Bu müəyyən deyil, qeyri-müəyyən deyil, Həqiqətən, bir çox proqramlaşdırma dilləri və ya, həqiqətən, derleyiciler olacaq zaman bir proqramda, aşkar, 0 0 bölmək üçün cəhd edin. Bu baxmayaraq daha çox əyləncə edir ki, yəqin, Cookie Monster bu gün Twitter edir. O, bu ilə, bu cavab, olan tamamilə sitayişə layiq deyil. Amma bir sürətli nəzər salaq digər Constructs bir neçə və sonra bu bəzi qoymaq code yaxşı yollarla, istifadə etmək. Belə ki, başqa çıxır loops üçün var bir şey ki, bir müddət loop deyilən fərqli görünür və həyata keçirilir bir az differently-- və biz nəhayət nümunələr görəcəksiniz lakin bəzi mənada, Bu, çünki sadə deyil Siz başlamaq üçün imkan vermir və loop sərhədləri daxilində yeniləmə. Siz hələ də həyata keçirə bilər. Belə ki, eyni şeyi edə bilərsiniz Bir müddət loop ilə loop üçün kimi, ancaq sintaksis, ultimately-- biz nəhayət lazımdır kimi see-- müxtəlif olacaq. Bir do, loop isə da var ki, əslində bir az fərqli ki, halbuki üçün loop və həmişə bir müddət loop əgər, ilk onların vəziyyətini yoxlamaq Siz alt bu şey üst oxumaq Bu olacaq kimi bu cür görünür bu son, çünki bu vəziyyəti yoxlamaq kod həqiqətən son xətt. And olsun ki, faydalı olacaq biz yazmaq bəzi proqramlara, Siz yalnız kor-koranə bir şey etmək istəyirsinizsə, və nəticədə vəziyyəti yoxlamaq. Ki, mütləq pis bir şey deyil. Biz dəyişənlər istəyirsinizsə, biz nə edə bilər Bu müxtəlif yollarla bir neçə. Və biz Foxtrot gördüm cizgi filmi, bunu bir yolu, burada sizin dəyişən elan, int counter nöqtəli vergül kimi, və sonra bəlkə növbəti later-- xətti, bəlkə 10 xətləri later-- Siz, həqiqətən, onu başlamaq. Kod Belə ki, bu 2 xətləri növü int dəyişən elan Bu verir belə, əks zəng Mənə kifayət qədər bit bir int keçiriləcək. Və sonra nəhayət, bu qoyur ki, dəyişən dəyəri 0. Bu 0 və 1-nin təşkil model, biz ötən həftə bilirik ki, biz 0 kimi bilirik sayını göstərir. Və ya səmimi, bu çox edə bilərsiniz daha müfəssəl şəkildə, yalnız bu kimi. İndi biz də var funksiyaları zəng etmək imkanı. Və əslində, burada 2 line var proqram və ya onun bir pasaj, ki, həqiqətən bizə imkan verir ki, bəzi kodu yazmaq user-- bir string olur qədər Bizim könüllü bir an kimi ago-- nəticə saxlanılması adını dəyişən, və then-- çox bizim könüllü kimi o dəyərləri həyata printf izləri ilə iki dəlilləri keçərək, simli, dəyişən izlədi , adı, özü çağırıb. Belə ki, əvvəl, bir nəzər edək biz orada geri Mario gəlib bu indi, nümunələri bir neçə. Mən irəli və açıq getmək üçün gedirəm qədər funksiyası-0.c, deyək. Və həmişə olduğu kimi, bu kodu kurs saytında mövcuddur, belə ki, birlikdə oynaya bilər ev və sonra baxmaq. Bu Amma burada proqramı xətti 17 22 mahiyyəti. Əsas proqram olduğu proqram həmişə başlamaq niyyətindədir. Bu proqram, görünür, gedir , kolon adınızı çap. O, GetString zəng edəcək kimi biz könüllüləri ilə etdi. Və sonra, bu, maraqlı Bu PrintName zəng edəcək. Orada, bütün bu vaxt çıxır PrintName adlı bir funksiyası kimi görünür. Ki, kiminsə adını yazdıran. Biz printf istifadə etmək lazım deyil yesteryear, PrintName var. Amma ki, yanlış var PrintName deyil, çünki C. People etmədi ilə gəlib 40 və ya 50 il bundan əvvəl icad, Mən əvəzinə etdi. Və əslində, mən diyirləyin əgər daha xəbərdarlıq aşağı Mən öz yaza bilərsiniz necə C. funksiyaları Biz nəhayət lazımdır biz deyərək saxlamaq izah, etibarsız, bir neçə yerlərdə, lakin bu gün üçün, edək yalnız adı oldu. Line 24-də, siz istəyirsinizsə öz funksiyasını yaratmaq sözün yazmaq funksiyası adı. Mən PrintName seçdi. Parantez, siz sonra müəyyən nə cür giriş, və nə qədər siz bu funksiya etmək istəyirəm. Bu halda, mən etmək istəyirəm Adlı 1 dəyişən, adı, və o olacaq növü, simli, belə ki, gedir simvol bəzi ardıcıllıqla olmalıdır. Və sonra, bu proqram Not kimi çox, xüsusi puzzle ola bilər pieces-- Bu xüsusi davranış üçün gedir. Bu printf zəng edəcək keçən, hello, tutucu, və sonra plug olacaq nə istifadəçi çağırıb. Belə ki, bu bir nümunəsidir nə kompüter alim olardı zəng abstraksiya və ya funksional ədalətli parçalanma, saying-- əgər xülya yolları Siz bu yüksək səviyyədə fikir kimi Mən funksionallığı istəyirəm ki, Siz tamamilə kiminsə adını yazdıran sözün sonra printf yazmaq və bilərsiniz istədiyiniz dəlilləri keçmək, və proqram işləyəcək, Bu çərşənbə ildən var. Amma üz mücərrəd başlaya bilərsiniz bir ad çap anlayışı. Siz bir ad verə bilər, PrintName, və bu kimi Həftə 0 layering bu fikirdir. Bundan sonra, mən və bilmək yoxdur və ya PrintName həyata necə qayğı. Bəli bəlkə, printf istifadə edir kim istifadə edir nə bilir, deyil? Kim qayğıları? İndi burada söhbət alıram, əvəzinə aşağı burada. Şübhəsiz ki, bizim proqramları almaq kimi daha inkişaf etmiş və inkişaf etmiş, verilən atırıq saxlamaq olacaq aşağı səviyyədə puzzle ədəd mövcud. Biz onlara yazdı çünki və ya başqasına belə etdi biz sonra onların üst inşa edə bilər. Bu nəzər salaq variant, bir fəaliyyət göstərir. Belə ki, bu bir az daha çox inkişaf etmiş, lakin bu çıxır CS50 kitabxana ki, yalnız GetInt funksiyası var. Biz, il əvvəl hesab etməyib bir GetPositiveInt funksiyası həyata. Və bir az annoying var, çünki Sizlərin bir proqram orada yazılı Bir müsbət almaq istəyirəm istifadəçi tam, Siz tamamilə GetInt istifadə edə bilərsiniz. Və tamamilə ilə kontrol edə bilərsiniz vəziyyəti və bəlkə bir loop ki, int böyükdür əgər və 0-dən istifadəçi fəğan o verməsə Bir müsbət sayı. Amma bu inşa edək bina, özümüzü blok, xüsusi Scratch parça, siz əgər. Mən bir proqram üçün gedirəm burada nəticədə, mən zəng etmək istəyirəm GetPositiveInt və mən olmaq istəyirəm ki, int nə çap edə. Amma bu indi üz Abstrak olunur. Bu, sadəcə yüksək səviyyədə verilmişdir ki, Bu nə deyir adı, Bu, çünki gözəl olan oxumaq üçün indi çox asan. Mən qayğı yoxdur, əgər nə altında var başlıq, mənə aşağı diyirləyin bildirin. Və bu bir az qorxuducu deyil ilk, xüsusilə Bu Sizin foruma ilk proqram varsa, lakin bir nəzər salaq. Mən artıq, etibarsız, deyirəm Bu funksiyaları yerinə çevrilir, çünki, çox GetString kimi, bilərsiniz Mənə bir dəyər qayıtmaq. Onlar yalnız yoxdur ekran çap, onlar həqiqətən əl bilər geri mənə bir şey. Və PrintName əvvəl isə, Mən bir şey geri lazım deyildi. Mən yan təsiri lazım bir şey, ekranda göstərən amma bir insan lazım deyil mənə bir şey geri əl. Burada GetPositiveInt ilə, GetInt ilə kimi, Mən bir şey təqdim etmək istəyirəm. Mən, etibarsız deyil dedi alıram line 23, lakin int haqqında, olan deyir, bu funksiya Mən yazıram ki, GetPositiveInt gedir çağırıb bir tam deyil, heç bir şey məni geri əl, etibarsız deyil. Eyni zamanda, bu heç almaq olacaq giriş, mən cür, onu ləğv etdik. Mən GetPositiveInt hər hansı verən deyiləm giriş, mən mənə onun çıxış vermək istəyirəm. Və sonra nə indi baş verir? Belə ki, burada mən bir dəyişən elan edə bilərsiniz. Mən loop kənarda bunu etdik biz nəhayət görürsünüz səbəblərə görə, lakin bu, yalnız verir Mənə 32 bit adlanan n, və mən pre-müəyyən etdik Onlara tam saxlamaq üçün. Və burada, tikintisi isə nə ki Bu faydalı niyə bu. Sözün bunu, n 1 az isə. Belə ki, nə görmək edək. Mən, xahiş edirik çap Mənə bir müsbət int verir. Mən CS50 istifadə edərək, bir int almaq fəaliyyət və n saxlanılır. Və sonra, kodu nə line yəqin ki, məntiqi növbəti edam olur? Hansı line sayı? Bəli, belə 31. Siz var qədər bu bilmirəm bildirib və ya sort onu çıxarmaq edilmişdir, lakin doğru. Bu aşağı top gedir və sonra təkrar saxlayır. Mən sayı, demək çap əgər Belə ki, 1 Mənfi 1 mənfi daha n az? Bəli. 1 Mənfi 1 az deyil. Belə ki, nə baş verməlidir? Mən bunu gedirəm n az 1 isə, mən geri line 28 getmək üçün gedirəm. Və hər sýrada və bir şeylərdir run bildirin funksiyası 1 tərtib etmək, və indi funksiyası 1 doğramaq nöqtə. Mən mənfi 1 yazın əgər, bu mənə böyle saxlamaq niyyətindədir Mən hər çünki əməkdaşlıq qədər Mənim vəsaitlərin az 1 və az 1 edərkən, əgər, Mən bunu saxlamaq üçün gedirəm. Mən nəhayət 50 kimi bir sıra versələr, təşəkkürlə, bu 50 thanks, deyir. Niyə? N az deyil, çünki qısa müddətdə 1, mən bu loop vurulmuş əldə dayandırmaq və bu yeni söz, bu gün, qaytarılması, sözün ki, yoxdur. Belə ki, yalnız bir olan, həyata etdik mənada, GetString bərabər, Mən geri təhvil alıram kim, bəzi dəyəri mənə istifadə edir. Bu olmaq üçün yoxdur simli, bir int var. Sürətli, belə bir sadə Məsələn, biz tezliklə lazımdır Bəzi daha mürəkkəb görmək hələ versiyasını. Əslində, bir nəzər edək return.c adlanır rəqəmli bir. Və bu həqiqətən bir az sadə. Belə ki, bu proqramın məqsədi Məndən üstün tutsa tərtib və run bildirin, belə dot, geri etmək çizgi, return-- bildiriş proqram sadəcə dəyər 2 kublar. Bu, çətin, olduqca axmaq var kodu hər hansı bir giriş deyil, lakin başqa bir nümayiş yoxdur Mən özümü yazdıq fəaliyyət göstərir. Belə ki, burada, mən bəyan etdik ki, dəyişən, növü int, x adlı 2 saylı bərabər, tamamilə əsassız. Bu yalnız bir tüklü çap edir. Bu x deyir indi belə və Belə ki, cubing dot dot dot. Və sehrli line 21 yəqin edir. Mən kub adlı funksiyası zəng edirəm, Mən kağız bir hesabatı verilməsi alıram yazılmış sayı 2, və nə dəyəri, riyazi, Mən bu çıxmaq istəyirsiniz? Yalnız bir ağlı başında olma çek kimi? 8. Sağ? I 2 2, geri Cubed istəyirəm 3 güc, belə ki, 8 geri. Belə ki, burada kub həyata keçirilir? Bəli, bu burada həyata bildiriş. Və yalnız əvvəl kimi, məntiqi, hətta syntax yəqin ki, baxmayaraq ki, bir çox üçün çox yeni, Mən bu funksiyası istəyirəm bir hesabatı məni geri əl bu bir int ilə kağız. Beləliklə, mən int var adı, özbaşına deyil lakin rahat kub çağırıb. bu giriş, n var ki, belə ki, tam yazın Mən sayı keçə bilər necə Kağız hesabatında 2. Və sonra C dəstəkləyir çıxır riyaziyyat, belə ki, dəfə X yoxdur Yalnız ulduz istifadə vurma üçün. Bu n dəfə n dəfə qaytarır sadəcə bir Cubed dəyəri n. Beləliklə, biz bütün bu ilə gedir? Bu mütləq bir deyil qasırğa tur, arxayın, ki, super bölmələrdə və problem, 1 set Siz vasitəsilə gəzmiş olacaq Bütün bu bütün daha çox. Və problem 1 dəst, biz keçid lazımdır Not qrafik dünya bir şey daha command line C. Amma biz ilham çəkmək lazımdır burada oyun yesteryear, orada olan C və standart nəşr istifadə p set Mario piramida həyata olacaq. Və hacker redaksiyada p set, belə seçmək seçerseniz, Bir az daha həyata keçirəcək iki zirvələri ilə piramida çətin. Siz həmçinin həyata olacaq alqoritm, bir görməmiş alqoritmi. Bu var çıxır bəzi maraqlı məntiq prosesi arxasında bir kassir stansiyası çalışan və həqiqətən təhvil kimsə geri dəyişiklik. Kifayət qədər ki, bir alqoritm var sadə ki, siz hətta bilər Siz ilk oxumaq zaman daxilən tutmaq pseudocode ki, mən həmişə var nə var həyata Mən kimsə bəzi verilmiş etdiyiniz hər hansı bir vaxt həyata Siz həmişə imkan verir pul back-- sayı minimuma endirmək kağız qeydlər və ya metal sikkələr geri istifadəçi verilməsi edirik ki. Bu, əlbəttə, çekici Siz CVS və ya etajer getmək əgər, çünki, Siz əlli olmaq istəmirəm isə bütün dəstə və ya pennies bütün dəstə. Siz az istəyirəm pul, yəqin ki, mümkün. Nəhayət, siz də etiraz olacaq su dünyada dabble və həqiqətən təşəkkür almaq axını dərəcələri arasında Xəritəçəkmə üçün, bir duş, su kimi, yalnız nə qədər su istifadə olunur. Və orada işarə, Burada bu clip olacaq, biz də başa lazımdır ki, yalnız 60 saniyə ki, bir şəkil boyalar aşağı axını duş rəhbərləri. [Video playback] -Bütün Hüququ. Burada hər şey var. Mən Cyclone F Series var Hydra, Jetflow, Stockholm Supersteam, siz bu adı. -Və Nə tövsiyə edirsiniz? -Ne Aradığınız? -Power Man. Power. -Kimi Silkwood. -Bu Radiasiya üçün. -Bu Doğru. Bu nədir -İndi? -Bu Commando 450 var. Mən bir satmırıq. -Amma Biz istədiyiniz nə deyil. Bu komando 450 var. -No Inanın. Bu, yalnız sirk istifadə olunur. Bu filler üçün. Bir şey ödəmək bəsimdi. Jerry haqqında hansı? O ki, idarə edə bilmədi. O incə var. Bəli Oh. [END playback] DAVID J Malan: Bütün hüququ. Bu CS50 əgər var. Biz gələn həftə görəcəksiniz. HOPARLÖR 1: [? Scully?], [? Ian?] qədər bu yere layihəsi kimi, uşaqlar nə ilə gəlmişəm? HOPARLÖR 2: Bəli, biz təqdim etdik Bu fikir bir sıra, və biz ən yaxşı yolu hesab edirəm ki, to-- HOPARLÖR 3: Mən May? HOPARLÖR 2: Bəli. Bütün vasitələrlə, həqiqətən. HOPARLÖR 3: Mən hesab edirəm ki, Biz fikir yekunlaşdırmaq olar bir word-- heç nə ilə Diğer üçün. DAVID J Malan: Heç bir şey? HOPARLÖR 3: Heç bir şey. DAVID J MALAN: Bu nə deməkdir? HOPARLÖR 3: Diğer heç bir şey haqqında. HOPARLÖR 2: Bəli, mən demək, fəlsəfə, Mən demək, heç bir şey həmişə bir şeydir. HOPARLÖR 1: Belə what's-- premise var? HOPARLÖR 3: Belə ki, həyat kimi. OK. Bu gün nə idi? DAVID J MALAN: Mən qalxıb idi səhər yeməyi, və işləmək üçün gəldi. HOPARLÖR 3: Bu bir yere var. HOPARLÖR 2: Mən demək Lakin, olmamalıdır bir şey the-- ona baş HOPARLÖR 3: Yox, yox, yox, yox. Heç bir şey baş verir. HOPARLÖR 1: Belə ki, niyə biz izləyir? HOPARLÖR 3: Çünki Bu CS50 üçün yere var. DAVID J Malan: Not yet.