1 00:00:00,000 --> 00:00:02,970 >> [MÜZİK] 2 00:00:02,970 --> 00:00:14,355 3 00:00:14,355 --> 00:00:15,700 >> DAVID J. MALAN: Pekala. 4 00:00:15,700 --> 00:00:18,832 Bu CS50 ve bu da 2. Hafta başlangıcıdır. 5 00:00:18,832 --> 00:00:21,040 Ve bunu üzerinde Hatırlayacaksınız hafta geçmiş çift, 6 00:00:21,040 --> 00:00:24,490 Biz bilgisayarı piyasaya oldum bilim ve, sırayla, programlama. 7 00:00:24,490 --> 00:00:27,640 >> Ve biz yoluyla hikaye başladı Çizilmeye, bu grafik dil 8 00:00:27,640 --> 00:00:28,990 MIT'S Media Lab. 9 00:00:28,990 --> 00:00:30,780 Sonra, en son, Geçen hafta, biz mi 10 00:00:30,780 --> 00:00:34,450 Bir higher-- a tanıtmak alt düzey dil bilinen 11 00:00:34,450 --> 00:00:36,770 C, tamamen metinsel var bir şey olarak. 12 00:00:36,770 --> 00:00:39,440 Ve, gerçekten, son kez bu bağlamda araştırdı 13 00:00:39,440 --> 00:00:40,450 kavramların bir dizi. 14 00:00:40,450 --> 00:00:43,010 >> Bu, geri çağırma, çok oldu İlk program biz baktı. 15 00:00:43,010 --> 00:00:45,710 Ve bu program, oldukça basit, , "Merhaba, dünya." Yazdırır 16 00:00:45,710 --> 00:00:47,730 Ama çok şey var görünüşteki sihirli oluyor. 17 00:00:47,730 --> 00:00:51,460 Bu #include var Bu köşeli parantez ile. 18 00:00:51,460 --> 00:00:52,170 int var. 19 00:00:52,170 --> 00:00:53,020 (Boşluk) var. 20 00:00:53,020 --> 00:00:56,330 Parantez, kaşlı var, noktalı virgül, ve çok daha fazlası. 21 00:00:56,330 --> 00:00:58,480 >> Ve böylece, o hatırlamak Biz Scratch tanıttı 22 00:00:58,480 --> 00:01:02,110 biz ideal olarak, geçmişte görebiliyordu ki Bu sözdizimi, gerçekten değil şeyler 23 00:01:02,110 --> 00:01:04,590 Tüm bu entelektüel ilginç ama erken 24 00:01:04,590 --> 00:01:07,700 Kesinlikle, biraz zor Aklını etrafına sarmak için. 25 00:01:07,700 --> 00:01:10,860 Ve, gerçekten de, en yaygın olanlarından biri erken bir programlama sınıfında şeyler, 26 00:01:10,860 --> 00:01:13,443 özellikle de daha az rahat, hayal kırıklığına elde etmektir 27 00:01:13,443 --> 00:01:17,460 ve bazı sözdizimsel tarafından takıldı hataları, mantıksal hataları söz değil. 28 00:01:17,460 --> 00:01:19,800 Ve böylece bizim hedeflerimiz arasında Bugün, aslında, olacak 29 00:01:19,800 --> 00:01:23,280 Bazı ile donatmak olacak nasıl problem çözme teknikleri 30 00:01:23,280 --> 00:01:26,705 Daha iyi sorunlarını kendileri çözmek için ayıklama formunda olabilir. 31 00:01:26,705 --> 00:01:29,330 Ve sen de hatırlamak olduğunu edeceğiz Biz tanıttı çevre 32 00:01:29,330 --> 00:01:31,780 en son ne zaman CS50 IDE denirdi. 33 00:01:31,780 --> 00:01:34,850 Bu web-tabanlı yazılım olduğunu Eğer bulut içinde program sağlar, 34 00:01:34,850 --> 00:01:38,450 Tüm tutarken, bu yüzden konuşmak için sizin biz bugün yine olacak, dosyalarını birlikte. 35 00:01:38,450 --> 00:01:41,480 Ve o biz hatırlamak Burada bu konuları yeniden gözden, 36 00:01:41,480 --> 00:01:44,480 Aralarında fonksiyonları ve döngüler ve değişkenler ve mantıksal ifadeler, 37 00:01:44,480 --> 00:01:45,110 ve koşullar. 38 00:01:45,110 --> 00:01:49,190 Ve biz aslında bir kaç Sıfırdan dünyasından tercüme 39 00:01:49,190 --> 00:01:50,800 C dünyasına 40 00:01:50,800 --> 00:01:53,220 >> Ama temel yapı bloklar, tabiri caizse, 41 00:01:53,220 --> 00:01:55,150 Gerçekten hala aynı geçen hafta vardı. 42 00:01:55,150 --> 00:01:57,900 Aslında, biz gerçekten sadece vardı farklı bulmaca parçası, eğer sen. 43 00:01:57,900 --> 00:02:00,300 Bunun yerine mor bloğu kaydetmek yerine 44 00:02:00,300 --> 00:02:02,940 olan printf vardı C Bu fonksiyonu olduğunu 45 00:02:02,940 --> 00:02:05,890 Bir şey yazdırmak için izin verir ve ekranda biçimlendirmek. 46 00:02:05,890 --> 00:02:07,950 Biz CS50 tanıttı Kütüphane, nerede 47 00:02:07,950 --> 00:02:11,420 senin bertaraf get_char şimdi var, ve get_int ve get_string, 48 00:02:11,420 --> 00:02:14,610 ve birkaç diğer işlevleri iyi, hangi aracılığıyla size giriş alabilirsiniz 49 00:02:14,610 --> 00:02:16,260 kullanıcının kendi klavyeden. 50 00:02:16,260 --> 00:02:20,640 Ve biz de şeylere bir göz attım onun- bool, ve Char gibi, 51 00:02:20,640 --> 00:02:22,490 ve çift, şamandıra, int, long_long dize. 52 00:02:22,490 --> 00:02:25,170 Ve C hatta diğer veri türlerini var 53 00:02:25,170 --> 00:02:28,560 >> Eğer beyan Diğer bir ifadeyle, Değişken bir değeri saklamak için, 54 00:02:28,560 --> 00:02:32,600 ya da bir işlevi uygulamak zaman Bazı değerini döndürür, 55 00:02:32,600 --> 00:02:35,290 ne belirtebilirsiniz olan değer türü. 56 00:02:35,290 --> 00:02:37,310 Bir dize gibi mi karakter dizisi? 57 00:02:37,310 --> 00:02:39,490 bir tamsayı gibi bir sayıdır? 58 00:02:39,490 --> 00:02:41,390 Bir kayan nokta var değeri veya benzeri? 59 00:02:41,390 --> 00:02:46,180 Yani C, Scratch aksine, biz aslında veri ne tür belirtmek başladı 60 00:02:46,180 --> 00:02:48,330 dönen ya da kullanıyorlardı. 61 00:02:48,330 --> 00:02:51,910 >> Ama tabii ki, biz de koştu bilgisayar bazı temel sınırlar. 62 00:02:51,910 --> 00:02:54,100 Ve özellikle de, Bu dil C, hatırlama 63 00:02:54,100 --> 00:02:57,070 Biz de bir göz attım o tamsayı taşması, gerçeklik 64 00:02:57,070 --> 00:03:00,460 Yalnızca varsa o bellek sınırlı miktarda 65 00:03:00,460 --> 00:03:04,600 ya da özel olarak ise, sınırlı bir sayıda bit, sadece bu kadar yüksek güvenebilirsiniz. 66 00:03:04,600 --> 00:03:08,460 Ve bu yüzden burada bu örneğe baktım bu sayede uçaklarda bir sayaç, 67 00:03:08,460 --> 00:03:13,510 Aslında, yeterince uzun olursa olur çalışan taşma ve yazılım neden 68 00:03:13,510 --> 00:03:15,560 gerçek bir fiziksel potansiyel hata. 69 00:03:15,560 --> 00:03:18,600 >> Biz de yüzen baktı nokta belirsizlik, gerçeklik 70 00:03:18,600 --> 00:03:22,280 sadece sınırlı sayıda bit, 32 veya 64 olsun, 71 00:03:22,280 --> 00:03:27,330 Eğer sadece çok sayıda belirtebilirsiniz ondalık noktadan sonra, bundan sonra 72 00:03:27,330 --> 00:03:29,110 kesin olmayan elde başlar. 73 00:03:29,110 --> 00:03:32,360 Örneğin, üçte biri Yani Burada dünya insan dünyada, 74 00:03:32,360 --> 00:03:35,360 Biz sadece sonsuz sayıda olduğunu biliyorum ondalık noktadan sonra 3s. 75 00:03:35,360 --> 00:03:38,820 Ama bilgisayar mutlaka olamaz sayıların sonsuz sayısını temsil eder 76 00:03:38,820 --> 00:03:42,590 Sadece izin verirseniz bazı bilgilerin sınırlı miktarda. 77 00:03:42,590 --> 00:03:45,900 >> Yani sadece sizi donatmak mı açısından daha büyük bir güce sahip 78 00:03:45,900 --> 00:03:49,280 size kendinizi ifade nasıl Programlama açısından bir klavye 79 00:03:49,280 --> 00:03:51,430 biz de ne sınırlı aslında yapabilirsiniz. 80 00:03:51,430 --> 00:03:55,790 Ve gerçekten, böcek ve hatalar yapabilir sorunların bu tür kaynaklanmaktadır. 81 00:03:55,790 --> 00:03:59,900 Ve gerçekten, konular arasında bugün hata ayıklama gibi konular olacak 82 00:03:59,900 --> 00:04:03,699 ve aslında başlık altında seyir şeyler tanıtıldı nasıl geçen hafta 83 00:04:03,699 --> 00:04:05,490 aslında uygulanmaktadır daha iyi, böylece 84 00:04:05,490 --> 00:04:10,530 anlama, hem yetenekleri ve C gibi bir dilin sınırları 85 00:04:10,530 --> 00:04:14,770 >> Ve aslında, biz katmanları geri soyma olacak veri yapısının basit bölgesinin 86 00:04:14,770 --> 00:04:17,756 Bir dizi denilen şey, hangi Çizilmeye bir çağrı olur "listesi." 87 00:04:17,756 --> 00:04:19,589 Biraz var bu bağlamda farklı. 88 00:04:19,589 --> 00:04:23,340 Ve sonra biz de birini tanıtacağız Bizim etki alanına özgü sorunların ilk 89 00:04:23,340 --> 00:04:26,790 CS50 içinde, dünya kriptografi, sinyal karıştırıcı sanatı 90 00:04:26,790 --> 00:04:29,650 ya çok bilgi deşifre Eğer gizli mesajlar gönderebilirsiniz 91 00:04:29,650 --> 00:04:34,520 ve gizli mesajları deşifre İki kişilik, A ve B arasında 92 00:04:34,520 --> 00:04:37,490 >> Bu yüzden geçiş önce yeni dünya, 93 00:04:37,490 --> 00:04:42,059 Biraz ile donatmak için çalışalım teknikler hangi ile ortadan kaldırabilirsiniz 94 00:04:42,059 --> 00:04:43,850 ya da en azından bazı azaltmak hayal kırıklıklarının 95 00:04:43,850 --> 00:04:46,630 muhtemelen karşılaştığım yalnız geçen hafta. 96 00:04:46,630 --> 00:04:50,830 Aslında, önünüzde bazı such-- vardır C. Ve oran içinde ilk sorunlar vardır 97 00:04:50,830 --> 00:04:54,010 Siz de benim gibi iseniz, ilk kez Eğer bir program yazmaya çalışıyorum, 98 00:04:54,010 --> 00:04:57,330 Eğer mantıklı düşünmek bile Program, oldukça basit 99 00:04:57,330 --> 00:05:01,200 Eğer çok iyi bir duvara isabet ve olabilir derleyici işbirliği gitmiyor. 100 00:05:01,200 --> 00:05:03,940 Yap ya da Clang gitmiyor aslında teklif yapmak. 101 00:05:03,940 --> 00:05:05,450 >> Ve neden olabilir? 102 00:05:05,450 --> 00:05:07,950 Eh, en az bir göz atalım belki de basit bir program. 103 00:05:07,950 --> 00:05:11,190 Devam edin ve bu tasarruf için gidiyorum kasten buggy0.c adlı bir dosya, 104 00:05:11,190 --> 00:05:13,590 Ben bunu biliyorum çünkü Önceden kusurlu. 105 00:05:13,590 --> 00:05:17,400 Ama eğer bu fark olmayabilir birinci ya da ikinci ya da üçüncü bir program 106 00:05:17,400 --> 00:05:18,830 ben aslında kendim yapıyorum. 107 00:05:18,830 --> 00:05:23,820 Yani önde gidiyorum ve Int main (void) dışarı yazın. 108 00:05:23,820 --> 00:05:28,130 Ve sonra benim küme parantezi içinde, merhaba, --daha ( "çok tanıdık 109 00:05:28,130 --> 00:05:30,980 ters eğik çizgi, n ") - ve bir noktalı virgül. 110 00:05:30,980 --> 00:05:32,360 >> Ben Dosyayı kaydettikten. 111 00:05:32,360 --> 00:05:34,850 Şimdi aşağı gitmek için gidiyorum Benim Terminal penceresine 112 00:05:34,850 --> 00:05:40,340 ve make buggy0 nedeniyle, yine, Dosyanın adı bugün buggy0.c olduğunu. 113 00:05:40,340 --> 00:05:43,660 Yani girin buggy0 yapmak yazın. 114 00:05:43,660 --> 00:05:48,200 >> Ve, ah, Tanrım, son kez çağırmak Hiçbir hata iletileri bu iyi bir şeydir. 115 00:05:48,200 --> 00:05:49,740 Yani hiçbir çıkış iyi bir şeydir. 116 00:05:49,740 --> 00:05:52,920 Ama burada açıkça var bazı hataları sayısı. 117 00:05:52,920 --> 00:05:56,470 >> çıktı ilk satırında Yani buggy0 yapmak yazdıktan sonra, geri çağırma, 118 00:05:56,470 --> 00:05:59,540 Çınlama en oldukça ayrıntılı çıkışıdır. 119 00:05:59,540 --> 00:06:02,067 Kaputun altında, CS50 IDE yapılandırılmış 120 00:06:02,067 --> 00:06:04,150 bir sürü kullanımı Bu derleyici ile seçenekleri 121 00:06:04,150 --> 00:06:05,941 bu yüzden yok onlar hakkında düşünmek. 122 00:06:05,941 --> 00:06:08,840 Ve hepsi bu ilk çizgi Clang başladığı anlamına gelmektedir. 123 00:06:08,840 --> 00:06:11,720 >> Ama bundan sonra, sorunlar kendi görünümünü yapmaya başlar. 124 00:06:11,720 --> 00:06:17,390 satır 3, karakteri Buggy0.c 5, büyük, kırmızı hata var. 125 00:06:17,390 --> 00:06:18,380 O nedir? 126 00:06:18,380 --> 00:06:23,562 Dolaylı kütüphane fonksiyonu ilan tipi int (const char * ile printf, 127 00:06:23,562 --> 00:06:26,050 ...) [-Werror]. 128 00:06:26,050 --> 00:06:28,379 Ben çok hızlı bir şekilde, onu demek Çok gizemli alır. 129 00:06:28,379 --> 00:06:30,170 Ve elbette, ilk bakışta, biz olmaz 130 00:06:30,170 --> 00:06:32,380 anlamak bekliyoruz Bu mesajın tamamı. 131 00:06:32,380 --> 00:06:34,213 ders ve böylece bir bugün gidiyor için 132 00:06:34,213 --> 00:06:36,919 fark etmeye olmak desenler, ya da benzer şeyler, 133 00:06:36,919 --> 00:06:38,960 hataları aklınıza gelebilecek Geçmişte karşılaştı. 134 00:06:38,960 --> 00:06:41,335 Yani sadece ayrı kızdırmak edelim tanıdık o kelimeler. 135 00:06:41,335 --> 00:06:44,290 büyük, kırmızı hata açıkça bir şeyin sembolik yanlış olma. 136 00:06:44,290 --> 00:06:47,940 >> örtük ilan kütüphane işlevi printf. 137 00:06:47,940 --> 00:06:51,680 Yani oldukça anlamıyorum bile neler dolaylı kütüphane fonksiyonu ilan 138 00:06:51,680 --> 00:06:54,900 araçlar, mutlaka sorun şekilde printf ilişkindir. 139 00:06:54,900 --> 00:06:59,130 Ve bu sorunun kaynağı Bunu ilan ile ilgisi yoktur. 140 00:06:59,130 --> 00:07:02,440 >> bir fonksiyonudur bildirmek ilk kez söz. 141 00:07:02,440 --> 00:07:06,210 Ve geçen hafta terminolojiyi kullanmış Bir fonksiyonun prototip bildirmek, 142 00:07:06,210 --> 00:07:11,860 ya üstündeki bir satır ile sizin kendi dosya ya da bir sözde başlık dosyasında. 143 00:07:11,860 --> 00:07:15,300 Ve ne dosya biz dedin Geçen hafta printf alıntı olduğunu, 144 00:07:15,300 --> 00:07:17,080 unquote ilan? 145 00:07:17,080 --> 00:07:20,950 hangi dosya içinde prototip nedir? 146 00:07:20,950 --> 00:07:24,640 >> Yani eğer, ilk şey çağırmak tip, hemen hemen her program son seferinde-- 147 00:07:24,640 --> 00:07:30,790 ve yanlışlıkla bir an önce başladı myself-- yazarak bu burada-- oldu 148 00:07:30,790 --> 00:07:38,630 hash-- #include 00:07:41,860 Şimdi bu dosyayı kaydetmek, ben gidiyorum devam edin ve benim ekranı temizlemek için, 150 00:07:41,860 --> 00:07:44,740 yazarak yapabileceğiniz Temizle ya da Kontrol L tutabilir 151 00:07:44,740 --> 00:07:47,680 Sadece terminal penceresini temizlemek için sadece bazı dağınıklığı ortadan kaldırmak için. 152 00:07:47,680 --> 00:07:51,370 >> Ben devam edeceğim ve yeniden tipi yapmak buggy0 girin. 153 00:07:51,370 --> 00:07:53,790 Ve işte, ben hala görüyorum Clang uzun komut, 154 00:07:53,790 --> 00:07:55,470 ama hiçbir hata iletisi bu sefer var. 155 00:07:55,470 --> 00:07:58,800 Ve gerçekten, ben ./buggy0 yaparsanız, Geçen seferki gibi, 156 00:07:58,800 --> 00:08:01,860 nerede nokta bunun anlamı dizin, Slash sadece anlamına gelir 157 00:08:01,860 --> 00:08:05,040 Burada programın adını gelir ve Programın bu isim, buggy0 olduğu 158 00:08:05,040 --> 00:08:07,340 , "Merhaba, dünya." Enter 159 00:08:07,340 --> 00:08:09,440 >> Şimdi, nasıl olabilir Bu çözümü panoda 160 00:08:09,440 --> 00:08:12,017 olmadan mutlaka gibi pek çok kelime tanıma 161 00:08:12,017 --> 00:08:14,350 Olarak yaptım, kesinlikle sahip Bu yüzden yıllardır yapılan? 162 00:08:14,350 --> 00:08:18,720 Peki, ilk sorun başına gerçekleştirmek set, size bir komuta tanıtmak 163 00:08:18,720 --> 00:08:21,175 CS50 kendi personeli olduğunu denilen help50 yazdı. 164 00:08:21,175 --> 00:08:24,300 Ve gerçekten, C için şartname yapar Sorun, bu nasıl kullanılacağı konusunda ayarlayın. 165 00:08:24,300 --> 00:08:27,210 >> Ama esasen help50 olduğunu Bir program CS50 personeli 166 00:08:27,210 --> 00:08:30,850 Bu izin verir yazdı çalıştırmak Bir komut ya da bir programı çalıştırmak 167 00:08:30,850 --> 00:08:36,169 ve anlamıyorum eğer onun Çıktı, help50 çıktısı geçmek için 168 00:08:36,169 --> 00:08:38,890 hangi yazılım işaret dersin personeli yazdı 169 00:08:38,890 --> 00:08:42,429 Programınızın çıktı bakacağız satır satır, karakter karakter. 170 00:08:42,429 --> 00:08:46,000 Ve biz, personel, tanımak Karşılaştığınız hata iletisi 171 00:08:46,000 --> 00:08:50,580 bazı size kışkırtmak için çalışacağız bazı tavsiyeler ile retorik sorular, 172 00:08:50,580 --> 00:08:54,890 Bir TF veya CA veya benim gibi çok mesai saatleri bizzat yapardı. 173 00:08:54,890 --> 00:08:58,320 >> eğer yapmazsam Yani help50 bakmak mutlaka bir sorunu tanımak. 174 00:08:58,320 --> 00:09:00,790 Ama güvenmeyin bir koltuk değneği olarak çok. 175 00:09:00,790 --> 00:09:03,990 Kesinlikle anlamaya çalışın onun Çıktı ve sonra ondan öğrenmek 176 00:09:03,990 --> 00:09:07,571 bu yüzden sadece bir veya iki kez sizi yapmak Şimdiye kadar, belirli bir hata help50 çalıştırmak 177 00:09:07,571 --> 00:09:08,070 mesaj. 178 00:09:08,070 --> 00:09:10,660 Bundan sonra, olmalıdır kendinizi daha iyi donanımlı 179 00:09:10,660 --> 00:09:13,180 aslında ne olduğunu anlamaya. 180 00:09:13,180 --> 00:09:14,350 >> burada diğeri yapalım. 181 00:09:14,350 --> 00:09:20,410 Bana başka önde gitmek ve let Dosya bu buggy1.c arayacağım. 182 00:09:20,410 --> 00:09:23,110 Ve bu dosyada ben deliberately-- gidiyor 183 00:09:23,110 --> 00:09:26,330 ama yok iddia Yaptığım şey hata anlıyorum. 184 00:09:26,330 --> 00:09:31,420 >> Devam edin ve bu-- yapacağım #include, ben ettik beri 185 00:09:31,420 --> 00:09:33,660 Bir an önce dan dersimi aldım. 186 00:09:33,660 --> 00:09:36,220 Int main (void), daha önce olduğu gibi. 187 00:09:36,220 --> 00:09:40,880 Ve sonra burada ben gidiyorum dize s yapmak - get_string. 188 00:09:40,880 --> 00:09:43,770 Ve son kez çağırmak olduğunu Bu araçlar, hey, bilgisayar, 189 00:09:43,770 --> 00:09:48,280 Bana bir değişken vermek o s arama ve Bu değişken bir dize türü yapmak 190 00:09:48,280 --> 00:09:50,150 bu yüzden o bir veya daha fazla kelime saklayabilirsiniz. 191 00:09:50,150 --> 00:09:52,191 >> Ve sonra sağ taraftan eşittir işareti yan 192 00:09:52,191 --> 00:09:54,980 Bir olan get_string olduğu CS50 Kütüphanesi'nde işlevi 193 00:09:54,980 --> 00:09:55,980 Bu tam olarak bunu yapıyor. 194 00:09:55,980 --> 00:09:59,740 Daha sonra bir işlevi ve alır sağ eller onu sola. 195 00:09:59,740 --> 00:10:02,670 Yani bu eşit işareti anlamına gelmez Biz matematik düşünebilir "eşittir". 196 00:10:02,670 --> 00:10:04,750 Bu sağdan sola atama anlamına gelir. 197 00:10:04,750 --> 00:10:09,640 Yani bu, gelen dize almak anlamına gelir Kullanıcı s içine saklayın ve. 198 00:10:09,640 --> 00:10:10,460 >> Şimdi bunu kullanalım. 199 00:10:10,460 --> 00:10:13,820 Bana bir saniye şimdi ve önümüzdeki gidelim çizgi, beni go ahead ve "Merhaba" diyelim - 200 00:10:13,820 --> 00:10:19,330 değil "dünya," ama "Merhaba,% s- hangi bizim tutucu, virgül s, 201 00:10:19,330 --> 00:10:22,030 hangi bizim değişkendir, ve daha sonra bir noktalı virgül. 202 00:10:22,030 --> 00:10:26,070 Yani çok fazla berbat olmasaydı Burada, bu doğru kod gibi görünüyor. 203 00:10:26,070 --> 00:10:28,090 >> Ve benim içgüdüleri şimdi derlemek için vardır. 204 00:10:28,090 --> 00:10:30,400 Dosya buggy1.c olarak adlandırılır. 205 00:10:30,400 --> 00:10:33,770 Yani girin buggy1 yapmak yapacağım. 206 00:10:33,770 --> 00:10:36,377 Ve lanetlemek-it, yoksa eskisinden daha fazla hata. 207 00:10:36,377 --> 00:10:38,210 Ben daha var, yani hata iletileri it would 208 00:10:38,210 --> 00:10:40,400 Bu programda gerçek hatları daha görünüyor. 209 00:10:40,400 --> 00:10:42,730 >> Ama paket burada olduğunu Eğer bunalmış olsanız bile 210 00:10:42,730 --> 00:10:45,040 iki ya da üç ya da dört hata mesajları, 211 00:10:45,040 --> 00:10:48,340 çok her zaman odak bu mesajların ilk. 212 00:10:48,340 --> 00:10:52,220 en üstteki tek baktığımızda, olmak yedekleyin olarak gerek kaydırma. 213 00:10:52,220 --> 00:10:53,930 Yani burada yapmak buggy1 yazdınız. 214 00:10:53,930 --> 00:10:55,700 Burada beklendiği gibi Clang çıkışı var. 215 00:10:55,700 --> 00:10:57,290 >> Ve burada ilk kırmızı hata var. 216 00:10:57,290 --> 00:11:02,370 bildirilmemiş tanımlayıcı kullanımı dize, ben standardı demek istedi? 217 00:11:02,370 --> 00:11:04,260 Yani standart olduğunu Aslında başka bir şey. 218 00:11:04,260 --> 00:11:06,240 Bu kullanıcının atıfta Klavye, esas olarak. 219 00:11:06,240 --> 00:11:08,080 >> Ama bu demek istemedim. 220 00:11:08,080 --> 00:11:11,770 Ben dize geliyordu ve ben get_string anlamına geliyordu. 221 00:11:11,770 --> 00:11:16,200 Peki o ne ben Bu sefer yapmak unuttum? 222 00:11:16,200 --> 00:11:20,230 Bu sefer ne eksik? 223 00:11:20,230 --> 00:11:23,600 Benim #include var, bu yüzden printf erişimi vardır. 224 00:11:23,600 --> 00:11:26,090 >> Ama ben ne yok henüz erişim? 225 00:11:26,090 --> 00:11:29,420 Evet, sadece son kez gibi, Ben derleyici söylemek gerekir 226 00:11:29,420 --> 00:11:31,691 Bu fonksiyonlar nelerdir tınlamak. 227 00:11:31,691 --> 00:11:33,940 Get_string gelmiyor C ile ve özellikle, 228 00:11:33,940 --> 00:11:38,160 gelmez Dosyayı başlık. 229 00:11:38,160 --> 00:11:40,770 Bunun yerine geliyor bir şey personel yazdı 230 00:11:40,770 --> 00:11:44,176 hangi farklı bir dosya isim ama aptly. 231 00:11:44,176 --> 00:11:46,990 232 00:11:46,990 --> 00:11:50,861 >> Yani sadece bir satır olduğunu ekleyerek son kez code-- hatırlama 233 00:11:50,861 --> 00:11:53,610 Clang çalıştığında o, gidiyor alt benim kod üst bakmak, 234 00:11:53,610 --> 00:11:54,193 soldan sağa. 235 00:11:54,193 --> 00:11:57,200 Fark için gidiyor oh, istiyorum. 236 00:11:57,200 --> 00:11:59,900 Gidip o bulsun, sunucuda her yerde, 237 00:11:59,900 --> 00:12:03,090 esasen, kopyalayıp yapıştırın, Kendi dosyasının en içine 238 00:12:03,090 --> 00:12:06,820 böylece hikayenin bu noktasında bu, hat 1, programın geri kalanı 239 00:12:06,820 --> 00:12:11,651 Gerçekten, fonksiyonların herhangi birini kullanabilirsiniz Bu şekilde, aralarında get_string. 240 00:12:11,651 --> 00:12:13,650 Yani görmezden gidiyorum Bu hataların geri kalanı, 241 00:12:13,650 --> 00:12:17,190 Çünkü ben, gerçekten, sadece şüpheli İlki aslında önemi. 242 00:12:17,190 --> 00:12:20,780 Ve ben, önde ve yeniden çalıştırın gideceğim Benim dosyayı kaydettikten sonra buggy1 olun. 243 00:12:20,780 --> 00:12:22,580 Ve işte, o işi yaptım. 244 00:12:22,580 --> 00:12:29,200 Ve ben ./buggy1 yapmak ve eğer için, yazın örnek, Zamyla, şimdi, merhaba alacak 245 00:12:29,200 --> 00:12:32,000 Zamyla, yerine merhaba dünya. 246 00:12:32,000 --> 00:12:32,550 >> Pekala. 247 00:12:32,550 --> 00:12:35,890 Yani burada paketler daha sonra vardır, bir, kadar olabildiğince toplamak için çalışın 248 00:12:35,890 --> 00:12:39,140 yalnız hata iletileri gelen, seyir tanınabilir bazı kelimeleri de. 249 00:12:39,140 --> 00:12:43,070 Bu Kısıtlama, başına help50 kullanın Sorun özellikleri ayarlayın. 250 00:12:43,070 --> 00:12:46,500 Ama bu engelleme de her zaman bakmak Üst hata sadece, en azından 251 00:12:46,500 --> 00:12:50,051 Başlangıçta, görmek için hangi bilgileri aslında verim olabilir. 252 00:12:50,051 --> 00:12:52,300 Ama orada çıkıyor Hatta daha fazla işlevsellik inşa 253 00:12:52,300 --> 00:12:55,030 CS50 Library içine yardımcı olmak için dönem erken sen 254 00:12:55,030 --> 00:12:57,580 ve erken programlama yanlış neler olduğunu anlamaya. 255 00:12:57,580 --> 00:12:59,840 Yani burada başka bir örnek yapalım. 256 00:12:59,840 --> 00:13:04,350 Ben, hangi bu buggy2 çağıracağım, Yine, dışarı kusurlu olacak 257 00:13:04,350 --> 00:13:05,650 tasarım tarafından kapıda, evi. 258 00:13:05,650 --> 00:13:09,980 >> Ve ben önde gidiyorum ve #include yapmak. 259 00:13:09,980 --> 00:13:12,580 Ve sonra ben int main (void) yapacağım. 260 00:13:12,580 --> 00:13:14,840 Ve sonra bir for döngüsü yapacağım. 261 00:13:14,840 --> 00:13:16,690 Için (_ 0 int i. 262 00:13:16,690 --> 00:13:18,750 i ya da daha az 10'a eşittir. 263 00:13:18,750 --> 00:13:24,260 i ++ ve sonra küme ayracı, ben gidiyorum Burada sadece bir hashtag sembolü yazdırmak için 264 00:13:24,260 --> 00:13:25,920 ve yeni bir satır karakteri. 265 00:13:25,920 --> 00:13:29,220 >> Bu benim niyet Yani Program oldukça basit olduğunu 266 00:13:29,220 --> 00:13:33,150 10 kez yinelemek ve her tekrarında 267 00:13:33,150 --> 00:13:35,260 bu döngü her seferinde döngüsü boyunca, 268 00:13:35,260 --> 00:13:37,660 Bir hashtag çıktı, Bir hashtag, bir hashtag. 269 00:13:37,660 --> 00:13:40,480 Bir başına hattı çünkü ben Orada yeni bir satır var. 270 00:13:40,480 --> 00:13:42,787 Ve için hatırlatmak geçen hafta-- başına döngü, 271 00:13:42,787 --> 00:13:44,620 ve daha fazla alırsınız sözdizimi aşina 272 00:13:44,620 --> 00:13:47,170 Uygulamada ile kullanarak long-- önce bu bana verir 273 00:13:47,170 --> 00:13:49,740 Değişken i denilen ve 0'a ayarlar. 274 00:13:49,740 --> 00:13:52,650 >> Bu i üzerinde artışlarla 1 ile her yineleme. 275 00:13:52,650 --> 00:13:54,940 Yani ben 2'den 3'e 1 gider. 276 00:13:54,940 --> 00:13:57,690 Sonra bu durumdaki noktalı virgülle arasında orta 277 00:13:57,690 --> 00:14:03,010 yapmak için her tekrarında kontrol gets Biz aralığında hala olduğundan emin olun. 278 00:14:03,010 --> 00:14:06,830 Yani 10 kez yineleme yapmak istiyorum, bu yüzden var çeşit çok sezgisel sadece 279 00:14:06,830 --> 00:14:09,070 Orada benim üst sınır olarak 10 koyun. 280 00:14:09,070 --> 00:14:14,310 >> Ve yine, ben bu çalıştırdığınızda, sonra make ile derleme buggy2-- 281 00:14:14,310 --> 00:14:15,440 ve Tamam derliyor. 282 00:14:15,440 --> 00:14:17,980 Bu yüzden bir yok sözdizimi hatası bu sefer. 283 00:14:17,980 --> 00:14:20,940 Beni şimdi devam edelim ve Enter, buggy2 çalıştırın. 284 00:14:20,940 --> 00:14:22,620 Ve şimdi yukarı ilerleyin. 285 00:14:22,620 --> 00:14:24,890 Ve ben artırmak izin penceresinin boyutu. 286 00:14:24,890 --> 00:14:33,720 >> Ben var gibi görünüyor 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. 287 00:14:33,720 --> 00:14:38,891 Yani olsa da, 11 Hashtag'leri var Ben açıkça bu döngü içine 10 koyun. 288 00:14:38,891 --> 00:14:42,140 Şimdi bazılarınız hemen görebilirsiniz Hata nedeniyle, gerçekten, bu ne 289 00:14:42,140 --> 00:14:43,720 yapmak çok zor bir hata değildir. 290 00:14:43,720 --> 00:14:46,070 Ama çok yaygın olduğunu Çok erken yapılan. 291 00:14:46,070 --> 00:14:49,820 >> Ne işaret etmek istiyorum, ancak, , Nasıl bu anlamaya olabilir mı? 292 00:14:49,820 --> 00:14:52,300 Eh, o çıkıyor CS50 Kütüphanesi geliyor 293 00:14:52,300 --> 00:14:55,380 sadece get_string ve get_int ile get_float ve diğer fonksiyonları ve. 294 00:14:55,380 --> 00:14:59,980 Aynı zamanda özel fonksiyonu ile birlikte geliyor adı eprintf veya hata Printf. 295 00:14:59,980 --> 00:15:03,270 Ve bunu yapmak için sadece mevcut Sizin için biraz daha kolay 296 00:15:03,270 --> 00:15:06,310 Sadece kodunuzu ayıklarken ekranda bir hata mesajı yazdırmak 297 00:15:06,310 --> 00:15:07,850 nereden geldi ve biliyorum. 298 00:15:07,850 --> 00:15:11,000 >> Yani örneğin, bir şey olabilir Bu fonksiyon bu-- olduğunu burada yapmak 299 00:15:11,000 --> 00:15:20,230 eprintf, sonra ben önde gidiyorum ve i, ters eğik çizgi, n şimdi% olduğunu söylüyorlar. 300 00:15:20,230 --> 00:15:22,330 Ve ben i değerine takmak için gidiyorum. 301 00:15:22,330 --> 00:15:25,400 Ve kontör, bunun nedeni , CS50 Kütüphanesi'nde olduğu 302 00:15:25,400 --> 00:15:27,580 Ben devam edeceğim ve bunlar arasında 303 00:15:27,580 --> 00:15:29,169 bu yüzden bu işleve erişebilirsiniz. 304 00:15:29,169 --> 00:15:31,460 Ama düşünelim hangi satır 9 yapıyor olması gerekiyordu. 305 00:15:31,460 --> 00:15:32,670 Sonunda bu silmek için gidiyorum. 306 00:15:32,670 --> 00:15:34,670 Bu ilgisi yok Benim kapsayıcı hedefi ile. 307 00:15:34,670 --> 00:15:39,090 Ancak eprintf hata Printf sadece kastedilmektedir Bana bazı tanısal bilgiler vermek. 308 00:15:39,090 --> 00:15:42,460 Benim program çalıştırdığınızda, ben istiyorum geçici olarak ekranda görmek 309 00:15:42,460 --> 00:15:44,550 de sadece anlamak için neler oluyor. 310 00:15:44,550 --> 00:15:47,330 >> Ve, gerçekten de, her bir Burada hat 9 yineleme 311 00:15:47,330 --> 00:15:49,260 Ben görmek istiyorum, i değeri nedir? 312 00:15:49,260 --> 00:15:50,290 i değeri nedir? 313 00:15:50,290 --> 00:15:51,280 i değeri nedir? 314 00:15:51,280 --> 00:15:55,650 Ve umarım, ben sadece gerektiği bu mesajı, ayrıca, 10 kez bakın. 315 00:15:55,650 --> 00:15:57,780 >> Bu yüzden bana devam edelim ve benim program derlemeye, 316 00:15:57,780 --> 00:15:59,905 Ben her zaman yapmak zorunda olduğu gibi Ben bir değişiklik yapmak. ./buggy2. 317 00:15:59,905 --> 00:16:02,680 318 00:16:02,680 --> 00:16:03,640 Ve şimdi-- Tamam. 319 00:16:03,640 --> 00:16:04,820 daha fazla oluyor bir sürü şey var. 320 00:16:04,820 --> 00:16:07,610 Bu yüzden bana içinde yukarı izin daha da büyük bir pencere. 321 00:16:07,610 --> 00:16:10,190 >> Ve o her göreceksiniz hashtag hala yazdırıyor. 322 00:16:10,190 --> 00:16:15,270 Ama aradaki her biri şimdi bu aşağıdaki gibi teşhis çıkışı biçimlendirilmiş. 323 00:16:15,270 --> 00:16:17,960 Burada benim programın adı buggy2 olduğunu. 324 00:16:17,960 --> 00:16:20,432 Dosyanın adı buggy2.c olduğunu. 325 00:16:20,432 --> 00:16:24,080 Satır numarası hangi basılan bu hat 9. 326 00:16:24,080 --> 00:16:27,500 Ve o sağında Ben bekliyorum hata mesajı. 327 00:16:27,500 --> 00:16:30,701 >> Ve bu olduğunu hakkında güzel ne Şimdi ben mutlaka saymak gerekmez 328 00:16:30,701 --> 00:16:32,200 Kafamın içinde benim program ne yaptığını. 329 00:16:32,200 --> 00:16:34,240 Ben görebiliyorum i 0 ilk yineleme, 330 00:16:34,240 --> 00:16:39,420 Daha sonra 1, daha sonra 2, daha sonra 3, daha sonra 4, daha sonra 5, daha sonra 6, daha sonra 7, daha sonra 8, daha sonra 9, daha sonra 331 00:16:39,420 --> 00:16:40,980 10. 332 00:16:40,980 --> 00:16:42,050 Yani bir dakika bekleyin. 333 00:16:42,050 --> 00:16:43,740 Burada neler oluyor? 334 00:16:43,740 --> 00:16:48,190 Hala sayma gibi görünüyor olarak 10 kadar niyetindeydi. 335 00:16:48,190 --> 00:16:50,550 >> Ama nerede başladınız? 336 00:16:50,550 --> 00:16:53,240 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. 337 00:16:53,240 --> 00:16:58,040 Bu yüzden, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- 11 parmak 338 00:16:58,040 --> 00:16:59,990 bir sorundur. 339 00:16:59,990 --> 00:17:02,850 Ben sayılır gibi görünüyor yanlış benim döngü içinde. 340 00:17:02,850 --> 00:17:06,599 10 tekrarlamalar gitmek yerine, Ben, 0'dan başlıyorum 341 00:17:06,599 --> 00:17:09,550 Ben ve 10'a kadar bitiriyorum. 342 00:17:09,550 --> 00:17:12,030 Ama nedeniyle, bir bilgisayar gibi, Ben 0, sayma başlıyorum 343 00:17:12,030 --> 00:17:15,250 Ben sayma gerektiğini için, ancak, 10 aracılığı ile. 344 00:17:15,250 --> 00:17:18,510 >> Ve böylece düzeltme, ben sonunda Burada gerçekleşen iki şeyden biridir. 345 00:17:18,510 --> 00:17:22,430 Çok basitçe söyleyebiliriz az 10'a kadar saymak. 346 00:17:22,430 --> 00:17:27,260 Bu yüzden, 0, 1, 2, 3, 4, 5, 6, 7, 8, Gerçekten de doğrudur 9, 347 00:17:27,260 --> 00:17:28,900 Hatta biraz yanlış geliyor olsa da. 348 00:17:28,900 --> 00:17:35,070 Ya da yapabileceğini eşit veya daha az 9, çok uzun ben 0'dan başlar başlamaz. 349 00:17:35,070 --> 00:17:40,056 Ya da gerçekten sevmiyorum, seni 10'a kadar saymak ancak 1 başlayabilirsiniz. 350 00:17:40,056 --> 00:17:41,680 Fakat yine de, bu sadece o yaygın değildir. 351 00:17:41,680 --> 00:17:43,977 programming-- olsa içinde Scratch-- değil çok 352 00:17:43,977 --> 00:17:45,810 ama programlamada C ve diğer dillerde, 353 00:17:45,810 --> 00:17:47,670 JavaScript ve benzeri Python ve diğerleri, öyle 354 00:17:47,670 --> 00:17:49,880 sadece çok yaygın İkili arasında tartışma 355 00:17:49,880 --> 00:17:53,450 Sadece saymaya başlamak için 0 yapabilirsiniz düşük sayı. 356 00:17:53,450 --> 00:17:53,950 Pekala. 357 00:17:53,950 --> 00:17:55,160 Yani eprintf var. 358 00:17:55,160 --> 00:17:58,600 Ve yine, şimdi ben çözdüm o benim Sorun ve ben 0'a geri dönmek için gidiyorum 359 00:17:58,600 --> 00:18:01,470 az 10'a kadar, ben gidiyorum gitmek ve eprintf silmek için. 360 00:18:01,470 --> 00:18:04,580 >> ben orada olmamalı benim kod gemi ya da benim kod göndermek 361 00:18:04,580 --> 00:18:05,800 ya da bir başkasına göstermek. 362 00:18:05,800 --> 00:18:07,980 Gerçekten sadece pinti geçici kullanılır. 363 00:18:07,980 --> 00:18:11,650 Ama şimdi bu çözdüm yanı sıra özel bir sorun. 364 00:18:11,650 --> 00:18:16,780 >> Peki, burada bir örnek daha yapalım Ben şöyle körüklemek için gidiyorum. 365 00:18:16,780 --> 00:18:22,850 Ben devam edeceğim ve #include. 50 $ 366 00:18:22,850 --> 00:18:25,580 Ve ben önde gidiyorum ve #include. 367 00:18:25,580 --> 00:18:29,030 >> Ve ben kurtarmak için gidiyorum buggy3.c olarak bu dosyayı. 368 00:18:29,030 --> 00:18:31,740 Ve ben önde gidiyorum ve int main (void) ilan ediyorum. 369 00:18:31,740 --> 00:18:34,186 Ve sonra içeride orada Ben i int yapacağım _ - 370 00:18:34,186 --> 00:18:36,435 Ben bir programı uygulamak istiyorum Bir get_negative_int ile. 371 00:18:36,435 --> 00:18:39,146 372 00:18:39,146 --> 00:18:40,770 Bu henüz var olan bir işlev değil. 373 00:18:40,770 --> 00:18:42,870 Bu yüzden hayata gidiyoruz bu sadece bir an. 374 00:18:42,870 --> 00:18:45,541 Ama biz neden görmek için gidiyoruz ilk geçişte adamcağız. 375 00:18:45,541 --> 00:18:47,290 Ve ben kazanılmış bir kez kullanıcıdan gelen bir int, 376 00:18:47,290 --> 00:18:53,365 Ben sadece% i yazdırmak için gidiyorum bir negatiftir tamsayı, ters eğik çizgi, n, virgül, i. 377 00:18:53,365 --> 00:18:55,240 Başka bir deyişle, tüm G yapmak için bu program istiyorum 378 00:18:55,240 --> 00:18:58,000 bir negatif int almak olduğunu kullanıcı ve sonra çıktı 379 00:18:58,000 --> 00:18:59,980 böyle ve böyle olumsuz bir int. 380 00:18:59,980 --> 00:19:02,080 >> Şimdi bu işlevi uygulamak gerekir. 381 00:19:02,080 --> 00:19:05,740 Yani daha sonra benim dosyasında, ben gidiyorum öncesinde ve adında bir işlevi bildirmek 382 00:19:05,740 --> 00:19:10,670 get_negative_int (void) - ve biz edeceğiz Bu hat tekrar ne anlama geldiğini gelmek sırt 383 00:19:10,670 --> 00:19:18,790 Bir moment-- int n; sanıyor- do following-- Printf n :. 384 00:19:18,790 --> 00:19:26,210 , Get_int - Ve sonra ben n yapacağım ve bu süre n 0'dan büyüktür yapmak. 385 00:19:26,210 --> 00:19:28,310 Ve sonra n iade ;. 386 00:19:28,310 --> 00:19:31,730 >> Yani oluyor bir çok şey var which we did not bu ama hiçbiri 387 00:19:31,730 --> 00:19:33,710 en azından kısa bir süre, geçen hafta bak. 388 00:19:33,710 --> 00:19:36,980 Yani burada hat 10 ı ilan ettik get_negative_int denilen fonksiyonu, 389 00:19:36,980 --> 00:19:39,620 ve ben, (boşluk) koyduk parantez, neden bu varlık 390 00:19:39,620 --> 00:19:40,950 bir giriş almaz. 391 00:19:40,950 --> 00:19:42,910 Ben bir şey geçirerek değilim Bu işleve. 392 00:19:42,910 --> 00:19:44,690 Ben sadece geri ondan bir şeyler alıyorum. 393 00:19:44,690 --> 00:19:47,270 >> Ve ben ne umuyorum geri almak bir tam sayıdır. 394 00:19:47,270 --> 00:19:50,040 hiçbir veri türü olarak orada C negative_int aradı. 395 00:19:50,040 --> 00:19:52,880 Bu sadece int, bu yüzden gidiyor emin olmak için bize olmak 396 00:19:52,880 --> 00:19:55,340 Bu aslında değer dönmedi sadece bir int 397 00:19:55,340 --> 00:19:56,380 ama aynı zamanda negatif. 398 00:19:56,380 --> 00:20:02,150 >> hat 12 ben bir değişken ilan ediyorum n ve int türünde yapma denir. 399 00:20:02,150 --> 00:20:07,500 Ve sonra hat 13 18 aracılığıyla Ben bir şey yapıyor bir şey doğrudur iken. 400 00:20:07,500 --> 00:20:11,040 Ben önde ve baskı gidiyorum n, kolon ve daha sonra bir boşluk, 401 00:20:11,040 --> 00:20:12,800 kullanıcı için bir istemi gibi. 402 00:20:12,800 --> 00:20:16,410 >> Sonra get_int arıyorum ve sözde dönüş değeri depolamak 403 00:20:16,410 --> 00:20:18,130 Bu değişken n. 404 00:20:18,130 --> 00:20:22,600 Ama yapmaya devam edeceğim Bu ise, n, 0 daha büyüktür. 405 00:20:22,600 --> 00:20:27,960 Diğer bir deyişle, kullanım bana verirse int ve bu sayı 0'dan büyük, 406 00:20:27,960 --> 00:20:31,180 ergo, pozitif, ben gidiyorum Sadece kullanıcı reprompting tutmak, 407 00:20:31,180 --> 00:20:37,160 zorlayarak, reprompting tutmak işbirliği ve bana olumsuz bir int verir. 408 00:20:37,160 --> 00:20:41,640 >> Ve n, aslında negative-- bir kez Nihayet türleri -50 kullanıcı varsayalım 409 00:20:41,640 --> 00:20:46,710 o zaman bu while döngüsü artık gerçek -50 0'dan büyük değildir, çünkü. 410 00:20:46,710 --> 00:20:51,140 Bu yüzden bunun patlak loop mantıklı ve n dönün. 411 00:20:51,140 --> 00:20:53,520 >> Fakat diğer bir tane var şey yapmak zorunda. 412 00:20:53,520 --> 00:20:56,190 Ve ben sadece bunu yapabilirsiniz Kopyalama ve yapıştırma tarafından 413 00:20:56,190 --> 00:20:58,540 dosyanın üstündeki bir satır kod. 414 00:20:58,540 --> 00:21:01,630 Ben, çınlama öğretmek gerekir veya çınlama söz, 415 00:21:01,630 --> 00:21:04,630 açıkça yaparım ki Gerçekten, gidip uygulamak 416 00:21:04,630 --> 00:21:06,020 Bu fonksiyon, get_negative_int. 417 00:21:06,020 --> 00:21:07,674 Sadece dosya daha düşük olabilir. 418 00:21:07,674 --> 00:21:09,840 Yine hatırlatmak Clang , Yukarıdan aşağıya şeyler okur 419 00:21:09,840 --> 00:21:12,330 soldan sağa, yani yapamazsın Clang eğer bir işlev çağrısı 420 00:21:12,330 --> 00:21:15,330 o var olacak bilmiyor. 421 00:21:15,330 --> 00:21:18,430 >> Şimdi, ne yazık ki, bu program, olarak size bazı fark etmiş olabilirsiniz, 422 00:21:18,430 --> 00:21:19,590 Zaten adamcağız. 423 00:21:19,590 --> 00:21:21,400 Beni devam edin ve buggy3 yapalım. 424 00:21:21,400 --> 00:21:26,904 benim sorunum şimdi değil, bu yüzden derler bir sözdizimi hatası, bir metinsel hata gibi, 425 00:21:26,904 --> 00:21:29,570 aslında mantıklı olacak Ben kasten ettik hatası 426 00:21:29,570 --> 00:21:32,450 için bir fırsat olarak yapılan Neler adım adım. 427 00:21:32,450 --> 00:21:35,540 >> Ben devam edeceğim şimdi buggy3 çalıştırın. 428 00:21:35,540 --> 00:21:37,490 Ve ben gidiyorum önde ve işbirliği. 429 00:21:37,490 --> 00:21:39,494 Ben o 1 numara vereceğim. 430 00:21:39,494 --> 00:21:41,410 Bu yüzden beğenmedim yine bana sormadan ediyor. 431 00:21:41,410 --> 00:21:42,147 >> Ne yaklaşık 2? 432 00:21:42,147 --> 00:21:43,021 3? 433 00:21:43,021 --> 00:21:43,520 50? 434 00:21:43,520 --> 00:21:44,740 Bunların hiçbiri çalışıyoruz. 435 00:21:44,740 --> 00:21:46,890 Nasıl -50 dersiniz? 436 00:21:46,890 --> 00:21:48,560 Ve programın iş gibi görünüyor. 437 00:21:48,560 --> 00:21:49,970 >> Bana bir kere daha deneyelim. 438 00:21:49,970 --> 00:21:53,400 Bana -1 deneyeyim, iş gibi görünüyor. 439 00:21:53,400 --> 00:21:56,380 Bana -2 deneyeyim, iş gibi görünüyor. 440 00:21:56,380 --> 00:21:59,640 Bana 0 deneyeyim. 441 00:21:59,640 --> 00:22:01,684 Ha, bu yanlış. 442 00:22:01,684 --> 00:22:03,350 Şimdi, biz burada biraz bilgiçlik davranıyorsun. 443 00:22:03,350 --> 00:22:07,090 Ama bu durumda 0 olduğunu, gerçekten, var olumlu ne de olumsuz olduğunu. 444 00:22:07,090 --> 00:22:11,150 Ve bu yüzden benim programı gerçektir ki 0 negatif tamsayı olduğunu söyleyerek 445 00:22:11,150 --> 00:22:12,820 Bu teknik olarak doğru değil. 446 00:22:12,820 --> 00:22:15,180 >> Şimdi, neden yapıyor? 447 00:22:15,180 --> 00:22:16,270 Eh, çok açık olabilir. 448 00:22:16,270 --> 00:22:18,110 Ve, gerçekten, program oldukça basit olması gerekiyordu 449 00:22:18,110 --> 00:22:19,670 bu yüzden keşfetmek için bir şey var. 450 00:22:19,670 --> 00:22:25,870 >> Ama üçüncü bir hata ayıklama tanıştırayım teknik burada debug50 denir. 451 00:22:25,870 --> 00:22:27,750 Yani bu bir program biz sadece oluşturduk olduğunu 452 00:22:27,750 --> 00:22:30,770 bu yıl adı debug50 bu sana izin verecek 453 00:22:30,770 --> 00:22:34,130 yerleşik denen kullanmak için CS50 IDE grafik debugger. 454 00:22:34,130 --> 00:22:38,400 Ve bir hata ayıklayıcı sadece bir program olduğunu genellikle sizin programı çalıştırmak sağlar 455 00:22:38,400 --> 00:22:44,050 ama adım, satır adım adım satır satır, alay, duraklatma 456 00:22:44,050 --> 00:22:47,626 etrafında, değişkenler bakarak böylece Program sadece sizin geçmiş darbe değil 457 00:22:47,626 --> 00:22:49,750 ve hızlı bir şekilde bir şeyler yazdırmak falan yazdırmayın. 458 00:22:49,750 --> 00:22:53,250 Bu en, size bir fırsat verir İnsan hız, onunla etkileşim. 459 00:22:53,250 --> 00:22:55,470 >> Ve bunu yapmak için, size sadece aşağıdakileri yapın. 460 00:22:55,470 --> 00:22:58,479 kodunuzu derleme sonra, ki ben zaten yaptım, buggy3, 461 00:22:58,479 --> 00:23:00,020 Eğer devam edin ve debug50 ./buggy çalıştırın. 462 00:23:00,020 --> 00:23:03,460 463 00:23:03,460 --> 00:23:06,760 O kadar help50 çalıştırmak var gibi help50 ve sonra komut, 464 00:23:06,760 --> 00:23:10,120 debug50 Eğer debug50 çalıştırmak vardır ve Daha sonra komuta adı. 465 00:23:10,120 --> 00:23:14,440 >> Şimdi benim ekranda ne izle, Özellikle sağ taraftaki. 466 00:23:14,440 --> 00:23:19,400 Ben Çalıştır tüm vurduğunda ani bu sağ paneli 467 00:23:19,400 --> 00:23:20,419 Ekranda açılır. 468 00:23:20,419 --> 00:23:22,210 Ve devam eden bir çok şey var ilk bakışta üzerinde. 469 00:23:22,210 --> 00:23:25,110 Ama orada çok değil Henüz endişelenecek çok şey. 470 00:23:25,110 --> 00:23:28,570 >> Bu bana her şeyi gösteriyor bu benim programın içine oluyor 471 00:23:28,570 --> 00:23:31,130 Şu anda bu aracılığıyla düğmeleri üst daha sonra yukarı 472 00:23:31,130 --> 00:23:35,910 Benim kod adım için bana izin sonuçta adım adım adım. 473 00:23:35,910 --> 00:23:37,140 Ama henüz. 474 00:23:37,140 --> 00:23:38,060 ne dikkat edin. 475 00:23:38,060 --> 00:23:40,600 Benim Terminal penceresinde Ben n istendiğinde oluyorum. 476 00:23:40,600 --> 00:23:44,560 Ve ben önde gidiyorum ve -1 Bu kez ve türünü işbirliği. 477 00:23:44,560 --> 00:23:48,770 Ve olsa biraz şifreli, -1 beklendiği gibi negatif tamsayıdır. 478 00:23:48,770 --> 00:23:52,020 >> Ve sonra çocuk ile çıkıldı Durum 0 gdbserver çıkarken. 479 00:23:52,020 --> 00:23:55,180 GDB, GNU Debugger, adı altta yatan yazılım 480 00:23:55,180 --> 00:23:56,620 bu hata ayıklayıcı uygular. 481 00:23:56,620 --> 00:24:00,500 Ama bütün bu gerçekten, hata ayıklayıcı demektir benim program çıkın çünkü gittiler 482 00:24:00,500 --> 00:24:01,710 ve tüm iyi oldu. 483 00:24:01,710 --> 00:24:06,020 Ben gerçekten benim Programda hata ayıklamak istiyorsanız, Ben, preemptively debug50 söylemek zorundayım 484 00:24:06,020 --> 00:24:08,920 nerede başlar istiyorsun Benim kodu atlama? 485 00:24:08,920 --> 00:24:11,750 >> Ve belki en basit yolu aşağıdaki gibi olduğunu yapmak için. 486 00:24:11,750 --> 00:24:15,300 Ben üzerinde gezdirin eğer Burada benim editörü oluk, 487 00:24:15,300 --> 00:24:19,090 yani gerçekten sadece burada kenar çubuğunda, hat numarasının solunda, 488 00:24:19,090 --> 00:24:21,870 ben sadece tıklayın fark ederseniz bir zamanlar, biraz kırmızı nokta koydu. 489 00:24:21,870 --> 00:24:24,460 Ve o küçük kırmızı nokta, bir dur işareti gibi, hey, anlamı, 490 00:24:24,460 --> 00:24:29,430 debug50, benim kod duraklama yürütme Orada ben bu programı çalıştırdığınızda. 491 00:24:29,430 --> 00:24:30,260 >> Yani böyle yapalım. 492 00:24:30,260 --> 00:24:37,340 Beni devam edin ve benim program çalışmasına izin Yine debug50 ./buggy3 ile girin. 493 00:24:37,340 --> 00:24:40,110 Ve şimdi, haber, bir şey Farklı oldu. 494 00:24:40,110 --> 00:24:42,440 Ben istenmeden değilim Henüz Terminal penceresinde 495 00:24:42,440 --> 00:24:45,430 her şey için, çünkü ben değil Benim programda henüz kazanılmış. 496 00:24:45,430 --> 00:24:47,950 8. satırda dikkat edin şimdi vurgulanır hangi 497 00:24:47,950 --> 00:24:51,720 ve küçük bir ok at var Sol söyleyerek, burada durduruldu. 498 00:24:51,720 --> 00:24:55,030 kod, hat bu hat 8, henüz idam değil. 499 00:24:55,030 --> 00:24:58,940 >> Ben bakarsanız, meraklı ne Sağ taraftaki buraya, 500 00:24:58,940 --> 00:25:03,530 Ben yerel olduğunu fark anlamda yerel değişken, 501 00:25:03,530 --> 00:25:05,450 o anki işlev içinde var. 502 00:25:05,450 --> 00:25:08,920 Ve onun değeri, görünüşe göre, varsayılan olarak, ve çeşit elverişli 0'dır. 503 00:25:08,920 --> 00:25:10,260 Ama 0 yazın vermedi. 504 00:25:10,260 --> 00:25:13,410 Bu sadece olur onun Şu anda varsayılan değer. 505 00:25:13,410 --> 00:25:15,490 >> Bu yüzden bana go ahead ve şimdi yapalım. 506 00:25:15,490 --> 00:25:18,680 Beni öncesinde ve devam edelim Burada top, ben 507 00:25:18,680 --> 00:25:20,970 önde gidecek ve bu ilk simgesini hangi 508 00:25:20,970 --> 00:25:25,360 üzerinde adım atlama yok anlamına gelir o ancak bu kod hattı üzerinden adım, 509 00:25:25,360 --> 00:25:27,770 Yol boyunca çalıştırarak. 510 00:25:27,770 --> 00:25:30,710 >> Ve şimdi, fark benim istemi sadece değişti. 511 00:25:30,710 --> 00:25:31,380 Neden? 512 00:25:31,380 --> 00:25:33,639 Ben debug50 söyledim, Bu kod satırı çalıştırın. 513 00:25:33,639 --> 00:25:34,930 bu kod satırı ne yapar? 514 00:25:34,930 --> 00:25:35,960 bir int için beni ister. 515 00:25:35,960 --> 00:25:36,460 TAMAM. 516 00:25:36,460 --> 00:25:37,400 Bana işbirliği yapalım. 517 00:25:37,400 --> 00:25:41,340 beni şimdi devam edin ve -1 yazın Enter edelim. 518 00:25:41,340 --> 00:25:42,920 Ve şimdi ne değişti dikkat edin. 519 00:25:42,920 --> 00:25:46,060 Sağ tarafta, benim yerel değişken i 520 00:25:46,060 --> 00:25:48,200 varlık -1 şimdi olarak gösterilir. 521 00:25:48,200 --> 00:25:49,810 Ve bu int türünde hala. 522 00:25:49,810 --> 00:25:53,102 >> Ve ihbar de benim sözde yığını çağrı, nerede duraklama mı? 523 00:25:53,102 --> 00:25:54,810 Biz hakkında daha fazla konuşacağız Gelecekte bu. 524 00:25:54,810 --> 00:25:58,620 Ama çağrı yığını sadece ne ifade eder fonksiyonlar hareket şu anda. 525 00:25:58,620 --> 00:26:00,040 Şu anda sadece ana var. 526 00:26:00,040 --> 00:26:03,590 Ve şu anda sadece yerel Değişken değeri 1 ile i. 527 00:26:03,590 --> 00:26:09,840 >> Ve nihayet bu hat üzerinden adım ne zaman Burada, sağ üst köşesinde aynı simge ile, 528 00:26:09,840 --> 00:26:11,410 -1 Negatif tam sayıdır. 529 00:26:11,410 --> 00:26:13,580 Şimdi o küme ayracı üzerinde duraklatma ediyor. 530 00:26:13,580 --> 00:26:14,740 en onun bir şey yapsın. 531 00:26:14,740 --> 00:26:17,300 O çizgi, ve voila üzerinden adım. 532 00:26:17,300 --> 00:26:20,240 >> Yani tüm bu korkunç , Aydınlatıcı henüz 533 00:26:20,240 --> 00:26:23,550 ama bana duraklama izin verdin ve mantıklı düşünmeye 534 00:26:23,550 --> 00:26:24,870 bu program ne yapıyor. 535 00:26:24,870 --> 00:26:26,890 Ama bu hatalı durum değildi. 536 00:26:26,890 --> 00:26:28,510 aşağıdaki gibi tekrar yapalım. 537 00:26:28,510 --> 00:26:31,340 >> O kesme terk edeceğim kırmızı noktalı hat 8. 538 00:26:31,340 --> 00:26:32,830 Ben debug50 yeniden gidiyorum. 539 00:26:32,830 --> 00:26:34,400 Otomatik burada durdurulmuş oluyor. 540 00:26:34,400 --> 00:26:37,660 Ama bu sefer, yerine Bu hat üzerinden adım, 541 00:26:37,660 --> 00:26:42,290 Beni aslında içinde gidelim get_negative_int ve anlamaya, 542 00:26:42,290 --> 00:26:45,530 neden geçerli bir yanıt olarak 0 kabul edilir? 543 00:26:45,530 --> 00:26:47,990 >> Yani yerine Step Over tıklayarak. 544 00:26:47,990 --> 00:26:50,630 Ben devam edeceğim ve Step Into tıklayın. 545 00:26:50,630 --> 00:26:54,030 Ve çizgi 8 olduğunu fark Şimdi birdenbire şimdi vurgulanan 546 00:26:54,030 --> 00:26:56,900 satır 17 olur. 547 00:26:56,900 --> 00:26:59,947 >> Şimdi, hata ayıklayıcı bu değil hatları 14 ve 15 ve 16 atlanır etti. 548 00:26:59,947 --> 00:27:01,780 Bu sadece bir şey yok oluyor Orada size göstermek için. 549 00:27:01,780 --> 00:27:04,050 Bunlar sadece değişkenleri ilan edilir, ve daha sonra kelime var Do var 550 00:27:04,050 --> 00:27:05,390 ve daha sonra açık kaşlı ayraç. 551 00:27:05,390 --> 00:27:09,227 var sadece fonksiyonel çizgi sulu gerçekten bu bir, 17 olduğunu. 552 00:27:09,227 --> 00:27:11,060 biz ettik nerede ve o otomatik olarak durduruldu. 553 00:27:11,060 --> 00:27:13,870 >> Yani printf ( "n.is:") ;, bu yüzden Bu henüz gerçekleşmedi. 554 00:27:13,870 --> 00:27:18,250 O yüzden go ahead ve Üzeri Step tıklayın edelim. 555 00:27:18,250 --> 00:27:20,326 Şimdi benim istemi, gerçekten, olarak değiştirildi ( "n"). 556 00:27:20,326 --> 00:27:22,450 Şimdi gitmiyorum, get_int adım rahatsız, 557 00:27:22,450 --> 00:27:24,750 Bu işlev, çünkü Kütüphanede CS50 tarafından yapılan. 558 00:27:24,750 --> 00:27:25,750 Bu muhtemelen doğru. 559 00:27:25,750 --> 00:27:28,440 >> Yani önde gidiyorum ve tür vererek işbirliği 560 00:27:28,440 --> 00:27:30,590 bir int, ancak olumsuz bir int. 561 00:27:30,590 --> 00:27:32,870 Bu yüzden bana go ahead ve 0 değmesine izin. 562 00:27:32,870 --> 00:27:39,460 Ve şimdi ne burada olur Ben aşağı olsun 21 hattına? 563 00:27:39,460 --> 00:27:40,890 Yine iterated ettik. 564 00:27:40,890 --> 00:27:43,320 Ben bu döngü içinde sıkışmış görünmemektedir. 565 00:27:43,320 --> 00:27:45,990 Diğer bir deyişle, bu sarı bar etrafında devam etmedi 566 00:27:45,990 --> 00:27:47,130 ve çevresinde, etrafında. 567 00:27:47,130 --> 00:27:48,340 >> Şimdi, neden? 568 00:27:48,340 --> 00:27:49,920 Eh, n, şu an ne n tane nedir? 569 00:27:49,920 --> 00:27:53,280 Yerel bakabilirsiniz Hata ayıklayıcı değişkenleri. 570 00:27:53,280 --> 00:27:53,816 n, 0 'dır. 571 00:27:53,816 --> 00:27:55,190 Pekala, benim durum neydi? 572 00:27:55,190 --> 00:27:58,700 >> 20-- satır 20 de olduğunu, 0 0 daha büyüktür. 573 00:27:58,700 --> 00:27:59,500 Bu doğru değil. 574 00:27:59,500 --> 00:28:01,020 0 0 daha büyük değildir. 575 00:28:01,020 --> 00:28:02,820 Ve bu yüzden bu çıktı. 576 00:28:02,820 --> 00:28:06,370 >> Ve böylece bu yüzden hattı üzerinde 21, ben aslında devam ederse, 577 00:28:06,370 --> 00:28:10,370 Hatta, 0 dönmek için gidiyorum Ben 0 reddedilen gerekirdi gerçi 578 00:28:10,370 --> 00:28:12,484 olarak aslında negatif olmamak. 579 00:28:12,484 --> 00:28:14,650 Yani şimdi, ben gerçekten bile yok Hata ayıklayıcı umurumda. 580 00:28:14,650 --> 00:28:16,900 o, ben gerek yok got Neler olup bittiğini daha fazla bilgi. 581 00:28:16,900 --> 00:28:19,233 >> Yani önde gidiyorum ve sadece Oynat düğmesini tıklatın, 582 00:28:19,233 --> 00:28:20,240 ve bu bitiş yukarı olsun. 583 00:28:20,240 --> 00:28:23,440 Şimdi, ben fark ettik benim Hata hattı 20 görünüşte. 584 00:28:23,440 --> 00:28:25,160 Bu benim mantık hatası var. 585 00:28:25,160 --> 00:28:28,100 >> Ve böylece ne istiyorsun Bunu değiştirmek için ne yapmak? 586 00:28:28,100 --> 00:28:32,500 Sorun değilim ki eğer 0 yakalamak, sadece bir mantık hatası var. 587 00:28:32,500 --> 00:28:35,910 n iken söyleyebileceğim daha yüksek veya eşit 0, 588 00:28:35,910 --> 00:28:38,330 Tekrar ve tekrar kullanıcıya sormadan tutun. 589 00:28:38,330 --> 00:28:41,050 >> Yani, yine, basit bir hata, belki de Beni görünce bile bariz 590 00:28:41,050 --> 00:28:42,410 sadece bir kaç dakika önce yazmak. 591 00:28:42,410 --> 00:28:44,570 Ama burada paket olan hata ayıklama 50 o, 592 00:28:44,570 --> 00:28:46,850 ve hata ayıklama ile Yazılım daha genel olarak, 593 00:28:46,850 --> 00:28:51,370 Bu yeni bulunan güç var bak, kendi kod üzerinden yürümek 594 00:28:51,370 --> 00:28:55,590 Bu sağ paneli ile nasıl senin değişkenler değerlerdir. 595 00:28:55,590 --> 00:28:57,700 Yani mutlaka yok bir şey kullanmak zorunda 596 00:28:57,700 --> 00:29:00,630 gibi bu değerleri yazdırmak için eprintf. 597 00:29:00,630 --> 00:29:04,430 Aslında bunları görebilirsiniz görsel ekranda. 598 00:29:04,430 --> 00:29:08,920 >> Şimdi, bunun ötesinde, bu fazlalaştı olan başka bir teknik var ki 599 00:29:08,920 --> 00:29:09,890 Aslında süper yaygın. 600 00:29:09,890 --> 00:29:13,120 Ve neden bu küçük merak edebilirsiniz Burada adam sahnede oturan olmuştur. 601 00:29:13,120 --> 00:29:16,490 Yani bu teknik genellikle var lastik ördek hata ayıklama olarak bilinen, 602 00:29:16,490 --> 00:29:18,786 hangi gerçekten sadece bir olduğunu Aslında vasiyetname 603 00:29:18,786 --> 00:29:20,660 sık sık programcılar kod yazma, 604 00:29:20,660 --> 00:29:22,650 onlar mutlaka değiliz başkaları ile işbirliği, 605 00:29:22,650 --> 00:29:24,030 veya paylaşılan bir ortamda çalışan. 606 00:29:24,030 --> 00:29:25,050 >> Onlar evde çeşit konum. 607 00:29:25,050 --> 00:29:25,910 Belki o gece geç oldu. 608 00:29:25,910 --> 00:29:28,190 Onlar şekle çalışıyoruz kendi kod bazı hata dışarı. 609 00:29:28,190 --> 00:29:29,330 Ve onlar sadece bunu göremiyoruz. 610 00:29:29,330 --> 00:29:30,329 >> Ve hiçbir oda arkadaşı var. 611 00:29:30,329 --> 00:29:31,250 TF yoktur. 612 00:29:31,250 --> 00:29:32,680 Etrafta hiç CA yoktur. 613 00:29:32,680 --> 00:29:36,440 onların rafta olan tüm Bu küçük kauçuk aziz olduğunu. 614 00:29:36,440 --> 00:29:39,030 >> Ve böylece lastik ördek ayıklama Sadece bu davettir 615 00:29:39,030 --> 00:29:42,780 aptalca bir şey düşünmek Gerçek bir yaratık olarak bu kadar 616 00:29:42,780 --> 00:29:46,940 ve aslında kod üzerinden yürümek sözlü bu cansız nesneye. 617 00:29:46,940 --> 00:29:49,230 Dolayısıyla, örneğin, eğer Bu benim örnek burada-- 618 00:29:49,230 --> 00:29:52,470 ve daha önceki hatırlama Sorun, bu oldu 619 00:29:52,470 --> 00:29:58,140 Ben bu kod ilk satırı silerseniz, ve ben devam edin ve tekrar adamcağız 0 yapmak, 620 00:29:58,140 --> 00:30:01,220 Ben bu olduğunu hatırlamak Burada hata iletileri. 621 00:30:01,220 --> 00:30:05,997 Yani ben bile saçma Buradaki fikir, Kamuya bunu şu anda hissediyorum 622 00:30:05,997 --> 00:30:06,580 Bu hatadır. 623 00:30:06,580 --> 00:30:10,910 >> Tamam, benim sorunum ben ettik ki örtük bir kütüphane işlevi ilan etti. 624 00:30:10,910 --> 00:30:12,610 Ve bu kütüphane fonksiyonu printf olduğunu. 625 00:30:12,610 --> 00:30:15,290 Tamam Declare--, beyan prototip hatırlatıyor. 626 00:30:15,290 --> 00:30:18,930 >> Ben aslında gerekiyor demektir önceden derleyici ne diyeceğim 627 00:30:18,930 --> 00:30:19,980 fonksiyonu gibi görünüyor. 628 00:30:19,980 --> 00:30:20,930 Bir dakika bekle. 629 00:30:20,930 --> 00:30:23,580 Ben standart io.h yoktu 630 00:30:23,580 --> 00:30:24,530 Çok teşekkür ederim. 631 00:30:24,530 --> 00:30:27,330 >> Size of-- Dolayısıyla, sadece bu süreç aslında bir ördek olması gerekmez. 632 00:30:27,330 --> 00:30:29,819 Ama yürüyen bu fikir Kendi kod aracılığıyla kendiniz 633 00:30:29,819 --> 00:30:31,610 bu yüzden bile duymak Kendinizi, bu yüzden sen misin 634 00:30:31,610 --> 00:30:35,620 Kendi içinde eksiklikler fark açıklamalar, genellikle bir fikirdir. 635 00:30:35,620 --> 00:30:38,910 >> Ve, belki de daha mantıklı, o kadar O biri ama daha dahil olan çok 636 00:30:38,910 --> 00:30:44,220 örnek sadece, adamcağız 3.c'de yaptım bunun üzerinden kendinizi yürümek olabilir 637 00:30:44,220 --> 00:30:45,310 aşağıdaki gibi. 638 00:30:45,310 --> 00:30:49,190 Yani tamam, lastik aziz, DDB, eğer sen. 639 00:30:49,190 --> 00:30:52,350 Burada benim ana işlevi var, Negatif int olsun diyorum. 640 00:30:52,350 --> 00:30:54,660 >> Ve ben dönüş değerini alıyorum. 641 00:30:54,660 --> 00:31:00,410 Ben sol tarafta saklayarak yaşıyorum bir değişken hat 8 i çağırdı. 642 00:31:00,410 --> 00:31:02,380 Tamam, ama bekleyin, nasıl yaptım o değeri olsun? 643 00:31:02,380 --> 00:31:04,130 Beni hat 12 fonksiyon bakalım. 644 00:31:04,130 --> 00:31:05,760 >> hat 12, biz negatif int almak var. 645 00:31:05,760 --> 00:31:08,190 herhangi girdileri almaz, Tamam, bir int çıkmıyor. 646 00:31:08,190 --> 00:31:10,929 Ben hat 14 değişken n üzerinde beyan ederim. 647 00:31:10,929 --> 00:31:12,220 Bir tamsayı saklamak için gidiyor. 648 00:31:12,220 --> 00:31:13,760 İstediğim bu. 649 00:31:13,760 --> 00:31:18,480 >> n izin o-- süre Yani aşağıdakileri yapın Bana düzeltme zaten ne yaptım geri. 650 00:31:18,480 --> 00:31:22,710 n, daha büyük ise yüzden 0, tamam, n isimli çıktı. 651 00:31:22,710 --> 00:31:25,170 Ve sonra int n depolanır diyoruz. 652 00:31:25,170 --> 00:31:30,160 n, 0 ise, ve daha sonra, kontrol n Ben- orada olmasıdır. 653 00:31:30,160 --> 00:31:31,910 Yani, yine, yok Gerçek ördek gerekir. 654 00:31:31,910 --> 00:31:35,650 Ama kendini yürürken entelektüel bir egzersiz olarak kod 655 00:31:35,650 --> 00:31:37,720 genellikle size yardımcı olacaktır , Neler oluyor farkında 656 00:31:37,720 --> 00:31:41,170 Sadece bir şey yapıyor aksine Bu gibi ekrana bakarken, 657 00:31:41,170 --> 00:31:43,720 ve kendini konuşarak değil dürüst değil o, 658 00:31:43,720 --> 00:31:46,270 Yaklaşık etkili bir yöntem olarak. 659 00:31:46,270 --> 00:31:48,620 Yani orada var o bir Farklı teknikler sayısı 660 00:31:48,620 --> 00:31:52,102 aslında kod hata ayıklama için ve arıza bulma hepsi 661 00:31:52,102 --> 00:31:54,810 sizin araç araçları olmalıdır , Gece geç saatlerde değiliz ki 662 00:31:54,810 --> 00:31:57,660 Özellikle, sen yemek konum salonlar, ya da ofis saatlerinde, 663 00:31:57,660 --> 00:32:00,368 karşı baş vurarak duvar, bazı sorunu çözmek için çalışıyorum. 664 00:32:00,368 --> 00:32:02,020 yazılım araçları olduğunu fark. 665 00:32:02,020 --> 00:32:03,720 lastik ördek araçlar vardır. 666 00:32:03,720 --> 00:32:09,630 Ve bütün bir personel var yardım etmek bekliyor destekler. 667 00:32:09,630 --> 00:32:13,120 >> problem üzerinde Yani şimdi, bir kelime setleri, ve biz size umuyoruz ne 668 00:32:13,120 --> 00:32:15,620 onları dışarı almak ve nasıl biz değerlendirilmesi hakkında gidin. 669 00:32:15,620 --> 00:32:17,680 dersin müfredat Başına, CS50 sorunu setleri 670 00:32:17,680 --> 00:32:22,320 Böylece, dört ana eksen üzerinde değerlendirilir kapsamını speak-- için doğruluğu, tasarım, 671 00:32:22,320 --> 00:32:23,060 ve stil. 672 00:32:23,060 --> 00:32:25,910 Ve kapsamı sadece ne kadar ifade eder parçanın kapalı ısırıldı var? 673 00:32:25,910 --> 00:32:28,080 Nasıl bir sorun çok denediniz mi? 674 00:32:28,080 --> 00:32:30,110 çaba hangi düzeyde Eğer ortaya mı? 675 00:32:30,110 --> 00:32:35,750 >> Doğruluk, olduğu gibi program çalışır o CS50 şartname başına gerekiyordu 676 00:32:35,750 --> 00:32:38,640 belirli girdileri sağlamak zaman veya belirli çıkışları geri geliyor? 677 00:32:38,640 --> 00:32:41,130 Tasarım çoğu subjektiftir. 678 00:32:41,130 --> 00:32:43,360 Ve bir o olacak bulunuyor öğrenmek için uzun sürebilir 679 00:32:43,360 --> 00:32:47,220 ve en uzun süre, öğretmek şimdiye kadar aşağı kaynar olarak, 680 00:32:47,220 --> 00:32:49,530 kodunuzu ne kadar iyi yazılmış mı? 681 00:32:49,530 --> 00:32:52,920 >> Sadece doğru yazdırmak için bir şey çıkışlar veya sağ değerler döndürür. 682 00:32:52,920 --> 00:32:55,400 Ama sen bunu yapıyor mümkün olduğunca verimli? 683 00:32:55,400 --> 00:32:58,210 bunu bölmek yapıyorsun ve fethetmek, veya ikili 684 00:32:58,210 --> 00:33:01,500 yakında biz mi göreceğiz gibi arama İki hafta önce telefon rehberi ile? 685 00:33:01,500 --> 00:33:04,670 çözmek için daha iyi yollar vardır Şu anda burada var daha sorun? 686 00:33:04,670 --> 00:33:06,380 Bu daha iyi bir tasarım için bir fırsattır. 687 00:33:06,380 --> 00:33:08,530 >> Ve sonra nasıl style-- Oldukça sizin kod nedir? 688 00:33:08,530 --> 00:33:12,370 Ben güzelim fark edeceksiniz benim kod girinti hakkında belirli, 689 00:33:12,370 --> 00:33:15,300 ve emin olun benim değişkenleri yapma makul olarak adlandırılır. n, 690 00:33:15,300 --> 00:33:19,660 kısa bir süre, bir iyi bir adıdır sayı, sayma tamsayı i, 691 00:33:19,660 --> 00:33:20,727 bir dize için s. 692 00:33:20,727 --> 00:33:22,560 Ve biz daha uzun olabilir değişken isimleri tarzı. 693 00:33:22,560 --> 00:33:25,500 Stil ne kadar iyi kod görünüyor? 694 00:33:25,500 --> 00:33:26,600 Ve ne kadar okunabilir? 695 00:33:26,600 --> 00:33:29,650 >> Ve zamanla, ne TA ve TF'ler ders yapacak 696 00:33:29,650 --> 00:33:31,870 Bu size bir Nitel geribildirim tür 697 00:33:31,870 --> 00:33:34,330 Daha iyi olsun ki Bu değişik yönlerine. 698 00:33:34,330 --> 00:33:37,510 Ve biz nasıl açısından Bu eksenlerin her değerlendirmek 699 00:33:37,510 --> 00:33:40,080 çok az, tipik olarak var: kovalar size böylece genellikle, 700 00:33:40,080 --> 00:33:41,680 yaptığınızı ne kadar iyi bir fikir olsun. 701 00:33:41,680 --> 00:33:45,680 Ve, gerçekten, bir puan üzerinde alırsanız Bu axes-- doğruluğu, tasarım herhangi bir 702 00:33:45,680 --> 00:33:49,659 ve stil especially-- bu sayı genel olarak 1 ila 5 arasında olacaktır. 703 00:33:49,659 --> 00:33:52,450 Ve, tam anlamıyla, alıyorsanız dönem başında 3 kıyafetleri, 704 00:33:52,450 --> 00:33:53,977 Bu çok iyi bir şeydir. 705 00:33:53,977 --> 00:33:55,810 Hala var demektir iyileştirilmesi için oda, 706 00:33:55,810 --> 00:33:58,490 İçinde umut ediyorum ki İlk defa bir sınıf alarak. 707 00:33:58,490 --> 00:34:01,820 tavan bazı biraz umarım var hangi sen ulaşan isteyen ediyoruz. 708 00:34:01,820 --> 00:34:03,970 Ve böylece 3'ün alma erken adet, 709 00:34:03,970 --> 00:34:06,550 eğer bazı 2'nin ve 4 kıyafetleri, Gerçekten, iyi bir şeydir. 710 00:34:06,550 --> 00:34:08,880 Bu, iyi aralığında bulunuyor beklentilerin içinde. 711 00:34:08,880 --> 00:34:11,421 >> zihniniz yarış Ve eğer, bekle Bir dakika, üç beş dışarı. 712 00:34:11,421 --> 00:34:12,620 Bu gerçekten 10 6 çıktı. 713 00:34:12,620 --> 00:34:13,560 Bu% 60 değil. 714 00:34:13,560 --> 00:34:14,830 Bir F var Tanrım, 715 00:34:14,830 --> 00:34:15,870 >> Değil. 716 00:34:15,870 --> 00:34:17,600 Bu, aslında, bu değil. 717 00:34:17,600 --> 00:34:22,710 Aksine, geliştirmek için bir fırsat dönem boyunca. 718 00:34:22,710 --> 00:34:25,580 Ve bazı alıyorsanız yoksullar, bunlar bir fırsattır 719 00:34:25,580 --> 00:34:29,199 ofis saatleri yararlanmak için, kesinlikle bölümleri ve diğer kaynaklar. 720 00:34:29,199 --> 00:34:32,840 >> En iyisi, gerçekten, bir fırsattır Eğer ettik ne kadar uzak gurur duyulacak 721 00:34:32,840 --> 00:34:34,520 dönem boyunca gelir. 722 00:34:34,520 --> 00:34:38,199 Yani farkında mısın, hiçbir şey eğer Başka, üç iyidir. 723 00:34:38,199 --> 00:34:40,179 Ve zamanla büyümesi için yer sağlar. 724 00:34:40,179 --> 00:34:43,090 >> Bu eksenleri olarak nasıl ağırlıklı, gerçekçi sen 725 00:34:43,090 --> 00:34:46,745 alma çoğu zaman geçireceğimizi iş şeyler, doğru dursun. 726 00:34:46,745 --> 00:34:49,120 Ve böylece doğruluk eğilimi olduğu gibi, çoğu ağırlıklı olarak 727 00:34:49,120 --> 00:34:51,360 Üç bu çarpımsal faktör. 728 00:34:51,360 --> 00:34:54,659 Tasarımı da önemlidir ama mutlaka yok bir şey 729 00:34:54,659 --> 00:34:58,220 üzerinde bu saatler tüm harcamak şeyler sadece işe almak için çalışıyorum. 730 00:34:58,220 --> 00:35:00,019 >> Ve bu yüzden ağırlıklı oluyor daha hafif biraz. 731 00:35:00,019 --> 00:35:01,560 Ve sonra stil az ağırlıklı. 732 00:35:01,560 --> 00:35:03,710 Hatta az olsa temelde önemli, 733 00:35:03,710 --> 00:35:05,990 bu sadece, belki de en kolay şey, doğru yapmak için 734 00:35:05,990 --> 00:35:08,440 örnekler biz taklit ders ve bölüm yapmak, 735 00:35:08,440 --> 00:35:11,080 güzel şeyler girintili ve yorumladı, 736 00:35:11,080 --> 00:35:14,320 ve benzeri kolay biridir şeyler yapmak ve sağ olsun. 737 00:35:14,320 --> 00:35:16,960 gibi Yani, fark Bu noktalar olduğunu 738 00:35:16,960 --> 00:35:19,000 kavramak için nispeten kolaydır. 739 00:35:19,000 --> 00:35:22,360 >> Ve şimdi bir kelime üzerinde Akademik dürüstlük bu--. 740 00:35:22,360 --> 00:35:25,150 Elbette kişi başına Yani Müfredat, göreceksiniz 741 00:35:25,150 --> 00:35:27,630 Elbette vardır oldukça Bu çevrede dilin biraz. 742 00:35:27,630 --> 00:35:31,380 Ve tabii ki sorunu alır Oldukça ciddi akademik dürüstlük. 743 00:35:31,380 --> 00:35:33,450 >> Biz ayrım var, daha iyi ya da kötü, 744 00:35:33,450 --> 00:35:36,570 gönderilen olma her geçen yıl daha disiplin cezası için öğrenciler 745 00:35:36,570 --> 00:35:39,670 diğer bir çok daha Tabii ki, ben farkında olduğumu. 746 00:35:39,670 --> 00:35:42,580 Bu mutlaka değil Aslında göstergesidir 747 00:35:42,580 --> 00:35:46,340 CS öğrencileri, ya da CS50 öğrenciler, oldukları daha az sınıf arkadaşlarınızla daha dürüst. 748 00:35:46,340 --> 00:35:49,090 Ama gerçek ki bu Dünya elektronik, biz sadece 749 00:35:49,090 --> 00:35:50,990 teknolojik var Bu tespit araçları. 750 00:35:50,990 --> 00:35:53,360 >> Bunun için bizim için önemlidir sınıfa karşısında adalet 751 00:35:53,360 --> 00:35:58,550 Yaptığımız bu algılar ve yükseltmek Sorun biz şeyleri görünce. 752 00:35:58,550 --> 00:36:01,980 Ve sadece bir resmini ve gerçekten Bu lavabo gibi bir şey yardımcı olmak için, 753 00:36:01,980 --> 00:36:04,600 Bunların sayılardır son 10 yılda öğrenci 754 00:36:04,600 --> 00:36:07,610 Bazı dahil edildiğini akademik dürüstlük gibi konular, 755 00:36:07,610 --> 00:36:10,990 bazı 32 öğrenci ile sonbaharda 2015 den hangi 756 00:36:10,990 --> 00:36:13,760 biz alıyoruz demek ki madde çok ciddiye. 757 00:36:13,760 --> 00:36:18,380 Ve nihayetinde, bu sayılar oluşturmak, son olarak yaklaşık% 3,% 4 ya da daha 758 00:36:18,380 --> 00:36:19,120 sınıfı. 759 00:36:19,120 --> 00:36:25,220 >> Öğrencilerin süper çoğunluğu için bu yüzden çizgiler net görünüyor. 760 00:36:25,220 --> 00:36:27,940 Ama bu duruyorsun özellikle geç, zihin 761 00:36:27,940 --> 00:36:32,080 Geceleri ile mücadele yaparken Bir sorun grubu bazı çözeltisi, 762 00:36:32,080 --> 00:36:34,830 mekanizmalar vardır kendinizi daha iyi almak için 763 00:36:34,830 --> 00:36:37,870 Senden daha destek olabilir Hatta o saatte düşünüyorum. 764 00:36:37,870 --> 00:36:40,514 Aldığımız zaman fark Öğrenci gönderimler, biz çapraz 765 00:36:40,514 --> 00:36:43,430 Bu yıl her gönderimi karşılaştırmak Her başvuru geçen yıl karşı, 766 00:36:43,430 --> 00:36:47,590 2007 her teslimiyete karşı, ve aynı zamanda, bakarak, çünkü, 767 00:36:47,590 --> 00:36:49,931 Kod, çevrimiçi depoları tartışma forumları, iş siteleri. 768 00:36:49,931 --> 00:36:51,806 Ve biz bu söz, Gerçekten uğruna, bütün 769 00:36:51,806 --> 00:36:56,040 Tam açıklama, eğer başkası online bulabilirsiniz 770 00:36:56,040 --> 00:36:57,880 kesinlikle, bu yüzden tabii ki olabilir. 771 00:36:57,880 --> 00:37:00,100 Ama, gerçekten, ruh Elbette aşağı kaynar arasında 772 00:37:00,100 --> 00:37:01,650 müfredat bu maddeye. 773 00:37:01,650 --> 00:37:03,670 Gerçekten sadece, makul olduğunu. 774 00:37:03,670 --> 00:37:06,680 >> Ve biz eğer üzerinde durmak sadece biraz daha dil ile, 775 00:37:06,680 --> 00:37:09,770 gerçekleştirmek tüm özü Bu dersle teslim çalışma 776 00:37:09,770 --> 00:37:10,954 Kendi olmalı. 777 00:37:10,954 --> 00:37:13,870 Ama bu içinde, orada kesinlikle fırsatlar ve teşvik, 778 00:37:13,870 --> 00:37:17,300 dönüm ve pedagojik değeri Kendimi uzadıya, TF'ler, CA, 779 00:37:17,300 --> 00:37:20,760 sınıfta TA, ve diğerleri, destek için, yalnız arkadaşlar izin 780 00:37:20,760 --> 00:37:23,547 ve oda arkadaşı okumuş kim daha önce CS ve programlama. 781 00:37:23,547 --> 00:37:25,130 Ve böylece bir ödenek var. 782 00:37:25,130 --> 00:37:28,180 Ve Genel kural Yardım için paha soran olduğunda, 783 00:37:28,180 --> 00:37:31,470 başkalarına kodunuzu gösterebilir, ama onların görmek olmayabilir. 784 00:37:31,470 --> 00:37:34,880 Yani ofis saatlerde olsanız bile, veya D salonu, ya da başka bir yerde de 785 00:37:34,880 --> 00:37:37,450 Bazı parça sette çalışan, Bir arkadaşı ile birlikte çalışan hangi 786 00:37:37,450 --> 00:37:40,160 de, tamamen iyi Günün işinizi sonunda 787 00:37:40,160 --> 00:37:43,034 sonuçta her ait olmalıdır Senin sırasıyla değil 788 00:37:43,034 --> 00:37:45,700 Bazı ortak çaba, Final projesi nerede hariç 789 00:37:45,700 --> 00:37:47,410 Buna izin ve teşvik ediyor. 790 00:37:47,410 --> 00:37:49,830 >> eğer fark bir şey ile mücadele 791 00:37:49,830 --> 00:37:52,520 ve arkadaşım sadece olur Daha sonra bu daha iyi olması için size, 792 00:37:52,520 --> 00:37:55,130 ya da daha bu soruna daha iyi, ya da uzak önünüzde biraz daha, 793 00:37:55,130 --> 00:37:57,330 o çevirmek tamamen makul ve arkadaşınıza, hey, demek 794 00:37:57,330 --> 00:38:00,480 Burada benim kod bakarak sakıncası yok, benim sorun nedir nokta yardım? 795 00:38:00,480 --> 00:38:03,760 Ve umarım, içinde pedagojik değeri faiz 796 00:38:03,760 --> 00:38:07,040 O arkadaşın değil sadece yapar Oh, bunu söylemek değil, 797 00:38:07,040 --> 00:38:09,917 ne on line eksik 6, veya böyle bir şey? 798 00:38:09,917 --> 00:38:12,000 Ama çözüm değil senin yanında arkadaş 799 00:38:12,000 --> 00:38:15,617 oh, iyi, burada, bana çekin dedik Bu kadar ve sana benim çözüm göstermektedir. 800 00:38:15,617 --> 00:38:16,450 Yani hattıdır. 801 00:38:16,450 --> 00:38:18,670 Size kodunu göstermek Diğerleri, ama olmayabilir 802 00:38:18,670 --> 00:38:22,350 Diğer tabi onların görüntülemek dersin müfredatında kısıtlamaları. 803 00:38:22,350 --> 00:38:24,760 >> Yani akılda bu duruyorsun üzüntü maddesi olarak adlandırılan 804 00:38:24,760 --> 00:38:27,560 yanı sıra dersin müfredatında yer, Bu bazı eylemde eğer 805 00:38:27,560 --> 00:38:30,476 uygun değildir, ancak getirmek dersin başkanlarının dikkatini 806 00:38:30,476 --> 00:38:34,240 72 saat içinde, ders Yerel yaptırım uygulayabilir olabilir 807 00:38:34,240 --> 00:38:37,380 tatmin edici olmayan bir içerebilir veya gönderilen iş için başarısız notu. 808 00:38:37,380 --> 00:38:41,410 Ama tabii ki bakın olmayacak Daha fazla disiplin cezası için önemli, 809 00:38:41,410 --> 00:38:43,010 tekrarlanan eylemlerin halleri dışında. 810 00:38:43,010 --> 00:38:46,632 Başka bir deyişle, bunu yaparsanız bazı yapmak aptal, özellikle gece geç, kararın 811 00:38:46,632 --> 00:38:49,340 ertesi sabah ya da iki gün Daha sonra, uyanmak ve fark 812 00:38:49,340 --> 00:38:50,870 ne düşünüyordum? 813 00:38:50,870 --> 00:38:53,890 Bir çıkış var CS50 yapmak Bu sorunu düzeltmek için 814 00:38:53,890 --> 00:38:57,170 ve böylece o kadar sahip biz yarım seninle tanışmak ve ilgileneceğiz 815 00:38:57,170 --> 00:39:01,500 Bu hem bir konuda birlikte Eğitim ve sizin için değerli, 816 00:39:01,500 --> 00:39:04,200 ama bir şekilde hala cezalandırıcı. 817 00:39:04,200 --> 00:39:08,590 Ve şimdi, bu kenar çıkarmak için. 818 00:39:08,590 --> 00:39:10,570 >> [VİDEO OYNATMA] 819 00:39:10,570 --> 00:39:13,540 >> [MÜZİK] 820 00:39:13,540 --> 00:39:58,090 821 00:39:58,090 --> 00:39:58,866 >> [SON OYNATMA] 822 00:39:58,866 --> 00:40:00,490 DAVID J. MALAN: Pekala, biz geri döndük. 823 00:40:00,490 --> 00:40:03,680 Ve şimdi bir bakmak Bizim gerçek dünya alanlarının ilk 824 00:40:03,680 --> 00:40:08,720 CS50 içinde, kriptografi sanatı, gönderme ve alma sanatı 825 00:40:08,720 --> 00:40:11,840 gizli mesajlar, şifreli mesajlar eğer sen, 826 00:40:11,840 --> 00:40:17,060 Eğer varsa bu sadece deşifre edilebilir gönderenin sahip olduğu bazı anahtar madde 827 00:40:17,060 --> 00:40:18,030 de. 828 00:40:18,030 --> 00:40:22,120 biz götürürüz Yani bu motive etmek a, burada bu şeye bakmak 829 00:40:22,120 --> 00:40:26,750 bu, bir örneğidir Gizli dekoder halkası olduğunu 830 00:40:26,750 --> 00:40:34,042 anlamaya için kullanılabilir gizli bir mesaj aslında ne olduğunu. 831 00:40:34,042 --> 00:40:35,750 Aslında, Lütfen ilkokulda gün, 832 00:40:35,750 --> 00:40:38,787 Hiç gizli mesajlar gönderdi eğer Bazı arkadaş veya sınıftaki bazı ezilme, 833 00:40:38,787 --> 00:40:40,620 Eğer düşünebilirdi Zeki ediliyordu 834 00:40:40,620 --> 00:40:46,530 Kağıt değişen parçanın üzerinde tarafından, gibi, A'dan B'ye ve B C ve C D, 835 00:40:46,530 --> 00:40:47,590 ve benzeri. 836 00:40:47,590 --> 00:40:50,300 Ama aslında şifreleyerek edildi Bilgilerinizi, hatta 837 00:40:50,300 --> 00:40:53,300 biraz önemsiz olsaydı, değil o kadar zor öğretmen gerçekleştirmek için, 838 00:40:53,300 --> 00:40:55,675 iyi, sadece değiştirirseniz A ve C B B ye, 839 00:40:55,675 --> 00:40:57,550 aslında anlamaya mesajı neydi, 840 00:40:57,550 --> 00:40:59,700 ancak bilgi deşifre edildi. 841 00:40:59,700 --> 00:41:03,420 >> Sadece bunu yapıyordun sadece çok Ralphie gibi burada 842 00:41:03,420 --> 00:41:07,934 oynayan ünlü bir film hemen hemen reklam nauseum her kış. 843 00:41:07,934 --> 00:41:08,600 [VİDEO OYNATMA] 844 00:41:08,600 --> 00:41:11,180 tüm bu bilinen ol Ralph Parker vesile olan 845 00:41:11,180 --> 00:41:14,070 Küçük bir üyesi atandı Öksüz Annie The Secret Circle 846 00:41:14,070 --> 00:41:17,700 ve tüm onur hakkına sahiptir ve faydaları bununla meydana gelen. 847 00:41:17,700 --> 00:41:24,340 >> -Signed, Little Orphan Annie, Karşı-imzalı mürekkep, Pierre Andre. 848 00:41:24,340 --> 00:41:27,160 Burs ve faydaları, Zaten dokuz yaşında. 849 00:41:27,160 --> 00:41:30,490 850 00:41:30,490 --> 00:41:31,825 >> [Bağırarak] 851 00:41:31,825 --> 00:41:33,750 852 00:41:33,750 --> 00:41:34,250 -Hadi ama. 853 00:41:34,250 --> 00:41:35,210 en onunla dönelim. 854 00:41:35,210 --> 00:41:39,530 Ben tüm bu caz gerekmez kaçakçılar ve korsanlar hakkında. 855 00:41:39,530 --> 00:41:41,660 >> için -listen yarın akşam sonuç macera 856 00:41:41,660 --> 00:41:43,880 siyah korsan gemisi. 857 00:41:43,880 --> 00:41:46,650 Şimdi, bu zamanı Annie'nin gizli mesaj 858 00:41:46,650 --> 00:41:49,840 Gizli Circle sen üyeleri için. 859 00:41:49,840 --> 00:41:53,570 Çocuklar, sadece üyelere hatırla Annie'nin Gizli Circle 860 00:41:53,570 --> 00:41:56,140 Annie'nin gizli mesaj çözebilir. 861 00:41:56,140 --> 00:42:00,340 >> Unutmayın, Annie size bağlıdır. 862 00:42:00,340 --> 00:42:02,880 B2 için işaretçilerine ayarlayın. 863 00:42:02,880 --> 00:42:05,230 İşte mesajdır. 864 00:42:05,230 --> 00:42:06,090 12, 11-- 865 00:42:06,090 --> 00:42:10,250 >> -Ben, Benim ilk gizli toplantısını duyuyorum. 866 00:42:10,250 --> 00:42:13,890 >> -14, 11, 18, 16. 867 00:42:13,890 --> 00:42:15,780 >> -Pierre Büyük bir ses bu gece oldu. 868 00:42:15,780 --> 00:42:19,000 O gece en söyleyebilirdi mesajı gerçekten çok önemliydi. 869 00:42:19,000 --> 00:42:22,694 >> -3, 25, bu bir mesajdır Annie kendisinden. 870 00:42:22,694 --> 00:42:23,860 kimseye söyleme, unutmayın. 871 00:42:23,860 --> 00:42:28,760 872 00:42:28,760 --> 00:42:32,930 >> -90 Saniye sonra, ben sadece ben Evin oda nerede dokuz bir çocuk 873 00:42:32,930 --> 00:42:37,040 gizlilik ve decode oturup. 874 00:42:37,040 --> 00:42:39,730 Aha, B! 875 00:42:39,730 --> 00:42:42,360 Bir sonraki, E. gitti 876 00:42:42,360 --> 00:42:44,520 >> İlk kelime olduğunu. 877 00:42:44,520 --> 00:42:49,032 S, şimdi daha kolay geliyordu, U, 25-- 878 00:42:49,032 --> 00:42:51,733 >> Oh, gitmeliyim, Ralphie hadi! 879 00:42:51,733 --> 00:42:53,688 >> aşağı doğru olması -I'll, anne! 880 00:42:53,688 --> 00:42:54,188 Vay canına! 881 00:42:54,188 --> 00:42:58,116 882 00:42:58,116 --> 00:43:04,060 >> -T, O, ne emin olun aşağıdaki amaçlara emin olun? 883 00:43:04,060 --> 00:43:05,970 Little Orphan neydi Annie söylemeye çalışıyorsun? 884 00:43:05,970 --> 00:43:07,264 Ne emin olun? 885 00:43:07,264 --> 00:43:09,634 >> -Ralphie, Andy var , Dışarı gel lütfen olacak gitmek? 886 00:43:09,634 --> 00:43:10,480 >> -Tamam, Anne! 887 00:43:10,480 --> 00:43:12,880 Ben doğru dışarı olacağım! 888 00:43:12,880 --> 00:43:14,550 >> -Ben Daha yakın şimdi başlamıştı. 889 00:43:14,550 --> 00:43:16,620 gerginlik korkunç. 890 00:43:16,620 --> 00:43:17,720 Bu neydi? 891 00:43:17,720 --> 00:43:20,170 gezegenin kaderi dengede askıda kalabilir. 892 00:43:20,170 --> 00:43:20,670 >> -Ralphie! 893 00:43:20,670 --> 00:43:23,170 Andy'nin gitmeli! 894 00:43:23,170 --> 00:43:26,890 >> sesle ağlama için, doğru dışarı -I'll! 895 00:43:26,890 --> 00:43:32,680 >> Orada-neredeyse, benim parmak, fikrimi uçtu Bir çelik tuzak oldu, her gözenek titreşerek. 896 00:43:32,680 --> 00:43:37,198 Evet, evet, evet, neredeyse açıktı. 897 00:43:37,198 --> 00:43:43,091 >> senin Ovaltine içmek için emin ol. 898 00:43:43,091 --> 00:43:43,590 Ovaltine? 899 00:43:43,590 --> 00:43:48,160 900 00:43:48,160 --> 00:43:49,430 Bir köhne ticari? 901 00:43:49,430 --> 00:43:53,046 902 00:43:53,046 --> 00:43:54,227 Orospu çocuğu. 903 00:43:54,227 --> 00:43:54,810 [SON OYNATMA] 904 00:43:54,810 --> 00:43:57,390 DAVID J. MALAN: Tamam, Bu çok uzun bir yol oldu 905 00:43:57,390 --> 00:44:00,660 kriptografi tanıtan, ve Ovaltine. 906 00:44:00,660 --> 00:44:04,470 Aslında, bu eski reklam gelen Burada, neden ovaltine bu kadar iyi? 907 00:44:04,470 --> 00:44:09,470 Bu olgun konsantre bir çıkarma olduğunu Arpa malt, saf krem ​​inek sütü, 908 00:44:09,470 --> 00:44:14,360 ve özellikle birlikte, kakao hazırlanan Doğal fosfatidler ve vitaminler ile. 909 00:44:14,360 --> 00:44:18,240 Bundan başka, takviye edilmiş Ek vitamin B ve D, yum. 910 00:44:18,240 --> 00:44:21,600 Ve hala, görünüşe göre, bunu elde edebilirsiniz Amazon, biz burada yaptığımız gibi. 911 00:44:21,600 --> 00:44:24,810 >> Ama motivasyon burada oldu Özellikle, şifrelemesi tanıtmak 912 00:44:24,810 --> 00:44:28,340 Bilinen kriptografi bir tür gizli anahtar kriptografi olarak. 913 00:44:28,340 --> 00:44:34,284 Ve adı, bütün anlaşılacağı gibi Bir gizli anahtar kripto sisteminin güvenliği, 914 00:44:34,284 --> 00:44:36,200 Bir metodoloji eğer olacak Sadece çabalıyorlar için 915 00:44:36,200 --> 00:44:40,960 iki kişi arasındaki bilgi, yani Sadece gönderen ve sadece alıcı 916 00:44:40,960 --> 00:44:46,980 gizli key-- bazı değerini bilmek, bazı Gizli ifade, bazı gizli numara, o 917 00:44:46,980 --> 00:44:50,660 Her iki şifrelemek onlara izin verir ve bilgi şifresini çözer. 918 00:44:50,660 --> 00:44:53,470 Ve kriptografi, gerçekten, Sadece bu hafta 0 değil. 919 00:44:53,470 --> 00:44:56,715 >> Bu girişler var bir sorun var İngilizce gerçek mesajı gibi 920 00:44:56,715 --> 00:44:59,340 ya da her türlü dil size sınıfta birine göndermek istiyorsanız, 921 00:44:59,340 --> 00:45:00,580 veya internet üzerinden. 922 00:45:00,580 --> 00:45:03,840 oluyor bazı çıktı, orada şifreli mesaj olduğu konusunda sizi 923 00:45:03,840 --> 00:45:05,250 Alıcı almak istiyorum. 924 00:45:05,250 --> 00:45:07,405 Ve bile birisi Orta, o çok alır 925 00:45:07,405 --> 00:45:09,780 sen onları istemiyorum mutlaka şifresini muktedir, 926 00:45:09,780 --> 00:45:12,840 Bu iç nedeniyle kara kutu, ya da algoritma, 927 00:45:12,840 --> 00:45:17,650 Bazı mekanizma, adım adım bazı Bu girdi almak için talimatlar, 928 00:45:17,650 --> 00:45:20,710 ve dönüştürerek umarım güvenli bir şekilde çıkış. 929 00:45:20,710 --> 00:45:23,640 >> Ve, Aslında, bazı Bu dünyada kelime olarak izler. 930 00:45:23,640 --> 00:45:26,100 Düz metin kelime olduğunu bilgisayar bilimcisi olur 931 00:45:26,100 --> 00:45:28,449 girişi tarif etmek için kullandıkları İngilizce gibi mesaj 932 00:45:28,449 --> 00:45:31,240 veya ne olursa olsun aslında dil sizi diğer bazı insan göndermek istiyor. 933 00:45:31,240 --> 00:45:35,450 Ve sonra şifreli kapışmasıdır şifrelenmiş, ya da şifreli, 934 00:45:35,450 --> 00:45:36,520 bunların sürümü. 935 00:45:36,520 --> 00:45:38,750 >> Ancak burada bir başka madde daha var. 936 00:45:38,750 --> 00:45:43,200 bir diğer giriş için var gizli anahtar şifreleme. 937 00:45:43,200 --> 00:45:45,200 Ve bu anahtar kendisi, bu, genel olarak, bir 938 00:45:45,200 --> 00:45:48,930 biz göreceğimiz gibi, bir sayı veya mektup, ya da kelime ne olursa olsun 939 00:45:48,930 --> 00:45:51,980 o aslında algoritma bekliyor. 940 00:45:51,980 --> 00:45:53,870 >> Ve nasıl bilgi şifresini mı? 941 00:45:53,870 --> 00:45:55,110 Bunu nasıl deşifre edersiniz? 942 00:45:55,110 --> 00:45:57,950 Peki, sadece ters çıkışları ve girişleri. 943 00:45:57,950 --> 00:46:00,900 >> Diğer bir deyişle, bir kişi bir kez şifreli mesaj alır 944 00:46:00,900 --> 00:46:03,740 o sadece var Aynı anahtarı bilmek. 945 00:46:03,740 --> 00:46:05,700 Onlar şifreli aldık. 946 00:46:05,700 --> 00:46:09,530 Ve bu iki takarak kripto sistemi içine girdiler, 947 00:46:09,530 --> 00:46:14,260 algoritma, dışarı bu kara kutu, orijinal metin gelmelidir. 948 00:46:14,260 --> 00:46:17,830 Ve böylece çok yüksek seviyede bulunuyor kriptografi aslında ne görüntüle 949 00:46:17,830 --> 00:46:18,590 tüm hakkında. 950 00:46:18,590 --> 00:46:20,030 >> Yani oraya alalım. 951 00:46:20,030 --> 00:46:22,700 Şimdi altına bakalım şey davlumbaz 952 00:46:22,700 --> 00:46:26,000 için verilen biz alarak oldum Geçen hafta, ve bu oturumda 953 00:46:26,000 --> 00:46:27,629 dize Doğuların. 954 00:46:27,629 --> 00:46:30,295 Günün sonunda bir dize karakter bir dizisidir. 955 00:46:30,295 --> 00:46:33,610 >> Bu hello world, ya da olabilir merhaba Zamyla, ya da her neyse. 956 00:46:33,610 --> 00:46:37,050 Ama bu ne anlama geliyor bir karakter dizisi olabilir mi? 957 00:46:37,050 --> 00:46:41,520 Aslında, CS50 kütüphane verir Bize dize denilen bir veri türü. 958 00:46:41,520 --> 00:46:45,140 >> Ama hayır aslında yoktur C bir dize olarak böyle bir şey 959 00:46:45,140 --> 00:46:49,450 Gerçekten sadece bir dizidir karakter, karakter, karakter, 960 00:46:49,450 --> 00:46:52,180 karakter, geri, için, geri geri, içeri geri, geri 961 00:46:52,180 --> 00:46:54,650 Bilgisayarınızın bellek veya RAM. 962 00:46:54,650 --> 00:46:58,940 Ve biz o derinlerine bakacağız Gelecek, bellek kendisi baktığınızda 963 00:46:58,940 --> 00:47:02,030 kullanımı, ve ve söz konusu tehditler. 964 00:47:02,030 --> 00:47:04,100 >> Ama dize Zamyla düşünelim. 965 00:47:04,100 --> 00:47:07,480 Yani sadece isim Burada, insan, Zamyla, 966 00:47:07,480 --> 00:47:12,030 Bu dizisidir karakterler, Z-A-E-Y-L-A. 967 00:47:12,030 --> 00:47:16,020 Ve şimdi varsayalım o Zamyla adı Bir bilgisayarın içinde depolanan ediliyor 968 00:47:16,020 --> 00:47:16,880 programı. 969 00:47:16,880 --> 00:47:20,830 >> Eh, biz gerektiği bu nedenle duruyor bu karakterler bakmak mümkün 970 00:47:20,830 --> 00:47:21,590 tek tek. 971 00:47:21,590 --> 00:47:24,710 Yani biraz çekmek için gidiyorum Burada Zamyla adının etrafında kutu. 972 00:47:24,710 --> 00:47:31,580 Ve C olduğu zaman sizi o belki Zamyla-- ve benzeri, bir dize var 973 00:47:31,580 --> 00:47:34,940 bu dize geri geldi olsun dize gibi bir işlev, 974 00:47:34,940 --> 00:47:38,540 aslında işleyebilirsiniz karakteri ile bu karakteri. 975 00:47:38,540 --> 00:47:42,070 >> Şimdi, bunun için geçerli olacaktır Konuşma el, çünkü 976 00:47:42,070 --> 00:47:46,420 kriptografi olarak değiştirmek istiyorsanız D bir B ve B C ve C, 977 00:47:46,420 --> 00:47:49,650 ve benzeri, sen gerekiyor bireysel karakter bakmak için 978 00:47:49,650 --> 00:47:50,190 bir dize. 979 00:47:50,190 --> 00:47:52,695 Sen değiştirmek gerekiyor başka bir şey, A Z 980 00:47:52,695 --> 00:47:55,280 için başka bir şey, M Başka, ve böylece bir şey. 981 00:47:55,280 --> 00:47:58,000 Ve bu yüzden bir yol gerekir, programlı, bu yüzden 982 00:47:58,000 --> 00:48:03,020 C, konuşmak değiştirmek mümkün ve bireysel harflerle bakmak. 983 00:48:03,020 --> 00:48:05,690 aşağıdaki gibi Ve biz bunu yapabilirsiniz. 984 00:48:05,690 --> 00:48:08,340 >> beni geri CS50 IDE kafasıyla gidelim. 985 00:48:08,340 --> 00:48:11,130 Ve beni önde gitmesine izin ve yeni bir dosya oluşturun 986 00:48:11,130 --> 00:48:16,134 Ben bu sefer string0 arayacağım o, Bizim bu tür ilk örnek olarak, c nokta. 987 00:48:16,134 --> 00:48:18,300 Ve ben önde gidiyorum aşağıdaki gibi ve o kadar kırbaç. 988 00:48:18,300 --> 00:48:22,870 >> Böylece CS50.h içerir ve daha sonra standart io.h arasında, 989 00:48:22,870 --> 00:48:25,990 ki ben hemen hemen her zaman gidiyorum En azından, benim programlarında kullanıyor olması 990 00:48:25,990 --> 00:48:26,780 Başlangıçta. 991 00:48:26,780 --> 00:48:32,180 Ana boşluğu int, ve sonra burada ben dizeleri yapacak dize almak alır. 992 00:48:32,180 --> 00:48:35,260 Ve sonra ben gidiyorum go ahead ve bunu. 993 00:48:35,260 --> 00:48:37,460 Ben devam etmek istiyorum ve bir sağlamlık denetimi olarak, 994 00:48:37,460 --> 00:48:43,607 sadece söylemek, merhaba, yüzde s, noktalı virgül, dize 0 yapar. 995 00:48:43,607 --> 00:48:44,690 ah ah, ben burada ne yaptım? 996 00:48:44,690 --> 00:48:45,930 Oh, takın vermedi. 997 00:48:45,930 --> 00:48:48,120 Yani ders, öğrendim kasıtlı değildi. 998 00:48:48,120 --> 00:48:52,480 >> Yani hata, daha fazla, yüzde veri argümanlar daha dönüşümler. 999 00:48:52,480 --> 00:48:54,940 Ve bu, nerede çizgi 7-- Tamam, ben, 1000 00:48:54,940 --> 00:48:56,690 unquote alıntı, o benim dize printf. 1001 00:48:56,690 --> 00:48:58,151 Ben yüzde işareti var. 1002 00:48:58,151 --> 00:48:59,650 Ama ikinci argümanı kaçırıyorum. 1003 00:48:59,650 --> 00:49:03,190 >> Ben virgül s, eksik olan Önceki örneklerde var mı. 1004 00:49:03,190 --> 00:49:06,650 Yani iyi bir fırsat düzeltmek için bir daha hata, yanlışlıkla. 1005 00:49:06,650 --> 00:49:09,950 Ve şimdi bana çalışmasına izin Zamyla bölgesindeki string0 yazın. 1006 00:49:09,950 --> 00:49:10,970 Zamyla merhaba, tamam. 1007 00:49:10,970 --> 00:49:14,144 >> Bu yüzden programın bu tür çalıştırmak Şimdi bir kaç farklı zamanlarda. 1008 00:49:14,144 --> 00:49:16,310 Ama bir şey a yapalım Bu sefer biraz farklı. 1009 00:49:16,310 --> 00:49:19,450 Bunun yerine sadece Zamyla en baskı printf ile bütün isim, 1010 00:49:19,450 --> 00:49:21,350 karakteri tarafından o karakteri yapalım. 1011 00:49:21,350 --> 00:49:22,700 >> Ben bir for döngüsü kullanmak için gidiyorum. 1012 00:49:22,700 --> 00:49:26,160 Ve kendimi vereceğim Bir sayma değişkeni, i aradı. 1013 00:49:26,160 --> 00:49:33,530 Ve ben bu yüzden, iterating devam edeceğim i s uzunluğundan daha az olduğu sürece. 1014 00:49:33,530 --> 00:49:35,930 >> Bu çıkıyor, we did not Bu son kez yapmak, 1015 00:49:35,930 --> 00:49:39,100 Bu c ile geliyor işlev Stirling aradı. 1016 00:49:39,100 --> 00:49:42,690 Geri gün içinde, ve genel olarak hala işlevlerini uygularken, 1017 00:49:42,690 --> 00:49:45,405 insanlar genellikle çok seçecektir Sesin özlü isimleri bu tür 1018 00:49:45,405 --> 00:49:48,280 Eğer öyle olsa bile, istediği gibi Birkaç ünlüleri veya harfleri eksik. 1019 00:49:48,280 --> 00:49:50,660 Bu nedenle Stirling Bir fonksiyonun adını bu 1020 00:49:50,660 --> 00:49:53,880 arasında bir argüman alır bir dize olmalıdır parantez. 1021 00:49:53,880 --> 00:49:56,910 Ve bu sadece bir tamsayı döndürür, Bu dizenin uzunluğu. 1022 00:49:56,910 --> 00:50:00,580 >> on line 7 for döngüsü bu yüzden gidiyor i 0 eşittir saymaya başlayın. 1023 00:50:00,580 --> 00:50:02,530 Artırmak için gidiyor her tekrarında i 1024 00:50:02,530 --> 00:50:04,350 1 ile, biz bir kaç kez yaptığını olarak. 1025 00:50:04,350 --> 00:50:06,780 Ama sadece yapmak gidiyor noktaya kadar bu kadar 1026 00:50:06,780 --> 00:50:09,660 I uzunluğu ise dize kendisi. 1027 00:50:09,660 --> 00:50:14,520 >> Yani bu, sonuçta bir yoludur karakter yineleme 1028 00:50:14,520 --> 00:50:17,430 dizede olduğu gibi takip eder. 1029 00:50:17,430 --> 00:50:20,670 Ben değil yazdırmak için gidiyorum Bütün dize, ancak yüzde c, 1030 00:50:20,670 --> 00:50:22,860 tek bir karakter Yeni bir hat izledi. 1031 00:50:22,860 --> 00:50:24,880 Ve sonra ben gidiyorum devam edin, ben de gerek 1032 00:50:24,880 --> 00:50:29,080 Ben Yazdırmak istediğiniz söylemek s i karakteri. 1033 00:50:29,080 --> 00:50:33,450 >> i gösteren değişken Yani eğer dize, indeksi 1034 00:50:33,450 --> 00:50:37,230 Eğer içinde, ben edebilmek için ihtiyacı vardır Bana s i karakter vermek demek. 1035 00:50:37,230 --> 00:50:40,390 Ve c yapmanın bir yolu vardır köşeli parantez ile bu. 1036 00:50:40,390 --> 00:50:43,679 Sadece adını söylemek Bu durumda s dize. 1037 00:50:43,679 --> 00:50:46,970 Sonra sen köşeli parantezleri kullanın genellikle sadece Dönüş veya Enter yukarıdaki 1038 00:50:46,970 --> 00:50:48,110 klavyedeki tuş. 1039 00:50:48,110 --> 00:50:52,410 Ve sonra dizin koymak Yazdırmak istediğiniz karakter. 1040 00:50:52,410 --> 00:50:55,960 Yani endeks olacak number-- 0, veya 1, ya da 2 veya 3, veya nokta, 1041 00:50:55,960 --> 00:50:57,590 nokta, bazı başka bir numara nokta. 1042 00:50:57,590 --> 00:51:00,920 >> Ve biz gidiyor sağlamak , Doğru numarayı olmak çünkü ben 1043 00:51:00,920 --> 00:51:02,360 0 saymaya başlar. 1044 00:51:02,360 --> 00:51:07,020 Ve varsayılan olarak, ilk karakter bir dize Kongre 0 gereğidir. 1045 00:51:07,020 --> 00:51:09,230 Ve ikinci karakter dirseği 1'dir. 1046 00:51:09,230 --> 00:51:11,120 Ve üçüncü karakter dirseği 2 'dir. 1047 00:51:11,120 --> 00:51:13,630 Ve sen de gitmek istemiyorum uzakta, ama biz değiliz çünkü 1048 00:51:13,630 --> 00:51:17,780 Sadece bu kadar i artırmak için gidiyor dizenin uzunluğu eşittir. 1049 00:51:17,780 --> 00:51:20,210 Ve bu noktada, for döngüsü bu duracaktır. 1050 00:51:20,210 --> 00:51:25,550 >> Bu yüzden bana go ahead ve bu kaydetmesine izin Program ve çalışma dizesi 0 olun. 1051 00:51:25,550 --> 00:51:28,400 Ama berbat. 1052 00:51:28,400 --> 00:51:35,390 Dolaylı kütüphane fonksiyonu ilan tip gibi ile Stirling ve şimdi such--, 1053 00:51:35,390 --> 00:51:36,430 Bu tanıdık geliyor. 1054 00:51:36,430 --> 00:51:37,440 Ama printf değil. 1055 00:51:37,440 --> 00:51:38,540 Ve bu dizeyi almak değil. 1056 00:51:38,540 --> 00:51:40,480 >> Ben batırmadım Aynı şekilde bu sefer. 1057 00:51:40,480 --> 00:51:45,100 Ama burada biraz aşağı fark Bundan başka, başlık string.h arasında, 1058 00:51:45,100 --> 00:51:47,210 açıkça sağlamak Stirling için beyanname. 1059 00:51:47,210 --> 00:51:48,820 Yani aslında orada bir ipucu var. 1060 00:51:48,820 --> 00:51:51,670 >> Ve gerçekten de çıkıyor Başka bir başlık dosyası var 1061 00:51:51,670 --> 00:51:53,970 Kullandığımız değil ettik sınıfta henüz o ama var 1062 00:51:53,970 --> 00:51:56,480 Mevcut olanlar arasında Size, string.h denir. 1063 00:51:56,480 --> 00:52:00,930 Ve bu dosya, string.h Stirling ilan olduğunu. 1064 00:52:00,930 --> 00:52:05,220 Bu yüzden bana devam edelim ve dize olun, bu tasarruf 1065 00:52:05,220 --> 00:52:08,040 0-- güzel, hiçbir hata iletisi bu sefer. 1066 00:52:08,040 --> 00:52:12,290 >> ./string0 Zamyla ve Ben, Enter tuşuna üzereyim 1067 00:52:12,290 --> 00:52:16,710 bu noktada getString gidiyor dize döndürmek için, s koydu. 1068 00:52:16,710 --> 00:52:21,890 for döngüsü yineleme gidiyor o zaman Bir seferde bir S karakterleri üzerinde, 1069 00:52:21,890 --> 00:52:28,420 çünkü onlara satıra bir tane yazdırmak Ben sonunda bu ters eğik çizgi n vardı. 1070 00:52:28,420 --> 00:52:34,530 Yani bu ters eğik çizgi ihmal olabilir n ve sonra sadece tüm Zamyla yazdırmak 1071 00:52:34,530 --> 00:52:37,460 Aynı doğrultuda, etkili reimplementing 1072 00:52:37,460 --> 00:52:38,999 tüm bu yararlı değildir printf. 1073 00:52:38,999 --> 00:52:40,540 Ancak bu durumda, bunu yapmadık. 1074 00:52:40,540 --> 00:52:43,610 Aslında basılır ettik Bir seferde bir karakter, her satıra bir tane, 1075 00:52:43,610 --> 00:52:45,400 bu yüzden aslında etkisini görmek söyledi. 1076 00:52:45,400 --> 00:52:46,900 >> Ama burada bir şeyi dikkat etmelisiniz. 1077 00:52:46,900 --> 00:52:48,930 Ve biz geri geleceğiz gelecekteki bir hafta içinde bu. 1078 00:52:48,930 --> 00:52:52,650 Bu çıkıyor Kod potansiyel adamcağız. 1079 00:52:52,650 --> 00:52:56,560 >> O olsun dize çıkıyor ve hayatında bazı diğer fonksiyonlar 1080 00:52:56,560 --> 00:53:00,280 mutlaka her zaman yapmak Eğer ne beklediğini dönün. 1081 00:53:00,280 --> 00:53:03,010 Biz geçen sınıftan biliyorum olsun bu sefer 1082 00:53:03,010 --> 00:53:04,960 dize bir dize gerekiyordu. 1083 00:53:04,960 --> 00:53:09,900 Ama ne tür dışarı kullanıcı türleri ise Uzun bir kelime veya paragraf veya kompozisyon 1084 00:53:09,900 --> 00:53:13,010 yeterli değil var olduğunu bilgisayar hafızası sığdırmak için. 1085 00:53:13,010 --> 00:53:15,410 >> Gibi ne bir şey giderse başlık altında yanlış? 1086 00:53:15,410 --> 00:53:18,400 Bu, sık olmaz olabilir ama bir kez olabilirdi 1087 00:53:18,400 --> 00:53:21,520 bir süre, çok seyrek. 1088 00:53:21,520 --> 00:53:25,460 Ve böylece o olsun dize çıkıyor ve bunun gibi fonksiyonlar mutlaka yapmak 1089 00:53:25,460 --> 00:53:26,380 Her zaman dizeleri döndürür. 1090 00:53:26,380 --> 00:53:30,680 Onlar bazı hata değerini döndürebilir, bazı gözlem değeri tabiri caizse, 1091 00:53:30,680 --> 00:53:32,612 bu göstermektedir bir şeyler yanlış gitti. 1092 00:53:32,612 --> 00:53:35,320 Ve sadece bu bilemez Şimdi sınıfta öğrenmiş, 1093 00:53:35,320 --> 00:53:37,700 veya biraz daha belgelerine okumak zorunda. 1094 00:53:37,700 --> 00:53:43,120 O olsun dize çıkıyor null adı verilen bir değer döndürebilir. 1095 00:53:43,120 --> 00:53:46,220 Boş olduğunu yaparız özel bir değerdir gelecekteki hafta içinde geri gelmek. 1096 00:53:46,220 --> 00:53:50,420 Ama şimdi, sadece ben istersem biliyorum ileriye doğru hareket gerçekten uygun olmak 1097 00:53:50,420 --> 00:53:52,650 olsun dizesini kullanarak, ben sadece onu aramak değil, 1098 00:53:52,650 --> 00:53:56,870 ve körü körüne dönüş değeri kullanın, bir dize olduğunu güveniyorum. 1099 00:53:56,870 --> 00:53:59,420 >> İlk demeliyim hey, sadece bir dakika bekleyin 1100 00:53:59,420 --> 00:54:03,380 s eşit yapmazsa devam null, nerede null, yine, 1101 00:54:03,380 --> 00:54:04,660 sadece bazı özel değerdir. 1102 00:54:04,660 --> 00:54:07,770 Ve sadece özel değer sen olsun dizesi için endişelenmenize gerek. 1103 00:54:07,770 --> 00:54:10,900 Dize ya gidiyor Get bir dize veya null dönün. 1104 00:54:10,900 --> 00:54:17,219 >> Ve bu ünlem işareti eşittir işareti belki matematik dersinde biliyoruz olabilir 1105 00:54:17,219 --> 00:54:20,510 Eğer bir eşittir işareti çizmek olabilir içinden bir çizgi eşit olmadığını belirtmek için. 1106 00:54:20,510 --> 00:54:23,135 Bu genellikle bir karakter değil Klavyenizdeki yazabilirsiniz. 1107 00:54:23,135 --> 00:54:26,480 Ve bu yüzden çoğu programlama dilleri, Eğer eşit değildir demek istiyorum, 1108 00:54:26,480 --> 00:54:29,160 Eğer bir ünlem işareti kullanmak, aksi takdirde patlama olarak da bilinir. 1109 00:54:29,160 --> 00:54:33,180 Yani patlama, eşittir demek ki olup, mantıksal eşittir anlamına gelir. 1110 00:54:33,180 --> 00:54:38,060 Bu büyük orada değil sadece gibi daha ya eşit veya daha düşük 1111 00:54:38,060 --> 00:54:41,270 eşit veya klavyenizdeki girmek için bu bir sembol olarak her şeyi yapıyor. 1112 00:54:41,270 --> 00:54:44,020 Böylece yüzden, geçmiş örneklerde, Açık bir dirsek yaptı ve daha sonra 1113 00:54:44,020 --> 00:54:48,670 eşit işareti, sırayla yapılacak , Daha büyük ya da daha az, derler. 1114 00:54:48,670 --> 00:54:49,910 >> Yani paket burada ne var? 1115 00:54:49,910 --> 00:54:53,880 Bu şimdi bir yolu basitçe Bu sözdizimi tanıtan, bu özellik, 1116 00:54:53,880 --> 00:54:57,390 Bireysel yineleme bir dize karakter. 1117 00:54:57,390 --> 00:55:00,260 Ve sadece bu kare gibi parantez, sen onlara almak için izin 1118 00:55:00,260 --> 00:55:03,790 olarak o köşeli parantez dikkate tür, bu altta yatan ima 1119 00:55:03,790 --> 00:55:06,040 tasarım, bu sayede her bir dize içinde bir karakter 1120 00:55:06,040 --> 00:55:10,180 tür altında bir yere kutulu edilir Bilgisayarınızın belleğinde davlumbaz. 1121 00:55:10,180 --> 00:55:12,340 >> Ama bu bir türevi yapalım. 1122 00:55:12,340 --> 00:55:14,880 Bu çıkıyor program doğrudur. 1123 00:55:14,880 --> 00:55:18,810 CS50 eksenlerinin her Böylece değerlendirmek için Kod, bu artık doğru. 1124 00:55:18,810 --> 00:55:22,959 Özellikle şimdi ben kontrol ediyorum o null, bu program çökmesine asla. 1125 00:55:22,959 --> 00:55:24,500 Ve ben sadece deneyimlerinden biliyoruz. 1126 00:55:24,500 --> 00:55:28,040 Ama bu başka bir şey yok biz gerçekten burada yanlış gidebilir. 1127 00:55:28,040 --> 00:55:31,860 Ama çok iyi tasarlanmış değil Çünkü en temel dönelim. 1128 00:55:31,860 --> 00:55:34,450 >> İlk olarak, principles-- for döngüsü ne yapar? 1129 00:55:34,450 --> 00:55:36,290 for döngüsü üç şey yapar. 1130 00:55:36,290 --> 00:55:39,340 Bazı başlatır değer, sen bunu sorarsan. 1131 00:55:39,340 --> 00:55:41,770 Bir durumu kontrol edilir. 1132 00:55:41,770 --> 00:55:45,380 Sonra sonra her yineleme, her döngüden sonra, 1133 00:55:45,380 --> 00:55:49,330 bazı artırır Burada değer veya değerler. 1134 00:55:49,330 --> 00:55:50,600 >> Peki bu ne anlama geliyor? 1135 00:55:50,600 --> 00:55:52,940 Biz i 0 başlatılamıyor. 1136 00:55:52,940 --> 00:55:58,610 Biz kontrol ve emin olun ben daha az Z-A-E-Y-L-A, S uzunluğu, 1137 00:55:58,610 --> 00:55:59,900 böylece daha az 6 olan. 1138 00:55:59,900 --> 00:56:02,590 Ve, gerçekten de, 0 az 6 gibi. 1139 00:56:02,590 --> 00:56:05,580 >> Biz Zamyla adından Z çıktı. 1140 00:56:05,580 --> 00:56:08,080 Sonra 0 ile 1 arasında i artırmak. 1141 00:56:08,080 --> 00:56:11,290 Daha sonra 1 az, kontrol s uzunluğundan daha? 1142 00:56:11,290 --> 00:56:13,270 s uzunluğu 6'dır. 1143 00:56:13,270 --> 00:56:13,950 Evet öyle. 1144 00:56:13,950 --> 00:56:16,880 >> Bu yüzden Zamyla adına, ZA bir yazdırın. 1145 00:56:16,880 --> 00:56:20,090 Biz 2, 1, 0, i artırmak. 1146 00:56:20,090 --> 00:56:23,720 Daha sonra, 2 den daha az, kontrol Zamyla adının uzunluğu. 1147 00:56:23,720 --> 00:56:25,380 6- yani 2 den az 6'dır. 1148 00:56:25,380 --> 00:56:30,460 Evet, en şimdi M çıktısını izin Zamyla adı, üçüncü karakter. 1149 00:56:30,460 --> 00:56:34,110 >> Burada anahtar her birine olduğunu Hikayenin yineleme, ben kontrol ediyorum, 1150 00:56:34,110 --> 00:56:37,810 i Zamyla uzunluğundan daha azdır? 1151 00:56:37,810 --> 00:56:40,350 Ama yakalamak olduğunu Stirling bir özellik değildir. 1152 00:56:40,350 --> 00:56:43,100 programlamış olduğunuz olanlarınız Java ya da diğer dillerde önce 1153 00:56:43,100 --> 00:56:46,310 bir dize uzunluğunu biliyor olabilir Bir özellik, sadece bazı sadece değerini okuyun. 1154 00:56:46,310 --> 00:56:50,220 >> Bu durumda, C, bu ise, tam anlamıyla bir işlev 1155 00:56:50,220 --> 00:56:53,520 sayılmasıyla Her zaman Zamyla karakterler 1156 00:56:53,520 --> 00:56:54,740 biz bu işlevini çağırın. 1157 00:56:54,740 --> 00:56:58,500 Her zaman kullanmak için bilgisayarı sormak Stirling, o, Zamyla bir göz alıyor 1158 00:56:58,500 --> 00:57:01,960 söyleyerek Z-A-E-Y-L-A, 6. 1159 00:57:01,960 --> 00:57:02,962 Ve 6 döndürür. 1160 00:57:02,962 --> 00:57:04,920 Aramadan dahaki sefere for döngüsü içerde o 1161 00:57:04,920 --> 00:57:08,610 o Zamyla bakmak için gidiyor Yine, Z-A-E-Y-L-A, 6 üzerinden. 1162 00:57:08,610 --> 00:57:10,320 Ve 6 dönmek için gidiyor. 1163 00:57:10,320 --> 00:57:12,980 Yani bu tasarım hakkında aptal nedir? 1164 00:57:12,980 --> 00:57:17,700 >> Neden benim kod değil 5 üzerinden 5 olan Şu anda tasarım, tabiri caizse? 1165 00:57:17,700 --> 00:57:20,600 Eh, ben soruyorum, bir gereksiz yere soru. 1166 00:57:20,600 --> 00:57:23,030 Ben gerek daha ben daha çok iş yapıyorum. 1167 00:57:23,030 --> 00:57:25,370 >> Yani olsa da Cevap Ben, doğru 1168 00:57:25,370 --> 00:57:29,560 Bilgisayarı soran, ne Yine Zamyla uzunluğu 1169 00:57:29,560 --> 00:57:31,380 ve tekrar ve tekrar ve tekrar? 1170 00:57:31,380 --> 00:57:33,980 Ve o cevap asla değişecek. 1171 00:57:33,980 --> 00:57:35,900 Her zaman 6 olacak. 1172 00:57:35,900 --> 00:57:39,730 >> Bu daha Yani iyi bir çözüm Bu bir sonraki sürümü olacak. 1173 00:57:39,730 --> 00:57:43,390 Beni devam edelim ve bir koyun string1.c denilen ayrı bir dosya, 1174 00:57:43,390 --> 00:57:44,990 sadece ayrı tutmak. 1175 00:57:44,990 --> 00:57:47,260 Ve bir de çıkıyor döngü, aslında can 1176 00:57:47,260 --> 00:57:50,210 Aynı anda birden fazla değişkenleri bildirmek. 1177 00:57:50,210 --> 00:57:53,460 >> Yani i tutmak ve 0 olarak ayarlayın gidiyorum. 1178 00:57:53,460 --> 00:57:56,190 Ama aynı zamanda gidiyorum bir virgül ekleyin ve söylemek, 1179 00:57:56,190 --> 00:58:01,050 Bana kimin n adında bir değişken vermek değer s dize uzunluğuna eşittir. 1180 00:58:01,050 --> 00:58:09,410 Ve şimdi, benim durumu olun Çok uzun i n daha az olarak. 1181 00:58:09,410 --> 00:58:14,140 >> Bu yüzden, bu şekilde, bir mantık Günün sonunda aynıdır. 1182 00:58:14,140 --> 00:58:18,280 Ama hatırlayarak Bu durumda, değer 6. 1183 00:58:18,280 --> 00:58:19,780 Zamyla adının uzunluğu nedir? 1184 00:58:19,780 --> 00:58:20,860 Ve ben n it at koyuyorum. 1185 00:58:20,860 --> 00:58:23,050 >> Ve ben hala bakıyorum durum her zaman. 1186 00:58:23,050 --> 00:58:24,300 0 6 daha düşük mü? 1187 00:58:24,300 --> 00:58:25,600 1 6 daha düşük mü? 1188 00:58:25,600 --> 00:58:28,600 vb 2 6 daha az ve var mı? 1189 00:58:28,600 --> 00:58:31,914 >> Ama bilgisayar sormuyorum Tekrar ve tekrar, ne 1190 00:58:31,914 --> 00:58:33,080 Zamyla adının uzunluğu? 1191 00:58:33,080 --> 00:58:34,320 Zamyla adının uzunluğu nedir? 1192 00:58:34,320 --> 00:58:35,986 Bu Zamyla adının uzunluğu nedir? 1193 00:58:35,986 --> 00:58:40,440 Ben tam anlamıyla hatırlayarak ilk ve Sadece bu ikinci değişken n cevap. 1194 00:58:40,440 --> 00:58:45,280 Yani bu artık sadece olurdu Doğru, ama aynı zamanda iyi tasarlanmış. 1195 00:58:45,280 --> 00:58:46,670 >> Şimdi, tarzı hakkında? 1196 00:58:46,670 --> 00:58:48,866 Ben değişkenleri adında ettik oldukça iyi diyebilirim. 1197 00:58:48,866 --> 00:58:50,240 Onlar şu anda süper özlü konum. 1198 00:58:50,240 --> 00:58:52,090 Ve bu tamamen iyi. 1199 00:58:52,090 --> 00:58:55,120 >> Eğer sadece bir tane varsa Bir programda dize, 1200 00:58:55,120 --> 00:58:56,860 sen de o dize için s diyebilirsiniz. 1201 00:58:56,860 --> 00:58:59,370 Eğer tek bir değişken varsa Bir program saymak için, 1202 00:58:59,370 --> 00:59:00,710 siz de bunu i diyebilirsiniz. 1203 00:59:00,710 --> 00:59:03,500 Eğer bir uzunluğa sahip ise, n, hem de süper yaygındır. 1204 00:59:03,500 --> 00:59:05,800 Ama benim kod herhangi bir yorumda bulunmadılar. 1205 00:59:05,800 --> 00:59:09,200 >> Ben reader-- haberdar ettik Bu benim TF veya TA olsun, 1206 00:59:09,200 --> 00:59:12,460 ya da sadece ne gerekiyor colleague-- Bu programda üzerinde olacak. 1207 00:59:12,460 --> 00:59:15,760 Ve çok iyi bir stil elde etmek için, Yapmak istediğim ne 1208 00:59:15,760 --> 00:59:24,580 bu-- bir şeydir gibi giriş için kullanıcı isteyin. 1209 00:59:24,580 --> 00:59:26,670 Ve ben yazabilirsiniz şekillerde, bu herhangi bir sayı. 1210 00:59:26,670 --> 00:59:35,630 >> Emin olun get olmak s- emin dize dize döndü. 1211 00:59:35,630 --> 00:59:40,280 Ve sonra var-- ve bu belki de En önemli comment-- iterate 1212 00:59:40,280 --> 00:59:44,450 Bir seferde s bir karakter üzerinde. 1213 00:59:44,450 --> 00:59:47,060 Ve ben herhangi kullanabilirsiniz İngilizce dil seçimi 1214 00:59:47,060 --> 00:59:49,650 Burada her açıklamak için Bu kod topakları. 1215 00:59:49,650 --> 00:59:52,740 >> Ben koymak değil dikkat edin kodun her satırında yorumlamak 1216 00:59:52,740 --> 00:59:55,690 gerçekten sadece ilginç üzerinde olanlar, olanlar o 1217 00:59:55,690 --> 00:59:59,460 Bazı anlam ben belki Birine süper net yapmak istiyorum 1218 00:59:59,460 --> 01:00:00,460 kodumu okuma. 1219 01:00:00,460 --> 01:00:02,920 Ve neden olsun aradığınız dize girişi için kullanıcı sormak? 1220 01:00:02,920 --> 01:00:05,450 Hatta bu bir mutlaka değil tüm bu açıklayıcı. 1221 01:00:05,450 --> 01:00:09,340 Ama bu, bir hikaye anlatmak yardımcı olduğu Hikayenin ikinci hat, emin olun bir 1222 01:00:09,340 --> 01:00:10,740 olsun dize dize döndü. 1223 01:00:10,740 --> 01:00:14,260 >> Ve hikayenin üçüncü hattıdır s birinde karakterler üzerinde yineleme 1224 01:00:14,260 --> 01:00:15,380 zamanında. 1225 01:00:15,380 --> 01:00:17,920 Ve şimdi sadece iyi ölçmek için, Devam edin ve eklemek için gidiyorum 1226 01:00:17,920 --> 01:00:24,560 bir daha açıklama bu sadece s baskı i-inci karakter diyor. 1227 01:00:24,560 --> 01:00:26,520 Şimdi, ne yapmış günün sonunda? 1228 01:00:26,520 --> 01:00:29,190 >> Bazı İngiliz eklemiş yorumların şeklinde kelimeler. 1229 01:00:29,190 --> 01:00:32,700 çizgi çizgi sembolü hey, anlamı, Bu insan için bilgisayar, 1230 01:00:32,700 --> 01:00:33,820 senin için, bilgisayar. 1231 01:00:33,820 --> 01:00:35,119 Bu yüzden mantıklı göz ardı ediyoruz. 1232 01:00:35,119 --> 01:00:35,910 Onlar sadece oradayız. 1233 01:00:35,910 --> 01:00:39,830 >> Ve, gerçekten, CS50 IDE olarak gösterir gri, kullanışlı, ancak anahtar olarak 1234 01:00:39,830 --> 01:00:41,000 Programa. 1235 01:00:41,000 --> 01:00:42,570 Şimdi ne yapabilirim dikkat edin. 1236 01:00:42,570 --> 01:00:44,950 Eğer C bilip programlama ya da değil, 1237 01:00:44,950 --> 01:00:47,722 Sadece bu geri durabiliriz Program ve yorumlarınızı yağsız. 1238 01:00:47,722 --> 01:00:50,180 emin olun, giriş için kullanıcı isteyin dize dize döndürdü olsun, 1239 01:00:50,180 --> 01:00:53,009 s karakter üzerinde yineleme Bir defada bir karakteri yazdırmak 1240 01:00:53,009 --> 01:00:55,550 i-inci karakter s- sen değil Hatta koduna bakmak zorunda 1241 01:00:55,550 --> 01:00:57,270 bu program ne anlama. 1242 01:00:57,270 --> 01:01:00,280 Ve, daha iyisi, kendinize bakarsanız Bir ya da iki hafta içinde bu programda, 1243 01:01:00,280 --> 01:01:02,280 ya da bir ay ya da bir yıl, Çok yok 1244 01:01:02,280 --> 01:01:04,420 koduna bakmak için, hatırlamaya çalışıyorum, 1245 01:01:04,420 --> 01:01:06,630 ne bu kod ile yapmaya çalışıyordu? 1246 01:01:06,630 --> 01:01:07,770 >> Kendini söyledim. 1247 01:01:07,770 --> 01:01:11,660 Sen kendin için tarif ettik, Bazı meslektaşım, veya TA veya TF veya. 1248 01:01:11,660 --> 01:01:14,860 Ve böylece bu şimdi olacak Doğru ve tasarım iyi, 1249 01:01:14,860 --> 01:01:18,210 ve sonuçta tarzı iyi yanı. 1250 01:01:18,210 --> 01:01:19,990 Böylece akılda tutmak. 1251 01:01:19,990 --> 01:01:22,200 >> Yani diğer bir tane var şey burada yapacağım 1252 01:01:22,200 --> 01:01:28,240 şimdi tam olarak ne ortaya çıkarabilir başlık altında oluyor. 1253 01:01:28,240 --> 01:01:30,390 Yani bu özellik var C, ve diğer dillerde, 1254 01:01:30,390 --> 01:01:33,010 adı typecasting bu da dolaylı olarak 1255 01:01:33,010 --> 01:01:37,250 veya açıkça dönüştürmek için izin verir başka bir veri türü. 1256 01:01:37,250 --> 01:01:39,800 Biz mücadele ettik dizeleri ile çok bugün. 1257 01:01:39,800 --> 01:01:41,250 >> Ve dizeleri karakterlerdir. 1258 01:01:41,250 --> 01:01:44,910 Ama hafta çağırmak 0, karakterler nelerdir? 1259 01:01:44,910 --> 01:01:49,334 Karakterler sadece bir soyutlama olan Numaraları ondalık sayılar üstüne, 1260 01:01:49,334 --> 01:01:52,500 ve ondalık sayılar gerçekten sadece bir olan ikili sayılar üstüne soyutlama, 1261 01:01:52,500 --> 01:01:53,720 biz bunu tanımlandığı gibi. 1262 01:01:53,720 --> 01:01:55,540 >> Yani karakterler sayılardır. 1263 01:01:55,540 --> 01:01:58,410 Ve sayıları karakterler, sadece bağlama göre. 1264 01:01:58,410 --> 01:02:01,250 Ve o içeride çıkıyor Bir bilgisayar programı, 1265 01:02:01,250 --> 01:02:06,830 Eğer bakmak istiyorum nasıl belirleyebilirsiniz bu programın içinde bit? 1266 01:02:06,830 --> 01:02:10,400 >> Biz hafta 0 hatırlayın Sadece bu kodu Ascii, 1267 01:02:10,400 --> 01:02:11,620 sayılara haritalama mektupları. 1268 01:02:11,620 --> 01:02:13,660 Ve biz sermaye 65 olduğunu söyledi. 1269 01:02:13,660 --> 01:02:15,860 Sermaye B vb 66, ve. 1270 01:02:15,860 --> 01:02:20,500 >> Ve ihbar, biz aslında üzerinde karakter var Burada en üst sıra, C onları aramak gibi, 1271 01:02:20,500 --> 01:02:23,400 karakterleri ve ardından İkinci satırda ints. 1272 01:02:23,400 --> 01:02:28,180 Ve dönüştürebilirsiniz çıkıyor sorunsuz tipik olarak iki, arasındadır. 1273 01:02:28,180 --> 01:02:30,042 Ve biz yapmak istiyorsanız Bu kasıtlı, biz 1274 01:02:30,042 --> 01:02:31,750 mücadele etmek isteyebilirsiniz böyle bir şey. 1275 01:02:31,750 --> 01:02:33,590 >> Biz dönüştürmek isteyebilirsiniz büyük harf düşürmek için 1276 01:02:33,590 --> 01:02:35,330 dava veya harfe küçük harf. 1277 01:02:35,330 --> 01:02:38,000 Ve orada 's çıkıyor Burada aslında bir desen 1278 01:02:38,000 --> 01:02:39,900 Biz sadece bir an kucaklama olabilir. 1279 01:02:39,900 --> 01:02:44,120 Ama bir ilk bakalım açıkça bunu örnek. 1280 01:02:44,120 --> 01:02:46,340 >> Ben CS50 IDE geri gidiyorum. 1281 01:02:46,340 --> 01:02:50,640 Ben oluşturmak için gidiyorum Dosya Ascii 0.c. denilen 1282 01:02:50,640 --> 01:02:55,960 Ve ben devam edin ve eklemek için gidiyorum benim üstündeki standart io.h, int void main 1283 01:02:55,960 --> 01:02:57,370 Benim işlevi üstündeki. 1284 01:02:57,370 --> 01:03:02,700 Ve sonra ben sadece yapacağım ben eşit döngünün bir following--, 1285 01:03:02,700 --> 01:03:04,610 en, 65 diyelim. 1286 01:03:04,610 --> 01:03:10,460 >> Ve sonra ben daha az olacak alfabesinde 65 artı 26 harf. 1287 01:03:10,460 --> 01:03:12,640 Yani bilgisayarı izin vereceğim Orada benim için matematik yapmak. 1288 01:03:12,640 --> 01:03:15,100 Ve sonra bu döngü içinde, ne yazdırmak için gidiyorum? 1289 01:03:15,100 --> 01:03:19,230 >> % C, n'nin kullanılan karakterler% 'dir. 1290 01:03:19,230 --> 01:03:21,290 Ve şimdi iki değerden takmak istiyorum. 1291 01:03:21,290 --> 01:03:24,530 Ben geçici olarak soru koyduk sorusunu davet var işaretler. 1292 01:03:24,530 --> 01:03:29,940 >> Ben ileriye 65 yineleme yapmak istiyorum alfabenin 26 harfinin için, 1293 01:03:29,940 --> 01:03:35,190 her tekrarında yazdırarak o karakterin ayrılmaz eşdeğer. 1294 01:03:35,190 --> 01:03:38,299 Başka bir deyişle, ben istiyorum üzerinde 26 numaralar baskı yineleme 1295 01:03:38,299 --> 01:03:41,590 Ascii karakter nedir, mektup, ilgili sayı bu-- Ne 1296 01:03:41,590 --> 01:03:44,650 Gerçekten sadece yeniden Bu slayt grafik. 1297 01:03:44,650 --> 01:03:47,010 Peki bu soru işaretleri ne olmalıdır? 1298 01:03:47,010 --> 01:03:51,760 >> Eh, bu ikinci çıkıyor biri sadece değişken i olmalıdır. 1299 01:03:51,760 --> 01:03:53,860 Ben bir numara olarak görmek istiyoruz. 1300 01:03:53,860 --> 01:03:58,920 Ve orta argüman Burada, ben bilgisayar söyleyebilirim 1301 01:03:58,920 --> 01:04:03,470 bu tamsayı tedavisinde ben bir karakter olarak, böylece 1302 01:04:03,470 --> 01:04:05,880 Yüzde C için burada yerine 1303 01:04:05,880 --> 01:04:07,990 >> Diğer bir deyişle, eğer, İnsan programcı, biliyorum 1304 01:04:07,990 --> 01:04:09,865 Bunlar sadece rakamlar günün sonunda. 1305 01:04:09,865 --> 01:04:12,500 Ve ben 65 gerektiğini biliyorum Bazı karaktere harita. 1306 01:04:12,500 --> 01:04:15,310 Bu açık döküm ile, Bir parantez, 1307 01:04:15,310 --> 01:04:18,840 istediğiniz veri türünün ismi dönüştürmek ve bir kapalı parantez, 1308 01:04:18,840 --> 01:04:21,200 söyleyebilirim Bilgisayar, hey, bilgisayar, 1309 01:04:21,200 --> 01:04:24,130 Bir char bu tamsayı dönüştürmek. 1310 01:04:24,130 --> 01:04:26,250 >> Yani bu çalıştırdığınızda Program derleme sonra, 1311 01:04:26,250 --> 01:04:29,740 Diyelim ki Ascii 0 yapmak get-- bakalım. 1312 01:04:29,740 --> 01:04:33,020 Lanet olsun, ben burada yanlış ne yaptım? 1313 01:04:33,020 --> 01:04:35,884 bildirilmemiş tanımlayıcı kullanın tüm kasıtlı, doğru değil, 1314 01:04:35,884 --> 01:04:37,800 ama bakalım eğer biz değil Bu yoluyla sebebi. 1315 01:04:37,800 --> 01:04:41,220 >> Yani çizgi yüzden alamadım five-- Çok uzak vidalama önce. 1316 01:04:41,220 --> 01:04:42,140 Bu iyi. 1317 01:04:42,140 --> 01:04:46,560 Yani i hat 5 eşittir 65-- görüyorum. 1318 01:04:46,560 --> 01:04:50,130 Bu yüzden bazı aksine, C unutmayın Eğer önceden programlama dilleri varsa 1319 01:04:50,130 --> 01:04:52,190 deneyim, sahip Bilgisayarı anlatmak için, 1320 01:04:52,190 --> 01:04:55,040 Sıfırdan farklı olarak, ne değişkenin türünü öyle. 1321 01:04:55,040 --> 01:04:56,860 >> Ve ben burada bir anahtar sözcük unuttum. 1322 01:04:56,860 --> 01:04:59,200 beşinci satırda, ben i kullanmaya başladım. 1323 01:04:59,200 --> 01:05:01,560 Ama C söylemedim Ne veri türü olduğunu. 1324 01:05:01,560 --> 01:05:04,570 Yani burada gitmek için gidiyorum ve ah, bu bir tamsayı yapmak, demek. 1325 01:05:04,570 --> 01:05:07,050 >> Şimdi devam edin ve yeniden derlemek için gidiyorum. 1326 01:05:07,050 --> 01:05:08,080 Bu sabit. 1327 01:05:08,080 --> 01:05:12,660 Enter ./ascii0, bu tür bir serin. 1328 01:05:12,660 --> 01:05:15,360 Sadece o süper hızlı Bilgisayarı bu soru sormak 1329 01:05:15,360 --> 01:05:18,885 yerine bir slayt yukarı bakarak daha, o, A 65, her satırda bir tane basılmış 1330 01:05:18,885 --> 01:05:24,860 B I beri down-- 66, tüm yol , Harfler z bu 26 times-- yaptım 1331 01:05:24,860 --> 01:05:25,630 hangi 90 olduğunu. 1332 01:05:25,630 --> 01:05:27,790 Ve, aslında, hafif daha akıllı olur 1333 01:05:27,790 --> 01:05:31,030 Benim için not have been güvenmek bilgisayarda 26 ekleyin. 1334 01:05:31,030 --> 01:05:34,060 Ben sadece yapmış olabilir 90, hem de çok uzun 1335 01:05:34,060 --> 01:05:37,390 Ben iki kere aynı hatayı yapmayın olarak. 1336 01:05:37,390 --> 01:05:41,880 Ben üzerinden gitmek istiyorum z, sadece yukarı y üzerinden. 1337 01:05:41,880 --> 01:05:44,000 >> Yani açık bir döküm var. 1338 01:05:44,000 --> 01:05:47,860 Bu çıkıyor Hatta gerekli değildir. 1339 01:05:47,860 --> 01:05:52,480 Beni go ahead ve bu yeniden edelim derleyici ve yeniden çalıştırın Ascii 0. 1340 01:05:52,480 --> 01:05:54,940 Bu, C oldukça zeki olduğu ortaya çıktı. 1341 01:05:54,940 --> 01:05:57,150 >> Ve Printf, özellikle, Oldukça zeki. 1342 01:05:57,150 --> 01:06:01,260 Sadece iki kez i geçirirseniz Her iki tutucuları için, printf 1343 01:06:01,260 --> 01:06:04,510 , Gerçekleştirecek oh iyi ben tanıyorum Bana bir bir numara integer-- verdi, 1344 01:06:04,510 --> 01:06:06,380 65 ya da 90 ya da her neyse gibi. 1345 01:06:06,380 --> 01:06:10,170 Ama sen beni istiyorsun görüyoruz bir karakter gibi bu sayıyı biçimlendirmek. 1346 01:06:10,170 --> 01:06:16,460 Ve böylece Printf örtülü çevirebilirsiniz sizin için de bir char int. 1347 01:06:16,460 --> 01:06:19,360 Yani hiç bir sorun değil. 1348 01:06:19,360 --> 01:06:23,100 >> Ama bu nedenle denklik fark biz aslında yanı yapabilirsiniz. 1349 01:06:23,100 --> 01:06:26,520 Beni devam edin ve bir yapalım paha ASCII 1.c diğer versiyonu 1350 01:06:26,520 --> 01:06:31,800 Ve yerine yineleme tamsayılar, gerçekten aklını darbe olabilir 1351 01:06:31,800 --> 01:06:33,610 karakter üzerinden yineleme tarafından. 1352 01:06:33,610 --> 01:06:37,660 Bir karakter c sermaye A alırsa, ben go ahead ve bunu yapmak istiyorum, 1353 01:06:37,660 --> 01:06:41,740 Çok uzun C eşit veya daha az olduğu sermaye Z'ye Ve her tekrarında 1354 01:06:41,740 --> 01:06:45,690 Ben can, C artırmak istediğiniz şimdi burada benim printf hattında 1355 01:06:45,690 --> 01:06:51,320 diyelim ki, yüzde C yüzde tekrar, virgül C 1356 01:06:51,320 --> 01:06:57,200 >> Ve şimdi, diğer yönde gidebilir, açıkça karakteri döküm 1357 01:06:57,200 --> 01:06:58,500 Bir tamsayıya. 1358 01:06:58,500 --> 01:07:00,560 Yani, yine, bunu neden yapsın ki? 1359 01:07:00,560 --> 01:07:03,830 Bu sıralamak biraz garip karakter bakımından sayılır. 1360 01:07:03,830 --> 01:07:07,430 >> Ama ne anlarsanız başlık altında oluyor, 1361 01:07:07,430 --> 01:07:08,430 hiçbir sihirli gerçekten var. 1362 01:07:08,430 --> 01:07:13,060 Sadece hey, bilgisayar vermek, söylüyorsun Bana tip char C olarak adlandırılan bir değişken. 1363 01:07:13,060 --> 01:07:16,520 sermaye A. başlatılamıyor ve tek tırnak meseleyi dikkat edin. 1364 01:07:16,520 --> 01:07:19,580 >> C karakterler için gelen çağırmak Geçen hafta, tek tırnak kullanın. 1365 01:07:19,580 --> 01:07:23,720 dizeleri için, kelimeleri, ifadeler, çift tırnak kullanın. 1366 01:07:23,720 --> 01:07:27,210 Tamam, bilgisayar, bu yüzden, bu yapmaya devam karakter sürece daha az 1367 01:07:27,210 --> 01:07:28,050 veya z eşit. 1368 01:07:28,050 --> 01:07:32,640 Ve ben Ascii tablosundan biliyorum tüm Bu Ascii kodlarının bitişik bulunmaktadır. 1369 01:07:32,640 --> 01:07:33,400 >> boşluk var. 1370 01:07:33,400 --> 01:07:36,737 Bu yüzden, sadece A ile Z arasındaki bulunuyor bir numara her ayrılmış. 1371 01:07:36,737 --> 01:07:38,820 Ve sonra ben artırmak için Bir karakter, gerçekten istiyorsanız. 1372 01:07:38,820 --> 01:07:40,390 Günün sonunda, bu sadece bir sayıdır. 1373 01:07:40,390 --> 01:07:41,030 Bunu biliyorum. 1374 01:07:41,030 --> 01:07:43,670 Ben sadece ona 1 eklemek için tahmin edebilirsiniz. 1375 01:07:43,670 --> 01:07:46,940 >> Ve sonra bu kez, c yazdırmak, ve sonra ayrılmaz eşdeğer. 1376 01:07:46,940 --> 01:07:50,170 Ve hatta açık döküm gerekmez. 1377 01:07:50,170 --> 01:07:52,680 Ben printf ve sağlayabilirsiniz Bilgisayar rakam şeyler dışında, 1378 01:07:52,680 --> 01:07:57,300 böylece şimdi çalıştırırsanız , Ascii1./ascii1 yapmak 1379 01:07:57,300 --> 01:08:01,520 Ben de aynı şeyi olsun. 1380 01:08:01,520 --> 01:08:04,530 >> Yararsız bir program, kimse rağmen-- Aslında yazılım yazmak için gidiyor 1381 01:08:04,530 --> 01:08:07,549 anlamaya için, neydi A eşleyen numarası veya B, ya da Z? 1382 01:08:07,549 --> 01:08:10,340 Sadece Google'dan olacak, ya da konum online bakmak, ya da onu aramak 1383 01:08:10,340 --> 01:08:11,650 bir slayt veya benzeri üzerinde. 1384 01:08:11,650 --> 01:08:13,520 Peki bu gerçekten yararlı alır? 1385 01:08:13,520 --> 01:08:15,960 >> Eh, o konuşma slayt, orada olduğunu fark 1386 01:08:15,960 --> 01:08:20,890 harf arasında burada gerçek bir desen ve küçük tesadüfi değildi. 1387 01:08:20,890 --> 01:08:23,760 sermaye A 65 olduğuna dikkat edin. 1388 01:08:23,760 --> 01:08:25,830 Küçük harf 97 olduğunu. 1389 01:08:25,830 --> 01:08:29,649 Ve ne kadar uzakta düşük bir durumdur? 1390 01:08:29,649 --> 01:08:32,649 >> Yani 65 kaç adım uzaklıkta 97 dan? 1391 01:08:32,649 --> 01:08:36,210 Yani 97 eksi 65 32'dir. 1392 01:08:36,210 --> 01:08:37,910 Yani sermaye 65 olduğunu. 1393 01:08:37,910 --> 01:08:39,939 Bunun için 32 eklerseniz, Bir küçük harfe olsun. 1394 01:08:39,939 --> 01:08:43,729 Ve, eşdeğer, sen 32 çıkarma durumunda, Eğer sermaye geri almak A- B ile aynı 1395 01:08:43,729 --> 01:08:46,380 Biraz c küçük b, büyük C. 1396 01:08:46,380 --> 01:08:50,670 >> Bu boşlukların hepsi birbirinden 32 vardır. 1397 01:08:50,670 --> 01:08:54,450 Şimdi, bu bize izin gibi görünüyor Microsoft Word gibi bir şey yapmak, 1398 01:08:54,450 --> 01:08:57,729 veya Google Dokümanlar, nerede bulunuyor Her şeyi seçin ve ardından söyleyebiliriz, 1399 01:08:57,729 --> 01:09:00,520 küçük harfe tüm değiştirmek veya harfe tüm değiştirmek, 1400 01:09:00,520 --> 01:09:03,840 ya da sadece ilk sözcüğü değiştirmek harfe bir cümle. 1401 01:09:03,840 --> 01:09:07,390 Biz aslında bir şey yapabilirsiniz kendimizi böyle. 1402 01:09:07,390 --> 01:09:12,645 >> Beni devam edelim ve bir dosyayı kaydetmek Burada 0.c. yararlanmak denilen 1403 01:09:12,645 --> 01:09:15,770 Ve en go ahead ve bir program kamçılamak izin Bu tam olarak takip ettiği yok. 1404 01:09:15,770 --> 01:09:18,460 Yani CS50 kütüphane yer almaktadır. 1405 01:09:18,460 --> 01:09:21,430 Ve standart I / O bulunmaktadır. 1406 01:09:21,430 --> 01:09:22,787 >> Ve ben bu yakında geliyor biliyorum. 1407 01:09:22,787 --> 01:09:24,870 Yani koymak için gidiyorum Orada zaten string.h, 1408 01:09:24,870 --> 01:09:26,960 bu yüzden erişimi Stirling gibi şeyler, 1409 01:09:26,960 --> 01:09:29,620 ve daha sonra her zamanki gibi ana boşluğu int. 1410 01:09:29,620 --> 01:09:33,420 Ve sonra ben önde gidiyorum ve dizeleri yapmak dize almak alır, 1411 01:09:33,420 --> 01:09:35,032 sadece kullanıcıdan bir dize alır. 1412 01:09:35,032 --> 01:09:36,740 Ve sonra ben gidiyorum Benim sağlamlık denetimi yapmak. 1413 01:09:36,740 --> 01:09:40,510 dize eşit boş değilse, o zaman devam etmek güvenlidir. 1414 01:09:40,510 --> 01:09:42,000 Ve ne yapmak istiyorsunuz? 1415 01:09:42,000 --> 01:09:48,700 Ben, ben 0 eşittir gelen yineleme gidiyorum ve n s dize uzunluğu kadar. 1416 01:09:48,700 --> 01:09:51,899 >> Ve ben bu yüzden sürece bu yapacağım i Ayrıca artı N den az ve. 1417 01:09:51,899 --> 01:09:55,060 Şimdiye kadar, ben gerçekten sadece ben önce fikir alma. 1418 01:09:55,060 --> 01:09:57,010 Ve şimdi ben bir şube tanıtmak için gidiyorum. 1419 01:09:57,010 --> 01:09:59,635 >> Yani Scratch, geri düşünmek Biz yolun bu çatal vardı 1420 01:09:59,635 --> 01:10:05,110 ve geçen hafta C. ben gidiyorum Bu derseniz s i-inci karakter 1421 01:10:05,110 --> 01:10:09,250 bir ya da daha büyük davayı bir alt eşit, 1422 01:10:09,250 --> 01:10:13,340 ve-- Scratch içinde tam anlamıyla olur Ve fakat C size işareti say 1423 01:10:13,340 --> 01:10:19,830 ampersand-- ve s i-inci karakter , Daha az ya da durumda Z, alt eşittir 1424 01:10:19,830 --> 01:10:21,780 en ilginç şey yapalım. 1425 01:10:21,780 --> 01:10:27,020 en aslında bir çıktısını alalım hiçbir yeni satır ile karakter 1426 01:10:27,020 --> 01:10:31,760 Bu dize karakter, dizesinde i-inci karakter. 1427 01:10:31,760 --> 01:10:37,420 >> Ama devam edelim ve o 32 çıkarılır. 1428 01:10:37,420 --> 01:10:42,120 Else if karakter Biz arıyoruz bu dize 1429 01:10:42,120 --> 01:10:45,950 küçük a arasında değil ve küçük z, go ahead 1430 01:10:45,950 --> 01:10:48,610 ve sadece değişmeden dışarı basılmış. 1431 01:10:48,610 --> 01:10:50,840 Bu yüzden sunduk Bu parantez içi gösterim 1432 01:10:50,840 --> 01:10:53,560 Bizim dizeleri almak için dizesinde i-inci karakter. 1433 01:10:53,560 --> 01:10:57,520 >> Ben gibi bazı koşullu mantık ekledik Geçen haftaki hafta birinde Scratch 1434 01:10:57,520 --> 01:10:59,880 Ben sadece benim temel kullanıyorum ne anlaşılması 1435 01:10:59,880 --> 01:11:01,130 başlık altında oluyor. 1436 01:11:01,130 --> 01:11:04,190 s i-inci karakter mi Bir daha büyük ya da eşit? 1437 01:11:04,190 --> 01:11:08,290 Gibi, 97 ya da 98 veya 99 ve benzeri? 1438 01:11:08,290 --> 01:11:11,940 >> Ama aynı zamanda daha az ya da eşittir küçük z değeri? 1439 01:11:11,940 --> 01:11:16,210 Ve eğer öyleyse, bu hat ne demek? 1440 01:11:16,210 --> 01:11:20,250 14, bu tür Bütün fikir tohumu, 1441 01:11:20,250 --> 01:11:23,840 tarafından harfini büyük harf basitçe, ondan 32 çıkarılarak 1442 01:11:23,840 --> 01:11:29,370 Bu durumda, biliyorum, çünkü o her Benim numaralar nasıl temsil grafik. 1443 01:11:29,370 --> 01:11:33,925 O yüzden devam edin ve bu çalışmasına izin, 0.c yararlanmak derlemek sonra, 1444 01:11:33,925 --> 01:11:36,210 ve çalıştırma 0 yararlanmak. 1445 01:11:36,210 --> 01:11:40,300 >> gibi bir şey yazın en edelim tüm küçük harflerle Zamyla girin. 1446 01:11:40,300 --> 01:11:42,780 Ve şimdi hepimiz büyük harf Zamyla var. 1447 01:11:42,780 --> 01:11:45,050 Hepimiz küçük harflerle Rob yazın bakalım. 1448 01:11:45,050 --> 01:11:46,674 Hepimiz küçük harflerle Jason deneyelim. 1449 01:11:46,674 --> 01:11:48,590 Ve biz almaya devam zorla büyük harf. 1450 01:11:48,590 --> 01:11:50,960 Bir küçük hata var ben tür tahmin etmedi. 1451 01:11:50,960 --> 01:11:54,050 Yeni istemi biten olduğunu fark isimleri aynı hat üzerinde, 1452 01:11:54,050 --> 01:11:55,520 hangi biraz dağınık hissediyor. 1453 01:11:55,520 --> 01:11:59,170 >> Yani burada gidecek ve ben aslında bu programın sonunda 1454 01:11:59,170 --> 01:12:02,110 Bir satır karakteri çıktı. 1455 01:12:02,110 --> 01:12:03,160 Bu kadar. 1456 01:12:03,160 --> 01:12:06,120 printf ile gerek yok değişkenler veya biçim kodunda geçmektedir. 1457 01:12:06,120 --> 01:12:08,460 Kelimenin tam anlamıyla sadece yazdırabilirsiniz bir satır gibi bir şey. 1458 01:12:08,460 --> 01:12:13,529 >> O yüzden devam edin ve yapalım , Zamyla onu yeniden, tekrar 0 yararlanmak. 1459 01:12:13,529 --> 01:12:14,820 Ve şimdi biraz daha güzel olduğunu. 1460 01:12:14,820 --> 01:12:17,274 Şimdi, benim istemi kendi yeni hat üzerindedir. 1461 01:12:17,274 --> 01:12:18,440 Böylece tüm ince ve güzel. 1462 01:12:18,440 --> 01:12:19,910 Yani bu iyi bir örnek. 1463 01:12:19,910 --> 01:12:22,700 Ama ben bile mutlaka yok sabit kod 32 gerekir. 1464 01:12:22,700 --> 01:12:23,350 Biliyor musun? 1465 01:12:23,350 --> 01:12:26,350 Ben hiç yok açarsanız olabilir fark hatırlıyorum. 1466 01:12:26,350 --> 01:12:29,330 >> Ama biliyorum ki, eğer ben bir küçük harf var, 1467 01:12:29,330 --> 01:12:34,430 Ben esasen çıkarmak istiyorum ne olursa olsun mesafe çok az arasındadır 1468 01:12:34,430 --> 01:12:39,160 a ve büyük A çünkü varsayalım eğer Diğer tüm harfleri, aynı 1469 01:12:39,160 --> 01:12:41,045 Bu işi olmalıdır. 1470 01:12:41,045 --> 01:12:42,670 Ama bunu yerine, biliyor musun? 1471 01:12:42,670 --> 01:12:44,240 Yine bir başka yolu var. 1472 01:12:44,240 --> 01:12:48,090 >> Ben olsaydım o 1.c-- yararlanmak eğer ayrı bir dosya içine koymak. 1473 01:12:48,090 --> 01:12:51,030 aşağıdaki gibi en 2.c yararlanmak yapalım. 1474 01:12:51,030 --> 01:12:53,060 Gerçekten burada bu kadar temiz gidiyorum. 1475 01:12:53,060 --> 01:12:57,420 Ve bunun yerine hatta zorunda bilmek ya da bu düşük seviyede umurumda 1476 01:12:57,420 --> 01:13:01,090 uygulama detayları, yerine ben Sadece bir karakter yazdırmak için gidiyor, 1477 01:13:01,090 --> 01:13:04,610 alıntı unquote, yüzde C, ve sonra başka bir işlev çağrısı olduğunu 1478 01:13:04,610 --> 01:13:09,950 Bu bir argüman alır var, hangi Böyle bir karakterdir. 1479 01:13:09,950 --> 01:13:12,630 >> Orada, C çıkıyor Başka bir işlev çağrısı 1480 01:13:12,630 --> 01:13:15,550 Üst hangi adı olarak anlaşılacağı bir karakter alır 1481 01:13:15,550 --> 01:13:19,350 ve büyük harf yapar eşdeğeri ve sonra döner 1482 01:13:19,350 --> 01:13:21,410 böylece printf orada onu takabilirsiniz. 1483 01:13:21,410 --> 01:13:25,484 Ve bu yüzden olsa da, bunu yapmak için bir başka dosya tanıtmak gerekir. 1484 01:13:25,484 --> 01:13:28,400 başka bir dosya var dışarı o döner Sadece sınıftan bilemez, 1485 01:13:28,400 --> 01:13:33,020 Bir ders kitabı veya çevrimiçi ya da Referans olarak adlandırılan Cı type.h. 1486 01:13:33,020 --> 01:13:38,570 >> Benim başlığındaki arasında bu kadar ekleyebilirsiniz eğer öyleyse dosyaları ve şimdi yeniden derlemek Bu programı, 1487 01:13:38,570 --> 01:13:43,040 capitalize2 girin ./capitalize2. 1488 01:13:43,040 --> 01:13:46,690 en tüm Zamyla yazın edelim küçük, hala aynı şekilde çalışır. 1489 01:13:46,690 --> 01:13:48,040 Ama ne biliyor musunuz? 1490 01:13:48,040 --> 01:13:55,590 Üst için çıkıyor diğer bazı işlevselliğe sahiptir. 1491 01:13:55,590 --> 01:13:58,410 >> Ve beni bu tanıştırayım çeşit beceriksizce, burada komut 1492 01:13:58,410 --> 01:14:00,250 adlı, ancak kılavuzu adam. 1493 01:14:00,250 --> 01:14:03,960 Bu, çoğu Linux bilgisayarlar çıkıyor biz Linux işletim burada-- kullanıyor gibi 1494 01:14:03,960 --> 01:14:06,270 Bir komut var system-- diyor denilen adam, 1495 01:14:06,270 --> 01:14:08,530 Hey, bilgisayar, bana ver Bilgisayarın kılavuzu. 1496 01:14:08,530 --> 01:14:10,680 ne yapmak istiyorsun Bu kılavuzda bakmak? 1497 01:14:10,680 --> 01:14:13,840 >> Ben fonksiyonunu bakmak istiyorum Üst çağırdı girin. 1498 01:14:13,840 --> 01:14:16,070 Ve biraz şifreli var Bazen okumak için. 1499 01:14:16,070 --> 01:14:18,780 Ama biz konum fark Linux programcı kılavuzu. 1500 01:14:18,780 --> 01:14:19,530 Ve tüm metin var. 1501 01:14:19,530 --> 01:14:21,905 Ve orada olduğunu fark buraya fonksiyon adı. 1502 01:14:21,905 --> 01:14:25,030 O adında bir kuzeni vardır çıkıyor tersini yapar, hangi düşürmek için. 1503 01:14:25,030 --> 01:14:29,710 Ve Sinopsisten altında bildiri, bu kullanmak için , Tabiri caizse, man sayfasına işlev 1504 01:14:29,710 --> 01:14:32,220 Bana o I anlatıyor c type.h. içermesi gerekir 1505 01:14:32,220 --> 01:14:33,630 Ve ben uygulamadan biliyordu. 1506 01:14:33,630 --> 01:14:36,210 >> Burada, bana iki gösteriyor fonksiyon için prototipler, 1507 01:14:36,210 --> 01:14:39,070 böylece şimdiye kadar bu kullanmak istiyorsanız Ben onlar girdi olarak alır biliyorum, 1508 01:14:39,070 --> 01:14:40,652 ve onlar çıkış olarak dönmek neyi. 1509 01:14:40,652 --> 01:14:42,360 Ve sonra okursanız açıklama, görüyorum 1510 01:14:42,360 --> 01:14:44,820 daha ayrıntılı fonksiyon ne. 1511 01:14:44,820 --> 01:14:48,100 Ama daha önemlisi, eğer Ben, dönüş değeri altında bakmak 1512 01:14:48,100 --> 01:14:51,710 iade değer olduğunu söylüyor Dönüştürülen mektup bu, 1513 01:14:51,710 --> 01:14:57,880 ya da C, orijinal giriş, eğer Dönüşüm mümkün değildi. 1514 01:14:57,880 --> 01:15:01,992 >> Diğer bir deyişle, üst çalışacağız için harfe bir mektup dönüştürmek. 1515 01:15:01,992 --> 01:15:03,450 Ve eğer öyleyse, onu geri gidiyor. 1516 01:15:03,450 --> 01:15:07,010 Ama bazı nedenden dolayı bunu eğer belki de zaten büyük harf var, 1517 01:15:07,010 --> 01:15:09,550 belki bir ünlem işareti var ya da başka bir punctuation-- 1518 01:15:09,550 --> 01:15:12,200 Sadece gidiyor Orijinal C dönüş 1519 01:15:12,200 --> 01:15:17,340 Ben kodu yapmak anlamına gelir aşağıdaki gibi iyi tasarlanmış. 1520 01:15:17,340 --> 01:15:20,580 >> Ben tüm ihtiyacım yok Bu kod lanetlemek hatları. 1521 01:15:20,580 --> 01:15:22,610 Birkaç gün önce hatlarının tümü sadece vurgulanan can 1522 01:15:22,610 --> 01:15:28,700 Sadece bir basit içine çökmüş olması bu-- printf yüzde çizgi, 1523 01:15:28,700 --> 01:15:33,510 Üst S desteğinin i c. 1524 01:15:33,510 --> 01:15:36,090 Bu, bir olacaktır Daha iyi bir tasarım örneği. 1525 01:15:36,090 --> 01:15:40,040 >> Neden 7 veya 8 hatlarında uygulamak kod, ben sadece ne oldu 1526 01:15:40,040 --> 01:15:44,960 yerine daraltmak zaman, silinen Bu mantık ve karar verme tüm 1527 01:15:44,960 --> 01:15:49,620 Şimdi tek bir satırda, 13 içine Bir kütüphaneye dayanır function-- 1528 01:15:49,620 --> 01:15:53,430 Bir C ile geliyor fonksiyon, ama bu Bunu ne yapmak istediğinizi tam olarak yok. 1529 01:15:53,430 --> 01:15:55,295 Ve açıkçası, olsa bile o C ile gelmedi, 1530 01:15:55,295 --> 01:15:58,880 siz, kendiniz uygulamak negatif int olsun ile gördüm 1531 01:15:58,880 --> 01:16:01,700 ve aynı zamanda pozitif int geçen hafta olsun. 1532 01:16:01,700 --> 01:16:03,470 >> Bu kod artık çok daha okunabilir. 1533 01:16:03,470 --> 01:16:06,670 Ve, gerçekten, biz yukarı eğer, ne kadar daha kompakt bakmak 1534 01:16:06,670 --> 01:16:08,360 Benim program bu sürümüdür. 1535 01:16:08,360 --> 01:16:11,230 Bu, şimdi biraz üst ağır Tüm bu dahil olan. 1536 01:16:11,230 --> 01:16:14,380 şimdi ben duruyorum, çünkü Ama bu, Tamam programcılar omuzlarında 1537 01:16:14,380 --> 01:16:15,300 Benden önce. 1538 01:16:15,300 --> 01:16:18,440 Ve kim kim Gerçekten üst için uygulanan 1539 01:16:18,440 --> 01:16:21,470 çok gibi, bana bir iyilik yapanı uygulanan Stirling gerçekten 1540 01:16:21,470 --> 01:16:24,790 bir süre önce bana bir iyilik yaptın. 1541 01:16:24,790 --> 01:16:26,970 Ve şimdi biz bir var Daha iyi tasarım programı 1542 01:16:26,970 --> 01:16:31,680 Bu aynı mantık uygular. 1543 01:16:31,680 --> 01:16:35,580 >> stirling bahsetmişken, let Beni devam edip bunu. 1544 01:16:35,580 --> 01:16:38,320 Beni go ahead ve kaydetmek izin stirling.c olarak bu dosyayı. 1545 01:16:38,320 --> 01:16:43,255 Ve çıkıyor, biz geri soyma olabilir Oldukça sade bir şekilde şimdi başka bir katman. 1546 01:16:43,255 --> 01:16:45,630 Ben önde ve kamçı gidiyorum Ana başka bir programa kadar 1547 01:16:45,630 --> 01:16:49,759 Burada sade uygular yeniden o dize uzunluğu aşağıdaki gibi. 1548 01:16:49,759 --> 01:16:52,300 Yani burada bir kod satırı olduğunu Bana kullanıcıdan bir dize alır. 1549 01:16:52,300 --> 01:16:53,910 Biz tekrar bu kullanmaya devam. 1550 01:16:53,910 --> 01:16:58,900 Gidip kendime adında bir değişken vereyim Bir numara depolayan int türünde n. 1551 01:16:58,900 --> 01:17:02,490 >> Ve beni devam izin vermedi ve Aşağıdaki mantık yok. 1552 01:17:02,490 --> 01:17:15,610 s n-inci karakter yok iken eşit değil eğik 0, go ahead 1553 01:17:15,610 --> 01:17:17,930 ve n artırmak. 1554 01:17:17,930 --> 01:17:23,506 Ve sonra printf yüzde i n çıktı. 1555 01:17:23,506 --> 01:17:29,200 Ben, bu programın burada iddia dize uzunluğu çağırmadan, 1556 01:17:29,200 --> 01:17:31,150 Bir dizenin uzunluğu rakamlar. 1557 01:17:31,150 --> 01:17:34,600 >> Ve sihirli tamamen çizgi 8 içinde kapsüllenmiş 1558 01:17:34,600 --> 01:17:39,830 Burada yeni sözdizimi gibi göründüğünü ile, tek tırnak bu ters eğik çizgi 0. 1559 01:17:39,830 --> 01:17:41,360 Ama neden? 1560 01:17:41,360 --> 01:17:44,100 Eh, oldu düşünün Bütün bu süre devam. 1561 01:17:44,100 --> 01:17:47,990 >> Unutmadan önce Ve bir kenara, fark çok adam sayfalarına ek olarak 1562 01:17:47,990 --> 01:17:50,920 tipik bir gel CS50 IDE gibi Linux sistemi, 1563 01:17:50,920 --> 01:17:53,770 fark biz, dersin personeli, aynı zamanda var 1564 01:17:53,770 --> 01:17:56,030 Bir web sitesi versiyonunu yaptı denilen bu aynı düşüncenin 1565 01:17:56,030 --> 01:17:59,940 vardır reference.cs50.net, Bu aynı adam tüm sayfaları, 1566 01:17:59,940 --> 01:18:02,020 Aynı tüm dokümantasyon yanı sıra 1567 01:18:02,020 --> 01:18:05,730 izin veren üst kısmında küçük bir kutu Eğer adil tüm dönüştürmek 1568 01:18:05,730 --> 01:18:09,025 daha az rahat içine gizli bir dil modu, nerede, öğretim elemanları, 1569 01:18:09,025 --> 01:18:12,150 ile gitti ve basitleştirmek için çalıştık şeyleri tutmak için bazı dil 1570 01:18:12,150 --> 01:18:14,830 fikirler üzerinde duruldu değil, technicalities bazılarıdır. 1571 01:18:14,830 --> 01:18:20,070 Yani akılda tutmak, reference.cs50.net de başka bir kaynak olarak. 1572 01:18:20,070 --> 01:18:23,800 >> Ama neden dize uzunluğu işi yapar Ben bir an önce önerilen yolu? 1573 01:18:23,800 --> 01:18:25,160 İşte Zamyla adı yine var. 1574 01:18:25,160 --> 01:18:27,690 Ve burada Zamyla adı var Ben yapmaya devam olarak, kutulu, 1575 01:18:27,690 --> 01:18:31,360 o olmanın bir resmini, Gerçekten, karakterler sadece bir dizi. 1576 01:18:31,360 --> 01:18:34,260 Ancak Zamyla yok Bir programda izolasyon. 1577 01:18:34,260 --> 01:18:37,420 >> yazıp bir program çalıştırdığınızda, Eğer Mac ya da PC kullanıyorsanız 1578 01:18:37,420 --> 01:18:40,010 bellek veya RAM olarak tabiri caizse. 1579 01:18:40,010 --> 01:18:42,620 Ve aklınıza gelebilecek sahip olarak bilgisayar 1580 01:18:42,620 --> 01:18:44,730 bellek gigabayt bugünlerde çok. 1581 01:18:44,730 --> 01:18:47,700 Ve bir konser, milyarlarca demektir bayt böylece milyarlarca. 1582 01:18:47,700 --> 01:18:48,910 >> Ama zaman içinde geri saralım. 1583 01:18:48,910 --> 01:18:51,530 Ve biz kullanıyoruz varsayalım Gerçekten eski bilgisayar olduğunu 1584 01:18:51,530 --> 01:18:55,150 Sadece bellek 32 bayt vardır. 1585 01:18:55,150 --> 01:18:59,310 I could, benim bilgisayar ekranında, aşağıdaki gibi sadece bu çizin. 1586 01:18:59,310 --> 01:19:05,240 >> Ben sadece söyleyebiliriz benim Bilgisayar bu belleğin hepsi var. 1587 01:19:05,240 --> 01:19:08,830 Ve eğer bu, bellek sopa gibi Geçen zaman bizim resmi çağırmak. 1588 01:19:08,830 --> 01:19:11,670 Ve ben sadece bölmek eğer Yeterince zamanlarda bu, 1589 01:19:11,670 --> 01:19:15,040 Ben 32 bayt olduğunu iddia Ekranda bellek. 1590 01:19:15,040 --> 01:19:18,239 >> Şimdi, gerçekte, Ben sadece Burada bu ekranda şimdiye kadar çizin. 1591 01:19:18,239 --> 01:19:20,280 Bu yüzden, go ahead için gidiyorum ve sadece kongre tarafından, 1592 01:19:20,280 --> 01:19:24,050 Bir benim bilgisayarınızın belleğini çizmek Izgara değil, sadece bir düz çizgi. 1593 01:19:24,050 --> 01:19:28,190 Özellikle, şimdi iddia Bu ızgara, bu 8 ile 4 ızgara, 1594 01:19:28,190 --> 01:19:31,800 Sadece 32 byte temsil benim Mac kullanılabilir bellek, 1595 01:19:31,800 --> 01:19:33,030 ya da benim PC mevcuttur. 1596 01:19:33,030 --> 01:19:34,780 Ve onlar sarma konum üzerinde iki satır, sadece 1597 01:19:34,780 --> 01:19:38,030 ekranda daha fazla uyuyor çünkü. 1598 01:19:38,030 --> 01:19:40,800 Ama bu ilk bayt olduğunu. 1599 01:19:40,800 --> 01:19:41,990 Bu ikinci bayt olduğunu. 1600 01:19:41,990 --> 01:19:43,300 Bu üçüncü bayt olduğunu. 1601 01:19:43,300 --> 01:19:45,310 >> Ve bu 32 bayt olduğunu. 1602 01:19:45,310 --> 01:19:52,910 Ya da, bir bilgisayar gibi düşünüyorsanız bilim adamı, bu bayt 0, 1, 2, 3, 31 olduğunu. 1603 01:19:52,910 --> 01:19:55,950 Yani, eğer 31 0 var 0 olarak saymaya başlar. 1604 01:19:55,950 --> 01:19:59,830 >> Biz programı kullanmak Yani eğer çağrıları dize olsun, 1605 01:19:59,830 --> 01:20:05,280 ve biz insana bir dize olsun Ben Zamyla denilen yaptım gibi Z-A-M-Y-L-A, 1606 01:20:05,280 --> 01:20:09,430 dünya nasıl yapar içinde Bilgisayar tutmak parça hangi byte arasında 1607 01:20:09,430 --> 01:20:12,230 belleğin hangi yığın, hangi dize aittir? 1608 01:20:12,230 --> 01:20:16,270 Diğer bir deyişle, biz devam eğer bilgisayara başka bir ad yazın 1609 01:20:16,270 --> 01:20:19,890 Bu Andi gibi, çağıran dizge ikinci kez olsun, 1610 01:20:19,890 --> 01:20:23,030 A-N-D-I sonuna kadar sahip bilgisayarın bellek de. 1611 01:20:23,030 --> 01:20:23,850 Ama nasıl? 1612 01:20:23,850 --> 01:20:29,700 >> Eh, o altından çıkıyor dizeleri saklarken kaput ne C yapar 1613 01:20:29,700 --> 01:20:35,080 İnsan tip, ya da bu o, başka bir kaynaktan geliyor 1614 01:20:35,080 --> 01:20:39,190 Bunların sonu ile delineates Özel bir character-- ters eğik çizgi 1615 01:20:39,190 --> 01:20:44,750 Sadece özel bir yoludur 0, bir satırda 80 bit söyleyerek. 1616 01:20:44,750 --> 01:20:47,950 >> Yani A- bu sayı 97 hatırlama olduğunu. 1617 01:20:47,950 --> 01:20:51,770 8 bit yüzden bazı desen ondalık sayı 97 eder. 1618 01:20:51,770 --> 01:20:58,070 Bu ters eğik çizgi 0 anlamıyla sayıdır 0, diğer adıyla nul, N-U-L, daha önce farklı olarak, 1619 01:20:58,070 --> 01:20:59,630 N-U-L-L, biz konuştuk. 1620 01:20:59,630 --> 01:21:05,700 Ama şimdi, sadece bu olduğunu biliyoruz Ters eğik çizgi 0 Arka arkaya sadece 80 bittir. 1621 01:21:05,700 --> 01:21:09,810 >> Ve bu sadece bu çizgi sola şey diyor kum 1622 01:21:09,810 --> 01:21:12,610 bir dize ya da bir veri türüne aittir. 1623 01:21:12,610 --> 01:21:15,480 sağa ve bir şey Başka bir şey aittir. 1624 01:21:15,480 --> 01:21:17,440 Andi adı, bu arada, hangi sadece görsel 1625 01:21:17,440 --> 01:21:21,310 diğer satıra üzerine sarmak için olur, ama bu, sadece estetik bir detay var 1626 01:21:21,310 --> 01:21:23,990 Benzer nul sonlandırılır. 1627 01:21:23,990 --> 01:21:29,290 >> Bu bir A-N-D-I karakter dizesidir artı beşinci gizli karakter, 1628 01:21:29,290 --> 01:21:33,560 Sadece demarcates tüm 0 bit, yanı sıra Andi adının sonu. 1629 01:21:33,560 --> 01:21:37,120 Ve biz diyoruz eğer dize üçüncü kez olsun bilgisayar gibi bir dize almak için 1630 01:21:37,120 --> 01:21:44,210 Maria, E-A-R-I-A, benzer Maria olduğu adı nul ters eğik çizgi 0 ile sonlandırıldı. 1631 01:21:44,210 --> 01:21:47,170 >> Bu temelden farklıdır nasıl bir bilgisayar zamanki 1632 01:21:47,170 --> 01:21:51,850 Bir tamsayı ya da bir şamandıra veya diğer saklamak hala veri tipleri, hatırlama, çünkü 1633 01:21:51,850 --> 01:21:57,420 bir tamsayıdır, genellikle 32 bit ya da 4 bayt, ya da belki de 64 bit, 1634 01:21:57,420 --> 01:21:59,100 ya da sekiz bayt. 1635 01:21:59,100 --> 01:22:02,620 Ancak bir bilgisayar çok ilkel Bir programlama dilinde 1636 01:22:02,620 --> 01:22:05,550 sabit bir sayıda hood-- altında bayt 1637 01:22:05,550 --> 01:22:08,100 belki 1, belki 2, belki 4, belki 8. 1638 01:22:08,100 --> 01:22:13,250 >> Ama dizeleri, tasarım gereği, bir var karakter dinamik sayısı. 1639 01:22:13,250 --> 01:22:16,980 Sen gelene kadar, önceden bilmiyorum Z-A-E-Y-L-A, insan tip 1640 01:22:16,980 --> 01:22:21,400 veya M-A-R-I-A veya A-N-D-I. Bilmiyorsun kaç kez kullanıcı isabet edecek 1641 01:22:21,400 --> 01:22:22,070 klavye. 1642 01:22:22,070 --> 01:22:26,490 Bu nedenle, nasıl olduğunu bilmiyorum önceden kaç karakter 1643 01:22:26,490 --> 01:22:27,540 İhtiyacınız olacak. 1644 01:22:27,540 --> 01:22:31,840 >> Ve böylece C sadece tür bir gibi yaprakları kaputun altında gizli kırıntı 1645 01:22:31,840 --> 01:22:32,960 dizenin sonunda. 1646 01:22:32,960 --> 01:22:39,280 bellekte Z-A-E-Y-L-A depoladıktan sonra, o da sadece eşdeğer koyar 1647 01:22:39,280 --> 01:22:40,210 Bir dönem. 1648 01:22:40,210 --> 01:22:45,060 Bir cümlenin sonunda, o kadar, 80 bit koyar 1649 01:22:45,060 --> 01:22:49,120 nerede hatırlamak Zamyla başlar ve biter. 1650 01:22:49,120 --> 01:22:51,490 >> Yani bağlantı nedir, Daha sonra, bu program? 1651 01:22:51,490 --> 01:22:55,190 Burada Bu program, Stirling, bir mekanizma basitçe 1652 01:22:55,190 --> 01:22:57,970 bir dize almak için kullanıcıdan, çizgi 6. 1653 01:22:57,970 --> 01:23:01,160 Hat 7, bir değişken bildirmek n denir ve 0'a eşit olarak ayarlayın. 1654 01:23:01,160 --> 01:23:08,680 >> Ve sonra 8. satırda, ben sadece sordum Soru, n'inci karakter yapar iken 1655 01:23:08,680 --> 01:23:12,120 eşit değil bütün 0 bits-- diğer bir deyişle, yok 1656 01:23:12,120 --> 01:23:14,500 eşit bu özel karakter, eğik 0, hangi 1657 01:23:14,500 --> 01:23:18,470 Sadece bu özel nul character-- oldu devam edin ve sadece n artırmak. 1658 01:23:18,470 --> 01:23:21,460 >> Ve bunu yaparken tutmak ve korumak bunu yaparken, ve bunu yapmaya devam. 1659 01:23:21,460 --> 01:23:23,430 Ve bu yüzden bile olsa biz i kullandım geçmiş, 1660 01:23:23,430 --> 01:23:25,181 mükemmel para cezası anlam n kullanımı, 1661 01:23:25,181 --> 01:23:27,430 Sadece etmeye çalışıyorsanız kasten bu kez saymak, 1662 01:23:27,430 --> 01:23:28,720 ve sadece n onu aramak istiyorum. 1663 01:23:28,720 --> 01:23:34,720 Yani bu sadece soruyu soruyor, tüm 0s s n-inci karakter? 1664 01:23:34,720 --> 01:23:38,470 Değilse, bir sonraki görünüm bakmak, Sonraki bakmak sonraki bakmak, 1665 01:23:38,470 --> 01:23:39,460 Bir sonraki bekliyoruz. 1666 01:23:39,460 --> 01:23:45,540 >> Ama en kısa sürede ters eğik çizgi 0 gördüğünüz gibi, 11-- ile bu loop-- hattı 9 durur. 1667 01:23:45,540 --> 01:23:49,640 Sen, while döngüsünün patlak Bu değişken n içinde bırakarak 1668 01:23:49,640 --> 01:23:54,530 her bir toplam sayım Gördüğün dizesindeki karakter, 1669 01:23:54,530 --> 01:23:55,660 böylece dışarı baskı. 1670 01:23:55,660 --> 01:23:56,760 Yani bu deneyelim. 1671 01:23:56,760 --> 01:23:59,500 >> olmadan, beni devam edelim ve stirling fonksiyonunu kullanarak, 1672 01:23:59,500 --> 01:24:04,240 ama sadece benim kendi Homegrown sürümünü kullanarak Burada stirling denilen, beni önde gitmesine izin 1673 01:24:04,240 --> 01:24:07,700 bir şey ve çalıştırmak stirling, tip Ben önceden biliyorum Zamyla gibi 1674 01:24:07,700 --> 01:24:08,670 Altı karakterdir. 1675 01:24:08,670 --> 01:24:10,080 eğer çalışırsa görelim. 1676 01:24:10,080 --> 01:24:10,920 Gerçekten de altı var. 1677 01:24:10,920 --> 01:24:15,257 Kullanıcı Rob ile deneyelim, üç karakter, Üç karakter de ve benzeri. 1678 01:24:15,257 --> 01:24:17,340 Böylece gidiyor hepsi bu başlık altında üzerinde. 1679 01:24:17,340 --> 01:24:19,548 Ve bağlantıları fark Daha sonra, ilk hafta ile 1680 01:24:19,548 --> 01:24:22,370 sınıf, konuştuğumuz nerede soyutlama gibi bir şey, 1681 01:24:22,370 --> 01:24:26,960 hangi fikirlerin sadece bu katman, ya da karmaşıklığı, temel ilkeler üstünde. 1682 01:24:26,960 --> 01:24:30,710 Burada, tür arıyoruz stirling kaputunun altında, 1683 01:24:30,710 --> 01:24:33,510 bu yüzden anlamaya, konuşmak, nasıl uygulanacak ki? 1684 01:24:33,510 --> 01:24:35,232 >> Ve biz kendimizi yeniden uygulamak. 1685 01:24:35,232 --> 01:24:37,440 Ama biz asla gidiyoruz için stirling yeniden uygulamak. 1686 01:24:37,440 --> 01:24:39,780 Biz sadece gidiyoruz için Stirling kullanımı 1687 01:24:39,780 --> 01:24:42,100 aslında bazı dizeleri uzunluğu elde etmek için. 1688 01:24:42,100 --> 01:24:44,200 >> Ama büyü var Kaputun altında. 1689 01:24:44,200 --> 01:24:46,716 Eğer biliyorsanız altında olduğunu Kaput, bir dize 1690 01:24:46,716 --> 01:24:48,090 karakter bir dizisidir. 1691 01:24:48,090 --> 01:24:51,090 Ve karakter o dizi tüm sayısal ele alınabileceği 1692 01:24:51,090 --> 01:24:53,330 dirsek 0, dirsek ile 1, dirsek 2 ve 1693 01:24:53,330 --> 01:24:57,420 Bir dizenin sonunda bir olduğunu biliyoruz özel karakter, sen anlamaya 1694 01:24:57,420 --> 01:25:01,710 Bir çoğu şey yapmak nasıl Program, tüm çünkü aşağı kaynar 1695 01:25:01,710 --> 01:25:03,400 okuma ve hafıza yazıyor. 1696 01:25:03,400 --> 01:25:06,130 Yani değişen ve seyir olduğunu belleğin ya da hareketli şeyleri 1697 01:25:06,130 --> 01:25:10,940 etrafında bellekte, baskı şeyler vb ekranı ve üzerinde. 1698 01:25:10,940 --> 01:25:14,800 >> Yani şimdi bu yeni keşfedilen kullanmasına izin aslında dizeleri ne anlama 1699 01:25:14,800 --> 01:25:17,910 Kaputun altında, ve bir başka katman geri soyma 1700 01:25:17,910 --> 01:25:20,080 Şimdiye kadar biz ettik kadar o tamamen görmezden. 1701 01:25:20,080 --> 01:25:22,650 Özellikle, herhangi bir zamanda Biz bir program uyguladık, 1702 01:25:22,650 --> 01:25:25,930 Biz bu kod satırını yaşadım üst kısmına yakın ana ilan. 1703 01:25:25,930 --> 01:25:27,810 Ve biz int main boşluğu belirttiniz. 1704 01:25:27,810 --> 01:25:31,240 >> Ve parantez içinde o boşluk sahip olduğu tüm bu kez söz edilmiştir o ana 1705 01:25:31,240 --> 01:25:33,440 kendisi herhangi bir argüman almaz. 1706 01:25:33,440 --> 01:25:36,210 Ana olduğuna dair herhangi bir giriş kullanıcıdan almak için gidiyoruz 1707 01:25:36,210 --> 01:25:39,020 diğer bazı gelmek zorunda mekanizma gibi olsun int, 1708 01:25:39,020 --> 01:25:42,040 ya da float almak, ya da dize olsun, ya da başka bir fonksiyon. 1709 01:25:42,040 --> 01:25:44,710 Ama çıkıyor Bir programı yazarken, 1710 01:25:44,710 --> 01:25:47,690 aslında belirtebilirsiniz bu program taahhüt eder 1711 01:25:47,690 --> 01:25:51,730 insandan girişleri almak Komut satırından kendisi. 1712 01:25:51,730 --> 01:25:56,310 >> Diğer bir deyişle, daha da Böylece kadar Merhaba ./hello sadece yürütüyor var 1713 01:25:56,310 --> 01:26:00,312 ya da benzeri programlar, her Kullandığımız oldum diğer programlar, 1714 01:26:00,312 --> 01:26:02,770 Biz kendimizi yazmadım o var, öyle görünüyor ki, alarak 1715 01:26:02,770 --> 01:26:05,210 Komut satırı arguments-- make gibi şeyler. 1716 01:26:05,210 --> 01:26:07,450 Sen yapmak gibi bir şey söylemek, ve daha sonra, bir ikinci kelime. 1717 01:26:07,450 --> 01:26:10,950 Yoksa çınlama, daha sonra tınlamak ve söylemek İkinci kelime, bir dosyanın adı. 1718 01:26:10,950 --> 01:26:14,410 >> gibi olabilir, hatta RM ya da CP görülen ya da zaten kullanmış 1719 01:26:14,410 --> 01:26:15,880 kaldırmak veya dosyaları kopyalamak için. 1720 01:26:15,880 --> 01:26:18,920 Bunların hepsi sözde almak Komut satırı arguments-- 1721 01:26:18,920 --> 01:26:21,130 Terminal isteminde ek kelimeler. 1722 01:26:21,130 --> 01:26:23,260 Ama bugüne kadar, biz kendimizi olmadı 1723 01:26:23,260 --> 01:26:27,080 girdi alarak bu lüks Kullanıcı o aslında çalışır 1724 01:26:27,080 --> 01:26:29,120 Komut satırında Programın kendisi. 1725 01:26:29,120 --> 01:26:33,710 >> Ama biz tarafından yeniden beyan yapabilirsiniz Ana sahip olarak, ileriye doğru değil hareketli 1726 01:26:33,710 --> 01:26:36,750 parantez içinde geçersiz, fakat bu iki argüman 1727 01:26:36,750 --> 01:26:40,600 ilk olarak bir tamsayı instead--, ve ikinci bir şey 1728 01:26:40,600 --> 01:26:44,170 dediğimiz için gidiyoruz yeni bir şey bir dizi, ruhu içinde benzer bir şey 1729 01:26:44,170 --> 01:26:49,220 Biz bir liste olarak Scratch gördüklerim, ama dizelerden oluşan bir dizi, yakında göreceğimiz gibi. 1730 01:26:49,220 --> 01:26:51,790 Ama bu görelim Örneğin yolu, önce biz 1731 01:26:51,790 --> 01:26:53,690 Bu tam olarak ne demek ayırt eder. 1732 01:26:53,690 --> 01:26:56,520 >> Ben CS50 IDE gitmek Yani eğer Burada, ben önde gittin 1733 01:26:56,520 --> 01:27:01,840 ve adlı bir dosyaya ilan Aşağıdaki şablon argv0.c. 1734 01:27:01,840 --> 01:27:04,120 Ve tek şey fark o kadar farklı 1735 01:27:04,120 --> 01:27:08,570 Ben int geçersiz değiştirdik ki argc dize yakın, açık dirsek argv 1736 01:27:08,570 --> 01:27:09,070 braket. 1737 01:27:09,070 --> 01:27:11,730 Ve orada, şimdi fark Bu parantez içi bir şey yok. 1738 01:27:11,730 --> 01:27:12,620 >> Hiçbir numara var. 1739 01:27:12,620 --> 01:27:15,070 Ve, hayır var ya N ya da başka herhangi bir mektup. 1740 01:27:15,070 --> 01:27:17,010 Ben sadece kullanıyorum Şimdilik köşeli parantez, 1741 01:27:17,010 --> 01:27:19,510 nedenlerden dolayı biz geleceğiz geri sadece bir an. 1742 01:27:19,510 --> 01:27:21,330 >> Ve şimdi ne yapacağım budur. 1743 01:27:21,330 --> 01:27:26,680 argc eşitse eşittir 2-- ve o eşittir eşittir hatırlamak 1744 01:27:26,680 --> 01:27:30,040 karşılaştıran eşitlik operatörüdür eşitlik için sol ve sağ. 1745 01:27:30,040 --> 01:27:31,790 Bu atama değil operatör, 1746 01:27:31,790 --> 01:27:36,510 kopya anlamına tek eşittir işareti, sağ taraftan bazı değer sola. 1747 01:27:36,510 --> 01:27:42,840 >> argc eşittir 2 eşitse, ben istiyorum diyelim ki, printf, merhaba, yüzdeleri, yeni satır, 1748 01:27:42,840 --> 01:27:47,340 ve daha sonra kırmızı alt çizgi takın ve burada yeni nedenlerle trick-- argv tutucusu 1, 1749 01:27:47,340 --> 01:27:48,840 biz geri bir anda geleceğiz. 1750 01:27:48,840 --> 01:27:52,110 argc yapmazsa başka 2 eşit, biliyor musun? 1751 01:27:52,110 --> 01:27:57,400 Her zamanki, baskı gibi, hemen önünüzde gidelim ve hiçbir değişiklik ile merhaba dünya. 1752 01:27:57,400 --> 01:28:02,710 >> Öyle görünüyor ki argc, hangi eğer , Argüman sayısı açılımı 2 eşittir 1753 01:28:02,710 --> 01:28:04,740 Ben yazdırmak için gidiyorum merhaba bir şey ya da diğer. 1754 01:28:04,740 --> 01:28:07,560 Aksi halde, varsayılan olarak, ben merhaba dünya yazdırmak için gidiyor. 1755 01:28:07,560 --> 01:28:08,770 Peki bu ne anlama geliyor? 1756 01:28:08,770 --> 01:28:15,550 >> Peki, beni go ahead ve kaydetmek izin Bu dosya, ve sonra argv0 yapabilirim, 1757 01:28:15,550 --> 01:28:18,940 ve sonra ./argv0 girin. 1758 01:28:18,940 --> 01:28:20,300 Ve dünya merhaba diyor. 1759 01:28:20,300 --> 01:28:21,260 Şimdi, neden? 1760 01:28:21,260 --> 01:28:24,730 >> Eh, istediğiniz zaman çıkıyor Komut satırında bir programı çalıştırmak, 1761 01:28:24,730 --> 01:28:29,570 ne yaparız doldururken genellikle bir argüman vektör diyoruz. 1762 01:28:29,570 --> 01:28:33,100 otomatik olarak diğer bir deyişle, bilgisayar, işletim sistemi, 1763 01:28:33,100 --> 01:28:38,340 Programınıza teslim edecek kendisinin tüm kelime listesi 1764 01:28:38,340 --> 01:28:40,850 İnsan olarak yazdığınız durumda istemi, sen 1765 01:28:40,850 --> 01:28:43,790 programcı yapmak istiyorum Bu bilgilerle bir şey. 1766 01:28:43,790 --> 01:28:48,540 Bu durumda, tek kelime Ben isteminde yazdığınız ./argv0 olduğunu. 1767 01:28:48,540 --> 01:28:55,420 >> Ve böylece argüman sayısı olduğunu Benim programa geçirilen sadece bir tanesidir. 1768 01:28:55,420 --> 01:28:58,880 Diğer bir deyişle, bir argüman Aksi takdirde argc olarak bilinen, saymak 1769 01:28:58,880 --> 01:29:00,970 Burada bir tamsayı olarak, sadece bir tanesidir. 1770 01:29:00,970 --> 01:29:03,000 Bir, tabii ki, iki eşit değildir. 1771 01:29:03,000 --> 01:29:05,980 Ve böylece bu merhaba, dünyayı yazdırır budur. 1772 01:29:05,980 --> 01:29:08,170 >> Ama bana bu bir yere atalım. 1773 01:29:08,170 --> 01:29:09,930 , Dememi argv0 olsun. 1774 01:29:09,930 --> 01:29:12,740 Ve o zaman nasıl Maria hakkında? 1775 01:29:12,740 --> 01:29:14,990 Ve sonra Enter tuşuna basın. 1776 01:29:14,990 --> 01:29:18,020 >> Ve sihirli burada ne dikkat edin. 1777 01:29:18,020 --> 01:29:22,640 Şimdi, bunun yerine merhaba dünya, ben Bu programın davranışı değişti 1778 01:29:22,640 --> 01:29:26,310 olsun değil girişi alarak dize veya başka bir fonksiyon, 1779 01:29:26,310 --> 01:29:30,570 ancak, görünüşe göre, benim komut kendisi, ben aslen de yazdıklarınızı. 1780 01:29:30,570 --> 01:29:35,720 Ve ben yine bu oyunu oynayabilir Örneğin, Stelios için değiştirilmesi. 1781 01:29:35,720 --> 01:29:38,400 >> Ve şimdi yine başka bir isim bakın. 1782 01:29:38,400 --> 01:29:40,540 Ve burada, ben Andi diyebilirsiniz. 1783 01:29:40,540 --> 01:29:42,137 Ve ben Zamyla diyebilirsiniz. 1784 01:29:42,137 --> 01:29:45,220 Ve biz, tüm gün boyunca bu oyunu oynayabilir Sadece farklı değerler tıkanmasında 1785 01:29:45,220 --> 01:29:49,550 Çok uzun ben tam sağlamak gibi isteminde iki kelime, 1786 01:29:49,550 --> 01:29:52,260 argc, benim argüman saymak böyle, 2 'dir. 1787 01:29:52,260 --> 01:29:57,240 >> Ben isim takılı olduğunu görüyor musun printf, burada bu durum başına? 1788 01:29:57,240 --> 01:30:00,550 Bu yüzden şimdi var gibi ifade yeteneği 1789 01:30:00,550 --> 01:30:04,410 Başka bir mekanizma girdi alarak, Sözde komut satırından, 1790 01:30:04,410 --> 01:30:07,000 yerine beklemek zorunda daha kullanıcı programı çalıştırır kadar 1791 01:30:07,000 --> 01:30:10,220 ve sonra ona istemi olsun dize gibi bir şey kullanarak. 1792 01:30:10,220 --> 01:30:11,230 >> Peki bu nedir? 1793 01:30:11,230 --> 01:30:15,010 Argc, yine sadece bir tam sayı olduğu, Kelimelerden-- arguments-- sayısı 1794 01:30:15,010 --> 01:30:18,540 Şuna sağlanan kullanıcı istemi terminal penceresinde, 1795 01:30:18,540 --> 01:30:20,110 Programın adını da dahil olmak üzere. 1796 01:30:20,110 --> 01:30:23,340 Yani ./argv0 etkili olduğu Programın adı, 1797 01:30:23,340 --> 01:30:24,520 ya da nasıl programını çalıştırın. 1798 01:30:24,520 --> 01:30:25,810 >> Bu bir kelime olarak sayar. 1799 01:30:25,810 --> 01:30:27,080 Yani argc 1 olacaktır. 1800 01:30:27,080 --> 01:30:29,750 Ama Stelios yazmak, ya da Andi veya Zamyla veya Maria 1801 01:30:29,750 --> 01:30:31,660 Bu argüman sayısı iki olduğu anlamına gelir. 1802 01:30:31,660 --> 01:30:33,910 Ve şimdi geçirilen iki kelime var. 1803 01:30:33,910 --> 01:30:36,070 >> Ve ihbar, biz bu mantığı devam edebilirsiniz. 1804 01:30:36,070 --> 01:30:39,050 Aslında diyorsan Zamyla Chan gibi bir şey, 1805 01:30:39,050 --> 01:30:42,200 Bir tam adı, böylece geçen toplam üç argüman, 1806 01:30:42,200 --> 01:30:47,410 şimdi varsayılan yine diyor, Elbette, 3 2 eşit değil çünkü. 1807 01:30:47,410 --> 01:30:54,080 >> Ve böylece bu yolla, ben var argv bu yeni argüman üzerinden erişim 1808 01:30:54,080 --> 01:30:56,080 Biz teknik ebil Bizim istediğimiz şey diyoruz. 1809 01:30:56,080 --> 01:30:58,940 Ama Kongre tarafından, bu kadar sırasıyla argv ve argc. 1810 01:30:58,940 --> 01:31:04,470 Argv argüman vektör, tür Bir programlama için bir eş anlamlısı 1811 01:31:04,470 --> 01:31:07,140 C özelliği bir dizi denir. 1812 01:31:07,140 --> 01:31:14,410 >> Bir dizi benzer değerler listesi geri, geri, geri, geri. 1813 01:31:14,410 --> 01:31:17,810 Diğer bir deyişle, eğer bir doğru burada olduğunu RAM, bir sonraki, ona hemen yanında 1814 01:31:17,810 --> 01:31:18,800 ve hemen yanında. 1815 01:31:18,800 --> 01:31:20,101 Onlar biryere değiliz. 1816 01:31:20,101 --> 01:31:23,100 Ve bu ikinci senaryo, işler Tüm bellekte yerinde var, 1817 01:31:23,100 --> 01:31:25,082 aslında güçlü bir özellik olabilir. 1818 01:31:25,082 --> 01:31:28,040 ne zaman biz ama biz geri geleceğiz meraklısı veri yapıları hakkında konuşun. 1819 01:31:28,040 --> 01:31:32,260 Şimdilik, bir dizi sadece bir olduğunu bitişik bellek yığın, 1820 01:31:32,260 --> 01:31:36,520 öğesi olan her geri, geri, geri, geri, 1821 01:31:36,520 --> 01:31:38,050 ve genellikle aynı tür. 1822 01:31:38,050 --> 01:31:42,630 >> Yani, yaklaşık düşünüyorsanız an önce, bir dize nedir? 1823 01:31:42,630 --> 01:31:50,460 Eh, bir dize, Zamyla gibi, Z-A-E-Y-L-A, teknik, bir 1824 01:31:50,460 --> 01:31:51,400 sadece bir dizi. 1825 01:31:51,400 --> 01:31:53,700 Bu karakter bir dizi var. 1826 01:31:53,700 --> 01:31:59,250 >> Ve bu yüzden gerçekten bu kadar çizerseniz ben Bellek bir yığın olarak, daha önce yaptım 1827 01:31:59,250 --> 01:32:04,510 bu o her çıkıyor karakterleri bir bayt kaplıyor. 1828 01:32:04,510 --> 01:32:07,630 Ve sonra bu özel var Nöbetçi karakter, ters eğik çizgi 0, 1829 01:32:07,630 --> 01:32:12,360 veya sekiz 0 bit, o Bu dizenin sonunu çizmektedir. 1830 01:32:12,360 --> 01:32:15,090 Yani bir dize, o döner dışarı, unquote dize alıntı 1831 01:32:15,090 --> 01:32:20,580 chara-- sadece bir dizidir gerçek bir veri türü olan Char. 1832 01:32:20,580 --> 01:32:24,560 >> Ve şimdi argv, meanwhile-- geri programa dönelim. 1833 01:32:24,560 --> 01:32:29,582 biz sözcük görmek bile argv, dize burada, bir dize kendisi değildir. 1834 01:32:29,582 --> 01:32:33,640 Argv argüman vektör, dizelerden oluşan bir dizidir. 1835 01:32:33,640 --> 01:32:37,620 >> Eğer bir dizi var, böylece tıpkı karakterler, daha yüksek seviyede olabilir, 1836 01:32:37,620 --> 01:32:46,279 strings-- bir dizi, yani, örneğin, Ben bir an önce yazdığınız zaman ./argv0 1837 01:32:46,279 --> 01:33:00,150 argv0, uzay Z-A-E-Y-L-a, I iddia argv, bu-- ./argv0 iki dizeleri vardı 1838 01:33:00,150 --> 01:33:03,185 ve Z-A-E-Y-L-A. İçinde Başka bir deyişle, argc 2 oldu. 1839 01:33:03,185 --> 01:33:03,980 Neden? 1840 01:33:03,980 --> 01:33:08,370 >> Eh, etkin bir ne oluyor üzerinde bu dizelerin her biri olduğunu 1841 01:33:08,370 --> 01:33:13,990 Elbette, karakter dizisidir daha önce olduğu gibi, her kimin karakterler 1842 01:33:13,990 --> 01:33:15,670 tek bir bayt kaplıyor. 1843 01:33:15,670 --> 01:33:19,720 Ve gerçek 0 karıştırmayın 0 ile programın adı, 1844 01:33:19,720 --> 01:33:22,040 bu 80 bit anlamına gelir. 1845 01:33:22,040 --> 01:33:27,140 Ve Zamyla, bu arada, hala Ayrıca karakterlerin bir dizi. 1846 01:33:27,140 --> 01:33:31,450 >> Günün sonunda, bu yüzden gerçekten başlık altında bu gibi görünüyor. 1847 01:33:31,450 --> 01:33:38,800 Ama nasıl ana doğası gereği, argv işleri, bana tüm bu sarılmasına izin verir 1848 01:33:38,800 --> 01:33:44,810 , Eğer sen, büyük bir diziye kadar biz biraz üzerinde basitleştirmek eğer, o 1849 01:33:44,810 --> 01:33:48,180 resim gibi ve do not göründüğünü Oldukça orada büyütmek için çizmek, 1850 01:33:48,180 --> 01:33:56,720 Bu dizi, sadece boyutu 2 ilkidir bir dize içeren unsuru, 1851 01:33:56,720 --> 01:33:59,230 İkinci unsur hangi bir dize içerir. 1852 01:33:59,230 --> 01:34:01,687 Ve, sırayla, eğer tür her yakınlaştırmak 1853 01:34:01,687 --> 01:34:03,770 Bu dizeleri, ne sen Kaputun altında bakın 1854 01:34:03,770 --> 01:34:07,190 her dize sadece olmasıdır karakter dizisi. 1855 01:34:07,190 --> 01:34:11,680 >> Şimdi, sadece dizeleri gibi, Biz erişim olsun başardık 1856 01:34:11,680 --> 01:34:15,260 bir dize i inci karakter Bu köşeli ayraç gösterimi kullanarak. 1857 01:34:15,260 --> 01:34:17,320 Benzer şekilde, dizilerle Genel olarak, biz can 1858 01:34:17,320 --> 01:34:22,700 almak için köşeli ayraç notasyonu kullanmak Dizideki dizeleri herhangi bir sayıda? 1859 01:34:22,700 --> 01:34:25,100 Örneğin, bana izin go ahead ve bunu. 1860 01:34:25,100 --> 01:34:32,420 >> Beni devam edin ve argv1.c yaratalım, hangi biraz farklı bu kez. 1861 01:34:32,420 --> 01:34:35,635 Bunun yerine argc2 için denetimi, Ben bunun yerine bu yapacağım. 1862 01:34:35,635 --> 01:34:41,270 Ben 0 olsun int, ben az argc daha ben artı artı, 1863 01:34:41,270 --> 01:34:47,920 ve daha sonra, bu iç çıktısını Yüzde s, yeni hat ve ardından 1864 01:34:47,920 --> 01:34:50,740 argv dirsek i. 1865 01:34:50,740 --> 01:34:55,220 >> başka bir deyişle, bu yüzden ben başa değilim Şu anda bireysel karakter. 1866 01:34:55,220 --> 01:35:00,190 Argv, bu boş bir meydanda ima ettiği adı argv sağında parantez, 1867 01:35:00,190 --> 01:35:03,320 dizelerden oluşan bir dizidir argv anlamına gelir. 1868 01:35:03,320 --> 01:35:04,870 Ve argc sadece int. 1869 01:35:04,870 --> 01:35:08,800 >> Burada bu hat, 6, olduğu set söyleyerek i 0 eşittir. 1870 01:35:08,800 --> 01:35:11,980 , Kadar tüm yol saymak ancak argc, dahil. 1871 01:35:11,980 --> 01:35:14,010 Ve sonra her tekrarında, bir dize çıktı. 1872 01:35:14,010 --> 01:35:14,800 Ne dize? 1873 01:35:14,800 --> 01:35:17,270 >> argv i-inci dize. 1874 01:35:17,270 --> 01:35:19,530 Ben önce ise bu yüzden köşeli ayraç kullanarak 1875 01:35:19,530 --> 01:35:22,180 notasyonu i indisli ulaşmak için Şimdi bir dizesinde karakter, 1876 01:35:22,180 --> 01:35:27,240 Ben köşeli ayraç notasyonu kullanıyorum Dizideki i dize almak için. 1877 01:35:27,240 --> 01:35:30,310 Yani bir katman tür Yukarıdaki kavramsal. 1878 01:35:30,310 --> 01:35:35,390 >> Ve böylece bu konuda derli toplu ne Şimdi program ben argv1 derlemek, 1879 01:35:35,390 --> 01:35:42,067 ve sonra ./argv1 yapmak ve sonra yazın foo bar Baz gibi bir şey, 1880 01:35:42,067 --> 01:35:45,400 Üç varsayılan kelime olan vardır bilgisayar bilimcisi her zaman için ulaşır 1881 01:35:45,400 --> 01:35:51,010 o biraz tutucu kelimeler ihtiyacı ve Enter tuşuna basın, bu kelimelerin her biri, 1882 01:35:51,010 --> 01:35:54,980 Programın adını da dahil olmak üzere hangi Birinci konumda argv içinde 1883 01:35:54,980 --> 01:35:58,320 biter her seferinde bir yazdırılan. 1884 01:35:58,320 --> 01:36:05,290 Ve ben bunu değiştirmek ve ben dersem argv1 Zamyla Chan gibi bir şey, 1885 01:36:05,290 --> 01:36:08,800 biz onlardan her üç olsun argv0 olduğu sözler, 1886 01:36:08,800 --> 01:36:14,400 argv1, argv2 bu nedeniyle vaka argc, sayısı, 3'tür. 1887 01:36:14,400 --> 01:36:20,020 >> Ama ne temiz olduğunu anlamak eğer olduğunu Bu argv, dizeler sadece bir dizidir 1888 01:36:20,020 --> 01:36:24,910 ve bir dize anlıyoruz karakter dizisidir, 1889 01:36:24,910 --> 01:36:29,470 biz aslında bir tür kullanabilirsiniz köşeli ayraç notasyonu birden çok kez 1890 01:36:29,470 --> 01:36:33,320 bir dize seçin ve sonra seçmek için dize içinde bir karakter, 1891 01:36:33,320 --> 01:36:35,730 aşağıdaki derin olarak dalış. 1892 01:36:35,730 --> 01:36:40,100 Bu örnekte, gitmeme izin önde ve bu argv2.c diyoruz. 1893 01:36:40,100 --> 01:36:43,920 1894 01:36:43,920 --> 01:36:50,180 Ve bu örnekte, beni önde gitmesine izin ve i 0 olsun int için following-- yapmak, 1895 01:36:50,180 --> 01:36:53,286 i argc daha azdır I artı artı, sadece eskisi gibi. 1896 01:36:53,286 --> 01:36:55,910 Yani şimdi bu diğer Kelimelerden-- ve Yeterince karmaşık oluyor. 1897 01:36:55,910 --> 01:36:59,940 Sonra söylemek için gidiyorum argv dizeleri üzerinden yineleme, 1898 01:36:59,940 --> 01:37:01,294 kendime bir açıklama olarak. 1899 01:37:01,294 --> 01:37:03,960 Ve sonra ben bir var gidiyorum , For döngüsü iç içe muhtemelen size hangi 1900 01:37:03,960 --> 01:37:06,290 yapılabilir veya kabul var Scratch olarak, yapıyor, nerede 1901 01:37:06,290 --> 01:37:08,600 Ben ben int-- söylemek için gidiyorum Tekrar i kullanmak için gitmiyorum, 1902 01:37:08,600 --> 01:37:12,590 Ben gölge istemiyorum çünkü ya çeşit mevcut i üzerine. 1903 01:37:12,590 --> 01:37:15,780 >> Çünkü, bunun yerine, j söylemek için gidiyorum Bu, i daha sonra değişken zaman git 1904 01:37:15,780 --> 01:37:18,590 zaman sadece çalışıyorum Basit numaralar saymak. 1905 01:37:18,590 --> 01:37:28,850 j alır için 0-- ve ayrıca, n, gidiyor , Argv desteğinin i kıç uzunluğu olsun 1906 01:37:28,850 --> 01:37:36,030 Uzun J m'den az olduğu, j artı artı, aşağıdakileri yapın. 1907 01:37:36,030 --> 01:37:37,500 Ve burada ilginç bir parçası. 1908 01:37:37,500 --> 01:37:46,330 >> bir karakter ve yeni bir satır yazdırın, argv dirsek i, dirsek j tanıttığım. 1909 01:37:46,330 --> 01:37:47,940 Tamam, bu yüzden beni burada bazı yorumlar ekleyelim. 1910 01:37:47,940 --> 01:37:54,820 karakterleri üzerinde yineleme Geçerli dizesinde, 1911 01:37:54,820 --> 01:38:02,290 i-inci dize baskı j-inci karakter. 1912 01:38:02,290 --> 01:38:04,630 Yani şimdi, en düşünelim bu yorumlar ne anlama. 1913 01:38:04,630 --> 01:38:06,750 >> dizeleri üzerinde yineleme argv-- kaç 1914 01:38:06,750 --> 01:38:09,300 dizeleri bir dizi hangi, argv vardır? 1915 01:38:09,300 --> 01:38:13,420 Argc çok, bu yüzden yineleme ediyorum i argc kadar 0 eşittir. 1916 01:38:13,420 --> 01:38:20,020 Bu arada, kaç karakter argv i-inci dize vardır? 1917 01:38:20,020 --> 01:38:22,880 >> Eh, bu cevap almak için, Ben sadece dize uzunluğunu çağrı 1918 01:38:22,880 --> 01:38:26,810 Geçerli dize I bakımı argv dirsek i olan yaklaşık. 1919 01:38:26,810 --> 01:38:30,090 Ve ben geçici olduğunu saklamak için gidiyorum değer n, sadece önbelleğe alma amaçlı, 1920 01:38:30,090 --> 01:38:31,590 verimlilik için hatırlamak için. 1921 01:38:31,590 --> 01:38:36,330 Ve sonra ben, 0 j başlatmak gidiyorum j az n sürece devam, 1922 01:38:36,330 --> 01:38:38,430 ve her yineleme artış j. 1923 01:38:38,430 --> 01:38:41,030 >> Ve sonra burada, başı hat 12 benim yorum, 1924 01:38:41,030 --> 01:38:43,390 Bir karakter çıktı, yeni bir hat izledi, 1925 01:38:43,390 --> 01:38:48,140 Özellikle argv braket Ben bana i-inci dize verir 1926 01:38:48,140 --> 01:38:51,690 argv-- yani ilk kelime, ikinci kelime, üçüncü kelime, ne olursa olsun. 1927 01:38:51,690 --> 01:38:57,370 Ve sonra j daha derin dalışlar ve alır Bana o kelimenin j-inci karakter. 1928 01:38:57,370 --> 01:39:02,200 Ve böylece, aslında, sen tedavi edebilir argv çok-boyutlu bir şekilde, 1929 01:39:02,200 --> 01:39:06,050 iki boyutlu, dizi olarak, bu sayede görünüyor her kelime türlü 1930 01:39:06,050 --> 01:39:08,580 Aklını en böyle Göz ve her karakter 1931 01:39:08,580 --> 01:39:10,930 tür içinde oluşur Bir sütun, eğer yardımcı olur. 1932 01:39:10,930 --> 01:39:13,260 >> Gerçekte, biz ne zaman kızdırmak Gelecekteki haftalarda bu apart, 1933 01:39:13,260 --> 01:39:15,580 Biraz olacak Bundan daha sofistike. 1934 01:39:15,580 --> 01:39:17,800 Ama gerçekten can şimdilik, bunu düşünmedim, 1935 01:39:17,800 --> 01:39:22,110 sadece bu iki boyutlu olarak Bunun dizisi, bu sayede bir seviye 1936 01:39:22,110 --> 01:39:23,260 dizeleri tümüdür. 1937 01:39:23,260 --> 01:39:26,760 Ve sonra derin, senin dalış ise Bireysel karakter alabilirsiniz 1938 01:39:26,760 --> 01:39:29,600 Burada bu notasyonu kullanarak buradaki. 1939 01:39:29,600 --> 01:39:31,620 >> Yani net etkisi nedir? 1940 01:39:31,620 --> 01:39:34,970 Beni devam edelim ve argv2-- lanetlemek bunu yapmak. 1941 01:39:34,970 --> 01:39:36,210 Burada bir hata yaptım. 1942 01:39:36,210 --> 01:39:40,160 örtük ilan kütüphane işlevi Stirling. 1943 01:39:40,160 --> 01:39:42,190 Yani tüm bu zaman, bu kadar belki uygun 1944 01:39:42,190 --> 01:39:45,130 biz bir çeşit terbiye olduğunuzu tam Başladığımız yere. 1945 01:39:45,130 --> 01:39:48,160 >> Ben örtük ilan berbat kütüphane işlevi Stirling. 1946 01:39:48,160 --> 01:39:48,987 Tamam, bir dakika bekleyin. 1947 01:39:48,987 --> 01:39:51,070 Özellikle, unutmayın çünkü tam burada. 1948 01:39:51,070 --> 01:39:54,490 I string.h dahil etmek gerekir Programın bu sürümü. 1949 01:39:54,490 --> 01:40:00,050 >> Beni go ahead ve dahil edelim string.h, bu tasarruf, go ahead 1950 01:40:00,050 --> 01:40:04,460 ve argv2 yeniden derleyin. 1951 01:40:04,460 --> 01:40:08,390 Ve şimdi, burada girin, argv2 yapmak, gidin. 1952 01:40:08,390 --> 01:40:10,590 Ve biraz olsa ilk bakışta şifreli, 1953 01:40:10,590 --> 01:40:15,690 Gerçekten, fark ne nokta argv2 yazdırılır olduğunu. 1954 01:40:15,690 --> 01:40:19,970 >> Ama sonra bazı kelimeler yazarsanız istemi, argv2 Zamyla Chan gibi, 1955 01:40:19,970 --> 01:40:22,560 Ayrıca, biraz girin ilk bakışta şifreli. 1956 01:40:22,560 --> 01:40:30,540 Ama biz geri kaydırma eğer, ./argv2 Z-A-E-Y-L-A, C-F-A-K. 1957 01:40:30,540 --> 01:40:32,190 Bu yüzden her kelimenin üzerine iterated ettik. 1958 01:40:32,190 --> 01:40:37,770 Ve bu da, bizim iterated ziyaretinde Bir kelime içinde her karakter. 1959 01:40:37,770 --> 01:40:40,040 >> Şimdi, bu sonuçta, var olduğunu fark 1960 01:40:40,040 --> 01:40:43,120 bir başka ayrıntı biz tür oldum Bu bütün zaman görmezden. 1961 01:40:43,120 --> 01:40:46,180 Biz sadece ayrı alay şey Main adlı girişleri olabilir? 1962 01:40:46,180 --> 01:40:47,780 Ne ana üretiminin dersiniz? 1963 01:40:47,780 --> 01:40:50,540 >> Bu sürenin tamamı, biz oldum Sadece kopyalama ve yapıştırma 1964 01:40:50,540 --> 01:40:53,870 Ana önündeki kelime int, Online gördüğünüz olsa, 1965 01:40:53,870 --> 01:40:58,340 bazen yanlış eski sürümlerinde C ve derleyiciler, onlar, geçersiz söylüyorlar 1966 01:40:58,340 --> 01:40:59,410 veya hiçbir şey. 1967 01:40:59,410 --> 01:41:01,580 Ancak, gerçekten de, sürüm C biz kullanmakta olduğunuz, 1968 01:41:01,580 --> 01:41:06,180 C 11 veya 2011, fark o int olmalıdır. 1969 01:41:06,180 --> 01:41:09,300 Ve bu da olmalıdır geçersiz veya argc ve burada argv. 1970 01:41:09,300 --> 01:41:10,790 >> Ama neden int main? 1971 01:41:10,790 --> 01:41:12,480 aslında ne dönüyor? 1972 01:41:12,480 --> 01:41:16,280 Peki, tüm bu zaman çıkıyor her zaman bir program main yazdım 1973 01:41:16,280 --> 01:41:18,440 Her zaman bir şeyler dönüyor. 1974 01:41:18,440 --> 01:41:19,960 Ama çok gizlice yapıyor. 1975 01:41:19,960 --> 01:41:23,350 >> Bu şey bir int çizgi olarak 5 göstermektedir. 1976 01:41:23,350 --> 01:41:24,225 Ama ne int? 1977 01:41:24,225 --> 01:41:26,100 Peki, bu var programlama kongre, 1978 01:41:26,100 --> 01:41:29,790 bu sayede hiçbir şey varsa yanlış gitti ve tüm iyi, 1979 01:41:29,790 --> 01:41:34,250 Genellikle programlar ve fonksiyonlar return-- biraz counterintuitively-- 1980 01:41:34,250 --> 01:41:35,230 0. 1981 01:41:35,230 --> 01:41:38,070 0 genelde tüm iyi belirtir. 1982 01:41:38,070 --> 01:41:40,610 aklınıza Yani olsa bile Birçok bağlamlarda sahte o, 1983 01:41:40,610 --> 01:41:42,930 aslında genel olarak iyi bir şey anlamına gelir 1984 01:41:42,930 --> 01:41:49,560 >> Bu arada, bir program 1 dönerse, veya negatif 1, ya da 5 veya negatif 42, 1985 01:41:49,560 --> 01:41:52,941 veya olmayan herhangi bir 0 değeri, Bu genellikle anlamına 1986 01:41:52,941 --> 01:41:54,190 O bir şey yanlış gitti. 1987 01:41:54,190 --> 01:41:56,700 Aslında, kendi Mac veya PC üzerinde, Aslında görmüş olabilir 1988 01:41:56,700 --> 01:42:01,050 Bir hata mesajı, bu sayede onu bir şey ya da diğer hata diyor 1989 01:42:01,050 --> 01:42:04,940 Kod negatif 42 ya da hata kodu Böyle 23, ya da bir şey. 1990 01:42:04,940 --> 01:42:08,980 Bu sayı genellikle sadece bir ipucu programcı, ya da şirkete 1991 01:42:08,980 --> 01:42:11,174 bu yazılımı yapılmış, ne yanlış ve neden gitti 1992 01:42:11,174 --> 01:42:13,590 onlar bakmak böylece kendi bilgisi veya kod, 1993 01:42:13,590 --> 01:42:15,465 ve anlamaya neler Hata aslında şu anlama gelir. 1994 01:42:15,465 --> 01:42:18,400 Genellikle değil Bize yararlı son kullanıcılara. 1995 01:42:18,400 --> 01:42:20,550 >> Ama asıl döner 0, tüm iyi olduğu zaman. 1996 01:42:20,550 --> 01:42:23,770 Ve sizin belirlediğiniz yoksa dönmelidir ana ne 1997 01:42:23,770 --> 01:42:26,950 Sadece otomatik olacak Senin için 0 döndürür. 1998 01:42:26,950 --> 01:42:30,870 Ama bir şey dönen Başka aslında yararlıdır. 1999 01:42:30,870 --> 01:42:34,660 >> Bu son programda, bana izin go ahead ve bu exit.c çağrı, 2000 01:42:34,660 --> 01:42:38,630 ve bugünün son tanıtmak Bir hata kodu olarak da bilinir konular. 2001 01:42:38,630 --> 01:42:42,930 Beni go ahead ve dahil edelim bizim tanıdık dosyaları kontör, int main yapmak. 2002 01:42:42,930 --> 01:42:49,500 Ve bu sefer, en int argc yapalım dize argv ve benim parantez ile 2003 01:42:49,500 --> 01:42:50,836 bu dizide olduğunu ima etmek. 2004 01:42:50,836 --> 01:42:52,460 Ve sonra bana sadece bir sağlamlık denetimi yapalım. 2005 01:42:52,460 --> 01:42:56,640 Bu sefer, argc yapmazsa 2 eşit, o zaman biliyor musun? 2006 01:42:56,640 --> 01:42:57,520 Unut gitsin. 2007 01:42:57,520 --> 01:43:03,170 Bunu söylemek için gidiyorum, hey, kullanıcı, Eğer komut satırı argümanı eksik 2008 01:43:03,170 --> 01:43:04,210 ters eğik çizgi n. 2009 01:43:04,210 --> 01:43:05,230 >> Ve o kadar. 2010 01:43:05,230 --> 01:43:06,130 Ben çıkmak istiyorum. 2011 01:43:06,130 --> 01:43:11,030 Ben, preemptively gidiyorum ve erken gerçekten geri dönüş 2012 01:43:11,030 --> 01:43:12,810 1 numara dışında bir şey. 2013 01:43:12,810 --> 01:43:15,360 İlk değerine gitmek olabilir hata 1'dir. 2014 01:43:15,360 --> 01:43:17,860 Eğer hatalı diğer bazı varsa oluşabilir durum 2015 01:43:17,860 --> 01:43:21,390 Eğer geri dönüşü 2 söylemek veya 3 dönmek, ya da olabilir hatta belki de negatif 1 veya negatif 2. 2016 01:43:21,390 --> 01:43:23,750 >> Bunlar sadece çıkış kodları Bu olan genel olarak 2017 01:43:23,750 --> 01:43:27,770 Sadece programcıya yararlı ya da yazılım nakliye oluyor şirketi. 2018 01:43:27,770 --> 01:43:30,500 Ama aslında öyle olduğunu 0 değil önemli olan budur. 2019 01:43:30,500 --> 01:43:34,310 Yani bu programda, ben istiyorum garanti bu program sadece 2020 01:43:34,310 --> 01:43:38,190 kullanıcı beni sağlar çalışır iki bir argüman sayısı ile, 2021 01:43:38,190 --> 01:43:42,880 programın adı ve diğer bazı kelime, ben, şu kadar zorlayabilir 2022 01:43:42,880 --> 01:43:46,110 printf söyleyerek kullanıcı bağırma, komut satırı argümanı eksik, 2023 01:43:46,110 --> 01:43:46,970 1 döndürür. 2024 01:43:46,970 --> 01:43:49,940 Bu sadece hemen olacak programdan çıkın. 2025 01:43:49,940 --> 01:43:55,840 >> argc eşit Yalnızca 2 aşağı alacak burada, ben söylemek için gidiyorum hangi noktada, 2026 01:43:55,840 --> 01:44:00,410 merhaba yüzde s, ters eğik çizgi n argv1. 2027 01:44:00,410 --> 01:44:03,827 Diğer bir deyişle, ben argv 0 peşinde değil, 2028 01:44:03,827 --> 01:44:05,410 hangi programın sadece addır. 2029 01:44:05,410 --> 01:44:09,450 Ben, virgül, merhaba yazdırmak istediğiniz İnsan yazdığınız ikinci kelime. 2030 01:44:09,450 --> 01:44:12,580 Ve bu durumda üzerinde Satır 13, tüm iyi. 2031 01:44:12,580 --> 01:44:15,920 >> Ben argc 2 olduğunu biliyoruz mantıksal bu programdan. 2032 01:44:15,920 --> 01:44:17,770 Devam edin ve 0 dönmek için gidiyorum. 2033 01:44:17,770 --> 01:44:21,230 bir kenara, unutmayın ki bu da sıfırdan geçerlidir. 2034 01:44:21,230 --> 01:44:24,760 >> Mantıken, bunu yapabileceğini ve bu satırları saklanması 2035 01:44:24,760 --> 01:44:27,020 Burada bu else bloğu kod. 2036 01:44:27,020 --> 01:44:29,420 Ama bu tür var gereksiz benim kod girintilenmiş. 2037 01:44:29,420 --> 01:44:31,800 Ve ben süper yapmak istiyorum açık olursa olsun ne olduğunu, 2038 01:44:31,800 --> 01:44:34,670 Varsayılan olarak, merhaba bir şey, baskılı alacak 2039 01:44:34,670 --> 01:44:36,050 Kullanıcı işbirliği sürece. 2040 01:44:36,050 --> 01:44:39,360 >> Bu yüzden kullanımı çok yaygındır Bir durum, sadece eğer, 2041 01:44:39,360 --> 01:44:41,870 Bazı hatalı yakalamak için durum ve çıkın. 2042 01:44:41,870 --> 01:44:45,690 Sonra, bu kadar uzun hepsi iyi, başka bir yok, 2043 01:44:45,690 --> 01:44:48,060 ama sadece kod var Bu dışarıdan, öyle çünkü eğer 2044 01:44:48,060 --> 01:44:51,060 Bu eşdeğer özel durumda, mantıksal. 2045 01:44:51,060 --> 01:44:54,480 Yani ben sadece, 0 iade ediyorum açıkça tüm iyi anlamına gelir. 2046 01:44:54,480 --> 01:44:58,480 >> Ben return 0 atlanırsa, it would benim için otomatik olarak kabul edilmez. 2047 01:44:58,480 --> 01:45:00,890 Ama şimdi ben iade ediyorum En azından bu durumda bir, 2048 01:45:00,890 --> 01:45:04,940 Ben iyi ölçmek için, gidiyorum ve netlik, bu durumda 0 döndürür. 2049 01:45:04,940 --> 01:45:09,690 Yani şimdi beni go ahead ve çıkış yapalım, hangi sadece ayrılmak için mükemmel bir segue olduğunu. 2050 01:45:09,690 --> 01:45:14,401 >> Ama çıkış yapmak ve gitmeme izin önde ve ./exit yapmak girin. 2051 01:45:14,401 --> 01:45:16,900 Ve program, bana bağırdı komut satırı argümanı eksik. 2052 01:45:16,900 --> 01:45:18,120 Tamam, beni işbirliği yapalım. 2053 01:45:18,120 --> 01:45:23,810 >> Bana yerine ./exit yapsın, David girin. 2054 01:45:23,810 --> 01:45:25,190 Ve şimdi merhaba David diyor. 2055 01:45:25,190 --> 01:45:27,300 Ve normalde bu görmek değildir. 2056 01:45:27,300 --> 01:45:30,650 >> Ama bu bir var olduğu ortaya çıkıyor aslında görmek için Linux özel yolu 2057 01:45:30,650 --> 01:45:34,470 Ne çıkış kodu ile bir program çıkıldı. 2058 01:45:34,470 --> 01:45:37,184 Bazen grafiksel olarak Mac OS veya Windows gibi dünya 2059 01:45:37,184 --> 01:45:40,100 Yalnızca bu sayıları bir bakın hata mesajı ekranda açılır 2060 01:45:40,100 --> 01:45:41,940 ve programcı Sana bu sayısını gösterir. 2061 01:45:41,940 --> 01:45:44,773 Ama biz ne hata görmek istiyorsanız mesajı biz burada-- yapabiliriz, bir 2062 01:45:44,773 --> 01:45:48,100 böylece ./exit girin, baskı komut satırı argümanı eksik. 2063 01:45:48,100 --> 01:45:54,590 >> Şimdi yankı $ ?, yaparsanız hangi seyir gülünç şifreli. 2064 01:45:54,590 --> 01:45:56,590 Ama $? 2065 01:45:56,590 --> 01:45:59,220 büyülü sihir olduğunu Bu diyor hey, bilgisayar, 2066 01:45:59,220 --> 01:46:01,900 Bana söylediklerini önceki Programın çıkış kodu oldu. 2067 01:46:01,900 --> 01:46:03,410 Ve ben Enter tuşuna basın. 2068 01:46:03,410 --> 01:46:07,520 çünkü o, 1 gördüklerinizi ben dönmek için benim ana işlevi söyledi. 2069 01:46:07,520 --> 01:46:12,310 >> Bu arada, ben David ./exit yaparsanız, ve ben, merhaba David bkz Enter tuşuna basın. 2070 01:46:12,310 --> 01:46:16,800 Şimdi yankı $ yaparsanız ?, ben 0 merhaba görüyorum. 2071 01:46:16,800 --> 01:46:19,080 Ve böylece bu aslında olacak değerli bilgiler olabilir 2072 01:46:19,080 --> 01:46:23,420 Hata ayıklayıcı bağlamında değil, bu yüzden de Eğer, insan, ister misiniz o kadar. 2073 01:46:23,420 --> 01:46:26,060 Ama debugger ve diğer programlar, biz bu dönem kullanacağız 2074 01:46:26,060 --> 01:46:29,420 sık sık bu sayının bakacağız, o tür uzak gizli olsa bile 2075 01:46:29,420 --> 01:46:32,780 Eğer, bunun için bakmak sürece belirlemek, bir programın olsun ya da olmasın 2076 01:46:32,780 --> 01:46:37,050 yürütme doğru veya yanlış idi. 2077 01:46:37,050 --> 01:46:40,450 >> Ve böylece bize getiriyor Bu, günün sonunda. 2078 01:46:40,450 --> 01:46:43,917 Biz bakarak bugün başladı hata ayıklama ve sahasında da 2079 01:46:43,917 --> 01:46:46,750 kendisi ve daha sonra da ilginci, teknik başlık altında 2080 01:46:46,750 --> 01:46:49,490 ne dizeleri son hangi vardır hafife hafta biz sadece aldı 2081 01:46:49,490 --> 01:46:51,900 ve kesinlikle onları aldı için Scratch verilen. 2082 01:46:51,900 --> 01:46:56,040 >> Biz sonra biz nasıl erişebileceğini baktı bir dize bireysel karakterler, 2083 01:46:56,040 --> 01:47:00,310 ve sonra tekrar daha yüksek bir seviyeye aldı eee nasıl bakıyor, şeyler bakmak 2084 01:47:00,310 --> 01:47:04,226 bireysel olarak almak istiyorsanız yapısı gibi bir listede elemanları, 2085 01:47:04,226 --> 01:47:05,850 Biz birden fazla dizeleri ile yapamaz? 2086 01:47:05,850 --> 01:47:08,050 Ve biz komut satırı argümanları ile yapabilirsiniz. 2087 01:47:08,050 --> 01:47:12,800 Ama burada sadece kutuları bu resim Bu genel düşüncenin inandırıcı olduğunu 2088 01:47:12,800 --> 01:47:14,451 bir dizi ya da bir listesi veya bir vektör. 2089 01:47:14,451 --> 01:47:16,450 Ve bağlı Bağlam, bu kelimelerin hepsi 2090 01:47:16,450 --> 01:47:17,880 biraz farklı anlamlara gelir. 2091 01:47:17,880 --> 01:47:20,060 Yani C, sadece gidiyoruz bir dizi hakkında konuşmak için. 2092 01:47:20,060 --> 01:47:23,840 Ve bir dizi yığınıdır bellek, her kime var: 2093 01:47:23,840 --> 01:47:27,720 elementler, sırt, bitişik olan geri, geri, geri. 2094 01:47:27,720 --> 01:47:31,970 >> Ve bu elemanlar, genel olarak Aynı veri türünde, karakter, 2095 01:47:31,970 --> 01:47:35,966 karakter, karakter, karakter, ya da dize, dize, dize, dize veya int, 2096 01:47:35,966 --> 01:47:38,600 ne olursa olsun int, int, biz saklamak için çalışıyoruz. 2097 01:47:38,600 --> 01:47:42,540 Ama günün sonunda, bu ne kavramsal benziyor. 2098 01:47:42,540 --> 01:47:44,530 Sen alıyorsun senin Bilgisayarın bellek veya RAM. 2099 01:47:44,530 --> 01:47:48,590 Ve içine dışarı oyma ediyoruz aynı büyüklükte kutular, hepsi 2100 01:47:48,590 --> 01:47:50,920 için, geri, geri döndü geri bu şekilde geri. 2101 01:47:50,920 --> 01:47:53,200 >> Ve hakkında güzel ne Bu fikir ve gerçek 2102 01:47:53,200 --> 01:47:58,580 Bu şekilde değerlerini ifade edebilmeleri Veri yapıları ile ilk 2103 01:47:58,580 --> 01:48:02,520 sınıfta, başlayabilir aracı kodu ile sorunları çözmek için 2104 01:48:02,520 --> 01:48:04,079 bu hafta 0 çok sezgisel geldi. 2105 01:48:04,079 --> 01:48:05,870 Telefonu Hatırlayacaksınız kitap örneği, nerede 2106 01:48:05,870 --> 01:48:09,110 Biz bir bölünmeyi kullanılan ve fethetmek veya bir ikili arama algoritması, 2107 01:48:09,110 --> 01:48:13,220 bir bütün aracılığıyla elemek isim ve numaralar demet. 2108 01:48:13,220 --> 01:48:18,220 Ama biz, hatırlama kabul o telefon rehberi zaten sıralanmıştır 2109 01:48:18,220 --> 01:48:21,630 başkasının zaten vardı out-- adlarının bir listesi verildi düşündüm 2110 01:48:21,630 --> 01:48:24,430 ve bunları alfabetik nasıl Numaraları. 2111 01:48:24,430 --> 01:48:26,950 Ve şimdi o C biz çok yeteneği var 2112 01:48:26,950 --> 01:48:30,290 Şeyler değil düzenlemek için fiziksel bir telefon rehberinde 2113 01:48:30,290 --> 01:48:34,220 ama neredeyse bir bilgisayarın içinde bellek, biz güçlü önümüzdeki hafta olacak 2114 01:48:34,220 --> 01:48:38,470 İlk bu-- tekrar tanıtmak Bir array-- bizim veri yapıları 2115 01:48:38,470 --> 01:48:43,530 ama daha da önemlisi, gerçek bilgisayar bilim algoritmaları uygulamaya 2116 01:48:43,530 --> 01:48:47,720 kod, hangi ile biz saklayabilirsiniz Böyle yapılarda veriler, 2117 01:48:47,720 --> 01:48:50,730 ve daha sonra işlemek başlar ve aslında sorunları çözmek için, 2118 01:48:50,730 --> 01:48:53,570 ve bunun üzerine inşa etmek, Sonuç olarak, C programları 2119 01:48:53,570 --> 01:48:56,730 Python, JavaScript, SQL veritabanlarını sorgulamak? 2120 01:48:56,730 --> 01:48:59,980 >> Ve biz bunlardan hepsi göreceksiniz kilidi farklı fikirler. 2121 01:48:59,980 --> 01:49:04,100 Ama şimdi, o hatırlamak Bugün tanıtılan alanı 2122 01:49:04,100 --> 01:49:06,920 Bu şey burada, ve kriptografi dünya. 2123 01:49:06,920 --> 01:49:11,200 Ve sonraki sorunların kendinizi arasında çözmek kriptografi sanatıdır olacak, 2124 01:49:11,200 --> 01:49:13,630 çabalıyorlar ve de-çabalıyorlar bilgi ve şifreleme 2125 01:49:13,630 --> 01:49:15,930 ve metni deşifre ve nihai olarak varsayarak 2126 01:49:15,930 --> 01:49:18,970 Şimdi biliyorum bu ne başlık altında olduğunu 2127 01:49:18,970 --> 01:49:21,860 böylece bakın veya aldığınızda Böyle bir mesaj, sizi 2128 01:49:21,860 --> 01:49:24,060 kendiniz çözebilir. 2129 01:49:24,060 --> 01:49:26,740 Bütün bu ve daha bir dahaki sefere. 2130 01:49:26,740 --> 01:49:29,890 2131 01:49:29,890 --> 01:49:30,790 >> [VİDEO OYNATMA] 2132 01:49:30,790 --> 01:49:32,970 >> -Mover Sadece geldi. 2133 01:49:32,970 --> 01:49:35,146 Ben ziyaret gidiyorum Üniversite profesörü. 2134 01:49:35,146 --> 01:49:37,611 Evet. 2135 01:49:37,611 --> 01:49:40,080 Merhaba. 2136 01:49:40,080 --> 01:49:40,660 Sensin. 2137 01:49:40,660 --> 01:49:44,125 2138 01:49:44,125 --> 01:49:45,110 Bekleyin! 2139 01:49:45,110 --> 01:49:45,610 David. 2140 01:49:45,610 --> 01:49:53,936 2141 01:49:53,936 --> 01:49:56,060 Ben sadece anlamaya çalışıyorum Size ne olduğunu. 2142 01:49:56,060 --> 01:49:58,130 Şey yardımcı olabilir olun. 2143 01:49:58,130 --> 01:50:05,020 2144 01:50:05,020 --> 01:50:08,354 Sen onun kolej vardı Oda arkadaşı, değil mi? 2145 01:50:08,354 --> 01:50:10,770 Onunla ne zaman ile vardı O CS50 projesini tamamladı? 2146 01:50:10,770 --> 01:50:13,770 2147 01:50:13,770 --> 01:50:15,765 >> [MÜZİK] 2148 01:50:15,765 --> 01:50:32,110 2149 01:50:32,110 --> 01:50:33,150 >> -Bu CS50 idi. 2150 01:50:33,150 --> 01:50:42,690 2151 01:50:42,690 --> 01:50:44,770 >> Burayı seviyorum. 2152 01:50:44,770 --> 01:50:45,854 >> -Yiyip bitirmek. 2153 01:50:45,854 --> 01:50:47,020 Biz iş dışarı gidiyoruz. 2154 01:50:47,020 --> 01:50:52,120 2155 01:50:52,120 --> 01:50:53,970 >> [SON OYNATMA]