[MÜZİK]
>> DAVID J. MALAN: Pekala, bu CS50 olduğunu.
Ve bu hafta biridir.
Yani haftada sıfır son kez çağırmak, Biz hesaplamalı düşünce üzerinde duruldu.
Ve biz bundan geçişi Çizilmeye, bir grafik programlama
bizim arkadaşlar dil MIT Media Lab.
>> Ve Scratch, biz keşfetmek vermedi fonksiyonları gibi fikirler ve koşulları,
ve döngüler ve değişkenler, ve hatta olaylar ve ipler, ve daha fazlası.
Ve bugün, gidiyoruz bu fikirleri kullanmaya devam,
ve gerçekten onları alarak verilen, ancak bunları çevirmek
C. Now olarak bilinen başka bir dile, C daha geleneksel bir dildir.
Bu daha düşük bir seviyede olduğunu dil, eğer sen.
>> Bu tamamen metinsel var.
Ve böylece ilk bakışta, bu kadar Tüm oldukça şifreli bakmak için gidiyor
Daha önce programlanmış hiç eğer.
Biz gidiyoruz noktalı virgül ve parantez,
kaşlı, ve daha.
Ama bu bile fark sözdizimi olsa
yabancı biraz bakmak için yaklaşık Size çoğu, geçmiş görüyoruz.
Ve fikirleri görmek için deneyin yönündedir, gerçekten, tanıdık,
Burada haftada bir çünkü ne Biz karşılaştırmaktır yapmak başlayacağız
Başlangıçta C. karşı kaşı
>> Yani, örneğin, hatırlama zaman biz o Programlarımızın ilk uygulamaya
son kez, biz baktı bir blok vardı bu-- zamanki gibi küçük bir şey
Yeşil bayrak tıklandığında, ve sonra biz altındaki bir veya daha fazla puzzle parçaları,
Bu durumda, merhaba dünya, demek.
Yani, gerçekten, Scratch içinde, O yeşil bayrak tıkladığınızda
bu yüzden, benim programı çalıştırmak için bunlar, konuşmak
idam bloklar ya da çalıştırın.
Ve özellikle, Kazı Kazan merhaba, dünya, dedi.
>> Şimdi, ben, belirtilen olabilirdi Burada farklı kelimeler.
Ama biz gerçekten bu çok göreceksiniz Gerçekten de, bu blocks-- ve,
C birçok functions-- olabilir parametrize veya özelleştirilmiş
farklı şeyler yapmak.
Aslında, C uygun olduğu takdirde Şimdi, dönüştürmek istediğiniz,
Bu Scratch programı Bu başka bir dile,
Biz yazmak için gidiyoruz Bu gibi küçük bir şey.
>> Verilen bazı yabancı var Orada sözdizimi büyük olasılıkla, int
ve parantez ve geçersiz.
yapacağınız gerçi ama hatta printf-- sadece baskı olacağını düşünüyorum.
Ama baskı baskı anlamına gelir yakında göreceğimiz gibi, biçimlendirilmiş.
Bu anlamıyla yazdırılır ekrana ne olursa olsun
Bu parantez içinde olan Tabii bu durumda, merhaba dünya.
>> Ama diğer bazı farkedeceğiniz sözdizimi, bazı çift tırnak,
Bu sonundaki parantez, Yarı kolon ve benzeri yer alır.
Yani yükü biraz var, tabiri caizse, hem bilişsel için
ve söz dizimi, biz gidiyoruz uzun zaman önce hatırlamak zorunda.
Ama, uygulama ile fark bu sizin dışarı atlamak başlayacaktır.
>> Aslında, en o biri odaklanmak izin fonksiyonu, bu durumda specifically--
Merhaba dünya demek.
Yani fonksiyonu olduğunu söylüyorlar.
Merhaba dünya onun parametre, ya da argüman, onun özelleştirme.
>> Ve C denkliği sadece bir Burada bu bir satır olacak,
Printf denk olduğu, ki çift ​​tırnaklı dize, merhaba
Dünya, tabii ki, eşdeğerdir Orada beyaz kutu içinde ne kadar.
Ve ters bölü n, gerçi biraz garip ve Sıfırdan yok,
sadece yaparız etkiye sahip oluyor Bir bilgisayarda görmek, benim Mac veya PC gibi,
sadece hareket sonraki satıra imleci.
Bu vurmak gibi klavyenizdeki Enter.
>> Bu yüzden daha önce uzun tekrar göreceksiniz.
Ama önce, bu bir göz atalım döngüler halinde diğer bir örnek.
Biz, son kez bu sonsuza kadar döngü vardı puzzle parçaları bir dizi olduğu
Bu tam anlamıyla bir şey yaptım Bu durumda, forever--,
demek, merhaba dünya, merhaba dünya, merhaba dünya, merhaba dünya.
Yani tasarımı ile sonsuz bir döngü var.
>> C, biz bunu uygulamak istiyorsanız Aynı fikir, biz sadece bunu yapabilirsiniz.
Gerçek olsa da, merhaba printf şimdi --daha süre, sadece anlam, tür
yapma fikri çağrıştırıyor bir şey tekrar ve tekrar ve tekrar,
ve ne kadar süreyle?
Eh, true-- hatırlama o Gerçek sadece ya da biridir.
>> Ve gerçek her zaman, tabii ki, doğrudur.
Yani bir anlamsız tür ifadesi sadece gerçek söylemek için.
Ama aslında, bu, kasıtlı Gerçek sadece her zaman doğrudur, çünkü eğer,
Gerçek sadece ima ederken daha dolaylı eğer biraz,
aşağıdaki kod satırlarını o Bu küme parantezi arasında
sadece tekrar ve tekrar çalıştırmak gerekir, ve tekrar ve aslında durdurmak asla.
>> Ama istiyorsun eğer senin döngü biz olarak, durdurmak için
gibi bir şey ile geçen seferki Bu, aşağıdaki 50 kez tekrarlayın
C biz ne ile aynı şeyi yapabilirsiniz anahtar kelime loop-- için çağırdı
sırasında, ama için olmayan.
Ve sonra, burada bazı yeni sözdizimi vardır int i, i az 50 0 eşittir
i ++.
Ve buna geri geleceğiz.
Ama bu sadece nasıl biz olur Kazı blokların kümesi çevirmek
kod C hattı bir dizi.
>> Bu arada, değişkenleri göz önünde bulundurun.
Ve, aslında, sadece Bir an önce birini gördüm.
Ve Scratch durumunda, biz ise i adında bir değişken bildirmek istedim
i tamsayı olduğu için, sadece bir sayı, ve bazı değerine ayarlamak istediğiniz,
Bu portakal kullanmak bloke var-- ben 0 olarak ayarlayın.
>> Ve bugün görürsünüz ötesinde, sadece geçen hafta olduğu gibi,
programcılar hemen hemen her zaman yapmak Gerçekten, sıfırdan saymaya başlar
Kongre tarafından.
Ama aynı zamanda hatırlama gelen nedeni İkili bizim tartışma,
küçük sayı yapabilirsiniz herhangi bir bit sayısına sahip temsil
Sadece 0 kendisi olacak.
Ve bu yüzden genellikle başlayacağız 0 bile değişkenleri başlatılıyor.
>> Ve C, aynı şeyi Biz int söylemek için gidiyoruz
tamsayı için, ben sadece kongre tarafından.
Bu değişken olarak adlandırılan olabilir şey ben sadece Scratch gibi, istiyorum.
Ve sonra 0 sadece temlik eşittir Sağ taraftan değeri 0
ve değişken içine koyar, ya da Sol orada saklama kabı.
Ve yarı-kolon olarak biz see-- edeceğiz ve bu already-- birkaç gördüm
Sadece düşünce sonu anlamına gelir.
başka bir şey yapmak geçin izleyin hatlarında.
>> Şimdi, Boole ifadeleri hakkında?
Scratch hatırlayın, Bu ifadeler vardı
ya doğru olduğunu veya false-- sorular,
Gerçekten, doğru veya yanlış olduğunu.
Çizilmeye durumunda, olabilir Böyle basit bir soru sormak,
Ben 50 daha azdır?
Bu yüzden, yine, bir tam sayıdır.
Belki bunu kullanıyoruz Bir Scratch programında
puan izlemek için ya da böyle bir şey.
Sıfırdan burada Yani bu sözdizimi sadece ben 50 daha az olduğu anlamına gelir?
Eh, minnetle, bir şey C. Ve çevirmek için basit,
Bu biz sadece daha az i söyleyebilirim 50'den, tanıdık tuşunu kullanarak
klavyenizdeki.
>> Bu arada, eğer istedi bir şey daha genel söylemek,
gibi, iyi, y nerede her daha az x X ve Y'nin kendisi değişkenlerdir?
Biz de aynı şeyi yapabilirsiniz C, bu kadar uzun biz ettik olarak
Zaten bu değişkenleri yarattı.
Ve biz nasıl göreceğiz uzun süre önce bunu.
Biz sadece y daha x az söyleyebilirim.
>> Yani başlıyoruz bazı benzerlikler görüyorum.
yaptı ve bu millet Çizilmeye kesinlikle vardı
Bu temel fikir bazı esinlenerek.
Ve bu tür görürsünüz Birçok languages-- sözdizimi
sadece, değil Scratch Sadece C, ancak Python,
ve JavaScript ve Hala diğer diller.
>> Başka bir yapı düşünelim C, bir durumun kavramı,
şartlı bir şey yapıyor.
bir şey doğruysa, bunu.
başka bir şey doğruysa, bunu.
Bu programlama çeşit bir yol ayrımında eşdeğer.
Belki de iki yönlü bir çatal var, Bir üç yollu çatal veya daha fazladır.
Ve Scratch olarak, biz olabilir böyle bir şey görmemiştim.
>> Yani bu büyük bir biri.
Ama göreceli düşünün mantık basitlik.
X, Y daha az ise, o zaman X az düzeyde y daha x y büyükse else if,
sonra x y büyüktür söylüyorlar.
Sonra, mantıksal halinde Eğer Scratch geri düşünüyorum
ya da sadece kendi insan sezgi, de, x, y den büyük ise, ve x,
Elbette daha sonra, y den az olmamalıdır x, y eşit olacak.
Bu durumda, iç içe geçme So Bu Scratch blokları,
Biz üç elde edebilirsiniz Yolun yol çatal?
>> Bu arada, isterseniz tartışmalı, C bunu
en azından biraz simpler-- görünüyor Eğer sözdizimi aşina bir kez olsun.
x ve y daha düşük ise, Printf X-Y daha azdır.
x y büyükse başka, Printf X-Y daha büyüktür.
Başka Printf X, Cp grubuna eşittir ve Yine, olanlar ters eğik çizgi sadece biter
Bu yeni hatlar için bu yüzden eğer Aslında programın bu tür koştu
Sadece hareket edeceğini imleci sonuçta
Ekranın sonraki satıra.
>> Şimdi, bu arada Scratch diğer vardı daha gelişmiş özellikler, yalnızca
bazıları biz gidiyoruz Başlangıçta C. dünyasına üzerinde hareket
Ve onlardan biri oldu Sıfırdan bir liste çağırdı.
Ve bu özel oldu değişkenin türü olduğunu
Birden şeyleri saklamak için izin verdi geri içeri, geri, geri, geri.
>> C, bu yok listeleri, tek başına, ama bir şey
daha genel olarak olduğu , Diziler ne kadar biz edeceğiz denilen
daha sonra bu dönem geri gelmek bir şey bakarak
bir liste, ya da gerçekten bir bağlantılı liste çağırdı.
Ancak, yakın şimdi Bizim için C eşdeğer
bir şey olacak Bir dizi denir.
Ve bir dizi basit bir olduğunu değişkenin özel tip
Bu veri saklamak için izin verir geri, geri, geri, geri.
>> Ve, gerçekten, Scratch içinde, biz erişmek istiyorsa
Bir dizinin ilk elemanı veya Bir list-- ve ben, onu aramak için gidiyorum
kongre, argv, argüman tarafından Vektör, ama daha bu konuda uzun zaman önce.
Ben ilk ayağında almak istiyorsanız ve Scratch dünyasında, argv
Aslında tipik yapmak 1 saymaya başlar.
>> Ve bu yüzden argv 1. maddesinin alabilirsiniz.
Bu MİT uygulanan sadece nasıl listeleri kavramı.
Ama C, ben gidiyorum daha basit, sadece söylemek, argv,
hangi yine adıdır benim list-- veya açık olması, bir dizi.
Ve ben ilk istiyorsanız elemanları, ben gidiyorum
, Köşeli parantezleri kullanmak için hangi size genellikle klavyenin altında kullanılmaktadır olmayabilir.
>> Ama 0 sadece anlamına gelir, bana ilk olsun.
Yani vesilesiyle gibi kez biz gidiyoruz, geçer
Bu ikiliklerini görmeye başlamak için Kazı ve C arasında,
bu sayede Scratch birini kullanır.
C Biz burada 0 kullanın.
Ama hızlı bir şekilde göreceksiniz Eğer anladıktan sonra
Her dilin temelleri, o bu işler daha almak için başlar
uygulama ve uygulama yoluyla tanıdık.
>> Yani aslında bir programda şimdi bakalım.
İşte C ilk olacak tam programlar için kaynak kodu.
Ve program gidiyoruz dikkate sunmak için
eşdeğer biridir Bu daha önceki Scratch parçasına.
>> Burada Peki, ne var tartışmasız en basit C programı
Bunu yazabilirsiniz Aslında bir şey yok.
Şimdi, biz geçmişte bakacağız, Şimdilik, dahil olup,
Standart io.h ve bu açı parantez ve int ve boşluk,
kıvırcık parantezler ve benzeri yer alır.
>> Ve Sadece odaklanmak izin En azından sezgisel ne,
zaten sizin dışarı atlamak olabilir.
Aslında, ana, I do not mutlaka bunun ne olduğunu biliyor,
ama Scratch gibi çok vardı o Yeşil bayrak, bulmaca parçası tıklandığında
yani bir programlama dili olarak C yapar bir kod ana parçası var
Varsayılan olarak çalıştırılmaktadır. Ve, gerçekten de, kelimenin tam anlamıyla ana çağrılacak gidiyor.
>> Bu yüzden, ana bir fonksiyonudur.
Ve var olan bir özel işlev var C bir program çalıştırdığınızda o,
o tarafından işletilen gets main varsayılan. Sıfırdan dünyasında,
o zaman yeşil bayrak genellikle oldu tıklandığında varsayılan olarak işletilen var olduğunu.
>> Bu arada, daha önce bu gördüm, printf veya baskı biçimlendirilmiş, o
birlikte bir fonksiyon olacak C başkalarının bütün bir grup ile birlikte,
zaman ve o irade Yine, sırayla tam olarak yapmak
adından da anlaşılacağı gibi, bir şey yazdırın.
Ne yazdırmak istiyorsunuz?
Peki, biz göreceksiniz çevreleyen karakterler tarafından
these-- merhaba dünya gibi, çift ​​tırnak ters eğik çizgi n,
Biz tam olarak printf söyleyebilirim Ekranda ne yazdırmak için.
>> Ama sipariş yapmak Bu, biz ne yazık ki
bir şey almak gerekir biz insanlar zaten şifreli,
ama en azından biraz readable-- var: Keskin dahil, standart io.h, int
Ana geçersiz, printf, büyülü tüm büyüler biz sadece ekranda gördüm.
Ama biz aslında var Hala daha gizemli gidin.
Biz ilk kod çevirmek gerekir Biz makine koduna yazma söyledi.
Ve geçen hafta hatırlamak makineleri olduğunu, En azından olanları biz burada biliyoruz,
Günün sonunda sadece sıfırları ve olanları anlamaya.
>> Biz eğer Ve Tanrım, bu yazma Aslında programa sıfır ve olanlar,
Çok, çok hızlı bir şekilde olur bir şey dışarı eğlenceli alır.
Ama, geçen haftada, çıkıyor Bu sıfırlar ve olanları bu desenleri
Sadece özel bir anlamı vardır.
bazı bağlamlarda, Onlar numaralarını anlamına gelebilir.
>> Bazı bağlamlarda, onlar anlamına gelebilir mektuplar, veya renkler, ya da herhangi bir sayı
Orada üzerine diğer soyutlamalar.
Ancak bilgisayarınız var gibi CPU, Merkezi İşlem Birimi,
veya bilgisayarınızın içindeki beyni.
Genellikle Intel bulunuyor içeride, çünkü o
en büyük şirketlerinden biri Bu bilgisayarlar için CPU yapar.
>> Eh, Intel işlemciler ve diğerleri sadece önceden karar verdik
Bu sıfır belirli kalıpları ve olanlar belirli şeyler anlamına gelir.
sıfırlar ve olanları belirli kalıpları Yani, ekrana bu basacaktır,
veya bu iki sayıyı eklemek veya Bu iki sayıyı çıkarma
veya veri bu parça taşımak Bilgisayarımın hafıza buraya,
ya da diğer çok düşük bir seviyede, herhangi bir sayıda, ama sonuçta yararlı işlemleri.
Ama neyse ki, biz insanlar gitmiyor ayrıntı bu düzeyde bilmek gerekir.
Nitekim, sadece burada, son kez gibi biz tekrar ve tekrar ve tekrar soyutlanmış,
çok düşük bir seviyede bina birler ve sıfırlar gibi ilkel
üst düzey kavramları sayılar ve harfler gibi,
ve renkler ve daha fazlası, biz de programcılar olarak can
omuzlarında durmak bizden önce gelmiş diğerleri
ve diğer bu yazılımı kullanmak insanlar us-- önce yazdım
yani programlar derleyiciler denir.
>> C dili olduğunu genellikle derlenmiş,
bu dönüştürülmüş aracı makine koduna kaynak kodu.
Özellikle, bu ne demektir Bu sizin kaynağı var ise
Kendini kısa sürede biz olarak, yazma kodu Ekranda sadece bir an olacak,
ve bunu dönüştürmek istediğiniz sonuçta makineye code--
Bu sıfırlar ve olanları o Sadece Mac ya da PC
understands-- bir ilk var olarak bu kaynak kodunu beslemek
Özel bir giriş Program bir derleyici denilen,
çıkış ki biz göreceğiz makine kodudur.
Ve, gerçekten, son kez konuştuk yaklaşık, gerçekten günün sonunda,
problem çözme.
Sen girişleri var.
Ve çıkışları var.
Ve çeşit var ortada algoritma.
>> Algoritmalar mutlaka olabilir yazılımda uygulanır,
Biz pseudocode geçen hafta gördüğümüz gibi ve biz gerçek kodu ile göreceğiniz gibi
bu hafta.
Ve böylece bir derleyici gerçekten sadece iç algoritmaları bir dizi var
Bunun biliyorum nasıl özel anahtar kelimeler dönüştürmek,
Ana ve printf gibi, ve diğerleri biz sadece
sıfır kalıpları içine gördü ve olanlar Intel içinde ve diğer işlemciler
Aslında anlar.
Peki nasıl bunu yapıyorsun?
Nerede bir derleyici alabilirim?
>> Çoğumuz burada bir Mac ya da PC var.
Ve Mac OS ile çalışan, ya da konum Windows veya Linux veya Solaris,
ya da diğer herhangi bir sayıda işletim sistemleri.
Ve, gerçekten, biz olabilir web'e çıkmak
ve bir derleyici indir Mac veya PC'niz için
belirli işletim sistemi için.
Ama hepimiz üzerinde olacağını Farklı sayfalar, tabiri caizse.
Biz biraz olurdu Farklı konfigürasyonlar.
Ve işler hepsi aynı işe yaramaz.
Ve, gerçekten, bu gün kullanmayın çoğumuz
Sadece bizim dizüstü üzerinde çalışan yazılım.
Bunun yerine, biz bir şey kullanmak bir tarayıcı gibi o
Bize erişmenizi sağlar web tabanlı bulut uygulamaları.
Ve daha sonra bu dönem, Biz tam olarak yapacağız.
Biz uygulamalar yazacak ya da Yazılım, Cı code-- olup kullanılarak
ancak Python gibi diğer diller ve bulut çalıştırmak JavaScript--.
>> Ve biz kendimizi bunu yapmak için dönem boyunca
aslında bir bulut tabanlı kullanacak CS50 IDE olarak bilinen çevre.
Bu web tabanlı programlama çevre, ya da entegre geliştirme
çevre, Ide, bazı üstünde yerleşik Cloud 9 denilen açık kaynak yazılım.
Ve bazı pedagojik yaptık buna basitleştirmeler
belirli özellikleri gizlemek şekilde ihtiyacımız yok, ilk hafta,
bundan sonra yapabilirsiniz Onları ortaya çıkarmak ve bunu en
şey çevre ile istiyorum.
>> Ve bu kadar da bize izin verir Bazı yazılımlar önceden yükleyin.
sözde CS50 gibi şeyler yakında göreceğiz kütüphane,
bazı C bize sunuyor Ek işlevsellik.
Yani eğer gitmek için, sonuçta, CS50.io, Eğer oturum açmanız istenir
ve yapmanız ve oluşturduktan sonra ücretsiz bir hesap,
Bir erişmek mümkün olacak oldukça bu gibi görünüyor ortamı.
>> Şimdi, bu varsayılan modunda.
Her şey güzel ve Ekranda parlak.
Birçoğumuz bir alışkanlığı var bu CS50 parçası üzerinde çalışmaya
Oldukça geç geceye.
Ve böylece biraz sizin tercih edebilirsiniz tabiri caizse, gece moduna çevirin.
>> Ama sonuçta, ne sen CS50 IDE içinde göreceğiz
Üç ayrı areas-- olan Sol yerde bir alan
Dosyalarınızı içinde olacak bulut, sağ üst köşesinde bir alan
nerede kod düzenlenebilir olacak.
Sen açmak mümkün olacak herhangi bir program için ayrı sekmeler
İçinde bu dönem yazmanız Bu üst sağ köşesinde.
Ve sonra en arcanely, ve henüz güçlü,
bu şey olacak Bir terminal penceresi olarak bilinen alt.
>> Bu eski bir okul Komut satırı arayüzü,
veya CLI, o veriyor Komutları çalıştırmak için
Bu durumda, computer-- üzerinde cloud-- bilgisayar
kodunuzu derlemek gibi şeyler yapmak kaynak kodundan makine koduna,
programları çalıştırmak için, ya da başlamak için sizin web sunucusu veya veritabanına erişim,
ve diğer tekniklerin herhangi bir sayıda Biz uzun zaman önce kullanmaya başlayacağız söyledi.
Ama oraya, biz konum Aslında olacak
çevrimiçi ve oynamaya başlayın.
Ve bunu yapmak için, ilk atalım Ana müdahalesi başlamak,
ve bir programın ana kısmını yazın.
Ve en bu işlevi kullanmasına izin Daha önce kullanılan printf,
sadece bir şey söylemek.
>> Yani burada CS50 IDE içinde zaten duyuyorum.
Ben önceden giriş yaptıktan.
Ve ben tam pencere tarandı.
Ve böylece, sonuçta, Çok önümüzdeki sorunlar
benzer adımları takip edeceğini çevrimiçi belgelere sağlayacaktır.
Yani endişelenmenize gerek yok Her küçük teknik adımı emici
Bugün burada yapmak.
>> Ama böyle bir ekran alırsınız.
Ben gece modunda olmak olur.
Ve her şeyi aydınlatmak gece modu devre dışı bırakarak kadar.
Ve sonunda gün görmek için gidiyoruz
dosya areas-- Bu üç ana Soldaki tarayıcı, kontör kod sekmeler,
ve altta terminal penceresi.
>> Beni devam edelim ve İlk program yazmak.
Ben, preemptively Dosya gideceğim Kaydet ve hello.c olarak benim dosyayı kaydedin.
Nitekim, kongre tarafından, herhangi bir program, biz O C dilde yazılmış yazma
bir ad olmalıdır Kongre tarafından dot c.
Yani, çünkü bunu merhaba.c isim gidiyorum Ben sadece dünyaya merhaba demek istiyorum.
Şimdi yakınlaştırmak için gidiyorum dışarı ve Kaydet'i tıklatın.
Ve ben şimdi burada olan tüm bir sekme İçinde kod yazmaya başlayabilirsiniz.
>> Bu derleme için gitmiyor.
Bu şey ifade etmiyor.
Ve ben dönüştürülen bu yüzden bile sıfır ve olanlar bu,
CPU hayır sahip oluyor Fikir etrafında neler oluyor.
Ben satırları yazarsanız Ama bu maç yapmak C'nin conventions-- C varlık ile,
Yine, böyle bir sözdizimi dil alanındaki Ben ettik ve bu, merhaba printf --daha dünya
rahat kazanılmış zamanla bunu.
O yüzden yapılan sanmıyorum Herhangi bir yazım hataları.
>> Ama, her zaman, ilk zaman bunu, yapacaksın.
Ve ben yapmak üzereyim şey çok olabilir sizin için de ilk kez işe.
Ve bu mükemmel Tamam Şu anda çünkü
sadece yeniliği bir sürü görebilirsiniz, ancak zamanla tanıdık bir kez olsun
Bu ortam ve Bu dil, ve diğerleri,
şeyleri görmeye başlarsınız o Doğru veya yanlış ya vardır.
>> Ve bu ne olduğunu öğretim adamlar ve ders
yardımcıları, üzerinde zaman çok iyi olduğunu olsun kodunuzu bir hata veya sorun tespit.
Ama iddia var Bu kodda hiçbir hata vardır.
Yani şimdi bu programı çalıştırmak istiyorum.
>> Şimdi kendi Mac veya PC üzerinde, ben varım çift ​​tıklayarak simgeleri alışkanlığı
Bazı programı çalıştırmak istediğinizde.
Ama burada bir model değil.
CS50 IDE Bu ortamda,.
Biz işletim kullanıyorsunuz Linux denilen sistem.
Linux başka andırır işletim sistemi, genel olarak bilinen
Unix gibi.
Ve Linux, özellikle bilinir Komut Satırı Çevre, CLI sahip.
Şimdi, biz bir spesifik kullanıyoruz Linux lezzet Ubuntu çağırdı.
Ve Ubuntu sadece bir Linux belli sürümü.
>> Ancak bu Linux'un bu gün aslında yapmak grafik kullanıcı arayüzleri ile birlikte gelir.
Ve biz ne bir Burada kullanarak web tabanlı olduğunu.
Yani bu bile görünebilir bir şey biraz farklı
Kendinizi olabilir görülen ya da geçmişte çalıştırın.
>> Bu yüzden devam edeceğim şimdi ve aşağıdakileri yapın.
Ben hello.c olarak bu dosyayı kaydettiğiniz.
Ben devam edeceğim ve tip clanghello.c Clang Yani
C dili için bir derleyici.
Önceden yüklenmiş bulunuyor CS50 IDE.
Ve kesinlikle indirebilir ve Kendi Mac veya PC üzerinde bu yükleyin.
>> Ama, yine, tüm olmazdı Ön yapılandırma sizin için yapılır.
şimdi Yani, ben sadece clanghello.c çalıştırmak için gidiyor.
Ve şimdi bu sözdizimi fark Burada sonunda olacak
Sadece bir yaşıyorum demektir fark klasör veya dizin Workspace çağırdı.
Bu dolar işareti sadece kongre olduğunu anlam, burada komutları yazın.
>> Bu sadece, bir istem denir ne Kongre tarafından dolar işaretidir.
Ve ben şimdi devam edin ve eğer tıklayın Enter, hiçbir şey gibi görünüyor.
Ama bu aslında iyi bir şey.
az o olur Ekran, daha büyük olasılıkla
kodunuzu doğru olmak, En azından sözdizimsel.
>> Ben bu çalıştırmak istiyorsanız Yani Program, ben ne yapacağım?
Eh, o çıkıyor Kongre tarafından varsayılan ad
Bir belirtmeyen zaman programlar için program sadece a.out olduğu için isim.
de bu sözdizimi ve sen edeceğiz çok geçmeden aşina olsun.
>> Nokta, sadece, hey, CS50 anlamına yırtmaç IDE, a.out adında bir programı çalıştırmak
bu benim geçerli dizinin içinde.
Bu nokta geçerli dizini anlamına gelir.
Ve biz başka hangi tür dizileri görürsünüz Karakter çok önce gelir.
>> Yani burada biz merhaba dünya, girin, gidin.
Ve ne oldu ki, fark edeceksiniz?
o hello world yazdırmak kalmamış.
Ayrıca taşındı sonraki satıra imleci.
>> Ve neden oldu?
Daha önce yazdığı kod neydi sağlanmalıdır imleç olur o
Bir sonraki satırda gidilir?
yaklaşık bir komik bir şey Bilgisayar sadece gidiyor olduğunu
kelimenin tam anlamıyla yapmak için yapmanız onu ne diyeceğim.
>> Yani merhaba printf bunu söylemek durumunda, virgül, boşluk, dünya, yakın alıntı,
kelimenin tam anlamıyla sadece gidiyor bu karakterleri yazdırmak için.
Ama bu özel karakteri vardı sonunda, geri çağırma, ters eğik n at.
Ve sağlanmalıdır ne karakter gitti
Ekranın sonraki satıra.
>> Aslında, beni ve bu yapalım.
Beni go ahead ve bu silme edelim.
Şimdi, fark benim ekranın üst var
Biraz kırmızı ışık içinde belirten sekmesi,
Hey, Dosyanızı kaydettikten ettik.
Yani kontrol ile devam edeceğim S ya da komut S, dosyayı kaydedin.
Şimdi bir moment-- yeşil gitti goes--.
Ve şimdi geri var Sadece yakın bir simge olma.
>> Ben şimdi tekrar clanghello.c çalıştırırsanız, , Nokta çizgi, a.out, Enter Enter,
Eğer hala çalıştı görürsünüz.
Ama belki biraz adamcağız.
Şu anda, benim prompt-- çalışma, ve o dolar işareti,
ve sonra benim gerçek prompt-- aynı hat üzerinde.
Yani bu kesinlikle bir estetik hata, bile gerçekten mantıklı bir hata değil.
>> Yani ben sadece ne yaptığını geri almak için gidiyorum.
Ben a.out yeniden gidiyorum.
Ben ekledim Fark yeni satır karakteri geri döndü.
Ben Dosyayı kaydettikten.
>> Bu yüzden, a.out yeniden gidiyorum ve- kahretsin, bir hata, hata anlamına gelen bir hata.
Yani hata bile olsa Ben, n orada ters eğik çizgi eklendi
yeniden kaydedilmiş, programı yeniden koştu davranışı aynıydı.
Neden olurdu?
>> Ben, doğru bir adım eksik?
Bu önemli bir adımdır önce sahip oldu Eğer kaynak kodunu değiştirmek zaman aşağıdaki amaçlara yönelik,
o da çalıştırmak çıkıyor derleyici ile o
Yine yeni makine kodu olsun.
Ve makine kodu, sıfır ve olanlar,
, Hemen hemen aynı olacak ancak değil mükemmel ki, biz gerekir çünkü,
Tabii ki yeni bir satır.
>> Bu yüzden ihtiyacım olacak, bu sorunu gidermek için Girin, nokta clanghello.c yeniden çalıştırmanız
, A.out kesiyorsun.
Ve şimdi, merhaba dünya geri Ben bekliyoruz nerede olmasını.
Yani bu tüm ince ve iyidir.
Ama a.out bir için oldukça aptal adıdır Program, bu olur olsa bile,
tarihsel nedenlerle, montaj çıkışları anlam default--.
>> Ama beni burada devam edelim ve farklı bunu.
Benim merhaba dünya programı istiyorum aslında merhaba denilen.
Yani eğer bu bir simge vardı benim masaüstü, bu a.out olmaz.
Bu merhaba denilen olacaktır.
>> Yani bunu yapmak için, o çıkıyor Clang olduğunu, birçok program gibi,
, Komut satırı argümanlarını destekler veya bayraklar, ya da anahtarları,
sadece kendi davranışını etkileyen hangi.
Özellikle, Clang bir çizgi o destekler Daha sonra ikinci bir sözcük alır bayrak.
Bu durumda, ben keyfi olacak, ama makul, merhaba diyoruz.
Ama her şey diyebiliriz Ben a.out dışında, istediğiniz
yerine nokta dışında olacaktır.
>> Ve sonra sadece adını belirtin Dosyanın ben derlemek istiyoruz.
Yani şimdi bile başında olsa Hala çınlama var komuta,
komutun sonunda Hala dosya var,
Ben artık bu komut satırı var argümanlar, diyorsun bu bayraklar,
oh, bu arada, çıkış o dosya değil varsayılan a.out, merhaba çağırdı.
>> Yani vurursam, hiçbir şey şimdi girin olmuş gibi görünüyor.
Ve henüz, şimdi merhaba nokta çizgi yapabilirsiniz.
Yani aynı program.
sıfır ve olanlar Günün sonunda aynıdır.
>> Ama iki konum Farklı files-- a.out,
hangi ilk sürümü ve sadece aptalca adlı
ve şimdi merhaba, hangi bir fazla Bir program için daha çekici bir isim.
Ama dürüst olmak gerekirse, ben asla değilim Yine bu hatırlamak için gidiyor,
ve tekrar ve tekrar.
Ve aslında, biz mal Daha karmaşık programları
sen komutlar yazmak zorunda olacak
Hatta almak için gidiyoruz daha hala karmaşık.
>> Ve böylece endişe etmeyin.
Bu çıkıyor ki insanlar önce Bize de onlar fark var
Bu aynı problem vardı.
Onlar da zorunda zevk vermedi , Oldukça uzun, gizli komutları yazın
dursun onları hatırlıyorum.
Ve böylece bizden önce insanlar yapmış kolaylaştırmak diğer programlar
yazılım derlemek için.
>> Ve, gerçekten de, bu tür bir Program yap denir.
Bu yüzden go ahead ve bunu yapmak için gidiyorum.
Her şeyi geri almak için gidiyorum ben Sadece şu şekilde yaptı.
Bana LS tipi olsun.
Ve üç farkedeceğiniz seyleri a.out ve bir yıldız, merhaba
bir yıldız ve merhaba.c ve.
Umarım, bu olmalıdır Biraz sezgisel
daha önceki vardı sürece Bu çalışma alanında bir şey yok.
Ben hiçbir şey yoktu Biz sınıf başlayana kadar oluşturdu.
>> Ve ben hello.c dosyasını oluşturdu.
Ben o zaman derlenmiş, ve a.out çağırdı.
Ve sonra ben biraz tekrar derlenmiş farklı ve merhaba denir.
Yani bu dizine üç dosya var, Çalışma alanı olarak adlandırılan bu klasöre.
Şimdi, ben de görebiliyorum Aslında uzaklaştırmak eğer.
>> Burada uzaklaştırma ve eğer Bu üst sağ el bakmak
Köşe, söz verildiği gibi sol Ekranın taraftaki
Her zaman size göstermek için gidiyor Ne hesabınızda var, ne
CS50 IDE içinde.
Ve üç dosya var orada.
>> Bu yüzden merhaba ve a.out kurtulmak istiyorum.
Ve sen olabilir , Sezgisel hayal
Kontrol tıklama sıralamak veya sağ bu tıklayın.
Ve bu küçük menü açılır.
Dosyayı indirebilirsiniz çalıştırmak o, önizleme, yenileme, yeniden adlandırma
ya da ne değildir.
>> Ve ben sadece silinemedi, ve uzağa gitmek istiyorum.
Ama bir komutla şeyler yapalım Şimdilik çizgi, böylece rahat olsun
Bu ile, ve aşağıdakileri yapın.
Devam edin ve kaldırmak için gidiyorum kelimenin tam anlamıyla rma.out yazarak a.out.
Bu komutu için çıkıyor çıkarmadan ya da bir şey silme
kaldırmak veya silmek değil.
>> Sadece kaydetmek için, daha özlü RM bulunuyor Bazı tuş vuruşlarını ve Enter tuşuna basın.
Şimdi biz biraz olacağız cryptically düzenli dosya a.out kaldırın.
Gerçekten ne bir bilmiyorum düzensiz dosya henüz olurdu.
Ama bunu kaldırmak istiyoruz.
>> Yani evet için y yazın gidiyorum.
Ya da ben bunu yazın ve Enter vurabilecek.
Ve yine, hiçbir şey olmuyor.
Ama bu, genellikle, iyi bir şeydir.
>> Bu sefer LS yazarsanız, Ben ne görmek gerekir?
Umarım, sadece merhaba ve merhaba.c.
Şimdi, olduğu gibi bir kenara, sen olacak , Yıldız bu yıldızı fark
bu benim programlarının sonunda.
Ve onlar da yeşil gösterilmesini ediyoruz.
Bu sadece CS50 IDE yoludur Aslında içine cluing arasında
o kaynak kodu değil.
Yani, bir çalıştırılabilir bir çalıştırılabilir var aslında çalıştırabilirsiniz programı
Daha sonra nokta eğik çizgi yapıyor ve tarafından bu isim.
>> Şimdi, devam edin ve kaldırmak izin Bu, merhaba rm girin, düzenli kaldırmak
evet, merhaba dosya.
Ve şimdi ben, LS yazarsanız Biz geri hello.c döndük.
silmek için çalışın sizin gerçek kaynak kodu.
özellikleri bulunsa da CS50 IDE nerede yerleşik
Eğer düzeltme geçmişinde gidebilirsiniz ve zaman içinde eğer yanlışlıkla geri sarma
bir şey silmek, dikkatli olun yapmak Bu istekleri evet veya hayır olarak başına,
Aslında yapmak istediğiniz ne.
Ve ben üst kadar giderseniz Burada köşede bıraktı,
merhaba.c tüm kalır olduğunu.
Yani demet var diğer komutlar bu size
Linux dünyasında yürütebilirsiniz, biri yine, emin olun vardır.
Ve biz Make gidiyoruz Benim programı artık aşağıdaki gibi.
>> Yerine clang yapmanın, yerine çınlama-o yapıyor,
Ben sadece gidiyorum kelimenin tam anlamıyla Merhaba yapmak, yazın.
Ve şimdi ben, fark hello.c dosyasını yapmak yazarak değil.
Ben merhaba yapmak yazarak kulüpler.
>> Ve bu program emin olun CS50 IDE, ve daha fazlası ile geliyor
genellikle Linux ile, olan bir program
Merhaba adlı bir program yapacak.
Ve Kongre tarafından, varsaymak gidiyor Bu program yapılabilir takdirde,
bir kaynak yapılabilir olacak nokta c biten kod dosyası, merhaba.c.
>> Yani vurursan, şimdi fark girin o idam alır komut
daha uzun aslında daha önce önce.
biz ettik çünkü ve o Önceden yapılandırılmış CS50 IDE var
Bu yerleşik bazı ek özellikler biz henüz gerek, ama yakında olacak bilmiyorum.
Ama en önemli şey gerçekleştirmek için Bir Merhaba programı var şimdi.
>> Yine LS yazarsanız, ben Bir merhaba programı var.
Ve ben bunu çalıştırabilirsiniz nokta, hayır, a.out çizgi
Bu bütün alanına nedeniyle Egzersiz nokta çizgi merhaba oldu.
Ve şimdi benim merhaba dünya programı var.
Yani ileriye doğru hareket, Biz sadece hemen hemen her zaman konum
Bizim programları derlemek için gidiyor Komut Make kullanarak.
Ve sonra bunları çalıştırmak için gidiyoruz nokta çizgi ve programın adı.
Ama için yapıyor olun farkında Eğer, bir derleyici kendisi değil mi.
Bu sadece bir kolaylık programı Bu bir derleyici tetiklemek için nasıl bilir
Kendinizi kullanabilirsiniz böylece çalıştırmak için.
>> Başka hangi komutlar var Linux ve sırayla CS50 IDE?
Yakında bir var olduğunu göreceksiniz CD komutu, Değişim Rehberi.
Bu içinde size izin verir Komut satırı arayüzü
geri ileriye taşımak, ve, ve farklı klasörler açmak
farenizi kullanmadan.
>> listede açılımı gördüğümüz LS, geçerli dizindeki dosyaları.
Dir olun yapabilirsiniz Muhtemelen anlaması başlar
Bu dizin yapmak şimdi-- ne demek, Bir klasör oluşturmak istiyorsanız.
akıtma RM, RM Dir için , Directory-- ve bunlar kaldırmak
Yine, komut satırı vardır Size ne eşdeğer
Farenizle CS50 IDE yapabilirdi.
Ama yakında göreceksiniz bazen bu sadece
Daha hızlı bir sürü yapmak Bir klavye ile işler,
ve sonuçta çok daha güçlü.
>> Ama iddia etmek zor şey şimdiye kadar yapıyorum
zaman tüm tüm bu güçlü merhaba dünya isimli söylüyorsun.
Ve, aslında, kodlanmış Benim programa merhaba dünya kelimeler.
Hiçbir dinamizm henüz yoktur.
Scratch büyüklükte bir sipariş oldu daha ilginç geçen hafta.
>> Ve o yüzden oraya alalım.
en tarafından bu doğru bir adım atalım Bu işlevlerin bazılarının yolu.
Yani sadece C printf ile geliyor, Diğer fonksiyonlar ve demet
bazıları göreceğiz zamanla, değil mi
doğru dışarı tüm bu kolaylaştırır kullanıcı girişi almak kapısı.
>> zayıflıkların Aslında, bir C gibi dillerin,
ve hatta, Java ve henüz Diğerleri, değil mi ki
gibi şeyler almak için kolaylaştırır kullanıcılar veya dizeleri, sözcüklerden tamsayılar,
ve deyimler gibi yalnız şeyler izin nokta değerleri, ya da gerçek sayılar kayan
Gerçekten ondalık noktaları ve birlikte yakında göreceğimiz gibi uzun numaraları.
Yani burada fonksiyonların bu liste, bu diğer Scratch puzzle parçaları gibi
Biz CS50 önceden yüklenmiş olması Biz birkaç hafta kullanacağınız IDE
Eğitim türlü tekerlekleri ve aynı sonunda onları çıkarmak ve bakmak
Kaputun, belki en altında bunlar nasıl uygulanmaktadır.
>> Ama bunu yapmak için, haydi aslında bir program yazmak.
Beni şimdi devam edelim.
Ve yeni bir oluşturmak için gidiyorum Bu küçük artı tıklayarak dosya,
ve Yeni Dosya tıklayarak.
>> Bu sonraki kurtarmak için gidiyorum Diyelim bir, string.c,
Ben dizeleri ile oynamak istiyorum çünkü.
Ve C dize sadece bir karakter dizisi.
Bu yüzden şimdi en önde gidelim ve aşağıdakileri yapın.
>> Içeren standart IO.h-- ve o, standart IO çıkıyor
IO sadece giriş ve çıkış anlamına gelir.
Bu yüzden çıkıyor Burada bu hat ne olduğunu
printf kullanmak için bize komşudur.
Printf, tabii ki, çıktı üretir.
Böylece printf kullanmak için, bu döner dışarı kod satırını olması gerekir
dosyanızın üstünde.
>> Ve biz geri geleceğiz neler Bu gerçekten uzun zaman önce gelir.
Bu o çıkıyor Yazdığım her C programı,
Ben bunu başlatmak lazım Bu gibi görünüyor kodu.
Ve CS50 IDE fark edeceğiz ve diğer entegre geliştirme
bunun gibi ortamlarda, olarak geleni yapacağız
onlar düşünce bitirmek olabilir.
Aslında, bir an önce geri eğer Ben sadece ne yaptığını, ben Enter tuşuna basın.
>> Daha sonra açık kıvırcık vurmak kaşlı, tekrar Enter tuşuna basın.
Ve bu benim düşünce tamamladı.
Bu, bana yeni bir satır verdi az girintili güzel üslup nedenlerle göreceğiz.
Ve o zaman otomatik olarak bana verdi Bu kaşlı ayraç benim düşünce bitirmek için.
Şimdi, bu her zaman yapar Eğer ne yapmak istiyorsun sanırım.
Ama büyük ölçüde, öyle bazı tuş vuruşlarını kaydetmek.
Yani bir an önce, biz bu program-- koştu merhaba, dünya, ve sonra derlenmiş,
ve sonra koştu.
Ama dinamizm burada var.
eğer biz istedik ne farklı bir şey yapmak?
Aslında ben ne istiyorsa kullanıcıdan bir dize olsun?
Ben bir puzzle parçası kullanmak için gidiyorum dize almak ki- tam olarak adlandırılır.
>> C çıkıyor istemediğiniz o zaman bir bulmaca parçası girdi sağlamak için,
ya da daha düzgün bir işleve, sen Gerçekten sadece açık parantez yapmak
kapa parantez.
var sanki bu yüzden var Hiçbir beyaz kutu içine yazın.
demek blok önce küçük beyaz bir kutu vardı.
Biz şimdi beyaz kutu yok.
>> Ama olsun dize çağırdığınızda, ben yere sonucunu koymak istiyorum.
Yani C çok yaygın bir paradigma olduğunu Burada olsun dize gibi bir işlevi, çağırmak,
ve daha sonra dönüş değeri saklamak.
Bu sonucudur onun bir şey çaba.
>> Ve ne programlama inşa,
C şimdi Scratch olsun veya olmasın, biz bu aslında bir şey saklamak için kullanabilir miyim?
Doğru, bir değişken aradı?
Ve Scratch olarak, biz gerçekten yok değişkenlerde neler olduğunu önemsiyorum.
>> Ancak bu durumda, aslında yapmak.
Ben dize söylemek için gidiyorum.
Ve sonra diyebiliriz İstediğim bu şey.
Ben onu aramak için gidiyorum adı, dize almak alır.
>> Ve şimdi sen bile Bu biraz yeni,
Ben bazı detay eksik ediyorum dikkat edin.
Ben bir noktalı virgül unutuyorum.
Ben bu düşünce bitirmek gerekir.
Bu yüzden, benim imleci hareket ettirmek için gidiyorum ve orada virgül çarptı.
Ve ben sadece ne yaptım?
Bu kod doğrultusunda, Şu anda 5 numaralı,
Ben hiçbir girişli olsun dize arıyorum.
Yani hiçbir küçük beyaz var Kaydet blok var gibi kutu.
>> Ben sadece, hey, söylüyorum Bilgisayar, bana bir dize olsun.
eşittir işareti değil gerçekten eşit işareti, haddi zatında.
Bu atama var anlamına operatör,
Hey, bilgisayar, değeri taşımak sola üzerinde sağ taraftan.
Ve sol, ben aşağıdaki var.
>> Hey, bilgisayar, bana bir string-- ver karakter dizisi.
Ve bu dize Adını diyoruz.
Ve hatta ismi aramak zorunda değilsiniz.
>> Ben geleneksel, diyebiliriz, S gibi bir şey,
biz i kullanılır gibi çok değişkeni i arayın.
Ama şimdi onunla bir şeyler yapmak gerekiyor.
Bu oldukça aptalca olurdu çalışan, bu kod derleme deneyin
Bu program olsa da Ben bir dize alıyorum,
Sadece hala çünkü merhaba dünya diyecektim.
>> Ama bunu değiştirmek için ne istiyorsun eğer.
Neden bunu değil mi?
Yüzde s, virgül s.
Ve bu hala biraz gizlenmiştir.
>> Yani benim değişkenleri daha açık yapalım.
Beni bu değişken adı adını edelim.
Ve biz alay edemez bakalım ayrı Buradaki neler.
>> Yani beşinci hatta, ben bir dize alıyorum.
Ve ben bu dizeyi depolamak ediyorum, ne olursa olsun, kullanıcının yazdığı
onun klavye de, Ad adında bir değişkende.
Ve o çıkıyor printf sadece yok
çift ​​bir argüman alabilir tırnak, çift tırnak içinde bir giriş.
>> Bu iki ya da üç ya da daha fazla, örneğin sunar İkinci ya da üçüncü veya dördüncü göre,
tüm değişkenler isimler, ya da spesifik olarak, değerler
Eğer takın istediğiniz, dinamik, tırnak içinde bu dize.
Diğer bir deyişle, Bu yanlış olurdu?
Ben sadece dersem merhaba isim, ters eğik çizgi n, benim dosyayı kaydettiğiniz kodumu derlenmiş
ve bu koştum, ne olurdu?
>> Sadece merhaba demek için gidiyor kelimenin tam anlamıyla, N-A-M-E, isim,
hangi tür aptal çünkü dünyanın hiçbir farklı.
Yani tırnak içinde bir şey Ne tam anlamıyla basılmış olur.
Ben istiyorsanız Yani Orada bir yer tutucudur,
Aslında kullanmanız gerekir bazı özel sözdizimi.
Eğer okursanız ve çıkıyor printf fonksiyonu için dokümantasyon,
o size söyleyecektir Eğer yüzde s kullanırsanız,
aşağıdaki gibi bir değer yerine kullanabilirsiniz.
>> Bundan sonra bir virgülden sonra çift ​​tırnak, sadece
adını yazın İstediğiniz değişken
Bu biçime takmak için kodu veya biçim belirteci,
Yüzde s dizeleri için.
Ve şimdi ben, benim Dosyayı kaydettikten verdiyseniz Benim terminale geri aşağı gidin.
Ve ben dize olun yazın çünkü bu daha isim
Daha önce seçtiğiniz dosya string.c olduğunu.
>> Yani girmek, String olun söylemek için gidiyorum.
Aman Tanrım, tüm bakmak hatalar zaten yaptık.
Ve bu gerçekten ne, bu-- altı, yedi satırı programı gibi?
Yani bu nerede çok can olduğunu hızla ezici olsun.
>> Bu terminal penceresi vardır şimdi sadece regurgitated
hata iletileri çok sayıda.
Şüphesiz, ben daha çok hata yok Benden mesajlar kod hatları var.
Nasıl gidiyor bakalım?
>> Eh, en iyi strateji Size her zaman yapmak
ezici bir karşılaşıyorsunuz Böyle hataların listesi
geri kaydırma olduğunu, komuta bakmak Sadece, koştu benim durumumda olan
dize hale getirilmesidir.
yaptığını yapmak ne bakmak ve o var Uzun Clang komutu, orada hayır büyük dağıtmak.
>> Ama kırmızı kötü.
Yeşil olmaya çalışıyor nazik ve yardımsever.
Ama bu durumda, hala kötü.
Ama nerede kötü mü?
>> String.c, satır, beş, karakter, beş.
Yani bu sadece ortak sözleşmedir.
Bir şey kolon şey demektir Satır numarası ve karakter sayısı.
Hata, bildirilmemiş kullanımı tanımlayıcı bir dize.
Eğer standart demek istediniz?
>> Bu nedenle, ne yazık ki, Clang yardımcı olmaya çalışıyor.
Ama bu durumda, yanlış.
Hayır, Clang, ben standart IO demek istemedim.
Evet, birinci hatta anlamına geliyordu.
>> Ama hat beş burada bu biridir.
Ve Clang değil S-T-R-l-N-G kavrar.
Bu bir bildirilmemiş tanımlayıcı bir var sadece daha önce hiç görmediği bir kelime.
Ve bu C, çünkü dil var Biz şu anda kod yazıyoruz
dizeleri olarak adlandırılan değişkenler yoktur.
>> Varsayılan, desteği ile, değil bir şey bir dize denir.
Bu bir CS50 parçası jargon, ama çok geleneksel.
aşağıdaki gibi Ama bu çözebilirsiniz.
>> Ben bir kod satırı eklerseniz Bu programın üstüne,
Başka bir dosya CS50.h içerir bir yerde CS50 IDE içinde yere
sabit disk üzerinde, tabiri caizse, Ubuntu işletim sisteminin
Ben koşuyorum olduğunu, bu var dosya
işletim öğretecek bir dize ne sistem, sadece
Standart io.h gibi dosya bu işletim sisteminde
ne Printf öğretecek.
>> Nitekim, biz kazanılmış olacaktı çok benzer bir mesaj
IO standardını kabul olsaydı Io.h ve printf kullanmaya çalıştı.
Yani önde ve sadece gitmek için gidiyorum Benim ekranı temizlemek için Denetim L alır.
Ya da açık yazabilir ve o-ecek sadece Terminal penceresini temizleyin.
Ama yine de zaman içinde geri kaydırabilirsiniz.
>> Ve ben dize olun yeniden gidiyorum.
Enter parmaklarım bu kez geçer.
Aman Tanrım, işe yaradı.
bana uzun bir şifreli komut gösterir Bu ne Clang yoluyla oluşturulan Yap olduğu
ancak hiçbir hata iletisi.
Yani olsa da, fark Tamamen alabilirsiniz
boğulmuş hata iletileri sayısı,
Sadece bu can sıkıcı basamaklı olabilir Clang anlamıyor etkisi
sonra gelir bir şey, Bir sonraki sözcüğü anlamıyor,
veya bir sonraki satır.
Ve bu yüzden sadece kod bobinleri.
Ama düzeltme basit olabilir.
Ve bu nedenle her zaman üzerinde durulacak çıktı ilk satırı.
Ve eğer yapmazsan bunu anlamak, sadece bakmak
anahtar kelimeler için bu olabilir ipuçları ve hat numarası,
ve karakter, nerede Bu hata olabilir.
>> Şimdi bana devam et ve yazın izin nokta girmek, dize çizgi.
Hm, merhaba şey söylemiyor.
Niye ya?
Peki, nerede çalışıyorsa, hatırlama?
>> Muhtemelen şu anda sıkışmış Bir döngü içinde, sıralı altı tarihinde, eğer sen,
tasarımı ile dize alın çünkü, CS50 personeli tarafından yazılmış,
Gerçekten sadece oturmak içindir Orada bekleyen ve bekleyen,
ve bir dize bekliyor.
biz dize demek tüm insan girdidir.
Yani biliyor musun?
Beni devam edelim.
Ve sadece bir heves, bana izin Adımı, David yazın girin.
Şimdi daha dinamik bir program var.
Bu merhaba David dedi.
>> Devam edin ve tekrar çalıştırın, Bana girin Zamila ismini söyleyin deneyelim.
Ve şimdi biz dinamik bir program var.
Ben sert dünyayı kodlanmış değil.
Ben zor kodlanmış değil isim, ya da David veya Zamila.
>> Şimdi programlar gibi çok daha fazla var o giriş alırsak biz, nerede, biliyor
biraz farklı çıktı üretir.
Şimdi, bu iyi değil kullanıcı deneyimi, ya UX.
Ben programı çalıştırın.
>> Ben gereken şey bilmiyorum Aslında bakmak sürece, yapmak
veya kaynak kodunu hatırlıyorum.
Yani kullanıcı yapalım biraz daha iyi deneyim
şeylerin basit ile.
Bana bu geri dönelim Program ve sadece printf söylüyorlar.
>> Ve beni go ahead ve adı, kolon diyelim ve bir boşluk ve ardından bir virgül.
Ve sadece tekmeler için, hiçbir geri tepme n.
Ve bu, kasıtlı var Ben istemiyorum çünkü
istemi sonraki satıra geçmek için.
>> Ben dize yapmak yerine, bunu yapmak istiyorum Yeni makine içine kodumu yeniden derlemek için
Kod nokta dize çizgi.
Ah, bu çok güzel olduğunu.
Şimdi ben aslında hangi bilgisayarı biliyor Bana, bunu ona bir isim vermek istiyor.
>> Bu yüzden devam edin ve yazın gidiyorum Rob içinde, merhaba Rob girin ve.
Yani, bu sonunda, hala, fark gün, sadece dokuz satırı programının.
Ama biz bu bebek adımlar attık.
>> Biz bir satır yazdı hangi ile biz tanıdık, printf, merhaba dünya idi.
Sonra o biraz undid.
Ve biz aslında olsun dize kullanılır.
Ve biz bir değişkene bu değeri attı.
Ve sonra biz devam etti ve geliştirilmiş üçüncü bir çizgi ile daha.
Ve bu tekrarlanan bir süreçtir yazılım yazma gerçekten anahtarıdır.
CS50 olarak ve genel olarak hayat, genellikle, oturup olmamalıdır
aklında bir program var ve yazma deneyin tek seferde bütün lanet şeyi.
>> Bu, kaçınılmaz olarak, bir şekilde sonuçlanır kendimizi burada gördüm biz daha fazla hata.
Hatta ben, bu güne kadar, sürekli diğer aptalca hatalar yapmak,
aslında zor hatalar anlamaya zor olduğunu.
Ama daha çok hata daha yapacak kod satırlarını tek seferde tüm yazın.
Ve böylece bu uygulama, kod biraz geç
Eğer rahat olduğunu, derlemek o, çalıştırmak daha genel test
o zaman biz tuttu bu yüzden gibi Firefox veya hareket katman ve geçen hafta katman,
bir şey bina çok daha karmaşık bir şey basit,
Burada aynı şeyi.
otur ve kalkmayın Bütün bir problem yazma.
Aslında bu bebek adımları.
>> Şimdi, dizeleri tüm değil kendileri Allah'a o kadar da kullanışlı.
Biz gibi, ideal olarak, aslında olur Bizim araç başka bir şey var.
Yani aslında tam olarak yapalım.
>> beni şimdi git ve kırbaç edelim biraz daha farklı bir programı.
Ve biz tamsayı için, bu int.c arayacağım.
Ben benzer, gidiyorum, CS550.h bulunmaktadır.
Ben standart IO dahil gidiyorum.
Ve bu oldukça yaygın olacak sınıfın bu ilk birkaç gün içinde.
>> Ve ben hazır gidiyorum Kendimi bir ana fonksiyonu ile.
Ve şimdi yerine bir dize alma, Devam edelim ve bir int alır.
en i diyelim, ve o olsun diyoruz int, yakın Pars, noktalı virgül.
Ve şimdi yapalım onunla bir şey, printf.
>> en gibi bir şey diyelim merhaba, ters eğik çizgi n, virgül i.
Yani hemen hemen taklit ediyorum Ben sadece bir an önce ne yaptığını.
Burada bir yer tutucu var.
Ben istiyorum çünkü, burada i virgül Bu tutucu içine i fiş.
>> O yüzden go ahead ve deneyelim Bu program derleme.
Dosya int.c. adlandırılır
Yani girmek, int yapmak, söylemek için gidiyorum.
Aman Tanrım, ama hayır büyük dağıtmak, değil mi?
Bir hata var.
>> Bir sözdizimsel hata var burada böyle bu program yapamaz
int.c, hat içinde derlenebilir Yedi, karakter 27 hata biçimi
tip char, belirtir yani ne olursa olsun, yıldız.
Ama tartışma türü int.
>> De, böylece burada aşağıdaki amaçlara gitmiyorsun Bugün birçok materyal olsa da,
biz sizi mahçup için gidiyoruz kesinlikle C her özelliği,
ve daha genel programlama Sadece bu ilk birkaç hafta içinde.
Bu yüzden sık sık jargon orada oluyor hangi ile aşina değiliz.
Ve aslında, karakter yıldızı şeydir Biz geri gelmek için gidiyoruz
Bir hafta ya da iki'nın zamanında.
>> Ama şimdi, biz bakalım tanıdık sözcükleri ayrıştırmak.
Biçimler arasında bu yüzden biçimi duyduğumuz belirleyicisi, biçim kodu önce.
Bu tanıdık.
Type-- ama argüman türü int vardır.
Bir dakika, ben bir int.
>> Aslında belki yüzde ler Bazı tanımlanan anlama sahiptir.
Ve gerçekten de öyle.
Bir tamsayı, isterseniz Bunu yerine printf,
aslında bir kullanmak zorunda Farklı biçim belirteci.
Ve bu bilemeyiz sürece kimse, sana söyledim
ya da daha önce yapmıştı.
Ama yüzde ben ne olduğunu yaygın olarak kullanılabilir
bir tamsayı tanıttığım için printf.
Ayrıca yüzde kullanabilirsiniz bir ondalık tamsayı d.
Ama burada güzel ve basit.
Bu yüzden o ile gitmek gerekir.
>> Şimdi bana devam edelim ve yeniden çalıştırın yapmak int girin.
Yani, hiçbir hata iyidir.
Dot, int-- Tamam, kötü bir kullanıcı deneyimi çizgi Kendimi söylemedim çünkü
ne yapalım.
Ama bu sorun değil.
Ben hızlı bir şekilde yakalamak ediyorum.
>> Ve şimdi devam edelim ve David, tamam, Zamila, Rob yazın.
Tamam, bu iyi bir şeydir.
Bu sefer, ben, bir işlev kullanıyorum olsun int adlı bir bulmaca parçası.
Ve bu out-- döner ve yaparız term-- bu sonra görüşürüz
CS50 personeli hayata geçirdi böyle bir şekilde dize almak
o sadece fiziksel olacak Senin için bir dize olsun.
>> Bu içinde olsun int hayata geçirdi Böyle bir yolu olduğunu sadece olacak
Sizin için bir tamsayı olsun.
Ve eğer, insan, işbirliği yok, öyle
Gerçekten sadece gidiş , Yeniden, yeniden yeniden söylemek
kelimenin tam anlamıyla kadar, loop orada oturan Eğer bazı sihirli sayı ile mecbur,
50 ve 50 merhaba gibi.
>> Ya da biz yine bu çalıştırırsanız ve tip 42 yılında, 42 merhaba.
Ve böylece olsun int fonksiyonu Bu puzzle parçası içinde
yeterli mantıktır, yeterli düşünce, anlamaya, bir kelime nedir?
Ve bir sayı nedir?
Sadece sonuçta, sayılar, kabul.
>> Bu yüzden bu çıkıyor Tüm bu ifade değildir.
şimdiye kadar.
Yani, yay, son kez oldukça hızlı bir şekilde gitti
uygulama oyunları ve animasyon haline, Scratch ve sanat eserleri.
Ve burada, içerik ediliyor merhaba dünya ve 50 merhaba ile.
>> Hepsi bu ilham verici değil.
Ve gerçekten de, bu ilk birkaç örnekler biraz zaman alacaktır
heyecanla kadar rampa.
Ama biz çok daha fazla var Aslında, şimdi kontrol eder.
Ve biz gidiyoruz çok hızla katman başlamak
Bu temel ilkellere üstünde.
>> Ama önce, anlayalım sınırlamalar nelerdir.
şeylerin Aslında, bir Çizilmeye kolaylıkla yok
bakmak gerçekten bize yapmak let Kaputun altında,
ve ne anlama Bilgisayar, ne yapabilirim, bir
ve sınırlamalar nelerdir.
ve gerçekten de, bu eksikliği anlayış, potansiyel ve uzun süreli
Kendi mistakes-- yazı yol açabilir güvensiz yazılım yazma böcek, o
bir şekilde kesmek alır.
>> Yani en doğru bazı adımlar atalım Bu biraz daha iyi anlamak
, Yolu, şu örneği söylüyorlar.
Devam edin ve uygulamak için gidiyorum Toplayıcı adında bir program gerçek hızlı.
Gibi, beraber bazı rakamları ekleyelim.
Ve ben bazı köşeleri kod gidiyorum Burada, sadece kopyalama ve yapıştırma
nerede Ben sadece, daha önce oldu bu yüzden erken gidiyor alabilirsiniz.
Şimdi bu yüzden temel başlangıçlar var Toplayıcı adlı bir program.
>> Ve en go ahead ve bu yapalım.
Ben devam edeceğim ve diyelim ki, INTX int almak alır.
Ve biliyor musun?
Daha iyi bir kullanıcı deneyimi yapalım.
>> Yani sadece x, ve etkili diyelim kullanıcı istemi bize x vermek.
Ve sonra bana printf, go ahead ve diyelim nasıl y hakkında, bu sefer bekliyor
kullanıcıdan iki değer.
Ve sonra hemen önünüzde gidelim ve mesela Printf, x ve y'nin toplamıdır.
Ve şimdi yüzde s yapmak istemiyorum.
Ben yüzde i yapmak istiyorum, ters eğik çizgi n ve sonra toplam değeri takın.
>> Peki nasıl bunu hakkında gidebilir?
Biliyor musun?
Ben değişkenleri nasıl kullanacağımı biliyorum.
Bana sadece bir yenisini, int z ilan edelim.
>> Ve ben burada bir tahmin almak için gidiyorum.
Bu eşit işaretler varsa dil, belki x artı y şeyi yapabilecek,
Çok uzun ben benim son olarak noktalı virgülle düşündü?
Şimdi, buraya geri dönmek z takabilirsiniz, Bir noktalı virgülle bu düşünceyi bitirmek.
Ve Şimdi bu eğer, şimdi görelim çizgiler, x'in dizileri int olsun.
Y int olsun.
>> , X ve y ekleyin değeri saklamak z-- bu yüzden, yine, eşittir işaretini hatırlıyor
eşit değildir.
Bu sağdan sola atama var.
Ve en toplamından o çıktı izin x ve y'nin tam anlamıyla z değildir
ama z içinde ne var.
Yani Toplayıcı yapalım - güzel, hiçbir hata bu sefer.
Dot, Toplayıcı, girin çizgi x 1 olacak.
>> Y 2 olacak.
Ve x ile y nin toplamı 3'dür.
Böylece tüm ince ve güzel.
>> Yani o matematik hayal ediyorum Böyle bir programda çalışmalıdır.
Ama ne biliyor musunuz?
Bu değişken, çizgi 12, hatta gereklidir?
Sen alışkanlığı elde etmek gerekmez sadece değişkenleri şeyler saklamak
Sadece yapabilirsiniz çünkü.
Ve aslında, genellikle var: arşivlendi which kötü tasarım
Bir değişken oluşturuyorsanız, denir Bu durumda, Z, içinde bir şey saklama
ve hemen ardından ama bir daha asla, bunu kullanarak.
Neden bir şey bir ad verin z gibi kelimenin tam anlamıyla iseniz
Bu kullanacağız şey sadece bir kez, ve böylece
Oluşturduğunuz yere yakın ilk olarak bu,
kod satırları açısından çok yakın?
Yani biliyor musun?
Bu, C oldukça esnek olduğu ortaya çıktı.
Aslında istiyorsanız plug-in değerleri burada,
Ben yeni bir değişkeni bildirmek gerekmez.
Ben sadece plug-in olabilir x artı y C anlar, çünkü
aritmetik ve matematiksel operatörler.
>> Bu yüzden sadece bu matematik yapmak, diyebiliriz x artı y bu değerler ne olursa olsun,
Ortaya çıkan fiş Bu dizeye tamsayı.
Yani bu olsa da, olabilir sadece bir satır daha kısa,
Daha iyi bir tasarım, daha iyi bir program daha az kod nedenle var, çünkü
Beni anlamak için daha az.
Ve bu, aynı zamanda sadece daha temiz değiliz sürece
yeni kelimeler tanıtmak, Yeni semboller, z gibi,
olsa bile onlar gerçekten yok Bir amaç çok hizmet vermektedir.
>> Ne yazık ki, matematik değildir Tüm bu güvenilir bazen.
en go ahead ve bu yapalım.
Ben devam edeceğim şimdi ve aşağıdakileri yapın.
>> en printf, yüzde i, artı yüzde yapalım Ben, yüzde i ters eğik çizgi n olacaktır.
Ve ben bunu tartismadik-- xyx artı y yapacağım.
Ben sadece yeniden yazmak için gidiyorum Bu biraz daha farklı burada.
Bana sadece hızlı aklı onay yapalım.
Yine, en öncesinde kendimizi alamadım edelim.
toplayıcı, nokta çizgi engerek olun.
x 1'dir, Y, 2, 1 ve 2 3 olmasıdır.
Yani bu iyi.
Ama şimdi bu güçleştirelim Biraz ve yeni bir dosya oluşturun.
>> Bu bir çağıracağım, ints, tamsayılar için çoğul söylüyorlar.
Ben bir an önce nerede beni başlayalım.
Ama şimdi en birkaç diğer satırları yapalım.
Beni go ahead ve aşağıdakileri yapalım printf, yüzde i eksi yüzde i
Yüzde i virgül x, virgül yx eksi y.
Yani biraz yapıyorum Orada farklı matematik.
Başka bir tane yapalım.
Yani yüzde i zaman yüzde Ben yüzde i ters eğik n.
en plug-in x ve y ve x süreleri y olsun.
Biz üzerinde yıldız kullanacağız kez bilgisayar.
>> Sen x kullanmayın. x Burada bir değişken adı.
Sen çoğalması için yıldız kullanın.
Bir kere daha yapalım.
Printf yüzde I ayrılmıştır Yüzde i tarafından, yüzde i
ters eğik çizgi n. xy Cp grubuna bölünmesi Böylece C eğik çizgi kullanın
bölme yapmak.
Ve diğer bir yapalım.
Yüzde i geri kalanı, bölünmüş Yüzde i tarafından, yüzde i.
xy-- şimdi kalanı arta kalan ne olduğunu.
Bir bölen çalıştığınızda Bir pay içine bir payda,
Bu kalan ne kadar Eğer dışarı bölmek değil ki?
>> Yani, gerçekten yok mutlaka bir sembol
Bunun için ilkokulda kullandım.
Ama C. yapabilirsiniz demek x Modulo y nerede
Bu context-- bu yüzde işareti karışacak içeri olduğunuzda
çift ​​tırnak, Printf bölgesinin yüzde içindeki
biçimi belirtici olarak kullanılır.
>> Eğer dışında yüzde kullandığınızda Bir matematiksel ifadede o,
bu modüler için modül operatörü bulunuyor Bizim amaçlarımız için arithmetic--
Burada, sadece anlamına gelir, ne x kalan Y bölünmesiyle?
y bölü x Böylece x bölü y.
y bölü x kalan nedir?
Bir programcı söyleyebilirim gibi, mod y x var.
>> Burada hiç hata yapmadı Yani, bana izin devam edin ve çoğul ints, güzel yapmak,
ve nokta çizgi ints.
Ve en önde gidelim ve do, en, 1, 10 diyelim.
Pekala, 1 artı 10 çek, 11 olduğunu.
1 eksi 10 kontrol negatif 9.
>> 1 kez 10 çek, 10.
1, 10 o-- bölü Tamam, biz bu bir atlamak gerekir.
10 bölü 1 Kalan 1'dir.
Bu doğru.
Ama burada bir hata var.
>> Yani bir ben koymak benim doğru değil, teslim.
Ben 0'a yakın, yani.
Biz eğer 10 bölü 1, bilirsin bazı köşeleri kesme, tabii, sıfır.
Ama gerçekten, 1/10 olmalı 0.1 ya da 0.10, 0.1000, ya da benzerleri.
>> Gerçekten sıfır olmamalıdır.
Eh, bilgisayar olduğu ortaya çıktı kelimenin tam anlamıyla yapıyor yapmamız için söylediklerini.
Biz y bölü x gibi matematik yapıyoruz.
Ve çizgilerin başına hem x ve y, kod önce, tam sayılardır.
>> Ayrıca, hat 15, biz söylüyorum printf, hey, printf plug-in
bir tamsayı, plug-in bir tamsayı, plug-in bir integer-- özellikle
X ve Y, ve X y bölü. X ve Y, int vardır.
Biz orada iyiyiz.
>> Ancak x x tarafından ne bölünür?
x y olmalıdır bölünmesiyle, matematiksel, 1/10 ya da 0.1,
hangi bir reel sayı, gerçek bir sayıdır Potansiyel, bir ondalık noktası olan.
Bu bir tamsayı değil.
>> Ama en yakın nedir 1/10 ya da 0.1 sayı?
Evet, bu tür sıfırdır.
0.1 Bu çok benzer.
Ve 1 bu kadar.
Böylece 1/10 daha yakın olan 0 o birine daha.
>> Ve böylece C us-- için ne yaptığını tür onu aşağıdaki amaçlara söyledim çünkü
Bu tamsayı kesiliyor olduğunu.
Yine bir değer alıyor 0.1000 gibi bir şey olması gerekiyordu,
0 ve benzeri.
Ve her şeyi kesiliyor oluyor ondalık noktadan sonra
Bu tüm böylece şeyler, öyle değil, çünkü
Bir tamsayı kavramı uygun olan 1, 0, 1 olumsuz gibi sadece bir sayıdır
yukarı ve aşağı, her şeyi atıyor çünkü sen ondalık noktadan sonraki
ondalık nokta sığamaz tanımı gereği bir tamsayı.
>> Yani burada cevap sıfırdır.
Peki nasıl bu düzeltebilirim?
Biz hep birlikte bir çözüm gerekir.
aşağıdaki gibi Ve biz, bunu yapabilirsiniz.
>> Beni devam edelim ve yeni bir oluşturmak Dosya, bu bir floats.c denir.
Ve burada kaydetmek Aynı dizin, float.c.
Ve beni go ahead ve kopyalama izin önceki bu kodu bazılarıdır.
>> Ama yerine alıyorum bir int, hadi yapalım.
Bana bir kayan nokta değeri vermek x denir. nerede bir kayan noktalı
değer sadece tam anlamıyla Bir kayan nokta ile bir şey.
Bu sağa, sola hareket edebilirsiniz.
Gerçek bir numara.
>> Ve bana değil diyelim int olsun, ama float almak,
Ayrıca menü arasında olan C250 kütüphanede seçenekler.
en bir float y değiştirelim.
Yani bu float almak olur.
>> Ve şimdi, ints takmak istemiyorum.
Biz yüzde kullanmak zorunda çıkıyor float için f float için yüzde f
ve şimdi kaydedin.
Ve şimdi, parmak çarpı işareti yapmak şamandırası, güzel, nokta çizgi yüzer.
x bir 1. y olacak Tekrar 10 olacak.
>> Ve, güzel, tamam benim ekleme doğrudur.
Ben, daha fazla bilgi için umuyordum ama bunu yazmayı unuttum.
Yani gidip bu mantık hatasını düzeltmek edelim.
>> en go ahead ve aşağıdaki kapmak edelim.
Biz sadece küçük bir kopyala ve yapıştır yapacağız.
Ve ben eksi söylemek için gidiyorum.
>> Ve ben kere söyleyeceğim.
Ve ben bölünmüş söylemek için gidiyorum.
Ve ben, modulo yapmak için gitmiyorum ki burada da dair değildir
f bölü ve süreleri plus-- Tamam, yine bu yapalım.
>> Yap yüzen, nokta çizgi yüzen, ve 1, 10, ve- güzel, hayır, tamam.
Yani bir aptalım.
Yani bu çok yaygın bilgisayar bilimi
Böyle aptalca hatalar yapmaya.
>> pedagojik amacıyla, ne gerçekten yapmak istediğim
Burada bilim değiştirmek oldu artı için, eksi, kez,
ve umarım senin gibi, bölmek için Bu egzersiz sırasında fark ettim.
Yani şimdi Şimdi bu yeniden derlemek izin Program, nokta çizgi yüzen yapmak.
>> Ve üçüncü kez, haydi Benim beklentilerini karşılayan olmadığını görmek.
1, 10, 1.000, tamam, evet, girmek, 10.000 bölü, 0,100000 olduğunu.
Ve biz kontrol edebilirsiniz çıkıyor kaç sayılar o ondalık nokta peşinde.
Biz aslında olacaktır.
Biz geri geleceğiz.
>> Ancak şimdi, aslında, matematik doğrudur.
Yani, yine, paket burada ne var?
Bu C vardır çıkıyor sadece, sadece, aslında, strings-- ve
Gerçekten yoktur çünkü biz CS50 kütüphanesi olan ekleyin.
Ama ints yoktur.
>> Ayrıca yüzer vardır.
Ve diğer verilerin bir demet çıkıyor türleri de biz önce uzun kullanmak edeceğiz.
Tek bir isterseniz çıkıyor karakter karakter, bir dize,
Sadece bir karakter kullanabilirsiniz.
>> Eğer bir bool istiyorsanız çıkıyor, Sadece doğru veya yanlış bir Boole değeri,
CS50 kütüphaneye sayesinde, biz ettik yanı sıra C bool veri türü eklendi.
Ama aynı zamanda içinde mevcut bulunuyor birçok diğer diller de.
Ve bazen seni çıkıyor varsayılan olarak gelen büyük sayılar gerek
ints ve yüzdürücülü.
>> Ve, aslında, bir çift bir sayı değil 32 bit, ancak 64 bit kullanır.
Ve uzun uzun bir sayı olduğunu Değil 32, bit ama 64 bit kullanır
sırasıyla kayan nokta için sırasıyla değerler ve tamsayılar.
Bu yüzden şimdi aslında atalım eylem görüyoruz.
>> Ben burada devam edeceğim ve bir diğer programı kırbaç.
İşte, ben önde gidiyorum ve CS50.h. eklerim
Ve gitmeme izin, standart io.h dahil
>> Ve bir şey fark edeceksiniz Korkak burada oluyor.
Bu şeyler kodlama renk değil Daha önce olduğu gibi aynı şekilde.
Ve o çünkü ben var, çıkıyor şeyi bir dosya adı vermemiştir.
>> Bu bir arayacağım sizeof.c ve Kaydet çarptı.
Ve benim çok ne olur fark o siyah fonunda beyaz kodu.
Şimdi, en azından var orada bazı mor.
Ve bu sözdizimi vurgulanmış.
>> , Oldukça basit, ben ettik çünkü bu dosyanın ne tür IDE anlattı
o buna bir isim vererek ve Özellikle bir dosya uzantısı.
Şimdi, go ahead ve bu yapalım.
Ben önde ve çok gideceğim sadece following-- bool çıktı
yüzde LU olduğunu.
>> Biz geri geleceğiz sadece bir an o.
Ve sonra ben gidiyorum bool baskı boyutu.
Ve şimdi, sadece kurtarmak için Kendimi biraz zaman, ben
bir bütün yapacak Aynı anda bu demet.
Ve özellikle, ben gidiyorum char ve char değiştirebilirsiniz.
Bu bir, ben değiştirmek için gidiyorum bir çift ve bir çift için.
>> Bu bir, ben değiştirmek için gidiyorum bir float ve şamandıraya.
Bu bir, ben gidiyorum Bir int ve int değiştirin.
Ve bu, ben gidiyorum uzun uzun değiştirmek için.
Ve hala sürüyor uzun bir süre, çok uzun.
>> Ve sonra, son olarak, ben verdim Kendimi bir çok, dize.
Bu C, var olduğu ortaya çıktı adı verilen özel operatör
Bu boyutu kelimenin tam anlamıyla Zaman koşacağız,
Bize boyutunu anlatmak bu değişkenlerin her biri.
Ve bu, şimdi, bir yoludur Biz geri bağlanabilir
Geçen haftaki tartışma veri ve temsil.
>> Beni go ahead ve derleme yapalım dot çizgi boyutu boyutu.
Ve görelim.
Bu, C çıkıyor Özellikle CS50 IDE,
özellikle üzerinde işletim sistemi Ubuntu,
64-bit işletim hangi Bu durumda sistem,
Bir bool gidiyor alan bir bayt kullanırlar.
Bu boyut ölçülür nasıl, değil bit, ancak bayt.
Ve bir byte sekiz bit olduğunu hatırlayın.
Yani bool, hatta sizin bile teknik olarak sadece gereken, 0 ya da 1,
Biraz savurgan var nasıl biz bunu uyguladık.
Aslında bir bütün kullanacak byte-- böylece tüm sıfır, belki vardır
Böyle tüm olanlar, ya da bir şey, ya da sadece bir 1 sekiz bit arasında.
>> Bir karakter, arada bir karakter için kullanılır Geçen haftada bir ASCII karakter gibi,
bir karakter olacak.
Ve bu bizim kavramı ile synchs o değil, en fazla 256 bits-- olmak
hiçbir varlık ile synchs kadar daha uzun 8 bit, burada
Bize kadar 256 gibi değerleri verir.
Bir çift gidiyor 8 bayt veya 64 bit olması.
>> Bir şamandıra 4'tür.
Bir int 4'tür.
Çok, çok uzun 8'dir.
Ve bir dize 8'dir.
Ama bu konuda endişelenmeyin.
Biz o katmanı geri soyma için gidiyoruz.
Bu dizeleri can, çıkıyor 8 byte daha uzun.
>> Ve, gerçekten, biz yazdık Zaten dizeleri, merhaba dünya,
8 byte daha uzun.
Ama biz geri geleceğiz sadece bir an o.
Ama buradan almak şudur.
>> Herhangi bir bilgisayar, yalnızca sonlu vardır bellek ve alan miktarı.
Sen sadece çok saklayabilirsiniz Mac veya PC üzerinde dosyaları.
Sadece pek çok program saklayabilirsiniz RAM bile, mutlaka bir kez çalışan
Sanal bellek ile, çünkü RAM sınırlı miktarda var.
>> Ve sadece eğer resim-- için Eğer bir dizüstü açtı hiç
ya da ekstra bellek sipariş bir bilgisayar için, sen
olduğunu bilmiyor olabilir Bilgisayarınızın içinde
görünüyor şeydir Bu gibi küçük.
Yani bu adlandırılmış bir ortak şirketi Crucial bilgisayarlar için RAM yapar.
Ve RAM nerede programlar Onlar koşarken yaşıyor.
>> Yani çift her Mac veya PC üzerinde Bir programı tıklatın ve açılır,
ve bazı Word belgesi açar ya da böyle bir şey,
Bu geçici olarak saklar RAM, RAM daha hızlı olduğu için
Sabit diskinizde daha ya senin solid state disk.
programlar nereye Yani bu sadece Onlar çalıştırdığıomızda yaşamak için,
veya dosyalar kullanılmaktadır zaman.
>> Yani bakmak şeyler var dizüstü bu içi gibi,
ya da biraz daha büyük şeyler masaüstünüzde içinde.
Ama anahtar yalnızca var olan Bunlardan sonlu sayıda.
Ve sadece sınırlı miktarda var Donanım bu masada oturan sağ
İşte.
>> Yani, elbette, biz saklayamazsınız sonsuz uzun sayılar.
Ve henüz, sen geri düşünüyorsanız ilkokul, kaç basamak olabilir
Eğer sağa var Bir ondalık noktasının?
bu konuda, kaç basamak olabilir Bir ondalık noktasının solunda var mı?
Gerçekten, sonsuz sayıda.
>> Şimdi, biz insanlar sadece olabilir milyon okunur biliyorum,
milyar, trilyon, ve katrilyon ve kentilyon.
Ve ben sınırlarını zorlayan ediyorum benim understanding-- veya benim-- anlıyorum
sayılar, ama benim sayıların telaffuz.
Ama onlar sonsuz büyük alabilirsiniz sola sonsuz sayıda rakam
veya ondalık noktasının sağındaki.
>> Ama bilgisayarlar yalnızca bir var bellek sınırlı miktarda,
transistör sonlu sayıda bir içeride ampullerin sonlu sayıda.
Peki ne olur Eğer alanı tükenmeye?
Diğer bir deyişle, eğer geçen hafta geri düşünmek
biz numaraları hakkında konuştuk kendilerini, bir ikili temsil edilen
elimizdeki varsayalım Burada bu 8 bitlik değer.
>> Ve biz yedi 1'ler ve bir 0 var.
Ve biz istiyoruz varsayalım Bu değere 1 ekleyin.
Bu şu anda gerçekten büyük bir sayıdır.
>> Hatırladığım Bu, 254 Geçen hafta sağ taraftan matematik.
Ama ne değiştirirseniz En sağdaki 0 ​​1 mi?
Bütün sayı, Tabii ki, sekiz 1'leri olur.
Bu yüzden hala iyiyiz.
>> Ve muhtemelen temsil 255 olsa bağlama göre
aslında temsil edebilecek negatif bir sayı.
Ama bu başka bir zaman daha fazla.
bu konuda gibi bu hissediyor Ben güvenebilirsiniz gibi yüksek.
>> Şimdi, sadece 8 bit var.
Ve benim Mac, mutlaka, yol var fazla bellek 8 bit.
Ama sonlu var.
Dolayısıyla aynı argüman bile geçerlidir biz Ekranda bu olanları daha var.
>> Ama ne sen olur Bu numarayı, 255 depolama,
ve 1 biraz daha yüksek saymak istiyor?
Sen 255 den 256 gitmek istiyorum.
Sorun, tabii olduğunu eğer geçen hafta gibi sıfırdan saymaya başlar,
Eğer yüksek sayılmaz 256 olarak, tek başına 257 let
Yalnız 258 izin m çünkü ne Bir 1 eklemek ne olur?
Eski sınıf okulu yaparsanız yaklaşım, sen burada skoru 1
ve daha sonra 1 ve 1 2, ama bu Gerçekten sıfır, sen 1 taşımak,
1 taşımak, 1 taşırlar.
tüm bunları, Bu 1'ler, sıfıra gidin.
Ve biri olarak, evet, rüzgar sol tarafta, bir 1 işaret etti.
Ama her şey yapabilirsiniz aslında görmek ve bellekte sığdırmak
demek ki sadece sekiz 0'ın olduğunu bir noktada eğer, bir bilgisayar,
yeterince yüksek yukarı sayma çalıştı, sen sarmak için gidiyor, o görünüyor
belki sıfır, hatta negatif Sıfırdan daha düşük olan sayılar.
>> Ve biz bu tür görebilirsiniz.
Beni go ahead ve yazalım Burada gerçek bir hızlı bir program.
Beni go ahead ve yazalım Taşma adında bir program.
arasında, CS50.h içerir Standart IO.h-- oh
Gerçekten benim dizim kaçırdı.
Yani overflow.c olarak bu tasarruf sağlar.
>> Ve şimdi int main void-- ve çok geçmeden, yaparız
nedenini açıklayan geri gelmek biz int main boşluğu yazmaya devam.
Ama şimdi, hadi yapalım hafife bu alarak.
en kendime bir int vereyim, ve 0 olarak başlatılamadı.
>> o sırada int için yapalım i zero-- olsun Aslında, en sonsuz bir döngüye yapalım
ve ne olduğunu görün.
Gerçek olsa, o zaman n çıktısını izin yüzde i ters eğik çizgi n, plug-in n.
Ama, şimdi, n artı 1 olur yapalım.
>> Diğer bir deyişle, her bir So Bu sonsuz bir döngüye yineleme,
en n değerini alalım, ve daha sonra 1 eklenir ve
Soldaki geri n sonucunu saklamak.
Ve, aslında, sözdizimi gördüğümüz Biraz böyle, kısaca.
Serin bir hüner yerine ise Bütün bu dışarı yazma,
aslında bir n-plus 1 eşittir söyleyebiliriz.
>> Ya da gerçekten fantezi olmak istiyorsanız, Eğer n-plus artı virgül söyleyebiliriz.
Fakat bu son iki sadece vardır Biz sözdizimsel şeker dediğimiz
ilk şey için.
>> ilk şey, daha açık olduğunu tamamen iyi, tamamen doğru.
Ama bu daha sık görülür, ben söyleyeceğim.
Yani biz sadece bir an için yapacağım.
>> sesler Şimdi yapalım taşma, oldukça uğursuz, nokta çizgi taşması.
en n oldukça büyük oluyor, bir bakalım.
Ama düşünmek izin, n ne kadar büyük alabilirim?
>> n int.
Biz boyutu ile bir an önce gördüm örnek bir int dört bayt olduğunu.
Biz geçen hafta biliyoruz, dört bayt 32 bit, çünkü 8 kez 4, bu 32 var.
Bu 4 milyar olacak.
>> Ve biz 800.000 kadar vardır.
Bu sonsuza kadar sürecekse Ben belki mümkün olduğunca yüksek sayılır.
Bu yüzden, go ahead için gidiyorum gibi, daha önce uzun olabilir
ve açıkçası Kontrol Kontrol C- vurmak C, bir sürü nerede Kontrol C genellikle
araçlar iptal.
Ne yazık ki, bunun nedeni bulutta çalışan,
bazen bulut çok şeyler tükürme,
çok çıktı, o gidiyor Benim girişi için biraz zaman alabilir
bulut almak için.
Yani vurmak olsa bile Bir kaç saniye önce Kumanda C,
Bu kesinlikle tarafı sonsuz bir döngüye etkisi.
>> Ve bu nedenle bu tür durumlarda, konum Bu olacak terk edecek.
Ve biz başka eklemek için gidiyoruz Buraya terminal penceresi
Tabii değil artı ile bunun gibi, hala düşünüyor çünkü.
Ve en go ahead ve olalım Biraz daha makul.
>> Devam edin ve yapacağım Bu sadece sonlu birçok kez.
, En döngü için kullanmasına izin hangi Daha önce değinmiştir.
Bunu yapalım.
Bana i 0 alır başka değişken int ver.
Ben, en, i ++ 64 diyelim daha azdır.
Ve şimdi önde ve baskı gidelim n yüzde i dışarı n virgül.
Ve bu hala o n- sonsuza kadar sürecek.
Bunu yapalım.
>> n alır n kez 2.
Ya da fantezi olabilir ve süreleri 2 eşittir yapmak.
Ama sadece n diyelim 2 katı, kendisine eşittir.
Diğer bir deyişle, bu Programın yeni sürümü,
Sonsuza kadar beklemek istemiyorum gibi 800.000 4 milyar ila.
Sadece bu over alalım.
>> en doğrusu n her zaman çift edelim.
Hangi hatırlama, katlama olduğunu Elbette, sahip tersi.
Ve geçen hafta oysa biz bir şey tekrar ve tekrar,
ve yine, süper hızlı, iki katına mutlaka olacak
mümkün olan en büyük 1'den bizi Biz bir int ile karşı güvenebilirsiniz değer.
>> Yani tam olarak yapalım.
Ve biz uzun zaman önce buna geri geleceğiz.
Ama bu, yine, tıpkı bir Scratch içinde tekrar bloğu.
Ve uzun zaman önce bu kullanacağız.
>> Bu sadece sıfırdan sayısını ifade 64, ama eşit kadar.
Ve bu her tekrarında loop, sadece i artan tutmak.
Yani i ++ - ve bu genel yapı on line 7 sadece bir süper yaygın bir yoldur
arasında bazı çizgiler yinelenen Kod zamanlarda bazı sayı.
Hangi kod satırları?
Bu kaşlı, senin gibi Şimdi panoda olabilir,
Aşağıdakileri yapın anlamına gelir.
>> Sanki Scratch öyle, ne zaman sarı blokları vardır
ve diğer renkler o tür kucaklamak veya diğer blokları sarılmak.
Bu ne o kıvırcık var parantezi burada yapıyoruz.
Yani benim sözdizimi var ise tam-- sizi C araçlarındaki havuç sembolünü görebilirsiniz
Bu ben kaç kez var Bu sorunu çözmek için çalışıyor.
Yani o birinin kurtulmak izin tamamen ve bu pencereyi kapatın.
Ve biz yeni bir kullanırız.
taşma, nokta çizgi yapmak taşma girin, tamam,
ilk başta kötü görünüyor.
Ama zaman içinde geriye kaydırma izin, Ben bu 64 kere yaptım çünkü.
>> Ve ilk olarak fark, n 1.
İkinci kez, n 2'dir, daha sonra 4, sonra 8, sonra 16.
Ve en kısa sürede görünüyor Ben, kabaca 1 milyar olsun
Tekrar iki katına eğer, o Bana 2 milyar vermelidir.
Ama bu, çıkıyor kıyısındasınız doğru.
>> Ve böylece aslında taşmaları 1 milyar bir int
2 kabaca negatif milyar tam sayı için,
sayılar biz aksine Geçen hafta varsayarak,
pozitif ve negatif de olabilir Gerçekte bir bilgisayar.
Ve bu yüzden en az bir bit etkin bir şekilde çalınması.
Yani biz gerçekten sadece 31 bit var ya da 2 milyar olası değerler.
>> Ama şimdi, paket oldukça olduğunu sadece, ne olursa olsun bu numaralar
ve matematik, ne olursa olsun kötü bir şey, sonunda olur
Sonunda sen çalıştığınız çünkü bitleri bir çok kez permute.
Ve etkili tüm gitmek 1'lerin belki hepsi 0 kıyafetleri, ya da belki
sadece bazı diğer desen öyle açıkça, bağlama bağlı olarak,
negatif bir sayı olarak yorumlanabilir.
Ve böylece en yüksek I görünüyor Bu özel programda güvenebilirsiniz
Sadece kabaca 1 milyar olduğunu.
Ama burada kısmi bir çözüm var.
Biliyor musun?
>> Bana bir değiştirmek edelim Uzun uzun int.
Ve beni burada devam edelim ve ben gidiyorum açarsanız
imzasız uzun bunu değiştirmek için.
Ya da, kendimi hiç hatırlamıyorum, bakalım.
>> en go ahead ve taşma yapalım.
Hayır, öyle değil, EUE, teşekkür ederim.
Bu yüzden bazen Clang yararlı olabilir.
Ne biçimini hatırlamak vermedi belirleyicisi çok uzun oldu.
>> Ama, gerçekten, Clang söyledi.
Yeşil, iyi bir çeşit hala bir hata yaptığını ifade eder.
Ben LLD anlamına geldiğini tahmin ediyor.
>> Yani, bana bu bir tavsiye almak uzun bir izin Uzun ondalık sayı, o kaydedin.
Ve nokta, bana yeniden izin Girin taşması kesiyorsun.
Ve şimdi ne serin budur.
>> Ben zaman içinde geri gidin, biz hala başlangıç Aynı place-- sayma 1, 2, 4,
8, 16.
Uyarı, biz olsun tüm yol yukarı 1 milyar.
Ama sonra güvenle 2 milyar olsun.
>> Sonra 4 milyar olsun, Daha sonra 8 milyar, 17 milyar.
Ve biz daha gidin ve daha yükseğe ve daha da yükseğe.
Sonunda, bu da bozulur.
>> Sonunda, uzun uzun birlikte, 64-bit değeri değil, hangi
32-bit değeri, sen de sayarsan çok yüksek, etrafında 0 sarın.
Ve bu durumda, biz ne negatif bir sayı ile sonuna kadar.
>> Yani bu bir sorundur.
Ve bu çıkıyor Sorun bütün bu gizemli değildir.
Ben kasten ettik olsa Bu hataların ile uyarılan,
biz her türlü görmek çıkıyor Bizim, ya da bize en azından bazı etrafında yapmak.
>> Lego Star Wars, eğer öyleyse Hiç oyun oynadım,
Eğer etrafında gidebilir çıkıyor LEGO dünyasında şeyleri kırma,
ve esasen, paraları toplamaya.
Ve şimdiye kadar oynadım eğer Bu oyun çok fazla zaman,
Bu adsız birey olarak Burada, toplam sayı yaptı
toplayabilir sikke o, 4 milyar gibi görünüyor vardır.
>> Şimdi, birlikte aslında yuvarlak oluyor.
Yani LEGO çalışıyordu dost şeyler kullanıcıyı tutmak.
Onlar tam 2 yapmadım Geçen haftada 32 güç.
Ama 4 milyar sebebidir.
Bu bilgilere dayanarak, görünüyor, Bu LEGO ve şirket olduğunu
Bu gerçek bir yazılım yapılmış verdi Bu jeton sayısı
Kullanıcı birikebilir olan, gerçekten, 4000000000,
onların kodu seçtim çünkü görünüşe göre, uzun uzun değil kullanmak,
ama sadece bir tamsayı, işaretsiz bir kimin tamsayı, sadece bir pozitif tamsayı,
maksimum değeri o kabaca.
Eh, burada başka komik biri.
Oyun Medeniyet Yani hangi Size bazı tanıdık olabilir
yıllar önce orada çıkıyor Bu oyun bu sayede bir hata oldu
Eğer rol oynadı eğer Oyunda Gandhi'nin,
Onun yerine, çok pasifist olmak yerine inanılmaz, inanılmaz oldu
Agresif de bazı durumlarda.
Özellikle, yolu o Uygarlık eserler olduğunu eğer, oyuncu,
Demokrasiyi benimsemek senin saldırganlık puanı alır
İki, bu yüzden eksi indirildiği eksi ve ardından eksi eksi.
>> Yani gelen 2 çıkarma Gerçek ilerlerken.
Ne yazık ki, ilerlerken ise Başlangıçta 1 ve ondan 2 çıkarma
Demokrasiyi benimseyen sonra Burada belki Gandi olarak
o çok passive-- çünkü, yapmış saldırganlık ölçeğinde 1.
Ama o zaman, demokrasiyi benimser ise 1 ile negatif 1 gider.
>> Ne yazık ki, onlar imzasız numaralarını kullanarak,
bunun anlamı onlar bile olumsuz muamele sanki sayılar pozitif idi.
Ve o çıkıyor 1 negatif pozitif eşdeğer
Tipik bir bilgisayar programlarında, 255.
Gandi kabul Yani eğer demokrasi ve dolayısıyla var
Onun saldırganlık puanı azaldı, aslında 255 civarında rulo
ve onu en iyi şekilde Oyunda agresif karakter.
Yani bu kadar Google'dan bulabilirsin.
Ve, gerçekten, bir Kazara programlama hata,
ama bu oldukça girilen oluyor o zamandan beri irfan.
>> Yani tüm eğlence ve sevimli.
Daha korkutucu zaman gerçek olduğunu gerçek dünya cihazları, değil oyunları,
bu aynı hatalar var.
Aslında, sadece bir yıl önce bir makale geldi Boeing 787 Dreamliner hakkında.
>> Ve ilk başta makale bakışta biraz Arcane okur.
Ancak söz konusu bu bir yazılım Boeing en güvenlik açığı
Yeni 787 Dreamliner jet vardır Potansiyel pilotlar neden
kontrolünü kaybetmek uçak, muhtemelen
Uçuş ortasında, FAA yetkilileri Son zamanlarda uyardı havayolları.
Bu belirleme oldu Bu model 787
açıldıktan uçak sürekli için 248 gün
tüm alternatif akım kaybedebilir, AC, jeneratörüne bağlı elektrik gücü
Kontrol ünitesi, GCUs, eş zamanlı olarak girmeden güvenli mod başarısız.
Beni kaybetme türüdür.
Ama not Tamam, şimdi ben aldım, ifade, koşulu yazılımların neden olduğu
iç sayaç jeneratör kontrol
sonra taşma birimleri sürekli güç 248 gündür.
Biz bu yayımlıyoruz kaybını önlemek için fark
her AC elektrik neden olabilir güç,
uçağın kontrolünün kaybedilmesine.
>> Yani, kelimenin tam anlamıyla, bazı tamsayı var, ya da bazı eşdeğer veri türü,
yazılımında kullanılan gerçek bir uçağın içinde
Eğer uçak tutarsanız o hangi görünüşe göre, yeterince uzun üzerinde
Sadece çalıştırıyorsanız durumda olabilir onları sürekli ve asla prizden
senin uçak, öyle görünüyor ki, ya da pillerini ölmesine izin,
Sonunda up saymak ve olacak, ve yukarı ve yukarı ve yukarı ve yukarı.
>> Ve, doğası gereği, bir bellek sınırlı miktarda
, Taşma geri dönme olacak sıfır veya bazı negatif değer,
bir yan etkisidir frighteningly gerçek gerçeklik
düzlem ihtiyaç duyabileceği yeniden başlatılması için etkili,
veya daha kötüsü düşebilir, bu uçar gibi.
sorunların Yani bu tür hala bizimle birlikte olan,
even-- bu, 2015 yılında makale oldu daha korkutucu
Eğer ille ne zaman Anlamak takdir veya tahmin
hataları bu tür.
>> Yani diğeri var çıkıyor veri gösterimi hakkında kötü bir şey.
Hatta yüzen olduğunu çıkıyor tür kusurlu, yüzen, çünkü çok
Ben 32 bit olan önerdi, ya da belki 64 çift kullanıyorsanız.
Ama bu yine de sonlu olduğunu.
>> Ve yakalamak olduğunu eğer o sayıların sonsuz sayıda koymak
ondalık noktadan sonra, Hiçbir yolu yoktur
Tüm olası temsil bize öğretildiği numaralar
sınıfta okul dünyada var olabilir.
Bir bilgisayar, esas olarak, zorundadır bu numaraları bir alt kümesini seçin
doğru temsil etmek.
>> Şimdi, bilgisayar olabilir yuvarlak belki biraz,
ve kabaca saklamak için izin verebilir belki isteyebileceğiniz herhangi bir sayı.
Ama sezgisel, eğer bit sınırlı bir sayıda,
Sadece bunları permute olabilir çok sonlu yönden.
Yani muhtemelen olamaz sonlu sayıdaki
bit permütasyonu bölgesinin sıfırlar ve olanları desenleri,
sonsuz temsil etmek sayılar,
hangi bilgisayarların olabilir düşündürmektedir çok iyi bazen bize yalan olabilir.
>> Aslında, hadi yapalım.
Bana CS50 IDE içine dönelim.
Beni devam edelim ve küçük bir program oluşturmak
göstermek için, Tutarsızlık adı bilgisayarlar, gerçekten, kesin vardır.
>> Ve beni go ahead ve ile başlayalım önce o kodun bazı
ve şimdi sadece aşağıdakileri yapın.
Beni devam edin ve printf, yüzde yapalım f, 10 bölü ters bölü n, 1.
Başka bir deyişle, en derin dalış izin 1/10 gibi 1 ve 10 bölü için.
Şüphesiz, bir bilgisayar 1/10 temsil edebilir.
>> O yüzden devam edin ve belirsizlik yapalım.
Bakalım.
Biçim çift tipi belirtir.
Ama tartışma türü int vardır.
Neler oluyor?
>> Ah, ilginç, bu yüzden bir var ders öncesi öğrendim.
Hey, bilgisayar gösterisi, söylüyorum Bana yüzde f bir şamandıra.
Ama ben bunu 2 ints veriyorum.
çıkıyor Yani, düzeltebilirim yollarla bir çift bu.
>> Ben sadece 1.0 içine bir dönüş ve olabilir 10.0 içine 10, hangi olur, gerçekten de,
dönüştürme etkisi floats-- içine onları hala umarım
Aynı numara.
bir şey var dışarı ya da döner biz uzun zaman önce tekrar göreceğiz.
Numaraları düşürebilir.
>> Sen, bu parantez kullanarak yapabilirsiniz ifadesi, sen diyebilirsiniz
Hey, bilgisayar, bunu al Biliyorum 10, bir int.
Ama, lütfen tedavi sanki bir şamandıra var.
Ama bu gereksiz yere karmaşık hissediyor.
>> Bizim amaçlarımız için bugün, Sadece tam anlamıyla atalım
Onları kayan nokta değeri yapmak Böyle bir ondalık noktasının ile.
Beni devam edelim ve yeniden çalıştırın, yapmak belirsizlik, iyi, nokta çizgi
belirsizlik, girin.
Tamam, biz iyi arıyoruz.
>> 1 'e göre, 10 ile ayrılır, benim Burada Mac, gerçekten, 0.100000 olduğunu.
Şimdi, ben orada ilkokulda öğretildi 0 's sonsuz sayıda olmalıdır.
Yani en azından deneyelim Bunlardan bazılarını görmek için.
Bu printf biraz olduğu ortaya çıktı Biz kullanarak oldum daha meraklısı hala.
Bu belirtmek zorunda değilsiniz çıkıyor sadece yüzde f, ya da sadece yüzde i.
Aslında belirtebilirsiniz Burada bazı kontrol seçenekleri.
>> Özellikle, ben gidiyorum demek, hey, printf,
aslında bana 10 ondalık noktalarını gösterir.
Bu yüzden biraz garip görünüyor.
Ama yüzde söylemek, nokta, kaç sayı
Eğer sonra görmek istiyorum ondalık nokta ve ardından f
Düz için, o sırf dokümantasyon ne diyor.
Beni devam edin ve bu kurtaralım.
>> Ve ben alıyorum, çok fark şeyleri yeniden yazmak yorgun.
Yani sadece yukarı ayarlıyorum ve Burada benim tuşlar üzerinde ok.
Ve ben isabet devam edersen, sen komutların tümünü görebilirsiniz
Bu yaptığım veya yanlış yapılmış.
>> Ve ben şimdi önde gidiyorum ve aslında görünüşe göre, bunu kullanın.
belirsizlik, nokta yapmak böylece imprecision-- çizgi
ne öğretildiği ilkokul denetler.
Ben 10 ondalık yazdırmak bile yerleştirir, gerçekten, 0,10000 olduğunu.
Ama ne biliyor musunuz?
>> Hadi biraz açgözlü dönelim.
Bana 55 göstermek, en gibi, diyelim ondalık sonra işaret ediyor.
en çok bu atalım bir spin için dışarı programlayın.
Bana make ile yeniden edelim belirsizlik, nokta çizgi, tutarsızlık.
>> Ve işte başlıyoruz.
Çocukluk bir yalandı.
Görünüşe göre, 10 bölü 1 gerçekten de 0.100000000000000005551115123--
>> Ne oluyor?
Peki, bu eğer tür çıkıyor Altta yatan dışarı yeterince bakmak
Bu temsili sayısı, aslında
tam olarak 1/10 veya 0.1 ve bir sıfır sonsuz sayıda.
Şimdi, neden?
>> Peki, bu basit olsa bile Bizim insanlara sayı, 1, 10 bölü
hala sonsuz sayıda biri sayılar biz düşünebildiğim.
Ama bilgisayar yalnızca temsil edebilir sonlu sayıda bu yüzden sayılar.
Ve böylece etkili ne bilgisayar bize en yakın olan gösteriyor
numaraya yaklaşım Biz 1/10 inanmak istiyorum
ya da gerçekten 0,10000 sonsuza.
>> Aksine, olsa da, bu o alabilirsiniz olduğunca yakın.
Ve, gerçekten, eğer bakarsanız Kaputun altında,
biz bakarak burada olduğu gibi ondalık sonra 55 hane,
biz aslında gerçeği görüyoruz.
Şimdi ettik bir kenara olarak, eğer Hiç movie-- görüldü
Çoğunuz muhtemelen haven't-- ancak Superman 3 Birkaç yıl önce,
Richard Pryor esasen bu kaldıraçlı onun şirket gerçeklik çok çalmak
peni fraksiyonlarının ve kısımların, Hatırladığım kadarıyla company-- çünkü
Bu esas olarak while-- bir oldu bir şey uzağa atma uymayan
cent kavramı içine.
>> Ama eklerseniz tüm bu Yine küçük, minik, minik sayılar,
ve tekrar ve tekrar, sen gibi, can davası, para iyi bir miktar yapmak.
>> Aynı fikri ile yırtık Şimdi eski hala daha yeni bir, ama
Office Space adı verilen film, nerede o filmde çocuklar,
Aynı şeyi yaptı o berbat Tamamen, çok fazla yol ile sona erdi
kendi banka hesabına para.
Hepsi çok şüpheli oldu.
Ama günün sonunda, belirsizlik hepimizin civarındadır.
>> Ve bu da olabilir, davayı frighteningly.
Bu çıkıyor o Superman 3 ve Office Space kenara orada
Bazı çok gerçek olabilir Dünya yansımaları
imprecise gerçekleri veri temsili
bile biz insanların etmek Bu gün mutlaka yapmak
de biz gerektiği gibi anlamak ya da sık gerektiği gibi hatırlıyorum.
Ve, gerçekten, şu klip bazı çok gerçek dünya bir bakıştan
eğer ne olur yansımaları belirsizlik takdir kalmamasıdır
sayılar temsil olabilir.
>> [VİDEO OYNATMA]
>> -Bilgisayar, Hepimiz kabul etmek geldim genellikle sinir bozucu sorunlar olduğunu
, Them-- hata ile virüsleri gitmek, ve yazılım hataları,
küçük fiyatlar ödemek için kolaylık için.
Ancak yüksek teknoloji ve yüksek hızda askeri ve uzay programı uygulamaları,
En küçük sorun olabilir felakete büyütülecek.
>> 4 Haziran 1996 tarihinde, bilim adamları hazırladı insansız Ariane 5 roket başlatmak için.
Bu bilimsel taşıyordu uydular tasarlanmış
tam olarak nasıl kurmak Dünya'nın manyetik alanı etkileşime girdiği
Güneş rüzgarlar ile.
roket için inşa edildi Avrupa Uzay Ajansı,
ve tesisten kaldırdı Fransız Guyanası kıyısında.
>> içine yaklaşık 37 saniye -En Uçuş, ilk
fark şeylerin yanlış gidiyordu.
memeleri de döner edildi bir yol onlar gerçekten olmamalıdır.
uçuş içine 40 saniye civarında, açıkça, araç başı dertte idi.
>> yaptıkları Ve o bir karar onu yok etmek.
aralık güvenlik görevlisi ile muazzam bağırsaklar, düğmeye bastı,
o olabilir önce, roket havaya uçurdu kamu güvenliği için bir tehlike haline gelir.
>> -Bu Kızlık oldu Ariane 5 sefer.
Ve yıkım aldı bir kusur nedeniyle koyun
Roketin yazılımında gömülü.
Ariane üzerinde -the sorun oldu bir sayı olduğu bu
ifade etmek 64 bit gerekli.
Ve onlar dönüştürmek istedi 16-bitlik bir sayı için bu.
Onlar kabul olduğunu numara asla gidiyordu
Çok büyük olması olanların çoğu o 64-bit sayısı rakam sıfır oldu.
Onlar yanıldılar.
>> bir alınmış yetersizlik Yazılım programı kabul etmek
tarafından üretilen sayıda tür Başka bir başarısızlık kökünde oldu.
Yazılım geliştirme olmuştu bir yeni teknoloji çok pahalı bir parçası.
Ariane roketi çok olmuştur yazılım, başarılı çok
Ayrıca olduğu için oluşturulan Ariane 5 olarak kullanılır.
>> -The Temel sorun Ariane oldu 5, daha hızlıydı hızlı hızlandırdı.
Ve yazılım yoktu Bunun için sorumluydu.
>> roket alınmış yıkım büyük bir mali felaket oldu
Kusura bir dakika yazılım hatası.
Ama bu ilk değildi zamanlı veri dönüştürme sorunları
Modern roket teknolojisini musallat etmişti.
>> başlaması ile birlikte, 1991 -In Birinci Körfez Savaşı,
Patriot Füze benzer bir tür deneyimli
sayı dönüştürme sorunu.
Sonuç olarak da, 28 kişi, 28 Amerikan askeri,
öldürüldü ve yaklaşık edildi 100 diğerleri yaralandı,
zaman gerekiyordu Patriot, Gelen Scuds karşı korumak için,
bir füze ateş başarısız oldu.
>> -Ne Zaman Irak Kuveyt'i ve Amerika'yı istila Erken 1991 yılında Çöl Fırtınası başlattı
Patriot Füze piller konuşlandırıldı Suudi Arabistan ve İsrail'i korumak için
Irak Scud füze saldırılarına karşı.
Patriot ABD orta menzilli olduğunu hava sistemine yüzey imal
Raytheon şirketi tarafından.
>> Patriot interceptor alınmış boyutu kendisi hakkında kabaca 20 feet uzunluğunda.
Ve yaklaşık 2.000 £ ağırlığındadır.
Ve bu, yaklaşık bir savaş başlığı taşıyan Ben yaklaşık 150 lira olduğunu düşünüyorum.
Ve savaş başlığı kendisidir yüksek patlayıcı, hangi
etrafında fragmanları yer alır.
savaş başlığı gövde olduğunu buckshot gibi davranacak şekilde tasarlanmıştır.
>> -The Füzeler yapılır konteyner başına dört,
ve yarı römork tarafından taşınır.
>> -The Patriot füze sistemi şimdi en az 20 yıl geriye gider.
Başlangıçta dizayn edilmiştir Bir hava savunma füze olarak
düşman uçakları vurmaya.
Birinci Körfez Savaşı'nda, savaş boyunca geldiğinde,
Ordu için kullanmak istedim Scuds değil, uçaklar vurmaya.
>> Irak Hava Kuvvetleri oldu Bir sorun değil çok.
Ama Ordu Scuds endişe edildi.
Ve böylece çalıştı Patriot yükseltin.
>> bir düşman -Intercepting füze mach 5 de seyahat
yeterince zor olacaktı.
Ama ne zaman Patriot hizmete koştu,
Ordu bir farkında değildi yapılan Irak değişiklik
kendi scuds vurmak neredeyse imkansız.
>> Ne oldu scuds olduğu geliyordu kararsız idi.
Onlar wobbling bulundu.
Bunun nedeni oldu sipariş Iraklılar,
600 kilometre almak için 300 kilometre dışına
menzilli füze, kilo aldı Ön savaş başlığının dışarı.
Onlar savaş başlığı çakmak yaptı.
>> Şimdi Patriot olduğunu Scud gelmek için çalışıyorum.
Ve çoğu zaman, zaman ezici çoğunluğu,
Sadece Scud tarafından uçmak.
Patriot sistemi operatörleri kez Patriot hedefini kaçırmış fark
Onlar Patriot'ın savaş başlığı patlatıldı Bunun mümkünse kayıpları önlemek için
yere düşmesine izin verildi.
>> Çoğu insan ne gördüm -Bu oldu Gökyüzündeki o büyük fireballs,
gibi yanlış Scud savaş başlığı yakaladığını.
>> Gece -Although gökyüzü, Patriots çıktı
başarılı olduğu Dhahran de, Scuds yok,
Hiçbir hata olabilir onun performansı hakkında.
Orada, Patriot radar sistemi Gelen Scud izini kaybettik,
nedeniyle başlatılan asla Bir yazılım kusur.
İlk keşfedilen İsraillileri oldu uzun sistem üzerinde olduğunu,
daha zaman tutarsızlık nedeniyle gömülü bir saatin haline geldi
Sistemin bilgisayar.
>> -Yaklaşık Iki hafta önce Dhahran'daki trajedi,
İsrailliler bildirildi Savunma Bakanlığı
Bu sistem saatini kaybediyor.
yaklaşık sekiz saat ya da çalışan sonra, sisteme fark
fark daha az hassas hale geliyordu.
Savunma Bakanlığı yanıt verdi Patriot pillerin tüm söylüyorum
sistemlerini terk etmek Uzun bir süre için.
Onlar ne uzun zaman söylemedim Ben-- sekiz saat, 10 saat, 1000 saat.
Kimse biliyordu.
>> -The Patriot batarya kışlasında konuşlanmış
Dhahran ve kusurlu iç at 100 saatten fazla saat olmuştu
25 Şubat gecesi.
>> -Bu Doğrulukla zaman paletli Bir saniyenin onda biri hakkında.
Bir saniyenin Şimdi, onda ilginç bir sayıdır,
Bu ifade edilemez, çünkü Tam ikili hangi
tam olarak ifade edilemez anlamına gelir Herhangi bir modern bir dijital bilgisayar.
İnanması zor.
>> Ama bir örnek olarak kullanabilirsiniz.
numaralı üçte birini ele alalım.
Bir üçüncü olamaz Tam ondalık olarak ifade edilmiştir.
Üçte biri 0.333 olduğunu sonsuzluğa için devam.
>> ile bunu yapmak için hiçbir yolu yoktur ondalık mutlak doğruluk.
Bu sorunun tam tür Bu Patriot oldu.
uzun sistem koştu kötü zamanı hatası oldu.
>> 100 saatlik bir sonra-, zamanında hata yalnızca üçte biri oldu
Saniyenin.
Ancak, bir hedefleme bakımından füze mach 5 de seyahat,
Bir izleme sonuçlandı 600 metre hata.
Bu ölümcül bir hata olur Neye askerler için
oldu bir Scud başlatmak oldu Erken Uyarı uyduları tarafından tespit
ve onlar Scud olduğunu biliyordu genel yönde gelen.
önümüzdeki nereye onlar bilmiyordu.
>> -Bu Radara kadar şimdi oldu Patriot sistemi bileşeni
Dhahran savunan bulmak ve tutmak için Gelen düşman füze iz.
>> -The Radar çok akıllı.
Aslında izlemeyi tercih Scud pozisyonu,
ve sonra nerede muhtemelen tahmin Radar gönderilen bir dahaki sefere olur
dışarı darbe.
Bu bir dizi kapısı denirdi.
>> -O Zaman, Patriot kez yeterli zaman vardır karar
Geri dönüp bir sonraki kontrol etmek için geçti Bu tespit nesne için konum,
geri gider.
Bu yüzden yanlış döndü zaman yer, o zaman hiçbir nesne görür.
Ve hiçbir olduğunu karar Nesne, bu yanlış bir algılama oldu,
ve parça düşer.
>> -The Gelen Scud kayboldu radar ekranından.
Ve saniye sonra, onu kışlaya çarptı.
Scud 28 öldürdü, ve son olarak bir ilk Körfez Savaşı sırasında ateş etti.
>> Trajik, güncellenmiş yazılım ertesi gün Dhahran geldi.
Yazılım kusur vardı edilmiş sabit kapatma
sorunlu bir bölüm Patriot füze tarihçesi.
>> [VİDEO OYNATMA]
DAVID J. MALAN: Yani bu bütün olduğunu demek taşması bu konularda o
ve belirsizlik çok daha gerçek.
Peki buraya?
Biz sadece printf bahsediyoruz ile başladı.
Yine, bu işlev o , Ekrana bir şeyler yazdırır
ve biz bundan sonra ortaya bir kaç başka fonksiyonlar
Sözde CS50 kitaplığından.
Ve biz devam edeceğiz zamanında bu bkz.
Ve biz, özellikle, olsun dizesini kullanılan ve int almak ve şimdi de float almak,
ve henüz diğerleri hala biz karşılaşacak ve çok geçmeden kendimizi kullanın.
>> Ama zaman zaman, var Biz zaten bir ihtiyaç görülen
Neleri geriye bu fonksiyonlar eli saklamak için?
Onlar bize geri bir dize el, bir int, ya da bir şamandıra veya.
Ve bazen bu koymak gerekiyor bir yerde dize veya int veya şamandıra.
>> Ve bu şeyleri saklamak için, sadece hatırlama Scratch gibi, biz değişkenleri var.
Ama Scratch aksine, C biz gerçek türleri
variables-- veri türleri, daha çok generally--
Aralarında, bir dize, bir int bir yüzer ve hala bu diğerleri.
>> Ve bu yüzden C değişkenleri bildirmek zaman, bizim veri türlerini bildirmek gerekir.
Bu yaparız bir şey değil dönem sonra yapmak zorunda
gibi diğer dillere geçiş.
Ama şimdi, biz ihtiyacımız var Önceden bir priori için,
bilgisayara ne tür açıklamak değişkenin biz bize vermek istiyoruz.
>> Şimdi, bu arada, yazdırmak için veri türleri bu tür,
Biz söylemek ne printf var.
Ve biz, yaylı çalgılar için yüzde s gördüm ve tamsayılar için yüzde i
Zaten ve birkaç diğerleri.
Ve bu sadece gereksinimleri Görsel sunum için
bu bilginin.
>> Ve bunların her biri aslında olabilir parametrize ya da bir şekilde tweaked,
Eğer daha fazla kontrol istiyorsanız Alacağınız çıktı türü.
Ve aslında, bu sadece çıkıyor yeni bir hat eğik n vardır.
Başka bir eğik denilen bir şey var bir satır başı, r olan
Bir daha yakındır eski okul daktilo,
ve ayrıca Windows yıllardır kullanılmaktadır.
>> sekmeler için ters eğik çizgi t var.
isterseniz o çıkıyor Bir dize içinde çift tırnak,
kullandığımız hatırlama çift ​​tırnak çift
sol ve sağ alıntı Bugüne kadar bizim dizeleri sona erer.
Şeyleri şaşırtmak gibi görünüyor.
>> Eğer bir çift tırnak koymak isterseniz Gerçekten de, bir string-- ve orta
bunu görmek kafa karıştırıcı.
Ve böylece bu yüzden, kaçmak zorunda , Bir şey ile bir çift tırnak konuşmak
gibi, kelimenin tam anlamıyla, çift tırnak karakterler.
Ve hala birkaç diğer var.
Ve biz onlardan daha çok göreceksiniz uzun zaman önce gerçek kullanımda.
>> Yani şimdi geçiş izin veri ve temsil,
ve aritmetik operatörler, bütün hangi bize bazı bina verdi
bloklar oynamak için.
Ama şimdi en doğrusu verelim Bize kelime kalan
Daha önce olduğu Scratch ile geçen hafta
diğer bazı göz alarak C- içinde yapıları hepsi değil.
Ama fikirler we ' Gerçekten sadece görmek için yaklaşık
dan çeviri vurgulamak bir dil, Scratch, başka C.
>> Ve zamanla, biz alırım Bizim araç için daha fazla araç,
yani sözdizimsel, konuşmak için.
Ve, gerçekten, fikirler olduğunu göreceksiniz Şimdi geçen hafta oldukça tanıdık.
Yani bu yapalım.
>> Devam edelim ve bir program kamçılamak edelim aslında bazı ifadeler kullanır,
Bir Boole ifadesi.
Beni burada devam edelim ve yeni bir dosya oluşturun.
Bu condition.c arayacağım.
>> Beni devam edelim ve CS50 kütüphane yer almaktadır.
Ve beni go ahead ve eklemenize izin Bizim fonksiyonlar için standart io.h,
ve printf ve daha saptanmıştır.
Beni kendime o klişe vereyim kimin açıklama yaparız int void main,
geri gelecekte geliyor.
>> Şimdi bana devam et ve vereyim Kendimi olsun int üzerinden bir int.
Sonra beni go ahead ve bu yapalım.
Ben haydi less-- olup olmadığını söylemek istiyorum Negatif, pozitif ayırt,
veya sıfır değerleri.
>> Ben sıfırdan küçükse, bu yüzden bana izin Sadece bu program sadece söylemek zorunda,
negatif, ters eğik çizgi n, başka i, sıfır daha büyük ise.
Şimdi, tabii, söylemek için gidiyorum Pozitif, ters eğik n printf.
Ve sonra başka ben bu yapabileceğini eğer--.
>> i 0 eşitse yapabilirdim.
Ama ben yapmak olurdu Zaten en az bir hata.
eşittir işareti olduğunu hatırlayın eşit değildir, biz insanlar bildiğimiz gibi.
>> Ama bu atama operatörü var.
Ve biz 0 almak istemiyorum Sağ ve soldaki i koydu.
Yani bu karışıklığı önlemek, ya da belki de eşittir kötüye imzalamak,
İnsanlar birkaç yıl önce karar birçok programlama dilinde
Eğer eşitlik kontrol etmek istediğinizde sol ve sağ arasında,
aslında eşittir eşittir kullanın.
Yani eşittir iki kez oturum çarptı.
Eğer sağ kanattan atamak istediğiniz zaman sola, tek bir eşittir işareti kullanın.
Bu yüzden paha başka yapabileceği Ben eşitse sıfıra eşit.
>> Sonra gidebiliriz Benim küme parantezi açmak
ve printf 0, ters eğik çizgi n, bitmiş, demek.
Ama nasıl bu hatırlıyorum yol çatal çalışabilir.
Ve, gerçekten, sadece mantık düşün.
Bir sayıdır.
Bu özel olarak ise, bir tam sayı.
Ve daha az olacak demektir 0 veya 0'dan 0 veya daha fazla.
Yani bu tür var zımni varsayılan durumda.
>> Ve böylece biz, tıpkı olabilir Çizilmeye, else if vazgeçmek
ve hemen hemen her söylüyorlar.
Mantıken, eğer programcı orada sadece biliyorum
Üç kovalar hangi bir içine Senaryo birinci fall-- olabilir
İkinci ya da üçüncü Bu yok yani mevcut
Ek hassasiyet ekleyerek rahatsız ve burada ek mantık.
Sadece ile devam Burada başka varsayılan durumda.
>> Şimdi, devam edelim Bu kaydettikten sonra, yapmak
koşullar conditions-- çizgi nokta değil büyük bir kullanıcı arayüzü,
Ben sormadan değilim çünkü Kullanıcı daha önce bahsettiğim gibi.
Ama bu sorun değil.
Biz basit tutmak gerekir.
numarasını 42 deneyelim.
Ve bu pozitif.
numarasını deneyelim negatif, 42 negatif.
>> değerini 0 deneyelim.
Ve gerçekten de işe yarıyor.
Şimdi, daha önce sorunları ile göreceksiniz Uzun, test şeyler üç kez,
Muhtemelen yeterli değildir.
Muhtemelen bazılarını test etmek isteyebilirsiniz Büyük sayılar, bazı küçük
sayılar, bazı köşe durumlarda, olarak Biz bunları açıklamak için geleceğiz.
>> Ama şimdi, bu bir Oldukça basit bir program.
Ve ben, mantıklı, eminim üç olguda içine düştüğü.
Ve, gerçekten, hatta biz bile sadece Potansiyel downsides üzerinde duruldu
tutarsızlığın ve taşması, içinde CS50 sorunları birçok gerçeklik nerede,
Biz endişe gitmiyor her zaman, ilgili,
taşma bu konular ve belirsizlik nedeniyle, aslında, C,
aslında tüm olmadığını Bunları önlemek için kolay.
Eğer saymak istiyorsanız Daha büyük ve daha büyük ve daha büyük,
bu teknikler vardır çıkıyor genellikle denilen şeyler içeren kullanabilirsiniz
kütüphaneler, kod koleksiyonları, o kullanabileceğiniz diğer insanlar yazdı
gibi ve diğer diller aslında Java ve diğerleri,
çok daha kolay hale daha yüksek saymak.
Bu yüzden gerçekten bu tehlikeleri bazı olduğunu Kullandığınız dilin bir fonksiyonudur.
Ve önümüzdeki haftalarda, yaparız gerçekten ne kadar tehlikeli C bakın
Eğer düzgün kullanmak istemiyorsanız olabilir.
Ama oradan, ile Python ve JavaScript, olacak
Biz bazı ek korumaları üzerinde tabaka, ve bu risklerin daha az çalışır.
>> Yani yapalım biraz daha Bizim programda ilginç bir mantık.
Bu yüzden bana go ahead ve oluşturmanıza izin Mantıksal olarak adlandırılan bir program
sadece bu yüzden bazı ile oynayabilirsiniz Gerçek mantık, logical.c.
Ben sadece kopyalayıp yapıştırın bazı edeceğiz Daha önce bu yüzden kod geri almak
Bu güzel başlangıç ​​noktasına.
>> Ben Char C yapmak bana bu sefer edelim o C'lik bir isim vereceğim
geleneksel sırf, kullanıcıdan bir karakter olsun.
Ve en gibi farz edelim Ben bir kısmını uygulamak ediyorum
Bu Rm programı, kaldır Daha önce programı kullanıcı istenir
Bir dosyayı kaldırmak için.
Bunu nasıl yapabiliriz?
>> C eşitse ben söylemek istiyorum Alıntı unquote, eşittir
y o zaman kabul edeceğim Kullanıcı evet seçtiği bildirildi.
Ben sadece evet yazdırmak için gidiyorum.
aslında yazma olsaydı kaldırma programı,
Biz dosyasını kaldırmak olabilir kod daha hatları.
Ama biz basit tutmak gerekir.
>> Başka c eşitse n- eşittir ve şimdi burada, ben söylemek için gidiyorum
Kullanıcının demek gerekir.
Ve sonra başka, biliyor musun?
Ben başka ne bilmiyorum Kullanıcı yazın gidiyor.
Yani sadece söylemek için gidiyorum Bu bir hata, ne olursa olsun
o aslında yazdınız.
>> Peki burada neler oluyor?
temel bir fark vardır Ben geçmişte ne yaptık karşı.
Çift tırnak, çift tırnak, çift tırnak ve henüz, tek tırnak,
tek tırnak.
Bu zaman o, C çıkıyor Bir dize yazmak istiyorum,
Eğer biz ettik gibi, çift tırnak kullanımı yapmak printf ile tüm bu kez kullanıyorum.
>> Ama sadece bir ile uğraşmak istiyorsanız tek bir karakter, bir sözde karakter,
o zaman aslında tek tırnak kullanın.
programlanmış ettik olanlarınız önce, sahip olmayabilir
Bu konuda endişe vardı Bazı dillerde ayrım.
C, fark eder.
Ben bir char almak ve zaman ve bu yüzden istiyorum eşittir kullanarak bu kömürü karşılaştırmak için
y veya n gibi bazı mektuba eşittir, yapmam, Gerçekten, tek tırnak olması gerekir.
>> Şimdi, go ahead ve bu yapalım.
en go ahead ve yapabilirim edelim Mantıksal nokta mantıklı kesiyorsun.
Ve şimdi ben istendiğinde oluyorum.
Yani, muhtemelen, daha iyi bir kullanıcı deneyimi Aslında söyle ne burada yapılacak.
Ama sadece körü körüne gidiyorum güzel, tamam, evet için y söylüyorlar.
>> Tekrar çalışmasına izin, n hayır için güzel.
Biliyorum bazı insanlar gibi varsayalım, benim kapaklar tuş çok sık tüm üzerinde kilitleyin.
Bu yüzden, sermaye Y girin hata yapmak.
Tamam, ben bekliyorum tam olarak ne değil.
Gerçekten de, bilgisayar tam anlamıyla ne yapıyor
Ben kontrol sanıyor- bunu söyledim küçük y ve küçük n.
Bu iyi gibi gelmiyor kullanıcı deneyimi, gerçi.
Beni için soralım ve kabul küçük harf veya büyük harf ya.
çıkıyor Yani, isteyebilirsiniz Scratch gibi bir şey söylemek,
gibi tam anlamıyla veya C eşittir sermaye tek tırnaklı y eşittir.
çıkıyor C yok Bu değişmez anahtar sözcük ya da.
>> Ama iki dikey çubuk var.
Sen, genellikle Shift tutmak zorunda Bir ABD klavye kullanıyorsanız,
ve dikey direğe çarpıp dönüş tuşunun üstündeki tuş.
Ama bu dikey çubuk dikey çubuk anlamına gelir ya da.
>> Eğer, aksine, biz istedik Scratch gibi, demek ve,
Biz işareti işareti yapabilirdi.
Yani, burada hiçbir mantıklı mantıklı çünkü insan belki yapamadım
yazdığınız her ikisi de y ve küçük y ve aynı karakter olarak sermaye Y.
Yani ya da burada ne niyetinde.
>> Ben her iki yerde de bunu yaparsan, ya da c Yani Sermaye N, şimdi yeniden eşittir eşittir
Mantıklı mantıklı yeniden yapmak.
Şimdi, ben y yazabilirsiniz.
Ve ben tekrar yapabilirim sermaye Y veya sermaye N.
Ve ben ek eklemek olabilir Hala kombinasyonları.
>> Yani bu bir mantıksal şimdi ölçüde programı
Ben mantıksal kontrol ediyorum Bu değer ya da bu değer.
Ve ben, mutlaka gerekmez iki veya daha fazla IFS ya da başka IFS ile gelip.
Aslında bazı birleştirebilirsiniz Bu şekilde bir araya mantığı ile ilgili.
Yani bu daha iyi olurdu sadece daha tasarlanmış
C küçük harf y eşitse, diyerek, c sermaye Y eşitse başka, evet yazdırmak,
c eşitse başka, evet yazdırmak diğer bir deyişle lower--,
sahip olmak zorunda değilsiniz daha dalları.
Sen eşdeğer bazı birleştirebilirsiniz Bu şekilde olduğu gibi, mantıksal dalları.
>> Yani sadece bir göz atalım Nihai madde, bir final yapı,
Bu Cı sağlar.
Ve biz geri geleceğiz Hala başkalarına gelecek.
Ve sonra biz bakarak bitireceğim code-- değil doğruluğu de
kod alma work-- ama tasarımı kod ve erken bu tohumlarını ekmeye.
>> Bu yüzden bana devam edelim ve Burada yeni bir dosya açın.
Biliyor musun?
Ben tekrar uygulamak için gidiyorum Aynı program
ancak farklı bir yapı kullanılmıştır.
>> Yani kendimi vermek çabuk bana izin erişim CS50.h dahil
CS50 kütüphane, printf standart io.h.
Bana int main boşluğu verin.
Ve sonra buraya, let Beni devam edip bunu.
>> Char c hemen önce olduğu gibi, char, almak alır.
Ve yeni bir yapı kullanmak için gidiyorum Ne karakteri, geçiş şimdi--?
Yani anahtar tür gibi Bir tren parçaları anahtarlama.
Ya da, gerçekten bu tür bir Bir else if, else if eğer,
ama biraz farklı yazılı.
>> Bir anahtar, bu gibi görünüyor.
Sen anahtarı, ve sonra ne karakter veya bakmak istiyorum sayı,
sonra bazı kaşlı beğendiğiniz Çizilmeye, sadece bu şeyler söylüyorlar.
Ve sonra farklı bir vaka yok.
>> Sen if ve else kullanmayın.
Kelimenin tam anlamıyla kelime harf kullanın.
Ve böyle bir şey söyleyebilirim.
>> Bu yüzden, bir küçük y durumunda, veya sermaye-Y olması halinde,
devam edin ve evet çıktı.
Ve sonra anahtarın patlak.
Bu kadar.
Yapılmıştı.
>> tabiri caizse, else if, küçük harf n veya sermaye N,
Daha sonra devam edin ve baskı çıkış yok, ve sonra bölünürler.
Else-- ve bu tür Varsayılan durumda indeed-- printf error--
ve sadece olsa, iyi ölçmek için mantıksal bu mola gerekli değildir
Biz sonunda çünkü Neyse anahtarı,
Şimdi anahtarı dışarı bozuyorum.
Yani bu biraz farklı görünüyor.
>> Ama, mantıksal, öyle Aslında eşdeğer.
Ve neden kullanmak istiyorsunuz diğer üzerinden?
Bazen, sadece kişisel tercihi, Bazen estetik,
Ben bu bakıyorum eğer Şimdi, bir şey var
için söylenecek Bu kodun okunabilirliği.
Yani, bu gerçeği aldırma Kod odasında çoğumuz için yeni.
>> Ama sadece biraz güzel.
Sen, küçük y sermaye Y bkz küçük harf n, sermaye N varsayılan,
sadece tür atlar Bir şekilde size dışarı
belki, belki, o önceki örnek
IFS, ve dikey çubuklar ile, ve her IFS, olmayabilir.
Yani bu kişisel gerçekten bir konudur seçim, gerçekten, ya da okunabilirlik,
kod.
>> Ama işlevselliği açısından, bana izin devam edin ve bir anahtar, nokta çizgi yapmak
anahtar ve şimdi, küçük y yazın sermaye Y, küçük n, sermaye N,
çünkü o David, yeniden tek bir karakter.
beklendiği gibi kıyafetleri, x, hata yapalım.
Ve, logically-- ve bu şey Ben general-- bile teşvik edecek
Biz sadece çizilmeye olsan da Bu özelliklerin bazıları yüzey.
>> Ve bu apaçık olmayabilir sizi Kendinizi, klavyeye oturup
bu nasıl çalışıyor?
Bu ne yapardınız?
sahip hakkında güzel bir şey bir dizüstü veya masaüstü veya erişim
Bir derleyici ile bir bilgisayara, ve böyle bir kod editörü ile,
hemen hemen her zaman bu cevap verebilir bir Sadece deneyerek kendiniz için sorular.
>> Örneğin, retorik ise eldeki soru vardı,
Eğer unutursanız ne olur Kırık ifadeleri?
Hangi aslında Yapılacak şey çok yaygın,
o görünmüyor çünkü gibi gerçekten onlara ihtiyacımız var.
Onlar gerçekten tam değil senin Bir parantez veya kıvırcık gibi düşünce
bağ yapar.
en önde gidelim ve kodu yeniden derleyin ve gör.
Yani anahtarı, nokta çizgi anahtarı olun.
alt harf yazın edelim y üst durumda, girin.
Yani y yazdınız.
>> Program hayır, evet dedi, hata, sanki onun aklını değişiyordu.
ne olur çünkü Ama bu tür oldu Bir düğme ile ilk vaka olduğunu
maç esasen demek, hey bilgisayar, altındaki tüm kodu yürütmek.
Ve diyorsunuz yoksa sonu veya mola söyleme ya da mola söyleme,
Bilgisayar darbe gidiyor bu satırların üzerinden tüm
ve kadar hepsini yürütmek o küme ayracı alır.
Bu nedenle fren, gerçekten de gereklidir.
Ama burada bir paket, ne zaman olduğunu Şüphe, bir şey deneyin.
Belki ilk kodu kaydetmek, ya da ekstra dosyaya kaydetmek
Eğer gerçekten endişeli iseniz karışıklık ve kurtarmak zorunda
Bildiğiniz iş çalışıyor.
>> Ama şeyler denemek.
Ve belki de, hem korkma bilgisayar yapabilir ne,
ya bir şey kırmak olabilir.
Her zaman geri dönebilirsiniz Bazı önceki sürüme.
>> Yani bakarak bitirelim kodun tasarımı.
Biz yazma şimdi bu yetenek var koşullar ve yazma döngüler,
ve değişkenler, ve arama işlevleri.
Yani, açıkçası, biz geri de naziksiniz nerede, Scratch ile bir hafta önce vardı
daha az zorlayıcı metinsel olsa Sıfırdan daha çevre izin verir.
>> Ama biz elde ettik ne kadar hızlı olduğunu fark öyle olsa bile o kelime,
batmaya biraz zaman alacak, Şimdi bu kelimeleri kullanabilirsiniz, böylece
daha ilginç programlar yazmak için.
Ve en bebek adımı atalım Bu doğru, aşağıdaki gibi.
Beni devam edelim ve Burada yeni bir dosya oluşturun.
>> Ben bu çağıracağım prototype.c ve tanıtmak
İlk defa, becerisi Kendi fonksiyonları yapmak.
Bazılarınız olabilir Scratch ile bu yapılır,
bu sayede oluşturabilirsiniz senin Scratch içinde kendi özel bloklar,
ve daha sonra yerine sürükleyin her yerde C. istiyorum
Ve en programlama dil, tam olarak yapabilirsiniz
ki- kendi işlevlerini yapmak, onlar zaten yokmuş.
>> Yani, örneğin, ben önde gitmesine izin ve CS50.h içerir ve bunlar arasında
Standart io.h, int void main.
Ve şimdi bir var Gitmeye hazır tutucu.
Ben baskı şeyleri saklamak İnsanların isimleri bugün gibi.
Ve bu sanki şey hissediyor güzel olmaz eğer orada
Baskı adı adında bir işlevi vardı?
Ben printf kullanmak zorunda değilsiniz.
Ben hatırlamak zorunda değilsiniz Tüm biçim kodları.
Neden ben değil, ya da neden Önümde birini vermedi
Bir işlevi çağrılır baskı oluşturmak adı, bazı isim verilen,
basitçe yazdırır?
>> Başka bir deyişle, ben, hey, derseniz Bilgisayar, bana bir dize vermek
Böyle kullanıcıya sorarak, CS50 en olsun dize fonksiyonu ile.
Hey, bilgisayar, o dizeyi koymak Sol tarafta değişken,
ve s diyoruz.
Ve sonra, bilgisayar hey, go ahead ve kişinin adını, yapılması yazdırmak.
>> Şimdi, o güzel çünkü olurdu Bu program aptly adlı
bunu yapmak için gerekeni söyler Bu fonksiyon isimleri yoluyla.
beni ve prototip yapmak, girin bakalım.
Ve ne yazık ki, Bu sinek için gitmiyor.
>> Prototype.c, satır 7, karakter 5, hata, örtük beyanı
fonksiyon baskı adı C99, C99 geçersiz olduğu
C bir sürümünü anlamı 1999 yılında ortaya çıktı.
Bu kadar.
>> Yani bilmiyorum Tüm bu henüz anlamına gelir.
Ama kırmızı hatayı fark yok.
Bu oldukça açıktır.
>> Ve bu o görünüyor Burada yeşil karakteri,
Sorun baskı adıyla, açık parantez s, yakın parantez, noktalı virgül.
Ama örtük beyanı fonksiyonu kısaca erken gördün.
Bu durum, sadece, anlamına gelir Clang Ne demek istediğimi bilmiyor.
>> öyle ben bir kelime kelime kullandım görülen ya da daha önce öğretilen hiç.
Ve bu yüzden öğretmek gerekiyor Bu fonksiyon ne anlama geldiğini.
Bu yüzden devam edin ve bunu yapmak için gidiyorum.
>> Devam edin ve uygulamak için gidiyorum Baskı Adı denilen benim kendi işlevi.
aşağıdaki gibi Ve bunu, söylemek için gidiyorum Bu, printf, merhaba, yüzde yapar
s, ters eğik çizgi n, ad, noktalı virgül.
Yani sadece ne yaptım?
>> Yani için, çıkıyor Kendi işlevi uygulamak
biz tür bazı ödünç Ana aynı yapı
biz sadece been alınan için verilen ve ben
biliyorum sadece kopyalama ve hoş çok ne yapıştırarak
Geçmişte yazıyorum.
Ama burada desen dikkat edin.
Orta, Ana, Void, biz ayrı alay edeceğiz uzun zaman önce aslında ne anlama geldiğini.
>> Ama bugün için, sadece paralelliği dikkat edin.
Void, baskı adı, string name, bu yüzden var
mor anahtar kelime, hangi biz başlatmak için gidiyoruz
Bir dönüş türünü arayarak, ad fonksiyon ve ardından giriş.
Yani, aslında, biz damıtmak için gibi geçen hafta bu tür
Bu isim ya da olduğu gibi Biz konum kod algoritması
write-- gidiyor temel algoritma
kodu, yazmak için gidiyoruz.
>> Bu onun girişidir.
Bu onun çıkıştır.
Bu fonksiyon, baskı adıdır isim olarak adlandırılan bir dize almak için tasarlanmış,
ya da her neyse, girdi olarak, ve daha sonra boşluk.
Bu, hiçbir şey geri dönmez gibi dize almak ya da int yapar olsun.
Yani geri bana bir şey teslim edecek.
Sadece bir sahip olacak yan etkisi, tabiri caizse,
Bir kişinin adını yazdırma.
Bu yüzden, satır 7 fark Baskı adını arayabilirsiniz.
Hat 10, ben tanımlayabilirsiniz veya baskı adını uygulamak.
Ama ne yazık ki, bu yeterli değil.
>> Beni devam edelim ve kaydettikten sonra bu yeniden derleyin.
Hey, şimdi, bunu yaptık daha da kötüsü, bu gibi görünüyor.
Yani örtülü beyanı işlev baskı adı geçersiz.
Ve yine, daha hataları var.
Ama ben bile, daha önce uyardı olarak Eğer boğulmuş olsun,
ya da biraz üzgün çok görmek hatalar, ilk sadece odak
Başlangıçta, çünkü olabilir sadece Bir basamaklı etkisi vardı.
Daha özel olarak Cı veya Clang Yani hala baskı adını tanımıyor.
>> Ve çünkü Clang, var Tasarım gereği, tür aptal.
Sadece yapmanız söylemek yapar.
Ve sadece sırayla yapar hangi yapmak için bunu söylemek.
>> Bu yüzden, hat dört ana tanımladığınız gibi biz oldukça sık yapıyorum.
Line 10 Baskı adını tanımladık.
Ama kullanmaya çalışıyorum hat yedi baskı adı.
>> Çok yakında, henüz yok oluyor.
Yani zeki ve benzeri olabilir, Tamam, bu yüzden sadece birlikte oynayalım,
ve baskı adını taşımak Burada, ve yeniden derlemek.
Aman Tanrım.
İşe yaradı.
Bu kadar basit.
>> Ama mantık tam olarak bu.
Sen çınlama öğretmek zorunda ne ilk işlev tanımlayarak olduğunu.
Sonra kullanabilirsiniz.
Ama açıkçası, bu hissediyor kaygan bir eğim gibi.
>> Yani her zaman koşmak bir sorun haline, ben sadece
vurgulamak ve kodu kopyalayıp olacak Onu kesip buraya kadar yapıştırın yazdı.
Ve, elbette, biz olabilir Bazı senaryolar contrive
Nerede bir işlev olabilir Başka aramak gerekiyor.
Ve sen sadece her koyamazsınız her yukarıdaki fonksiyon.
>> Bu yüzden orada 's çıkıyor daha iyi bir çözüm.
Biz bu olabilir bırakabilirsiniz.
Ve açıkçası, o genellikle güzel ve uygun ve iyi tasarım
Çünkü, yine ilk ana koymak, Sadece yeşil bayrak tıklandığında gibi ana,
Bu fonksiyon olduğunu Varsayılan olarak çalıştırılmaktadır.
Yani siz de koymak olabilir dosyasının en üstünde o
böylece ya da herhangi bir zaman diğer insan dosyaya bakar
Eğer oluyor biliyor sadece ana ilk okuyarak.
çıkıyor Yani, biz çınlama söyleyebilirim proaktif, hey, Clang, dördüncü hatta,
Ben uygulamak için söz Bir işlevi çağrılır Yazdır
bir dize olarak adlandırılan adını alır Ad girdi ve döner hiçbir şey, geçersiz olarak.
Ve ben etrafında alırsınız daha sonra uygulanması.
>> İşte Ana geliyor.
Şimdi on line 9 kullanabilirsiniz ana Adı Yazdır nedeniyle Clang
Sonuç olarak, bu güvenmek, bu tanımı karşılaşacak
Baskı Adı uygulanması.
Yani benim dosyayı kaydettikten sonra, let Beni devam edin ve prototip yapmak,
Bu sefer iyi görünüyor.
Nokta prototip, let me, çizgi devam edin ve bir ad yazın.
David, merhaba David, Zamila, merhaba Zamila ve gerçekten, şimdi çalışıyor.
>> Yani burada bileşen biz ettik ki özel bir gibi özel bir işlev yaptı
Çizilmeye blok biz bunu diyorlar.
Ama Scratch aksine nerede yapabilirsiniz Sadece oluşturmak ve kullanmaya başlayabilirsiniz,
Şimdi biz olmak zorunda Daha bilgiçlik küçük
ve aslında çınlama tren kullanmak için, ya da bunu beklemek.
Şimdi, bir kenara, tüm bu zaman neden Biz de dahil olmak üzere inanç sadece körü körüne yapılmış
Standart io.h dahil CS50.h ve?
>> Eh, o çıkıyor, bir kaç başka şeylerin yanı sıra,
Bütün o nokta h var ne dosyalar, dosyalar olmak.
Onlar tabiri caizse, başlık dosyaları ediyoruz.
Onlar hala C ile yazılmış konum Ama Onlar dosyanın farklı türde bir konum.
>> Şimdilik, hemen hemen varsayabiliriz CS50.h içinde olduğunu tüm
Bu gibi bazı tek gömlekleri, değil Baskı Adı denilen fonksiyonlar için,
ancak dize Al, Al Şamandıra ve birkaç diğerleri.
Ve benzer prototipler vardır Standart io.h içinde bir gömlekleri,
şimdi printf için Kendi Adı Yazdır işlevi.
Yani diğer bir deyişle, tüm bu sefer biz ettik sadece körü körüne kopyalama ve yapıştırma edilmiş
arasında, bunlar aşağıdakileri O, ne oluyor?
Bu ipuçları sadece tür Ne fonksiyonlara olarak çınlama için
Gerçekten de, sadece uygulanan başka bir yerde farklı dosyalarda
başka bir yerde sistem üzerinde.
>> Bu yüzden baskı adını uyguladık.
Bu, bu yan etkisi var Ekranda bir şey baskı.
Ama aslında değil geri bana bir şey ver.
Biz yaklaşık gitmek nasıl bir program uyguluyor o
geri bana bir şey ver ki?
>> Eh, bunu deneyelim.
Beni go ahead ve uygulamak edelim Bir dosya adı verilen return.c
bu yüzden nasıl bir şey gösterebilen gibi dize alın veya Int alın,
Aslında dönen bir kullanıcıya geri bir şey.
en go ahead ve int main boşluğu tanımlayalım.
>> Ve yine, gelecekte, yaparız Bu int ve bu boşluğu ne olduğunu açıklamak
Aslında yapıyor.
Ama bugün için, yaparız hafife almak.
Ben, önde ve printf gideceğim iyi bir kullanıcı deneyimi için, x.
Ve sonra beklemek için gidiyorum Kullanıcı olsun int x vermek beni.
>> Ve sonra ben önde gidiyorum ve kareye x çıktı.
Yani sadece varken yaygın klavye, insanlar
küçük havuç kullanmak Klavyenin üzerindeki sembol
iktidara temsil etmek arasında, ya da üs.
Yani kare x i mevcuttur.
>> Ve şimdi bunu yapmak için gidiyorum.
Ben sadece x ne sanıyor- olabilir kare? x kare x kez x.
>> Ve yaptığımız bu bazı önce zaman zaten bugün.
Bu gibi gelmiyor tüm bu çok ilerleme.
Biliyor musun?
en bu fikri bazı kaldıraç edelim soyutlama son kez.
>> o eğer güzel olmaz mıydı adında bir işlev var
tam olarak bunu yapıyor kare?
sonunda hala, gün, aynı matematik yapar.
Ama soyut let alma uzakta fikri
bir numara ile çarpılır Başka ve sadece ona bir isim vermek,
gibi bu değeri kare.
>> Ve, bir başka deyişle, içinde C takımından bir işlevi oluşturmak izin
tam olarak bunu yapıyor denilen kare.
Kare çağrılacak gidiyor.
Bir int almaya gidiyor.
Ve yaparız sadece olacak Varsayılan olarak, n diyoruz.
>> Ama biz istediğiniz bir şey diyebiliriz.
Ve tüm bu gidiyor o kelimenin tam anlamıyla, dönüş yapmak
n kere n sonucu.
Ancak, çünkü Bir şey dönen hangi
biz ettik mor anahtar kelime asla line 11, daha önce görülen,
Sadece bu sefer geçersiz diyemeyiz.
>> Void, örnekte biz sadece gördüğümüz Baskı adının yerine, sadece anlamına gelir
bir şey yap.
Ama geri bana bir şey teslim yok.
Bu durumda, ben istiyorum n kat n geri dönmek için,
ya da ne olursa olsun, bu sayı.
>> Yani diyemeyiz, hey, bilgisayar, Ben geçersiz, hiçbir şey geri döner.
Doğası gereği, bir int dönmek için gidiyor.
Ve böylece burada oluyor hepsi bu.
>> giriş kare int olacak.
bunu kullanabilirsiniz, böylece ve bu vardır Bir isim var, N. çıkışını gidiyor
Bir isim gerek olmayan bir int.
Biz ana kadar bırakabilirsiniz, ya da kim olduğunu Beni kullanarak biz bu değeri hatırlamak
Kendi değişkeni ile istiyorum.
>> Ve yine, yalnızca yeni Burada anahtar kelime Dönüş olduğunu.
Ve ben sadece bazı matematik yapıyorum.
Ben gerçekten gereksiz olmak istedim, Ben int ürün n kat n olur diyebiliriz.
>> Ve sonra ürünü iade söyleyebiliriz.
Ancak, yine, benim açımdan daha önce bu sadece olmamak iyi design--
gibi, neden bir isim tanıtmak, Bir sembol, ürünü gibi,
Sadece hemen dönmek için?
Bu, biraz daha temiz olduğunu biraz daha sıkı, bu yüzden
Sadece dönüş n kez söylemek, konuşmak n, tamamen bu hattın kurtulmak.
>> Ve okumak için sadece daha az kod, var hatalar için daha az fırsat.
Ve en eğer bu görelim Aslında şimdi çalışıyor.
Şimdi, ben gidiyorum önde ve dönüş yapmak.
>> Uh-oh, fonksiyonun örtülü beyanı.
Ben, daha önce hiçbir büyük anlaşma bu hatayı yaptı.
me sadece yazın edelim ya da vurgulayın ve kopyalama, aynı fonksiyon prototipi,
veya imza, buraya fonksiyon.
Yoksa bütün işlevi taşımak olabilir.
>> Ama bu biraz tembel.
Bu yüzden bunu yapmayacağım.
Şimdi, bana geri dönüş yapalım Yine, çizgi dönüşü nokta.
>> x 2. x karesi 4'tür. x 3. x kare olan 9.
Ve fonksiyon görünüyor Şimdi çalışıyor.
Yani fark burada ne var?
Ben, kare denir bir işlevi var Ben bir giriş koymak bu durumda,.
Ve ben bir çıktı geri almak.
Ve yine, daha önce, eğer Diğer bir örnek açmak
, Önceki hangi , Prototype.c denilen oldu
Ben baskı adını vardı tabiri caizse, geçersiz döndü
Ya da hiçbir şey geri döndü, ve sadece bir yan etkisi vardı.
>> Peki burada neler oluyor?
Eh, işlevi düşünün Sadece bir an için dize olsun.
Biz fonksiyonunu kullanarak oldum şu şekilde dize olsun.
>> Biz bir işlev olsun yaşadım dize gibi, CS50.h dahil
Standart io.h, int, ana, boşluğu bulunmaktadır.
Ve sonra her zaman ben oldum Bugüne kadar olsun dize denir,
Dediğim şey string s, gibi olsun string--, çünkü dize almak alır
Şimdi bu get.c-- olsun dize diyelim kendisi ben sonra can bir dize döndürür
virgül, kullanımı ve merhaba demek, Yüzde s, ters eğik çizgi n, s.
>> Yani bu aynı örnek, Gerçekten, biz daha önce vardı.
Yani dize değeri döndürür olsun.
Ama bir an önce, baskı dizesi Bir değer döndürmez.
Bu sadece bir yan etkisi yoktur.
Yani bu bir temel farktır.
Farklı gördük Şimdi fonksiyon türleri,
bazıları geri döndü değerler, bazıları değil.
Yani belki de dize veya int veya şamandıra var.
Ya da belki de sadece hükümsüz olduğunu.
>> Ve fark Bu işlevler, o
veri almak ve bir değer döndürmez aslında masaya bir şeyi geri getirmek,
sözde.
Yani en önde gidelim ve bir final seti bakmak
ve şimdi, bir hissi verir örnekler nasıl olabilir, gerçekten, soyut daha iyi,
ve daha iyi ve daha iyi veya daha fazla, amacıyla, ve daha fazla ve daha fazla
Sonuçta, daha iyi kod yazmak.
en go ahead ve ruhuna Let Scratch, aşağıdakileri yapın.
>> Beni go ahead ve dahil edelim CS50.h ve standart io.h
Beni go ahead ve vereyim Ana kendimi bir int, geçersiz.
Ve ben, go ahead bu cough.c diyelim.
>> Ve ben önde ve sadece gidelim Scratch gibi, öksürük / n çıktı.
Ve ben bu üç kez yapmak istiyorum.
Yani, tabii ki, sadece gidiyorum kopyalama ve üç kez yapıştırmak için.
Şimdi yapmak için gidiyorum nokta çizgi öksürük öksürük.
en kendime biraz daha fazla yer verelim Burada, öksürük, öksürük, öksürük, girin.
>> Zaten, belli ki, var bir iyileştirilmesi için bir fırsat.
Ben kopyalanıp yapıştırılan ettik Bir kaç kez bugün.
Ben yaptım ama bu sadece oldu gibi birçok karakterleri yazmanız gerekir.
Hala ne değişti kod hatlardır.
>> Bu üç satır, aynı hangi tembel hissediyor ve gerçekten isimli,
ve muhtemelen doğru bir yaklaşım değildir.
Ne madde Yani Bu kod geliştirmek olabilir?
Biz kopyala ve yapıştır kodu gerekmez.
>> Ve, gerçekten, her zaman hissediyorum Kendinizi kopyalayıp yapıştırarak,
ve hatta, kod değiştirme değil oran daha iyi bir yolu var bulunmaktadır.
Ve, gerçekten de vardır.
Beni devam edelim ve bir for döngüsü yapmak, olsa bile sözdizimi olmayabilir
henüz doğal geliyor.
>> sadece, bu üç kez yapın following-- yaparak
ve pratikte bu biliyorum.
Ama biz şimdi örnekler bir dizi var.
Ve online göreceksiniz Hala daha fazla başvuru.
>> Bu da, hat 6 sözdizimi tekrarlar Scratch gibi çok
blok, aşağıdaki üç kez tekrarlayın.
Şimdi biraz büyülü bir şey.
Ama bu daha alacak, ve daha tanıdık.
>> Ve tekrar gidiyor Satır sekiz üç kez,
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.
Hala aynı şekilde çalışır.
Böylece tüm ince ve güzel.
Ama bu çok soyut değil.
>> Bu mükemmel doğru.
Ama orada gibi hissediyor bir fırsat olabilir,
dünyasında olarak start tür çizilmeye,
Bu nedenle burada bazı anlambilim eklemek için Ben sadece, for döngüsü bazı yok
ve bir fonksiyon olduğunu söylüyor öksürük veya öksürük yok.
Biliyor musun?
Bana olmaya çalışalım Bundan daha küçük bir soğutucu,
ve aslında bir işlev yazmak o bazı yan etkileri vardır, öksürük diyoruz.
>> Ve hiçbir girdi alır ve çıkış olarak hiçbir değeri döndürür.
Ama ne yaptığını biliyor musun?
Bu, bu-- printf yapar unquote alıntı, öksürük.
>> Ve şimdi burada, ben gidiyorum önde ve int gitmek için,
i i artı artı, sıfır alır i 3'ten az.
Ben, hangi printf yapmayacağım gidiyorum tartışmalı bir düşük seviye uygulama
detay.
Ben öksürük nasıl umurumda değil.
Ben sadece öksürük işlevini kullanmak istiyorum.
Ve sadece öksürük arayacağım.
>> Şimdi, ikilemi dikkat edin.
bunu yapmazsanız Eğer bir işlevini çağırdığınızda tamamen ince, girişler vermek istiyorum.
Sadece açık parantez yakın yapmak parantez, ve bitirdiniz.
>> Eğer bir işlev tanımlamak ya da ne zaman Bir işlevin prototipi ilan
Önceden biliyorsanız öyle değil Herhangi bir argüman alacak,
Oradaki parantez içinde geçersiz söylüyorlar.
Ve bu belirli yapar sen misin yanlışlıkla kötüye olmaz.
Beni devam edin ve öksürük yapalım.
Ve, tabii ki, ben bir hata yaptım.
>> Lanet olsun, o var örtük beyanı.
Ama bu sorun değil.
Bu kolay bir düzeltme var.
Ben sadece prototip daha yukarı gerekir Benim dosyasında aslında kullanıyorum daha.
>> Yani şimdi bana öksürük yine güzel yapalım.
Şimdi çalışıyor.
öksürük, öksürük, öksürük, öksürük yapın.
Yani biz gerçekten olduğumuzu düşünebilir biraz üzerinde bu sorunu mühendislik.
Ve, gerçekten, biz.
Bu iyi değil Bir programın bir aday
için şu anda üstlenmeden ve ne yapıyor
hiyerarşik ayrışma denir, nerede bazı kod almak ve sonra
böylece ne tür faktör şeyler dışında, Onlara daha fazla anlam atfetmek,
ve bu sonuçta uzun vadede yeniden.
Ama bu doğru bir yapı bloğu var daha karmaşık programlar
biz başlayacak uzun süre önce yazılı
Bizim kelime var sağlar hangi ile daha iyi kod yazmak.
Ve, gerçekten, en eğer görelim biz ayrıca bu genelleme olamaz.
>> Biraz topal görünüyor ben, ana, for döngüsü bu lanetlemek konusunda endişelenmenize gerek,
ve tekrar ve tekrar öksürük çağırıyor.
Neden sadece öksürük söyleyemem Üç kez öksürük lütfen?
Başka bir deyişle, neden ben yapamam sadece öksürük ve bunu yapmak için giriş vermek?
>> Neden sadece, diyemeyiz Ana öksürük üç kez.
Ve şimdi, bu tür büyülü olduğunu.
Burası çok iteratif var.
Ve bu, gerçekten de, bir bebek adımdır.
>> Ama yetenek söylenecek hat sekiz, üç kez öksürük,
Sadece çok daha okunabilir.
Ve artı, bilmek zorunda değilsiniz veya öksürük nasıl uygulandığını bakım.
Ve, gerçekten, daha sonra sınav ve final projeleri için,
Bir proje ile mücadele halinde Bir sınıf arkadaşı ya da iki sınıf arkadaşları,
Eğer gidiyoruz fark edeceksiniz var ya, işi bölmek istiyor.
>> Ve karar istediğiniz gidiyoruz Önceden, kim ne yapacak,
ve hangi parçalar halinde?
Ve bu güzel olmaz Eğer, örneğin,
yazma main ücret, yapılan alır.
Ve oda arkadaşı, ya da sizin Ortak daha genel olarak,
öksürük uygulanması ilgilenir.
>> Ve bu bölünme, bu soyutlama duvarları,
soyutlama veya katmanları ise Eğer, süper güçlü olacak
, Özellikle büyük için çünkü daha karmaşık programlar ve sistemler,
Birden çok kişi oluşturmanıza olanak verir şeyler birlikte ve sonuçta
Bu şekilde bir araya işlerini dikiş.
Ama tabii ki, biz Şimdi öksürük düzeltmek gerekir.
Biz öksürük söylemek gerekir Bu, hey, biliyor musun?
Bir almaya ihtiyacımız olacak input-- void ama int ve şimdi değil.
en go ahead ve içine koyalım int öksürük. Ben sıfır alır.
>> Ben kaç kez daha azdır.
Ben üç önce söylediğim.
Ama bu benim istediğim bu değil.
Ben genellenemez için öksürük istediğiniz yineleme herhangi bir sayı destekler.
>> Yani, gerçekten, ben istiyorum n var, ne olursa olsun kullanıcı söyler.
Şimdi, ben devam edin ve baskı öksürük söyleyebiliriz.
Ve ne olursa olsun sayı Kullanıcı, geçer
Ben birçok kez yineleme olacak.
>> , Günün sonunda bu yüzden Program aynıdır.
Ama bu şeyler hiç fark Hatta başka bir dosya olabilir.
Gerçekten de, ben de bilmiyorum an nasıl Printf uygulanmaktadır.
>> Ben olsun nasıl şu anda bilmiyorum dize veya int olsun, ya da float almak
uygulanmaktadır.
Ve ben istemiyorum benim ekranda görmek onları.
Olduğu gibi, ben odaklanmak başlıyorum Benim program değil bu fonksiyonlar.
>> Ve böylece, gerçekten, en kısa sürede senin kadar Böyle kodunu Faktoring başlar,
biz bile öksürük hareket olabilir ayrı bir dosyaya?
başkası uygulamak.
Ve sen ve program haline Çok güzel ve çok okunabilir,
belki gerçekten dört Orada satırı programı.
>> Yani şimdi devam edelim ve bir daha değişiklik yapmak.
Dikkat edin benim prototip kontör değişmesi gerekiyor.
Bu yüzden bana böylece düzeltmek izin Ben bağırdı alamadım.
>> öksürük yapmak, bana bir kez öksürük çalışmasına izin daha hala aynı şeyi yapıyor.
Ama şimdi, biz bir var fark bir final sürümü için madde.
Biliyor musun?
Ben mutlaka, sadece öksürük istemiyorum.
Daha genel bir şey yapmak istiyorum.
Yani biliyor musun?
Bunu yapmak istiyorum.
Ben çok Scratch gibi olmasını istiyorsanız Yapar bir demek bloğu, ama sadece
bir şey kez bir numara demek.
Ben çok özel bir dize söylemek istiyorum.
Ve bu nedenle, I do not sadece öksürük söylemek istiyorum.
Ben bunu söylemek istediğiniz ne olursa olsun dize geçirilir.
>> Yani fark, ben genel ettik Bu yüzden şimdi
diyelim ki iyi bir isim gibi hissediyor Bunun için, Scratch gibi,
Scratch aksine, iki argüman alır.
Bir bir dizedir.
Bir bir int.
>> Ve ben onları geçmek olabilir.
Ben sadece biraz fikir gibi İlk dize söylemek ve sonra
Kaç sonra kere.
Void hala anlamı bir şey vermez.
Bunlar sadece görsel tarafı [olduğu gibi efektler? Ürdün,?]
bağırıyor bir sözlü yan etkisi.
Hala bir şey n defa yapar kadar 0, fakat n eşit değildir.
Bu n toplam süreleri anlamına gelir.
Ve sonra sadece çıktısını ne olursa olsun dizedir.
Bu yüzden gerçekten genelleştirilmiş ettik bu kod satırı.
Yani şimdi, nasıl uygularım öksürük fonksiyonu?
>> Ben geçersiz öksürük yapabilirsiniz.
Ve ben hala nasıl alabilir birçok kez öksürük istiyorum.
Ama ne biliyor musunuz?
Şimdi söylemek punt olabilir.
>> Ben söyleyebilirim çağırabilirsiniz kelime öksürük, n geçen.
Ve ben de uygulamak istiyorsanız, sadece eğlence için, bir hapşırık fonksiyonu,
Ben birkaç kez bazı dizi hapşırma olabilir.
Ve çünkü, n yeniden kullanma tutabilir Bu bağlamda ya kapsamda o m fark
Sadece bu işlev içinde var.
>> Ve n, bu bağlamda tek Burada bu işlev içinde var.
Bu yüzden biz geri geleceğiz kapsam bu sorunlar.
Ve burada, ben sadece söylemek için gidiyorum achoo ve n kere, yarı-kolon.
>> Ve şimdi, ben sadece ödünç gerekir Bu fonksiyon burada imzaların.
Yani öksürük doğrudur.
Void hapşırık artık doğru.
>> Ve ben hala sadece şunu söylemek gerekir.
Yani diyelim ki, söylemek için gidiyorum string, int n, noktalı virgül.
Yani aşırı mühendislik ettik Bu programın dışında halt.
>> Bu değil mutlaka bu demek
yazarken ne yapması gerektiğini programların bile basit.
tabii ki var bir şey almak gerçekten kısa, gerçekten basit,
ve yeniden uygulamak yol çok fazla kodunu kullanarak.
Ama aslında görmek, ve edeceğiz Zaman, bu örnekler üzerinde geriye bakmak
ve anlayacaktır, ah, bu adımlar Biz aslında genelleme aldı
bir şey faktör, Günün sonunda kadar
benim kod aslında oldukça makul.
Ben üç öksürük istiyorsanız Çünkü Zaman, daha sonra üç kez hapşırık
Ben sadece, bu yeniden gidiyorum Program öksürük yapmak ve öksürük çalıştırın.
Ve ben üç öksürük var üç hapşırma.
>> Ve böylece bu bir temel paradigma, eğer sen,
Biz yaklaşık gidebilir nasıl aslında bir program uyguluyor.
Ama sadece şimdi ne görelim Biz tüm bu zaman yapıyorum
ne son bazı parçalar Bu basit komutla arkasında.
Günün sonunda, ettik Bizim derleyici olarak çınlama kullanıyorum.
Biz kaynağı yazıyorum Kod, dönüştürmeden
makine koduna Clang aracılığıyla.
>> Ve biz sadece Make kullanarak oldum yani bizim tuş vuruşlarını kolaylaştırmak için
Biz hatırlamak zorunda değilsiniz Clang kendisinin bu büyüler.
Ama aslında olun ne yapıyor?
Ve bu da, ne Çınlama aslında yapıyor?
>> Biz basitleştirilmiş olsa, çıkıyor diyerek bugünkü tartışma,
Eğer kaynak kodu almak gibi geçmesi size verir bir derleyici, giriş
Makinenin çıktı kod var, çıkıyor
Orada içinde birkaç farklı adımlar.
Ve Derleme şemsiye olur adımların bir sürü terim.
Ama sadece alay edelim Bu dışarı gerçekten hızlı.
>> Biz yapıyorum çıkıyor Daha fazla şeyler ben bir programı çalıştırmak her zaman,
veya her zaman ben bugün bir program derlemek.
Yani ön işleme anlamına gelir C programında bir şey bu--,
Biz tekrar göreceğimiz gibi, Bu, bu karma sembolü ile başlar
ya da burada hashtag'ının sembolü demektir Bir önişlemci direktifi var.
Bu Hey, bu durumda, demek Bilgisayar, bu dosya ile bir şeyler yapmak
aslında benim kendi kodu derlemek önce.
>> Bu durumda, karma arasında, esasen söyleyerek, C yoludur,
hey bilgisayar, içeriğini gidip ve CS50.h burada yapıştırın.
Hey bilgisayar, gidip Standart io.h içeriği,
Bu konuda her yerde sabit disk, buraya yapıştırın.
Yani böyle şeyler olur önişleme sırasında ilk.
>> Ve Clang bizim için tüm bu yok.
Ve o kadar lanetlemek yapar hızlı, hatta yok
oluyor dört ayrı şeyleri görüyorum.
Ama bu tür ilk adımdır.
>> Gerçekte sonra ne olacak?
Eh, bir sonraki resmi adım derleme.
Ve o çıkıyor Bir program derleme
teknik giden demektir kaynak kodu, biz ettik şeyler
şey, bugün yazıyor bir şey, montaj kodu olarak adlandırılan
Bu biraz farklı görünüyor.
>> Ve aslında, biz gerçek hızlı görebilirsiniz.
beni aslında benim IDE içine dönelim.
Bana önde ve açık merhaba.c gidelim ki İlk program hangi ile biz
bugün başladı.
Ve beni go ahead ve Clang a çalışmasına izin farklı küçük, Clang-s, merhaba.c,
Aslında hangi gidiyor Bana başka bir dosya hello.S verir.
>> Ve biz asla muhtemelen olacaktır kodu tekrar bu tür bakın.
Eğer daha düşük bir seviyede alırsak CS61 gibi sistemler sınıf,
Eğer çok daha fazla göreceksiniz Bu kod tür.
Ama bu derleme dilidir.
Bu X86 assembly dili temelindeki CPU
CS50 IDE aslında anlıyor.
>> Ve bu şifreli olduğu gibi bir şey, bak
Bilgisayar oldukça iyi anlıyor.
Alt q, bu bir çıkarma olduğunu.
hareketler var.
>> Burada fonksiyonların Orada aradığını x oring, bir hareket, bir eklenti, bir pop,
geridönüş.
Yani orada bazı çok düşük seviye talimatları
CPU'lar anladığınızı Daha önce değindiğim.
Bu ne Intel Inside olduğunu.
>> paternleri vardır sıfırlar ve olanları o
Bu arcanely ifadeli için harita, ancak biraz iyi adlı, talimatlar,
sözde.
İşte ne olur kodunuzu derlemek.
Sen düzeneğini Bunun dışında dil, hangi
Üçüncü adım monte etmek anlamına gelir Bu derleme kod içine nihayetinde
Makine code-- sıfırlar ve olanları değil, biz sadece bir an önce gördüm metin.
>> Yani ön-işleme bulmak yok değiştirmek ve birkaç diğer şeyler ve.
Derleme senin kaynağını alır C kodu, kaynak kodu
Biz meclise, yazdığı Biz sadece baktı kodu.
Montaj bu montaj alır sıfır ve kendisi için kod
İşlemci gerçekten olacak ki Günün sonunda anlıyorum.
Ve bağlama son adımdır bu, bir daha us-- için gerçekleşir
o kadar hızlı biz bile yok , Söylüyor notice--
hey bilgisayar, tüm almak sıfırlar ve olanları o
David'in kod derleme sonucu ve bu durumda onun ana işlevi.
>> Ve bilgisayar hey, gidip sıfırlar ve olanları bütün
CS50 personel yazdığı CS50 kütüphane içinde.
David olanlarda karıştırın.
Ve hey bilgisayar, tüm sıfırları gidip ve başkasının yıl yazdığı olanlar bu
önce printf için.
Ve içine ekleyebilirsiniz Her şey, biz ettik böylece
Benim sıfırları ve olanları var, CS50 personelinin sıfır ve olanlar,
printf sıfır ve olanlar, ve başka bir şey biz kullanıyoruz.
>> Hepsi birine bir araya olsun Program merhaba bu durumda, denir.
Yani bundan sonra, biz olacak sadece kelime derleme kullanın.
Ve biz hafife alacak o zaman biz demek, senin programı derlemek, demek
hey ön işlem yapmak, montaj ve bağlantı.
Ama aslında bazı sulu şeyler var başlık altında oraya gidiyor.
Ve özellikle eğer Meraklı biraz zaman olsun
Eğer alay başlayabilirsiniz etrafında bu alt düzeyde.
Ama şimdi, fark Bugün için paketler arasında
vardır oldukça basit bir işlemin başında,
rahat almanın Merhaba dünya gibi bir şey.
Nitekim, bugün yaptıklarının çoğu kesinlikle süper hızlı batar olmaz.
Ve bazı alacaktır Zaman ve bazı uygulama.
Ve oran vardır, sıralamak olacak sizin klavye vurmak istiyorum
veya ekrana bağırma.
Ve bunların hepsi tamam.
Gerçi, belki de değil deneyin o kadar kütüphanede bunu.
>> Ve sonuçta, olacak Olsa mümkün başlatmak için gereken
İyi kod hem desenleri görünce Yazdığınız bu ve hatalar
Eğer yaptık.
Ve süreci gibi çok TF olma ya da CA gibi,
Daha iyi olsun başlayacağız ve bu kalıpları görünce daha iyi,
ve sadece sizin yanınızdaki çözme sonuçta kendi sorunları.
Bu arada, bol olacak Bize size destek vermek ve almak için
bu sayede.
Ve yazma-up tüm sorunları için
Eğer yönlendirileceksiniz tüm komutlar
Kesinlikle biliyoruz ki artık pratik bir sürü
ancak uçakla olabilir Şimdilik kişinin başının üzerine.
Ve bu tamamen iyi.
>> Ama, sonuçta, gidiyoruz desenler ortaya görmeye başlamak için.
Ve tüm geçmiş olsun bir kez aptal detayları parantez gibi,
ve kaşlı, ve noktalı virgül, ve malzeme, açıkçası,
o hiç değil entelektüel ilginç.
Ve bu hedefi değil Herhangi bir tanıtım sınıf alarak.
Önemli olacak fikirler var.
>> Bu döngüler, ve Koşullar ve işlevleri,
ve daha güçlü soyutlama, ve kod faktoring,
ve iyi tasarım ve iyi stil ve sonuçta doğruluğu
kodunuzu, sonuçta var En önemli olacak.
Yani önümüzdeki hafta, bu alacak Biz ilk Scratch gördüğümüz fikirler
ve şimdi tercüme C Ve biz başlayacağız
ilk tanıtmak dersin gerçek dünya alanları.
>> Biz, güvenlik dünyasına odaklanmak gerekir ve daha spesifik olarak, şifreleme
bilgi çabalıyorlar sanatı.
Ve ilk arasında sorunlar size kendinizi
ötesine yazmaya alacak sözdizimi bazı oynuyor
ve bazı mantıksal çözme sorunlar, sonuçta uzun süre önce,
Aslında karıştırmak veya şifrelemek için bir, ve sonuçta bilgilerin şifresinin açılması.
Ve her şeyi biz yaptık Bugün, olacak oldukça düşük
seviye, sadece izin gidiyor Bize, bir ve bir tane almak için
ve yukarıda doğru bir adım daha Henüz en ilginç kod yazma.
>> bir sonraki hafta Böylece daha fazla.
>> [VİDEO OYNATMA]
>> -Ne Hakkında bana söyleyebilir Onu en son gördüğümde?
-Ne Gerçekten, diyebilirim ki?
Yani, bu da diğerleri gibi oldu üretim öncesi prova,
bir şey yoktu dışında dedi Benimle sıkışmış en sonunda.
>> -Bu CS50 idi.
>> -Bu, Bir kesim herkesin var prova büyük bir iş.
>> -Bu Öğle yemeği?
>> -Evet, Sen ve ben can biraz bir sandviç kapmak.
Bana sadece birlikte brifing edelim David gerçekten hızlı.
David?
>> [SON OYNATMA]