[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? 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. 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] [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]