1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] ფუნქციები მონაკვეთებზე კოდი გამოიყენება უფრო ფართო პროგრამის 2 00:00:09,640 --> 00:00:11,430 ასრულებს კონკრეტულ დავალებას. 3 00:00:11,430 --> 00:00:15,060 ისინი ასევე ცნობილია როგორც პროცედურები, subroutines და ქვეპროგრამისგან, 4 00:00:15,060 --> 00:00:18,320 მას შემდეგ, რაც მათ მართლაც მხოლოდ მინი პროგრამების ფარგლებში პროგრამებს. 5 00:00:18,320 --> 00:00:20,340 მიუხედავად იმისა, რომ თქვენ შეიძლება არ შეამჩნია, 6 00:00:20,340 --> 00:00:24,090 თქვენ ყველაზე ნამდვილად არ გამოიყენება ფუნქციების უკვე თუ თქვენ პროგრამირდება in C. 7 00:00:24,090 --> 00:00:26,770 როდესაც ვწერთ პერსონალის რომ ეკრანზე გამოყენებით printf, 8 00:00:26,770 --> 00:00:29,380 თქვენ რეალურად იყენებს ფუნქცია მოუწოდა printf. 9 00:00:29,380 --> 00:00:33,760 ანალოგიურად, GetInt და GetString are ფუნქციებს, CS50 უზრუნველყოფს თქვენთვის. 10 00:00:33,760 --> 00:00:37,750 როგორც პროგრამისტები, ჩვენ ვიყენებთ ფუნქციებს რიგი მიზეზების გამო. 11 00:00:37,750 --> 00:00:41,240 >> მქონე ფუნქციებს ასრულებს საერთო ამოცანები, როგორიცაა წერა რომ ეკრანზე 12 00:00:41,240 --> 00:00:44,480 და რამაც მომხმარებლის ამისთვის შეყვანის ზოგავს ჩვენთვის დრო, როდესაც პროგრამირების. 13 00:00:44,480 --> 00:00:47,510 ეს არ არის აუცილებელი დაწერა კოდი უნდა გავაკეთოთ იმ იგივე რამ 14 00:00:47,510 --> 00:00:49,520 რადგან ისინი უკვე კეთდება ჩვენთვის. 15 00:00:49,520 --> 00:00:54,580 ეს კი არ აუცილებელია გვესმოდეს ზუსტად როგორ ამ ფუნქციების მუშაობა იძულებით. 16 00:00:54,580 --> 00:00:58,880 სამაგიეროდ, ჩვენ უბრალოდ უნდა იცოდეს, თუ როგორ გამოიყენოთ ან დარეკეთ მათ ჩვენი პროგრამების. 17 00:00:58,880 --> 00:01:02,040 ეს ასევე სასარგებლოა წერენ ფუნქციების დიდ პროგრამები 18 00:01:02,040 --> 00:01:04,330 მაშინაც კი, თუ თქვენ არ დაგეგმარების მქონე სხვები მათი გამოყენება, 19 00:01:04,330 --> 00:01:06,830 უბრალოდ გაყავით up უფრო დიდი ამოცანა ხელთ. 20 00:01:06,830 --> 00:01:11,910 ეს გზა, თქვენ სტრუქტურის თქვენი კოდი ჰგავს ნეტავ მისცეს სტრუქტურის ესე, 21 00:01:11,910 --> 00:01:15,180 და მართლაც დიდი პროექტების გააქტიურების მრავალჯერადი ხალხი 22 00:01:15,180 --> 00:01:16,730 მუშაობა სხვადასხვა კუთხეში ამავე დროს 23 00:01:16,730 --> 00:01:20,480 რადგან ნათელია, სადაც ერთი პირი მუშაობის დამთავრდა და სხვისი იწყება. 24 00:01:20,480 --> 00:01:26,530 >> ფუნქციები ჩვეულებრივ მოქმედებს 1 ან მეტი საშუალებებით, რომელიც ცნობილია როგორც არგუმენტები ან პარამეტრების, 25 00:01:26,530 --> 00:01:30,520 ტრანსფორმირებას იმ საშუალებებით შევიდა გამონატანის მნიშვნელობა, რომელიც შემდეგ დაბრუნდა. 26 00:01:30,520 --> 00:01:34,950 თუმცა, ეს შესაძლებელია აქვს ფუნქცია, რაც არ გამოიყენოთ ნებისმიერი შეყვანის არგუმენტები 27 00:01:34,950 --> 00:01:36,400 და არ დაბრუნდნენ გამომუშავება. 28 00:01:36,400 --> 00:01:38,790 Okay, საკმარისი ერთად ფუმფულა ფისუნიაა პერსონალი. 29 00:01:38,790 --> 00:01:41,790 მოდით შევხედოთ ზოგიერთი რეალური ფუნქციების C. 30 00:01:41,790 --> 00:01:45,570 >> აქ ფუნქცია მოუწოდა მოედანზე, რომ, გვჯერა თუ არა, 31 00:01:45,570 --> 00:01:47,570 computes მოედანზე შეყვანის. 32 00:01:47,570 --> 00:01:49,490 მოდით dissect სინტაქსის იგი. 33 00:01:49,490 --> 00:01:51,860 პირველი სიტყვა ხედავთ ფუნქცია, int, 34 00:01:51,860 --> 00:01:57,460 განსაზღვრავს დაბრუნების ტიპის ფუნქცია, ესაა, C ტიპის ფუნქცია ის გამომუშავება. 35 00:01:57,460 --> 00:02:00,370 ეს ფუნქცია დაბეჭდავს ღირებულების მქონე ტიპის int. 36 00:02:00,370 --> 00:02:04,100 შემდეგი სიტყვა ხედავთ არის სახელწოდება ფუნქცია, კვადრატული ამ შემთხვევაში. 37 00:02:04,100 --> 00:02:07,390 დასახელებისგან ფუნქციების სათანადოდ განსაკუთრებით მნიშვნელოვანია 38 00:02:07,390 --> 00:02:11,260 რადგან ალბათ ყველაზე თვალსაჩინო დოკუმენტაცია რა ფუნქცია აქვს. 39 00:02:11,260 --> 00:02:14,880 ეს შეიძლება იყოს cool ასახელებს ამ ფუნქციის shazam ან booyah, 40 00:02:14,880 --> 00:02:18,340 მაგრამ, რომ არ გვითხრათ შესახებ არაფერი რა ფუნქცია აქვს. 41 00:02:18,340 --> 00:02:23,470 >> შემდეგ ფუნქციას სახელი მოდის საშუალებებით, რათა ფუნქცია, არგუმენტები. 42 00:02:23,470 --> 00:02:26,380 ისინი ჩამოთვლილია შიგნით კომპლექტი ფრჩხილებში 43 00:02:26,380 --> 00:02:30,160 ორივე მათი ტიპის და სახელწოდების გამოყენება მათ ფარგლებში ორგანოს ფუნქცია. 44 00:02:30,160 --> 00:02:34,030 მოედანზე იღებს მხოლოდ 1 არგუმენტი, int, რათა მოედანი, 45 00:02:34,030 --> 00:02:36,160 რაც მე გადაწყვიტა მისცეს სახელი x. 46 00:02:36,160 --> 00:02:40,760 ეს დამთავრდა ფუნქცია დეკლარაციის ან პროტოტიპი. 47 00:02:40,760 --> 00:02:43,320 Curly braces მიმდებარე დანარჩენი ფუნქცია 48 00:02:43,320 --> 00:02:45,870 აღინიშნოს დასაწყისისა და დასასრულისათვის ფუნქციის ორგანო, 49 00:02:45,870 --> 00:02:48,320 განსაზღვრება ფუნქცია თავად. 50 00:02:48,320 --> 00:02:50,300 მოედანი საკმაოდ მარტივი ფუნქცია. 51 00:02:50,300 --> 00:02:54,100 ეს მხოლოდ მიიღო 1 ხაზი, რადგან ყველა ჩვენ უნდა გავაკეთოთ არის გამრავლების x თავისთავად. 52 00:02:54,100 --> 00:02:59,250 სიტყვის დაბრუნების განსაზღვრავს გამონატანის მნიშვნელობა და იწვევს ბოლომდე ფუნქცია. 53 00:02:59,250 --> 00:03:03,430 გამოიყენოს კვადრატული ფუნქცია, ჩვენ უნდა მიაწოდოს სათანადო საშუალებებით 54 00:03:03,430 --> 00:03:05,310 და შემდეგ ხელში გამომუშავება. 55 00:03:05,310 --> 00:03:08,140 აქ, თქვენ ხედავთ რამდენიმე გზები აკეთებს, რომ. 56 00:03:08,140 --> 00:03:13,600 ჩვენ შეგვიძლია გაივლის წლის ნედლეული int, როგორიცაა 6, ან ჩვენ შეგვიძლია გაივლის წლის ცვლადი მოსწონს. 57 00:03:13,600 --> 00:03:15,700 გაითვალისწინეთ, რომ ყოველ ჯერზე ჩვენ მოვუწოდებთ მოედანზე, 58 00:03:15,700 --> 00:03:18,330 ჩვენ ხელში გამოტანის ცვლადი და შემდეგ დაბეჭდეთ. 59 00:03:18,330 --> 00:03:22,690 თუმცა, ჩვენ არ გვაქვს შესანახად დაბრუნების ღირებულების ცვლადი და შემდეგ ბეჭდვა. 60 00:03:22,690 --> 00:03:27,090 ჩვენ შეგვეძლო უბრალოდ გამოგვიგზავნოთ პირდაპირ printf როგორც ჩვენ ვაკეთებთ, როდესაც ჩვენ მოედანზე 10, 61 00:03:27,090 --> 00:03:30,580 მაგრამ ეს არ ნიშნავს, რომ ჩვენ არ გვაქვს წვდომა დაბრუნების ღირებულება მოედანზე 10 62 00:03:30,580 --> 00:03:32,230 სხვაგან კოდი. 63 00:03:32,230 --> 00:03:34,890 მოდით შევხედოთ მეორე უბრალო მაგალითი. 64 00:03:34,890 --> 00:03:38,750 >> ამჯერად, ჩვენ მთლიანობაში 2 მოძრავი ერთად ისე, რომ ჩვენ ვხედავთ, თუ რა ფუნქციას ჰგავს 65 00:03:38,750 --> 00:03:41,220 როცა ეს მივიღე 2 საშუალებებით ნაცვლად მხოლოდ 1. 66 00:03:41,220 --> 00:03:43,950 როგორც ხედავთ, ეს დიდად არ განსხვავდება. 67 00:03:43,950 --> 00:03:47,330 ყველა ვაკეთებთ არის დაამატე -2 არგუმენტი, float დაასახელა ბ, 68 00:03:47,330 --> 00:03:51,820 to არგუმენტი სია გამოყენებით მძიმით გამოყოფოდა ეს პირველი არგუმენტი, ათწილადი. 69 00:03:51,820 --> 00:03:55,550 ასე რომ, ჩვენი მოედანი და თანხა ფუნქციები საკმაოდ გასაგებია 70 00:03:55,550 --> 00:03:58,930 რადგან ისინი ექვივალენტი ფუნქციები რომ თქვენ ვხედავთ მანამდე მათემატიკის კლასის. 71 00:03:58,930 --> 00:04:01,610 ახლა, მოდით შევხედოთ ფუნქციას, რომელიც ოდნავ განსხვავებული. 72 00:04:01,610 --> 00:04:04,620 დაბრუნების ნაცვლად ღირებულება, იგი modifies სახელმწიფო. 73 00:04:04,620 --> 00:04:07,260 ეს ცნობილია, როგორც გვერდითი ეფექტი. 74 00:04:07,260 --> 00:04:10,750 ამ პროგრამაში, printf_fudd_style ფუნქცია 75 00:04:10,750 --> 00:04:13,410 აქვს დაბრუნების ტიპის, რომ ჩვენ არ მინახავს ადრე, ბათილად. 76 00:04:13,410 --> 00:04:16,730 >> ძალადაკარგულად გამოიყენება ვთქვა, რომ ფუნქცია არ დააბრუნებს არაფერი. 77 00:04:16,730 --> 00:04:19,410 არ არის ცვლადების ტიპის ბათილად, 78 00:04:19,410 --> 00:04:22,760 ასე რომ, თუ თქვენ ცდილობენ დაბრუნებას რაიმე ფუნქცია, როგორიცაა printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 შემდგენელი იქნება დაწეროთ თქვენ. 80 00:04:24,290 --> 00:04:29,390 Inside printf_fudd_style, ჩვენ ვხედავთ, რომ თუმცა ფუნქცია მაინც ასრულებს დავალებას, 81 00:04:29,390 --> 00:04:31,890 კერძოდ, გადართვის ყველა Rs რომ WS, 82 00:04:31,890 --> 00:04:36,380 წერტილი ფუნქციაა ცვლილებები სიმებიანი და შემდეგ ამობეჭდოთ ეკრანზე, 83 00:04:36,380 --> 00:04:39,400 იცვლება სახელმწიფო პროგრამის დაბრუნების ნაცვლად შედეგი. 84 00:04:39,400 --> 00:04:43,700 გამოყენება ამ ფუნქციის ძალიან ჰგავს ჩვენი მოედანი და თანხა ფუნქციები, 85 00:04:43,700 --> 00:04:46,950 გარდა ჩვენ არ ვინახავთ შედეგად ცვალებად და მსგავ off სხვა ფუნქცია 86 00:04:46,950 --> 00:04:49,520 რადგან არ არსებობს შედეგი საუბარი. 87 00:04:49,520 --> 00:04:53,180 ასე რომ, როდესაც ჩვენ კომპილირდება და აწარმოებს ჩვენი ელმერ ფადური პროგრამა, 88 00:04:53,180 --> 00:04:56,970 ხედავთ, რომ "თქვენ rascally კურდღლის!" იღებს გარდაიქმნება უფლება 89 00:04:56,970 --> 00:04:58,730 "თქვენ wascally wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> და ბოლოს, არსებობს 1 მეტი ფუნქცია ღირს მსჯელობენ 91 00:05:02,250 --> 00:05:06,810 მას შემდეგ, რაც თქვენ უკვე იყენებს ყველა C პროგრამის თქვენ ოდესმე დაწერილი, მთავარ. 92 00:05:06,810 --> 00:05:09,450 მთავარი არის ფუნქცია ჰგავს ნებისმიერი სხვა. 93 00:05:09,450 --> 00:05:13,580 ეს მივიღე დაბრუნების ტიპის, სახელი, სიაში არგუმენტები, და სხეულის. 94 00:05:13,580 --> 00:05:16,110 დაბრუნების გაცნობის მთავარ ყოველთვის int, 95 00:05:16,110 --> 00:05:19,120 და ამ int გამოიყენება კომუნიკაციის სტატუსის პროგრამის როდესაც იგი სრულდება. 96 00:05:19,120 --> 00:05:23,360 >> ეს გავაკეთეთ აწარმოებს წარმატებით, ან საერთოდ ეს დასრულდება ადრეულ შეცდომის გამო? 97 00:05:23,360 --> 00:05:26,390 დავბრუნდეთ ნულოვანი მიუთითებს წარმატებული პერსპექტივაში, 98 00:05:26,390 --> 00:05:29,510 და დაბრუნების ნებისმიერი არასამთავრობო ნულოვანი ღირებულება მიუთითებს შეცდომა. 99 00:05:29,510 --> 00:05:31,950 დამოკიდებულია სახის პროგრამა თქვენ წერის, 100 00:05:31,950 --> 00:05:34,960 დაბრუნების სხვადასხვა კოდები სხვადასხვა შეცდომები შეიძლება იყოს სასარგებლო 101 00:05:34,960 --> 00:05:37,210 მათთვის ვინც გამოიყენოთ პროგრამა შემდგომში. 102 00:05:37,210 --> 00:05:40,220 მაგისტრალური არგუმენტებია ცოტა უფრო რთული. 103 00:05:40,220 --> 00:05:42,150 >> არგუმენტი სია შეიძლება იყოს ცარიელი, 104 00:05:42,150 --> 00:05:45,330 რომელიც ჩვენ მიუთითოს წერილობით ბათილად შორის ფრჩხილებში, 105 00:05:45,330 --> 00:05:50,220 ან სიაში შეიძლება ჰქონდეს 2 არგუმენტები: int და მასივი char * s. 106 00:05:50,220 --> 00:05:52,820 ეს გამოიყენება, როდესაც თქვენი პროგრამის აპირებს ისარგებლოს 107 00:05:52,820 --> 00:05:56,490 არგუმენტები წელს მიღებული ბრძანების სტრიქონში როდესაც გადაცემა მოიყვანა. 108 00:05:56,490 --> 00:05:59,690 Int არგუმენტი, როგორც წესი, ეწოდება argc, 109 00:05:59,690 --> 00:06:03,300 და ეს თანაბარი სიგრძით char * მასივი, რომელიც ცნობილია როგორც argv. 110 00:06:03,300 --> 00:06:07,080 Argv შეიცავს ბრძანების ხაზი არგუმენტები შევიდა პროგრამა. 111 00:06:07,080 --> 00:06:11,440 მეორე მოკლედ, ჩვენ ვსაუბრობთ თუ როგორ გამოიყენოთ ეს ცვლადები უფრო დეტალურად. 112 00:06:11,440 --> 00:06:15,220 ახლა შეგიძლიათ მოგერიდებათ განაცხადოს მთავარ არც გზა. 113 00:06:15,220 --> 00:06:19,410 მე, როგორც წესი, აირჩიოს დაწერა ის მოკლე გზა, რომელზეც არ არგუმენტები, როდესაც შესაძლებელი. 114 00:06:19,410 --> 00:06:22,230 >> არის, რომ თქვენ იცით, როგორ დავწეროთ ფუნქციები, 115 00:06:22,230 --> 00:06:25,030 თქვენ კარგად თქვენს გზა განვითარებადი უფრო დიდი, უფრო რთული პროგრამები. 116 00:06:25,030 --> 00:06:29,740 ჩემი სახელი არის Nate Hardison. ეს არის CS50.