1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA Chandler: To ja, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Dzisiaj w Mario, będziemy się rysunek pół piramidę Mario 4 00:00:06,910 --> 00:00:08,290 wspinać się w górę. 5 00:00:08,290 --> 00:00:11,570 >> Więc porozmawiajmy o naszych do zrobienia dla tego problemu. 6 00:00:11,570 --> 00:00:13,610 Jedziemy chcieć do szybkiego i zatwierdź 7 00:00:13,610 --> 00:00:18,290 użytkownikowi na wejście, jak ważny wysoka chcą piramidy Mario być. 8 00:00:18,290 --> 00:00:20,090 A potem mamy zamiar go wyciągnąć. 9 00:00:20,090 --> 00:00:24,870 Warto więc zacząć z prośbą i walidacji użytkownika o ich wejściu. 10 00:00:24,870 --> 00:00:27,640 >> Możemy skorzystać z następujących Funkcja CS50 Biblioteka 11 00:00:27,640 --> 00:00:31,160 uzyskać int, która zapewni, że użytkownik wprowadza liczbę całkowitą. 12 00:00:31,160 --> 00:00:35,730 Wszelkie całkowite dodatnie, ujemne całkowitymi, numer 0 są uczciwa gra. 13 00:00:35,730 --> 00:00:41,670 W przeciwnym wypadku, użytkownik zostanie poproszony o ponownie, dopóki wejście one ważne całkowitej. 14 00:00:41,670 --> 00:00:44,210 Teraz choć get int robi dużo pracy za nami 15 00:00:44,210 --> 00:00:46,730 w celu zapewnienia, że użytkownik daje nam całkowitą, 16 00:00:46,730 --> 00:00:50,760 wciąż musimy zastosować niektóre dodatkowe ograniczenia na ten temat. 17 00:00:50,760 --> 00:00:56,420 Po tym wszystkim, nie możemy mieć Mario wspinaczki pół piramidy o wysokości ujemnego 12. 18 00:00:56,420 --> 00:00:59,040 >> Poza tym, specyfikacja problemu 19 00:00:59,040 --> 00:01:02,490 mówi, że możemy tylko Mario pozwalają wspinać 20 00:01:02,490 --> 00:01:06,940 piramida wysokości pomiędzy 0 i 23. 21 00:01:06,940 --> 00:01:11,120 OK, więc oznacza to, że trzeba do ciągłego monitowania użytkownika 22 00:01:11,120 --> 00:01:14,320 aby dać nam ważny Numer i dopiero dalej 23 00:01:14,320 --> 00:01:17,120 po ich dałeś nam prawidłową wysokość. 24 00:01:17,120 --> 00:01:18,720 Jak to robimy? 25 00:01:18,720 --> 00:01:23,760 >> Cóż, procesy ciągłe dają nam idea loops-- robi coś 26 00:01:23,760 --> 00:01:24,720 powtarzalnie. 27 00:01:24,720 --> 00:01:28,220 Jedną pętlę w C w czasie Pętla, która będzie stale 28 00:01:28,220 --> 00:01:33,480 wykonać ciała pętli, o ile dany warunek jest prawdziwy. 29 00:01:33,480 --> 00:01:36,200 Jak tylko warunku wartość false, 30 00:01:36,200 --> 00:01:39,770 program przystąpi do co przychodzi potem. 31 00:01:39,770 --> 00:01:43,180 Więc gdy pętle są jednym ze sposobów zapewnienie, że stale 32 00:01:43,180 --> 00:01:45,320 poprosi użytkownika o podanie ważnego wkładu. 33 00:01:45,320 --> 00:01:50,070 I raz dają nam ważny wkład, my przystąpić do co będzie dalej. 34 00:01:50,070 --> 00:01:54,380 Wiemy, że mamy zamiar zapytać użytkownik do wprowadzania co najmniej raz. 35 00:01:54,380 --> 00:01:59,200 Teraz dochodzimy do siostrą pętla, która jest zrobić, gdy pętla. 36 00:01:59,200 --> 00:02:02,650 >> Czy pętli while wykona Ciało pętli co najmniej raz. 37 00:02:02,650 --> 00:02:06,150 Więc bez sprawdzania warunku będzie wykonywał ciała pętli. 38 00:02:06,150 --> 00:02:09,750 A następnie sprawdzić stan zobaczyć czy to musi się powtarzać. 39 00:02:09,750 --> 00:02:13,080 Jest to przydatne, gdy jesteśmy walidacji danych wprowadzanych przez użytkownika. 40 00:02:13,080 --> 00:02:15,830 Wiemy, że będziemy zapytać ich co najmniej raz. 41 00:02:15,830 --> 00:02:18,780 Więc zrób pętli while może wyglądać następująco. 42 00:02:18,780 --> 00:02:20,090 Mamy całkowitą n. 43 00:02:20,090 --> 00:02:22,760 Wewnątrz i zrobienia while, natychmiast 44 00:02:22,760 --> 00:02:24,750 pyta użytkownika o całkowitej. 45 00:02:24,750 --> 00:02:29,740 Jeśli n jest nieważny, to będziemy je skłonić znowu i znowu i znowu, dopóki nie 46 00:02:29,740 --> 00:02:31,820 dają nam ten ważny całkowitą. 47 00:02:31,820 --> 00:02:37,440 Na koniec, gdy n jest poprawna informacja, będziemy przystąpić do reszty działania programu. 48 00:02:37,440 --> 00:02:41,830 >> Więc wróćmy do spec i sprawdzenie jakie są warunki dla prawidłowego wejścia 49 00:02:41,830 --> 00:02:43,670 będzie. 50 00:02:43,670 --> 00:02:48,090 Poprawne wysokości zamiar wynosić pomiędzy 0 a 23, włącznie. 51 00:02:48,090 --> 00:02:53,350 Więc nieważne wysokości zamiar być mniejsza niż 0 lub więcej niż 23. 52 00:02:53,350 --> 00:02:56,420 Dlatego należy pamiętać, aby zaprojektować Twój stan ostrożnie 53 00:02:56,420 --> 00:02:58,660 Wiedząc, że warunkiem do zrobienia pętli while 54 00:02:58,660 --> 00:03:01,470 powinien być natomiast n jest nieprawidłowy. 55 00:03:01,470 --> 00:03:05,080 Teraz to nie będzie proste pojedyncze wyrażenie logiczne. 56 00:03:05,080 --> 00:03:07,630 My będziemy musieli połączyć dwa różne wyrażenia 57 00:03:07,630 --> 00:03:09,900 aby cały nasz stan. 58 00:03:09,900 --> 00:03:13,290 >> Więc wystarczy spojrzeć na tabelę prawdy Mam Już wam wskazówkę, że jesteśmy 59 00:03:13,290 --> 00:03:15,200 będziemy mieć do czynienia z dwóch wartości logicznych. 60 00:03:15,200 --> 00:03:19,620 Więc tutaj jest tabela prawdy gdzie mieć dwa Booleans-- logiczną 1 i 2. 61 00:03:19,620 --> 00:03:27,050 Mamy więc możliwość oceny bool1 i BOOL2 lub bool1 lub BOOL2. 62 00:03:27,050 --> 00:03:31,980 I będzie tylko wtedy, gdy oba prawdziwe Booleans ocenić wartość true, podczas gdy wszystkie 63 00:03:31,980 --> 00:03:37,280 albo być prawdziwe, dopóki jeden z dwa Boolean wartość true. 64 00:03:37,280 --> 00:03:41,450 OK, więc poświęć chwilę, przerwa ta wideo i strawić tej tabeli prawdy. 65 00:03:41,450 --> 00:03:42,930 Będę tu czekał. 66 00:03:42,930 --> 00:03:45,760 Kiedy wrócisz, zobacz czy można poskładać 67 00:03:45,760 --> 00:03:51,910 Boolean wyrażenie swojej Warunkiem n jest nieprawidłowy wejściowego. 68 00:03:51,910 --> 00:03:54,420 >> Więc teraz, że mamy ważne dane wprowadzone przez użytkownika, niech 69 00:03:54,420 --> 00:03:58,710 iść dalej i mówić o tym, jak może zwrócić połowę piramidę. 70 00:03:58,710 --> 00:04:03,410 Tu, w tym prostym edytorze tekstowym Mam wyciągnąć lewą wyrównane piramidę. 71 00:04:03,410 --> 00:04:07,050 Ale wiemy, że musimy nasze piramida być wyrównany do prawej. 72 00:04:07,050 --> 00:04:08,650 Więc jak mogę to zrobić? 73 00:04:08,650 --> 00:04:11,440 Cóż, mógłbym spróbować pchnąć wszystko na bok 74 00:04:11,440 --> 00:04:14,880 tylko o oddanie trochę znaków pomiędzy. 75 00:04:14,880 --> 00:04:16,779 A potem, przez następne linia, mam zamiar umieścić 76 00:04:16,779 --> 00:04:20,970 kilka znaków pchnąć ją wzdłuż, i further-- tak dalej i tak forth-- 77 00:04:20,970 --> 00:04:23,360 dopóki mam prawo wyrównany piramidę. 78 00:04:23,360 --> 00:04:27,780 Tak więc mamy do czynienia z właściwą align piramidę, ale nie wygląda tak wielka, z kropkami. 79 00:04:27,780 --> 00:04:30,680 Ale nadal chcemy utrzymać ten piękny odstępy. 80 00:04:30,680 --> 00:04:35,260 Więc idę dosłownie wstawić kilka spacji. 81 00:04:35,260 --> 00:04:39,420 >> Zamiast trzech kropek, będę umieścić jeden, dwa, trzy przestrzenie. 82 00:04:39,420 --> 00:04:40,370 W drugiej linii. 83 00:04:40,370 --> 00:04:42,640 Powiem jedno, dwa pomieszczenia. 84 00:04:42,640 --> 00:04:45,370 A w przedostatnim linia, tylko jedno miejsce. 85 00:04:45,370 --> 00:04:48,290 I tu mam prawo wyrównany piramidę. 86 00:04:48,290 --> 00:04:52,170 Od robienia przykład w tekście redaktor, mamy pomysł na wzór 87 00:04:52,170 --> 00:04:54,590 że użyjemy narysować pół piramidy. 88 00:04:54,590 --> 00:04:58,080 Dla każdego rzędu, co zrobiliśmy jest wpiszemy jakieś przestrzenie, 89 00:04:58,080 --> 00:05:00,170 a następnie wpisane niektóre skróty, a następnie wpisane 90 00:05:00,170 --> 00:05:03,020 klawisz Enter, która tworzy nową linię. 91 00:05:03,020 --> 00:05:07,770 Więc teraz, że mamy to, chodźmy jeden krok dalej i znaleźć wzór. 92 00:05:07,770 --> 00:05:10,170 >> Więc powiem, bo Zainteresowanie tym przykładzie 93 00:05:10,170 --> 00:05:12,480 mamy do czynienia z wysokości 8. 94 00:05:12,480 --> 00:05:17,100 Pierwszy rząd będzie miał dwa mieszań Wynika to siedem miejsc. 95 00:05:17,100 --> 00:05:20,020 Na skróty second-- trzy, sześć spacji. 96 00:05:20,020 --> 00:05:24,260 Po trzecie row-- cztery, pięć skróty spaces-- tak dalej, i tak dalej 97 00:05:24,260 --> 00:05:26,350 aż dojdziemy do n-tego rzędu. 98 00:05:26,350 --> 00:05:31,540 Tak więc, proszę was o n-tego rzędu, ilu mieszań będziemy mieć 99 00:05:31,540 --> 00:05:33,120 a ilu przestrzenie? 100 00:05:33,120 --> 00:05:37,000 Więc to do ciebie, aby dowiedzieć się, Wzór do reprezentowania ilu mieszań 101 00:05:37,000 --> 00:05:42,020 i ile miejsca są potrzebne n-tego rzędu, kiedy masz jakąś wysokość. 102 00:05:42,020 --> 00:05:46,060 >> Teraz kiedy to zastanawianie się, należy uważać, jak masz indeksowania. 103 00:05:46,060 --> 00:05:49,170 Co mam na myśli to, że w codziennym życiu wszystkich nas 104 00:05:49,170 --> 00:05:51,540 rozpocząć liczenie, zwykle o 1. 105 00:05:51,540 --> 00:05:55,950 Ale w CS50 oraz w informatyce Ogólnie rzecz biorąc, jesteśmy 0 indeksowane. 106 00:05:55,950 --> 00:06:00,620 Więc pierwszy wiersz będzie n 0 w przeciwieństwie do 1. 107 00:06:00,620 --> 00:06:04,550 Uważaj na to, gdy jesteś próbuje dowiedzieć się swój wzór. 108 00:06:04,550 --> 00:06:07,570 Teraz wróćmy do tego, jak mamy zamiar zwrócić naszą piramidę. 109 00:06:07,570 --> 00:06:12,300 Dla każdego wiersza, będziemy chcieli wydrukować spacje, wydrukować skrótów, 110 00:06:12,300 --> 00:06:14,050 a następnie wydrukować nową linię. 111 00:06:14,050 --> 00:06:19,160 Podpowiedź jest tutaj Słowo "dla" każdego wiersza. 112 00:06:19,160 --> 00:06:21,470 W C, mamy konstrukt nazywany pętli for 113 00:06:21,470 --> 00:06:25,250 która składa się z inicjalizacja, warunek, aktualizacja, 114 00:06:25,250 --> 00:06:26,790 a ciało pętli. 115 00:06:26,790 --> 00:06:31,360 >> Powiedzieć, że chciał powiedzieć, hello świecie, 50 razy, My dla pętli 116 00:06:31,360 --> 00:06:32,880 będzie wyglądać następująco. 117 00:06:32,880 --> 00:06:35,480 Zainicjować mój liczbę całkowitą 0. 118 00:06:35,480 --> 00:06:38,230 Warunkiem jest to, że jest mniejszy niż 50. 119 00:06:38,230 --> 00:06:42,350 I wtedy mój aktualizacja jest po prostu zwiększając I jeden za każdym razem. 120 00:06:42,350 --> 00:06:45,140 Możemy również użyć pętli for iteracyjne nad rzeczy. 121 00:06:45,140 --> 00:06:47,820 Zauważcie, jak nie mamy zakodowana numer, 122 00:06:47,820 --> 00:06:51,820 ale raczej umieścił zmienną Wysokość zamiast do stanu. 123 00:06:51,820 --> 00:06:56,420 Więc co ja robię tu ja iteracji nad każdym rzędzie piramidy. 124 00:06:56,420 --> 00:07:00,160 Mogę zrobić coś dla siebie row wewnątrz ciała mojego pętli. 125 00:07:00,160 --> 00:07:02,350 >> Co robimy w środku Ciało pętli? 126 00:07:02,350 --> 00:07:07,120 Cóż, jak już powiedziałem, jesteśmy drukowania przestrzenie i jesteśmy drukowania mieszań 127 00:07:07,120 --> 00:07:09,480 a my drukowania nową linię. 128 00:07:09,480 --> 00:07:11,950 Więc moja zewnętrzna dla pętli będzie wyglądać następująco. 129 00:07:11,950 --> 00:07:15,070 I iteracyjne nad każdym rzędzie piramidy, używania, 130 00:07:15,070 --> 00:07:18,890 w tym wypadku, wysokość jako zmienna która przechowuje wysokość piramidy. 131 00:07:18,890 --> 00:07:22,870 Wewnątrz ciała pętli, jestem zamiar wielokrotnie drukować przestrzenie, druk 132 00:07:22,870 --> 00:07:26,730 kilkakrotnie mieszań, a następnie wydrukować nową linię. 133 00:07:26,730 --> 00:07:31,010 >> Teraz, na podstawie wszystkich koncepcjach Rozmawiałem o tym w przechodni, 134 00:07:31,010 --> 00:07:35,210 powinieneś być w stanie monitować Użytkownik na wejściu, potwierdzić, że wejście, 135 00:07:35,210 --> 00:07:37,370 a następnie narysować pół piramidy. 136 00:07:37,370 --> 00:07:41,510 >> Nazywam się Zamyla, a to CS50. 137 00:07:41,510 --> 00:07:43,167