1 00:00:00,000 --> 00:00:09,250 2 00:00:09,250 --> 00:00:11,070 >> ZAMYLA CHAN: Låt oss hoppa in Mario. 3 00:00:11,070 --> 00:00:14,850 Mario är ett program där vi kan göra vår egen, om än primitiv, version av 4 00:00:14,850 --> 00:00:17,760 en klassisk Super Mario Brothers spel bakgrund. 5 00:00:17,760 --> 00:00:21,100 För detta problem set, vi ska att återskapa halv pyramid för 6 00:00:21,100 --> 00:00:23,000 Mario att hoppa på. 7 00:00:23,000 --> 00:00:27,330 Vårt program kommer att vara interaktiv, så det kommer att be användaren att mata in ett visst 8 00:00:27,330 --> 00:00:28,660 höjd för pyramiden. 9 00:00:28,660 --> 00:00:32,920 Och programmet kommer att skriva ut en halv pyramid av denna höjd, där 10 00:00:32,920 --> 00:00:37,390 nedre vänstra hash linje med botten vänstra hörnet av terminalen 11 00:00:37,390 --> 00:00:39,710 utgång fönster. 12 00:00:39,710 --> 00:00:44,870 >> Låt oss bryta detta problem i två delar, en, få indata från användaren, och två, 13 00:00:44,870 --> 00:00:47,040 skriva ut pyramiden. 14 00:00:47,040 --> 00:00:51,150 Kom ihåg att även om getInt funktionen hämtar ett heltal, du 15 00:00:51,150 --> 00:00:56,260 måste se till att denna ingång gör meningsfullt för ditt program, så i 16 00:00:56,260 --> 00:00:59,690 Mario, kommer den att göra inte bara en produkt för ett heltal. 17 00:00:59,690 --> 00:01:03,440 Du måste se till att användaren ingångar Ett heltal som finns inom 18 00:01:03,440 --> 00:01:06,985 nedre och övre gränserna för pyramid som du kan skriva ut. 19 00:01:06,985 --> 00:01:12,300 Per denna spec, är detta 0 och 23 inklusive. 20 00:01:12,300 --> 00:01:16,410 Om användaren matar in ett heltal utanför av våra godkända gränser, då vi vill 21 00:01:16,410 --> 00:01:20,840 att uppmana dem om och om igen tills de ger oss ett giltigt heltal. 22 00:01:20,840 --> 00:01:25,990 >> Ett sätt att säkerställa korrekt inmatning är med hjälp av en gör-while-slinga, vilket är 23 00:01:25,990 --> 00:01:28,100 mycket lik en while-slinga. 24 00:01:28,100 --> 00:01:32,580 The Do-While loop exekverar koden inuti kroppen en gång, och sedan kontrollerar 25 00:01:32,580 --> 00:01:35,270 om villkoret är uppfyllt eller inte. 26 00:01:35,270 --> 00:01:38,830 Detta är användbart för att erhålla användarinmatning eftersom du vet att du behöver 27 00:01:38,830 --> 00:01:41,805 att uppmana dem minst en gång. 28 00:01:41,805 --> 00:01:45,940 Om villkoret inte är uppfyllt, programmet kommer att utföra raden efter 29 00:01:45,940 --> 00:01:47,270 din Do-While loop. 30 00:01:47,270 --> 00:01:50,950 Om villkoret är uppfyllt, fast, slingan kommer att upprepa. 31 00:01:50,950 --> 00:01:55,560 >> En gör-while-slinga för att validera användaren ingången ser ut ungefär så här. 32 00:01:55,560 --> 00:02:02,920 Jag deklarerar en variabel n, getInt, och upprepa tills n är giltig. 33 00:02:02,920 --> 00:02:06,270 Tänk på att när du deklarerar din variabel, behöver den lämpliga 34 00:02:06,270 --> 00:02:08,449 omfattning, precis som i Scratch. 35 00:02:08,449 --> 00:02:12,510 Om jag förklarar n innanför min Do-While loop, resten av programmet kommer inte att vara 36 00:02:12,510 --> 00:02:13,750 kunna komma åt den. 37 00:02:13,750 --> 00:02:16,100 Det är begränsat till användning av klammerparenteser. 38 00:02:16,100 --> 00:02:19,010 39 00:02:19,010 --> 00:02:23,090 >> Okej, så nu när vi har validerat användarens input, behöver vi faktiskt 40 00:02:23,090 --> 00:02:25,020 dra denna halv-pyramid. 41 00:02:25,020 --> 00:02:29,700 Det består av tryckta tecken, så låt oss göra en halv pyramid på ett enkelt 42 00:02:29,700 --> 00:02:31,480 textredigerare. 43 00:02:31,480 --> 00:02:35,920 Om vi ​​vill göra en Mario stil pyramid av höjd tre som är i linje 44 00:02:35,920 --> 00:02:41,370 på vänster sida av våra fönster, sedan vi skulle skriva två hashar, klicka Enter, 45 00:02:41,370 --> 00:02:47,180 skriv sedan tre hashar, klickar Enter och skriv sedan fyra. 46 00:02:47,180 --> 00:02:51,090 >> Men i det här problemet set, vår halv pyramid måste vara rätt inriktade. 47 00:02:51,090 --> 00:02:55,550 Använda ett vanligt tangentbord, hur kan du ändra den här filen för att flytta hashar 48 00:02:55,550 --> 00:02:57,210 över till höger sida? 49 00:02:57,210 --> 00:03:03,190 Jag kan använda till understreck, två på övre raden och en på den andra. 50 00:03:03,190 --> 00:03:07,690 Det ser inte så trevligt, men så låt oss ersätta understreck med 51 00:03:07,690 --> 00:03:12,450 utrymmen, och där har vi en halv pyramid av höjd tre. 52 00:03:12,450 --> 00:03:16,330 >> Försök och kom ihåg denna text editor exempel när du börjar tänka tillbaka till 53 00:03:16,330 --> 00:03:20,100 C. Låt oss försöka lista ut vissa typ av mönster som vi kan 54 00:03:20,100 --> 00:03:22,750 sätta i en slinga konstruktion. 55 00:03:22,750 --> 00:03:27,570 Ta ett exempel höjd, säger åtta, och se om du kan börja 56 00:03:27,570 --> 00:03:29,470 komma med ett mönster. 57 00:03:29,470 --> 00:03:34,710 Den första raden kommer att ha sju platser följt av två hashar. 58 00:03:34,710 --> 00:03:40,090 Den andra raden har sex platser och tre hashes, och så vidare till dess att 59 00:03:40,090 --> 00:03:41,440 åttonde raden. 60 00:03:41,440 --> 00:03:45,210 >> Men hur gör ni skulle representera den n: te raden? 61 00:03:45,210 --> 00:03:48,170 Kom ihåg att programmering konvention är noll indexeras. 62 00:03:48,170 --> 00:03:51,870 Det betyder att du börjar räkna på noll, så den första raden är tekniskt 63 00:03:51,870 --> 00:03:57,110 radnummer noll med två luckor, rad nummer ett har tre hashar, rad 64 00:03:57,110 --> 00:04:01,860 nummer två har fyra hashar, så följer detta mönster för varje rad 65 00:04:01,860 --> 00:04:05,800 nummer n, det finns n plus 2 hashar. 66 00:04:05,800 --> 00:04:09,270 Jag lämnar det till dig, men, för att hitta ut mönstret för utrymmena. 67 00:04:09,270 --> 00:04:12,240 Kom ihåg att ditt mönster blir något annorlunda om du väljer att 68 00:04:12,240 --> 00:04:16,649 börja räkna från en och inte noll. 69 00:04:16,649 --> 00:04:19,560 >> Nu har du ett mönster för något abstrakt rad n. 70 00:04:19,560 --> 00:04:25,190 Du vet hur många platser för att skriva ut och hur många hashes, så för varje rad, som 71 00:04:25,190 --> 00:04:26,270 numret kommer att förändras. 72 00:04:26,270 --> 00:04:30,700 Men samma processen att skriva en enstaka tecken, antingen ett rum eller en 73 00:04:30,700 --> 00:04:33,200 hash, upprepas. 74 00:04:33,200 --> 00:04:37,470 Så allt du behöver göra är att upprepade gånger skriva tecknet för så många gånger 75 00:04:37,470 --> 00:04:40,120 som ditt mönster avgör. 76 00:04:40,120 --> 00:04:42,522 >> Så hur upprepar vi processer? 77 00:04:42,522 --> 00:04:45,160 I Scratch, använde vi för att repetera blockering. 78 00:04:45,160 --> 00:04:48,580 I C, kommer vi att använda en for-slinga. 79 00:04:48,580 --> 00:04:51,290 Låt oss titta på syntaxen för loopar. 80 00:04:51,290 --> 00:04:57,140 >> Varje För loop består av tre delar, en initiering, ett tillstånd, 81 00:04:57,140 --> 00:04:58,592 och en uppdatering. 82 00:04:58,592 --> 00:05:01,550 Din För loop kommer att initiera en variabel när den först 83 00:05:01,550 --> 00:05:02,960 går in för slingan. 84 00:05:02,960 --> 00:05:07,100 Om villkoret är uppfyllt, kroppen av slingan ska köras. 85 00:05:07,100 --> 00:05:10,070 Efteråt kommer uppdateringen exekvera. 86 00:05:10,070 --> 00:05:13,630 >> Om villkoret är fortfarande uppfyllt, det loop kommer att utföra och uppdatera och 87 00:05:13,630 --> 00:05:18,580 upprepa så länge som din kondition utvärderas till true. 88 00:05:18,580 --> 00:05:21,450 Du är villkoret så småningom måste värdera att falskt, men eftersom 89 00:05:21,450 --> 00:05:24,490 Till skillnad från Scratch, gör vi inte har några evigt slingor. 90 00:05:24,490 --> 00:05:28,270 Ditt program måste upphöra så småningom. 91 00:05:28,270 --> 00:05:32,330 >> Här är ett exempel på en for-slinga som du kanske vill använda för Mario. 92 00:05:32,330 --> 00:05:36,790 Initieringen förklarar ett heltal i med värdet 0. 93 00:05:36,790 --> 00:05:40,750 Så länge jag är mindre än höjden, kroppen av slingan kommer att utföra och 94 00:05:40,750 --> 00:05:44,980 öka i med ett och upprepa tills jag är större än eller 95 00:05:44,980 --> 00:05:47,220 lika med höjden. 96 00:05:47,220 --> 00:05:49,140 >> Nu är min För loop noll index. 97 00:05:49,140 --> 00:05:52,270 Den Int jag börjar på noll, inte ett. 98 00:05:52,270 --> 00:05:55,320 Om jag valde en, då mitt tillstånd skulle måste också vara olika för 99 00:05:55,320 --> 00:05:58,740 slingan för att verkställa samma antal gånger. 100 00:05:58,740 --> 00:06:03,490 Kom ihåg detta noga när du är väljer din initiering och din 101 00:06:03,490 --> 00:06:08,660 tillstånd, och konsultera denna diagrammet att dubbelkolla. 102 00:06:08,660 --> 00:06:13,430 >> En av de bästa sakerna med datorn vetenskap är att det finns bara så många 103 00:06:13,430 --> 00:06:15,490 sätt att utföra saker. 104 00:06:15,490 --> 00:06:19,450 Du kan välja om du börjar med noll eller ett. 105 00:06:19,450 --> 00:06:22,380 Om du inte vill använda en for-slinga, Du kan också använda en while-slinga till 106 00:06:22,380 --> 00:06:26,530 upprepa uttalanden så länge du behålla kärnan i en for-slinga, 107 00:06:26,530 --> 00:06:31,430 initiering, kondition, och uppdatering. 108 00:06:31,430 --> 00:06:36,890 När vi räkna ut För loop som vi är mest bekväm med, då vi 109 00:06:36,890 --> 00:06:38,450 kan slutföra Mario. 110 00:06:38,450 --> 00:06:41,540 >> Vi kontrollerade först för indata och därefter identifierat ett 111 00:06:41,540 --> 00:06:43,580 mönster för någon rad n. 112 00:06:43,580 --> 00:06:49,990 Så för varje rad från noll till n minus 1 skriver ut lämpligt antal 113 00:06:49,990 --> 00:06:55,340 mellanslag, sedan lämpligt antal hashar enligt vårt mönster, och 114 00:06:55,340 --> 00:06:57,180 sedan en ny rad. 115 00:06:57,180 --> 00:06:59,640 Med detta har du din pyramid. 116 00:06:59,640 --> 00:07:02,630 Mitt namn är Zamyla, och detta var Mario. 117 00:07:02,630 --> 00:07:11,765