[Odtwarzanie muzyki] ZAMYLA CHAN: Czy wolisz otrzymywać 10.000.000 dolarów teraz i odbierać grosze każdy dzień miesiąca, w miarę każdy kolejny dzień, otrzymasz podwoić ilość groszy ty otrzymał dzień przed? W grosze, będziemy udowodnić, dlaczego powinieneś pewnością podejmie grosze. Twoim zadaniem jest napisanie pennies.c-- Program, który najpierw pyta użytkownika, jak wiele dni są w miesiącu, a pyta, ile groszy użytkownika otrzymuje się w pierwszym dniu. Program powinien obliczyć Kwota, że ​​użytkownik będzie miał zgromadzone na koniec miesiąc i go wyświetlić. Możemy przełamać ten program się do kilku zadań. Musimy skłonić do wiele wejść użytkowników - dni i miesiące, a grosze w pierwszym dniu. Musimy śledzić ile pieniędzy Użytkownik ma i aktualizować go co dzień podwojono ilość grosze, które otrzymują. I wreszcie, drukować końcowy, w dolarach. Załóżmy, wpisywane przez użytkownika tackle pierwszy. Zamierzam otworzyć apples.c, krótki program, który zajmuje z wejściami i wyjściami. Na górze tutaj, podaję niektóre bibliotek, że muszę - CS50 jest biblioteka i średnia I / library O. I wydrukować polecenia przy użyciu Funkcja z printf standard I / O bibliotece. Ale rzeczywista monitowania użytkownika dzieje się w następnej linii z tego Funkcja getInt w CS50 biblioteki. GetInt uzyskuje wejście od użytkownika i zapewnia, że ​​wejście jest liczbą całkowitą. Więc przechowywać użytkownika wkład w całkowitą i, odjąć 1 od I, a następnie wydrukować nową wartość, gdybym. Po kompilacji apples.c korzystania Polecenie "make jabłka" Mam jabłka pliku wykonywalnego. Bieganie, że będę wejście 1. Program mówi mi, że Mam 0 jabłka lewo. I tak, że działał zgodnie z oczekiwaniami. Warto więc uruchomić to znowu i wejście ujemne 1. Teraz, mając negatywny ilość jabłek nie ma sensu, ale Program przyjmuje, bo negatywne 1, oraz, że jest liczbą całkowitą. A teraz program lub potwór wewnątrz programu zjada negatywne jabłko, a teraz mam Negatywne 2 jabłka. Hm, tak, że jedna lekcja - chociaż funkcja getInt i podobne funkcje, jak GetFlow lub GetString uzyskać odpowiedni typ danych, to upewnić się, że wejście sprawia, że sens dla programu. W groszy, to nie zrobi tylko prompt do liczby całkowitej, należy dokonać upewnić się, że użytkownik wejścia liczbę całkowitą to ma sens biorąc pod uwagę kontekst. Miesiąc może mieć tylko 28, 29, 30, lub 31 dni. Chcemy stale domagać prawidłową liczbą całkowitą. Jeśli wejście jest poza naszą całkowitą zaakceptowanych granice, będziemy monitować je znowu i znowu, aż daje nam prawidłową liczbą całkowitą. Przypomnijmy, "Powtarzaj, aż" zablokować w Scratch? Możesz zrobić podobną konstrukcję w C za pomocą pętli "dopóki" lub "do-while" loop. Struktura pętli while jest warunek , które muszą być spełnione dla ciało pętli do wykonania. Powinno to wyglądać trochę podobny, ponieważ stan jest jak Bloki podstaw z kątów i przechodzi w nawiasach w ", a" pętli. Tak, że warunek sprawdza, czy cyfrowy jest w odpowiednie granice. Możesz skłonić całkowitą getInt używając a następnie wykonać swoją "chwilę" pętla, powtarzając szybka i drukowanie Instrukcje, gdy wejście nie jest ważny. Innym sposobem, aby zapewnić poprawne dane wejściowe użytkownika jest za pomocą "do-while" pętli, który jest bardzo podobny do pętli While. "Do-while" pętla wykonuje kod wewnątrz te ciała i sprawdza , czy warunek jest spełniony czy nie. To jest użyteczne dla uzyskania danych wprowadzonych przez użytkownika, bo wiesz, że musisz skłonić je co najmniej raz. Jeśli warunek nie jest spełniony, program uruchomi linię po Twój "do-while" loop. Jeśli warunek jest spełniony choć, Pętla będzie powtórzyć "Do-while" loop zatwierdzania instrukcji Wejście będzie wyglądać tak. Oświadczam zmiennej n, getInt i następnie powtórzyć, aż n jest ważny. I ten proces, wyjaśniłem, był przy Dane typu integer, która będziesz używać na dni miesiąca. Ale wiemy, że liczba grosze będzie piętrzą się szybko, więc w celu przechowywać większą liczbę, należy użyć typu danych Longlong, ale pamiętaj, same Zasada weryfikacji dotyczy. Awesome, więc gdy mamy dwa ważne Wejścia od użytkownika - dzień w miesiącu i grosze pierwszego dnia - możemy przejść do następnego część programu. Pierwszego dnia, użytkownik rozpoczyna jednak wiele grosze są określone a ilość groszy że otrzymać następny dzień jest podwojona. Tak więc warto śledzić z tych dwóch kwot - ile pieniędzy użytkownik ma i jak wiele grosze zostaną one podane. Teraz robi coś dla 28 do 31 dni jest powtarzalny, więc użyjmy "za" pętli w celu przechodzenia do dni w miesięcy, aktualizacji razem i ani grosza wyniosą każdym razem. "Dla" składnia pętli zawiera dodaje - inicjalizacji, stan, i aktualizacja. Twoja "na" Pętla będzie zainicjować zmienna, gdy Pierwszy wchodzi w pętlę. Jeśli warunek jest spełniony, body z pętli zostanie wykonany. Następnie zmiana wykona. Jeśli warunek jest nadal spełniony, pętla wykona i aktualizacji, a powtarzać, tak długo, jak stan wartość true. Oto "dla" pętla, która dzieli p liczba całkowita od 2 sumie 10 razy. Zauważ, jak oświadczyłem całkowitą p poza moim pętli "for", tak, że liczba całkowita może być dostępne zewnątrz pętli "for". Po miesięcy minęło, czas informacje o tym, ile pieniędzy że dotarłeś. Za spec, trzeba poinformować użytkownika ile dolarów, a nie, jak wiele grosze, mają. Ale do tej pory, już śledzili całkowita i grosze wykorzystujące LongLongs, które są liczbami całkowitymi. Istnieje 100 centy do $ 1, więc chyba liczba groszy jest wielokrotność 100, musisz oznaczają miejsca po przecinku. Podwoiła faksymile pozwala to zrobić. Więc w jaki sposób przekonwertować z reprezentująca grosze w dolarach? Rzućmy okiem pi.c. Ten program trwa longlong big_pi i dzieli ją przez 100.000 i drukuje Wyniki z pięciu miejsc po przecinku. Jeśli chcemy, aby wyświetlić cztery przecinek miejsca, to możemy po prostu wymienić tę Numer tutaj. Warto więc zapisać, skompilować pi, i potem zobaczyć wynik, który możemy spodziewać się 3,1415 - pięć pierwszych cyfr liczby pi. To nie jest jednak. A dlaczego? No, bo big_pi jest longlong, która jest liczbą całkowitą, która nie będzie śledzić po przecinku. Modyfikacja muszę uczynić to w podziale. Muszę oddać się tu wcześniej dwukrotnie podziału, ponieważ gra nie może utrzymać śledzić z miejsc po przecinku. I mam zamiar dodać nową linię tutaj lepszego formatowania. I tu mamy to - 3,1416. Można zauważyć, że drukuje 3,1416 zamiast 3,1415 zgodnie z oczekiwaniami. To dlatego, że podczas rundy Proces Division, w przeciwieństwie do zaledwie obcinania wartości. Teraz powinieneś być w stanie drukować końcowy w pełnym zakresie, który kończy Program. Gratulacje. Nazywam się Zamyla. A było to grosze. [Odtwarzanie muzyki]