1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: Dit is 'n my, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Vandag in Mario, ons gaan wees teken die helfte piramide vir Mario 4 00:00:06,910 --> 00:00:08,290 te klim. 5 00:00:08,290 --> 00:00:11,570 >> So kom ons praat oor ons to-do's vir hierdie probleem. 6 00:00:11,570 --> 00:00:13,610 Ons gaan om te wil om vinnig en bekragtig 7 00:00:13,610 --> 00:00:18,290 die gebruiker vir 'n geldige toevoer van hoe hoë hulle wil piramide Mario se te wees. 8 00:00:18,290 --> 00:00:20,090 En dan, ons gaan om dit te trek. 9 00:00:20,090 --> 00:00:24,870 So laat ons begin met waarna en bekragtiging van die gebruiker vir hul insette. 10 00:00:24,870 --> 00:00:27,640 >> Ons kan gebruik maak van die maak CS50 biblioteek funksie 11 00:00:27,640 --> 00:00:31,160 kry int wat sal verseker dat die gebruiker insette 'n heelgetal. 12 00:00:31,160 --> 00:00:35,730 Enige positiewe heelgetalle, negatiewe heelgetalle, nommer 0 is almal fair game. 13 00:00:35,730 --> 00:00:41,670 Andersins, sal die gebruiker gevra word om weer probeer totdat hulle insette 'n geldige heelgetal. 14 00:00:41,670 --> 00:00:44,210 Nou hoewel get int doen 'n groot deel van die werk vir ons 15 00:00:44,210 --> 00:00:46,730 om te verseker dat die gebruiker gee ons 'n heelgetal, 16 00:00:46,730 --> 00:00:50,760 Ons moet nog 'n paar van toepassing bykomende beperkings op daardie. 17 00:00:50,760 --> 00:00:56,420 Na alles, kan ons nie Mario klim 'n half piramide van hoogte negatiewe 12. 18 00:00:56,420 --> 00:00:59,040 >> Behalwe dat, die probleem spesifikasie 19 00:00:59,040 --> 00:01:02,490 sê dat ons net kan toelaat Mario te klim 20 00:01:02,490 --> 00:01:06,940 'n piramide van hoogtes tussen 0 en 23. 21 00:01:06,940 --> 00:01:11,120 OK, so dit beteken dat ons nodig het om voortdurend gevra die gebruiker 22 00:01:11,120 --> 00:01:14,320 om vir ons 'n geldige gee getal en net aanhou 23 00:01:14,320 --> 00:01:17,120 sodra hulle ons 'n geldige hoogte gegee het. 24 00:01:17,120 --> 00:01:18,720 Hoe kan ons dit doen? 25 00:01:18,720 --> 00:01:23,760 >> Wel, deurlopende prosesse gee ons die idee van loops-- doen iets 26 00:01:23,760 --> 00:01:24,720 herhaaldelik. 27 00:01:24,720 --> 00:01:28,220 Een lus in C as 'n ruk lus wat voortdurend 28 00:01:28,220 --> 00:01:33,480 voer die liggaam van die lus so lank as wat die gegewe toestand evalueer om ware. 29 00:01:33,480 --> 00:01:36,200 Sodra daardie toestand evalueer vals, 30 00:01:36,200 --> 00:01:39,770 die program sal voortgaan om alles kom daarna. 31 00:01:39,770 --> 00:01:43,180 Dus, terwyl loops is een manier om om te verseker dat ons voortdurend 32 00:01:43,180 --> 00:01:45,320 gevra die gebruiker vir 'n geldige toevoer. 33 00:01:45,320 --> 00:01:50,070 En nadat hulle gee ons 'n geldige toevoer, Ons sal voortgaan om alles langs kom. 34 00:01:50,070 --> 00:01:54,380 Ons weet dat ons gaan om te vra die gebruiker vir insette ten minste een keer. 35 00:01:54,380 --> 00:01:59,200 So nou kom ons by 'n suster van die while lus, wat is die doen terwyl lus. 36 00:01:59,200 --> 00:02:02,650 >> Doen terwyl loops sal uit te voer die liggaam van die lus ten minste een keer. 37 00:02:02,650 --> 00:02:06,150 So sonder om die toestand, Dit sal die liggaam van die lus te voer. 38 00:02:06,150 --> 00:02:09,750 En dan gaan die toestand te sien of dit nodig het om homself te herhaal. 39 00:02:09,750 --> 00:02:13,080 Dit kom handig te pas wanneer ons bekragtiging van die gebruiker se toevoer. 40 00:02:13,080 --> 00:02:15,830 Ons weet dat ons gaan om hulle ten minste een keer vra. 41 00:02:15,830 --> 00:02:18,780 So 'n doen while lus mag so lyk. 42 00:02:18,780 --> 00:02:20,090 Ons het 'n heelgetal n. 43 00:02:20,090 --> 00:02:22,760 En binnekant van die do while lus, ons onmiddellik 44 00:02:22,760 --> 00:02:24,750 gevra die gebruiker vir 'n heelgetal. 45 00:02:24,750 --> 00:02:29,740 As N is ongeldig, dan sal ons hulle gevra weer en weer en weer totdat hulle 46 00:02:29,740 --> 00:02:31,820 gee vir ons dat geldige heelgetal. 47 00:02:31,820 --> 00:02:37,440 Ten slotte, een keer n 'n geldige toevoer, sal ons voortgaan om die res van ons program. 48 00:02:37,440 --> 00:02:41,830 >> So laat ons teruggaan na die spec en tjek wat die voorwaardes vir 'n geldige toevoer 49 00:02:41,830 --> 00:02:43,670 gaan wees. 50 00:02:43,670 --> 00:02:48,090 Die geldige hoogtes gaan wees tussen 0 en 23, ingesluit. 51 00:02:48,090 --> 00:02:53,350 So ongeldig hoogtes gaan minder as 0 of meer as 23. 52 00:02:53,350 --> 00:02:56,420 So onthou om te ontwerp jou toestand noukeurig, 53 00:02:56,420 --> 00:02:58,660 wetende dat die toestand vir die doen terwyl lus 54 00:02:58,660 --> 00:03:01,470 moet wees, terwyl N is ongeldig. 55 00:03:01,470 --> 00:03:05,080 Nou hierdie is nie van plan om 'n wees eenvoudige enkele Boole-uitdrukking. 56 00:03:05,080 --> 00:03:07,630 Ons gaan hê om te kombineer twee verskillende uitdrukkings 57 00:03:07,630 --> 00:03:09,900 om ons hele toestand maak. 58 00:03:09,900 --> 00:03:13,290 >> So laat ons net kyk na 'n waarheidstabel Ek het jy reeds die wenk dat ons gegee 59 00:03:13,290 --> 00:03:15,200 gaan die hantering van twee Booleans. 60 00:03:15,200 --> 00:03:19,620 So hier is 'n waarheidstabel waar ek het twee Booleans-- Boole 1 en 2. 61 00:03:19,620 --> 00:03:27,050 So ons het die opsie om te evalueer bool1 en bool2 of bool1 of bool2. 62 00:03:27,050 --> 00:03:31,980 En sal enige ware indien beide wees Boolse evalueer om ware, terwyl al 63 00:03:31,980 --> 00:03:37,280 of sal waar wees so lank as een van die twee Booleans evalueer om ware. 64 00:03:37,280 --> 00:03:41,450 OK, so neem 'n oomblik, breek dit video en verteer dit waarheidstabel. 65 00:03:41,450 --> 00:03:42,930 Ek kom gou hier wag wees. 66 00:03:42,930 --> 00:03:45,760 Wanneer jy terugkom, sien As jy kan stuk saam 67 00:03:45,760 --> 00:03:51,910 'n Boole-uitdrukking vir jou toestand van N wat 'n ongeldige insette. 68 00:03:51,910 --> 00:03:54,420 >> So nou dat ons geldig toevoer van die gebruiker, laat ons 69 00:03:54,420 --> 00:03:58,710 gaan voort en praat oor hoe ons kan die helfte piramide te trek. 70 00:03:58,710 --> 00:04:03,410 Hier in hierdie eenvoudige teks editor, Ek het 'n links in lyn piramide geteken. 71 00:04:03,410 --> 00:04:07,050 Maar ons weet dat ons ons piramide reg om in lyn gebring word. 72 00:04:07,050 --> 00:04:08,650 So, hoe kan ek dit doen? 73 00:04:08,650 --> 00:04:11,440 Wel, ek sal probeer om te stoot alles aan die kant 74 00:04:11,440 --> 00:04:14,880 deur net om 'n bietjie karakter tussen in. 75 00:04:14,880 --> 00:04:16,779 En dan, vir die volgende lyn, ek gaan sit 76 00:04:16,779 --> 00:04:20,970 sommige meer karakters om dit te stoot saam, en further-- so aan en so forth-- 77 00:04:20,970 --> 00:04:23,360 totdat ek die reg in lyn piramide. 78 00:04:23,360 --> 00:04:27,780 So het ons 'n reg align piramide, maar Dit lyk nie so baie goed saam met die kolle. 79 00:04:27,780 --> 00:04:30,680 Maar ons wil nog steeds om beweer dat mooi spasiëring. 80 00:04:30,680 --> 00:04:35,260 So ek gaan letterlik voeg 'n paar spasies. 81 00:04:35,260 --> 00:04:39,420 >> In plaas van drie kolletjies, sal ek sit een, twee, drie ruimtes. 82 00:04:39,420 --> 00:04:40,370 Op die tweede reël. 83 00:04:40,370 --> 00:04:42,640 Ek sal een, twee ruimtes sit. 84 00:04:42,640 --> 00:04:45,370 En op die voorlaaste lyn, net een spasie. 85 00:04:45,370 --> 00:04:48,290 En hier het ek het 'n reg in lyn piramide. 86 00:04:48,290 --> 00:04:52,170 Van doen die voorbeeld in die teks redakteur, ons het 'n idee vir die patroon 87 00:04:52,170 --> 00:04:54,590 dat ons sal gebruik om die helfte piramide te trek. 88 00:04:54,590 --> 00:04:58,080 Vir elke ry, wat ons gedoen het is ons tik 'n paar spasies, 89 00:04:58,080 --> 00:05:00,170 en dan getik paar hashes, en dan getik 90 00:05:00,170 --> 00:05:03,020 Enter, wat is 'n nuwe lyn. 91 00:05:03,020 --> 00:05:07,770 So nou dat ons, laat ons gaan 'n stap verder en vind 'n patroon. 92 00:05:07,770 --> 00:05:10,170 >> So ek gaan om te sê nie, want die belang van hierdie voorbeeld, 93 00:05:10,170 --> 00:05:12,480 ons te doen het met 'n hoogte van 8. 94 00:05:12,480 --> 00:05:17,100 Die eerste ry gaan twee het hashes wat sewe spasies volg. 95 00:05:17,100 --> 00:05:20,020 Die second-- drie hashes, ses ruimtes. 96 00:05:20,020 --> 00:05:24,260 Derde row-- vier hashes, vyf spaces-- so aan en so voort 97 00:05:24,260 --> 00:05:26,350 totdat ons by die nde ry. 98 00:05:26,350 --> 00:05:31,540 So dan, vra ek jou vir die nde ry, hoeveel hashes gaan ons hê 99 00:05:31,540 --> 00:05:33,120 en hoeveel ruimtes? 100 00:05:33,120 --> 00:05:37,000 So dit is aan jou om uit te vind 'n formule te verteenwoordig hoeveel hashes 101 00:05:37,000 --> 00:05:42,020 en hoeveel ruimtes is nodig vir die nde ry wanneer jy 'n paar hoogte. 102 00:05:42,020 --> 00:05:46,060 >> Nou wanneer jy besyfering dit uit, wees versigtig hoe jy kruip. 103 00:05:46,060 --> 00:05:49,170 Wat ek bedoel met hierdie is dat in die alledaagse lewe vir ons almal 104 00:05:49,170 --> 00:05:51,540 begin tel, gewoonlik deur 1. 105 00:05:51,540 --> 00:05:55,950 Maar in CS50 en in rekenaarwetenskap In die algemeen, ons is 0 geïndekseer. 106 00:05:55,950 --> 00:06:00,620 So het die eerste ry wees N van 0 teenoor 1. 107 00:06:00,620 --> 00:06:04,550 Wees versigtig van hierdie wanneer jy probeer om uit te vind jou patroon. 108 00:06:04,550 --> 00:06:07,570 So nou laat ons teruggaan na hoe ons gaan ons piramide te trek. 109 00:06:07,570 --> 00:06:12,300 Vir elke ry, gaan ons wil druk die ruimtes, die twee velde te druk, 110 00:06:12,300 --> 00:06:14,050 en dan druk 'n nuwe reël. 111 00:06:14,050 --> 00:06:19,160 Die wenk hier is die woord "vir" elke ry. 112 00:06:19,160 --> 00:06:21,470 In C, het ons 'n konstruk bekend as 'n for-lus, 113 00:06:21,470 --> 00:06:25,250 wat bestaan ​​uit 'n inisialisering, 'n toestand, 'n werk, 114 00:06:25,250 --> 00:06:26,790 en die liggaam van die lus. 115 00:06:26,790 --> 00:06:31,360 >> Sê ek wou sê, hello wêreld, 50 keer, my lus 116 00:06:31,360 --> 00:06:32,880 sou so iets sien. 117 00:06:32,880 --> 00:06:35,480 Ek inisialiseer my heelgetal tot 0. 118 00:06:35,480 --> 00:06:38,230 Die voorwaarde is dat ek minder as 50. 119 00:06:38,230 --> 00:06:42,350 En dan my werk is net die verhoog ek deur een elke keer. 120 00:06:42,350 --> 00:06:45,140 Ons kan dit ook gebruik vir sirkelroetes om Itereer oor dinge. 121 00:06:45,140 --> 00:06:47,820 Let hier hoe ons het nie hard gekodeer n nommer, 122 00:06:47,820 --> 00:06:51,820 maar eerder die veranderlike geplaas hoogte plaas in die toestand. 123 00:06:51,820 --> 00:06:56,420 So, wat ek hier doen, is ek iterating oor elke ry van die piramide. 124 00:06:56,420 --> 00:07:00,160 Ek kan iets vir elke doen ry binne die liggaam van my lus. 125 00:07:00,160 --> 00:07:02,350 >> Wat doen ons binne die liggaam van die lus? 126 00:07:02,350 --> 00:07:07,120 Wel, soos ons reeds gesê, ons druk ruimtes en ons druk hashes 127 00:07:07,120 --> 00:07:09,480 en ons druk 'n nuwe reël. 128 00:07:09,480 --> 00:07:11,950 So my buitenste lus sal lyk. 129 00:07:11,950 --> 00:07:15,070 Ek Itereer oor elke ry van die piramide, gebruik, 130 00:07:15,070 --> 00:07:18,890 in hierdie geval, hoogte as die veranderlike wat slaan die hoogte van die piramide. 131 00:07:18,890 --> 00:07:22,870 Binne-in die liggaam van daardie lus, ek is gaan ruimtes herhaaldelik te druk, druk 132 00:07:22,870 --> 00:07:26,730 die twee velde herhaaldelik, en dan druk 'n nuwe reël. 133 00:07:26,730 --> 00:07:31,010 >> So nou, met behulp van al die konsepte wat Ek het oor gepraat in hierdie deur-stap, 134 00:07:31,010 --> 00:07:35,210 jy moet in staat wees om die stiptelike gebruiker vir insette, bevestig dat insette, 135 00:07:35,210 --> 00:07:37,370 en dan trek die helfte piramide. 136 00:07:37,370 --> 00:07:41,510 >> My naam is Zamyla, en dit is CS50. 137 00:07:41,510 --> 00:07:43,167