DOUG LLOYD: Wszystko w porządku. Więc teraz, w tej akcji niech bardzo obszerny temat, funkcje. Do tej pory w toku, wszystko programy, które byliśmy pisanie zostały napisane wewnątrz główne. Są one dość proste programy. Nie trzeba mieć wszystko gałęzie i rzeczy dzieje. Możemy po prostu zmieścić wszystko wewnątrz głównej i nie dostaje strasznie przytłaczające. Ale jak oczywiście długa jak zacząć rozwijać programy niezależnie, są one prawdopodobnie będzie zacząć, aby uzyskać o wiele więcej niż 10 lub 15 linii. Możesz dostać setki lub tysiące lub dziesiątki tysięcy linii kodu. I to naprawdę nie jest że szalona myśl. Jako takie, nie jest dobrym pomysłem aby wszystko wewnątrz z głównym. To może być trochę trudne do znalezienia czego szukasz, jeśli to zrobisz. Na szczęście, choć C, i prawie każdy inny język programowania, który Może pracować, pozwala nam napisać funkcje. A ja po prostu się wziąć szybki bok tutaj wspomnieć, że funkcje są jeden obszar informatyki. A zobaczysz dużo więcej z nich w różne punkty w trakcie trwania i jeśli dalej. Tam, gdzie jest dużo synonimy dla tego samego słowa. Tak nazywamy funkcje. Ale może również je usłyszeć dalej procedur lub metod, szczególnie, jeśli kiedykolwiek zrobić żadnego programowania obiektowego before-- i nie martw się jeśli nie, nie duża deal-- ale w Języki audytu zorientowanych są często nazywane metody. Czasami nazywa się je podprogramów. Ale tak naprawdę odnoszą do tej samej podstawowej idei. Zobaczmy, co to pomysł jest. Co to jest funkcja? Cóż funkcją jest naprawdę nic więcej niż czarnej skrzynki. Czarna skrzynka, która posiada zestaw zera lub większej liczby wejść i jedno wyjście. Tak na przykład, może być funkcją. Jest to funkcja o nazwie func. I trwa trzy wejścia a, b oraz c. A w środku tej czarnej skrzynki, mamy nie wiem dokładnie, co robi, ale przetwarza wejść w pewien sposób, a następnie daje pojedyncze wyjście, w tym przypadku, z. Teraz, aby to trochę mniej abstrakcyjny, mamy Można powiedzieć, że być może posiada funkcję o nazwie dodać, że ma trzy wejścia A, B, i c i przetwarza dane wyjściowe w jakiś sposób wewnątrz czarnej skrzynki do Produkujemy pojedyncze wyjście. Tak więc w tym przypadku, jeżeli dodaj trwa 3, 6 i 7. Gdzieś wewnątrz dodać funkcję, że będzie spodziewamy się, że być sumowane w celu wytworzenia wyjścia, który jest 3 oraz 6 oraz 7 lub 16. Podobnie, masz funkcję o nazwie mult, że ma dwa wejścia, A i B, przetwarza je w inny sposób tak że wyjście funkcji Jest to produkt z dwóch wejść. Dwa wejścia pomnożone razem. 4 i 5, są przekazywane do mult, coś się stanie, wyjście oczekujemy 20. Dlaczego nazywamy to czarna skrzynka? Cóż, jeśli nie są pisanie działa się, które zrobiliśmy trochę tak daleko CS50. Widzieliśmy druku f, na przykład, które Jest to funkcja, która nie pisaliśmy sami, ale używam cały czas. Jeśli nie piszemy funkcje siebie, naprawdę nie trzeba wiedzieć, jak to jest faktycznie realizowane pod maską. Tak na przykład czarna skrzynka I po prostu pokazałem mnożenia, Mult a, b może być defined-- i to jest po prostu niektóre pseudocode-- może być zdefiniowane jako wyjście a razy b. To ma sens, prawda. Jeśli mamy funkcję o nazwie mult, że ma dwa wejścia. Oczekujemy, że wyjście będzie być dwa wejścia pomnożone razem, a razy b. Mult, ale może być również realizowane w ten sposób, mamy zmienną licznika do przygotuj się wewnątrz mult 0. A potem powtórzyć ten proces b czasy dodać do licznika. Na przykład, jeśli pomnożyć 3a przez 5b, moglibyśmy powiedzieć, ustawić licznik na 0, powtórzyć pięć razy, dodać 3 do licznika. Więc zaczynamy od 0, a następnie robimy to pięć razy 3, 6, 9, 12, 15. To jest ten sam wynik. My nadal się 3 razy 5 tylko realizacja jest inna. To, co mamy na myśli, kiedy mówimy czarną skrzynkę. To po prostu oznacza, że ​​nie obchodzi jak to jest realizowane pod maską pod warunkiem, że wyjściowy oczekujemy. W rzeczywistości, jest to część umowy wykorzystywania funkcji, w szczególności Funkcje, które inni piszą. Zachowanie zawsze będzie być typowe, nieprzewidywalny w oparciu o nazwę funkcji. A to dlatego, że to naprawdę Pisząc ważne funkcje lub gdy inni ludzie piszą Funkcje, które można użyć, że te funkcje mają jasne, dość oczywiste nazwy, i są dobrze udokumentowane. Co jest z pewnością w przypadku dla funkcji, takich jak drukarki f. Dlaczego więc używać funkcji? Cóż, jak powiedziałem wcześniej, jeśli piszemy wszystkie nasze kodu wewnątrz głównych rzeczy Można się naprawdę uciążliwe i bardzo skomplikowane. Funkcje pozwalają nam możliwość zorganizować rzeczy i zerwać bardzo skomplikowany problem w dużo łatwiejsze w zarządzaniu części sub. Funkcje pozwalają nam także uproszczenie procesu kodowania. Jest to o wiele łatwiejsze do debugowania 10 Funkcja linii w porównaniu z 100 linii Funkcja lub funkcją 1000 linii. Jeśli mamy tylko do debugowania małe kawałki na raz, lub napisać małe kawałki w momencie, to sprawia, że ​​doświadczenie w programowaniu dużo lepiej. Zaufaj mi na jednym. Wreszcie, jeśli piszemy funkcji mamy można ponownie wykorzystać te różne części. Funkcje mogą być poddane recyklingowi. Można je stosować w jeden program lub inny. Masz już napisane funkcja, wszystko co musisz zrobić, to powiedzieć, że program, gdzie znaleźć tę funkcję. Byliśmy recyklingu i za pomocą drukowania f od ponad 40 lat. Ale to było tylko napisane jeden raz. Całkiem przydatne, prawda. W porządku. Więc funkcje są świetne. Wiemy to. Teraz zacznijmy je pisać. Zacznijmy się je do naszych programów. Aby to zrobić, pierwszy co możemy zrobić, to zadeklarować funkcję. Kiedy deklarujesz funkcję co masz w zasadzie robi mówi kompilatorowi, hej, tak wiesz, Mam zamiar pisać funkcja później i oto, co to będzie wyglądać. Powodem tego jest to, ponieważ kompilatory mogą zrobić jakieś dziwne rzeczy, jeśli widzą zbiór symboli że nie są znane. Więc po prostu dać kompilatora A kieruje, Tworzę funkcji i to będzie to zrobić. Deklaracje funkcji Generalnie, jeśli jesteś organizowania kodu w taki sposób, inni będą mogli zrozumieć i wykorzystać, generalnie chcą umieścić wszystkie swoich deklaracjach funkcji na samym początku kodu, tuż przed rozpoczęciem pisania Głównym nawet. I wygodnie, nie bardzo standardowy formularz że każda deklaracja funkcji następuje. Wszyscy prawie wyglądać. Istnieją trzy części do funkcji oświadczenie, rodzaj powrotu, nazwa, i lista jej argumentów. Teraz zwracany typ, jaki rodzaj Zmienna wyjście funkcja. Tak na przykład, jeśli myślimy z powrotem minutę temu do pomnożenia dwóch Funkcja numery, czego się spodziewać, jeśli pomnożyć liczbę całkowitą przez liczbę całkowitą wyjście będzie Prawdopodobnie liczbą całkowitą rację. Pomnożone dwie liczby całkowite razem, masz całkowitą. Więc typu zwracanej, że Funkcja będzie int. Nazwa jest to, co chcesz aby połączyć się z funkcji. To jest chyba najmniej istotne część deklaracji funkcji, pod względem funkcjonalności. Ale w rzeczywistości prawdopodobnie jednym z najważniejszych części deklaracji funkcji w kategoriach wiedząc, co funkcja rzeczywiście robi. Jeśli nazwać funkcję f lub g lub h lub tajemnica czy coś takiego, pewnie dostanie trochę potknął się stara Pamiętasz, co zrobić, aby te funkcje. Dlatego tak ważne jest, aby dać znaczące nazwy funkcji. Wreszcie, lista jej argumentów lista oddzielonych przecinkami wszystkich wejść do swojej funkcji, z których każdy ma rodzaj i nazwę. Więc nie tylko masz do określić, jaki typ zmiennej wyjście funkcji spowoduje, chcemy także, aby określić jaki rodzaj i typy zmiennych w Funkcja będzie przyjmując jako wejścia. Więc zróbmy tu przykład. Miejmy tylko spojrzeć w bardziej konkretny jeden. Więc oto przykład funkcji Deklaracja dla funkcji, które by dodać dwie liczby całkowite razem. Sumy dwóch liczb całkowitych ma być liczbą całkowitą, a także, jak to tylko omówione. I tak zwracany typ, tutaj na zielono, byłoby int. To po prostu mówi nam, że dodanie dwóch ints ma na końcu dnia, wyjście, albo pluć go z powrotem się do nas, liczbą całkowitą. Biorąc pod uwagę to, co ta funkcja robi my chce dać mu nazwę. Dodaj dwa ints wydaje właściwe, biorąc pod uwagę Bierzemy dwie liczby całkowite, jak wejść i mam nadzieję, że ich pomnażania. To może być trochę kłopotliwe Nazwa i szczerze mówiąc ta funkcja Prawdopodobnie nie ma potrzeby ponieważ mamy dodawanie Operator, jeśli pamiętam z naszej omówienie operatorów wcześniej. Ale powiedzmy, że dla dobra Argument, że funkcja ta jest przydatna i tak będziemy nazywać go dodać dwa ints. Wreszcie, funkcja ta ma dwa wejścia. Z których każdy jest liczbą całkowitą. Więc mamy ten przecinek oddzielone lista wejść. Teraz na ogół chcą nadanie nazwy każdego z nich tak, że mogą być stosowane w funkcji. Nazwy nie są strasznie ważne. W tym przypadku, nie koniecznie ma żadnego znaczenia z nimi związane. Tak więc możemy po prostu zadzwonić do nich a i b. To jest całkowicie w porządku. Jeżeli jednak znajdziesz się w sytuacji, których nazwy zmiennych w rzeczywistości może być ważne, możesz do nich zadzwonić coś innego niż aib dać im coś więcej symboliczny sens. Ale w tym przypadku naprawdę nie wiedzieć coś jeszcze o funkcji. Chcemy tylko, aby dodać dwie liczby całkowite. Więc po prostu zadzwonić te liczby całkowite a i b. To jeden z przykładów. Dlaczego nie wziąć drugi myśleć o tym jednym, jak można napisać funkcję Deklaracja dla funkcji, które mnoży dwie liczby zmiennoprzecinkowe? Czy pamiętasz, co Liczba zmiennoprzecinkowa jest? Co by ta funkcja Deklaracja wygląda? I rzeczywiście polecam zatrzymać wideo tutaj i wziąć, ile czasu trzeba. Pomyśl o tym, co to deklaracja funkcji będzie? Co typ zwracany będzie? Co taką nazwę będzie? Co by wejść być? Więc dlaczego nie można zatrzymać wideo tutaj i pisać-deklarację funkcji dla funkcji, które pomnożyć dwóch liczb zmiennoprzecinkowych razem. Mam nadzieję, że zatrzymał się film. Warto więc spojrzeć na przykład jednej z możliwych deklaracji. Float mult dwa reals unosić x, float y. Produkt dwóch liczb zmiennoprzecinkowych, które pamiętam to jak reprezentacji liczb rzeczywistych lub numery z wartości dziesiętnych w C, będzie liczba zmiennoprzecinkowa. Gdy pomnożyć dziesiętne przez przecinku, pewnie dostanie po przecinku. Chcesz, aby nadać mu odpowiednią nazwę. Pomnożyć dwie Real wydaje się dobrze. Ale można to nazwać mult dwa pływaki lub mult pływaki. Coś w tym stylu, tak długo, jak to dał jakiś rzeczywisty sens tego, co to czarna skrzynka zamierza zrobić. I znowu, w tym przypadku, nie robimy wydają się mieć jakiekolwiek znaczenie dołączone z nazwiskami zmienne jesteśmy przechodzące w, więc po prostu zadzwonić im x i y. Teraz, jeśli nazywają je coś indziej, to jest całkowicie w porządku. W rzeczywistości, jeśli nie deklaracja ta, zamiast za pomocą podwójnych zamiast od pływaków, jeśli przypomnieć że podwaja to inna sposób dokładniej określenie liczby rzeczywiste lub pływających zmiennych punkt. To jest zupełnie w porządku. Albo jeden z tych będzie dobrze. W rzeczywistości, istnieje kilka Różne kombinacje sposobów zadeklarować tę funkcję. Ale to są dwie całkiem dobre. Mamy oświadczył funkcję, to świetnie. Powiedzieliśmy kompilator, co to jest, co będziemy robić. Teraz właściwie napisać taką funkcję. Dajmy jej definicję, tak że we wnętrzu czarnej skrzynki przewidywalne zachowanie się dzieje. W rzeczywistości, jesteśmy pomnożenie dwóch rzeczywistych numery razem, lub numery dodawanie razem, lub robi cokolwiek to jest które poprosiliśmy naszą funkcję do zrobienia. Faktycznie więc, spróbujmy zdefiniować pomnożyć dwa Reale, które po prostu mówił o sekundę temu. Teraz początek definicja funkcji wygląda prawie dokładnie tak samo w deklaracji funkcji. Mam oba tutaj. Na górze jest deklaracja funkcji, Rodzaj, nazwa, oddzielonych przecinkami argumentem lista, średnik. Średnik oznacza, że że jest to deklaracja funkcji. Początek funkcja Definicja wygląda niemal dokładnie ten sam typ, nazwa, oddzielone przecinkiem Lista argumentów, nie średnik, otworzyć nawias klamrowy. Otwarty nawias klamrowy, tak jak robiliśmy z głównym, Oznacza to, że teraz jesteśmy zaczynają definiować co dzieje się wewnątrz czarnej skrzynki, która zdecydowaliśmy się zadzwonić Mult dwa Reale. Oto jeden sposób na jego realizację. Moglibyśmy powiedzieć, możemy zadeklarować nowy zmienna typu float o nazwie produktu i przypisać tej zmiennej do wartości x razy y. A następnie powrót produkt. Co oznacza zwrot na myśli. Dobrze jest droga powrotna wskazać, że to, jak przekazujemy wyjście wycofać. Tak więc powrót co jest taka sama jak Ten sygnał wyjściowy z czarnej skrzynki. Tak, to w jaki sposób to zrobić. Oto kolejny sposób na jego realizację. Moglibyśmy wrócić x razy y. x jest pływaka. y jest pływak. Więc x razy y jest także pływak. Nie trzeba nawet tworzenie innej zmiennej. Więc to jest inny sposób realizować dokładnie tę samą czarną skrzynkę. Teraz poświęć chwilę, wstrzymać wideo i spróbować zdefiniować dodać dwa ints, która jest inna funkcja to mówił o chwilę temu. Znowu tutaj, mam umieścić funkcję oświadczenie, i tak średnik, oraz otwarty nawias klamrowy i zamknięty kręcone nawiasów, aby wskazać, gdzie będziemy wypełniać w treści dodać dwa ints, tak, że możemy zdefiniować konkretny Zachowanie wewnątrz czarnej skrzynki. Więc zatrzymać wideo. I wziąć tyle czasu, ile trzeba spróbować zdefiniować implementacja dodać dwa ints, takie że gdy funkcja generuje wartości tak jest, w rzeczywistości, powrót suma z dwóch wejść. Tak jak w poprzednim przykładzie, istnieje kilka różnych sposobów że można wdrożyć dodać dwa ints. Oto jeden. Tu w orange mam po prostu miał kilka comments-- Właśnie dodałem niektóre komentarze do wskazania co dzieje się na każdej linii kodu. Więc zadeklarować zmienną zwana suma typu int. Mówię suma równa się PLUS B. To miejsce, gdzie jesteśmy rzeczywiście robi praca dodawania A i B razem. I wrócę sumę. I to ma sens, ponieważ Suma kontrolna jest zmienna typu int. A co to typ danych, które to Funkcja mówi mi, to będzie wyjście? Int. Więc wracam sumę, która jest zmienną całkowitą. I to ma sens, biorąc pod uwagę to, co mamy zgłoszone i zdefiniowane naszą funkcję do zrobienia. Teraz możesz również zdefiniować Funkcja w ten sposób, int suma równa plus B-- pominąć, że Pierwszy step-- a następnie powrócić sumę. Teraz możesz mieć także realizowany jest w ten sposób, co bardzo nie polecam. To jest zły styl dla jednego sprawa i naprawdę zły projekt, ale to robi, w rzeczywistości, w pracy. Jeśli wziąć ten kod, który jest int dodaj złe żmija dot c, i używać go. To rzeczywiście nie dodaje dwie liczby całkowite razem. Jest to bardzo słaba realizacja w tym szczególnym zachowaniem. Ale to nie działa. To właśnie tutaj, w celu zilustrowania punkt, że tak naprawdę nie obchodzi, co dzieje się wewnątrz czarna skrzynka, tak długo, jak to ma wyjście, które spodziewamy. To jest źle zaprojektowana czarna skrzynka. Ale pod koniec dnia, to robi Wyjście jeszcze suma a plus b. W porządku. Więc mamy zadeklarowane funkcje. I mamy funkcję zdefiniowane. Więc to jest naprawdę dobry. Teraz zacznijmy używać funkcji że mamy zadeklarowane i mamy zdefiniowane. Aby połączyć się z function-- to faktycznie dość easy-- wszystko, co musisz zrobić, jest przekazać ją odpowiednie argumenty, Argumenty typu danych że oczekuje, i a następnie przypisać do zwrotu Wartość tej funkcji i this-- usprawiedliwienia me-- przypisanie wartości zwracanej tej funkcji aby coś odpowiedniego typu. Warto więc spojrzeć na to w praktyce, w pliku zwany dodatek 1 kropka c, które Mam w moim CS50 IDE. Więc tutaj jest żmija 1 punkt c. Na początku widzisz mam moje obejmuje, funt to, Standard IO i CS50 dot h. A potem mam deklarację funkcji. To jest, gdzie jestem mówi kompilator jestem będzie pisanie Funkcja o nazwie dodać dwa ints. To będzie wydawać typ całkowity zmienny. To właśnie ta część jest tutaj. A potem mam dwa wejścia do niej i b, z których każdy jest liczbą całkowitą. Wewnątrz głównej, pytam użytkownika o Wejście mówiąc, dał mi całkowitą. A oni się monit, aby zapomnieć int, która jest funkcją znajduje się w bibliotece CS50. I że zostanie zapisane w x, zmienna całkowita. Następnie skłonić ich do innej liczby całkowitej. Otrzymujemy kolejną liczbę całkowitą i zapisać, że w r. A potem, tu, na linii 28, jest gdzie robimy nasz wywołanie funkcji. Mówimy, int Z równych dodać 2 ints x przecinek y. Czy widzisz, dlaczego to ma sens? x jest zmienną typu całkowitego, y jest zmienną typu liczba całkowita. Więc to jest dobre. To ma sens z co nasi funkcji Deklaracja na linii 17 wygląda. Lista wejście oddzielone przecinkami spodziewa się dwie liczby całkowite, a i b. W tym przypadku, możemy wywołać im, co chcemy. To właśnie spodziewa się dwie liczby całkowite. A x oznacza liczbę całkowitą, a y jest liczbą całkowitą. To działa. I wiemy, że funkcja będzie do wyjścia an liczbami całkowitymi, jak również. I tak jesteśmy przechowywania Wyjście funkcji dodać dwa ints, w typu całkowitego Zmienna, której dzwonisz z. I wtedy możemy powiedzieć, suma procent i oraz procent i jest procent i. x, y i z, odpowiednio, wypełnienie tych procent i jest. Co stanowi definicję dodać dwa int wygląda? To bardzo proste. To jeden z tych, które mamy Właśnie widziałem przed chwilą, int suma równa sumę oraz b powrotną. czy to działa? Miejmy zapisać plik. A potem tutaj na moim terminalu Mam zamiar zrobić sumator 1, i wyczyścić ekran. Mam zamiar powiększyć, bo wiem, jest to trochę trudne do zauważenia. Więc musimy skompilować ten program jako żmija 1. Tak więc możemy zrobić dot slash żmija 1. Daj mi liczbę całkowitą, 10. Daj mi jeszcze jedną liczbę całkowitą, 20. Suma 10 i 20 30. Tak zrobiliśmy pomyślnego wywołania funkcji. Można ponownie uruchomić funkcję, negatywne 10, 17 suma ujemnego 10 i 17 wynosi 7. Ta funkcja działa. Ma zachowanie że oczekujemy go. I tak zrobiliśmy sukces Funkcja, definicja, deklaracja, i skuteczne wywołanie funkcji. Para różne punkty o funkcjach zanim zakończyć ten rozdział. Przypomnijmy, od naszego omówienie typów danych, Wcześniej, który funkcjonuje czasami może podjąć żadnych nakładów. Jeśli tak jest, to zadeklarować funkcję jako posiadające listę nieważne argumentów. Pamiętasz, co się Najczęstszą funkcją widzieliśmy do tej pory, że trwa lista argumentów nieważne jest? Jego głównym. Przypomnijmy także, że funkcję czasem w rzeczywistości nie mają wyjścia. W tym przypadku, deklarujemy funkcję jako posiadające typ void powrotną. Miejmy zakończyć ten rozdział przez rozwiązywanie problemu praktyk. Więc tutaj jest problem rozplanowane. Chcę, aby napisać funkcję nazywa ważna trójkąt. Co powinien zrobić tej funkcji jest wykonanie trzech liczb rzeczywistych które reprezentują długości trzech boki trójkąta jako jego parametrów, lub jego argumenty, lub jej inputs-- inny zestaw synonimów które mogą wystąpić. Funkcja ta powinna albo wyjście prawda lub fałsz w zależności od tego, czy te trzy długościach są zdolne do tworzenia trójkąta. Czy pamiętasz, typ danych, które kiedyś wskazują, prawda czy fałsz? Teraz jak można zaimplementować to? Dobrze wiedzieć, że są parą zasad dotyczących trójkąty które są rzeczywiście przydatne wiedzieć. Trójkąt może mieć tylko Boki z dodatnim długości. To ma sens. Prawdopodobnie mówiąc, duh. Inną rzeczą, aby pamiętać, jednak to, że suma od długości dowolnego dwa boki trójkąta musi być większa niż Długość trzeciej strony. To rzeczywiście prawda. Nie można mieć trójkąt stronach 1, 2 i 4, na przykład dlatego, że 1 plus 2 nie jest większa niż 4. To są zasady, które ustalenie, czy trzy Wejścia mogą niewykluczone tworzą trójkąt. Więc potrwać kilka minut i oświadczam, a następnie zdefiniować funkcja ta nazywa się ważne trójkąt, tak, że rzeczywiście ma zachowanie określonego tutaj. Będzie wyjście prawdziwe, jeśli tych trzech stron mogą zawierającej trójkąt false w przeciwnym wypadku Gotowy, aby zobaczyć, jak to zrobiłeś? Oto jedna z implementacji od ważne trójkąt. To nie jest jedyny. Pozdrawiam może się nieznacznie różnić. Ale ten ma w rzeczywistości mieć zachowanie, które spodziewamy. Deklarujemy naszą funkcję u bardzo góry, bool ważny trójkąt unosić x pływaka r pływaka z. Więc jeszcze raz, ta funkcja trwa trzy liczby rzeczywiste jako jego argumenty, pływające Zmienne wartości punktowej, i wyprowadza prawda lub fałsz Wartość, która jest logiczna, przypomnieć. Więc dlatego typ zwracany jest bool. Następnie definiujemy funkcję. Pierwszą rzeczą, jaką możemy zrobić, to upewnij się, że wszystkie boki są dodatnie. Jeśli x jest mniejsza niż lub równa 0, lub y jest równy 0, lub jeśli Z jest mniejsze niż lub równe 0 ° C, które nie mogą być ewentualnie trójkąta. Oni nie mają pozytywne strony. I tak możemy wrócić fałszywe w tej sytuacji. Następnie, upewnij się, że każda para wejść jest większe niż trzeci. Więc jeśli x oraz y jest mniejsza niż lub równy z, lub jeśli x oraz z mniej lub równa y, lub y oraz z wynosi mniej niż lub równa x, która również nie może być ważny trójkąt. Więc wracamy znów fałszywe. Zakładając, że minęliśmy obu kontroli choć, to możemy wrócić prawda. Bo tych trzech stron mogą returning-- tworzyć prawidłową trójkąta. I to wszystko. Masz już zgłoszone i zdefiniowane. A być może uda się teraz obsłudze i wywołać tę funkcję. Dobra robota. Jestem Doug Lloyd. To CS50.