>> [Гуляе музыка]
Слухаць: Добра.
Такім чынам, давайце пагаворым пра іншае што гэта свайго роду унікальным для C,
які тыпы дадзеных і зменныя.
Калі я кажу, унікальны для З, я сапраўды азначаць толькі ў кантэксце,
калі вы былі праграмістам на працягу сапраўды доўгага часу,
вы, верагодна, не працаваў з тыпамі дадзеных
калі вы выкарыстоўвалі сучасны мовы праграмавання.
Сучасныя мовы, такія як PHP і JavaScript,
які мы таксама будзем бачыць трохі у далейшым у ходзе,
Вы на самой справе не трэба паказваць тып дадзеных зменнай
калі вы выкарыстоўваеце яго.
>> Вы проста аб'явіць яго і пачаць выкарыстоўваць яго.
Калі гэта цэлае, яго ведаю, што гэта цэлы лік.
Калі гэта знак, гэта ведае, што гэта персанаж.
Калі гэтае слова, ён ведае, гэта радок, так званыя.
>> Аднак у C, які з'яўляецца стары мова, мы павінны
пазначыць дадзеныя тып кожнай зменнай
што мы ствараем у першы раз што мы выкарыстоўваем гэтую зменную.
Так C пастаўляецца з некаторымі ўбудаваных тыпаў дадзеных.
І давайце знаёміцца з некаторымі з іх.
А потым пасля гэтага мы таксама пагаворым трохі аб некаторых з тыпаў дадзеных
што мы напісалі для вас, так што вы можаце выкарыстоўваць іх у CS50.
>> Па-першае, Int.
Тып INT дадзеныя выкарыстоўваюцца для зменных што будзе захоўваць цэлыя значэння.
Так 1, 2, 3, адмоўны 1, 2, 3, і так далей.
Цэлыя, што тое, што вы Варта мець на ўвазе, для віктарыны,
заўсёды займаюць чатыры байта памяці, які складае 32 біта.
Існуюць восем бітаў у байце.
>> Дык гэта азначае, што ў дыяпазоне шануе, што лік можа захоўваць
абмежаваны тым, што можа змясціцца ў 32 біта на суму інфармацыі.
Цяпер, як высвятляецца, Гэта было вырашана даўно
што мы рассталіся што дыяпазон 32 біт
у адмоўных цэлых і станоўчыя цэлыя лікі,
кожны становіцца палове дыяпазону.
Так дыяпазоне значэнняў, якія мы ўяўляем з цэлалікавых дыяпазоне ад адмоўнага 2
31-й ўлады 2 да 31-магутнасць мінус 1,
прывесці вам таксама неабходна месца для 0.
>> Так у асноўным палова з магчымых значэнняў Вы можаце прыстасаваць ў міжнар адмоўныя,
і палова з'яўляюцца станоўчымі.
І прыкладна тут, гэта пра адмоўны 2 млрд да 2 млрд станоўчай.
Дайце або ўзяць пару сотняў мільёнаў.
Так што тое, што вы можаце змясціць у цэлай зменнай.
Цяпер у нас ёсць нешта называецца цэлы лік без знака.
Цяпер без знака Інтс зьяўляюцца не асобны тып зменнай.
Хутчэй за ўсё, гэта без знака тое, што называецца класіфікатар.
Гэта змяняе дадзеныя тып цэлага нязначна.
>> І ў гэтым выпадку, тое, што без знака азначае: а вы таксама можаце
выкарыстоўваць непадпісаныя іншыя тыпы дадзеных, лік гэта не толькі адзін.
Што гэта эфектыўна робіць падвойваецца станоўчы дыяпазон значэнняў
што лік можа прымаць на выдатак больш не дазваляе
Вам прымаць адмоўныя значэння.
Так што, калі ў вас ёсць нумары, якія вы ведаеце атрымаеце больш чым 2 млрд, але менш
як 4 млрд, за example-- які складае ад 2 да 32-га power--
Вы можаце выкарыстоўваць без знака INT калі вы
ведаць ваша значэнне ніколі не будзе адмоўным.
>> Вы будзеце часам ёсць выкарыстоўваецца для непадпісаным зменных
у CS50, які з'яўляецца, чаму я згадваю яго тут.
Але, зноў жа, дыяпазон значэнняў, якія вы можа прадстаўляць з цэлага ліку без знака
а Т рэгулярнае цэлы лік, ад 0 да 2 да ўлады 32-га мінус 1,
або прыкладна ад 0 да 4 млрд.
Такім чынам, вы эфектыўна падвоілася станоўчых значэнняў, што вы можаце змясціць,
але вы адмовіліся ўсе адмоўныя значэння.
>> Цяпер, як у бок, без знака не толькі класіфікатар
што для нас можа ўбачыць тыпы зменных дадзеных.
Ёсць таксама рэчы, званыя кароткія і доўгія, і будаўніцтва.
Будаўніцтва, мы ўбачым трохі Крыху пазней у курсе.
Кароткія і доўгія, мы, верагодна, не будзе.
>> Але дакладна ведаю, што ёсць іншыя адборачныя.
Без подпісы не толькі адзін.
Але гэта толькі адзін мы пагаворым аб прама цяпер.
Такім чынам, усё ў парадку.
Такім чынам, мы ўжо разгледзелі цэлых лікаў.
Што далей?
>> Знакаў.
Так сімвалы выкарыстоўваюцца для зменных што будзе захоўваць асобныя сімвалы.
Чар кароткі для характару.
А часам вы можаце пачуць людзі прамаўляюць яго як аўтамабіль.
>> Так героі заўсёды займаюць адну байт памяці, які знаходзіцца ўсяго ў 8 біт.
Такім чынам, гэта азначае, што яны могуць усталяваць толькі Значэння ў дыяпазоне ад негатыву 2
у сёмы ступені, ці адмоўны 128, да 2 у ступені мінус студзеня 7, або 127.
>> Дзякуючы ASCII, было даўно вырашыў спосаб
каб супаставіць гэтыя станоўчыя лікі ад 0 да 127 розных сімвалаў
што ўсе існуе на нашай клавіятуры.
Так як мы ўбачым пазней, у курс, і вы, верагодна,
прыйшоў, каб запомніць на некаторыя кропка, капітал А для example--
характар ​​капітал A-- адлюстроўвае на нумар 65.
І прычына ў тым, таму што гэта тое, што гэта
быў прызначаны ў адпаведнасці са стандартам ASCII.
>> Малыя А 97.
Характар ​​0, калі вам на самай справе увядзіце характар, не
які ўяўляе лік нуль, 48.
Вы даведаецеся пару з іх, як вы ідзяце.
І вы, вядома, трэба прыйсці да іх крыху пазьней у CS50.
>> Наступным буйным тып дадзеных у колькасці з якая плавае коскі.
Так лік з якая плавае кропкай таксама вядомы як сапраўдных лікаў.
Яны ў асноўным нумары, якія ёсць дзесятковую кропку ў іх.
З плавае коскі як цэлыя лікі таксама
змяшчаюцца на працягу 4 байт памяці.
Зараз няма схема тут.
Там няма нумар радка, таму што апісваючы круг паплаўка
Не зусім ясна, ці інтуітыўна.
>> Дастаткова сказаць, вам ёсць 32 біта для працы з.
І калі ў вас ёсць нумар як пі, які мае
цэлая частка 3 і плавае Кропка частка, або дробавая частка 0,14159,
і гэтак далей, вы павінны быць магчымасць прадстаўляць ўсе it--
цэлая частка і дробавая частка.
>> Так што вы думаеце, што можа азначаць?
Адна рэч, што калі дзесятковай частка становіцца больш і больш,
калі ў мяне ёсць вельмі вялікі Цэлая частка, я не мог
зможа быць настолькі дакладнай, з дзесятковай часткі.
І гэта на самай справе абмежаванне паплаўка.
>> Паплаўкі ёсць праблемы дакладнасці.
У нас ёсць толькі 32 біта на працаваць, таму мы можам толькі
быць настолькі дакладныя, з нашай дзесятковай часткі.
Мы не можам абавязкова дзесятковай частка дакладным на 100 або 200 лічбаў,
таму што ў нас ёсць толькі 32 біта для працы з.
Так што гэта абмежаванне паплаўка.
>> Цяпер, на шчасце, ёсць іншы тып дадзеных называецца
двойчы, што некалькі займаецца гэтай праблемай.
Парны, як паплаўкі, якія таксама выкарыстоўваюцца для захоўваць рэчавыя колькасці або з якая плавае кропкай
значэння.
Розніца ў тым, што Дублі двайны дакладнасці.
Яны могуць адпавядаць 64 біт Дадзеныя, ці восем байт.
Што гэта азначае?
Ну, гэта азначае, што мы можам быць нашмат больш дакладная з коскі.
Замест таго, пі да сямі месцы, можа быць, з паплаўком,
мы можам, магчыма, ёсць яго да 30 месцаў.
Калі гэта важна, вы, магчыма, захочаце выкарыстоўваць двайны замест паплаўка.
У прынцыпе, калі вы працуе на што-небудзь дзе
якія маюць вельмі доўга дзесятковага і многае дакладнасці важна,
Вы, верагодна, хочаце, каб выкарыстоўваць двайны overfloat.
Цяпер большую частку працы ў CS50, паплавок павінен быць дастатковым.
Але ведаю, што існуюць двайнікі ў выглядзе спосаб некалькі справу з дакладнасцю
Праблема, даючы вам дадатковы 32 Біты для працы з для лікаў.
>> Зараз гэта не тып дадзеных.
Гэта тып.
І гэта называецца несапраўднымі.
І я кажу пра гэта тут, таму што мы ўжо, напэўна
бачыў яго некалькі разоў ужо ў CS50.
І вы можаце быць здзіўлены, тое, што гэта ўсё аб.
>> Так пустата тып.
Гэта сапраўды існуе.
Але гэта не з'яўляецца тыпам дадзеных.
>> Мы не можам стварыць зменную тыпу анулявання і прызначыць ёй значэнне.
Але функцыі, напрыклад, можа мець тып якое вяртаецца несапраўдным.
У прынцыпе, калі вы бачыце функцыю які мае тып якое вяртаецца несапраўдным,
гэта азначае, што не вяртае значэнне.
Ці можаце вы агульны Функцыя, якую мы выкарыстоўвалі да гэтага часу
у CS50, якая не вяртае значэнне?
>> Printf адзін.
Printf на самай справе не нічога вяртаць да вас.
Ён друкуе нешта на экран, і гэта ў асноўным
пабочны эфект, што робіць Printf.
Але гэта не дае вам значэнне назад.
Вы не захапіць вынік і крама гэта ў нейкай зменнай, каб выкарыстоўваць яго ў далейшым.
Гэта проста нешта друкуе экран, і вы зрабілі.
>> Таму мы кажам, што Printf з'яўляецца функцыяй несапраўднымі.
Гэта нічога не вяртае.
>> Спіс перыметры Функцыя таксама можа быць несапраўдным.
І вы таксама бачылі, што зусім трохі ў CS50 таксама.
Int асноўны несапраўднымі.
Што тэлефануе звон ці што?
У асноўным тое, што гэта азначае, што Асноўны не прымае ніякіх параметраў.
Там няма аргумент, што атрымаць прайшло ў галоўным.
Цяпер у далейшым мы ўбачым, што ёсць спосаб перадачы аргументаў у асноўным,
але да гэтага часу, што мы бачыў гэта INT асноўны несапраўднымі.
Галоўная проста не прымаць якія-небудзь аргументы.
І так мы паказваем, што, кажучы несапраўднымі.
Мы проста быўшы вельмі відавочнае пра тое,
што ён не прымае ніякіх аргументаў.
>> Так што цяпер, дастаткова, каб яго сказаць, што ў асноўным пустэчу
павінны проста служыць у якасці запаўняльніка для вас, як думаць аб нішто.
Гэта нічога не робіць.
Там няма вяртаецца значэння тут.
Там няма ніякіх параметраў тут.
Гэта пустата.
Гэта крыху больш складана, чым гэта.
Але гэта павінна быць дастаткова для лепшая частка курсу.
І, спадзяюся, зараз у вас ёсць трохі трохі больш аб тым, што канцэпцыя пустата.
>> Так што тыя пяць тыпаў вы будзеце Сустрэча, якія ўбудаваныя ў З
Але ў CS50 у нас таксама ёсць бібліятэка.
CS50.h, якія вы можаце ўключыць.
І які забяспечыць вам з двума дадатковымі тыпамі
што вы, верагодна, зможаце для выкарыстання на вашых заданняў,
або проста працаваць, як правіла праграмавання.
>> Першы з іх з'яўляецца BOOL.
Такім чынам, лагічны тып, BOOL, выкарыстоўваецца для зменных
што будзе захоўваць лагічнае значэнне.
Калі вы калі-небудзь чуў гэты тэрмін і раней, вам
маглі ведаць, што лагічнае значэнне Значэнне здольны толькі
правядзенне двух розных розныя значэнні.
Сапраўдныя і несапраўдныя.
Цяпер гэта здаецца даволі фундаментальная, праўда?
Гэта свайго роду сюрпрызам, што гэта не існуе ў C, як гэта убудаваны ў.
І ў многіх сучасных мовах, вядома, лагічныя
з'яўляюцца стандартны тып дадзеных па змаўчанні.
Але ў C, яны на самой справе няма.
Але мы стварылі яго для вас.
Так што, калі вы калі-небудзь трэба стварыць пераменная, тып BOOL,
толькі пераканайцеся, што #include CS50.h у пачатку вашай праграмы,
і вы зможаце стварыць зменныя тыпу BOOL.
>> Калі вы забыліся #include CS50.h, і вы пачынаеце выкарыстоўваць зменныя тыпу Boolean,
Вы маглі б сутыкнуцца з некаторымі праблемамі калі вы компилируете праграму.
Так што будзьце напагатове для гэтага.
І, можа быць, вы можаце проста выправіць праблемы па фунту у тым ліку CS50.h.
>> Іншы асноўны тып дадзеных, якія мы забяспечыць для вас у бібліятэцы CS50
радок.
Так што гэта радок?
Радкі сапраўды проста словы.
Яны калекцыі знакаў.
Яны слоў.
Яны прысуды.
Яны абзацы.
Можа быць цэлыя кнігі, нават.
>> Вельмі кароткая, каб вельмі доўга паслядоўнасць знакаў.
Калі вам трэба выкарыстоўваць струны, напрыклад, для захоўвання словы,
толькі не забудзьцеся ўключыць CS50.h у пачатку вашай праграмы
так што вы можаце выкарыстоўваць радковы тып.
І тады вы можаце ствараць зменныя Тып дадзеных якога з'яўляецца радок.
Цяпер пазней у ходзе, мы таксама ўбачым, што гэта
не ўся гісторыя, альбо.
Мы сутыкаемся рэчы званыя структуры,
якія дазваляюць групаваць, што можа быць цэлы лік, а радок у адзін блок.
І мы можам выкарыстоўваць гэта для некаторыя мэты, якія маглі б
спатрэбіцца ў далейшым у ходзе.
>> І мы таксама даведаемся аб пэўных тыпаў,
якія дазваляюць стварыць Вашы ўласныя тыпы дадзеных.
Мы не павінны хвалявацца аб тым, што ў цяперашні час.
Але дакладна ведаю, што гэта што-то на гарызонце,
што ёсць нашмат больш да гэтага цэлым тып рэч, чым я вам кажу толькі
Цяпер.
Так што цяпер мы даведаліся трохі аб асноўных дадзеных
віды і тыпы дадзеных CS50, давайце казаць аб тым, каб працаваць з зменнымі
і ствараць іх з дапамогай іх тыпы дадзеных у нашых праграмах.
Калі вы хочаце стварыць зменную, усё, што вам трэба зрабіць, гэта дзве рэчы.
>> Па-першае, вы павінны даць яму тып.
Другое, што вы павінны зрабіць, гэта даць яму імя.
Пасля таго як вы гэта зрабілі, і ўдарыў коскі ў канцы гэтага радка,
Вы стварылі зменную.
>> Дык вось два прыкладу.
Int нумар; сімвал ліст;.
Што я зрабіў тут?
Я стварыў дзве зменныя.
>> Па-першае, значэнняў зменнай імя нумар.
І лік здольны ўтрымліваць цэлае увядзіце значэння, таму што яго тып Int.
Ліст іншая пераменная які можа ўтрымліваць сымбалі
бо яе тып дадзеных CHAR.
>> Даволі проста, ці не так?
Калі вы апынецеся ў сітуацыі, калі
Вы павінны стварыць некалькі зменныя таго ж тыпу,
Вы павінны толькі паказаць імя тыпу адзін раз.
Тады проста пералічыць столькі зменных, гэтага тыпу, як вам трэба.
>> Так што я мог, напрыклад, тут у гэтым трэцім радку кода,
кажуць вышыні INT;, новы радок.
Int шырыня;.
І, што б працаваць таксама.
Я ўсё яшчэ атрымліваю дзве зменныя называюцца вышыня і шырыня, кожны з якіх
з'яўляецца цэлым лікам.
Але я дазволіў, рэчы сінтаксісу C, кансалідаваць яго ў адным радку.
Вышыня Int, шырыня; Гэта тое ж самае.
Я стварыў дзве зменныя, адна называецца Вышыня адна называецца шырыня, абодва з якіх
здольныя холдынгу цэлыя значэння тыпу.
>> Дакладна тут, я магу стварыць тры з якая плавае коскі за адзін раз.
Я магу, можа быць, стварыць зменную называецца квадратны корань з 2--
якія, як мяркуецца, у канчатковым рахунку ўтрымлівайце плавае point--
што прадстаўленне на плошчы корань 2-- квадратны корань з 3, і пі.
Я мог бы зрабіць гэта на трох асобных ліній.
Паплавок, квадратны корань 2; Паплавок квадратны корань 3; плаваць пі; і што будзе працаваць таксама.
>> Але, зноў жа, я магу толькі аб'яднаць гэта ў адным радку кода.
Робіць рэчы крыху карацей, а не як нязграбным.
>> У цяперашні час у агульным, гэта добры дызайн, каб толькі абвясціць зменную, калі вам гэта трэба.
І мы будзем казаць трохі трохі больш аб тым, што
пазней у ходзе калі мы будзем абмяркоўваць маштабы.
Так што не абавязкова павінны стварыць усе вашыя зменныя
у пачатку праграмы, якая некаторыя людзі маглі б зрабіць мінулае,
або, вядома, вельмі распаўсюджаная практыка кадавання шмат гадоў таму
пры працы з С. Вы можаце проста хочаце стварыць зменную правоў, калі
вам гэта трэба.
Добра.
Такім чынам, мы стварылі зменныя.
Як мы іх выкарыстоўваць?
Пасля таго як мы аб'явіць Пераменная, мы не павінны
пазначыць тып дадзеных гэтай зменнай больш.
На самай справе, калі вы робіце гэта, вы маглі б у канчатковым выніку з некаторымі дзіўнымі наступствамі
што мы накшталт замоўчваць цяпер.
Але досыць сказаць ,, дзіўныя рэчы ідуць
каб пачаць адбываецца калі вы неспадзявана зноў аб'яўляць зменныя з такім жа імем
зноў і зноў.
>> Дык вось у мяне ёсць чатыры радка.
І ў мяне ёсць пару каментары там проста паказваюць
што адбываецца на кожны радок проста, каб дапамагчы
вы атрымліваеце размешчаны ў тое, што адбываецца.
Так INT нумар;.
Вы бачылі, што раней.
Гэта аб'ява зменнай.
>> Я цяпер стварылі зменную называецца лік, гэта
здольны ўтрымліваць цэлыя значэння тыпу.
Я абвясціў яго.
>> Наступная радок я задаю значэнне на нумар.
Колькасць роўная 17.
Што там адбываецца?
Я стаўлю колькасць 17 ўнутры гэтай зменнай.
>> Так што, калі я калі-небудзь затым раздрукаваць тое, што змесціва колькасці з'яўляюцца пазней,
яны скажуць мне, што гэта 17.
Так што я абвясціў зменную, а затым я прызначаны яго.
>> Мы можам паўтарыць працэс зноў паўкокс лісьце;.
Гэтую заяву.
Ліст роўная капітал Х. Гэта прызначэнне.
Даволі проста, занадта.
>> Зараз гэты працэс можа здаецца дурное.
Чаму мы гэта робім ў двух радкоў кода?
Ці ёсць лепшы спосаб зрабіць гэта?
На самай справе, ёсць.
Часам вы можаце ўбачыць гэта называецца ініцыялізацыі.
Гэта калі вы аб'яўляеце зменную і прысвоіць значэнне, у той жа час.
Гэта на самай справе даволі агульная рэч, каб зрабіць.
Калі вы ствараеце зменную, вы, як правіла хачу, каб мець некаторыя базавыя каштоўнасці.
Нават калі гэта 0 або што-то.
Вы проста даяце яму значэнне.
>> Вы можаце ініцыялізаваць зменную.
Int лік роўна 17 гэтак жа, як першыя два радкі кода наверсе.
Знакавае ліст роўны ч тое ж самае, як Трэцяя і чацвёртая радкі кода вышэй.
Найбольш важным тут вынас калі мы дэкларавання і прысваення
зменных пасля таго як мы заявіў, апавяшчэнне
Я не раз з выкарыстаннем тыпу дадзеных.
Я не кажу, INT лік роўна 17 на другая радок кода, да прыкладу.
Я проста кажу, колькасць якіх роўна 17.
>> Зноў жа, паўторна абвясціўшы зменную пасля Вы ўжо заявіў, што можа прывесці
у нейкай дзіўнай следства.
Так што будзьце асцярожныя, што.
>> Я Дуг Лойд.
І гэта CS50.