>> [MÜZİK OYUN]
DAVID MALAN: Herkese merhaba.
Bu CS50 en supersection olduğunu.
Atanan Bölümler olmaz Bir hafta başlayacak.
Ve bu yüzden bugün, ben buradayım Şarkı söylemeyi kes
>> MARIA: Maria.
DAVID MALAN: aslında --to sorunun bir göz atın
birini, ders en set malzemenin ilk hafta
Eğer CS50 IDE ile odaklı olsun, biraz Linux, bu işletim sisteminin
IDE üzerinde çalışan, aynı zamanda geçiş bazı bakmak
C lider için Sıfırdan soruna bir tane ayarlayın.
>> Bu yüzden daha fazla uzatmadan, probleminde, bir set
olmak için gidiyoruz CS50 IDE, kişiye hangi
Bu web tabanlı programlama Biz sırayla kullanın çevre
programları yazmak için.
Çok bakmak için tasarlanmıştır oldu Tipik bir bilgisayar anımsatan
Bir işletim sistemi çalıştıran Linux denilen sistem.
Ama sözde bulut var, hangi sınıfta herkesi demektir
aslında olabilir onun ya da onu kendi hesabına, hem de bunu kullanmak ve.
>> Yani sizin muhtemelen kullanılan hiç önce ya da belki bir Linux ortamında
Hatta bir komut satırı ortamı.
Ve bir komut satırı Çevre farklıdır.
Her metinsel bu.
Tüm klavye komutlarını var.
Ve hiçbir mousing, hiçbir simge değil, Hiçbir diyalog pencereleri, hiçbir menüler.
Bu tamamen metin var.
Yani ilk başta, bu tür Bir adım gibi hissediyor
geriye gelişmişliği açısından.
Ama bir sürü olmak biter daha güçlü, kesinlikle,
Bir bilgisayar bilimcisi için sonuçta.
>> Yani bir göz atalım.
İşte ben, CS50.io de olduğum aracılığıyla Eğer CS50 IDE oturum açabilirsiniz.
Ve çok Scratch gibi, var Bu ekranda üç temel alanları.
Yani sol tarafta, biz hangi dosya tarayıcısı olacak.
Ve bu klasör de var Şu anda boş top,
Tüm kurtuldum beri benim supersection önce dosyaları.
Ve bu nerede olacak bulunuyor Biz yazmak C dosyaları kaydetmek.
Sağ üst köşesinde, biz bir yere nerede var Bizim tüm kodu yazılı almak için gidiyor.
Ve gerçekten, ben bu artı tıklarsanız, bu Beni Yeni Dosya seçmesine izin gidiyor.
Ve burada ben veya C kod yazmaya başlayabilirsiniz, Gerçekten, diğer dillerin herhangi bir sayı.
>> Ve sonra nereye dibinde diyor jharvard @ ide50-- ve seninki olacak
bir şeyler söylemek different-- Bu ne denirdi?
Terminal penceresi.
Evet.
Yani terminal penceresi olan Sözde komut satırı
etkileşim hangi aracılığıyla arabirimi Altta yatan işletim sistemi ile.
Ve şimdi, biz gidiyoruz bu-- çok az faydalanmak
Sadece bakmak, derlemek Gördüğümüz hata mesajları,
ve bizim programları çalıştırmak için.
Ama sonuçta, biz gidiyoruz yanı sıra, çok daha fazlasını yapmak için.
Ve hatta yazılımı yükleyebilirsiniz ve Çalışma alanınızı yönetmek
CS50 IDE içinde, hem de.
Ama bu başka bir zaman daha.
>> O yüzden go ahead ve yazalım çok basit bir program, sadece
bir ısınma geçmesi belki de merhaba.c,
Biz yazabilirsiniz basit bir program.
Zaten yeni bir sekme açtık.
Ben devam edeceğim ve Standart io.h dahil söylüyor
Sonra ana (void) int.
Ve sonra printf ("hello, world" ters eğik çizgi n, yakın alıntı,
yakın parantez ve noktalı virgül.
>> Pekala.
Yani şimdi benim pencere isimsiz olduğunu fark.
Yani çok hızlı gidiyorum Kaydet Dosya kadar gitmek.
Ve o önemli Ben "merhaba". Bu yok diyoruz
Yani çok yaygın bir hatadır, Özellikle problem biri set
yanlışlıkla sadece aramak aşağıdadır Program, "su" ya da "açgözlü" ya da "Mario"
"Kredi" veya benzeri ya da.
Ama aslında yapmak istiyorum emin dosya uzantısı
Bu tek yol olduğunu, çünkü derleyici ve ayrıca kod editörü
sen biliyor Aslında C kod yazma.
Bu yüzden bana go ahead ve Kaydet'i tıklatın edelim.
>> Ve şimdi de ne CS50 IDE o da var olan bizim için yapmış
sözdizimi her şeyi vurguladı.
Bu yüzden her şey çok renkli hale getirdi.
Ve bütün amacı Bu işlevsel değildir.
O benim gözleri çizmek için sadece var kavramsal olarak farklı parçalar
Bu programın.
O yüzden go ahead ve bu derleme edelim.
Ve ben bu derleyebilirsiniz şekillerde birkaç.
Ve haftada tek yer, eski okul yolu yaptığımız
en tam anlamıyla komutunun LINE "clang merhaba.c."
Ve sonra Enter tuşuna basın.
Ve hiçbir şey olmuyor Terminal penceresinde.
Ama IDE değişikliği ne yaptı?
Nerede, yine IDE sadece anlamına gelir Entegre geliştirme ortamı.
Bu söylemenin süslü yolu Bu entegre kalkınma
yazılım geliştirme için ortam.
Yani UI ne değişti?
Ne fark ettiniz O Maria, farklı?
>> MARIA: Ben bir şey fark ettim IDE50 altında burada klasörü.
>> DAVID MALAN: Evet.
Yani burada, sadece Elimizde "hello.c dosyasını."
Biz de hangi ", a.out" var Bir program için bir aptal isim tür.
Ama gerçekten, bu varsayılan isim Eğer sadece kodunuzu derlemek programı
ve derleyici söyleme çıktı ne dosyası.
Yani bu çalıştırmak istiyorsanız, ben compiler-- söylememe gerek
ya da daha doğrusu, ben gerek Çalışma alanını söyle ben
denilen bir programı çalıştırmak istiyorum "a.out."
Girin.
Ve, merhaba "var dünya. "şimdi" ./ ".
Aslında önemli.
Hatta normalde biz sadece olsa komutların adlarını yazma,
Eğer ettik bir program olduğunda yazılı, siz "./" demek istiyorsun
açıkça Linux söyler çünkü adlı bir programı çalıştırmak istiyorum
Bu öyle "a.out", nokta Şu anda ben bu dizinin anlamı
olur yılında, "a.out, çalışma alanı olarak adlandırılır.
Ben sadece söylediğim Çünkü eğer "a.out," Enter, Ben komuta a.out "değil alacağım
Bulunan "computer-- çünkü Ben icat çünkü "a.out;"
o computer-- ile gelmedi Nerede bunun için bakmak bilmiyor,
Hatta doğru olsa Burnumun altında, tabiri caizse.
TAMAM.
Yani biz bu değişebilir "merhaba -o clang merhaba.c." olarak
Ve ben Enter hit eğer, ne programı Bu benim için çıkış olacak?
Dosyanın adı nedir?
Evet, arkada.
Doğru. "Merhaba."
Yani "merhaba" olacak Programın adı
kullandığımız için sözde Sadece bir komut satırı argümanı,
davranışını değiştirmenin bir yolu aslında çıkışa derleyici
belirli bir dosya adı.
Ve gerçekten, ben Büyütmek eğer dışarı ve buraya bak,
şimdi ben sadece "a.out" ve hem de "merhaba.c" ama aynı zamanda "merhaba".
Yani şimdi ben bunu "./hello," Enter olabilir.
Ve "merhaba dünya" var.
Lastly-- ve Ancak Şimdi kongre olacak
biz boyunca kullanmak yarıyıl, typically--
Ayrıca sadece söyleyebiliriz "Merhaba olun."
Ve gerçekten, o kadar olduğunu söylüyor Bugüne kadar zaten varolduğundan.
Beni go ahead ve birlikte kaldırmak edelim rm komutu, "a.out" hem -
ve demek "normal dosya a.out kaldırılsın mı?"
Sadece anlamına gelir, sen Emin bunu silmek istiyor?
Ben evet demek için gidiyorum.
Ve sonra kaldırmak için gidiyorum "Merhaba" değil "merhaba.c."
Ben açıkça "evet" demek için gidiyorum ama "y", hem de yeterlidir.
>> Ve şimdi eğer fark ben , ls-- ki, geri çağırma yazın
tüm listeler list-- demektir Benim Klasördeki dosyaların.
Ve gerçekten, ben Büyütmek eğer dışarı ve sol üst bakmak,
ne olduğunu doğruladı Bu klasörde, hatta
o kadar burada IDE50 olarak etiketlenmiş gerçi ve çalışma alanı, sadece "merhaba.c." var
Yani şimdi buraya, ben ise Enter "Merhaba, yapmak" do,
şimdi çok daha uzun bir komutu görüyoruz, ama gidiyor daha sofistike bir komut
gelecek hafta içerisinde faydalı olması.
Ve şimdi "./hello." Diyebilirsiniz
>> Yani hızlı bir tur atalım Bazı diğer Linux komutları.
O zaman neden bir adım yapmayız sırt ve aslında daha C bakmak
Genellikle, Sıfırdan geçiş C ve daha sonra bir göz ile sonuçlandırmak
İlk soruna C. set Pekala.
Yani ileride sadece temiz gidiyorum Kontrol-L sadece benim çalışma alanı kadar
temiz ekran tutmak için.
Ama bu hiçbir fonksiyonel vardır Aksi takdirde etkilemektedir.
>> Gördüğümüz hatırlayın Şimdi bir kaç komutlar.
Bu yüzden hangi genellikle clang gördüm seni Artık elle yürütmek zorunda kalmazsınız.
Biz bunun yerine make kullanacağız.
Ama biz de bir gösteren, ls gördüm Benim dizindeki dosyaların listesi.
Ve şimdi neden orada-- iki tane var olduğunu Şimdi dosyalar "merhaba" ve "merhaba.c."
Neden bir yıldız ya da orada "merhaba" sonra yıldız?
Bu esaslı, ne ifade vermedi Biz hafta biri gördüm ne?
Ne düşünüyorsun?
Yıldız ne anlama geliyor?
>> MARIA: "merhaba" programı For--?
DAVID MALAN: "Merhaba *".
Evet.
Ah evet?
Ah, çalıştırılabilir.
Doğru.
Yani bunun anlamı "merhaba" yürütülebilir.
Yani aslında, bu yüzden Ben "./hello." Yapabilirsiniz
Pekala.
Peki başka ne ben burada yapabilirim?
Eh, ben can çıkıyor Ayrıca dizinleri oluşturun.
Bu yüzden bana go ahead ve yapalım, Örneğin, bir "pset1" dizin.
Ve sorun set şartname tam olarak bunu yapmak zorunda olacak,
bu yüzden bugün hatırlamak zorunda değilsiniz.
Ama "mkdir pset1" görünüyor Hiçbir etkiye sahip.
Fakat yine de, hiçbir hata mesajı Genellikle iyi bir şeydir.
Yani, ah şimdi-- şimdi "ls" yazarsanız Aradım bir yürütülebilir dosya var
"Merhaba," C dosyası "hello.c dosyasını" denir.
Ve sonra firar çizgi, böylece konuşmak, bu bir dizin olduğu anlamına gelir.
>> Yani aslında, şimdi onu açmak istiyorum.
Ve ben gibi üzerine çift tıklayın yok Bir GUI, grafiksel bir ortamda.
Bunun yerine "cd pset1." Demek
Girin.
Ilginç bir şey var gibi görünüyor Benim küçük istemi dışında oldu
burada-- bu hatırlatan Linux'un yoludur Bana nerede olduğumu, bu yüzden hangi klasörün açıktır.
Sadece açıkça bana söylüyor grafiksel olarak karşı çıktı.
Ben yazarsanız Ve "ls," neden başka görüyorum Sizce, hemen istemi,
Ben pset1 içeriğini listelemek zaman?
MARIA: Muhtemelen değil Orada bir şey var.
DAVID MALAN: Evet.
Öyleyse biz tabii ki değil var Orada bir şey yarattı
Ben sadece dizin yarattı çünkü.
Şimdi, ben bir file-- yaratmak istedim örnek, ben yeni bir dosya oluşturabilirsiniz.
Ve sonra ben gidebilirim Kaydet ve olarak kaydetmek,
gibi "mario.c" Eğer yapıyoruz pset biri standart edition.
Ve sonra, herhangi bir Mac veya PC gibi, sadece Kaydet klasör "pset1 seçin.
Ve şimdi dosya boş.
Ama bir saniye için yine yakınlaştırmak verelim.
Burada ls yapalım.
Şimdi "mario.c" bölümüne bakınız.
>> Yani birkaç diğer komutları var ki seferinde-- üzerinde akılda tutmakta fayda vardır
açık ya da Kontrol-L Birkaç gün önce ne isabet olmuş; mkdir gördüğümüz;
rm biz hangi yanı sıra, gördüm kaldırma veya bir dosyayı silmek için.
Eğer bakarsanız also-- edebilirsiniz sakının ve çevrimiçi öğreticiler, sen -rf rm edeceğiz
diyerek çok yaygın bir şekilde İçinde şeyler vardır bir klasörü silin.
Sadece süper dikkatli, süper olacak.
-rf recursively demektir ne olursa olsun silmek
Silmek için çalışıyoruz ve zorla silin.
Bir klasör ile eğer araçları Yani özyinelemeli bir klasör ile bir klasör bir klasör,
hepsini silin.
Ve zorla bile yapmak anlamına gelir evet bana soracak ya da hayır, eminim?
Yani süper tehlikeli bir yoldur hızla sürü silme.
Ama beware-- çok sık bir cesur yapar Öğrenci yanlışlıkla, diyelim ki, pset silmek
Örneğin, bir,.
>> MARIA: Ve onlar eğer sadece -r yapmak, onlar gidiyoruz
her dosya hakkında onlara sormak.
>> DAVID MALAN: is orta can sıkıcı.
>> MARIA: Evet.
>> DAVID MALAN: Yani bu yüzden Bize o kadar çok, kendini dahil,
rf kullanma alışkanlığı duyuyorum.
Ama tehlikeli.
Yani alıcı sakının.
Ve sonra mv tür bir İlginçtir atadı.
Yani bu hareket komutu, hangi biraz garip hissediyor
Eğer gerçekten bunu kullanabilirsiniz, çünkü başka bir yerden dosyaları taşıyın.
Örneğin, ben berbat olduğunu varsayalım.
Ben yarattığını varsayalım pset için yeni bir dosya.
Ve ben sakladım "greedy.c."
Ama yanlışlıkla ben varsayalım kaydetmek IDE50-- benim çalışma alanında kendisinde böylece
olup pset1 bölgesindeki.
>> Sen sol üst kısmında kadar görebilirsiniz.
"Greedy.c." Orada
Ve birkaç çözüm var.
Yani biri kullanabilir miyim Süper kullanıcı dostu bir şekilde
sadece sürükleyip bırakarak.
Ve aslında olur Bu sorunu gidermek.
Ama bugün, biz bakmak için çalışıyoruz daha gizemli ama güçlü yolları
Bu yapıyorum.
Bu yüzden bana pset1 içinde "ls" atalım.
Ve ben sadece "mario.c." Bkz
Beni go ahead ve yapalım "cd ..".
Yani CD tekrar değişiklik dizin.
".." Olsa ne demek?
Son kez dedim "cd pset1 "pset1 gitmek.
Ben "cd .." derken Peki, ben ne yapıyorum?
Geriye doğru.
Evet.
>> Yani sözde ebeveyne gidiyor.
Gibi, bir seviye yukarı git Bir klasörün dışına çıkmadan.
Yani girin.
Ve gerçekten de yaptığına bak.
Bunun yerine sadece çalışma alanına bana taşındı bir çalışma alanında olduğu pset1 içine.
Ve şimdi "ls" yazarsanız, şeyler bir sürü var.
In "greedy.c" var.
Yani şimdi beni tam anlamıyla için mv kullanmasına izin pset1 içine "greedy.c" hareket ettirin.
Ve böylece Linux'un bir sürü komutları aynen böyle çalışır.
Onlar hiçbir argüman alabilir ya da birini almak argüman ya da iki komut satırı almak
argümanlar ve benzeri.
Bu durumda, var: Kelimenin tam anlamıyla ne yapıyor
o succinctly-- olsa diyor pset1 içine greedy.c hareket eder.
Girin.
Hiçbir şey gibi görünüyor.
Ben yine ls Ama eğer, açgözlü gitti.
Ben "cd pset1" yaparsanız, o zaman girin ve ls yine şimdi doğru yerde var.
Bir kenara, için sanki Bazı özellikle nedenden
Eğer aralıklı varsa Ağ bağlantısı
ya da çevrede yürüyorsun dizüstü kapaklı kampüs
kapalı ve daha sonra o kadar açık Tekrar ve çalışma alanı
biraz senkron, hiçbir büyük anlaşma dışında görünüyor.
Sadece tarayıcınızı yeniden Pencere ve olması gerektiği
yeniden senkronizasyonu ve böylece sol-taraf Dosya tarayıcısı tam olarak görünüyor
terminal penceresinde gibi.
Endişe etmeyin.
Şüpheye düşerseniz, bu yüzden, sayfayı yeniden Uzun zaten dosyaları kaydettiğiniz olarak.
TAMAM.
Yani mv ayrıca dosyaları yeniden adlandırmak için kullanılır.
Ve en az bir göz atalım Burada bu son komutu.
Böylece suppose-- ve bu Süper ortak da erken.
Bazı öğrenciler bazen bir dosya oluşturmak denilen en bir tane ne say-- izin mi verdin?
"WATER.C." Gibi
Yani sadece için, bağırma olacak Tüm kapaklar hiçbir sebep.
Ancak bu değildir dosyası için doğru isim
bizim sorunumuz set sadece çünkü eğer şartname sana söylemedim
Tüm kapaklar dosyası olarak kaydetmek için "WATER.C."
Bunun yerine, biz bekliyoruz küçük harflerle "water.c".
Ve, aslında, bu sorunlu çünkü check50,
Gittiğin bir program problem karşılamak için
otomatik test bir set kodunuzu doğruluğu
sen bağırma olacak eğer yapamaz Bütün küçük harflerle "water.c" bulmak.
>> Yani bu düzeltmek gerekir.
Yani birçok farklı yolu İlki bunu
Kontrol tıklayın veya sağ tıklama olacaktır Dosya adı sadece Yeniden Adlandır değiştirin ve.
Bunu yapmak için tamamen iyi.
Fakat yine de, bugün, haydi biraz meraklısı yok.
En değiştirmek için mv kullanın Let Için "WATER.C" "water.c."
Yani aynı zamanda ilk argümanını kullanabilirsiniz İkinci argüman olarak yeniden adlandırın için
İkinci argüman değil, eğer Aslında, bir klasör veya dizin adı.
>> Pekala.
Ve son olarak, küçük bir trick-- yüzden ben de varım Şu anda benim çalışma dizini.
Ben pset biri içine almak istiyorsanız, Ben kesinlikle "cd pset1." Yazabilirsiniz
Ama "pset1" yazmanız çok sıkıcı olduğunu veya dosya adları veya dizin adları daha uzun
Hala.
Bu yüzden çok sık Linux ne Eğer "PSE" yazmaya başlayın olduğunu yapabilirim
ve sadece bıkmak Tab vurdu ve izin Sizin için bilgisayar rakam dışarı.
Bu alışkanlık haline almak için Süper yararlı.
Eğer varsa sadece yakalamak olduğunu Başlangıç ​​birden fazla dosya veya klasörleri
harfi "p" ile ya da "ps" aklınıza gelebilecek
önce birkaç daha yazın bilgisayar ne yapacağını bilir.
>> MARIA: Biz kısayolları gibi.
>> DAVID MALAN: Bu irade Seni çok zaman kazandırabilir.
Ve ayrıca, biz, derste söylediği gibi yukarı ve aşağı, tarihin kadar ilerleyebilirsiniz,
son çalıştırılan bulmak için komutlar yanı sıra.
Pekala.
Yani şimdi, en dikkatimizi geri dönelim Basit bir program, merhaba dünya.
Yani biz tam bu derledik.
Ve şimdi neden yapmayız veri türleri bir göz
ve daha sonra bazı geçiş C Kazı blok tekabül
MARIA: Korku.
Yani şimdi başladım o C programları yazarken,
biz konuşmaya başlamak için gidiyoruz veri tipleri ve değişkenler hakkında.
Bu yüzden bazı veri türleri olduğunu sen şimdi başlıyor bilmek isteyeyim
olanlardır mavi vurgulanır.
Bu yüzden, ilk int var Hangi tamsayı anlamına gelir.
Ve bu senin gibi tamsayılar tutar sahip olabilir, böylece guessed-- 1, 2, 3,
ve diğer tamsayı aklınıza gelebilecek söyledi.
>> DAVID MALAN: Ve ayrıca negatif.
>> MARIA: Ve ayrıca negatif olanlar, evet.
Ve 0.
Sonra yüzer, sahip olduğu kayan nokta sayıları vardır.
Böylece tüm gerçek sayılar var Bu ondalık noktaları var.
Böylece 5,0, 5,2, ve hatta daha da noktadan sonraki basamak,
yanı sıra, aynı zamanda negatif olanlar.
Sonra bir karakter olan karakter var.
Yani konuştuğumuz düşünüyorum Bu derste bugün.
Ama biz, A example-- için, mektuplar var Char olarak saklanabilir B, C-.
Ama sonra çok daha fazla sembol var bu char olarak saklanabilir.
Ve bu ASCII olarak depolanır.
>> Sonra bool, bu Boolean bulunmaktadır.
Ve bu true değerlendirmek veya Yanlış veya sırasıyla 1 ve 0,.
DAVID MALAN: Ve hatırlama o bool CS50 kütüphanesinden gelir.
Yani yerleşik değil C ama süper kullanışlı
doğru ve yanlış kavramı var.
Ve hatta sana rağmen Eğlenceli gerçeği bence-- olabilir.
Bir bool teknik kaç bit ihtiyacı Gerçekten, yanlış karşısında doğru temsil etmek?
Kaç bit sizce Eğer maksimum, gerekir?
Evet, sadece bir.
Yani o C çıkıyor Size sadece bir bit veremem.
Ölçü küçük birimi alabilirsiniz sekiz olduğunu.
Bu yüzden onlar sen biraz savurgan Bütün bir bayt veya sekiz bit kullanarak,
Doğru veya Yanlış temsil etmek.
Ama bu bu sadece yolu CS50 kütüphanesi tarafından C uyguladı.
MARIA: Biz konum Ve sonra olanlar olarak yaygın hakkında konuşmak için gitmiyorum
sağ çift şimdi--, Bu büyük yüzen için.
Uzun uzun ve kısa tamsayılar için de vardır.
DAVID MALAN: Gerçekten.
Pset biri hacker baskısında, biz aslında uzun uzun kullanın.
Ama standart edition için, gerekli olmamalıdır.
MARIA: Serin.
TAMAM.
Yani olması gerektiği operators-- Bunların çoğu muhtemelen tanıdık.
Toplama +; çıkarma, -.
Çarpma için, * var.
Bu yüzden değil X genellikle kullandığınız.
Bölümü, biz ters eğik çizgi var.
Ve modulo son operatörü olduğunu şu anda hakkında konuşmak için gidiyoruz.
Bu bize sağlayan bir operatör var bir bölümü kalanını alır.
Biz% 4 varsa 2, 4 bölünmüş Yani 2 ile 0 bir geri kalan kısmı ile 2 'dir.
Yani% 4 2 0 olduğunu.
4,% 3 1.
Tahmin olabilirdi% 4 5 4 olduğunu.
Ve tüm bunları kullanırken hatırlıyorum operatörler PEMDAS kurallarını kullanın.
>> DAVID MALAN: Yani, açık olmak eğer 4,% 2 yapmak, tam olarak neden bu 0 mı?
>> Maria: 4 için bölünmesi 2 0 bir geri kalan kısmı ile 2 'dir.
Yani modulo bize kadar o kalanı verir bölünme sonucu karşı.
DAVID MALAN: Ve gerçekten, Bu yararlı ne bulacaksınız
bazı sorunlar olduğu Bu, mutlaka biri değil
Eğer yapmak istiyorsanız kendinizi kısıtlayan etkisi
bir sayı aralığı şey aracılığıyla 0 gibi,
etrafında sarmak için modulo kullanabilirsiniz Daha önce 2 milyar gibi daha
ya da 4 milyar değer olduğunu Biz derste konuştuk.
>> MARIA: Evet.
Ve hatta belki "açgözlü" olarak.
DAVID MALAN: Evet, içinde Sorun, hem de bir set.
MARIA: Evet, güzel.
DAVID MALAN: İyi ipucu.
MARIA: Özür dilerim.
Boolean yani expressions-- Boole operatörleri için,
Biz ilgili tüm konuşmak için gidiyoruz Bu Bunun burada gördüğünüz.
Yani şu anda, biz iki tane var Eşit işaretler eşittir için sıraladı.
Yani bu karşılaştırma için vardır.
Şimdiye kadar, sadece gördüğüm tek eşittir işareti.
Biz atamak o zaman Bir değişkene bir değer.
O halde, biz int n = 5 gördüm eğer Biz değişken n 5 atadık.
Ama biz için == kullanmak istiyorsanız Karşılaştırma, biz eğer n == 5 kontrol edebilirsiniz.
Ve n == 5 ise, o doğru.
>> Yani Boole işleçleri temelde bize izin,
Boole değerlendirmek Doğru veya yanlış olarak ifadeler.
Yani biz var equals-- değil Ünlem işareti ve eşittir.
Bu yüzden de n ise kontrol edebilir yapar eşit değildir 5-- yüzden n! = 5.
Daha az veya eşit, daha az, daha büyük veya eşit, daha büyük,
ve sonra biz mantıklı var AND ve mantıksal VEYA.
Ve bu bize değerlendirmek için izin birlikte birden fazla Boole ifadeleri
temelde bir araya gelmek olarak bir bütün Boole ifadesi.
Biz numarasını bulmak istiyorsanız Yani, demek bu daha büyük 5 15'den az olduğu
Aynı zamanda, biz kullanmak n olup olmadığını görmek için mantıksal AND işleci
daha büyük 5 && az 15 n.
DAVID MALAN: Ve burada, çok gerçekten kolay
erken yanlışlıkla Sadece tek bir işareti kullanın
ya da tek bir dikey çubuk.
Ve umarım derleyici olacak bağırma aslında çünkü onlar
çok farklı bir anlamı vardır.
Bu meraklı için, onlar Bitsel işlemleri için kullanılan,
Bireysel bit işletim.
Ama burada onları çifti istiyorsun.
Ve süper önemli olduğunu İlki, eşittir işareti,
Eşitlik operatörü olarak hangi atama operatörü karşı.
>> MARIA: Ve dikey çubuk olduğunu Sil ve İade arasında yer.
DAVID MALAN: Evet.
Tipik bir Amerikan klavyesinde.
>> MARIA: Evet.
Yani sağ içine atlamak izin koşullu ifadeler.
Scratch, sen ettik Zaten görüldüğü gibi, muhtemelen,
eğer size izin ifadeleri bir şey doğruysa o zaman, kontrol
başka bir şey yapmak.
Yani istemiş olabilir senin sprite olup olmadığını kontrol etmek
başka bir hareketli grafik dokunmadan veya ekranın sınır.
Ve sonra istedik olabilir oyunu bitirmek ya da başka bir şey yapmak.
Bunun için sözdizimi Yani "if (koşul)" dir.
Yani eğer sizin sprite şey dokunuyor, Daha sonra küme parantezi içinde olduğunu yoktur.
>> Sonra if-else ifadeleri var.
Başka bize bir şeyler yapmanızı sağlar durum eğer biz
Başlangıçta kontrol doğru değildir.
Sprite dokunuyor Yani eğer Sınır başka, bunu başka bir şey yapmak.
Yani, aksi takdirde başka bir şey yapmak.
Sonra bunun için kısa bir örnek var.
Yani eğer (military_time <12), biz printf istiyorum "Günaydın!"
Else biz gidiyoruz printf "İyi akşamlar!"
Temel bir örnek.
>> DAVID MALAN: İyi.
>> MARIA: Serin.
Yani şimdi biz switch ifadeleri var.
Genel can ifadeleri Anahtarı Bize aynı şey bir sürü yapmak için izin
biz sadece konuştuk ifadeleri ise yaklaşık.
Örneğin, şu anda elimizde switch ifadesinin genel formu
bu bizi almasına izin veriyor Değişken olarak adlandırılan N
ve bir sürü karşılaştırın farklı değerler, hangi burada
CONSTANT1, CONSTANT2 çağrıda bulundular.
Biz çok daha fazla olabilir.
Ve bu davaları denir.
>> Biz bir geçiş var ise statement-- ve bu eserler
Sadece biz bir var integers-- için n var bu durumda değişken.
N değişkeni ise , biz CONSTANT1 eşit
kod bazı pasajı yürütecek ya da biz yapmak istediğim bir şey.
Ve sonra kıracak.
Yani sonu anlamına gelir switch deyimi
eğer yürütme durur n, CONSTANT1 eşittir
ve sonra programı devam edecek.
Bu dışarı çıkar deyimi geçiş ve olacak
Başka bir şey yapmaya devam.
>> Bununla birlikte, n eşit değilse CONSTANT2 için CONSTANT1, o durumda
kontrol edilecektir.
Yani n, diğer CONSTANT2 eşitse kod pasajı idam edilecek.
Ve o zaman kırarım bunun eşit ise.
Ve sonra biz also-- değil olabilir mutlaka, varsayılan bir davayı rağmen--
n eşit yapmazsa hangi olur Eğer listelenen durumlardan herhangi.
Ve varsayılan durumda, biz de mutlaka bir molaya ihtiyacım yok
switch deyimi bilecek, çünkü varsayılan sonra sona gerektiğini
dava eğer durum buysa.
>> DAVID MALAN: Ama üslup, biz her zaman orada koydum.
>> MARIA: Evet.
>> DAVID MALAN: Evet.
Yani özellikle başlarken Özellikle kişiler arasında daha eğer
rahat, ben şahsen olur sadece IFS sopa ile tavsiye
ve IFS-birinin ve if-else-if-birinin ve benzeri halinde
onlar biraz çünkü daha basit.
Bu güzel bir optimizasyon, ya hatta bazen estetik onu
Kod daha okunabilir hale getirir.
Ve aslında, muhtemelen orta dönem bir sorun görürsünüz
sadece daha iyi görünüyor nerede set ve daha kolay insanlar için okuma
Bir anahtar deyimini kullanarak.
Ama dert etmeyin çok erken bu tutunarak.
>> MARIA: Evet.
Eğer ifadeleri eğer bir sürü varsa, sadece çok okunabilir olmayabilir.
Çok hızlı olmayabilir için bunun üzerinden gitmek.
Yani ifadeleri edebilirsiniz anahtarı çok yararlı kullanımları da bu.
Ve aynı zamanda, unutma-- değil yapmayın Orada sonları koymak unutma.
>> DAVID MALAN: Bu hatırlamıyorum.
>> MARIA: o zaman düşebilirsin Çünkü aracılığıyla başka bir davadan.
Yani bu durumda CONSTANT1 diyelim o bir break deyimi yoktu.
Sonra biz aracılığıyla düşebilirsin iç kutunun CONSTANT2.
Ve biz eğer bunu yapmak istemiyorum biz zaten dava CONSTANT1 ulaştınız
ve n eşittir var.
>> Bu nedenle, örneğin, bir değişken varsa Bir sınıf numarası içeren n,
ve ne olduğunu görmek istiyorum n 50 eşitse, sınıf, bu--
Biz CS50 ise "yazdırmak için gidiyoruz Bilgisayar Bilimi I. Giriş "
Sonra kırmak için gidiyoruz.
Ve bu kadar.
Ancak, n eşittir 51, biz gidiyoruz
CS51 Giriş olduğunu "yazdırmak için Bilgisayar Bilimi II. "
Sonra, yine biz kırmaya gidiyoruz.
Ancak, eğer o zaman koymak 124, 61, herhangi bir Aklınıza belki başka bir numara,
veya program gitmiyor tanımasını.
Yani Üzgünüm, ben "demek oluyor o sınıfın aşina olmayan. "
Ve kırmaya gidiyor.
DAVID MALAN: Yani gerçekten görebilirsiniz , eğer burada başka başka fikir, eğer.
Bunun için sadece farklı sözdizimi aynı fikri ifade.
>> MARIA: Kesinlikle.
Şimdi bizim üçlü operatörler var.
Yani üçlü operatörler var Üç, bir durumun parts--
eğer yapacak bir şey Bu koşul, doğrudur
ve sonra bir şeyler yapmak eğer bu koşul yanlıştır.
Yani, temelde, bkz burada sözdizimi.
Biz soru işareti var ve Sonra Şeyin ne bu diyorsun?
DAVID MALAN: kolon.
MARIA: Kolon.
Teşekkür ederim.
Üzgünüm.
Yani bizim örneğe bakalım Biz bu-- mantıklı olmadığını görmek
class_num == 50.
Yani burada biz == bizim Boolean operatörü bakın Bu değişken class_num karşılaştırır
50.
Yani class_num depolar bir tamsayı.
Ve bu tamsayı ise o zaman sen, 50 eşittir
saklamak için gidiyoruz "David Malan" Dize profesörü içinde.
Sınıf numarası değilse "not David Malan", 50 eşit
Profesör olacak.
>> DAVID MALAN: Teşekkür ederim.
Ve böylece bu eşdeğer gibi görünüyor İlk bakışta, ne söyleyebilirim?
>> MARIA: Benim için öyle görünüyor gibi if-else deyimleri.
>> DAVID MALAN: Evet.
Ve aslında, bu tür güzel bir tek liner,
yani uygulanması için, konuşmak için tam mantığı if-else
ancak tek bir adımda her şeyi yapıyor.
>> MARIA: Kesinlikle.
Evet.
Yani if-else ifadeleri olabilir çok yer kaplar.
Onlar için çok uzun olabilir Bu gibi basit bir şey.
Yani bu çok olabilir özlü ve çok güzel.
Yani şimdi baktığımız içine gidiyoruz tekrar tekrar bir şey yürütme,
böylece kontrol birden çok kez şart
ve sonra bir şeyler yapmak için devam Bu koşul doğru ise.
Yani bu bize getiriyor güzel ise ilmeklere.
>> Sol tarafta, biz İlk while döngüsü.
Şey doğrudur süre Yani, tekrar tekrar bir şeyler yapmak.
Yani fark emin olun bizim durum burada üst kısmında doğrulanmıştır.
Dediğimiz bizim ikinci loop-- oysa do-while bir şey yapmak loop-- olduğunu,
o zaman biz bir durumun olup olmadığını kontrol edin.
Ve şartıyla eğer Gerçek olmaya devam ediyor
Biz geri dönün ve tekrar şeyi yaparlar.
Yani temel fark nerede koşul kontrol edilir.
Ve kod asla olabilir durum değilse idam
while döngüsünde ile gerçek.
Do-süre ile Oysa Döngü, biz kodu var
O zaman en az bir kez yürütülür.
Sonra durumu ise Gerçek olmaya devam ediyor
Biz geri gitmek ve içeride tekrar yineleme yapabilirsiniz.
Peki neden biz kullanmak istiyorum sizce a while döngüsünde üzerinde döngü do-while?
Sağ.
Biz istemi istiyorsanız Yani girdi çeşit için kullanıcı,
Biz onlara sormak istiyorsanız Onların adını girmek için,
en az bir kez onlara sormak istiyorum.
Ve onlar girin yoksa Bu isim, biz değiliz
Onları tekrar soracağım biz zaten bunu biliyorum çünkü.
Ama girmezseniz ad, ya da eğer
olan bir şey girin Açıkçası bir isim,
biz hala devam etmek istiyor Onların adını onlara soruyorum.
>> DAVID MALAN: Ve derste biz vardı olsun pozitif int ile böyle
hiçbir şey yok örnek, Hatta değil çünkü ilk başta kontrol
bir int kazanılmış.
Yani biz bu-- yapmak istiyorum user-- bir int almak
o zaman belki, kontrol, Tekrar ve tekrar ve tekrar.
>> MARIA: Kesinlikle.
Loops-- Tamam.
Döngüler izin verebilirsiniz bizim için neredeyse yapmak aynı şey de.
Aslında aynı şey.
Yani hiçbir şey var ki Eğer döngüler için yapabileceğiniz
Eğer mümkün olmaz süre döngüler ile yapmak.
Ama döngüler için biraz görünebilir biraz daha karmaşık sözdizimsel
Onlar çünkü Üç parça içinde ne
hemen önce oldu süre döngüler ile durum.
Yani ilk bölümü bu deniz, sol-En, biz "int Cüceler = 0"
Yani bu nerede biz Bizim değişkeni başlatmak.
>> Sonra bir noktalı virgül var ve "Cüceler 7. <"
Yani bu nerede olduğunu durum aslında.
Yani biz olurdu ne süre sadece koymak loop--
"Cüceler 7. <ederken"
İşte o gider Bizim döngü için orta.
Yani "dwaves 7. <"
Ve sonra son bölümü ", cüceler ++" dir hangi bizim değişkeni güncellemek yerdir.
Önemli şey So gerçekleştirmek için bu böyledir
for döngüsü bu geçmesi için gidiyor yedi kez ve yürütmek yedi kez.
Yani biz yedi var Cüceler, ve hepsi sensin
Ben buradayım "demek için gidiyor size yardım etmek için, Snow White "
Onlar hazır olduğundan Pamuk Prenses yardım etmek.
>> Döngüler, biz yapardı süre ile başlatma ve güncelleme
kaydıyla içinde tekrar ancak önce veya while döngüsünde ya
emin olmak için biz-- çünkü biz her zaman bu parçaların gerekir.
Bu yüzden sahip olduğundan emin olmak için Onları, biz hala var onları ekledi olurdu
üzerine, adil değil parantez içinde.
>> DAVID MALAN: Ve öyledir öyle gözüküyor ki-- Teorik olarak, örneğin,
Ben hemen hemen her zaman kullanmak gibi, ben ve n ve oldukça sıkıcı değişkenler.
Daha kullanabilirsiniz gibi görünüyor zekice, çok değişken adında.
>> MARIA: Evet, gerçekten çok güzel Biraz daha açıklayıcı değişkenleri kullanmak için
başkası, özellikle çünkü senin code-- okuma belki sen greyder
veya işbirliği yapıyorsanız somebody-- ile
Eğer emin olmak istiyorum onlar Ne yaptığını anlıyorum.
>> TAMAM.
Yani bu şey çok funky-- olduğunu for döngüsü bir iç döngü.
Daha önce bu gördüm eğer ben bilmiyorum.
Muhtemelen değil.
Ama biz aslında paha olabilir bunun yerine döngüler döngüler.
Yani herkes belki yürümek istiyor Bana ne ile oluyor burada?
DAVID MALAN: Ben bir deneyeceğim.
MARIA: Serin.
DAVID MALAN: Tamam.
Yani, biz bir şeyler yazdırmak istediğiniz spoiler-- Bu sağ alt köşede bulunuyor
Orada.
>> MARIA: Doğru.
Evet evet.
>> DAVID MALAN: Yani biz ettik sadece Oradaki örnek çıktı koydu.
Yani gelen çıkarabileceği sen üstteki döngü
satır yineleme dıştaki döngü, tabiri caizse.
Ve yineleme ediyoruz En içteki döngü ile sütunlar.
Ve sezgisel, bu Umarım mantıklı olmalı
Çünkü doğası gereği gördüğümüz her program
önce, printf, Fonksiyon biz sonuçta kullanıyorsanız
şeyler yazdırmak için yeteneği vardır hat tarafından esas çizgi.
Gibi, bir kez çıkışı ettik Yeni hat, var
Hiçbir geri katlama ve bir şey yazdırırken en azından ekran yüksek
Böyle printf kullanarak değil.
>> Ve böylece bu konuda, o yapar duygusu o dıştaki döngü
satır atıfta olmalıdır Her satır verilen için, çünkü
istediğiniz gidiyoruz Daha sonra XXXXX çıktısını ve
Bir sonraki satırda, XXXXX için hareket.
Yani satırlar önce gelir.
Sonra içinde her satır, sen sütunları yazdırmak.
Bunu yapmak için çalıştı Eğer karşısında, muhtemelen olmaz
amaçladığınız gibi çıkıyor.
>> MARIA: Evet.
Biz sadece geri gidemedim printf önceki satır.
>> DAVID MALAN: Ve ne ilginç kapsamı hakkında bugünün sohbet başına
Aslında, satır bir int olduğunu O üstteki döngü içinde beyan ediyor.
Ama yine de olduğunu fark içinde, tabiri caizse,
kaşlı olduğunu hemen izleyin
teknik olmasa bile Bu küme parantezi içinde.
Yani satır kapsamı içinde kod parçacığını tamamı,
Her iki döngü için dış içinde ve döngü için iç içinde.
Ancak bunun aksine, burada Sütun kapsamı içinde mi?
Değişken sütun?
Evet, sadece içerden gözüne tahsis edilmiştir.
Biz erişim yok çünkü bu Tamam onun kıvırcık parantez dışında.
Yaptığımız tüm yeni çıktısı olan Orada çok sonunda hattı.
Aslında Böylece OK.
>> Yani bu etkiye sahiptir, bu gibi görünüyor Üç satır ve dört sütun yapıyor.
>> MARIA: Doğru.
Bu yüzden ilk bizim ilk satırda geçiyor.
Ve sadece bizim ilk satırda, yapmamız İlk satırda içinde dört sütun.
Yani biz dört X 's çıktı.
Ve sonra biz bu yana, for döngüsü çıkabilirsiniz Biz zaten dört X 's yazdırılır ettik.
Ve biz yeni bir satır yazdırın.
Ve sonra biz geçmesi iki veya daha fazla sıra için aynı işlem
Üç toplam yapmak.
>> DAVID MALAN: Ve bu kadar fazlalaştı yazı sadece bir obje, aslında
Örnek çıktı o , çok uzun boylu görünmek
dahası var sanki sütunlar daha satırlar.
Sadece X çünkü Ama var eninden daha uzundur.
Yani, orada oluyor hepsi bu satır aralarını artı beyaz boşluk.
>> MARIA: Doğru.
Güzel.
DAVID MALAN: Pekala.
Yani sorunun hızlı bir bakış, bir set Herhangi bir sorunuz almak ve sonra da ertelemek?
Pekala.
Sorun bir set Yani, üç var Birincil zorluklar sonuçta.
Ama önce, bulacaksınız Sorun ayarladığınız
gibi özellikleri, bir çok psets bu sonbaharda, size yol gidiyor
Bir kaç ısınma egzersizleri ile, Birkaç kaynak sizi işaret
Bu olabilir ya da may Zaten gördük değil.
Örneğin, CS50 , şort bir paketi var
kısa videolar ki vardır, olup, bu farklı olarak, ancak
çok konu specific-- vardır Belki beş dakika,
Döngüler üzerinde uzunluğu 10 dakika veya koşullara ya da algoritmalar
veya daha sonra more ileri konular yanı sıra.
Ve biz genelde embed problem haline o
setleri böylece öğrenciler bu bir kaynak var
olabilir malzemeyi yorumlayan Zaten ders ya da bölümünde buluyor.
Ama bu şekilde daha odaklanmış bulunuyor ve parmaklarınızın ucunda daha fazla.
>> Biz de problem gömmek eğilimindedir izlenecek denilen şeyler ayarlar.
Yani hemen hemen tüm yapmam örnekler derste, burada sahnede, biz de
kamera çektiğiniz Bir daha yavaş ilerlemek,
bana göre daha samimi bir walkthrough Bu kod benim laptop, satır satır
böylece sınıfta, biz sık sık olacak şeye ya da birine yoluyla yağsız
Bir ile Araya olacak Bir soruya cevap.
Ama ille de lavabo değil seyirci herkes için de.
Yani kod walkthroughs bulacaksınız örneklerin çoğunda
Biz derste burada yapmak böylece Kendi hızınızda içinden yürümek
ve ileri hızlı geri sarma da İsterseniz tamamen atlayın.
>> Genellikle birkaç var ısınma soruları o
sıralamak istiyoruz Bu malzeme takviye
ve daha önce rahat olduğunuzdan emin olun Eğer pset geri kalanı ile devam edin.
Sonra, tabii ki, pset kendisi var.
Ve şeylerden biri Çok kasten biz
CS50 yapmak hemen hemen her ilgi çekmeyen veya entelektüel ilgi çekmeyen
Mekanik adım olduğunu Yapmanız gereken olabilir
Hemen hemen her zaman çok iyi belgelenmiştir.
Dönem boyunca, yaparız daha retorik sorular sormaya başlar
gibi şu ya da bu nasıl hatırlıyor musun?
Ama genelde, bulacaksınız Sorun setleri almak olduğunu
mekaniği ile şey, böylece
ilginç, entelektüel zorluklar sonuçta size öğrenci bırakılır.
>> Bunu dedi, Zamyla, kime biz Derste bugün atıfta tuttu,
Bizim uzun zamandır personel biridir Ayrıca, izlenecek yollar tutan üye
Mario gibi belirli pset sorunlar üzerinde ve açgözlü olsa bu sene su değil.
Ve o öyle she sık sık izlenecek yollar
için bazı ipuçlarını sunar nasıl asla söylüyorum, devam etmek
Tam ne, ama bir durum gibi rather--,
Eğer vererek will-- eğer en azından böylece fikir çift o size kalmış
sonuçta karar onları nasıl yaklaşmak.
>> MARIA: Sıralama yüksek düzeyli gibi mantığı anlayışı nedir
Yapmamız rica edilmektedir.
>> DAVID MALAN: Kesinlikle.
Ve, aslında, en Zamyla izlenecek kastedilmektedir
Sık sık cevap ve sorulan soru
Ben, özellikle yapmaya başladı Bu uzun değerlerdir
biraz zor tüm metin verilmiş ve onlar içinde görüntüleri var.
>> Yani water.c, bulacaksınız Bunu tamamladıktan sonra,
aslında oldukça basittir.
Kesinlikle bir demet Eğer patlama gitmekten
çalışırken duvara kafa o derleme değil neden anlamaya
ya da neden düzgün çalışmasını değil.
Ama bitirdiniz kez onunla ve bir kez ettik
herhangi güreş biraz zaman geçirdim aklınıza gelebilecek hataların,
Eğer bu kadar olduğunu göreceksiniz çok kısa bir programdır.
Sadece birkaç yapılabilir kod satırları, çoğu
Biz eğer zaten derste burada gördüğüm Doğru yapı taşlarını bir araya getirin.
>> Ve biz önermek gibi Burada, bunu sormak için gidiyor
kaç dakika belirtmek için Birisi kampüsünde bir duş alıyor.
Biz sorunu belirttiğiniz Suyun akış hızını ayarlamak
gibi, düşük akımlı duş Baş, çok Seinfeld klip gibi
Dün gördüğümüz ya da bunların tersi.
Ve sonra sadece var matematik biraz yapmak,
anlatmak için C kullanarak aritmetik gerçekten-- Bize nasıl suyun birçok kabaca, şişeler
Biz eğer bu eşdeğerdir n-dakikalık duş alarak.
>> Şimdi, mario.c olarak, bu oluyor biraz daha uzun bir program olması.
Hala bu kadar uzun olacak değil.
Sadece birkaç satır water.c daha uzun.
Ama fırsat olacak eski okul Mario yeniden
Süper Mario piramit Kardeşler ya da bazı takip gör.
Bu güzel bakmak için gitmiyor ya da orada o biri olarak renkli.
Biz sadece küçük Hashtag'leri kullanmak için gidiyoruz gibi biz ekranda burada var
ASCII metin kullanarak.
Ama aynı fikri yaklaştığı olacaktır.
Ve bu bir olacak İlk bakışta bu egzersiz
sadece güzel simple-- görünüyor Basit bir piramit yazdırın.
Ama bir kaç özellikleri var Burada ilginç olduğunu.
En sağdaki kenarına dikkat edin piramit aslında genişliği iki sahiptir.
Yani eşit iki var Yükseklik sütunları, burada
Biraz gerektirir yapar düşünce bit yapmak
emin olarak, bu tam olarak doğru olsun Sadece mükemmel açılı karşı
çizgi.
Yani bir köşe davanın biraz ama gerçek oyun eşleşir.
>> Ve aynı zamanda, ilk sigara açıktır boşluk yazdırmak nasıl bakışta.
Yani baktığınızda Örnek çıktı burada--
ve spec-- de var o tür, bir dikdörtgen gibi görünüyor
ancak bir çapraz dikdörtgen, kapalı kıyılmış olmuştur
ve sadece beyaz boşluk, tabiri caizse var.
Ve böylece sık sorulan Soru de burada, her zaman,
Ben Hashtag'leri taşırım nasıl Doğru üzerinde?
Ya da nasıl boşluk yazdırırım?
Ve aslında kolay Çoğu öğrenci düşündüğünden daha.
Sağ?
Sadece görsel olarak tahmin edebilirsiniz bir veya iki kez boşluk çubuğuna vurmak
ya da üç kez.
>> Ve bu yüzden bile neredeyse printf ile olsa Her zaman bir dize ya da bir int çıktı
ya merhaba "gibi bir kelime, kelimelerin dünyası "ya da dizi
Ayrıca sadece yazdırabilirsiniz alıntı, uzay, unquote.
Ve aslında verecek Orada bir boşluk.
Böylece akılda tutmak ve Bu overthink yoktur.
Gerçekten var satırda tarafından satır satır karar
değil örneğin aksine Bunların önce, kaç tane anı
sütunlar beyaz boşluk olmalı ve hashtag nasıl olması gerektiğini birçoğu.
Bu biraz zaman alacak, ama bu türlü sonuçta mantık bulmacası.
>> MARIA: Evet.
Ama satır satır gidiyor mantığı Burada çok faydalı olacak.
DAVID MALAN: Evet.
Ben örnek kod bile gave-- düşünüyorum tam bir program değil olsa.
Hala int ve ana ihtiyaç ve geçersiz ve #include stdio.h,
dersin gelen bir sürü şey.
Ama yapı taşları Orada görünmektedir.
Ve sonra son olarak bir şey Biraz daha algoritmik.
Bu yüzden herhangi bir zamanda çıkıyor sen CVS veya herhangi bir marketten gitmek
ve birisi sizi eller kasiyer faturaları veya değişiklik olarak paralar,
çıkıyor onlar, insan, bunu biliyorum ya olsun ya da olmasın,
Muhtemelen ne kullanıyorsunuz Açgözlü algoritma denir,
Eğer borçlu eğer, demek bu sayede, 21 $ değişimi nedeniyle bir nedenle
Eğer çok ucuz bir şey aldım CVS de çok büyük bir fatura ile,
o takdirde gerçekten can sıkıcı olurdu Kasiyer size 21 single ya da daha kötüsü verdi
henüz sikke bir sürü.
Aksine, makul bir kişi nedir Muhtemelen yapacaksın onlar gidiyoruz olduğunu
Bir $ 20- ve daha sonra 1 $-fatura ve kapmak için Sana bu durumda sadece iki faturaları ver.
MARIA: Yani en aza indirmek için aradığınız onlar size geri vermek değişiklik.
DAVID MALAN: Kesinlikle.
Ve aynı anlaşma sikke ile, hem de.
Eğer borçlu ediyorsanız, $ 0.50, demek umarım 50 kuruş istemiyorum.
Bunun yerine iki istiyorum Örneğin dörtte.
Şimdi, bu varsayalım yapar kasiyer vardır
Her mezhep yeterli olduğunu o sana vermek isteyebilirsiniz.
Ama biz size varsaymak izin veriyoruz problem kadar.
Ve gol, nihayetinde için C kodu açgözlü bir algoritma.
Yani kullanıcı izin ne kadar yazmanız
he değiştirmek veya o dolar ile borçlu olduğunu ve cent, kayan nokta çeşit
Muhtemelen değer.
Ve sonra matematik yapmak ve iyi, algoritmik anlamaya,
kaç jeton verebilirim Eğer minimal size vermek
değişim tam da miktarı.
Ama orada oluyor Burada birkaç zor parçalar, değil mi?
Bütün var gibi tutarsızlık sorunu.
MARIA: Kesinlikle.
Yani kayan nokta değerler belirsizlik var.
Bugün derste bu konuda konuşmak mı?
>> DAVID MALAN: Yaptığımız konuşmasında son kez.
Biz imprecision hakkında konuştuk.
Ve kullanıcı hile istemiyorum ne kadar değişikliği o borçlu olduğunu.
Ve böylece örneklerde, içinde Sorun set şartname,
olarak, sonuçta biraz düşünmek O azaltabilir nasıl tutarsızlık
hatalar, potansiyel.
Bunun için, kesinlikle önlenebilir Bahsettiğimiz girdiler.
Ve, aslında, pennies-- belki Zamyla erteleme edeceğiz
Orada hileler için düşünüyorum.
Yani sonuçta, bir bulacaksınız sorunların ilerlemesi bu hafta,
İlk, oldukça küçük Daha sonra orta ve sonra biraz daha büyük.
Ama hepsi binayı kullanmak Geçtiğimiz hafta blok,
Bu supersection dan Sorun set şartname
sayısız kaynaklara koyar.
Ama yine de, eğer hiç mücadele, Özellikle daha az rahat olanlar arasında
hiçbir önceden arka plan ile, Mesai saatleri gelmek
Pazartesi ve Salı ve üzerinde Çarşamba ve Perşembe.
Aracılığıyla tartışın CS50 git dersin web sitesi
hangi aracılığıyla sohbet edebilirsiniz personel ve sınıf arkadaşları ile.
>> Ama sonuçta, bence En iyi tavsiye, sadece erken başlamak olduğunu.
Bu sınıfın bir tür olmadığını size Çarşamba günü psets başlayan olmalıdır
gece, ya da daha kötüsü Perşembe gecesi.
>> MARIA: Benim en iyi tavsiyem Pazartesi günü başladığı.
DAVID MALAN: Pazartesi.
Yani hayır already-- başlamış değil eğer.
Ama bile değil Pazartesi, Salı sonra.
Daha iyi daha önceki.
Ve bu nedeni derstir çok geç gün var
size biraz vermek psikolojik baskı
Daha önce başlar ama yine de izin işler uzun sürer zaman işler kayma
beklediğinizden daha.
>> MARIA: Ve faydalanmak istiyorum mesai saatleri de, mümkün olduğunca fazla.
>> DAVID MALAN: Herhangi bir sorunuz?
Pekala.
Peki, neden buradayız ertelemek değil mi?