1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [MÜZİK] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> DAVID J. MALAN: Pekala, bu CS50 olduğunu. 5 00:00:16,240 --> 00:00:18,010 Ve bu hafta biridir. 6 00:00:18,010 --> 00:00:22,050 Yani haftada sıfır son kez çağırmak, Biz hesaplamalı düşünce üzerinde duruldu. 7 00:00:22,050 --> 00:00:25,440 Ve biz bundan geçişi Çizilmeye, bir grafik programlama 8 00:00:25,440 --> 00:00:27,360 bizim arkadaşlar dil MIT Media Lab. 9 00:00:27,360 --> 00:00:31,730 >> Ve Scratch, biz keşfetmek vermedi fonksiyonları gibi fikirler ve koşulları, 10 00:00:31,730 --> 00:00:35,210 ve döngüler ve değişkenler, ve hatta olaylar ve ipler, ve daha fazlası. 11 00:00:35,210 --> 00:00:37,880 Ve bugün, gidiyoruz bu fikirleri kullanmaya devam, 12 00:00:37,880 --> 00:00:40,630 ve gerçekten onları alarak verilen, ancak bunları çevirmek 13 00:00:40,630 --> 00:00:44,220 C. Now olarak bilinen başka bir dile, C daha geleneksel bir dildir. 14 00:00:44,220 --> 00:00:46,020 Bu daha düşük bir seviyede olduğunu dil, eğer sen. 15 00:00:46,020 --> 00:00:47,300 >> Bu tamamen metinsel var. 16 00:00:47,300 --> 00:00:49,910 Ve böylece ilk bakışta, bu kadar Tüm oldukça şifreli bakmak için gidiyor 17 00:00:49,910 --> 00:00:51,430 Daha önce programlanmış hiç eğer. 18 00:00:51,430 --> 00:00:53,530 Biz gidiyoruz noktalı virgül ve parantez, 19 00:00:53,530 --> 00:00:55,150 kaşlı, ve daha. 20 00:00:55,150 --> 00:00:57,240 Ama bu bile fark sözdizimi olsa 21 00:00:57,240 --> 00:01:00,600 yabancı biraz bakmak için yaklaşık Size çoğu, geçmiş görüyoruz. 22 00:01:00,600 --> 00:01:03,220 Ve fikirleri görmek için deneyin yönündedir, gerçekten, tanıdık, 23 00:01:03,220 --> 00:01:06,750 Burada haftada bir çünkü ne Biz karşılaştırmaktır yapmak başlayacağız 24 00:01:06,750 --> 00:01:08,980 Başlangıçta C. karşı kaşı 25 00:01:08,980 --> 00:01:12,350 >> Yani, örneğin, hatırlama zaman biz o Programlarımızın ilk uygulamaya 26 00:01:12,350 --> 00:01:16,220 son kez, biz baktı bir blok vardı bu-- zamanki gibi küçük bir şey 27 00:01:16,220 --> 00:01:19,990 Yeşil bayrak tıklandığında, ve sonra biz altındaki bir veya daha fazla puzzle parçaları, 28 00:01:19,990 --> 00:01:22,150 Bu durumda, merhaba dünya, demek. 29 00:01:22,150 --> 00:01:24,870 Yani, gerçekten, Scratch içinde, O yeşil bayrak tıkladığınızda 30 00:01:24,870 --> 00:01:27,390 bu yüzden, benim programı çalıştırmak için bunlar, konuşmak 31 00:01:27,390 --> 00:01:29,520 idam bloklar ya da çalıştırın. 32 00:01:29,520 --> 00:01:32,230 Ve özellikle, Kazı Kazan merhaba, dünya, dedi. 33 00:01:32,230 --> 00:01:35,377 >> Şimdi, ben, belirtilen olabilirdi Burada farklı kelimeler. 34 00:01:35,377 --> 00:01:37,960 Ama biz gerçekten bu çok göreceksiniz Gerçekten de, bu blocks-- ve, 35 00:01:37,960 --> 00:01:41,880 C birçok functions-- olabilir parametrize veya özelleştirilmiş 36 00:01:41,880 --> 00:01:43,150 farklı şeyler yapmak. 37 00:01:43,150 --> 00:01:45,520 Aslında, C uygun olduğu takdirde Şimdi, dönüştürmek istediğiniz, 38 00:01:45,520 --> 00:01:47,567 Bu Scratch programı Bu başka bir dile, 39 00:01:47,567 --> 00:01:49,650 Biz yazmak için gidiyoruz Bu gibi küçük bir şey. 40 00:01:49,650 --> 00:01:52,540 >> Verilen bazı yabancı var Orada sözdizimi büyük olasılıkla, int 41 00:01:52,540 --> 00:01:54,380 ve parantez ve geçersiz. 42 00:01:54,380 --> 00:01:57,740 yapacağınız gerçi ama hatta printf-- sadece baskı olacağını düşünüyorum. 43 00:01:57,740 --> 00:02:00,120 Ama baskı baskı anlamına gelir yakında göreceğimiz gibi, biçimlendirilmiş. 44 00:02:00,120 --> 00:02:02,140 Bu anlamıyla yazdırılır ekrana ne olursa olsun 45 00:02:02,140 --> 00:02:05,990 Bu parantez içinde olan Tabii bu durumda, merhaba dünya. 46 00:02:05,990 --> 00:02:09,290 >> Ama diğer bazı farkedeceğiniz sözdizimi, bazı çift tırnak, 47 00:02:09,290 --> 00:02:11,890 Bu sonundaki parantez, Yarı kolon ve benzeri yer alır. 48 00:02:11,890 --> 00:02:15,027 Yani yükü biraz var, tabiri caizse, hem bilişsel için 49 00:02:15,027 --> 00:02:17,860 ve söz dizimi, biz gidiyoruz uzun zaman önce hatırlamak zorunda. 50 00:02:17,860 --> 00:02:20,720 Ama, uygulama ile fark bu sizin dışarı atlamak başlayacaktır. 51 00:02:20,720 --> 00:02:24,920 >> Aslında, en o biri odaklanmak izin fonksiyonu, bu durumda specifically-- 52 00:02:24,920 --> 00:02:26,290 Merhaba dünya demek. 53 00:02:26,290 --> 00:02:27,560 Yani fonksiyonu olduğunu söylüyorlar. 54 00:02:27,560 --> 00:02:31,320 Merhaba dünya onun parametre, ya da argüman, onun özelleştirme. 55 00:02:31,320 --> 00:02:34,320 >> Ve C denkliği sadece bir Burada bu bir satır olacak, 56 00:02:34,320 --> 00:02:38,710 Printf denk olduğu, ki çift ​​tırnaklı dize, merhaba 57 00:02:38,710 --> 00:02:41,470 Dünya, tabii ki, eşdeğerdir Orada beyaz kutu içinde ne kadar. 58 00:02:41,470 --> 00:02:45,680 Ve ters bölü n, gerçi biraz garip ve Sıfırdan yok, 59 00:02:45,680 --> 00:02:49,380 sadece yaparız etkiye sahip oluyor Bir bilgisayarda görmek, benim Mac veya PC gibi, 60 00:02:49,380 --> 00:02:51,660 sadece hareket sonraki satıra imleci. 61 00:02:51,660 --> 00:02:53,970 Bu vurmak gibi klavyenizdeki Enter. 62 00:02:53,970 --> 00:02:55,580 >> Bu yüzden daha önce uzun tekrar göreceksiniz. 63 00:02:55,580 --> 00:02:58,640 Ama önce, bu bir göz atalım döngüler halinde diğer bir örnek. 64 00:02:58,640 --> 00:03:02,830 Biz, son kez bu sonsuza kadar döngü vardı puzzle parçaları bir dizi olduğu 65 00:03:02,830 --> 00:03:05,490 Bu tam anlamıyla bir şey yaptım Bu durumda, forever--, 66 00:03:05,490 --> 00:03:08,360 demek, merhaba dünya, merhaba dünya, merhaba dünya, merhaba dünya. 67 00:03:08,360 --> 00:03:10,350 Yani tasarımı ile sonsuz bir döngü var. 68 00:03:10,350 --> 00:03:14,580 >> C, biz bunu uygulamak istiyorsanız Aynı fikir, biz sadece bunu yapabilirsiniz. 69 00:03:14,580 --> 00:03:19,570 Gerçek olsa da, merhaba printf şimdi --daha süre, sadece anlam, tür 70 00:03:19,570 --> 00:03:23,090 yapma fikri çağrıştırıyor bir şey tekrar ve tekrar ve tekrar, 71 00:03:23,090 --> 00:03:23,980 ve ne kadar süreyle? 72 00:03:23,980 --> 00:03:27,990 Eh, true-- hatırlama o Gerçek sadece ya da biridir. 73 00:03:27,990 --> 00:03:30,660 >> Ve gerçek her zaman, tabii ki, doğrudur. 74 00:03:30,660 --> 00:03:33,060 Yani bir anlamsız tür ifadesi sadece gerçek söylemek için. 75 00:03:33,060 --> 00:03:36,890 Ama aslında, bu, kasıtlı Gerçek sadece her zaman doğrudur, çünkü eğer, 76 00:03:36,890 --> 00:03:40,850 Gerçek sadece ima ederken daha dolaylı eğer biraz, 77 00:03:40,850 --> 00:03:44,070 aşağıdaki kod satırlarını o Bu küme parantezi arasında 78 00:03:44,070 --> 00:03:48,320 sadece tekrar ve tekrar çalıştırmak gerekir, ve tekrar ve aslında durdurmak asla. 79 00:03:48,320 --> 00:03:50,230 >> Ama istiyorsun eğer senin döngü biz olarak, durdurmak için 80 00:03:50,230 --> 00:03:54,500 gibi bir şey ile geçen seferki Bu, aşağıdaki 50 kez tekrarlayın 81 00:03:54,500 --> 00:03:57,700 C biz ne ile aynı şeyi yapabilirsiniz anahtar kelime loop-- için çağırdı 82 00:03:57,700 --> 00:03:59,330 sırasında, ama için olmayan. 83 00:03:59,330 --> 00:04:03,290 Ve sonra, burada bazı yeni sözdizimi vardır int i, i az 50 0 eşittir 84 00:04:03,290 --> 00:04:03,880 i ++. 85 00:04:03,880 --> 00:04:05,430 Ve buna geri geleceğiz. 86 00:04:05,430 --> 00:04:09,660 Ama bu sadece nasıl biz olur Kazı blokların kümesi çevirmek 87 00:04:09,660 --> 00:04:13,079 kod C hattı bir dizi. 88 00:04:13,079 --> 00:04:14,450 >> Bu arada, değişkenleri göz önünde bulundurun. 89 00:04:14,450 --> 00:04:16,540 Ve, aslında, sadece Bir an önce birini gördüm. 90 00:04:16,540 --> 00:04:21,220 Ve Scratch durumunda, biz ise i adında bir değişken bildirmek istedim 91 00:04:21,220 --> 00:04:24,590 i tamsayı olduğu için, sadece bir sayı, ve bazı değerine ayarlamak istediğiniz, 92 00:04:24,590 --> 00:04:28,410 Bu portakal kullanmak bloke var-- ben 0 olarak ayarlayın. 93 00:04:28,410 --> 00:04:30,800 >> Ve bugün görürsünüz ötesinde, sadece geçen hafta olduğu gibi, 94 00:04:30,800 --> 00:04:33,850 programcılar hemen hemen her zaman yapmak Gerçekten, sıfırdan saymaya başlar 95 00:04:33,850 --> 00:04:34,950 Kongre tarafından. 96 00:04:34,950 --> 00:04:37,250 Ama aynı zamanda hatırlama gelen nedeni İkili bizim tartışma, 97 00:04:37,250 --> 00:04:39,990 küçük sayı yapabilirsiniz herhangi bir bit sayısına sahip temsil 98 00:04:39,990 --> 00:04:41,640 Sadece 0 kendisi olacak. 99 00:04:41,640 --> 00:04:45,190 Ve bu yüzden genellikle başlayacağız 0 bile değişkenleri başlatılıyor. 100 00:04:45,190 --> 00:04:47,710 >> Ve C, aynı şeyi Biz int söylemek için gidiyoruz 101 00:04:47,710 --> 00:04:50,110 tamsayı için, ben sadece kongre tarafından. 102 00:04:50,110 --> 00:04:53,390 Bu değişken olarak adlandırılan olabilir şey ben sadece Scratch gibi, istiyorum. 103 00:04:53,390 --> 00:04:57,770 Ve sonra 0 sadece temlik eşittir Sağ taraftan değeri 0 104 00:04:57,770 --> 00:05:01,319 ve değişken içine koyar, ya da Sol orada saklama kabı. 105 00:05:01,319 --> 00:05:04,360 Ve yarı-kolon olarak biz see-- edeceğiz ve bu already-- birkaç gördüm 106 00:05:04,360 --> 00:05:06,530 Sadece düşünce sonu anlamına gelir. 107 00:05:06,530 --> 00:05:09,430 başka bir şey yapmak geçin izleyin hatlarında. 108 00:05:09,430 --> 00:05:11,330 >> Şimdi, Boole ifadeleri hakkında? 109 00:05:11,330 --> 00:05:14,320 Scratch hatırlayın, Bu ifadeler vardı 110 00:05:14,320 --> 00:05:16,740 ya doğru olduğunu veya false-- sorular, 111 00:05:16,740 --> 00:05:18,910 Gerçekten, doğru veya yanlış olduğunu. 112 00:05:18,910 --> 00:05:21,960 Çizilmeye durumunda, olabilir Böyle basit bir soru sormak, 113 00:05:21,960 --> 00:05:24,586 Ben 50 daha azdır? 114 00:05:24,586 --> 00:05:25,710 Bu yüzden, yine, bir tam sayıdır. 115 00:05:25,710 --> 00:05:27,210 Belki bunu kullanıyoruz Bir Scratch programında 116 00:05:27,210 --> 00:05:29,310 puan izlemek için ya da böyle bir şey. 117 00:05:29,310 --> 00:05:33,810 Sıfırdan burada Yani bu sözdizimi sadece ben 50 daha az olduğu anlamına gelir? 118 00:05:33,810 --> 00:05:37,330 Eh, minnetle, bir şey C. Ve çevirmek için basit, 119 00:05:37,330 --> 00:05:41,780 Bu biz sadece daha az i söyleyebilirim 50'den, tanıdık tuşunu kullanarak 120 00:05:41,780 --> 00:05:42,850 klavyenizdeki. 121 00:05:42,850 --> 00:05:45,141 >> Bu arada, eğer istedi bir şey daha genel söylemek, 122 00:05:45,141 --> 00:05:49,890 gibi, iyi, y nerede her daha az x X ve Y'nin kendisi değişkenlerdir? 123 00:05:49,890 --> 00:05:52,280 Biz de aynı şeyi yapabilirsiniz C, bu kadar uzun biz ettik olarak 124 00:05:52,280 --> 00:05:53,942 Zaten bu değişkenleri yarattı. 125 00:05:53,942 --> 00:05:55,650 Ve biz nasıl göreceğiz uzun süre önce bunu. 126 00:05:55,650 --> 00:05:58,590 Biz sadece y daha x az söyleyebilirim. 127 00:05:58,590 --> 00:06:00,530 >> Yani başlıyoruz bazı benzerlikler görüyorum. 128 00:06:00,530 --> 00:06:03,490 yaptı ve bu millet Çizilmeye kesinlikle vardı 129 00:06:03,490 --> 00:06:05,250 Bu temel fikir bazı esinlenerek. 130 00:06:05,250 --> 00:06:10,350 Ve bu tür görürsünüz Birçok languages-- sözdizimi 131 00:06:10,350 --> 00:06:12,160 sadece, değil Scratch Sadece C, ancak Python, 132 00:06:12,160 --> 00:06:14,790 ve JavaScript ve Hala diğer diller. 133 00:06:14,790 --> 00:06:18,270 >> Başka bir yapı düşünelim C, bir durumun kavramı, 134 00:06:18,270 --> 00:06:20,370 şartlı bir şey yapıyor. 135 00:06:20,370 --> 00:06:22,720 bir şey doğruysa, bunu. 136 00:06:22,720 --> 00:06:24,457 başka bir şey doğruysa, bunu. 137 00:06:24,457 --> 00:06:27,040 Bu programlama çeşit bir yol ayrımında eşdeğer. 138 00:06:27,040 --> 00:06:29,730 Belki de iki yönlü bir çatal var, Bir üç yollu çatal veya daha fazladır. 139 00:06:29,730 --> 00:06:32,800 Ve Scratch olarak, biz olabilir böyle bir şey görmemiştim. 140 00:06:32,800 --> 00:06:34,010 >> Yani bu büyük bir biri. 141 00:06:34,010 --> 00:06:36,750 Ama göreceli düşünün mantık basitlik. 142 00:06:36,750 --> 00:06:44,010 X, Y daha az ise, o zaman X az düzeyde y daha x y büyükse else if, 143 00:06:44,010 --> 00:06:46,230 sonra x y büyüktür söylüyorlar. 144 00:06:46,230 --> 00:06:48,300 Sonra, mantıksal halinde Eğer Scratch geri düşünüyorum 145 00:06:48,300 --> 00:06:52,610 ya da sadece kendi insan sezgi, de, x, y den büyük ise, ve x, 146 00:06:52,610 --> 00:06:57,000 Elbette daha sonra, y den az olmamalıdır x, y eşit olacak. 147 00:06:57,000 --> 00:06:59,690 Bu durumda, iç içe geçme So Bu Scratch blokları, 148 00:06:59,690 --> 00:07:02,580 Biz üç elde edebilirsiniz Yolun yol çatal? 149 00:07:02,580 --> 00:07:04,980 >> Bu arada, isterseniz tartışmalı, C bunu 150 00:07:04,980 --> 00:07:08,420 en azından biraz simpler-- görünüyor Eğer sözdizimi aşina bir kez olsun. 151 00:07:08,420 --> 00:07:12,050 x ve y daha düşük ise, Printf X-Y daha azdır. 152 00:07:12,050 --> 00:07:16,140 x y büyükse başka, Printf X-Y daha büyüktür. 153 00:07:16,140 --> 00:07:21,210 Başka Printf X, Cp grubuna eşittir ve Yine, olanlar ters eğik çizgi sadece biter 154 00:07:21,210 --> 00:07:24,160 Bu yeni hatlar için bu yüzden eğer Aslında programın bu tür koştu 155 00:07:24,160 --> 00:07:25,940 Sadece hareket edeceğini imleci sonuçta 156 00:07:25,940 --> 00:07:28,100 Ekranın sonraki satıra. 157 00:07:28,100 --> 00:07:31,270 >> Şimdi, bu arada Scratch diğer vardı daha gelişmiş özellikler, yalnızca 158 00:07:31,270 --> 00:07:34,320 bazıları biz gidiyoruz Başlangıçta C. dünyasına üzerinde hareket 159 00:07:34,320 --> 00:07:37,010 Ve onlardan biri oldu Sıfırdan bir liste çağırdı. 160 00:07:37,010 --> 00:07:39,100 Ve bu özel oldu değişkenin türü olduğunu 161 00:07:39,100 --> 00:07:42,840 Birden şeyleri saklamak için izin verdi geri içeri, geri, geri, geri. 162 00:07:42,840 --> 00:07:45,540 >> C, bu yok listeleri, tek başına, ama bir şey 163 00:07:45,540 --> 00:07:48,090 daha genel olarak olduğu , Diziler ne kadar biz edeceğiz denilen 164 00:07:48,090 --> 00:07:50,590 daha sonra bu dönem geri gelmek bir şey bakarak 165 00:07:50,590 --> 00:07:52,780 bir liste, ya da gerçekten bir bağlantılı liste çağırdı. 166 00:07:52,780 --> 00:07:55,510 Ancak, yakın şimdi Bizim için C eşdeğer 167 00:07:55,510 --> 00:07:57,345 bir şey olacak Bir dizi denir. 168 00:07:57,345 --> 00:07:59,740 Ve bir dizi basit bir olduğunu değişkenin özel tip 169 00:07:59,740 --> 00:08:03,160 Bu veri saklamak için izin verir geri, geri, geri, geri. 170 00:08:03,160 --> 00:08:05,840 >> Ve, gerçekten, Scratch içinde, biz erişmek istiyorsa 171 00:08:05,840 --> 00:08:09,030 Bir dizinin ilk elemanı veya Bir list-- ve ben, onu aramak için gidiyorum 172 00:08:09,030 --> 00:08:13,600 kongre, argv, argüman tarafından Vektör, ama daha bu konuda uzun zaman önce. 173 00:08:13,600 --> 00:08:17,090 Ben ilk ayağında almak istiyorsanız ve Scratch dünyasında, argv 174 00:08:17,090 --> 00:08:20,930 Aslında tipik yapmak 1 saymaya başlar. 175 00:08:20,930 --> 00:08:22,850 >> Ve bu yüzden argv 1. maddesinin alabilirsiniz. 176 00:08:22,850 --> 00:08:26,310 Bu MİT uygulanan sadece nasıl listeleri kavramı. 177 00:08:26,310 --> 00:08:29,860 Ama C, ben gidiyorum daha basit, sadece söylemek, argv, 178 00:08:29,860 --> 00:08:32,758 hangi yine adıdır benim list-- veya açık olması, bir dizi. 179 00:08:32,758 --> 00:08:34,549 Ve ben ilk istiyorsanız elemanları, ben gidiyorum 180 00:08:34,549 --> 00:08:37,890 , Köşeli parantezleri kullanmak için hangi size genellikle klavyenin altında kullanılmaktadır olmayabilir. 181 00:08:37,890 --> 00:08:40,150 >> Ama 0 sadece anlamına gelir, bana ilk olsun. 182 00:08:40,150 --> 00:08:42,160 Yani vesilesiyle gibi kez biz gidiyoruz, geçer 183 00:08:42,160 --> 00:08:44,570 Bu ikiliklerini görmeye başlamak için Kazı ve C arasında, 184 00:08:44,570 --> 00:08:46,070 bu sayede Scratch birini kullanır. 185 00:08:46,070 --> 00:08:47,670 C Biz burada 0 kullanın. 186 00:08:47,670 --> 00:08:49,420 Ama hızlı bir şekilde göreceksiniz Eğer anladıktan sonra 187 00:08:49,420 --> 00:08:52,920 Her dilin temelleri, o bu işler daha almak için başlar 188 00:08:52,920 --> 00:08:56,860 uygulama ve uygulama yoluyla tanıdık. 189 00:08:56,860 --> 00:08:59,700 >> Yani aslında bir programda şimdi bakalım. 190 00:08:59,700 --> 00:09:04,031 İşte C ilk olacak tam programlar için kaynak kodu. 191 00:09:04,031 --> 00:09:06,280 Ve program gidiyoruz dikkate sunmak için 192 00:09:06,280 --> 00:09:09,340 eşdeğer biridir Bu daha önceki Scratch parçasına. 193 00:09:09,340 --> 00:09:13,210 >> Burada Peki, ne var tartışmasız en basit C programı 194 00:09:13,210 --> 00:09:15,410 Bunu yazabilirsiniz Aslında bir şey yok. 195 00:09:15,410 --> 00:09:18,250 Şimdi, biz geçmişte bakacağız, Şimdilik, dahil olup, 196 00:09:18,250 --> 00:09:21,190 Standart io.h ve bu açı parantez ve int ve boşluk, 197 00:09:21,190 --> 00:09:22,840 kıvırcık parantezler ve benzeri yer alır. 198 00:09:22,840 --> 00:09:25,390 >> Ve Sadece odaklanmak izin En azından sezgisel ne, 199 00:09:25,390 --> 00:09:26,860 zaten sizin dışarı atlamak olabilir. 200 00:09:26,860 --> 00:09:30,300 Aslında, ana, I do not mutlaka bunun ne olduğunu biliyor, 201 00:09:30,300 --> 00:09:34,580 ama Scratch gibi çok vardı o Yeşil bayrak, bulmaca parçası tıklandığında 202 00:09:34,580 --> 00:09:39,070 yani bir programlama dili olarak C yapar bir kod ana parçası var 203 00:09:39,070 --> 00:09:43,380 Varsayılan olarak çalıştırılmaktadır. Ve, gerçekten de, kelimenin tam anlamıyla ana çağrılacak gidiyor. 204 00:09:43,380 --> 00:09:44,720 >> Bu yüzden, ana bir fonksiyonudur. 205 00:09:44,720 --> 00:09:48,720 Ve var olan bir özel işlev var C bir program çalıştırdığınızda o, 206 00:09:48,720 --> 00:09:52,720 o tarafından işletilen gets main varsayılan. Sıfırdan dünyasında, 207 00:09:52,720 --> 00:09:56,970 o zaman yeşil bayrak genellikle oldu tıklandığında varsayılan olarak işletilen var olduğunu. 208 00:09:56,970 --> 00:10:01,130 >> Bu arada, daha önce bu gördüm, printf veya baskı biçimlendirilmiş, o 209 00:10:01,130 --> 00:10:05,620 birlikte bir fonksiyon olacak C başkalarının bütün bir grup ile birlikte, 210 00:10:05,620 --> 00:10:10,140 zaman ve o irade Yine, sırayla tam olarak yapmak 211 00:10:10,140 --> 00:10:12,450 adından da anlaşılacağı gibi, bir şey yazdırın. 212 00:10:12,450 --> 00:10:13,500 Ne yazdırmak istiyorsunuz? 213 00:10:13,500 --> 00:10:15,770 Peki, biz göreceksiniz çevreleyen karakterler tarafından 214 00:10:15,770 --> 00:10:18,680 these-- merhaba dünya gibi, çift ​​tırnak ters eğik çizgi n, 215 00:10:18,680 --> 00:10:23,040 Biz tam olarak printf söyleyebilirim Ekranda ne yazdırmak için. 216 00:10:23,040 --> 00:10:26,430 >> Ama sipariş yapmak Bu, biz ne yazık ki 217 00:10:26,430 --> 00:10:30,010 bir şey almak gerekir biz insanlar zaten şifreli, 218 00:10:30,010 --> 00:10:34,510 ama en azından biraz readable-- var: Keskin dahil, standart io.h, int 219 00:10:34,510 --> 00:10:39,340 Ana geçersiz, printf, büyülü tüm büyüler biz sadece ekranda gördüm. 220 00:10:39,340 --> 00:10:42,470 Ama biz aslında var Hala daha gizemli gidin. 221 00:10:42,470 --> 00:10:47,140 Biz ilk kod çevirmek gerekir Biz makine koduna yazma söyledi. 222 00:10:47,140 --> 00:10:51,370 Ve geçen hafta hatırlamak makineleri olduğunu, En azından olanları biz burada biliyoruz, 223 00:10:51,370 --> 00:10:54,450 Günün sonunda sadece sıfırları ve olanları anlamaya. 224 00:10:54,450 --> 00:10:58,100 >> Biz eğer Ve Tanrım, bu yazma Aslında programa sıfır ve olanlar, 225 00:10:58,100 --> 00:11:01,260 Çok, çok hızlı bir şekilde olur bir şey dışarı eğlenceli alır. 226 00:11:01,260 --> 00:11:05,150 Ama, geçen haftada, çıkıyor Bu sıfırlar ve olanları bu desenleri 227 00:11:05,150 --> 00:11:06,400 Sadece özel bir anlamı vardır. 228 00:11:06,400 --> 00:11:08,500 bazı bağlamlarda, Onlar numaralarını anlamına gelebilir. 229 00:11:08,500 --> 00:11:11,840 >> Bazı bağlamlarda, onlar anlamına gelebilir mektuplar, veya renkler, ya da herhangi bir sayı 230 00:11:11,840 --> 00:11:14,710 Orada üzerine diğer soyutlamalar. 231 00:11:14,710 --> 00:11:18,450 Ancak bilgisayarınız var gibi CPU, Merkezi İşlem Birimi, 232 00:11:18,450 --> 00:11:20,390 veya bilgisayarınızın içindeki beyni. 233 00:11:20,390 --> 00:11:22,240 Genellikle Intel bulunuyor içeride, çünkü o 234 00:11:22,240 --> 00:11:24,900 en büyük şirketlerinden biri Bu bilgisayarlar için CPU yapar. 235 00:11:24,900 --> 00:11:28,910 >> Eh, Intel işlemciler ve diğerleri sadece önceden karar verdik 236 00:11:28,910 --> 00:11:33,970 Bu sıfır belirli kalıpları ve olanlar belirli şeyler anlamına gelir. 237 00:11:33,970 --> 00:11:37,040 sıfırlar ve olanları belirli kalıpları Yani, ekrana bu basacaktır, 238 00:11:37,040 --> 00:11:39,710 veya bu iki sayıyı eklemek veya Bu iki sayıyı çıkarma 239 00:11:39,710 --> 00:11:43,310 veya veri bu parça taşımak Bilgisayarımın hafıza buraya, 240 00:11:43,310 --> 00:11:47,870 ya da diğer çok düşük bir seviyede, herhangi bir sayıda, ama sonuçta yararlı işlemleri. 241 00:11:47,870 --> 00:11:53,022 Ama neyse ki, biz insanlar gitmiyor ayrıntı bu düzeyde bilmek gerekir. 242 00:11:53,022 --> 00:11:56,230 Nitekim, sadece burada, son kez gibi biz tekrar ve tekrar ve tekrar soyutlanmış, 243 00:11:56,230 --> 00:11:58,930 çok düşük bir seviyede bina birler ve sıfırlar gibi ilkel 244 00:11:58,930 --> 00:12:01,160 üst düzey kavramları sayılar ve harfler gibi, 245 00:12:01,160 --> 00:12:04,330 ve renkler ve daha fazlası, biz de programcılar olarak can 246 00:12:04,330 --> 00:12:07,080 omuzlarında durmak bizden önce gelmiş diğerleri 247 00:12:07,080 --> 00:12:11,260 ve diğer bu yazılımı kullanmak insanlar us-- önce yazdım 248 00:12:11,260 --> 00:12:14,340 yani programlar derleyiciler denir. 249 00:12:14,340 --> 00:12:17,770 >> C dili olduğunu genellikle derlenmiş, 250 00:12:17,770 --> 00:12:22,130 bu dönüştürülmüş aracı makine koduna kaynak kodu. 251 00:12:22,130 --> 00:12:25,230 Özellikle, bu ne demektir Bu sizin kaynağı var ise 252 00:12:25,230 --> 00:12:29,530 Kendini kısa sürede biz olarak, yazma kodu Ekranda sadece bir an olacak, 253 00:12:29,530 --> 00:12:33,140 ve bunu dönüştürmek istediğiniz sonuçta makineye code-- 254 00:12:33,140 --> 00:12:37,100 Bu sıfırlar ve olanları o Sadece Mac ya da PC 255 00:12:37,100 --> 00:12:41,230 understands-- bir ilk var olarak bu kaynak kodunu beslemek 256 00:12:41,230 --> 00:12:46,340 Özel bir giriş Program bir derleyici denilen, 257 00:12:46,340 --> 00:12:48,974 çıkış ki biz göreceğiz makine kodudur. 258 00:12:48,974 --> 00:12:51,890 Ve, gerçekten, son kez konuştuk yaklaşık, gerçekten günün sonunda, 259 00:12:51,890 --> 00:12:52,610 problem çözme. 260 00:12:52,610 --> 00:12:53,360 Sen girişleri var. 261 00:12:53,360 --> 00:12:54,318 Ve çıkışları var. 262 00:12:54,318 --> 00:12:56,560 Ve çeşit var ortada algoritma. 263 00:12:56,560 --> 00:12:59,830 >> Algoritmalar mutlaka olabilir yazılımda uygulanır, 264 00:12:59,830 --> 00:13:02,900 Biz pseudocode geçen hafta gördüğümüz gibi ve biz gerçek kodu ile göreceğiniz gibi 265 00:13:02,900 --> 00:13:03,490 bu hafta. 266 00:13:03,490 --> 00:13:06,430 Ve böylece bir derleyici gerçekten sadece iç algoritmaları bir dizi var 267 00:13:06,430 --> 00:13:10,060 Bunun biliyorum nasıl özel anahtar kelimeler dönüştürmek, 268 00:13:10,060 --> 00:13:12,180 Ana ve printf gibi, ve diğerleri biz sadece 269 00:13:12,180 --> 00:13:17,620 sıfır kalıpları içine gördü ve olanlar Intel içinde ve diğer işlemciler 270 00:13:17,620 --> 00:13:20,020 Aslında anlar. 271 00:13:20,020 --> 00:13:22,460 Peki nasıl bunu yapıyorsun? 272 00:13:22,460 --> 00:13:24,470 Nerede bir derleyici alabilirim? 273 00:13:24,470 --> 00:13:26,400 >> Çoğumuz burada bir Mac ya da PC var. 274 00:13:26,400 --> 00:13:29,152 Ve Mac OS ile çalışan, ya da konum Windows veya Linux veya Solaris, 275 00:13:29,152 --> 00:13:30,860 ya da diğer herhangi bir sayıda işletim sistemleri. 276 00:13:30,860 --> 00:13:32,568 Ve, gerçekten, biz olabilir web'e çıkmak 277 00:13:32,568 --> 00:13:35,710 ve bir derleyici indir Mac veya PC'niz için 278 00:13:35,710 --> 00:13:37,360 belirli işletim sistemi için. 279 00:13:37,360 --> 00:13:39,617 Ama hepimiz üzerinde olacağını Farklı sayfalar, tabiri caizse. 280 00:13:39,617 --> 00:13:41,450 Biz biraz olurdu Farklı konfigürasyonlar. 281 00:13:41,450 --> 00:13:43,210 Ve işler hepsi aynı işe yaramaz. 282 00:13:43,210 --> 00:13:45,280 Ve, gerçekten, bu gün kullanmayın çoğumuz 283 00:13:45,280 --> 00:13:47,516 Sadece bizim dizüstü üzerinde çalışan yazılım. 284 00:13:47,516 --> 00:13:49,390 Bunun yerine, biz bir şey kullanmak bir tarayıcı gibi o 285 00:13:49,390 --> 00:13:52,930 Bize erişmenizi sağlar web tabanlı bulut uygulamaları. 286 00:13:52,930 --> 00:13:55,630 Ve daha sonra bu dönem, Biz tam olarak yapacağız. 287 00:13:55,630 --> 00:13:59,660 Biz uygulamalar yazacak ya da Yazılım, Cı code-- olup kullanılarak 288 00:13:59,660 --> 00:14:02,860 ancak Python gibi diğer diller ve bulut çalıştırmak JavaScript--. 289 00:14:02,860 --> 00:14:05,860 >> Ve biz kendimizi bunu yapmak için dönem boyunca 290 00:14:05,860 --> 00:14:11,890 aslında bir bulut tabanlı kullanacak CS50 IDE olarak bilinen çevre. 291 00:14:11,890 --> 00:14:16,030 Bu web tabanlı programlama çevre, ya da entegre geliştirme 292 00:14:16,030 --> 00:14:20,610 çevre, Ide, bazı üstünde yerleşik Cloud 9 denilen açık kaynak yazılım. 293 00:14:20,610 --> 00:14:22,966 Ve bazı pedagojik yaptık buna basitleştirmeler 294 00:14:22,966 --> 00:14:25,840 belirli özellikleri gizlemek şekilde ihtiyacımız yok, ilk hafta, 295 00:14:25,840 --> 00:14:27,770 bundan sonra yapabilirsiniz Onları ortaya çıkarmak ve bunu en 296 00:14:27,770 --> 00:14:29,400 şey çevre ile istiyorum. 297 00:14:29,400 --> 00:14:32,470 >> Ve bu kadar da bize izin verir Bazı yazılımlar önceden yükleyin. 298 00:14:32,470 --> 00:14:35,330 sözde CS50 gibi şeyler yakında göreceğiz kütüphane, 299 00:14:35,330 --> 00:14:39,210 bazı C bize sunuyor Ek işlevsellik. 300 00:14:39,210 --> 00:14:44,392 Yani eğer gitmek için, sonuçta, CS50.io, Eğer oturum açmanız istenir 301 00:14:44,392 --> 00:14:46,350 ve yapmanız ve oluşturduktan sonra ücretsiz bir hesap, 302 00:14:46,350 --> 00:14:52,150 Bir erişmek mümkün olacak oldukça bu gibi görünüyor ortamı. 303 00:14:52,150 --> 00:14:53,760 >> Şimdi, bu varsayılan modunda. 304 00:14:53,760 --> 00:14:55,650 Her şey güzel ve Ekranda parlak. 305 00:14:55,650 --> 00:14:57,941 Birçoğumuz bir alışkanlığı var bu CS50 parçası üzerinde çalışmaya 306 00:14:57,941 --> 00:14:59,150 Oldukça geç geceye. 307 00:14:59,150 --> 00:15:02,400 Ve böylece biraz sizin tercih edebilirsiniz tabiri caizse, gece moduna çevirin. 308 00:15:02,400 --> 00:15:05,550 >> Ama sonuçta, ne sen CS50 IDE içinde göreceğiz 309 00:15:05,550 --> 00:15:08,340 Üç ayrı areas-- olan Sol yerde bir alan 310 00:15:08,340 --> 00:15:12,604 Dosyalarınızı içinde olacak bulut, sağ üst köşesinde bir alan 311 00:15:12,604 --> 00:15:14,270 nerede kod düzenlenebilir olacak. 312 00:15:14,270 --> 00:15:16,650 Sen açmak mümkün olacak herhangi bir program için ayrı sekmeler 313 00:15:16,650 --> 00:15:19,670 İçinde bu dönem yazmanız Bu üst sağ köşesinde. 314 00:15:19,670 --> 00:15:23,070 Ve sonra en arcanely, ve henüz güçlü, 315 00:15:23,070 --> 00:15:26,610 bu şey olacak Bir terminal penceresi olarak bilinen alt. 316 00:15:26,610 --> 00:15:29,450 >> Bu eski bir okul Komut satırı arayüzü, 317 00:15:29,450 --> 00:15:32,240 veya CLI, o veriyor Komutları çalıştırmak için 318 00:15:32,240 --> 00:15:35,260 Bu durumda, computer-- üzerinde cloud-- bilgisayar 319 00:15:35,260 --> 00:15:39,090 kodunuzu derlemek gibi şeyler yapmak kaynak kodundan makine koduna, 320 00:15:39,090 --> 00:15:43,600 programları çalıştırmak için, ya da başlamak için sizin web sunucusu veya veritabanına erişim, 321 00:15:43,600 --> 00:15:47,454 ve diğer tekniklerin herhangi bir sayıda Biz uzun zaman önce kullanmaya başlayacağız söyledi. 322 00:15:47,454 --> 00:15:49,370 Ama oraya, biz konum Aslında olacak 323 00:15:49,370 --> 00:15:51,240 çevrimiçi ve oynamaya başlayın. 324 00:15:51,240 --> 00:15:54,399 Ve bunu yapmak için, ilk atalım Ana müdahalesi başlamak, 325 00:15:54,399 --> 00:15:55,940 ve bir programın ana kısmını yazın. 326 00:15:55,940 --> 00:15:59,170 Ve en bu işlevi kullanmasına izin Daha önce kullanılan printf, 327 00:15:59,170 --> 00:16:01,050 sadece bir şey söylemek. 328 00:16:01,050 --> 00:16:04,910 >> Yani burada CS50 IDE içinde zaten duyuyorum. 329 00:16:04,910 --> 00:16:05,930 Ben önceden giriş yaptıktan. 330 00:16:05,930 --> 00:16:07,360 Ve ben tam pencere tarandı. 331 00:16:07,360 --> 00:16:09,670 Ve böylece, sonuçta, Çok önümüzdeki sorunlar 332 00:16:09,670 --> 00:16:12,960 benzer adımları takip edeceğini çevrimiçi belgelere sağlayacaktır. 333 00:16:12,960 --> 00:16:16,360 Yani endişelenmenize gerek yok Her küçük teknik adımı emici 334 00:16:16,360 --> 00:16:17,730 Bugün burada yapmak. 335 00:16:17,730 --> 00:16:19,222 >> Ama böyle bir ekran alırsınız. 336 00:16:19,222 --> 00:16:20,430 Ben gece modunda olmak olur. 337 00:16:20,430 --> 00:16:22,944 Ve her şeyi aydınlatmak gece modu devre dışı bırakarak kadar. 338 00:16:22,944 --> 00:16:24,860 Ve sonunda gün görmek için gidiyoruz 339 00:16:24,860 --> 00:16:30,090 dosya areas-- Bu üç ana Soldaki tarayıcı, kontör kod sekmeler, 340 00:16:30,090 --> 00:16:32,430 ve altta terminal penceresi. 341 00:16:32,430 --> 00:16:34,890 >> Beni devam edelim ve İlk program yazmak. 342 00:16:34,890 --> 00:16:42,300 Ben, preemptively Dosya gideceğim Kaydet ve hello.c olarak benim dosyayı kaydedin. 343 00:16:42,300 --> 00:16:46,850 Nitekim, kongre tarafından, herhangi bir program, biz O C dilde yazılmış yazma 344 00:16:46,850 --> 00:16:49,739 bir ad olmalıdır Kongre tarafından dot c. 345 00:16:49,739 --> 00:16:53,030 Yani, çünkü bunu merhaba.c isim gidiyorum Ben sadece dünyaya merhaba demek istiyorum. 346 00:16:53,030 --> 00:16:54,820 Şimdi yakınlaştırmak için gidiyorum dışarı ve Kaydet'i tıklatın. 347 00:16:54,820 --> 00:16:58,180 Ve ben şimdi burada olan tüm bir sekme İçinde kod yazmaya başlayabilirsiniz. 348 00:16:58,180 --> 00:16:59,490 >> Bu derleme için gitmiyor. 349 00:16:59,490 --> 00:17:00,300 Bu şey ifade etmiyor. 350 00:17:00,300 --> 00:17:02,750 Ve ben dönüştürülen bu yüzden bile sıfır ve olanlar bu, 351 00:17:02,750 --> 00:17:05,390 CPU hayır sahip oluyor Fikir etrafında neler oluyor. 352 00:17:05,390 --> 00:17:14,170 Ben satırları yazarsanız Ama bu maç yapmak C'nin conventions-- C varlık ile, 353 00:17:14,170 --> 00:17:20,150 Yine, böyle bir sözdizimi dil alanındaki Ben ettik ve bu, merhaba printf --daha dünya 354 00:17:20,150 --> 00:17:22,210 rahat kazanılmış zamanla bunu. 355 00:17:22,210 --> 00:17:24,510 O yüzden yapılan sanmıyorum Herhangi bir yazım hataları. 356 00:17:24,510 --> 00:17:27,910 >> Ama, her zaman, ilk zaman bunu, yapacaksın. 357 00:17:27,910 --> 00:17:31,090 Ve ben yapmak üzereyim şey çok olabilir sizin için de ilk kez işe. 358 00:17:31,090 --> 00:17:33,610 Ve bu mükemmel Tamam Şu anda çünkü 359 00:17:33,610 --> 00:17:37,662 sadece yeniliği bir sürü görebilirsiniz, ancak zamanla tanıdık bir kez olsun 360 00:17:37,662 --> 00:17:39,870 Bu ortam ve Bu dil, ve diğerleri, 361 00:17:39,870 --> 00:17:42,370 şeyleri görmeye başlarsınız o Doğru veya yanlış ya vardır. 362 00:17:42,370 --> 00:17:44,369 >> Ve bu ne olduğunu öğretim adamlar ve ders 363 00:17:44,369 --> 00:17:48,780 yardımcıları, üzerinde zaman çok iyi olduğunu olsun kodunuzu bir hata veya sorun tespit. 364 00:17:48,780 --> 00:17:52,110 Ama iddia var Bu kodda hiçbir hata vardır. 365 00:17:52,110 --> 00:17:53,990 Yani şimdi bu programı çalıştırmak istiyorum. 366 00:17:53,990 --> 00:17:57,440 >> Şimdi kendi Mac veya PC üzerinde, ben varım çift ​​tıklayarak simgeleri alışkanlığı 367 00:17:57,440 --> 00:17:59,350 Bazı programı çalıştırmak istediğinizde. 368 00:17:59,350 --> 00:18:01,080 Ama burada bir model değil. 369 00:18:01,080 --> 00:18:04,570 CS50 IDE Bu ortamda,. 370 00:18:04,570 --> 00:18:07,192 Biz işletim kullanıyorsunuz Linux denilen sistem. 371 00:18:07,192 --> 00:18:09,900 Linux başka andırır işletim sistemi, genel olarak bilinen 372 00:18:09,900 --> 00:18:10,850 Unix gibi. 373 00:18:10,850 --> 00:18:16,340 Ve Linux, özellikle bilinir Komut Satırı Çevre, CLI sahip. 374 00:18:16,340 --> 00:18:20,070 Şimdi, biz bir spesifik kullanıyoruz Linux lezzet Ubuntu çağırdı. 375 00:18:20,070 --> 00:18:22,770 Ve Ubuntu sadece bir Linux belli sürümü. 376 00:18:22,770 --> 00:18:27,900 >> Ancak bu Linux'un bu gün aslında yapmak grafik kullanıcı arayüzleri ile birlikte gelir. 377 00:18:27,900 --> 00:18:30,360 Ve biz ne bir Burada kullanarak web tabanlı olduğunu. 378 00:18:30,360 --> 00:18:32,735 Yani bu bile görünebilir bir şey biraz farklı 379 00:18:32,735 --> 00:18:35,310 Kendinizi olabilir görülen ya da geçmişte çalıştırın. 380 00:18:35,310 --> 00:18:37,910 >> Bu yüzden devam edeceğim şimdi ve aşağıdakileri yapın. 381 00:18:37,910 --> 00:18:40,950 Ben hello.c olarak bu dosyayı kaydettiğiniz. 382 00:18:40,950 --> 00:18:47,350 Ben devam edeceğim ve tip clanghello.c Clang Yani 383 00:18:47,350 --> 00:18:49,850 C dili için bir derleyici. 384 00:18:49,850 --> 00:18:51,952 Önceden yüklenmiş bulunuyor CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 Ve kesinlikle indirebilir ve Kendi Mac veya PC üzerinde bu yükleyin. 386 00:18:54,910 --> 00:18:57,910 >> Ama, yine, tüm olmazdı Ön yapılandırma sizin için yapılır. 387 00:18:57,910 --> 00:19:00,940 şimdi Yani, ben sadece clanghello.c çalıştırmak için gidiyor. 388 00:19:00,940 --> 00:19:03,240 Ve şimdi bu sözdizimi fark Burada sonunda olacak 389 00:19:03,240 --> 00:19:06,930 Sadece bir yaşıyorum demektir fark klasör veya dizin Workspace çağırdı. 390 00:19:06,930 --> 00:19:11,030 Bu dolar işareti sadece kongre olduğunu anlam, burada komutları yazın. 391 00:19:11,030 --> 00:19:14,560 >> Bu sadece, bir istem denir ne Kongre tarafından dolar işaretidir. 392 00:19:14,560 --> 00:19:19,130 Ve ben şimdi devam edin ve eğer tıklayın Enter, hiçbir şey gibi görünüyor. 393 00:19:19,130 --> 00:19:20,930 Ama bu aslında iyi bir şey. 394 00:19:20,930 --> 00:19:23,650 az o olur Ekran, daha büyük olasılıkla 395 00:19:23,650 --> 00:19:26,710 kodunuzu doğru olmak, En azından sözdizimsel. 396 00:19:26,710 --> 00:19:29,120 >> Ben bu çalıştırmak istiyorsanız Yani Program, ben ne yapacağım? 397 00:19:29,120 --> 00:19:33,770 Eh, o çıkıyor Kongre tarafından varsayılan ad 398 00:19:33,770 --> 00:19:38,854 Bir belirtmeyen zaman programlar için program sadece a.out olduğu için isim. 399 00:19:38,854 --> 00:19:41,270 de bu sözdizimi ve sen edeceğiz çok geçmeden aşina olsun. 400 00:19:41,270 --> 00:19:47,500 >> Nokta, sadece, hey, CS50 anlamına yırtmaç IDE, a.out adında bir programı çalıştırmak 401 00:19:47,500 --> 00:19:49,400 bu benim geçerli dizinin içinde. 402 00:19:49,400 --> 00:19:51,520 Bu nokta geçerli dizini anlamına gelir. 403 00:19:51,520 --> 00:19:55,040 Ve biz başka hangi tür dizileri görürsünüz Karakter çok önce gelir. 404 00:19:55,040 --> 00:19:58,430 >> Yani burada biz merhaba dünya, girin, gidin. 405 00:19:58,430 --> 00:20:00,080 Ve ne oldu ki, fark edeceksiniz? 406 00:20:00,080 --> 00:20:01,580 o hello world yazdırmak kalmamış. 407 00:20:01,580 --> 00:20:05,990 Ayrıca taşındı sonraki satıra imleci. 408 00:20:05,990 --> 00:20:07,160 >> Ve neden oldu? 409 00:20:07,160 --> 00:20:12,400 Daha önce yazdığı kod neydi sağlanmalıdır imleç olur o 410 00:20:12,400 --> 00:20:14,882 Bir sonraki satırda gidilir? 411 00:20:14,882 --> 00:20:16,840 yaklaşık bir komik bir şey Bilgisayar sadece gidiyor olduğunu 412 00:20:16,840 --> 00:20:18,570 kelimenin tam anlamıyla yapmak için yapmanız onu ne diyeceğim. 413 00:20:18,570 --> 00:20:26,050 >> Yani merhaba printf bunu söylemek durumunda, virgül, boşluk, dünya, yakın alıntı, 414 00:20:26,050 --> 00:20:29,090 kelimenin tam anlamıyla sadece gidiyor bu karakterleri yazdırmak için. 415 00:20:29,090 --> 00:20:31,980 Ama bu özel karakteri vardı sonunda, geri çağırma, ters eğik n at. 416 00:20:31,980 --> 00:20:34,230 Ve sağlanmalıdır ne karakter gitti 417 00:20:34,230 --> 00:20:36,570 Ekranın sonraki satıra. 418 00:20:36,570 --> 00:20:38,097 >> Aslında, beni ve bu yapalım. 419 00:20:38,097 --> 00:20:39,430 Beni go ahead ve bu silme edelim. 420 00:20:39,430 --> 00:20:41,180 Şimdi, fark benim ekranın üst var 421 00:20:41,180 --> 00:20:42,890 Biraz kırmızı ışık içinde belirten sekmesi, 422 00:20:42,890 --> 00:20:45,047 Hey, Dosyanızı kaydettikten ettik. 423 00:20:45,047 --> 00:20:47,880 Yani kontrol ile devam edeceğim S ya da komut S, dosyayı kaydedin. 424 00:20:47,880 --> 00:20:51,130 Şimdi bir moment-- yeşil gitti goes--. 425 00:20:51,130 --> 00:20:53,760 Ve şimdi geri var Sadece yakın bir simge olma. 426 00:20:53,760 --> 00:21:01,860 >> Ben şimdi tekrar clanghello.c çalıştırırsanız, , Nokta çizgi, a.out, Enter Enter, 427 00:21:01,860 --> 00:21:04,110 Eğer hala çalıştı görürsünüz. 428 00:21:04,110 --> 00:21:06,020 Ama belki biraz adamcağız. 429 00:21:06,020 --> 00:21:08,714 Şu anda, benim prompt-- çalışma, ve o dolar işareti, 430 00:21:08,714 --> 00:21:10,880 ve sonra benim gerçek prompt-- aynı hat üzerinde. 431 00:21:10,880 --> 00:21:14,540 Yani bu kesinlikle bir estetik hata, bile gerçekten mantıklı bir hata değil. 432 00:21:14,540 --> 00:21:16,250 >> Yani ben sadece ne yaptığını geri almak için gidiyorum. 433 00:21:16,250 --> 00:21:18,560 Ben a.out yeniden gidiyorum. 434 00:21:18,560 --> 00:21:22,710 Ben ekledim Fark yeni satır karakteri geri döndü. 435 00:21:22,710 --> 00:21:24,280 Ben Dosyayı kaydettikten. 436 00:21:24,280 --> 00:21:31,630 >> Bu yüzden, a.out yeniden gidiyorum ve- kahretsin, bir hata, hata anlamına gelen bir hata. 437 00:21:31,630 --> 00:21:35,020 Yani hata bile olsa Ben, n orada ters eğik çizgi eklendi 438 00:21:35,020 --> 00:21:41,180 yeniden kaydedilmiş, programı yeniden koştu davranışı aynıydı. 439 00:21:41,180 --> 00:21:42,640 Neden olurdu? 440 00:21:42,640 --> 00:21:43,910 >> Ben, doğru bir adım eksik? 441 00:21:43,910 --> 00:21:47,620 Bu önemli bir adımdır önce sahip oldu Eğer kaynak kodunu değiştirmek zaman aşağıdaki amaçlara yönelik, 442 00:21:47,620 --> 00:21:49,610 o da çalıştırmak çıkıyor derleyici ile o 443 00:21:49,610 --> 00:21:51,102 Yine yeni makine kodu olsun. 444 00:21:51,102 --> 00:21:52,810 Ve makine kodu, sıfır ve olanlar, 445 00:21:52,810 --> 00:21:56,260 , Hemen hemen aynı olacak ancak değil mükemmel ki, biz gerekir çünkü, 446 00:21:56,260 --> 00:21:57,510 Tabii ki yeni bir satır. 447 00:21:57,510 --> 00:22:02,640 >> Bu yüzden ihtiyacım olacak, bu sorunu gidermek için Girin, nokta clanghello.c yeniden çalıştırmanız 448 00:22:02,640 --> 00:22:03,800 , A.out kesiyorsun. 449 00:22:03,800 --> 00:22:08,402 Ve şimdi, merhaba dünya geri Ben bekliyoruz nerede olmasını. 450 00:22:08,402 --> 00:22:09,610 Yani bu tüm ince ve iyidir. 451 00:22:09,610 --> 00:22:13,150 Ama a.out bir için oldukça aptal adıdır Program, bu olur olsa bile, 452 00:22:13,150 --> 00:22:16,530 tarihsel nedenlerle, montaj çıkışları anlam default--. 453 00:22:16,530 --> 00:22:20,780 >> Ama beni burada devam edelim ve farklı bunu. 454 00:22:20,780 --> 00:22:24,760 Benim merhaba dünya programı istiyorum aslında merhaba denilen. 455 00:22:24,760 --> 00:22:28,320 Yani eğer bu bir simge vardı benim masaüstü, bu a.out olmaz. 456 00:22:28,320 --> 00:22:29,730 Bu merhaba denilen olacaktır. 457 00:22:29,730 --> 00:22:33,660 >> Yani bunu yapmak için, o çıkıyor Clang olduğunu, birçok program gibi, 458 00:22:33,660 --> 00:22:37,980 , Komut satırı argümanlarını destekler veya bayraklar, ya da anahtarları, 459 00:22:37,980 --> 00:22:39,600 sadece kendi davranışını etkileyen hangi. 460 00:22:39,600 --> 00:22:45,160 Özellikle, Clang bir çizgi o destekler Daha sonra ikinci bir sözcük alır bayrak. 461 00:22:45,160 --> 00:22:48,190 Bu durumda, ben keyfi olacak, ama makul, merhaba diyoruz. 462 00:22:48,190 --> 00:22:50,710 Ama her şey diyebiliriz Ben a.out dışında, istediğiniz 463 00:22:50,710 --> 00:22:52,390 yerine nokta dışında olacaktır. 464 00:22:52,390 --> 00:22:55,640 >> Ve sonra sadece adını belirtin Dosyanın ben derlemek istiyoruz. 465 00:22:55,640 --> 00:22:59,190 Yani şimdi bile başında olsa Hala çınlama var komuta, 466 00:22:59,190 --> 00:23:01,410 komutun sonunda Hala dosya var, 467 00:23:01,410 --> 00:23:05,520 Ben artık bu komut satırı var argümanlar, diyorsun bu bayraklar, 468 00:23:05,520 --> 00:23:11,180 oh, bu arada, çıkış o dosya değil varsayılan a.out, merhaba çağırdı. 469 00:23:11,180 --> 00:23:13,810 >> Yani vurursam, hiçbir şey şimdi girin olmuş gibi görünüyor. 470 00:23:13,810 --> 00:23:17,900 Ve henüz, şimdi merhaba nokta çizgi yapabilirsiniz. 471 00:23:17,900 --> 00:23:19,089 Yani aynı program. 472 00:23:19,089 --> 00:23:21,380 sıfır ve olanlar Günün sonunda aynıdır. 473 00:23:21,380 --> 00:23:24,210 >> Ama iki konum Farklı files-- a.out, 474 00:23:24,210 --> 00:23:26,490 hangi ilk sürümü ve sadece aptalca adlı 475 00:23:26,490 --> 00:23:30,250 ve şimdi merhaba, hangi bir fazla Bir program için daha çekici bir isim. 476 00:23:30,250 --> 00:23:33,195 Ama dürüst olmak gerekirse, ben asla değilim Yine bu hatırlamak için gidiyor, 477 00:23:33,195 --> 00:23:34,070 ve tekrar ve tekrar. 478 00:23:34,070 --> 00:23:36,411 Ve aslında, biz mal Daha karmaşık programları 479 00:23:36,411 --> 00:23:38,160 sen komutlar yazmak zorunda olacak 480 00:23:38,160 --> 00:23:40,920 Hatta almak için gidiyoruz daha hala karmaşık. 481 00:23:40,920 --> 00:23:41,940 >> Ve böylece endişe etmeyin. 482 00:23:41,940 --> 00:23:46,220 Bu çıkıyor ki insanlar önce Bize de onlar fark var 483 00:23:46,220 --> 00:23:47,530 Bu aynı problem vardı. 484 00:23:47,530 --> 00:23:50,900 Onlar da zorunda zevk vermedi , Oldukça uzun, gizli komutları yazın 485 00:23:50,900 --> 00:23:52,200 dursun onları hatırlıyorum. 486 00:23:52,200 --> 00:23:56,070 Ve böylece bizden önce insanlar yapmış kolaylaştırmak diğer programlar 487 00:23:56,070 --> 00:23:57,670 yazılım derlemek için. 488 00:23:57,670 --> 00:24:01,609 >> Ve, gerçekten de, bu tür bir Program yap denir. 489 00:24:01,609 --> 00:24:03,150 Bu yüzden go ahead ve bunu yapmak için gidiyorum. 490 00:24:03,150 --> 00:24:05,691 Her şeyi geri almak için gidiyorum ben Sadece şu şekilde yaptı. 491 00:24:05,691 --> 00:24:07,690 Bana LS tipi olsun. 492 00:24:07,690 --> 00:24:10,980 Ve üç farkedeceğiniz seyleri a.out ve bir yıldız, merhaba 493 00:24:10,980 --> 00:24:12,810 bir yıldız ve merhaba.c ve. 494 00:24:12,810 --> 00:24:14,730 Umarım, bu olmalıdır Biraz sezgisel 495 00:24:14,730 --> 00:24:18,220 daha önceki vardı sürece Bu çalışma alanında bir şey yok. 496 00:24:18,220 --> 00:24:21,240 Ben hiçbir şey yoktu Biz sınıf başlayana kadar oluşturdu. 497 00:24:21,240 --> 00:24:22,840 >> Ve ben hello.c dosyasını oluşturdu. 498 00:24:22,840 --> 00:24:24,544 Ben o zaman derlenmiş, ve a.out çağırdı. 499 00:24:24,544 --> 00:24:27,460 Ve sonra ben biraz tekrar derlenmiş farklı ve merhaba denir. 500 00:24:27,460 --> 00:24:32,830 Yani bu dizine üç dosya var, Çalışma alanı olarak adlandırılan bu klasöre. 501 00:24:32,830 --> 00:24:35,005 Şimdi, ben de görebiliyorum Aslında uzaklaştırmak eğer. 502 00:24:35,005 --> 00:24:37,530 >> Burada uzaklaştırma ve eğer Bu üst sağ el bakmak 503 00:24:37,530 --> 00:24:39,940 Köşe, söz verildiği gibi sol Ekranın taraftaki 504 00:24:39,940 --> 00:24:42,990 Her zaman size göstermek için gidiyor Ne hesabınızda var, ne 505 00:24:42,990 --> 00:24:44,790 CS50 IDE içinde. 506 00:24:44,790 --> 00:24:46,680 Ve üç dosya var orada. 507 00:24:46,680 --> 00:24:49,070 >> Bu yüzden merhaba ve a.out kurtulmak istiyorum. 508 00:24:49,070 --> 00:24:51,275 Ve sen olabilir , Sezgisel hayal 509 00:24:51,275 --> 00:24:53,400 Kontrol tıklama sıralamak veya sağ bu tıklayın. 510 00:24:53,400 --> 00:24:54,590 Ve bu küçük menü açılır. 511 00:24:54,590 --> 00:24:57,170 Dosyayı indirebilirsiniz çalıştırmak o, önizleme, yenileme, yeniden adlandırma 512 00:24:57,170 --> 00:24:57,700 ya da ne değildir. 513 00:24:57,700 --> 00:25:00,260 >> Ve ben sadece silinemedi, ve uzağa gitmek istiyorum. 514 00:25:00,260 --> 00:25:05,260 Ama bir komutla şeyler yapalım Şimdilik çizgi, böylece rahat olsun 515 00:25:05,260 --> 00:25:07,010 Bu ile, ve aşağıdakileri yapın. 516 00:25:07,010 --> 00:25:12,345 Devam edin ve kaldırmak için gidiyorum kelimenin tam anlamıyla rma.out yazarak a.out. 517 00:25:12,345 --> 00:25:14,890 Bu komutu için çıkıyor çıkarmadan ya da bir şey silme 518 00:25:14,890 --> 00:25:16,280 kaldırmak veya silmek değil. 519 00:25:16,280 --> 00:25:21,260 >> Sadece kaydetmek için, daha özlü RM bulunuyor Bazı tuş vuruşlarını ve Enter tuşuna basın. 520 00:25:21,260 --> 00:25:24,707 Şimdi biz biraz olacağız cryptically düzenli dosya a.out kaldırın. 521 00:25:24,707 --> 00:25:27,040 Gerçekten ne bir bilmiyorum düzensiz dosya henüz olurdu. 522 00:25:27,040 --> 00:25:28,660 Ama bunu kaldırmak istiyoruz. 523 00:25:28,660 --> 00:25:30,150 >> Yani evet için y yazın gidiyorum. 524 00:25:30,150 --> 00:25:31,940 Ya da ben bunu yazın ve Enter vurabilecek. 525 00:25:31,940 --> 00:25:33,440 Ve yine, hiçbir şey olmuyor. 526 00:25:33,440 --> 00:25:35,840 Ama bu, genellikle, iyi bir şeydir. 527 00:25:35,840 --> 00:25:40,490 >> Bu sefer LS yazarsanız, Ben ne görmek gerekir? 528 00:25:40,490 --> 00:25:44,930 Umarım, sadece merhaba ve merhaba.c. 529 00:25:44,930 --> 00:25:47,286 Şimdi, olduğu gibi bir kenara, sen olacak , Yıldız bu yıldızı fark 530 00:25:47,286 --> 00:25:48,660 bu benim programlarının sonunda. 531 00:25:48,660 --> 00:25:50,201 Ve onlar da yeşil gösterilmesini ediyoruz. 532 00:25:50,201 --> 00:25:53,970 Bu sadece CS50 IDE yoludur Aslında içine cluing arasında 533 00:25:53,970 --> 00:25:55,280 o kaynak kodu değil. 534 00:25:55,280 --> 00:25:58,880 Yani, bir çalıştırılabilir bir çalıştırılabilir var aslında çalıştırabilirsiniz programı 535 00:25:58,880 --> 00:26:01,020 Daha sonra nokta eğik çizgi yapıyor ve tarafından bu isim. 536 00:26:01,020 --> 00:26:05,860 >> Şimdi, devam edin ve kaldırmak izin Bu, merhaba rm girin, düzenli kaldırmak 537 00:26:05,860 --> 00:26:08,010 evet, merhaba dosya. 538 00:26:08,010 --> 00:26:11,180 Ve şimdi ben, LS yazarsanız Biz geri hello.c döndük. 539 00:26:11,180 --> 00:26:13,917 silmek için çalışın sizin gerçek kaynak kodu. 540 00:26:13,917 --> 00:26:16,250 özellikleri bulunsa da CS50 IDE nerede yerleşik 541 00:26:16,250 --> 00:26:19,870 Eğer düzeltme geçmişinde gidebilirsiniz ve zaman içinde eğer yanlışlıkla geri sarma 542 00:26:19,870 --> 00:26:23,660 bir şey silmek, dikkatli olun yapmak Bu istekleri evet veya hayır olarak başına, 543 00:26:23,660 --> 00:26:25,381 Aslında yapmak istediğiniz ne. 544 00:26:25,381 --> 00:26:27,380 Ve ben üst kadar giderseniz Burada köşede bıraktı, 545 00:26:27,380 --> 00:26:30,696 merhaba.c tüm kalır olduğunu. 546 00:26:30,696 --> 00:26:32,570 Yani demet var diğer komutlar bu size 547 00:26:32,570 --> 00:26:37,550 Linux dünyasında yürütebilirsiniz, biri yine, emin olun vardır. 548 00:26:37,550 --> 00:26:40,180 Ve biz Make gidiyoruz Benim programı artık aşağıdaki gibi. 549 00:26:40,180 --> 00:26:43,270 >> Yerine clang yapmanın, yerine çınlama-o yapıyor, 550 00:26:43,270 --> 00:26:45,860 Ben sadece gidiyorum kelimenin tam anlamıyla Merhaba yapmak, yazın. 551 00:26:45,860 --> 00:26:49,630 Ve şimdi ben, fark hello.c dosyasını yapmak yazarak değil. 552 00:26:49,630 --> 00:26:50,910 Ben merhaba yapmak yazarak kulüpler. 553 00:26:50,910 --> 00:26:54,840 >> Ve bu program emin olun CS50 IDE, ve daha fazlası ile geliyor 554 00:26:54,840 --> 00:26:57,090 genellikle Linux ile, olan bir program 555 00:26:57,090 --> 00:26:59,120 Merhaba adlı bir program yapacak. 556 00:26:59,120 --> 00:27:03,680 Ve Kongre tarafından, varsaymak gidiyor Bu program yapılabilir takdirde, 557 00:27:03,680 --> 00:27:09,030 bir kaynak yapılabilir olacak nokta c biten kod dosyası, merhaba.c. 558 00:27:09,030 --> 00:27:12,210 >> Yani vurursan, şimdi fark girin o idam alır komut 559 00:27:12,210 --> 00:27:14,340 daha uzun aslında daha önce önce. 560 00:27:14,340 --> 00:27:16,670 biz ettik çünkü ve o Önceden yapılandırılmış CS50 IDE var 561 00:27:16,670 --> 00:27:19,878 Bu yerleşik bazı ek özellikler biz henüz gerek, ama yakında olacak bilmiyorum. 562 00:27:19,878 --> 00:27:23,470 Ama en önemli şey gerçekleştirmek için Bir Merhaba programı var şimdi. 563 00:27:23,470 --> 00:27:27,080 >> Yine LS yazarsanız, ben Bir merhaba programı var. 564 00:27:27,080 --> 00:27:32,070 Ve ben bunu çalıştırabilirsiniz nokta, hayır, a.out çizgi 565 00:27:32,070 --> 00:27:35,590 Bu bütün alanına nedeniyle Egzersiz nokta çizgi merhaba oldu. 566 00:27:35,590 --> 00:27:38,089 Ve şimdi benim merhaba dünya programı var. 567 00:27:38,089 --> 00:27:39,880 Yani ileriye doğru hareket, Biz sadece hemen hemen her zaman konum 568 00:27:39,880 --> 00:27:42,088 Bizim programları derlemek için gidiyor Komut Make kullanarak. 569 00:27:42,088 --> 00:27:45,300 Ve sonra bunları çalıştırmak için gidiyoruz nokta çizgi ve programın adı. 570 00:27:45,300 --> 00:27:49,610 Ama için yapıyor olun farkında Eğer, bir derleyici kendisi değil mi. 571 00:27:49,610 --> 00:27:53,310 Bu sadece bir kolaylık programı Bu bir derleyici tetiklemek için nasıl bilir 572 00:27:53,310 --> 00:27:56,470 Kendinizi kullanabilirsiniz böylece çalıştırmak için. 573 00:27:56,470 --> 00:28:00,220 >> Başka hangi komutlar var Linux ve sırayla CS50 IDE? 574 00:28:00,220 --> 00:28:03,107 Yakında bir var olduğunu göreceksiniz CD komutu, Değişim Rehberi. 575 00:28:03,107 --> 00:28:05,190 Bu içinde size izin verir Komut satırı arayüzü 576 00:28:05,190 --> 00:28:07,610 geri ileriye taşımak, ve, ve farklı klasörler açmak 577 00:28:07,610 --> 00:28:08,860 farenizi kullanmadan. 578 00:28:08,860 --> 00:28:12,470 >> listede açılımı gördüğümüz LS, geçerli dizindeki dosyaları. 579 00:28:12,470 --> 00:28:14,650 Dir olun yapabilirsiniz Muhtemelen anlaması başlar 580 00:28:14,650 --> 00:28:18,150 Bu dizin yapmak şimdi-- ne demek, Bir klasör oluşturmak istiyorsanız. 581 00:28:18,150 --> 00:28:21,270 akıtma RM, RM Dir için , Directory-- ve bunlar kaldırmak 582 00:28:21,270 --> 00:28:24,160 Yine, komut satırı vardır Size ne eşdeğer 583 00:28:24,160 --> 00:28:26,945 Farenizle CS50 IDE yapabilirdi. 584 00:28:26,945 --> 00:28:28,820 Ama yakında göreceksiniz bazen bu sadece 585 00:28:28,820 --> 00:28:30,610 Daha hızlı bir sürü yapmak Bir klavye ile işler, 586 00:28:30,610 --> 00:28:33,690 ve sonuçta çok daha güçlü. 587 00:28:33,690 --> 00:28:36,440 >> Ama iddia etmek zor şey şimdiye kadar yapıyorum 588 00:28:36,440 --> 00:28:39,990 zaman tüm tüm bu güçlü merhaba dünya isimli söylüyorsun. 589 00:28:39,990 --> 00:28:43,740 Ve, aslında, kodlanmış Benim programa merhaba dünya kelimeler. 590 00:28:43,740 --> 00:28:45,530 Hiçbir dinamizm henüz yoktur. 591 00:28:45,530 --> 00:28:49,320 Scratch büyüklükte bir sipariş oldu daha ilginç geçen hafta. 592 00:28:49,320 --> 00:28:51,220 >> Ve o yüzden oraya alalım. 593 00:28:51,220 --> 00:28:55,310 en tarafından bu doğru bir adım atalım Bu işlevlerin bazılarının yolu. 594 00:28:55,310 --> 00:28:59,470 Yani sadece C printf ile geliyor, Diğer fonksiyonlar ve demet 595 00:28:59,470 --> 00:29:01,850 bazıları göreceğiz zamanla, değil mi 596 00:29:01,850 --> 00:29:05,760 doğru dışarı tüm bu kolaylaştırır kullanıcı girişi almak kapısı. 597 00:29:05,760 --> 00:29:08,140 >> zayıflıkların Aslında, bir C gibi dillerin, 598 00:29:08,140 --> 00:29:10,140 ve hatta, Java ve henüz Diğerleri, değil mi ki 599 00:29:10,140 --> 00:29:15,860 gibi şeyler almak için kolaylaştırır kullanıcılar veya dizeleri, sözcüklerden tamsayılar, 600 00:29:15,860 --> 00:29:19,970 ve deyimler gibi yalnız şeyler izin nokta değerleri, ya da gerçek sayılar kayan 601 00:29:19,970 --> 00:29:23,240 Gerçekten ondalık noktaları ve birlikte yakında göreceğimiz gibi uzun numaraları. 602 00:29:23,240 --> 00:29:27,000 Yani burada fonksiyonların bu liste, bu diğer Scratch puzzle parçaları gibi 603 00:29:27,000 --> 00:29:31,090 Biz CS50 önceden yüklenmiş olması Biz birkaç hafta kullanacağınız IDE 604 00:29:31,090 --> 00:29:34,010 Eğitim türlü tekerlekleri ve aynı sonunda onları çıkarmak ve bakmak 605 00:29:34,010 --> 00:29:37,210 Kaputun, belki en altında bunlar nasıl uygulanmaktadır. 606 00:29:37,210 --> 00:29:40,460 >> Ama bunu yapmak için, haydi aslında bir program yazmak. 607 00:29:40,460 --> 00:29:41,770 Beni şimdi devam edelim. 608 00:29:41,770 --> 00:29:44,750 Ve yeni bir oluşturmak için gidiyorum Bu küçük artı tıklayarak dosya, 609 00:29:44,750 --> 00:29:45,970 ve Yeni Dosya tıklayarak. 610 00:29:45,970 --> 00:29:49,250 >> Bu sonraki kurtarmak için gidiyorum Diyelim bir, string.c, 611 00:29:49,250 --> 00:29:50,750 Ben dizeleri ile oynamak istiyorum çünkü. 612 00:29:50,750 --> 00:29:53,990 Ve C dize sadece bir karakter dizisi. 613 00:29:53,990 --> 00:29:56,090 Bu yüzden şimdi en önde gidelim ve aşağıdakileri yapın. 614 00:29:56,090 --> 00:30:01,204 >> Içeren standart IO.h-- ve o, standart IO çıkıyor 615 00:30:01,204 --> 00:30:03,360 IO sadece giriş ve çıkış anlamına gelir. 616 00:30:03,360 --> 00:30:05,920 Bu yüzden çıkıyor Burada bu hat ne olduğunu 617 00:30:05,920 --> 00:30:08,140 printf kullanmak için bize komşudur. 618 00:30:08,140 --> 00:30:10,410 Printf, tabii ki, çıktı üretir. 619 00:30:10,410 --> 00:30:15,000 Böylece printf kullanmak için, bu döner dışarı kod satırını olması gerekir 620 00:30:15,000 --> 00:30:16,040 dosyanızın üstünde. 621 00:30:16,040 --> 00:30:18,456 >> Ve biz geri geleceğiz neler Bu gerçekten uzun zaman önce gelir. 622 00:30:18,456 --> 00:30:20,400 Bu o çıkıyor Yazdığım her C programı, 623 00:30:20,400 --> 00:30:23,640 Ben bunu başlatmak lazım Bu gibi görünüyor kodu. 624 00:30:23,640 --> 00:30:26,860 Ve CS50 IDE fark edeceğiz ve diğer entegre geliştirme 625 00:30:26,860 --> 00:30:30,050 bunun gibi ortamlarda, olarak geleni yapacağız 626 00:30:30,050 --> 00:30:31,780 onlar düşünce bitirmek olabilir. 627 00:30:31,780 --> 00:30:35,930 Aslında, bir an önce geri eğer Ben sadece ne yaptığını, ben Enter tuşuna basın. 628 00:30:35,930 --> 00:30:39,160 >> Daha sonra açık kıvırcık vurmak kaşlı, tekrar Enter tuşuna basın. 629 00:30:39,160 --> 00:30:40,430 Ve bu benim düşünce tamamladı. 630 00:30:40,430 --> 00:30:45,140 Bu, bana yeni bir satır verdi az girintili güzel üslup nedenlerle göreceğiz. 631 00:30:45,140 --> 00:30:48,559 Ve o zaman otomatik olarak bana verdi Bu kaşlı ayraç benim düşünce bitirmek için. 632 00:30:48,559 --> 00:30:50,600 Şimdi, bu her zaman yapar Eğer ne yapmak istiyorsun sanırım. 633 00:30:50,600 --> 00:30:53,620 Ama büyük ölçüde, öyle bazı tuş vuruşlarını kaydetmek. 634 00:30:53,620 --> 00:30:59,560 Yani bir an önce, biz bu program-- koştu merhaba, dünya, ve sonra derlenmiş, 635 00:30:59,560 --> 00:31:00,460 ve sonra koştu. 636 00:31:00,460 --> 00:31:01,867 Ama dinamizm burada var. 637 00:31:01,867 --> 00:31:03,700 eğer biz istedik ne farklı bir şey yapmak? 638 00:31:03,700 --> 00:31:07,630 Aslında ben ne istiyorsa kullanıcıdan bir dize olsun? 639 00:31:07,630 --> 00:31:11,250 Ben bir puzzle parçası kullanmak için gidiyorum dize almak ki- tam olarak adlandırılır. 640 00:31:11,250 --> 00:31:15,860 >> C çıkıyor istemediğiniz o zaman bir bulmaca parçası girdi sağlamak için, 641 00:31:15,860 --> 00:31:19,360 ya da daha düzgün bir işleve, sen Gerçekten sadece açık parantez yapmak 642 00:31:19,360 --> 00:31:20,430 kapa parantez. 643 00:31:20,430 --> 00:31:25,540 var sanki bu yüzden var Hiçbir beyaz kutu içine yazın. 644 00:31:25,540 --> 00:31:27,720 demek blok önce küçük beyaz bir kutu vardı. 645 00:31:27,720 --> 00:31:29,660 Biz şimdi beyaz kutu yok. 646 00:31:29,660 --> 00:31:33,310 >> Ama olsun dize çağırdığınızda, ben yere sonucunu koymak istiyorum. 647 00:31:33,310 --> 00:31:37,680 Yani C çok yaygın bir paradigma olduğunu Burada olsun dize gibi bir işlevi, çağırmak, 648 00:31:37,680 --> 00:31:41,070 ve daha sonra dönüş değeri saklamak. 649 00:31:41,070 --> 00:31:44,450 Bu sonucudur onun bir şey çaba. 650 00:31:44,450 --> 00:31:47,630 >> Ve ne programlama inşa, 651 00:31:47,630 --> 00:31:53,450 C şimdi Scratch olsun veya olmasın, biz bu aslında bir şey saklamak için kullanabilir miyim? 652 00:31:53,450 --> 00:31:55,990 Doğru, bir değişken aradı? 653 00:31:55,990 --> 00:32:00,320 Ve Scratch olarak, biz gerçekten yok değişkenlerde neler olduğunu önemsiyorum. 654 00:32:00,320 --> 00:32:02,170 >> Ancak bu durumda, aslında yapmak. 655 00:32:02,170 --> 00:32:03,719 Ben dize söylemek için gidiyorum. 656 00:32:03,719 --> 00:32:05,510 Ve sonra diyebiliriz İstediğim bu şey. 657 00:32:05,510 --> 00:32:08,340 Ben onu aramak için gidiyorum adı, dize almak alır. 658 00:32:08,340 --> 00:32:10,250 >> Ve şimdi sen bile Bu biraz yeni, 659 00:32:10,250 --> 00:32:11,984 Ben bazı detay eksik ediyorum dikkat edin. 660 00:32:11,984 --> 00:32:13,150 Ben bir noktalı virgül unutuyorum. 661 00:32:13,150 --> 00:32:14,400 Ben bu düşünce bitirmek gerekir. 662 00:32:14,400 --> 00:32:17,480 Bu yüzden, benim imleci hareket ettirmek için gidiyorum ve orada virgül çarptı. 663 00:32:17,480 --> 00:32:19,130 Ve ben sadece ne yaptım? 664 00:32:19,130 --> 00:32:21,440 Bu kod doğrultusunda, Şu anda 5 numaralı, 665 00:32:21,440 --> 00:32:23,799 Ben hiçbir girişli olsun dize arıyorum. 666 00:32:23,799 --> 00:32:26,090 Yani hiçbir küçük beyaz var Kaydet blok var gibi kutu. 667 00:32:26,090 --> 00:32:28,590 >> Ben sadece, hey, söylüyorum Bilgisayar, bana bir dize olsun. 668 00:32:28,590 --> 00:32:31,390 eşittir işareti değil gerçekten eşit işareti, haddi zatında. 669 00:32:31,390 --> 00:32:33,790 Bu atama var anlamına operatör, 670 00:32:33,790 --> 00:32:37,860 Hey, bilgisayar, değeri taşımak sola üzerinde sağ taraftan. 671 00:32:37,860 --> 00:32:40,480 Ve sol, ben aşağıdaki var. 672 00:32:40,480 --> 00:32:43,580 >> Hey, bilgisayar, bana bir string-- ver karakter dizisi. 673 00:32:43,580 --> 00:32:45,637 Ve bu dize Adını diyoruz. 674 00:32:45,637 --> 00:32:47,220 Ve hatta ismi aramak zorunda değilsiniz. 675 00:32:47,220 --> 00:32:49,970 >> Ben geleneksel, diyebiliriz, S gibi bir şey, 676 00:32:49,970 --> 00:32:52,900 biz i kullanılır gibi çok değişkeni i arayın. 677 00:32:52,900 --> 00:32:54,829 Ama şimdi onunla bir şeyler yapmak gerekiyor. 678 00:32:54,829 --> 00:32:57,370 Bu oldukça aptalca olurdu çalışan, bu kod derleme deneyin 679 00:32:57,370 --> 00:32:59,410 Bu program olsa da Ben bir dize alıyorum, 680 00:32:59,410 --> 00:33:01,580 Sadece hala çünkü merhaba dünya diyecektim. 681 00:33:01,580 --> 00:33:06,140 >> Ama bunu değiştirmek için ne istiyorsun eğer. 682 00:33:06,140 --> 00:33:07,940 Neden bunu değil mi? 683 00:33:07,940 --> 00:33:11,632 Yüzde s, virgül s. 684 00:33:11,632 --> 00:33:13,090 Ve bu hala biraz gizlenmiştir. 685 00:33:13,090 --> 00:33:15,560 >> Yani benim değişkenleri daha açık yapalım. 686 00:33:15,560 --> 00:33:17,510 Beni bu değişken adı adını edelim. 687 00:33:17,510 --> 00:33:20,230 Ve biz alay edemez bakalım ayrı Buradaki neler. 688 00:33:20,230 --> 00:33:22,770 >> Yani beşinci hatta, ben bir dize alıyorum. 689 00:33:22,770 --> 00:33:25,620 Ve ben bu dizeyi depolamak ediyorum, ne olursa olsun, kullanıcının yazdığı 690 00:33:25,620 --> 00:33:28,430 onun klavye de, Ad adında bir değişkende. 691 00:33:28,430 --> 00:33:30,590 Ve o çıkıyor printf sadece yok 692 00:33:30,590 --> 00:33:34,220 çift ​​bir argüman alabilir tırnak, çift tırnak içinde bir giriş. 693 00:33:34,220 --> 00:33:39,100 >> Bu iki ya da üç ya da daha fazla, örneğin sunar İkinci ya da üçüncü veya dördüncü göre, 694 00:33:39,100 --> 00:33:42,320 tüm değişkenler isimler, ya da spesifik olarak, değerler 695 00:33:42,320 --> 00:33:48,610 Eğer takın istediğiniz, dinamik, tırnak içinde bu dize. 696 00:33:48,610 --> 00:33:52,110 Diğer bir deyişle, Bu yanlış olurdu? 697 00:33:52,110 --> 00:33:57,920 Ben sadece dersem merhaba isim, ters eğik çizgi n, benim dosyayı kaydettiğiniz kodumu derlenmiş 698 00:33:57,920 --> 00:34:01,660 ve bu koştum, ne olurdu? 699 00:34:01,660 --> 00:34:05,139 >> Sadece merhaba demek için gidiyor kelimenin tam anlamıyla, N-A-M-E, isim, 700 00:34:05,139 --> 00:34:07,900 hangi tür aptal çünkü dünyanın hiçbir farklı. 701 00:34:07,900 --> 00:34:10,400 Yani tırnak içinde bir şey Ne tam anlamıyla basılmış olur. 702 00:34:10,400 --> 00:34:12,520 Ben istiyorsanız Yani Orada bir yer tutucudur, 703 00:34:12,520 --> 00:34:14,422 Aslında kullanmanız gerekir bazı özel sözdizimi. 704 00:34:14,422 --> 00:34:17,380 Eğer okursanız ve çıkıyor printf fonksiyonu için dokümantasyon, 705 00:34:17,380 --> 00:34:21,320 o size söyleyecektir Eğer yüzde s kullanırsanız, 706 00:34:21,320 --> 00:34:23,920 aşağıdaki gibi bir değer yerine kullanabilirsiniz. 707 00:34:23,920 --> 00:34:27,190 >> Bundan sonra bir virgülden sonra çift ​​tırnak, sadece 708 00:34:27,190 --> 00:34:29,179 adını yazın İstediğiniz değişken 709 00:34:29,179 --> 00:34:33,790 Bu biçime takmak için kodu veya biçim belirteci, 710 00:34:33,790 --> 00:34:35,469 Yüzde s dizeleri için. 711 00:34:35,469 --> 00:34:39,190 Ve şimdi ben, benim Dosyayı kaydettikten verdiyseniz Benim terminale geri aşağı gidin. 712 00:34:39,190 --> 00:34:42,870 Ve ben dize olun yazın çünkü bu daha isim 713 00:34:42,870 --> 00:34:45,510 Daha önce seçtiğiniz dosya string.c olduğunu. 714 00:34:45,510 --> 00:34:48,510 >> Yani girmek, String olun söylemek için gidiyorum. 715 00:34:48,510 --> 00:34:51,550 Aman Tanrım, tüm bakmak hatalar zaten yaptık. 716 00:34:51,550 --> 00:34:55,540 Ve bu gerçekten ne, bu-- altı, yedi satırı programı gibi? 717 00:34:55,540 --> 00:34:57,790 Yani bu nerede çok can olduğunu hızla ezici olsun. 718 00:34:57,790 --> 00:35:00,890 >> Bu terminal penceresi vardır şimdi sadece regurgitated 719 00:35:00,890 --> 00:35:03,230 hata iletileri çok sayıda. 720 00:35:03,230 --> 00:35:07,560 Şüphesiz, ben daha çok hata yok Benden mesajlar kod hatları var. 721 00:35:07,560 --> 00:35:08,680 Nasıl gidiyor bakalım? 722 00:35:08,680 --> 00:35:10,920 >> Eh, en iyi strateji Size her zaman yapmak 723 00:35:10,920 --> 00:35:13,710 ezici bir karşılaşıyorsunuz Böyle hataların listesi 724 00:35:13,710 --> 00:35:16,690 geri kaydırma olduğunu, komuta bakmak Sadece, koştu benim durumumda olan 725 00:35:16,690 --> 00:35:18,020 dize hale getirilmesidir. 726 00:35:18,020 --> 00:35:21,630 yaptığını yapmak ne bakmak ve o var Uzun Clang komutu, orada hayır büyük dağıtmak. 727 00:35:21,630 --> 00:35:22,950 >> Ama kırmızı kötü. 728 00:35:22,950 --> 00:35:24,750 Yeşil olmaya çalışıyor nazik ve yardımsever. 729 00:35:24,750 --> 00:35:26,140 Ama bu durumda, hala kötü. 730 00:35:26,140 --> 00:35:27,510 Ama nerede kötü mü? 731 00:35:27,510 --> 00:35:31,450 >> String.c, satır, beş, karakter, beş. 732 00:35:31,450 --> 00:35:32,930 Yani bu sadece ortak sözleşmedir. 733 00:35:32,930 --> 00:35:36,060 Bir şey kolon şey demektir Satır numarası ve karakter sayısı. 734 00:35:36,060 --> 00:35:41,080 Hata, bildirilmemiş kullanımı tanımlayıcı bir dize. 735 00:35:41,080 --> 00:35:42,900 Eğer standart demek istediniz? 736 00:35:42,900 --> 00:35:45,530 >> Bu nedenle, ne yazık ki, Clang yardımcı olmaya çalışıyor. 737 00:35:45,530 --> 00:35:46,850 Ama bu durumda, yanlış. 738 00:35:46,850 --> 00:35:49,350 Hayır, Clang, ben standart IO demek istemedim. 739 00:35:49,350 --> 00:35:51,070 Evet, birinci hatta anlamına geliyordu. 740 00:35:51,070 --> 00:35:53,420 >> Ama hat beş burada bu biridir. 741 00:35:53,420 --> 00:35:57,040 Ve Clang değil S-T-R-l-N-G kavrar. 742 00:35:57,040 --> 00:36:01,490 Bu bir bildirilmemiş tanımlayıcı bir var sadece daha önce hiç görmediği bir kelime. 743 00:36:01,490 --> 00:36:05,730 Ve bu C, çünkü dil var Biz şu anda kod yazıyoruz 744 00:36:05,730 --> 00:36:08,070 dizeleri olarak adlandırılan değişkenler yoktur. 745 00:36:08,070 --> 00:36:11,380 >> Varsayılan, desteği ile, değil bir şey bir dize denir. 746 00:36:11,380 --> 00:36:16,750 Bu bir CS50 parçası jargon, ama çok geleneksel. 747 00:36:16,750 --> 00:36:18,600 aşağıdaki gibi Ama bu çözebilirsiniz. 748 00:36:18,600 --> 00:36:22,090 >> Ben bir kod satırı eklerseniz Bu programın üstüne, 749 00:36:22,090 --> 00:36:27,890 Başka bir dosya CS50.h içerir bir yerde CS50 IDE içinde yere 750 00:36:27,890 --> 00:36:30,820 sabit disk üzerinde, tabiri caizse, Ubuntu işletim sisteminin 751 00:36:30,820 --> 00:36:33,590 Ben koşuyorum olduğunu, bu var dosya 752 00:36:33,590 --> 00:36:38,740 işletim öğretecek bir dize ne sistem, sadece 753 00:36:38,740 --> 00:36:41,930 Standart io.h gibi dosya bu işletim sisteminde 754 00:36:41,930 --> 00:36:44,430 ne Printf öğretecek. 755 00:36:44,430 --> 00:36:46,810 >> Nitekim, biz kazanılmış olacaktı çok benzer bir mesaj 756 00:36:46,810 --> 00:36:50,600 IO standardını kabul olsaydı Io.h ve printf kullanmaya çalıştı. 757 00:36:50,600 --> 00:36:53,632 Yani önde ve sadece gitmek için gidiyorum Benim ekranı temizlemek için Denetim L alır. 758 00:36:53,632 --> 00:36:56,340 Ya da açık yazabilir ve o-ecek sadece Terminal penceresini temizleyin. 759 00:36:56,340 --> 00:36:58,020 Ama yine de zaman içinde geri kaydırabilirsiniz. 760 00:36:58,020 --> 00:37:01,100 >> Ve ben dize olun yeniden gidiyorum. 761 00:37:01,100 --> 00:37:03,660 Enter parmaklarım bu kez geçer. 762 00:37:03,660 --> 00:37:05,380 Aman Tanrım, işe yaradı. 763 00:37:05,380 --> 00:37:09,280 bana uzun bir şifreli komut gösterir Bu ne Clang yoluyla oluşturulan Yap olduğu 764 00:37:09,280 --> 00:37:10,460 ancak hiçbir hata iletisi. 765 00:37:10,460 --> 00:37:12,460 Yani olsa da, fark Tamamen alabilirsiniz 766 00:37:12,460 --> 00:37:14,480 boğulmuş hata iletileri sayısı, 767 00:37:14,480 --> 00:37:17,540 Sadece bu can sıkıcı basamaklı olabilir Clang anlamıyor etkisi 768 00:37:17,540 --> 00:37:19,620 sonra gelir bir şey, Bir sonraki sözcüğü anlamıyor, 769 00:37:19,620 --> 00:37:20,560 veya bir sonraki satır. 770 00:37:20,560 --> 00:37:22,850 Ve bu yüzden sadece kod bobinleri. 771 00:37:22,850 --> 00:37:24,440 Ama düzeltme basit olabilir. 772 00:37:24,440 --> 00:37:27,822 Ve bu nedenle her zaman üzerinde durulacak çıktı ilk satırı. 773 00:37:27,822 --> 00:37:29,530 Ve eğer yapmazsan bunu anlamak, sadece bakmak 774 00:37:29,530 --> 00:37:32,480 anahtar kelimeler için bu olabilir ipuçları ve hat numarası, 775 00:37:32,480 --> 00:37:34,650 ve karakter, nerede Bu hata olabilir. 776 00:37:34,650 --> 00:37:40,328 >> Şimdi bana devam et ve yazın izin nokta girmek, dize çizgi. 777 00:37:40,328 --> 00:37:44,340 Hm, merhaba şey söylemiyor. 778 00:37:44,340 --> 00:37:46,210 Niye ya? 779 00:37:46,210 --> 00:37:48,170 Peki, nerede çalışıyorsa, hatırlama? 780 00:37:48,170 --> 00:37:53,730 >> Muhtemelen şu anda sıkışmış Bir döngü içinde, sıralı altı tarihinde, eğer sen, 781 00:37:53,730 --> 00:37:56,950 tasarımı ile dize alın çünkü, CS50 personeli tarafından yazılmış, 782 00:37:56,950 --> 00:38:00,350 Gerçekten sadece oturmak içindir Orada bekleyen ve bekleyen, 783 00:38:00,350 --> 00:38:01,850 ve bir dize bekliyor. 784 00:38:01,850 --> 00:38:03,792 biz dize demek tüm insan girdidir. 785 00:38:03,792 --> 00:38:04,500 Yani biliyor musun? 786 00:38:04,500 --> 00:38:05,166 Beni devam edelim. 787 00:38:05,166 --> 00:38:08,704 Ve sadece bir heves, bana izin Adımı, David yazın girin. 788 00:38:08,704 --> 00:38:10,120 Şimdi daha dinamik bir program var. 789 00:38:10,120 --> 00:38:11,240 Bu merhaba David dedi. 790 00:38:11,240 --> 00:38:16,280 >> Devam edin ve tekrar çalıştırın, Bana girin Zamila ismini söyleyin deneyelim. 791 00:38:16,280 --> 00:38:17,940 Ve şimdi biz dinamik bir program var. 792 00:38:17,940 --> 00:38:19,380 Ben sert dünyayı kodlanmış değil. 793 00:38:19,380 --> 00:38:21,760 Ben zor kodlanmış değil isim, ya da David veya Zamila. 794 00:38:21,760 --> 00:38:25,350 >> Şimdi programlar gibi çok daha fazla var o giriş alırsak biz, nerede, biliyor 795 00:38:25,350 --> 00:38:27,870 biraz farklı çıktı üretir. 796 00:38:27,870 --> 00:38:31,020 Şimdi, bu iyi değil kullanıcı deneyimi, ya UX. 797 00:38:31,020 --> 00:38:33,000 Ben programı çalıştırın. 798 00:38:33,000 --> 00:38:35,830 >> Ben gereken şey bilmiyorum Aslında bakmak sürece, yapmak 799 00:38:35,830 --> 00:38:37,290 veya kaynak kodunu hatırlıyorum. 800 00:38:37,290 --> 00:38:39,640 Yani kullanıcı yapalım biraz daha iyi deneyim 801 00:38:39,640 --> 00:38:41,240 şeylerin basit ile. 802 00:38:41,240 --> 00:38:44,782 Bana bu geri dönelim Program ve sadece printf söylüyorlar. 803 00:38:44,782 --> 00:38:48,870 >> Ve beni go ahead ve adı, kolon diyelim ve bir boşluk ve ardından bir virgül. 804 00:38:48,870 --> 00:38:51,170 Ve sadece tekmeler için, hiçbir geri tepme n. 805 00:38:51,170 --> 00:38:52,980 Ve bu, kasıtlı var Ben istemiyorum çünkü 806 00:38:52,980 --> 00:38:54,590 istemi sonraki satıra geçmek için. 807 00:38:54,590 --> 00:38:58,800 >> Ben dize yapmak yerine, bunu yapmak istiyorum Yeni makine içine kodumu yeniden derlemek için 808 00:38:58,800 --> 00:39:00,980 Kod nokta dize çizgi. 809 00:39:00,980 --> 00:39:02,460 Ah, bu çok güzel olduğunu. 810 00:39:02,460 --> 00:39:05,780 Şimdi ben aslında hangi bilgisayarı biliyor Bana, bunu ona bir isim vermek istiyor. 811 00:39:05,780 --> 00:39:10,020 >> Bu yüzden devam edin ve yazın gidiyorum Rob içinde, merhaba Rob girin ve. 812 00:39:10,020 --> 00:39:13,640 Yani, bu sonunda, hala, fark gün, sadece dokuz satırı programının. 813 00:39:13,640 --> 00:39:15,090 Ama biz bu bebek adımlar attık. 814 00:39:15,090 --> 00:39:18,380 >> Biz bir satır yazdı hangi ile biz tanıdık, printf, merhaba dünya idi. 815 00:39:18,380 --> 00:39:19,980 Sonra o biraz undid. 816 00:39:19,980 --> 00:39:21,560 Ve biz aslında olsun dize kullanılır. 817 00:39:21,560 --> 00:39:23,362 Ve biz bir değişkene bu değeri attı. 818 00:39:23,362 --> 00:39:26,070 Ve sonra biz devam etti ve geliştirilmiş üçüncü bir çizgi ile daha. 819 00:39:26,070 --> 00:39:29,220 Ve bu tekrarlanan bir süreçtir yazılım yazma gerçekten anahtarıdır. 820 00:39:29,220 --> 00:39:33,420 CS50 olarak ve genel olarak hayat, genellikle, oturup olmamalıdır 821 00:39:33,420 --> 00:39:36,800 aklında bir program var ve yazma deneyin tek seferde bütün lanet şeyi. 822 00:39:36,800 --> 00:39:40,810 >> Bu, kaçınılmaz olarak, bir şekilde sonuçlanır kendimizi burada gördüm biz daha fazla hata. 823 00:39:40,810 --> 00:39:44,070 Hatta ben, bu güne kadar, sürekli diğer aptalca hatalar yapmak, 824 00:39:44,070 --> 00:39:47,480 aslında zor hatalar anlamaya zor olduğunu. 825 00:39:47,480 --> 00:39:52,095 Ama daha çok hata daha yapacak kod satırlarını tek seferde tüm yazın. 826 00:39:52,095 --> 00:39:54,220 Ve böylece bu uygulama, kod biraz geç 827 00:39:54,220 --> 00:39:57,930 Eğer rahat olduğunu, derlemek o, çalıştırmak daha genel test 828 00:39:57,930 --> 00:40:01,370 o zaman biz tuttu bu yüzden gibi Firefox veya hareket katman ve geçen hafta katman, 829 00:40:01,370 --> 00:40:04,190 bir şey bina çok daha karmaşık bir şey basit, 830 00:40:04,190 --> 00:40:05,200 Burada aynı şeyi. 831 00:40:05,200 --> 00:40:08,500 otur ve kalkmayın Bütün bir problem yazma. 832 00:40:08,500 --> 00:40:10,780 Aslında bu bebek adımları. 833 00:40:10,780 --> 00:40:15,100 >> Şimdi, dizeleri tüm değil kendileri Allah'a o kadar da kullanışlı. 834 00:40:15,100 --> 00:40:18,210 Biz gibi, ideal olarak, aslında olur Bizim araç başka bir şey var. 835 00:40:18,210 --> 00:40:20,990 Yani aslında tam olarak yapalım. 836 00:40:20,990 --> 00:40:24,900 >> beni şimdi git ve kırbaç edelim biraz daha farklı bir programı. 837 00:40:24,900 --> 00:40:28,320 Ve biz tamsayı için, bu int.c arayacağım. 838 00:40:28,320 --> 00:40:30,870 Ben benzer, gidiyorum, CS550.h bulunmaktadır. 839 00:40:30,870 --> 00:40:33,060 Ben standart IO dahil gidiyorum. 840 00:40:33,060 --> 00:40:36,630 Ve bu oldukça yaygın olacak sınıfın bu ilk birkaç gün içinde. 841 00:40:36,630 --> 00:40:39,050 >> Ve ben hazır gidiyorum Kendimi bir ana fonksiyonu ile. 842 00:40:39,050 --> 00:40:43,370 Ve şimdi yerine bir dize alma, Devam edelim ve bir int alır. 843 00:40:43,370 --> 00:40:49,285 en i diyelim, ve o olsun diyoruz int, yakın Pars, noktalı virgül. 844 00:40:49,285 --> 00:40:51,410 Ve şimdi yapalım onunla bir şey, printf. 845 00:40:51,410 --> 00:40:56,190 >> en gibi bir şey diyelim merhaba, ters eğik çizgi n, virgül i. 846 00:40:56,190 --> 00:41:00,010 Yani hemen hemen taklit ediyorum Ben sadece bir an önce ne yaptığını. 847 00:41:00,010 --> 00:41:01,660 Burada bir yer tutucu var. 848 00:41:01,660 --> 00:41:05,150 Ben istiyorum çünkü, burada i virgül Bu tutucu içine i fiş. 849 00:41:05,150 --> 00:41:07,250 >> O yüzden go ahead ve deneyelim Bu program derleme. 850 00:41:07,250 --> 00:41:10,060 Dosya int.c. adlandırılır 851 00:41:10,060 --> 00:41:12,920 Yani girmek, int yapmak, söylemek için gidiyorum. 852 00:41:12,920 --> 00:41:16,420 Aman Tanrım, ama hayır büyük dağıtmak, değil mi? 853 00:41:16,420 --> 00:41:17,230 Bir hata var. 854 00:41:17,230 --> 00:41:19,810 >> Bir sözdizimsel hata var burada böyle bu program yapamaz 855 00:41:19,810 --> 00:41:25,460 int.c, hat içinde derlenebilir Yedi, karakter 27 hata biçimi 856 00:41:25,460 --> 00:41:28,400 tip char, belirtir yani ne olursa olsun, yıldız. 857 00:41:28,400 --> 00:41:30,020 Ama tartışma türü int. 858 00:41:30,020 --> 00:41:33,110 >> De, böylece burada aşağıdaki amaçlara gitmiyorsun Bugün birçok materyal olsa da, 859 00:41:33,110 --> 00:41:35,710 biz sizi mahçup için gidiyoruz kesinlikle C her özelliği, 860 00:41:35,710 --> 00:41:38,070 ve daha genel programlama Sadece bu ilk birkaç hafta içinde. 861 00:41:38,070 --> 00:41:40,400 Bu yüzden sık sık jargon orada oluyor hangi ile aşina değiliz. 862 00:41:40,400 --> 00:41:43,350 Ve aslında, karakter yıldızı şeydir Biz geri gelmek için gidiyoruz 863 00:41:43,350 --> 00:41:44,830 Bir hafta ya da iki'nın zamanında. 864 00:41:44,830 --> 00:41:47,530 >> Ama şimdi, biz bakalım tanıdık sözcükleri ayrıştırmak. 865 00:41:47,530 --> 00:41:50,750 Biçimler arasında bu yüzden biçimi duyduğumuz belirleyicisi, biçim kodu önce. 866 00:41:50,750 --> 00:41:51,840 Bu tanıdık. 867 00:41:51,840 --> 00:41:53,840 Type-- ama argüman türü int vardır. 868 00:41:53,840 --> 00:41:55,980 Bir dakika, ben bir int. 869 00:41:55,980 --> 00:41:59,230 >> Aslında belki yüzde ler Bazı tanımlanan anlama sahiptir. 870 00:41:59,230 --> 00:42:00,230 Ve gerçekten de öyle. 871 00:42:00,230 --> 00:42:03,101 Bir tamsayı, isterseniz Bunu yerine printf, 872 00:42:03,101 --> 00:42:05,350 aslında bir kullanmak zorunda Farklı biçim belirteci. 873 00:42:05,350 --> 00:42:06,890 Ve bu bilemeyiz sürece kimse, sana söyledim 874 00:42:06,890 --> 00:42:07,973 ya da daha önce yapmıştı. 875 00:42:07,973 --> 00:42:10,490 Ama yüzde ben ne olduğunu yaygın olarak kullanılabilir 876 00:42:10,490 --> 00:42:12,240 bir tamsayı tanıttığım için printf. 877 00:42:12,240 --> 00:42:14,920 Ayrıca yüzde kullanabilirsiniz bir ondalık tamsayı d. 878 00:42:14,920 --> 00:42:16,490 Ama burada güzel ve basit. 879 00:42:16,490 --> 00:42:17,590 Bu yüzden o ile gitmek gerekir. 880 00:42:17,590 --> 00:42:21,160 >> Şimdi bana devam edelim ve yeniden çalıştırın yapmak int girin. 881 00:42:21,160 --> 00:42:23,328 Yani, hiçbir hata iyidir. 882 00:42:23,328 --> 00:42:27,260 Dot, int-- Tamam, kötü bir kullanıcı deneyimi çizgi Kendimi söylemedim çünkü 883 00:42:27,260 --> 00:42:27,760 ne yapalım. 884 00:42:27,760 --> 00:42:28,426 Ama bu sorun değil. 885 00:42:28,426 --> 00:42:29,480 Ben hızlı bir şekilde yakalamak ediyorum. 886 00:42:29,480 --> 00:42:36,260 >> Ve şimdi devam edelim ve David, tamam, Zamila, Rob yazın. 887 00:42:36,260 --> 00:42:37,820 Tamam, bu iyi bir şeydir. 888 00:42:37,820 --> 00:42:41,710 Bu sefer, ben, bir işlev kullanıyorum olsun int adlı bir bulmaca parçası. 889 00:42:41,710 --> 00:42:44,230 Ve bu out-- döner ve yaparız term-- bu sonra görüşürüz 890 00:42:44,230 --> 00:42:47,730 CS50 personeli hayata geçirdi böyle bir şekilde dize almak 891 00:42:47,730 --> 00:42:50,350 o sadece fiziksel olacak Senin için bir dize olsun. 892 00:42:50,350 --> 00:42:54,340 >> Bu içinde olsun int hayata geçirdi Böyle bir yolu olduğunu sadece olacak 893 00:42:54,340 --> 00:42:55,590 Sizin için bir tamsayı olsun. 894 00:42:55,590 --> 00:42:57,830 Ve eğer, insan, işbirliği yok, öyle 895 00:42:57,830 --> 00:43:00,590 Gerçekten sadece gidiş , Yeniden, yeniden yeniden söylemek 896 00:43:00,590 --> 00:43:05,200 kelimenin tam anlamıyla kadar, loop orada oturan Eğer bazı sihirli sayı ile mecbur, 897 00:43:05,200 --> 00:43:07,670 50 ve 50 merhaba gibi. 898 00:43:07,670 --> 00:43:11,440 >> Ya da biz yine bu çalıştırırsanız ve tip 42 yılında, 42 merhaba. 899 00:43:11,440 --> 00:43:15,750 Ve böylece olsun int fonksiyonu Bu puzzle parçası içinde 900 00:43:15,750 --> 00:43:19,050 yeterli mantıktır, yeterli düşünce, anlamaya, bir kelime nedir? 901 00:43:19,050 --> 00:43:20,330 Ve bir sayı nedir? 902 00:43:20,330 --> 00:43:23,165 Sadece sonuçta, sayılar, kabul. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> Bu yüzden bu çıkıyor Tüm bu ifade değildir. 905 00:43:30,230 --> 00:43:30,910 şimdiye kadar. 906 00:43:30,910 --> 00:43:33,690 Yani, yay, son kez oldukça hızlı bir şekilde gitti 907 00:43:33,690 --> 00:43:38,320 uygulama oyunları ve animasyon haline, Scratch ve sanat eserleri. 908 00:43:38,320 --> 00:43:42,260 Ve burada, içerik ediliyor merhaba dünya ve 50 merhaba ile. 909 00:43:42,260 --> 00:43:43,696 >> Hepsi bu ilham verici değil. 910 00:43:43,696 --> 00:43:46,070 Ve gerçekten de, bu ilk birkaç örnekler biraz zaman alacaktır 911 00:43:46,070 --> 00:43:47,510 heyecanla kadar rampa. 912 00:43:47,510 --> 00:43:49,854 Ama biz çok daha fazla var Aslında, şimdi kontrol eder. 913 00:43:49,854 --> 00:43:51,770 Ve biz gidiyoruz çok hızla katman başlamak 914 00:43:51,770 --> 00:43:53,870 Bu temel ilkellere üstünde. 915 00:43:53,870 --> 00:43:56,370 >> Ama önce, anlayalım sınırlamalar nelerdir. 916 00:43:56,370 --> 00:43:58,620 şeylerin Aslında, bir Çizilmeye kolaylıkla yok 917 00:43:58,620 --> 00:44:00,990 bakmak gerçekten bize yapmak let Kaputun altında, 918 00:44:00,990 --> 00:44:03,740 ve ne anlama Bilgisayar, ne yapabilirim, bir 919 00:44:03,740 --> 00:44:05,250 ve sınırlamalar nelerdir. 920 00:44:05,250 --> 00:44:08,580 ve gerçekten de, bu eksikliği anlayış, potansiyel ve uzun süreli 921 00:44:08,580 --> 00:44:12,520 Kendi mistakes-- yazı yol açabilir güvensiz yazılım yazma böcek, o 922 00:44:12,520 --> 00:44:13,880 bir şekilde kesmek alır. 923 00:44:13,880 --> 00:44:17,130 >> Yani en doğru bazı adımlar atalım Bu biraz daha iyi anlamak 924 00:44:17,130 --> 00:44:19,710 , Yolu, şu örneği söylüyorlar. 925 00:44:19,710 --> 00:44:23,550 Devam edin ve uygulamak için gidiyorum Toplayıcı adında bir program gerçek hızlı. 926 00:44:23,550 --> 00:44:25,134 Gibi, beraber bazı rakamları ekleyelim. 927 00:44:25,134 --> 00:44:27,800 Ve ben bazı köşeleri kod gidiyorum Burada, sadece kopyalama ve yapıştırma 928 00:44:27,800 --> 00:44:30,270 nerede Ben sadece, daha önce oldu bu yüzden erken gidiyor alabilirsiniz. 929 00:44:30,270 --> 00:44:33,090 Şimdi bu yüzden temel başlangıçlar var Toplayıcı adlı bir program. 930 00:44:33,090 --> 00:44:34,670 >> Ve en go ahead ve bu yapalım. 931 00:44:34,670 --> 00:44:38,680 Ben devam edeceğim ve diyelim ki, INTX int almak alır. 932 00:44:38,680 --> 00:44:39,430 Ve biliyor musun? 933 00:44:39,430 --> 00:44:40,990 Daha iyi bir kullanıcı deneyimi yapalım. 934 00:44:40,990 --> 00:44:45,740 >> Yani sadece x, ve etkili diyelim kullanıcı istemi bize x vermek. 935 00:44:45,740 --> 00:44:50,600 Ve sonra bana printf, go ahead ve diyelim nasıl y hakkında, bu sefer bekliyor 936 00:44:50,600 --> 00:44:53,140 kullanıcıdan iki değer. 937 00:44:53,140 --> 00:44:59,759 Ve sonra hemen önünüzde gidelim ve mesela Printf, x ve y'nin toplamıdır. 938 00:44:59,759 --> 00:45:01,300 Ve şimdi yüzde s yapmak istemiyorum. 939 00:45:01,300 --> 00:45:09,080 Ben yüzde i yapmak istiyorum, ters eğik çizgi n ve sonra toplam değeri takın. 940 00:45:09,080 --> 00:45:10,620 >> Peki nasıl bunu hakkında gidebilir? 941 00:45:10,620 --> 00:45:11,270 Biliyor musun? 942 00:45:11,270 --> 00:45:12,840 Ben değişkenleri nasıl kullanacağımı biliyorum. 943 00:45:12,840 --> 00:45:15,140 Bana sadece bir yenisini, int z ilan edelim. 944 00:45:15,140 --> 00:45:16,770 >> Ve ben burada bir tahmin almak için gidiyorum. 945 00:45:16,770 --> 00:45:21,470 Bu eşit işaretler varsa dil, belki x artı y şeyi yapabilecek, 946 00:45:21,470 --> 00:45:23,660 Çok uzun ben benim son olarak noktalı virgülle düşündü? 947 00:45:23,660 --> 00:45:28,170 Şimdi, buraya geri dönmek z takabilirsiniz, Bir noktalı virgülle bu düşünceyi bitirmek. 948 00:45:28,170 --> 00:45:33,160 Ve Şimdi bu eğer, şimdi görelim çizgiler, x'in dizileri int olsun. 949 00:45:33,160 --> 00:45:34,770 Y int olsun. 950 00:45:34,770 --> 00:45:37,980 >> , X ve y ekleyin değeri saklamak z-- bu yüzden, yine, eşittir işaretini hatırlıyor 951 00:45:37,980 --> 00:45:38,560 eşit değildir. 952 00:45:38,560 --> 00:45:41,100 Bu sağdan sola atama var. 953 00:45:41,100 --> 00:45:45,180 Ve en toplamından o çıktı izin x ve y'nin tam anlamıyla z değildir 954 00:45:45,180 --> 00:45:46,830 ama z içinde ne var. 955 00:45:46,830 --> 00:45:50,090 Yani Toplayıcı yapalım - güzel, hiçbir hata bu sefer. 956 00:45:50,090 --> 00:45:53,030 Dot, Toplayıcı, girin çizgi x 1 olacak. 957 00:45:53,030 --> 00:45:55,380 >> Y 2 olacak. 958 00:45:55,380 --> 00:45:58,964 Ve x ile y nin toplamı 3'dür. 959 00:45:58,964 --> 00:46:00,130 Böylece tüm ince ve güzel. 960 00:46:00,130 --> 00:46:03,260 >> Yani o matematik hayal ediyorum Böyle bir programda çalışmalıdır. 961 00:46:03,260 --> 00:46:04,040 Ama ne biliyor musunuz? 962 00:46:04,040 --> 00:46:06,904 Bu değişken, çizgi 12, hatta gereklidir? 963 00:46:06,904 --> 00:46:09,820 Sen alışkanlığı elde etmek gerekmez sadece değişkenleri şeyler saklamak 964 00:46:09,820 --> 00:46:10,980 Sadece yapabilirsiniz çünkü. 965 00:46:10,980 --> 00:46:13,550 Ve aslında, genellikle var: arşivlendi which kötü tasarım 966 00:46:13,550 --> 00:46:18,100 Bir değişken oluşturuyorsanız, denir Bu durumda, Z, içinde bir şey saklama 967 00:46:18,100 --> 00:46:21,390 ve hemen ardından ama bir daha asla, bunu kullanarak. 968 00:46:21,390 --> 00:46:24,700 Neden bir şey bir ad verin z gibi kelimenin tam anlamıyla iseniz 969 00:46:24,700 --> 00:46:26,770 Bu kullanacağız şey sadece bir kez, ve böylece 970 00:46:26,770 --> 00:46:29,380 Oluşturduğunuz yere yakın ilk olarak bu, 971 00:46:29,380 --> 00:46:31,052 kod satırları açısından çok yakın? 972 00:46:31,052 --> 00:46:31,760 Yani biliyor musun? 973 00:46:31,760 --> 00:46:34,480 Bu, C oldukça esnek olduğu ortaya çıktı. 974 00:46:34,480 --> 00:46:36,586 Aslında istiyorsanız plug-in değerleri burada, 975 00:46:36,586 --> 00:46:38,210 Ben yeni bir değişkeni bildirmek gerekmez. 976 00:46:38,210 --> 00:46:41,680 Ben sadece plug-in olabilir x artı y C anlar, çünkü 977 00:46:41,680 --> 00:46:43,390 aritmetik ve matematiksel operatörler. 978 00:46:43,390 --> 00:46:47,140 >> Bu yüzden sadece bu matematik yapmak, diyebiliriz x artı y bu değerler ne olursa olsun, 979 00:46:47,140 --> 00:46:50,780 Ortaya çıkan fiş Bu dizeye tamsayı. 980 00:46:50,780 --> 00:46:53,730 Yani bu olsa da, olabilir sadece bir satır daha kısa, 981 00:46:53,730 --> 00:46:58,480 Daha iyi bir tasarım, daha iyi bir program daha az kod nedenle var, çünkü 982 00:46:58,480 --> 00:46:59,921 Beni anlamak için daha az. 983 00:46:59,921 --> 00:47:01,920 Ve bu, aynı zamanda sadece daha temiz değiliz sürece 984 00:47:01,920 --> 00:47:04,620 yeni kelimeler tanıtmak, Yeni semboller, z gibi, 985 00:47:04,620 --> 00:47:07,510 olsa bile onlar gerçekten yok Bir amaç çok hizmet vermektedir. 986 00:47:07,510 --> 00:47:12,890 >> Ne yazık ki, matematik değildir Tüm bu güvenilir bazen. 987 00:47:12,890 --> 00:47:15,270 en go ahead ve bu yapalım. 988 00:47:15,270 --> 00:47:18,200 Ben devam edeceğim şimdi ve aşağıdakileri yapın. 989 00:47:18,200 --> 00:47:27,650 >> en printf, yüzde i, artı yüzde yapalım Ben, yüzde i ters eğik çizgi n olacaktır. 990 00:47:27,650 --> 00:47:32,240 Ve ben bunu tartismadik-- xyx artı y yapacağım. 991 00:47:32,240 --> 00:47:34,821 Ben sadece yeniden yazmak için gidiyorum Bu biraz daha farklı burada. 992 00:47:34,821 --> 00:47:36,320 Bana sadece hızlı aklı onay yapalım. 993 00:47:36,320 --> 00:47:37,986 Yine, en öncesinde kendimizi alamadım edelim. 994 00:47:37,986 --> 00:47:41,420 toplayıcı, nokta çizgi engerek olun. 995 00:47:41,420 --> 00:47:44,950 x 1'dir, Y, 2, 1 ve 2 3 olmasıdır. 996 00:47:44,950 --> 00:47:45,870 Yani bu iyi. 997 00:47:45,870 --> 00:47:49,060 Ama şimdi bu güçleştirelim Biraz ve yeni bir dosya oluşturun. 998 00:47:49,060 --> 00:47:53,350 >> Bu bir çağıracağım, ints, tamsayılar için çoğul söylüyorlar. 999 00:47:53,350 --> 00:47:55,980 Ben bir an önce nerede beni başlayalım. 1000 00:47:55,980 --> 00:47:57,770 Ama şimdi en birkaç diğer satırları yapalım. 1001 00:47:57,770 --> 00:48:03,430 Beni go ahead ve aşağıdakileri yapalım printf, yüzde i eksi yüzde i 1002 00:48:03,430 --> 00:48:08,959 Yüzde i virgül x, virgül yx eksi y. 1003 00:48:08,959 --> 00:48:10,750 Yani biraz yapıyorum Orada farklı matematik. 1004 00:48:10,750 --> 00:48:11,624 Başka bir tane yapalım. 1005 00:48:11,624 --> 00:48:16,610 Yani yüzde i zaman yüzde Ben yüzde i ters eğik n. 1006 00:48:16,610 --> 00:48:21,430 en plug-in x ve y ve x süreleri y olsun. 1007 00:48:21,430 --> 00:48:24,530 Biz üzerinde yıldız kullanacağız kez bilgisayar. 1008 00:48:24,530 --> 00:48:26,390 >> Sen x kullanmayın. x Burada bir değişken adı. 1009 00:48:26,390 --> 00:48:28,270 Sen çoğalması için yıldız kullanın. 1010 00:48:28,270 --> 00:48:29,020 Bir kere daha yapalım. 1011 00:48:29,020 --> 00:48:34,580 Printf yüzde I ayrılmıştır Yüzde i tarafından, yüzde i 1012 00:48:34,580 --> 00:48:40,460 ters eğik çizgi n. xy Cp grubuna bölünmesi Böylece C eğik çizgi kullanın 1013 00:48:40,460 --> 00:48:41,502 bölme yapmak. 1014 00:48:41,502 --> 00:48:42,460 Ve diğer bir yapalım. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 Yüzde i geri kalanı, bölünmüş Yüzde i tarafından, yüzde i. 1017 00:48:55,240 --> 00:48:59,550 xy-- şimdi kalanı arta kalan ne olduğunu. 1018 00:48:59,550 --> 00:49:02,980 Bir bölen çalıştığınızda Bir pay içine bir payda, 1019 00:49:02,980 --> 00:49:05,570 Bu kalan ne kadar Eğer dışarı bölmek değil ki? 1020 00:49:05,570 --> 00:49:07,910 >> Yani, gerçekten yok mutlaka bir sembol 1021 00:49:07,910 --> 00:49:09,470 Bunun için ilkokulda kullandım. 1022 00:49:09,470 --> 00:49:13,830 Ama C. yapabilirsiniz demek x Modulo y nerede 1023 00:49:13,830 --> 00:49:18,000 Bu context-- bu yüzde işareti karışacak içeri olduğunuzda 1024 00:49:18,000 --> 00:49:20,170 çift ​​tırnak, Printf bölgesinin yüzde içindeki 1025 00:49:20,170 --> 00:49:21,830 biçimi belirtici olarak kullanılır. 1026 00:49:21,830 --> 00:49:25,420 >> Eğer dışında yüzde kullandığınızda Bir matematiksel ifadede o, 1027 00:49:25,420 --> 00:49:29,910 bu modüler için modül operatörü bulunuyor Bizim amaçlarımız için arithmetic-- 1028 00:49:29,910 --> 00:49:33,650 Burada, sadece anlamına gelir, ne x kalan Y bölünmesiyle? 1029 00:49:33,650 --> 00:49:36,130 y bölü x Böylece x bölü y. 1030 00:49:36,130 --> 00:49:38,220 y bölü x kalan nedir? 1031 00:49:38,220 --> 00:49:41,780 Bir programcı söyleyebilirim gibi, mod y x var. 1032 00:49:41,780 --> 00:49:48,300 >> Burada hiç hata yapmadı Yani, bana izin devam edin ve çoğul ints, güzel yapmak, 1033 00:49:48,300 --> 00:49:50,010 ve nokta çizgi ints. 1034 00:49:50,010 --> 00:49:55,270 Ve en önde gidelim ve do, en, 1, 10 diyelim. 1035 00:49:55,270 --> 00:49:58,390 Pekala, 1 artı 10 çek, 11 olduğunu. 1036 00:49:58,390 --> 00:50:01,240 1 eksi 10 kontrol negatif 9. 1037 00:50:01,240 --> 00:50:03,420 >> 1 kez 10 çek, 10. 1038 00:50:03,420 --> 00:50:07,090 1, 10 o-- bölü Tamam, biz bu bir atlamak gerekir. 1039 00:50:07,090 --> 00:50:09,480 10 bölü 1 Kalan 1'dir. 1040 00:50:09,480 --> 00:50:10,680 Bu doğru. 1041 00:50:10,680 --> 00:50:12,630 Ama burada bir hata var. 1042 00:50:12,630 --> 00:50:15,390 >> Yani bir ben koymak benim doğru değil, teslim. 1043 00:50:15,390 --> 00:50:16,670 Ben 0'a yakın, yani. 1044 00:50:16,670 --> 00:50:20,670 Biz eğer 10 bölü 1, bilirsin bazı köşeleri kesme, tabii, sıfır. 1045 00:50:20,670 --> 00:50:28,050 Ama gerçekten, 1/10 olmalı 0.1 ya da 0.10, 0.1000, ya da benzerleri. 1046 00:50:28,050 --> 00:50:30,600 >> Gerçekten sıfır olmamalıdır. 1047 00:50:30,600 --> 00:50:35,990 Eh, bilgisayar olduğu ortaya çıktı kelimenin tam anlamıyla yapıyor yapmamız için söylediklerini. 1048 00:50:35,990 --> 00:50:39,460 Biz y bölü x gibi matematik yapıyoruz. 1049 00:50:39,460 --> 00:50:44,680 Ve çizgilerin başına hem x ve y, kod önce, tam sayılardır. 1050 00:50:44,680 --> 00:50:50,440 >> Ayrıca, hat 15, biz söylüyorum printf, hey, printf plug-in 1051 00:50:50,440 --> 00:50:54,230 bir tamsayı, plug-in bir tamsayı, plug-in bir integer-- özellikle 1052 00:50:54,230 --> 00:50:57,580 X ve Y, ve X y bölü. X ve Y, int vardır. 1053 00:50:57,580 --> 00:50:59,060 Biz orada iyiyiz. 1054 00:50:59,060 --> 00:51:01,250 >> Ancak x x tarafından ne bölünür? 1055 00:51:01,250 --> 00:51:06,790 x y olmalıdır bölünmesiyle, matematiksel, 1/10 ya da 0.1, 1056 00:51:06,790 --> 00:51:11,600 hangi bir reel sayı, gerçek bir sayıdır Potansiyel, bir ondalık noktası olan. 1057 00:51:11,600 --> 00:51:13,230 Bu bir tamsayı değil. 1058 00:51:13,230 --> 00:51:18,290 >> Ama en yakın nedir 1/10 ya da 0.1 sayı? 1059 00:51:18,290 --> 00:51:21,114 Evet, bu tür sıfırdır. 1060 00:51:21,114 --> 00:51:22,030 0.1 Bu çok benzer. 1061 00:51:22,030 --> 00:51:22,890 Ve 1 bu kadar. 1062 00:51:22,890 --> 00:51:25,870 Böylece 1/10 daha yakın olan 0 o birine daha. 1063 00:51:25,870 --> 00:51:30,800 >> Ve böylece C us-- için ne yaptığını tür onu aşağıdaki amaçlara söyledim çünkü 1064 00:51:30,800 --> 00:51:32,600 Bu tamsayı kesiliyor olduğunu. 1065 00:51:32,600 --> 00:51:40,540 Yine bir değer alıyor 0.1000 gibi bir şey olması gerekiyordu, 1066 00:51:40,540 --> 00:51:41,800 0 ve benzeri. 1067 00:51:41,800 --> 00:51:45,320 Ve her şeyi kesiliyor oluyor ondalık noktadan sonra 1068 00:51:45,320 --> 00:51:47,510 Bu tüm böylece şeyler, öyle değil, çünkü 1069 00:51:47,510 --> 00:51:51,910 Bir tamsayı kavramı uygun olan 1, 0, 1 olumsuz gibi sadece bir sayıdır 1070 00:51:51,910 --> 00:51:55,830 yukarı ve aşağı, her şeyi atıyor çünkü sen ondalık noktadan sonraki 1071 00:51:55,830 --> 00:51:59,020 ondalık nokta sığamaz tanımı gereği bir tamsayı. 1072 00:51:59,020 --> 00:52:01,290 >> Yani burada cevap sıfırdır. 1073 00:52:01,290 --> 00:52:02,600 Peki nasıl bu düzeltebilirim? 1074 00:52:02,600 --> 00:52:04,400 Biz hep birlikte bir çözüm gerekir. 1075 00:52:04,400 --> 00:52:06,880 aşağıdaki gibi Ve biz, bunu yapabilirsiniz. 1076 00:52:06,880 --> 00:52:12,820 >> Beni devam edelim ve yeni bir oluşturmak Dosya, bu bir floats.c denir. 1077 00:52:12,820 --> 00:52:16,500 Ve burada kaydetmek Aynı dizin, float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 Ve beni go ahead ve kopyalama izin önceki bu kodu bazılarıdır. 1080 00:52:23,260 --> 00:52:27,690 >> Ama yerine alıyorum bir int, hadi yapalım. 1081 00:52:27,690 --> 00:52:31,037 Bana bir kayan nokta değeri vermek x denir. nerede bir kayan noktalı 1082 00:52:31,037 --> 00:52:33,370 değer sadece tam anlamıyla Bir kayan nokta ile bir şey. 1083 00:52:33,370 --> 00:52:34,410 Bu sağa, sola hareket edebilirsiniz. 1084 00:52:34,410 --> 00:52:35,530 Gerçek bir numara. 1085 00:52:35,530 --> 00:52:38,050 >> Ve bana değil diyelim int olsun, ama float almak, 1086 00:52:38,050 --> 00:52:41,420 Ayrıca menü arasında olan C250 kütüphanede seçenekler. 1087 00:52:41,420 --> 00:52:43,220 en bir float y değiştirelim. 1088 00:52:43,220 --> 00:52:45,000 Yani bu float almak olur. 1089 00:52:45,000 --> 00:52:47,620 >> Ve şimdi, ints takmak istemiyorum. 1090 00:52:47,620 --> 00:52:53,130 Biz yüzde kullanmak zorunda çıkıyor float için f float için yüzde f 1091 00:52:53,130 --> 00:52:54,560 ve şimdi kaydedin. 1092 00:52:54,560 --> 00:53:01,220 Ve şimdi, parmak çarpı işareti yapmak şamandırası, güzel, nokta çizgi yüzer. 1093 00:53:01,220 --> 00:53:04,280 x bir 1. y olacak Tekrar 10 olacak. 1094 00:53:04,280 --> 00:53:08,240 >> Ve, güzel, tamam benim ekleme doğrudur. 1095 00:53:08,240 --> 00:53:10,240 Ben, daha fazla bilgi için umuyordum ama bunu yazmayı unuttum. 1096 00:53:10,240 --> 00:53:13,250 Yani gidip bu mantık hatasını düzeltmek edelim. 1097 00:53:13,250 --> 00:53:16,280 >> en go ahead ve aşağıdaki kapmak edelim. 1098 00:53:16,280 --> 00:53:18,080 Biz sadece küçük bir kopyala ve yapıştır yapacağız. 1099 00:53:18,080 --> 00:53:20,080 Ve ben eksi söylemek için gidiyorum. 1100 00:53:20,080 --> 00:53:21,890 >> Ve ben kere söyleyeceğim. 1101 00:53:21,890 --> 00:53:24,060 Ve ben bölünmüş söylemek için gidiyorum. 1102 00:53:24,060 --> 00:53:28,240 Ve ben, modulo yapmak için gitmiyorum ki burada da dair değildir 1103 00:53:28,240 --> 00:53:33,690 f bölü ve süreleri plus-- Tamam, yine bu yapalım. 1104 00:53:33,690 --> 00:53:44,210 >> Yap yüzen, nokta çizgi yüzen, ve 1, 10, ve- güzel, hayır, tamam. 1105 00:53:44,210 --> 00:53:45,250 Yani bir aptalım. 1106 00:53:45,250 --> 00:53:47,000 Yani bu çok yaygın bilgisayar bilimi 1107 00:53:47,000 --> 00:53:49,780 Böyle aptalca hatalar yapmaya. 1108 00:53:49,780 --> 00:53:53,100 >> pedagojik amacıyla, ne gerçekten yapmak istediğim 1109 00:53:53,100 --> 00:53:57,410 Burada bilim değiştirmek oldu artı için, eksi, kez, 1110 00:53:57,410 --> 00:54:01,140 ve umarım senin gibi, bölmek için Bu egzersiz sırasında fark ettim. 1111 00:54:01,140 --> 00:54:04,700 Yani şimdi Şimdi bu yeniden derlemek izin Program, nokta çizgi yüzen yapmak. 1112 00:54:04,700 --> 00:54:07,950 >> Ve üçüncü kez, haydi Benim beklentilerini karşılayan olmadığını görmek. 1113 00:54:07,950 --> 00:54:21,480 1, 10, 1.000, tamam, evet, girmek, 10.000 bölü, 0,100000 olduğunu. 1114 00:54:21,480 --> 00:54:24,952 Ve biz kontrol edebilirsiniz çıkıyor kaç sayılar o ondalık nokta peşinde. 1115 00:54:24,952 --> 00:54:25,660 Biz aslında olacaktır. 1116 00:54:25,660 --> 00:54:26,790 Biz geri geleceğiz. 1117 00:54:26,790 --> 00:54:28,440 >> Ancak şimdi, aslında, matematik doğrudur. 1118 00:54:28,440 --> 00:54:30,090 Yani, yine, paket burada ne var? 1119 00:54:30,090 --> 00:54:33,050 Bu C vardır çıkıyor sadece, sadece, aslında, strings-- ve 1120 00:54:33,050 --> 00:54:36,120 Gerçekten yoktur çünkü biz CS50 kütüphanesi olan ekleyin. 1121 00:54:36,120 --> 00:54:37,710 Ama ints yoktur. 1122 00:54:37,710 --> 00:54:38,990 >> Ayrıca yüzer vardır. 1123 00:54:38,990 --> 00:54:42,810 Ve diğer verilerin bir demet çıkıyor türleri de biz önce uzun kullanmak edeceğiz. 1124 00:54:42,810 --> 00:54:46,270 Tek bir isterseniz çıkıyor karakter karakter, bir dize, 1125 00:54:46,270 --> 00:54:47,610 Sadece bir karakter kullanabilirsiniz. 1126 00:54:47,610 --> 00:54:52,350 >> Eğer bir bool istiyorsanız çıkıyor, Sadece doğru veya yanlış bir Boole değeri, 1127 00:54:52,350 --> 00:54:56,840 CS50 kütüphaneye sayesinde, biz ettik yanı sıra C bool veri türü eklendi. 1128 00:54:56,840 --> 00:54:59,180 Ama aynı zamanda içinde mevcut bulunuyor birçok diğer diller de. 1129 00:54:59,180 --> 00:55:04,130 Ve bazen seni çıkıyor varsayılan olarak gelen büyük sayılar gerek 1130 00:55:04,130 --> 00:55:05,210 ints ve yüzdürücülü. 1131 00:55:05,210 --> 00:55:10,590 >> Ve, aslında, bir çift bir sayı değil 32 bit, ancak 64 bit kullanır. 1132 00:55:10,590 --> 00:55:14,990 Ve uzun uzun bir sayı olduğunu Değil 32, bit ama 64 bit kullanır 1133 00:55:14,990 --> 00:55:19,190 sırasıyla kayan nokta için sırasıyla değerler ve tamsayılar. 1134 00:55:19,190 --> 00:55:22,780 Bu yüzden şimdi aslında atalım eylem görüyoruz. 1135 00:55:22,780 --> 00:55:26,150 >> Ben burada devam edeceğim ve bir diğer programı kırbaç. 1136 00:55:26,150 --> 00:55:32,020 İşte, ben önde gidiyorum ve CS50.h. eklerim 1137 00:55:32,020 --> 00:55:34,910 Ve gitmeme izin, standart io.h dahil 1138 00:55:34,910 --> 00:55:37,320 >> Ve bir şey fark edeceksiniz Korkak burada oluyor. 1139 00:55:37,320 --> 00:55:40,592 Bu şeyler kodlama renk değil Daha önce olduğu gibi aynı şekilde. 1140 00:55:40,592 --> 00:55:43,550 Ve o çünkü ben var, çıkıyor şeyi bir dosya adı vermemiştir. 1141 00:55:43,550 --> 00:55:47,270 >> Bu bir arayacağım sizeof.c ve Kaydet çarptı. 1142 00:55:47,270 --> 00:55:51,039 Ve benim çok ne olur fark o siyah fonunda beyaz kodu. 1143 00:55:51,039 --> 00:55:52,830 Şimdi, en azından var orada bazı mor. 1144 00:55:52,830 --> 00:55:54,490 Ve bu sözdizimi vurgulanmış. 1145 00:55:54,490 --> 00:55:57,700 >> , Oldukça basit, ben ettik çünkü bu dosyanın ne tür IDE anlattı 1146 00:55:57,700 --> 00:56:01,060 o buna bir isim vererek ve Özellikle bir dosya uzantısı. 1147 00:56:01,060 --> 00:56:03,620 Şimdi, go ahead ve bu yapalım. 1148 00:56:03,620 --> 00:56:08,910 Ben önde ve çok gideceğim sadece following-- bool çıktı 1149 00:56:08,910 --> 00:56:11,080 yüzde LU olduğunu. 1150 00:56:11,080 --> 00:56:12,950 >> Biz geri geleceğiz sadece bir an o. 1151 00:56:12,950 --> 00:56:15,840 Ve sonra ben gidiyorum bool baskı boyutu. 1152 00:56:15,840 --> 00:56:18,170 Ve şimdi, sadece kurtarmak için Kendimi biraz zaman, ben 1153 00:56:18,170 --> 00:56:20,280 bir bütün yapacak Aynı anda bu demet. 1154 00:56:20,280 --> 00:56:24,620 Ve özellikle, ben gidiyorum char ve char değiştirebilirsiniz. 1155 00:56:24,620 --> 00:56:27,760 Bu bir, ben değiştirmek için gidiyorum bir çift ve bir çift için. 1156 00:56:27,760 --> 00:56:31,440 >> Bu bir, ben değiştirmek için gidiyorum bir float ve şamandıraya. 1157 00:56:31,440 --> 00:56:35,670 Bu bir, ben gidiyorum Bir int ve int değiştirin. 1158 00:56:35,670 --> 00:56:38,660 Ve bu, ben gidiyorum uzun uzun değiştirmek için. 1159 00:56:38,660 --> 00:56:40,840 Ve hala sürüyor uzun bir süre, çok uzun. 1160 00:56:40,840 --> 00:56:44,572 >> Ve sonra, son olarak, ben verdim Kendimi bir çok, dize. 1161 00:56:44,572 --> 00:56:47,030 Bu C, var olduğu ortaya çıktı adı verilen özel operatör 1162 00:56:47,030 --> 00:56:50,260 Bu boyutu kelimenin tam anlamıyla Zaman koşacağız, 1163 00:56:50,260 --> 00:56:52,099 Bize boyutunu anlatmak bu değişkenlerin her biri. 1164 00:56:52,099 --> 00:56:53,890 Ve bu, şimdi, bir yoludur Biz geri bağlanabilir 1165 00:56:53,890 --> 00:56:57,140 Geçen haftaki tartışma veri ve temsil. 1166 00:56:57,140 --> 00:57:00,330 >> Beni go ahead ve derleme yapalım dot çizgi boyutu boyutu. 1167 00:57:00,330 --> 00:57:01,210 Ve görelim. 1168 00:57:01,210 --> 00:57:05,210 Bu, C çıkıyor Özellikle CS50 IDE, 1169 00:57:05,210 --> 00:57:08,170 özellikle üzerinde işletim sistemi Ubuntu, 1170 00:57:08,170 --> 00:57:11,100 64-bit işletim hangi Bu durumda sistem, 1171 00:57:11,100 --> 00:57:14,189 Bir bool gidiyor alan bir bayt kullanırlar. 1172 00:57:14,189 --> 00:57:16,480 Bu boyut ölçülür nasıl, değil bit, ancak bayt. 1173 00:57:16,480 --> 00:57:18,690 Ve bir byte sekiz bit olduğunu hatırlayın. 1174 00:57:18,690 --> 00:57:22,030 Yani bool, hatta sizin bile teknik olarak sadece gereken, 0 ya da 1, 1175 00:57:22,030 --> 00:57:24,092 Biraz savurgan var nasıl biz bunu uyguladık. 1176 00:57:24,092 --> 00:57:26,800 Aslında bir bütün kullanacak byte-- böylece tüm sıfır, belki vardır 1177 00:57:26,800 --> 00:57:31,050 Böyle tüm olanlar, ya da bir şey, ya da sadece bir 1 sekiz bit arasında. 1178 00:57:31,050 --> 00:57:34,962 >> Bir karakter, arada bir karakter için kullanılır Geçen haftada bir ASCII karakter gibi, 1179 00:57:34,962 --> 00:57:36,170 bir karakter olacak. 1180 00:57:36,170 --> 00:57:42,340 Ve bu bizim kavramı ile synchs o değil, en fazla 256 bits-- olmak 1181 00:57:42,340 --> 00:57:45,360 hiçbir varlık ile synchs kadar daha uzun 8 bit, burada 1182 00:57:45,360 --> 00:57:47,450 Bize kadar 256 gibi değerleri verir. 1183 00:57:47,450 --> 00:57:49,680 Bir çift gidiyor 8 bayt veya 64 bit olması. 1184 00:57:49,680 --> 00:57:50,510 >> Bir şamandıra 4'tür. 1185 00:57:50,510 --> 00:57:51,690 Bir int 4'tür. 1186 00:57:51,690 --> 00:57:52,980 Çok, çok uzun 8'dir. 1187 00:57:52,980 --> 00:57:54,716 Ve bir dize 8'dir. 1188 00:57:54,716 --> 00:57:55,840 Ama bu konuda endişelenmeyin. 1189 00:57:55,840 --> 00:57:57,340 Biz o katmanı geri soyma için gidiyoruz. 1190 00:57:57,340 --> 00:57:59,940 Bu dizeleri can, çıkıyor 8 byte daha uzun. 1191 00:57:59,940 --> 00:58:02,310 >> Ve, gerçekten, biz yazdık Zaten dizeleri, merhaba dünya, 1192 00:58:02,310 --> 00:58:03,700 8 byte daha uzun. 1193 00:58:03,700 --> 00:58:06,270 Ama biz geri geleceğiz sadece bir an o. 1194 00:58:06,270 --> 00:58:09,690 Ama buradan almak şudur. 1195 00:58:09,690 --> 00:58:15,320 >> Herhangi bir bilgisayar, yalnızca sonlu vardır bellek ve alan miktarı. 1196 00:58:15,320 --> 00:58:17,860 Sen sadece çok saklayabilirsiniz Mac veya PC üzerinde dosyaları. 1197 00:58:17,860 --> 00:58:23,030 Sadece pek çok program saklayabilirsiniz RAM bile, mutlaka bir kez çalışan 1198 00:58:23,030 --> 00:58:26,360 Sanal bellek ile, çünkü RAM sınırlı miktarda var. 1199 00:58:26,360 --> 00:58:28,990 >> Ve sadece eğer resim-- için Eğer bir dizüstü açtı hiç 1200 00:58:28,990 --> 00:58:31,300 ya da ekstra bellek sipariş bir bilgisayar için, sen 1201 00:58:31,300 --> 00:58:33,670 olduğunu bilmiyor olabilir Bilgisayarınızın içinde 1202 00:58:33,670 --> 00:58:36,590 görünüyor şeydir Bu gibi küçük. 1203 00:58:36,590 --> 00:58:40,540 Yani bu adlandırılmış bir ortak şirketi Crucial bilgisayarlar için RAM yapar. 1204 00:58:40,540 --> 00:58:43,620 Ve RAM nerede programlar Onlar koşarken yaşıyor. 1205 00:58:43,620 --> 00:58:46,630 >> Yani çift her Mac veya PC üzerinde Bir programı tıklatın ve açılır, 1206 00:58:46,630 --> 00:58:48,921 ve bazı Word belgesi açar ya da böyle bir şey, 1207 00:58:48,921 --> 00:58:51,764 Bu geçici olarak saklar RAM, RAM daha hızlı olduğu için 1208 00:58:51,764 --> 00:58:53,680 Sabit diskinizde daha ya senin solid state disk. 1209 00:58:53,680 --> 00:58:56,600 programlar nereye Yani bu sadece Onlar çalıştırdığıomızda yaşamak için, 1210 00:58:56,600 --> 00:58:58,060 veya dosyalar kullanılmaktadır zaman. 1211 00:58:58,060 --> 00:59:00,890 >> Yani bakmak şeyler var dizüstü bu içi gibi, 1212 00:59:00,890 --> 00:59:03,320 ya da biraz daha büyük şeyler masaüstünüzde içinde. 1213 00:59:03,320 --> 00:59:07,440 Ama anahtar yalnızca var olan Bunlardan sonlu sayıda. 1214 00:59:07,440 --> 00:59:11,230 Ve sadece sınırlı miktarda var Donanım bu masada oturan sağ 1215 00:59:11,230 --> 00:59:11,730 İşte. 1216 00:59:11,730 --> 00:59:15,920 >> Yani, elbette, biz saklayamazsınız sonsuz uzun sayılar. 1217 00:59:15,920 --> 00:59:19,030 Ve henüz, sen geri düşünüyorsanız ilkokul, kaç basamak olabilir 1218 00:59:19,030 --> 00:59:21,400 Eğer sağa var Bir ondalık noktasının? 1219 00:59:21,400 --> 00:59:24,680 bu konuda, kaç basamak olabilir Bir ondalık noktasının solunda var mı? 1220 00:59:24,680 --> 00:59:26,300 Gerçekten, sonsuz sayıda. 1221 00:59:26,300 --> 00:59:30,840 >> Şimdi, biz insanlar sadece olabilir milyon okunur biliyorum, 1222 00:59:30,840 --> 00:59:34,990 milyar, trilyon, ve katrilyon ve kentilyon. 1223 00:59:34,990 --> 00:59:39,370 Ve ben sınırlarını zorlayan ediyorum benim understanding-- veya benim-- anlıyorum 1224 00:59:39,370 --> 00:59:41,110 sayılar, ama benim sayıların telaffuz. 1225 00:59:41,110 --> 00:59:44,720 Ama onlar sonsuz büyük alabilirsiniz sola sonsuz sayıda rakam 1226 00:59:44,720 --> 00:59:47,050 veya ondalık noktasının sağındaki. 1227 00:59:47,050 --> 00:59:50,040 >> Ama bilgisayarlar yalnızca bir var bellek sınırlı miktarda, 1228 00:59:50,040 --> 00:59:53,510 transistör sonlu sayıda bir içeride ampullerin sonlu sayıda. 1229 00:59:53,510 --> 00:59:57,350 Peki ne olur Eğer alanı tükenmeye? 1230 00:59:57,350 --> 00:59:59,620 Diğer bir deyişle, eğer geçen hafta geri düşünmek 1231 00:59:59,620 --> 01:00:03,160 biz numaraları hakkında konuştuk kendilerini, bir ikili temsil edilen 1232 01:00:03,160 --> 01:00:05,480 elimizdeki varsayalım Burada bu 8 bitlik değer. 1233 01:00:05,480 --> 01:00:08,290 >> Ve biz yedi 1'ler ve bir 0 var. 1234 01:00:08,290 --> 01:00:10,827 Ve biz istiyoruz varsayalım Bu değere 1 ekleyin. 1235 01:00:10,827 --> 01:00:12,410 Bu şu anda gerçekten büyük bir sayıdır. 1236 01:00:12,410 --> 01:00:16,610 >> Hatırladığım Bu, 254 Geçen hafta sağ taraftan matematik. 1237 01:00:16,610 --> 01:00:19,480 Ama ne değiştirirseniz En sağdaki 0 ​​1 mi? 1238 01:00:19,480 --> 01:00:22,800 Bütün sayı, Tabii ki, sekiz 1'leri olur. 1239 01:00:22,800 --> 01:00:24,050 Bu yüzden hala iyiyiz. 1240 01:00:24,050 --> 01:00:27,204 >> Ve muhtemelen temsil 255 olsa bağlama göre 1241 01:00:27,204 --> 01:00:29,120 aslında temsil edebilecek negatif bir sayı. 1242 01:00:29,120 --> 01:00:31,240 Ama bu başka bir zaman daha fazla. 1243 01:00:31,240 --> 01:00:34,220 bu konuda gibi bu hissediyor Ben güvenebilirsiniz gibi yüksek. 1244 01:00:34,220 --> 01:00:35,290 >> Şimdi, sadece 8 bit var. 1245 01:00:35,290 --> 01:00:38,170 Ve benim Mac, mutlaka, yol var fazla bellek 8 bit. 1246 01:00:38,170 --> 01:00:39,170 Ama sonlu var. 1247 01:00:39,170 --> 01:00:43,230 Dolayısıyla aynı argüman bile geçerlidir biz Ekranda bu olanları daha var. 1248 01:00:43,230 --> 01:00:47,020 >> Ama ne sen olur Bu numarayı, 255 depolama, 1249 01:00:47,020 --> 01:00:49,290 ve 1 biraz daha yüksek saymak istiyor? 1250 01:00:49,290 --> 01:00:51,600 Sen 255 den 256 gitmek istiyorum. 1251 01:00:51,600 --> 01:00:55,800 Sorun, tabii olduğunu eğer geçen hafta gibi sıfırdan saymaya başlar, 1252 01:00:55,800 --> 01:00:59,670 Eğer yüksek sayılmaz 256 olarak, tek başına 257 let 1253 01:00:59,670 --> 01:01:02,584 Yalnız 258 izin m çünkü ne Bir 1 eklemek ne olur? 1254 01:01:02,584 --> 01:01:05,000 Eski sınıf okulu yaparsanız yaklaşım, sen burada skoru 1 1255 01:01:05,000 --> 01:01:08,150 ve daha sonra 1 ve 1 2, ama bu Gerçekten sıfır, sen 1 taşımak, 1256 01:01:08,150 --> 01:01:09,695 1 taşımak, 1 taşırlar. 1257 01:01:09,695 --> 01:01:12,620 tüm bunları, Bu 1'ler, sıfıra gidin. 1258 01:01:12,620 --> 01:01:17,820 Ve biri olarak, evet, rüzgar sol tarafta, bir 1 işaret etti. 1259 01:01:17,820 --> 01:01:22,540 Ama her şey yapabilirsiniz aslında görmek ve bellekte sığdırmak 1260 01:01:22,540 --> 01:01:27,960 demek ki sadece sekiz 0'ın olduğunu bir noktada eğer, bir bilgisayar, 1261 01:01:27,960 --> 01:01:32,490 yeterince yüksek yukarı sayma çalıştı, sen sarmak için gidiyor, o görünüyor 1262 01:01:32,490 --> 01:01:35,850 belki sıfır, hatta negatif Sıfırdan daha düşük olan sayılar. 1263 01:01:35,850 --> 01:01:37,260 >> Ve biz bu tür görebilirsiniz. 1264 01:01:37,260 --> 01:01:39,900 Beni go ahead ve yazalım Burada gerçek bir hızlı bir program. 1265 01:01:39,900 --> 01:01:43,690 Beni go ahead ve yazalım Taşma adında bir program. 1266 01:01:43,690 --> 01:01:49,980 arasında, CS50.h içerir Standart IO.h-- oh 1267 01:01:49,980 --> 01:01:51,730 Gerçekten benim dizim kaçırdı. 1268 01:01:51,730 --> 01:01:54,440 Yani overflow.c olarak bu tasarruf sağlar. 1269 01:01:54,440 --> 01:01:57,084 >> Ve şimdi int main void-- ve çok geçmeden, yaparız 1270 01:01:57,084 --> 01:01:59,500 nedenini açıklayan geri gelmek biz int main boşluğu yazmaya devam. 1271 01:01:59,500 --> 01:02:02,080 Ama şimdi, hadi yapalım hafife bu alarak. 1272 01:02:02,080 --> 01:02:06,200 en kendime bir int vereyim, ve 0 olarak başlatılamadı. 1273 01:02:06,200 --> 01:02:11,716 >> o sırada int için yapalım i zero-- olsun Aslında, en sonsuz bir döngüye yapalım 1274 01:02:11,716 --> 01:02:12,590 ve ne olduğunu görün. 1275 01:02:12,590 --> 01:02:22,440 Gerçek olsa, o zaman n çıktısını izin yüzde i ters eğik çizgi n, plug-in n. 1276 01:02:22,440 --> 01:02:27,200 Ama, şimdi, n artı 1 olur yapalım. 1277 01:02:27,200 --> 01:02:29,660 >> Diğer bir deyişle, her bir So Bu sonsuz bir döngüye yineleme, 1278 01:02:29,660 --> 01:02:32,550 en n değerini alalım, ve daha sonra 1 eklenir ve 1279 01:02:32,550 --> 01:02:34,350 Soldaki geri n sonucunu saklamak. 1280 01:02:34,350 --> 01:02:37,150 Ve, aslında, sözdizimi gördüğümüz Biraz böyle, kısaca. 1281 01:02:37,150 --> 01:02:39,730 Serin bir hüner yerine ise Bütün bu dışarı yazma, 1282 01:02:39,730 --> 01:02:42,770 aslında bir n-plus 1 eşittir söyleyebiliriz. 1283 01:02:42,770 --> 01:02:47,480 >> Ya da gerçekten fantezi olmak istiyorsanız, Eğer n-plus artı virgül söyleyebiliriz. 1284 01:02:47,480 --> 01:02:50,130 Fakat bu son iki sadece vardır Biz sözdizimsel şeker dediğimiz 1285 01:02:50,130 --> 01:02:50,790 ilk şey için. 1286 01:02:50,790 --> 01:02:53,456 >> ilk şey, daha açık olduğunu tamamen iyi, tamamen doğru. 1287 01:02:53,456 --> 01:02:55,470 Ama bu daha sık görülür, ben söyleyeceğim. 1288 01:02:55,470 --> 01:02:57,210 Yani biz sadece bir an için yapacağım. 1289 01:02:57,210 --> 01:03:01,685 >> sesler Şimdi yapalım taşma, oldukça uğursuz, nokta çizgi taşması. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 en n oldukça büyük oluyor, bir bakalım. 1292 01:03:09,852 --> 01:03:11,310 Ama düşünmek izin, n ne kadar büyük alabilirim? 1293 01:03:11,310 --> 01:03:12,870 >> n int. 1294 01:03:12,870 --> 01:03:16,400 Biz boyutu ile bir an önce gördüm örnek bir int dört bayt olduğunu. 1295 01:03:16,400 --> 01:03:22,070 Biz geçen hafta biliyoruz, dört bayt 32 bit, çünkü 8 kez 4, bu 32 var. 1296 01:03:22,070 --> 01:03:23,460 Bu 4 milyar olacak. 1297 01:03:23,460 --> 01:03:25,802 >> Ve biz 800.000 kadar vardır. 1298 01:03:25,802 --> 01:03:28,510 Bu sonsuza kadar sürecekse Ben belki mümkün olduğunca yüksek sayılır. 1299 01:03:28,510 --> 01:03:30,635 Bu yüzden, go ahead için gidiyorum gibi, daha önce uzun olabilir 1300 01:03:30,635 --> 01:03:34,910 ve açıkçası Kontrol Kontrol C- vurmak C, bir sürü nerede Kontrol C genellikle 1301 01:03:34,910 --> 01:03:36,034 araçlar iptal. 1302 01:03:36,034 --> 01:03:38,200 Ne yazık ki, bunun nedeni bulutta çalışan, 1303 01:03:38,200 --> 01:03:41,190 bazen bulut çok şeyler tükürme, 1304 01:03:41,190 --> 01:03:44,180 çok çıktı, o gidiyor Benim girişi için biraz zaman alabilir 1305 01:03:44,180 --> 01:03:45,630 bulut almak için. 1306 01:03:45,630 --> 01:03:49,240 Yani vurmak olsa bile Bir kaç saniye önce Kumanda C, 1307 01:03:49,240 --> 01:03:53,110 Bu kesinlikle tarafı sonsuz bir döngüye etkisi. 1308 01:03:53,110 --> 01:03:56,070 >> Ve bu nedenle bu tür durumlarda, konum Bu olacak terk edecek. 1309 01:03:56,070 --> 01:03:59,050 Ve biz başka eklemek için gidiyoruz Buraya terminal penceresi 1310 01:03:59,050 --> 01:04:03,186 Tabii değil artı ile bunun gibi, hala düşünüyor çünkü. 1311 01:04:03,186 --> 01:04:05,310 Ve en go ahead ve olalım Biraz daha makul. 1312 01:04:05,310 --> 01:04:07,768 >> Devam edin ve yapacağım Bu sadece sonlu birçok kez. 1313 01:04:07,768 --> 01:04:10,047 , En döngü için kullanmasına izin hangi Daha önce değinmiştir. 1314 01:04:10,047 --> 01:04:10,630 Bunu yapalım. 1315 01:04:10,630 --> 01:04:13,430 Bana i 0 alır başka değişken int ver. 1316 01:04:13,430 --> 01:04:17,430 Ben, en, i ++ 64 diyelim daha azdır. 1317 01:04:17,430 --> 01:04:24,010 Ve şimdi önde ve baskı gidelim n yüzde i dışarı n virgül. 1318 01:04:24,010 --> 01:04:27,547 Ve bu hala o n- sonsuza kadar sürecek. 1319 01:04:27,547 --> 01:04:28,130 Bunu yapalım. 1320 01:04:28,130 --> 01:04:30,620 >> n alır n kez 2. 1321 01:04:30,620 --> 01:04:34,140 Ya da fantezi olabilir ve süreleri 2 eşittir yapmak. 1322 01:04:34,140 --> 01:04:37,120 Ama sadece n diyelim 2 katı, kendisine eşittir. 1323 01:04:37,120 --> 01:04:39,321 Diğer bir deyişle, bu Programın yeni sürümü, 1324 01:04:39,321 --> 01:04:41,820 Sonsuza kadar beklemek istemiyorum gibi 800.000 4 milyar ila. 1325 01:04:41,820 --> 01:04:43,070 Sadece bu over alalım. 1326 01:04:43,070 --> 01:04:44,920 >> en doğrusu n her zaman çift edelim. 1327 01:04:44,920 --> 01:04:47,660 Hangi hatırlama, katlama olduğunu Elbette, sahip tersi. 1328 01:04:47,660 --> 01:04:50,035 Ve geçen hafta oysa biz bir şey tekrar ve tekrar, 1329 01:04:50,035 --> 01:04:52,200 ve yine, süper hızlı, iki katına mutlaka olacak 1330 01:04:52,200 --> 01:04:58,080 mümkün olan en büyük 1'den bizi Biz bir int ile karşı güvenebilirsiniz değer. 1331 01:04:58,080 --> 01:04:59,750 >> Yani tam olarak yapalım. 1332 01:04:59,750 --> 01:05:01,720 Ve biz uzun zaman önce buna geri geleceğiz. 1333 01:05:01,720 --> 01:05:04,180 Ama bu, yine, tıpkı bir Scratch içinde tekrar bloğu. 1334 01:05:04,180 --> 01:05:05,600 Ve uzun zaman önce bu kullanacağız. 1335 01:05:05,600 --> 01:05:10,170 >> Bu sadece sıfırdan sayısını ifade 64, ama eşit kadar. 1336 01:05:10,170 --> 01:05:14,285 Ve bu her tekrarında loop, sadece i artan tutmak. 1337 01:05:14,285 --> 01:05:18,990 Yani i ++ - ve bu genel yapı on line 7 sadece bir süper yaygın bir yoldur 1338 01:05:18,990 --> 01:05:22,290 arasında bazı çizgiler yinelenen Kod zamanlarda bazı sayı. 1339 01:05:22,290 --> 01:05:23,362 Hangi kod satırları? 1340 01:05:23,362 --> 01:05:25,570 Bu kaşlı, senin gibi Şimdi panoda olabilir, 1341 01:05:25,570 --> 01:05:26,780 Aşağıdakileri yapın anlamına gelir. 1342 01:05:26,780 --> 01:05:29,510 >> Sanki Scratch öyle, ne zaman sarı blokları vardır 1343 01:05:29,510 --> 01:05:32,680 ve diğer renkler o tür kucaklamak veya diğer blokları sarılmak. 1344 01:05:32,680 --> 01:05:34,750 Bu ne o kıvırcık var parantezi burada yapıyoruz. 1345 01:05:34,750 --> 01:05:40,200 Yani benim sözdizimi var ise tam-- sizi C araçlarındaki havuç sembolünü görebilirsiniz 1346 01:05:40,200 --> 01:05:42,706 Bu ben kaç kez var Bu sorunu çözmek için çalışıyor. 1347 01:05:42,706 --> 01:05:45,330 Yani o birinin kurtulmak izin tamamen ve bu pencereyi kapatın. 1348 01:05:45,330 --> 01:05:46,520 Ve biz yeni bir kullanırız. 1349 01:05:46,520 --> 01:05:51,980 taşma, nokta çizgi yapmak taşma girin, tamam, 1350 01:05:51,980 --> 01:05:53,090 ilk başta kötü görünüyor. 1351 01:05:53,090 --> 01:05:56,200 Ama zaman içinde geriye kaydırma izin, Ben bu 64 kere yaptım çünkü. 1352 01:05:56,200 --> 01:05:58,700 >> Ve ilk olarak fark, n 1. 1353 01:05:58,700 --> 01:06:03,110 İkinci kez, n 2'dir, daha sonra 4, sonra 8, sonra 16. 1354 01:06:03,110 --> 01:06:09,450 Ve en kısa sürede görünüyor Ben, kabaca 1 milyar olsun 1355 01:06:09,450 --> 01:06:12,800 Tekrar iki katına eğer, o Bana 2 milyar vermelidir. 1356 01:06:12,800 --> 01:06:14,980 Ama bu, çıkıyor kıyısındasınız doğru. 1357 01:06:14,980 --> 01:06:18,930 >> Ve böylece aslında taşmaları 1 milyar bir int 1358 01:06:18,930 --> 01:06:23,514 2 kabaca negatif milyar tam sayı için, 1359 01:06:23,514 --> 01:06:25,430 sayılar biz aksine Geçen hafta varsayarak, 1360 01:06:25,430 --> 01:06:28,397 pozitif ve negatif de olabilir Gerçekte bir bilgisayar. 1361 01:06:28,397 --> 01:06:30,730 Ve bu yüzden en az bir bit etkin bir şekilde çalınması. 1362 01:06:30,730 --> 01:06:34,190 Yani biz gerçekten sadece 31 bit var ya da 2 milyar olası değerler. 1363 01:06:34,190 --> 01:06:38,220 >> Ama şimdi, paket oldukça olduğunu sadece, ne olursa olsun bu numaralar 1364 01:06:38,220 --> 01:06:42,280 ve matematik, ne olursa olsun kötü bir şey, sonunda olur 1365 01:06:42,280 --> 01:06:46,980 Sonunda sen çalıştığınız çünkü bitleri bir çok kez permute. 1366 01:06:46,980 --> 01:06:51,060 Ve etkili tüm gitmek 1'lerin belki hepsi 0 kıyafetleri, ya da belki 1367 01:06:51,060 --> 01:06:54,260 sadece bazı diğer desen öyle açıkça, bağlama bağlı olarak, 1368 01:06:54,260 --> 01:06:56,342 negatif bir sayı olarak yorumlanabilir. 1369 01:06:56,342 --> 01:06:59,300 Ve böylece en yüksek I görünüyor Bu özel programda güvenebilirsiniz 1370 01:06:59,300 --> 01:07:01,210 Sadece kabaca 1 milyar olduğunu. 1371 01:07:01,210 --> 01:07:02,760 Ama burada kısmi bir çözüm var. 1372 01:07:02,760 --> 01:07:03,480 Biliyor musun? 1373 01:07:03,480 --> 01:07:07,600 >> Bana bir değiştirmek edelim Uzun uzun int. 1374 01:07:07,600 --> 01:07:10,633 Ve beni burada devam edelim ve ben gidiyorum açarsanız 1375 01:07:10,633 --> 01:07:12,290 imzasız uzun bunu değiştirmek için. 1376 01:07:12,290 --> 01:07:16,860 Ya da, kendimi hiç hatırlamıyorum, bakalım. 1377 01:07:16,860 --> 01:07:19,920 >> en go ahead ve taşma yapalım. 1378 01:07:19,920 --> 01:07:21,860 Hayır, öyle değil, EUE, teşekkür ederim. 1379 01:07:21,860 --> 01:07:23,430 Bu yüzden bazen Clang yararlı olabilir. 1380 01:07:23,430 --> 01:07:27,550 Ne biçimini hatırlamak vermedi belirleyicisi çok uzun oldu. 1381 01:07:27,550 --> 01:07:28,950 >> Ama, gerçekten, Clang söyledi. 1382 01:07:28,950 --> 01:07:31,570 Yeşil, iyi bir çeşit hala bir hata yaptığını ifade eder. 1383 01:07:31,570 --> 01:07:33,190 Ben LLD anlamına geldiğini tahmin ediyor. 1384 01:07:33,190 --> 01:07:38,750 >> Yani, bana bu bir tavsiye almak uzun bir izin Uzun ondalık sayı, o kaydedin. 1385 01:07:38,750 --> 01:07:43,190 Ve nokta, bana yeniden izin Girin taşması kesiyorsun. 1386 01:07:43,190 --> 01:07:45,020 Ve şimdi ne serin budur. 1387 01:07:45,020 --> 01:07:49,140 >> Ben zaman içinde geri gidin, biz hala başlangıç Aynı place-- sayma 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 Uyarı, biz olsun tüm yol yukarı 1 milyar. 1390 01:07:54,860 --> 01:07:57,070 Ama sonra güvenle 2 milyar olsun. 1391 01:07:57,070 --> 01:08:01,300 >> Sonra 4 milyar olsun, Daha sonra 8 milyar, 17 milyar. 1392 01:08:01,300 --> 01:08:03,340 Ve biz daha gidin ve daha yükseğe ve daha da yükseğe. 1393 01:08:03,340 --> 01:08:05,740 Sonunda, bu da bozulur. 1394 01:08:05,740 --> 01:08:09,350 >> Sonunda, uzun uzun birlikte, 64-bit değeri değil, hangi 1395 01:08:09,350 --> 01:08:13,660 32-bit değeri, sen de sayarsan çok yüksek, etrafında 0 sarın. 1396 01:08:13,660 --> 01:08:16,410 Ve bu durumda, biz ne negatif bir sayı ile sonuna kadar. 1397 01:08:16,410 --> 01:08:17,550 >> Yani bu bir sorundur. 1398 01:08:17,550 --> 01:08:20,439 Ve bu çıkıyor Sorun bütün bu gizemli değildir. 1399 01:08:20,439 --> 01:08:23,060 Ben kasten ettik olsa Bu hataların ile uyarılan, 1400 01:08:23,060 --> 01:08:26,149 biz her türlü görmek çıkıyor Bizim, ya da bize en azından bazı etrafında yapmak. 1401 01:08:26,149 --> 01:08:28,939 >> Lego Star Wars, eğer öyleyse Hiç oyun oynadım, 1402 01:08:28,939 --> 01:08:33,830 Eğer etrafında gidebilir çıkıyor LEGO dünyasında şeyleri kırma, 1403 01:08:33,830 --> 01:08:36,640 ve esasen, paraları toplamaya. 1404 01:08:36,640 --> 01:08:39,200 Ve şimdiye kadar oynadım eğer Bu oyun çok fazla zaman, 1405 01:08:39,200 --> 01:08:42,630 Bu adsız birey olarak Burada, toplam sayı yaptı 1406 01:08:42,630 --> 01:08:46,700 toplayabilir sikke o, 4 milyar gibi görünüyor vardır. 1407 01:08:46,700 --> 01:08:48,240 >> Şimdi, birlikte aslında yuvarlak oluyor. 1408 01:08:48,240 --> 01:08:50,239 Yani LEGO çalışıyordu dost şeyler kullanıcıyı tutmak. 1409 01:08:50,239 --> 01:08:53,779 Onlar tam 2 yapmadım Geçen haftada 32 güç. 1410 01:08:53,779 --> 01:08:55,310 Ama 4 milyar sebebidir. 1411 01:08:55,310 --> 01:08:58,979 Bu bilgilere dayanarak, görünüyor, Bu LEGO ve şirket olduğunu 1412 01:08:58,979 --> 01:09:02,624 Bu gerçek bir yazılım yapılmış verdi Bu jeton sayısı 1413 01:09:02,624 --> 01:09:04,540 Kullanıcı birikebilir olan, gerçekten, 4000000000, 1414 01:09:04,540 --> 01:09:12,069 onların kodu seçtim çünkü görünüşe göre, uzun uzun değil kullanmak, 1415 01:09:12,069 --> 01:09:16,140 ama sadece bir tamsayı, işaretsiz bir kimin tamsayı, sadece bir pozitif tamsayı, 1416 01:09:16,140 --> 01:09:18,089 maksimum değeri o kabaca. 1417 01:09:18,089 --> 01:09:19,380 Eh, burada başka komik biri. 1418 01:09:19,380 --> 01:09:23,500 Oyun Medeniyet Yani hangi Size bazı tanıdık olabilir 1419 01:09:23,500 --> 01:09:26,660 yıllar önce orada çıkıyor Bu oyun bu sayede bir hata oldu 1420 01:09:26,660 --> 01:09:28,750 Eğer rol oynadı eğer Oyunda Gandhi'nin, 1421 01:09:28,750 --> 01:09:34,020 Onun yerine, çok pasifist olmak yerine inanılmaz, inanılmaz oldu 1422 01:09:34,020 --> 01:09:36,399 Agresif de bazı durumlarda. 1423 01:09:36,399 --> 01:09:40,529 Özellikle, yolu o Uygarlık eserler olduğunu eğer, oyuncu, 1424 01:09:40,529 --> 01:09:44,680 Demokrasiyi benimsemek senin saldırganlık puanı alır 1425 01:09:44,680 --> 01:09:48,130 İki, bu yüzden eksi indirildiği eksi ve ardından eksi eksi. 1426 01:09:48,130 --> 01:09:50,569 >> Yani gelen 2 çıkarma Gerçek ilerlerken. 1427 01:09:50,569 --> 01:09:56,650 Ne yazık ki, ilerlerken ise Başlangıçta 1 ve ondan 2 çıkarma 1428 01:09:56,650 --> 01:09:59,050 Demokrasiyi benimseyen sonra Burada belki Gandi olarak 1429 01:09:59,050 --> 01:10:02,200 o çok passive-- çünkü, yapmış saldırganlık ölçeğinde 1. 1430 01:10:02,200 --> 01:10:04,830 Ama o zaman, demokrasiyi benimser ise 1 ile negatif 1 gider. 1431 01:10:04,830 --> 01:10:11,470 >> Ne yazık ki, onlar imzasız numaralarını kullanarak, 1432 01:10:11,470 --> 01:10:15,400 bunun anlamı onlar bile olumsuz muamele sanki sayılar pozitif idi. 1433 01:10:15,400 --> 01:10:19,780 Ve o çıkıyor 1 negatif pozitif eşdeğer 1434 01:10:19,780 --> 01:10:23,480 Tipik bir bilgisayar programlarında, 255. 1435 01:10:23,480 --> 01:10:27,250 Gandi kabul Yani eğer demokrasi ve dolayısıyla var 1436 01:10:27,250 --> 01:10:32,470 Onun saldırganlık puanı azaldı, aslında 255 civarında rulo 1437 01:10:32,470 --> 01:10:35,470 ve onu en iyi şekilde Oyunda agresif karakter. 1438 01:10:35,470 --> 01:10:36,930 Yani bu kadar Google'dan bulabilirsin. 1439 01:10:36,930 --> 01:10:39,380 Ve, gerçekten, bir Kazara programlama hata, 1440 01:10:39,380 --> 01:10:43,010 ama bu oldukça girilen oluyor o zamandan beri irfan. 1441 01:10:43,010 --> 01:10:44,360 >> Yani tüm eğlence ve sevimli. 1442 01:10:44,360 --> 01:10:47,760 Daha korkutucu zaman gerçek olduğunu gerçek dünya cihazları, değil oyunları, 1443 01:10:47,760 --> 01:10:48,820 bu aynı hatalar var. 1444 01:10:48,820 --> 01:10:54,500 Aslında, sadece bir yıl önce bir makale geldi Boeing 787 Dreamliner hakkında. 1445 01:10:54,500 --> 01:10:56,850 >> Ve ilk başta makale bakışta biraz Arcane okur. 1446 01:10:56,850 --> 01:11:01,480 Ancak söz konusu bu bir yazılım Boeing en güvenlik açığı 1447 01:11:01,480 --> 01:11:04,790 Yeni 787 Dreamliner jet vardır Potansiyel pilotlar neden 1448 01:11:04,790 --> 01:11:07,220 kontrolünü kaybetmek uçak, muhtemelen 1449 01:11:07,220 --> 01:11:11,750 Uçuş ortasında, FAA yetkilileri Son zamanlarda uyardı havayolları. 1450 01:11:11,750 --> 01:11:14,520 Bu belirleme oldu Bu model 787 1451 01:11:14,520 --> 01:11:19,770 açıldıktan uçak sürekli için 248 gün 1452 01:11:19,770 --> 01:11:24,880 tüm alternatif akım kaybedebilir, AC, jeneratörüne bağlı elektrik gücü 1453 01:11:24,880 --> 01:11:28,892 Kontrol ünitesi, GCUs, eş zamanlı olarak girmeden güvenli mod başarısız. 1454 01:11:28,892 --> 01:11:29,850 Beni kaybetme türüdür. 1455 01:11:29,850 --> 01:11:35,390 Ama not Tamam, şimdi ben aldım, ifade, koşulu yazılımların neden olduğu 1456 01:11:35,390 --> 01:11:38,590 iç sayaç jeneratör kontrol 1457 01:11:38,590 --> 01:11:44,860 sonra taşma birimleri sürekli güç 248 gündür. 1458 01:11:44,860 --> 01:11:47,070 Biz bu yayımlıyoruz kaybını önlemek için fark 1459 01:11:47,070 --> 01:11:49,300 her AC elektrik neden olabilir güç, 1460 01:11:49,300 --> 01:11:50,980 uçağın kontrolünün kaybedilmesine. 1461 01:11:50,980 --> 01:11:55,380 >> Yani, kelimenin tam anlamıyla, bazı tamsayı var, ya da bazı eşdeğer veri türü, 1462 01:11:55,380 --> 01:11:57,960 yazılımında kullanılan gerçek bir uçağın içinde 1463 01:11:57,960 --> 01:12:00,756 Eğer uçak tutarsanız o hangi görünüşe göre, yeterince uzun üzerinde 1464 01:12:00,756 --> 01:12:03,880 Sadece çalıştırıyorsanız durumda olabilir onları sürekli ve asla prizden 1465 01:12:03,880 --> 01:12:06,810 senin uçak, öyle görünüyor ki, ya da pillerini ölmesine izin, 1466 01:12:06,810 --> 01:12:09,840 Sonunda up saymak ve olacak, ve yukarı ve yukarı ve yukarı ve yukarı. 1467 01:12:09,840 --> 01:12:12,150 >> Ve, doğası gereği, bir bellek sınırlı miktarda 1468 01:12:12,150 --> 01:12:15,880 , Taşma geri dönme olacak sıfır veya bazı negatif değer, 1469 01:12:15,880 --> 01:12:19,920 bir yan etkisidir frighteningly gerçek gerçeklik 1470 01:12:19,920 --> 01:12:23,970 düzlem ihtiyaç duyabileceği yeniden başlatılması için etkili, 1471 01:12:23,970 --> 01:12:27,290 veya daha kötüsü düşebilir, bu uçar gibi. 1472 01:12:27,290 --> 01:12:29,230 sorunların Yani bu tür hala bizimle birlikte olan, 1473 01:12:29,230 --> 01:12:33,130 even-- bu, 2015 yılında makale oldu daha korkutucu 1474 01:12:33,130 --> 01:12:36,100 Eğer ille ne zaman Anlamak takdir veya tahmin 1475 01:12:36,100 --> 01:12:38,640 hataları bu tür. 1476 01:12:38,640 --> 01:12:42,030 >> Yani diğeri var çıkıyor veri gösterimi hakkında kötü bir şey. 1477 01:12:42,030 --> 01:12:47,080 Hatta yüzen olduğunu çıkıyor tür kusurlu, yüzen, çünkü çok 1478 01:12:47,080 --> 01:12:51,440 Ben 32 bit olan önerdi, ya da belki 64 çift kullanıyorsanız. 1479 01:12:51,440 --> 01:12:53,070 Ama bu yine de sonlu olduğunu. 1480 01:12:53,070 --> 01:12:57,070 >> Ve yakalamak olduğunu eğer o sayıların sonsuz sayıda koymak 1481 01:12:57,070 --> 01:12:59,460 ondalık noktadan sonra, Hiçbir yolu yoktur 1482 01:12:59,460 --> 01:13:02,690 Tüm olası temsil bize öğretildiği numaralar 1483 01:13:02,690 --> 01:13:04,990 sınıfta okul dünyada var olabilir. 1484 01:13:04,990 --> 01:13:08,870 Bir bilgisayar, esas olarak, zorundadır bu numaraları bir alt kümesini seçin 1485 01:13:08,870 --> 01:13:10,200 doğru temsil etmek. 1486 01:13:10,200 --> 01:13:12,450 >> Şimdi, bilgisayar olabilir yuvarlak belki biraz, 1487 01:13:12,450 --> 01:13:17,900 ve kabaca saklamak için izin verebilir belki isteyebileceğiniz herhangi bir sayı. 1488 01:13:17,900 --> 01:13:20,940 Ama sezgisel, eğer bit sınırlı bir sayıda, 1489 01:13:20,940 --> 01:13:24,560 Sadece bunları permute olabilir çok sonlu yönden. 1490 01:13:24,560 --> 01:13:26,570 Yani muhtemelen olamaz sonlu sayıdaki 1491 01:13:26,570 --> 01:13:29,880 bit permütasyonu bölgesinin sıfırlar ve olanları desenleri, 1492 01:13:29,880 --> 01:13:32,940 sonsuz temsil etmek sayılar, 1493 01:13:32,940 --> 01:13:37,370 hangi bilgisayarların olabilir düşündürmektedir çok iyi bazen bize yalan olabilir. 1494 01:13:37,370 --> 01:13:38,770 >> Aslında, hadi yapalım. 1495 01:13:38,770 --> 01:13:41,239 Bana CS50 IDE içine dönelim. 1496 01:13:41,239 --> 01:13:43,030 Beni devam edelim ve küçük bir program oluşturmak 1497 01:13:43,030 --> 01:13:47,940 göstermek için, Tutarsızlık adı bilgisayarlar, gerçekten, kesin vardır. 1498 01:13:47,940 --> 01:13:51,910 >> Ve beni go ahead ve ile başlayalım önce o kodun bazı 1499 01:13:51,910 --> 01:13:53,830 ve şimdi sadece aşağıdakileri yapın. 1500 01:13:53,830 --> 01:14:03,640 Beni devam edin ve printf, yüzde yapalım f, 10 bölü ters bölü n, 1. 1501 01:14:03,640 --> 01:14:07,430 Başka bir deyişle, en derin dalış izin 1/10 gibi 1 ve 10 bölü için. 1502 01:14:07,430 --> 01:14:09,760 Şüphesiz, bir bilgisayar 1/10 temsil edebilir. 1503 01:14:09,760 --> 01:14:13,620 >> O yüzden devam edin ve belirsizlik yapalım. 1504 01:14:13,620 --> 01:14:14,390 Bakalım. 1505 01:14:14,390 --> 01:14:16,210 Biçim çift tipi belirtir. 1506 01:14:16,210 --> 01:14:18,160 Ama tartışma türü int vardır. 1507 01:14:18,160 --> 01:14:19,040 Neler oluyor? 1508 01:14:19,040 --> 01:14:21,970 >> Ah, ilginç, bu yüzden bir var ders öncesi öğrendim. 1509 01:14:21,970 --> 01:14:26,050 Hey, bilgisayar gösterisi, söylüyorum Bana yüzde f bir şamandıra. 1510 01:14:26,050 --> 01:14:28,200 Ama ben bunu 2 ints veriyorum. 1511 01:14:28,200 --> 01:14:31,120 çıkıyor Yani, düzeltebilirim yollarla bir çift bu. 1512 01:14:31,120 --> 01:14:38,430 >> Ben sadece 1.0 içine bir dönüş ve olabilir 10.0 içine 10, hangi olur, gerçekten de, 1513 01:14:38,430 --> 01:14:42,390 dönüştürme etkisi floats-- içine onları hala umarım 1514 01:14:42,390 --> 01:14:43,180 Aynı numara. 1515 01:14:43,180 --> 01:14:45,880 bir şey var dışarı ya da döner biz uzun zaman önce tekrar göreceğiz. 1516 01:14:45,880 --> 01:14:47,170 Numaraları düşürebilir. 1517 01:14:47,170 --> 01:14:49,880 >> Sen, bu parantez kullanarak yapabilirsiniz ifadesi, sen diyebilirsiniz 1518 01:14:49,880 --> 01:14:52,560 Hey, bilgisayar, bunu al Biliyorum 10, bir int. 1519 01:14:52,560 --> 01:14:54,660 Ama, lütfen tedavi sanki bir şamandıra var. 1520 01:14:54,660 --> 01:14:56,680 Ama bu gereksiz yere karmaşık hissediyor. 1521 01:14:56,680 --> 01:14:59,040 >> Bizim amaçlarımız için bugün, Sadece tam anlamıyla atalım 1522 01:14:59,040 --> 01:15:02,700 Onları kayan nokta değeri yapmak Böyle bir ondalık noktasının ile. 1523 01:15:02,700 --> 01:15:07,060 Beni devam edelim ve yeniden çalıştırın, yapmak belirsizlik, iyi, nokta çizgi 1524 01:15:07,060 --> 01:15:08,870 belirsizlik, girin. 1525 01:15:08,870 --> 01:15:10,990 Tamam, biz iyi arıyoruz. 1526 01:15:10,990 --> 01:15:18,194 >> 1 'e göre, 10 ile ayrılır, benim Burada Mac, gerçekten, 0.100000 olduğunu. 1527 01:15:18,194 --> 01:15:21,360 Şimdi, ben orada ilkokulda öğretildi 0 's sonsuz sayıda olmalıdır. 1528 01:15:21,360 --> 01:15:23,151 Yani en azından deneyelim Bunlardan bazılarını görmek için. 1529 01:15:23,151 --> 01:15:26,770 Bu printf biraz olduğu ortaya çıktı Biz kullanarak oldum daha meraklısı hala. 1530 01:15:26,770 --> 01:15:30,890 Bu belirtmek zorunda değilsiniz çıkıyor sadece yüzde f, ya da sadece yüzde i. 1531 01:15:30,890 --> 01:15:33,830 Aslında belirtebilirsiniz Burada bazı kontrol seçenekleri. 1532 01:15:33,830 --> 01:15:36,470 >> Özellikle, ben gidiyorum demek, hey, printf, 1533 01:15:36,470 --> 01:15:39,660 aslında bana 10 ondalık noktalarını gösterir. 1534 01:15:39,660 --> 01:15:40,820 Bu yüzden biraz garip görünüyor. 1535 01:15:40,820 --> 01:15:42,845 Ama yüzde söylemek, nokta, kaç sayı 1536 01:15:42,845 --> 01:15:44,970 Eğer sonra görmek istiyorum ondalık nokta ve ardından f 1537 01:15:44,970 --> 01:15:48,340 Düz için, o sırf dokümantasyon ne diyor. 1538 01:15:48,340 --> 01:15:50,080 Beni devam edin ve bu kurtaralım. 1539 01:15:50,080 --> 01:15:52,460 >> Ve ben alıyorum, çok fark şeyleri yeniden yazmak yorgun. 1540 01:15:52,460 --> 01:15:55,900 Yani sadece yukarı ayarlıyorum ve Burada benim tuşlar üzerinde ok. 1541 01:15:55,900 --> 01:15:58,710 Ve ben isabet devam edersen, sen komutların tümünü görebilirsiniz 1542 01:15:58,710 --> 01:16:01,090 Bu yaptığım veya yanlış yapılmış. 1543 01:16:01,090 --> 01:16:04,630 >> Ve ben şimdi önde gidiyorum ve aslında görünüşe göre, bunu kullanın. 1544 01:16:04,630 --> 01:16:11,416 belirsizlik, nokta yapmak böylece imprecision-- çizgi 1545 01:16:11,416 --> 01:16:13,290 ne öğretildiği ilkokul denetler. 1546 01:16:13,290 --> 01:16:19,010 Ben 10 ondalık yazdırmak bile yerleştirir, gerçekten, 0,10000 olduğunu. 1547 01:16:19,010 --> 01:16:19,840 Ama ne biliyor musunuz? 1548 01:16:19,840 --> 01:16:21,150 >> Hadi biraz açgözlü dönelim. 1549 01:16:21,150 --> 01:16:23,990 Bana 55 göstermek, en gibi, diyelim ondalık sonra işaret ediyor. 1550 01:16:23,990 --> 01:16:26,160 en çok bu atalım bir spin için dışarı programlayın. 1551 01:16:26,160 --> 01:16:31,170 Bana make ile yeniden edelim belirsizlik, nokta çizgi, tutarsızlık. 1552 01:16:31,170 --> 01:16:32,390 >> Ve işte başlıyoruz. 1553 01:16:32,390 --> 01:16:34,420 Çocukluk bir yalandı. 1554 01:16:34,420 --> 01:16:48,410 Görünüşe göre, 10 bölü 1 gerçekten de 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> Ne oluyor? 1556 01:16:49,740 --> 01:16:53,360 Peki, bu eğer tür çıkıyor Altta yatan dışarı yeterince bakmak 1557 01:16:53,360 --> 01:16:55,950 Bu temsili sayısı, aslında 1558 01:16:55,950 --> 01:17:00,400 tam olarak 1/10 veya 0.1 ve bir sıfır sonsuz sayıda. 1559 01:17:00,400 --> 01:17:01,630 Şimdi, neden? 1560 01:17:01,630 --> 01:17:06,250 >> Peki, bu basit olsa bile Bizim insanlara sayı, 1, 10 bölü 1561 01:17:06,250 --> 01:17:10,910 hala sonsuz sayıda biri sayılar biz düşünebildiğim. 1562 01:17:10,910 --> 01:17:14,490 Ama bilgisayar yalnızca temsil edebilir sonlu sayıda bu yüzden sayılar. 1563 01:17:14,490 --> 01:17:18,710 Ve böylece etkili ne bilgisayar bize en yakın olan gösteriyor 1564 01:17:18,710 --> 01:17:22,940 numaraya yaklaşım Biz 1/10 inanmak istiyorum 1565 01:17:22,940 --> 01:17:27,760 ya da gerçekten 0,10000 sonsuza. 1566 01:17:27,760 --> 01:17:30,425 >> Aksine, olsa da, bu o alabilirsiniz olduğunca yakın. 1567 01:17:30,425 --> 01:17:32,300 Ve, gerçekten, eğer bakarsanız Kaputun altında, 1568 01:17:32,300 --> 01:17:37,050 biz bakarak burada olduğu gibi ondalık sonra 55 hane, 1569 01:17:37,050 --> 01:17:39,990 biz aslında gerçeği görüyoruz. 1570 01:17:39,990 --> 01:17:42,610 Şimdi ettik bir kenara olarak, eğer Hiç movie-- görüldü 1571 01:17:42,610 --> 01:17:45,780 Çoğunuz muhtemelen haven't-- ancak Superman 3 Birkaç yıl önce, 1572 01:17:45,780 --> 01:17:49,500 Richard Pryor esasen bu kaldıraçlı onun şirket gerçeklik çok çalmak 1573 01:17:49,500 --> 01:17:53,500 peni fraksiyonlarının ve kısımların, Hatırladığım kadarıyla company-- çünkü 1574 01:17:53,500 --> 01:17:57,210 Bu esas olarak while-- bir oldu bir şey uzağa atma uymayan 1575 01:17:57,210 --> 01:17:58,790 cent kavramı içine. 1576 01:17:58,790 --> 01:18:01,480 >> Ama eklerseniz tüm bu Yine küçük, minik, minik sayılar, 1577 01:18:01,480 --> 01:18:04,960 ve tekrar ve tekrar, sen gibi, can davası, para iyi bir miktar yapmak. 1578 01:18:04,960 --> 01:18:08,010 >> Aynı fikri ile yırtık Şimdi eski hala daha yeni bir, ama 1579 01:18:08,010 --> 01:18:10,500 Office Space adı verilen film, nerede o filmde çocuklar, 1580 01:18:10,500 --> 01:18:13,501 Aynı şeyi yaptı o berbat Tamamen, çok fazla yol ile sona erdi 1581 01:18:13,501 --> 01:18:14,666 kendi banka hesabına para. 1582 01:18:14,666 --> 01:18:15,800 Hepsi çok şüpheli oldu. 1583 01:18:15,800 --> 01:18:19,290 Ama günün sonunda, belirsizlik hepimizin civarındadır. 1584 01:18:19,290 --> 01:18:22,240 >> Ve bu da olabilir, davayı frighteningly. 1585 01:18:22,240 --> 01:18:25,590 Bu çıkıyor o Superman 3 ve Office Space kenara orada 1586 01:18:25,590 --> 01:18:28,460 Bazı çok gerçek olabilir Dünya yansımaları 1587 01:18:28,460 --> 01:18:32,290 imprecise gerçekleri veri temsili 1588 01:18:32,290 --> 01:18:34,770 bile biz insanların etmek Bu gün mutlaka yapmak 1589 01:18:34,770 --> 01:18:38,230 de biz gerektiği gibi anlamak ya da sık gerektiği gibi hatırlıyorum. 1590 01:18:38,230 --> 01:18:42,950 Ve, gerçekten, şu klip bazı çok gerçek dünya bir bakıştan 1591 01:18:42,950 --> 01:18:47,730 eğer ne olur yansımaları belirsizlik takdir kalmamasıdır 1592 01:18:47,730 --> 01:18:50,065 sayılar temsil olabilir. 1593 01:18:50,065 --> 01:18:51,300 >> [VİDEO OYNATMA] 1594 01:18:51,300 --> 01:18:55,620 >> -Bilgisayar, Hepimiz kabul etmek geldim genellikle sinir bozucu sorunlar olduğunu 1595 01:18:55,620 --> 01:19:00,310 , Them-- hata ile virüsleri gitmek, ve yazılım hataları, 1596 01:19:00,310 --> 01:19:03,130 küçük fiyatlar ödemek için kolaylık için. 1597 01:19:03,130 --> 01:19:07,800 Ancak yüksek teknoloji ve yüksek hızda askeri ve uzay programı uygulamaları, 1598 01:19:07,800 --> 01:19:12,800 En küçük sorun olabilir felakete büyütülecek. 1599 01:19:12,800 --> 01:19:18,900 >> 4 Haziran 1996 tarihinde, bilim adamları hazırladı insansız Ariane 5 roket başlatmak için. 1600 01:19:18,900 --> 01:19:21,220 Bu bilimsel taşıyordu uydular tasarlanmış 1601 01:19:21,220 --> 01:19:24,600 tam olarak nasıl kurmak Dünya'nın manyetik alanı etkileşime girdiği 1602 01:19:24,600 --> 01:19:27,410 Güneş rüzgarlar ile. 1603 01:19:27,410 --> 01:19:30,800 roket için inşa edildi Avrupa Uzay Ajansı, 1604 01:19:30,800 --> 01:19:34,370 ve tesisten kaldırdı Fransız Guyanası kıyısında. 1605 01:19:34,370 --> 01:19:37,540 >> içine yaklaşık 37 saniye -En Uçuş, ilk 1606 01:19:37,540 --> 01:19:39,270 fark şeylerin yanlış gidiyordu. 1607 01:19:39,270 --> 01:19:42,250 memeleri de döner edildi bir yol onlar gerçekten olmamalıdır. 1608 01:19:42,250 --> 01:19:46,580 uçuş içine 40 saniye civarında, açıkça, araç başı dertte idi. 1609 01:19:46,580 --> 01:19:48,850 >> yaptıkları Ve o bir karar onu yok etmek. 1610 01:19:48,850 --> 01:19:52,780 aralık güvenlik görevlisi ile muazzam bağırsaklar, düğmeye bastı, 1611 01:19:52,780 --> 01:19:58,150 o olabilir önce, roket havaya uçurdu kamu güvenliği için bir tehlike haline gelir. 1612 01:19:58,150 --> 01:20:01,060 >> -Bu Kızlık oldu Ariane 5 sefer. 1613 01:20:01,060 --> 01:20:03,960 Ve yıkım aldı bir kusur nedeniyle koyun 1614 01:20:03,960 --> 01:20:05,822 Roketin yazılımında gömülü. 1615 01:20:05,822 --> 01:20:08,280 Ariane üzerinde -the sorun oldu bir sayı olduğu bu 1616 01:20:08,280 --> 01:20:10,600 ifade etmek 64 bit gerekli. 1617 01:20:10,600 --> 01:20:13,590 Ve onlar dönüştürmek istedi 16-bitlik bir sayı için bu. 1618 01:20:13,590 --> 01:20:15,610 Onlar kabul olduğunu numara asla gidiyordu 1619 01:20:15,610 --> 01:20:20,980 Çok büyük olması olanların çoğu o 64-bit sayısı rakam sıfır oldu. 1620 01:20:20,980 --> 01:20:22,440 Onlar yanıldılar. 1621 01:20:22,440 --> 01:20:25,060 >> bir alınmış yetersizlik Yazılım programı kabul etmek 1622 01:20:25,060 --> 01:20:29,510 tarafından üretilen sayıda tür Başka bir başarısızlık kökünde oldu. 1623 01:20:29,510 --> 01:20:34,350 Yazılım geliştirme olmuştu bir yeni teknoloji çok pahalı bir parçası. 1624 01:20:34,350 --> 01:20:38,140 Ariane roketi çok olmuştur yazılım, başarılı çok 1625 01:20:38,140 --> 01:20:41,550 Ayrıca olduğu için oluşturulan Ariane 5 olarak kullanılır. 1626 01:20:41,550 --> 01:20:47,940 >> -The Temel sorun Ariane oldu 5, daha hızlıydı hızlı hızlandırdı. 1627 01:20:47,940 --> 01:20:51,450 Ve yazılım yoktu Bunun için sorumluydu. 1628 01:20:51,450 --> 01:20:55,060 >> roket alınmış yıkım büyük bir mali felaket oldu 1629 01:20:55,060 --> 01:20:58,790 Kusura bir dakika yazılım hatası. 1630 01:20:58,790 --> 01:21:01,210 Ama bu ilk değildi zamanlı veri dönüştürme sorunları 1631 01:21:01,210 --> 01:21:04,820 Modern roket teknolojisini musallat etmişti. 1632 01:21:04,820 --> 01:21:08,050 >> başlaması ile birlikte, 1991 -In Birinci Körfez Savaşı, 1633 01:21:08,050 --> 01:21:10,570 Patriot Füze benzer bir tür deneyimli 1634 01:21:10,570 --> 01:21:12,800 sayı dönüştürme sorunu. 1635 01:21:12,800 --> 01:21:16,090 Sonuç olarak da, 28 kişi, 28 Amerikan askeri, 1636 01:21:16,090 --> 01:21:19,080 öldürüldü ve yaklaşık edildi 100 diğerleri yaralandı, 1637 01:21:19,080 --> 01:21:22,780 zaman gerekiyordu Patriot, Gelen Scuds karşı korumak için, 1638 01:21:22,780 --> 01:21:25,830 bir füze ateş başarısız oldu. 1639 01:21:25,830 --> 01:21:31,670 >> -Ne Zaman Irak Kuveyt'i ve Amerika'yı istila Erken 1991 yılında Çöl Fırtınası başlattı 1640 01:21:31,670 --> 01:21:35,780 Patriot Füze piller konuşlandırıldı Suudi Arabistan ve İsrail'i korumak için 1641 01:21:35,780 --> 01:21:39,230 Irak Scud füze saldırılarına karşı. 1642 01:21:39,230 --> 01:21:43,810 Patriot ABD orta menzilli olduğunu hava sistemine yüzey imal 1643 01:21:43,810 --> 01:21:45,770 Raytheon şirketi tarafından. 1644 01:21:45,770 --> 01:21:52,340 >> Patriot interceptor alınmış boyutu kendisi hakkında kabaca 20 feet uzunluğunda. 1645 01:21:52,340 --> 01:21:55,230 Ve yaklaşık 2.000 £ ağırlığındadır. 1646 01:21:55,230 --> 01:21:59,320 Ve bu, yaklaşık bir savaş başlığı taşıyan Ben yaklaşık 150 lira olduğunu düşünüyorum. 1647 01:21:59,320 --> 01:22:03,930 Ve savaş başlığı kendisidir yüksek patlayıcı, hangi 1648 01:22:03,930 --> 01:22:07,330 etrafında fragmanları yer alır. 1649 01:22:07,330 --> 01:22:11,680 savaş başlığı gövde olduğunu buckshot gibi davranacak şekilde tasarlanmıştır. 1650 01:22:11,680 --> 01:22:14,110 >> -The Füzeler yapılır konteyner başına dört, 1651 01:22:14,110 --> 01:22:17,130 ve yarı römork tarafından taşınır. 1652 01:22:17,130 --> 01:22:24,930 >> -The Patriot füze sistemi şimdi en az 20 yıl geriye gider. 1653 01:22:24,930 --> 01:22:28,420 Başlangıçta dizayn edilmiştir Bir hava savunma füze olarak 1654 01:22:28,420 --> 01:22:30,720 düşman uçakları vurmaya. 1655 01:22:30,720 --> 01:22:34,500 Birinci Körfez Savaşı'nda, savaş boyunca geldiğinde, 1656 01:22:34,500 --> 01:22:39,745 Ordu için kullanmak istedim Scuds değil, uçaklar vurmaya. 1657 01:22:39,745 --> 01:22:43,620 >> Irak Hava Kuvvetleri oldu Bir sorun değil çok. 1658 01:22:43,620 --> 01:22:46,670 Ama Ordu Scuds endişe edildi. 1659 01:22:46,670 --> 01:22:50,170 Ve böylece çalıştı Patriot yükseltin. 1660 01:22:50,170 --> 01:22:52,800 >> bir düşman -Intercepting füze mach 5 de seyahat 1661 01:22:52,800 --> 01:22:55,830 yeterince zor olacaktı. 1662 01:22:55,830 --> 01:22:58,490 Ama ne zaman Patriot hizmete koştu, 1663 01:22:58,490 --> 01:23:02,860 Ordu bir farkında değildi yapılan Irak değişiklik 1664 01:23:02,860 --> 01:23:05,930 kendi scuds vurmak neredeyse imkansız. 1665 01:23:05,930 --> 01:23:10,740 >> Ne oldu scuds olduğu geliyordu kararsız idi. 1666 01:23:10,740 --> 01:23:11,692 Onlar wobbling bulundu. 1667 01:23:11,692 --> 01:23:14,910 Bunun nedeni oldu sipariş Iraklılar, 1668 01:23:14,910 --> 01:23:18,280 600 kilometre almak için 300 kilometre dışına 1669 01:23:18,280 --> 01:23:21,700 menzilli füze, kilo aldı Ön savaş başlığının dışarı. 1670 01:23:21,700 --> 01:23:23,390 Onlar savaş başlığı çakmak yaptı. 1671 01:23:23,390 --> 01:23:27,330 >> Şimdi Patriot olduğunu Scud gelmek için çalışıyorum. 1672 01:23:27,330 --> 01:23:30,230 Ve çoğu zaman, zaman ezici çoğunluğu, 1673 01:23:30,230 --> 01:23:32,940 Sadece Scud tarafından uçmak. 1674 01:23:32,940 --> 01:23:37,260 Patriot sistemi operatörleri kez Patriot hedefini kaçırmış fark 1675 01:23:37,260 --> 01:23:41,690 Onlar Patriot'ın savaş başlığı patlatıldı Bunun mümkünse kayıpları önlemek için 1676 01:23:41,690 --> 01:23:44,570 yere düşmesine izin verildi. 1677 01:23:44,570 --> 01:23:48,790 >> Çoğu insan ne gördüm -Bu oldu Gökyüzündeki o büyük fireballs, 1678 01:23:48,790 --> 01:23:54,550 gibi yanlış Scud savaş başlığı yakaladığını. 1679 01:23:54,550 --> 01:23:56,630 >> Gece -Although gökyüzü, Patriots çıktı 1680 01:23:56,630 --> 01:24:00,370 başarılı olduğu Dhahran de, Scuds yok, 1681 01:24:00,370 --> 01:24:03,360 Hiçbir hata olabilir onun performansı hakkında. 1682 01:24:03,360 --> 01:24:07,970 Orada, Patriot radar sistemi Gelen Scud izini kaybettik, 1683 01:24:07,970 --> 01:24:10,721 nedeniyle başlatılan asla Bir yazılım kusur. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 İlk keşfedilen İsraillileri oldu uzun sistem üzerinde olduğunu, 1686 01:24:18,940 --> 01:24:22,690 daha zaman tutarsızlık nedeniyle gömülü bir saatin haline geldi 1687 01:24:22,690 --> 01:24:24,810 Sistemin bilgisayar. 1688 01:24:24,810 --> 01:24:28,210 >> -Yaklaşık Iki hafta önce Dhahran'daki trajedi, 1689 01:24:28,210 --> 01:24:30,770 İsrailliler bildirildi Savunma Bakanlığı 1690 01:24:30,770 --> 01:24:32,590 Bu sistem saatini kaybediyor. 1691 01:24:32,590 --> 01:24:35,360 yaklaşık sekiz saat ya da çalışan sonra, sisteme fark 1692 01:24:35,360 --> 01:24:37,720 fark daha az hassas hale geliyordu. 1693 01:24:37,720 --> 01:24:41,900 Savunma Bakanlığı yanıt verdi Patriot pillerin tüm söylüyorum 1694 01:24:41,900 --> 01:24:44,950 sistemlerini terk etmek Uzun bir süre için. 1695 01:24:44,950 --> 01:24:49,160 Onlar ne uzun zaman söylemedim Ben-- sekiz saat, 10 saat, 1000 saat. 1696 01:24:49,160 --> 01:24:51,360 Kimse biliyordu. 1697 01:24:51,360 --> 01:24:53,380 >> -The Patriot batarya kışlasında konuşlanmış 1698 01:24:53,380 --> 01:24:58,350 Dhahran ve kusurlu iç at 100 saatten fazla saat olmuştu 1699 01:24:58,350 --> 01:25:01,670 25 Şubat gecesi. 1700 01:25:01,670 --> 01:25:05,917 >> -Bu Doğrulukla zaman paletli Bir saniyenin onda biri hakkında. 1701 01:25:05,917 --> 01:25:08,000 Bir saniyenin Şimdi, onda ilginç bir sayıdır, 1702 01:25:08,000 --> 01:25:11,920 Bu ifade edilemez, çünkü Tam ikili hangi 1703 01:25:11,920 --> 01:25:16,820 tam olarak ifade edilemez anlamına gelir Herhangi bir modern bir dijital bilgisayar. 1704 01:25:16,820 --> 01:25:18,540 İnanması zor. 1705 01:25:18,540 --> 01:25:21,210 >> Ama bir örnek olarak kullanabilirsiniz. 1706 01:25:21,210 --> 01:25:23,540 numaralı üçte birini ele alalım. 1707 01:25:23,540 --> 01:25:27,350 Bir üçüncü olamaz Tam ondalık olarak ifade edilmiştir. 1708 01:25:27,350 --> 01:25:32,080 Üçte biri 0.333 olduğunu sonsuzluğa için devam. 1709 01:25:32,080 --> 01:25:36,480 >> ile bunu yapmak için hiçbir yolu yoktur ondalık mutlak doğruluk. 1710 01:25:36,480 --> 01:25:39,560 Bu sorunun tam tür Bu Patriot oldu. 1711 01:25:39,560 --> 01:25:44,100 uzun sistem koştu kötü zamanı hatası oldu. 1712 01:25:44,100 --> 01:25:48,890 >> 100 saatlik bir sonra-, zamanında hata yalnızca üçte biri oldu 1713 01:25:48,890 --> 01:25:50,600 Saniyenin. 1714 01:25:50,600 --> 01:25:54,210 Ancak, bir hedefleme bakımından füze mach 5 de seyahat, 1715 01:25:54,210 --> 01:25:58,710 Bir izleme sonuçlandı 600 metre hata. 1716 01:25:58,710 --> 01:26:02,120 Bu ölümcül bir hata olur Neye askerler için 1717 01:26:02,120 --> 01:26:08,940 oldu bir Scud başlatmak oldu Erken Uyarı uyduları tarafından tespit 1718 01:26:08,940 --> 01:26:12,860 ve onlar Scud olduğunu biliyordu genel yönde gelen. 1719 01:26:12,860 --> 01:26:15,320 önümüzdeki nereye onlar bilmiyordu. 1720 01:26:15,320 --> 01:26:18,250 >> -Bu Radara kadar şimdi oldu Patriot sistemi bileşeni 1721 01:26:18,250 --> 01:26:23,190 Dhahran savunan bulmak ve tutmak için Gelen düşman füze iz. 1722 01:26:23,190 --> 01:26:24,609 >> -The Radar çok akıllı. 1723 01:26:24,609 --> 01:26:26,650 Aslında izlemeyi tercih Scud pozisyonu, 1724 01:26:26,650 --> 01:26:30,350 ve sonra nerede muhtemelen tahmin Radar gönderilen bir dahaki sefere olur 1725 01:26:30,350 --> 01:26:31,420 dışarı darbe. 1726 01:26:31,420 --> 01:26:33,110 Bu bir dizi kapısı denirdi. 1727 01:26:33,110 --> 01:26:37,660 >> -O Zaman, Patriot kez yeterli zaman vardır karar 1728 01:26:37,660 --> 01:26:42,450 Geri dönüp bir sonraki kontrol etmek için geçti Bu tespit nesne için konum, 1729 01:26:42,450 --> 01:26:43,600 geri gider. 1730 01:26:43,600 --> 01:26:48,650 Bu yüzden yanlış döndü zaman yer, o zaman hiçbir nesne görür. 1731 01:26:48,650 --> 01:26:52,160 Ve hiçbir olduğunu karar Nesne, bu yanlış bir algılama oldu, 1732 01:26:52,160 --> 01:26:53,930 ve parça düşer. 1733 01:26:53,930 --> 01:26:57,030 >> -The Gelen Scud kayboldu radar ekranından. 1734 01:26:57,030 --> 01:27:00,260 Ve saniye sonra, onu kışlaya çarptı. 1735 01:27:00,260 --> 01:27:06,150 Scud 28 öldürdü, ve son olarak bir ilk Körfez Savaşı sırasında ateş etti. 1736 01:27:06,150 --> 01:27:11,960 >> Trajik, güncellenmiş yazılım ertesi gün Dhahran geldi. 1737 01:27:11,960 --> 01:27:14,930 Yazılım kusur vardı edilmiş sabit kapatma 1738 01:27:14,930 --> 01:27:19,806 sorunlu bir bölüm Patriot füze tarihçesi. 1739 01:27:19,806 --> 01:27:20,729 >> [VİDEO OYNATMA] 1740 01:27:20,729 --> 01:27:23,520 DAVID J. MALAN: Yani bu bütün olduğunu demek taşması bu konularda o 1741 01:27:23,520 --> 01:27:25,860 ve belirsizlik çok daha gerçek. 1742 01:27:25,860 --> 01:27:26,920 Peki buraya? 1743 01:27:26,920 --> 01:27:28,895 Biz sadece printf bahsediyoruz ile başladı. 1744 01:27:28,895 --> 01:27:31,270 Yine, bu işlev o , Ekrana bir şeyler yazdırır 1745 01:27:31,270 --> 01:27:33,450 ve biz bundan sonra ortaya bir kaç başka fonksiyonlar 1746 01:27:33,450 --> 01:27:34,945 Sözde CS50 kitaplığından. 1747 01:27:34,945 --> 01:27:36,910 Ve biz devam edeceğiz zamanında bu bkz. 1748 01:27:36,910 --> 01:27:40,760 Ve biz, özellikle, olsun dizesini kullanılan ve int almak ve şimdi de float almak, 1749 01:27:40,760 --> 01:27:44,410 ve henüz diğerleri hala biz karşılaşacak ve çok geçmeden kendimizi kullanın. 1750 01:27:44,410 --> 01:27:47,220 >> Ama zaman zaman, var Biz zaten bir ihtiyaç görülen 1751 01:27:47,220 --> 01:27:50,520 Neleri geriye bu fonksiyonlar eli saklamak için? 1752 01:27:50,520 --> 01:27:52,920 Onlar bize geri bir dize el, bir int, ya da bir şamandıra veya. 1753 01:27:52,920 --> 01:27:56,070 Ve bazen bu koymak gerekiyor bir yerde dize veya int veya şamandıra. 1754 01:27:56,070 --> 01:28:00,100 >> Ve bu şeyleri saklamak için, sadece hatırlama Scratch gibi, biz değişkenleri var. 1755 01:28:00,100 --> 01:28:03,260 Ama Scratch aksine, C biz gerçek türleri 1756 01:28:03,260 --> 01:28:05,530 variables-- veri türleri, daha çok generally-- 1757 01:28:05,530 --> 01:28:08,640 Aralarında, bir dize, bir int bir yüzer ve hala bu diğerleri. 1758 01:28:08,640 --> 01:28:12,321 >> Ve bu yüzden C değişkenleri bildirmek zaman, bizim veri türlerini bildirmek gerekir. 1759 01:28:12,321 --> 01:28:14,820 Bu yaparız bir şey değil dönem sonra yapmak zorunda 1760 01:28:14,820 --> 01:28:16,810 gibi diğer dillere geçiş. 1761 01:28:16,810 --> 01:28:19,610 Ama şimdi, biz ihtiyacımız var Önceden bir priori için, 1762 01:28:19,610 --> 01:28:24,370 bilgisayara ne tür açıklamak değişkenin biz bize vermek istiyoruz. 1763 01:28:24,370 --> 01:28:27,290 >> Şimdi, bu arada, yazdırmak için veri türleri bu tür, 1764 01:28:27,290 --> 01:28:29,570 Biz söylemek ne printf var. 1765 01:28:29,570 --> 01:28:32,450 Ve biz, yaylı çalgılar için yüzde s gördüm ve tamsayılar için yüzde i 1766 01:28:32,450 --> 01:28:33,790 Zaten ve birkaç diğerleri. 1767 01:28:33,790 --> 01:28:37,237 Ve bu sadece gereksinimleri Görsel sunum için 1768 01:28:37,237 --> 01:28:38,070 bu bilginin. 1769 01:28:38,070 --> 01:28:42,080 >> Ve bunların her biri aslında olabilir parametrize ya da bir şekilde tweaked, 1770 01:28:42,080 --> 01:28:45,370 Eğer daha fazla kontrol istiyorsanız Alacağınız çıktı türü. 1771 01:28:45,370 --> 01:28:49,604 Ve aslında, bu sadece çıkıyor yeni bir hat eğik n vardır. 1772 01:28:49,604 --> 01:28:52,520 Başka bir eğik denilen bir şey var bir satır başı, r olan 1773 01:28:52,520 --> 01:28:54,360 Bir daha yakındır eski okul daktilo, 1774 01:28:54,360 --> 01:28:57,690 ve ayrıca Windows yıllardır kullanılmaktadır. 1775 01:28:57,690 --> 01:28:59,690 >> sekmeler için ters eğik çizgi t var. 1776 01:28:59,690 --> 01:29:03,170 isterseniz o çıkıyor Bir dize içinde çift tırnak, 1777 01:29:03,170 --> 01:29:05,000 kullandığımız hatırlama çift ​​tırnak çift 1778 01:29:05,000 --> 01:29:07,900 sol ve sağ alıntı Bugüne kadar bizim dizeleri sona erer. 1779 01:29:07,900 --> 01:29:09,420 Şeyleri şaşırtmak gibi görünüyor. 1780 01:29:09,420 --> 01:29:12,503 >> Eğer bir çift tırnak koymak isterseniz Gerçekten de, bir string-- ve orta 1781 01:29:12,503 --> 01:29:13,670 bunu görmek kafa karıştırıcı. 1782 01:29:13,670 --> 01:29:17,120 Ve böylece bu yüzden, kaçmak zorunda , Bir şey ile bir çift tırnak konuşmak 1783 01:29:17,120 --> 01:29:18,860 gibi, kelimenin tam anlamıyla, çift tırnak karakterler. 1784 01:29:18,860 --> 01:29:20,230 Ve hala birkaç diğer var. 1785 01:29:20,230 --> 01:29:24,540 Ve biz onlardan daha çok göreceksiniz uzun zaman önce gerçek kullanımda. 1786 01:29:24,540 --> 01:29:27,930 >> Yani şimdi geçiş izin veri ve temsil, 1787 01:29:27,930 --> 01:29:30,820 ve aritmetik operatörler, bütün hangi bize bazı bina verdi 1788 01:29:30,820 --> 01:29:32,070 bloklar oynamak için. 1789 01:29:32,070 --> 01:29:34,481 Ama şimdi en doğrusu verelim Bize kelime kalan 1790 01:29:34,481 --> 01:29:36,230 Daha önce olduğu Scratch ile geçen hafta 1791 01:29:36,230 --> 01:29:39,350 diğer bazı göz alarak C- içinde yapıları hepsi değil. 1792 01:29:39,350 --> 01:29:41,680 Ama fikirler we ' Gerçekten sadece görmek için yaklaşık 1793 01:29:41,680 --> 01:29:45,610 dan çeviri vurgulamak bir dil, Scratch, başka C. 1794 01:29:45,610 --> 01:29:48,470 >> Ve zamanla, biz alırım Bizim araç için daha fazla araç, 1795 01:29:48,470 --> 01:29:49,820 yani sözdizimsel, konuşmak için. 1796 01:29:49,820 --> 01:29:54,190 Ve, gerçekten, fikirler olduğunu göreceksiniz Şimdi geçen hafta oldukça tanıdık. 1797 01:29:54,190 --> 01:29:55,200 Yani bu yapalım. 1798 01:29:55,200 --> 01:29:58,870 >> Devam edelim ve bir program kamçılamak edelim aslında bazı ifadeler kullanır, 1799 01:29:58,870 --> 01:30:00,720 Bir Boole ifadesi. 1800 01:30:00,720 --> 01:30:02,810 Beni burada devam edelim ve yeni bir dosya oluşturun. 1801 01:30:02,810 --> 01:30:06,090 Bu condition.c arayacağım. 1802 01:30:06,090 --> 01:30:09,350 >> Beni devam edelim ve CS50 kütüphane yer almaktadır. 1803 01:30:09,350 --> 01:30:12,640 Ve beni go ahead ve eklemenize izin Bizim fonksiyonlar için standart io.h, 1804 01:30:12,640 --> 01:30:14,690 ve printf ve daha saptanmıştır. 1805 01:30:14,690 --> 01:30:18,900 Beni kendime o klişe vereyim kimin açıklama yaparız int void main, 1806 01:30:18,900 --> 01:30:20,360 geri gelecekte geliyor. 1807 01:30:20,360 --> 01:30:23,820 >> Şimdi bana devam et ve vereyim Kendimi olsun int üzerinden bir int. 1808 01:30:23,820 --> 01:30:25,970 Sonra beni go ahead ve bu yapalım. 1809 01:30:25,970 --> 01:30:30,150 Ben haydi less-- olup olmadığını söylemek istiyorum Negatif, pozitif ayırt, 1810 01:30:30,150 --> 01:30:31,260 veya sıfır değerleri. 1811 01:30:31,260 --> 01:30:36,630 >> Ben sıfırdan küçükse, bu yüzden bana izin Sadece bu program sadece söylemek zorunda, 1812 01:30:36,630 --> 01:30:42,370 negatif, ters eğik çizgi n, başka i, sıfır daha büyük ise. 1813 01:30:42,370 --> 01:30:47,030 Şimdi, tabii, söylemek için gidiyorum Pozitif, ters eğik n printf. 1814 01:30:47,030 --> 01:30:50,690 Ve sonra başka ben bu yapabileceğini eğer--. 1815 01:30:50,690 --> 01:30:53,410 >> i 0 eşitse yapabilirdim. 1816 01:30:53,410 --> 01:30:55,840 Ama ben yapmak olurdu Zaten en az bir hata. 1817 01:30:55,840 --> 01:30:59,480 eşittir işareti olduğunu hatırlayın eşit değildir, biz insanlar bildiğimiz gibi. 1818 01:30:59,480 --> 01:31:01,010 >> Ama bu atama operatörü var. 1819 01:31:01,010 --> 01:31:05,640 Ve biz 0 almak istemiyorum Sağ ve soldaki i koydu. 1820 01:31:05,640 --> 01:31:11,810 Yani bu karışıklığı önlemek, ya da belki de eşittir kötüye imzalamak, 1821 01:31:11,810 --> 01:31:14,740 İnsanlar birkaç yıl önce karar birçok programlama dilinde 1822 01:31:14,740 --> 01:31:18,000 Eğer eşitlik kontrol etmek istediğinizde sol ve sağ arasında, 1823 01:31:18,000 --> 01:31:19,635 aslında eşittir eşittir kullanın. 1824 01:31:19,635 --> 01:31:21,010 Yani eşittir iki kez oturum çarptı. 1825 01:31:21,010 --> 01:31:25,600 Eğer sağ kanattan atamak istediğiniz zaman sola, tek bir eşittir işareti kullanın. 1826 01:31:25,600 --> 01:31:29,360 Bu yüzden paha başka yapabileceği Ben eşitse sıfıra eşit. 1827 01:31:29,360 --> 01:31:31,710 >> Sonra gidebiliriz Benim küme parantezi açmak 1828 01:31:31,710 --> 01:31:36,087 ve printf 0, ters eğik çizgi n, bitmiş, demek. 1829 01:31:36,087 --> 01:31:38,170 Ama nasıl bu hatırlıyorum yol çatal çalışabilir. 1830 01:31:38,170 --> 01:31:39,836 Ve, gerçekten, sadece mantık düşün. 1831 01:31:39,836 --> 01:31:41,510 Bir sayıdır. 1832 01:31:41,510 --> 01:31:43,320 Bu özel olarak ise, bir tam sayı. 1833 01:31:43,320 --> 01:31:48,600 Ve daha az olacak demektir 0 veya 0'dan 0 veya daha fazla. 1834 01:31:48,600 --> 01:31:51,600 Yani bu tür var zımni varsayılan durumda. 1835 01:31:51,600 --> 01:31:54,920 >> Ve böylece biz, tıpkı olabilir Çizilmeye, else if vazgeçmek 1836 01:31:54,920 --> 01:31:55,747 ve hemen hemen her söylüyorlar. 1837 01:31:55,747 --> 01:31:57,830 Mantıken, eğer programcı orada sadece biliyorum 1838 01:31:57,830 --> 01:32:01,635 Üç kovalar hangi bir içine Senaryo birinci fall-- olabilir 1839 01:32:01,635 --> 01:32:03,510 İkinci ya da üçüncü Bu yok yani mevcut 1840 01:32:03,510 --> 01:32:07,100 Ek hassasiyet ekleyerek rahatsız ve burada ek mantık. 1841 01:32:07,100 --> 01:32:09,690 Sadece ile devam Burada başka varsayılan durumda. 1842 01:32:09,690 --> 01:32:11,950 >> Şimdi, devam edelim Bu kaydettikten sonra, yapmak 1843 01:32:11,950 --> 01:32:15,760 koşullar conditions-- çizgi nokta değil büyük bir kullanıcı arayüzü, 1844 01:32:15,760 --> 01:32:18,914 Ben sormadan değilim çünkü Kullanıcı daha önce bahsettiğim gibi. 1845 01:32:18,914 --> 01:32:19,580 Ama bu sorun değil. 1846 01:32:19,580 --> 01:32:20,454 Biz basit tutmak gerekir. 1847 01:32:20,454 --> 01:32:21,890 numarasını 42 deneyelim. 1848 01:32:21,890 --> 01:32:23,240 Ve bu pozitif. 1849 01:32:23,240 --> 01:32:26,120 numarasını deneyelim negatif, 42 negatif. 1850 01:32:26,120 --> 01:32:28,244 >> değerini 0 deneyelim. 1851 01:32:28,244 --> 01:32:29,160 Ve gerçekten de işe yarıyor. 1852 01:32:29,160 --> 01:32:33,900 Şimdi, daha önce sorunları ile göreceksiniz Uzun, test şeyler üç kez, 1853 01:32:33,900 --> 01:32:34,980 Muhtemelen yeterli değildir. 1854 01:32:34,980 --> 01:32:37,438 Muhtemelen bazılarını test etmek isteyebilirsiniz Büyük sayılar, bazı küçük 1855 01:32:37,438 --> 01:32:40,520 sayılar, bazı köşe durumlarda, olarak Biz bunları açıklamak için geleceğiz. 1856 01:32:40,520 --> 01:32:42,500 >> Ama şimdi, bu bir Oldukça basit bir program. 1857 01:32:42,500 --> 01:32:45,160 Ve ben, mantıklı, eminim üç olguda içine düştüğü. 1858 01:32:45,160 --> 01:32:49,360 Ve, gerçekten, hatta biz bile sadece Potansiyel downsides üzerinde duruldu 1859 01:32:49,360 --> 01:32:53,480 tutarsızlığın ve taşması, içinde CS50 sorunları birçok gerçeklik nerede, 1860 01:32:53,480 --> 01:32:56,000 Biz endişe gitmiyor her zaman, ilgili, 1861 01:32:56,000 --> 01:32:59,050 taşma bu konular ve belirsizlik nedeniyle, aslında, C, 1862 01:32:59,050 --> 01:33:01,889 aslında tüm olmadığını Bunları önlemek için kolay. 1863 01:33:01,889 --> 01:33:04,180 Eğer saymak istiyorsanız Daha büyük ve daha büyük ve daha büyük, 1864 01:33:04,180 --> 01:33:07,510 bu teknikler vardır çıkıyor genellikle denilen şeyler içeren kullanabilirsiniz 1865 01:33:07,510 --> 01:33:11,240 kütüphaneler, kod koleksiyonları, o kullanabileceğiniz diğer insanlar yazdı 1866 01:33:11,240 --> 01:33:13,910 gibi ve diğer diller aslında Java ve diğerleri, 1867 01:33:13,910 --> 01:33:15,800 çok daha kolay hale daha yüksek saymak. 1868 01:33:15,800 --> 01:33:19,810 Bu yüzden gerçekten bu tehlikeleri bazı olduğunu Kullandığınız dilin bir fonksiyonudur. 1869 01:33:19,810 --> 01:33:22,710 Ve önümüzdeki haftalarda, yaparız gerçekten ne kadar tehlikeli C bakın 1870 01:33:22,710 --> 01:33:24,950 Eğer düzgün kullanmak istemiyorsanız olabilir. 1871 01:33:24,950 --> 01:33:27,610 Ama oradan, ile Python ve JavaScript, olacak 1872 01:33:27,610 --> 01:33:32,620 Biz bazı ek korumaları üzerinde tabaka, ve bu risklerin daha az çalışır. 1873 01:33:32,620 --> 01:33:35,820 >> Yani yapalım biraz daha Bizim programda ilginç bir mantık. 1874 01:33:35,820 --> 01:33:39,110 Bu yüzden bana go ahead ve oluşturmanıza izin Mantıksal olarak adlandırılan bir program 1875 01:33:39,110 --> 01:33:43,804 sadece bu yüzden bazı ile oynayabilirsiniz Gerçek mantık, logical.c. 1876 01:33:43,804 --> 01:33:46,870 Ben sadece kopyalayıp yapıştırın bazı edeceğiz Daha önce bu yüzden kod geri almak 1877 01:33:46,870 --> 01:33:49,950 Bu güzel başlangıç ​​noktasına. 1878 01:33:49,950 --> 01:33:53,980 >> Ben Char C yapmak bana bu sefer edelim o C'lik bir isim vereceğim 1879 01:33:53,980 --> 01:33:58,510 geleneksel sırf, kullanıcıdan bir karakter olsun. 1880 01:33:58,510 --> 01:34:00,730 Ve en gibi farz edelim Ben bir kısmını uygulamak ediyorum 1881 01:34:00,730 --> 01:34:04,130 Bu Rm programı, kaldır Daha önce programı kullanıcı istenir 1882 01:34:04,130 --> 01:34:05,400 Bir dosyayı kaldırmak için. 1883 01:34:05,400 --> 01:34:06,750 Bunu nasıl yapabiliriz? 1884 01:34:06,750 --> 01:34:11,090 >> C eşitse ben söylemek istiyorum Alıntı unquote, eşittir 1885 01:34:11,090 --> 01:34:16,304 y o zaman kabul edeceğim Kullanıcı evet seçtiği bildirildi. 1886 01:34:16,304 --> 01:34:17,470 Ben sadece evet yazdırmak için gidiyorum. 1887 01:34:17,470 --> 01:34:19,440 aslında yazma olsaydı kaldırma programı, 1888 01:34:19,440 --> 01:34:21,420 Biz dosyasını kaldırmak olabilir kod daha hatları. 1889 01:34:21,420 --> 01:34:22,461 Ama biz basit tutmak gerekir. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> Başka c eşitse n- eşittir ve şimdi burada, ben söylemek için gidiyorum 1892 01:34:31,250 --> 01:34:32,980 Kullanıcının demek gerekir. 1893 01:34:32,980 --> 01:34:34,360 Ve sonra başka, biliyor musun? 1894 01:34:34,360 --> 01:34:36,200 Ben başka ne bilmiyorum Kullanıcı yazın gidiyor. 1895 01:34:36,200 --> 01:34:38,533 Yani sadece söylemek için gidiyorum Bu bir hata, ne olursa olsun 1896 01:34:38,533 --> 01:34:40,070 o aslında yazdınız. 1897 01:34:40,070 --> 01:34:41,180 >> Peki burada neler oluyor? 1898 01:34:41,180 --> 01:34:44,530 temel bir fark vardır Ben geçmişte ne yaptık karşı. 1899 01:34:44,530 --> 01:34:49,300 Çift tırnak, çift tırnak, çift tırnak ve henüz, tek tırnak, 1900 01:34:49,300 --> 01:34:50,170 tek tırnak. 1901 01:34:50,170 --> 01:34:52,860 Bu zaman o, C çıkıyor Bir dize yazmak istiyorum, 1902 01:34:52,860 --> 01:34:56,680 Eğer biz ettik gibi, çift tırnak kullanımı yapmak printf ile tüm bu kez kullanıyorum. 1903 01:34:56,680 --> 01:35:02,030 >> Ama sadece bir ile uğraşmak istiyorsanız tek bir karakter, bir sözde karakter, 1904 01:35:02,030 --> 01:35:03,780 o zaman aslında tek tırnak kullanın. 1905 01:35:03,780 --> 01:35:05,450 programlanmış ettik olanlarınız önce, sahip olmayabilir 1906 01:35:05,450 --> 01:35:07,850 Bu konuda endişe vardı Bazı dillerde ayrım. 1907 01:35:07,850 --> 01:35:09,450 C, fark eder. 1908 01:35:09,450 --> 01:35:12,560 Ben bir char almak ve zaman ve bu yüzden istiyorum eşittir kullanarak bu kömürü karşılaştırmak için 1909 01:35:12,560 --> 01:35:18,350 y veya n gibi bazı mektuba eşittir, yapmam, Gerçekten, tek tırnak olması gerekir. 1910 01:35:18,350 --> 01:35:19,770 >> Şimdi, go ahead ve bu yapalım. 1911 01:35:19,770 --> 01:35:26,180 en go ahead ve yapabilirim edelim Mantıksal nokta mantıklı kesiyorsun. 1912 01:35:26,180 --> 01:35:27,305 Ve şimdi ben istendiğinde oluyorum. 1913 01:35:27,305 --> 01:35:30,638 Yani, muhtemelen, daha iyi bir kullanıcı deneyimi Aslında söyle ne burada yapılacak. 1914 01:35:30,638 --> 01:35:33,030 Ama sadece körü körüne gidiyorum güzel, tamam, evet için y söylüyorlar. 1915 01:35:33,030 --> 01:35:35,780 >> Tekrar çalışmasına izin, n hayır için güzel. 1916 01:35:35,780 --> 01:35:39,610 Biliyorum bazı insanlar gibi varsayalım, benim kapaklar tuş çok sık tüm üzerinde kilitleyin. 1917 01:35:39,610 --> 01:35:43,740 Bu yüzden, sermaye Y girin hata yapmak. 1918 01:35:43,740 --> 01:35:46,130 Tamam, ben bekliyorum tam olarak ne değil. 1919 01:35:46,130 --> 01:35:48,170 Gerçekten de, bilgisayar tam anlamıyla ne yapıyor 1920 01:35:48,170 --> 01:35:51,794 Ben kontrol sanıyor- bunu söyledim küçük y ve küçük n. 1921 01:35:51,794 --> 01:35:53,960 Bu iyi gibi gelmiyor kullanıcı deneyimi, gerçi. 1922 01:35:53,960 --> 01:35:59,010 Beni için soralım ve kabul küçük harf veya büyük harf ya. 1923 01:35:59,010 --> 01:36:02,090 çıkıyor Yani, isteyebilirsiniz Scratch gibi bir şey söylemek, 1924 01:36:02,090 --> 01:36:08,150 gibi tam anlamıyla veya C eşittir sermaye tek tırnaklı y eşittir. 1925 01:36:08,150 --> 01:36:11,400 çıkıyor C yok Bu değişmez anahtar sözcük ya da. 1926 01:36:11,400 --> 01:36:12,880 >> Ama iki dikey çubuk var. 1927 01:36:12,880 --> 01:36:15,463 Sen, genellikle Shift tutmak zorunda Bir ABD klavye kullanıyorsanız, 1928 01:36:15,463 --> 01:36:18,910 ve dikey direğe çarpıp dönüş tuşunun üstündeki tuş. 1929 01:36:18,910 --> 01:36:22,410 Ama bu dikey çubuk dikey çubuk anlamına gelir ya da. 1930 01:36:22,410 --> 01:36:26,220 >> Eğer, aksine, biz istedik Scratch gibi, demek ve, 1931 01:36:26,220 --> 01:36:28,180 Biz işareti işareti yapabilirdi. 1932 01:36:28,180 --> 01:36:31,330 Yani, burada hiçbir mantıklı mantıklı çünkü insan belki yapamadım 1933 01:36:31,330 --> 01:36:37,110 yazdığınız her ikisi de y ve küçük y ve aynı karakter olarak sermaye Y. 1934 01:36:37,110 --> 01:36:39,470 Yani ya da burada ne niyetinde. 1935 01:36:39,470 --> 01:36:46,280 >> Ben her iki yerde de bunu yaparsan, ya da c Yani Sermaye N, şimdi yeniden eşittir eşittir 1936 01:36:46,280 --> 01:36:49,390 Mantıklı mantıklı yeniden yapmak. 1937 01:36:49,390 --> 01:36:51,200 Şimdi, ben y yazabilirsiniz. 1938 01:36:51,200 --> 01:36:53,920 Ve ben tekrar yapabilirim sermaye Y veya sermaye N. 1939 01:36:53,920 --> 01:36:56,630 Ve ben ek eklemek olabilir Hala kombinasyonları. 1940 01:36:56,630 --> 01:36:58,810 >> Yani bu bir mantıksal şimdi ölçüde programı 1941 01:36:58,810 --> 01:37:01,940 Ben mantıksal kontrol ediyorum Bu değer ya da bu değer. 1942 01:37:01,940 --> 01:37:06,420 Ve ben, mutlaka gerekmez iki veya daha fazla IFS ya da başka IFS ile gelip. 1943 01:37:06,420 --> 01:37:09,960 Aslında bazı birleştirebilirsiniz Bu şekilde bir araya mantığı ile ilgili. 1944 01:37:09,960 --> 01:37:11,950 Yani bu daha iyi olurdu sadece daha tasarlanmış 1945 01:37:11,950 --> 01:37:17,490 C küçük harf y eşitse, diyerek, c sermaye Y eşitse başka, evet yazdırmak, 1946 01:37:17,490 --> 01:37:20,074 c eşitse başka, evet yazdırmak diğer bir deyişle lower--, 1947 01:37:20,074 --> 01:37:21,990 sahip olmak zorunda değilsiniz daha dalları. 1948 01:37:21,990 --> 01:37:28,840 Sen eşdeğer bazı birleştirebilirsiniz Bu şekilde olduğu gibi, mantıksal dalları. 1949 01:37:28,840 --> 01:37:34,150 >> Yani sadece bir göz atalım Nihai madde, bir final yapı, 1950 01:37:34,150 --> 01:37:34,847 Bu Cı sağlar. 1951 01:37:34,847 --> 01:37:36,930 Ve biz geri geleceğiz Hala başkalarına gelecek. 1952 01:37:36,930 --> 01:37:41,400 Ve sonra biz bakarak bitireceğim code-- değil doğruluğu de 1953 01:37:41,400 --> 01:37:46,070 kod alma work-- ama tasarımı kod ve erken bu tohumlarını ekmeye. 1954 01:37:46,070 --> 01:37:51,337 >> Bu yüzden bana devam edelim ve Burada yeni bir dosya açın. 1955 01:37:51,337 --> 01:37:51,920 Biliyor musun? 1956 01:37:51,920 --> 01:37:54,450 Ben tekrar uygulamak için gidiyorum Aynı program 1957 01:37:54,450 --> 01:37:55,940 ancak farklı bir yapı kullanılmıştır. 1958 01:37:55,940 --> 01:38:00,110 >> Yani kendimi vermek çabuk bana izin erişim CS50.h dahil 1959 01:38:00,110 --> 01:38:04,150 CS50 kütüphane, printf standart io.h. 1960 01:38:04,150 --> 01:38:06,510 Bana int main boşluğu verin. 1961 01:38:06,510 --> 01:38:09,310 Ve sonra buraya, let Beni devam edip bunu. 1962 01:38:09,310 --> 01:38:12,010 >> Char c hemen önce olduğu gibi, char, almak alır. 1963 01:38:12,010 --> 01:38:16,770 Ve yeni bir yapı kullanmak için gidiyorum Ne karakteri, geçiş şimdi--? 1964 01:38:16,770 --> 01:38:19,820 Yani anahtar tür gibi Bir tren parçaları anahtarlama. 1965 01:38:19,820 --> 01:38:22,070 Ya da, gerçekten bu tür bir Bir else if, else if eğer, 1966 01:38:22,070 --> 01:38:23,980 ama biraz farklı yazılı. 1967 01:38:23,980 --> 01:38:25,490 >> Bir anahtar, bu gibi görünüyor. 1968 01:38:25,490 --> 01:38:29,060 Sen anahtarı, ve sonra ne karakter veya bakmak istiyorum sayı, 1969 01:38:29,060 --> 01:38:32,000 sonra bazı kaşlı beğendiğiniz Çizilmeye, sadece bu şeyler söylüyorlar. 1970 01:38:32,000 --> 01:38:33,480 Ve sonra farklı bir vaka yok. 1971 01:38:33,480 --> 01:38:34,830 >> Sen if ve else kullanmayın. 1972 01:38:34,830 --> 01:38:37,050 Kelimenin tam anlamıyla kelime harf kullanın. 1973 01:38:37,050 --> 01:38:38,790 Ve böyle bir şey söyleyebilirim. 1974 01:38:38,790 --> 01:38:43,820 >> Bu yüzden, bir küçük y durumunda, veya sermaye-Y olması halinde, 1975 01:38:43,820 --> 01:38:47,350 devam edin ve evet çıktı. 1976 01:38:47,350 --> 01:38:49,020 Ve sonra anahtarın patlak. 1977 01:38:49,020 --> 01:38:49,580 Bu kadar. 1978 01:38:49,580 --> 01:38:50,880 Yapılmıştı. 1979 01:38:50,880 --> 01:38:57,270 >> tabiri caizse, else if, küçük harf n veya sermaye N, 1980 01:38:57,270 --> 01:39:02,560 Daha sonra devam edin ve baskı çıkış yok, ve sonra bölünürler. 1981 01:39:02,560 --> 01:39:08,022 Else-- ve bu tür Varsayılan durumda indeed-- printf error-- 1982 01:39:08,022 --> 01:39:10,980 ve sadece olsa, iyi ölçmek için mantıksal bu mola gerekli değildir 1983 01:39:10,980 --> 01:39:12,896 Biz sonunda çünkü Neyse anahtarı, 1984 01:39:12,896 --> 01:39:14,520 Şimdi anahtarı dışarı bozuyorum. 1985 01:39:14,520 --> 01:39:16,280 Yani bu biraz farklı görünüyor. 1986 01:39:16,280 --> 01:39:18,272 >> Ama, mantıksal, öyle Aslında eşdeğer. 1987 01:39:18,272 --> 01:39:19,980 Ve neden kullanmak istiyorsunuz diğer üzerinden? 1988 01:39:19,980 --> 01:39:23,220 Bazen, sadece kişisel tercihi, Bazen estetik, 1989 01:39:23,220 --> 01:39:25,420 Ben bu bakıyorum eğer Şimdi, bir şey var 1990 01:39:25,420 --> 01:39:27,510 için söylenecek Bu kodun okunabilirliği. 1991 01:39:27,510 --> 01:39:30,690 Yani, bu gerçeği aldırma Kod odasında çoğumuz için yeni. 1992 01:39:30,690 --> 01:39:33,515 >> Ama sadece biraz güzel. 1993 01:39:33,515 --> 01:39:37,760 Sen, küçük y sermaye Y bkz küçük harf n, sermaye N varsayılan, 1994 01:39:37,760 --> 01:39:40,150 sadece tür atlar Bir şekilde size dışarı 1995 01:39:40,150 --> 01:39:42,200 belki, belki, o önceki örnek 1996 01:39:42,200 --> 01:39:45,780 IFS, ve dikey çubuklar ile, ve her IFS, olmayabilir. 1997 01:39:45,780 --> 01:39:51,600 Yani bu kişisel gerçekten bir konudur seçim, gerçekten, ya da okunabilirlik, 1998 01:39:51,600 --> 01:39:52,360 kod. 1999 01:39:52,360 --> 01:39:58,230 >> Ama işlevselliği açısından, bana izin devam edin ve bir anahtar, nokta çizgi yapmak 2000 01:39:58,230 --> 01:40:05,830 anahtar ve şimdi, küçük y yazın sermaye Y, küçük n, sermaye N, 2001 01:40:05,830 --> 01:40:09,250 çünkü o David, yeniden tek bir karakter. 2002 01:40:09,250 --> 01:40:12,050 beklendiği gibi kıyafetleri, x, hata yapalım. 2003 01:40:12,050 --> 01:40:15,640 Ve, logically-- ve bu şey Ben general-- bile teşvik edecek 2004 01:40:15,640 --> 01:40:17,790 Biz sadece çizilmeye olsan da Bu özelliklerin bazıları yüzey. 2005 01:40:17,790 --> 01:40:20,560 >> Ve bu apaçık olmayabilir sizi Kendinizi, klavyeye oturup 2006 01:40:20,560 --> 01:40:21,370 bu nasıl çalışıyor? 2007 01:40:21,370 --> 01:40:22,240 Bu ne yapardınız? 2008 01:40:22,240 --> 01:40:25,630 sahip hakkında güzel bir şey bir dizüstü veya masaüstü veya erişim 2009 01:40:25,630 --> 01:40:29,290 Bir derleyici ile bir bilgisayara, ve böyle bir kod editörü ile, 2010 01:40:29,290 --> 01:40:32,990 hemen hemen her zaman bu cevap verebilir bir Sadece deneyerek kendiniz için sorular. 2011 01:40:32,990 --> 01:40:36,570 >> Örneğin, retorik ise eldeki soru vardı, 2012 01:40:36,570 --> 01:40:39,540 Eğer unutursanız ne olur Kırık ifadeleri? 2013 01:40:39,540 --> 01:40:41,400 Hangi aslında Yapılacak şey çok yaygın, 2014 01:40:41,400 --> 01:40:43,540 o görünmüyor çünkü gibi gerçekten onlara ihtiyacımız var. 2015 01:40:43,540 --> 01:40:46,790 Onlar gerçekten tam değil senin Bir parantez veya kıvırcık gibi düşünce 2016 01:40:46,790 --> 01:40:47,714 bağ yapar. 2017 01:40:47,714 --> 01:40:49,630 en önde gidelim ve kodu yeniden derleyin ve gör. 2018 01:40:49,630 --> 01:40:53,690 Yani anahtarı, nokta çizgi anahtarı olun. 2019 01:40:53,690 --> 01:40:56,435 alt harf yazın edelim y üst durumda, girin. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 Yani y yazdınız. 2022 01:41:00,700 --> 01:41:04,420 >> Program hayır, evet dedi, hata, sanki onun aklını değişiyordu. 2023 01:41:04,420 --> 01:41:09,280 ne olur çünkü Ama bu tür oldu Bir düğme ile ilk vaka olduğunu 2024 01:41:09,280 --> 01:41:13,899 maç esasen demek, hey bilgisayar, altındaki tüm kodu yürütmek. 2025 01:41:13,899 --> 01:41:16,690 Ve diyorsunuz yoksa sonu veya mola söyleme ya da mola söyleme, 2026 01:41:16,690 --> 01:41:19,540 Bilgisayar darbe gidiyor bu satırların üzerinden tüm 2027 01:41:19,540 --> 01:41:22,779 ve kadar hepsini yürütmek o küme ayracı alır. 2028 01:41:22,779 --> 01:41:24,320 Bu nedenle fren, gerçekten de gereklidir. 2029 01:41:24,320 --> 01:41:27,120 Ama burada bir paket, ne zaman olduğunu Şüphe, bir şey deneyin. 2030 01:41:27,120 --> 01:41:29,510 Belki ilk kodu kaydetmek, ya da ekstra dosyaya kaydetmek 2031 01:41:29,510 --> 01:41:32,930 Eğer gerçekten endişeli iseniz karışıklık ve kurtarmak zorunda 2032 01:41:32,930 --> 01:41:34,430 Bildiğiniz iş çalışıyor. 2033 01:41:34,430 --> 01:41:35,410 >> Ama şeyler denemek. 2034 01:41:35,410 --> 01:41:38,074 Ve belki de, hem korkma bilgisayar yapabilir ne, 2035 01:41:38,074 --> 01:41:39,490 ya bir şey kırmak olabilir. 2036 01:41:39,490 --> 01:41:42,790 Her zaman geri dönebilirsiniz Bazı önceki sürüme. 2037 01:41:42,790 --> 01:41:45,640 >> Yani bakarak bitirelim kodun tasarımı. 2038 01:41:45,640 --> 01:41:49,020 Biz yazma şimdi bu yetenek var koşullar ve yazma döngüler, 2039 01:41:49,020 --> 01:41:50,850 ve değişkenler, ve arama işlevleri. 2040 01:41:50,850 --> 01:41:54,590 Yani, açıkçası, biz geri de naziksiniz nerede, Scratch ile bir hafta önce vardı 2041 01:41:54,590 --> 01:42:00,120 daha az zorlayıcı metinsel olsa Sıfırdan daha çevre izin verir. 2042 01:42:00,120 --> 01:42:03,990 >> Ama biz elde ettik ne kadar hızlı olduğunu fark öyle olsa bile o kelime, 2043 01:42:03,990 --> 01:42:07,570 batmaya biraz zaman alacak, Şimdi bu kelimeleri kullanabilirsiniz, böylece 2044 01:42:07,570 --> 01:42:10,320 daha ilginç programlar yazmak için. 2045 01:42:10,320 --> 01:42:12,940 Ve en bebek adımı atalım Bu doğru, aşağıdaki gibi. 2046 01:42:12,940 --> 01:42:14,890 Beni devam edelim ve Burada yeni bir dosya oluşturun. 2047 01:42:14,890 --> 01:42:17,750 >> Ben bu çağıracağım prototype.c ve tanıtmak 2048 01:42:17,750 --> 01:42:20,954 İlk defa, becerisi Kendi fonksiyonları yapmak. 2049 01:42:20,954 --> 01:42:22,870 Bazılarınız olabilir Scratch ile bu yapılır, 2050 01:42:22,870 --> 01:42:25,430 bu sayede oluşturabilirsiniz senin Scratch içinde kendi özel bloklar, 2051 01:42:25,430 --> 01:42:27,892 ve daha sonra yerine sürükleyin her yerde C. istiyorum 2052 01:42:27,892 --> 01:42:30,100 Ve en programlama dil, tam olarak yapabilirsiniz 2053 01:42:30,100 --> 01:42:33,580 ki- kendi işlevlerini yapmak, onlar zaten yokmuş. 2054 01:42:33,580 --> 01:42:38,660 >> Yani, örneğin, ben önde gitmesine izin ve CS50.h içerir ve bunlar arasında 2055 01:42:38,660 --> 01:42:43,110 Standart io.h, int void main. 2056 01:42:43,110 --> 01:42:46,020 Ve şimdi bir var Gitmeye hazır tutucu. 2057 01:42:46,020 --> 01:42:48,550 Ben baskı şeyleri saklamak İnsanların isimleri bugün gibi. 2058 01:42:48,550 --> 01:42:51,910 Ve bu sanki şey hissediyor güzel olmaz eğer orada 2059 01:42:51,910 --> 01:42:53,936 Baskı adı adında bir işlevi vardı? 2060 01:42:53,936 --> 01:42:55,060 Ben printf kullanmak zorunda değilsiniz. 2061 01:42:55,060 --> 01:42:56,976 Ben hatırlamak zorunda değilsiniz Tüm biçim kodları. 2062 01:42:56,976 --> 01:43:00,050 Neden ben değil, ya da neden Önümde birini vermedi 2063 01:43:00,050 --> 01:43:02,980 Bir işlevi çağrılır baskı oluşturmak adı, bazı isim verilen, 2064 01:43:02,980 --> 01:43:03,980 basitçe yazdırır? 2065 01:43:03,980 --> 01:43:08,700 >> Başka bir deyişle, ben, hey, derseniz Bilgisayar, bana bir dize vermek 2066 01:43:08,700 --> 01:43:11,870 Böyle kullanıcıya sorarak, CS50 en olsun dize fonksiyonu ile. 2067 01:43:11,870 --> 01:43:15,090 Hey, bilgisayar, o dizeyi koymak Sol tarafta değişken, 2068 01:43:15,090 --> 01:43:16,150 ve s diyoruz. 2069 01:43:16,150 --> 01:43:22,150 Ve sonra, bilgisayar hey, go ahead ve kişinin adını, yapılması yazdırmak. 2070 01:43:22,150 --> 01:43:26,240 >> Şimdi, o güzel çünkü olurdu Bu program aptly adlı 2071 01:43:26,240 --> 01:43:29,170 bunu yapmak için gerekeni söyler Bu fonksiyon isimleri yoluyla. 2072 01:43:29,170 --> 01:43:32,930 beni ve prototip yapmak, girin bakalım. 2073 01:43:32,930 --> 01:43:34,930 Ve ne yazık ki, Bu sinek için gitmiyor. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c, satır 7, karakter 5, hata, örtük beyanı 2075 01:43:39,430 --> 01:43:42,960 fonksiyon baskı adı C99, C99 geçersiz olduğu 2076 01:43:42,960 --> 01:43:45,130 C bir sürümünü anlamı 1999 yılında ortaya çıktı. 2077 01:43:45,130 --> 01:43:45,730 Bu kadar. 2078 01:43:45,730 --> 01:43:48,780 >> Yani bilmiyorum Tüm bu henüz anlamına gelir. 2079 01:43:48,780 --> 01:43:50,810 Ama kırmızı hatayı fark yok. 2080 01:43:50,810 --> 01:43:51,770 Bu oldukça açıktır. 2081 01:43:51,770 --> 01:43:53,769 >> Ve bu o görünüyor Burada yeşil karakteri, 2082 01:43:53,769 --> 01:43:57,520 Sorun baskı adıyla, açık parantez s, yakın parantez, noktalı virgül. 2083 01:43:57,520 --> 01:44:01,800 Ama örtük beyanı fonksiyonu kısaca erken gördün. 2084 01:44:01,800 --> 01:44:04,880 Bu durum, sadece, anlamına gelir Clang Ne demek istediğimi bilmiyor. 2085 01:44:04,880 --> 01:44:09,000 >> öyle ben bir kelime kelime kullandım görülen ya da daha önce öğretilen hiç. 2086 01:44:09,000 --> 01:44:11,950 Ve bu yüzden öğretmek gerekiyor Bu fonksiyon ne anlama geldiğini. 2087 01:44:11,950 --> 01:44:13,590 Bu yüzden devam edin ve bunu yapmak için gidiyorum. 2088 01:44:13,590 --> 01:44:17,970 >> Devam edin ve uygulamak için gidiyorum Baskı Adı denilen benim kendi işlevi. 2089 01:44:17,970 --> 01:44:24,720 aşağıdaki gibi Ve bunu, söylemek için gidiyorum Bu, printf, merhaba, yüzde yapar 2090 01:44:24,720 --> 01:44:27,760 s, ters eğik çizgi n, ad, noktalı virgül. 2091 01:44:27,760 --> 01:44:29,250 Yani sadece ne yaptım? 2092 01:44:29,250 --> 01:44:31,325 >> Yani için, çıkıyor Kendi işlevi uygulamak 2093 01:44:31,325 --> 01:44:33,845 biz tür bazı ödünç Ana aynı yapı 2094 01:44:33,845 --> 01:44:35,720 biz sadece been alınan için verilen ve ben 2095 01:44:35,720 --> 01:44:37,730 biliyorum sadece kopyalama ve hoş çok ne yapıştırarak 2096 01:44:37,730 --> 01:44:39,170 Geçmişte yazıyorum. 2097 01:44:39,170 --> 01:44:40,570 Ama burada desen dikkat edin. 2098 01:44:40,570 --> 01:44:43,750 Orta, Ana, Void, biz ayrı alay edeceğiz uzun zaman önce aslında ne anlama geldiğini. 2099 01:44:43,750 --> 01:44:46,160 >> Ama bugün için, sadece paralelliği dikkat edin. 2100 01:44:46,160 --> 01:44:48,210 Void, baskı adı, string name, bu yüzden var 2101 01:44:48,210 --> 01:44:50,310 mor anahtar kelime, hangi biz başlatmak için gidiyoruz 2102 01:44:50,310 --> 01:44:54,067 Bir dönüş türünü arayarak, ad fonksiyon ve ardından giriş. 2103 01:44:54,067 --> 01:44:56,400 Yani, aslında, biz damıtmak için gibi geçen hafta bu tür 2104 01:44:56,400 --> 01:44:59,030 Bu isim ya da olduğu gibi Biz konum kod algoritması 2105 01:44:59,030 --> 01:45:00,761 write-- gidiyor temel algoritma 2106 01:45:00,761 --> 01:45:02,010 kodu, yazmak için gidiyoruz. 2107 01:45:02,010 --> 01:45:03,180 >> Bu onun girişidir. 2108 01:45:03,180 --> 01:45:04,670 Bu onun çıkıştır. 2109 01:45:04,670 --> 01:45:08,730 Bu fonksiyon, baskı adıdır isim olarak adlandırılan bir dize almak için tasarlanmış, 2110 01:45:08,730 --> 01:45:11,350 ya da her neyse, girdi olarak, ve daha sonra boşluk. 2111 01:45:11,350 --> 01:45:13,904 Bu, hiçbir şey geri dönmez gibi dize almak ya da int yapar olsun. 2112 01:45:13,904 --> 01:45:15,570 Yani geri bana bir şey teslim edecek. 2113 01:45:15,570 --> 01:45:17,960 Sadece bir sahip olacak yan etkisi, tabiri caizse, 2114 01:45:17,960 --> 01:45:19,570 Bir kişinin adını yazdırma. 2115 01:45:19,570 --> 01:45:22,260 Bu yüzden, satır 7 fark Baskı adını arayabilirsiniz. 2116 01:45:22,260 --> 01:45:25,920 Hat 10, ben tanımlayabilirsiniz veya baskı adını uygulamak. 2117 01:45:25,920 --> 01:45:28,450 Ama ne yazık ki, bu yeterli değil. 2118 01:45:28,450 --> 01:45:31,230 >> Beni devam edelim ve kaydettikten sonra bu yeniden derleyin. 2119 01:45:31,230 --> 01:45:33,910 Hey, şimdi, bunu yaptık daha da kötüsü, bu gibi görünüyor. 2120 01:45:33,910 --> 01:45:37,027 Yani örtülü beyanı işlev baskı adı geçersiz. 2121 01:45:37,027 --> 01:45:38,360 Ve yine, daha hataları var. 2122 01:45:38,360 --> 01:45:41,430 Ama ben bile, daha önce uyardı olarak Eğer boğulmuş olsun, 2123 01:45:41,430 --> 01:45:44,850 ya da biraz üzgün çok görmek hatalar, ilk sadece odak 2124 01:45:44,850 --> 01:45:47,500 Başlangıçta, çünkü olabilir sadece Bir basamaklı etkisi vardı. 2125 01:45:47,500 --> 01:45:51,970 Daha özel olarak Cı veya Clang Yani hala baskı adını tanımıyor. 2126 01:45:51,970 --> 01:45:54,580 >> Ve çünkü Clang, var Tasarım gereği, tür aptal. 2127 01:45:54,580 --> 01:45:56,280 Sadece yapmanız söylemek yapar. 2128 01:45:56,280 --> 01:46:00,950 Ve sadece sırayla yapar hangi yapmak için bunu söylemek. 2129 01:46:00,950 --> 01:46:05,270 >> Bu yüzden, hat dört ana tanımladığınız gibi biz oldukça sık yapıyorum. 2130 01:46:05,270 --> 01:46:07,980 Line 10 Baskı adını tanımladık. 2131 01:46:07,980 --> 01:46:11,793 Ama kullanmaya çalışıyorum hat yedi baskı adı. 2132 01:46:11,793 --> 01:46:13,670 >> Çok yakında, henüz yok oluyor. 2133 01:46:13,670 --> 01:46:19,150 Yani zeki ve benzeri olabilir, Tamam, bu yüzden sadece birlikte oynayalım, 2134 01:46:19,150 --> 01:46:23,680 ve baskı adını taşımak Burada, ve yeniden derlemek. 2135 01:46:23,680 --> 01:46:24,550 Aman Tanrım. 2136 01:46:24,550 --> 01:46:25,260 İşe yaradı. 2137 01:46:25,260 --> 01:46:26,670 Bu kadar basit. 2138 01:46:26,670 --> 01:46:28,120 >> Ama mantık tam olarak bu. 2139 01:46:28,120 --> 01:46:30,870 Sen çınlama öğretmek zorunda ne ilk işlev tanımlayarak olduğunu. 2140 01:46:30,870 --> 01:46:31,920 Sonra kullanabilirsiniz. 2141 01:46:31,920 --> 01:46:33,940 Ama açıkçası, bu hissediyor kaygan bir eğim gibi. 2142 01:46:33,940 --> 01:46:35,773 >> Yani her zaman koşmak bir sorun haline, ben sadece 2143 01:46:35,773 --> 01:46:39,450 vurgulamak ve kodu kopyalayıp olacak Onu kesip buraya kadar yapıştırın yazdı. 2144 01:46:39,450 --> 01:46:41,370 Ve, elbette, biz olabilir Bazı senaryolar contrive 2145 01:46:41,370 --> 01:46:43,286 Nerede bir işlev olabilir Başka aramak gerekiyor. 2146 01:46:43,286 --> 01:46:46,030 Ve sen sadece her koyamazsınız her yukarıdaki fonksiyon. 2147 01:46:46,030 --> 01:46:47,930 >> Bu yüzden orada 's çıkıyor daha iyi bir çözüm. 2148 01:46:47,930 --> 01:46:50,100 Biz bu olabilir bırakabilirsiniz. 2149 01:46:50,100 --> 01:46:53,677 Ve açıkçası, o genellikle güzel ve uygun ve iyi tasarım 2150 01:46:53,677 --> 01:46:56,760 Çünkü, yine ilk ana koymak, Sadece yeşil bayrak tıklandığında gibi ana, 2151 01:46:56,760 --> 01:46:59,027 Bu fonksiyon olduğunu Varsayılan olarak çalıştırılmaktadır. 2152 01:46:59,027 --> 01:47:01,110 Yani siz de koymak olabilir dosyasının en üstünde o 2153 01:47:01,110 --> 01:47:03,560 böylece ya da herhangi bir zaman diğer insan dosyaya bakar 2154 01:47:03,560 --> 01:47:06,360 Eğer oluyor biliyor sadece ana ilk okuyarak. 2155 01:47:06,360 --> 01:47:15,360 çıkıyor Yani, biz çınlama söyleyebilirim proaktif, hey, Clang, dördüncü hatta, 2156 01:47:15,360 --> 01:47:17,940 Ben uygulamak için söz Bir işlevi çağrılır Yazdır 2157 01:47:17,940 --> 01:47:22,600 bir dize olarak adlandırılan adını alır Ad girdi ve döner hiçbir şey, geçersiz olarak. 2158 01:47:22,600 --> 01:47:24,770 Ve ben etrafında alırsınız daha sonra uygulanması. 2159 01:47:24,770 --> 01:47:25,680 >> İşte Ana geliyor. 2160 01:47:25,680 --> 01:47:29,130 Şimdi on line 9 kullanabilirsiniz ana Adı Yazdır nedeniyle Clang 2161 01:47:29,130 --> 01:47:32,600 Sonuç olarak, bu güvenmek, bu tanımı karşılaşacak 2162 01:47:32,600 --> 01:47:34,880 Baskı Adı uygulanması. 2163 01:47:34,880 --> 01:47:37,390 Yani benim dosyayı kaydettikten sonra, let Beni devam edin ve prototip yapmak, 2164 01:47:37,390 --> 01:47:38,498 Bu sefer iyi görünüyor. 2165 01:47:38,498 --> 01:47:43,470 Nokta prototip, let me, çizgi devam edin ve bir ad yazın. 2166 01:47:43,470 --> 01:47:48,440 David, merhaba David, Zamila, merhaba Zamila ve gerçekten, şimdi çalışıyor. 2167 01:47:48,440 --> 01:47:52,200 >> Yani burada bileşen biz ettik ki özel bir gibi özel bir işlev yaptı 2168 01:47:52,200 --> 01:47:54,219 Çizilmeye blok biz bunu diyorlar. 2169 01:47:54,219 --> 01:47:57,010 Ama Scratch aksine nerede yapabilirsiniz Sadece oluşturmak ve kullanmaya başlayabilirsiniz, 2170 01:47:57,010 --> 01:47:59,330 Şimdi biz olmak zorunda Daha bilgiçlik küçük 2171 01:47:59,330 --> 01:48:03,410 ve aslında çınlama tren kullanmak için, ya da bunu beklemek. 2172 01:48:03,410 --> 01:48:09,140 Şimdi, bir kenara, tüm bu zaman neden Biz de dahil olmak üzere inanç sadece körü körüne yapılmış 2173 01:48:09,140 --> 01:48:12,170 Standart io.h dahil CS50.h ve? 2174 01:48:12,170 --> 01:48:15,190 >> Eh, o çıkıyor, bir kaç başka şeylerin yanı sıra, 2175 01:48:15,190 --> 01:48:18,550 Bütün o nokta h var ne dosyalar, dosyalar olmak. 2176 01:48:18,550 --> 01:48:20,460 Onlar tabiri caizse, başlık dosyaları ediyoruz. 2177 01:48:20,460 --> 01:48:23,270 Onlar hala C ile yazılmış konum Ama Onlar dosyanın farklı türde bir konum. 2178 01:48:23,270 --> 01:48:28,690 >> Şimdilik, hemen hemen varsayabiliriz CS50.h içinde olduğunu tüm 2179 01:48:28,690 --> 01:48:33,360 Bu gibi bazı tek gömlekleri, değil Baskı Adı denilen fonksiyonlar için, 2180 01:48:33,360 --> 01:48:36,840 ancak dize Al, Al Şamandıra ve birkaç diğerleri. 2181 01:48:36,840 --> 01:48:41,510 Ve benzer prototipler vardır Standart io.h içinde bir gömlekleri, 2182 01:48:41,510 --> 01:48:46,241 şimdi printf için Kendi Adı Yazdır işlevi. 2183 01:48:46,241 --> 01:48:49,490 Yani diğer bir deyişle, tüm bu sefer biz ettik sadece körü körüne kopyalama ve yapıştırma edilmiş 2184 01:48:49,490 --> 01:48:51,780 arasında, bunlar aşağıdakileri O, ne oluyor? 2185 01:48:51,780 --> 01:48:55,310 Bu ipuçları sadece tür Ne fonksiyonlara olarak çınlama için 2186 01:48:55,310 --> 01:49:00,170 Gerçekten de, sadece uygulanan başka bir yerde farklı dosyalarda 2187 01:49:00,170 --> 01:49:02,440 başka bir yerde sistem üzerinde. 2188 01:49:02,440 --> 01:49:05,160 >> Bu yüzden baskı adını uyguladık. 2189 01:49:05,160 --> 01:49:07,910 Bu, bu yan etkisi var Ekranda bir şey baskı. 2190 01:49:07,910 --> 01:49:10,170 Ama aslında değil geri bana bir şey ver. 2191 01:49:10,170 --> 01:49:12,200 Biz yaklaşık gitmek nasıl bir program uyguluyor o 2192 01:49:12,200 --> 01:49:14,510 geri bana bir şey ver ki? 2193 01:49:14,510 --> 01:49:15,580 >> Eh, bunu deneyelim. 2194 01:49:15,580 --> 01:49:21,360 Beni go ahead ve uygulamak edelim Bir dosya adı verilen return.c 2195 01:49:21,360 --> 01:49:24,530 bu yüzden nasıl bir şey gösterebilen gibi dize alın veya Int alın, 2196 01:49:24,530 --> 01:49:27,340 Aslında dönen bir kullanıcıya geri bir şey. 2197 01:49:27,340 --> 01:49:29,840 en go ahead ve int main boşluğu tanımlayalım. 2198 01:49:29,840 --> 01:49:33,230 >> Ve yine, gelecekte, yaparız Bu int ve bu boşluğu ne olduğunu açıklamak 2199 01:49:33,230 --> 01:49:34,090 Aslında yapıyor. 2200 01:49:34,090 --> 01:49:35,840 Ama bugün için, yaparız hafife almak. 2201 01:49:35,840 --> 01:49:39,970 Ben, önde ve printf gideceğim iyi bir kullanıcı deneyimi için, x. 2202 01:49:39,970 --> 01:49:44,360 Ve sonra beklemek için gidiyorum Kullanıcı olsun int x vermek beni. 2203 01:49:44,360 --> 01:49:48,459 >> Ve sonra ben önde gidiyorum ve kareye x çıktı. 2204 01:49:48,459 --> 01:49:50,500 Yani sadece varken yaygın klavye, insanlar 2205 01:49:50,500 --> 01:49:52,600 küçük havuç kullanmak Klavyenin üzerindeki sembol 2206 01:49:52,600 --> 01:49:55,330 iktidara temsil etmek arasında, ya da üs. 2207 01:49:55,330 --> 01:49:58,960 Yani kare x i mevcuttur. 2208 01:49:58,960 --> 01:50:00,660 >> Ve şimdi bunu yapmak için gidiyorum. 2209 01:50:00,660 --> 01:50:03,940 Ben sadece x ne sanıyor- olabilir kare? x kare x kez x. 2210 01:50:03,940 --> 01:50:06,690 >> Ve yaptığımız bu bazı önce zaman zaten bugün. 2211 01:50:06,690 --> 01:50:08,730 Bu gibi gelmiyor tüm bu çok ilerleme. 2212 01:50:08,730 --> 01:50:09,570 Biliyor musun? 2213 01:50:09,570 --> 01:50:13,100 en bu fikri bazı kaldıraç edelim soyutlama son kez. 2214 01:50:13,100 --> 01:50:16,080 >> o eğer güzel olmaz mıydı adında bir işlev var 2215 01:50:16,080 --> 01:50:18,460 tam olarak bunu yapıyor kare? 2216 01:50:18,460 --> 01:50:20,640 sonunda hala, gün, aynı matematik yapar. 2217 01:50:20,640 --> 01:50:22,410 Ama soyut let alma uzakta fikri 2218 01:50:22,410 --> 01:50:25,280 bir numara ile çarpılır Başka ve sadece ona bir isim vermek, 2219 01:50:25,280 --> 01:50:27,360 gibi bu değeri kare. 2220 01:50:27,360 --> 01:50:29,560 >> Ve, bir başka deyişle, içinde C takımından bir işlevi oluşturmak izin 2221 01:50:29,560 --> 01:50:32,660 tam olarak bunu yapıyor denilen kare. 2222 01:50:32,660 --> 01:50:34,600 Kare çağrılacak gidiyor. 2223 01:50:34,600 --> 01:50:35,790 Bir int almaya gidiyor. 2224 01:50:35,790 --> 01:50:37,820 Ve yaparız sadece olacak Varsayılan olarak, n diyoruz. 2225 01:50:37,820 --> 01:50:39,403 >> Ama biz istediğiniz bir şey diyebiliriz. 2226 01:50:39,403 --> 01:50:42,900 Ve tüm bu gidiyor o kelimenin tam anlamıyla, dönüş yapmak 2227 01:50:42,900 --> 01:50:45,810 n kere n sonucu. 2228 01:50:45,810 --> 01:50:48,980 Ancak, çünkü Bir şey dönen hangi 2229 01:50:48,980 --> 01:50:53,690 biz ettik mor anahtar kelime asla line 11, daha önce görülen, 2230 01:50:53,690 --> 01:50:55,410 Sadece bu sefer geçersiz diyemeyiz. 2231 01:50:55,410 --> 01:51:01,320 >> Void, örnekte biz sadece gördüğümüz Baskı adının yerine, sadece anlamına gelir 2232 01:51:01,320 --> 01:51:02,190 bir şey yap. 2233 01:51:02,190 --> 01:51:04,170 Ama geri bana bir şey teslim yok. 2234 01:51:04,170 --> 01:51:06,790 Bu durumda, ben istiyorum n kat n geri dönmek için, 2235 01:51:06,790 --> 01:51:08,460 ya da ne olursa olsun, bu sayı. 2236 01:51:08,460 --> 01:51:12,460 >> Yani diyemeyiz, hey, bilgisayar, Ben geçersiz, hiçbir şey geri döner. 2237 01:51:12,460 --> 01:51:16,166 Doğası gereği, bir int dönmek için gidiyor. 2238 01:51:16,166 --> 01:51:17,790 Ve böylece burada oluyor hepsi bu. 2239 01:51:17,790 --> 01:51:20,070 >> giriş kare int olacak. 2240 01:51:20,070 --> 01:51:24,760 bunu kullanabilirsiniz, böylece ve bu vardır Bir isim var, N. çıkışını gidiyor 2241 01:51:24,760 --> 01:51:26,240 Bir isim gerek olmayan bir int. 2242 01:51:26,240 --> 01:51:29,590 Biz ana kadar bırakabilirsiniz, ya da kim olduğunu Beni kullanarak biz bu değeri hatırlamak 2243 01:51:29,590 --> 01:51:31,120 Kendi değişkeni ile istiyorum. 2244 01:51:31,120 --> 01:51:33,230 >> Ve yine, yalnızca yeni Burada anahtar kelime Dönüş olduğunu. 2245 01:51:33,230 --> 01:51:34,480 Ve ben sadece bazı matematik yapıyorum. 2246 01:51:34,480 --> 01:51:41,825 Ben gerçekten gereksiz olmak istedim, Ben int ürün n kat n olur diyebiliriz. 2247 01:51:41,825 --> 01:51:44,170 >> Ve sonra ürünü iade söyleyebiliriz. 2248 01:51:44,170 --> 01:51:47,360 Ancak, yine, benim açımdan daha önce bu sadece olmamak iyi design-- 2249 01:51:47,360 --> 01:51:50,060 gibi, neden bir isim tanıtmak, Bir sembol, ürünü gibi, 2250 01:51:50,060 --> 01:51:51,570 Sadece hemen dönmek için? 2251 01:51:51,570 --> 01:51:53,670 Bu, biraz daha temiz olduğunu biraz daha sıkı, bu yüzden 2252 01:51:53,670 --> 01:51:59,380 Sadece dönüş n kez söylemek, konuşmak n, tamamen bu hattın kurtulmak. 2253 01:51:59,380 --> 01:52:02,860 >> Ve okumak için sadece daha az kod, var hatalar için daha az fırsat. 2254 01:52:02,860 --> 01:52:05,180 Ve en eğer bu görelim Aslında şimdi çalışıyor. 2255 01:52:05,180 --> 01:52:09,380 Şimdi, ben gidiyorum önde ve dönüş yapmak. 2256 01:52:09,380 --> 01:52:11,460 >> Uh-oh, fonksiyonun örtülü beyanı. 2257 01:52:11,460 --> 01:52:14,080 Ben, daha önce hiçbir büyük anlaşma bu hatayı yaptı. 2258 01:52:14,080 --> 01:52:18,950 me sadece yazın edelim ya da vurgulayın ve kopyalama, aynı fonksiyon prototipi, 2259 01:52:18,950 --> 01:52:21,342 veya imza, buraya fonksiyon. 2260 01:52:21,342 --> 01:52:22,800 Yoksa bütün işlevi taşımak olabilir. 2261 01:52:22,800 --> 01:52:23,841 >> Ama bu biraz tembel. 2262 01:52:23,841 --> 01:52:24,870 Bu yüzden bunu yapmayacağım. 2263 01:52:24,870 --> 01:52:27,960 Şimdi, bana geri dönüş yapalım Yine, çizgi dönüşü nokta. 2264 01:52:27,960 --> 01:52:32,790 >> x 2. x karesi 4'tür. x 3. x kare olan 9. 2265 01:52:32,790 --> 01:52:35,300 Ve fonksiyon görünüyor Şimdi çalışıyor. 2266 01:52:35,300 --> 01:52:36,550 Yani fark burada ne var? 2267 01:52:36,550 --> 01:52:42,520 Ben, kare denir bir işlevi var Ben bir giriş koymak bu durumda,. 2268 01:52:42,520 --> 01:52:43,830 Ve ben bir çıktı geri almak. 2269 01:52:43,830 --> 01:52:46,210 Ve yine, daha önce, eğer Diğer bir örnek açmak 2270 01:52:46,210 --> 01:52:51,640 , Önceki hangi , Prototype.c denilen oldu 2271 01:52:51,640 --> 01:52:54,770 Ben baskı adını vardı tabiri caizse, geçersiz döndü 2272 01:52:54,770 --> 01:52:58,730 Ya da hiçbir şey geri döndü, ve sadece bir yan etkisi vardı. 2273 01:52:58,730 --> 01:53:00,230 >> Peki burada neler oluyor? 2274 01:53:00,230 --> 01:53:03,520 Eh, işlevi düşünün Sadece bir an için dize olsun. 2275 01:53:03,520 --> 01:53:06,570 Biz fonksiyonunu kullanarak oldum şu şekilde dize olsun. 2276 01:53:06,570 --> 01:53:10,464 >> Biz bir işlev olsun yaşadım dize gibi, CS50.h dahil 2277 01:53:10,464 --> 01:53:16,624 Standart io.h, int, ana, boşluğu bulunmaktadır. 2278 01:53:16,624 --> 01:53:18,790 Ve sonra her zaman ben oldum Bugüne kadar olsun dize denir, 2279 01:53:18,790 --> 01:53:23,260 Dediğim şey string s, gibi olsun string--, çünkü dize almak alır 2280 01:53:23,260 --> 01:53:27,880 Şimdi bu get.c-- olsun dize diyelim kendisi ben sonra can bir dize döndürür 2281 01:53:27,880 --> 01:53:32,050 virgül, kullanımı ve merhaba demek, Yüzde s, ters eğik çizgi n, s. 2282 01:53:32,050 --> 01:53:35,660 >> Yani bu aynı örnek, Gerçekten, biz daha önce vardı. 2283 01:53:35,660 --> 01:53:37,920 Yani dize değeri döndürür olsun. 2284 01:53:37,920 --> 01:53:41,260 Ama bir an önce, baskı dizesi Bir değer döndürmez. 2285 01:53:41,260 --> 01:53:42,721 Bu sadece bir yan etkisi yoktur. 2286 01:53:42,721 --> 01:53:44,220 Yani bu bir temel farktır. 2287 01:53:44,220 --> 01:53:46,710 Farklı gördük Şimdi fonksiyon türleri, 2288 01:53:46,710 --> 01:53:49,490 bazıları geri döndü değerler, bazıları değil. 2289 01:53:49,490 --> 01:53:51,890 Yani belki de dize veya int veya şamandıra var. 2290 01:53:51,890 --> 01:53:53,480 Ya da belki de sadece hükümsüz olduğunu. 2291 01:53:53,480 --> 01:53:55,710 >> Ve fark Bu işlevler, o 2292 01:53:55,710 --> 01:53:59,940 veri almak ve bir değer döndürmez aslında masaya bir şeyi geri getirmek, 2293 01:53:59,940 --> 01:54:01,110 sözde. 2294 01:54:01,110 --> 01:54:03,710 Yani en önde gidelim ve bir final seti bakmak 2295 01:54:03,710 --> 01:54:09,129 ve şimdi, bir hissi verir örnekler nasıl olabilir, gerçekten, soyut daha iyi, 2296 01:54:09,129 --> 01:54:11,670 ve daha iyi ve daha iyi veya daha fazla, amacıyla, ve daha fazla ve daha fazla 2297 01:54:11,670 --> 01:54:13,810 Sonuçta, daha iyi kod yazmak. 2298 01:54:13,810 --> 01:54:16,860 en go ahead ve ruhuna Let Scratch, aşağıdakileri yapın. 2299 01:54:16,860 --> 01:54:21,700 >> Beni go ahead ve dahil edelim CS50.h ve standart io.h 2300 01:54:21,700 --> 01:54:24,010 Beni go ahead ve vereyim Ana kendimi bir int, geçersiz. 2301 01:54:24,010 --> 01:54:27,380 Ve ben, go ahead bu cough.c diyelim. 2302 01:54:27,380 --> 01:54:35,510 >> Ve ben önde ve sadece gidelim Scratch gibi, öksürük / n çıktı. 2303 01:54:35,510 --> 01:54:37,170 Ve ben bu üç kez yapmak istiyorum. 2304 01:54:37,170 --> 01:54:39,670 Yani, tabii ki, sadece gidiyorum kopyalama ve üç kez yapıştırmak için. 2305 01:54:39,670 --> 01:54:46,440 Şimdi yapmak için gidiyorum nokta çizgi öksürük öksürük. 2306 01:54:46,440 --> 01:54:50,120 en kendime biraz daha fazla yer verelim Burada, öksürük, öksürük, öksürük, girin. 2307 01:54:50,120 --> 01:54:53,970 >> Zaten, belli ki, var bir iyileştirilmesi için bir fırsat. 2308 01:54:53,970 --> 01:54:55,679 Ben kopyalanıp yapıştırılan ettik Bir kaç kez bugün. 2309 01:54:55,679 --> 01:54:58,261 Ben yaptım ama bu sadece oldu gibi birçok karakterleri yazmanız gerekir. 2310 01:54:58,261 --> 01:55:00,250 Hala ne değişti kod hatlardır. 2311 01:55:00,250 --> 01:55:04,240 >> Bu üç satır, aynı hangi tembel hissediyor ve gerçekten isimli, 2312 01:55:04,240 --> 01:55:07,110 ve muhtemelen doğru bir yaklaşım değildir. 2313 01:55:07,110 --> 01:55:11,029 Ne madde Yani Bu kod geliştirmek olabilir? 2314 01:55:11,029 --> 01:55:12,570 Biz kopyala ve yapıştır kodu gerekmez. 2315 01:55:12,570 --> 01:55:15,070 >> Ve, gerçekten, her zaman hissediyorum Kendinizi kopyalayıp yapıştırarak, 2316 01:55:15,070 --> 01:55:17,700 ve hatta, kod değiştirme değil oran daha iyi bir yolu var bulunmaktadır. 2317 01:55:17,700 --> 01:55:19,470 Ve, gerçekten de vardır. 2318 01:55:19,470 --> 01:55:22,510 Beni devam edelim ve bir for döngüsü yapmak, olsa bile sözdizimi olmayabilir 2319 01:55:22,510 --> 01:55:24,570 henüz doğal geliyor. 2320 01:55:24,570 --> 01:55:29,494 >> sadece, bu üç kez yapın following-- yaparak 2321 01:55:29,494 --> 01:55:31,160 ve pratikte bu biliyorum. 2322 01:55:31,160 --> 01:55:32,810 Ama biz şimdi örnekler bir dizi var. 2323 01:55:32,810 --> 01:55:34,950 Ve online göreceksiniz Hala daha fazla başvuru. 2324 01:55:34,950 --> 01:55:37,790 >> Bu da, hat 6 sözdizimi tekrarlar Scratch gibi çok 2325 01:55:37,790 --> 01:55:40,090 blok, aşağıdaki üç kez tekrarlayın. 2326 01:55:40,090 --> 01:55:41,340 Şimdi biraz büyülü bir şey. 2327 01:55:41,340 --> 01:55:43,050 Ama bu daha alacak, ve daha tanıdık. 2328 01:55:43,050 --> 01:55:45,050 >> Ve tekrar gidiyor Satır sekiz üç kez, 2329 01:55:45,050 --> 01:55:52,390 Ben eğer yapmak öksürük yeniden derlemek, böylece nokta öksürük, öksürük, öksürük, öksürük çizgi. 2330 01:55:52,390 --> 01:55:54,030 Hala aynı şekilde çalışır. 2331 01:55:54,030 --> 01:55:55,550 Böylece tüm ince ve güzel. 2332 01:55:55,550 --> 01:55:58,200 Ama bu çok soyut değil. 2333 01:55:58,200 --> 01:55:59,371 >> Bu mükemmel doğru. 2334 01:55:59,371 --> 01:56:01,370 Ama orada gibi hissediyor bir fırsat olabilir, 2335 01:56:01,370 --> 01:56:03,750 dünyasında olarak start tür çizilmeye, 2336 01:56:03,750 --> 01:56:07,530 Bu nedenle burada bazı anlambilim eklemek için Ben sadece, for döngüsü bazı yok 2337 01:56:07,530 --> 01:56:09,867 ve bir fonksiyon olduğunu söylüyor öksürük veya öksürük yok. 2338 01:56:09,867 --> 01:56:10,450 Biliyor musun? 2339 01:56:10,450 --> 01:56:12,620 Bana olmaya çalışalım Bundan daha küçük bir soğutucu, 2340 01:56:12,620 --> 01:56:16,090 ve aslında bir işlev yazmak o bazı yan etkileri vardır, öksürük diyoruz. 2341 01:56:16,090 --> 01:56:20,830 >> Ve hiçbir girdi alır ve çıkış olarak hiçbir değeri döndürür. 2342 01:56:20,830 --> 01:56:22,680 Ama ne yaptığını biliyor musun? 2343 01:56:22,680 --> 01:56:29,370 Bu, bu-- printf yapar unquote alıntı, öksürük. 2344 01:56:29,370 --> 01:56:32,380 >> Ve şimdi burada, ben gidiyorum önde ve int gitmek için, 2345 01:56:32,380 --> 01:56:36,070 i i artı artı, sıfır alır i 3'ten az. 2346 01:56:36,070 --> 01:56:39,770 Ben, hangi printf yapmayacağım gidiyorum tartışmalı bir düşük seviye uygulama 2347 01:56:39,770 --> 01:56:40,270 detay. 2348 01:56:40,270 --> 01:56:41,353 Ben öksürük nasıl umurumda değil. 2349 01:56:41,353 --> 01:56:43,240 Ben sadece öksürük işlevini kullanmak istiyorum. 2350 01:56:43,240 --> 01:56:44,840 Ve sadece öksürük arayacağım. 2351 01:56:44,840 --> 01:56:46,204 >> Şimdi, ikilemi dikkat edin. 2352 01:56:46,204 --> 01:56:49,370 bunu yapmazsanız Eğer bir işlevini çağırdığınızda tamamen ince, girişler vermek istiyorum. 2353 01:56:49,370 --> 01:56:51,780 Sadece açık parantez yakın yapmak parantez, ve bitirdiniz. 2354 01:56:51,780 --> 01:56:56,271 >> Eğer bir işlev tanımlamak ya da ne zaman Bir işlevin prototipi ilan 2355 01:56:56,271 --> 01:56:58,770 Önceden biliyorsanız öyle değil Herhangi bir argüman alacak, 2356 01:56:58,770 --> 01:57:01,170 Oradaki parantez içinde geçersiz söylüyorlar. 2357 01:57:01,170 --> 01:57:05,660 Ve bu belirli yapar sen misin yanlışlıkla kötüye olmaz. 2358 01:57:05,660 --> 01:57:07,020 Beni devam edin ve öksürük yapalım. 2359 01:57:07,020 --> 01:57:08,540 Ve, tabii ki, ben bir hata yaptım. 2360 01:57:08,540 --> 01:57:10,410 >> Lanet olsun, o var örtük beyanı. 2361 01:57:10,410 --> 01:57:11,325 Ama bu sorun değil. 2362 01:57:11,325 --> 01:57:12,590 Bu kolay bir düzeltme var. 2363 01:57:12,590 --> 01:57:18,240 Ben sadece prototip daha yukarı gerekir Benim dosyasında aslında kullanıyorum daha. 2364 01:57:18,240 --> 01:57:20,070 >> Yani şimdi bana öksürük yine güzel yapalım. 2365 01:57:20,070 --> 01:57:20,790 Şimdi çalışıyor. 2366 01:57:20,790 --> 01:57:22,930 öksürük, öksürük, öksürük, öksürük yapın. 2367 01:57:22,930 --> 01:57:25,930 Yani biz gerçekten olduğumuzu düşünebilir biraz üzerinde bu sorunu mühendislik. 2368 01:57:25,930 --> 01:57:26,763 Ve, gerçekten, biz. 2369 01:57:26,763 --> 01:57:28,870 Bu iyi değil Bir programın bir aday 2370 01:57:28,870 --> 01:57:31,930 için şu anda üstlenmeden ve ne yapıyor 2371 01:57:31,930 --> 01:57:35,645 hiyerarşik ayrışma denir, nerede bazı kod almak ve sonra 2372 01:57:35,645 --> 01:57:38,790 böylece ne tür faktör şeyler dışında, Onlara daha fazla anlam atfetmek, 2373 01:57:38,790 --> 01:57:40,930 ve bu sonuçta uzun vadede yeniden. 2374 01:57:40,930 --> 01:57:43,490 Ama bu doğru bir yapı bloğu var daha karmaşık programlar 2375 01:57:43,490 --> 01:57:45,600 biz başlayacak uzun süre önce yazılı 2376 01:57:45,600 --> 01:57:50,090 Bizim kelime var sağlar hangi ile daha iyi kod yazmak. 2377 01:57:50,090 --> 01:57:52,920 Ve, gerçekten, en eğer görelim biz ayrıca bu genelleme olamaz. 2378 01:57:52,920 --> 01:57:57,984 >> Biraz topal görünüyor ben, ana, for döngüsü bu lanetlemek konusunda endişelenmenize gerek, 2379 01:57:57,984 --> 01:57:59,400 ve tekrar ve tekrar öksürük çağırıyor. 2380 01:57:59,400 --> 01:58:03,050 Neden sadece öksürük söyleyemem Üç kez öksürük lütfen? 2381 01:58:03,050 --> 01:58:08,170 Başka bir deyişle, neden ben yapamam sadece öksürük ve bunu yapmak için giriş vermek? 2382 01:58:08,170 --> 01:58:11,270 >> Neden sadece, diyemeyiz Ana öksürük üç kez. 2383 01:58:11,270 --> 01:58:13,150 Ve şimdi, bu tür büyülü olduğunu. 2384 01:58:13,150 --> 01:58:14,540 Burası çok iteratif var. 2385 01:58:14,540 --> 01:58:15,940 Ve bu, gerçekten de, bir bebek adımdır. 2386 01:58:15,940 --> 01:58:19,250 >> Ama yetenek söylenecek hat sekiz, üç kez öksürük, 2387 01:58:19,250 --> 01:58:20,730 Sadece çok daha okunabilir. 2388 01:58:20,730 --> 01:58:24,210 Ve artı, bilmek zorunda değilsiniz veya öksürük nasıl uygulandığını bakım. 2389 01:58:24,210 --> 01:58:26,460 Ve, gerçekten, daha sonra sınav ve final projeleri için, 2390 01:58:26,460 --> 01:58:29,150 Bir proje ile mücadele halinde Bir sınıf arkadaşı ya da iki sınıf arkadaşları, 2391 01:58:29,150 --> 01:58:32,370 Eğer gidiyoruz fark edeceksiniz var ya, işi bölmek istiyor. 2392 01:58:32,370 --> 01:58:34,650 >> Ve karar istediğiniz gidiyoruz Önceden, kim ne yapacak, 2393 01:58:34,650 --> 01:58:35,483 ve hangi parçalar halinde? 2394 01:58:35,483 --> 01:58:37,520 Ve bu güzel olmaz Eğer, örneğin, 2395 01:58:37,520 --> 01:58:40,100 yazma main ücret, yapılan alır. 2396 01:58:40,100 --> 01:58:43,470 Ve oda arkadaşı, ya da sizin Ortak daha genel olarak, 2397 01:58:43,470 --> 01:58:45,230 öksürük uygulanması ilgilenir. 2398 01:58:45,230 --> 01:58:49,540 >> Ve bu bölünme, bu soyutlama duvarları, 2399 01:58:49,540 --> 01:58:52,310 soyutlama veya katmanları ise Eğer, süper güçlü olacak 2400 01:58:52,310 --> 01:58:55,480 , Özellikle büyük için çünkü daha karmaşık programlar ve sistemler, 2401 01:58:55,480 --> 01:59:00,070 Birden çok kişi oluşturmanıza olanak verir şeyler birlikte ve sonuçta 2402 01:59:00,070 --> 01:59:02,680 Bu şekilde bir araya işlerini dikiş. 2403 01:59:02,680 --> 01:59:05,332 Ama tabii ki, biz Şimdi öksürük düzeltmek gerekir. 2404 01:59:05,332 --> 01:59:07,290 Biz öksürük söylemek gerekir Bu, hey, biliyor musun? 2405 01:59:07,290 --> 01:59:11,230 Bir almaya ihtiyacımız olacak input-- void ama int ve şimdi değil. 2406 01:59:11,230 --> 01:59:15,170 en go ahead ve içine koyalım int öksürük. Ben sıfır alır. 2407 01:59:15,170 --> 01:59:16,890 >> Ben kaç kez daha azdır. 2408 01:59:16,890 --> 01:59:18,550 Ben üç önce söylediğim. 2409 01:59:18,550 --> 01:59:20,420 Ama bu benim istediğim bu değil. 2410 01:59:20,420 --> 01:59:25,520 Ben genellenemez için öksürük istediğiniz yineleme herhangi bir sayı destekler. 2411 01:59:25,520 --> 01:59:28,800 >> Yani, gerçekten, ben istiyorum n var, ne olursa olsun kullanıcı söyler. 2412 01:59:28,800 --> 01:59:31,620 Şimdi, ben devam edin ve baskı öksürük söyleyebiliriz. 2413 01:59:31,620 --> 01:59:34,750 Ve ne olursa olsun sayı Kullanıcı, geçer 2414 01:59:34,750 --> 01:59:36,890 Ben birçok kez yineleme olacak. 2415 01:59:36,890 --> 01:59:39,160 >> , Günün sonunda bu yüzden Program aynıdır. 2416 01:59:39,160 --> 01:59:42,820 Ama bu şeyler hiç fark Hatta başka bir dosya olabilir. 2417 01:59:42,820 --> 01:59:45,620 Gerçekten de, ben de bilmiyorum an nasıl Printf uygulanmaktadır. 2418 01:59:45,620 --> 01:59:47,980 >> Ben olsun nasıl şu anda bilmiyorum dize veya int olsun, ya da float almak 2419 01:59:47,980 --> 01:59:48,646 uygulanmaktadır. 2420 01:59:48,646 --> 01:59:50,930 Ve ben istemiyorum benim ekranda görmek onları. 2421 01:59:50,930 --> 01:59:55,320 Olduğu gibi, ben odaklanmak başlıyorum Benim program değil bu fonksiyonlar. 2422 01:59:55,320 --> 01:59:59,070 >> Ve böylece, gerçekten, en kısa sürede senin kadar Böyle kodunu Faktoring başlar, 2423 01:59:59,070 --> 02:00:01,397 biz bile öksürük hareket olabilir ayrı bir dosyaya? 2424 02:00:01,397 --> 02:00:02,730 başkası uygulamak. 2425 02:00:02,730 --> 02:00:06,810 Ve sen ve program haline Çok güzel ve çok okunabilir, 2426 02:00:06,810 --> 02:00:10,830 belki gerçekten dört Orada satırı programı. 2427 02:00:10,830 --> 02:00:13,510 >> Yani şimdi devam edelim ve bir daha değişiklik yapmak. 2428 02:00:13,510 --> 02:00:16,180 Dikkat edin benim prototip kontör değişmesi gerekiyor. 2429 02:00:16,180 --> 02:00:18,390 Bu yüzden bana böylece düzeltmek izin Ben bağırdı alamadım. 2430 02:00:18,390 --> 02:00:22,580 >> öksürük yapmak, bana bir kez öksürük çalışmasına izin daha hala aynı şeyi yapıyor. 2431 02:00:22,580 --> 02:00:26,010 Ama şimdi, biz bir var fark bir final sürümü için madde. 2432 02:00:26,010 --> 02:00:26,940 Biliyor musun? 2433 02:00:26,940 --> 02:00:29,040 Ben mutlaka, sadece öksürük istemiyorum. 2434 02:00:29,040 --> 02:00:30,802 Daha genel bir şey yapmak istiyorum. 2435 02:00:30,802 --> 02:00:31,510 Yani biliyor musun? 2436 02:00:31,510 --> 02:00:32,450 Bunu yapmak istiyorum. 2437 02:00:32,450 --> 02:00:37,140 Ben çok Scratch gibi olmasını istiyorsanız Yapar bir demek bloğu, ama sadece 2438 02:00:37,140 --> 02:00:38,680 bir şey kez bir numara demek. 2439 02:00:38,680 --> 02:00:41,510 Ben çok özel bir dize söylemek istiyorum. 2440 02:00:41,510 --> 02:00:43,850 Ve bu nedenle, I do not sadece öksürük söylemek istiyorum. 2441 02:00:43,850 --> 02:00:47,660 Ben bunu söylemek istediğiniz ne olursa olsun dize geçirilir. 2442 02:00:47,660 --> 02:00:49,960 >> Yani fark, ben genel ettik Bu yüzden şimdi 2443 02:00:49,960 --> 02:00:53,110 diyelim ki iyi bir isim gibi hissediyor Bunun için, Scratch gibi, 2444 02:00:53,110 --> 02:00:55,530 Scratch aksine, iki argüman alır. 2445 02:00:55,530 --> 02:00:56,570 Bir bir dizedir. 2446 02:00:56,570 --> 02:00:57,300 Bir bir int. 2447 02:00:57,300 --> 02:00:58,130 >> Ve ben onları geçmek olabilir. 2448 02:00:58,130 --> 02:01:00,713 Ben sadece biraz fikir gibi İlk dize söylemek ve sonra 2449 02:01:00,713 --> 02:01:01,940 Kaç sonra kere. 2450 02:01:01,940 --> 02:01:03,970 Void hala anlamı bir şey vermez. 2451 02:01:03,970 --> 02:01:06,428 Bunlar sadece görsel tarafı [olduğu gibi efektler? Ürdün,?] 2452 02:01:06,428 --> 02:01:08,240 bağırıyor bir sözlü yan etkisi. 2453 02:01:08,240 --> 02:01:12,630 Hala bir şey n defa yapar kadar 0, fakat n eşit değildir. 2454 02:01:12,630 --> 02:01:14,540 Bu n toplam süreleri anlamına gelir. 2455 02:01:14,540 --> 02:01:16,540 Ve sonra sadece çıktısını ne olursa olsun dizedir. 2456 02:01:16,540 --> 02:01:19,060 Bu yüzden gerçekten genelleştirilmiş ettik bu kod satırı. 2457 02:01:19,060 --> 02:01:22,460 Yani şimdi, nasıl uygularım öksürük fonksiyonu? 2458 02:01:22,460 --> 02:01:25,520 >> Ben geçersiz öksürük yapabilirsiniz. 2459 02:01:25,520 --> 02:01:28,501 Ve ben hala nasıl alabilir birçok kez öksürük istiyorum. 2460 02:01:28,501 --> 02:01:29,250 Ama ne biliyor musunuz? 2461 02:01:29,250 --> 02:01:31,240 Şimdi söylemek punt olabilir. 2462 02:01:31,240 --> 02:01:36,540 >> Ben söyleyebilirim çağırabilirsiniz kelime öksürük, n geçen. 2463 02:01:36,540 --> 02:01:40,410 Ve ben de uygulamak istiyorsanız, sadece eğlence için, bir hapşırık fonksiyonu, 2464 02:01:40,410 --> 02:01:42,290 Ben birkaç kez bazı dizi hapşırma olabilir. 2465 02:01:42,290 --> 02:01:47,300 Ve çünkü, n yeniden kullanma tutabilir Bu bağlamda ya kapsamda o m fark 2466 02:01:47,300 --> 02:01:49,470 Sadece bu işlev içinde var. 2467 02:01:49,470 --> 02:01:52,767 >> Ve n, bu bağlamda tek Burada bu işlev içinde var. 2468 02:01:52,767 --> 02:01:54,600 Bu yüzden biz geri geleceğiz kapsam bu sorunlar. 2469 02:01:54,600 --> 02:02:01,160 Ve burada, ben sadece söylemek için gidiyorum achoo ve n kere, yarı-kolon. 2470 02:02:01,160 --> 02:02:04,340 >> Ve şimdi, ben sadece ödünç gerekir Bu fonksiyon burada imzaların. 2471 02:02:04,340 --> 02:02:06,290 Yani öksürük doğrudur. 2472 02:02:06,290 --> 02:02:10,090 Void hapşırık artık doğru. 2473 02:02:10,090 --> 02:02:12,390 >> Ve ben hala sadece şunu söylemek gerekir. 2474 02:02:12,390 --> 02:02:18,990 Yani diyelim ki, söylemek için gidiyorum string, int n, noktalı virgül. 2475 02:02:18,990 --> 02:02:22,010 Yani aşırı mühendislik ettik Bu programın dışında halt. 2476 02:02:22,010 --> 02:02:23,760 >> Bu değil mutlaka bu demek 2477 02:02:23,760 --> 02:02:26,343 yazarken ne yapması gerektiğini programların bile basit. 2478 02:02:26,343 --> 02:02:29,280 tabii ki var bir şey almak gerçekten kısa, gerçekten basit, 2479 02:02:29,280 --> 02:02:31,800 ve yeniden uygulamak yol çok fazla kodunu kullanarak. 2480 02:02:31,800 --> 02:02:34,560 Ama aslında görmek, ve edeceğiz Zaman, bu örnekler üzerinde geriye bakmak 2481 02:02:34,560 --> 02:02:38,610 ve anlayacaktır, ah, bu adımlar Biz aslında genelleme aldı 2482 02:02:38,610 --> 02:02:40,797 bir şey faktör, Günün sonunda kadar 2483 02:02:40,797 --> 02:02:42,380 benim kod aslında oldukça makul. 2484 02:02:42,380 --> 02:02:45,960 Ben üç öksürük istiyorsanız Çünkü Zaman, daha sonra üç kez hapşırık 2485 02:02:45,960 --> 02:02:50,420 Ben sadece, bu yeniden gidiyorum Program öksürük yapmak ve öksürük çalıştırın. 2486 02:02:50,420 --> 02:02:53,620 Ve ben üç öksürük var üç hapşırma. 2487 02:02:53,620 --> 02:02:55,990 >> Ve böylece bu bir temel paradigma, eğer sen, 2488 02:02:55,990 --> 02:03:00,110 Biz yaklaşık gidebilir nasıl aslında bir program uyguluyor. 2489 02:03:00,110 --> 02:03:03,220 Ama sadece şimdi ne görelim Biz tüm bu zaman yapıyorum 2490 02:03:03,220 --> 02:03:06,940 ne son bazı parçalar Bu basit komutla arkasında. 2491 02:03:06,940 --> 02:03:09,620 Günün sonunda, ettik Bizim derleyici olarak çınlama kullanıyorum. 2492 02:03:09,620 --> 02:03:11,494 Biz kaynağı yazıyorum Kod, dönüştürmeden 2493 02:03:11,494 --> 02:03:12,820 makine koduna Clang aracılığıyla. 2494 02:03:12,820 --> 02:03:15,540 >> Ve biz sadece Make kullanarak oldum yani bizim tuş vuruşlarını kolaylaştırmak için 2495 02:03:15,540 --> 02:03:20,740 Biz hatırlamak zorunda değilsiniz Clang kendisinin bu büyüler. 2496 02:03:20,740 --> 02:03:22,640 Ama aslında olun ne yapıyor? 2497 02:03:22,640 --> 02:03:24,750 Ve bu da, ne Çınlama aslında yapıyor? 2498 02:03:24,750 --> 02:03:28,790 >> Biz basitleştirilmiş olsa, çıkıyor diyerek bugünkü tartışma, 2499 02:03:28,790 --> 02:03:33,090 Eğer kaynak kodu almak gibi geçmesi size verir bir derleyici, giriş 2500 02:03:33,090 --> 02:03:35,750 Makinenin çıktı kod var, çıkıyor 2501 02:03:35,750 --> 02:03:37,420 Orada içinde birkaç farklı adımlar. 2502 02:03:37,420 --> 02:03:41,940 Ve Derleme şemsiye olur adımların bir sürü terim. 2503 02:03:41,940 --> 02:03:43,970 Ama sadece alay edelim Bu dışarı gerçekten hızlı. 2504 02:03:43,970 --> 02:03:48,070 >> Biz yapıyorum çıkıyor Daha fazla şeyler ben bir programı çalıştırmak her zaman, 2505 02:03:48,070 --> 02:03:50,990 veya her zaman ben bugün bir program derlemek. 2506 02:03:50,990 --> 02:03:55,020 Yani ön işleme anlamına gelir C programında bir şey bu--, 2507 02:03:55,020 --> 02:03:58,720 Biz tekrar göreceğimiz gibi, Bu, bu karma sembolü ile başlar 2508 02:03:58,720 --> 02:04:03,320 ya da burada hashtag'ının sembolü demektir Bir önişlemci direktifi var. 2509 02:04:03,320 --> 02:04:07,330 Bu Hey, bu durumda, demek Bilgisayar, bu dosya ile bir şeyler yapmak 2510 02:04:07,330 --> 02:04:09,430 aslında benim kendi kodu derlemek önce. 2511 02:04:09,430 --> 02:04:15,220 >> Bu durumda, karma arasında, esasen söyleyerek, C yoludur, 2512 02:04:15,220 --> 02:04:19,325 hey bilgisayar, içeriğini gidip ve CS50.h burada yapıştırın. 2513 02:04:19,325 --> 02:04:22,170 Hey bilgisayar, gidip Standart io.h içeriği, 2514 02:04:22,170 --> 02:04:24,690 Bu konuda her yerde sabit disk, buraya yapıştırın. 2515 02:04:24,690 --> 02:04:27,390 Yani böyle şeyler olur önişleme sırasında ilk. 2516 02:04:27,390 --> 02:04:28,880 >> Ve Clang bizim için tüm bu yok. 2517 02:04:28,880 --> 02:04:30,510 Ve o kadar lanetlemek yapar hızlı, hatta yok 2518 02:04:30,510 --> 02:04:32,000 oluyor dört ayrı şeyleri görüyorum. 2519 02:04:32,000 --> 02:04:34,100 Ama bu tür ilk adımdır. 2520 02:04:34,100 --> 02:04:35,560 >> Gerçekte sonra ne olacak? 2521 02:04:35,560 --> 02:04:38,320 Eh, bir sonraki resmi adım derleme. 2522 02:04:38,320 --> 02:04:40,385 Ve o çıkıyor Bir program derleme 2523 02:04:40,385 --> 02:04:44,060 teknik giden demektir kaynak kodu, biz ettik şeyler 2524 02:04:44,060 --> 02:04:47,890 şey, bugün yazıyor bir şey, montaj kodu olarak adlandırılan 2525 02:04:47,890 --> 02:04:49,260 Bu biraz farklı görünüyor. 2526 02:04:49,260 --> 02:04:51,050 >> Ve aslında, biz gerçek hızlı görebilirsiniz. 2527 02:04:51,050 --> 02:04:53,890 beni aslında benim IDE içine dönelim. 2528 02:04:53,890 --> 02:04:58,050 Bana önde ve açık merhaba.c gidelim ki İlk program hangi ile biz 2529 02:04:58,050 --> 02:04:59,120 bugün başladı. 2530 02:04:59,120 --> 02:05:04,130 Ve beni go ahead ve Clang a çalışmasına izin farklı küçük, Clang-s, merhaba.c, 2531 02:05:04,130 --> 02:05:07,720 Aslında hangi gidiyor Bana başka bir dosya hello.S verir. 2532 02:05:07,720 --> 02:05:10,330 >> Ve biz asla muhtemelen olacaktır kodu tekrar bu tür bakın. 2533 02:05:10,330 --> 02:05:13,030 Eğer daha düşük bir seviyede alırsak CS61 gibi sistemler sınıf, 2534 02:05:13,030 --> 02:05:14,920 Eğer çok daha fazla göreceksiniz Bu kod tür. 2535 02:05:14,920 --> 02:05:17,020 Ama bu derleme dilidir. 2536 02:05:17,020 --> 02:05:22,050 Bu X86 assembly dili temelindeki CPU 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE aslında anlıyor. 2538 02:05:24,460 --> 02:05:27,060 >> Ve bu şifreli olduğu gibi bir şey, bak 2539 02:05:27,060 --> 02:05:29,180 Bilgisayar oldukça iyi anlıyor. 2540 02:05:29,180 --> 02:05:30,790 Alt q, bu bir çıkarma olduğunu. 2541 02:05:30,790 --> 02:05:31,660 hareketler var. 2542 02:05:31,660 --> 02:05:35,730 >> Burada fonksiyonların Orada aradığını x oring, bir hareket, bir eklenti, bir pop, 2543 02:05:35,730 --> 02:05:36,430 geridönüş. 2544 02:05:36,430 --> 02:05:38,850 Yani orada bazı çok düşük seviye talimatları 2545 02:05:38,850 --> 02:05:41,280 CPU'lar anladığınızı Daha önce değindiğim. 2546 02:05:41,280 --> 02:05:43,100 Bu ne Intel Inside olduğunu. 2547 02:05:43,100 --> 02:05:45,030 >> paternleri vardır sıfırlar ve olanları o 2548 02:05:45,030 --> 02:05:51,800 Bu arcanely ifadeli için harita, ancak biraz iyi adlı, talimatlar, 2549 02:05:51,800 --> 02:05:52,780 sözde. 2550 02:05:52,780 --> 02:05:54,780 İşte ne olur kodunuzu derlemek. 2551 02:05:54,780 --> 02:05:58,560 Sen düzeneğini Bunun dışında dil, hangi 2552 02:05:58,560 --> 02:06:04,680 Üçüncü adım monte etmek anlamına gelir Bu derleme kod içine nihayetinde 2553 02:06:04,680 --> 02:06:09,080 Makine code-- sıfırlar ve olanları değil, biz sadece bir an önce gördüm metin. 2554 02:06:09,080 --> 02:06:13,370 >> Yani ön-işleme bulmak yok değiştirmek ve birkaç diğer şeyler ve. 2555 02:06:13,370 --> 02:06:16,430 Derleme senin kaynağını alır C kodu, kaynak kodu 2556 02:06:16,430 --> 02:06:18,980 Biz meclise, yazdığı Biz sadece baktı kodu. 2557 02:06:18,980 --> 02:06:22,170 Montaj bu montaj alır sıfır ve kendisi için kod 2558 02:06:22,170 --> 02:06:24,680 İşlemci gerçekten olacak ki Günün sonunda anlıyorum. 2559 02:06:24,680 --> 02:06:27,630 Ve bağlama son adımdır bu, bir daha us-- için gerçekleşir 2560 02:06:27,630 --> 02:06:29,830 o kadar hızlı biz bile yok , Söylüyor notice-- 2561 02:06:29,830 --> 02:06:32,460 hey bilgisayar, tüm almak sıfırlar ve olanları o 2562 02:06:32,460 --> 02:06:36,750 David'in kod derleme sonucu ve bu durumda onun ana işlevi. 2563 02:06:36,750 --> 02:06:39,160 >> Ve bilgisayar hey, gidip sıfırlar ve olanları bütün 2564 02:06:39,160 --> 02:06:42,180 CS50 personel yazdığı CS50 kütüphane içinde. 2565 02:06:42,180 --> 02:06:43,440 David olanlarda karıştırın. 2566 02:06:43,440 --> 02:06:46,648 Ve hey bilgisayar, tüm sıfırları gidip ve başkasının yıl yazdığı olanlar bu 2567 02:06:46,648 --> 02:06:47,470 önce printf için. 2568 02:06:47,470 --> 02:06:49,880 Ve içine ekleyebilirsiniz Her şey, biz ettik böylece 2569 02:06:49,880 --> 02:06:52,870 Benim sıfırları ve olanları var, CS50 personelinin sıfır ve olanlar, 2570 02:06:52,870 --> 02:06:55,370 printf sıfır ve olanlar, ve başka bir şey biz kullanıyoruz. 2571 02:06:55,370 --> 02:07:00,410 >> Hepsi birine bir araya olsun Program merhaba bu durumda, denir. 2572 02:07:00,410 --> 02:07:03,141 Yani bundan sonra, biz olacak sadece kelime derleme kullanın. 2573 02:07:03,141 --> 02:07:06,390 Ve biz hafife alacak o zaman biz demek, senin programı derlemek, demek 2574 02:07:06,390 --> 02:07:08,849 hey ön işlem yapmak, montaj ve bağlantı. 2575 02:07:08,849 --> 02:07:11,890 Ama aslında bazı sulu şeyler var başlık altında oraya gidiyor. 2576 02:07:11,890 --> 02:07:13,723 Ve özellikle eğer Meraklı biraz zaman olsun 2577 02:07:13,723 --> 02:07:15,900 Eğer alay başlayabilirsiniz etrafında bu alt düzeyde. 2578 02:07:15,900 --> 02:07:19,660 Ama şimdi, fark Bugün için paketler arasında 2579 02:07:19,660 --> 02:07:23,420 vardır oldukça basit bir işlemin başında, 2580 02:07:23,420 --> 02:07:26,700 rahat almanın Merhaba dünya gibi bir şey. 2581 02:07:26,700 --> 02:07:29,575 Nitekim, bugün yaptıklarının çoğu kesinlikle süper hızlı batar olmaz. 2582 02:07:29,575 --> 02:07:31,491 Ve bazı alacaktır Zaman ve bazı uygulama. 2583 02:07:31,491 --> 02:07:33,864 Ve oran vardır, sıralamak olacak sizin klavye vurmak istiyorum 2584 02:07:33,864 --> 02:07:34,780 veya ekrana bağırma. 2585 02:07:34,780 --> 02:07:35,880 Ve bunların hepsi tamam. 2586 02:07:35,880 --> 02:07:38,320 Gerçi, belki de değil deneyin o kadar kütüphanede bunu. 2587 02:07:38,320 --> 02:07:40,820 >> Ve sonuçta, olacak Olsa mümkün başlatmak için gereken 2588 02:07:40,820 --> 02:07:44,580 İyi kod hem desenleri görünce Yazdığınız bu ve hatalar 2589 02:07:44,580 --> 02:07:45,370 Eğer yaptık. 2590 02:07:45,370 --> 02:07:48,965 Ve süreci gibi çok TF olma ya da CA gibi, 2591 02:07:48,965 --> 02:07:51,590 Daha iyi olsun başlayacağız ve bu kalıpları görünce daha iyi, 2592 02:07:51,590 --> 02:07:53,774 ve sadece sizin yanınızdaki çözme sonuçta kendi sorunları. 2593 02:07:53,774 --> 02:07:56,940 Bu arada, bol olacak Bize size destek vermek ve almak için 2594 02:07:56,940 --> 02:07:57,481 bu sayede. 2595 02:07:57,481 --> 02:07:59,450 Ve yazma-up tüm sorunları için 2596 02:07:59,450 --> 02:08:01,366 Eğer yönlendirileceksiniz tüm komutlar 2597 02:08:01,366 --> 02:08:05,330 Kesinlikle biliyoruz ki artık pratik bir sürü 2598 02:08:05,330 --> 02:08:07,380 ancak uçakla olabilir Şimdilik kişinin başının üzerine. 2599 02:08:07,380 --> 02:08:08,580 Ve bu tamamen iyi. 2600 02:08:08,580 --> 02:08:11,230 >> Ama, sonuçta, gidiyoruz desenler ortaya görmeye başlamak için. 2601 02:08:11,230 --> 02:08:14,260 Ve tüm geçmiş olsun bir kez aptal detayları parantez gibi, 2602 02:08:14,260 --> 02:08:16,710 ve kaşlı, ve noktalı virgül, ve malzeme, açıkçası, 2603 02:08:16,710 --> 02:08:19,360 o hiç değil entelektüel ilginç. 2604 02:08:19,360 --> 02:08:22,690 Ve bu hedefi değil Herhangi bir tanıtım sınıf alarak. 2605 02:08:22,690 --> 02:08:24,410 Önemli olacak fikirler var. 2606 02:08:24,410 --> 02:08:26,659 >> Bu döngüler, ve Koşullar ve işlevleri, 2607 02:08:26,659 --> 02:08:30,552 ve daha güçlü soyutlama, ve kod faktoring, 2608 02:08:30,552 --> 02:08:33,510 ve iyi tasarım ve iyi stil ve sonuçta doğruluğu 2609 02:08:33,510 --> 02:08:37,330 kodunuzu, sonuçta var En önemli olacak. 2610 02:08:37,330 --> 02:08:40,925 Yani önümüzdeki hafta, bu alacak Biz ilk Scratch gördüğümüz fikirler 2611 02:08:40,925 --> 02:08:42,800 ve şimdi tercüme C Ve biz başlayacağız 2612 02:08:42,800 --> 02:08:45,740 ilk tanıtmak dersin gerçek dünya alanları. 2613 02:08:45,740 --> 02:08:50,140 >> Biz, güvenlik dünyasına odaklanmak gerekir ve daha spesifik olarak, şifreleme 2614 02:08:50,140 --> 02:08:51,980 bilgi çabalıyorlar sanatı. 2615 02:08:51,980 --> 02:08:54,000 Ve ilk arasında sorunlar size kendinizi 2616 02:08:54,000 --> 02:08:56,840 ötesine yazmaya alacak sözdizimi bazı oynuyor 2617 02:08:56,840 --> 02:08:59,880 ve bazı mantıksal çözme sorunlar, sonuçta uzun süre önce, 2618 02:08:59,880 --> 02:09:03,960 Aslında karıştırmak veya şifrelemek için bir, ve sonuçta bilgilerin şifresinin açılması. 2619 02:09:03,960 --> 02:09:06,470 Ve her şeyi biz yaptık Bugün, olacak oldukça düşük 2620 02:09:06,470 --> 02:09:09,190 seviye, sadece izin gidiyor Bize, bir ve bir tane almak için 2621 02:09:09,190 --> 02:09:13,550 ve yukarıda doğru bir adım daha Henüz en ilginç kod yazma. 2622 02:09:13,550 --> 02:09:15,050 >> bir sonraki hafta Böylece daha fazla. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [VİDEO OYNATMA] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> -Ne Hakkında bana söyleyebilir Onu en son gördüğümde? 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 -Ne Gerçekten, diyebilirim ki? 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 Yani, bu da diğerleri gibi oldu üretim öncesi prova, 2631 02:09:35,340 --> 02:09:40,510 bir şey yoktu dışında dedi Benimle sıkışmış en sonunda. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> -Bu CS50 idi. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> -Bu, Bir kesim herkesin var prova büyük bir iş. 2636 02:09:52,190 --> 02:09:53,070 >> -Bu Öğle yemeği? 2637 02:09:53,070 --> 02:09:54,986 >> -Evet, Sen ve ben can biraz bir sandviç kapmak. 2638 02:09:54,986 --> 02:09:58,380 Bana sadece birlikte brifing edelim David gerçekten hızlı. 2639 02:09:58,380 --> 02:09:59,160 David? 2640 02:09:59,160 --> 02:10:01,260 David? 2641 02:10:01,260 --> 02:10:03,110 >> [SON OYNATMA]