Doug LLOYD: Baiklah.
Jadi sekarang mari kita mengatasi topik yang sangat besar, fungsi.
Sejauh ini dalam kursus, semua program yang kita telah menulis
telah ditulis dalam utama.
Mereka program cukup sederhana.
Anda tidak perlu memiliki semua ini cabang dan hal yang terjadi.
Kami hanya dapat cocok semua dalam utama dan
tidak mendapatkan sangat luar biasa.
Tapi seperti kursus berjalan dan Anda mulai mengembangkan program
independen, mereka mungkin akan untuk memulai untuk mendapatkan lebih banyak dari 10
atau 15 baris.
Anda mungkin mendapatkan ratusan atau ribuan atau puluhan ribu baris kode.
Dan itu benar-benar tidak yang gila pikiran.
Dengan demikian, itu mungkin bukan ide yang baik untuk menjaga semuanya dalam utama.
Hal ini dapat mendapatkan sedikit sulit untuk menemukan apa yang Anda cari jika Anda melakukan itu.
>> Untungnya, meskipun C, dan cukup banyak setiap bahasa pemrograman lain yang
mungkin bekerja dengan, memungkinkan kita untuk menulis fungsi.
Dan aku hanya akan mengambil cepat sebuah selain di sini
menyebutkan bahwa fungsi adalah satu bidang ilmu komputer.
Dan Anda akan melihat banyak dari mereka di berbagai titik di seluruh kursus
dan jika Anda melanjutkan.
Di mana ada banyak sinonim untuk kata yang sama.
Jadi kita sebut fungsi.
Tapi Anda mungkin juga mendengar mereka disebut sebagai prosedur,
atau metode, terutama, jika Anda sudah pernah melakukan pemrograman berorientasi objek
before-- dan jangan khawatir jika Anda belum, tidak
sebuah deal-- besar tapi di bahasa berorientasi Audit
adalah metode yang sering disebut.
Kadang-kadang mereka disebut subrutin.
Tapi mereka benar-benar semua merujuk dengan ide dasar yang sama.
>> Mari kita lihat apa ide itu.
Apa fungsi?
Nah fungsi benar-benar tidak lebih dari sebuah kotak hitam.
Sebuah kotak hitam yang memiliki seperangkat nol atau lebih input dan satu output.
Jadi misalnya, ini mungkin fungsi.
Ini adalah fungsi yang disebut func.
Dan dibutuhkan tiga input a, b, dan c.
Dan di dalam kotak hitam, kita tidak tahu persis apa yang dilakukannya,
tetapi proses input dalam beberapa cara dan kemudian
memberikan output tunggal, dalam hal ini, z.
Sekarang untuk membuatnya sedikit kurang abstrak, kita
bisa mengatakan bahwa mungkin kita memiliki fungsi yang disebut
menambahkan bahwa mengambil tiga input a, b, dan c dan proses output dalam beberapa cara
dalam kotak hitam untuk menghasilkan satu output.
Jadi dalam hal ini, jika menambahkan mengambil 3, 6, dan 7.
Suatu tempat di dalam menambahkan fungsi, kita akan
mengharapkan mereka untuk ditambahkan bersama-sama untuk menghasilkan output yang
adalah 3 ditambah 6 ditambah 7 atau 16.
>> Demikian pula, Anda memiliki fungsi yang disebut mult yang mengambil dua input, a dan b,
proses mereka dalam beberapa cara seperti bahwa output dari fungsi
adalah produk dari dua input.
Dua input dikalikan bersama-sama.
4 dan 5 yang masuk ke mult, sesuatu terjadi, output yang kita harapkan
adalah 20.
Mengapa kita menyebutnya kotak hitam?
Nah jika kita tidak menulis fungsi diri kita sendiri, yang
kami telah melakukan cukup sedikit sejauh CS50.
Kami telah melihat cetak f, misalnya, yang adalah fungsi yang kita tidak menulis
diri kita sendiri, tapi kita menggunakan semua waktu.
Jika kita tidak menulis fungsi diri kita sendiri,
kita tidak benar-benar perlu tahu bagaimana itu benar-benar dilaksanakan di bawah tenda.
>> Jadi misalnya kotak hitam saya hanya menunjukkan Anda untuk perkalian,
mult a, b bisa defined-- dan ini hanya
beberapa pseudocode-- bisa didefinisikan sebagai output kali b.
Itu masuk akal, benar.
Jika kita memiliki fungsi yang disebut mult yang mengambil dua input.
Kami akan berharap bahwa output akan menjadi dua input dikalikan bersama-sama,
kali b.
Tapi mult juga bisa menjadi diimplementasikan seperti ini,
kita memiliki variabel counter untuk bisa diatur dalam mult ke 0.
Dan kemudian kita ulangi proses ini b kali menambahkan ke counter.
Sebagai contoh, jika kita kalikan 3a oleh 5b, kita bisa mengatakan mengatur counter untuk 0,
ulangi lima kali, tambahkan 3 ke meja.
Jadi kita mulai dari 0 dan kemudian kita lakukan ini lima kali 3, 6, 9, 12, 15.
Ini hasil yang sama. Kita masih mendapatkan 3 kali 5 hanya
pelaksanaannya berbeda.
>> Itulah yang kita maksud ketika kita mengatakan kotak hitam.
Ini hanya berarti kita tidak benar-benar peduli bagaimana hal itu dilaksanakan di bawah tenda
asalkan output adalah apa yang kita harapkan.
Bahkan, itu bagian dari kontrak menggunakan fungsi, terutama
fungsi yang lain menulis.
Perilaku selalu akan menjadi khas, tak terduga
berdasarkan nama fungsi.
Dan itulah mengapa itu benar-benar penting ketika Anda menulis fungsi
atau ketika orang lain menulis fungsi yang mungkin Anda gunakan,
bahwa fungsi-fungsi memiliki jelas, nama-nama yang relatif jelas,
dan didokumentasikan dengan baik.
Yang pasti terjadi untuk fungsi seperti cetak f.
>> Jadi mengapa kita menggunakan fungsi?
Yah seperti yang saya katakan sebelumnya, jika kita menulis semua kode kita dalam hal utama
bisa benar-benar rumit dan benar-benar rumit.
Fungsi memungkinkan kita kemampuan untuk mengatur hal-hal dan putus
masalah yang sangat rumit dalam banyak sub bagian yang lebih mudah dikelola.
Fungsi juga memungkinkan kita untuk menyederhanakan proses coding.
Ini jauh lebih mudah untuk debug 10 fungsi baris versus garis 100
fungsi atau fungsi 1.000 garis.
Jika kita hanya memiliki untuk debug potongan-potongan kecil pada suatu waktu,
atau menulis potongan-potongan kecil pada saat itu, itu membuat pengalaman pemrograman
jauh lebih baik.
Percayalah yang satu itu.
>> Terakhir, jika kita menulis fungsi kami dapat menggunakan kembali mereka berbagai bagian.
Fungsi dapat didaur ulang.
Mereka dapat digunakan dalam satu program atau yang lain.
Anda sudah menulis fungsi, semua yang Anda
perlu lakukan adalah memberitahu program yang di mana untuk menemukan fungsi yang.
Kami telah daur ulang dan menggunakan mencetak f selama lebih dari 40 tahun.
Tapi itu hanya ditulis satu kali.
Cukup berguna, benar.
Baiklah.
Jadi fungsi yang besar.
Kita tahu bahwa.
Sekarang mari kita mulai menulis mereka.
Mari kita mulai mendapatkan mereka ke dalam program kami.
Untuk melakukan itu, pertama hal yang kita lakukan adalah mendeklarasikan fungsi.
Ketika Anda mendeklarasikan sebuah fungsi apa yang Anda lakukan pada dasarnya
memberitahu compiler, hey, supaya kau tahu,
Saya akan menulis fungsi nanti
dan inilah apa yang akan terlihat seperti.
Alasan untuk ini adalah karena compiler bisa
melakukan beberapa hal aneh jika mereka melihat satu set simbol
bahwa mereka tidak terbiasa dengan.
Jadi kami hanya memberikan compiler mengepalai, saya menciptakan fungsi
dan itu akan melakukan hal ini.
Deklarasi fungsi umumnya jika Anda mengatur kode Anda dengan cara
bahwa orang lain akan dapat memahami dan memanfaatkan,
Anda biasanya ingin menempatkan semua deklarasi fungsi Anda
di bagian paling atas dari kode Anda, tepat sebelum Anda mulai menulis utama bahkan.
Dan nyaman, ada bentuk yang sangat standar
bahwa setiap deklarasi fungsi berikut.
Mereka semua cukup banyak terlihat seperti ini.
Ada tiga bagian untuk fungsi deklarasi, kembali jenis, nama,
dan daftar argumen.
>> Sekarang kembali jenis adalah jenis variabel output fungsi kehendak.
Jadi misalnya, jika kita berpikir kembali menit yang lalu ke mengalikan dua
nomor fungsi, apa yang kita harapkan jika kita kalikan bilangan bulat oleh integer
output akan mungkin integer, benar.
Dikalikan dua bilangan bulat bersama-sama, Anda mendapatkan sebuah integer.
Jadi jenis kembalinya yang Fungsi akan int.
Nama adalah apa yang Anda inginkan untuk memanggil fungsi Anda.
Ini mungkin yang paling penting bagian dari deklarasi fungsi,
dalam hal fungsi.
Tapi sebenarnya mungkin salah satu satu bagian yang paling penting
dari deklarasi fungsi dalam hal mengetahui apa fungsi sebenarnya
tidak.
Jika Anda nama fungsi f atau g atau h atau misteri atau sesuatu seperti itu,
Anda mungkin akan mendapatkan sedikit tersandung mencoba
untuk mengingat apa yang mereka lakukan fungsi.
Jadi penting untuk memberikan Anda nama-nama bermakna fungsi ini.
>> Terakhir, daftar argumen adalah daftar dipisahkan koma
dari semua masukan untuk fungsi Anda, yang masing-masing memiliki jenis dan nama.
Jadi tidak hanya Anda harus menentukan apa jenis variabel
output fungsi kehendak, Anda juga ingin menentukan
jenis dan jenis variabel Fungsi akan menerima sebagai masukan.
Jadi mari kita lakukan contoh di sini.
Mari kita kita lihat di satu lebih konkret.
Jadi di sini adalah contoh fungsi deklarasi untuk fungsi yang
akan menambah dua bilangan bulat bersama-sama.
Jumlah dari dua bilangan bulat akan integer juga, karena kami hanya
dibahas.
Dan jenis kembali, di sini di hijau, akan menjadi int.
Itu hanya memberitahu kita bahwa menambahkan dua int akan, pada akhir hari,
output, atau meludah kembali kepada kita, integer.
Mengingat apa fungsi ini tidak kita ingin memberikan nama yang bermakna.
Menambahkan dua ints tampaknya tepat, mengingat
kami mengambil dua bilangan bulat sebagai masukan dan mudah-mudahan menambahkan mereka bersama-sama.
Mungkin sedikit rumit Nama dan terus terang fungsi ini
mungkin tidak diperlukan karena kita memiliki penambahan
operator, jika Anda ingat dari kami pembahasan operator, sebelumnya.
Tapi mari kita katakan saja untuk kepentingan argumen bahwa fungsi ini berguna
dan jadi kita akan menyebutnya menambahkan dua int.
Terakhir, fungsi ini mengambil dua input.
Yang masing-masing adalah bilangan bulat.
Jadi kita memiliki koma ini daftar dipisahkan dari input.
Sekarang kita umumnya ingin memberi nama untuk masing-masing
sehingga mereka dapat digunakan dalam fungsi.
Nama-nama yang tidak terlalu penting.
>> Dalam hal ini, kita tidak perlu memiliki makna yang melekat pada mereka.
Jadi kami hanya dapat memanggil mereka a dan b.
Itu benar-benar baik-baik saja.
Namun, jika Anda menemukan diri Anda dalam situasi
di mana nama-nama variabel mungkin benar-benar penting,
Anda mungkin ingin memanggil mereka sesuatu selain a dan b
untuk memberi mereka sesuatu yang lebih simbolis yang berarti.
Tapi dalam kasus ini, kita tidak benar-benar tahu apa-apa lagi tentang fungsi.
Kami hanya ingin menambahkan dua bilangan bulat.
Jadi kami hanya akan menelepon mereka bilangan bulat a dan b.
Itu salah satu contoh.
>> Mengapa Anda tidak mengambil kedua untuk berpikir tentang yang satu ini,
bagaimana Anda akan menulis fungsi deklarasi untuk fungsi yang
mengalikan dua angka floating point?
Apakah Anda ingat apa angka floating point adalah?
Apa yang akan fungsi ini deklarasi terlihat seperti?
Aku benar-benar merekomendasikan Anda berhenti video di sini dan mengambil berapa banyak waktu yang Anda butuhkan.
Pikirkan tentang apa ini deklarasi fungsi akan?
Apa yang akan jenis kembali menjadi?
Apa yang akan menjadi nama yang berarti?
Apa yang akan menjadi input?
Jadi kenapa tidak Anda berhenti video di sini dan menulis-up deklarasi fungsi
untuk fungsi yang akan berkembang biak dua angka floating point bersama-sama.
Mudah-mudahan Anda berhenti video.
>> Jadi mari kita lihat contoh satu deklarasi mungkin.
Mengapung mult dua real mengapung x, float y.
Produk dari dua angka floating point,
yang ingat adalah bagaimana kita mewakili bilangan real
atau angka dengan nilai-nilai desimal di c, akan menjadi angka floating point.
Ketika Anda mengalikan desimal oleh desimal,
Anda mungkin akan mendapatkan desimal.
Anda ingin memberikan nama yang relevan.
Kalikan dua real tampaknya baik-baik saja.
Tapi Anda benar-benar bisa menyebutnya mult dua mengapung, atau mengapung mult.
Sesuatu seperti itu, asalkan memberi makna sebenarnya untuk apa
kotak hitam ini akan melakukan.
Dan lagi, dalam hal ini, kita tidak tampaknya memiliki makna yang melekat
untuk nama-nama variabel kita lewat di,
jadi kami hanya menyebut mereka x dan y.
Sekarang jika Anda memanggil mereka sesuatu lain, itu benar-benar baik-baik saja.
Bahkan, jika Anda melakukan deklarasi ini bukan
menggunakan ganda sebagai gantinya dari mengapung, jika Anda ingat
yang ganda yang berbeda cara untuk lebih tepatnya
menentukan bilangan real atau floating variabel titik.
Itu benar-benar baik juga.
Salah satu dari mereka akan baik-baik saja.
Bahkan, ada beberapa kombinasi yang berbeda
cara untuk menyatakan fungsi ini.
Tapi ini dua yang cukup bagus.
Kami telah menyatakan fungsi, itu hebat.
Kami telah mengatakan kepada kompiler apa adalah, apa yang kita akan lakukan.
Sekarang mari kita benar-benar menulis fungsi yang.
Mari kita memberikan definisi, sehingga dalam kotak hitam
perilaku diprediksi terjadi.
Bahkan, kita mengalikan dua nyata nomor bersama-sama, atau nomor menambahkan
bersama-sama, atau melakukan apa pun itu bahwa kami meminta fungsi kita lakukan.
>> Jadi sebenarnya, mari kita coba dan mendefinisikan kalikan dua real yang kita hanya
berbicara tentang kedua lalu.
Sekarang awal definisi fungsi
terlihat hampir persis sama sebagai deklarasi fungsi.
Saya memiliki kedua mereka di sini.
Di bagian atas adalah deklarasi fungsi, jenis, nama, dipisahkan dengan koma argumen
daftar, titik koma.
Titik koma menunjukkan bahwa yang merupakan deklarasi fungsi.
Awal dari fungsi Definisi terlihat hampir persis
sama, jenis, nama, dipisahkan dengan koma daftar argumen, tidak ada titik koma,
membuka penjepit keriting.
Penjepit keriting terbuka, seperti kami sudah melakukan dengan utama,
berarti bahwa kita sekarang mulai mendefinisikan
apa yang terjadi di dalam kotak hitam yang kami telah memutuskan untuk memanggil mult dua real.
Berikut adalah salah satu cara untuk menerapkannya.
Kita bisa mengatakan, kita bisa mendeklarasikan baru variabel tipe float disebut produk
dan menetapkan variabel yang dengan nilai x kali y.
Dan kemudian kembali produk.
Apa kembali maksud di sini.
Nah kembali adalah jalan kami menunjukkan bahwa cara
kita melewati output mundur.
Jadi kembali sesuatu, sama dengan, ini adalah output dari kotak hitam.
Jadi itulah bagaimana Anda melakukannya.
Berikut adalah cara lain untuk menerapkannya.
Kami hanya bisa kembali x kali y.
x adalah pelampung.
y adalah pelampung.
Jadi x kali y juga pelampung.
Kami bahkan tidak perlu membuat variabel lain.
Jadi itulah cara yang berbeda untuk mengimplementasikan kotak hitam yang sama persis.
>> Sekarang luangkan waktu, jeda video lagi,
dan mencoba dan mendefinisikan menambahkan dua int, yang merupakan fungsi lain yang kita
berbicara tentang beberapa saat yang lalu.
Lagi di sini, aku telah menempatkan fungsi deklarasi, dan titik koma,
dan brace keriting terbuka dan keriting tertutup
penjepit untuk menunjukkan di mana kita akan mengisi di isi menambahkan dua int,
sehingga kita mendefinisikan tertentu perilaku dalam kotak hitam.
Jadi menghentikan video sementara.
Dan mengambil waktu sebanyak Anda perlu mencoba dan mendefinisikan
implementasi menambahkan dua int, seperti bahwa ketika fungsi output nilai,
tidak, pada kenyataannya, kembali jumlah dari dua input.
Jadi seperti contoh sebelumnya, ada beberapa cara yang berbeda
Anda bisa menerapkan menambahkan dua int.
Berikut ini salah satu.
Di sini di orange Saya baru hanya memiliki beberapa comments--
Saya baru saja menambahkan beberapa komentar untuk menunjukkan
apa yang terjadi pada setiap baris kode.
Jadi saya mendeklarasikan variabel disebut jumlah tipe int.
Saya mengatakan jumlah sama plus b.
Di situlah kita benar-benar melakukan pekerjaan menambahkan dan b bersama-sama.
Dan aku kembali sum.
Dan itu masuk akal karena sum adalah variabel bertipe int.
Dan apa tipe data yang ini Fungsi memberitahu saya itu akan output?
Int.
Jadi aku kembali sum, yang adalah variabel integer.
Dan itu masuk akal mengingat apa yang kita sudah menyatakan dan mendefinisikan fungsi kita
melakukan.
>> Sekarang Anda juga dapat mendefinisikan fungsi cara ini,
int sum sama plus b-- melewatkan bahwa pertama step-- dan kemudian, kembali sum.
Sekarang Anda bisa juga diimplementasikan dengan cara ini,
yang saya sangat tidak menyarankan.
Ini adalah gaya buruk untuk satu hal dan desain benar-benar buruk,
tetapi tidak, pada kenyataannya, pekerjaan.
Jika Anda mengambil kode ini, yang int menambahkan buruk penambah dot c, dan menggunakannya.
Ini sebenarnya tidak menambah dua bilangan bulat bersama-sama.
Ini adalah implementasi sangat miskin perilaku tertentu.
Tapi itu bekerja.
Ini hanya di sini untuk menggambarkan titik bahwa kita tidak benar-benar
peduli apa yang terjadi di dalam kotak hitam, selama
karena memiliki output yang kita harapkan.
Ini adalah kotak hitam yang dirancang buruk.
Tetapi pada akhir hari, itu tidak Output masih jumlah plus b.
Baiklah.
Jadi kita sudah menyatakan fungsi.
Dan kita sudah didefinisikan fungsi.
Jadi itu benar-benar baik.
Sekarang mari kita mulai untuk menggunakan fungsi bahwa kami telah menyatakan dan kami telah didefinisikan.
Untuk memanggil function-- itu sebenarnya cukup easy-- semua yang perlu Anda lakukan
adalah lulus argumen yang tepat, argumen dari tipe data
bahwa mereka mengharapkan, dan kemudian menetapkan pengembalian
nilai fungsi yang dan alasan this-- me--
menetapkan nilai kembali fungsi yang sesuatu dari jenis yang tepat.
>> Jadi mari kita lihat ini dalam praktek dalam file
disebut adder 1 dot c, yang Saya miliki dalam IDE CS50 saya.
Jadi di sini adalah penambah 1 dot c.
Pada awalnya Anda lihat saya punya saya termasuk, pound termasuk,
IO standar, dan CS50 dot h.
Dan kemudian saya harus deklarasi fungsi saya.
Ini adalah di mana aku memberitahu compiler saya
akan menulis fungsi yang disebut menambahkan dua int.
Ini akan keluaran sebuah variabel integer jenis.
Itulah yang bagian ini di sini.
Dan kemudian saya memiliki dua masukan untuk itu dan b, yang masing-masing adalah bilangan bulat.
Dalam utama, saya meminta pengguna untuk masukan dengan mengatakan, memberikan saya integer.
Dan mereka diminta untuk melupakan int, yang merupakan fungsi yang
termasuk di perpustakaan CS50.
Dan itu akan disimpan di x, variabel integer.
>> Kemudian kami meminta mereka untuk integer lain.
Kami mendapatkan bilangan bulat lain dan menyimpan bahwa dalam y.
Dan kemudian, di sini on line 28, adalah di mana kita membuat panggilan fungsi kita.
Kami katakan, equals z int tambahkan 2 int x koma y.
Apakah Anda melihat mengapa hal ini masuk akal?
x adalah variabel tipe integer dan y merupakan variabel tipe integer.
Jadi itu bagus.
Itu masuk akal dengan apa fungsi kita deklarasi on line 17 terlihat seperti.
Koma daftar dipisahkan masukan mengharapkan dua bilangan bulat, a dan b.
Dalam hal ini, kita dapat memanggil mereka apa pun yang kita inginkan.
Itu hanya mengharapkan dua bilangan bulat.
Dan x adalah bilangan bulat dan y adalah bilangan bulat.
Itu bekerja.
>> Dan kita tahu fungsi yang akan untuk output sebuah bilangan bulat juga.
Dan jadi kita menyimpan output fungsi,
menambahkan dua int, di tipe integer variabel, yang kita panggil z.
Dan kemudian kita dapat mengatakan, jumlah persen saya dan saya adalah persen persen i.
x, y dan z masing-masing mengisi mereka persen i.
Apa definisi dari menambahkan dua ints terlihat seperti?
Ini cukup sederhana.
Ini salah satu yang kita hanya melihat kedua lalu,
int sum sama jumlah ditambah b kembali.
Apakah pekerjaan ini?
Mari kita menyimpan file.
Dan kemudian turun di sini di terminal saya Aku akan membuat penambah 1,
dan aku membersihkan layar saya.
Aku akan memperbesar karena saya tahu itu agak sulit untuk melihat.
>> Jadi kita mengkompilasi program ini sebagai penambah 1.
Jadi kita bisa melakukan dot slash penambah 1.
Beri aku integer, 10.
Beri aku bilangan bulat lain, 20.
Jumlah 10 dan 20 adalah 30.
Jadi kami membuat panggilan fungsi yang sukses.
Anda dapat menjalankan fungsi lagi, negatif 10, 17 jumlah negatif 10 dan 17 adalah 7.
Fungsi ini bekerja.
Ini memiliki perilaku bahwa kita harapkan.
Dan jadi kami telah membuat sukses fungsi, definisi, deklarasi,
dan fungsi panggilan sukses.
Pasangan lain-lain poin tentang fungsi
sebelum kita menyimpulkan bagian ini.
Ingat dari kami pembahasan jenis data,
sebelumnya, yang berfungsi kadang-kadang bisa tidak mengambil input.
Jika itu yang terjadi, kita mendeklarasikan fungsi
sebagai memiliki daftar kekosongan argumen.
Apakah Anda ingat apa yang paling umum fungsi
kita lihat sejauh yang mengambil daftar argumen kekosongan adalah?
Ini utama.
Ingat juga bahwa kadang-kadang fungsi tidak benar-benar memiliki output.
Dalam hal ini, kita mendeklarasikan fungsi sebagai memiliki tipe void kembali.
Mari kita menyimpulkan bagian ini dengan mengatasi masalah praktik.
>> Jadi, inilah masalah ditata.
Saya ingin Anda menulis fungsi disebut segitiga valid.
Apa fungsi ini harus melakukan adalah mengambil tiga bilangan real
yang mewakili panjang dari tiga sisi segitiga sebagai parameter,
atau argumen, atau yang inputs-- set sinonim
Anda mungkin mengalami.
Fungsi ini harus baik keluaran benar atau salah
tergantung pada apakah mereka tiga panjang mampu membuat segitiga.
Apakah Anda ingat jenis data yang kita digunakan untuk menunjukkan benar atau salah?
Sekarang bagaimana Anda menerapkan ini?
Nah tahu ada beberapa aturan tentang segitiga
yang benar-benar berguna untuk mengetahui.
Sebuah segitiga hanya dapat memiliki sisi dengan panjang yang positif.
Yang masuk akal.
Anda mungkin mengatakan, duh.
Hal lain yang perlu diperhatikan meskipun, adalah bahwa jumlah tersebut
dari panjang dari setiap dua sisi segitiga
harus lebih besar dari panjang sisi ketiga.
Itu benar-benar benar.
Anda tidak dapat memiliki segitiga dari sisi 1, 2 dan 4, misalnya, karena 1 ditambah 2
tidak lebih besar dari 4.
Jadi mereka adalah aturan yang menentukan apakah atau tidak tiga
input dibayangkan dapat membentuk segitiga.
Jadi mengambil beberapa menit dan menyatakan dan kemudian menentukan
fungsi ini disebut valid segitiga, sehingga itu benar-benar
memiliki perilaku yang ditentukan di sini.
>> Itu akan menampilkan benar jika tiga sisi mampu terdiri segitiga,
dan palsu sebaliknya Siap untuk melihat bagaimana Anda melakukannya?
Berikut ini salah satu implementasi segitiga valid.
Ini bukan satu-satunya.
Anda mungkin sedikit berbeda.
Tapi yang satu ini tidak, pada kenyataannya, memiliki perilaku yang kita harapkan.
Kami menyatakan fungsi kami di paling atas, bool segitiga valid
mengapung x mengambang y mengapung z.
Jadi sekali lagi, fungsi ini mengambil tiga bilangan real
sebagai argumen, mengambang variabel nilai titik,
dan output benar atau salah nilai, yang merupakan Boolean, recall.
Jadi itu sebabnya jenis kembali bool.
Kemudian kita mendefinisikan fungsi.
Hal pertama yang kita lakukan adalah memeriksa untuk memastikan bahwa semua sisi positif.
Jika x kurang dari atau sama dengan 0, atau jika y sama dengan 0,
atau jika z kurang dari atau sama dengan 0, yang tidak mungkin menjadi sebuah segitiga.
Mereka tidak memiliki sisi positif.
Dan sehingga kita dapat kembali palsu dalam situasi itu.
Berikutnya, kita periksa untuk memastikan bahwa setiap pasangan input
lebih besar dari yang ketiga.
>> Jadi jika x ditambah y kurang dari atau sama dengan z,
atau jika x ditambah z kurang dari atau sama dengan y,
atau jika y ditambah z kurang dari atau sama dengan x, yang juga tidak bisa menjadi segitiga valid.
Jadi kita kembali palsu lagi.
Dengan asumsi kami melewati kedua cek meskipun, maka kita bisa kembali benar.
Karena tiga sisi mampu returning--
menciptakan segitiga yang valid.
Dan hanya itu.
Anda sekarang telah dinyatakan dan ditetapkan.
Dan Anda mungkin dapat sekarang menggunakan dan memanggil fungsi ini.
Kerja bagus.
Aku Doug Lloyd.
Ini adalah CS50.