>> [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]