1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> SPEAKER 1: Vì vậy, tôi cảm thấy như tôi có xu hướng viết printf hello world hay printf 3 00:00:04,010 --> 00:00:08,160 xin chào phần trăm s khá thường xuyên trong các bối cảnh nơi mà tôi muốn in ra một 4 00:00:08,160 --> 00:00:11,360 chuỗi, đôi khi yêu cầu sử dụng một phần của chuỗi đó. 5 00:00:11,360 --> 00:00:14,980 Vâng, nó sẽ không được tốt đẹp nếu chúng ta tạo ra một chức năng riêng của chúng tôi được gọi là, 6 00:00:14,980 --> 00:00:19,900 nói, tên in, mục đích trong cuộc sống chỉ đơn giản là để in dấu phẩy chào 7 00:00:19,900 --> 00:00:24,560 cái và bằng cách chấp nhận cái và vì vậy như một đối số cho chức năng đó? 8 00:00:24,560 --> 00:00:29,220 Chúng ta có thể khai báo một chức năng riêng của chúng tôi cũng giống như chúng ta có thể trong Scratch như sau. 9 00:00:29,220 --> 00:00:35,280 >> Nói cách khác, giả sử tôi muốn printf tên của bạn và sau đó yêu cầu người sử dụng 10 00:00:35,280 --> 00:00:39,470 cho tên của mình với chuỗi s bằng GetString. 11 00:00:39,470 --> 00:00:42,060 Và sau đó tôi muốn gọi một chức năng gọi tên in 12 00:00:42,060 --> 00:00:44,340 đi qua một như là đầu vào của nó. 13 00:00:44,340 --> 00:00:47,770 >> Bây giờ không may, không có chức năng gọi tên in trong C hoặc trong 14 00:00:47,770 --> 00:00:48,950 thư viện CS50. 15 00:00:48,950 --> 00:00:51,220 Nhưng không có vấn đề, bởi vì chúng tôi có thể làm cho nó chính mình. 16 00:00:51,220 --> 00:00:54,560 Để khai báo một chức năng riêng của chúng tôi và sau đó thực hiện nó, chúng tôi chỉ đơn giản là có thể làm cho 17 00:00:54,560 --> 00:00:59,000 một số phòng trong tập tin này và tuyên bố chức năng này như sau, khoảng trống - 18 00:00:59,000 --> 00:01:01,900 có nghĩa rằng các chức năng không phải thực sự sẽ trở lại một cái gì đó, 19 00:01:01,900 --> 00:01:03,890 mặc dù nó sẽ có một tác dụng phụ - 20 00:01:03,890 --> 00:01:08,030 in tên, và sau đó chúng ta hãy chỉ định trong ngoặc là tên in hy vọng một 21 00:01:08,030 --> 00:01:09,680 đối số kiểu string. 22 00:01:09,680 --> 00:01:12,180 Và nói chung, chúng tôi sẽ suy nghĩ đó là một cái tên. 23 00:01:12,180 --> 00:01:15,140 >> Và chúng ta hãy mở cú đúp của chúng tôi và đóng cú đúp của chúng tôi. 24 00:01:15,140 --> 00:01:21,930 Và sau đó printf trong chào dấu phẩy phần trăm mới của tên dòng dấu phẩy. 25 00:01:21,930 --> 00:01:24,570 Nói cách khác, mặc dù điều này chức năng chỉ có một dòng mã, nó 26 00:01:24,570 --> 00:01:27,290 sao bây giờ có một số cao hơn mục đích cấp độ để in 27 00:01:27,290 --> 00:01:28,950 tên của một ai đó với một lời chào. 28 00:01:28,950 --> 00:01:33,115 >> Bây giờ bên trong của chính, thông báo rằng tôi gọi tên in bằng cách đi qua một s. 29 00:01:33,115 --> 00:01:35,830 Và vì vậy tôi dường như bây giờ để có một chương trình hoàn chỉnh. 30 00:01:35,830 --> 00:01:38,650 Sự khác biệt duy nhất là từ những người khác chúng tôi đã viết là không chỉ làm 31 00:01:38,650 --> 00:01:42,480 chương trình này đã chính, nó cũng có một kê khai, thực hiện 32 00:01:42,480 --> 00:01:44,740 tên in, một chức năng của riêng tôi. 33 00:01:44,740 --> 00:01:49,505 >> Bây giờ chúng ta biên dịch chương trình của tôi với make chức năng không, và chạy nó với dấu chấm 34 00:01:49,505 --> 00:01:51,080 giảm chức năng không. 35 00:01:51,080 --> 00:01:53,390 Khi được nhắc cho tên của tôi Tôi sẽ gõ vào David. 36 00:01:53,390 --> 00:01:55,830 Và tôi thực sự đang chào đón với "Xin chào, David." 37 00:01:55,830 --> 00:02:00,160 >> Bây giờ, nó quay ra tôi rất cố tình tên in trên tuyên bố chính, 38 00:02:00,160 --> 00:02:03,860 do đó nói với C trước rằng có tồn tại một chức năng gọi là in 39 00:02:03,860 --> 00:02:06,930 tên để tôi có thể sử dụng nó sau này trong chính. 40 00:02:06,930 --> 00:02:11,610 Bây giờ, thay vì tôi đã đặt tên in tại dưới cùng của tập tin của tôi, như tôi thẳng thắn 41 00:02:11,610 --> 00:02:15,310 có lẽ nên làm như vậy mà vẫn còn chính điều đầu tiên mà tôi hay 42 00:02:15,310 --> 00:02:18,450 người dùng khác nhìn thấy trong mã của tôi, nó chỉ ra rằng mã của tôi là 43 00:02:18,450 --> 00:02:19,780 sẽ không biên dịch. 44 00:02:19,780 --> 00:02:23,610 >> Cụ thể, nếu tôi trở lại của tôi cửa sổ terminal và chạy làm cho chức năng 45 00:02:23,610 --> 00:02:26,120 không bây giờ, nhận thấy rằng tôi đang mắng. 46 00:02:26,120 --> 00:02:30,340 Nếu tôi di chuyển trong cửa sổ thiết bị đầu cuối của tôi, Tôi sẽ gặp lỗi đầu tiên trong màu đỏ, 47 00:02:30,340 --> 00:02:33,120 khai tiềm ẩn của chức năng in tên. 48 00:02:33,120 --> 00:02:34,220 >> Bây giờ, điều đó có nghĩa là gì? 49 00:02:34,220 --> 00:02:37,190 Tốt, mặc dù tôi đã thực hiện in tên trong tập tin này, tôi đã không 50 00:02:37,190 --> 00:02:40,080 thực hiện nó trước khi tôi đã sử dụng nó trong chính. 51 00:02:40,080 --> 00:02:43,160 Bây giờ, chúng ta có thể quay trở lại cũ phiên bản và tên in đặt của 52 00:02:43,160 --> 00:02:44,450 thực hiện lên hàng đầu. 53 00:02:44,450 --> 00:02:48,730 >> Nhưng tôi có thể thay vì chỉ cung cấp cho C một gợi ý rằng có một chức năng tới. 54 00:02:48,730 --> 00:02:55,390 Cụ thể, trên chính tôi có thể khai báo in tên cũng giống như tôi đã làm trước đó, nhưng 55 00:02:55,390 --> 00:02:59,450 kết thúc dòng với một dấu chấm phẩy, do đó hứa hẹn sẽ thực hiện nhưng chưa 56 00:02:59,450 --> 00:03:02,180 thực sự thực hiện chức năng gọi tên in. 57 00:03:02,180 --> 00:03:05,860 Sau đó tôi có thể có chính ở đầu của tôi nộp như tôi hy vọng, và tôi thực sự có thể 58 00:03:05,860 --> 00:03:07,440 thực hiện in tên ở phía dưới. 59 00:03:07,440 --> 00:03:12,860 >> Nếu bây giờ tôi quay trở lại cửa sổ thiết bị đầu cuối của tôi và biên dịch lại chức năng không có thực hiện, 60 00:03:12,860 --> 00:03:14,390 thời gian này nó biên dịch. 61 00:03:14,390 --> 00:03:18,240 Và nếu tôi chạy nó với chức năng chấm dấu gạch chéo không cung cấp tên của tôi, tôi 62 00:03:18,240 --> 00:03:20,650 chào đón như "Xin chào, David." 63 00:03:20,650 --> 00:03:22,268