>> [MÜZİK OYUN]
>> HOPARLÖR 1: Bu CS50 ve Bu haftanın iki başlangıcıdır.
Yani, sağ şeye dalış izin Bu tabiri caizse, adamcağız.
Yani, burada CS50 IDE ve ben ettik Bu lanet screen-- peşin çekti
o.
İpucu uyarısı.
Pekala.
Ben burada bu ekranı çekti ettik hangi çok basit bir programı vardır.
Biz aşağı kaydırma ise, çoğu Bu sadece comments edilir,
ancak burada satır 13 yoluyla 17 bir program var.
>> Bu eğer anlamına gelir sözdizimi kurallarına göre geçerli değil Ben, bu derlemek ve çalıştırmak olacak, bunu derlemek
ama adamcağız var.
Bu program yorumlarda iddia kontör o 10 yıldız yazdırmak gerektiğini
ama öyle değil.
Ve deneyime dayalı, veya yakında C deneyim olması için,
mantıksal ayırt edebilirsiniz Bu, aslında, adamcağız neden?
Evet?
HEDEF KİTLE: Bu sıfırdan 10'a gider.
İşte 11 yineleme var.
KONUŞMACI 1: Evet.
Yani, sıfırdan gidiyor 10'a kadar yukarı ve eşit,
Tabii ki 11 yineleme olduğunu.
Yani, gidiyor Baskı, aslında, 11 yıldız.
Yani, bilgisayar bilimleri kongre çoğu programlama dillerinde
yapman lazım, gerçekten, sıfırdan saymaya başlar,
ancak değil doğru saymak Aslında umurumda değer.
>> Şimdi, bu bir şey olduğunu Biraz alışmak alır
ve tasarlanmış, hatta Scratch, olduğu gibi non programcılar ya da olmayan bilgisayar için
Bilim adamları ve çocuklar için büyük ölçüde, sahip olacak şekilde tasarlanmıştır
Eğer bir de genel saymaya başlar.
Ve bu iyi.
Kesinlikle saymaya başlayabilirsiniz bir o daha rahat eğer.
Ve ve 10 arasındaki saymak, ancak Bu hafta özellikle fark edeceksiniz
ve bunun ötesinde sadece bu yüzden programlamada birçok şey
0 ilk olduğunu varsayalım Eğer saymak hangi basamak,
Eğer daha kolay bulmak için gidiyoruz Sadece başlangıç ​​bu alışkanlığı içine almak için
Sıfırdan ve değerine kadar sayma sizden şu anda umurumda
gitmek olsun.
>> Yani, o belirlemiştir.
Biz daha az değişti ya sadece az eşittir.
En az bir göz atalım Burada bir ikinci örnek.
>> Yani, bu program da iddia ediyor onun o yazdırmak gerektiğini kontör yorumlar
On yıldız, ama öyle değil.
Burada hata nedir?
>> Yani, ne-- ve üzgünüm, açık olalım.
10 yıldız.
Satır başına bir, ama öyle değil.
Yani, aslında, beni go ahead ve derlemek izin biraz daha az, çünkü bu bir
Bu açıklama dayalı temizleyin.
Bana bizim kaynak dizine gidelim.
Adamcağız tek nokta çizgi, adamcağız biri yapmak.
Tamam, ben 11 yıldız, bakın hangi hala sorunludur
ama onlar bir satırda aynı zamanda tüm sensin.
Burada sorun nedir?
Evet.
HEDEF KİTLE: [duyulamaz].
KONUŞMACI 1: Evet.
Yani bu bir incelik olduğunu sen olabilir olduğu Bana kısa söz verme hatırlıyorum.
Hatta her şey görünüyor olsa güzel ve o güzel girintili var,
ve bu tür Scratch-benziyor 16 ve 17 olduğu doğrultusunda,
Gerçekten, döngü o altında girintili.
Bu önemsiz değil.
Bilgisayar yok bilmek ya da boşluk görüyorum.
Beyaz boşluk sadece içindir Bize biçimsel, insanlarda.
Eğer varsa bilgisayar biliyor Gerçekten kaşlı, hangi olur,
Bu sorunu gidermek.
>> Yani, biz aslında gitti ve açıkça bu küme parantezi koymak
Bu bu sorunu çözmek istiyorum derleyici açık hale
Aslında yürütmek istiyorum Yine kod iki satır,
ve tekrar ve tekrar.
Ama temel bir açıklama ne?
Sağ?
Biz kesinlikle gerek yok kıvırcık, her zaman parantezi
muhtemelen en iyi olsa bile uygulama zaten bu alışkanlık haline almak için
Hatta iki ekler olsa kodunuzu karakter. neden?
>> HEDEF KİTLE: [duyulamaz]?
HOPARLÖR 1: Evet böylece var: tamamen başka bir çözüm.
Sağ?
İlk bakışta bilmiyorsun Özellikle Gerçekten ne olup bittiğini takdir ediyorum.
Eh, elbette biz-ebil Sadece bir kere de iki şey yapmak
ve sadece tamamen sorunu önlemek.
Ve bu, şimdi iyi, ama Bugünün amaçlar için neler
hata açıklaması nedir?
Neden tek bir satırda bütün bu yıldız vardı?
Evet?
>> HEDEF KİTLE: Bu eğer görünüyor Eğer bir kod satırı var
O olmadan bunu yapabilirsiniz.
KONUŞMACI 1: Kesinlikle.
Bu sadece bir insan sözleşmedir.
İnsanlar bir fark olduğunu biraz can sıkıcı ya da sıkıcı
Tüm küme parantezi koymak zorunda Eğer yapmak istediğiniz tüm eğer zaman
bir kod satırı çalıştırmak olduğunu.
Yani, insanlar karar bazı Bu güzel önce o zaman.
Eğer döngü koymak istiyorsanız Böyle sadece bir satırda,
bu tek sorun yok sonunda noktalı virgül.
Ama sadece böyle bir yapabilirsiniz kaşlı ayraçlar olmadan hattı.
>> Peki, ne zaman CS50 stil rehberi , sizi yönlendirecektir olarak
genellikle göreceksiniz ki iyi alışkanlıktır
sen kadar bu içine almak oldukça rahat straying
sözleşmelerin bu türlü ve kendi şeyi yapıyorum.
Madem tutarlı kendini konum olarak.
Ve biz hakkında daha fazla konuşacağız Daha sonra bugün biraz stil.
>> Yani, bana bir başka programı açalım.
Tabii ki, biz gerektiği de bu 10 düzeltin.
Bana devam edelim ve gerçek bilgileri Ben arayacağım hızlı bir program,
diyelim ki, döngü C. Yani, döngü C dot Ve döngü nokta C I için gidiyorum
Standart I dahil / Ç dot H ana boşluğu int.
Ve şimdi sadece gerçekten bir döngü, yapalım.
Yani, 4 int sıfır alır.
Ben 50, diyelim ki, daha azdır.
Ben artı, artı.
Ve sonra buraya atalım go ahead ve F yazdırırım
Ve sonra ben yazdırmak istediğiniz ve yeni bir satır, virgül.
>> Ve bu tüm yazdırmalısınız sıfırdan sayılar 50'ye kadar?
Birkaç kafa sallar.
Birkaç nos.
Zaten hata nedir?
Yaptığım kolay hata nedir?
Evet.
>> HEDEF KİTLE: [duyulamaz].
KONUŞMACI 1: Evet.
Bu yüzden bile görünüyor olsa bu benim niyetinde ne gibi
Ben de olduğunu hatırlamak Sadece bir ASCII karakter.
>> Yani, ben derseniz, print "I."
Kelimenin tam anlamıyla gidiyor eğer, Ben de öyle yazdırmak için ben
plug-in bir yer tutucu istiyorum değer Aslında bunu yapmak gerekiyor
ve sonra plug-in dinamik I değer.
Aksi takdirde ben sadece gidiyorum Ekranda 50 Ben 's olsun.
>> Yani, bana devam edelim ve Bu döngü yapmak, koşmak,
ve aslında, hepimizin var kadar 49 ile yol.
Ben zamanında geri kaydırma Ve eğer görüyorum başında sayı sıfır.
>> Eh, ben tür ne berbat olur?
Ne bu yaparsam?
Sadece ben düşünmüyorum çünkü.
Bu program nedir.
Bir kez derlenmiş ve koşmak yeniden, mantıklı yapacaksınız?
>> HEDEF KİTLE: Hiçbir şey.
>> KONUŞMACI 1: Hiçbir şey.
Neden?
>> İZLEYİCİ: I sıfır için tasarlanmıştır.
Yani, koşul yanlıştır.
KONUŞMACI 1: Evet, kesinlikle.
Tüm kod sözdizimsel, doğrudur.
Bu, bu derleyecek kod çalışır, ama değil
yararlı bir şey yapacak Ben başlatmak çünkü sıfıra.
Sonra ben 50 daha büyüktür, kontrol ettin mi?
Açıkçası, hayır, öyle değil.
Yani döngü hiç yürütür asla.
>> Ne bir şey yaparsak Biraz daha pervasız?
Biz int gibi yaparsak Yani, sıfır Ne olur.
Ve şimdi bana süre kullanmama izin Başka bir koşul olan loop.
Ben, söylerken Ve ben daha fazla iken veya sıfıra eşit ve daha sonra burada ben
döngü yapmak, go ahead ve dosyayı kaydedin.
Ve bunu çalıştırmak üzereyim.
Ne bu görmeye gidiyorum Bir süre döngü ile zaman?
Evet.
>> HEDEF KİTLE: sonsuz bir döngüye?
>> KONUŞMACI 1: sonsuz bir döngüye?
Evet, ve neden?
HEDEF KİTLE: her zaman sıfır var çünkü.
KONUŞMACI 1: Evet.
Yani, sıfır olarak başlatıldı.
Tabii ki her zaman büyüktür veya daha sonuç olarak 0'a eşit.
Yani, ben sadece gidiyorum sonsuz görüyoruz.
Ve şimdi, bu kez geldi ya da iki kez dersin kafaları.
Ne zaman size olur sonsuz bir döngü var?
>> HEDEF KİTLE: Denetim C.
KONUŞMACI 1: Evet.
Yani Kontrol C sonunda cevap verecektir.
Ne yazık ki, biz baskılı ettik milyonlarca zaten sıfır milyonlarca
ve bu nedenle bilgisayar var tür önümde var.
Yani, görmezden gidiyor Bana biraz için.
Ama sadece Kontrol Cl birkaç vurmak Mac veya PC klavyesinde kez
Sonunda o, gerçekten sonlandırmak gerekir.
Ve eğer, size bazı göstereceğiz Uzun nerede önce teknikleri
Aslında zorla programları öldürebilir, çok Windows ve Mac OS gibi,
eğer gerekirse.
Ama başka bir şey deneyelim.
En doğrusu I. mı artırmak edelim bu hala sonsuz olacak?
Bana bu çalıştıralım.
Ve şimdi biraz can Neler görüyorum.
Bu da sonsuz bir döngü olduğunu.
Ama bu hile soru bir parçasıdır.
Bu sonsuza kadar sayıları yazdırmak olacak mı?
>> İZLEYİCİ: Hayır
KONUŞMACI 1: Hayır
Neden?
Buraya bazı nos duydum.
Evet Someone--.
HEDEF KİTLE: Yeterince yok bit gerçekten devam etmek.
KONUŞMACI 1: Tamam.
Yani yeterince yok bit devam etmek.
Peki, ne olacak?
Sadece durdurmak için gidiyor?
>> HEDEF KİTLE: Bir noktada o Şeyin kapanacak
KONUŞMACI 1: kapanacak Döngü aşağı, ama neden?
Ne de ne olacak kendi sınırları çok uç?
Evet?
HEDEF KİTLE: Bu döngü olacak geri negatif sayılar için.
KONUŞMACI 1: negatif sayılar için, ya da Biz sadece pozitif tedavi olsaydı,
Sıfır en azından.
Yani evet, kesinlikle.
Biz son kez gördüğünü hatırlayın eğer senin bitler bir çok kez artırmak
ve taşma orada ön senin int kapasitesi
ya da veri türü sen, ne olursa olsun etrafında sarmak için gidiyor, muhtemelen,
İki negatif sayılar.
Yoksa bunu belirtmek ettik eğer senin aralık, sadece pozitif olmalı
Yapabileceğiniz hangi ama Biz henüz görmedim
En azından geri sıfır sonunda olabilir.
Rağmen aslında evet.
Bu durumda negatif sayılar, bu durumda,
döngü sona erdirmek için gidiyor I olmadığı için, aslında,
daha büyük ya da eşit bir Sıfır negatif ise.
>> Peki, ne yazık ki, nasıl Yeter ki beklemek zorunda kalacak?
Şu anda kadar konum Ne 2000000-ish?
Biz, 2 milyar gibi Biz beklemek zorunda gidiyoruz
kadar biz aslında bu belirtiyi görebilirsiniz.
Ama biz, biraz daha hızlı görebilirsiniz Biz kesebilirsiniz bakalım belki--.
Hadi.
Hatta menüleri yavaş yavaş ortaya çıkıyor.
Pekala.
Yani, biz uzun zaman önce tekrar bu geleceğiz.
Bu, yavru kahretsin seferinde-- bir iyi.
>> Bazı duyurular için iyi bir zaman.
Yani, gibi olabilir eğer YHack meşgul,
Bir olay hangi ediliyor Yale dostlarımız tarafından desteklenen.
Ve gerçekten de, bazı ders en Yale'de TFs buna katılmaktadırlar.
YHack uluslararası bir hack-a-thon tarafından barındırılan ve tutulan
Yale, 1.500 araya getirerek fikirli bilgisayar korsanları ve tüm reklam gibi
dünyada.
Bu ilgi ise, Burada bir göz atın.
Bu üzerinde çok kısa ise Ekran, bugünün slaytlar bakmak
yhack.org için URL.
Yani, aynı zamanda birkaç hızlı duyurular.
Yani, resmen bölümler başlayacak önümüzdeki hafta hem burada hem de New Haven.
Bir almak olacak Unutmayın E-posta daha sonra bu hafta sonu büyük ihtimalle.
Bu uzun zaman alır bölümüne CS50 için,
verilen tüm insanlar sınıf ve herkes dolaşırım.
Ve tüm Öğretim Üyeleri ' programları da halen güçlendirilerek,
ama bir e-posta ve ihtiyaç halinde bizi izlemeye devam edin , yeniden bölümü olabilir olmak sonra orada.
>> Study.cs50.net.
Yani, sürekli bir katılımcı bile bölümlerinde, hemen hemen tüm fark
kaynak Biz bölümlerinde kullanımı CS50 de kamuya açık
Burada bu adresten eğitim.
Yani, hiç inceleme yeniden isterseniz veya önceden okuma bölümünden malzeme,
ya bazı hafta yapamaz, Bu örnek slaytlar gerçekleştirmek,
ve sorunlar ve tanımlar, ve daha yanı sıra tüm vardır.
>> Ofis saatleri, bugün devam ve yarın ve Çarşamba,
ve Perşembe ders en çek programı için web sitesi.
>> Ve aynı zamanda, şu anda başlatılması Bugün CS50 tartışın olduğunu.
Yani, eğer ve soruları olduğunda birbirlerine ya da dersin personeli için,
ve genellikle çalışıyoruz Bazı sorun sette,
mutlaka yok fark Size bir sonraki insana çevirmek zorunda.
Kimse yok varsa, bunu yapabilirsiniz Bize ve sınıf arkadaşları ulaşmak
Online CS50 aracılığıyla tartışın.
Yani, bu bir tartışma dersin tahta,
bu fark belki de en iyisi
Eğer varsa başlamak için yer ofis saatleri soruları ne zaman dışında
özellikle.
>> Öğle Yemeği de bu hafta başlayacak.
Fire and Ice [Duyulamaz] New Haven.
Tabii en az bir göz atın sırayla web RSVP için.
Ilk gelen bunun için hizmet vermektedir.
Bu hafta içinde alamazsanız bu en her Cuma yapacağız
Dönem içinde.
>> Tamam, şimdi derecelendirilmesi ile ilgili bir kelime.
Biz sorunu girmek özellikle Bu hafta hangi bir set
ve problem iki ve daha sonra ayarlayın.
Nasıl P setleri değerlendirilmesi gidiyorsun ve bunların kalitesini değerlendirmek?
Yani, biz kullandığımız dört eksenleri var CS50 ve burada bu dört sensin.
>> Bir sayısal üzerinde yakalar Kapsam, P kümesinin ne kadar temeli
Eğer mücadele etmedi.
Kabaca tekabül ediyor çaba ve yakalama şeklimiz var
Eğer denemek yarısı P vermedi P takımdaki tüm ayarlayın.
Bu mükemmel almak için kolay bir tanesidir bunu yaparsanız puanları, gerçekten,
P kümesinin her yönüyle deneyin.
Yani, aklınızda tutun.
>> Doğruluk tam olarak bu.
Spesifikasyon olarak kod çalışıyor mu ve değnek örnek çözüm olarak
kodunuz öneririz Aslında, çalışmalıdır.
Eğer bir araya geldi değil varsa, 50 kontrol Henüz P olan bir şartname set
ve genellikle olacak Sana evet / hayır cevaplar vermek
olmadığı konusunda kodunuzu doğrudur.
En azından şimdiye kadar gidiyoruz olarak o deneylerine dayanmaktadır değerlendirebilir için
biz bu program dahilinde çalıştırmak.
>> Tasarım çok daha özneldir.
Bu ne kadar iyi yazılmış kod olmasıdır.
Ve bu bir şey olduğunu Eğer zamanla daha iyi alırsınız
ve bir şey olduğunu yaparız var daha nitel geribildirim sağlamak.
Ve tasarımı ile ben belki önce uzun Demek istediğim
Bazı P cazip olabilir loopingly bir şeyler yapmak için ayarlanır,
ama belki üç, ya da dört, ya da sahip olmak Beş iç içe ön döngüler veya iç içe iken
döngüler.
Bu genellikle gerekir Eğer yalakalık yapmaya başlar
ve genellikle olacaktır kabul kötü tasarım.
Ve sen sınıfta görmeye başlayacağız ve şeyler yapmanın sınıf iyi yollarından dışarı
şeyler yapmanın kötü yolları olduğunu tüm doğru olabilir, ama olmayabilir
mutlaka iyi tasarlanmış.
Bir kompozisyon yazma gibi.
Sen sözcükleri koymak mümkün olabilir dilbilgisi bakımından doğru olan sayfa,
kompozisyon ya ama onlar konum tez adildir
Tamamen tutarsız ya da ikna edici.
Ve bu da analog olabilir kötü ya da iyi bir tasarım yazılı dünya.
>> Ve stil de oldukça özneldir.
Ama en azından biz tutarlılık bekliyoruz.
Bu ne kadar güzel kodunuzu olmasıdır.
Güzel şeyler girintili?
Senin değişkenler de adlandırılır / tüm Are senin parantez ve kaşlı ayraçlar arasında
olması gerektiği gibi hizalanmış?
Biz bir CS50 stil rehberi var Sorun seti de işaret eder.
Bunlar daha rahat Bu sokak hoş geldiniz
Çok uzun kendini tutarlı olarak.
Ve bu da, bir ders Biz bölümünde takviye edeceğiz.
Yani, tüm bu eğer biraz oldu Hızlı, fark P seti ve bölümler
uzun zaman önce daha derinlemesine girecek.
>> Ama genelde biz CS50 için çok az kovalar.
Skorlar bir ölçekte genellikle bir-üç ya da birden beşe kadar.
Biz gerçekten-- konum ve ben söyleyemem ilk hafta içinde bu yeterli.
Üç iyidir.
Yani, olsa bile, evet, üç üzerinden beş normal, matematiksel
yüzde 60 veya D eksi gibi olabilir.
Üç aslında iyidir.
Ve, aslında, beklenen Sınıfta öğrencilerin çoğu
etrafında terimini başlamak için ikişer, üçerli ve ve dörtlü.
Muhtemelen çok değil beş.
Çok az olanlar.
Ama genelde başlaması eğri o tatlı nokta
böylece zaman ilerledikçe bu, Oda aslında var,
Üst ilerlemesi için ve fırsatlar.
Yani,% 60 ile üç eşit etmeyiniz.
Çok daha soyut daha var.
Biz hesaplamak hangi formül aşağıdaki gibi notları ağırlıklı.
Doğruluk en değer.
Tasarım biraz daha az değer.
Stil biraz daha az değer.
Bu, genel olarak süreyi yakalar
her alıyorum gider Bu eksenlerin sadece sağ.
Stil, süper kolay süper hızlı olmalı,
ama kolay bir alışkanlık hakkında tembel olsun.
Doğruluk sürebilir çoğu zaman.
Bazı böcek gücünü aşağı Chasing , bu ekstra saat veya daha fazla sürebilir
ve bu nedenle, puanlama sonuçta o yakalar.
Ve böylece, artık daha ciddi bir kelime.
CS50 sahip olduğu ayrım, daha iyi
ya da kötü olma belki de daha iyi tanışmış
akademik sorunları ile En Başka ders daha dürüstlük.
Ve gerçekten de benim bilgi olduğunu Biz ne yazık ki, daha fazla öğrenci göndermek
disiplin amaçlı Bir sonuç olarak, her yıl. Bu yüzden,
Tam çıkarına açıklama, kısaca bahsedelim
CS50 biten ve ne sen ne hakkında yapmak ve ne sen dikkatli olabilirsiniz.
>> Yani, burada beri 2007 ne zaman Ben, kurs miras
Reklam Kurulu, vaka sayısıdır.
Reklam Kurulu, Harvard disiplin olduğunu vücut, ya da hemen şimdi Onur Müşaviri,
hangi olgu zaman adlandırılır Öğrenciler bu ders bir şeyler yapmak
izlence mantıksız düşünmektedir.
Hiçbir gerçek desen var Burada, ben söyleyebilirim.
Bitti dalgalanıyor yaş, ancak genellikle
Bu sayısıdır adlandırılır vakalar.
Öğrenci sayısı katılmaktadırlar?
Bu çok değişir.
Için Tipik olarak, geçen yıl Harvard'da örnek, 29 öğrenci
tabiri caizse Reklam Çizgili, idi.
Onları güncel öğrencilerin 29 Onları önce iki öğrencisi,
kim işbirliği edildi Bazı uygunsuz bir şekilde.
Sonra açısından yüzde, genellikle yaklaşık% 3 var:
sınıf, ne yazık ki, kararların bu tür yapar.
>> Yani, geçen yıl% 3,5 oldu CS50 öğrenci vücudun
Bu tabiri caizse Reklam Çizgili, oldu.
>> Yani, tüm bu ne anlama geliyor?
Ve biz aslında ne yapacağız?
>> Yani, tam açıklama için, biz Kesinlikle, bilgisayar bilim adamları olarak,
Bizim emrinde yazılım araçları ve adalet içinde, bizim için çok kolay,
değil en diğer sınıf arkadaşları Bu satırları geçen karşılaştırmak geçmeye
Her başvuru her karşı bu yıl son sekiz yıldır sunulması.
Yazılım yapar.
Ve sonuçta var karar insan gözü
Bazı başvurmak için olsun ya da olmasın Daha fazla yargı için önemli,
ancak yazılım kesinlikle yardımcı olur.
Ve bu, açıkçası, ben neden olduğunu düşünüyorum Biz CS50 gibi çok sayıda vardır.
Bu CS50 yüzünden değil öğrenci veya CS öğrencilerin daha
genellikle daha az dürüst Başka öğrencilere göre,
bu sadece elimizdeki araçları ve teknikleri
hangi ilk seferde almak.
>> Ama biz göz kulak do Bu şeylerin tümü üzerinde
yanı, yine çıkarları koymak ediliyor çalışmalarını tanıma
sınıf süper çoğunluk tarafından.
Ve dersin politikası Akademik dürüstlük,
bu paragrafların bir demet olsa bile mermi bir demet uzun
o, umarım oldukça okunabilir Gerçekten makul haşlayın yok.
Ve başparmak en iyi kural Biz ders içinde sunuyoruz
Bu, özü Tüm iş size
Kendi olmalı bu dersin teslim.
Ve gerçekten de, hemen hemen herkesin olgular disiplin cezası için sevk
çünkü bazı öğrenci geç biri oldu gece genellikle kendi kodunu çevirdi
düpedüz bir sınıf arkadaşı üzerinde, kim o zaman kabul
bütünüyle ya da önemli ölçüde tuzları.
>> Ama gerçekten, bu Tamam.
Ve gerçekten, ofiste Kağıt saat makbuzları
Eğer ofis tarafından geldiyse teslim oldum Saat geçen hafta kadar teşvik eder.
Kesinlikle sensin karşıladı ve teşvik
sınıf arkadaşları ile sorun setleri görüşmek üzere.
Tökezleyerek zaman birbirlerine yardımcı olmak.
Ama genelde başparmak kuralı olmalıdır Bu olabilir, "yardım talebinde zaman,
başkalarına kodunuzu gösterebilir, ama sen onların görebilmek olmayabilir. "
Bu yüzden, başka bir deyişle, eğer ben Bazı P seti ile mücadele
ve ben orada oturuyorum salonu yemek, ya da kütüphanede,
ya da sınıfta Bazı arıza bulmaya çalışıyor,
Kesinlikle gösterebilir benim ekranda kodumu
kişinin yanında oturan için Benim için kesinlikle personel,
aynı zamanda sınıf arkadaşı.
Ama çözüm eğer benim sınıf arkadaşım, oh olduğunu sunuyor
Burada sadece bir göz atın neyi Ben çizgisini geçtiğinde o yaptı.
>> Ve bunu genellikle söylemek cesaret edemez çoğu insan için bir makul bir şey
Çok kolay çizgisini nokta.
Ve böylece, tanıtım bilgilerin görmek Daha fazla ayrıntı için.
Daha Ve şimdi bir tartışmalı yönleri
CS50 müfredatın ben ben düşündüm Burada sonuç olarak konuşmak istiyorum
Sözde pişman deyimdir.
Yani, burada tüm ince baskı var.
Ama genel olarak gördüğümüz Son 8 yılda artı
Gerçekten de, hemen hemen tüm CS50 en, bu Akademik sahtekârlık vakaları
Sadece fakir sonucu olmuştur Gece geç saatlerde karar verme.
Stres, sonuç sonucu yeme eksikliği, uykusuzluk,
çok P setleri, çok tarihler, çok taahhütler.
Bir 02:00 AM kadar bina Stres, 03:00 AM, bir tarih başgösteren 04:00.
Bu durumlarda çoğu öğrenci sadece kötü kararlar yaptık
onlar çok iyi pişman olabilir Ertesi sabah dakika sonra değilse
ama geçen seneye kadar orada hiçbir tahliye vanası bu öğrenciler olabilir
Aslında gerçekte ele açılır olmanın olmadan korku üzerine sorun baş
tamamen üniversiteden başlattım.
>> Ve, gerçekten, biz tanıttı Bu pişmanlık hükmü geçen yıl,
hangi diyor içinden, eğer 72 saat, üç gün,
Bazı çizgiyi geçme ders reçete
Kurs en birine öne çıkan başkanları ve biz bu konuda bir sohbet olacak.
Hala orada bazı ne kadar sonuç, aksine
Aksine bildirilmiştir.
Bazı sonuç hala var olduğunu Elbette tarafından eyleme olduğunu
genellikle P seti sıfırlama ya da başka bir eyleme,
ama biz, gerçekten, olacak bunun üstesinden kendimiz değil
daha yüksek sonuç olduğunu ifade çok daha ciddi olabilir.
Ve, gerçekten, ne paylaşmak Geçen yıl, sekiz yıl içinde, ve şimdi
Bu dersi dokuz yıl ve çeşitli kolları ile müdahalesi sonrasında,
Geçmişte boyunca çeşitli kadranı çevirerek Akademik dürüstlük birkaç yıl,
ve veri hiçbir belirgin başına görünce Hatta böyle konuşmalar etkisi,
Bu iyi bir şey elleri Biz pedagojik sunduk
sekiz yıl boyunca CS50 bu yollar.
>> 19 öğrenci öne çıktı Bu maddeye geçen yıl altında.
Biz hiçbir harekete geçti Bu öğrencilerin yedi,
olduklarını belirlemek gereksiz yere endişeli.
Bunlar aslında, yoktu Bir çizgiyi geçti ama
İyi bir sohbet yine sahip oldu.
Biz puanları 11 zeroed Bu sunuldu.
Ve bir durumda biz sorduk Öğrenci set bir sorun yapmak.
Ama daha zorlayıcı, dürüst, bu 19 sohbetleri ile,
hangi I yol daha oldu bunların her biri olması beklenmektedir
Belki bir 10 dakika saat uzun, ayrıca getirdi
ilgili konularda bir dizi ışığına ailesel sorunlar, arkadaş sorunları,
Ruh sağlığı sorunları biz sonra devreye ki
Öğrencinin nimet, ikamet ile Dean, ya arkadaş, ya da başka herhangi bir numara
destek kaynaklarının.
Böylece bu kadar tek oldu Bizim zamanımızın en iyi kullanımlarından
ve en iyi uygulamalardan birisidir.
>> Bunu dedi, hiçbir vardı algılama oranı giriş
Akademik sahtekârlık daha genel.
Ve ben, demek bu alt kümesini cesaret Öğrencilerin geçen yıl
Bir demografiyi olarak biz Daha önce önce tanımlanmış asla
ve daha önce bağlı hiç.
Ve böylece, bu vardı Harika başarı hikayeleri
onlar ışık getirildi olsa Optimal koşullarda daha az.
Yani, bunu aklınızdan çıkarmayın Yaptığınız olarak, belki de,
bazı kötü karar Kendinizi gece geç saatlerde,
rücu kadar uzun olduğunu bu durumda öğrenci olarak
kadar kendi ve öne çıkıp biz böylece sohbet bu tür var ve onunla başa
bir şekilde o eğitici ve daha sonra Biz ertesi gün arkamızda koyabilirsiniz.
>> Fazla uzatmadan Yani, almak Bu konuşmanın kapalı kenar,
yavru isimli kadar olan nedeni Sadece bir an için buz kırmak için.
Ve ne yazık ki, hepsi uyku konum ama sözde ne burada ne
oldu herkes gerekiyordu huşu ve tür dinlenmek için
Bu çok ağır bir konuşma sonrasında.
Ama görünüşe göre ben koymak yavru uyumak.
Ama CS50 en giderseniz Web sitesi çizgi yavruları,
Eğer gün boyu izleyebilirsiniz.
Özellikle belki 02:00 ya 03:00, ya da gece 04:00
Orada biraz stres rahatlama görmek için.
Yani yavru çizgi olduğunu.
Pekala.
Değil eğlenceli miydi?
TAMAM.
Yani, geri bir bilgisayara bilim, eğer ben olabilir.
>> Yani, biz başladık son kez çağırmak sadece ana değil bakıyor ki
Varsayılan fonksiyonu, zaman oldu Yeşil bayrak, eşdeğer tıklandığında
ama biz de kısaca başladı Kendi işlevlerin bazıları yazma.
Bu işlevlerin Ve bugüne kadar hiçbiri Özellikle büyük ya da etli olmuştur.
Sen o büyük içine alırsınız fonksiyonlar muhtemelen P 2 set, P, 3 set
Kesinlikle P 4 ve ileriye ayarlayın.
Şu anda sizin programlarının çoğu, Kesinlikle hepsi, P değilse
set 1 Ana tamamen yapılabilir.
Senin program sadece buysa beş satır, 10 hatları,
Hatta 20 satır uzunluğunda, mükemmel Bunu yazmak için makul
Tüm ana ve değil zorlaştırıyor aşmıştır kodunuzu, ama bugün ne yapıyoruz
ve ileriye de çalışıyor bazı iyi tasarım tekniklerini tanıtmak
böylece kodunuzu daha alır gibi karmaşık ve sorunlar olarak
Eğer sert olsun çözmek istiyorsanız ve daha ilginç var, çeşit,
Araç kutunuzdaki araçlar hangi ile olanlara iyi çözümler üretmek.
>> Yani, kısaca bir göz atalım geri Benim geçen hafta, bu programın hangi
olduğu fonksiyonları sıfır noktalı C ve oldukça basit, fark,
bu iki ile bu gibi görünüyor fonksiyonlar, ana ve baskı adı.
Ve geri ya da belki düşünme Bugün ters mühendislik,
tanıtmak için motivasyon neydi hat denilen 28 bir fonksiyon,
Baskı adı?
Ya da bu bir örnek neydi Bir ilke veya paket koşulları,
Sen yaparsan.
Bazı üfürümler.
Ne?
>> Evet İşlevsel Ayrışma diyerek fantezi yolu tür,
Programınızı ayrıştırmak kendisini oluşturan parçaların içine
ve daha sonra bu parçaları kullanın bir bütünü monte.
Yani, bu çok türüdür Zaten bir lokma,
ama bu belki de bir şey iyi örnek
Sadece soyutlama denir.
Sağ?
Soyutlama biri olacak CS50 yinelenen temalar
ve aynı zamanda bilgisayar bilimi daha genel olarak beri
Eğer çözebilir hangi bir tekniktir sorunlar daha etkili çünkü sen
Daha fazla çözüm yazabilirsiniz sezgisel ve bir bakıma o terazi
ve diğer insanlar tarafından anlaşılabilir bir durumdur.
Bununla ne demek istiyorsun?
>> Yani, belki çok daha okunabilir Böyle bir programa bakmak,
o olsa süper kısa.
Eğer on line 22 gördüğünüzde var ki adında bir işlev, baskı adı.
Tek başına bu isim ne yaptığını söylüyor.
Bu fonksiyon görünüşte alır onun parantez girişi,
ve görünüşe göre bir şey yok, muhtemelen adını yazdırır.
Ve böylece, hatta biz bile Kesinlikle olabilir
Biz hangi bir hafta önce ne yaptığını yapmış Sadece, bu kod satırı almak gerçek
Bu kurtulmak ve almak hep birlikte bu kurtulmak,
biz tür abstracted Bir isim yazdırmak kavramı.
Baskı def kullanıyorsanız umurumda değil.
Eğer bir varsa umurumda değil Yüzde S ve Bunlar bir ters eğik çizgi N.
inanılmaz gizemli ayrıntılardır.
Ben olarak umurumda ne programcı bir isim yazdırıyor.
Ve böylece, daha iyi ne şekilde bunu Bir işlev, baskı adını arayarak daha?
Ve böylece, bu motivasyonları biriydi Böyle bir şey yapmak için.
Kod daha okunabilir hale daha yeniden kullanılabilir ve aynı zamanda kendini açıklayıcı.
Şimdi, bir göz atalım Başka bir örnek de,
hangi fonksiyonlar biriydi hangi biz burada üzerinde vardı.
>> Yani, bu bir hatta belki de daha ilgi çekici, çünkü bu durumda,
Ben sadece bir int almak istemiyorum.
Ben olumlu bir int almak istiyorum.
Ve bu olumlu almak için çıkıyor Eğer ayak işi bir sürü yapmak zorunda int.
Sağ?
Bu basit bir satır değil Baskı adı gibi arama
hangi kuşkusuz daha az zorlayıcı.
>> Pozitif int almak için, logically-- Beni bu gizlemek için geri aşağı kaydırma olsun.
Yapmanız gereken ne?
Bütün araçlar gibi biz Şu anda olduklarından
Standart yazıcı def gibi şeyler Kütüphane ayrıca CS50 kütüphanesinden
Biz Int al, ve Float alın Uzun Uzun, String alın,
ama sadece bir, Germane, Şu anda Int alın olduğunu.
Yani, sadece bir araç varsa senin alet kutusunda Int Alın olduğunu
biz uygulanması hakkında gitmek nasıl pozitif int almak için?
>> HEDEF KİTLE: bir günlük oluşturun ve kontrol üzerine olsun onlar verdi girdi
olumlu ya da değildi.
>> KONUŞMACI 1: Mükemmel.
Kesinlikle.
Biz var başka bir araç bizim Bir ya da iki hafta önce gelen araç
sadece bir döngü yapısıdır.
Ve böylece, evet, biz bir süre kullanırsanız Döngü veya döngü sırasında bir do, ya da ön
muhtemelen uzak alabilir döngü bazı şeklinde olanlar biriyle.
Biz get kavramını uygulayabilirsiniz Sadece alın Int kullanarak pozitif int,
ve sonra sadece onu demeye devam Tekrar ve kullanıcı pestering tutmak
kadar o ya da aslında o bize istediğimizi verir.
>> Ve şimdi, bu sürecin soyutlama
olumlu bir int alma adı verilen bir işlev
Get Pozitif Int biraz daha zorlayıcı şuna bak, çünkü.
Bu 10 artı gibidir kod satırları o
Olumlu bir int alma katılmaktadırlar, ve ben gerçekten bunu nasıl umurumda değil.
Umurumda Tüm seninle olduğunu bunu, ve bu yüzden ettik edebilirsiniz
Bir arkasına gizlenmiş tüm bu detaylar Çağrılan işlev o int Pozitif alın
Gerçekten, döngü sırasında bu do sahiptir.
>> Ve sözdizimi için geçen hafta bakın Orada, ama sadece N ilan,
ve yazdırır kullanıcıya talimat.
Bu Int Alın çağırır ve sonra kontrol bu durum tekrar ve tekrar,
ve kullanıcı işbirliği tekrar gelene kadar.
>> Yani şimdi, bir kaç aklı denetler.
Belki tanıdık olanlar için Bazı programlama,
N ilan edildi neden, neden ben oluştururum Döngü sırasında do N dışında?
Neden on line 29 ve Örneğin benzeri 33 üzerinde.
>> HEDEF KİTLE: sizi Çünkü tür, dışarıda beyan
daha büyük scope-- bölgesinin
>> SPEAKER 1: İyi.
>> HEDEF KİTLE: --ve sen bildirirseniz o döngü içinde, [inaudible]
bu konuda bilmiyor çünkü.
KONUŞMACI 1: Kesinlikle.
I simplify-- Eğer kapsam bir mesele.
Ve kapsam bağlamında atıfta hangi değişken var ya kullanılabilir.
Ve burada başparmak güzel kural olduğunu genellikle beyan veya oluşturduğunuzda
değişken yalnızca içinde kullanabilirsiniz en yakın küme parantezi kucaklayan.
Peki bu ne anlama geliyor?
Ben, bunun yerine, bu geri ve giderseniz Biraz daha basit hissediyor şey.
Sağ?
>> Satır 32 şimdi bana temiz görünüyor.
Ben ikisini de yapıyorum bir kez ve sonra atama
sol el sağ eli.
Sorun artık dayalı kapsam bu tanım
Bu N hatları kullanılabilir olan 31, bu kısmın içerisinde 32,
ama nerede tanımı gereği o kullanılamaz?
Doğrultusunda ne olacak?
Evet.
>> HEDEF KİTLE: 35.
>> KONUŞMACI 1: 35.
Kesinlikle 35.
Ve ayrıca burada başka?
HEDEF KİTLE: 34.
KONUŞMACI 1: Hatta 34 olduğunu o çünkü sorunlu
küme ayraçları dışında.
Ve böylece aslında, en ne olduğunu görelim.
Sağ?
Bu biraz görünebilir sezgisel veya olmayabilir
ama en ne görelim derleyici zaman söylemek zorunda
Biz bugünün kaynak dizine gidin.
Fonksiyonu tek yapın.
Aman Tanrım.
Eh, sonunda bitmiş bu arada.
Pekala.
Ve mesele burada ne var?
Bakmak çok gizemli.
Ama burada ben typed-- ne fonksiyonu biri haline getirmektedir.
İşte yapmak kaynaklı buydu Hangi aslında
derleyici clang kullanarak Bu bayraklar bazı
Biz uzun zaman önce tekrar görürsünüz.
Ve yine, her zaman bakmak İlk hata da,
Sadece bir basamaklı olabilir çünkü Diğer hatlarda anlamsız etkisi.
>> Peki bunun anlamı olduğunu Sorun fonksiyonu 1.c içinde
Bu hat 32 üzerinde.
Ve bu sütunun ya da karakteri, 13 at var.
Peki ne zaman metin editörü o can Sorun nerede olduğunu belirlemenize yardımcı.
Ben yukarı Yani eğer, çizgi 32 nedir?
Yani aslında bu bir var zaten vurgulanmış oluyor
Sağ burada-- kullanılmayan değişken n.
Ama kullanılmayan değil.
Ben kullanıyorum.
Ama derleyici en çünkü karıştı yalnızca bu kapsam içinde bulunmaktadır.
Ve ben burada bunu kullanamaz.
Burada bunu kullanamaz.
Ve derleyici, bu nedenle, Hatta ben çalışıyorum o umursamıyor.
Bu kullanılmamış gibi görünüyor gerçek kapsamı içinde.
>> Yani biz yaparak kapsamını genişletebilirsiniz Tam Başladığımız işi Şarkı söylemeyi kes n int.
Ve öyle değil olsa bile belki gibi zarif görünmek,
ve biz ekstra bir satır alıyorsun Burada, şimdi her yerde kapsam içinde.
Yani tekrar deneyelim.
Yani işlevi biri olun.
Güzel.
Ve şimdi ben eğer işlevini çalıştırırsanız biri, en 10 negatif verelim
Negatif 1, 0, 1, ve gerçekten de çalışır.
>> Yani burada başka bir çözüm var.
Biliyor musun?
Gerçekten bu ne güreş ediyorsam?
Nerede olduğunu bilmiyorum n gitmek gerekiyordu.
Biliyor musun?
Ben sadece bunu koymak için gidiyorum tüm Burada benim dosyasının üst yol.
Bu, Ne düşünüyorsun yapardı?
Evet?
>> HEDEF KİTLE: [duyulamaz].
KONUŞMACI 1: Evet.
Yani tabiri caizse, küresel yaptık.
Eğer bir değişken varsa o dışarıda var izin verilen için tüm fonksiyonları,
ve kod derleme ve n Şimdi get değil sadece erişilebilir olacaktır
değil, aynı zamanda olumlu bir main-- int olan bölgesindeki var çünkü biraz endişe verici
Ana zaten bir n, bu nedenle daha fazla Sadece bir moment-- o üzerinde
ama bu kötü tasarım düşünülebilir.
Pekala.
Eğer başvurmak varsa bir şey, oh ben olacak gibi
sadece burada çünkü koymak Kod derlemek gibi görünüyor
genellikle en iyi uygulama değildir.
Aksine seçmek istediğiniz dar olası kapsam
senin değişkenler için, hangi anlamına gelir Bizim ilk tasarımı ile gidiyor ki
burada.
>> Şimdi bir kenara olarak, sahip olmasaydı Burada değişken aynı adlı bir,
yol c bu-- ele alabileceğinizi Bu çok often-- olmayacak olsa
bu hala olmasıdır Burada mükemmel para cezası.
Ama doğrultusunda n bu tanım 22 küresel bir gölge olacaktır.
Yani bu bir içinde çalışacaktır Ana ve küresel bir tane
Eğer olduğunuzda aslında geçerli olacaktır Pozitif int Ama bu konuda daha fazla olsun
Başka bir zaman, ama sadece meraklı olanlar için.
>> Yani Kısacası, biz burada bunu düzeltmek.
Şimdi diğer iki adet ayrı kızdırmak izin Biz bir kod son satırı bakmak önce
Bu programda.
Pozitif int alın.
Sol tarafta onun kelime kelime int.
Bu sizce ne anlama geliyor?
Bugüne kadar çoğunlukla geçersiz gördüm.
Evet?
>> HEDEF KİTLE: Bu tip var hakkında soruyorsun değişken.
>> KONUŞMACI 1: Evet, bu türüdür, bana izin değil değişken söylüyorlar, ama değer tipi
ben geri soruyorum.
Ve gerçekten de, işte Burada sezgisel, umarım.
Sağ?
Eğer almak istiyorsanız Pozitif int, sen ne
gibi function-- istiyorum bizim Geçen hafta gönüllüler
bir parça size geri teslim etmek Bunun üzerine bir int ile kağıt?
Ve böylece biz belirtilen ettik Bu işlevin sözde geri dönüş tipi
Pozitif int olsun.
Biz bunu istemiyordu Eğer geçersiz demek, bir şey dönün.
İsterseniz geri dönmek için bir dize, dize söylüyorlar.
İsterseniz geri dönmek için Bir şamandıra, şamandıra sen söylüyorlar.
Ama burada da geçerlidir tek mantıklı, ben olsun int kullanıyorum çünkü,
I sınırlamaksızın olmama rağmen pozitif değerler, bir int döndürmektir.
>> Yani tersine, bu ne anlama geliyor Bu parantez içinde bir boşluk var?
Parantez ne Genellikle tanımlar?
Evet?
>> HEDEF KİTLE: Bu fonksiyon en anlamına gelir aslında almıyor.
>> KONUŞMACI 1: Fonksiyon en anlamına gelir Aslında Ne almıyorum?
>> HEDEF KİTLE: Bir giriş.
>> KONUŞMACI 1: herhangi bir giriş.
Yani gerçekten, eğer parantez burada, geçersiz belirttiğiniz
sadece ben herhangi bir giriş istemiyorum demektir.
Ben sorunu kendim ilgilenirim.
Ve gerçekten de, bunu yapmak zorunda değilsiniz Pozitif int şey almak söyleyin.
Sadece söylemek olumlu int almak ve bu fonksiyon çıkmak ve onun şey yapacağız.
>> Ama ettik küçük bir hile var oldu Burada bu bütün zaman oynuyor
Bu kodu derler emin olmak için.
Pozitif olsun int-- edin int void-- hattı 27 üzerindedir.
Ama bazıları görünüşte garip bir nedenden dolayı bu hat 16 üzerinde burada da var.
Ve sadece iyi ölçmek için ben tekrar edeceğiz Bu yüzden mükemmel aynı olduğunu.
Ve ben söyledim prototip ile Biraz tek satırlık açıklama.
Ne ben silerseniz olur, Ve Şimdi fonksiyonu 1, girmek yapmak yeniden çalıştırın.
Whoops.
Bir dakika bekle.
Benim sekmesi nerede?
Ha?
Yanında olmak.
Fonksiyonu 1 yapın.
Oraya gidiyoruz.
TAMAM.
Düzgün kaydedilmez etmemişti.
Yani, ben biraz olduğunu düşünüyorum Burada hata değilim nerede
Şu anda sekme adını görünce.
Peki burada neler oluyor?
Fonksiyonun Örtülü beyanı Pozitif int olsun C99 geçersiz.
Yani yine kafa karıştırıcı.
Yani bu işaret nedir?
Peki, bu çıkıyor C oldukça aptalca.
Eh, bu programlama var dil, ya da daha doğrusu derleyici olduğunu.
Sadece ne var biliyor Onu öğretti ve sadece var
bir şey biliyor gidiyor Daha önce öğretti eğer.
Diğer bir deyişle, in Şu anda ana, ben
Bir işlevi çağırmak çalışıyorum denilen pozitif int olsun.
Ama derleyici gitmiyor pozitif int olsun fark
hat 26 kadar mevcuttur.
Ve böylece derleyici ne adildir hataları en kısa sürede 17 hat alır gibi,
örtük beyanı söyleyerek olumlu int, olsun hangi
söyleyerek sadece süslü bir yoludur, I do not Pozitif int henüz ne olduğunu biliyorum olsun.
>> Java gibi diğer diller ve Python ve Ruby ileriye bakmak olabilir.
C değil.
Ve böylece biz düzeltmek yolu Bu iki yoldan biridir.
Ya biri, sorun eğer olsun Pozitif int, daha önce görülmemiş olmamıştır
iyi, bana sadece üst bunu geçelim.
İşte bu sorunu çözmek istiyorum.
Ama genelde, bu kadar kabul iyi tekniği
Çok adresinden ana işlevi koymak Bir insan kodunuzu okuma böylece üst
Program ne bilir Ana bütün gömülü olmadığından
altına veya ortada bir yol.
O çok üstünde olduğunu.
Böylece ideal bir hissetmez.
Ve aslında alabilirsiniz durumlar nereye içine
bir fonksiyon çağrıları ise Başka çağıran başka,
Eğer bir sorun içine alabilirsiniz nerede ne mantıklı, diğerinin üzerinde gidebilirsiniz.
Bu sadece mümkün değil.
>> Ve böylece yol çalışması Bu sadece almaktır etrafında
işlevin imzası, bu yüzden speak-- için bu declared-- var ilk satırı
ve sadece kopya en yapıştırın kıvırcık braces-- üst değil
Sadece bir noktalı virgül ile.
Biraz ipucu gibi gelmek ne olduğunu.
Ve aslında, bu kez tüm zaman Standart io.h gibi şeyler gördük
ve cs50.h, benzer şekilde, bu nokta, h dosyalar var, diğer prototipler vardır.
Ve biz uzun zaman önce olduğunu görürsünüz.
>> Kısacası Yani bir program varsa çoklu fonksiyonları olan bir dosyada
Ana yanı sıra, neredeyse Her zaman onları bildirmek istiyorum
Sadece ilk yolu ile noktalı virgül ardından çizgi,
Dosyanın çok üstünde.
Bu seferde çok oldu.
Sorusu olan?
Pekala.
>> Öyleyse hareket edelim öksürük gibi bir şey.
Ah.
Nasıl uydurma.
Pekala.
Öksürük.
Yani burada bir c Bir programın uygulanması
Biz diğer gün yaptım Scratch çok basitçe sadece
öksürük, öksürük, öksürük diyor.
Pekala.
Ve birisi bir kaç sözü gün önce var olduğunu
Zaten bu kodu temizlemek için bir yol.
Pekala?
En kısa sürede size kopyalama konum olarak ve Muhtemelen kötü tasarım yapıştırarak.
En az bir kez biz dört ya da beş olsun ya da 20 öksürük, kötü uygulama hissediyor.
Biz sadece, yapıştırma kopyasını saklayın.
Bariz çözüm nedir Bu programın kadar temizlik?
>> HEDEF KİTLE: Döngü.
>> KONUŞMACI 1: Evet.
Yani bir döngü kullanmak.
Ve biz, bir süre bir için-döngü kullanabilirsiniz köprüsü, yaklaşımların herhangi bir sayı.
Ve gerçekten de, bu ne var Burada sürümünde tek yapmak.
Ben bunun yerine yeniden yazıldı ettik cough.c sürüm, bir bölgesindeki
bir for döngüsü içinde sadece öksürük olmak.
Pekala, ama orada bir start tür şimdi fırsat
daha fazla gibi bu biraz tasarım ders Biz bir an önce öğretti
İstediğim varsayalım bu-- olan öksürük adında bir işlevi oluşturmak için,
Sadece bir an için düşünelim ne gibi bakmaya gidiyor.
Ben bir şey istiyorsanız Ben sadece ihtiyacım öksürük
fonksiyonu içerisine print f kullanın.
Ve gerçekten öyleyim.
Ve aslında, bütün bu Zaman, her zaman sen
bir şey yazdırırken Ekran, bir programcı
bir yan etkisi olduğunu çağırır.
Beni teslim değil Geri birisi bir değer.
Bu beni biraz hareket alıyor görsel olarak belirgin olabilir.
Ama bu fonksiyon öksürük, o çıkmıyor İlk satırda dayalı şey var mı?
Hayır, dönüş tipi nedeniyle Sadece, yani geçersizdir
geri Bana bir şey uzatırken değil.
Bu şeyler yapıyor olabilir görsel, ama bana teslim değil
geçen hafta gibi bir kağıt parçası geri.
>> Herhangi bir giriş ihtiyacı var mı?
Hayır.
Ve bu yüzden çok burada hükümsüz olduğunu.
Yani bu da bir tür olduğunu Bu sorunu aşırı mühendislik.
Sağ?
Ben daha çok programı yaptık kod karmaşık, daha hatları,
Ben herhangi bir yapılmış değil daha fonksiyonel, ancak bu
bir basamak olacağını, Belki de, daha geniş bir
daha karmaşık kod ile bağlam.
Ama bu ne hakkında?
Ben sadece ne bakarak done-- var Bu yorumun bakmadan
ne file-- çok üstünde Ben temelde benim öksürük burada yapılacak
farklı uygulama?
Evet, arkada?
>> HEDEF KİTLE: you can yüzden olun Bir karakter kapatmak zorunda.
KONUŞMACI 1: Evet.
Yani bu tür güzel hissediyor.
Sağ?
Bu bir özellik ekleme gibi senin Program veya bu durumda sizin işlevi.
Hala hiçbir şey döndürür.
Bu, görsel bir yan etkisi olabilir yazdırma f çağırıyor çünkü.
Ama şimdi parametrize var fonksiyonu, burada
Ben alınan Belirlediğiniz ettik demektir int türünde giriş ve n diyoruz
ama ben istediğin bir şey diyebiliriz.
Aslında, sadece olabilir Zaman daha açık olması için.
Ve sonra ben sadece burada bu değişebilir.
Ama nokta nasıl bu olduğunu girdi alır bir işlev oluşturun.
Ve sen saygısız çağırmak durumunda bir belki de online yoluyla
walk-through, Dördüncü ve son öksürük örneği,
Burada farkedeceğiniz genelleştirilmiş ettik soyutlanmış benim kod further-- tür
ayrıca o.
Öksürük ve hapşırma gibi, her ikisi de hakkında bir şeyler söylüyor ya da yapma gibi
Sesin çeşit.
Kaydet olurdu Scratch bloğu gelir.
Ve ben bu sürümde yaptım, ne hangi biz de sadece bakışta can
, öksürük, sadece, [öksürük] ​​demek gibi olduğunu öksürük, ve bu arada, hapşırma olduğunu
demek gibi, [ACHOO].
Ve bu yüzden genel ettik Bu uygulama
Şimdi uygulayarak Bu genel fonksiyon
İlginç olan, söylemek Bugünün amaçlı
Sadece hala çünkü Bir dönüş türü yok.
Ama kaç girişler var?
HEDEF KİTLE: İki.
KONUŞMACI 1: İki.
Ve böylece isterseniz iki argüman almak,
Sadece bir virgül ile ayırın.
Ve sonra isterseniz Bu işlev çağrısı,
fark Size sadece , unquote, alıntı, diyelim çağrı
İlk argüman için, ortak n ikinci argüman için.
Yani yine, biz sadece şu anda sahip yapı taşları biz aslında can böylece
Kendi bazı işlevler uygulamak.
Pekala.
Bunlar üzerinde Herhangi bir sorunuz?
>> Yani şimdi en bir tabaka eğer öyleyse geri soyma edelim.
Ve gol, sonuçta, Gelecek haftaki sorun kümesidir
cryptogrophy-- üzerinde olacak bilgi çabalıyorlar sanatı.
Ve özel olarak ise, bilgiler şifrelemek veya şifresini olacak
Metin olacak.
Davetiye Ve böylece bu tür Soru bugün de olduğu gibi,
Ne başlık altında oluyor Haftanın sıfırdan ASCII ötesinde metin ile,
ve nasıl aslında biz manipüle başlar?
Yani burada Zamyla adıdır.
Ve metinde, bu girilen olabilir olsun dize işlevi gibi içine.
Bir görünce, şimdi başlıyor bu-- Z-A-M-Y-L-bir-- gibi dize
Her sanki bunu düşünmeye başlamak Bu karakter bir kutu içinde onun
Kendi.
Ve gerçekten de, bir hafta içinde ya da öylesine Zaman, bu kutulardan her
Çok özel temsil edecek belleğin bir ısırık memory-- bir blok.
Peki bu harflerin her biri, sonuçta, 8 bit temsil edecek.
Ve biz aslında ne oluyor görürsünüz benim bilgisayar başlık altında üzerinde.
>> Ama o yeterli için Sadece Zamyla bakmak
ve bu sayede her bu lens aracılığıyla Bu mektuplar, kendi kutuda.
Ve güzel yeterince C biz doğrudan bu kutuların her biri erişebilirsiniz.
İlk almak istiyorsanız Yani Onun adının mektup, C. süper kolay
Son almak istiyorsanız mektup, süper kolay yanı sıra
Yeni sözdizimi bir parça ile.
>> Yani CS50 içine önde gidiyorum IDE ve dize sıfır nokta C. açmak
Ve bu örnekte, orada Yeni bir kaç şey oluyor.
Yani ilk satırda 19, biz ettik Bu before-- olsun dize görüldü.
Yani sadece hızlı aklı kontrol olarak, Birisi sözlü kadar teklif eğer
Bir rahip olmayan kimse açıklama Ne hattında 19 oluyor.
Sadece içine bu tercüme gibi İngilizce o CS50 bir oda arkadaşı değil
anlayabilir.
Evet.
>> HEDEF KİTLE: Kullanıcı giriş a mı dize değişken s saklayın ve.
SPEAKER 1: İyi.
Kullanıcı girişi bir dize var ve değişken s saklayın.
Bu harika.
Sağ taraftan Yani Yan, biz olsun dize diyoruz.
Bu bir değer döndürür Bu atanmış alamadım
sağ tarafta sol-el için olan bir değişken olarak adlandırılan s içine yan
bir dize saklamak için tasarlanmış.
Kesinlikle.
>> Yani şimdi başına 22 satır hat 21 yorum,
Açıkçası bu dizeyi yazdırır Her satıra bir karakter.
Ama nasıl?
Yani her şeyden önce, biz I 0 başlatılamıyor.
Ve sonra nasıl alabilirim Zamyla adının sonuna?
Eh, sonunda Zamyla adı, I could
elle son karakteri yazın Onun bir şekilde adı veya bunun sayısı.
Sağ?
Biz geri burada-- Z-A-M-ben- giderseniz Y-L-A- yüzden yazabilirsiniz.
Indeksi neler var Zamyla son mektup?
Bu ise 0-- benzer bir konuşma programmer-- 0, 1, 2, 3, 4, 5,
Ben, bu yüzden gerçekten son harfi heard-- Zamyla adına altıncı,
ama biz 0'dan saymak eğer, bu sayı 5 olacak.
Yani burada akılda tutmak.
>> Bir fonksiyon var dışarı O turnike C strlen aradım ve geri gün
ve hala bu gün, programcılar bir sürü
isim senkronize tercih onların kelime gibi ses fonksiyonları
Dedikleri çalışıyorlar.
Yani strlen dize uzunluğudur.
Ve ne yani dize uzunluğu olur Zamyla girişi olduğunda S dönmek?
>> HEDEF KİTLE: Beş.
>> HOPARLÖR 1: Z-A-M-Y-L. Altı.
Sağ?
Zamyla adının uzunluğu nedir?
Sağ?
Ve sadece gerçekte, altı harf.
Sağ?
Ve böylece bizim döngüsü için ne anlama geliyor?
Biz gitmek için gidiyoruz Altıya kadar 0, hangi
Bize beş yineleme verecek.
Biz her tekrarında ne yaparsınız?
Peki, yüzde C, birisi Geçen gün tahmin,
Ne için bir yer tutucu demek?
>> HEDEF KİTLE: Char.
KONUŞMACI 1: Sadece bir karakter.
Yani tek bir character-- değil bir dize gibi birden çok karakter.
Ve sonra burada yeni çizgi Biz yazdırarak var ki.
Ve sonra burada yeni sözdizimi.
I-th yazdırmak istiyorsanız Dize S karakter, yani, konuşmak için
sadece söyleyebiliriz Dize S isim,
ve sonra köşeli ayraç açmak ve daha sonra bir i ile, köşeli ayraç kapalı
orta.
Ve o içinde biraz güzel bu tür bir kare gibi görünüyor
Sadece kareler gibi Zamyla en hangi karakter o resimde var.
>> Aslında bu çalıştırırsanız yüzden Şimdi, en ne olduğunu görelim.
Dize 0 nokta çizgi olun Dize 0, sonra ben
Zamyla adına yazmanız olacak.
Ben yapmadım çünkü hiçbir istemi var, Baskı f kullanabilirsiniz, ancak bu iyi.
Ben sadece ne yapacağımı biliyorum.
Ve gerçekten de yazdırır Zamyla adı, her satıra bir tane.
>> Şimdi biraz pervasız olalım.
Bilmiyordum varsayalım yaklaşık strlen ve ben düşündüm,
tamam, kimse bir sahip olacak 50 karakterden gibi daha büyük isim.
En go ahead ve bu derlemeye edelim ve yeniden çalıştırın ve sonra da Zamyla yazın
Tekrar.
Mantıken, ne Program yazdırmaya çalışın olacak?
Z-A-M-Y-L-A sonra gibi 45 bellek bilinmiyor bayt.
Ve gerçekten de, biz geri geleceğiz bellek bu fikri.
Ama mantıklı eğer Zamyla adı uzun bu
resim başına Burada, ne söylüyorsun
yazdırmaya devam, yazdırmaya devam edilir tutmak baskı, baskı tutmak yazdırmaya devam
50 karaktere tüm yol, hangi ne olacak kim bilir ne.
Yani aslında bir göz atalım.
En Zamyla yazın edelim.
İlginç.
Biz şanslıydık.
Beyaz boşluk Sadece bir sürü.
Ah.
Tek korkak karakter var.
Bu garip bir soru gibi görünüyor tür Orada işareti ama Zamyla adı vardır.
En çok pervasız alalım.
Biz 500 çıktısını hakkında nasıl Bilinmeyen içine bloklar?
En go ahead ve bu yapalım yanı sıra ve daha sonra yeniden çalıştırmak.
Ve en çok, çünkü tam ekran let Biz daha fazla yer görmek gerekir.
Zamyla.
Yine şanslı.
>> Daha pervasız olsun cesaret?
En fazla pervasız alalım.
50.000 karakter.
Bu en kesinlikle iyi bir fikir değil.
Pekala.
Dize 0 yapın.
Bu bizim son demo olacak.
Zamyla.
Ugh.
TAMAM.
Yani benim bellek, şu anda gerçekten boş hangi aslında tür uygundur.
Ben tamam aşağıdaki amaçlara ulaşmaya çalışıyorum ne.
Ve şimdi ben sadece pervasız alacağım.
500.000.
Tam ekranlı en let it Make--.
Girin.
Zamyla.
Oraya gidiyoruz.
Ben hiçbir fikri ne anlama sahip , ama kötü geliyor.
Pekala.
Ve aslında, yakında, içinde iseniz mesai saatleri içinde şanslı birkaç
ve problem, size bir set bunu çok iyi karşılaşabilirsiniz.
Segmentasyon hataya aslında yok iyi tanımlanmış anlamlara sahiptir.
Bu hata bir çeşit demektir belleğin bir segmente ilişkilendirilmesi.
Ve meslekten olmayan şartlarını, biz dokundu demektir
memory-- benim bilgisayar RAM kullanılmış Ben erişimi vardı gerektiğini.
Ve bu ikisi ne var Güçlü ve aynı zamanda tehlikeli
C hakkında size o aslında serbest erişim
Programınızın belleğinin bütünlüğü için veya bayt veya RAM, daha spesifik.
>> Bu yüzden bile Zamyla adı olsa Sadece altı karakter uzunluğunda
Hala her yere gidebilir bellekte istiyorum.
Ve bir kenara, sen ettik sanki Hiç bazı makaleyi okuyun
bazıları hakkında yılda Sunucu ya da bazı program
Çatlak veya kesmek alıyorum işte şey alınan avantajı
Bir bellek taşması denilen biz aslında olacak o istismar
işte, birkaç hafta içinde hakkında konuşmak Genellikle bir şekilde kandırma atıfta
iyi gidiyor içine bir bilgisayar hafıza sınırları ötesinde
o olması gerektiğini ve sulu bir şey bulmak
bu memory-- bir şifre, belki de bir yol
Bazı seri numarası engellemeyi çek, ya da genel olarak mümkün sadece
Bilgisayar çalıştırdığı kandırmak için amaçlanan değildi kodu.
Ama geri gelmesine izin Sadece bir an için gerçeklik
bu program nerede strlen ile uygulanan,
ve burada bir şey yukarı tanıtmak.
Bu en üst üç satır arasında yeni ne var?
>> Yani dize nokta h.
Bu adlandırılan bu kütüphane var çıkıyor Dize Dot H veya String Kütüphanesi,
kimin başlık dosyası, tabiri caizse, bana verir dize nokta h
Bu strlen işlevine erişim.
Bunu atlarsanız, derleyici Bazı formda bana bağırma gidiyorum.
Ama ne biliyor musun?
Şimdi gerçekten incelikli başlayalım.
Hat 22, bir şey bir tür var arasında inefficient-- kötü tasarlanmış,
Bu kod satırı hakkında arguably--.
Nasıl geri düşünün için döngü uygulanır
ve hangi adımların tekrar yaşanmaması ve Tekrar ve başlatma vasıtasıyla yine,
durum, kod o idam, sonra artış olur
veya değiştirmek, daha sonra koşul, daha sonra kod, daha sonra değişiklik,
durum, daha sonra kod, Daha sonra benzeri değişim ve.
Peki biraz olabilir endişe verici ya da kötü burada yapılır?
Evet, mavi.
HEDEF KİTLE: Strlen olduğunu birçok, birçok kez aradı.
KONUŞMACI 1: Evet.
Olarak adlandırılır Bu yüzden strlen birçok kez, ama ne
Zamyla adının uzunluğu İlk kez döngü yürütür?
>> HEDEF KİTLE: Altı.
>> KONUŞMACI 1: Altı.
Eh, onun adının uzunluğu nedir kodu yürütür ikinci kez?
>> HEDEF KİTLE: Altı.
>> KONUŞMACI 1: Tamam.
Hala altı var.
Sağ?
Zarla adı değil var Ben arıyorum bile değişti
Onun adına harflerin tek kısmında.
Ve böylece aslında ben etkili olduğumu Bu soruyu soran, ne
Zamyla uzunluğu, uzunluk ne Zamyla bölgesinin Zamyla uzunluğu ne,
Altı ayrı zamanlar, ya da Yedi bile, sadece aptalca
o cevap değişmeyen çünkü.
Ve böylece ne aslında olabilir dizesinde tek de paha do
Burada marjinal iyi bir sürümü var.
Orada-- whoops-- dize iki Ben Bir marjinal iyi bir sürümü olup
Ben yerine sadece bu-- do Ben bir virgül ile de, 0 i başlatılıyor
adlı ikinci bir değişkeni bildirmek n- tekrar int söylemek zorunda değilsiniz.
Ben aslında olmamalıdır.
Ama ben n say.
Ve sonra ben n başlatmak Böylece n strlen, hemen
kaç kez strlen yok Toplamda idam?
Sadece bir kere.
Ve böylece bu ne demek olduğunu Daha önce iyi tasarım hakkında.
Aslında kodunuzu doğru bir kez geri dönüyor ve düşünmeyi,
Ben az kullanıyorum Bellek ya da birkaç saniye içinde
Bilgisayar süresi veya milisaniye olarak biraz problem uygulamak mümkün?
Ve ben ilerlemek için gidiyorum yukarı ve sadece söz
Bu söz var ki Bu sürümde null,
ama biz uzun zaman önce tekrar bu geleceğiz.
Şimdi Çünkü en bir göz atalım nerede bu bizi gidiyor.
Yani bir, o çıkıyor Biz yeteneğine sahip artık
bireysel karakter bakmak için, Biz bir şey kaldıraç
haftadan itibaren 0 çok gizli ve zaman ilginç tür.
Ama şimdi, ve özellikle biz Bir hafta içinde Kriptolamaya olsun,
oldukça güçlü olacak.
Bu bazı çıkıyor verilerin types-- ints ve yüzer
ve karakter ve dizeleri ve bazıları seyleri Diğer
çok kolay bir şekilde bir başka dönüştürülebilir.
>> Örneğin, biz konuştuk ASCII hakkında bazı zaman önce-- burada
büyük harfler A M aracılığıyla, nokta, nokta,
dot-- bir eşleme var olduğunu söyledi Bu harf ve sayılar arasında.
Ve aslında, bu geçerlidir hem de küçük harf için.
Küçük harf, bir 97 olduğunu, sermaye 65 olduğunu.
Ve ASCII bir numara, orada hangi sadece bu eşleme
bu diğer harflerin tüm sistemi.
Peki bu ne anlama geliyor?
Eh, ben önde ve açık gidiyorum denilen gerçek çabuk şey kadar
Yorumlar olduğu çoğu ASCII 0.
Ve yine çevrimiçi her zaman yapabilirsiniz yorumlar aracılığıyla bakışta.
>> Ve bir göz atın neyi Bunu yapmak için gidiyor.
Bu yüzden ana işlevi var.
Ben sadece için numaraları sabit kodlanmış ettik Şimdi, çünkü ben ne yaptığımı biliyorum.
Ben burada görmek istediğini biliyorum.
Ve ben 65 ben başlatıldı ettik.
Ve ben sayıyorum 26 üzerinden harfler toplam.
Ve ben ne gidiyorum Bir seferde bir satır yazdırmak
Eğer yorumlamak eğer Bu çizgiyi vurgulanan?
Ne basılmış olur?
Evet.
>> HEDEF KİTLE: Eğer gidiyorsunuz mektup yazdırmak için
haritasına karşılık mektup değer ve tamsayı değeri var mı?
KONUŞMACI 1: Kesinlikle.
Ben mektup yazdırmak için gidiyorum tam sayı değerine karşılık gelen,
ve tersi olarak izler.
Peki bu, birisi daha önce söylediğim bir char sadece bir yer tutucudur.
O hala.
Bu, elbette, bir yer tutucudur yeni bir satır bir int-- değil.
Ve şimdi, benim ilk değerini dikkat edin O tutucu için takarak ediyorum
Sadece I. dediğimi değil, Parantez içindeki, karakter I,
hangi parantez char derleyici söylüyorum, ben tedavi
değil bir sayı olduğu, ne kadar.
Gerçek bir karakter olarak davranın.
İkinci değerin Oysa ben takmayı ediyorum açmayız ben- sadece bir sayı olmalıdır.
>> Yani bu program-- derlemek bu nedenle bu ASCII 0 yapmak olduğunu
nokta çizgi ASCII 0-- Ben sadece almak Bu kullanışlı küçük grafik o
Beni olası tüm gösterir Bunu düşünmek zorunda kalmadan eşleştirmeleri
üzerinden veya benim kendi anlamaya.
Ve ben de, yazdırmak ediyorum küçük harfleri fark
Daha sonra birkaç satır, çünkü Ayrıca bu haritalama çıktısını
yanı sıra, sadece için hangi Anlıyor kez söylemek
altında neler oluyor Kaput yapabilirsiniz
otomatik ileri geri dönüştürün.
Ve aslında, sizin varsa Hiç ilkokulda yaptım
ya da birisi duydum mitsel bir not alarak
ve geçirmeden onun ya da sınıfta onun arkadaşı,
ama sen şifreli A B olur benzeri mektuplar,
ve B C, ya da bir şey olur Bundan daha karmaşık, iyi,
nasıl hakkında gitmek Çocukken bu uygulama?
Peki, sen sadece tür biliyorum A B olur, B C olur,
ama matematiksel olarak, bu çocuk ne yapıyordu?
Ne her harf ekleyerek edildi?
Etkili, 1.
>> Eğer B A değiştirdiğinizde Yani, işte tür 66'ya 65 değiştirme gibi,
hangi matematiksel sadece 1 ekleyin demektir.
Ve böylece uygulamaya olsaydı O biraz aldatıcı tekniği
kod öğretmeniniz, sen Bu sadece tam olarak yapabilir
birlikte tek bir harf ekleyerek.
Yani uzun zaman önce, biz konum biz nasıl göreceğiz
Aslında bu yararlanabilirsiniz gerçekten karıştırmak ve deşifre
bilgiler.
Bu arada, biz başladık biliyorum birkaç diğer kütüphaneler tanıtmak
dize tek Bugün var--.
Ve çok yararlı bir site umarım bulacaksınız
, reference.cs50.net denir öğretim elemanlarının bir araya getirdik,
Eğer isterseniz, böylece nasıl strlen işleri bakmak,
Yazmaya başlamadan işlevin adı,
tıklatın orada strlen ve sonra daha az rahat açıklama
görünmesi için gidiyor.
Yoksa yetkiliyi isterseniz Linux tabanlı açıklama
Daha rahat tıklayabilirsiniz sağ üst ve ona
Aynı bilgiyi sunacak, ancak daha karmaşık açısından.
Bu yararlı bir kaynak var aslında her şeyi ne yaptığını biliyor.
>> Biz gidiyoruz dahaki sefere Ovaltine bir göz atın
ve daha fazla ve kendimizi tanıtmak kriptografi dünyasına.
Bundan önce, biz göreceğiz Daha sonra bu hafta.
Ve şimdi, Colton Ogden.
Çarşamba görüşürüz.
>> [MÜZİK OYUN]
>> KONUŞMACI 1: Ne [BLEEP] yapıyorsun?
>> KONUŞMACI 1: Benim tatlı yiyorum?
Bunu nasıl yersin?
Senin ellerinle?
>> [MÜZİK OYUN]