1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Chức năng này là các phần của mã được sử dụng trong một chương trình lớn hơn 2 00:00:09,640 --> 00:00:11,430 để thực hiện một nhiệm vụ cụ thể. 3 00:00:11,430 --> 00:00:15,060 Họ cũng được biết như thủ tục, thủ tục con, và chương trình con, 4 00:00:15,060 --> 00:00:18,320 kể từ khi họ thực sự chỉ là chương trình mini trong các chương trình. 5 00:00:18,320 --> 00:00:20,340 Mặc dù bạn có thể không nhận thấy, 6 00:00:20,340 --> 00:00:24,090 bạn chắc chắn đã sử dụng chức năng đã được nếu bạn đã được lập trình trong C. 7 00:00:24,090 --> 00:00:26,770 Khi bạn viết công cụ để màn hình bằng cách sử dụng printf, 8 00:00:26,770 --> 00:00:29,380 bạn đang thực sự sử dụng một chức năng được gọi là printf. 9 00:00:29,380 --> 00:00:33,760 Tương tự như vậy, getInt và GetString là chức năng mà CS50 cung cấp cho bạn. 10 00:00:33,760 --> 00:00:37,750 Khi lập trình, chúng tôi sử dụng chức năng đối với một số lý do. 11 00:00:37,750 --> 00:00:41,240 >> Với các chức năng để thực hiện các nhiệm vụ thông thường như văn bản vào màn hình 12 00:00:41,240 --> 00:00:44,480 và khiến người sử dụng cho đầu vào tiết kiệm thời gian khi lập trình. 13 00:00:44,480 --> 00:00:47,510 Nó không cần thiết phải viết code để làm những việc tương tự 14 00:00:47,510 --> 00:00:49,520 kể từ khi họ đã làm cho chúng ta. 15 00:00:49,520 --> 00:00:54,580 Nó thậm chí không cần thiết để chúng tôi hiểu chính xác làm thế nào những chức năng hoạt động nội bộ. 16 00:00:54,580 --> 00:00:58,880 Thay vào đó, chúng tôi chỉ cần biết làm thế nào để sử dụng hoặc gọi cho họ trong các chương trình của chúng tôi. 17 00:00:58,880 --> 00:01:02,040 Nó cũng hữu ích để viết các chức năng trong các chương trình lớn hơn 18 00:01:02,040 --> 00:01:04,330 thậm chí nếu bạn không có kế hoạch có những người khác sử dụng chúng, 19 00:01:04,330 --> 00:01:06,830 chỉ để phân chia nhiệm vụ lớn hơn ở bàn tay. 20 00:01:06,830 --> 00:01:11,910 Bằng cách này, bạn tạo cấu trúc cho mã của bạn giống như bạn muốn tạo cấu trúc cho một bài luận, 21 00:01:11,910 --> 00:01:15,180 và với các dự án thực sự lớn bạn sử nhiều người 22 00:01:15,180 --> 00:01:16,730 để làm việc trên các phần khác nhau cùng một lúc 23 00:01:16,730 --> 00:01:20,480 kể từ khi nó rõ ràng công việc của một người kết thúc và một bắt đầu. 24 00:01:20,480 --> 00:01:26,530 >> Chức năng thường hoạt động trên 1 hoặc nhiều đầu vào, được biết đến như là đối số hoặc các thông số, 25 00:01:26,530 --> 00:01:30,520 chuyển đổi các đầu vào một giá trị đầu ra sau đó trở về. 26 00:01:30,520 --> 00:01:34,950 Tuy nhiên, nó cũng có thể có các chức năng mà không sử dụng bất kỳ đối số đầu vào 27 00:01:34,950 --> 00:01:36,400 và không trả lại một đầu ra. 28 00:01:36,400 --> 00:01:38,790 Được rồi, đủ với những thứ fluffy. 29 00:01:38,790 --> 00:01:41,790 Hãy có một cái nhìn tại một số các chức năng thực sự trong C. 30 00:01:41,790 --> 00:01:45,570 >> Ở đây chúng tôi có một chức năng được gọi là vuông đó, có tin hay không, 31 00:01:45,570 --> 00:01:47,570 tính hình vuông của đầu vào. 32 00:01:47,570 --> 00:01:49,490 Hãy phân tích cú pháp của nó. 33 00:01:49,490 --> 00:01:51,860 Từ đầu tiên bạn nhìn thấy trong chức năng, int, 34 00:01:51,860 --> 00:01:57,460 xác định kiểu trả về của hàm, có nghĩa là, loại C sản lượng chức năng. 35 00:01:57,460 --> 00:02:00,370 Chức năng này sẽ sản xuất một giá trị kiểu int. 36 00:02:00,370 --> 00:02:04,100 Từ kế tiếp bạn thấy là tên của chức năng, hình vuông trong trường hợp này. 37 00:02:04,100 --> 00:02:07,390 Đặt tên các chức năng phù hợp là đặc biệt quan trọng. 38 00:02:07,390 --> 00:02:11,260 kể từ khi nó có thể là các tài liệu hướng dẫn dễ thấy nhất của những gì chức năng nào. 39 00:02:11,260 --> 00:02:14,880 Nó có thể là mát mẻ để tên này Shazam chức năng hoặc Booyah, 40 00:02:14,880 --> 00:02:18,340 nhưng điều đó sẽ không cho chúng tôi biết bất cứ điều gì về chức năng, không có gì. 41 00:02:18,340 --> 00:02:23,470 >> Sau tên hàm đến các yếu tố đầu vào chức năng, các đối số. 42 00:02:23,470 --> 00:02:26,380 Chúng được liệt kê trong một tập hợp các dấu ngoặc đơn 43 00:02:26,380 --> 00:02:30,160 với cả hai loại hình của họ và tên để sử dụng cho họ trong cơ thể của các chức năng. 44 00:02:30,160 --> 00:02:34,030 Quảng trường chỉ mất 1 đối số, int vuông, 45 00:02:34,030 --> 00:02:36,160 mà tôi đã quyết định cung cấp cho các x tên. 46 00:02:36,160 --> 00:02:40,760 Điều này kết thúc phần khai báo hàm hoặc mẫu thử nghiệm. 47 00:02:40,760 --> 00:02:43,320 Các dấu ngoặc nhọn xung quanh phần còn lại của các chức năng 48 00:02:43,320 --> 00:02:45,870 biểu thị sự bắt đầu và kết thúc của các cơ quan chức năng, 49 00:02:45,870 --> 00:02:48,320 định nghĩa của các chức năng chính nó. 50 00:02:48,320 --> 00:02:50,300 Square là một chức năng khá đơn giản. 51 00:02:50,300 --> 00:02:54,100 Nó chỉ có 1 dòng, vì tất cả chúng ta phải làm là nhân x bởi chính nó. 52 00:02:54,100 --> 00:02:59,250 Sự trở lại từ quy định cụ thể giá trị sản lượng và kích hoạt cuối chức năng. 53 00:02:59,250 --> 00:03:03,430 Để sử dụng chức năng vuông, chúng ta cần phải cung cấp các yếu tố đầu vào thích hợp 54 00:03:03,430 --> 00:03:05,310 và sau đó bắt đầu ra. 55 00:03:05,310 --> 00:03:08,140 Ở đây, bạn sẽ thấy một vài cách để làm điều đó. 56 00:03:08,140 --> 00:03:13,600 Chúng tôi có thể vượt qua trong một int thô, giống như 6, hoặc chúng tôi có thể vượt qua trong một biến như một. 57 00:03:13,600 --> 00:03:15,700 Lưu ý rằng mỗi lần chúng ta gọi là hình vuông, 58 00:03:15,700 --> 00:03:18,330 chúng tôi bắt đầu ra trong một biến và sau đó in nó. 59 00:03:18,330 --> 00:03:22,690 Tuy nhiên, chúng tôi không có để lưu trữ giá trị trả về trong một biến và sau đó in. 60 00:03:22,690 --> 00:03:27,090 Chúng tôi chỉ có thể gửi trực tiếp printf là chúng ta làm khi chúng ta vuông 10, 61 00:03:27,090 --> 00:03:30,580 nhưng điều này không có nghĩa là chúng tôi không có quyền truy cập vào giá trị trả lại của hình vuông 10 62 00:03:30,580 --> 00:03:32,230 ở những nơi khác trong mã. 63 00:03:32,230 --> 00:03:34,890 Hãy nhìn vào một ví dụ đơn giản khác. 64 00:03:34,890 --> 00:03:38,750 >> Lần này, chúng tôi sẽ tổng hợp 2 phao lại với nhau để chúng ta có thể nhìn thấy những gì chức năng trông giống như một 65 00:03:38,750 --> 00:03:41,220 khi nó có 2 đầu vào thay vì chỉ 1. 66 00:03:41,220 --> 00:03:43,950 Như bạn có thể thấy, nó không khác nhau nhiều. 67 00:03:43,950 --> 00:03:47,330 Tất cả những gì chúng ta làm là thêm vào tham số thứ 2, một phao có tên là b, 68 00:03:47,330 --> 00:03:51,820 danh sách đối số bằng cách sử dụng dấu phẩy để tách biệt so với đối số đầu tiên, nổi một. 69 00:03:51,820 --> 00:03:55,550 Vì vậy, hình vuông và chức năng tổng hợp của chúng tôi là khá dễ hiểu 70 00:03:55,550 --> 00:03:58,930 bởi vì họ là tương đương với các chức năng mà bạn đã thấy trước trong môn toán lớp. 71 00:03:58,930 --> 00:04:01,610 Bây giờ, hãy nhìn vào một chức năng đó là hơi khác nhau. 72 00:04:01,610 --> 00:04:04,620 Thay vì trả lại một giá trị, nó thay đổi trạng thái. 73 00:04:04,620 --> 00:04:07,260 Điều này được biết là có một tác dụng phụ. 74 00:04:07,260 --> 00:04:10,750 Trong chương trình này, các chức năng printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 có một kiểu trả về mà chúng tôi đã không nhìn thấy trước khi có hiệu lực,. 76 00:04:13,410 --> 00:04:16,730 >> Void được sử dụng để nói rằng một chức năng không trả lại bất cứ điều gì. 77 00:04:16,730 --> 00:04:19,410 Không có biến kiểu void, 78 00:04:19,410 --> 00:04:22,760 vì vậy nếu bạn cố gắng để trở về một cái gì đó từ một chức năng như printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 trình biên dịch sẽ la lên ở bạn. 80 00:04:24,290 --> 00:04:29,390 Bên trong printf_fudd_style, chúng ta thấy rằng trong khi chức năng vẫn còn thực hiện một nhiệm vụ, 81 00:04:29,390 --> 00:04:31,890 cụ thể là, chuyển đổi tất cả các Rs Ws, 82 00:04:31,890 --> 00:04:36,380 điểm của chức năng là để sửa đổi các chuỗi và sau đó in ra trên màn hình, 83 00:04:36,380 --> 00:04:39,400 thay đổi trạng thái của chương trình thay vì trả lại một kết quả. 84 00:04:39,400 --> 00:04:43,700 Sử dụng chức năng này là rất nhiều như sử dụng hình vuông của chúng tôi và các chức năng tổng hợp, 85 00:04:43,700 --> 00:04:46,950 trừ trường hợp chúng không lưu trữ các kết quả trong một biến hoặc vượt qua nó đi chức năng khác 86 00:04:46,950 --> 00:04:49,520 vì không có kết quả để nói chuyện. 87 00:04:49,520 --> 00:04:53,180 Vì vậy, khi chúng tôi biên dịch và chạy chương trình Elmer Fudd của chúng tôi, 88 00:04:53,180 --> 00:04:56,970 bạn thấy rằng "Bạn vô lại con thỏ!" được chuyển quyền 89 00:04:56,970 --> 00:04:58,730 "Bạn wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Cuối cùng, có thêm 1 chức năng đáng thảo luận 91 00:05:02,250 --> 00:05:06,810 kể từ khi bạn đã sử dụng nó trong tất cả các chương trình C bạn đã từng viết, chính. 92 00:05:06,810 --> 00:05:09,450 Chính là một chức năng giống như bất kỳ khác. 93 00:05:09,450 --> 00:05:13,580 Nó có một kiểu trả về, một cái tên, một danh sách các đối số, và một cơ thể. 94 00:05:13,580 --> 00:05:16,110 Kiểu trả về của chính luôn luôn là một int, 95 00:05:16,110 --> 00:05:19,120 và int này được sử dụng để giao tiếp trạng thái của chương trình khi nó kết thúc. 96 00:05:19,120 --> 00:05:23,360 >> Nó chạy thành công, hoặc đã làm nó kết thúc sớm vì một lỗi? 97 00:05:23,360 --> 00:05:26,390 Trở lại không chỉ ra một chạy thành công, 98 00:05:26,390 --> 00:05:29,510 và trả lại bất kỳ giá trị nào khác không cho biết một lỗi. 99 00:05:29,510 --> 00:05:31,950 Tùy thuộc vào loại chương trình bạn đang viết, 100 00:05:31,950 --> 00:05:34,960 trả lại các mã khác nhau cho các lỗi khác nhau có thể hữu ích 101 00:05:34,960 --> 00:05:37,210 cho những người sử dụng chương trình của bạn sau này. 102 00:05:37,210 --> 00:05:40,220 Món chính đối số là một chút phức tạp hơn. 103 00:05:40,220 --> 00:05:42,150 >> Danh sách đối số có thể là trống rỗng, 104 00:05:42,150 --> 00:05:45,330 mà chúng tôi cho thấy bằng cách viết void ở giữa dấu ngoặc đơn, 105 00:05:45,330 --> 00:05:50,220 hoặc danh sách có thể có 2 đối số: một int và một mảng của char * s. 106 00:05:50,220 --> 00:05:52,820 Này được sử dụng khi chương trình của bạn có ý định sử dụng 107 00:05:52,820 --> 00:05:56,490 đối số được truyền trên dòng lệnh khi chương trình được gọi. 108 00:05:56,490 --> 00:05:59,690 Thường được gọi là đối số int argc, 109 00:05:59,690 --> 00:06:03,300 và đó là bằng chiều dài của mảng char *, được gọi là argv. 110 00:06:03,300 --> 00:06:07,080 Argv chứa các đối số dòng lệnh được thông qua vào chương trình. 111 00:06:07,080 --> 00:06:11,440 Trong một thời gian ngắn, chúng tôi sẽ nói về cách sử dụng các biến này chi tiết hơn. 112 00:06:11,440 --> 00:06:15,220 Để bây giờ, bạn có thể cảm thấy tự do để tuyên bố chính một trong hai cách. 113 00:06:15,220 --> 00:06:19,410 Tôi thường chọn để viết nó ra cách ngắn hơn, không có đối số, khi có thể. 114 00:06:19,410 --> 00:06:22,230 >> Bây giờ bạn biết làm thế nào để viết các chức năng, 115 00:06:22,230 --> 00:06:25,030 bạn đang trên con đường của bạn để phát triển lớn hơn, các chương trình phức tạp hơn. 116 00:06:25,030 --> 00:06:29,740 Tên là Nate hardison. Đây là CS50.