1 00:00:00,000 --> 00:00:02,420 >> [MUZIKO Ludante] 2 00:00:02,420 --> 00:00:05,189 3 00:00:05,189 --> 00:00:05,980 Parolanto: Bone. 4 00:00:05,980 --> 00:00:08,540 Do ni parolu pri alia afero kiu estas tre unika al C, 5 00:00:08,540 --> 00:00:10,010 kio estas datumtipoj kaj variabloj. 6 00:00:10,010 --> 00:00:12,340 Kiam mi diras unika por C, mi vere nur signifi en la kunteksto de, 7 00:00:12,340 --> 00:00:14,470 Se vi estis programisto por vere longa tempo, 8 00:00:14,470 --> 00:00:16,270 Vi verŝajne ne laboris kun datumtipoj 9 00:00:16,270 --> 00:00:18,470 se vi uzis modernan programlingvoj. 10 00:00:18,470 --> 00:00:20,432 Modernaj lingvoj kiel PHP kaj Javascript, 11 00:00:20,432 --> 00:00:22,640 kiun ni ankaux vidos iom poste en la kurso, 12 00:00:22,640 --> 00:00:25,550 vi ne vere devas specifi la datumtipon de variablo 13 00:00:25,550 --> 00:00:26,270 kiam vi uzas ĝin. 14 00:00:26,270 --> 00:00:28,067 >> Vi nur sciigu kaj ekuzi ĝin. 15 00:00:28,067 --> 00:00:29,900 Se ĝi estas entjero, ĝi scias ke estas entjero. 16 00:00:29,900 --> 00:00:31,960 Se ĝi estas karaktero, estas scias ke estas karaktero. 17 00:00:31,960 --> 00:00:35,320 Se ĝi estas vorto, ĝi konas ĝi estas kordoj, tn. 18 00:00:35,320 --> 00:00:37,300 >> Sed en C, kiu estas malnovaj lingvon, ni bezonas 19 00:00:37,300 --> 00:00:39,420 specifi la datumoj tipo de ĉiu variablo 20 00:00:39,420 --> 00:00:42,990 ke ni kreas la unuan fojon ke ni uzas tiu variablo. 21 00:00:42,990 --> 00:00:45,030 Do C venas kun iuj enkonstruita datumtipoj. 22 00:00:45,030 --> 00:00:46,972 Kaj ni akiras konatan kun iu el tiuj. 23 00:00:46,972 --> 00:00:50,180 Kaj tiam poste ni ankaŭ paroli iomete pri kelkaj el la datumtipoj 24 00:00:50,180 --> 00:00:54,450 ke ni skribis por vi, Do vi povas uzi ilin en CS50. 25 00:00:54,450 --> 00:00:56,130 >> La unua estas int. 26 00:00:56,130 --> 00:00:59,110 La int datumtipo estas uzata por variabloj kiu stoki entjero valorojn. 27 00:00:59,110 --> 00:01:03,210 Do 1, 2, 3, negativa 1, 2, 3, kaj tiel plu. 28 00:01:03,210 --> 00:01:05,960 Entjeroj, kiu estas iu vi devus teni en menso por la kvizo, 29 00:01:05,960 --> 00:01:09,590 Ĉiam levu kvar bajtoj de memoro, kiu estas 32 bitoj. 30 00:01:09,590 --> 00:01:11,620 Estas ok bitojn en bajto. 31 00:01:11,620 --> 00:01:14,470 >> Do tio signifas ke la gamo de valoroj kiu entjero povas stoki 32 00:01:14,470 --> 00:01:19,130 estas limigita de kio povas persvadi ene 32 bitoj valoras de informo. 33 00:01:19,130 --> 00:01:21,850 Nun kiel rezultas, estis antaŭlonge decidis 34 00:01:21,850 --> 00:01:24,310 ke ni disiĝis ke gamo de 32 bitoj 35 00:01:24,310 --> 00:01:26,650 en negativaj entjeroj kaj pozitivaj entjeroj 36 00:01:26,650 --> 00:01:28,390 ĉiu ricevas la duonon de la teritorio. 37 00:01:28,390 --> 00:01:32,230 Do la gamo de valoroj kiuj ni reprezentas kun entjero gamo de negativaj 2 38 00:01:32,230 --> 00:01:36,520 al la 31a povo por 2 al la 31a potenco minus 1, 39 00:01:36,520 --> 00:01:38,190 kaŭzi vi ankaŭ bezonos lokon por 0. 40 00:01:38,190 --> 00:01:41,650 >> Do esence duonon de la eblaj valoroj vi povas havi en int estas negativa, 41 00:01:41,650 --> 00:01:42,610 kaj duono estas pozitivaj. 42 00:01:42,610 --> 00:01:47,270 Kaj malglate tie, tio estas pri negativaj 2 miliardoj pri pozitiva 2 miliardoj. 43 00:01:47,270 --> 00:01:50,207 Donu aŭ preni kelkajn cent milionojn. 44 00:01:50,207 --> 00:01:52,290 Do jen kion vi povas persvadi en entjera variablo. 45 00:01:52,290 --> 00:01:55,490 Nun ni havas ankaŭ ion nomata sensigna entjera. 46 00:01:55,490 --> 00:01:59,220 Nun sensigna ints ne estas aparta tipo de variablo. 47 00:01:59,220 --> 00:02:01,590 Prefere, sensigna estas kio nomiĝas kvalifikiĝinto. 48 00:02:01,590 --> 00:02:04,990 Ĝi modifas la datumoj tipo de entjero iomete. 49 00:02:04,990 --> 00:02:07,850 >> Kaj en ĉi tiu kazo, kion sensigna means-- kaj vi povas ankaŭ 50 00:02:07,850 --> 00:02:11,530 uzi sensigna aliaj datumtipoj, entjero estas ne la sola. 51 00:02:11,530 --> 00:02:15,310 Kio ĝi efike faras estas duobloj la pozitiva atingo de valoroj 52 00:02:15,310 --> 00:02:19,350 ke entjero povas alpreni je la elspezo de ne permesanta 53 00:02:19,350 --> 00:02:21,140 vin preni sur negativaj valoroj. 54 00:02:21,140 --> 00:02:25,400 Do se vi havas numerojn ke vi scias ricevos pli altan ol 2 miliardoj sed malpli 55 00:02:25,400 --> 00:02:31,280 ol 4 miliardoj, por example-- kiu estas 2 al la 32a power-- 56 00:02:31,280 --> 00:02:33,330 vi eble deziras uzi sensigna int se vi 57 00:02:33,330 --> 00:02:35,050 scias vian valoro neniam estos negativa. 58 00:02:35,050 --> 00:02:37,216 >> Vi foje havis uzita por sensigna variabloj 59 00:02:37,216 --> 00:02:39,460 en CS50, kio estas kial mi mencias ĝin ĉi tie. 60 00:02:39,460 --> 00:02:43,830 Sed denove, la gamo de valoroj kiuj al vi povas reprezenti kun sensigna entjera 61 00:02:43,830 --> 00:02:48,240 kiel t regulaj entjero, estas 0 al 2 al la 32-a potenco minus 1, 62 00:02:48,240 --> 00:02:50,840 aŭ proksimume 0 al 4 miliardoj. 63 00:02:50,840 --> 00:02:53,730 Do vi efike duobligis la pozitiva atingo ke vi povas persvadi, 64 00:02:53,730 --> 00:02:56,270 sed vi donis ĉiujn la negativaj valoroj. 65 00:02:56,270 --> 00:03:00,040 >> Nun kiel flanken, unsigned ne estas la sola kvalifikiĝinto 66 00:03:00,040 --> 00:03:01,790 ke ni povus vidi pro ŝanĝiĝema datumtipoj. 67 00:03:01,790 --> 00:03:05,779 Ekzistas ankaŭ aĵoj nomata mallongaj kaj longaj kaj const. 68 00:03:05,779 --> 00:03:07,820 Const ni vidos iom iom poste en la kurso. 69 00:03:07,820 --> 00:03:10,830 Mallongaj kaj longaj, ni probable ne. 70 00:03:10,830 --> 00:03:12,830 >> Sed ĝuste scias ke Estas aliaj kvalifikiĝintoj. 71 00:03:12,830 --> 00:03:14,080 Unsigned ne la sola. 72 00:03:14,080 --> 00:03:16,596 Sed estas la sola ni estas tuj parolos pri aktuale. 73 00:03:16,596 --> 00:03:17,310 Do gxuste. 74 00:03:17,310 --> 00:03:18,393 Do ni kovrita entjeroj. 75 00:03:18,393 --> 00:03:19,200 Kio poste? 76 00:03:19,200 --> 00:03:20,130 >> Signoj. 77 00:03:20,130 --> 00:03:23,620 Do signoj estas uzataj por variabloj kiu stoki ununuran karakteroj. 78 00:03:23,620 --> 00:03:24,850 Char estas mallonga por karaktero. 79 00:03:24,850 --> 00:03:27,870 Kaj foje vi auxdu personoj elparoli kiel aŭto. 80 00:03:27,870 --> 00:03:32,020 >> Do karakteroj ĉiam prenu unu bajton de memoro, kiu estas nur 8 bitoj. 81 00:03:32,020 --> 00:03:35,700 Do tio signifas ke ili povas nur konveni valorojn en la gamo de negativaj 2 82 00:03:35,700 --> 00:03:42,430 al la sepa potenco aux negativa 128, al 2 al la 7-a potenco minus 1, aŭ 127. 83 00:03:42,430 --> 00:03:45,710 >> Danke al ASCII, estis antaŭlonge decidis maniero 84 00:03:45,710 --> 00:03:50,805 mapi tiujn pozitivajn numerojn de 0 ĝis 127 diversaj karakteroj 85 00:03:50,805 --> 00:03:52,182 ke ĉiuj ekzistas sur nia klavaro. 86 00:03:52,182 --> 00:03:54,640 Do kiel ni vidos pli poste en la kurso, kaj vi probable 87 00:03:54,640 --> 00:03:57,700 venu parkerigi ĉe iuj punkto, ĉefurbo A, por example-- 88 00:03:57,700 --> 00:04:00,732 la karaktero ĉefurbo A-- mapas al la numero 65. 89 00:04:00,732 --> 00:04:02,940 Kaj la kialo estas ĉar tio estas kio estas ĝi estas 90 00:04:02,940 --> 00:04:05,490 estis atribuita de la ASCII normo. 91 00:04:05,490 --> 00:04:07,850 >> Minuskla A estas 97. 92 00:04:07,850 --> 00:04:11,900 La karaktero 0 por kiam vi efektive tajpi la karaktero, ne 93 00:04:11,900 --> 00:04:13,532 reprezentanta la numeron nul, estas 48. 94 00:04:13,532 --> 00:04:15,240 Vi lernos paro de tiuj kiel vi iras. 95 00:04:15,240 --> 00:04:17,990 Kaj nepre vi farigxis bezonantoj ili iomete poste en CS50. 96 00:04:17,990 --> 00:04:20,450 97 00:04:20,450 --> 00:04:23,390 >> La sekva granda datumtipo estas glitpunktaj nombroj. 98 00:04:23,390 --> 00:04:26,100 Do glitpunktaj nombroj estas ankaŭ konata kiel reelaj nombroj. 99 00:04:26,100 --> 00:04:28,850 Ili estas esence nombroj kiuj havas dekuman punkto en ili. 100 00:04:28,850 --> 00:04:33,360 Glitpunktaj valoroj kiel entjeroj estas ankaŭ 101 00:04:33,360 --> 00:04:36,090 enhavis ene 4 bajtoj de memoro. 102 00:04:36,090 --> 00:04:37,580 Nun estas nenia abako tie. 103 00:04:37,580 --> 00:04:40,890 Mankas nombra linio, ĉar priskribante la distancon de kaleŝego 104 00:04:40,890 --> 00:04:44,550 ne ekzakte klaraj aŭ intuicia. 105 00:04:44,550 --> 00:04:47,350 >> Sufiĉas diri vin havas 32 bitojn por labori kun. 106 00:04:47,350 --> 00:04:49,730 Kaj se vi havas kelkajn kiel pi, kiu havas 107 00:04:49,730 --> 00:04:55,510 entjera parto 3, kaj ŝvebanta punkto parto, aŭ dekuma parto 0,14159, 108 00:04:55,510 --> 00:04:58,735 kaj tiel plu, vi devas esti povi reprezenti ĉiujn it-- 109 00:04:58,735 --> 00:05:02,420 la entjera parto kaj la decimala parto. 110 00:05:02,420 --> 00:05:04,550 >> Do kion vi pensas ke povus signifi? 111 00:05:04,550 --> 00:05:08,180 Unu afero estas ke se la dekuma parton ricevas pli kaj pli longaj, 112 00:05:08,180 --> 00:05:10,660 se mi havas tre grandan entjera parto, mi ne 113 00:05:10,660 --> 00:05:13,090 povi esti tiel preciza kun la dekuma parto. 114 00:05:13,090 --> 00:05:15,280 Kaj tio estas vere la limigo de kaleŝego. 115 00:05:15,280 --> 00:05:17,229 >> Flosoj havas precizecon problemo. 116 00:05:17,229 --> 00:05:19,270 Ni nur havas 32 bitojn por labori, do ni povas nur 117 00:05:19,270 --> 00:05:22,510 esti tiel preciza kun nia dekuma parto. 118 00:05:22,510 --> 00:05:27,300 Ni ne nepre havas dekuman parton precize 100 aŭ 200 ciferoj, 119 00:05:27,300 --> 00:05:29,710 ĉar ni nur havas 32 bitoj por labori kun. 120 00:05:29,710 --> 00:05:31,590 Do tio estas limigo de kaleŝego. 121 00:05:31,590 --> 00:05:33,590 >> Nun feliĉe ekzistas alia datumtipo nomata 122 00:05:33,590 --> 00:05:36,530 duobla, kiu iom traktas tiun problemon. 123 00:05:36,530 --> 00:05:39,980 Duobloj, kiel flosoj, estas uzataj ankaŭ por stoki reelaj nombroj, aŭ flosanta punkto 124 00:05:39,980 --> 00:05:40,840 valorojn. 125 00:05:40,840 --> 00:05:44,340 La diferenco estas ke duobloj estas duobla precizeco. 126 00:05:44,340 --> 00:05:48,177 Ili povas konveni 64 bitoj de datumoj, aŭ ok bajtoj. 127 00:05:48,177 --> 00:05:49,010 Kion tio signifas? 128 00:05:49,010 --> 00:05:51,801 Nu, tio signifas ke ni povas esti multe pli preciza kun la dekuma punkto. 129 00:05:51,801 --> 00:05:54,830 Anstataŭ havi pi al sep lokoj eble, kun kaleŝego, 130 00:05:54,830 --> 00:05:56,710 Ni povas eble havi ĝin por 30 lokoj. 131 00:05:56,710 --> 00:05:59,824 Se tio estas grava, vi eble volas uzi duoblan anstataŭ kaleŝego. 132 00:05:59,824 --> 00:06:01,740 Esence, se vi estas laboranta sur io kie 133 00:06:01,740 --> 00:06:06,540 havanta vere longajn dekuma loko Kaj multa precizeco estas grava, 134 00:06:06,540 --> 00:06:08,630 vi probable volas uzi duoblan overfloat. 135 00:06:08,630 --> 00:06:11,250 Nun por la plejparto de via laboro en CS50, kaleŝego devus sufiĉi. 136 00:06:11,250 --> 00:06:15,340 Sed scias ke duobloj ekzisti kiel maniero iom pritrakti la precizecon 137 00:06:15,340 --> 00:06:20,980 problemon donante al vi ekstran 32 bitojn por labori kun por viaj nombroj. 138 00:06:20,980 --> 00:06:23,650 >> Nun tio ĉi ne estas datumtipo. 139 00:06:23,650 --> 00:06:24,390 Tiu estas tipo. 140 00:06:24,390 --> 00:06:25,340 Kaj ĝi nomiĝas malplenon. 141 00:06:25,340 --> 00:06:27,506 Kaj mi parolas pri ĝi tie ĉar ni probable 142 00:06:27,506 --> 00:06:29,520 vidis ĝin kelkajn fojojn jam en CS50. 143 00:06:29,520 --> 00:06:32,020 Kaj vi eblas esti scivolanta kio ĝi estas ĉiuj proksimume. 144 00:06:32,020 --> 00:06:33,390 >> Do malplenon estas tipo. 145 00:06:33,390 --> 00:06:34,097 Ĝi ekzistas. 146 00:06:34,097 --> 00:06:35,180 Sed ne estas datumtipo. 147 00:06:35,180 --> 00:06:39,350 >> Ni ne povas krei variablon de tipo neniigas kaj atribui valoron al ĝi. 148 00:06:39,350 --> 00:06:42,519 Sed funkcioj, ekzemple, povas havi malplenon reveno tipo. 149 00:06:42,519 --> 00:06:45,060 Esence, se vi vidas funkcio kiu havas malplenon reveno tipo, 150 00:06:45,060 --> 00:06:46,970 ĝi signifas ne resendas valoro. 151 00:06:46,970 --> 00:06:49,440 Ĉu vi povas pensi pri komuna funkcio kiun ni uzis ĝis nun 152 00:06:49,440 --> 00:06:52,780 en CS50 kiu ne resendas valoro? 153 00:06:52,780 --> 00:06:54,700 >> Printf estas unu. 154 00:06:54,700 --> 00:06:56,820 Printf ne vere redoni ion al vi. 155 00:06:56,820 --> 00:06:59,850 Ĝi presas ion al la kribri, kaj estas esence 156 00:06:59,850 --> 00:07:01,650 kromefikon de kio printf faras. 157 00:07:01,650 --> 00:07:03,620 Sed ĝi ne donos vin valoro dorso. 158 00:07:03,620 --> 00:07:08,419 Vi ne kaptas la rezulto kaj vendejo en iu variablo uzi ĝin poste. 159 00:07:08,419 --> 00:07:10,710 Ĝi simple presas ion la ekrano kaj vi faris. 160 00:07:10,710 --> 00:07:14,360 >> Do ni diru ke printf estas malplena funkcio. 161 00:07:14,360 --> 00:07:16,450 Ĝi redonas nenion. 162 00:07:16,450 --> 00:07:18,580 >> La perimetro listo de funkcio povas ankaŭ esti malplena. 163 00:07:18,580 --> 00:07:21,410 Kaj vi ankaŭ vidis ke tre iom en CS50 tro. 164 00:07:21,410 --> 00:07:22,300 Int main malplenon. 165 00:07:22,300 --> 00:07:23,260 Ĉu tio sonorigi sonorilo? 166 00:07:23,260 --> 00:07:24,080 167 00:07:24,080 --> 00:07:27,220 Esence, kion tio signifas estas ke ĉefa ne prenas ajnan parametroj. 168 00:07:27,220 --> 00:07:29,520 Mankas argumento ke get pasis en ĉefaj. 169 00:07:29,520 --> 00:07:32,780 Nun pli poste ni vidos, ke ne estas manieron pasi argumentojn en ĉefaj, 170 00:07:32,780 --> 00:07:36,189 sed ĝis nun kion ni vidita estas int main malplenon. 171 00:07:36,189 --> 00:07:37,730 Ĉefa ĵus ne prenas neniun argumentoj. 172 00:07:37,730 --> 00:07:40,236 Kaj tiel ni specifi ke dirante malplenon. 173 00:07:40,236 --> 00:07:42,110 Ni nur esti tre eksplicita pri la fakto 174 00:07:42,110 --> 00:07:44,430 ke ĝi ne prenas neniun argumentojn. 175 00:07:44,430 --> 00:07:47,160 >> Do nuntempe, sufiĉas diri ke malplenon esence 176 00:07:47,160 --> 00:07:50,789 devus nur servi kiel lokokupilon por vi kiel pensas pri nenio. 177 00:07:50,789 --> 00:07:52,080 Tio ne vere fari ion. 178 00:07:52,080 --> 00:07:53,550 Mankas reveno valoron tie. 179 00:07:53,550 --> 00:07:54,770 Mankas parametroj tie. 180 00:07:54,770 --> 00:07:55,709 Ĝi estas malplena. 181 00:07:55,709 --> 00:07:57,250 Ĝi estas iom pli kompleksa ol tio. 182 00:07:57,250 --> 00:08:00,640 Sed tio devus sufiĉi por la bona parto de la kurso. 183 00:08:00,640 --> 00:08:05,010 Kaj espereble nun vi havos iom iom pli de koncepto de kion void estas. 184 00:08:05,010 --> 00:08:08,460 >> Do tiuj estas la kvin tipoj vi instruos vin renkontoj kiuj estas korpigita al C. 185 00:08:08,460 --> 00:08:10,670 Sed en CS50 ni ankaŭ havas bibliotekon. 186 00:08:10,670 --> 00:08:13,550 CS50.h, kiun vi povas inkludi. 187 00:08:13,550 --> 00:08:15,930 Kaj kiu provizos vin kun du pliaj tipoj 188 00:08:15,930 --> 00:08:18,280 ke vi probable povos uzi sur viaj taskoj, 189 00:08:18,280 --> 00:08:21,210 aŭ simple laboras ĝenerale programado. 190 00:08:21,210 --> 00:08:23,030 >> La unua de ĉi tiuj estas bool. 191 00:08:23,030 --> 00:08:26,780 Do la Bulea datumtipo, bool, estas uzata por variabloj 192 00:08:26,780 --> 00:08:28,114 kiu stoki Bulea valoro. 193 00:08:28,114 --> 00:08:29,863 Se vi iam aŭdis tiu termino antaŭe, vi 194 00:08:29,863 --> 00:08:31,960 sciu ke Bulea valoro kapablas nur 195 00:08:31,960 --> 00:08:34,440 tenante du malsamaj apartaj valoroj. 196 00:08:34,440 --> 00:08:35,872 Veraj kaj falsaj. 197 00:08:35,872 --> 00:08:37,580 Nun tio ŝajnas belaj fundamenta, ĉu ne? 198 00:08:37,580 --> 00:08:40,496 Estas ia surprizo ke tiu Ne ekzistas en C kiel ĝi estas konstruita-je. 199 00:08:40,496 --> 00:08:42,640 Kaj en multaj modernaj lingvoj, kompreneble, Booleans 200 00:08:42,640 --> 00:08:45,390 estas norma defaŭlta datumtipo. 201 00:08:45,390 --> 00:08:47,192 Sed en C, ili estas efektive ne. 202 00:08:47,192 --> 00:08:48,400 Sed ni kreis ĝin por vi. 203 00:08:48,400 --> 00:08:51,910 Do se vi iam bezonas krei variablon kies tipo estas bool, 204 00:08:51,910 --> 00:08:55,230 Ĝuste certi include CS50.h ĉe la komenco de via programo, 205 00:08:55,230 --> 00:08:57,800 kaj vi povos krei variabloj de la bool tipo. 206 00:08:57,800 --> 00:09:02,095 >> Se vi forgesu include CS50.h, kaj vi ekuzi Buleaj-tipo variabloj, 207 00:09:02,095 --> 00:09:04,970 vi eble renkontos iun problemoj kiam vi kompili vian programon. 208 00:09:04,970 --> 00:09:06,490 Do nur esti sur la gvatanto por tio. 209 00:09:06,490 --> 00:09:11,180 Kaj eble vi povas simple ripari la problemoj por funto inkluzive cs50.h. 210 00:09:11,180 --> 00:09:14,590 >> La alia grava datumtipo ke ni havigi por vi en la CS50 biblioteko 211 00:09:14,590 --> 00:09:15,670 Estas kordoj. 212 00:09:15,670 --> 00:09:17,130 Do kio estas cxeno? 213 00:09:17,130 --> 00:09:18,520 Kordoj estas vere nur vortoj. 214 00:09:18,520 --> 00:09:20,000 Ili estas kolektoj de karakteroj. 215 00:09:20,000 --> 00:09:20,640 Ili estas vortoj. 216 00:09:20,640 --> 00:09:21,390 Ili estas frazoj. 217 00:09:21,390 --> 00:09:22,480 Ili estas alineoj. 218 00:09:22,480 --> 00:09:25,850 Povus esti tutaj libroj, eĉ. 219 00:09:25,850 --> 00:09:29,690 >> Tre mallonga al tre longa serio de karakteroj. 220 00:09:29,690 --> 00:09:34,310 Se vi bezonas uzi kordoj, ekzemple, stoki vorto, 221 00:09:34,310 --> 00:09:37,609 Ĝuste certi inkludas CS50.h ĉe la komenco de via programo 222 00:09:37,609 --> 00:09:38,900 Do vi povas uzi la kordo tipo. 223 00:09:38,900 --> 00:09:43,910 Kaj tiam vi povas krei variabloj kies datumtipo estas ŝnuro. 224 00:09:43,910 --> 00:09:46,160 Nun pli poste en la kurso, ni ankaux vidos, ke tio estas 225 00:09:46,160 --> 00:09:47,752 Ne la tuta rakonto, ĉu. 226 00:09:47,752 --> 00:09:49,460 Ni renkontas aferoj nomita strukturoj, 227 00:09:49,460 --> 00:09:54,249 kiu permesas grupon kio eble entjero kaj kordoj en unu unuo. 228 00:09:54,249 --> 00:09:56,290 Kaj ni povas uzi tion por ia celo, kiun eble 229 00:09:56,290 --> 00:09:57,750 veni en oportuna pli poste en la kurso. 230 00:09:57,750 --> 00:09:59,500 >> Kaj ni ankaŭ lernos pri difinitaj tipoj, 231 00:09:59,500 --> 00:10:01,720 kiu permesas vin krei via propra datumtipoj. 232 00:10:01,720 --> 00:10:03,060 Ni ne bezonas zorgi pri tiu nun. 233 00:10:03,060 --> 00:10:04,550 Sed nur scias ke tio ion sur la horizonto, 234 00:10:04,550 --> 00:10:07,633 ke ekzistas multe pli al tiu tuta tipo afero ol la fakton mi povas nur 235 00:10:07,633 --> 00:10:08,133 nun. 236 00:10:08,133 --> 00:10:10,591 Do nun ke ni lernis iomete pri la bazaj datumoj 237 00:10:10,591 --> 00:10:14,230 tipoj kaj la CS50 datumtipoj, ni paroli pri kiel labori kun variabloj 238 00:10:14,230 --> 00:10:18,530 kaj krei ilin uzante tiujn datumtipoj en niaj programoj. 239 00:10:18,530 --> 00:10:22,670 Se vi volas krei variablon, Ĉiuj vi devas fari estas du aferoj. 240 00:10:22,670 --> 00:10:24,147 >> Unua, vi bezonos doni ĝin tipo. 241 00:10:24,147 --> 00:10:26,230 La dua afero vi devas fari estas doni al li nomon. 242 00:10:26,230 --> 00:10:28,740 Unufoje vi faris tion kaj frapis la punktokomo ĉe la fino de tiu linio, 243 00:10:28,740 --> 00:10:29,830 vi kreis variablon. 244 00:10:29,830 --> 00:10:32,370 >> Do jen du ekzemploj. 245 00:10:32,370 --> 00:10:35,744 Int nombro; char letero ;. 246 00:10:35,744 --> 00:10:36,660 Kion mi faris tie? 247 00:10:36,660 --> 00:10:38,110 Mi kreis du variabloj. 248 00:10:38,110 --> 00:10:40,190 >> La unua, la variablo nomo estas nombro. 249 00:10:40,190 --> 00:10:44,830 Kaj kalkulu kapablas tenante entjero tajpu valoroj, ĉar ĝia tipo estas int. 250 00:10:44,830 --> 00:10:48,040 Letero estas alia variablo kiu povas teni karakteroj 251 00:10:48,040 --> 00:10:50,240 ĉar ĝia datumtipo estas char. 252 00:10:50,240 --> 00:10:51,772 >> Sufiĉe simpla, ĉu ne? 253 00:10:51,772 --> 00:10:53,480 Se vi trovas vin en situacio kie 254 00:10:53,480 --> 00:10:56,250 vi devas krei multoblajn variabloj de la sama tipo, 255 00:10:56,250 --> 00:10:58,740 vi nur bezonos specifi la tipo nomon unufoje. 256 00:10:58,740 --> 00:11:01,600 Tiam simple listo kiel multaj variabloj de tiu tipo kiel vi bezonas. 257 00:11:01,600 --> 00:11:04,230 >> Do mi povis por ekzemplo, ĉi tie en tiu tria linio de kodo, 258 00:11:04,230 --> 00:11:07,420 diru int alteco ;, novan linion. 259 00:11:07,420 --> 00:11:08,291 Mez larĝa ;. 260 00:11:08,291 --> 00:11:09,290 Kaj kiu funkcius ankaŭ. 261 00:11:09,290 --> 00:11:12,039 Mi ankoraŭ akiras du variabloj nomitaj alteco kaj larĝeco, ĉiu el kiuj 262 00:11:12,039 --> 00:11:12,730 estas entjero. 263 00:11:12,730 --> 00:11:16,970 Sed mi permesis al, aferoj C sintakso, solidigi ĝin en unu linion. 264 00:11:16,970 --> 00:11:20,230 Mez alteco, larĝo; Ĝi estas la sama afero. 265 00:11:20,230 --> 00:11:23,900 Mi kreis du variabloj, unu nomita alteco unu nomita larĝa, kiuj ambaŭ 266 00:11:23,900 --> 00:11:26,730 kapablas Holding entjera tipo valoroj. 267 00:11:26,730 --> 00:11:30,920 >> Simile cxi tie, mi povas krei tri glitpunktaj valoroj samtempe. 268 00:11:30,920 --> 00:11:33,350 Mi povas eble krei variablon nomata kvadrata radiko de 2-- 269 00:11:33,350 --> 00:11:35,766 kiu supozeble eventuale teni la flosanta point-- 270 00:11:35,766 --> 00:11:39,222 ke reprezento de la kvadrato radiko de 2-- kvadrata radiko de 3, kaj pi. 271 00:11:39,222 --> 00:11:41,180 Mi povis fari tiun sur tri apartaj linioj. 272 00:11:41,180 --> 00:11:47,690 Float, kvadrata radiko 2; Flosi kvadrata radiko 3; flosi pi; kaj kiu funkcius ankaŭ. 273 00:11:47,690 --> 00:11:50,590 >> Sed denove, mi povas nur firmigi ĉi en ununuran linion de kodo. 274 00:11:50,590 --> 00:11:54,050 Faras aferojn iomete pli mallonga, ne kiel clunky. 275 00:11:54,050 --> 00:11:57,259 >> Nun ĝenerale, estas bona dezajno por sola deklari variablon kiam vi bezonas ĝin. 276 00:11:57,259 --> 00:11:59,050 Kaj ni parolos iom iom pli pri tiu 277 00:11:59,050 --> 00:12:00,945 poste en la kurso kiam ni diskutos medio. 278 00:12:00,945 --> 00:12:03,320 Do ne nepre bezonas krei ĉiuj viaj variabloj 279 00:12:03,320 --> 00:12:05,990 ĉe la komenco de la programo, kiun iuj personoj povus esti farita la pasinteco, 280 00:12:05,990 --> 00:12:08,700 aŭ estis certe tre komuna kodigo praktiko multaj jaroj 281 00:12:08,700 --> 00:12:11,700 kiam laborante kun C. Vi povus simple volas krei variablon ĝuste kiam 282 00:12:11,700 --> 00:12:13,140 vi bezonas ĝin. 283 00:12:13,140 --> 00:12:13,640 Bone. 284 00:12:13,640 --> 00:12:15,150 Do ni kreis variabloj. 285 00:12:15,150 --> 00:12:16,790 Kiel ni uzu ilin? 286 00:12:16,790 --> 00:12:18,650 Post ni deklari variablo, ni ne bezonas 287 00:12:18,650 --> 00:12:21,237 specifi la datumtipo de tiu variablo anymore. 288 00:12:21,237 --> 00:12:24,070 Fakte, se vi faros tion, vi eble finos kun iuj strangaj konsekvencoj 289 00:12:24,070 --> 00:12:25,490 ke ni specon de gloso super nun. 290 00:12:25,490 --> 00:12:27,365 Sed sufiĉas diri, weird aferoj iras 291 00:12:27,365 --> 00:12:30,740 komenci okazanta se vi distrite re-deklari variablojn kun la sama nomo 292 00:12:30,740 --> 00:12:32,210 super kaj super. 293 00:12:32,210 --> 00:12:33,882 >> Do jen mi havas kvar linioj de kodo. 294 00:12:33,882 --> 00:12:36,090 Kaj mi havas kelkajn Komentoj simple indikante 295 00:12:36,090 --> 00:12:37,840 kio okazas sur ĉiu linio nur por helpi 296 00:12:37,840 --> 00:12:40,520 vi get situanta en kio okazas. 297 00:12:40,520 --> 00:12:41,520 Do int nombro ;. 298 00:12:41,520 --> 00:12:42,520 Vi vidis ke antaŭe. 299 00:12:42,520 --> 00:12:44,000 Tio variablon deklaracio. 300 00:12:44,000 --> 00:12:46,670 >> Mi nun kreis variablon nomita numero tio 301 00:12:46,670 --> 00:12:48,970 kapabla je posedo entjero-tipo valoroj. 302 00:12:48,970 --> 00:12:50,210 Mi deklaris ĝin. 303 00:12:50,210 --> 00:12:53,770 >> La sekva linio mi asignanta valoro kalkuladon. 304 00:12:53,770 --> 00:12:54,992 Nombro egalas 17. 305 00:12:54,992 --> 00:12:55,950 Kio okazas tie? 306 00:12:55,950 --> 00:12:58,880 Mi metas la numero 17 ene de tiu variablo. 307 00:12:58,880 --> 00:13:02,760 >> Do se mi iam poste presi kio la enhavo de la numero estas pli poste, 308 00:13:02,760 --> 00:13:04,030 ili diros al mi ĝi estas 17. 309 00:13:04,030 --> 00:13:07,030 Do mi deklaris variablon, kaj tiam mi atribuis. 310 00:13:07,030 --> 00:13:10,570 >> Ni povas ripeti la procezon denove kun char letero ;. 311 00:13:10,570 --> 00:13:11,640 Tio estas deklaro. 312 00:13:11,640 --> 00:13:14,010 Letero egalas ĉefurbo H. Jen valorizo. 313 00:13:14,010 --> 00:13:16,030 Bela simpla, tro. 314 00:13:16,030 --> 00:13:18,319 >> Nun tiu procezo eble ŝajnas iom stulta. 315 00:13:18,319 --> 00:13:20,110 Kial ni faras ĉi en du linioj de kodo? 316 00:13:20,110 --> 00:13:21,401 Ĉu ekzistas pli bona maniero por fari tion? 317 00:13:21,401 --> 00:13:22,250 Fakte, ekzistas. 318 00:13:22,250 --> 00:13:24,375 Foje vi povus vidi tiu nomita inicialización. 319 00:13:24,375 --> 00:13:28,446 Estas kiam vi deklaras variablon kaj atribui valoron al la sama tempo. 320 00:13:28,446 --> 00:13:30,320 Tiu estas fakte bela komuna afero por fari. 321 00:13:30,320 --> 00:13:32,870 Kiam vi kreas variablo, vi kutime volas havi iun bazan valoron. 322 00:13:32,870 --> 00:13:34,330 Eĉ se ĝi estas 0 aŭ io. 323 00:13:34,330 --> 00:13:36,180 Vi nur vi donos al ĝi valoron. 324 00:13:36,180 --> 00:13:38,360 >> Vi povas pravalorizi variablo. 325 00:13:38,360 --> 00:13:42,320 Int nombro egalas 17 estas la sama kiel la unuaj du linioj de kodo super. 326 00:13:42,320 --> 00:13:46,829 Char letero egalas h estas la sama kiel la tria kaj kvara linioj de kodo supre. 327 00:13:46,829 --> 00:13:49,620 La plej grava takeaway tie kiam ni deklari kaj atribuante 328 00:13:49,620 --> 00:13:51,740 variabloj estas post ni deklaris, avizo 329 00:13:51,740 --> 00:13:53,700 Mi ne uzas la datumtipo denove. 330 00:13:53,700 --> 00:13:57,916 Mi ne diras int nombro egalas 17 sur la dua linio de kodo, ekzemple. 331 00:13:57,916 --> 00:13:59,290 Mi nur diras nombro egalas 17. 332 00:13:59,290 --> 00:14:02,537 >> Denove, re-deklari variablon post vi jam deklaris ĝi povas konduki 333 00:14:02,537 --> 00:14:03,620 al iuj strangaj konsekvenco. 334 00:14:03,620 --> 00:14:05,950 Do simple zorgu pri tio. 335 00:14:05,950 --> 00:14:06,660 >> Mi Doug Lloyd. 336 00:14:06,660 --> 00:14:08,870 Kaj tiu estas CS50. 337 00:14:08,870 --> 00:14:10,499