1 00:00:00,000 --> 00:00:09,250 2 00:00:09,250 --> 00:00:11,070 >> ZAMYLA CHAN: Lad os hoppe ind Mario. 3 00:00:11,070 --> 00:00:14,850 Mario er et program, hvor vi vil gøre vores egne, om end primitive, version af 4 00:00:14,850 --> 00:00:17,760 en klassisk Super Mario Brothers spil baggrund. 5 00:00:17,760 --> 00:00:21,100 Til dette problem sæt, vil vi at genskabe den halve pyramide for 6 00:00:21,100 --> 00:00:23,000 Mario til at hoppe på. 7 00:00:23,000 --> 00:00:27,330 Vores program vil være interaktivt, så det vil bede brugeren om at indtaste en bestemt 8 00:00:27,330 --> 00:00:28,660 højde for i pyramiden. 9 00:00:28,660 --> 00:00:32,920 Og programmet vil udskrive en halv pyramide af denne højde, hvor 10 00:00:32,920 --> 00:00:37,390 nederste venstre hash flugter med bunden venstre hjørne af terminalen 11 00:00:37,390 --> 00:00:39,710 output-vinduet. 12 00:00:39,710 --> 00:00:44,870 >> Lad os bryde dette problem i to dele, en, få bruger-input, og to, 13 00:00:44,870 --> 00:00:47,040 udskrive pyramiden. 14 00:00:47,040 --> 00:00:51,150 Husk, at selv om GetInt funktionen henter et heltal, du 15 00:00:51,150 --> 00:00:56,260 nødt til at sørge for, at denne indgang gør mening for dit program, så i 16 00:00:56,260 --> 00:00:59,690 Mario, vil det ikke gøre bare en produkt til et heltal. 17 00:00:59,690 --> 00:01:03,440 Du bliver nødt til at sørge for, at brugeren indgange Et heltal, der er inden for 18 00:01:03,440 --> 00:01:06,985 nedre og øvre grænse for pyramide, som du kan udskrive. 19 00:01:06,985 --> 00:01:12,300 Per dette spec, er det 0 og 23 inklusive. 20 00:01:12,300 --> 00:01:16,410 Hvis brugeren indgange en heltal uden af vores accepterede bounds, vi derefter ønsker 21 00:01:16,410 --> 00:01:20,840 at bede dem igen og igen, indtil de giver os et gyldigt heltal. 22 00:01:20,840 --> 00:01:25,990 >> En måde at sikre korrekt brugerinput er ved hjælp af en do-while løkke, er der 23 00:01:25,990 --> 00:01:28,100 meget lig en While-løkke. 24 00:01:28,100 --> 00:01:32,580 Do-While loop udfører koden inde i kroppen én gang, og kontrollerer derefter 25 00:01:32,580 --> 00:01:35,270 om betingelsen er opfyldt eller ej. 26 00:01:35,270 --> 00:01:38,830 Dette er nyttigt for at opnå brugerinput fordi du ved, at du har brug for 27 00:01:38,830 --> 00:01:41,805 at bede dem mindst en gang. 28 00:01:41,805 --> 00:01:45,940 Hvis betingelsen ikke er opfyldt, vil programmet vil køre linjen efter 29 00:01:45,940 --> 00:01:47,270 Deres do-while løkke. 30 00:01:47,270 --> 00:01:50,950 Hvis betingelsen er opfyldt, selv om, sløjfen vil gentage. 31 00:01:50,950 --> 00:01:55,560 >> En do-while løkke for validering bruger input vil se noget som dette. 32 00:01:55,560 --> 00:02:02,920 Jeg erklærer en variabel n, GetInt, og gentag indtil n er gyldig. 33 00:02:02,920 --> 00:02:06,270 Husk, at når du erklære din variabel, det kræver passende 34 00:02:06,270 --> 00:02:08,449 omfang, ligesom i Scratch. 35 00:02:08,449 --> 00:02:12,510 Hvis jeg erklærer n inde i mit do-while løkke, resten af ​​programmet vil ikke være 36 00:02:12,510 --> 00:02:13,750 i stand til at få adgang til det. 37 00:02:13,750 --> 00:02:16,100 Det er begrænset til rammerne af de krøllede parenteser. 38 00:02:16,100 --> 00:02:19,010 39 00:02:19,010 --> 00:02:23,090 >> Okay, så nu, hvor vi har valideret brugerens input, vi faktisk har brug for at 40 00:02:23,090 --> 00:02:25,020 drage denne halv-pyramide. 41 00:02:25,020 --> 00:02:29,700 Det består af trykte bogstaver, så lad os gøre en halv pyramide i en enkel 42 00:02:29,700 --> 00:02:31,480 teksteditor. 43 00:02:31,480 --> 00:02:35,920 Hvis vi ønsker at gøre en Mario stil pyramide af højden tre, der er tilpasset 44 00:02:35,920 --> 00:02:41,370 på venstre side af vores vindue, så vi ville skrive to hashes, klik på Enter, 45 00:02:41,370 --> 00:02:47,180 skriv derefter tre hashes, klik Enter, og skriv derefter fire. 46 00:02:47,180 --> 00:02:51,090 >> Men i dette problem sæt, vores halv pyramide skal højrejusteret. 47 00:02:51,090 --> 00:02:55,550 Ved hjælp af en standard tastatur, måske hvordan du ændrer denne fil til at flytte hashes 48 00:02:55,550 --> 00:02:57,210 over til højre? 49 00:02:57,210 --> 00:03:03,190 Jeg kunne bruge til understregninger, to på øverste række og en på den anden. 50 00:03:03,190 --> 00:03:07,690 Det ser ikke så godt, men så lad os erstatte understregningstegnene med 51 00:03:07,690 --> 00:03:12,450 mellemrum, og der har vi en halv pyramide af højden tre. 52 00:03:12,450 --> 00:03:16,330 >> Prøv at huske denne tekst editor eksempel som du begynder at tænke tilbage til 53 00:03:16,330 --> 00:03:20,100 C. Lad os prøve og finde ud af nogle slags mønster, vi kan 54 00:03:20,100 --> 00:03:22,750 sat i en løkke konstruktion. 55 00:03:22,750 --> 00:03:27,570 Tag et eksempel højde, siger otte, og se om du kan begynde at 56 00:03:27,570 --> 00:03:29,470 komme op med et mønster. 57 00:03:29,470 --> 00:03:34,710 Den første række vil have syv pladser efterfulgt af to hashes. 58 00:03:34,710 --> 00:03:40,090 Den anden række har seks rum og tre hashes, og så videre, indtil 59 00:03:40,090 --> 00:03:41,440 ottende række. 60 00:03:41,440 --> 00:03:45,210 >> Men hvordan ville du repræsenterer den n'te række? 61 00:03:45,210 --> 00:03:48,170 Husk, at programmeringen konvention er nul indekseret. 62 00:03:48,170 --> 00:03:51,870 Det betyder, at du begynde at tælle på nul, så den første række er teknisk 63 00:03:51,870 --> 00:03:57,110 rækkenummer nul med to luger, række nummer et har tre hashes, række 64 00:03:57,110 --> 00:04:01,860 nummer to har fire hashes, så efter dette mønster for enhver række 65 00:04:01,860 --> 00:04:05,800 Tallet n, der er n plus 2 hashes. 66 00:04:05,800 --> 00:04:09,270 Jeg vil overlade det til dig, selv om, for at finde mønsteret ud for rummene. 67 00:04:09,270 --> 00:04:12,240 Husk, at dit mønster vil være lidt anderledes, hvis du vælger at 68 00:04:12,240 --> 00:04:16,649 starte din tæller fra én og ikke nul. 69 00:04:16,649 --> 00:04:19,560 >> Nu har du et mønster for enhver abstrakt række n.. 70 00:04:19,560 --> 00:04:25,190 Du ved, hvor mange rum til at udskrive og hvor mange hashes, så for hver række, der 71 00:04:25,190 --> 00:04:26,270 nummer vil ændre sig. 72 00:04:26,270 --> 00:04:30,700 Men den samme proces med at udskrive en enkelt tegn, enten et mellemrum eller et 73 00:04:30,700 --> 00:04:33,200 hash, gentages. 74 00:04:33,200 --> 00:04:37,470 Så alt hvad du skal gøre er gentagne udskrive denne karakter for så mange gange 75 00:04:37,470 --> 00:04:40,120 som dit mønster bestemmer. 76 00:04:40,120 --> 00:04:42,522 >> Så hvordan kan vi gentager processer? 77 00:04:42,522 --> 00:04:45,160 I Scratch, brugte vi den gentagne blok. 78 00:04:45,160 --> 00:04:48,580 I C, bruger vi en for-løkke. 79 00:04:48,580 --> 00:04:51,290 Lad os se på syntaksen for For løkker. 80 00:04:51,290 --> 00:04:57,140 >> Hver For løkke består af tre dele, en initialisering, en tilstand, 81 00:04:57,140 --> 00:04:58,592 og en opdatering. 82 00:04:58,592 --> 00:05:01,550 Din For loop vil initialisere en variabel, når det først 83 00:05:01,550 --> 00:05:02,960 træder For-løkken. 84 00:05:02,960 --> 00:05:07,100 Hvis betingelsen er opfyldt, kroppen af løkken vil køre. 85 00:05:07,100 --> 00:05:10,070 Bagefter vil opdateringen udføres. 86 00:05:10,070 --> 00:05:13,630 >> Hvis tilstanden stadig er opfyldt, løkke vil udføre og opdatere og 87 00:05:13,630 --> 00:05:18,580 gentages, så længe din tilstand evalueres til True. 88 00:05:18,580 --> 00:05:21,450 Du betingelse skal i sidste ende værdisætte til falsk, men fordi 89 00:05:21,450 --> 00:05:24,490 i modsætning til Scratch, gør vi ikke har nogen Forever sløjfer. 90 00:05:24,490 --> 00:05:28,270 Dit program skal ende sidst. 91 00:05:28,270 --> 00:05:32,330 >> Her er et eksempel på en for-løkke, der du måske ønsker at bruge til Mario. 92 00:05:32,330 --> 00:05:36,790 Initialisering erklærer et heltal i med værdien 0. 93 00:05:36,790 --> 00:05:40,750 Så længe i er mindre end højden, kroppen af ​​løkken vil udføre og 94 00:05:40,750 --> 00:05:44,980 forhøje i af én og gentag indtil jeg er større end eller 95 00:05:44,980 --> 00:05:47,220 lig med højden. 96 00:05:47,220 --> 00:05:49,140 >> Nu, min For loop er nul indeks. 97 00:05:49,140 --> 00:05:52,270 Den int i starter ved nul, ikke én. 98 00:05:52,270 --> 00:05:55,320 Hvis jeg valgte en, så min tilstand ville også være forskellig for 99 00:05:55,320 --> 00:05:58,740 løkken at udføre samme antal gange. 100 00:05:58,740 --> 00:06:03,490 Husk dette omhyggeligt, når du er vælge din initialisering og din 101 00:06:03,490 --> 00:06:08,660 tilstand og konsultere denne kortlægge at dobbelttjekke. 102 00:06:08,660 --> 00:06:13,430 >> En af de gode ting ved computeren videnskaben er, at der er lige så mange 103 00:06:13,430 --> 00:06:15,490 måder at udføre tingene. 104 00:06:15,490 --> 00:06:19,450 Du kan vælge, om du starter ved nul eller én. 105 00:06:19,450 --> 00:06:22,380 Hvis du ikke ønsker at bruge en for-løkke, du kan også bruge en while-løkke til 106 00:06:22,380 --> 00:06:26,530 gentage udsagn, så længe du holde essensen af ​​en for-løkke, 107 00:06:26,530 --> 00:06:31,430 initialisering, tilstand og opdatering. 108 00:06:31,430 --> 00:06:36,890 Når vi finde ud af det For løkke, vi er mest komfortabel med, så vi 109 00:06:36,890 --> 00:06:38,450 kan fuldføre Mario. 110 00:06:38,450 --> 00:06:41,540 >> Vi først kontrolleres for bruger input og derefter identificeret en 111 00:06:41,540 --> 00:06:43,580 mønster for enhver række n.. 112 00:06:43,580 --> 00:06:49,990 Så for hver række fra nul til n minus 1 vil udskrive et passende antal 113 00:06:49,990 --> 00:06:55,340 mellemrum, så det passende antal hashes Ifølge vores mønster, og 114 00:06:55,340 --> 00:06:57,180 derefter en ny linje. 115 00:06:57,180 --> 00:06:59,640 Med det, har du din pyramide. 116 00:06:59,640 --> 00:07:02,630 Mit navn er Zamyla, og det var Mario. 117 00:07:02,630 --> 00:07:11,765