1 00:00:07,370 --> 00:00:09,760 [Powered by Google Translate] Tommy MACWILLIAM: Estu la diskuto pri cikloj, unu el la komuna 2 00:00:09,760 --> 00:00:13,380 programado konstruas ni vidos tra CS50. 3 00:00:13,380 --> 00:00:15,570 Ni uzos maŝojn kiam ni volas realigi 4 00:00:15,570 --> 00:00:17,200 tasko pli ol unufoje. 5 00:00:17,200 --> 00:00:20,700 Ekzemple, ni povus voli presi "hi" 100 fojojn aŭ presita 6 00:00:20,700 --> 00:00:22,700 el ĉiuj literoj de la alfabeto. 7 00:00:22,700 --> 00:00:26,030 En ambaŭ kazoj, ni havas unu aferon ni volas fari 8 00:00:26,030 --> 00:00:28,700 plurfoje, presi ion. 9 00:00:28,700 --> 00:00:31,970 Tamen, kion ni presi ĉiu tempo povas varii. 10 00:00:31,970 --> 00:00:34,530 Do ni povas fari ion iomete malsama en ĉiu 11 00:00:34,530 --> 00:00:37,820 ripeta, aŭ kuri tra, de la ciklo. 12 00:00:37,820 --> 00:00:41,280 Ni vidos tri malsamaj tipoj de cikloj en C, dum 13 00:00:41,280 --> 00:00:44,700 maŝojn, por bukloj, kaj faru dum cikloj. 14 00:00:44,700 --> 00:00:47,850 Kvankam tiuj tri specoj de cikloj havas malsaman sintakso, 15 00:00:47,850 --> 00:00:50,630 la ideojn malantaŭ ili estas la sama. 16 00:00:50,630 --> 00:00:53,930 Ni difinas iujn bloko de kodo ene frizita krampoj, 17 00:00:53,930 --> 00:00:57,810 nomata la korpo de la ciklo, ke ni volas esti ekzekutita 18 00:00:57,810 --> 00:00:59,790 iu nombro da fojoj. 19 00:00:59,790 --> 00:01:03,370 Por ŝanĝi la valorojn de variabloj uzis en la korpo, ni 20 00:01:03,370 --> 00:01:07,570 povas fari nian buklo fari ion malsama ĉiufoje ĝi estas kuri. 21 00:01:07,570 --> 00:01:10,750 Kun ajna buklo ni skribas, ni ankaŭ bezonas por decidi kiam la 22 00:01:10,750 --> 00:01:12,400 buklo ĉesos kurante. 23 00:01:12,400 --> 00:01:15,650 Se ni ne faras tion, tiam nia fidinda komputilo daŭrigos 24 00:01:15,650 --> 00:01:19,040 kuri ke buklo ĝis ni mortigos la programo. 25 00:01:19,040 --> 00:01:22,490 En Scratch, ni povus uzi la ripeto n fojoj 26 00:01:22,490 --> 00:01:24,600 bloki krei buklo. 27 00:01:24,600 --> 00:01:28,200 Ĉiuj pecoj ene de bloko kiu diris ripeto 10 28 00:01:28,200 --> 00:01:30,130 estus kuri 10-foje. 29 00:01:30,130 --> 00:01:34,160 Kaj tiam, ni volas movi al la pecoj post tiu ciklo. 30 00:01:34,160 --> 00:01:38,140 Do nia halto kondiĉo estis simple, ĉi tiu bloko estis 31 00:01:38,140 --> 00:01:39,830 kuri 10-foje. 32 00:01:39,830 --> 00:01:43,900 Do ni rekrei tiun en C. En ordo por Scratch certigi 33 00:01:43,900 --> 00:01:46,920 ke la pecoj en la ripeto bloko estas ekzekutitaj 34 00:01:46,920 --> 00:01:51,180 ekzakte 10 fojoj, Scratch bezonas konservi trako de ĉiu 35 00:01:51,180 --> 00:01:53,750 ekzekuto de la ripeto bloko. 36 00:01:53,750 --> 00:01:56,790 Por kontroli kiu faras kio fojoj nia buklo korpo estis 37 00:01:56,790 --> 00:02:00,360 ekzekutitaj, ni krei variablon vokis mi. 38 00:02:00,360 --> 00:02:03,400 Ni komencu i for je nulo, ĉar nia ciklo 39 00:02:03,400 --> 00:02:04,650 ne kuras ankoraux. 40 00:02:10,009 --> 00:02:10,949 OK 41 00:02:10,949 --> 00:02:15,560 Nun ni uzas la dum ŝlosilvorto dividi niajn buklo. 42 00:02:20,100 --> 00:02:24,180 Nun ni bezonas eltrovi kiam nia buklo ĉesos, sed 43 00:02:24,180 --> 00:02:26,730 ni lasu tion por nun kaj tiam revenu al tio. 44 00:02:30,970 --> 00:02:32,150 Bone. 45 00:02:32,150 --> 00:02:35,260 Ene de nia ciklo, ni nur presi mesaĝon ekstere, kiel 46 00:02:35,260 --> 00:02:38,535 "Hi." Ni povas uzi la printf funkcio por ĉi tio. 47 00:02:48,400 --> 00:02:49,230 Bone. 48 00:02:49,230 --> 00:02:54,210 Do nun ni gravuri ke ripeto de la ciklo korpo havas 49 00:02:54,210 --> 00:02:55,750 estis ekzekutita. 50 00:02:55,750 --> 00:03:00,320 Ni povas fari tion per aldono 1 ĝis, aŭ pliigante, nia nombrilo 51 00:03:00,320 --> 00:03:01,740 variablo, i. 52 00:03:01,740 --> 00:03:09,180 Por fari tion, ni povas diri mi estas egala al i plus 1, aŭ pli 53 00:03:09,180 --> 00:03:16,520 simple, mi pli pli. 54 00:03:16,520 --> 00:03:17,320 Granda. 55 00:03:17,320 --> 00:03:21,810 Do nun ni povas vidi ke ĉiu tempo nia buklo kuras, nia 56 00:03:21,810 --> 00:03:24,500 nombrilo variablo levigxas al oni. 57 00:03:24,500 --> 00:03:29,410 Do ni scias precize, kiom da iteraciones ni kuras ĝis nun. 58 00:03:29,410 --> 00:03:31,630 Post unu ripeto de la ciklo, nia valoro 59 00:03:31,630 --> 00:03:34,270 de i estos 1. 60 00:03:34,270 --> 00:03:37,460 Post du iteraciones, i estos 2. 61 00:03:37,460 --> 00:03:42,640 Kaj post 10 iteraciones, i estos 10. 62 00:03:42,640 --> 00:03:46,780 Do, se ni volas kuri ĉi buklo ĝuste 10 fojojn, tiam 63 00:03:46,780 --> 00:03:49,240 ĉi tio estas kiam ni volas halti. 64 00:03:49,240 --> 00:03:53,860 Do ni volas kuri ĉi buklo dum i estas malpli ol 10, kaj 65 00:03:53,860 --> 00:03:57,630 jen ĝuste kion ni skribas, dum i 66 00:03:57,630 --> 00:04:02,450 estas malpli ol 10. 67 00:04:02,450 --> 00:04:06,380 Ĉi tiu kondiĉo aspektas ĝuste tiel la kondiĉoj uzata en se 68 00:04:06,380 --> 00:04:07,830 alie blokoj. 69 00:04:07,830 --> 00:04:11,690 Post la korpon de nia ciklo estis ekzekutitaj, nia programo 70 00:04:11,690 --> 00:04:14,690 saltos reen ĝis la maŝojn kondiĉo. 71 00:04:14,690 --> 00:04:17,290 Se la kondiĉo estas vera, tiam la korpon de la 72 00:04:17,290 --> 00:04:18,990 buklo estos funkcii denove. 73 00:04:18,990 --> 00:04:22,190 Se la kondiĉo ne plu estas vera, tiam nia buklo ne estos 74 00:04:22,190 --> 00:04:25,700 kuri plu kaj movos al la venonta linio de kodo 75 00:04:25,700 --> 00:04:27,876 sub nia ciklo. 76 00:04:27,876 --> 00:04:28,550 Bone. 77 00:04:28,550 --> 00:04:30,740 Do ni rigardu duan tipon de 78 00:04:30,740 --> 00:04:33,000 ciklo, la por buklo. 79 00:04:33,000 --> 00:04:37,310 Apud la dum ŝlosilvorto, en krampoj, ni havis unu aferon, 80 00:04:37,310 --> 00:04:39,840 kondiĉe ke bezonis esti vera por la 81 00:04:39,840 --> 00:04:42,010 buklo korpon por kuri. 82 00:04:42,010 --> 00:04:45,440 Tio signifas ni devis krei nian nombrilo variablo ekstere 83 00:04:45,440 --> 00:04:48,760 de la ciklo kaj memori pliigo ĝin en iu momento 84 00:04:48,760 --> 00:04:51,050 ene de la ciklo. 85 00:04:51,050 --> 00:04:54,320 La kaplinio por nia por ciklo, aliflanke, havas tri 86 00:04:54,320 --> 00:04:58,510 partoj, ĉiu el kiuj estos disigitaj per punktokomo. 87 00:04:58,510 --> 00:05:01,950 En nia unua triono, ni povas deklari ajna nombrilo aŭ helpanto 88 00:05:01,950 --> 00:05:05,000 variabloj ni deziras uzi en nia ciklo. 89 00:05:05,000 --> 00:05:07,350 En praktiko, ĉi tiu povas esti vere utila. 90 00:05:07,350 --> 00:05:10,590 Ni vere ne bezonas ke variablo, i, post nia tempo 91 00:05:10,590 --> 00:05:13,650 buklo kuris, do ni vere ne havas por deklari ĝin 92 00:05:13,650 --> 00:05:15,810 eksteren de la ciklo. 93 00:05:15,810 --> 00:05:19,080 La dua triono estos la kondiĉo, ke devas esti vera 94 00:05:19,080 --> 00:05:21,850 por ke la korpo estu ekzekutita denove, same kiel 95 00:05:21,850 --> 00:05:23,330 en nia tempo buklo. 96 00:05:23,330 --> 00:05:26,350 En nia lasta triono, ni povas kuri deklaron kiu estos 97 00:05:26,350 --> 00:05:30,270 ekzekutitaj post ĉiu ripeto de la ciklo, tial ni ne havas 98 00:05:30,270 --> 00:05:32,710 por konstrui ĝin en la ciklo korpo. 99 00:05:32,710 --> 00:05:38,390 Do ni skribos por buklo kiu rakontas malsupren de 5 al 1. 100 00:05:38,390 --> 00:05:41,790 Ni komencu per la ŝlosilvorto por. 101 00:05:41,790 --> 00:05:44,680 Ni povas krei nombrilo variablo unua, kiun ni instruos vin 102 00:05:44,680 --> 00:05:47,840 starigis al 5 ĉi tempo ekde ni rakonti sube, 103 00:05:47,840 --> 00:05:50,110 sekvata de punktokomo. 104 00:05:50,110 --> 00:05:53,660 Sekva estas nia kondiĉo, kiun ni revenos al. 105 00:05:53,660 --> 00:05:57,540 Trie, ni ŝatus dekremento nia nombrilo variablo post 106 00:05:57,540 --> 00:05:59,620 ĉiu ripeto de la ciklo. 107 00:05:59,620 --> 00:06:04,740 Do anstataŭ diri i plus plus, ni diros i minus minus. 108 00:06:04,740 --> 00:06:05,300 Bone. 109 00:06:05,300 --> 00:06:09,490 Do ni volas ke la buklo korpo kuri dum mi estas ankoraŭ 110 00:06:09,490 --> 00:06:11,960 pli granda ol 0. 111 00:06:11,960 --> 00:06:16,160 En la korpo de la ciklo, ni presi la valoro de i. 112 00:06:16,160 --> 00:06:20,480 Por tion fari, ni uzu la printf funkcion, uzante la% d 113 00:06:20,480 --> 00:06:21,650 lokokupilo. 114 00:06:21,650 --> 00:06:24,820 Memoru, ke lokokupilo estos anstataŭita per la 115 00:06:24,820 --> 00:06:27,040 valoro de i. 116 00:06:27,040 --> 00:06:32,060 Fine, ni aldonu komunikaĵo post nia por buklo. 117 00:06:32,060 --> 00:06:35,850 Kiam ni kuros ĉi maŝo, i dividos je 5, 118 00:06:35,850 --> 00:06:38,070 tiel 5 estos presita. 119 00:06:38,070 --> 00:06:42,000 Iam mi alvenas al 0, la daŭrigo kondiĉo, i estas 120 00:06:42,000 --> 00:06:44,450 pli granda ol 0, ne plu teni. 121 00:06:44,450 --> 00:06:47,330 Do nia buklo ĉesos ekzekuti, kaj ni vidos la 122 00:06:47,330 --> 00:06:49,850 komunikaĵo post la ciklo. 123 00:06:49,850 --> 00:06:51,340 Do ni kuros ĉi tiu kodo. 124 00:06:51,340 --> 00:06:52,700 Unue, ni kompili 125 00:06:52,700 --> 00:06:56,460 countdown.c kun fari rakontas malantaŭen. 126 00:06:56,460 --> 00:06:59,320 Nun, ni povas kuri ĉi tiu kodo per. / Rakontas malantaŭen. 127 00:07:02,340 --> 00:07:06,040 En ambaŭ dum maŝojn kaj por bukloj, nia daŭrigo 128 00:07:06,040 --> 00:07:09,010 kondiĉo estos kontrolata antaŭ la korpo 129 00:07:09,010 --> 00:07:10,960 de la ciklo estas ekzekutitaj. 130 00:07:10,960 --> 00:07:13,840 Tio signifas ke, se nia kondiĉo ne estas komence 131 00:07:13,840 --> 00:07:18,100 vera, tiam la korpon de nia ciklo neniam kuri. 132 00:07:18,100 --> 00:07:22,060 Do ĝi estas kelkfoje utila por kontroli la kondiĉo post la 133 00:07:22,060 --> 00:07:25,150 korpo de la ciklo anstataŭ antaŭ ĝi. 134 00:07:25,150 --> 00:07:28,270 Do ni skribos buklo al instigas la uzanton por nombro 135 00:07:28,270 --> 00:07:30,990 ĝis pozitiva nombro estas provizita. 136 00:07:30,990 --> 00:07:34,740 Se la uzanto enigas negativa nombro, ni volas peti ilin 137 00:07:34,740 --> 00:07:36,260 por alia nombro. 138 00:07:36,260 --> 00:07:38,940 Do ni volas ĉi prompto esti interne de la 139 00:07:38,940 --> 00:07:41,050 korpo estis de la ciklo. 140 00:07:41,050 --> 00:07:44,730 Tamen, kiam la ciklo kuras por la unua fojo, la uzanto 141 00:07:44,730 --> 00:07:46,750 ne donis al ni la nombro ankoraŭ. 142 00:07:46,750 --> 00:07:49,640 Do ĝi ne havas sencon por kontroli se ĝi estas pozitiva. 143 00:07:49,640 --> 00:07:54,020 Anstataŭe, ni volas kontroli la nombro post la korpo de 144 00:07:54,020 --> 00:07:55,720 la ciklo kuras. 145 00:07:55,720 --> 00:08:00,310 Ni povas fari ĉi tion kun do dum ciklo. 146 00:08:00,310 --> 00:08:03,560 Unue, ni krei variablon, n, kiu tenas 147 00:08:03,560 --> 00:08:05,230 la uzanto enigo. 148 00:08:05,230 --> 00:08:09,960 Nun ni uzas la do ŝlosilvorto, sekvita de frizita streĉaj kiu 149 00:08:09,960 --> 00:08:12,930 dividos la korpon de nia ciklo. 150 00:08:12,930 --> 00:08:16,230 En la korpo, ni povas instigas la uzanton por nombro kun la 151 00:08:16,230 --> 00:08:18,480 GetInt funkcio. 152 00:08:18,480 --> 00:08:23,230 Nun, ni volas ke la korpo de ĉi buklo ekzekuti denove se 153 00:08:23,230 --> 00:08:28,370 la uzanto tajpas negativa nombro, do ni diros dum n 154 00:08:28,370 --> 00:08:30,420 estas malpli ol 0. 155 00:08:30,420 --> 00:08:33,140 Rimarki la punktokomo tie post la dum komunikaĵo. 156 00:08:38,909 --> 00:08:40,679 Do ni kuros ĉi tiu kodo. 157 00:08:40,679 --> 00:08:44,780 Unue, ni kompilos tion kun fari pozitiva. 158 00:08:44,780 --> 00:08:49,340 Nun ni povas uzi la programon kun. / Pozitiva. 159 00:08:49,340 --> 00:08:52,660 Se ni donas ĉi programo negativa nombro, kiel negativa 160 00:08:52,660 --> 00:08:56,560 4, tiam ni estos instigis denove por nombro ekde la 161 00:08:56,560 --> 00:09:00,490 kondiĉo de nia do dum buklo estis vera. 162 00:09:00,490 --> 00:09:04,690 Iam ni donu pozitiva nombro, kiel 8, tiam la 163 00:09:04,690 --> 00:09:08,560 kondiĉo de nia do dum buklo ne plu estos vera. 164 00:09:08,560 --> 00:09:12,080 Do la buklo ne estos ekzekutita denove. 165 00:09:12,080 --> 00:09:15,290 Kaj tio estas por la tri tipoj de cikloj ni uzos en C. 166 00:09:15,290 --> 00:09:18,840 Mia nomo estas Tommy, kaj ĉi tiu estas CS50.