Cześć i witaj.
Chciałbym przeprowadzić demonstrację rozwiązanie naszego poprzedniego
wyzwania, które było wdrażane gra polegająca na zgadywaniu i liczbach.
Przywołajmy więc kod bloki, zamknij
mój obecny projekt i utwórz nowy.
Właśnie idę do tego nowego projektu zadzwonić do gry zgadywanie liczb.
To będzie Aplikacja konsoli.
Więc po prostu zamierzam nazwij to zgadnij numer.
I co mam zamiar zrobić aby rozpocząć ten projekt, zamierzam zadeklarować
moje zmienne.
Zawsze lubię deklarować i to moje zmienne na górze.
Ale ja też użyję generator liczb losowych.
Więc chcę się upewnić Mam kilka zawiera.
Domyślnie Stdlib już tam jest.
Wszystko, co muszę zrobić, to dodać moje czas. h ponieważ znowu jest to dla generatora
liczb losowych.
To jest w zasadzie dla miejsce generatora liczb losowych.
Inne zmienne, którymi jestem potrzebuję w tym programie chcę
przechowywać moje losowe liczby.
Więc powiem tylko liczba losowa, mam zamiar ustawić ją na 0, aż
do I pobierz go z rzeczywistej biblioteki.
Więc zadeklaruj inicjalizację.
Mam zamiar utworzyć zmienną do zapisz przypuszczenie od użytkownika i mam
zamiar zainicjować to z 0.
Mam zamiar utworzyć kolejną zmienną która będzie
liczbą prób, bieżącą liczbą domysłów, a właściwie powinienem
powiedzieć: maksymalna liczba domysłów, maksymalna liczba przypuszczeń i mam zamiar zainicjować to na 5,
ponieważ mogą zgadywać tylko 5 razy.
Muszę też stworzyć czas zmienna, aby móc jej używać w moim
generatorze liczb losowych.
Więc powiem tylko, że czas t t.
Pierwsza rzecz, którą chcę zrobić wcześniej zapytaj użytkownika o dane wejściowe, czy
chcę wygenerować liczbę losową.
Myślę, że mógłbym to zrobić po zapytaniu użytkownika do wprowadzania danych, ale po prostu łatwo jest
zrobić pierwszą rzecz, którą to zrobisz.
Więc mam zamiar zainicjować mój generator liczb losowych, wstawię
tam mały komentarz.
Upewnij się, że używasz dobrego, znaczącego nazwy i upewnij się, że wprowadzasz wcięcia.
Będzie używał tej funkcji srand o którym mówiłem na wykładzie.
Możesz to po prostu przekazać w nasionach zasadniczo.
Więc powiem bez podpisu i tak przejdzie po prostu do mojej zmiennej t.
To będzie mieć czas funkcja, która pobiera aktualny czas.
Mam zamiar przejść w t tak, że tak wysiewa to, a potem skończę.
Teraz naprawdę muszę dostać mój generator liczb losowych, więc zamierzam powiedzieć,
aby uzyskać liczbę losową.
I wszystko to zrobi przypisuje zmienną do tego, co jest
zwracane przez funkcję rand.
Powiedzmy więc losową liczbę, która jest moją zmienną
lokalną równą i powiedz operator przypisania rand, który wywołuje funkcję.
Nie musisz nic o tym wiedzieć, ale zamierzam zasiać go liczbą 21.
Zapewni to, że moje losowe liczba zawiera się tylko w przedziale od 0 do 20.
Teraz wyprowadzę tylko plik kilka wiadomości na ekranie, aby użytkownik
wiedział, co robi.
Więc mam zamiar zrobić aplikację do drukowania i tak zamierzam powiedzieć, że to gra w zgadywanie.
A potem też to zrobię powiedz im,
że wybrałem ponownie liczbę od 0 do 20, tylko po to, żeby zostali poinformowani.
A potem 0 i 20, które musisz zgadnij i zakończ to wysuwem wiersza.
Teraz, kiedy powiedziałem im, co ja chcesz w grze, właściwie zacznę
się zapętlać.
I mam zamiar zapętlić, dopóki mój liczba prób wynosi 5.
Więc co bym wolał tak, chciałem wyczyścić tutaj liczbę
domysłów, ale Nie chcę inicjalizować.
Chcę zainicjować w mojej pętli tylko po to, żeby ci pokazać, że potrafię to zrobić.
Gdybym go tam zainicjował, przed pierwszym średnikiem w pętli for mogłem pozostawić
go pustym.
Na przykład mógłbym coś zrobić w ten sposób, zainicjuj go tutaj.
A potem w mojej pętli for, zrobiłbym to po prostu wstaw średnik,
ponieważ nie muszę wykonywać inicjalizacji.
Pamiętaj, że w naszej pętli for
pierwszą rzeczą, którą masz przed średnikiem, jest inicjalizacja zmiennej sterującej pętli.
Już go zainicjowałem więc nie muszę tego robić,
ale nie chcę tego robić.
Po prostu zadeklaruję tutaj na górze i mam zamiar
zainicjalizować go tutaj.
Powiem maksimum liczba domysłów wynosi 5.
To moja zmienna kontrolna pętli, Mam zamiar to zainicjalizować.
Mam zamiar wyskoczyć z pętli, jeśli zostanie osiągnięta
maksymalna liczba prób.
Więc tutaj powiedziałbym, że tak naprawdę jestem zamierzam napisać to w inny sposób.
Mam zamiar tak to napisać pętla przechodzi od 5 do 0.
Więc moja maksymalna liczba to 5.
Byłoby lepiej zmienić nazwę tej zmiennej.
Zmieńmy jego nazwę i powiedz liczbę prób.
I liczba domysłów zacznie jako 5.
I mam zamiar zrobić to cofnij się.
A kiedy liczba domysłów jest 0, chcę wyskoczyć z pętli.
Więc mój warunek wyjścia z pętli, Powiem, że liczba domysłów jest
większa niż 0.
Zobacz, co tu robię.
Mam zamiar tylko wyskoczyć z pętli, jeśli nie mam już więcej domysłów.
Więc jeśli jestem większy niż 0, jestem pozostanie w pętli.
A potem ostatnia rzecz, której chcę w pętli for po drugiej
okrężnicy klimatycznej jest modyfikacja tej zmiennej sterującej pętli.
Więc po prostu zrobię minus minus liczba prób.
A co powinieneś zauważyć w tej pętli for jest
to, że zaczynam ... Cofam się prawie do tyłu.
Zaczynam od 5 i idę do 0.
We wszystkich przykładach, które podajemy w wykład zaczynamy od 0 i idziemy w górę.
Ale możesz zrobić jedno i drugie, to nie ma znaczenia.
Nadal iterujesz tutaj 5 razy.
Teraz chcę wyświetlić wiadomość informująca,
ile prób pozostało.
Więc zamierzam powiedzieć printf, i właściwie zamierzam włączyć operator trójskładnikowy
tutaj, ponieważ go nie używaliśmy.
Nie musisz tego robić w ten sposób, ale zamierzam to zrobić w ten
sposób, żeby pokazać ci, jak się masz może używać operatora trójargumentowego.
Więc mam zamiar cię wydrukować pozostały procent d prób procent s.
Procent d będzie równa liczba prób i tr procent
s, to się zmieni.
To albo będzie próba albo będzie to próba.
Więc zamierzam się zmienić co jest wyświetlane na
podstawie liczby możliwych odpowiedzi.
Jeśli liczba domysły równa się 1.
Po pierwsze, nie chcę planować prób spróbuj, to nie ma sensu.
Chcę wydrukować jedną próbę.
Więc tutaj użyję operator terminologiczny lub dokładniej
operator warunkowy.
Powiem, jeśli liczba domysłów równa 1, następnie ustaw liczbę prób równą y, w
przeciwnym razie ustaw IES.
I mam zamiar to wydrukować co robi procent s, cokolwiek
zostanie tu zwrócone.
Więc to wróci a y i IES i wyświetl prawidłowe
informacje.
Więc zrobiłem to tylko po to, żeby być trochę
wymyślny pokaże ci, jak możesz korzystać z terminala, drukuj uzyskać właściwe informacje.
Po wydrukowaniu numeru prób na końcu, a potem chcę im powiedzieć,
żeby wpisali próbę.
Więc mam zamiar znieść trochę informacji
i po prostu powiedz printf, po prostu wpisz przypuszczenie i będzie to miało wysuw linii.
Więc wpisz przypuszczenie, a potem jadę aby czytać w zgadywaniu za pomocą scanf, wiemy, jak czytać
z klawiatury.
To będzie liczba całkowita, więc jestem zrobi procent d i wstawię
to do zmiennej zgadywania.
Więc muszę użyć znaku &.
Teraz muszę sprawdzić.
Muszę sprawdzić, czy zgadnę Martwię się o mnie.
Więc oto mamy inny warunek wyjścia.
Zamierzam użyć instrukcji if.
Powiem, czy moje przypuszczenie jest równe mojej liczbie losowej, co chcę
zrobić?
Cóż, najpierw chcę wydrukować i powiedz im,
że zgadli poprawnie.
Więc zamierzam wydrukować, gratulacje, zgadłeś.
Co jeszcze chcę zrobić jeśli zgadną poprawnie?
Chcę wyjść z pętli.
Jak więc wyjść z pętli?
Mógłbym przerwać.
Mógłbym zrobić sobie przerwę, to wyskoczy z mojej pętli.
Teraz, jeśli nie było równe, więc Chcę dodać jeszcze jedno, jeśli.
Jeśli nie jest równa, chcę to sprawdzić upewnij się, że potwierdzili numer.
Więc zanim powiedziałem, że możesz zagnieżdżona pętla do walidacji, aby mogli wejść
ponownie, ty nie musisz tego robić, możesz po prostu
mieć instrukcję f.
Więc tutaj chcę zweryfikować numer.
Jeśli nie jest równy liczba losowa, chcę się
upewnić, że mieści się w przedziale od 0 do 20.
Więc jeśli przypuszczenie jest mniejsze niż 0 lub używamy
operatora logicznego lub 2 równoległych prętów lub przypuszczenie jest większy niż 20, który
zasadniczo sprawdza, czy domysł jest nieprawidłowy.
Jeśli tak jest, a ja nie użyję nawiasu, ponieważ mam tylko
jedną instrukcję tutaj nawiasy są opcjonalne, jeśli masz tylko
jedną instrukcję.
Jeśli więc wpisali nieprawidłową odpowiedź, wszystko, co zamierzam zrobić, to printf.
Wydrukuję, powiedziałem liczba zawiera się w przedziale od 0 do 20.
A to, co się tutaj stanie, to nic.
Po prostu się wydrukuje to się skończy
i przejdzie do następnej iteracji.
Powie im, jak to zrobić wiele prób, które opuścili, i
będzie to przypuszczenie.
Teraz, jeśli nie chcesz, aby był ważny liczby, jeśli wpisały
prawidłowe liczby, aby nie liczyły się jako przypuszczenie, wtedy możesz mieć zagnieżdżoną pętlę.
Ale jeśli wejdą do czegoś 25, nadal będzie się liczyło jako przypuszczenie.
Więc po prostu mówię, że ustawiłem liczba od 0 do 20.
Jeśli wprowadzili prawidłową liczbę ale nie było poprawne, to
byłaby klauzula else.
Tutaj powiem tylko: przepraszam, zły numer i powiem im, czy
to jest większy lub niższy niż.
I mógłbym użyć trójskładnika operator tutaj, ale ja nie mam zamiaru.
Dodajmy więc tutaj również if.
W przeciwnym razie, jeśli losowość jest większa niż zgadnij, co w takim razie chcę wydrukować?
Chcę wydrukować przepraszam, że procent d to źle, procent d będzie ich przypuszczeniem.
Moja liczba to procent s to pierwsze słowo.
Jeśli losowość jest większa, moja liczba jest większa.
Moja liczba jest większa niż to, i
nie używam żadnych percentyli i po prostu mam nowy wiersz.
W przeciwnym razie, jeśli liczba losowa jest mniejszy niż przypuszczenie, więc chcę im powiedzieć, że jest
niższy.
Więc mogę zrobić kopię i wklej to samo.
Mógłbym powiedzieć przepraszam, numer jest zły, mój numer jest mniejszy.
I znowu, faktycznie możesz umieść te 2 inne ifs.
Możesz mieć jeszcze jednego, jeśli
i faktycznie możesz tutaj wprowadzić instrukcję warunkową.
Możesz mieć operator trójskładnikowy, ale mam zamiar użyć 2 innych instrukcji if i powiedzieć, że to
mniej niż to.
I to będzie to, to zakończy pętlę.
A jeśli wyjdziemy poza pętlę i nie zgadliśmy poprawnie
i przekroczyliśmy liczbę prób, wtedy po prostu powiem im, że
mieli 5 prób i oni nie zgadłem numeru i powiem
im numer.
Więc ostatnie wyjście do użytkownika do powiedzenia im, że nie wygrali gry i powiedz
im, jaki był numer.
Więc miałeś 5 prób i nie udało Ci się, liczba była liczbą losową.
Ok, więc czy to ma sens?
Robimy tutaj wiele rzeczy.
Używamy instrukcji if, w przeciwnym razie instrukcje w pętli i wdrażamy
grę liczbową.
A potem ostatnia rzecz to my powrót z funkcji głównej.
Więc przejdźmy dalej i skompilujmy i co powinieneś był robić
przez całe to ćwiczenie?
Powinieneś był testować i pracując w małych kawałkach.
Prawdopodobnie powinieneś był zacząłem pracować jako pierwszy,
po prostu uruchom liczbę losową testuj i kompiluj i testuj.
Następnie rozpocznij pętlę.
Upewnij się, że pętla działa tylko liczba zgadnięć, maksymalnie 5 razy, a następnie
uruchom to i przetestuj.
Następnie zapytaj użytkownika o odpowiedź trochę informacji, uruchom je
i przetestuj.
Następnie porównaj z tym, kiedy wyjść, jeśli odgadną poprawnie, przetestują, a następnie wypiszą
twoje stwierdzenia if test, tak bym wdrożył.
Więc zbudujmy to i zobacz, czy się skompiluje.
Miejmy nadzieję, że nie popełniłem żadnych błędów.
Powiem budować.
Mam błąd, ja mają nieprawidłowy numer.
Musi to być liczba losowa, nie losowe, ponieważ tak nazywa
się moja zmienna.
I tym razem mam 0 błędów 2 ostrzeżenia.
Mam procent d spodziewaj się dopasowania int.
Zapomniałem zgasić liczba losowa lub przypuszczenie.
Zgadnij tutaj i zgadnij i drugi.
Chcę im powiedzieć, że ich domysły przepraszam, zgaduję, że było źle, nie muszę tego
robić, ale tylko mała miła rzecz.
Teraz zbudujmy to, ponieważ ty zawsze chcesz naprawić swoje ostrzeżenia.
Chcesz mieć 0 ostrzeżeń 0 błędów.
Teraz, kiedy to uruchamiamy, musimy przetestować.
Jest wiele różnych testów sprawy, które chcesz tutaj uruchomić.
Będziesz chciał przeprowadzić wiele testów przypadków, ponieważ pamiętaj, że nigdy nie jest dobrze
przetestować tylko jedną rzecz.
Więc tutaj jest napisane, że to zgadywanie game, wybrałem
liczbę od 0 do 20, którą musisz myślę, że zostało Ci 5 prób.
Więc wstawię 16.
Przepraszamy, liczba 16 jest błędna, plik liczba jest mniejsza niż to.
Spróbuję to mieć 8.
8 jest źle, mniej niż to.
Mam zamiar zrobić 4.
4 jest źle, mój numer jest większy niż to.
Och, popełniłem błąd, ja nie przeczytałem tego jako pierwszy.
Więc to jest większe niż 8.
Spróbujmy 12.
Zostały mi tylko 2 próby.
Chyba dobrze z 12.
Więc mówi gratulacje.
Ale chcesz też przetestować awarię.
Chcesz przetestować kilka rzeczy tutaj, ale tutaj pozwól mi przetestować i
powiem moje przypuszczenia i Po prostu wstawię 0.
0 jest błędne.
Zamierzam nadal wprowadzać 0 i tam chyba 5 razy się myliłem.
Mówi, że miałeś 5 prób i nie powiodło się.
Numer, który ty chciał zgadnąć, że to 3.
Więc to działa.
Teraz przetestujmy, aby upewnić się, co dzieje się, gdy wprowadzimy nieprawidłowe liczby.
jeśli wpiszę 45.
Powiedziałem, że liczba to 0 i 20.
To kolejny przypadek testowy i liczyło się to jako próba.
Gdybym nie chciał tego konta jako spróbuj, może mieć zagnieżdżoną pętlę.
Myślę, że to wszystko.
Przetestowaliśmy wszystkie przypadki.
Przetestowaliśmy przypadki, w których zgadłeś pomyślnie.
Przetestowaliśmy przypadek, w którym nie zgadłeś pomyślnie.
I przetestowaliśmy przypadek, w którym podałeś nieprawidłowy numer.
Może jedyny inny test tak upewnić się, że mówi większe niż i niższe niż, co, jak sądzę, przetestowaliśmy
w pierwszym, faktycznie by nam powiedziało aby
wprowadzić mniej lub więcej niż.
Więc spróbujmy tego.
Więc o tej porze, kiedy wpisuję 20, mówi mniej niż to, co jest dobre.
Teraz mam zamiar wejść 10 i zgadłem.
Więc myślę, że oni szybko.
Ale powinniśmy zobaczyć mniej niż i większe niż w tym samym wyjściu.
Spróbuj ponownie i losowo numer działa, ponieważ generuję różne liczby za
każdym razem, gdy uruchamiam program.
20 jest źle.
Teraz spróbujmy 19.
Spróbujmy 1 i to jest większe niż to.
Więc widzę więcej i mniej niż.
Więc jestem całkiem pewien, że to działa.
Według mnie, wygląda całkiem dobrze.
Jedna rzecz, którą powinieneś był zauważyć w programie był mały błąd,
który w pewnym sensie cię testowałem.
Więc kiedy go uruchomiłeś, ponieważ mamy ta przerwa tutaj, nadal będzie wydrukowane, że
mi się nie udało mimo że mi się udało.
Więc powinieneś był zauważyć że w poprzednim wyjściu, myślę,
że właściwa liczba.
Gratulacje są wydrukowane.
Ale potem wydrukowało też I nie powiodło się, to nie wydaje się właściwe.
Więc sposobem na naprawienie tego jesteś Ty nie masz przełomu,
chcesz mieć powrót.
A więc teraz, kiedy wraca
nie zostanie wydrukowany w linii 39, jeśli wygrasz.
To się nie drukuje że zawiodłeś.
Więc ostatni test, a powinieneś złapaliśmy to
wcześniej, ale kiedy budujemy i zgadujemy, nie wyświetli błędu.
Więc możemy uratować bieganie i kiedy my uruchom ten, masz 5 domysłów.
Powiem mniej niż 10.
Powiemy 6 i zgadłem.
I tam zauważysz mówi gratulacje.
Nie widzimy tego dodatkowego wyjścia to mówi, że też zawiodłem.
Więc chcesz się upewnić dodaj ten powrót w linii 30,
aby program działał poprawnie.
Możesz dodać kolejne stwierdzenie if chciałeś, żeby
nie drukował printf, mógłbyś mieć przerwę tu i wtedy w
printf mogłeś sprawdzić, ile razy zgadłeś trzeba było również ustalić, czy było
mniej niż 5, to gratulacje.
Ale mały błąd, i miejmy nadzieję, że zauważyłeś
to podczas testowania, powrót to naprawi.
A więc zgrabny mały program.
Mam nadzieję, że pomogło ci to nauczyć się dużo o zapętleniu
i wszystkich twoich decyzjach i naprawdę rozwiązywać problemy.
Miejmy nadzieję, że wyciągnąłeś to z głowy i zaprojektowałem to
zanim zacząłeś pisać kod, to jest zawsze ważne.
Mam nadzieję że to pomoże.
Dostarczę kod źródłowy, więc ty może je porównać, zobaczyć i przeanalizować.
Dziękuję Ci.