1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: Ito ay isang sa akin, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Ngayon sa Mario, kami ay pagpunta sa maging pagguhit ng half pyramid para sa Mario 4 00:00:06,910 --> 00:00:08,290 upang umakyat. 5 00:00:08,290 --> 00:00:11,570 >> Kaya sabihin makipag-usap tungkol sa aming mga to-do para sa problemang ito. 6 00:00:11,570 --> 00:00:13,610 Kami ay pagpunta sa gusto upang i-prompt at patunayan 7 00:00:13,610 --> 00:00:18,290 ng gumagamit para sa isang may-bisang input ng kung paano high gusto nila ni Mario pyramid na. 8 00:00:18,290 --> 00:00:20,090 At pagkatapos, kami ay pagpunta sa gumuhit ito. 9 00:00:20,090 --> 00:00:24,870 Kaya sabihin makapagsimula sa udyok at pagpapatunay sa mga gumagamit para sa kanilang input. 10 00:00:24,870 --> 00:00:27,640 >> Maaari naming gumawa ng paggamit ng CS50 Library Function 11 00:00:27,640 --> 00:00:31,160 makakuha int na masiguro na ang user input ng isang integer. 12 00:00:31,160 --> 00:00:35,730 Anumang positive integers, negatibo integers, bilang 0 ay ang lahat ng makatarungang laro. 13 00:00:35,730 --> 00:00:41,670 Kung hindi man, ang user ay maaari udyukan sa retry hanggang sa sila input ng isang wastong integer. 14 00:00:41,670 --> 00:00:44,210 Ngayon bagaman get int gumagana isang pulutong ng mga trabaho para sa amin 15 00:00:44,210 --> 00:00:46,730 sa pagsiguro na ang user ay nagbibigay sa amin ng isang integer, 16 00:00:46,730 --> 00:00:50,760 kailangan pa rin naming ilapat ang ilang karagdagang constraints sa na. 17 00:00:50,760 --> 00:00:56,420 Matapos ang lahat, hindi namin maaaring magkaroon Mario climbing kalahating pyramid ng taas negatibong 12. 18 00:00:56,420 --> 00:00:59,040 >> Bilang karagdagan sa na, ang problema specification 19 00:00:59,040 --> 00:01:02,490 sabi na lamang namin Maaari payagan Mario sa umakyat 20 00:01:02,490 --> 00:01:06,940 isang pyramid sa taas sa pagitan ng 0 at 23. 21 00:01:06,940 --> 00:01:11,120 OK, sa gayon ay nangangahulugan na kailangan namin upang patuloy na prompt ng gumagamit 22 00:01:11,120 --> 00:01:14,320 upang bigyan kami ng isang may-bisang numero at lamang magpatuloy 23 00:01:14,320 --> 00:01:17,120 isang beses na ibinigay nila sa amin ng wastong taas. 24 00:01:17,120 --> 00:01:18,720 Paano namin gawin iyon? 25 00:01:18,720 --> 00:01:23,760 >> Well, tuloy-tuloy na proseso bigyan kami ang ideya ng loops-- paggawa ng isang bagay 26 00:01:23,760 --> 00:01:24,720 repetitively. 27 00:01:24,720 --> 00:01:28,220 One loop sa C bilang habang loop na habilin patuloy 28 00:01:28,220 --> 00:01:33,480 execute ang katawan ng loop hangga't ang binigay na kondisyon sinusuri sa true. 29 00:01:33,480 --> 00:01:36,200 Sa sandali na kondisyon na sinusuri sa false, 30 00:01:36,200 --> 00:01:39,770 ang programa ay magpatuloy sa anuman ang dumating matapos na. 31 00:01:39,770 --> 00:01:43,180 Kaya habang loop ay isang paraan ng pagtiyak na patuloy naming 32 00:01:43,180 --> 00:01:45,320 i-prompt ang user para sa isang wastong input. 33 00:01:45,320 --> 00:01:50,070 At sa sandaling bigyan sila sa amin ng wastong input, kami ay magpatuloy sa kahit anong ay susunod. 34 00:01:50,070 --> 00:01:54,380 Alam namin na kami ay pagpunta sa hilingin sa ang user para sa input ng hindi bababa sa isang beses. 35 00:01:54,380 --> 00:01:59,200 Kaya ngayon kami dumating sa isang kapatid na babae ng habang loop, kung saan ay ang gawin habang loop. 36 00:01:59,200 --> 00:02:02,650 >> Gawin habang loop ay execute ang katawan ng loop ng hindi bababa sa isang beses. 37 00:02:02,650 --> 00:02:06,150 Kaya nang walang pagtingin sa mga kondisyon, ito ay execute ang katawan ng loop. 38 00:02:06,150 --> 00:02:09,750 At pagkatapos suriin ang kalagayan upang makita kung kailangan nito upang ulitin mismo. 39 00:02:09,750 --> 00:02:13,080 Ito ay dumating sa madaling-gamiting kapag kami ay pagpapatunay user input. 40 00:02:13,080 --> 00:02:15,830 Alam namin na kami ay pagpunta upang hilingin sa kanila ng hindi bababa sa isang beses. 41 00:02:15,830 --> 00:02:18,780 Kaya ang isang gawin habang loop baka hitsura ng isang bagay tulad nito. 42 00:02:18,780 --> 00:02:20,090 Mayroon kaming isang integer n. 43 00:02:20,090 --> 00:02:22,760 At sa loob ng do habang loop, agad naming 44 00:02:22,760 --> 00:02:24,750 i-prompt ang user para sa isang integer. 45 00:02:24,750 --> 00:02:29,740 Kung n ay hindi wasto, pagkatapos ay gagamitin namin prompt ang mga ito muli at muli at muli hanggang sa sila 46 00:02:29,740 --> 00:02:31,820 bigyan kami na valid integer. 47 00:02:31,820 --> 00:02:37,440 Sa wakas, sa sandaling n ay isang wastong input, kami magpatuloy sa natitirang bahagi ng aming programa. 48 00:02:37,440 --> 00:02:41,830 >> Kaya sabihin bumalik sa spec at check kung ano ang mga kondisyon para sa isang may-bisang input 49 00:02:41,830 --> 00:02:43,670 ay magiging. 50 00:02:43,670 --> 00:02:48,090 Ang wastong heights ay pagpunta sa nasa pagitan ng 0 at 23, inclusive. 51 00:02:48,090 --> 00:02:53,350 Kaya di-wastong heights ay pagpunta sa na mas mababa sa 0 o higit sa 23. 52 00:02:53,350 --> 00:02:56,420 Kaya tandaan upang mag-disenyo iyong kalagayan nang mabuti, 53 00:02:56,420 --> 00:02:58,660 alam na ang kalagayan para sa gawin habang loop 54 00:02:58,660 --> 00:03:01,470 dapat na habang n ay hindi wasto. 55 00:03:01,470 --> 00:03:05,080 Ngayon na ito ay hindi pagpunta sa maging isang simpleng solong Boolean expression. 56 00:03:05,080 --> 00:03:07,630 Kami ay pagpunta sa may sa pagsamahin dalawang magkaibang mga expression 57 00:03:07,630 --> 00:03:09,900 upang gumawa ng aming buong kondisyon. 58 00:03:09,900 --> 00:03:13,290 >> Kaya sabihin lang tumingin sa isang katotohanan mesa na ako na nagbigay sa iyo ng hint na kami 59 00:03:13,290 --> 00:03:15,200 pagpunta sa pagharap sa dalawang Booleans. 60 00:03:15,200 --> 00:03:19,620 Kaya narito ang isang katotohanan mesa kung saan ako may dalawang Booleans-- Boolean 1 at 2. 61 00:03:19,620 --> 00:03:27,050 Kaya kami ay may pagpipilian upang suriin bool1 at bool2 o bool1 o bool2. 62 00:03:27,050 --> 00:03:31,980 At lamang maging totoo kung ang parehong Booleans suriin sa tunay na, samantalang lahat 63 00:03:31,980 --> 00:03:37,280 o magiging tunay na bilang hangga't ang isa sa ang dalawang Booleans sinusuri sa true. 64 00:03:37,280 --> 00:03:41,450 OK, kaya maglaan ng ilang sandali, i-pause ito video at digest ang katotohanang ito table. 65 00:03:41,450 --> 00:03:42,930 Kukunin ko na karapatan dito naghihintay. 66 00:03:42,930 --> 00:03:45,760 Kapag dumating ka pabalik, tingnan kung maaari mong pagdugtong-dugtungin 67 00:03:45,760 --> 00:03:51,910 isang Boolean expression para sa iyong kalagayan ng n sa pagiging isang di-wastong input. 68 00:03:51,910 --> 00:03:54,420 >> Kaya ngayon na mayroon kami wastong user input, sabihin 69 00:03:54,420 --> 00:03:58,710 sige at makipag-usap tungkol sa kung paano namin maaaring gumuhit ng half pyramid. 70 00:03:58,710 --> 00:04:03,410 Dito sa ito simpleng text editor, Ko na iginuhit ng isang kaliwa nakahanay pyramid. 71 00:04:03,410 --> 00:04:07,050 Datapuwa't nalalaman natin na kailangan namin ang aming pyramid na right nakahanay. 72 00:04:07,050 --> 00:04:08,650 Kaya kung paano ang maaari kong gawin ito? 73 00:04:08,650 --> 00:04:11,440 Well, maaari ko bang subukan upang itulak ang lahat ng bagay sa gilid 74 00:04:11,440 --> 00:04:14,880 sa pamamagitan lamang ng paglalagay ng isang maliit na karakter sa pagitan. 75 00:04:14,880 --> 00:04:16,779 At pagkatapos, para sa susunod na line, ako pagpunta sa ilagay 76 00:04:16,779 --> 00:04:20,970 ang ilang mga karagdagang mga character upang itulak ito kasama, at further-- iba pa at iba forth-- 77 00:04:20,970 --> 00:04:23,360 hanggang ako ay may karapatan nakahanay pyramid. 78 00:04:23,360 --> 00:04:27,780 Kaya ang ginagawa namin ay may karapatan align pyramid, ngunit ito ay hindi hitsura kaya mahusay na gamit ang mga tuldok. 79 00:04:27,780 --> 00:04:30,680 Ngunit kami pa rin bang mapanatili na magandang spacing. 80 00:04:30,680 --> 00:04:35,260 Kaya ako ng pagpunta sa literal ipasok ang ilang mga puwang. 81 00:04:35,260 --> 00:04:39,420 >> Sa halip na tatlong tuldok, makikita ko maglagay ng isa, dalawa, tatlo puwang. 82 00:04:39,420 --> 00:04:40,370 Sa ikalawang linya. 83 00:04:40,370 --> 00:04:42,640 Makikita ko bang ilagay ang isa, dalawang mga puwang. 84 00:04:42,640 --> 00:04:45,370 At sa una sa huli line, lamang ng isang space. 85 00:04:45,370 --> 00:04:48,290 At dito Mayroon akong isang karapatan nakahanay pyramid. 86 00:04:48,290 --> 00:04:52,170 Mula sa paggawa ng sa halimbawa sa teksto editor, kami ay may isang ideya para sa mga pattern 87 00:04:52,170 --> 00:04:54,590 na gagamitin namin upang gumuhit ang half pyramid. 88 00:04:54,590 --> 00:04:58,080 Para sa bawat hilera, ano ang ginawa namin ay i-type namin ang ilang mga puwang, 89 00:04:58,080 --> 00:05:00,170 at pagkatapos ay nag-type ng ilang mga hashes, at pagkatapos ay nag-type 90 00:05:00,170 --> 00:05:03,020 ang Enter key, na kung saan ay ang paglikha ng isang bagong linya. 91 00:05:03,020 --> 00:05:07,770 Kaya ngayon na mayroon kami na, hana isang hakbang karagdagang at makahanap ng isang pattern. 92 00:05:07,770 --> 00:05:10,170 >> Kaya ako pagpunta sa sabihin, para sa interes ng halimbawang ito, 93 00:05:10,170 --> 00:05:12,480 kami ay pagharap sa isang taas ng 8. 94 00:05:12,480 --> 00:05:17,100 Ang unang hanay ay pagpunta sa magkaroon ng dalawang hashes na sumusunod pitong mga puwang. 95 00:05:17,100 --> 00:05:20,020 Ang second-- tatlong hashes, anim na mga puwang. 96 00:05:20,020 --> 00:05:24,260 Third row-- apat hashes, limang spaces-- iba pa at iba pa 97 00:05:24,260 --> 00:05:26,350 hanggang sa makuha namin sa NTH hilera. 98 00:05:26,350 --> 00:05:31,540 Kaya nga, hinihiling ko sa iyo para sa NTH hilera, kung gaano karaming mga hashes kami makapupunta upang magkaroon 99 00:05:31,540 --> 00:05:33,120 at kung gaano karaming mga puwang? 100 00:05:33,120 --> 00:05:37,000 Kaya ito ay nasa sa iyo upang malaman kung ang isang formula upang kumatawan kung gaano karaming mga hashes 101 00:05:37,000 --> 00:05:42,020 at kung gaano karaming mga puwang ay kailangan para sa ang NTH hilera kapag mayroon kang ilang taas. 102 00:05:42,020 --> 00:05:46,060 >> Ngayon kapag ikaw ay figuring out na ito, maging maingat kung paano ka na-index. 103 00:05:46,060 --> 00:05:49,170 Ano ang ibig sabihin ko sa pamamagitan ng ito ay na sa araw-araw na buhay ang lahat ng sa amin 104 00:05:49,170 --> 00:05:51,540 magbilangan, kadalasan sa pamamagitan ng 1. 105 00:05:51,540 --> 00:05:55,950 Ngunit sa CS50 at sa computer science sa pangkalahatan, kami ay 0-index. 106 00:05:55,950 --> 00:06:00,620 Kaya ang unang hilera ay magiging n ng 0 bilang laban sa 1. 107 00:06:00,620 --> 00:06:04,550 Mag-ingat ng mga ito kapag ikaw ay sinusubukan upang malaman kung ang iyong mga pattern. 108 00:06:04,550 --> 00:06:07,570 Kaya ngayon sabihin bumalik sa kung paano kami ay pagpunta sa gumuhit ng aming pyramid. 109 00:06:07,570 --> 00:06:12,300 Para sa bawat hilera, kami ay pagpunta sa nais na i-print ang mga puwang, i-print ang hashes, 110 00:06:12,300 --> 00:06:14,050 at pagkatapos ay i-print ang isang bagong linya. 111 00:06:14,050 --> 00:06:19,160 Ang hint dito ay ang salitang "para" sa bawat hilera. 112 00:06:19,160 --> 00:06:21,470 Sa C, mayroon kaming isang tayuan tinatawag na isang para sa loop, 113 00:06:21,470 --> 00:06:25,250 na kung saan ay binubuo ng isang initialization, sa isang kondisyon, ang isang pag-update, 114 00:06:25,250 --> 00:06:26,790 at ang katawan ng loop. 115 00:06:26,790 --> 00:06:31,360 >> Sabihing Nais kong sabihin, hello mundo, 50 beses, ang aking para sa loop 116 00:06:31,360 --> 00:06:32,880 magiging hitsura ng isang bagay tulad na ito. 117 00:06:32,880 --> 00:06:35,480 magpasimula ko ang aking integer sa 0. 118 00:06:35,480 --> 00:06:38,230 Ang kalagayan ay na ako ay mas mababa sa 50. 119 00:06:38,230 --> 00:06:42,350 At pagkatapos ay ang aking pag-update ay lamang incrementing ko sa pamamagitan ng isa sa bawat oras. 120 00:06:42,350 --> 00:06:45,140 Maaari din naming gamitin para sa mga loop upang umulit sa bagay na ito. 121 00:06:45,140 --> 00:06:47,820 Pansinin dito kung paano kami ay may hindi hard-code ng isang numero, 122 00:06:47,820 --> 00:06:51,820 ngunit sa halip na inilagay ang mga variable taas sa halip sa ang kundisyon. 123 00:06:51,820 --> 00:06:56,420 Kaya kung ano ako ng paggawa dito ay ako iterating sa paglipas ng bawat hilera ng pyramid. 124 00:06:56,420 --> 00:07:00,160 ang maaari kong gawin ang isang bagay para sa bawat hilera sa loob ng katawan ng aking loop. 125 00:07:00,160 --> 00:07:02,350 >> Ano ang iyong ginagawa sa loob namin ang katawan ng loop? 126 00:07:02,350 --> 00:07:07,120 Well, bilang namin na sinabi, kami ay pag-print espasyo at kami ay pag-print ng hashes 127 00:07:07,120 --> 00:07:09,480 at kami ay pag-print ng isang bagong linya. 128 00:07:09,480 --> 00:07:11,950 Kaya ang aking mga panlabas na para sa loop ay ganito ang hitsura. 129 00:07:11,950 --> 00:07:15,070 umulit ako sa paglipas ng bawat hilera ng pyramid, paggamit, 130 00:07:15,070 --> 00:07:18,890 sa kasong ito, taas bilang ang mga variable na nag-iimbak ang taas ng pyramid. 131 00:07:18,890 --> 00:07:22,870 Sa loob ng katawan ng na loop, ako upang i-print na mga puwang nang paulit-ulit, i-print 132 00:07:22,870 --> 00:07:26,730 ang hashes paulit-ulit, at pagkatapos ay i-print ang isang bagong linya. 133 00:07:26,730 --> 00:07:31,010 >> Kaya ngayon, gamit ang lahat ng mga konsepto na Ko na uusapang tungkol sa ito lakad-through, 134 00:07:31,010 --> 00:07:35,210 dapat mong ma upang i-prompt ang user para sa input, patunayan na input, 135 00:07:35,210 --> 00:07:37,370 at pagkatapos ay gumuhit ang kalahati pyramid. 136 00:07:37,370 --> 00:07:41,510 >> Ang pangalan ko ay Zamyla, at ito ay CS50. 137 00:07:41,510 --> 00:07:43,167