KONUŞMACI 1: suyun bahsedelim.
Bu sorunun, biz anlatmak için kullanıcı isteyin Bize ne kadar dakika içinde kendi duş
ve sonra eşdeğer hesaplamak su şişesi sayısı
kendi duş kullanılan.
>> Yani to-do en nelerdir Bu sorun için?
İlk olarak, istediğiniz gidiyoruz uyarır ve daha sonra doğrulamak için
Kullanıcı bize verdiği girişi.
biz bu biz sağlamak kez geçerli kullanıcı girişi var,
Biz hesaplamak için gidiyoruz şişe su eşdeğer sayısı
Kullanıcı sırasında vardı kendi duş, sonra konum
bunları anlatacağım Bu sayıyı yazdırarak.
>> Yani ilk duralım Görev, isteyen ve doğrulama
kullanıcı girişi.
Bunun için biz yazdık bir Aradığınız için fonksiyon
CS50 Kütüphanesi'nde bulunan get_int.
get_int kullanıcı girişi sağlar bir tamsayı, herhangi bir pozitif sayılar, böylece
negatif sayılar, ya da sıfır kabul edilir.
Fakat kullanıcı başka bir şey girerse, yani harf veya rakamdan herhangi bir kombinasyonu
veya ondalık sayılar, daha sonra Kullanıcı yeniden istenir
ve fonksiyon şey kabul etmeyecektir Kullanıcı onlara bir tamsayı verir kadar.
>> Peki get_int kullanırım?
Eğer çalışma alanını açarsanız ve haydi integer.c adında bir dosya oluşturun
aşağıdakileri yazın.
Karma etiket cs50.h. içerir
Bu get_int için gerekli olan Bir CS50 kütüphane fonksiyonu vardır
bu yüzden dahil hashtag gerekir için kendi beyanı
işlevi kullanmak için.
Ve sonra benim main Ben sadece gidiyorum işlev
sadece işlev get_int aramak için.
>> Yani bu çalışmasına izin ve nasıl çalıştığını görmek.
Ben zaten derlenmiş, bu yüzden haydi ettik Sadece devam edin ve bu programı çalıştırın,
./integer.
Burada bir istemi var ve Burada değer nerede girişi var.
Ben sadece bazı tamsayı koymak demek 50, bir program excepts ve sonlandırılıyor
ve o var.
>> Ama ben yeniden çalıştırmak ve söylemek Başka bir giriş bir şey.
Belki merhaba dünya.
Böylece bir tamsayı değil Program yeniden denemek beni isteyecektir.
en tekrar deneyelim belki ondalık bu sefer.
0.5, yine değil, bir tamsayı yani Program bunu kabul etmeyecektir
ve yeniden denemek için bana anlatacağım.
Yani o başka bir numara vereyim.
Program bunu kabul eder, çıkar ve biz bitti.
>> Yani şimdi bir işlevi var bize ve garanti veriyor
Kullanıcı bir girişleri bu tamsayı, ama nasıl biz
Aslında takip tamsayı kullanıcı tarafından girilen?
Eh, biz yapacağız tüm mağaza bir değişken bu değer, n söylüyorlar.
Yani bir tamsayı n bildirirseniz, ve ben, get_int bu değeri
Daha sonra n sonra saklamak ne olursa olsun Girilen kullanıcı değer.
>> Pekala, şimdi biz sağlamış ettik kullanıcı bize bir tamsayı verecektir
ve biz takip için biliyorum tamsayı, ama unutmayın,
tamsayılar olumlu hem de olumsuz vardır.
Bu yüzden gerçekten mantıklı değil Bu sorunun kapsamında
Kullanıcı bir duş alır negatif 12 dakika söylüyorlar.
Bu yüzden kullanıcı emin olmak gerekir aslında bize pozitif bir tamsayı verir.
Şimdi biz sadece bir yok Bunun için tek bir işlev,
bu yüzden biz gidiyoruz kendimiz oluşturmak için.
>> Bu yüzden sürekli olarak istiyoruz kullanıcı istemi
onlar bize pozitif bir tamsayı vermek kadar.
Ben sürekli o şey yapıyorum eğer Bu bir döngü, bir tekrarı benzer bu.
Kullandığımız yapılardan biri bu yüzden c tekrarı ve döngüler uygulamak
Bir süre döngü.
Yani while döngüsü olarak Burada gösterilen, yürütecek
döngü gövdesi olarak ne olursa olsun Verilen koşul değerlendirir sürece
true.
En kısa sürede bu koşulu olarak Daha sonra, yanlış olarak değerlendirilir
Program devam edecek olursa olsun döngü gövdesi sonra gelir.
>> döngüler gidiyor süre Yani CS50 gerçekten yararlı olabilir.
Ancak bu, özellikle durumda, biz olduğunuzu biliyorum
en azından kullanıcı istemi olacak bir kez ve daha sonra sadece döngü gerekirse.
Yani burada biz gelmek özel yapı ve o
süre çok benzer loop do-while döngüsü denir.
>> Yani do-while döngüsü yürütür döngü gövdesi, en az bir kez
ve o zaman bakar Bu idam gerekip gerekmediğini
Bir süre döngüsü yerine, hangi durumunu kontrol edecek
ve daha sonra cesedi yürütün.
Yani do-while döngüsünde ne olabilir yapmak bir tamsayı için kullanıcı istemi ise,
ve daha sonra geçersiz ya da değil olmadığını kontrol edin.
Geçersiz ise, o zaman yaparız kullanıcı soran işlemi yineleyin
Sonra bizi başka bir tamsayı vermek, ve bu tamsayı geçerli olduğu zaman,
biz devam edeceğiz ne olursa olsun sonradan geliyor.
>> Şimdi fark edeceksiniz tamsayı n beyanı
biraz farklıdır ne önceki örnekte önce yaptığı
ve bunun nedeni de kapsamı göstermektedir.
biz içinde tamsayı n ilan olsaydı do-while döngüsünün gövdesinin,
o zaman erişmek mümkün olmaz Bu Kıvırcık dışında n bu değeri
döngünün gövdesini gösteren parantez.
Ama biz aslında erişmek istiyoruz Daha sonra bizim programda n değeri.
>> Tamam, şimdi en bahsedelim Bu durum ne olması gerektiğini.
Biz sadece reprompt istiyoruz Kullanıcı sürece n geçersiz olduğu.
Yani kendinize düşünmek geçersiz ne bir tamsayı değeri gibi görünecektir
ve sonra bir Boole oluşturmak ifadesi olduğunu ifade etmek.
>> Biz neredeyse bizim alt görev bitirdik teşvikiyle ve kullanıcı girişini doğrulayarak.
Yani bu biraz yapalım biraz daha kullanıcı dostu
ve kullanıcıya biraz ver Biraz daha bilgi
ne biz onları isteyen ediyoruz.
Yani kişi başına, kullanıcı istemi izin spec dize dakika.
Yani printf ifadeleri kullanarak, yapmak Bu tam olarak eşleşmesi emin olun.
>> Pekala.
Yani şimdi geçerli bir kullanıcı var giriş, pozitif bir tamsayıdır
kaç dakika değeri Onlar duş geçirdi.
Peki ne var hesaplamak için şişe eşdeğer sayısı.
Burada yapmak için olabilir gidiyoruz ne ilk başta size çok açıktır,
ve sorun değil.
Ne yapmak istiyoruz biz ise pratik başlamak istiyorum
desen tespit fikri ve soruna yönelik formüller geliştirmek.
>> Bu yüzden spec başına anlatıldı Duşta o bir dakika
yaklaşık eşdeğerdir su 12 şişe.
Öyleyse iki dakika olur 24 eşdeğer,
ve beş dakika olur 60 eşdeğer.
Yani şimdi düşünüyorsanız Bunu var, o zaman atalım
Eğer gelebilir görmek Bir desen veya formülle
dediğimiz varsa, ifade etmek n Suyun dakika, kaç şişe
n'nin cinsinden ifade edilir?
>> Yine olsa bile bu İlk bakışta basit olabilir,
Daha sonra biz almak ne zaman daha karmaşık sorunlar
Biz içine almak istiyorum gidiyoruz belirleme uygulaması
desen ve gelişmekte olan formüller Bunları anlamaya.
>> c erişime sahip Standart aritmetik işlemler,
toplama, çıkarma, çarpma ve bölme.
Bu yüzden onu bırakacağım Şimdi anlamaya
ifade etmeyi şişe eşdeğer sayısı
Kullanıcı tüketilen onların duş sırasında.
>> Pekala, biz neredeyse bitti.
Biz onların girişi için kullanıcı istendiğinde ettik, biz geçerli giriş olduğunu sağladık,
ve sonra biz dışarı nasıl çözdüğün eşdeğer hesaplamak için
onlar tüketilen şişe sayısı.
Bunu yapmak için son şey çıkışı olan şişe eşdeğer sayısı
ve umarım teşvik Onlara biraz su tasarrufu için.
>> değer olacak çıktısı Bir printf ifadesi olabilir.
Ben sana o ben söylemek istedim Örneğin, üç hayvan var,
Bir printf ifadesi kullanabilir Bu şuna benzer.
Ben yeni bir üç hayvan var ve güzel biçimlendirme için hattı.
>> Şimdi istemiyoruz sadece sert kod şeyler.
sayısını söylemek benim Evcil hayvan zamanla değişir.
Sonra faydalanmak için gidiyorum Benim printf açıklamada tutucular.
Yani burada benim sayı bir tam sayıdır.
Bu yüzden bir yer tutucu yapmak için gidiyorum % I kullanarak bir tamsayı için.
Ben dize yazmak için gidiyorum, ve sonra dize sonra
Sonra bir virgül ve yazma Ben Yazdırmak istediğiniz değişken.
Bu değer basılacaktır Yani Bu tutucu,% i yerine.
>> Sen, tutucuları kullanabilirsiniz iyi bir% f yüzen için.
Ayrıca, birden çok olabilir bir dize yer tutucuları.
Örneğin, bazı numaranız varsa Köpekler ve kediler bazı sayıda,
Ben burada ve daha sonra iki tutucuları koymak Sırasıyla benim iki değişken.
>> Yani şimdi yazdırmak nasıl biliyor değişkenler saklanan değerler,
çok son şey yapmak biz sağlamaktır
kesin biçimde değerini yazdırmak şartnamede belirtilen.
Bunun üzerine, biz istendiğinde ettik kullanıcı ve giriş valide.
Daha sonra eşdeğer hesaplanır ettik su şişesi sayısı
onların duş sırasında tüketmek, ve biz onlara bu değeri çıkışı var.
Ve böylece, biz su tamamladık.
>> Benim adım [? Zamila?] bu CS50 olup.