1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: Tas ir man, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Šodien Mario, mēs ejam, lai būtu zīmēšanas pusi piramīdu Mario 4 00:00:06,910 --> 00:00:08,290 uzkāpt. 5 00:00:08,290 --> 00:00:11,570 >> So parunāsim par mūsu to-do ir par šo problēmu. 6 00:00:11,570 --> 00:00:13,610 Mēs ejam, lai vēlēties lai ātri un apstiprināt 7 00:00:13,610 --> 00:00:18,290 lietotājs par derīgu ieguldījumu, kā augstu viņi vēlas Mario piramīda būt. 8 00:00:18,290 --> 00:00:20,090 Un tad mēs ejam, lai pievērstu to. 9 00:00:20,090 --> 00:00:24,870 Tātad, pieņemsim sāktu ar pamudinot un apstiprināšanu lietotājam par viņu ieguldījumu. 10 00:00:24,870 --> 00:00:27,640 >> Mēs varam izmantot CS50 bibliotēka Function 11 00:00:27,640 --> 00:00:31,160 nokļūt int, kas nodrošinās, ka lietotājs ievada veselu skaitli. 12 00:00:31,160 --> 00:00:35,730 Jebkuras pozitīvi veseli skaitļi, negatīvs veseli skaitļi, skaits 0 visi ir godīga spēle. 13 00:00:35,730 --> 00:00:41,670 Pretējā gadījumā lietotājam tiks piedāvāts mēģiniet vēlreiz, kamēr tie ievadi derīgu skaitlim. 14 00:00:41,670 --> 00:00:44,210 Tagad gan get int dara daudz darba par mums 15 00:00:44,210 --> 00:00:46,730 lai nodrošinātu, ka lietotājs dod mums vesels skaitlis, 16 00:00:46,730 --> 00:00:50,760 mums vēl ir nepieciešams piemērot dažus papildu ierobežojumi, kas. 17 00:00:50,760 --> 00:00:56,420 Galu galā, mēs nevaram būt Mario kāpšana puse piramīda augstuma negatīva 12. 18 00:00:56,420 --> 00:00:59,040 >> Papildus tam, ka problēma specifikācija 19 00:00:59,040 --> 00:01:02,490 saka, ka mēs varam tikai ļauj Mario kāpt 20 00:01:02,490 --> 00:01:06,940 piramīda no augstuma starp 0 un 23. 21 00:01:06,940 --> 00:01:11,120 Labi, lai tas nozīmē, ka mums ir nepieciešams nepārtraukti nekavējoties lietotājam 22 00:01:11,120 --> 00:01:14,320 lai dotu mums derīgs numuru un tikai turpinās 23 00:01:14,320 --> 00:01:17,120 kad viņi devuši mums derīgu augstumu. 24 00:01:17,120 --> 00:01:18,720 Kā mēs to darām? 25 00:01:18,720 --> 00:01:23,760 >> Nu, nepārtraukti procesi dod mums ideja loops-- darīt kaut ko 26 00:01:23,760 --> 00:01:24,720 atkārtoti. 27 00:01:24,720 --> 00:01:28,220 Viena cilpa C kā brīdi cilpa, kas nepārtraukti 28 00:01:28,220 --> 00:01:33,480 izpildīt korpusu cilpa tik ilgi, kamēr dotais nosacījums novērtē patiess. 29 00:01:33,480 --> 00:01:36,200 Tiklīdz šis nosacījums novērtē to viltus, 30 00:01:36,200 --> 00:01:39,770 programma doties uz kāds nāk pēc tam. 31 00:01:39,770 --> 00:01:43,180 Tāpēc, kamēr cilpas ir viens no veidiem, kā nodrošinot, ka mēs nepārtraukti 32 00:01:43,180 --> 00:01:45,320 nekavējoties lietotājam par derīgu ieguldījumu. 33 00:01:45,320 --> 00:01:50,070 Un, kad tie dod mums derīgu ieguldījumu, mēs pāriet kāds nāk nākamo. 34 00:01:50,070 --> 00:01:54,380 Mēs zinām, ka mēs ejam lūgt lietotājs ievadei vismaz vienu reizi. 35 00:01:54,380 --> 00:01:59,200 Tāpēc tagad mēs nonākam pie māsa kamēr cilpa, kas ir darīt, kamēr cilpa. 36 00:01:59,200 --> 00:02:02,650 >> Darīt, kamēr cilpas veiks ķermenis no cilpas vismaz vienu reizi. 37 00:02:02,650 --> 00:02:06,150 Tātad bez pārbaudīt stāvokli, tā veiks ķermeņa cilpas. 38 00:02:06,150 --> 00:02:09,750 Un tad pārbaudīt stāvokli, lai redzētu vai tas ir nepieciešams atkārtot sevi. 39 00:02:09,750 --> 00:02:13,080 Tas nāk ērts, ja mēs apstiprināšanu lietotāja ievadi. 40 00:02:13,080 --> 00:02:15,830 Mēs zinām, ka mēs ejam uzdot viņiem vismaz vienu reizi. 41 00:02:15,830 --> 00:02:18,780 Tātad darīt, kamēr cilpa varētu izskatīties kaut kas līdzīgs šim. 42 00:02:18,780 --> 00:02:20,090 Mums ir vesels skaitlis n. 43 00:02:20,090 --> 00:02:22,760 Un iekšpusē do kamēr cilpa, mēs uzreiz 44 00:02:22,760 --> 00:02:24,750 nekavējoties lietotājam par veselam skaitlim. 45 00:02:24,750 --> 00:02:29,740 Ja n ir nederīgs, tad mēs ātri viņiem atkal un atkal un atkal, līdz tie 46 00:02:29,740 --> 00:02:31,820 dod mums, kas ir spēkā skaitlim. 47 00:02:31,820 --> 00:02:37,440 Visbeidzot, kad n ir derīga ieejas, mēs doties uz pārējo mūsu programmā. 48 00:02:37,440 --> 00:02:41,830 >> So iesim atpakaļ uz spec un pārbaude kādi nosacījumi ir derīga ieejas 49 00:02:41,830 --> 00:02:43,670 būs. 50 00:02:43,670 --> 00:02:48,090 Derīgi augstumi gatavojas būt starp 0 un 23, ieskaitot. 51 00:02:48,090 --> 00:02:53,350 Tātad nederīgs augstumi gatavojas būt mazāks par 0 vai vairāk nekā 23. 52 00:02:53,350 --> 00:02:56,420 Tāpēc atcerieties, lai izstrādātu Jūsu stāvoklis uzmanīgi, 53 00:02:56,420 --> 00:02:58,660 zinot, ka ar nosacījumu do kamēr cilpa 54 00:02:58,660 --> 00:03:01,470 vajadzētu būt, bet n ir nederīgs. 55 00:03:01,470 --> 00:03:05,080 Tagad tas nav būs vienkāršs viena Būla izteiksme. 56 00:03:05,080 --> 00:03:07,630 Mums nāksies apvienot divi dažādi izteicieni 57 00:03:07,630 --> 00:03:09,900 lai visu mūsu stāvokli. 58 00:03:09,900 --> 00:03:13,290 >> Tātad pieņemsim tikai apskatīt patiesības galda es esmu jau devis jums mājienu, ka mēs esam 59 00:03:13,290 --> 00:03:15,200 būs darīšana ar divām Booleans. 60 00:03:15,200 --> 00:03:19,620 Tātad, šeit ir patiesība galda, kur es ir divas Booleans-- Būla 1 un 2. 61 00:03:19,620 --> 00:03:27,050 Tātad mums ir iespēja novērtēt bool1 un bool2 vai bool1 vai bool2. 62 00:03:27,050 --> 00:03:31,980 Un tikai tad būs taisnība, ja abas Booleans novērtēt patiess, bet visi 63 00:03:31,980 --> 00:03:37,280 vai būs true tik ilgi, kamēr viens no divi Booleans novērtē patiess. 64 00:03:37,280 --> 00:03:41,450 Labi, tāpēc veltiet laiku, pauzes šis video un sagremot šo patiesību tabulu. 65 00:03:41,450 --> 00:03:42,930 Es būšu šeit gaida. 66 00:03:42,930 --> 00:03:45,760 Kad tu atgriezīsies, skatiet ja jūs varat gabals kopā 67 00:03:45,760 --> 00:03:51,910 Būla izteiksme, lai jūsu stāvoklis n nederīgs ieejas. 68 00:03:51,910 --> 00:03:54,420 >> Tāpēc tagad, ka mums ir derīgs lietotāja ievadi, pieņemsim 69 00:03:54,420 --> 00:03:58,710 iet uz priekšu un runāt par to, kā mēs varētu izdarīt pusi piramīdu. 70 00:03:58,710 --> 00:04:03,410 Šeit, šajā vienkāršu teksta redaktoru, Esmu novilkta kreisās jāsaskaņo piramīdu. 71 00:04:03,410 --> 00:04:07,050 Bet mēs zinām, ka mums ir nepieciešams mūsu piramīda, kas labi jāsaskaņo. 72 00:04:07,050 --> 00:04:08,650 Tātad, kā es varētu darīt? 73 00:04:08,650 --> 00:04:11,440 Nu, es varētu mēģināt virzīt viss uz sāniem 74 00:04:11,440 --> 00:04:14,880 , tikai liekot nedaudz raksturs starp. 75 00:04:14,880 --> 00:04:16,779 Un tad, lai nākamais line, es esmu gatavojas nodot 76 00:04:16,779 --> 00:04:20,970 dažas vairāk rakstzīmes push to kopā, un further-- tā tālāk un tā forth-- 77 00:04:20,970 --> 00:04:23,360 kamēr es ir tiesības jāsaskaņo piramīdu. 78 00:04:23,360 --> 00:04:27,780 Tātad mums ir tiesības līdzināšanas piramīdas, bet tas neizskatās tik liels ar punktiņiem. 79 00:04:27,780 --> 00:04:30,680 Bet mēs joprojām vēlaties apgalvo, ka skaistu atstarpi. 80 00:04:30,680 --> 00:04:35,260 Tāpēc es esmu gatavojas burtiski ievietot dažas telpas. 81 00:04:35,260 --> 00:04:39,420 >> Tā vietā, trīs punkti, es ņemšu likts viens, divi, trīs telpas. 82 00:04:39,420 --> 00:04:40,370 Otrajā rindā. 83 00:04:40,370 --> 00:04:42,640 Es nolikšu vienu, divas telpas. 84 00:04:42,640 --> 00:04:45,370 Un priekšpēdējā line, tikai viena telpa. 85 00:04:45,370 --> 00:04:48,290 Un šeit man ir tiesības jāsaskaņo piramīdu. 86 00:04:48,290 --> 00:04:52,170 No darot piemēru tekstā redaktors, mums ir ideja par modeli 87 00:04:52,170 --> 00:04:54,590 ka mēs izmantosim, lai pievērstu pusi piramīdu. 88 00:04:54,590 --> 00:04:58,080 Par katru pēc kārtas, ko mēs darījām ir mums tips dažas telpas, 89 00:04:58,080 --> 00:05:00,170 un tad drukāti daži hashes, un tad drukāti 90 00:05:00,170 --> 00:05:03,020 Enter taustiņu, kas rada jaunu līniju. 91 00:05:03,020 --> 00:05:07,770 Tāpēc tagad, ka mums ir, ka, iesim vienu soli tālāk un atrast modeli. 92 00:05:07,770 --> 00:05:10,170 >> Tāpēc es esmu gatavojas teikt, lai interese par šo piemēru, 93 00:05:10,170 --> 00:05:12,480 mums ir darīšana ar augstumu 8. 94 00:05:12,480 --> 00:05:17,100 Pirmajā rindā nāksies divi hashes Tas izriet septiņas vietas. 95 00:05:17,100 --> 00:05:20,020 Par second-- Trīs hashes, sešas atstarpēm. 96 00:05:20,020 --> 00:05:24,260 Trešās row-- četri hashes, pieci spaces-- tā tālāk, un tā tālāk 97 00:05:24,260 --> 00:05:26,350 kamēr mēs ar n-rindu. 98 00:05:26,350 --> 00:05:31,540 Tātad, es lūdzu jūs par n-kārtas, cik hashes mēs nāksies 99 00:05:31,540 --> 00:05:33,120 un cik daudz vietas? 100 00:05:33,120 --> 00:05:37,000 Tātad, tas ir atkarīgs no jums, lai noskaidrotu formula pārstāvēt cik hashes 101 00:05:37,000 --> 00:05:42,020 un cik daudz vietas ir nepieciešami n-rinda, ja jums ir kāda augstumu. 102 00:05:42,020 --> 00:05:46,060 >> Tagad, kad jūs norādītas šo out, jābūt uzmanīgiem, kā jūs indeksēšanu. 103 00:05:46,060 --> 00:05:49,170 Ko es domāju ar šo ir tas, ka ikdienā mums visiem 104 00:05:49,170 --> 00:05:51,540 sākt skaitīšanas, parasti 1. 105 00:05:51,540 --> 00:05:55,950 Bet CS50 un datorzinātnē vispār, mēs esam 0 indeksēti. 106 00:05:55,950 --> 00:06:00,620 Tātad pirmais rindā būtu n 0, nevis 1. 107 00:06:00,620 --> 00:06:04,550 Esiet uzmanīgi ar šo, kad jūs esat mēģina izdomāt savu modeli. 108 00:06:04,550 --> 00:06:07,570 Tāpēc tagad iesim atpakaļ uz to, kā mēs ejam, lai pievērstu mūsu piramīdu. 109 00:06:07,570 --> 00:06:12,300 Par katru pēc kārtas, mēs esam gatavojas vēlaties drukāt atstarpes, drukāt hashes, 110 00:06:12,300 --> 00:06:14,050 un pēc tam izdrukāt jaunu līniju. 111 00:06:14,050 --> 00:06:19,160 Mājienu šeit ir Vārds "par" katru rindu. 112 00:06:19,160 --> 00:06:21,470 In C, mums ir būvēt sauc par cilpu, 113 00:06:21,470 --> 00:06:25,250 kurš sastāv no amonija nitrāta inicializācijas, nosacījums, atjaunināšana, 114 00:06:25,250 --> 00:06:26,790 un ķermeņa cilpas. 115 00:06:26,790 --> 00:06:31,360 >> Teikt, es gribēju teikt, sveiki pasaule, 50 reizes, mani uz cilpas 116 00:06:31,360 --> 00:06:32,880 varētu izskatīties kaut kas līdzīgs šim. 117 00:06:32,880 --> 00:06:35,480 Es sāktu manu skaitli līdz 0. 118 00:06:35,480 --> 00:06:38,230 Nosacījums ir tāds, ka es, ir mazāks nekā 50. 119 00:06:38,230 --> 00:06:42,350 Un tad mans atjauninājums ir tikai palielināšanai I pa vienam katru reizi. 120 00:06:42,350 --> 00:06:45,140 Mēs varam arī izmantot cilpas atkārtot pār lietām. 121 00:06:45,140 --> 00:06:47,820 Ievērojiet šeit, kā mums nav grūti kodēta numuru, 122 00:06:47,820 --> 00:06:51,820 bet ievietots mainīgo augstums vietā uz stāvoklī. 123 00:06:51,820 --> 00:06:56,420 Tātad, ko es daru šeit es esmu atkārtojot pār katru rindu piramīdas. 124 00:06:56,420 --> 00:07:00,160 Es varu darīt kaut ko par katru rinda ķermeņa iekšpusē manu cilpu. 125 00:07:00,160 --> 00:07:02,350 >> Ko mēs darām iekšienē ķermenis cilpa? 126 00:07:02,350 --> 00:07:07,120 Nu, kā mēs jau teicu, mēs esam drukāšanas atstarpes un mēs drukāšanas hashes 127 00:07:07,120 --> 00:07:09,480 un mēs drukāšanu jaunu līniju. 128 00:07:09,480 --> 00:07:11,950 Tāpēc mans ārējais cilpas izskatās šādi. 129 00:07:11,950 --> 00:07:15,070 Es atkārtot pār katru rindu piramīdas, izmantojot, 130 00:07:15,070 --> 00:07:18,890 Šajā gadījumā, augstums kā mainīgā kas saglabā augstumu piramīdas. 131 00:07:18,890 --> 00:07:22,870 Ķermeņa iekšpusē šīs cilpas, es esmu gatavojas drukāt telpas atkārtoti, print 132 00:07:22,870 --> 00:07:26,730 hashes atkārtoti, un pēc tam izdrukāt jaunu līniju. 133 00:07:26,730 --> 00:07:31,010 >> Tāpēc tagad, izmantojot visas koncepcijas, kas Es esmu runājis par šo arkveida, 134 00:07:31,010 --> 00:07:35,210 Jums vajadzētu būt iespējai, lai ātri lietotāja ievadi, apstiprināt, ka ievadi, 135 00:07:35,210 --> 00:07:37,370 un pēc tam izdarīt pusi piramīdu. 136 00:07:37,370 --> 00:07:41,510 >> Mans vārds ir Zamyla, un tas ir CS50. 137 00:07:41,510 --> 00:07:43,167