1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Funkcje są sekcje kodu stosowane w ramach większego programu 2 00:00:09,640 --> 00:00:11,430 wykonywanie danego zadania. 3 00:00:11,430 --> 00:00:15,060 Znane są również, jak procedury, procedury i podprogramie 4 00:00:15,060 --> 00:00:18,320 gdyż tak naprawdę to tylko mini programy w programach. 5 00:00:18,320 --> 00:00:20,340 Chociaż może nie zauważyłeś, 6 00:00:20,340 --> 00:00:24,090 z całą pewnością już nie używanych funkcji, jeśli już programować w C. 7 00:00:24,090 --> 00:00:26,770 Kiedy piszesz rzeczy do ekranu za pomocą printf, 8 00:00:26,770 --> 00:00:29,380 jesteś rzeczywiście użyciu funkcji o nazwie printf. 9 00:00:29,380 --> 00:00:33,760 Podobnie getInt i GetString są funkcjami, które CS50 zapewnia dla Ciebie. 10 00:00:33,760 --> 00:00:37,750 Jak programistów używamy funkcji dla wielu powodów. 11 00:00:37,750 --> 00:00:41,240 >> Pełniące funkcje do wykonywania typowych zadań, takich jak pisanie na ekranie 12 00:00:41,240 --> 00:00:44,480 i pyta użytkownika o wejściu oszczędza nam czas podczas programowania. 13 00:00:44,480 --> 00:00:47,510 To nie jest konieczne, aby napisać kod, aby robić te same rzeczy 14 00:00:47,510 --> 00:00:49,520 ponieważ są już dla nas uczynił. 15 00:00:49,520 --> 00:00:54,580 To nie jest nawet konieczne dla nas, aby dokładnie zrozumieć, jak te funkcje działają wewnętrznie. 16 00:00:54,580 --> 00:00:58,880 Zamiast tego, po prostu musimy wiedzieć, jak korzystać lub zadzwonić do nich w naszych programach. 17 00:00:58,880 --> 00:01:02,040 Jest to przydatne do napisania funkcji w większych programów 18 00:01:02,040 --> 00:01:04,330 nawet jeśli nie planujesz posiadania inni używają ich, 19 00:01:04,330 --> 00:01:06,830 po prostu podzielić się większą zadania. 20 00:01:06,830 --> 00:01:11,910 W ten sposób tworzą strukturę w kodzie tak jak chcesz dać strukturę eseju, 21 00:01:11,910 --> 00:01:15,180 i naprawdę dużych projektów włączyć kilka osób 22 00:01:15,180 --> 00:01:16,730 do pracy w różnych częściach jednocześnie 23 00:01:16,730 --> 00:01:20,480 ponieważ jest jasne, gdzie czyjaś praca się kończy, a drugi zaczyna. 24 00:01:20,480 --> 00:01:26,530 >> Funkcje działają zazwyczaj na 1 lub większej liczby wejść, znanych jako argumenty lub parametry, 25 00:01:26,530 --> 00:01:30,520 przekształcenie tych wejściowych wartość wyjściową, która jest następnie zwracany. 26 00:01:30,520 --> 00:01:34,950 Jednakże, jest to również możliwe, aby funkcje, które nie korzystają z żadnych argumentów wejściowych 27 00:01:34,950 --> 00:01:36,400 i nie zwracają wyjście. 28 00:01:36,400 --> 00:01:38,790 Dobra, wystarczy z puszystego materiału. 29 00:01:38,790 --> 00:01:41,790 Weźmy spojrzeć na niektóre funkcji rzeczywistych w C. 30 00:01:41,790 --> 00:01:45,570 >> Tutaj mamy funkcję o nazwie square, że w to wierzyć lub nie, 31 00:01:45,570 --> 00:01:47,570 oblicza kwadrat wejścia. 32 00:01:47,570 --> 00:01:49,490 Miejmy wnikliwie składnię niego. 33 00:01:49,490 --> 00:01:51,860 Pierwsze słowo widać w funkcji int, 34 00:01:51,860 --> 00:01:57,460 określa typ wartości funkcji, to jest typu C w funkcji mocy. 35 00:01:57,460 --> 00:02:00,370 Ta funkcja wyświetli wartość z typu int. 36 00:02:00,370 --> 00:02:04,100 Następne słowo widzisz to nazwa funkcji, kwadratowy w tym przypadku. 37 00:02:04,100 --> 00:02:07,390 Nazewnictwo funkcji właściwie jest szczególnie ważne 38 00:02:07,390 --> 00:02:11,260 bo to jest chyba najbardziej widoczne dokumentacja co funkcja robi. 39 00:02:11,260 --> 00:02:14,880 To może być fajne nazwać tę funkcję Shazam lub booyah, 40 00:02:14,880 --> 00:02:18,340 ale to nie mówi nam nic o tym, co funkcja robi. 41 00:02:18,340 --> 00:02:23,470 >> Po nazwa funkcji przyjść wejść do funkcji, argumenty. 42 00:02:23,470 --> 00:02:26,380 Zostały one wymienione w środku zestawu nawiasach 43 00:02:26,380 --> 00:02:30,160 zarówno ich rodzaj i nazwę używanego do nich w ciele funkcji. 44 00:02:30,160 --> 00:02:34,030 Kwadrat zajmuje tylko 1 argument, int do kwadratu, 45 00:02:34,030 --> 00:02:36,160 który zdecydowałem dać x nazw. 46 00:02:36,160 --> 00:02:40,760 To kończy deklaracji funkcji lub prototypu. 47 00:02:40,760 --> 00:02:43,320 Nawiasy klamrowe otaczające resztę funkcji 48 00:02:43,320 --> 00:02:45,870 oznaczają początek i koniec ciała funkcji, 49 00:02:45,870 --> 00:02:48,320 Definicja samej funkcji. 50 00:02:48,320 --> 00:02:50,300 Kwadrat jest dość prosta funkcja. 51 00:02:50,300 --> 00:02:54,100 To tylko ma 1 linię, ponieważ wszystko, co musimy zrobić, to pomnożyć x przez siebie. 52 00:02:54,100 --> 00:02:59,250 Powrót słowo określa wartość wyjściową i powoduje zakończenie funkcji. 53 00:02:59,250 --> 00:03:03,430 Aby korzystać z kwadratu, musimy dostarczyć odpowiednich wejść 54 00:03:03,430 --> 00:03:05,310 a następnie przechwycić wyjście. 55 00:03:05,310 --> 00:03:08,140 Tutaj można zobaczyć kilka sposobów na zrealizowanie tego. 56 00:03:08,140 --> 00:03:13,600 Możemy przejść w surową int, jak 6, lub możemy przekazać w zmiennej jak. 57 00:03:13,600 --> 00:03:15,700 Należy pamiętać, że za każdym razem, nazywamy kwadrat, 58 00:03:15,700 --> 00:03:18,330 możemy przejąć wyjście w zmiennej, a następnie je wydrukować. 59 00:03:18,330 --> 00:03:22,690 Jednakże, nie mamy do przechowywania wartości zwracanej w zmiennej, a następnie wydrukować. 60 00:03:22,690 --> 00:03:27,090 Moglibyśmy wysłać ją bezpośrednio do printf, jak my, gdy kwadrat 10, 61 00:03:27,090 --> 00:03:30,580 ale to nie znaczy, że nie mamy dostępu do wartości zwracanej placu 10 62 00:03:30,580 --> 00:03:32,230 gdzie indziej w kodzie. 63 00:03:32,230 --> 00:03:34,890 Spójrzmy na inny prosty przykład. 64 00:03:34,890 --> 00:03:38,750 >> Tym razem, będziemy sumować 2 pływaków ze sobą tak, że możemy zobaczyć, co wygląda jak funkcja 65 00:03:38,750 --> 00:03:41,220 kiedy ma 2 wejścia, a nie tylko 1. 66 00:03:41,220 --> 00:03:43,950 Jak widać, to nie jest o wiele inny. 67 00:03:43,950 --> 00:03:47,330 Wszystko co robimy, to dodać w 2 argumentu typu float o nazwie b, 68 00:03:47,330 --> 00:03:51,820 na liście argumentów za pomocą przecinka, aby oddzielić ją od pierwszego argumentu, float. 69 00:03:51,820 --> 00:03:55,550 Więc nasz plac i funkcje suma są dość łatwe do zrozumienia 70 00:03:55,550 --> 00:03:58,930 ponieważ są one równoważne z funkcji, które widziałem wcześniej w klasie matematycznej. 71 00:03:58,930 --> 00:04:01,610 Teraz spójrzmy na funkcję, która jest nieco inna. 72 00:04:01,610 --> 00:04:04,620 Zamiast zwracać wartość, zmienia stan. 73 00:04:04,620 --> 00:04:07,260 Jest to znane jako działania niepożądanego. 74 00:04:07,260 --> 00:04:10,750 W tym programie, funkcja printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 ma typ zwrotny, że nie widział, nieważne. 76 00:04:13,410 --> 00:04:16,730 >> Pustka jest mawiał, że funkcja nie zwraca nic. 77 00:04:16,730 --> 00:04:19,410 Brak zmienne typu void, 78 00:04:19,410 --> 00:04:22,760 więc jeśli próbujesz wrócić coś z funkcji takich jak printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 kompilator będzie krzyczeć na ciebie. 80 00:04:24,290 --> 00:04:29,390 Wewnątrz printf_fudd_style, widzimy, że gdy funkcja nadal wykonuje zadania, 81 00:04:29,390 --> 00:04:31,890 mianowicie, przełączanie wszystkie RS do WS, 82 00:04:31,890 --> 00:04:36,380 punktem funkcji jest zmodyfikować ciąg, a następnie wydrukować go na ekranie, 83 00:04:36,380 --> 00:04:39,400 zmiany stanu programu, a nie z powrotem w wyniku. 84 00:04:39,400 --> 00:04:43,700 Korzystanie z tej funkcji jest bardzo podobne do korzystania z naszego placu i funkcji SUM, 85 00:04:43,700 --> 00:04:46,950 chyba nie zapisać wynik w zmiennej lub przekazać go do innej funkcji 86 00:04:46,950 --> 00:04:49,520 ponieważ brak jest wynikiem mówić. 87 00:04:49,520 --> 00:04:53,180 Kiedy więc skompilować i uruchomić nasz program Elmer Fudd, 88 00:04:53,180 --> 00:04:56,970 widać, że "You łotrowski królik!" zostaje przekształcone prawo 89 00:04:56,970 --> 00:04:58,730 "You wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Wreszcie, nie ma 1 więcej funkcji warte dyskusji 91 00:05:02,250 --> 00:05:06,810 skoro już go używać w każdym programie C kiedykolwiek napisane, main. 92 00:05:06,810 --> 00:05:09,450 Główna funkcja jest jak każdy inny. 93 00:05:09,450 --> 00:05:13,580 Jest tam zwracany typ, nazwę, listę argumentów, i ciało. 94 00:05:13,580 --> 00:05:16,110 Typ zwracany głównej jest zawsze int, 95 00:05:16,110 --> 00:05:19,120 i to int jest stosowany dla stanu, gdy kończy programu. 96 00:05:19,120 --> 00:05:23,360 >> Czy to zakończą się pomyślnie, czy to się skończyło wcześnie z powodu błędu? 97 00:05:23,360 --> 00:05:26,390 Powrotu do zera oznacza pomyślne bieg, 98 00:05:26,390 --> 00:05:29,510 i powrót jakąkolwiek wartość niezerową wskazuje błąd. 99 00:05:29,510 --> 00:05:31,950 W zależności od rodzaju programu podczas pisania, 100 00:05:31,950 --> 00:05:34,960 powrocie różne kody dla różnych błędów może być pomocna 101 00:05:34,960 --> 00:05:37,210 dla ludzi, którzy korzystają z programu później. 102 00:05:37,210 --> 00:05:40,220 Mains argumenty są nieco bardziej skomplikowane. 103 00:05:40,220 --> 00:05:42,150 >> Lista argumentów może być albo pusta, 104 00:05:42,150 --> 00:05:45,330 które wskazują, pisząc pustkę w nawiasach, 105 00:05:45,330 --> 00:05:50,220 lub lista może mieć 2 argumenty: int i tablica char * s. 106 00:05:50,220 --> 00:05:52,820 Są one stosowane, gdy Twój program zamierza wykorzystać 107 00:05:52,820 --> 00:05:56,490 Argumenty przekazywane w linii poleceń, kiedy program jest wywołany. 108 00:05:56,490 --> 00:05:59,690 Int argument jest zazwyczaj nazywany argc, 109 00:05:59,690 --> 00:06:03,300 i jest równa długości tablicy char *, znany jako argv. 110 00:06:03,300 --> 00:06:07,080 Argv zawiera argumenty wiersza poleceń przekazane do programu. 111 00:06:07,080 --> 00:06:11,440 W innym słowem, będziemy rozmawiać o tym, jak korzystać z tych zmiennych, bardziej szczegółowo. 112 00:06:11,440 --> 00:06:15,220 Teraz, możesz czuć się swobodnie zadeklarować głównego albo sposób. 113 00:06:15,220 --> 00:06:19,410 I zwykle wybrać do napisania go krótszą drogę, bez żadnych argumentów, jeśli to możliwe. 114 00:06:19,410 --> 00:06:22,230 >> Teraz, gdy wiesz, jak napisać funkcje, 115 00:06:22,230 --> 00:06:25,030 jesteś na dobrej drodze do rozwoju większych i bardziej złożonych programów. 116 00:06:25,030 --> 00:06:29,740 Nazywam się Nate Hardison. To CS50.