>> [VİDEO OYNATMA]
>> Matematiksel -Bir zaferi ve mekanik beceri
Bu büyük yeni otomatik Harvard Üniversitesi'nde hesap.
Matematik Karmaşık sorunlar kodlanmış biçimde makineden geçirilerek
Kasette doğru bir çözülüyor zaman dakika fraksiyon gerekli
İnsan hesaplama.
Her türlü hızlandırmak için tasarlanan matematiksel ve bilimsel araştırma,
Dev mekanik beyin için çalışacaktır Amerika Birleşik Devletleri Deniz Kuvvetleri savaşın sonuna kadar.
>> [SON OYNATMA]
>> DAVID J. MALAN: Bu, CS50 olduğunu.
Geçmiş bir büyülü oldu yer, ama sen ettik eğer hiç
Bu cihaz olduğunu merak Harvard Bilim Merkezi'nde,
gerçekten bir parçasıdır Harvard Mark I ve var
Şimdi orada Ekranda geçmiş yıllar için.
Ve ne görürsünüz Sorun grubu gömülü
tek perde arkasında bir göz Bu cihaz, yaptım ve yaptığı en neyi
olan Profesör Harry Lewis, gelen Burada bilgisayar bilimi departmanı.
Sadece biraz bu konuda Böylece daha fazla.
>> Ama bugün geçiş başlar Geçen hafta bu,
ve biz söz getireceğim burada bir fotoğraf
aslında oldukça ünlü.
Herkes bu ne biliyor mu Burada ekranda?
En azından efsaneye göre.
Evet.
HEDEF KİTLE: ilk virüs.
DAVID J. MALAN: Yani sözde Bir bilgisayarda ilk gerçek hata.
Şimdi gerçekte kelime hata, Bir programda bir hata için,
Bazı bizimle birlikte olmuştur fiziksel dünyada zaman,
ve bu ilk biriydi belgelenmiş kez nerede birisi aslında
Mark dışında büyük bir güve koparıp II bilgisayar, bağlayıcı koydum
ve sonra kaydedilen Bilinen ilk hata olarak
aslında fiziksel bulundu etmek.
Yani bu şekilde girilmiştir Günümüz ilim içine.
Geçen her şey Haftanın online olarak kullanılabilir.
Belirli kaynaklara sen olabilir ille, özellikle fark
bizzat buraya geliyor eğer.
Yani öğretim arkadaşlarının birinin her Yıl notları kurallı dizi yapar,
böylece tutmak gerekmez başınızı aşağı çalışıyor
En şeyi yazıya Bu sınıfta burada ortaya çıkabilir.
Yani bu fark [sözde? Scribd?] Notlar
Kesinlikle slaytlar, online ve Sınıfta kullanmak kaynak kodu.
Biz tam metin transkriptleri yapmak Mevcut yanı.
Eğer hayal meyal hatırlıyorum Yani eğer bazı terim ve biraz yukarı bakmak istiyorum
daha kolay, hepsi fark Bunun aranabilir yayında.
Yanı hem de izlenecek.
Nitekim, bugün bakmaya başlar Bir alt düzey bir programlama dili,
yakında bize bilinen C, ve çok kolay
çeşit sadece birkaç sonra kaybolmak anlar zaman, ve merak sonra sıralama
biz aslında biraz daha var nasıl En basit karmaşık bir örnek.
Ve böylece biz kiraz olacak gerçekleştirmek Sınıfta bazı esnasında almak
temsili örneklerinin ancak çok daha da olduğunu fark
Eğer çalışmak, böylece online bulunabilirlik Kendi hızınızda içinden
ancak en rahat konum.
>> Ama biz birlikte bıraktığımız Sadece bu idi programları.
Yani yeşil bayrak tıklayın ve bu program ne yapar?
Merhaba, dünya, diyor.
Kedi dedirten merhaba onun küçük dünyasında
Sol üst taraftaki Scratch kullanıcı arabiriminin.
Ama biz tanıtmaya başladık Bazı terminoloji geçen hafta.
Ve böylece, bu gibi şeyler bizim neyi aradı?
Bunun için genel bir terim ne olabilir?
Evet.
Bir yöntem veya bir deyim.
Tabii, bu bir eylem bu.
Bunu yap.
Ve yine vardı çizilmeye diğer şekiller,
Bu sözde yanında Açıklamada, onlar da vardı
Biz ne denir bu gibi şeyler?
Evet.
Yani bir döngü.
Ve bu durumda, bu şey Tekrarlar, açıkçası, 10 kez.
Bir sonsuza blok var.
Başkalarının bir çift var.
Ve bugün nasıl görmeye gidiyoruz Bir daha modern dünyaya bu tercüme,
o olsa bile, eğer sen İlk bakışta çıkacaklar
daha oynamasından olması.
Ama bu gerçekten de döngüler vardı.
Ve sonra gibi şeyler var Bu biçiminde bir bu,
ve esasen sorulan sorular.
Ve biz ne kadar bu ifade?
>> HEDEF KİTLE: Boole ifadesi.
>> DAVID J. MALAN: Evet.
Boole ifadesi.
Bir şey ya doğrudur ya da Yanlış, evet ya da hayır, bir ya da sıfır,
Ancak dünyayı görmek istiyorum.
Ama biz o Boole denilen ifadeleri ve biz onları takın
koşullar, ya da dallara.
Ve dünyada Çizilmeye, her şey güzel
şekli açısından kilitleri, bunu yapmak için mantıklı mantıklı,
ama sadece durdurmak zorunda değilsiniz şartlı bir şey yapıyor,
Bir atasözü olabilir yolda çatal
ve bu veya eğer birini yapın koşulun doğru veya değil.
Ve sonra, olarak, göreceksiniz Henüz varsa,
iç içe bu bloklar eşitlemek olabilir.
Yani Scratch şekilleri doldurmak için büyür bunu içine eklemek isteyebilirsiniz,
bu yüzden aslında ifade edebileceğiniz en Eğer yapmak isteyebilirsiniz herhangi mantık.
>> Duyuru Şimdi birkaç kelime hem burada hem de New Haven için.
Yani kesit bugün başlıyor.
Bu URL kursu en açık Web sitesi, bilmeyenler için.
Kesitler bir olacak fırsat araya gelmek
çok daha samimi bir ortamda [daha? Sanders?], Izin verir
Bir 10 ila 20 sınıf arkadaşları ile farklı pistlerde de adam öğretim,
ve farklı adım, bunu seçerseniz.
Gerçekten ders teklifleri Farklı kesitler
daha rahat olanlar için, daha fazla konforlu ve bir yerde arasında,
ve burada başparmak rolü olduğunu hiçbir resmi tanım var,
ama daha az rahat iseniz, ne tür biliyorum.
Sen hakkında biraz cesur konum geri, belki de ayak adım fikri
sınıfta ya gösteren bölüm arasında bir in kadar.
Sizin beri programlama oldum daha rahat, altı yaşında idi
Belki sizin için.
Ve bu bir toss-up tür ise, Tam olarak ne de aramda
çıkartılacaktır.
>> Şimdi, bu arada, Bir sınıfın bu boyutu,
o bölüme bize oldukça zaman alır Herkes, bu yüzden sözde var,
süper bölümler, yukarı önümüzdeki Haftasonu ve önümüzdeki hafta başında,
böylece dersin web sitesine bir göz atın Tabii geniş olanlar için,
ve aynı zamanda bu filme onları kim yapamaz.
Ve bölümler kendilerini başlayacak hafta CS50 sıfır endeksinin üç.
Sorun 0 zaten ayarlanmış dersin web sitesinde.
Ve var olduğunu fark Dokuz sonlarında günler bu dönem.
Yani bu son bir yükseltme yıl, beş geç gün vardı.
>> Yani merak ediyorsanız eğer, Biz dokuz problem setleri var.
Dokuz gün sonunda, her biri sahip Sadece haftada bir tane geçirebilirsiniz.
Bu etkin bir bütün yapar Sorun nedeniyle Cuma setleri,
ama hedef biraz koymak için psikolojik baskı bit
size almak için denemek için Perşembe günü işler içinde
yakında keşfedeceksiniz olarak, çünkü iyi ya da kötü, çoğu için
Yazılım dünyasında her şey biter çok uzun süre tahmin daha alarak.
Yani bir tür düşünün yardımcı olmak için fırsat
Kendinizi, Perşembe hedef ama, evet, konfor almak
Her şey Cuma kaynaklanmaktadır.
Ve sen bunları göndermeniz durumunda Perşembe, bu harika.
Hiçbir bonus puan veya ekstra var Bu süre karşılanması için kredi.
Bu sadece bir koltuk değneği olması gerekiyordu.
>> Ve çalışma saatleri, hem Burada ve New Haven,
bizzat, sen istersen Bizim kurslardan herhangi birine ile bir araya
yardım dostlar ve CA'lar öğretim.
>> Pekala.
Yani şimdi, şu daha gerçek yapalım.
Ve bir an için başlatmak için gidiyor Biraz daha gizemli olsun, ama çok için
hızla Cuma ve Önümüzdeki hafta olacak
çok daha fazla yapmak mümkün Biz bugüne kadar Scratch içinde olabilir.
Bu yüzden son kod tanıttı hafta, şekille de olsa.
Bu puzzle parçaları oldu.
Ve biz o olduğunu resmiyet Kaynak kodu denen şey,
ama neye benziyordu ki?
Eh, biraz baktım böyle bir şey.
Ve, aslında, sadece bir tür biz bu nereye kızdırmak.
Ben devam edeceğim ve Burada bir pencere açmak,
ve ben sadece yeni dosya seçmek için gidiyorum.
Ve ben bu dosyayı kaydetmek için gidiyorum merhaba nokta c gibi bir şey olarak.
O seçenek Daha sadece bir an kelimeler.
Ve bu nasıl birisi olabilir olduğu Bir program yazma konusunda gitmek.
Standart G / Ç nokta h, int main Dahil yakın boşluk ve ardından açık kaşlı ayraç
kaşlı ayraç, printf merhaba virgül dünyası, ters eğik çizgi n, noktalı virgül, Kaydet, aferin.
TAMAM.
Benim ilk yazdığım Program, ama gidiyor
inanılmaz underwhelmed zaman aslında çünkü
Elbette, bu programı çalıştırın, İlk yazarak merhaba yapmak,
ve sonra merhaba eğik çizgi ve yaparız dot çok daha ayrıntılı olarak bu geçmesi
Bir anda, o öyle hepsi bu.
Herhangi bir açılır pencere açılır değildir.
Bu şey yapmaz özellikle fantezi.
Bütün yaptığı Ben bunu ne yapmak, ama nasıl bu kadar alabilirim?
Ve nasıl biz üzerine inşa edersiniz?
Peki, bir kaç tanıştırayım Burada farklı kavramlar.
>> Yani biri, biz başlamak üzereyiz bir derleyici denilen bir program kullanarak.
Bir derleyici, Mac OS, Windows için var Linux işletim sistemleri herhangi bir sayıda,
ve biz yakında size tanıtacağız biz kullanıyor olacağı çevre,
ama bir derleyici sadece general yazılım parçası için kullanılan terim
Bu kaynak kodunu alır ve ondan nesne kodunu üretir.
Diğer bir deyişle, eğer giriş için kaynak olarak sahip
Kod, ben sadece yazdıklarınızı gibi bir şey, sonuçta nesne kodunu üretir.
Ve nesne kodu sadece gerçekten o çıktılar söylemenin süslü yolu
sıfır adlı ve kimsenin.
Diğer bir deyişle, bir kaynak o olsa bile kod,
Biraz Arcane bakmak olacak, ve biraz daha az dost
ilk bakışta Scratch daha en azından bir şey
biz insanların anlayabileceği.
Bu tür görünüyor ve gibi geliyor İngilizce olsa bile çok özlü olduğunu.
Sıfır en programlama Oysa ve kişinin, bizim öncekilerin yapmak zorunda olduğu gibi,
Birkaç yıl önce, değildi özellikle eğlenceli bir meydan okuma.
Ve yine, bu ne olduğu bilgisayar hala anlar.
Yani derleyici bizi alır Kaynak kodu kodunu nesne.
Bu bir dosyayı açmadan gibi derleyici, ve bunu kaydetmek zaman,
o sıfırları ve yenilerini almak.
Yani biz nasıl görürsünüz sadece bir an o.
>> Ama şimdi diyelim bir sağlamaya çalışıyoruz geçen hafta ve bu arasında köprü,
bile bu yüzden asılı olduğunu kaşlı ayraçlar gibi şeylere,
ve noktalı virgül ve parantez ve Bu entelektüel ilginç hepsi
programlama yönlerini, çok anlaşılır erken insanları çelme,
fikirlerin hepsi fark bugün, son aynıdır.
Bu yüzden geçen biz bu örneği gördüm Burada, Hello World programı.
İstersek Eh, bugün başlıyor Aynı programını uygulamaya,
Bir bakmak için gidiyor Böyle küçük bir şey.
Ve biz, ne uzun int önce açıklayacağım Ana ve hükümsüz ve bütün bunlar ve
ama en azından ben burada göremiyor zaten tanıdık Merhaba Dünya.
>> Gibi arada işler fonksiyonu, merhaba demek,
çok basit bir olacak Bunun gibi çok basit bir ifade.
Printf merhaba dünya, bazı ters eğik çizgi, tırnak,
noktalı virgül ile değil, Bu konuda daha fazla gelmek.
Döngüler, bu arada, bu bir döngü, Tabii, sonsuza kadar dünyayı merhaba diyor
ve bu bir bakmak için gidiyor Son olarak daha garip küçük,
ama ben bir şey söylemek durumunda gibi, gerçek süre, I
Sonra Merhaba dünya yazdırabilirsiniz tekrar ve tekrar ve tekrar ve tekrar.
Ve sonra da ne tür can burada anlaması başlar,
kullanarak bu kuralı kaşlı tür
ve kucaklayan gibi Orada kod girintili hattı.
Kod printf satırı çok gibi Yukarıdaki sarı bulmaca parçası kadar.
Yani biz sonsuza söylemek etmeyeceğiz, Biz gerçek iken söylemek için gidiyoruz
sadece biraz neden ama biz göreceğiz.
>> Bu arada, biz böyle bir döngü varsa, nereye sonlu bir şey tekrar
sayı süreleri, bu da bu kadar Biraz alacak alışmak
için, fakat int için söyleyecek i i ++, ben az 10 sıfır alır
ve daha sonra tekrar Printf.
Ama desenler orada oluyor.
Ve tanıdık o sizin için AP Bilgisayar Bilimleri veya Java ile
veya diğer dillerden herhangi sayıda Hemen hemen tüm bu yapıların
Şimdiye kadar çoğunlukla tanıdık görünmelidir.
>> Yani değişken.
Yani burada basit bir Scratch alıntı olduğunu sıfıra karşı adında bir değişken setleri
ve sonra sonsuza sayaç diyor ve o zaman tek sayaç değiştirir.
Yani, sıfır ile başlayan ve daha sonra, bir, iki, üç.
Peki biz o tanıtmak olabilir Bu yeni dil benzer biraz?
Int sayacı eşittir Gerçek ise sıfır, hangi
daha önce gelen aynı fikir sonsuza kadar şey yapıyor,
ve ben sadece printf gidiyorum.
Ve şimdi, biraz garip oluyor Yüzde i, ancak daha fazla o gelmek için,
ancak bu fikirlerin tam olarak aynıdır.
Biz şimdi uymak zorunda bilgisayar sözdizimi
Bize talep edecek.
>> Boole ifadesi gibi bir şey sx az y'den, y ya da daha az x,
ve z daha az y.
Bu küçük bir şey bakmak için gidiyor Bu gibi sadece parantez ile
gibi iyi ölçmek için matematik sadece temin etmesi operasyonların sırası
Biz niyetinde gibidir.
Ve şimdi, koşullar.
Yani y az x derseniz x az y yerine, x, y büyükse else if,
Aksi takdirde, x, y daha büyük olduğunu söylemek mantıksal olarak, x, y eşit olmalıdır.
Yani uygulamak olabilir Scratch böyle bir şey,
ya uygulamak olabilir Bu sözdizimi o.
Ve yine, kaşlı tür vardır bulmaca gibi bize aynı şekil vererek
parçaları, ancak sözdizimi, şimdi, belki de Bazı modellerini takip başlıyor.
>> Peki, bu bizi buraya verir?
Yani biz o zamanlar bizim ana program geldik.
Aslında atalım, şimdi, onunla bir şeyler yapmak.
Yani bu çok ilk Biz keskin dahil bkz hattı,
Standart I / O, nokta h ve sonra bazı garip açı
aşağıda parantez. int main geçersiz ve sonra printf merhaba dünya.
Yani sadece bir adım atmak.
Daha önce programlanmış hiç biri, En azından bu çizgilerin bir açıklar.
Belki bazı kullanma Geçen haftanın jargon.
Printf Örneğin, nedir?
Evet.
>> HEDEF KİTLE: [duyulamaz]
>> DAVID J. MALAN: Evet.
Bu bir işlev ya da bir deyim var, Geçen haftaki terminolojiden.
Ve bu bir eylem var o bir şey yapıyor.
Şimdi bu işlev, ya da bu açıklama yapar
o girdi çeşit almaya görünür?
Ve ne anlamda yapar eğer öyleyse, giriş almak gibi görünüyor?
Giriş, ben ne demek istiyorsunuz?
Evet.
>> HEDEF KİTLE: [duyulamaz]
DAVID J. MALAN: Evet.
Yani bir kaç puzzle parçaları dışarı Scratch Nerede bunu parametrize olabilir.
Sen tekrarını söyleyebilirdi tekrarlamak kaç kez blok,
böylece bir girdi olarak verilen sıralar ve sadece Scratch gibi
küçük beyaz yer tutucu vardı Eğer yazarsınız sayı,
bu yüzden biz bu kullanmak yapmak Metin Dünya parantez
bize bu yuvarlak şekil vermek içine bizim girişi takabilirsiniz.
Sonuçta, yıl onlarca önce zaman C olarak adlandırılan bu dil,
kimse icat edildi bu bizden biri beklenen
Bu, birkaç yıl sonra, biz olur Merhaba diyor bir işlevi istiyorum.
Sağ?
Bir olsaydı daha güzel olurdu puzzle parçası, ya da bir anahtar sözcük,
o, merhaba denir kelimenin tam anlamıyla sadece merhaba diyor.
Ama biz buna ihtiyacımız yok.
Biz çok daha düşük bir şey olabilir genel baskı gibi seviyeli,
girdi alır komutu, Biz istersen ve yazdırır.
Yani model şimdi fark Bu ortaya çıkmaya başlayacaktır.
Açık parantez yakın parantez olduğunu görünüşe girişi kucaklayan,
ve sonra çift bakın iki ucunda tırnak.
Garip ters eğik çizgi hala var n, ama umarım şimdi
En azından bunu görselleştirmek başlayabilirsiniz printf girdi bazı şeklinde gerçekleşiyor.
Gibi kullanıcı dostu değil Scratch, ama bu sadece
gibi bazı değer takılı olan.
>> Pekala, şimdi aslında atalım Bu ile bir şeyler yapmak.
Yani sizden bazı biliyor olabilir önce sınıf alışveriş sahip
arkadaşlarıyla birlikte sohbet bu uzun yıllardır
Biz bir şey denir kullanılan CS50 cihaz.
Bu teknolojiyi açıklayan bir terim oldu sanal makine denir ki
bir yazılım parçasıdır bu senin öncekilerden kapalı indirmek istiyorum
Bedava dersin sitesi.
Onlar da ücretsiz parça indirmek istiyorum Bir hypervisor adlandırılan yazılım,
VMware gibi denilen şey, VirtualBox ya da herhangi bir sayı veya
diğer araçları ve Mac veya PC üzerinde kendi ya da her türlü bilgisayar geçen sene vardı
ve yıllar geçmiş, onlar Bir simgesini tıklatın iki katına çıkacak
Bu yazılımı çalıştırmak için hipervizör denir.
Ve o programın içinde Onlar CS50 Cihazı açacak.
Ve etkisi oldu ister senin bir öncül
Mac OS ya da koşuyordu Windows o sonra
sonradan yeni bir pencere vardı onların Ekran CS50 ortamı koşuyor.
Yani bir sanal makine birini çalıştırmanızı sağlar Başka içindeki işletim sistemi,
ve biz de bunu tam olarak ne.
Tabii biz çoğu boyunca denilen bir işletim sistemi kullanmak
Linux, özellikle Ubuntu Linux ve bu
yıllar geçmiş çok güzel bir şekilde derste emin herkesi yapma
sadece aynı ortamı vardı.
Ve her türlü kullanabilirsiniz gerçekten istediğiniz bilgisayar.
Downsides arasında olsa da, vardı iki gigabayt gibi oldu
Bu şeyi indirmek için.
Mutlaka iyi süper işe yaramadı kimin bilgisayarlar insanlar belki sadece
bir konser vardı ya da öylesine RAM, ya da CPU hızı çok fazla gigahertz,
ve bu nedenle bu yıl için Bu ve diğer nedenlerle,
Biz geçiş olmuştur sahip Bu ortama.
Sözde CS50 IDE açık kaynak kodlu yazılım dayalı,
ve desteklenen bir platform Bir şirket Cloud9 denilen
bu, Avrupa destekler Bizi esasen sahip olmanızı sağlar
O aynı ortamı olarak yıl geçmiş, ama sözde bulutta.
>> Peki bulut nedir?
Muhtemelen tıkladığınız Mac veya PC üzerindeki simgesi.
Bulut nedir?
Evet?
Biraz daha yüksek sesle.
Evet.
Bu bilgisayar sadece bir avuç Başka bir yerde veri depolamak ve çalıştırmak o
Yazılım ve benzeri.
Yani sadece kelime de gerçekten var [açıklayan jure? kiralanabilir?]
Başka bir yerde yaşamak bilgisayarlar.
Sen misin, kendiniz, mutlaka kendi yok.
Peki ne zaman veri veya sizin programları, bulut vardır
o sadece birisi demektir Başka bir yerde başka bilgisayarları,
olup, büyük olasılıkla, ilgili kayıt Fiziksel dizüstü veya masaüstü.
Ve böylece CS50 IDE şimdi budur.
>> Bundan sonra belirli bir gidersiniz Tanıtacağım URL
için, sorunun daha sonra bu, 1 set hafta, o zaman, üzerine oturum olacaktır
bu ortamı sağlar.
Ve çok gibi Scratch vardı dahil, birkaç farklı paneller,
yani CS50 IDE tam olarak bu var.
Burada sol üst tarafta, sen Tanıdık bir dosya tarayıcısı göreceğiz.
Dosyaları herhangi bir Yani sen Bu ortama koymak
Sadece orada listelenen olacak.
Dosyalar ve klasörler.
Burada Üstüne üstlük, Eğer bir yerde görmek için gidiyoruz
nerede aslında kod yazabilirsiniz.
Başlangıçta C, daha sonra PHP ve JavaScript vadeli,
ve belki de nihai için projeleri, Yakut veya Java veya Python
veya dillerden herhangi bir sayı vardır Bu ortamda destekledi.
Hiç bağlı değil Özellikle CS50 için.
>> Ve sonra burada alt köşesindeki, Özellikle daha rahat olanlar için,
Eğer bir şey var Bir terminal penceresi denir.
Ve bu terminal penceresi veriyor Eğer herhangi bir komutu çalıştırmak için size
Bu bulut ortamında istiyorum.
Bu yüklemenizi sağlar herhangi bir ek yazılım
Eğer sözde çünkü İstediğiniz Kök veya yönetici ayrıcalıkları.
Yani diğer bir deyişle, bu bile olsa sonuçta bulut içinde barındırılan,
ve biz bile bir ölçüde bunu basitleştirilmiş
Varsayılan olarak, kelimenin tam anlamıyla tanıtan Dan Armendariz ve Dino sayesinde,
ve üzeri CS50 takımında Dan Bradley aylar geçmiş, bir daha rahat
Bir sürü gizler modu Başlangıçta kafa karıştırıcı dikkat dağıtıcı.
Orada var olan her şey Tipik bir bilgisayar sistemi temsil
Eğer gerçek dünyada kullanmak olabilir.
>> Peki ne bu her anlama ve biz aslında onunla ne yapabilirim?
En aslında bir programa bir göz atalım.
Yani açmak için gidiyorum Burada gerçek çevre,
hangi sadece bizim Chrome olduğunu Firefox olabilir tarayıcı,
Internet Explorer olabilir, ya da başka bir tarayıcı de.
Tam şu an için burada ekranlı oluyor.
Ve ben aslında kızdırmak istiyorum dışında bu programın buydu.
Yani doldu büyüterek, bir göz atalım yaptım ne, top, ve nasıl burada var.
Yani burada tam o var aynı kod satırları.
Yani bu deyimi, Daha önce de belirtildiği gibi.
Merhaba diyor işlevi.
Kaşlı, üzerinde hat, dört ve altı satır,
zarfının muhtemelen tür Bu hat ilişkilendirmek için
benim program özüyle.
Yani gerçekten bu kelime ana, Bu, üçüncü hatta orada var
Eğer eşdeğer olarak aklınıza gelebilecek yeşil bayrak tıklandığında bunun,
Scratch engellemek.
Biz burada bu var, bu yüzden ne zaman bir Yeşil bayrak, baskı tıklandığında, ya da söylemek
Merhaba Dünya.
>> Ama at, şimdi, bir tahmin atalım neler bu ilk, daha çok gizli hattıdır.
Keskin, açık açılı dahil dirsek, standart G / Ç nokta h
Açılı braketi kapatın.
Belki ne yaptığını, özellikle programlanmış verdiyseniz
başka bir dilde daha önce.
Evet?
>> HEDEF KİTLE: [duyulamaz]
DAVID J. MALAN: Evet.
Kesinlikle.
Yani bu bir erişim veriyor kütüphane, yani fonksiyonların, konuşmak için.
Ve fonksiyonların bir kütüphanesidir fonksiyonlar o başkası
ya da son zamanlarda, yazdığı ya uzun zaman önce, böylece
tekerleği yeniden icat etmek zorunda değilsiniz.
Örneğin, biz değiliz 2015 yılında, bilmek zorunda,
O koyar kod yazmak nasıl benim ekranda bir karakter.
Başkası düşündüm etti Printf fonksiyonu ile
Ben soyut sıralamak böylece uzakta böyle olduğunu, ya da katman
üstünde özel hayatının kodu ve şimdi sadece almak
herhangi bir program yazıyorum hafife ekrana bir şeyler yazdırabilirsiniz.
Yani birinci adımda orada bu ilk satırı Sözde başlık dosyasını içerir
Standart kütüphane.
Yani, dilini bakın Şimdi hangi çalışıyoruz
Standart bir kütüphanesi vardı fonksiyonların bir sürü ile.
Printf bunlardan biri ve Bu kodun ilk satırı
demek bana erişim vermek böylece bu fonksiyonlar, ben
Bu tekerleği yeniden icat etmek zorunda değilsiniz.
>> Şimdi alt penceresine gidelim ve ben daha önce ne yaptığını tam olarak yapmak.
Bir an önce, ne zaman oldu Kod boyunca pırpır etme,
ilk kez dışarı yazarak, Ben çok hızlı bir şekilde daktilo, merhaba olun.
Tüm hakkında tahmin ediyorum Ne oldu?
Ben ne yapıyordu?
Evet?
Boşver.
Tamam.
Evet.
HEDEF KİTLE: Bunu derleniyor.
DAVID J. MALAN: Evet.
Sadece derleme oldu.
Sağ?
Hatta bu tamamen yabancı ise Size bu gibi güzel İngilizce var.
Kesinlikle sıfır değil ve olanlar, bu yüzden hala
sözde aracılığıyla çalıştırmak için gereken Program, bir derleyici, o gidiyor
girdi olarak almak ve çıktı üretmek için.
Ve en azından, şimdi, içinde Bu Linux ortamında,
ancak bu, önkoşul değil Biz başlayacağız sadece burada bu olduğunu
genellikle ile etkileşim Bu gibi bilgisayar sistemleri
sözde komut satırı ile.
Bir yanıp sönen Yani istemi ve klavye,
ve o kadar çok fare değil, çok pencere ve simgeler ve menüler,
yerine her metinsel olduğunu.
Ve bu ilk başta, hissediyor olsa bile bakışta, belki de geriye bir adım gibi,
aslında çok daha var güçlü ve etkileyici bir yol
Bir bilgisayar kontrol Özellikle senin gibi,
Kendinizi daha fazla hale daha az konforlu.
Size bir sürü yapmak için izin gidiyor sadece ne Microsoft daha fazla şeyler
veya Apple ile yapmanızı sağlar Onların grafik işletim sistemi.
>> Yani, şimdi, Enter vurduğunda hiçbir şey bu zaman olur
görünüşte çünkü Program merhaba güncel olduğunu.
Ve komut neydi Ondan sonra koştum?
Nokta merhaba, merhaba dünya çizgi.
Şimdi bir adım atalım Sadece bir an için geri.
Bu merhaba sadece yapmak çıkıyor Bir program derleme basitleştirilmiş bir yol.
Sadece tanıtalım jargonu tek parça,
ama sonra uzaklaşmaya o değil çünkü, ondan
Tüm bu ilginç Bugünün amaçlar için kullanılabilir.
Biz kullanmaya başlamak için gidiyoruz derleyici C dili için, Clang denir.
Ve bu sadece çalıştırılan bir program olduğunu gibi biz orada komut satırında yaptım.
Ve bu yüzden isterseniz Bir programı derlemek ben
merhaba nokta adlı bir dosyaya yazdım c ben gerçekten sadece clang merhaba c tipi
girin.
>> Komik bir şey, tarihsel nedenlerle,
Ben belirtmek yoksa Programın adı
Ben yapmazsam ben, çıktı istediğiniz Bu sıfır için bir dosya adı belirtin
ve olanlar çok garip kongre kabul edildi yıl önce
Bir tür hissettim burada zaman iyi cevap,
İyi sadece keyfi arayalım İlk program bir nokta dışında derlemek.
Bir alfabenin ilk gelir.
Out, çıkış var.
Bu yüzden programı arayacak Bir nokta dışarı varsayılan.
Ben istiyorum çünkü bu iyi dayalı bu metinde programı çalıştırın
Çevre, sadece yazın dot dışarı bir nokta çizgi girin.
Ve bu tam olarak daha önce aday olacağını.
Yani gerçek o kadar hızlı görelim.
>> Ben geri giderseniz Yani benim CS50 IDE kaynak kodu,
ve ben onun yerine bunu, clang merhaba karyolası c girmek, haber hiçbir şey olmuyor,
ama neredeyse her zaman Bu Linux ortamında,
kötü bir şey olduğunu, ne gibi görünüyor zaman İyi bir şey aslında ne demek.
Eğer bir hata görmüyorsanız mesajı tüm muhtemelen iyi olduğunu.
Ben şimdi yaparsam Ve gerçekten, nokta nokta çizgi, bir dışarı benim aynı programı çalıştırmak girin.
Hala merhaba programı var önceki çünkü gerçekten bu kadar
çok güzel, sadece olacak yapmak yerine hatırlayarak yazın
Bu büyüler komutlar, ama hadi bakın nasıl
yine de, bunun üzerine iyileştirebilir.
>> Yani, bu komut kodu derlemek için.
Bu çalıştırmak için komut bundan sonra kodu derlenmiş.
Nasıl bir dosya adı belirtebilirsiniz?
Peki Sadece tanıştırayım jargon bir parçası daha.
Bu olduğunuzda metin tabanlı ortam,
Belirtmek istiyorum gidiyoruz komut satırı argümanları olarak adlandırılan şeyler.
Hangi söyleyerek sadece süslü bir yoludur, isteminde diğer bir deyişle o
davranışını çimdik ne olursa olsun Program koşuyoruz.
Ben Yani özellikle programın adı clang yazarak, çalışan,
Clang adlandırılan bir programdır.
Yani bu ya eski okul çift ​​tıklayarak eşdeğer
Microsoft Word veya Bazı programın simgesini tıklatın.
Ben bunun yerine sadece, adını yazarak kulüpler ancak komut bu sürümünde,
Daha sonra çizgi o boşluk var merhaba uzay merhaba nokta c.
Asla ettik Yani bile daha önce bu dünyada oynanan
Sadece bir tahmin almak nasıl dash o merhaba yapıyor?
Ya bunu yapmak için clang anlatıyor?
Evet.
>> HEDEF KİTLE: [duyulamaz]
DAVID J. MALAN: Evet.
Sadece olmak dosyanın çıktısını ayarlar merhaba yerine dışarı nokta sillier evi.
Ve, gerçekten, bunu deneyelim.
İlk, ben şimdi ne eğer öyleyse r m merhaba hadi yapalım.
Bu kaldırmak var.
Ve kaldır söyleyecek normal dosya merhaba hangi
gereksiz gizemli, ama sadece araçlar Dosyayı silmek istiyor musunuz,
ve ben evet için y yazın.
Eğer üst bakarak eğer Ve fark sol, o orada kaybolur etmedi.
Bana şimdi clang çizgi o yapalım ve Ben, merhaba devam edin ve yapacağım
tüm kapaklar, merhaba nokta c.
Şimdi, ben nokta çizgi yaparsanız merhaba, ne beklenir?
>> Belki de hassas bir dava.
Belki de değil.
Görelim.
Böyle bir dosya ya da dizin yok.
Ve biz tür hile yapabilirsiniz Sadece sol üst bakarak.
Ne Açıkçası yaptım olarak programı kaydetmek?
Tüm merhaba kapaklar.
Yani gerçekten bu gidiş var Bir fark yaratmak için.
Yani şimdi hello world geri döndü.
Şimdi bu, tüm ince ve iyi ve hepsi çok zihin-uyuşturucu,
get tür bu batağa saplanmış ayrıntıları, fakat onları anlamak
güzel.
>> Bu giderek dışarı yazarak Uzun büyüler
Özellikle olacak değil Dünyada eğlenceli, bu yüzden insanlar
, başka bir program icat Birkaç yıl önce, denir
, yapmak oldukça basit make yazmanız için izin verir,
Programın adı Yapmak istediğiniz ve yapmak
o bakacağız ki akıllı Geçerli klasör, dizindeki aka,
ve bir dosyanız varsa merhaba nokta c denilen,
o derleyip dosya merhaba denilen bir programa senin için.
Yani çok daha basit bir yolu var daha şifreli komutları yapıyor
biz daha önce yaptık.
Ve biz önceden yapılandırılmış IDE CS50 bilmek
o çizgi o ve bir numara yapmam gerektiğini Diğer bayraklar, ya da komut satırı argümanları,
Biz uzun zaman önce görürsünüz.
>> Ama şimdi gerçekten yapalım daha ilginç bir şey.
Sadece tüm merhaba dünya yazarak Zaman o kadar zorlayıcı değil.
Bu yüzden bana öncesinde ve değişim gidelim bu program ve merhaba David söylüyorlar.
Şimdi burada gidiyorum.
Devam edin ve merhaba yapmak yapacağım.
Ve yine şimdi görüyorsun yapmak size daha uzun gösteriyor
o olduğunu komutlar dizisi Biz önceden yapılandırılmış çünkü yapıyor
bu şekilde, ama biz Şimdilik endişe gerek yok
ne o başka yapıyor derleme nokta merhaba, merhaba dünya çizgi.
Sorun nedir?
Evet.
>> HEDEF KİTLE: [duyulamaz]
>> DAVID J. MALAN: Evet.
Yani, noobie hata.
Ben, bu süper ince olduğunu fark ama burada yıldız, sekmesinde,
Sadece kaydettiğiniz değil demektir, tarayıcılar ve diğer program ve
bazen bunu.
Yani kontrol s veya komut s kaydetmek gerekir.
Şimdi bana önde gitmeme izin ve programı yeniden çalıştırın.
Çekirdekler.
Doğru, bu yüzden bir çok-aşamalı bir süreçtir.
Hiçbiri, özellikle karmaşıktır ama her zaman biz, dosyayı değiştirmek
Biz sonuçlanımını değiştirmeniz gerekir sıfır ve olanları ve nokta çizgi merhaba.
Vay.
Yani bu çok underwhelming biz sadece bu yazdırılır.
Bir eşyalarını yapalım Şimdi, daha dinamik küçük.
>> Peki like that, çıkıyor Çizilmeye, C değişkenlerini destekler.
Ve isterseniz çıkıyor depolayan bir değişken olması,
gibi biz sayı değil tipik, Scratch ile yaptığımız
ancak bir kelime gibi ya da bir ifade ya da bir isim, sen
Bir değişkeni belirtebilirsiniz tipi string olmak.
Yani biz daha göreceğiz Sadece bir an, bu,
ama o C çıkıyor ve Bunun gibi dillerin bir sürü
değişkenlerin çok özel türleri vardır.
Sadece, cebir gibi değil Bir x, bir y ve z nereden
ve bu sadece her zaman Bir programlama dilinde sayılar,
Eğer can, numaralarını saklayabileceğiniz Tek tek karakterleri depolamak,
Eğer sen-ebil, tam sözcükleri depolamak bütün görüntüler, bütün ses dosyalarını saklamak
ve benzerleri.
Peki ne belirlemeniz gerekir Bizim değişken türüdür.
Ve Kongre tarafından ben diyeceğim benim bu özlü sırf değişken s,
ve s dizesi için duruyor.
>> Ve sonra saklamak için gidiyorum Bu değişkenin içinde
Sadece Scratch ile ister Ben set bloğu kullandığınızda,
Ben kullanmak için gidiyorum C atama operatörü,
hangi güzel yeterince eşit imzalamak, ama eşit işareti yapar.
Bu sağ içine bir şey taşır İfade sol tarafı.
Yani yaptıklarını, açık olmak hat beş, ben bir değişken ilan ettik edilir.
Ben bana vermek, bilgisayar söyledim Bir değişken için bellek, bu s çağrı
ve ben gidiyorum önceden bilmek Bunun bir dize koyarak için.
Ve bir dize sadece bir karakter dizisi.
Bir kelime veya bir cümle veya paragraf var, ancak karakter dizisi var.
Bu sayılar değil.
Ne dize ben olacak değilim Bu değişkene koyarak?
Eh, görünüşe alıntı unquote, "Hannah".
Şimdi ortaya çıkan oluyor desen dikkat edin.
Bir sol ifadesi var.
Bir sağ ifadesi var, eşittir işareti ile ayrılan.
Ve sadece eğer bir tahmin almak yine de yabancı,
noktalı virgül ne yapıyor.
Tahminen bizim için ne yapıyor?
Evet?
>> HEDEF KİTLE: [duyulamaz]
>> DAVID J. MALAN: Evet.
Bu sadece çizgiyi sonlandıran ediyor.
Sağ?
Bilgisayarlar dobra dobra olmak istiyorum kelimenin tam anlamıyla, ne yapacağını anlattı.
Fıstık ezmesi gibi ve jöle sandviç örneği
belirttiğiniz yoksa Tam olarak planladığınız ne
bu kararın hata veya sola olabilir.
Noktalı anlamına gelir bu komut için bu kadar.
Süper hassas davranıyor ve bu kadar çok kolay bir şey bırakmak için.
Yani şimdi bu program görünmüyor I kadar farklı herhangi çalışmayan
daha dinamik hale.
Yani ziyade zor benim kendi olabilir isim, bana bir yer tutucu değerini koyalım.
Ve o çıkıyor ve ben bunu biliyorum belgeleri okuyarak,
ve o, yıllardır fonksiyonu kullanılır Printf dinamik olacak şekilde tasarlanmıştır.
Siz önceden bilmek zorunda değilsiniz bunu koymak istiyorum ne kelime.
Bunun yerine bir olabilir Yüzde s gibi yer tutucu, hangi
anlatacak Bilgisayar, burada bir dize koydu.
>> Hangi dize orada koymak istiyorsun?
Will bunlar arasındaki çıkıyor hatırlıyorum parantez, ayırmak
Bir fonksiyona girdi, varsa virgül, burada şeylerin listesini ayrılmış
biz aslında birden geçmek bir işleve girdiler.
Yani sadece bazı Scratch gibi bloklar, sen olmayabilir
onlarla oynamıştır projeleriniz henüz veya hiç,
Bazı Scratch bloklar iki girişe sahiptir.
İki beyaz kutuları yapabilirsiniz numara veya kelimeleri içine girin.
Yani C gibi işlevleri var etmek iki giriş alabilir printf.
Ve yine, bu virgül Onları ayıran.
Yani İngilizce, yine olsa bile Eğer, daha önce programlanmış hiç
Bu mantık printf bir işlev tarafından, iki girişi alır biri
bir yer tutucudur, ne umuyoruz olduğunu printf bu girdi ile ne yapacak?
Bu merhaba demek için gidiyor Hannah, umarım.
Yani biz kaydetmeniz gerekir bunu yapmak için.
Ben uzaklaştırmak için gidiyorum.
Ben buraya gitmek için gidiyorum ve merhaba girmek yapmak demek.
Ah.
Bir şey yanlış ve aslında Bu oldukça zor.
Ben kod altı hatları ve hatalar 12 çizgiler gibi.
Yani, bu için sabırsızlanıyoruz.
Peki burada neler oluyor?
Yani burada En iyi pratik kural, Eğer dışarı başlıyoruz, özellikle
dalıp alamadım altta şeyler.
Aslında çok bilinçli sadece yukarı kaydırılır
Çok sık bir bilgisayar olduğu Bir cihazın tüm bu parlak.
Bu karıştı almak için gidiyor.
O bir şey görürse o o, anlamıyor
diğer hata olabilir olarak yanlış kod satırları,
olsa bile onlar mükemmel iyiyiz.
Yani her zaman çalışmak istediğiniz hataları aşağı yukarı.
Ve kuşkusuz bu Şu anda Süper gizemli.
>> Hata, bildirilmemiş kullanımı tanımlayıcı bir dize.
Ben standart kastettiniz?
Hayır, ben dize geliyordu.
Ve belki de bir yazım hatası var, işaret ediyor.
Sıralama benzeri, yazım denetimi bir içinde Çok geeky yolu, ama burada neden,
ve bu bileceksiniz Sadece uygulama gereği,
o dizeyi çıkıyor ki Aslında C'de mevcut değildir, Cı
Özellikle eski dildir, ve çok düşük seviyede var:
ve bir çok özellik yok Eğer büyümüş olabileceğini
Eğer varsa, aslında, programlanmış olan Java, bazılarınız olduğu gibi,
ancak bunu yeni şeyler öğretebilir.
Ve gerçekten biz bu CS50 yaptık, Hatta dönem sonunda olsa da,
Bu eğitim jantlar tüm kapalı atılmış olacaktır,
bu içinde ne İlk birkaç haftayı
Başlangıçta biz de var olduğunu Eğer CS50 nokta h bulunmaktadır.
Hangi bir başlık dosyasıdır.
Gelecekte bu konuda daha fazla.
>> Bu işlevleri içeren bir dosya var biz sizin için yazdım.
Ve bu işlevlerin arasında yer alıyor girdi almak için fonksiyonlar
kullanıcı, dizeleri gibi, ve gelen sayılar ve reel sayılar, ve daha fazlası.
Ama aynı zamanda bir kaç kısayolları vardır.
Bir veri türü olarak bir Boole tanımlar.
C doğru veya yanlış yoktur.
Ama biz bunu kavramını verebilir doğru ya da bu kütüphanede yoluyla yanlış.
Ve o da bir dize yok Bu çizgiyi dahil kadar yerleşik.
Yani bu kod satırı söyler derleyici, hey, Clang, bak
Bir bütün bu dosyada kod demet o CS50
böylece yazmış Bu dosyayı kullanan herkes
verilen alabilir özellikler de ekledik.
>> Yani şimdi beni önde gitmeme izin ve ekranı temizlemek,
ve meraklı eğer ben sadece kontrol söylüyorum l Her zaman, ekranı temizlemek için
ya da açık yazabilirsiniz.
Ben şimdi önde gidiyorum ve tipi merhaba yapmak ve tüm iyi.
Hala bir gizemli çıktı ama bu hatalı bir mesaj değil.
Ben nokta yaparsak merhaba eğik çizgi ve bir şekilde kenara, nokta çizgi çoğu yabancı.
Sadece, nokta aracı anlamına gelir Geçerli dizin.
Eğer şimdiye kadar kullandığınız Yani eğer DOS veya Linux veya Unix
Bir şey yapmış olabilir cd nokta nokta gibi
dot dot geriye gitmek anlamına gelir Zaman, ya da geriye gitmek, ya da daha yukarı
senin dizinde.
Dot sadece bakmak anlamına gelir Geçerli dizin.
Ben buradayım, hangi merhaba istiyorum.
Ve gerçekten, şimdi Hannah merhaba diyor.
Ve ben tekrar değiştirirseniz Maria, derlemeye
o merhaba, nokta çizgi yapacak merhaba, programın sürekli değişiyor.
>> Ama bu yine de bir Oldukça aptal bir program.
Ben bu programı gemi istiyorsanız, veya bir arkadaşınıza verin,
veya Maria ya da Hannah ver bu konuda, bu iyi.
Ben, her ikisi için de özelleştirebilirsiniz ama asla dinamik olacak.
O derlenmiş bir kez onlar bunu değiştiremezsiniz aşağı bu sıfırlar ve olanları içine.
Bu yüzden akıllı bir şey ne?
Ne, eğer yerine sabit kodlama Programın bu kişinin adını içine,
biz sadece ne olursa olsun talep üzerine dize?
>> Yani diğer bir deyişle, bunu yapmama izin ver.
Ben bu programı yeniden derlemek için gidiyorum.
Ve bana şimdi altta yakınlaştırmak edelim.
Merhaba nokta çizgi merhaba olun.
Şimdi hiçbir şey olmuyor.
Biz hızlı gönüllü alabilir miyim Bir şey yapmak için?
Yukarı gel.
Adın ne?
>> PANCHO: Pancho.
>> DAVID J. MALAN: Pacho?
Yukarı gel.
Buraya aldıktan sonra, bu çok underwhelming olacak,
ama daha ilginç Benden daha yazarak.
Devam edin ve yazın isterseniz sizin adı, ben sadece sizin için bu programı yaptı.
Sadece adınızı yazın.
Girin.
Harika.
Pekala, çok teşekkür ederim.
>> PANCHO: Çok teşekkür ederim.
>> DAVID J. MALAN: Tamam.
>> [Alkış]
>> Bu çok nazikti.
Hadi bakalım.
Ne yaptık?
Yani biz nihayet en azından Bu program, dinamik yaptı.
Şimdi kesinlikle hala Tasarım Underwhelming tarafından,
ama biz nihayet yeteneğine sahip Şimdi çok önceden kod yazmak
printf yazarları gibi, ve daha sonra dinamik
biz girdi temel alınan adapte teslim ya programcı tarafından,
veya insan tarafından kim aslında programı ile etkileşimde.
Yani deneyin Şimdi aslında atalım birkaç diğer yapıları yapmak
Biz programları yapamaz eğer görmek kendilerini daha sofistike.
Yani öncesinde ve yerine gidelim Sıfırdan bu bir yazma
Ben bugünün içine gidiyorum kaynak kodu, ve tüm bu
Tabii en geçerli Web sitesi ve sürükleyin ve bırakın
Kendi ortama sorun bir kez Cuma gel
set 1 verir talimatlar, ya yaparsın
Komut satırı olarak bunu yapmak iyi, s gelip ama daha 1 olarak ayarlayın.
>> Şimdi bu programda ne görelim Burada engerek nokta c çağırdı.
Şimdi ben zaten yorumladı ettik o, ancak yeni ne var?
İlk bakışta, hangi satır kod kesinlikle yeni mi?
Muhtemelen temelden Şimdi yabancı.
>> HEDEF KİTLE: [duyulamaz]
DAVID J. MALAN: Evet, yani int x n olsun eşittir.
Biz bunların hiçbirini görmedim daha önce, ama int muhtemelen
ne tür sembolü Değişken, [ dan?] tamsayı.
Yani tamsayı için int.
Bu sadece daha fazla davranıyor özlü. x sadece keyfidir.
x ve y ve z, hala sayılar için oldukça makul,
ama genellikle bir kez kelimeleri kullanacağız Bizim programlar daha karmaşık olsun.
Elbette, int alın olsun dize gibi çok,
Muhtemelen gidecek kullanıcının bir int,
ve sonra biz gidiyoruz y ile aynı şeyi yapmak.
Ve görünüşe göre, olsa bile bu Son satır, 24, daha karmaşık görünüyor
Bu toplamı söyleyecek ve bu başka bir şey değildir.
>> Ve ihbar yüzde i Muhtemelen ne gösterir?
Nasıl bir rol yüzde yapar Ben görünüşe hizmet?
Sadece tutucular var.
Sağ?
Yüzde s, dize oldu Yüzde i tamsayı içindir.
Yüzde f Orada gidiyor puan değeri, kayan için hangi
Bir ondalık noktasının sadece bir sayıdır.
Diğer bir deyişle, bir reel sayı.
Yani aslında bu derleme izin gerçek hızlı programlamak ve toplayıcı yapabilirim.
Whoops.
İyi bir fırsat.
Peki tüm bu kez, burada benim kullanıcı fark Bu hesabın jharvard olduğu için isim.
Ben, aka CS50 IDE IDE50 duyuyorum.
Ve şimdi burada mavi, bir söz ama Nerede olduğumu çevreye gelen.
Ve aslında, ben üstüne kadar Büyütmek eğer Burada, ben bir IDE50 var olduğunu fark
ve ben eğer tür, bu kelimeyi bakın , tarafına çalışma alanını başınızı açın.
Özetle, gerçeği Ben tilde çizgi çalışma alanını görüyorum
demek ki, bu metinde tabanlı komut ortamı,
Ben metin eşdeğer duyuyorum Bu buraya klasörü grafiksel.
Yani nokta çizgi yaptığınızda toplayıcı, hiçbir kural söylüyor
Hedef toplayıcı stop yapmak için.
Ben, bunun ne anlama geldiğini bilmiyorum ama nedense kötü.
Böyle bir dosya ya da dizin yok daha açıktır.
Nerede o zaman?
Ben tıkladım nereye dayanarak Daha önce dosyayı açmak için.
Nerede olabilir?
>> Bu kaynakta muhtemelen tek w Çarşamba,
ve ben, gerçekten bunu görebilirsiniz Bunu açmak durumunda.
Orada toplayıcı nokta c ama Bu metin tabanlı bir ortam,
Yine, süper açık olmak zorunda.
Ben içine dizinleri değiştirmek istiyorsanız Kaynak, bir Çarşamba, ben yazmanız gerekir,
cd uzay kaynağı tek Çarşamba şimdi girmek ve
benim istemi değişiklikler Bana bir görsel işaret vermek
Ben başka bir yerde, gerçekten, ben Benim ortamında,
ama şimdi yapmak yapabilirim toplayıcı, o iş gibi görünüyor,
dot bana bir tamsayı vermek, engerek çizgi.
Bir.
İki.
Bir ve iki toplamı üçtür.
Ama işbirliği yoksa, en int yapar ne olsun bakalım.
Bana bir tamsayı ver.
Hayır.
Tekrar dene.
TAMAM.
Güzel.
50.
Pekala.
Yani nihayet işbirliği yapar.
Ve bu bazı var işlevsellik, bu fonksiyonlar
Sizin için inşa etmişlerdir olabilir.
>> Uygulanması içinde çok int ne programlama olsun
muhtemelen bir geçen hafta inşa yeniden deneme bu davranışı var zorlamak için,
yeniden, yeniden deneyin?
Evet, muhtemelen orada döngünün çeşit.
Bu sözdizimsel bakmak için gidiyor sıfırdan en bloklardan farklı,
ancak gerçekte bu Ne dosyanın içinde.
Ve birkaç hafta süre içinde yaparız aslında CS50 kütüphanede bakmak
olarak içinde ne olduğunu, ama orada tam olarak heybetli bir döngü.
>> En aptalca az şey oynayalım Burada bu dosya ile oyunu.
Durum sıfır nokta c.
Biz sadece genel gidiyoruz sıfırdan saymaya başlar.
Ve ben geçmiş kaydırmaya devam üstündeki bazı şeyler.
Mavi Burada, tüm demarcated Bu yıldızların ve bölü,
programı sizin kim daha önce, o da ne?
Neden biz atlayarak duruyorsun?
Ne?
>> HEDEF KİTLE: Bu bir açıklama değil.
>> DAVID J. MALAN: Evet.
Bu sadece bir yorum var.
Bu insanlar için bir yorumdur okumak, bizim durumumuzda bu,
Dosyanın adını bize ne söyler bunu kim yazdı, ve ne o does
bu yüzden yok kod okumaya
Bu dosyanın tüm hakkında ne olduğunu bilmek.
Bu, sadece bir açıklama ama işlevsel alakasız olduğunu.
Ve ben bile silebilirsiniz Benim dosya ve hiçbir etkisi yoktur.
Sulu hatları şunlardır Burada ilk iki, şimdi.
int void main eşdeğer yeşil bayrak tıklandığında bizim ne zaman,
bu yüzden o olacak bırakmak için gidiyoruz Bugün için, ve biz geri geleceğiz,
Sonunda, olarak neyi int ve boşluk, şimdi, ama
Ben ne yaptığımı fark Burada da, sen de yapabilirsiniz
Eğer doğrultusunda bir varsa Eğer varsa, yorum
Bir Paylaşmak istediğiniz düşünce belirli bir kod satırı hakkında,
C kongre çizgi yapmaktır slash, ve sonra birkaç özlü sözler,
bir tam cümle, genellikle bir paragraf,
Bu sadece sizin için açıklıyor, ya da sizin TF, ya da diğer okuyucular veya iş arkadaşları,
kodunuzu ne yapıyor.
Yani oldukça bakmak zorunda daha ve bu da hatlardan sonucuna
Dokuz ve 10, nedir Bu hat sekiz yapıyor
Ben sadece bir yorum vermek bir tamsayı için kullanıcı sormak,
Sonra ben de zor düşünmek zorunda değilsiniz Ne hakkında hatları dokuz ve 10 vardır.
Ben sadece ne olduğunu biliyorum topluca onlar yapıyorlar.
>> Nasıl?
Peki, burada istemi var.
İşte int getting.
Ve önceki dayalı davranış, o olsun int gibi görünüyor
emin olmak için yeterince akıllı İnsan işbirliği ve verir
bir tamsayı.
Ama şimdi biz görüyoruz.
Ve bu Scratch andırır.
Ben olduğumu iddia ediyorum Kullanıcının girişi analiz,
ama biraz yanlış.
Ve görünüşe göre C Bu nasıl biz else if ifade, bir dal,
Bir yol çatal, ama ben biraz yanlış söylüyorlar.
Bu programda hata nedir?
Hakkında daha geri?
Evet.
>> HEDEF KİTLE: [duyulamaz] sıfır.
>> DAVID J. MALAN: Evet.
Ben sıfır yazarsanız Yani, düşünelim tam olarak bu durumda, ya da köşe durumda,
eğer sen.
Ben, sıfır yazarsanız Yani hangi bloklar görünüşe kapmak olacak?
Eğer yoksa?
Başka ve söyleyecek, Eğer negatif bir sayı aldı.
Ve gerçekten de, sıfır gerekiyordu değil pozitif veya negatif,
ve böylece yanlışlıkla olurdu.
Bu bir hata olurdu.
Peki bu düzeltebilirim?
Daha önce programlanmış olmamıştı biri mi?
İster misin--
>> HEDEF KİTLE: [duyulamaz]
>> DAVID J. MALAN: katlanması?
>> HEDEF KİTLE: [duyulamaz]
>> DAVID J. MALAN: Oh, var mı?
Daha önce programlanmış olmamıştı biri.
Şansınızı denemek ister Bu, kırmızı tişörtlü?
Yukarı gel.
Eğer sakıncası yoksa Oh evet, yukarı gel.
Yani programlanmış olan asla daha önce, senin adın ne?
LAUREN: Lauren.
DAVID J. MALAN: Lauren, tamam.
Yani bizim için bu hatayı düzeltmek.
Sen muhtemelen, C görmedim, ve muhtemelen başka hiçbir dil.
Yani bizim için bu programı düzeltmek.
Memnun oldum.
Baskı yok.
LAUREN: Evet.
>> DAVID J. MALAN: Fakat yine de, eğer bu kumar, plana göre giderse
paket burada olacak başlatmak için, sadece tekrar olmak
desenleri fark ve Mevcut sözdizimi sonucuna
Eğer ifade olabilir başka nasıl Kendinizi, hayır cinas sipariş, amaçlanan
bazı ek senaryoyu yakalamak için.
Yani biz eğer başka söylüyorsun.
printf iyi.
Ve CS50 ile fark IDE ve frankly-- IDE
Entegre açılımı Geliştirme Ortamı.
Bu söyleyerek sadece süslü bir yoludur size programı yardımcı olan bir programdır.
Bu gibi kullanıcı dostu şeyler yapar Bir parantez yazdığınızda,
size otomatik diğer verir.
Karine sen varlık sonunda o tip istediğiniz olacak,
ve aynı zamanda tırnak ile yapar.
>> Yani çizgiyi 23 gibi.
Orada yol% 99.
Birisi bir ipucu ile uymak istiyor?
Ben izleyici noktalı virgül duydum.
İyi.
Yani bu tamamlar.
Ve şimdi, ben biraz var hat 21, şaşkınlık.
Bunu nasıl ifade etmek istiyorsun?
Ne soru istiyoruz Sizce, sormak?
Yani önce biz soru soruldu, n, sıfırdan büyük olup, bunu yapmak.
Else, bunu.
Yani biz bir seçmeniz gerekir soru burada sormak.
HEDEF KİTLE: [duyulamaz]
DAVID J. MALAN: İyi.
N sıfıra eşit Yani eğer.
Mükemmel.
Yani burada duralım.
Bu braving için çok teşekkür ederiz.
Sana küçük bir hak verelim belki orada stres topu.
Yani biz neredeyse oradayız.
Aslında, Lauren, bunu yaparsanız değil Zihin, bana kimse burada çimdik yapalım
sadece bile tutarlı olmak Biz Scratch gördüklerim ne
Ben çizgilerle yapmak istiyorsunuz 21 ve 24, sadece tekrar tabanlı
Biz Scratch içinde bunu nasıl, belki?
>> HEDEF KİTLE: it up taşıyın.
>> DAVID J. MALAN: Evet, yukarı hareket ettirin.
Yani başka bir koşul, üçüncü veya Dördüncü veya beşinci, ya da son dal,
gerçekten sonra gelmelidir, ve bu, sadece kongre tarafından var
Sadece eğer sen çünkü.
Yani bu çimdik yapmak gerekiyor.
Ve ben gözlerimi koymak gerekiyor Buraya kaşlı ayraç.
Ve şimdi, bu program derleyecek.
Biz çok yakın, ama orada Çok, çok ince hata.
En ne görelim.
>> İlk olarak, bana devam edin ve uzaklaştırma edelim.
Ben devam edeceğim ve durumu sıfır yapmak yazın.
Ah, yalan söyledim.
Şimdi derleyici aslında oldukça zeki.
Ve ben gerçekten anlamıyorum bu hata mesajı var.
Bir atamanın sonucunu kullanma Parantez olmadan bir koşulu olarak,
Görünüşe göre kötü.
Ama bu ne anlama geliyor?
>> Peki tekrar desen arıyor Biz daha önce gördüğüm kodu
Aslında yapıyor hat 17 nedir, Hatta Lauren biraz amaçlanan olsa
Aksi?
Evet.
>> HEDEF KİTLE: [duyulamaz]
DAVID J. MALAN: Evet.
Yani görünüşe göre, eşittir işaretini hatırlıyor Daha önce kullandım gibi değil eşittir değildir.
Sağ taraftan Onun atama, sola.
Yani şu anda 17 satır bir durumdur, ve bu kadar
Parantez içindeki kod yürütme, ama bu kod çalıştırdığında,
Ne sıfır değerine oluyor?
Ne n değerine oluyor?
Sıfır olmak.
N sıfır haline Yani, ve yine geçen hafta başına,
genellikle o sıfır demek yanlış ve bir doğrudur
ya evet biridir ve hiçbir sıfırdır.
Yani doğru ve yanlış, bir ve 0.
Hat 17 arasında n olmuşsa değeri 0 Verilen sıfır doğrudur?
Hayır.
Tanım olarak, sıfır yanlıştır.
İşte biz konum kongre var ilerlemeye sarılmak olacak.
Yani olacak hatları 18, 19 ve 20 Hiç mantıklı, şimdi uygulamak?
Yapamazlar.
Bu yüzden soru soruldu ama oldukça hassas,
ve sürece bu bilemeyiz Eğer, C çözüm gördüm
Eğer ifade etmek istediğinizde ise eşitlik, sen eşittir eşittir söylüyorlar.
Yani eşittir işareti zaten kullanılan atama yoluyla, sağa sola doğru.
Eşittir araçlar eşittir.
Ve gerçekten aklını istiyorsanız JavaScript ve PHP, bükük olmak,
var eşittir eşittir, eşit olan tamamen başka bir şey demek,
ama biz uzun zaman önce o alırsınız.
>> Yani bu basit bir düzeltme, ama fark Bu hata yapmak için süper kolay,
ve daha sonra merak ve mücadele dakika boyunca değil, bir saat, eğer,
neden benim kod değil Ben niyetinde olarak yürütülmesi?
Eğer söylemedin çünkü var o tam Ne demek istediğini.
Yani neredeyse oldu mükemmel, o ve büyük
Biz bu iki küçük tökezledi olduğunu şeyler, biz bunları düzeltmek şimdi çünkü eğer
ve ben koşul sıfır yapabilirim nokta, durumu sıfır çizgi
Ben bir tamsayı istiyorum, lütfen.
Görelim.
Hayır.
Bunu yapmak için beni zorlamak için gidiyor.
Yani 42.
Ben pozitif bir sayı aldı.
Yani şimdi nasıl ispat yapmak Doğru bu program?
Bir matematikçi iseniz, yapamazsın Gerçekten deneme yanılma yoluyla bu kanıtlamak,
sağ?
Sen tarafından sadece kanıt can Örnek, ama en azından
Bir programcı olarak biz değiliz Şimdilik kanıtlamak için denemek için gidiyoruz
Bu aslında o Doğru, ama ben muhtemelen gerektiğini
Bazı temsilci vakaları test edin.
>> Ben 42 test ettik.
Ben 43 test edebilir.
Ben 44 test edebilir.
Testi 45.
Sağ?
Ama bu gerçekten uzun bir zaman yapabilirdi.
Biraz daha ne olurdu ilginç vakalar denemek için?
HEDEF KİTLE: [duyulamaz] sıfır.
DAVID J. MALAN: Yani sıfır.
Kesinlikle.
Ve iyi, biz, bu sefer var Lauren'in yeni kod sayesinde.
Denemek için iyi bir durum nedir?
HEDEF KİTLE: Negatif biri.
>> DAVID J. MALAN: Negatif biri ve belki biraz daha büyük bir şey,
belki 42 negatif, ama genel olarak, ne zaman
Programlarınızı test ileriye doğru hareket, sen
düşünmek istiyorum gidiş Kendinize, ne gibi
temel farklı durumlardır.
Ve ben negatif bir olgu söylemek cesaret, Pozitif vaka ve sıfır vaka
hemen hemen bu tamamlamaktadır.
En bu olsa bir varyantı bakalım.
Koşullar on.
Bu, burada doğru çözüm Online iki ve göreceksiniz ki,
Eğer doğru yürümek walkthroughs, genellikle olacak
Bu adım adım kadar artırmak biz tam olarak doğru bir yaklaşım olsun.
Biz sormak istedim ne iki soru seferde?
>> Beni bunun yerine açalım.
Nedenlerden dolayı Sigara anahtarı, Biz başka bir zaman görürsünüz.
Ne sözdizimsel Burada yeni?
Şu anda bir oyun oynuyorum burada bilgisayar anlatıyor
Beni, bana bir tamsayı vermek bir ve 10 arasında,
ve sonra kullanıcı girişi yargılamak ediyorum.
İngilizce dayalı burada gördüğünüz kodu
mavi, bu program ne yapıyor?
HEDEF KİTLE: [duyulamaz] aldı Bir büyük ya da küçük numara.
DAVID J. MALAN: Evet.
Bu sadece olup olmadığını karara bağlamak ediyor Ben büyük, ya da orta aldı,
ya da az sayıda, çok göre küçük, orta keyfi tanımı,
ve burada büyük, ama haber yeni sözdizimi şudur.
Int veya eşit daha az var imzalamak veya veya daha imzalamak eşit büyüktür,
Nerede biri, diğeri üzerinde sen misin Microsoft Word gibi ifade edebilir.
Bir programlama dilinde Yani tipik sadece iki karakter yapmak,
birbiri ardına.
Ve bu muhtemelen ne , işareti işareti temsil etmektedir.
HEDEF KİTLE: [duyulamaz]
DAVID J. MALAN: Evet.
Bu sadece anlamına gelir ve bunun nedeni C yazarları çıkıyor
Tek bir işareti kullanılan hangi düşündüğünüzden
kavramı için mükemmel olurdu ve, zaten bitmiş durumda
böylece işareti işareti aslında biz aslında istiyoruz davayı yakalar.
>> Yani şimdi iki şey rastlamak edelim.
Beni go ahead ve bir açalım.
Biraz endişe verici bir şey.
Tutarsızlık nokta c.
Beni burada iki şeyi tanıtalım.
Yapabileceğimiz Bir, haber matematik, kadar zaman önce
Biz artı iki numaraları, x ve y'nin yaptı.
Bu program, görünüşte ne yapıyor?
Ben, henüz yorum yok ettik ve ben yüzde f sunduk,
ama hızla daha önce söylediğim Yüzde f kayan nokta anlamına gelir
Gerçek sayı değeri.
Bir ondalık ile bir şey bir tamsayı değil noktası.
Bu program ne düşünüyorsunuz Ekranda bana göstermek için çalışıyor?
Evet?
HEDEF KİTLE: 10 üzerinden bir sonucudur.
DAVID J. MALAN: Evet.
Ne 10 bölü birinin sonucudur.
Doğru, çünkü hepiniz muhtemelen 10 üzerinden Şunu bilerek büyümüş
nedir?
Evet, sadece 1/10 ya da 0.1 var.
Sağ?
Yani bu aslında ne görelim.
Bu yüzden bana go ahead ve bu tasarruf sağlar.
Beni buraya gidelim.
Tutarsızlık nokta çizgi olun belirsizlik ve ihbar da,
Linux ortamında, değil mi belirsizlik dışarı yazıp almak zorunda
gün boyunca.
Genellikle, Sekme vurmak, eğer sizin için düşünce sona erecektir,
olan kelimelere dayalı geçerli dizinde mevcut.
TAMAM.
Yani sen haklıydın.
10 ile bölünmüş bir, aslında, 0.1.
Ama ben biraz merak ediyorum.
Ve printf çıkıyor Bazı özelliklerini destekler
Eğer daha fazla belirtebilirsiniz sayede ondalık noktalarının varsayılan numara.
Yani 10 ondalık görmek istiyorsanız Ben yüzde yapabilirim noktaları,
Yer tutucu sembolü için, dot 10 Bana 10 ondalık sayı vermek,
ve sonra yine kayan nokta değer ve bir kenara olarak,
Bu ters eğik çizgi n ne görünüşe göre biz kullanmaya devam?
Bu bir var çıkıyor yeni bir hat için sembol.
Bu çok açık bir yoldur Bilgisayara söyleyerek,
Bir sonraki imleci sonra çizgi bitirdiniz.
Ve biz ne olur göreceğiz biz yapmıyoruz zaman.
>> Beni belirsizlik yapmak derlemeye edelim.
Şimdi belirsizlik çizgi nokta.
TAMAM.
Hala doğru.
Bir 10'a bölünür.
Şimdi alıyorum bir Biraz meraklı olsa.
Ne 20 ondalık bakarsanız işaret, derlemeye, yeniden çalıştırın,
ve bir kenara gibi hız, ayrıca kullanabilirsiniz
senin kadar ve aşağı oklarını senin tarih boyunca ilerleyin
böylece tutmak zorunda değilsiniz Bu komutlar yeniden yazmak girin.
Huh.
Ben ilkokuldayken öğrenmek vermedi.
Pekala, bana izin : 29 yerler gibi görüyorum.
Belki sadece bir tesadüftü bu.
Belki benim bilgisayar garip davranıyor.
Bu doğru bir şey değil?
Bu deterministically şeyler yapıyor.
Yani belirsizlik olun.
Tamam, bu kadar berbat oluyor.
Peki ne oluyor?
>> Yani görünüşte sizin yanınızdaki Öğretmen yalan olmuştur
Bu sürenin tamamı için size Biz uzun zaman önce görürsünüz nedenler.
Ama bir başka program ile bitirelim.
Bu biraz programlar Birisi, birkaç yıl önce yazdığım
ve aslında bir yarışma parçası.
Hiç kimse aslında kod yazıyor Bu gibi ve bunu yaparsanız,
Bu üslup bir sorundur.
Ama insanlar palavra hakları için bunu.
En kafa karıştırıcı yazmak için seyir program o
yine ilginç bir şey yapar.
Ve not biz bırakmak düşündüm Bugün, Colton bizi buraya çalış önce
Bu programı çalıştırmak için, Hatta sadece kullanarak hangi
Bu metin tabanlı C çevre, bize bu verir.
Lanet olsun.
>> [KAHKAHA]
>> Yanında olmak.
[Duyulamaz] c çizgi l m.
Sen büyülü görmeye gidiyoruz Biz uzun zaman önce görürsünüz sözler.
[Duyulamaz] Pekala.
Ve şimdi bile yapabilirsiniz Böyle şeyler yapmak.
Bu kadar.
CS50 biz için, Cuma günü görüşürüz.
>> [MÜZİK OYUN]
>> [Alkış]