1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,640 ZAMYLA Chandler: To-ja, Zamyla. 3 00:00:02,640 --> 00:00:06,950 Dzisiaj mamy zamiar wdrożyć Mario, gdzie zwracamy Mario 4 00:00:06,950 --> 00:00:10,730 pełny piramida go przeskoczyć. 5 00:00:10,730 --> 00:00:14,430 Złammy dół podzadań tego problemu. 6 00:00:14,430 --> 00:00:17,930 >> Po pierwsze, chcemy, aby skłonić użytkownika dla wysokości piramidy. 7 00:00:17,930 --> 00:00:20,510 A potem chcemy się upewnić, że wejście jest ważny. 8 00:00:20,510 --> 00:00:23,280 A potem mamy zamiar Aby narysować piramidę. 9 00:00:23,280 --> 00:00:26,850 >> Więc pomówmy o monitowania i walidacji danych wprowadzanych przez użytkownika. 10 00:00:26,850 --> 00:00:29,920 To może wyglądać tego, pętla do-while, że 11 00:00:29,920 --> 00:00:33,250 prosi użytkownika dla całkowite i to tylko powtarza 12 00:00:33,250 --> 00:00:35,700 jeżeli całkowita jest nieprawidłowy. 13 00:00:35,700 --> 00:00:38,220 Więc co należy ten warunek być? 14 00:00:38,220 --> 00:00:40,630 >> Do tego, wróćmy specyfikacji. 15 00:00:40,630 --> 00:00:46,240 Cóż, spec mówi nam, że każda ważna wysokość będzie wynosić od 0 do 23, 16 00:00:46,240 --> 00:00:47,350 włącznie. 17 00:00:47,350 --> 00:00:51,400 Więc to znaczy, że wszelkie nieprawidłowe wysokość będzie mniejsza niż 0 18 00:00:51,400 --> 00:00:53,840 lub więcej niż 23. 19 00:00:53,840 --> 00:00:57,220 >> Więc teraz, że mamy tę informację, niech zaprojektować naszą kondycję. 20 00:00:57,220 --> 00:00:59,230 Ale musimy być ostrożni, bo teraz mamy 21 00:00:59,230 --> 00:01:02,130 dwa Boolean które chcemy ocenić. 22 00:01:02,130 --> 00:01:04,150 >> Tu podajemy wam z tabeli prawdy. 23 00:01:04,150 --> 00:01:07,520 To pozwala nam na dwa Boolean, Boolean jeden i dwa. 24 00:01:07,520 --> 00:01:13,600 I możemy ocenić zarówno bool1 i BOOL2 lub bool1 lub BOOL2. 25 00:01:13,600 --> 00:01:17,390 >> Więc jaka jest różnica między a i lub? 26 00:01:17,390 --> 00:01:21,810 Cóż, bool1 i BOOL2 będzie ocenić wartość true wtedy i tylko 27 00:01:21,810 --> 00:01:25,680 jeśli oba Boolean są prawdziwe, natomiast lub operacji 28 00:01:25,680 --> 00:01:30,190 będzie prawdziwe, jeśli któryś z gdy Boolean lub oba są prawdziwe. 29 00:01:30,190 --> 00:01:33,110 Tak z tego względu, sprawdzić, czy można dowiedzieć się, 30 00:01:33,110 --> 00:01:37,460 co odpowiedni warunek Twój pętli do-while za niepoprawną n 31 00:01:37,460 --> 00:01:38,850 będzie. 32 00:01:38,850 --> 00:01:43,540 >> Z tym, jakie skłoniły i zatwierdzone użytkownik jest wysokość piramidy 33 00:01:43,540 --> 00:01:44,550 że chcą. 34 00:01:44,550 --> 00:01:47,740 Więc teraz, to do nas narysować piramidę. 35 00:01:47,740 --> 00:01:50,520 Pełne piramidę za to Problem będzie wyglądać trochę 36 00:01:50,520 --> 00:01:56,340 jak ten, w którym mamy lewy piramidę, pewne luki, a następnie w prawo piramidy. 37 00:01:56,340 --> 00:01:58,630 Warto więc podzielenie go trochę. 38 00:01:58,630 --> 00:02:03,510 >> Jeśli pójdę do mojego edytora tekstu, tutaj mam rysowane nam piramidę wyrównany do lewej. 39 00:02:03,510 --> 00:02:05,160 Ale to nie zrobi. 40 00:02:05,160 --> 00:02:10,139 To, co chcemy zrobić, to chcemy wpierw stworzyć wyrównany do prawej piramidę. 41 00:02:10,139 --> 00:02:13,580 Tak więc, aby to zrobić, po prostu wcisnąć moje skróty wzdłuż boku, 42 00:02:13,580 --> 00:02:18,240 Ja tylko zamiar umieścić kilka znaków pomiędzy nimi, tylko tych kropek. 43 00:02:18,240 --> 00:02:22,560 Potem mam zamiar umieścić dwa na Następna linia, a jeden na tej linii. 44 00:02:22,560 --> 00:02:26,070 I tak oto mam wyrównany do prawej piramidę. 45 00:02:26,070 --> 00:02:28,540 >> Po tym, mam zamiar wróć do górnego rzędu 46 00:02:28,540 --> 00:02:33,930 i umieścić w szczelinie, która jest na spec, dwie przestrzenie. 47 00:02:33,930 --> 00:02:37,680 Potem idę do wypełnienia Inne boku piramidy. 48 00:02:37,680 --> 00:02:42,030 Zamierzam przejść do drugiego rzędu, pisać dwa pomieszczenia do szczeliny, a następnie dwa 49 00:02:42,030 --> 00:02:42,920 skróty. 50 00:02:42,920 --> 00:02:47,020 Powrót do trzeciego rzędu, dwa miejsca przez szczeliny i trzech skrótów. 51 00:02:47,020 --> 00:02:51,480 I na koniec, dwie przestrzenie przez szczeliny i czterech skrótów. 52 00:02:51,480 --> 00:02:54,400 Więc to, co pełne piramida będzie wyglądać. 53 00:02:54,400 --> 00:02:57,260 >> Oczywiście, nie chcemy Te punkty na drodze. 54 00:02:57,260 --> 00:03:01,220 Więc mamy zamiar zastąpić je kropki, umieszczając kilka spacji. 55 00:03:01,220 --> 00:03:03,720 Jeden, dwa, trzy na pierwszej linii. 56 00:03:03,720 --> 00:03:05,650 Jeden, dwa na sekundę. 57 00:03:05,650 --> 00:03:08,200 I jeden na trzeciej linii. 58 00:03:08,200 --> 00:03:12,060 Więc to, co byśmy zrobili, gdybyśmy chciał po prostu zrobić pełną piramidę, 59 00:03:12,060 --> 00:03:13,700 powiedzieć, w naszym edytorze tekstowym. 60 00:03:13,700 --> 00:03:15,860 >> Więc weźmy to, rozumienia wzorców, 61 00:03:15,860 --> 00:03:19,870 i przekonwertować go do jakiegoś Pseudokod. 62 00:03:19,870 --> 00:03:24,500 Dla każdego wiersza piramidy, chcemy aby wydrukować, a następnie w lewo piramidę 63 00:03:24,500 --> 00:03:26,580 przerwa, a potem w prawo piramidy. 64 00:03:26,580 --> 00:03:30,260 Na lewym piramidy, możemy wydrukować Wymaganą ilość przestrzeniach 65 00:03:30,260 --> 00:03:31,740 następnie hashe. 66 00:03:31,740 --> 00:03:35,030 Następnie wydrukować lukę, która Zaledwie dwa miejsca za każdym razem. 67 00:03:35,030 --> 00:03:38,080 A w prawej piramidy, możemy wydrukować odpowiednia liczba skrótów. 68 00:03:38,080 --> 00:03:41,410 >> Dla drugiego rzędu, przeprowadzono dokładnie taki sam sposób. 69 00:03:41,410 --> 00:03:44,510 Drukujemy przestrzenie dla lewego piramida, wymaganą ilość 70 00:03:44,510 --> 00:03:49,930 z mieszań, luka, dwóch pomieszczeń oraz potem hashe dla prawej piramidy. 71 00:03:49,930 --> 00:03:52,490 >> Zajmijmy wzór dla lewego piramidy. 72 00:03:52,490 --> 00:03:55,660 Gdybym miał do celów w tym przykładzie, wysokość 73 00:03:55,660 --> 00:03:58,790 ośmiu wnioskowanych przez użytkownik, to mój pierwszy wiersz 74 00:03:58,790 --> 00:04:01,020 miałoby jeden hash i siedem miejsc. 75 00:04:01,020 --> 00:04:03,860 Mój drugi rząd musiałby dwa hashe, sześć spacji. 76 00:04:03,860 --> 00:04:06,749 Trzeci rząd, trzy, pięć hashe obowiązuje. 77 00:04:06,749 --> 00:04:09,040 Prawdopodobnie można to zrobić samodzielnie na wysokości ośmiu 78 00:04:09,040 --> 00:04:13,470 i określenie dla każdego rzędu ile mieszań i ile miejsca trzeba. 79 00:04:13,470 --> 00:04:16,209 Ale to, co chcemy zrobić, to chcemy abstrakcyjne go. 80 00:04:16,209 --> 00:04:22,660 Więc pytam Cię o dowolnej n-tego wiersza, ile mieszań i ile miejsca potrzebujemy? 81 00:04:22,660 --> 00:04:25,410 >> Teraz, jak to określić wzorzec dla ilu mieszań 82 00:04:25,410 --> 00:04:29,920 i ile miejsca jest potrzebne do każda n-ty wiersz dla danej wysokości, 83 00:04:29,920 --> 00:04:32,910 Pamiętaj, aby być ostrożnym od tego, jak jesteś indeksowania. 84 00:04:32,910 --> 00:04:37,160 Co mam na myśli to, że w codziennym Życie większości z nas rozpoczyna liczenie po drugim. 85 00:04:37,160 --> 00:04:39,680 Więc pierwszy wiersz będzie numerem jeden. 86 00:04:39,680 --> 00:04:43,620 A drugi wiersz byłby wiersz liczba dwóch, tak dalej, i tak dalej. 87 00:04:43,620 --> 00:04:47,620 >> Ale w informatyce i CS50, mamy zero-indeksowane. 88 00:04:47,620 --> 00:04:50,750 Więc zacząć odliczanie od zera. 89 00:04:50,750 --> 00:04:54,020 Więc pierwszy wiersz będzie będzie numer wiersza zero. 90 00:04:54,020 --> 00:04:56,640 A w drugim rzędzie byłoby numer jeden wiersz. 91 00:04:56,640 --> 00:05:02,510 Więc gdybym miał wysokość ośmiu do moja piramida, to ostatnia wartość n 92 00:05:02,510 --> 00:05:05,850 byłby rzeczywiście siedem, a nie osiem. 93 00:05:05,850 --> 00:05:07,010 >> Więc uważaj na ten temat. 94 00:05:07,010 --> 00:05:10,750 A należy pamiętać, gdy jesteś ustalania Twój wzór czy zero-indeksowane 95 00:05:10,750 --> 00:05:12,360 lub jeden indeksowane 96 00:05:12,360 --> 00:05:13,070 >> OK. 97 00:05:13,070 --> 00:05:15,380 Więc teraz, że mamy wzór dla lewego piramidy 98 00:05:15,380 --> 00:05:18,650 musimy określić wzór do szczeliny. 99 00:05:18,650 --> 00:05:20,480 Na szczęście, jest to bardzo proste. 100 00:05:20,480 --> 00:05:22,690 To po prostu zawsze dwie przestrzenie. 101 00:05:22,690 --> 00:05:25,240 >> Teraz przystępujemy do właściwego wzoru. 102 00:05:25,240 --> 00:05:27,220 Pierwszy wiersz będzie miał jeden hash. 103 00:05:27,220 --> 00:05:28,640 Drugi rząd, dwa. 104 00:05:28,640 --> 00:05:29,530 Trzeci rząd, trzy. 105 00:05:29,530 --> 00:05:30,790 Itd. itp. 106 00:05:30,790 --> 00:05:35,540 Więc jeszcze raz, określić dla każdego abstrakcyjne n i każda wysokość ilu mieszań 107 00:05:35,540 --> 00:05:38,810 A ilu przestrzenie Każdy wiersz powinien mieć. 108 00:05:38,810 --> 00:05:39,700 >> OK. 109 00:05:39,700 --> 00:05:45,050 Więc wiemy, że dla każdego wiersza my trzeba przeprowadzić jakiś proces. 110 00:05:45,050 --> 00:05:46,600 Jak to robimy? 111 00:05:46,600 --> 00:05:50,440 Cóż, możemy użyć pętli for konstruktem, składa się z inicjalizacji 112 00:05:50,440 --> 00:05:52,310 stan i aktualizacja. 113 00:05:52,310 --> 00:05:54,830 Pętle mogą być stosowane powtórzyć proces. 114 00:05:54,830 --> 00:05:59,610 >> Tak mówią chcę się przywitać, Świat 50 razy, to mój pętli for 115 00:05:59,610 --> 00:06:03,510 będzie wyglądać tak, gdzie Zainicjować mój zmienną zero. 116 00:06:03,510 --> 00:06:06,200 Warunkiem jest to, że jest mniejszy niż 50. 117 00:06:06,200 --> 00:06:09,670 A potem zmiana to chodzi Przyrosty o jeden za każdym razem. 118 00:06:09,670 --> 00:06:14,700 Więc co by to zrobić byłoby wydrukować Hello, World 50 razy z rzędu. 119 00:06:14,700 --> 00:06:18,080 >> Teraz, powiedzmy chciałem iteracji na wysokości budowli. 120 00:06:18,080 --> 00:06:21,560 Wtedy zamiast ciężkiej kodowania jakaś wartość w warunkach, 121 00:06:21,560 --> 00:06:23,280 Ja po prostu użyć zmienną wysokość. 122 00:06:23,280 --> 00:06:27,180 Więc co to będzie zrobić, to iterate na wysokości każdego wiersza. 123 00:06:27,180 --> 00:06:30,280 I mogę zrobić coś w środku z ciała pętli. 124 00:06:30,280 --> 00:06:32,710 >> Co chcemy zrobić Wewnątrz korpusu pętli? 125 00:06:32,710 --> 00:06:36,550 Cóż, jak już wskazano wcześniej, chcemy aby wydrukować spacje i mieszań 126 00:06:36,550 --> 00:06:40,730 dla lewej piramidy, a następnie wydrukować dwie przestrzenie, a następnie wydrukować mieszań. 127 00:06:40,730 --> 00:06:42,500 Więc już zorientowali, że obecnie. 128 00:06:42,500 --> 00:06:45,670 Więc możemy zacząć wypełniać w naszym programie dużo więcej. 129 00:06:45,670 --> 00:06:49,850 >> Tutaj mam zewnętrznej pętli for, które iteracje nad każdym rzędzie piramidy. 130 00:06:49,850 --> 00:06:53,340 I wewnątrz tego ciała jadę wielokrotnie drukować przestrzenie, 131 00:06:53,340 --> 00:06:56,860 skróty wielokrotnie, a potem przerwa, a następnie skróty dla prawego piramidy 132 00:06:56,860 --> 00:07:00,440 a następnie wreszcie nowy Linia do początku następnego wiersza. 133 00:07:00,440 --> 00:07:02,860 >> Z tym, jakie skłoniły użytkownik po wejściu. 134 00:07:02,860 --> 00:07:04,510 Postaraliśmy się, że jest to ważne. 135 00:07:04,510 --> 00:07:06,280 A potem mamy wyciągnąć piramidę. 136 00:07:06,280 --> 00:07:09,540 Więc Mario może z powodzeniem wspiąć się na piramidę. 137 00:07:09,540 --> 00:07:10,970 >> Nazywam się Zamyla. 138 00:07:10,970 --> 00:07:13,840 I to jest CS50. 139 00:07:13,840 --> 00:07:15,419