[За възпроизвеждане на музика] SPEAKER: Добре. Така че нека да говорим за друго нещо, което е вид уникален за C, което е типове данни и променливи. Когато казвам, уникални за C, аз наистина означава само в контекста на, Ако сте били един програмист за много дълго време, най-вероятно не съм работил с типове данни ако сте използвали модерна програмни езици. Съвременни езици като PHP и JavaScript, които ние също така ще видите малко по-късно в хода, всъщност не трябва да посочите типа данни на променливата когато го използвате. Можете просто да го декларира и да започнете да го използвате. Ако това е цяло число, то Знам, че е цяло число. Ако това е знак, че е знае, че е герой. Ако това е една дума, той знае това е низ, т.нар. Но в С, което е по-стар език, ние се нуждаем да посочите данните вид на всяка променлива които създават първи път че ние използваме тази променлива. Така C идва с някои вградени типове данни. И нека се запознае с някои от тях. И след това след това ще говорим и за малко за някои от видовете данни че сме написана за вас, така че можете да ги използвате в CS50. Първият е Int. Типът на инт данни се използват за променливи който ще съхранява целочислени стойности. Така че 1, 2, 3, отрицателен 1, 2, 3, и така нататък. Целите числа, която е ли нещо трябва да имате предвид за теста, винаги да отнеме до четири байта на памет, която е 32 бита. Има осем бита в един байт. Така че това означава, че кръгът от ценности, които цяло число може да се съхранява се ограничава от това, което може да се побере в рамките на 32 бита стойност на информация. Сега, както се оказва, тя е отдавна решено че ние ще се разделим че гама от 32 бита в отрицателни числа и положителни числа, всеки удар половина на скалата. Така че диапазона на стойностите, които ние представляваме с цяло число гама от негативна 2 до 31 мощност от 2 до 31 Силата минус 1, причини вие също трябва място за 0. Така че основно половината от възможните стойности може да се побере в едно цяло число са отрицателни, и половината са положителни. И горе-долу тук, това е около отрицателна 2 милиарда до около 2 млрд положително. Дайте или отнеме няколко стотин милиона. Така че това е, което може да се побере в целочислена променлива. Сега имаме и нещо нарича положително цяло. Сега неподписани цели числа не са отделен вид променлива. По-скоро е неподписан което се нарича квалификант. Тя променя данните вид на число леко. И в този случай, какво неподписан means-- и можете също използвате неподписани други типове данни, число не е единственият. Какво го прави е ефективно двойки положителния диапазон от стойности че цяло число може да поеме най- за сметка на вече не позволява можете да вземете на отрицателни стойности. Така че, ако имате номера, които знаете, ще получите по-висока от 2 милиарда но по-малко от 4 милиарда евро, за example-- което е от 2 до 32-ия power-- може да искате да използвате неподписан инт ако знам си стойност никога няма да бъде отрицателен. Вие ще трябва от време на време използвана за неподписани променливи в CS50, поради което аз го споменавам тук. Но отново, в диапазона на стойностите, които сте може да представлява с положително цяло като за тон редовен число, са 0 до 2 на степен 32-ри минус 1, или приблизително 0-4000000000. Така че сте ефективно удвоява положителна диапазон, който може да се побере, но сте се отказали от всичко отрицателните стойности. Сега като настрана, неподписана не е само квалификатор за да можем да видим за променливи типове данни. Има и неща, наречени краткосрочен и дългосрочен и Конст. Конст ще видим малко по- Малко по-късно в хода. Къси и дълги, ние вероятно няма да стане. Но просто знам, че има са други квалификанти. Unsigned не е единственият. Но това е само един сме Ще говорим за момента. Така че всичко е наред. Така че ние сме обхванати числа. Какво следва? Овъгли. Така символа се използват за променливи който ще съхранява единични знака. Чар е кратък за герой. А понякога може да чуете хора го произнасят като кола. Така че героите винаги заемат една байт от паметта, която се намира само на 8 бита. Така че това означава, че те могат да се поберат само стойности в диапазона от 2 отрицателен до седмия власт, или отрицателен 128, от 2 до 7 силата минус 1, или 127. Благодарение на ASCII, че е отдавна реши начин да картографира тези положителни числа от 0-127 с различни герои че всичко съществува в нашата клавиатура. Така че, както ще видим по-късно в курса, и най-вероятно ще дойде да запомня в някакъв точка, капитали A, за example-- столицата характер A-- карти с броя 65. И причината за това е, защото това е това, което е, че е бил назначен от стандарта ASCII. Малки букви A е 97. Характерът 0 за случаите, когато всъщност написали характер, не представлява числото нула, е 48. Ще научите няколко от тях, както и да отидете. И със сигурност ще дойде при нужда ги малко по-късно в CS50. Следващата голяма тип данни се числа с плаваща запетая. Така числа с плаваща запетая са известен също като реални числа. Те са основно номера, които има десетична запетая в тях. Плаваща запетая стойности като цели числа също са съдържащи се в 4 байта памет. Вече няма диаграма тук. Няма по линия номер, защото описващи обхвата на плувка не е точно ясно или интуитивно. Достатъчно е да се казваш има 32 бита, за да работим. И ако имате редица като пи, който има цяло число, част 3, и с плаваща Точка на част или десетична част 0.14159, и така нататък, което трябва да бъде може да представлява всички it-- цялата част и десетична част. И така, какво мислите, че може да означава? Едно нещо е, че ако след десетичната част става по-дълга и по-дълго, ако имам много голям число част, аз не вали да може да бъде толкова прецизно с десетична част. И това е наистина най- ограничаване на плувка. Плувки имат проблем с точност. Ние имаме само 32 бита за работи с, така че само можем да бъде толкова прецизно с нашата десетична част. Ние не можем да задължително да има десетична част точно, за да 100 или 200 цифри, защото имаме само 32 бита, за да работим. Така че това е ограничаване на плувка. Сега за щастие има друг тип данни, наречена двойно, което до известна степен се занимава с този проблем. Двойки, като плувки, се използват и за съхранява реални числа, или с плаваща запетая ценности. Разликата е, че двойки са двойна точност. Те могат да се поберат 64 бита на данни или осем байта. Какво означава това? Е, това означава, че ние може да бъде много по- прецизно с десетична точка. Вместо да се налага пи до седем места може би, с поплавък, ние може би може да го имат 30 места. Ако това е важно, може да искате да се използва двойно вместо на плувка. По принцип, ако сте работи върху нещо, където като наистина дълго знак след десетичната запетая и много прецизно е важно, вероятно ще пожелаете да използвайте двойна overfloat. Сега за повечето от работата си в CS50, с плаваща запетая трябва да е достатъчно. Но знам, че съществуват двойки като начин да се справят с известна степен на точност проблем, като ви дава допълнително 32 бита, за да работят с и за номера. Сега това не е тип данни. Това е вид. И тя се нарича недействителен. И аз говоря за него тук, защото ние сме най-вероятно го виждал няколко пъти вече са в CS50. А може би се чудите какво е всичко това. Така нищожен е вид. Той не съществува. Но това не е вид данни. Ние не можем да се създаде променлива от тип анулира и се придаде стойност на него. Но функции, например, може да има вид невалидни възвръщаемост. По принцип, ако сте въвели функция че има тип невалидни възвръщаемост, това означава, че не връща стойност. Сещате ли се за обща функция, която сме използвали досега в CS50, която не връща стойност? ФОРМАТ е една. ФОРМАТ всъщност не върнете ли ти нещо. Той отпечатва нещо на скрининг, и това е основно страничен ефект от това, което прави ФОРМАТ. Но това не ви дава стойност обратно. Вие не улови резултата и магазина тя по някакъв променлива да го използвате по-късно. Тя просто се отпечатва нещо, което да екрана и сте готови. Така че ние казваме, че ФОРМАТ е функция за невалидни. Тя връща нищо. Списъкът на периметъра на функция може също да се считат за невалидни. И вие също сте виждали, че доста малко в CS50 също. Int основната невалидни. Дали, че камбаната? Основно това, което означава, че Основната не взема никакви параметри. Няма никакъв аргумент, че се преминава в главната. Сега по-късно ще видим, че има начин да се премине аргументи в основната, но засега това, което сме видял е инт основната невалидни. Main просто не взема никакви аргументи. И така, ние се уточни, че като кажа нищожно. Ние просто е много изрично за това, че той не взема никакви аргументи. Така че за сега, достатъчно е да се се каже, че нищожно същество просто трябва да служи като заместител за вас, тъй като мисля за нищо. Това не е наистина прави нищо. Няма никаква стойност, върната тук. Няма по параметри тук. Това е нищожно. Това е малко по-сложно от това. Но това трябва да е достатъчно за по-голямата част от курса. И се надяваме, че сега имате малко малко повече от една концепция за това, което е нищожно. Така че тези, които са петте вида ви ще среща, която се вградени в C. Но в CS50 имаме и библиотека. CS50.h, които можете да включите. И което ще ви осигури с две допълнителни видове че най-вероятно ще бъде в състояние които да използвате за вашите настройки или просто работят общо програмиране. Първият от тях е булев. Така Булев тип данни, булев, се използва за променливи който ще съхранява булева стойност. Ако някога сте чували този термин преди, може да знае, че булева стойност е в състояние само държеше две различни различни стойности. Вярно е и невярно. Сега това изглежда доста фундаментална, нали? Това е вид на изненада, че това не съществува в C, тъй като е вграден вътре. И в много съвременни езици, разбира се, Булев тип са стандартен тип данни по подразбиране. Но в C, те всъщност не са. Но ние сме го създали за вас. Така че, ако някога ви се наложи да създадете променлива, чийто тип е булев, Просто не забравяйте да #include CS50.h в началото на вашата програма, и вие ще бъдете в състояние да създаде променливи от тип булев. Ако сте пропуснали да #include CS50.h, и да започнете да използвате Булев тип променливи, може да възникнат някои проблеми когато сте съставянето вашата програма. Така че просто бъдете нащрек за това. А може би просто да реши ли проблеми чрез паунд включително CS50.h. Другият основен Типът данни, че ние предоставят за вас в библиотеката CS50 е низ. И така, какво е низ? Strings са наистина само думи. Те са колекции от знака. Те са думи. Те са изречения. Те са параграфи. Може да е цели книги, дори. Много къса до много дълго поредица от знаци. Ако трябва да използвате низове, например, да се съхранява дума, Просто не забравяйте да включите CS50.h в началото на вашата програма така че можете да използвате тип низ. И тогава можете да създадете променливи чийто тип данни е низ. Сега по-късно в хода, ние също ще видите, че това е не цялата история, един от двамата. Ще срещнете неща наречени структури, която позволява да се групират какво може да бъде цяло число и низ в един блок. И ние можем да използваме, че за някаква цел, който може да дойде по-удобно по-късно в хода. И ние също ще научите за определени видове, която ви позволява да създавате Вашите собствени типове данни. Ние не трябва да се притеснявате за това за сега. Но просто знам, че това е нещо на хоризонта, че има още много да това цялата Тип на нещо, отколкото аз ти казвам просто сега. Така че сега, че ние научихме малко за основния данните видове и типове CS50 данни, нека говорим за това как да се работи с променливи и да ги създавате, използвайки тези типове данни в нашите програми. Ако искате да създадете променлива, всичко, което трябва да направите, е две неща. Първо, вие трябва да му се даде тип. Второто нещо, което трябва да направите, е да му се даде име. След като сте направили това и плесна точка и запетая в края на тази линия, сте създали променлива. Така че тук е два примера. Int номер; Чар писмо ;. Какво съм направил тук? Аз създадох две променливи. Първият, на променливата име е номер. И номер е в състояние да задържа число Типове стойности, тъй като неговия вид е инт. Писмо е друга променлива които могат да притежават знаци тъй като неговата тип данни е Чар. Доста проста, нали? Ако откриете себе си при положение, трябва да се създаде множествена променливи от същия тип, само трябва да се уточни името на този тип веднъж. След това просто се изброят като много променливи на този вид, колкото е необходимо. Така че бих могъл например тук в тази трета линия на код, казват височина инт ;, нов ред. Int ширина ;. И това ще работи също. Бих все още се наричат ​​две променливи височина и ширина, всеки от които е цяло число. Но аз съм позволено да, нещата до C синтаксис, я консолидира в един ред. Int височина, ширина; Това е едно и също нещо. Аз създадох две променливи, едната наречени височина един нарича ширина, като и двете са способни стопанство целочислени стойности тип. По същия начин тук, не мога да се създаде три плаваща запетая стойности наведнъж. Мога да може да създаде променлива наречена корен квадратен от 2-- които вероятно в крайна сметка ще задръжте плаваща point-- че представителството на площада корен на 2-- корен квадратен от 3, и пи. Можех да направя това на три отделни линии. Float, квадратен корен от 2; Float квадратен корен 3; плаваш пи; и че ще работи също. Но отново, мога просто да консолидира това в един ред код. Прави нещата малко по- по-кратък, а не като несръчност. Сега като цяло, това е добър дизайн само декларира променлива, когато имате нужда от него. И ние ще поговорим малко малко повече за това по-късно в хода когато обсъждаме обхват. Така че не е задължително да се наложи да създадете всичките си променливи в началото на програмата, която някои хора може да са направили в миналото, или със сигурност е много често срещана Преди кодиране практика на много години при работа с C. може би просто искате да създадете полето променлива, когато имате нужда от него. Всичко е наред. Така че ние сме създали променливи. Как да ги използваме? След като обявят променлива, ние не се нуждаем да уточни типа на данните на тази променлива вече. В действителност, ако го направите, може да се свърши с някои странни последствия че ние ще вид замаже за сега. Но достатъчно е да се каже, странни неща се случва да започнат да се случват, ако по невнимание отново декларира променливи със същото име пак и пак. Така че тук имам четири реда код. И аз имам няколко коментари там просто, указващи това, което се случва на всеки ред, само за да ви помогне можете да се намира в това, което се случва. Така инт номер ;. Ти видя, че по-рано. Това е променлива декларация. Аз бях сега създаде променлива нарича номер, който е в състояние да задържа стойности число тип. Аз съм го декларира. Следващият ред аз съм възлагане стойност на номер. Брой се равнява на 17. Какво се случва там? Аз съм пускането на броя 17 вътрешността на тази променлива. Така че, ако някога след това да отпечатате какво съдържанието на брой са по-късно, те ще ми кажеш, че е 17. Така че аз съм обявен за променлива, и след това съм го възложени. Ние можем да повторите процедурата отново с Чар писмо ;. Това е декларация. Писмо равнява на капитала H. Това е една задача. Доста проста, също. Сега този процес може да Изглежда някак глупаво. Защо го правим това в два реда код? Има ли по-добър начин да го направя? В действителност, има. Понякога може да видите този нарича инициализация. Това е, когато се декларира променлива и определяне на стойността в същото време. Това всъщност е доста Общата нещо да направя. Когато създадете променлива, обикновено искам тя да има някаква основна ценност. Дори ако това е 0 или нещо такова. Можете просто да ви го дам на стойност. Можете да се инициализира променлива. Int брой е равен на 17 е същото като първите два реда код до горе. Char писмо равнява ч е същият като трети и четвърти реда код по-горе. Най-важната храна за вкъщи тук когато сме обявяване и възлагане променливи е след като сме той декларира, известие Аз не съм с отново типа данни. Аз не казвам, инт брой се равнява на 17 на на втора линия на код, например. Просто казвам, брой е равен на 17. Отново, повторно обявяване на променлива след които вече сте декларирали, че тя може да доведе до някаква странна последица. Така че просто бъдете внимателни за това. Аз съм Дъг Лойд. И това е CS50.