[Powered by Google Translate] ZAMYLA Chandler: Dobra, wszyscy. Witamy Walkthrough 1. Ta instrukcja będzie na PSET 1, który jest C. Mam nadzieję, że wszyscy bawili się ze swoimi projektami podstaw. Więc teraz, w tej instrukcji, mamy faktycznie będzie stanie dostać się do C, dostać się do pisania niektóre kodu maszynowego. Więc jeśli nie były w Walkthrough 0, to te solucje naprawdę - jesteśmy zamiar przejść przez set problem, porozmawiać przez kilka wspólnych wskazówek i technik że można użyć. Będziemy łamać przypisanie się do opanowania gryzie, tak że Chłopaki można zacząć i mam nadzieję, że zrozumieć, jak to zrobić. Okay. Więc pset 1. Psets w tym roku będzie mieć strukturę, gdzie pierwsze - tam będzie część pytań, seria pytania, które naprawdę również pomogą Ci zacząć z pset, pomaga ćwiczyć kilka technik, które potrzebujesz. I tak na te pytania, nie będę się do pokrycia w solucja ponieważ w sekcji, nauka przypisany facet faktycznie się przejść przez te pytania z tobą. Na końcu sekcji, musisz odejść z Odpowiedzi na te pytania, ale także pewność, że można zaimplementować niektóre z cech, które będą potrzebne w drugim przypadku części zbior. Pset 1 stanowi Mario. I to jest fajny program, gdzie w zasadzie mamy napisać i wydrukować pół piramidy w typowej sceny Mario. A potem druga część Pset nazywa Greedy. I tak w istocie Greedy mamy działać jako chciwy kasjer, gdy ktoś daje nam kwotę że chcemy obliczyć minimalną ilość monet możemy powrócić do nich, aby jeszcze dać im tę kwotę. Dobrze. Więc każdy solucja będzie mieć przybornik. I znowu, nie może używać wszystkich narzędzi w tym przybornik lub mogą używać wszyscy. W każdym razie, to jest naprawdę dobrze wiedzieć, co jesteś wyposażony. Mamy więc CS50 urządzenia, które pokażę wam chłopaki i wprowadzenie do tego. Wtedy też w ogóle, dobry styl jest zdecydowanie jednym z naszych Najważniejsze narzędzia. Style zasadniczo odnosi się do sposobu odczytania jest kod? Gdy ktoś idzie i czyta kod, oni mają łatwy czas? Można je zrozumieć? Czy jest to elegancki? Potem będziemy rozmawiać o tym, jak uzyskać ważne dane wprowadzone przez użytkownika w telefonie Program ponieważ zarówno Mario i Greedy, musisz zwrócić się do użytkownika do wejścia i dać jakiś numer. Tak więc chcemy się upewnić, że numer jest prawidłowy. Potem pamiętam w Scratch, mieliśmy bloki takie jak powtarzanie, Powtarzaj, aż, lub poczekać, lub na zawsze. Więc idziemy do rodzaju tłumaczenia, że ​​do teraz i C spojrzeć na pętli, takich jak na, while i do-while. Wtedy też będziemy musimy również wyświetlanie wartości z powrotem na ekran, czy to w Mario lub chciwy. I tak będziemy rozmawiać o tym, jak drukować rzeczy z ciągów całkowitymi i pace. I w końcu, będziemy rozmawiać o Pseudokod, naprawdę ważne pojęcie, aby pamiętać w całym tym czasie. Co mi pomaga mi najbardziej z zestawami problemu jest myśleć i opisać to, co chcę zrobić, zanim myśleć o jakiejkolwiek C. Ale po prostu opisać działania. Więc pseudokod jest rodzaj pomiędzy angielskim i C, rodzaj Opisując procesy bez poprawnej składni, ale zapewnienie wystarczająco dobre struktury. I tak będę musiał kilka przykładów Pseudokod dla Ciebie również w niniejszej instrukcji. Okay. Więc co będziemy pracować z jest CS50 Appliance. Jest to w istocie maszyna wirtualna tego rodzaju działa Komputer wewnątrz własnego komputera. I nie ma to wiele korzyści. Jednym z nich jest, że to jest ustawione z wielu narzędzi, które będziesz potrzeba CS50. Jak dobrze, to znaczy, że wszyscy są na tym samym terenie, czy Mac lub PC lub innego systemu operacyjnego. Wszyscy możemy uruchomić maszynę wirtualną. I tak istnieją instrukcje w manual.cs50.net/appliance. A więc jeśli się do tego link i postępować zgodnie z instrukcjami, wtedy mam nadzieję będzie można zainstalować urządzenie. Więc po pierwsze, musisz zainstalować aplikację, rzeczywiste zastosowanie, aby móc uruchomić maszynę wirtualną. A następnie pobrać do urządzenia. Ale znowu, istnieją instrukcje na manual.cs50.net/appliance. Więc mam już pobrane moje urządzenie, mam zainstalowane to w Fusion VMware. I tak kiedyś ściągnąłem urządzenia, poszedłem do pliku. Poszłam do Open, a następnie znaleźć gdzie składowane CS50 urządzenia. I tam, wpadłem tutaj. Ale mam go już tutaj, więc weźmy się bliżej. Dobrze. Więc teraz jesteśmy wewnątrz CS50 Appliance. Zrobiłem go na pełnym ekranie. Możesz to zrobić, jeśli chcesz lub po prostu go jako mniejsze okno na pulpicie. Tutaj mamy tylko prosty pulpit domu i śmieci. Ale jeśli przejdź do Menu, a następnie do programowania, a następnie zobaczyć , że mamy coś, co nazywa Terminal. I tak w tym miejscu możemy poruszać się po naszym komputerze. Możemy napisać kod. Ale w rzeczywistości, będziemy używać programu o nazwie gedit lub "g Edit ", który jest zależności. Więc będziemy używać, że jeden do pisania kodu. Więc masz te dwa narzędzia, które będziesz używać głównie aby napisać kod. Potem dodatkowo, to jest po prostu jak zwykły komputer. Mamy przeglądarkę. Wybraliśmy Google Chrome. Co zrobiłem to mam skonfigurować Dropbox zawierać wszystkie dokumentów. A więc to jest coś, co bardzo zachęca. Dropbox wykorzystuje chmurę synchronizacji, a jeśli tak - więc na przykład, coś przez przypadek - miejmy nadzieję, że nie - dzieje się z urządzeniem, a następnie wszystko będzie synchronizowane na chmurze. Dobrze. To są aplikacje, które będziesz używać w CS50 Appliance. Teraz, aby poruszać się w linii poleceń. Terminal może faktycznie działać jako swego rodzaju sposób, aby rzeczywiście wpisz komendy do - się, jeśli jesteś Mac Finder. Lub jeśli jesteś w Windows, uważam, że to jest "Poznaj Moje komputer "lub coś w tym stylu. Więc jeśli chcemy wrócić do urządzenia, otwórzmy się okno terminalu. Więc ma tego monitu, jharvard @ urządzenia. Miejmy tylko uczynić ten większy. Okay. Jeśli więc wpisać komendy ls, to zawiera listę wszystkich plików w naszym komputerze, w naszym katalogu. Katalogi są tak jak folderów. Używamy tych określeń zamiennie. W porządku, więc mamy na liście plików , które są w tym katalogu. Teraz, jeśli chcemy uzyskać dostęp, na przykład, nasz Dropbox, wtedy możemy zmieniać katalogów. Więc CD i Dropbox. Mamy ls ponownie, a następnie widzimy listę plików, które są w ten folder. Jest to analogiczne do mnie dzieje w moim domu, a następnie klikając Dropbox, a następnie widząc listę tutaj. Dobrze. Więc powiedzmy - kiedy macie zamiar dokonać PSET 1, zróbmy katalog nazywany pset1. Więc jesteśmy w Dropbox teraz, jak widać z tego, monitować tutaj. Więc zróbmy katalog. Więc mkdir, nazwijmy to pset1. I tak teraz, jeśli ls ponownie, wówczas zobaczyć, że pset1 pojawia. I tak, jeśli chcemy wejść do środka pset1, możemy wejść do środka że folder z cd poleceń. Dobrze. Więc jeszcze raz, zobaczymy, jeśli - powiedzieć, zróbmy to w inny sposób. Jest to analogiczne do po prostu mówiąc "Tworzenie New Folder, pset1. Ale jak znaleźć, będziesz interakcji z Terminal dużo. Więc czasami jest to dużo łatwiejsze, szybsze prostu porażka pracować w terminalu, aby robić te różne rzeczy. Okay. A potem te inne komendy. Jest rm do usunięcia pliku. Więc po prostu wpisać rm a następnie nazwa złożyć go usunąć. Pójdziemy do niektórych przykładów później. A potem mamy coś nazwie polecenia człowiek, który Pojawi się w instrukcji obsługi danego typu funkcji. Znowu będę wychowywać rzeczywisty przykład, że później. Tak więc kolejny bardzo ważne narzędzie, jak wspomniałem pokrótce wcześniej, jest styl. Więc zasadniczo, styl ma zrobić z czytelności. Czy ktoś będzie w stanie czytać, przestrzegać i zrozumieć swój kod? Jest to szczególnie ważne dla Ciebie, siebie, faktycznie. Jeśli zatrzymujesz się późno kodowania, a potem na ciebie wrócić i jesteś jak, co to zmienna oznacza? Powiedz, że pracujesz nad projektem grupy z kimś, a ty zarówno spojrzeć na kod nawzajem. To bardzo ważne, że nazywanie zmiennych poprawnie i sprawiają, że wyglądają ładnie, bo sprawia, że ​​cała różnica. Ale wtedy przede wszystkim, że jesteśmy w trakcie teraz. Więc dla interesu CS50 i specjalnie dla Państwa Stypendyści nauczania i równiarki, którzy będą patrząc na psets, proszę, proszę użyć właściwego stylu. A twoi koledzy nauczania będzie bardzo szczęśliwy. Więc znowu, styl obejmuje wcięć rzeczy poprawnie, szczególnie przy użyciu swoje szelki i wcięć tych. Nazywanie zmienne coś, co ma sens. W tej chwili zgodnie z konwencją, gdy masz kilka słów w nazwie zmiennej, a następnie połączyć je z podkreślenia, jak widać, że Przykład Nazwa tam. Wreszcie, coś o nazwie Magic Numbers. Zasadniczo, gdy czytasz poprzez kod i powiedzieć masz zmienna - powiedz, nie masz zmienną, ale po prostu powiedzieć w porządku do czasu, gdy i takie jest mniej niż 10. Wtedy twój równiarka będzie się dobrze, poczekaj, czego to 10 pochodzi? Więc tak naprawdę wyjaśnić sobie wiele spraw. Aby pomóc wyjaśnić siebie jest komentarzy. Komentarze są prawdopodobnie najważniejszą rzeczą do włączenia Twoje programy. I to pomaga nie tylko faktycznie wyjaśnić - to pomaga trochę wyjaśnić swoje rozumowanie jak idziesz wzdłuż. I tak, jeśli to zrobisz, ponownie, to będzie dużo łatwiejsze cofnąć się w kodzie i rodzaju rozumiem co masz tam robi. Ponownie, równiarki naprawdę jak komentarz. Więc dobrze i komentarz - coś w rodzaju darmowych punktów. A kto nie lubi darmowe punkty? Można również mieć kilka linii komentarz. I tak wliczone rodzaj szablonu tutaj. Zasadniczo, zazwyczaj są one wykorzystane na górze program do rodzaju wyjaśnić w ogóle to, co Twój zestaw Problem robi. Zawierać imię i nazwisko, datę, et cetera. I tak, jak powiedziałem w ten komentarz multi-line, manual.cs50.net/style_guide ma więcej wskazówek i przepisów o styl dla pętli, et cetera. Okay. Więc teraz, że mówiłem trochę o stylu, zobaczmy w działaniu. Dobrze. Więc tutaj, Tommy napisał nam uroczo straszne przykładem stylu w programie. Więc widać tutaj, w porządku. To jest właściwie wszystko w porządku. Widzisz wielowierszowego komentarz. Go uruchomić z ukośnikiem, a następnie dwie gwiazdki. Idziemy dalej, wyrównując gwiazdki wzdłuż linii i zakończyć go z gwiazdką i ukośnikiem. Dobrze. Więc to jest w porządku. To tutaj w porządku. On jest w tym jego bibliotek. Ale potem tu ma komentarzy obejmujących wiele wierszy. Istnieje wiele rzeczy, w tym złego. Komentarze zajmującego kilka linii, tutaj, że używa Składnia tylko pojedynczych komentarzach internetowych. On także spajanie wszystko w tym samym komentarzu. Dlatego chcemy, aby tego uniknąć. Następnie widać tutaj, że aparaty, na przykład, są na miejsce. Wcięcie jest źle. To naprawdę nie ma pokazać, gdzie coś definitywnie start i co innego się kończy. Wtedy także, widzimy, że ma określoną zmienną i = 5 tutaj. Ale wtedy to cztery przychodzi znikąd, i nie ma komentarz do naprawdę wyjaśnić, jeżeli pochodzi. Okay. Więc teraz spójrzmy na coś, co jest właściwie tylko same Kod chyba lepszym stylu. Więc jeszcze raz, to jest dobry przykład stylu, multi-line przykładem. I to tutaj jest całkiem czysta. Widzimy, że rozpoczyna if tutaj, wchodzi nowa line, ma otwarty nawias. Potem ma wcięcia. Trzyma to wcięcia - trzyma ten mundur wskazanie przez cały program i naprawdę widać, kiedy jeden blok kodu zaczyna, kiedy jeden blok kod kończy. To może wydawać się trochę nitpicky z naszej strony, aby rozpocząć z, ale zobaczymy jak piszesz kod. Jest to bardzo przydatne, aby móc oddzielić to. I znów, twój równiarki naprawdę podoba. A więc widzisz, zamiast wprowadzania numeru w Tam faktycznie nazwie zmiennej iteracji. I tak nie jesteśmy rzeczywiście patrząc na ten kod teraz ale tylko trochę widząc przykład dobry kontra zły styl. I tak, jeśli spojrzeć na nich obok siebie tu, byś Zdecydowanie preferuję czytać jeden po prawej stronie. Dobrze. Więc jedna rzecz zanim nurkować do prawdziwego mięsa pset jest jak skompilować i uruchomić kod. I tak w istocie, kiedy piszesz C, to nie jest faktycznie przetłumaczone na prawdziwego kodu maszyny, zer i Te, które maszyna może rzeczywiście odczytać i zinterpretować. Więc mamy coś - Clang jest kompilator, który używamy do C. Istnieje wiele kompilatorów. Ale w CS50, będziemy używać dzyń. I tak w zasadzie Clang tłumaczy z C na maszynie Kod dla Ciebie. Więc spójrzmy na przykład - nurkowanie do urządzenia tutaj. Dobrze. Więc teraz mamy w naszym katalogu domowym. Tak naprawdę nie są tam, gdzie każdy kod jest. Więc zmieńmy nasz katalog Dropbox/walkthrough1, gdzie Mam zapisany jakiś kod. Jeśli więc naciśnij ls, to zobaczymy, że mam Kilka plików w tutaj. Dobrze. Więc ja już napisałem hello.c, więc niech go skompilować a następnie sprawdzić, co robi. Tak więc podstawowa komenda kompilacji byłoby dzyń następnie hello.c, zasadniczo mówiąc okay, skompilować hello.c dla mnie. Klikam Enter, wydaje się, że już w porządku. Klikamy ls ponownie. Ten plik a.out obecnie widoczne. I tak a.out jest plik wykonywalny. Tak więc, aby go uruchomić, należy zrobić. / A.out. I tak widzimy, że ta hello.c Program najwyraźniej wypisuje powitalnych pięć razy. Dobrze. Ale powiedzieć, że nie chcemy korzystać z a.out nazw. Na przykład, chcemy uruchomić program, bo to witaj łatwiej zrozumieć. Więc powiedzmy hello.c dzyń, a następnie zasadniczo trzeba przechodzić w niektórych rzeczach zwanych flagi. Tak mówiąc w porządku, dobrze, że chcesz nazwać to coś innego. Możesz również przekazać w wielu różnych bander, co widzisz. Więc flaga dla nazwania czegoś programu, który chce to-o. Po-o, można wpisać nazwę programu. Nazwijmy go przywitać. Więc teraz widzimy, że rzeczywiście mają powitania plik wykonywalny. Tak więc możemy go uruchomić, i robi to samo, co wcześniej. Więc teraz, że mamy cześć, możemy również usunąć, na przykład nasz a.out. Więc rm do usuwania, a.out, terminal poprosi, zapytaj , aby potwierdzić, czy na pewno chcesz usunąć czy nie. Mówimy, y na tak. A tam idziemy. A.out ma. Dobrze. Ale czasami dostaje mylące pamiętam wszystko Flagi, które musimy włączyć i wpisać z brzękiem. I jak widzimy, kiedy używamy bardziej złożonych programów, dowiemy być w tym różnych bibliotek. A więc nasze polecenia do Clang dostaniesz dłuższe. Tak więc zawarte w CS50 Appliance jest polecenie make. Więc po prostu wpisać się przywitać. Ups. Mamy już ten plik wykonywalny. Więc pozwól mi po prostu usunąć to szybko. Teraz wpisz się przywitać. I widzisz w tym wierszu mówi tutaj, że zasadniczo się witam dotyczy wszystkich tych poleceń, które iść do niego na Ciebie. Tak więc zawarte w CS50 Appliance jest plik make. Tak po prostu, gdy masz nazwa.c pliku, a następnie wszystko co robisz jest powiedzieć, uczynić nazwę pliku. A potem będziesz mieć plik wykonywalny plik o tej nazwie. Tak? SPEAKER 1: Na moim komputerze, zamiast Clang mówi GCC. Jest to, że jak - ZAMYLA CHAN: Tak. Więc komputer może powiedzieć GCC w przeciwieństwie do Clang ponieważ GCC jest inny rodzaj kompilatora. Jeśli jesteś w CS50 Appliance choć, to należy za pomocą szczęk. Jeśli nie jest, to może przyjść do mnie porozmawiać później lub wysłać Omów na CS50 i możemy sortować, że obecnie. Dobrze. Więc teraz, że mamy rodzaj podstawowych narzędzi w dół, potem Można zanurzyć się Mario. Okay. Więc Mario jest program, w którym w istocie jesteśmy będzie że nasz własny rodzaj prymitywnej wersji Mario tło gry. Wiesz, Mario ma zwykle rury i drzewo i kilka bloków. A potem to rodzaj piramidy pół. Więc jesteśmy po prostu będzie się koncentrować na tej piramidy pół, czyniąc tak, że kod wyświetla skróty do rodzaju bloków w tym formacie. Więc co się stanie, to użytkownik będzie wejście pewne wysokość piramidy, a potem wydrukować, że obecnie takie, że w lewym dolnym rogu hash - więc na samym dole tutaj - że jeden będzie wyrównać z lewej dolnej części terminalu. Okay. Tak więc pierwszą rzeczą, którą trzeba - pierwszy mały mini problemem musimy się zmierzyć to, jak uzyskać dane wejściowe użytkownika. Musimy więc mieć do czynienia z tym, co użytkownik, a następnie wejść rodzaju rzeczy wyjściowych tam. Więc spójrzmy wyglądać plik o nazwie apples.c że napisałem , która zajmuje się wejść i wyjść. Okay. Więc w górę, podaję niektóre bibliotek że muszę. Naprawdę ważne tutaj jest stdio (standard I / O). , Która zajmuje standardowych wejść i wyjść, bo będziemy mieć do czynienia z wejść użytkowników. Dobrze. Więc zacznę główną funkcję. I wtedy zwrócić się do użytkownika w porządku, ile jabłek masz? Wtedy właśnie tutaj, co ta linia jest - Przypisać zmienna i do wartości getInt. Więc getInt to funkcja, która jest zawarta w stdio. I tak zasadniczo, że zajmie się tym za Ciebie. Poprosi użytkownika o int. Cokolwiek oni powrócić, który zostanie przypisany do zmiennej i. I tak to jest to tylko mały program, który zmniejsza wartość i przez 1, a następnie drukuje nową wartość. Zaletą gedit jest rzeczywiście, że jest mini prawy zacisk tutaj. Więc zamiast konieczności przełączania do przodu i do tyłu pomiędzy gedit i terminal, można rzeczywiście wystarczy uruchomić go z tego miejsca. Więc najpierw dostać się do odpowiedniego katalogu. Więc zmieńmy nasze katalogi do Dropbox/walkthrough1. Dobrze. Więc teraz zróbmy jabłka, kompiluje się za nami. I tak teraz niech uruchomić jabłka. Ile jabłek mamy? I powiedzieć, że mam 3. I to mówi "mwahaha będę jeść jeden z nich" i powie "Masz teraz 2 jabłka". Dobrze. Więc niech się temu ponownie. I powiedzmy, że mam 1 jabłko. Teraz mam 0 jabłka. Okay. Więc ten program wydaje się działać zgodnie z oczekiwaniami. Mamy wejście szereg, to spada do 1, a następnie drukuje go ponownie. Ale co, jeśli, na przykład, mam -1 jabłka? To nie całkiem sensu. Ale to jeszcze całkowite, więc program akceptuje. I tak to zwraca ci jeszcze ujemną. Więc to jest jedna lekcja dla nas, że choć getInt Funkcja i inne związane z nich, takie jak GetFloat lub GetString - nawet jeśli te otrzymają nam odpowiedni rodzaj danych, na przykład, gdybym tylko powiedział [TYPING] wtedy byłoby mi powiedzieć, aby ponowić próbę. Więc to będzie zajmować się niezależnie od danych wpisz swój wkład jest, ale nie faktycznie sprawdzić, cóż, to właściwie rodzaj wartość, że chcę? Tak więc jedna część Mario jest, że użytkownik ma do wejścia liczbę reprezentującą wysokość piramidy pół że robisz. I tak wtedy, jeśli jesteśmy skłoniło tego użytkownika na wysokości, a następnie powinny istnieć dwa granice na ten temat. Zgadza się? W specyfikacji, to mówi, że nie powinno być więcej niż 23 znaków, ponieważ jest to swego rodzaju norma Wzrost terminalu. Ale wtedy, co inne ograniczenie, może dolny pułap może chcemy dołączyć? Jeśli mamy rzeczywiście rysunek piramidy, rodzaj myślenia powrót do jakiego można piramidy, może być niższa niż kiedykolwiek pewna liczba? SPEAKER 2: Większy niż trzy. ZAMYLA CHAN: Hmm? SPEAKER 2: Większy niż trzy. ZAMYLA Chandler: To jest dobry punkt. To może być - możemy chcieć, aby ograniczyć go tylko trzy piramidy poziomu. Ale pomyślmy - powiedzmy jak jeden liczy tabeli mieszania jak piramidy też. Następnie co powinno nasza rzeczywista dolną granicą jest? Wracając myślami do jabłek, nie chcemy negatywny piramida wysokość. Zgadza się? Okay. Więc kiedy pytasz o wprowadzanych przez użytkownika, a następnie będziesz musiał to jakiś sposób na upewnienie się, że liczba całkowita one zapewnić Państwu nie jest negatywna, ponieważ nie można narysować negatywny piramidę. Okay. Tak więc istnieje kilka sposobów, aby to zrobić. Zasadniczo, gdy prosisz o dane wprowadzone przez użytkownika chcesz żądać które zapewniają z odpowiedniego wejścia. Więc chcesz żądać zapewniają z kilku , że nie jest negatywna, ale również mniej niż 24. Tak więc mamy do czynienia z zera do 23 włącznie. Dobrze. Dlatego chcemy, aby nieustannie domagać - jeśli nie dały nam prawidłową liczbą całkowitą, chcą ciągle żądać nie. Daj mi ważny wkład. Daj mi prawidłowy wzrost. Więc przypominam powrotem Scratch mieliśmy Powtarzaj aż do bloku lub Zawsze Jeśli bloku. Pętle są te, które są bardzo podobne do pętli i zrobić, gdy pętla, która zajmiemy się tylko w drugim. Więc pętla zasadniczo zawiera warunek, że sprawdzisz to wartość logiczna, które można umieścić wewnątrz tam, podobnie jak bloki w Scratch z kątów. To, co dzieje się w nawiasie w pętli while. Więc musisz mieć jakiś warunek tam. A jak właśnie wspomniano wcześniej, warunek ten mają do czynienia z granicach liczby całkowitej, który został wprowadzony. Więc warunek miałby coś z tego, czy całkowita jest w odpowiednich granicach. Więc to jest pętla while. Na przykład, możesz zwrócić się do liczby całkowitej, a następnie stałą kontrolę podczas wejście to nie jest ważne. Na przykład, na bieżąco ponownego monitowania, ciągle pytając użytkownika do liczby całkowitej. Tak, że może być w jedną stronę. Innym sposobem może być wykonać w pętli, która jest bardzo podobna do pętli while, z wyjątkiem tego, co zrobić, gdy nie jest - można zobaczyć przez rodzaj składni - jest to, że ma zrobić, a następnie rzeczywistego ciała pętli pierwszy. Potem ma warunków jednocześnie. Co więc zrobić, gdy pętle - co są przydatne jest to, że faktycznie wykonuje kod co najmniej raz, a następnie sprawdzić, czy warunek jest spełnione. Więc jeśli były zrobić zrobić podczas pętli, a następnie wewnątrz Oświadczenie można skłonić do liczby całkowitej, ponieważ będziesz w najmniej zadać użytkownikowi raz. A potem po skłonić ich, można powiedzieć, w porządku, dobrze, kiedy już to zrobisz, to jest ważne? Jeśli tak jest, to możesz po prostu grać do woli. Ale jeśli nie jest, to będzie to po prostu zachowywać się jak podczas regularnych pętli, a następnie przechowywać na pytania. Okay. Więc wracamy do Mario. Tak więc wiemy, jak skłonić do prawidłowego wprowadzania danych przez użytkownika, który jest w ramach odpowiednich granicach. Więc teraz faktycznie trzeba wyciągnąć ten piramidę pół. Wygląda na to, prostych znaków tekstu. Więc faktycznie otwarty - niech po prostu otworzyć okno i powiedzieć, dobrze, dobrze, co, gdybym rzeczywiście będzie to zrobić ręcznie, wpisz jeden samodzielnie? Okay. Zobaczmy więc. Powiedzmy, na przykład, chcemy zrobić piramidę, która jest ustawione wzdłuż lewej strony, a potem po prostu zrobić - w Mario, górny poziom ma dwa bloki zamiast jednego. Więc zaczynamy od dwóch. Klikamy Enter. Mamy trzy, a potem cztery, Enter, pięć. Okay. Więc to jest bardzo proste. Poza tym zestawem problemów, chcemy faktycznie dostosowanie do prawej stronie naszego ekranu. Dobrze. Tak, jak można się z was faktycznie wpisz to takie, że to jest ustawione wzdłuż prawej? Zamiast umieszczać hash pierwsze, jak można rodzaj przenieść go ze sobą? SPEAKER 3: Napisz wiersz? ZAMYLA CHAN: Hmm? SPEAKER 3: Napisz wiersz? ZAMYLA CHAN: Tak. Tak. Możesz napisać jak podkreślenia czy coś , ale możemy tylko powiedzieć używać spacji. Postawmy się w jak trzy spacje tutaj. Potem następna linia, dobrze, że musimy umieścić dwie spacje. Kolejny wiersz, po prostu umieścić jeden przestrzeń. I wtedy na naszej ostatniej linii, nie mielibyśmy kłopotów żadnych spacji. I tam mamy piramidę. Tak, że to rodzaj - Pamiętam ten rodzaj logiki. I spróbować dowiedzieć się jakiś wzór, który możemy, następnie przełożyć na C i angażować w jakieś pętli. Dobrze. Tak mówimy mieć wysokość osiem, to nasz pierwszy wiersz będzie miał dwa skróty. Jednak, aby te skróty, trzeba by napisać trochę obowiązuje wcześniej. Zgadza się? Co zrobiłem to właśnie przeszedł. Wyciągnąłem go z siebie, piramidy w moim edytorze tekstu, piramidy o wysokości ośmiu i oblicza liczbę obowiązuje musiałem zrobić. Więc powiedziałem: dobrze, dobrze pierwszy wiersz jest będzie mieć dwa hashe. Ale przed tym, muszę wejść siedem miejsc. Następny ma sześć miejsc, a następnie trzy skróty, et cetera. Więc spróbujmy i doprowadzić to do innej warstwy abstrakcja. Co zrobić, jeśli mieliśmy do n-tego rzędu, jak wiele i jak skróty wiele miejsca będzie nam potrzebne? Czy ktoś zobaczyć wzór? Więc pierwszy wiersz ma dwa hashe. Druga ma trzy. Trzeci ma cztery. Więc nth rząd musiałby - GŁOŚNIK 4: N plus 1? ZAMYLA CHAN: Tak. N plus 1. Dokładnie. Tak więc widzimy, że liczba skrótów będzie - Jeśli liczymy pierwszy wiersz jeden, liczba z mieszania jest po prostu będzie jeden więcej. Okay. Więc co z tym liczba miejsc? Więc spróbować wyrazić w zakresie wysokości. Jeśli wysokość jest osiem, to pierwszy Wiersz ma siedem miejsc. Tak więc tego rodzaju odpowiada 8 minus 1. Zgadza się? Więc drugi wiersz ma mieć sześć pomieszczeń, który jest 8 minus 2. Więc mam zamiar zostawić je do Ciebie do rodzaju dowiedzieć wzór do tego. Okay. Ale w programie, czasami rzeczywiście wskaźnik zera. Więc zaczynamy od zera, zamiast jednego. Zamiast więc w pierwszym rzędzie wywoływanej pierwszy wiersz, będziemy się nazywając to 0-ty wiersz. Więc w zależności od sposobu, w jaki chcesz wdrożyć, być bardzo uważać, czy od zera, czy zaczynają się jeden, Twój wzór będzie przesunięcie o jeden. Okay. Więc teraz, że rodzaj zorientowali się program, możemy muszę powiedzieć, okay. Więc dla każdego rodzaju poziomie schodów, mam zamiar wydrukować taka a taka ilość miejsc i takie i np. liczba skrótów. To zależy od wzoru, który ustaliliśmy wcześniej. Okay. Więc jeden sposób iteracja i rodzaj dzieje przez określoną liczbę rzeczy jest dla pętli, trochę jak powtórz 10 blok lub jak powtarzanie i wprowadzony numer dla Scratch. Więc zasadniczo, na każdym poziomie schodów, będziemy chcieli wydrukować spacje pierwszy. Następnie wydrukować liczbę skrótów. A następnie będziemy chcieli wprowadzić nowy wiersz, a następnie powtórzyć ponownie do kolejnego bloku. Okay. Więc spójrzmy na pętli za sekundę do rodzaju zobaczyć jeden sposób że możemy przejść przez określoną liczbę, przejść przez liczby kroków w tej piramidzie pół. Tak pętli składa się z trzech części. Po pierwsze, masz inicjalizacji. Tak, że w zasadzie ustawia zmienną. To będzie być ustawione do tej wartości za każdym razem, że dla startów pętli. Wtedy będziesz mieć warunek. Twój na pętli będzie wykonywał tylko tak długo, jak warunek jest prawdziwy. I wtedy będziesz miał stan aktualizacji. Tak, że ma do czynienia z zmiennej, która zainicjowana. Więc jakiś sposób w zasadzie zapewnienie, że możemy wyrwać z pętli, że nie trzymają się na realizacji to na wieki wieków. Ponieważ w przeciwieństwie Scratch, faktycznie nie ma po prostu zwykły loop Forever. W C, program musi zakończyć ostatecznie. Musimy więc zapewnić, że w jakiś sposób mamy go zatrzymać. Okay. Więc przykładem dla pętli, które można użyć do Mario jest to. Więc masz całkowitą i że zaczynają się 0. Pod warunkiem, że jest mniejsza niż wysokość, można wykonać korpus z pętli wewnątrz o. Następnie ciało pętli jest wykonywany, a następnie byś podwyższenie I przez 1. Wtedy twój program będzie sprawdzić jeszcze raz - w porządku, dobrze, jest i mniej niż wysokość? Jeśli tak, to wtedy można kontynuować. Więc tutaj jest przykład zerowej indeksowania, gdzie zaczynamy w zero, a potem - zauważyć, że nasz stan jest mniejsza niż wysokość. Więc powiedzieć, że nasze Wzrost jest cztery, na przykład, i rozpocznie się na 0. To będzie 1. To będzie 2. To będzie 3. A następnie raz aktualizuje, gdy aktualizacje pętli, i będzie być ustawiona na 4. Ale 4 nie jest mniejsza niż 4, a więc wtedy byłoby nadal reszty naszej pętli. Okay. Tak, że zaczyna się od zera. Ale można również uruchomić w jednym, na przykład. Ale skoro zaczynamy w jednym, mamy rodzaj iść jeden czas końca. Więc dlatego dodawać mniejsza lub równa. Więc jednym z najlepszych rzeczy, które lubię o komputerze programowania jest to, że tylko tak wiele sposobów, aby zrobić rzeczy. Tak więc można wybrać, czy od zera, czy rozpocząć w jednym. Ponadto, jeśli chcesz, możesz po prostu użyć przy pętli, na przykład. Więc może - niech faktycznie otwarty hello.c. Tak więc mamy do pętli tutaj. Zaczyna się i = 0, i <5. Mam komentarz tutaj informujący nas, co robi. Wypisuje komentarzy pięć razy za pomocą pętli for. Ale możemy też zrobić za pomocą pętli while, jak również. Warto więc zastanowić się, jak możemy to zrobić. Więc jeśli chcemy naśladować dla pętli, to chcemy także naśladować inicjalizacji, stan i aktualizację. Więc warunek powinien być całkiem proste, ponieważ w podczas składnia, gdy patrzy się na to, to mówi while (warunek). Więc wystarczy wpisać warunek tam. i <5. Okay. Więc wiemy, że chcemy wydrukować na pożegnanie. Wiemy, że to jest ciało naszego pętli. Ale brakuje nam inicjalizacji i aktualizacji, prawda? Ponieważ nie możemy mieć na zawsze pętlę. To musi zakończyć. Dodajmy pewną inicjalizację tutaj używając sam, który kiedyś w naszej pętli for, int i = 0. Okay. Więc zaczynamy int. Powtarzamy tę pętlę while dopóki i jest mniejsze niż 5. Więc jesteśmy brakuje jednej rzeczy, która jest aktualizacja. Więc co aktualizacja musielibyśmy użyć jeśli były zasadniczo odtwarzając na pętli powyżej? Mamy inicjalizacji i jest równa 0. Mamy stan i jest mniejsze niż 5. I to tu jest aktualizacja, prawda? Dlatego chcemy, aby skopiować to. Chcemy powiedzieć w porządku, i + +. To samo, co mówią i = i + 1. Ale ponieważ jest używany tak często, skrót myślowy, który jest po prostu Twierdzisz, że + +. Great. Okay. Tu faktycznie nie wyjść z mojego programu jabłek. Więc mam zamiar kliknąć Ctrl-C i że natychmiast buty mnie z mojego programu i przynosi mnie z powrotem do terminalu. Tak więc, na przykład, gdy napotkasz błąd, gdzie zapomniałem zaktualizować podczas pętli tak, że byłoby zakończyć i wprowadzić nieskończoną pętlę, a następnie można użyć Ctrl-C, aby wyrwać się z tego. Dobrze. Więc jesteśmy w odpowiednim katalogu. Więc zróbmy hello. A następnie, jeśli prowadzimy hello, widzimy, że pętla nie pożegnanie dokładnie to samo jak nasz pętli for ma. Więc to tylko wskazówka. Nieważne, czy jesteś bardziej komfortowe z pętli lub podczas gdy w pętli mogą być stosowane zamiennie. Tak więc od tego, którego chcesz użyć do iteracji - w tym przypadku - Wysokość Mario piramidy. I znowu, to tylko przypomnienie, jeśli zaczynają się od zera zmiennej, a następnie będziemy chcieli mieć inny warunek, niż gdybyś zaczął w jednym. Więc to po prostu rodzaj tabeli pokazuje przypomnienia. Jeśli chcesz, aby powtórzyć 10 razy, na przykład, to można albo uruchomić swoją zmienną na zero. I stanu może być mniejsza niż 10. I tak, że niby pokazuje macierz tego. Okay. Więc Przeszliśmy przez Mario. Powiedzieliśmy, Dobra, musimy sprawdzić poprawność danych wejściowych, zero i 23 włącznie. Mamy zamiar znaleźć jakiś wzór, jakąś sposób wyrażania nth-tego wiersza lub wiersz. I będziemy decydować, Dobra, jedziemy do drukuj wiele miejsc, to wiele asocjacyjne, nowej linii. Dobrze. Więc mamy to. Więc teraz możemy przejść do Greedy. Greedy to program, w którym użytkownik daje kwotę pieniężne, które zasadniczo można jako kasjer musi powrócić. Ale chcesz użyć jako małe monety, jak to możliwe. I tak to jest, gdy Algorytm zachłanny przychodzi, gdzie będziemy chcieli wykorzystać minimalną ilość monet możliwe sprawiają, że ilość zmian. Okay. Więc tego przykładem w roztworze może wyglądać coś takiego. Uruchomić. / Chciwy. Monit powiedzieć dobrze, dobrze, jak bardzo zmiana jest winien? Ta wartość będzie wartość w dolarach. Tak, że będzie float. Twój program będzie następnie obliczyć kwotę minimalną monet potrzebnych do wykonania, w tym przypadku, $ 0,32. I tak minimalna liczba jest cztery. Tak więc, zanim dowiemy się, co robić, niech trochę spacer w procesie, które można przejść o. Więc jeśli wejście jest 32, to w zasadzie mam zamiar używać najmniejsza ilość monet, czy używam tak wielu duże monety jak to możliwe. Zgadza się? Tak więc jest to dużo łatwiejsze do korzystania z jednego kwartału przeciwieństwie do pięciu monet. Więc powiedzmy, trzeba return $ 0,32. Cóż, mogę używać kwartał tego? Tak, można. I wtedy można byłoby zmniejszyć do 0,07 dolarów. Zobaczmy, czy mogę użyć innego kwartał płacić Tobą. No, no. Nie mogę dopasować kwartał tego. Więc mam zamiar przejść do kolejnego największego medalu. Czy mogę używać ani grosza? 0,07 dolarów, no nie można używać ani grosza zapłacić $ 0,07. Więc powiedz nie. Przejść do następnego, który jest nikiel. Można użyć niklu? Tak. Siedem jest większa niż 0,05 dolarów, więc możemy użyć nikiel. A potem mamy dwa centy pozostały. Możemy używać ani grosza? Tak możemy. Możemy użyć innego grosza? Tak. Możemy użyć innego grosza? No bo teraz mamy pomyślnie zapłacił plecy użytkownika. I tak, że wynosi cztery monety używane. Więc myśleć o tym procesie, co Czas podjąć decyzję w porządku, Jaka jest największa moneta, że ​​możemy użyć? Po użyciu, że, mamy rodzaj zachować w pamięci, że jak bardzo więcej pieniędzy musimy powrócić instrukcji, jak również, jak wiele Monety używamy. Okay. Tak, ale jeszcze raz, pierwszy krok - tak jak Mario - jest monitowanie użytkownik za kwotę pieniężną. A więc ta kwota będzie - to będzie mieć wartość dziesiętną, ponieważ mamy zamiar poprosić o dolarach. Tak, że typ danych nie będzie liczbą całkowitą. Ale to będzie - yeah, float. Ale podobnie jak jabłek, pływaków może być dodatnia lub ujemna. Więc kiedy sprawdzić dla wartości, będziesz chciał Aby zapewnić, że pływak - wprowadzania danych przez użytkownika - nie jest negatywna. Okay. Może mamy do czynienia z pływaków w całym naszym programie, stanowią czwarte do 0,25, dimes przez 0,1, et cetera. Ale uważam, że dużo łatwiej radzić sobie w zaledwie czystych centów. Również - i porozmawiamy o tym nieco później - w C, pływające punkty mają coś, co nazywa nieścisłości. Tak więc, gdy wchodzi w 0,12, na przykład, komputer faktycznie, jak sklepy czy jak 0.1111119 coś takiego. Tak więc jest to dużo łatwiejsze do konwersji centów. Więc w jaki sposób możemy przekształcić dolara wartość centów? GŁOŚNIK 5: Times niej przez 100? ZAMYLA CHAN: Tak. Tak. Więc byłoby to o 100 razy. Ale jeden tricky rzeczą pływających punktów jest to, że pewne nieścisłości. Więc wystarczy spojrzeć na przykład to. Więc mam zamiar otworzyć imprecision.c. Okay. Jest to bardzo prosty program. Prosi o pływaka, i drukuje je z powrotem. Jeden miły napiwek w terminalu wpisać jedynie jasne i wtedy masz jasny ekran. A więc nie trzeba szukać w każdej poprzedniej produkcji lub błędów lub błędów raporty, coś takiego. Okay. Więc zróbmy niedokładności. Niech go uruchomić. Więc haven't - w kodzie, nie wydrukować dowolny polecenia lub coś w tym stylu. Więc to po prostu ma migający kursor. Więc to tylko czeka na mnie do wejścia pływaka. So let's - random float. I widzisz, że drukuje je z powrotem, ale ma kilka dodatkowych numery, które na pewno nie należą. Dlatego chcemy, aby upewnić się, że nie zdarzyć się w naszym programie. Tak więc to, co chcemy zrobić, to upewnić się, że rzeczywiście rodzaj zaokrąglone do odpowiedniej wartości. Zgadza się? I tak szczęście, że mamy funkcję o nazwie runda wliczone w urządzeniu. Jest w bibliotece matematycznej. Jeśli chcesz wiedzieć, jak korzystać runda, to faktycznie korzysta ręczny. Możesz kliknąć cały człowiek. To tutaj przynosi up - może być trochę trudne do rozszyfrowania, ale w końcu dostaniesz go powiesić. To niby pokazuje co funkcja robi i jeszcze trochę możliwych zastosowań tego. Więc kiedy w końcu uzyskać właściwe i ważne informacje od użytkownika, a następnie chcesz przekonwertować go do groszy. Upewnij się, że wokół wartości, tak aby uniknąć przestawne niedokładności punkt. Okay. Więc mamy monit z pytaniem o kwotę pieniężną. Teraz to, co chcemy zrobić, jest zasadniczo sprawdzić, prawda? Okay, więc można używać możliwie największą monetę? Jeśli możesz, a następnie go użyć. Możesz śledzić ile monet używałeś do tej pory i również wysokość spada. Zgadza się? A potem idziesz do sprawdzenia. Po rodzaju wyczerpał czwarte, chcesz iść do następnej możliwej rzeczy. Więc jakie struktury lub jakiego rodzaju pętli możemy chcesz skorzystać, aby sprawdzić, czy ciągle możemy nadal korzystać kwartał, na przykład? SPEAKER 6: wartość Chociaż większa niż? ZAMYLA Chandler: Tak, doskonale. Dokładnie. Więc gdy wartość jest większa niż. Tak więc, podczas gdy wartość, że mamy oddać jeszcze większy niż w kwartale, podczas gdy wciąż możemy korzystać na kwartał, wykorzystywać kwaterę. Śledzenie tego. A potem dalej dzieje. Perfect. Okay. O, tu mam tylko włączone tylko kilka wskazówek, jak drukować wartości na zewnątrz. Tak w funkcji printf, mamy zazwyczaj było tylko czynienia z ciągów. Ale gdy chcesz wydrukować int lub tylko jakikolwiek rodzaj cyfra, trzeba trochę napisać rodzaj uchwytu miejsce. Więc to jest reprezentowane przez procent,% d dla liczb całkowitych. Będziesz pisać, wtedy później będziesz faktycznie - po przecinku - umieścić w jakie wartości faktycznie idzie tam. Racja. Okay. Więc stwierdziliśmy, że chcemy sprawdzić, czy - jednym ze sposobów na osiągnięcie tego celu byłoby stale sprawdzać, czy możemy nadal korzystać z kwartałów, a następnie użyj czwarte, należy śledzenia, a następnie przejść do następnej największej wartości. Teraz inny rodzaj schludny sposób, że można to zrobić, jest pomocą operatora modulo. Więc już mamy plus, minus, mnożenie i dzielenie dla nas dostępne. Ale operator modulo jest rodzaj schludne. Co robi to właściwie powrót Pozostała dzielenie dwóch liczb. Więc jeśli pamiętać w przypadku długiego dzielenia kiedy będzie, powiedzmy, zrobić 74 podzielone przez 3, możesz napisać to, przeniesienie, odejmowanie, a następnie na koniec liczba na dole jest reszta. Cóż, co modulo to właściwie tylko daje ci to. Tak więc 74 modulo 3 da ci 2. Podobnie, 10 modulo 2 daje 0, ponieważ nie ma żadnego Pozostała po podzielić 10 przez 2. 6 modulo 5, dobrze 5 idzie do 6 razy, a następnie jeden ona 1 pozostały. Następnie, jeśli masz 7 modulo 9, dobrze 9 jest większa niż 7. Więc to nie może pójść inne razy. Więc to ma sens, że zwracana jest wartość 7. Więc jeśli myślisz o modulo, jak to daje resztę po dzielić coś, można trochę zobaczyć jak może być w stanie wykorzystać w Greedy, prawda? Więc jeśli rodzaj połączyć modulo może z podziałem operator, coś w tym stylu, to może masz fajne rodzaj Mathy sposób podejścia zestaw problemów. Więc teraz, że wiemy, że istnieje kilka różnych sposoby, że możemy to zrobić - na pewno są dużo różnych sposobów, aby nawet napisać pętle while. Więc napisałem trochę Pseudokod tutaj. To może nie być identyczne z rodzaju szkieletu z twoich kod, który piszesz. Ale zasadniczo, proces i sposób myślenia tak jak rozmawialiśmy. Więc po pierwsze, pierwszy wiersz mówi, aby uzyskać pewną ilość w dolarach. A następnie ukryte tam jest przekształcić go centów. Następnie a czwarte można chcemy zwiększyć ilość. A potem chcemy zmniejszyć ilość, wartość tego Wracamy z powrotem. Jak widać tutaj, to nie jest całkiem C. Ale mam również wcięte rzeczy, kładę moje warunki wewnątrz nawiasów. Tak więc tego rodzaju dostaje mi się zaczęło. A później, mogę tylko patrzeć składni. Często najtrudniejsza część naprawdę o problem jest zrozumieć, co dokładnie trzeba zrobić. Więc raz piszesz, że w dół, to jest to dużo łatwiejsze, aby następnie tlumaczenie Pseudokod. A następnie od Pseudokod, składnia jest całkiem proste. Widzimy zatem, a czwarte, mogą być stosowane, zwiększenia liczby, zmniejszenie ilości. Chociaż mogą być stosowane Dimes, następnie prowadzi się i tak dalej, tak dalej, aż do wyczerpania wszystkich swoich groszy. Wydrukować liczbę monet używanych, które będą Minimalna kwota do instrukcji wprowadzane wartości. I tam masz Algorytm zachłanny. A następnie po zakończeniu, że masz również wykończone Pset 0. Czy ktoś ma jakieś pytania o cokolwiek? Dobrze. Cóż, będę trzymać się na trochę później, jeśli masz wszelkie pytania. To była solucja 1. Dzięki za przyjście.