[MÜZİK] DAVID J. MALAN: Pekala. Bu CS50 ve bu da 2. Hafta başlangıcıdır. Ve bunu üzerinde Hatırlayacaksınız hafta geçmiş çift, Biz bilgisayarı piyasaya oldum bilim ve, sırayla, programlama. Ve biz yoluyla hikaye başladı Çizilmeye, bu grafik dil MIT'S Media Lab. Sonra, en son, Geçen hafta, biz mi Bir higher-- a tanıtmak alt düzey dil bilinen C, tamamen metinsel var bir şey olarak. Ve, gerçekten, son kez bu bağlamda araştırdı kavramların bir dizi. Bu, geri çağırma, çok oldu İlk program biz baktı. Ve bu program, oldukça basit, , "Merhaba, dünya." Yazdırır Ama çok şey var görünüşteki sihirli oluyor. Bu #include var Bu köşeli parantez ile. int var. (Boşluk) var. Parantez, kaşlı var, noktalı virgül, ve çok daha fazlası. Ve böylece, o hatırlamak Biz Scratch tanıttı biz ideal olarak, geçmişte görebiliyordu ki Bu sözdizimi, gerçekten değil şeyler Tüm bu entelektüel ilginç ama erken Kesinlikle, biraz zor Aklını etrafına sarmak için. Ve, gerçekten de, en yaygın olanlarından biri erken bir programlama sınıfında şeyler, özellikle de daha az rahat, hayal kırıklığına elde etmektir ve bazı sözdizimsel tarafından takıldı hataları, mantıksal hataları söz değil. Ve böylece bizim hedeflerimiz arasında Bugün, aslında, olacak Bazı ile donatmak olacak nasıl problem çözme teknikleri Daha iyi sorunlarını kendileri çözmek için ayıklama formunda olabilir. Ve sen de hatırlamak olduğunu edeceğiz Biz tanıttı çevre en son ne zaman CS50 IDE denirdi. Bu web-tabanlı yazılım olduğunu Eğer bulut içinde program sağlar, Tüm tutarken, bu yüzden konuşmak için sizin biz bugün yine olacak, dosyalarını birlikte. Ve o biz hatırlamak Burada bu konuları yeniden gözden, Aralarında fonksiyonları ve döngüler ve değişkenler ve mantıksal ifadeler, ve koşullar. Ve biz aslında bir kaç Sıfırdan dünyasından tercüme C dünyasına Ama temel yapı bloklar, tabiri caizse, Gerçekten hala aynı geçen hafta vardı. Aslında, biz gerçekten sadece vardı farklı bulmaca parçası, eğer sen. Bunun yerine mor bloğu kaydetmek yerine olan printf vardı C Bu fonksiyonu olduğunu Bir şey yazdırmak için izin verir ve ekranda biçimlendirmek. Biz CS50 tanıttı Kütüphane, nerede senin bertaraf get_char şimdi var, ve get_int ve get_string, ve birkaç diğer işlevleri iyi, hangi aracılığıyla size giriş alabilirsiniz kullanıcının kendi klavyeden. Ve biz de şeylere bir göz attım onun- bool, ve Char gibi, ve çift, şamandıra, int, long_long dize. Ve C hatta diğer veri türlerini var Eğer beyan Diğer bir ifadeyle, Değişken bir değeri saklamak için, ya da bir işlevi uygulamak zaman Bazı değerini döndürür, ne belirtebilirsiniz olan değer türü. Bir dize gibi mi karakter dizisi? bir tamsayı gibi bir sayıdır? Bir kayan nokta var değeri veya benzeri? Yani C, Scratch aksine, biz aslında veri ne tür belirtmek başladı dönen ya da kullanıyorlardı. Ama tabii ki, biz de koştu bilgisayar bazı temel sınırlar. Ve özellikle de, Bu dil C, hatırlama Biz de bir göz attım o tamsayı taşması, gerçeklik Yalnızca varsa o bellek sınırlı miktarda ya da özel olarak ise, sınırlı bir sayıda bit, sadece bu kadar yüksek güvenebilirsiniz. Ve bu yüzden burada bu örneğe baktım bu sayede uçaklarda bir sayaç, Aslında, yeterince uzun olursa olur çalışan taşma ve yazılım neden gerçek bir fiziksel potansiyel hata. Biz de yüzen baktı nokta belirsizlik, gerçeklik sadece sınırlı sayıda bit, 32 veya 64 olsun, Eğer sadece çok sayıda belirtebilirsiniz ondalık noktadan sonra, bundan sonra kesin olmayan elde başlar. Örneğin, üçte biri Yani Burada dünya insan dünyada, Biz sadece sonsuz sayıda olduğunu biliyorum ondalık noktadan sonra 3s. Ama bilgisayar mutlaka olamaz sayıların sonsuz sayısını temsil eder Sadece izin verirseniz bazı bilgilerin sınırlı miktarda. Yani sadece sizi donatmak mı açısından daha büyük bir güce sahip size kendinizi ifade nasıl Programlama açısından bir klavye biz de ne sınırlı aslında yapabilirsiniz. Ve gerçekten, böcek ve hatalar yapabilir sorunların bu tür kaynaklanmaktadır. Ve gerçekten, konular arasında bugün hata ayıklama gibi konular olacak ve aslında başlık altında seyir şeyler tanıtıldı nasıl geçen hafta aslında uygulanmaktadır daha iyi, böylece anlama, hem yetenekleri ve C gibi bir dilin sınırları Ve aslında, biz katmanları geri soyma olacak veri yapısının basit bölgesinin Bir dizi denilen şey, hangi Çizilmeye bir çağrı olur "listesi." Biraz var bu bağlamda farklı. Ve sonra biz de birini tanıtacağız Bizim etki alanına özgü sorunların ilk CS50 içinde, dünya kriptografi, sinyal karıştırıcı sanatı ya çok bilgi deşifre Eğer gizli mesajlar gönderebilirsiniz ve gizli mesajları deşifre İki kişilik, A ve B arasında Bu yüzden geçiş önce yeni dünya, Biraz ile donatmak için çalışalım teknikler hangi ile ortadan kaldırabilirsiniz ya da en azından bazı azaltmak hayal kırıklıklarının muhtemelen karşılaştığım yalnız geçen hafta. Aslında, önünüzde bazı such-- vardır C. Ve oran içinde ilk sorunlar vardır Siz de benim gibi iseniz, ilk kez Eğer bir program yazmaya çalışıyorum, Eğer mantıklı düşünmek bile Program, oldukça basit Eğer çok iyi bir duvara isabet ve olabilir derleyici işbirliği gitmiyor. Yap ya da Clang gitmiyor aslında teklif yapmak. Ve neden olabilir? Eh, en az bir göz atalım belki de basit bir program. Devam edin ve bu tasarruf için gidiyorum kasten buggy0.c adlı bir dosya, Ben bunu biliyorum çünkü Önceden kusurlu. Ama eğer bu fark olmayabilir birinci ya da ikinci ya da üçüncü bir program ben aslında kendim yapıyorum. Yani önde gidiyorum ve Int main (void) dışarı yazın. Ve sonra benim küme parantezi içinde, merhaba, --daha ( "çok tanıdık ters eğik çizgi, n ") - ve bir noktalı virgül. Ben Dosyayı kaydettikten. Şimdi aşağı gitmek için gidiyorum Benim Terminal penceresine ve make buggy0 nedeniyle, yine, Dosyanın adı bugün buggy0.c olduğunu. Yani girin buggy0 yapmak yazın. Ve, ah, Tanrım, son kez çağırmak Hiçbir hata iletileri bu iyi bir şeydir. Yani hiçbir çıkış iyi bir şeydir. Ama burada açıkça var bazı hataları sayısı. çıktı ilk satırında Yani buggy0 yapmak yazdıktan sonra, geri çağırma, Çınlama en oldukça ayrıntılı çıkışıdır. Kaputun altında, CS50 IDE yapılandırılmış bir sürü kullanımı Bu derleyici ile seçenekleri bu yüzden yok onlar hakkında düşünmek. Ve hepsi bu ilk çizgi Clang başladığı anlamına gelmektedir. Ama bundan sonra, sorunlar kendi görünümünü yapmaya başlar. satır 3, karakteri Buggy0.c 5, büyük, kırmızı hata var. O nedir? Dolaylı kütüphane fonksiyonu ilan tipi int (const char * ile printf, ...) [-Werror]. Ben çok hızlı bir şekilde, onu demek Çok gizemli alır. Ve elbette, ilk bakışta, biz olmaz anlamak bekliyoruz Bu mesajın tamamı. ders ve böylece bir bugün gidiyor için fark etmeye olmak desenler, ya da benzer şeyler, hataları aklınıza gelebilecek Geçmişte karşılaştı. Yani sadece ayrı kızdırmak edelim tanıdık o kelimeler. büyük, kırmızı hata açıkça bir şeyin sembolik yanlış olma. örtük ilan kütüphane işlevi printf. Yani oldukça anlamıyorum bile neler dolaylı kütüphane fonksiyonu ilan araçlar, mutlaka sorun şekilde printf ilişkindir. Ve bu sorunun kaynağı Bunu ilan ile ilgisi yoktur. bir fonksiyonudur bildirmek ilk kez söz. Ve geçen hafta terminolojiyi kullanmış Bir fonksiyonun prototip bildirmek, ya üstündeki bir satır ile sizin kendi dosya ya da bir sözde başlık dosyasında. Ve ne dosya biz dedin Geçen hafta printf alıntı olduğunu, unquote ilan? hangi dosya içinde prototip nedir? Yani eğer, ilk şey çağırmak tip, hemen hemen her program son seferinde-- ve yanlışlıkla bir an önce başladı myself-- yazarak bu burada-- oldu hash-- #include