1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: See on minu Zamyla. 3 00:00:02,500 --> 00:00:06,910 Täna Mario, me ei kavatse olla juhtides poole püramiid Mario 4 00:00:06,910 --> 00:00:08,290 ronida. 5 00:00:08,290 --> 00:00:11,570 >> Nii räägime meie Ülesanded sellele probleemile. 6 00:00:11,570 --> 00:00:13,610 Me läheme taha kiire ja kinnitada 7 00:00:13,610 --> 00:00:18,290 kasutaja kehtiva sisend, kuidas kõrge tahavad Mario püramiidi olla. 8 00:00:18,290 --> 00:00:20,090 Ja siis, me ei kavatse teha seda. 9 00:00:20,090 --> 00:00:24,870 Nii saab alustada õhutusel ja valideerida kasutaja nende panuse eest. 10 00:00:24,870 --> 00:00:27,640 >> Me ei kasuta CS50 raamatukogu Function 11 00:00:27,640 --> 00:00:31,160 saada int, mis tagab, et kasutaja sisestab täisarv. 12 00:00:31,160 --> 00:00:35,730 Iga positiivse täisarvu, negatiivne täisarvud, number 0 on kõik aus mäng. 13 00:00:35,730 --> 00:00:41,670 Vastasel juhul on kasutajal palutakse uuesti, kuni nad sisend kehtiv täisarv. 14 00:00:41,670 --> 00:00:44,210 Nüüd kuigi get int teeb palju tööd meile 15 00:00:44,210 --> 00:00:46,730 tagada, et kasutaja annab meile täisarv, 16 00:00:46,730 --> 00:00:50,760 peame siiski rakendada mõningaid täiendavaid piiranguid, mis. 17 00:00:50,760 --> 00:00:56,420 Lõppude lõpuks, me ei saa olla Mario ronida pool püramiidi kõrgus negatiivne 12. 18 00:00:56,420 --> 00:00:59,040 >> Lisaks sellele on probleemi määratlemise 19 00:00:59,040 --> 00:01:02,490 ütleb, et saame ainult võimaldavad Mario ronida 20 00:01:02,490 --> 00:01:06,940 püramiidi kõrguste vahemikus 0 ja 23. 21 00:01:06,940 --> 00:01:11,120 OK, nii et see tähendab, et me peame pidevalt kiire kasutaja 22 00:01:11,120 --> 00:01:14,320 meile kehtiva number ja jätkata ainult 23 00:01:14,320 --> 00:01:17,120 Kui nad on andnud meile kehtiv kõrgus. 24 00:01:17,120 --> 00:01:18,720 Kuidas me seda teeme? 25 00:01:18,720 --> 00:01:23,760 >> Noh, pidevad protsessid annavad meile idee loops-- midagi 26 00:01:23,760 --> 00:01:24,720 korduvalt. 27 00:01:24,720 --> 00:01:28,220 Üks loop C kui samas loop, mis pidevalt 28 00:01:28,220 --> 00:01:33,480 teostada keha loop niikaua Antud tingimus tulemus on tõsi. 29 00:01:33,480 --> 00:01:36,200 Niipea, kui see tingimus hindab vale, 30 00:01:36,200 --> 00:01:39,770 programm jätkab mis iganes tuleb pärast seda. 31 00:01:39,770 --> 00:01:43,180 Niisiis, kui silmuseid on üks võimalus tagada, et me pidevalt 32 00:01:43,180 --> 00:01:45,320 palub kasutajal kehtiva sisend. 33 00:01:45,320 --> 00:01:50,070 Ja kui nad annavad meile kehtiv sisend, me edasi olenemata tuleb järgmisena. 34 00:01:50,070 --> 00:01:54,380 Me teame, et me ei kavatse küsida kasutaja sisend vähemalt üks kord. 35 00:01:54,380 --> 00:01:59,200 Nüüd jõuame õde samas silmus, mis on do samas silmus. 36 00:01:59,200 --> 00:02:02,650 >> Kas samas silmuseid võttev keha silmus vähemalt üks kord. 37 00:02:02,650 --> 00:02:06,150 Nii, ilma et kontrollida seisukorda, see täidab keha silmus. 38 00:02:06,150 --> 00:02:09,750 Ja siis kontrollige seisund näha kas ta peab ennast korrata. 39 00:02:09,750 --> 00:02:13,080 See on mugav, kui me kinnitamise kasutaja sisend. 40 00:02:13,080 --> 00:02:15,830 Me teame, et me ei kavatse paluda neil vähemalt üks kord. 41 00:02:15,830 --> 00:02:18,780 Nii do samas silmus võiks nägema midagi sellist. 42 00:02:18,780 --> 00:02:20,090 Meil on täisarv n. 43 00:02:20,090 --> 00:02:22,760 Ja sees do samas silmus, me kohe 44 00:02:22,760 --> 00:02:24,750 küsib kasutajalt täisarv. 45 00:02:24,750 --> 00:02:29,740 Kui n on kehtetu, siis me sundida neid uuesti ja uuesti ja uuesti, kuni nad 46 00:02:29,740 --> 00:02:31,820 meile, et kehtiv täisarv. 47 00:02:31,820 --> 00:02:37,440 Lõpuks, kui n on kehtiv sisend, jagame edasi kogu meie programmi. 48 00:02:37,440 --> 00:02:41,830 >> Nii lähme tagasi spec ja kontrolli Mis tingimused on kehtiv sisend 49 00:02:41,830 --> 00:02:43,670 läheb. 50 00:02:43,670 --> 00:02:48,090 Kehtiv kõrgused hakkavad olema vahemikus 0 kuni 23. 51 00:02:48,090 --> 00:02:53,350 Nii kehtetuks kõrgused hakkavad olla väiksem kui 0 või rohkem kui 23. 52 00:02:53,350 --> 00:02:56,420 Seega pidage meeles, et kujundada oma seisundit hoolikalt, 53 00:02:56,420 --> 00:02:58,660 teades, et tingimus do samas loop 54 00:02:58,660 --> 00:03:01,470 peaks olema samas n on kehtetu. 55 00:03:01,470 --> 00:03:05,080 Nüüd ei ole see saab olema Lihtne ühe Loogiline väljendus. 56 00:03:05,080 --> 00:03:07,630 Me läheme peame ühendama kaks erinevat väljendite 57 00:03:07,630 --> 00:03:09,900 et meie kogu seisukorras. 58 00:03:09,900 --> 00:03:13,290 >> Nii saab lihtsalt vaadata tõeväärtustabelitega Olen juba andnud teile vihje, et me oleme 59 00:03:13,290 --> 00:03:15,200 hakatakse lähtuma kahest tõeväärtused. 60 00:03:15,200 --> 00:03:19,620 Nii et siin on tõde tabelis, kus ma on kaks Booleans-- Loogiline 1 ja 2. 61 00:03:19,620 --> 00:03:27,050 Nii et meil on võimalus hinnata bool1 ja bool2 või bool1 või bool2. 62 00:03:27,050 --> 00:03:31,980 Ja ainult siis tõene, kui mõlemad Tõeväärtused TÕENE, arvestades, et kõik 63 00:03:31,980 --> 00:03:37,280 või on tõsi niikaua üks Kahe tõeväärtused tulemus on tõsi. 64 00:03:37,280 --> 00:03:41,450 OK, nii et võta hetk, paus selle video ja seedida seda tõde tabelis. 65 00:03:41,450 --> 00:03:42,930 Ma tulen kohe siin ootab. 66 00:03:42,930 --> 00:03:45,760 Kui tulla tagasi, vaata kui saad kokku panema 67 00:03:45,760 --> 00:03:51,910 Boole'i ​​avaldis oma seisukorda n on kehtetu sisend. 68 00:03:51,910 --> 00:03:54,420 >> Nüüd, et meil on kehtiv kasutaja sisend, olgem 69 00:03:54,420 --> 00:03:58,710 minna ja rääkida, kuidas me võib juhtida poole püramiid. 70 00:03:58,710 --> 00:04:03,410 Siin see lihtne tekstiredaktor, Olen juhtinud vasakule joondatud püramiid. 71 00:04:03,410 --> 00:04:07,050 Aga me teame, et peame oma Püramiidi tuleb paremjoondatult. 72 00:04:07,050 --> 00:04:08,650 Niisiis, kuidas võiks seda teha? 73 00:04:08,650 --> 00:04:11,440 Noh, ma võiks proovida suruda kõik küljele 74 00:04:11,440 --> 00:04:14,880 lihtsalt panna natuke iseloomu vahel. 75 00:04:14,880 --> 00:04:16,779 Ja siis järgmise line, ma panen 76 00:04:16,779 --> 00:04:20,970 veel mõned tegelased suruda seda mööda, ja further-- nii edasi ja nii forth-- 77 00:04:20,970 --> 00:04:23,360 kuni mul paremjoondatult püramiid. 78 00:04:23,360 --> 00:04:27,780 Nii on meil õigus align püramiid, kuid see ei tundu nii suur, koos dots. 79 00:04:27,780 --> 00:04:30,680 Aga me ikka tahame väidavad, et kena vahe. 80 00:04:30,680 --> 00:04:35,260 Nii et ma lähen sõnalt lisada mõned ruumid. 81 00:04:35,260 --> 00:04:39,420 >> Selle asemel, et kolm punkti, ma panna üks, kaks, kolm tühikuid. 82 00:04:39,420 --> 00:04:40,370 Teisel real. 83 00:04:40,370 --> 00:04:42,640 Ma panen ühe, kaks sammu. 84 00:04:42,640 --> 00:04:45,370 Ja eelviimasel line, vaid üks ruum. 85 00:04:45,370 --> 00:04:48,290 Ja siin on mul paremjoondatult püramiid. 86 00:04:48,290 --> 00:04:52,170 Siit tehes näiteks teksti toimetaja, meil on idee muster 87 00:04:52,170 --> 00:04:54,590 et me kasutame juhtida poole püramiid. 88 00:04:54,590 --> 00:04:58,080 Iga rida, mida me tegime on meil kirjutada mõned ruumid, 89 00:04:58,080 --> 00:05:00,170 ja siis kirjutada mõned räsi ja seejärel trükitud 90 00:05:00,170 --> 00:05:03,020 Enter, mis loob uue rea. 91 00:05:03,020 --> 00:05:07,770 Nüüd, et meil on, et lähme üks samm edasi ja leida mustrit. 92 00:05:07,770 --> 00:05:10,170 >> Nii et ma lähen öelda, et huvi selle näiteks 93 00:05:10,170 --> 00:05:12,480 me tegeleme kõrgus 8. 94 00:05:12,480 --> 00:05:17,100 Esimene rida läheb on kaks räsisid, et järgmised seitse ruumid. 95 00:05:17,100 --> 00:05:20,020 Second-- kolm räsi kuus sammu. 96 00:05:20,020 --> 00:05:24,260 Kolmandaks row-- neli räsi viis spaces-- nii edasi ja nii edasi 97 00:05:24,260 --> 00:05:26,350 kuni saame nda rea. 98 00:05:26,350 --> 00:05:31,540 Niisiis, ma palun teil nda rea, kui palju räsisid me tahame olla 99 00:05:31,540 --> 00:05:33,120 ja kui palju ruumi? 100 00:05:33,120 --> 00:05:37,000 Nii et see on kuni teil välja mõelda valem esindama mitu räsisid 101 00:05:37,000 --> 00:05:42,020 ja kui palju ruumi on vaja nda rea, kui teil on mõned kõrgus. 102 00:05:42,020 --> 00:05:46,060 >> Nüüd, kui sa oled viinud see välja, olema ettevaatlik, kuidas sa indekseerimine. 103 00:05:46,060 --> 00:05:49,170 Mida mõtlen, on see, et igapäevaelus kõik meist 104 00:05:49,170 --> 00:05:51,540 hakka lugema, tavaliselt 1. 105 00:05:51,540 --> 00:05:55,950 Aga CS50 ja infotehnoloogia Üldiselt oleme 0 indekseeritud. 106 00:05:55,950 --> 00:06:00,620 Nii et esimene rida oleks n 0 vastandina 1. 107 00:06:00,620 --> 00:06:04,550 Ole ettevaatlik see, kui sa oled püüab selgitada oma muster. 108 00:06:04,550 --> 00:06:07,570 Nüüd lähme tagasi, kuidas me ei kavatse teha meie püramiid. 109 00:06:07,570 --> 00:06:12,300 Iga rida, me ei kavatse taha printida ruumid, printida räsi 110 00:06:12,300 --> 00:06:14,050 ja seejärel printida uue rea. 111 00:06:14,050 --> 00:06:19,160 Vihje on siin Sõna "," igal real. 112 00:06:19,160 --> 00:06:21,470 In C, meil on konstrukt nimetatakse silmus, 113 00:06:21,470 --> 00:06:25,250 mis koosneb kohta initsialiseerimise, seisund, uuendus, 114 00:06:25,250 --> 00:06:26,790 ja keha silmus. 115 00:06:26,790 --> 00:06:31,360 >> Ütle tahtsin öelda, tere maailma 50 korda, minu jaoks silmus 116 00:06:31,360 --> 00:06:32,880 näeks midagi sellist. 117 00:06:32,880 --> 00:06:35,480 Ma initsialiseerida minu täisarv 0. 118 00:06:35,480 --> 00:06:38,230 Tingimuseks on, et ma on väiksem kui 50. 119 00:06:38,230 --> 00:06:42,350 Ja siis minu uuendus on lihtsalt incrementing ma ühe iga kord. 120 00:06:42,350 --> 00:06:45,140 Me võime ka kasutada silmad itereerima asjade üle. 121 00:06:45,140 --> 00:06:47,820 Pange tähele siin, kuidas me ei ole kõva kodeeritud number, 122 00:06:47,820 --> 00:06:51,820 vaid pigem panna muutuja kõrgus asemel sisse seisukorras. 123 00:06:51,820 --> 00:06:56,420 Mida ma teen siin ma iterating üle iga rea ​​püramiidi. 124 00:06:56,420 --> 00:07:00,160 Ma ei tee midagi igale rida kehas minu loop. 125 00:07:00,160 --> 00:07:02,350 >> Mida me teeme sees keha loop? 126 00:07:02,350 --> 00:07:07,120 Noh, nagu me juba ütles, et me trükkimine ruumid ja me trükkimine räsisid 127 00:07:07,120 --> 00:07:09,480 ja me printimise uue rea. 128 00:07:09,480 --> 00:07:11,950 Nii et minu välimine silmus näeb välja selline. 129 00:07:11,950 --> 00:07:15,070 Ma Käi iga rea püramiidi, kasutades 130 00:07:15,070 --> 00:07:18,890 sel juhul, kõrgus muutuvaks mis talletab kõrguse püramiidi. 131 00:07:18,890 --> 00:07:22,870 Kehas, et loop, ma olen trükkimineku ruumid korduvalt, print 132 00:07:22,870 --> 00:07:26,730 räsisid korduvalt ja seejärel printida uue rea. 133 00:07:26,730 --> 00:07:31,010 >> Nüüd, kasutades kõiki mõisteid, mis Olen rääkinud sel läbikäidav, 134 00:07:31,010 --> 00:07:35,210 siis peaks olema võimalik, et paluda kasutaja sisend, kinnitada, et sisend, 135 00:07:35,210 --> 00:07:37,370 ja seejärel teha poole püramiid. 136 00:07:37,370 --> 00:07:41,510 >> Minu nimi on Zamyla, ja see on CS50. 137 00:07:41,510 --> 00:07:43,167