DOUG LLOYD: Tất cả các quyền. Vì vậy, bây giờ chúng ta giải quyết một chủ đề thực sự lớn, chức năng. Vì vậy, đến nay trong khóa học, tất cả các chương trình mà chúng tôi đã viết đã được viết bên trong của chính. Họ đang chương trình khá đơn giản. Bạn không cần phải có tất cả những ngành, điều đang xảy ra. Chúng tôi chỉ có thể phù hợp với nó tất cả bên trong của chính nó và không nhận được kinh khủng quá. Tuy nhiên, như nhiên đi và khi bạn bắt đầu phát triển các chương trình độc lập, họ đang có lẽ sẽ để bắt đầu để có được nhiều hơn 10 hoặc 15 dòng. Bạn có thể nhận được hàng trăm hoặc hàng ngàn hoặc hàng chục ngàn dòng mã. Và nó thực sự không mà điên một ý nghĩ. Như vậy, đây có thể không phải là một ý tưởng tốt để giữ cho mọi thứ bên trong của chính. Nó có thể có được một chút khó khăn để tìm thấy những gì bạn đang tìm kiếm nếu bạn làm điều đó. May mắn thay, mặc dù C, và khá nhiều mọi ngôn ngữ lập trình khác có thể làm việc với, cho phép chúng ta viết các chức năng. Và tôi chỉ cần đi tới hãy nhanh chóng sang một bên ở đây đề cập đến đó là chức năng một lĩnh vực của khoa học máy tính. Và bạn sẽ thấy nhiều hơn nữa của họ tại điểm khác nhau trong suốt khóa học và nếu bạn vẫn tiếp tục. Nơi có rất nhiều từ đồng nghĩa của cùng một từ. Vì vậy, chúng ta gọi là các chức năng. Nhưng bạn cũng có thể nghe thấy chúng gọi là thủ tục, hoặc các phương pháp, đặc biệt, nếu bạn đã từng thực hiện bất kỳ lập trình hướng đối tượng before-- và không lo lắng nếu bạn có không, không một deal-- lớn, nhưng trong ngôn ngữ kiểm toán theo định hướng là thường được gọi là phương pháp. Đôi khi chúng được gọi là chương trình con. Nhưng họ thực sự tất cả tham khảo với ý tưởng cơ bản giống nhau. Hãy xem những gì ý tưởng đó là. Một chức năng là gì? Vâng một chức năng thực sự là không có gì nhiều hơn một hộp đen. Một hộp đen có một tập hợp các số không hoặc nhiều đầu vào và một đầu ra duy nhất. Vì vậy, ví dụ, điều này có thể là một hàm. Đây là một chức năng gọi là func. Và phải mất ba đầu vào a, b, và c. Và bên trong hộp đen, chúng tôi không biết chính xác những gì nó làm, nhưng nó xử lý các yếu tố đầu vào một cách nào đó và sau đó nó cung cấp cho một đầu ra duy nhất, trong trường hợp này, z. Bây giờ để làm cho nó một chút ít trừu tượng, chúng tôi có thể nói rằng có lẽ chúng ta có một chức năng gọi là thêm rằng có ba yếu tố đầu vào a, b, và c và xử lý đầu ra một cách nào đó bên trong hộp đen để sản xuất một đầu ra duy nhất. Vì vậy, trong trường hợp này, nếu thêm mất 3, 6, và 7. Một nơi nào đó bên trong thêm chức năng, chúng tôi sẽ mong đợi họ được thêm vào với nhau để tạo đầu ra, mà là 3 cộng với 6 cộng 7 hoặc 16. Tương tự như vậy, bạn có một chức năng gọi là mult mà phải mất hai yếu tố đầu vào, a và b, xử lý chúng một cách nào đó là đầu ra của hàm là sản phẩm của hai đầu vào. Hai yếu tố đầu vào nhân với nhau. 4 và 5 được thông qua vào mult, một cái gì đó xảy ra, sản lượng chúng tôi mong đợi là 20. Tại sao chúng ta gọi nó là một hộp đen? Vâng, nếu chúng ta không có văn bản chức năng chính mình, mà chúng tôi đã thực hiện khá một chút cho đến nay CS50. Chúng tôi đã nhìn thấy in f, ví dụ, là một chức năng mà chúng tôi đã không viết chính chúng ta, nhưng chúng tôi sử dụng tất cả các thời gian. Nếu chúng ta không phải viết các chức năng chính mình, chúng ta không thực sự cần phải biết làm thế nào nó thực sự thực hiện dưới mui xe. Vì vậy, ví dụ hộp đen tôi chỉ cho thấy bạn có cho phép nhân, Mult a, b có thể là defined-- và điều này chỉ là một số pseudocode-- thể định nghĩa như lần đầu ra một b. Điều đó làm cho tinh thần, phải. Nếu chúng ta có một chức năng gọi là mult mà phải mất hai yếu tố đầu vào. Chúng tôi hy vọng rằng sản lượng sẽ là hai yếu tố đầu vào nhân với nhau, một lần b. Nhưng cũng có thể là mult thực hiện như thế này, chúng ta có một biến đếm để được thiết lập bên trong mult 0. Và sau đó chúng ta lặp lại quá trình này b lần thêm một phản. Ví dụ, nếu chúng ta nhân 3a bởi 5b, chúng ta có thể nói rằng thiết lập đếm từ 0, lặp lại năm lần, thêm 3 để truy cập. Vì vậy, chúng tôi bắt đầu từ 0 và sau đó chúng tôi làm này năm lần 3, 6, 9, 12, 15. Đó là kết quả tương tự. Chúng tôi vẫn có được 3 lần 5 chỉ việc thực hiện là khác nhau. Đó là những gì chúng tôi có nghĩa khi chúng ta nói một hộp đen. Nó chỉ có nghĩa là chúng ta không thực sự quan tâm làm thế nào nó được thực hiện dưới mui xe miễn là đầu ra là những gì chúng tôi mong đợi. Trong thực tế, đó là một phần của hợp đồng của việc sử dụng các chức năng, đặc biệt chức năng mà người khác viết. Các hành vi là luôn luôn đi là điển hình, không thể đoán trước dựa vào tên của hàm. Và đó là lý do tại sao nó thực sự quan trọng khi bạn viết chức năng hoặc khi người khác viết chức năng mà bạn có thể sử dụng, rằng những chức năng có rõ ràng, tên tương đối rõ ràng, và cũng là tài liệu. Mà chắc chắn là trường hợp cho chức năng như in f. Vì vậy, tại sao chúng ta sử dụng chức năng này? Cũng như tôi đã nói trước đó, nếu chúng ta viết tất cả các mã của chúng tôi bên trong của sự vật chính có thể có được thực sự cồng kềnh và thực sự phức tạp. Chức năng cho phép chúng ta khả năng để tổ chức mọi thứ và chia tay một vấn đề rất phức tạp thành rất nhiều các bộ phận phụ dễ quản lý hơn. Chức năng này cũng cho phép chúng tôi đơn giản hóa quá trình mã hóa. Nó dễ dàng hơn rất nhiều để gỡ lỗi một 10 chức năng dòng so với dòng 100 chức năng hoặc một chức năng 1.000 dòng. Nếu chúng ta chỉ phải debug miếng nhỏ tại một thời điểm, hoặc viết những miếng nhỏ vào thời điểm đó, nó làm cho rằng kinh nghiệm lập trình tốt hơn rất nhiều. Tôi tin tưởng rằng một ngày. Cuối cùng, nếu chúng ta viết các chức năng chúng tôi có thể tái sử dụng những bộ phận khác nhau. Chức năng có thể được tái chế. Chúng có thể được sử dụng trong một chương trình hay cách khác. Bạn đã viết chức năng, tất cả các bạn cần phải làm là nói với chương trình nơi để tìm thấy chức năng đó. Chúng tôi đã được tái chế và sử dụng in f trong hơn 40 năm. Nhưng nó chỉ được viết một lần. Khá hữu ích, phải. Được rồi. Vì vậy, chức năng là rất lớn. Chúng ta biết rằng. Bây giờ chúng ta hãy bắt đầu viết cho họ. Hãy bắt đầu nhận được thành các chương trình của chúng tôi. Để làm được điều đó, đầu tiên điều chúng ta làm là khai báo hàm. Khi bạn khai báo một hàm những gì bạn đang làm cơ bản là nói cho các trình biên dịch, hey, chỉ để bạn biết, Tôi sẽ viết một chức năng sau này và đây là những gì nó sẽ giống như thế. Lý do cho điều này là vì trình biên dịch có thể làm một số những điều kỳ lạ nếu họ nhìn thấy một tập hợp các ký hiệu mà họ không quen thuộc với. Vì vậy, chúng tôi chỉ cung cấp cho các trình biên dịch một đứng lên, tôi là tạo ra một chức năng và nó sẽ làm điều này. Tờ khai chức năng nói chung nếu bạn đang tổ chức mã của bạn trong một cách mà những người khác sẽ có thể hiểu và sử dụng, bạn thường muốn đặt tất cả tờ khai chức năng của bạn ở đầu rất của mã của bạn, phải trước khi bạn bắt đầu viết chính ngay cả. Và thuận tiện, có một hình thức rất chuẩn mà mỗi chức năng khai báo sau. Họ tất cả khá nhiều giống như thế này. Có ba phần để một chức năng kê khai, kiểu trả về, tên, và danh sách đối số. Bây giờ các kiểu trả về là những loại biến các chức năng sẽ đầu ra. Vì vậy, ví dụ, nếu chúng ta nghĩ lại một phút trước đây để các nhân hai số chức năng, những gì chúng tôi mong đợi nếu làm chúng ta nhân một số nguyên của một số nguyên sản lượng sẽ được có thể là một số nguyên, phải. Nhân hai số nguyên với nhau, bạn sẽ có được một số nguyên. Vì vậy, các kiểu trả về của đó chức năng sẽ là int. Tên là những gì bạn muốn để gọi chức năng của bạn. Đây có lẽ là quan trọng nhất phần khai báo hàm, về chức năng. Nhưng trên thực tế có lẽ là một trong những phần quan trọng nhất khai báo hàm trong thuật ngữ biết những gì thực tế hàm hiện. Nếu bạn đặt tên hàm f hoặc g hoặc h hoặc bí ẩn hay một cái gì đó như thế, có lẽ bạn đang đi để có được một chút lấn cấn cố gắng nhớ những gì những chức năng làm. Vì vậy, điều quan trọng để cung cấp cho bạn tên có ý nghĩa chức năng của. Cuối cùng, danh sách đối số là dấu phẩy tách ra danh sách của tất cả các yếu tố đầu vào chức năng của bạn, mỗi trong số đó có một loại và một tên. Vì vậy, không chỉ làm bạn phải định rõ kiểu của biến hàm ý đầu ra, bạn cũng muốn xác định loại và loại biến các chức năng sẽ được chấp nhận như là đầu vào. Vì vậy, chúng ta hãy làm một ví dụ ở đây. Hãy chỉ có một cái nhìn tại một cụ thể hơn. Vì vậy, đây là một ví dụ của một hàm khai cho một chức năng mà sẽ thêm hai số nguyên với nhau. Tổng của hai số nguyên được sắp là một số nguyên là tốt, vì chúng tôi chỉ thảo luận. Và do đó, các kiểu trả về, ở đây trong xanh, sẽ là int. Điều đó chỉ cho chúng ta biết thêm hai ints sẽ đi, vào cuối ngày, đầu ra, hoặc nhổ nó trở lại ra cho chúng tôi, một số nguyên. Với những gì chức năng này hiện chúng tôi muốn cung cấp cho nó một cái tên đầy ý nghĩa. Thêm hai ints vẻ thích hợp, xem xét Ta xét hai số nguyên liệu đầu vào và hy vọng thêm chúng với nhau. Nó có thể là một chút của một cồng kềnh Tên và thẳng thắn chức năng này có lẽ là không cần thiết vì chúng tôi có sự bổ sung điều hành, nếu bạn nhớ lại từ chúng tôi thảo luận của các nhà khai thác, trước đây. Nhưng chúng ta hãy chỉ nói vì lợi ích của lập luận rằng chức năng này rất hữu ích và vì vậy chúng tôi sẽ gọi nó thêm hai ints. Cuối cùng, chức năng này có hai đầu vào. Mỗi trong số đó là một số nguyên. Vì vậy, chúng tôi có dấu phẩy này danh sách tách các yếu tố đầu vào. Bây giờ chúng ta thường muốn đặt tên cho mỗi người để họ có thể được sử dụng bên trong hàm. Các tên này không đề quan trọng. Trong trường hợp này, chúng ta không nhất thiết phải có bất kỳ ý nghĩa gắn liền với chúng. Vì vậy, chúng tôi chỉ có thể gọi họ là a và b. Điều đó hoàn toàn tốt. Tuy nhiên, nếu bạn tìm thấy mình trong một tình huống nơi mà các tên của các biến thực sự có thể là quan trọng, bạn có thể muốn gọi cho họ một cái gì đó khác hơn là a và b để cung cấp cho họ một cái gì đó nhiều hơn biểu tượng có ý nghĩa. Nhưng trong trường hợp này, chúng ta không thực sự biết bất cứ điều gì khác về các chức năng. Chúng tôi chỉ muốn thêm hai số nguyên. Vì vậy, chúng tôi sẽ gọi điện những số nguyên a và b. Đó là một ví dụ. Tại sao bạn không mất một giây để suy nghĩ về việc này, làm thế nào bạn có thể viết một hàm khai cho một chức năng mà sẽ nhân hai số điểm nổi? Bạn có nhớ những gì một nổi số điểm là? Sẽ những gì chức năng này khai báo như thế nào? Tôi thực sự khuyên bạn tạm dừng video ở đây và mất bao nhiêu thời gian bạn cần. Hãy suy nghĩ về điều này khai báo hàm sẽ là gì? Điều gì sẽ là kiểu trả về được? Điều gì sẽ là một tên có ý nghĩa là gì? Những gì các yếu tố đầu vào sẽ là gì? Vì vậy, tại sao bạn không tạm dừng video ở đây và viết lên một chức năng khai báo cho một chức năng mà sẽ nhân hai số dấu chấm động với nhau. Hy vọng rằng bạn tạm dừng video. Vì vậy, chúng ta hãy xem một ví dụ của một tờ khai có thể. Float mult hai tập số thực float x, float y. Các sản phẩm của hai số dấu chấm, mà nhớ lại là làm thế nào chúng tôi đại diện cho các số thực hoặc số điện thoại với các giá trị thập phân trong c, là có được một số điểm nổi. Khi bạn nhân một thập phân của một số thập phân, có lẽ bạn đang đi để có được một số thập phân. Bạn muốn cung cấp cho nó một cái tên có liên quan. Nhân hai số thực có vẻ tốt đẹp. Nhưng bạn thực sự có thể gọi nó mult hai phao, phao nổi hoặc mult. Bất cứ điều gì như thế, miễn là nó đưa ra một số ý nghĩa thực tế với những gì hộp đen này đã được đi làm. Và một lần nữa, trong trường hợp này, chúng tôi không dường như có bất kỳ ý nghĩa gắn liền đến tên của các biến chúng ta đang đi trong, vì vậy chúng tôi chỉ cần gọi họ x và y. Bây giờ nếu bạn gọi cho họ một cái gì đó khác, điều đó hoàn toàn tốt. Trong thực tế, nếu bạn đã làm Tờ khai này thay vì sử dụng thay vì tăng gấp đôi của phao, nếu bạn gọi lại đó là một đôi khác nhau cách chính xác hơn xác định số thực hoặc nổi biến điểm. Điều đó hoàn toàn tốt quá. Hoặc là một trong những người sẽ là tốt. Trong thực tế, có một số kết hợp khác nhau cách để khai báo chức năng này. Nhưng đây là hai người khá tốt. Chúng tôi đã tuyên bố một chức năng, đó là tuyệt vời. Chúng tôi đã nói với các trình biên dịch những gì nó được, những gì chúng ta sẽ làm được. Bây giờ chúng ta hãy thực sự viết chức năng đó. Hãy cung cấp cho nó một định nghĩa, vì thế bên trong hộp đen hành vi dự đoán đang xảy ra. Trong thực tế, chúng tôi được nhân hai thực số với nhau, hoặc thêm số với nhau, hoặc làm bất cứ điều gì nó là chúng tôi hỏi chức năng của chúng tôi để làm. Vì vậy, trong thực tế, chúng ta hãy cố gắng và xác định nhân hai số thực mà chúng ta vừa nói về một giây trước đó. Bây giờ đầu một định nghĩa chức năng trông gần như giống hệt nhau như là một khai báo hàm. Tôi có cả hai của họ ở đây. Trên cùng là khai báo hàm, loại, tên, dấu phẩy tách ra lập luận danh sách, dấu chấm phẩy. Các dấu chấm phẩy chỉ ra rằng đó là một khai báo hàm. Sự khởi đầu của chức năng định nghĩa trông gần như giống như nhau, loại, tên, dấu phẩy tách danh sách đối số, không có dấu chấm phẩy, mở ngoặc móc. Các ngoặc móc mở, giống như chúng ta đã làm với chính, có nghĩa là chúng ta bây giờ bắt đầu để xác định những gì xảy ra bên trong hộp đen chúng tôi đã quyết định gọi mult hai tập số thực. Dưới đây là một cách để thực hiện nó. Chúng ta có thể nói, chúng ta có thể khai báo một mới biến kiểu float gọi sản phẩm và gán biến đó với giá trị x lần y. Và sau đó trả lại sản phẩm. Không trở lại có ý nghĩa gì ở đây. Cũng trở lại là con đường chúng tôi chỉ ra đó là cách chúng ta đang đi qua các đầu ra trở ra. Vì vậy, trở về một cái gì đó, cũng giống như, đây là sản lượng của hộp đen. Vì vậy, đó là cách bạn làm điều đó. Dưới đây là một cách khác để thực hiện nó. Chúng tôi chỉ có thể trở lại lần x y. x là một phao. y là một phao. Vì vậy, x lần y cũng là một phao. Chúng tôi thậm chí không cần phải tạo ra một biến khác. Vì vậy, đó là một cách khác nhau để thực hiện chính xác các hộp đen cùng. Bây giờ lấy một khoảnh khắc, tạm dừng các video một lần nữa, và cố gắng và xác định thêm hai ints, đó là các chức năng khác mà chúng tôi nói về một thời điểm trước đây. Một lần nữa ở đây, tôi đã đặt các chức năng kê khai, và do đó, các dấu chấm phẩy, và một ngoặc móc mở và xoăn kín nẹp để chỉ ra nơi mà chúng ta sẽ điền trong nội dung thêm hai ints, để chúng tôi xác định cụ thể hành vi bên trong hộp đen. Vì vậy, tạm dừng video. Và mất nhiều thời gian như bạn cần phải cố gắng và xác định một thực hiện thêm hai ints, chẳng hạn rằng khi các chức năng xuất ra một giá trị, nó, trên thực tế, trở lại tổng của hai đầu vào. Vì vậy, giống như các ví dụ trước, có nhiều cách khác nhau mà bạn có thể thực hiện thêm hai ints. Dưới đây là một. Tại đây tôi đã cam chỉ có một số comments-- Tôi chỉ cần thêm một số bình luận để chỉ ra những gì đang xảy ra trên mỗi dòng mã. Vì vậy, tôi tuyên bố một biến gọi là tổng của kiểu int. Tôi nói số tiền tương đương với một cộng b. Đó là nơi mà chúng tôi đang thực sự làm việc bổ sung thêm một và b với nhau. Và tôi trả lại tiền. Và điều đó có ý nghĩa vì tổng hợp là một biến kiểu int. Và những gì nhập dữ liệu rằng điều này chức năng cho tôi biết nó sẽ ra? Int. Vì vậy, tôi trở lại tiền mà là một biến số nguyên. Và điều đó có ý nghĩa cho những gì chúng tôi đã khai báo và xác định chức năng của chúng tôi làm. Bây giờ bạn cũng có thể định nghĩa các chức năng theo cách này, int sum bằng một cộng b-- bỏ qua đầu tiên step-- và sau đó, trở về sum. Bây giờ bạn có thể có cũng thực hiện nó theo cách này, mà tôi rất không khuyên. Đây là phong cách xấu cho một điều và thiết kế thực sự xấu, nhưng nó, trên thực tế, làm việc. Nếu bạn đưa mã này, mà là int thêm xấu bộ cộng dot c, và sử dụng nó. Nó thực sự không thêm hai số nguyên với nhau. Đó là một thực hiện rất kém các hành vi cụ thể này. Nhưng nó không làm việc. Nó chỉ là để minh họa điểm mà chúng ta không thực sự quan tâm những gì xảy ra bên trong hộp đen, miễn vì nó có đầu ra mà chúng ta mong đợi. Đây là một hộp đen được thiết kế kém. Nhưng ở cuối ngày, nó đầu ra vẫn là tổng của một cộng b. Được rồi. Vì vậy, chúng tôi đã tuyên bố chức năng. Và chúng tôi đã xác định chức năng. Vì vậy, đó là thực sự tốt. Bây giờ chúng ta hãy bắt đầu sử dụng các chức năng mà chúng tôi đã tuyên bố và chúng tôi đã xác định. Để gọi một function-- nó thực sự khá easy-- tất cả các bạn cần làm là vượt qua nó lập luận thích hợp, đối số của các kiểu dữ liệu mà nó hy vọng, và sau đó giao cho sự trở lại giá trị của chức năng đó và this-- cớ me-- gán giá trị trả về của hàm một cái gì đó của đúng loại. Vì vậy, chúng ta hãy có một cái nhìn tại này trong thực tế ở một tập tin gọi là bộ cộng 1 dot c, mà Tôi có trong IDE CS50 của tôi. Vì vậy, đây là bộ cộng 1 dot c. Lúc đầu bạn thấy tôi có tôi bao gồm, pound bao gồm, chuẩn IO, và CS50 dot h. Và sau đó tôi có chức năng khai báo của tôi. Đây là nơi tôi đang nói với trình biên dịch tôi sẽ viết một chức năng gọi thêm hai ints. Nó sẽ ra một biến kiểu số nguyên. Đó là những gì phần này là đúng ở đây. Và sau đó tôi có hai đầu vào cho nó một và b, mỗi trong số đó là một số nguyên. Bên trong chính, tôi yêu cầu người dùng cho đầu vào bằng cách nói, đưa cho tôi một số nguyên. Và họ đang nhắc nhở để quên int, mà là một chức năng mà được bao gồm trong thư viện CS50. Và đó được lưu trữ trong x, một biến số nguyên. Sau đó, chúng tôi nhắc nhở họ cho số nguyên khác. Chúng tôi nhận được số nguyên khác và lưu trữ trong y. Và sau đó, ở đây trên đường 28, là nơi mà chúng tôi thực hiện cuộc gọi chức năng của chúng tôi. Chúng tôi đang nói, equals z int thêm 2 ints x y dấu phẩy. Bạn có thấy tại sao điều này có ý nghĩa? x là một biến kiểu số nguyên và y là một biến kiểu số nguyên. Vì vậy, đó là tốt. Đó có ý nghĩa gì với chức năng của chúng tôi khai trên dòng 17 trông như thế nào. Các dấu phẩy tách ra danh sách đầu vào hy vọng hai số nguyên a và b. Trong trường hợp đó, chúng ta có thể gọi họ bất cứ điều gì chúng ta muốn. Nó chỉ trông mong hai số nguyên. Và x là một số nguyên và y là một số nguyên. Điều đó làm việc. Và chúng ta biết chức năng đó là đi để ra một số nguyên là tốt. Và vì vậy chúng tôi đang lưu trữ sản lượng chức năng, thêm hai ints, trong một kiểu số nguyên biến, mà chúng ta đang gọi điện thoại z. Và sau đó chúng ta có thể nói, tổng của trăm phần trăm và i i là phần trăm i. x, y, z tương ứng điền vào những phần trăm của tôi. Định nghĩa là gì thêm hai ints như thế nào? Nó khá đơn giản. Đó là một trong những người chúng tôi chỉ thấy một giây trước đó, int sum bằng một khoản tiền cộng với b trở lại. Làm việc này? Hãy lưu tập tin. Và sau đó xuống đây trên thiết bị đầu cuối của tôi Tôi sẽ làm cho bộ cộng 1, và tôi rõ ràng màn hình của tôi. Tôi sẽ để phóng to bởi vì tôi biết đó là một chút khó khăn để xem. Vì vậy, chúng tôi biên dịch chương trình này như bộ cộng 1. Vì vậy, chúng ta có thể làm chấm slash bộ cộng 1. Hãy cho tôi một số nguyên, 10. Hãy cho tôi số nguyên khác, 20. Tổng của 10 và 20 là 30. Vì vậy, chúng tôi đã thực hiện một cuộc gọi chức năng thành công. Bạn có thể chạy các chức năng một lần nữa, tiêu cực 10, 17 tổng của âm 10 và 17 là 7. Chức năng này hoạt động. Nó có hành vi mà chúng ta mong đợi nó. Và vì vậy chúng tôi đã thực hiện thành công chức năng, định nghĩa, kê khai, và một cuộc gọi chức năng thành công. Couple linh tinh điểm về chức năng trước khi chúng tôi kết thúc phần này. Nhớ lại từ chúng tôi thảo luận về các kiểu dữ liệu, trước đây, mà chức năng đôi khi có thể mất không có đầu vào. Nếu đó là trường hợp, chúng tôi khai báo các chức năng như có một danh sách khoảng trống đối số. Bạn có nhớ lại những gì chức năng phổ biến nhất chúng tôi đã nhìn thấy cho đến nay mà mất một danh sách đối số là khoảng trống? Đó là chính. Nhớ lại cũng chức năng mà đôi khi không thực sự có một đầu ra. Trong trường hợp đó, chúng ta khai báo các chức năng như có một kiểu void trở lại. Chúng ta hãy kết thúc phần này bằng cách giải quyết một vấn đề thực tế. Vì vậy, đây là vấn đề đặt ra. Tôi muốn bạn viết một hàm gọi là tam hợp lệ. Hàm này nên làm được mất ba số thực đại diện cho độ dài của ba hai mặt của một tam giác như các thông số của nó, hoặc đối số của nó, hoặc nó inputs-- một tập hợp các từ đồng nghĩa mà bạn có thể gặp phải. Chức năng này nên hoặc là đầu ra đúng hay sai tùy thuộc vào việc những người ba chiều dài có khả năng làm cho một hình tam giác. Bạn có nhớ những loại dữ liệu mà chúng tôi sử dụng để cho biết đúng hay sai? Bây giờ làm thế nào để bạn thực hiện điều này? Cũng biết có một cặp vợ chồng các quy tắc liên quan đến tam giác đó là thực sự hữu ích để biết. Một tam giác chỉ có thể có bên với chiều dài dương. Điều đó có ý nghĩa. Có thể là bạn đang nói, duh. Một điều khác cần lưu ý mặc dù, là tổng phương chiều dài của bất kỳ hai cạnh của tam giác phải lớn hơn chiều dài của các bên thứ ba. Đó là thực sự đúng. Bạn không thể có một hình tam giác cạnh 1, 2 và 4, ví dụ, vì 1 cộng 2 không được lớn hơn 4. Vì vậy, những người đang có những luật lệ mà xác định có hay không ba đầu vào conceivably có thể hình thành một hình tam giác. Vì vậy, phải mất một vài phút và kê khai, sau đó xác định Chức năng này được gọi là hợp lệ tam giác, như vậy mà nó thực sự có hành vi quy định ở đây. Nó sẽ ra đúng nếu những ba mặt có khả năng bao gồm một hình tam giác, và sai khác Sẵn sàng để xem làm thế nào bạn đã làm? Đây là một trong những thực tam giác của sự hợp lệ. Nó không phải là người duy nhất. Yours có thể thay đổi chút ít. Nhưng điều này không có gì, trên thực tế, có các hành vi mà chúng ta mong đợi. Chúng tôi tuyên bố chức năng của chúng tôi tại rất đỉnh, bool tam hợp lệ float x float y float z. Vì vậy, một lần nữa, chức năng này mất ba số thực như các đối số của nó, nổi các biến giá trị điểm, và đầu ra là đúng hay sai giá trị, mà là một Boolean, thu hồi. Vì vậy, đó là lý do tại sao các kiểu trả về là bool. Sau đó, chúng tôi xác định các chức năng. Điều đầu tiên chúng tôi làm là kiểm tra để đảm bảo rằng tất cả các bên đang tích cực. Nếu x là nhỏ hơn hoặc bằng 0, hoặc nếu y là bằng 0, hoặc nếu z là nhỏ hơn hoặc bằng 0, đó không thể là một hình tam giác. Họ không có mặt tích cực. Và vì vậy chúng tôi có thể trở lại sai trong tình huống đó. Tiếp theo, chúng ta hãy kiểm tra để chắc chắn là mỗi cặp đầu vào là lớn hơn một phần ba. Vì vậy, nếu x cộng với y là ít hơn hoặc bằng z, hoặc nếu x cộng với z là ít hơn hoặc bằng y, hoặc nếu y cộng với z là nhỏ hơn hoặc bằng x, mà cũng không thể là một tam hợp lệ. Vì vậy, chúng tôi quay trở lại sai một lần nữa. Giả sử chúng ta đã thông qua cả hai séc Mặc dù vậy, sau đó chúng ta có thể trở thành sự thật. Bởi vì những ba mặt có khả năng returning-- của việc tạo ra một tam giác hợp lệ. Và đó là nó. Bây giờ bạn đã khai báo và định nghĩa. Và bạn có thể đến nay sử dụng và gọi chức năng này. Lam tôt lăm. Tôi Doug Lloyd. Đây là CS50.