1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: To je meni, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Danas u Mario, mi ćemo biti crtanje pola piramidu za Mario 4 00:00:06,910 --> 00:00:08,290 popeti. 5 00:00:08,290 --> 00:00:11,570 >> Tako ćemo govoriti o našem to-do-a za ovaj problem. 6 00:00:11,570 --> 00:00:13,610 Mi ćemo željeti potaknuti i provjeriti 7 00:00:13,610 --> 00:00:18,290 korisnik za valjan unos tome visoka žele Mario piramida biti. 8 00:00:18,290 --> 00:00:20,090 A onda, idemo ga izvući. 9 00:00:20,090 --> 00:00:24,870 Pa krenimo sa navelo i vrednovanje korisniku za ulaz. 10 00:00:24,870 --> 00:00:27,640 >> Mi možemo iskoristiti CS50 Biblioteka funkcija 11 00:00:27,640 --> 00:00:31,160 dobili int koji će osigurati da Korisnik unosi prirodni broj. 12 00:00:31,160 --> 00:00:35,730 Bilo pozitivni cijeli brojevi, negativni cijeli brojevi, broj 0 su sve fer igra. 13 00:00:35,730 --> 00:00:41,670 Inače, korisnik će biti zatraženo da ponovo pokušati dok su ulaz važeći cijeli broj. 14 00:00:41,670 --> 00:00:44,210 Sada, iako get int radi puno posla za nas 15 00:00:44,210 --> 00:00:46,730 kako bi se osiguralo da se korisnički nam daje prirodni broj, 16 00:00:46,730 --> 00:00:50,760 mi još uvijek treba primjenjivati ​​neke dodatnih ograničenja na to. 17 00:00:50,760 --> 00:00:56,420 Uostalom, ne možemo imati Mario penjanje pol piramida visine negativnog 12. 18 00:00:56,420 --> 00:00:59,040 >> Osim toga, specifikacija problema 19 00:00:59,040 --> 00:01:02,490 kaže da možemo jedino omogućiti Mario penjati 20 00:01:02,490 --> 00:01:06,940 piramida visine između 0 i 23. 21 00:01:06,940 --> 00:01:11,120 OK, to znači da trebamo stalno tražiti od korisnika 22 00:01:11,120 --> 00:01:14,320 da nam valjana broj i samo nastavite 23 00:01:14,320 --> 00:01:17,120 nakon što ste nam dali važeću visinu. 24 00:01:17,120 --> 00:01:18,720 Kako ćemo to učiniti? 25 00:01:18,720 --> 00:01:23,760 >> Pa, kontinuirani procesi nam dati ideja loops-- radi nešto 26 00:01:23,760 --> 00:01:24,720 ponavljajući. 27 00:01:24,720 --> 00:01:28,220 Jedna petlja u C kao neko petlja koja će kontinuirano 28 00:01:28,220 --> 00:01:33,480 izvršiti tijelo petlje sve dok je zadani uvjet true. 29 00:01:33,480 --> 00:01:36,200 Čim taj uvjet vrijednost false, 30 00:01:36,200 --> 00:01:39,770 program će nastaviti s ono što dolazi nakon toga. 31 00:01:39,770 --> 00:01:43,180 Dakle, dok petlje su jedan od načina osiguravanje da mi stalno 32 00:01:43,180 --> 00:01:45,320 brz korisnik za valjanu ulaz. 33 00:01:45,320 --> 00:01:50,070 I kad su nam dati valjan ulaz, mi ćemo nastaviti na ono što slijedi. 34 00:01:50,070 --> 00:01:54,380 Znamo da ćemo pitati korisnik za unos barem jednom. 35 00:01:54,380 --> 00:01:59,200 Dakle, sada smo došli do sestre while petlja, koja je do while petlja. 36 00:01:59,200 --> 00:02:02,650 >> Da li dok će petlje izvršiti Tijelo petlje barem jednom. 37 00:02:02,650 --> 00:02:06,150 Dakle, bez provjere stanja, to će izvršiti tijelo petlje. 38 00:02:06,150 --> 00:02:09,750 A onda provjeriti stanje kako bi vidjeli da li to treba ponoviti. 39 00:02:09,750 --> 00:02:13,080 To dolazi u ruci kada mi smo potvrđivanja korisničkog unosa. 40 00:02:13,080 --> 00:02:15,830 Znamo da idemo pitati ih barem jednom. 41 00:02:15,830 --> 00:02:18,780 Dakle, do while petlja možda izgledati nešto poput ovoga. 42 00:02:18,780 --> 00:02:20,090 Imamo cijeli broj n. 43 00:02:20,090 --> 00:02:22,760 A unutar obveza dok petlju, odmah smo 44 00:02:22,760 --> 00:02:24,750 brz korisnik za cijeli broj. 45 00:02:24,750 --> 00:02:29,740 Ako n nije valjan, a onda ćemo ih potaknuti opet i opet i opet dok ne 46 00:02:29,740 --> 00:02:31,820 dajte nam tu valjani cijeli broj. 47 00:02:31,820 --> 00:02:37,440 Konačno, nakon nje je valjana ulaz, mi ćemo nastaviti s ostatkom našeg programa. 48 00:02:37,440 --> 00:02:41,830 >> Tako ćemo se vratiti u spec i provjere što su uvjeti za valjanu ulaz 49 00:02:41,830 --> 00:02:43,670 će biti. 50 00:02:43,670 --> 00:02:48,090 Valjana visine idu biti između 0 i 23, uključivo. 51 00:02:48,090 --> 00:02:53,350 Dakle, invalid visine idu biti manji od 0 ili više od 23. 52 00:02:53,350 --> 00:02:56,420 Dakle, ne zaboravite osmisliti vaše stanje pažljivo, 53 00:02:56,420 --> 00:02:58,660 znajući da je stanje za do while petlja 54 00:02:58,660 --> 00:03:01,470 bi trebao biti, a n je valjan. 55 00:03:01,470 --> 00:03:05,080 Sada je to ne će biti jednostavno jedan logički izraz. 56 00:03:05,080 --> 00:03:07,630 Mi ćemo morati kombinirati dva različita izraza 57 00:03:07,630 --> 00:03:09,900 da bi cijeli naš uvjet. 58 00:03:09,900 --> 00:03:13,290 >> Dakle, neka je samo pogledati istini stol sam već dao mig da smo 59 00:03:13,290 --> 00:03:15,200 će se bave dvije logičke. 60 00:03:15,200 --> 00:03:19,620 Dakle, ovdje je tablica stanja u kojem sam imaju dva Booleans-- logičku 1 i 2. 61 00:03:19,620 --> 00:03:27,050 Dakle, imamo mogućnost za procjenu bool1 i bool2 ili bool1 ili bool2. 62 00:03:27,050 --> 00:03:31,980 Te će biti točno samo ako oba Logičke procijeniti na true, dok su svi 63 00:03:31,980 --> 00:03:37,280 ili će biti istina sve dok se jedan od dvije logičke true. 64 00:03:37,280 --> 00:03:41,450 U redu, tako da se na trenutak, zaustaviti ovo video i probaviti ovu istinu stol. 65 00:03:41,450 --> 00:03:42,930 Ja ću biti ovdje čeka. 66 00:03:42,930 --> 00:03:45,760 Kad se vratio, pogledajte ako možete spojiti 67 00:03:45,760 --> 00:03:51,910 Booleova izraz za stanje n bude invalid input. 68 00:03:51,910 --> 00:03:54,420 >> Tako da sada imamo vrijedi korisnički ulaz, neka je 69 00:03:54,420 --> 00:03:58,710 ići naprijed i razgovarati o tome kako se možda privući pola piramide. 70 00:03:58,710 --> 00:04:03,410 Ovdje u ovom jednostavnom programu za uređivanje teksta, Ja sam nacrtao lijevi usklađeni piramidu. 71 00:04:03,410 --> 00:04:07,050 No, znamo da je potrebna naša piramida biti u pravu poravnati. 72 00:04:07,050 --> 00:04:08,650 Pa kako bih mogao to učiniti? 73 00:04:08,650 --> 00:04:11,440 Pa, mogao bih pokušati gurnuti sve na stranu 74 00:04:11,440 --> 00:04:14,880 po samo stavljanjem malo lik u sredini. 75 00:04:14,880 --> 00:04:16,779 A onda, na sljedeći linija, idem staviti 76 00:04:16,779 --> 00:04:20,970 neki više znakova da ga gurnuti zajedno, i further-- tako dalje i tako forth-- 77 00:04:20,970 --> 00:04:23,360 dok imam pravo usklađeni piramidu. 78 00:04:23,360 --> 00:04:27,780 Dakle, mi imamo pravo align piramida, ali to ne izgleda tako velik s točkicama. 79 00:04:27,780 --> 00:04:30,680 Ali mi još uvijek žele Tvrdimo da je lijepo razmak. 80 00:04:30,680 --> 00:04:35,260 Tako da ću doslovno umetanje neke prostore. 81 00:04:35,260 --> 00:04:39,420 >> Umjesto tri točkice, ja ću stavi jedan, dva, tri mjesta. 82 00:04:39,420 --> 00:04:40,370 Na drugoj liniji. 83 00:04:40,370 --> 00:04:42,640 Ja ću staviti jedan, dva mjesta. 84 00:04:42,640 --> 00:04:45,370 A na predzadnjem linija, samo za jedno mjesto. 85 00:04:45,370 --> 00:04:48,290 I ovdje imam pravo usklađeni piramidu. 86 00:04:48,290 --> 00:04:52,170 Iz radi primjera u tekstu urednik, imamo ideju za uzorak 87 00:04:52,170 --> 00:04:54,590 da ćemo koristiti za crtanje pola piramide. 88 00:04:54,590 --> 00:04:58,080 Za svaki red, što smo radili je da upišete neke prostore, 89 00:04:58,080 --> 00:05:00,170 a zatim upisali neki hashes, a zatim upisali 90 00:05:00,170 --> 00:05:03,020 tipku Enter, koja stvara novu liniju. 91 00:05:03,020 --> 00:05:07,770 Tako da sada imamo da idemo jedan korak dalje i naći uzorak. 92 00:05:07,770 --> 00:05:10,170 >> Zato ću reći, jer je Interes iz ovog primjera, 93 00:05:10,170 --> 00:05:12,480 imamo posla s visine od 8. 94 00:05:12,480 --> 00:05:17,100 Prvi red će imati dva raspršivanja koja slijedi sedam mjesta. 95 00:05:17,100 --> 00:05:20,020 U second-- tri raspršivanja šest mjesta. 96 00:05:20,020 --> 00:05:24,260 Treće row-- četiri raspršivanja pet spaces-- tako dalje i tako dalje 97 00:05:24,260 --> 00:05:26,350 dok ne dođemo do n-tog reda. 98 00:05:26,350 --> 00:05:31,540 Dakle, pitam te po tko zna koji redak, koliko raspršivanja ćemo imati 99 00:05:31,540 --> 00:05:33,120 i koliko mjesta? 100 00:05:33,120 --> 00:05:37,000 Dakle, to je do vas shvatiti Formula za zastupanje kako mnoge hash 101 00:05:37,000 --> 00:05:42,020 i koliko prostori su potrebne za n-ti red kad imate neku visinu. 102 00:05:42,020 --> 00:05:46,060 >> Sada kada ste figuring ovo, pazite kako ste indeksiranje. 103 00:05:46,060 --> 00:05:49,170 Što mislim pod to je da u svakodnevnom životu svih nas 104 00:05:49,170 --> 00:05:51,540 početak brojanja, obično 1. 105 00:05:51,540 --> 00:05:55,950 No, u CS50 i informatike u cjelini, mi smo 0 indeksiraju. 106 00:05:55,950 --> 00:06:00,620 Dakle, prvi red bi bio n od 0, za razliku od 1. 107 00:06:00,620 --> 00:06:04,550 Budite oprezni o tome kada ste pokušava shvatiti svoj uzorak. 108 00:06:04,550 --> 00:06:07,570 Tako sada vratimo na to kako ćemo izvući našu piramidu. 109 00:06:07,570 --> 00:06:12,300 Za svaki red, mi smo idući u ištanje to print prostore, print hash vrijednosti, 110 00:06:12,300 --> 00:06:14,050 a zatim ispisati novu liniju. 111 00:06:14,050 --> 00:06:19,160 Podsjetnik je ovdje Riječ "za" svakom redu. 112 00:06:19,160 --> 00:06:21,470 U C, imamo konstrukt pozvao for petlje, 113 00:06:21,470 --> 00:06:25,250 koji se sastoji od inicijalizacije, stanje, nadogradnja, 114 00:06:25,250 --> 00:06:26,790 i tijelo petlje. 115 00:06:26,790 --> 00:06:31,360 >> Recimo ja sam htjela reći, zdravo svijet, 50 puta, moji za petlje 116 00:06:31,360 --> 00:06:32,880 će izgledati nešto poput ovoga. 117 00:06:32,880 --> 00:06:35,480 Ja inicijalizirati moj cijeli broj na 0. 118 00:06:35,480 --> 00:06:38,230 Uvjet je da je manje od 50 godina. 119 00:06:38,230 --> 00:06:42,350 A onda mi je nadogradnja je samo povećavati i za jedan svaki put. 120 00:06:42,350 --> 00:06:45,140 Mi također mogu koristiti za petlje iteraciju više stvari. 121 00:06:45,140 --> 00:06:47,820 Primijetite da su ovdje nemamo Teško kodirani broj, 122 00:06:47,820 --> 00:06:51,820 već stavio varijablu Visina umjesto u stanju. 123 00:06:51,820 --> 00:06:56,420 Dakle, ono što ja radim ovdje sam iterating preko svakog reda piramide. 124 00:06:56,420 --> 00:07:00,160 Ja mogu učiniti nešto za svaki red unutar tijela mog petlje. 125 00:07:00,160 --> 00:07:02,350 >> Što radimo unutar Tijelo petlje? 126 00:07:02,350 --> 00:07:07,120 Pa, kao što smo već rekli, mi smo ispis prostori i mi smo ispis hash 127 00:07:07,120 --> 00:07:09,480 a mi smo tiskanje novog liniju. 128 00:07:09,480 --> 00:07:11,950 Tako je moj vanjski za petlje će izgledati ovako. 129 00:07:11,950 --> 00:07:15,070 I ponoviti preko svake red piramide, koristeći, 130 00:07:15,070 --> 00:07:18,890 u ovom slučaju, kao što je visina varijable koji pohranjuje visinu piramide. 131 00:07:18,890 --> 00:07:22,870 Unutar tijela tog procesa, ja sam tiskanja prostore u više navrata, print 132 00:07:22,870 --> 00:07:26,730 više puta raspršivanja a zatim ispisati novu liniju. 133 00:07:26,730 --> 00:07:31,010 >> Tako sada, koristeći sve pojmove koji Razgovarao sam o tome u ovom prolazna, 134 00:07:31,010 --> 00:07:35,210 trebali biste biti u mogućnosti potaknuti Korisnik za unos, provjeriti da je ulaz, 135 00:07:35,210 --> 00:07:37,370 a zatim nacrtati pola piramide. 136 00:07:37,370 --> 00:07:41,510 >> Moje ime je Zamyla, a to je CS50. 137 00:07:41,510 --> 00:07:43,167