Doug LLOYD: Pekala.
Yani şimdi en bir mücadele edelim Gerçekten büyük bir konu, fonksiyonlar.
Şimdiye kadar sürecinde bütün biz yazıyorum programlar
Ana içinde yazılmıştır.
Oldukça basit programlar değil.
Tüm bu olması gerekmez şube ve şeyler oluyor.
Biz sadece tüm sığabilecek Ana içi ve
korkunç ezici almaz.
Ama tabii ki ilerledikçe ve Eğer programlar geliştirmek başladıkça
bağımsız, muhtemelen gidiyoruz 10 daha çok almaya başlamak için
ya da 15 satır.
Siz yüzlerce ya da binlerce alabilirsiniz ya da onlarca satır kod binlerce.
Ve gerçekten değil Bir düşünce o çılgın.
Bu nedenle, muhtemelen iyi bir fikir değil Ana içindeki her şeyi tutmak için.
Bulmak biraz zor alabilirsiniz ne bunu yaparsan arıyoruz.
>> Neyse ki, C olsa ve hemen hemen her programlama dili olduğunu
ile işe yarayabilecek, izin verir Bize fonksiyonlarını yazmak için.
Ve ben sadece gidiyorum kenara burada hızlı almak
işlevleri olduğunu belirtmek Bilgisayar biliminin bir alan.
Ve onlara çok daha fazla göreceksiniz Kurs boyunca çeşitli noktalar
ve devam ederseniz.
Nerede bir sürü orada var Aynı kelime için eş.
Bu yüzden işlevleri çağırmak.
Ama aynı zamanda onları duyabilir prosedürleri olarak anılan
ya da yöntemler özellikle sen yasiyorsaniz hiç herhangi bir nesne yönelimli programlama yapılması
before-- ve üzülmeyin değil, değil varsa
Büyük bir deal-- ama Denetim odaklı diller
sık aranan yöntemlerdir.
Bazen altprogramları denir.
Ama gerçekten bakın Aynı temel fikir.
>> En bu fikir ne olduğunu görelim.
Bir işlevi nedir?
Peki bir işlev gerçekten Bir kara kutu başka bir şey.
Sıfır bir dizi var bir kara kutu Daha fazla giriş ve tek çıkış veya.
Yani, örneğin, bu Bir fonksiyon olabilir.
Bu işlev, adı verilen bir fonksiyonudur.
Ve üç giriş, a, b ve c alır.
Ve bu kara kutunun içine, biz o tam olarak ne olduğunu bilmiyorum,
ancak girişleri işler bir şekilde ve daha sonra
Bu durumda, tek bir çıkış, z verir.
Şimdi bunu biraz yapmak daha az soyut, biz
Biz belki söyleyebiliriz adı verilen bir işlevi vardır
üç girişleri a, b alır ekleyin ve c ve bir şekilde çıktı işler
Siyah kutu içinde Tek bir çıktı üretmek.
Bu durumda, eğer öyleyse eklemek 3, 6, ve 7 alır.
Somewhere içinde işlev eklemek, biz olur
bekliyoruz onları bir araya eklenecek bir çıktı üretmek için hangi
3 artı 6 artı 7 ya da 16 olduğunu.
>> Benzer şekilde, adında bir işlevi var iki girişi, a ve b alır mult,
Bir şekilde bu tür bunları işler bu işlev çıkışı
iki giriş ürünüdür.
Iki giriş birlikte çarpılır.
4 ve 5, mult geçirilen bir şey, biz bekliyoruz çıkışı olur
20'dir.
Neden bir kara kutu diyorsunuz?
Peki biz yazıyoruz değilse kendimizi hangi işlevleri
Biz biraz şimdiye kadar CS50 yaptık.
Biz, örneğin, baskı f gördüm ki Biz yazmadım bir işlevdir
kendimizi, ama biz her zaman kullanıyoruz.
Biz yazıyoruz değilseniz fonksiyonları kendimizi,
bu kadar nasıl gerçekten bilmek gerekmez Aslında başlık altında uygulanmaktadır.
>> Yani örneğin kara kutu Ben Sadece, çarpma için gösterdi
Bir mult b olabilir defined-- ve bu sadece
Bazı pseudocode-- olabilir çıkış süreleri b olarak tanımladı.
Bu mantıklı, doğru.
Biz denilen bir işlevi varsa, iki giriş alır mult.
Biz beklediğiniz çıkışı olur o olmak iki giriş, birlikte çarpılır
Bir kere, b.
Ama fazla da olabilir Böyle uygulanan
Biz sayaç değişkeni var 0 portlu yerleştirilmeye olsun.
Ve sonra biz bu işlemi tekrarlayın b kez sayaç için bir ekleyin.
Örneğin, biz tarafından 3a çarpın eğer 5b biz 0'a karşı set demek olabilir,
beş kez tekrarlayın sayacına 3 ekleyin.
Yani biz 0'dan başlar ve sonra biz bunu Bu beş kez 3, 6, 9, 12, 15.
Aynı sonuç. Biz Hala olsun 3 kez 5 sadece
Uygulama farklıdır.
>> İşte biz demek ne Biz kara kutu deyince.
Bu sadece biz gerçekten umurumda değil demektir bu başlık altında uygulanan nasıl
sürece çıktı, biz ne bekliyoruz olduğu gibi.
Aslında, bu sözleşmenin bir parçası özellikle, fonksiyonları kullanılarak
Diğerleri yazma fonksiyonları.
Davranış hep gidiyor öngörülemeyen, tipik olarak
Fonksiyonun adına göre.
Gerçekten bu Ve bu yüzden Önemli fonksiyonları yazdığınızda
veya diğer insanların bilgileri Eğer kullanabilirsiniz fonksiyonları,
Bu işlevler var açık, nispeten açık isimleri,
ve iyi belgelenmiştir.
Hangi kesinlikle böyledir Baskı f gibi işlev için.
>> Peki neden fonksiyonları kullanabilirim?
Peki biz yazarsanız, daha önce de söylediğim gibi Ana şeyler içinde bizim tüm kodu
Gerçekten hantal alabilirsiniz ve gerçekten karmaşık.
Fonksiyonlar bize yeteneği sağlayan şeyleri organize etmek ve kırmak için
çok karmaşık bir sorun haline çok daha yönetilebilir alt parçaları.
Fonksiyonlar aynı zamanda bize izin kodlama sürecini kolaylaştırmak.
Bu 10 hata ayıklamak için çok daha kolay 100 hattına karşı hat fonksiyonu
işlev veya 1000 satır işlevi.
Biz sadece debug varsa Bir seferde küçük parçalar,
veya, zaman küçük parçalar bilgileri bu programlama deneyimi yapar
daha iyi.
Bu konuda bana güven.
>> Son olarak, biz fonksiyonları yazarsanız biz Bu çeşitli bölümlerini yeniden kullanabilirsiniz.
Fonksiyonlar geri dönüştürülebilir.
Bu kullanılabilecek Bir program ya da başka.
Zaten yazdım işlevi, tüm
bu programı anlatmak yapmanız gereken nerede bu işlev bulmak için.
Biz geri dönüşüm ve kullanarak oldum 40 yıldan f yazdırın.
Ancak bu yalnızca bir kez yazılmış.
Oldukça kullanışlı, doğru.
Pekala.
Yani işlevleri büyük.
Biz biliyoruz ki.
Şimdi bunları yazmaya başlayalım.
En alıyorum başlayalım onları bizim programlarına.
Amacıyla, ilk yapmak Yaptığımız şey işlev bildirmek olduğunu.
Bir işlev bildirdiğinizde ne temelde yapıyoruz
derleyici söylüyor, hey, bilirsin sadece bu yüzden,
Ben yazılı gidiyorum Daha sonra bir işlev
ve burada gibi görünmek için neler var.
Bunun nedeni, derleyiciler can çünkü
eğer bazı garip şeyler Onlar semboller bir dizi görmek
Onlar aşina değiliz.
Yani biz sadece derleyici a vermek başkanlık, ben bir işlevi oluşturma
ve bunu yapmak için gidiyor.
Fonksiyon bildirimleri genellikle eğer Bir şekilde kodunuzu organize ediyoruz
diğerleri mümkün olacaktır anlamak ve faydalanmak,
genellikle tüm koymak istiyorum senin işlev bildirimleri
kodunuzu çok üstünde, sağ Hatta ana yazmaya başlamadan önce.
Ve uygun, var Çok standart form
Her işlev bildirimi takip ettiğini.
Hepsi hemen hemen bu benziyorsun.
Üç parça bir işleve vardır bildirimi, dönüş türü, adı,
ve argüman listesi.
>> Şimdi Dönüş türü ne tür Değişken fonksiyon irade çıktı.
Yani, örneğin, eğer biz geri düşünüyorum iki çarparak karşı dakika önce
sayılar işlevi, biz eğer ne bekliyorsunuz Biz bir tamsayı ile tamsayı çarpın
çıkış olacaktır Muhtemelen bir tamsayı, doğru.
Çarpılır iki tamsayı Birlikte, bir tamsayı olsun.
Bu dönüş türü So fonksiyonu int olacaktır.
Adı ne istediğiniz senin işlevini çağırmak için.
Bu muhtemelen en az önemli Fonksiyon beyanın bir parçası,
işlevsellik açısından.
Ama aslında muhtemelen biridir en önemli parçalarından
açısından fonksiyon tanımlaması bilmenin işlevi aslında neler
yapar.
Eğer fonksiyon f veya g isim veya h veya gizem ya da böyle bir şey,
muhtemelen almak için gidiyoruz Biraz çalışıyorum takıldı
Bu işlevler ne hatırlamak için.
Yani vermek önemlidir senin işlevin anlamlı isimler.
>> Son olarak, argüman listesi virgülle ayrılmış listesi
senin işleve tüm girdilerinin, her biri bir tür ve bir ismi vardır.
Yani sadece zorunda değişkenin ne tür belirtmek
Fonksiyon çıktısı, Ayrıca belirtmek istediğiniz
ne tür ve değişkenlerin tipleri fonksiyon girdileri olarak kabul edilecektir.
Yani burada bir örnek yapalım.
Sadece bir göz atalım daha somut biri.
Yani burada bir fonksiyonun bir örnek bir işlev için deklarasyon o
Birlikte iki tamsayı eklersiniz.
İki tamsayı toplamı gidiyor bir tamsayı yanı sıra olacak biz sadece
tartışıldı.
Ve böylece dönüş türü, Burada yeşil, int olacaktır.
Bu sadece iki ints eklemek söyler Günün sonunda olacak,
Çıktı, ya da geri tükürmek Bize dışarı, bir tamsayı.
Bu fonksiyon biz ne göz önüne alındığında o anlamlı bir ad vermek istiyorum.
İki ints görünüyor ekle Uygun dikkate
Biz girdi olarak iki tamsayılar alıyorsun ve umarım onları bir arada ekleyerek.
Bu hantal biraz olabilir isim ve açıkçası bu fonksiyon
muhtemelen gerekli değildir Biz ek beri
Operatör, sizden çağırmak durumunda bizim Daha önce operatörlerin tartışma.
Ama sadece uğruna diyelim Bu fonksiyon yararlı olduğuna argümanı
ve bu yüzden iki ints eklemek arayacağım.
Son olarak, bu fonksiyon iki giriş alır.
Bunların her biri bir tam sayıdır.
Yani biz bu virgül girişlerin ayrılmış listesi.
Şimdi genellikle istiyoruz Bunların her birine bir ad verin
Kullanıldığı böylece işlev içinde.
Isimler korkunç önemli değildir.
>> Bu durumda, gerekli değil bunlara bağlı bir anlamı var.
Yani biz sadece a ve b onları arayabilirsiniz.
Bu tamamen iyi.
Ancak, eğer bulmak bir durumda kendinizi
burada değişkenler isimleri Aslında önemli olabilir,
Eğer onları aramak isteyebilirsiniz a ve b dışında bir
Onlara daha çok şey vermek sembolik anlamlı.
Ancak bu durumda, biz gerçekten yok işlevi hakkında başka bir şey biliyorum.
Biz sadece iki tamsayı eklemek istiyorum.
Yani biz sadece arayalım Bu tamsayılar a ve b.
Bu bir örnek.
>> İkinci yapmayız Neden bu bir düşünmek,
nasıl bir fonksiyon yazarsınız bir işlev için deklarasyon o
İki kayan nokta sayıları çarpar?
Eğer ne hatırlıyor musunuz kayan nokta sayısı nedir?
Ne bu işlev olur beyan benziyor?
Ben aslında Videoyu duraklatmak tavsiye Burada ve ihtiyacınız ne kadar zaman alır.
Bu ne düşün Fonksiyon beyan olurdu?
Dönüş türü ne olurdu?
Anlamlı bir isim ne olurdu?
Girişler ne olurdu?
Peki neden burada Videoyu duraklatmak yok ve yazma-up fonksiyonu beyanı
katlayacak bir fonksiyon için Birlikte iki kayan noktalı sayılar.
Umarım video durakladı.
>> Yani bir örnek bir göz atalım olası bir beyanın.
Daha fazla iki reals, şamandıra y x yüzer yüzer.
İki ürün kayan nokta sayıları,
hangi hatırlamak nasılsınız biz Gerçek sayıları temsil
veya c ondalık değerleri ile sayılar, Bir kayan nokta sayı olacak.
Bir çarpma zaman Bir ondalık tarafından onlu,
muhtemelen ondalık almak için gidiyoruz.
Sen bunu bir ilgili isim vermek istiyorum.
İki reals çarpın iyi görünüyor.
Ama gerçekten diyebiliriz Daha fazla iki yüzen veya mult yüzer.
Bunun sürece böyle bir şey, Bazı gerçek anlamını ne verdi
Bu kara kutu yapmak için gidiyordu.
Ve yine, bu durumda, biz değiliz Herhangi bir anlam bağlı olması gibi görünüyor
isimlerine Biz geçiyoruz değişkenler,
böylece biz sadece onları x ve y diyoruz.
Eğer bir şey onları aramak Şimdi eğer Başka, bu tamamen iyi.
Aslında, sen yapsam Bu deklarasyon yerine
Bunun yerine iki katına kullanarak Hatırlarsanız eğer, mantarlar
katına farklı olduğu bir şekilde daha kesin olarak
Gerçek sayılar belirtin veya nokta değişkenleri kayan.
Bu çok tamamen iyi.
Ya onlardan biri iyi olurdu.
Aslında, çeşitli vardır farklı kombinasyonlar
yolları bu işlevi bildirmek.
Fakat bu iki oldukça iyi olanlardır.
Biz bu harika bir işlevi ilan ettik.
Biz neyi onu derleyici söyledim , ne yapıyor olması gidiyoruz edilir.
Şimdi aslında bu işlevi yazalım.
Hadi bir tanım vereyim, böylece kara kutunun içinde
öngörülebilir davranış oluyor.
Aslında, biz iki gerçek katlanarak artıyor Birlikte sayılar veya ekleme numaralar
Birlikte, ya da ne olursa olsun yapıyor biz yapmak bizim işlevini istedi.
>> Aslında Yani, denemek ve tanımlayalım İki reals çarpma hangi biz sadece
Bir saniye önce konuştuk.
Now başlangıcı Bir işlev tanımı
Hemen hemen aynı görünüyor Bir işlev bildiriminde olarak.
Burada her ikisi de var.
Üst kısmında fonksiyon bildirimi olduğunu tipi, adı, virgülle ayrılmış argüman
Liste, noktalı virgül.
Noktalı belirtir bir işlev bildirimi olduğunu.
Fonksiyonun başlangıcı tanım neredeyse tam olarak görünüyor
Aynı tip, isim, virgülle ayrılmış argüman listesi, hiçbir noktalı virgül,
küme ayracı açın.
Açık kaşlı ayraç, tıpkı Biz ana ile yapıyorum
Şimdi anlamına gelir tanımlamak başlayan
Ne kara kutusunun içinde olur Biz fazla iki reals aramaya karar verdim.
İşte bunu uygulamak için tek yoldur.
Biz yeni bir ilan olabilir, diyebilirsiniz tip şamandıra denilen ürünün değişken
ve bu değişken atama değer x kez y.
Ve sonra ürünü iade.
Dönüş burada ne demek.
Peki geri dönüş yolu biz nasıl gösteriyor
Biz çıkış dışarı geri geçiyoruz.
Yani aynı şey dönmek, Bu kara kutunun çıkışıdır.
Bunu nasıl Yani bu.
İşte bunu uygulamak için başka bir yolu.
Biz sadece y x kez geri dönebilirler.
x şamandıra olduğunu.
y şamandıra olduğunu.
Kez x Yani y da bir şamandıra olduğunu.
Biz bile gerek yok Başka bir değişken oluşturmak.
Yani farklı bir yolu var aynı kara kutu uygulamak.
>> Şimdi bir dakikanızı ayırın, Yine videoyu duraklatmak,
ve iki ints eklemek denemek ve tanımlamak hangi diğer işlevi olduğunu biz
Bir an önce konuştuk.
Yine burada, ben fonksiyonu koyduk beyanname ve böylece noktalı virgül,
ve açık kaşlı ayraç ve kapalı bir kıvrık
Biz dolduracak nerede ayraç belirtmek için içeriğini iki ints ekleme
Biz özellikle tanımlar, böylece kara kutu içindeki davranışları.
Yani videoyu duraklatmak.
Ve kadar zaman alır Denemek ve tanımlamanız gerekir
bir uygulama, iki ints eklemek gibi Bu işlev bir değer verir zaman,
aslında, yapar, dönüş İki girdilerin toplamı.
Yani sadece önceki örnekte olduğu gibi, birkaç farklı yolu vardır
Eğer uygulamak iki ints ekleyin.
İşte biri.
Burada turuncu ben oldum sadece bazı comments-- vardı
Ben sadece bazı ekledik Yorumlar belirtmek için
Ne kod her satırında oluyor.
Yani bir değişken bildirmek int türünde toplamı denir.
Ben toplamı bir artı b eşittir söylüyorlar.
Biz aslında yapıyoruz orasıdır çalışma ekleme ve b birlikte.
Ve ben toplamını döndürür.
Ve bu anlamda, çünkü yapar toplamı int türünde bir değişkendir.
Ve veriler bu o tip ne işlevi çıkışa gidiyor söylüyor?
Int.
Yani, toplamını iade ediyorum ki bir tamsayıdır değişkendir.
Ve bu anlamda biz ettik ne verilen yapar beyan ve fonksiyonu tanımlanmış
yapmak.
>> Şimdi de tanımlayabilirsiniz fonksiyonu bu şekilde,
int toplamı o atlamak B- artı eşittir step-- ilk ve daha sonra, toplamı dönün.
Şimdi de olabilir o, bu şekilde uygulanan
Hangi tavsiye ederim bilmiyorum.
Bu biri için kötü tarzıdır şey ve gerçekten kötü tasarım,
ama aslında, çalışmalarında yapar.
Eğer int bu kodu almak durumunda Kötü toplayıcı nokta c eklemek ve kullanmak.
Aslında eklese Birlikte iki tamsayı.
Bu çok kötü bir uygulama var Bu özel davranış.
Ama çalışmıyor.
Bu göstermek için sadece burada biz gerçekten yok noktası
içeride ne umurumda sürece kara kutu,
biz bekliyoruz çıkışı olarak.
Bu kötü tasarlanmış kara kutu.
Ama sonunda bir gün, öyle Hala çıkış artı b toplamı.
Pekala.
Bu yüzden fonksiyonları ilan ettik.
Ve biz fonksiyonu tanımlanır ettik.
Yani gerçekten iyi.
Şimdi işlevleri kullanmak başlayalım biz ilan ettik ve biz tanımladığınız.
Aslında bu bir function-- aramak için yapmanız gereken tüm oldukça easy--
Uygun argümanlar geçmek olduğunu, veri türü argümanları
o beklediğini söyledi ve Daha sonra dönüşü atamak
Bu işlevin değeri ve bu-- bahane bana--
Bu işlevin dönüş değeri atamak Doğru Çeşidi şey.
>> Yani bir göz atalım bir dosyada bu uygulama
adı toplayıcı 1 nokta c, burada Benim CS50 IDE var.
Yani burada engerek 1 nokta c.
Başlangıçta ben var bakın benim içerir, sterlin, dahil
Standart IO ve CS50 nokta h.
Ve sonra benim işlevi bildirimi var.
Ben bu noktada Ben derleyici söylüyorum
Bir yazma olacak Çağrılan işlev iki ints ekleyin.
Bu çıkışı gidiyor tamsayı türü değişken.
İşte bu bölümü burada budur.
Ve sonra onu bir iki girişe sahiptir ve b her biri bir tam sayıdır.
Ana Inside, ben kullanıcıya sormak diyerek girdi, bana bir tamsayı verir.
Ve onlar unutmak istenir bir fonksiyonudur int, o
CS50 kütüphane yer almaktadır.
Ve şu şekilde depolanır x bir tamsayı değişken.
>> Sonra başka bir tamsayı için onları teşvik edin.
Biz başka bir tamsayı olsun ve y, bu saklayın.
Sonra, burada hat 28 üzerinde bir Nerede bizim işlev çağrısını yapmak.
Biz, int z eşittir diyorsun 2 ints x virgül y ekleyin.
Bu mantıklı neden görüyor musun?
x bir tamsayı türü değişken ve y tamsayı türü değişkendir.
Yani bu iyi.
Ne bizim fonksiyonu ile o mantıklı hat 17 bildiri gibi görünüyor.
Virgülle ayrılmış giriş listesi iki tamsayı, a ve b bekliyor.
Bu durumda, biz çağırabilirsiniz Onları ne olursa olsun biz istiyoruz.
Sadece iki tamsayı bekliyor.
Ve X, bir tam sayıdır ve y, bir tam sayıdır.
Bu işe yarıyor.
>> Ve biz bu fonksiyonu gidiyor biliyorum çıkışına bir tamsayılar de.
Ve böylece biz depolamak Fonksiyonun çıktısı,
bir tamsayı türü, iki ints eklemek Değişken, biz z diyorlar.
Ve sonra biz, toplamı diyebiliriz Yüzde i ve yüzde i idir.
x, y ve z, sırasıyla Bu yüzde i en doldurarak.
Tanımı nedir İki ints benziyor eklemek?
Oldukça basit.
Bu olanlardan biri biz Sadece bir saniye önce gördüm
int toplamı a artı b dönüş toplamına eşittir.
Bu çalışıyor mu?
Dosyasını tasarruf edelim.
Ve sonra buraya benim terminalde Ben, toplayıcı 1 yapmak için gidiyorum
ve benim ekranı temizlemek.
Biliyorum çünkü yakınlaştırmak için gidiyorum onu görmek için biraz zor.
>> Bu yüzden toplayıcının 1 olarak bu programı derlemek.
Bu yüzden nokta çizgi toplayıcı 1 yapabilirsiniz.
10 Bana bir tamsayı ver.
20 Bana bir tamsayı ver.
10 ve 20 toplamından 30'dur.
Bu yüzden başarılı bir işlev çağrısı yaptı.
Sen, negatif yeniden işlevini çalıştırabilirsiniz 10, 10 ve negatif 17 17 toplam 7'dir.
Bu işlev çalışır.
Bu davranış vardır biz bunu bekliyoruz söyledi.
Ve böylece biz başarılı yaptık fonksiyonu, tanım, beyanname,
ve başarılı bir işlev çağrısı.
Çift Çeşitli fonksiyonları hakkında noktalar
Bu bölümü bitirmeden önce.
Dan hatırlayın bizim veri türleri tartışma,
Daha önce, bu fonksiyonlar bazen hiç girişler alabilir.
Bu durumda, biz işlev bildirmek
Bir boşluk argüman listesi sahip olarak.
Ne hatırlıyor musun En yaygın işlevi
Şimdiye kadar sürdüğünü gördüm Bir boşluk argüman listesi nedir?
O ana var.
Bazen de bu işlevini hatırlayın Aslında bir çıkış yok.
Bu durumda, biz işlev bildirmek void dönüş türüne sahip olduğu.
En bu bölümü bitirelim Bir uygulama sorununu çözmeye.
>> Yani burada ortaya koydu sorun.
Ben bir işlevi yazmak istiyorum Geçerli üçgen denir.
Bu fonksiyon ne yapması gerektiğini Üç Gerçek sayılar take
Üç uzunluklarını temsil onun parametre olarak bir üçgenin kenarları,
ya da argümanları veya onun eş anlamlı başka bir set inputs--
karşılaşabileceğiniz söyledi.
Bu işlev gerekir çıkış ya doğru ya da yanlış
bağlı bu üç uzunlukları olsun Bir üçgen yapma yeteneğine sahiptir.
Eğer veri türü hatırlıyor musun Biz doğru ya da yanlış göstermek için kullanılan?
Şimdi bunu nasıl uygularım?
Peki bir çift vardır biliyorum üçgenler ile ilgili kurallar
aslında bilmek yararlıdır.
Bir üçgenin sadece olabilir Pozitif uzunlukta yanları.
Bu mantıklı.
Muhtemelen yaa, söylüyorsun.
Başka bir şey Unutulmaması gereken olsa da, toplamı olduğunu
herhangi birine uygun uzunluklarda Üçgenin iki taraf
daha büyük olmak zorundadır üçüncü tarafın uzunluğu.
Aslında doğru.
Siz, iki tarafın 1 bir üçgen olamaz Örneğin, 2, 4, 1, 2, çünkü artı
4 daha büyük değildir.
Bu yüzden kurallar olduğunu belirleyen üç olsun veya olmasın
girişler makul bir üçgen oluşturabilir.
Yani birkaç dakika sürebilir ve beyan ve sonra tanımlamak
geçerli olarak adlandırılan bu fonksiyon üçgen gibi bunun aslında
Burada belirtilen davranış vardır.
>> Bu çıktısı doğru bu üç tarafı ise Bir üçgen ihtiva edebilen
ve aksi halde false Eğer nasıl yaptığınızı görmek için hazır mısınız?
İşte bir uygulama var geçerli üçgeni.
Sadece bir değil.
Sevgiler biraz farklı olabilir.
Ama bu, aslında var yapar Beklediğimiz davranış.
Biz bizim işlev bildirmek çok üst geçerli üçgen bool
x şamandıra y şamandıra z yüzer.
Yani yine, bu işlev Üç reel sayılar alır
onun argüman olarak, yüzen puan değeri değişkenler,
ve bir doğru ya da yanlış çıkışlar Boole, hatırlama olan değeri.
Dönüş türü bool İşte bu yüzden.
Sonra işlev tanımlamak.
Yaptığımız ilk şey, emin olmak için kontrol etmektir Bu iki tarafın olumlu bulunmaktadır.
X eşit veya daha küçük olması durumunda 0 ya da y, 0 eşit ise,
veya Z, daha az veya eşit 0 ise, Bu muhtemelen bir üçgen olamaz.
Onlar olumlu tarafı yok.
Ve böylece biz dönebilirsiniz bu durumda yanlış.
Sonra, biz emin olmak için kontrol Bu girişlerin her çifti
Üçüncü bir daha büyüktür.
>> Yani X artı y az ise z eşit veya,
veya x artı z az ise y'ye eşit ya da daha,
ya da Y, bir artı z ise daha az ya da ona eşittir x aynı zamanda geçerli bir üçgen olamaz.
Bu yüzden tekrar return false.
Varsayarsak, biz çeklerin ikisi geçti olsa, o zaman gerçek dönebilirsiniz.
Bu üç tarafı için returning-- edebilen
Geçerli bir üçgen oluşturmak.
Ve bu kadar.
Artık beyan ve tanımlanmış ettik.
Ve şimdi mümkün olabilir kullanmak ve bu işlevini çağırın.
İyi iş.
Ben Doug Lloyd değilim.
Bu CS50 olduğunu.