>> [За възпроизвеждане на музика]
>> DAVID Malan: Добре.
Добре дошъл.
Това е CS50, и това е Седмица One, продължение.
Така че една от причините, ние сме били, преминаващи около технологии като
Google Glass е, че те идват с нещо, известно като API, за
Заявление програмен интерфейс.
И какво означава това е, че с правилните файлове и с право
документация, всъщност можете да напишете софтуер за дори устройства като тези.
>> И така, какво имаме предвид към семестъра края е, ако даден проект
включващ, Google Glass може обжалване, ще видим какво можем да направим в
отношение на вас кука с някои назаем хардуер, както и на
общодостъпната API, така че можете да всъщност започват създаването на софтуер
, който работи на същата Glass Google.
>> Друго устройство, което Свирим с на края, че ние решихме, че може да бъде
забавно в края на семестъра е това малко нещо тук.
Тя се нарича Leap Motion, и това, което сте за да видят технически е
реклама на устройството, но то не говори за това, което този конкретен
Устройството може да.
И той също идва с API чрез които можете да пишете софтуер, за да
контролирате своя компютър по начин, бил такъв един-минутен филм тук.
>> [VIDEO PLAYBACK]
>> [END възпроизвеждане на видео]
>> Така че точно сега, това устройство се случва с да се прилага като малко USB
конектор, който можете да включите в компютър, но аз не бих се изненадал
ако не след дълго ние имаме тези видове технологии в следващата серия на компютри
и Mac-ове, така че можете, наистина, взаимодействат с него
начин, по този начин.
Всъщност това, което мислех, че ще направя, също е Извадих една малка демонстрация
програма, която идва с този софтуер.
Така че съм сложил малкия сензор в предната част на моя лаптоп.
>> И както можете да видите, че вече осъзнава, че ръката ми е там
контролиране него.
И всичко това заявлението, не е потекат реки от малките неща като това.
Но можете да видите, че, наистина, Имам пет пръста там.
Ако мога да го да направи всичко 10, можете да си представите един чист пиано
приложение или други подобни.
Така че, ако искате да дойде след края на тренировката днес и да играе с, че като
Е, вие сте добре дошли да.
Така че повече за това към края на семестъра.
>> Така няколко административни съобщения.
One, направи точка от този петък по обяд в cs60.net/section.
Това е URL на курса начална страница, както добре.
В същото време, обаче, supersections ще дебютира тази неделя.
Supersections са еднократно нещо, защото ни отнема известно време, за да работят
Кой сега е в коя секция и къде.
>> Така че това в неделя, ще има един раздел за тези по-малко удобни,
една точка за тези, по-удобно.
И тези от вас, някъде в между са добре дошли да отидете
едната или и двете или нито едното.
И двете ще бъдат заснети.
Те ще бъдат в по-голяма аудитория, отколкото участък обикновено би било инча
Но целта тук е да ви снабди с комфорт с проблема зададете една,
с С, с уреда CS50, тази уикенд, дори и преди да разберете вашата
официално раздел задача.
Така че ще отговарят на вашите TF и ​​вашия малък група sectionmates около
една седмица време.
>> Работно време, междувременно, са били става.
Да се ​​възползваме от тях тази вечер или утре вечер, ако искате.
Проблем набор 0 се дължи в петък.
Това е един ден по-късно от редовно насрочено-четвъртък.
Но с проблема набор 1, ще видите че тя включва някои загряване
упражнения, с които сте се да удължите
Четвъртък краен срок до петък.
Проблем набор 1, междувременно, ще дебютира на интернет страницата на курса този смешен
Петък, ако искате да се сгуша с го, както го направих едно време късно
Петък вечер в стаята си.
>> Така cs50.net/appliance е мястото, където можете да получите на CS50 уреда
че сме започнали да използват в понеделник.
Ще го използвам малко повече днес.
Но бъдете сигурни, че проблемът комплект 1 спецификация ще ви преведе през
точно стъпките, които трябва да се получи, че и да вървят.
Така че не се тревожи за това, че преди PSET 1, ако предпочитате да не.
>> Добре.
Така че ние погледна в понеделник на изходния код, но в контекста на нова
език за програмиране, а именно, С и С, за разлика от Scratch, не е графичен.
Това не е пъзел парчета.
Това е по-English-подобен синтаксис.
И има няколко стъпки, участващи в действителност писане и управление на
програма на С, защото освен източник код, подобен на този, имате нужда от нещо
наречена компилатор.
И от гледна точка на лаик, какво няма компилатор направи за нас?
Да.
>> Студентът: Той преобразува кода че пишете на 0s и 1s.
>> DAVID Malan: Добре.
Така че това преобразува кода, който пишем на 0s и 1s.
Той преобразува така наречения изходния код обектен код, последната от които изглежда
малко нещо като това.
И това е вашето CPU, мозъците във вътрешността на компютъра си, че поради
хора, които са създали тези компютри, знам какви са тези последователности
на 0s и 1s средната.
>> Може би това означава, печат.
Може би това означава, допълнение.
Може би това означава изваждане.
Може би това означава покаже графиката.
Не са предварително определени модели на битове че светът е решил да кажа
някои неща.
Но в по-голямата част в този курс, ние ще работим по-високо ниво, и
ние ще приемаме за даденост, че съществуват неща като компилатори, които могат да
направи нашата функция изходния код в начина, по който възнамеряват.
>> Така че програмата ни написа първото миналата седмица и след това започна да порт, така че да
говори, да C през изминалата Понеделник, беше това.
При зелен флаг кликнали, поздрави.
Това, разбира се, написана на Scratch.
И твърди, че равностойността програмата в C изглеждаше малко
нещо като това.
>> Така че това, което мислех, че ще направи на пръв е, Да дразни освен това, което изглежда на пръв
поглед, разбира се, тъй като доста тайнствена синтаксис, но вие ще започнете да забележите
модели доста бързо.
Това, което също така ще направя днес, е предоставят вас с мисловен модел за някои
каноничен, някои стандартни конструкции в програмирането.
И тогава ще се получи в действителност нашите ръце мръсни с някои примери.
>> Така че за тези от вас, по-удобно, осъзнават, че тази седмица и след това следващия
седмици може много добре да бъде малко на преглед.
Но особено когато хакер издание на проблема набор 1 излиза на
Разбира уебсайт в петък, аз мисля, ще откриете, че дори и като попълните
някои заготовки през следващата седмица или две, ще започнат да стават все повече
оспорва и се сблъскват нови и нови неща.
>> Така че нека да дразни тази програма освен няколко линии в даден момент.
На върха на кулата, ние имаме това, което е технически нарича
Preprocessor директива.
Това е само един ред код, който казва да включва съдържанието на файла,
наречен стандартен I / N, стандартния вход - или, съжалявам, стандартна I / O, стандарт
вход / изход,. ч, вътре на моята собствена програма.
>> Така че с други думи, ако това писах програма с обикновен текстов редактор като
Gedit, по-простите еквивалент на нещо като Microsoft Word, че
инструкция, # включват stdio.h, е само ще каже на компилатора, вземете
Съдържанието на този друг файл, stdio.h, и да ги поставите тук.
>> Сега, защо ми пука?
Какво сме претенция е вътре в този файл нарича stdio.h, която се съхранява
някъде на моя твърд диск, или в тази случай, някъде в CS50 уред?
Някой друг го е сложил там за мен.
Но какво има в него?
>> Да, така че това е декларация за функция, наречена ФОРМАТ.
Така ФОРМАТ припомня функцията, която дисплеи думи и символи и
номера на екрана на заповедите ми.
Но аз не го пиша.
CS50 не го пиша.
Някой преди години го е написал, а те същество ни даде рецепта за него
във файл, наречен stdio.h.
Така че първата линия просто ми дава достъп до до функции, които някой друг
написа преди години, сред които са ФОРМАТ.
>> Сега, на следващия ред аз ще махна ръка, поне до следващата седмица.
Но за сега, знам, че Int основни (свободна) е по същество еквивалентна на тази
жълт пъзел парче, когато зелен флаг щракнали.
В света, преди години, реши, че ако сте написването на програмата в
език, наречен C, да започнете вашата програма с линия
който изглежда като.
Само за една седмица, ще направи смисъл какво Int е, това, което е нищожен.
Но за сега, просто мисля за него тъй като това жълто парче пъзел.
>> Сега следващата, имаме фигурна скоба последвано от друга близка фигурна скоба,
така да се каже.
И ние ще видим тези през програми в C, както и
JavaScript и PHP.
А това просто капсулира свързани с реда код.
Откритият фигурна скоба същество казва, тук идва някакъв код.
И затворена фигурна скоба, която е под ъгъл в другата посока, просто
означава, че това е за съответния код.
>> Така сочни ред в тази първа Програмата е последната, ФОРМАТ,
в кавички, здравей свят.
И се обадих на нещо между цитати какво последен път?
Така че това е един низ.
И низ е само Techie Срокът за поредица от
символи, с една дума, една фраза.
Дори една буква може бъде двойно цитиран.
Но това е поредица от нула или повече знаци.
>> Обратно наклонена черта-N, обаче, изглежда малко странно.
Но това не означаваше нещо просто към компютъра.
Какво е наклонена черта-н?
Нова линия.
Така че това е само за специална последователност на знаци, че светът е решил
средства сложи ред там, защото компилаторът ще се получи в действителност
объркани, обикновено, ако, много разбираемо, но неправилно, просто
начало удря Въведете да нови линии на кода ви.
Трябва да бъде малко по- изрично с наклонена черта-н.
>> И ще видите, че има няколко други такива модели за специални знаци.
Например, ако искате да позволите на вашия против да се скитат в корнер случай,
Предполагам, че аз исках да отпечатате двойни кавички на екрана за
независимо от причината, че изглежда да е малко проблематично, нали?
Защото ако сложа двойни кавички в средата на "Здравей, свят", за каквото
Причината, защо изглежда, че потенциално проблематични?
Той къса връвта с пилците.
>> Компилаторът е само една програма.
A програма като съставител е просто ще да четете върха код към дъното,
ляво на дясно.
И ако вижда три двойни кавички вместо на две, това няма да се знае
ако искаш да кажеш, че нещо в ляво трябва да бъде низ, или нещо, което да
правото, или цялото нещо.
Това е двусмислен, и какво от това типичен Компилаторът ще направите, е просто се побърквам,
и ще ви даде някои съобщение за грешка, и ви накара да се справят с проблема.
>> Така има предвид, че наклонена черта-п означава нов линия, какво ще инстинктите си сега
да започнат да бъдат, ако искате да включите нещо неправилно като двойно
цитирам вътрешността на този иначе цитирана низ?
Обратно наклонена черта-двойни кавички.
И така, ние ще видим тази вид на модела също.
>> Ако искате да направите нещо малко Странно, вие ще откриете, че
решения често следват модел, и наклонена черта
означава бягство последователност.
И това просто означава нещо специално че трябва да представляват в
различен начин.
Що се отнася как да представляват наклонена черта, добре, ще
се върна към това.
Но отговорът също е действително малко очевидна.
>> Така че нека сега се въведат някои други програмни конструкции
че сте видяли в Scratch.
Вие вероятно сте се приема за даденост вече, ако вече сте се гмурна в
Проблемът зададете 0.
Но нека сега се въведе синтаксис в C за тези доста интуитивен друго
идеи, поне някои от тях.
>> Това е една идея на състояние или клон, докато преди това ние
представени я с код, който изглеждаше подобен на този в ляво в Scratch -
ако х е по-малко от години, а след това се каже така -
вместо сега в C - нека да усъвършенствате в по-простия случай -
ние просто ще кажа, ако отворите скоби, нещо е вярно - а
Boolean израз ще си отиде когато казах състояние -
близо скобите, след това направете това, което е вътрешността на тези фигурни скоби.
>> Така че тук също на фигурни скоби са нещо като Scratch на
U-образни парчета от пъзел.
Знаеш какво е вътре тези фигурни скоби.
В този случай, наклонена черта наклонена черта.
И забележете това е напред наклонена черта, а не обратно наклонена черта.
Наклонена черта, наклонена черта, за тези, които са програмирани
преди, просто означава -
това е просто коментар.
A коментар не е на ред на код, сами по себе си.
Това е линията на английски, че вие, човека, написал на себе си да
може би ви напомня да се направи нещо, за да обясни на себе си, да се обясни на
някой друг, това, което си код прави.
Това е просто описателен коментар.
>> Сега, разбира се, може да има двупосочна разклонение на пътя точно по този начин, а
трипътен разклонение на пътя, като направите това, и ако продължи тази
модел, можете да имате четири, пет-, шест-пътни разклонения на пътя, ако
, което трябва да се справя, наистина, че много условия.
И тогава забелязва паралелизъм тук -
ако (условие), иначе, ако (условие), и единственият, който е малко
странно е последната, която е само, че друг.
Но отново, това е идентичен, концептуално, на това, което сме направили
вече, въпреки че синтаксиса отнеме малко време за опознаване.
>> Сега, в този пример, има някакъв друг странен синтаксис.
Виждаме ФОРМАТ отново отворена скоба, и близо скоби.
И вътре има котировки на низ.
Скобите, в контекста на ФОРМАТ, отидете в ляво
и правото на какво?
Какво ще опише, че цитира низ като цяло?
>> Така че това е аргумент.
Всеки път, когато имат функция, като ФОРМАТ, и след това отворена скоба и
близо скоба и нещо вътре в него, независимо дали това е низ, или
цяло число, или нещо друго, нещо, което в между тези скоби се нарича
аргумент.
>> И аргумент просто влияе функцията на поведение.
В този случай, това е доста ясно как.
X <Y е това, което се премина в, така да се каже, като аргумент.
И ФОРМАТ ще отпечатате точно това.
Защото със сигурност, лицето години които изпълняват ФОРМАТ нямаше представа
това, което ние човешките наследници са ще използва ФОРМАТ за.
Значи затова аргументи съществуват, за да повлияе върху поведението след функцията
писано.
>> Сега, Boolean израз.
Виждали сме това и преди в Scratch.
Оказва се, че в C можете също да "или" ги заедно, така да се каже.
Две вертикални линии означава, че този блок на Кодекса, да направите това, ще
изпълнение, ако първото условие е вярно или второто условие е вярно.
И въпреки, че може да не са направили това в самото начало, че можеш наистина
направите това в Scratch, както и да Изразете себе си по различен начин -
Ако първото условие, а втората състояние са верни, тогава правя това, което е
вътрешната страна на фигурни скоби.
>> И точно както настрана, причината е двоен амперсанд и двойно
вертикална лента, ще видим в крайна сметка че една вертикална лента и
единичен амперсанд всъщност имат различни смисъл в C. Така че за сега,
че дублирането на символи е умишлено.
>> Така че нека да представим накратко този друг малко синтаксис.
Това не съвсем пренесе върху Scratch, но аз твърдя, че мога
прилагане на понятието за, ако друго, ако друго, ако друго, ако друго изявление използване
нещо, наречено ключ изявление.
И единствената причина това наистина съществува е просто да ви дам, на програмист,
малко по-различен начин за разрешаване на някои проблем, въпреки че е логично
не ви дава нови възможности.
>> С това искам да кажа това.
Когато казваш ключ, а след това на интервал, и след това чифт скоби, вътре
от които отива израз -
и това може да е малко не-очевидно в началото, но това не е аргумент,
технически, защото ключа не е функция.
Така че за сега, само се предполага, че ние използваме скоби в различни места
по различни причини.
>> Така че включете израз означава, че мога сложи променлива вътрешността на тези,
скоби, където се казва изразяване.
И тогава, ако тази променлива -
Предполагам, че това се нарича X, и това е само едно цяло число -
Аз след това могат да се изброят в моя слайд тук нещо подобно.
Ако х е променлива ми, и аз Искам да направя нещо, ако х
е равно на 1, мога да го направя.
>> Ако вместо това искате да направите нещо ако х е 2, мога да го направя.
Иначе, ако искам да направя нещо друго изцяло, аз може да има случай по подразбиране в
който случай го правя друго нещо.
Така че, в този смисъл, това е еквивалентно на ако Х означава равен на 1, иначе, ако друго,
но Споменавам това сега, само защото ще го видя отново.
Но за сега, просто знам, че той съществува.
>> Добре.
Така че тези последните са малко по- сложен на пръв поглед, но те
нещо сравнително лесно.
A за цикъл в C е парче код, който просто прави нещо отново и
отново и отново.
И единственото досадно нещо за него е това е, че това е малко загадъчно
да изразиш себе си в този цикличен модел, но светът на стандартизиран
по следния начин.
>> Когато използвате за линия, имаш двойка скоби отново.
И забележи две запетаи там.
Тези две запетаи отделни три различни прояви в рамките на
скоби.
Един от тях е т.нар инициализации.
Един от тях е така наречената състояние.
И един е т.нар актуализации.
>> Погледнато абстрактно, това е напълно не-очевидни, така че нека да разгледаме
в конкретен пример.
В Scratch имахме повторение блок.
И този блок каза повтаря 10 пъти, да речем "Здравей, свят". Позволете ми да претендира за
сега, и ние ще се върнем към това, и Това също ще получат по-познат на
Вие не след дълго, еквивалент C код може да се каже, че това -
а за отчет и пространство, чифт скоби, забележите, точка и запетая в
там, които отделят от три обособени неща, на инициализацията
състояние и актуализация.
>> И да предположите какво първата прави.
Int I = 0.
По отношение груб лаик, какво е които прави за нас, най-вероятно?
Така че, да.
Това е обявяване на променлива наречена I, и тя го дава каква стойност?
0.
Така че, това е създаването на нарича променлива I, съхраняване на стойност 0 в него.
Това е така наречената инициализация.
>> Добре, сега твърди пред че нещо по средата, аз
<10, е състояние.
И така, какво се прави?
Е, това, което прави за линия, когато програма с за линия се управлява, е
всеки път, когато компютърът работи през този цикъл, отгоре надолу, отгоре
дъното, също като вас, момчета направих, когато броене себе си и в седнало положение,
отново и отново, и отново, компютъра ще
за да проверите това условие.
И ако е по-малко от 10, че ще го направи отново.
Ако I е по-малко от 10, че ще го направи отново.
Ако I е по-малко от десет, че ще го направи отново.
Така че изглежда да се предположи, че се надявам, че се променя.
В противен случай щяхме да имаме един безкраен цикъл.
И наистина, че се променя, тъй като Последното нещо, което след запетаята има
е малко по-загадъчен синтаксис на I + +.
Но тези от вас, които сте направили това преди, това означава само
просто какво?
>> СТУДЕНТИ: [вмъкване VOICES].
>> DAVID Malan: Добавете 1 до аз.
СТЪПКА аз.
Така видяхме Scratch пъзел парче за това, всъщност.
Тя не изглежда като аз + +, но това просто средства, съвсем просто, нарастване на
ценят и от 1 всеки път, когато го направя.
Така че, буквално, да започнете от инициализиране I до 0.
След това трябва да проверите състоянието ви.
Е 0 по-малко от 10?
Да.
Влизаме през примката.
>> Следващото нещо, което претендира за компютъра ще направя, е, че ще
Аз да увеличите.
Така че сега е 1.
Тя проверява състоянието.
1 е по-малко от 10?
Разбира се.
Така че го прави отново.
След това стъпка I + + до 2.
2 е по-малко от 10?
Да.
И отново, и отново, и отново.
И накрая, тъй като на плюс-plussing, стигаме до I представлява 10.
10 е по-малко от 10?
Е, очевидно не.
И това е точката, в която на линия за просто спира.
И ако имате повече код на екрана по-долу, на компютъра
постъпленията да тече този код вместо това.
>> И отново, въпреки че това ще гледам и се чувствам малко странно
първо, със сигурност за тези от вас, които никога не са програмирани преди това
буквално намалява концептуално това, което е друго много
прост пъзел брой в Scratch.
>> Добре, аз обещах, че ще и други аналози в Scratch.
Има на този също.
И видяхме това накратко последен път.
Но помни вечно блок в Scratch?
Той просто прави нещо вечно?
I твърди, че бихте могли да прилагат това по този начин.
И всъщност може да се приложи тази в един куп различни начини.
>> Но докато линия е просто различен начин в C да изразиш себе си.
В края на деня, не можеш да направиш нещо с линия, докато, че
Не мога с линия за.
Така че те са в края на ден функционално еднакви.
Но това дава възможност да изразите себе си малко по-различно в
по следния начин.
>> С линия, докато, това е това, което е в скоби, които се проверяват отново и
отново и отново.
И веднага след като този израз е невярна, след това на линия спира изпълнението,
и компютърът преминава към тече някакъв друг код
има във вашия файл.
>> Но това, което е интересно тук е че аз буквално написали вярно.
И вярно е вид Булева стойност, с вярно или невярно стойност.
Така че може вярно стане някога фалшиви, ако съм буквално
трудно кодирани в програмата ми?
Така че не.
Това е малко странно, че го направих.
Но вярно е вярно.
Не е плюс-plussing.
Няма смисъл от променливи в тук.
Така че, защото аз трудно кодирани, докато е вярно, това линия винаги ще оцени
отново и отново и отново.
>> Така че колко пъти е здравей свят ще се изведе на екрана?
Forever.
Един безкраен брой пъти, докато батерии матрици или някои други външни
Събитието се случва.
Така че това може би не е най-добрата програма да пиша, защото, ако потребителят
никога не могат да се откажат от програмата, тя е Вероятно не това, което е предвидено.
>> Но понякога, програми следва да има един безкраен цикъл.
Например, ако компютърът ви има часовник върху него, то със сигурност ще бъде
хубаво, ако си часовник тя не поддържа актуализиране самата завинаги, макар и веднъж
втора или веднъж на минута или нещо подобно.
Така че дори и безкрайни цикли имат своето място.
>> Добре.
Накрая, този.
А това е малко по-различно функционално, и ние ще се върнем към
това вероятно в PSET 1.
Но има и друг тип цикъл нарича правя, докато контур.
И единствената разлика тук между направи линия, докато и, да речем, една линия, докато,
е, че условието се проверява не преди да изпълни код, но след
можете да активира кода.
Така че в началото на време линия, докато правя, докато
проверява се в долната част.
>> И това просто означава, че докато линия обикновено ще изпълни повече пъти
или по-малко пъти от известно време цикъл?
Потенциално повече пъти, защото правя линия, докато е ясно казва да направите това,
само след който ти сочи проверка ако състоянието вътрешността на
скоби е вярно.
>> Така че ще видим това отново вероятно в PSET 1.
Ако някога искате да направите нещо в поне веднъж и след това може би повече
време, това е добър изграждане да използвате.
Но една линия, докато, от друга страна, ще проверите състоянието му на първо място.
И това е всичко за линии в C, се а, а, а за линии.
И отново, те поставят доста добре обратно да се почеше, освен това не
доста има същия аналогов в Scratch.
>> Е, какво ще кажеш, сега, променливи?
Така че това е как аз обявен за променлива синтактично онзи ден.
Имах едно цяло число, което твърди е цяло число.
После ми се случи променлива наречена брояч, и след точка и запетая.
Така че какъв е този ред на кода правиш?
Това е съвсем просто, като заяви, променлива -
това е, иска от компютъра, да ми даде някакъв спомен, ми даде някои бита - в
който може да съхранява какво?
An вътр.
И запетая просто означава, края на ред код.
>> Сега, на втора линия е може би доста guessable.
Какво е брояч = 0; правиш?
Той е възлагане 0 за противодействие.
И така, това е друго нещо това е малко досадно
в сравнение с, да речем, алгебра.
Като има предвид по алгебра, знака за равенство означава, равни, тук в C, на равно
знак означава задача.
Така че това означава, сложи това, което е в дясно в това, което е в ляво.
И ще видим друг символ, се равнява равни, когато искаме действително да тествате
за качеството, малко дразнещо.
>> Но това е малко по-неефективна.
Това е нещо досадно, че имам да декларира променлива и
след това му се даде стойност.
Така C всъщност ни позволява да опрости това и само да го направите всичко наведнъж.
Можете да декларирате променливата в ляво.
Все още можете да направите задачата на право с удар, че знак за равенство в
средата.
Така че в края на деня, тези две са равностоен, но това, честно казано,
е може би по-добър навик да влезе само защото е малко по-малко
код, това е малко по-лесно да се чете, и то просто стяга
кода си, така да се каже.
>> Всички въпроси до този момент по електрически вериги, на променливи, при условия, при
Булев тип, или технически или концептуално?
Добре.
Така че сега това следващата получава малко по-интересна.
И това е пример, който направи миналата време, че само очертава една Scratch например
към C.
>> Така функция.
От гледна точка на лаик, това, което е функция?
Трябва да бъде по-смела с отговора си.
Какво е функция?
>> Студентът: Има ли нещо.
>> DAVID Malan: Какво е това?
>> Студентът: Има ли нещо.
>> DAVID Malan: Има ли нещо.
OK.
Ще започнем от там.
Така функция прави нещо.
Така че това е част от код, че е прилагат главно на друго място, че
наистина прави нещо.
Сега, това, което е интересно за функция е, че това може да отнеме вход,
и това може да доведе до изхода.
И нека действително се Погледни това.
>> Така че човекът зад завесата е било умишлено преди малко.
Тук имаме една маса.
Но да предположим, че това всъщност представлява голяма кутия.
Това е така наречената черна кутия.
И като цяло, в дизайна, в компютъра наука, черни кутии, просто се отнасят до
парчета функционалност, че някой е изпълнила, а ти не
непременно знаят или грижа как е изпълнява под капака.
Току-що е грижа, че тази черна кутия, която ще започне да се обадите
функция, прави нещо.
>> Така, например, ако тази черна кутия на на сцената тук представлява ФОРМАТ, а
функция, знам от предишни примери ФОРМАТ, че има една или повече
аргументи, а първите от тях Аргументите трябва да е стринг, като
"Здравей, свят". Е, ако аз съм човекът, написването на програмата, и аз искам
да използва ФОРМАТ, аз, например, може да вземе парче на празен лист хартия, тук и
черен маркер и пишат на него -
I грешно "свят" -
Н-Е-Л-Л-О.
>> Така че аз ще си взема черен маркер и ще пишете, толкова голям и четливо, колкото мога по
това парче хартия, "Здравей, свят" И сега аз твърдя, че това е моят аргумент.
Това е низ представени с парче бяла хартия.
И сега моят принос към функция ФОРМАТ ще бъде това.
Така че аз призовавам ФОРМАТ, минаваща този довод като вход към него.
>> И сега, аз не знам как човек, който пише ФОРМАТ го е направил преди години, но
Аз знам от своята документация, която своята цел в живота е да отпечатате това, което
му предостави като вход.
И така, въпреки че това изпълнение е без знанието на мен
под предния капак, сега Виждам, о, това е направено.
Той е отпечатал нещо на екрана.
И сега контрол на програмата, ако има бяха повече реда код, ще
сега се върнахте при мен.
И така на факта, че Колтън -
благослови сърцето му, се крие тук под на масата пред всички вас -
е случайно това, че аз не знам и не ми пука колко е ФОРМАТ
прилагане.
Просто знам, отново, от своя документация, какво прави и как се
съм трябвало да го използвам.
>> Сега, припомни, че ФОРМАТ може да получи малко по-сложни.
Отново, ние говорим само за еквивалент на думата блок Scratch е.
Но също така е направил това за последен път.
Исках да направя моя здравей програма малко по-динамична, а не само трудно
Код нещо като "свят", и Определено не е трудно нещо код
произволно като D-A-V-I-D в програмата.
Исках да попитам на потребителя за неговото име, а след това направи нещо с
че низ, който те предоставят.
>> Така че има нещо по-различно тук. ФОРМАТ, преди малко,
е, наистина, да направим нещо, но не се връща нищо за мен.
Така ли е?
Колтън не ми подадеш нищо обратно, не парче хартия.
Имало е само страничен ефект.
My предоставяне на "Здравей, свят" като аргумент Colton доведе до
страничен ефект от една дума, няколко думи, се появява на екрана.
>> getstring, обаче, е малко различни. getstring също
функционират, но той се връща някаква стойност.
Той не само има естетически страничен ефект.
То всъщност ми дава, лицето обадите или използване на функцията,
нещо обратно.
Така че в този случай, е getstring плати с getstring отворен
скоба, близо скоба.
Без getstring, следователно, да никакви аргументи или вход?
Не, това не изглежда.
Нейната цел в живота е само за да получите низ.
Тя не се нуждае от по-подробно от това.
Така че нека да вървим напред и да се преструвам, че отново, тази черна кутия не е ФОРМАТ,
но getstring, и ме пусна, лицето написването на тази програма, обадете се или използвайте
getstring само с писмено G-E-T-S-T-R-I-N-G, отворена скоба, в близост
скоба, getstring.
>> Сега, нямам представа как CS50 персонал приложени getstring, но знам, че
ако изчакате достатъчно дълго, тя ще направи нещо под предния капак, може би използвате
някои променливи, може да използва някои условия, може би се използват някои линии,
Може би се използват някои функции, може би използва -
Просто се опитвам да се забави - може би използва някои други програмни функции.
Но ако изчакате достатъчно дълго - в действителност, в компютъра, това се случва
супер бързо -
ако изчакате достатъчно дълго, тази функция getstring ще получи низ
от страна на потребителя, който се предполага, че пишете то на тяхна клавиатура, и
След това, когато се прави getstring получаване тези знаци от страна на потребителя
и съхранението им в низ, че функция, getstring, ще има
готови за мен някои от крайните продукти, които аз съм ще извлечете като начин на
оператор за присвояване.
>> И като отида, наистина, в изходния Оттук Obosi има щедро
участва, без да знаят това напредък, като напишете името му върху тази
променливи, които представляват низ.
Сега, оператора за присвояване означава, дори въпреки че това може да се чувства малко
съкратени, аз всъщност се нуждаем да направя моя собствена копие от това.
Защото на лявата ръка страна - ОПА! -
Забележете, че по същество има низ име на лявата страна.
Така че аз съм също така ще направи моето собствено копие на това.
И това е доста голяма бяла лъжа, защото ще видим след седмица или две на
време, че конците не са всъщност това, което изглежда да бъде.
>> Но за сега, тук е на върнатата стойност.
Тук е моят собствен копие от него след с помощта на оператор за присвояване.
И сега, какво искам да правя след това?
Сега имаме втори на два реда код.
Така че аз сега искам да се обадя ФОРМАТ.
Нека си представим, че сега, че черният кутия се завръща отново, за да бъде
ФОРМАТ и не getstring.
>> ФОРМАТ този път ще вземат колко аргументи?
Така че изглежда, това е като две.
Има две запетаи в там, но един от тези запетаи, това е
Вътре в кавички.
Така че първият аргумент е буквално ще бъде това.
H-E-L-L-O, запетая, процента S, наклонена черта-н.
И сега съм като предлагат не един аргумент, но два аргумента за ФОРМАТ.
>> И какво ФОРМАТ трябваше да направя с тези два входа, след като ги прехвърлят в
като аргументи?
Той е трябвало да вземе втората от тях, което се обадих на името, така че
втори лист хартия аз написах преди малко се нарича име.
Това ще щепсела на стойност вътре на тази променлива в контейнер,
% S, така че, отново, само за миг време, ще видим, е страничен ефект от
като покани ФОРМАТ, което сега ние виж не "Здравей, свят", но "Здравей,
Obosi. "
>> Така че голяма аплодисменти и за двете нашите доброволци, от които само един знае
това нямаше да се случи.
Добре.
Така че, може би, просто като това е, Разбира се, ако вече сте запознати
с такъв, да се надяваме, че никога не ще забравяме, че специално зрителната за това как
функции работят.
>> Така че има нещо повече от getstring.
Вътре на CS50 библиотека, има цял куп функции, всички от които
се капитализират, само за да се изясни че ние написахме тези функции.
Обикновено в C, почти всеки друг функция, която ще използвате е с малки букви.
Но ние съзнателно използват главни букви само за да стане ясно, че тези
са помощни колела на видове, че ще използвате само за няколко седмици, че
опрости процеса на получаване принос от страна на потребителя.
>> Библиотеката CS50 не прави нищо че сами вие не може да направи от
само с помощта на C код от Oldschool учебник.
Но, отново, ние ги използват като обучение колелата на видове за само няколко
седмици, така че да можем да се отървем от сложност, че скоро ще се разбере
себе си за правене на нещо като относително лесно, колкото да
въвеждане от потребител.
>> Така че знам, че ще имате достъп да GetChar, GetDouble -
удвои.
What's - и след това GetFloat.
Какво е с плаваща запетая?
Нека да започнем от там.
>> Студентът: [недоловим].
>> DAVID Malan: Да.
Това е число с плаваща запетая.
Така че едно цяло число е цяло число, което е просто число, от 0 до 9,
някои брой повторения от него, с плаваща запетая е нещо,
с десетична запетая.
И двойно, междувременно, също е число с десетична точка, но по-
числа след десетичната точка, потенциално.
>> Така че ние ще се свържем с това преди време.
Но обикновено, всеки един от тези видове данни, като всеки от тези видове променливи
че една библиотека като нашата могат да се върнат ви, да използват различни номера на бита към
съхранение на информация.
Обикновено, Char, което просто означава, един символ, използва 8 бита.
И това всъщност е в съответствие с нашата байт на доброволци, които през миналата седмица
дойде и представлява един Ascii характер в даден момент.
Така че Char е 8 бита.
>> Поплавък се случва да бъде 32 бита, като цяло.
И двойно, както можете да предположите, е всъщност 64 бита, което е просто още,
което означава, че може да има по-голяма номера или по-голяма прецизност.
Но отново, повече за това друг път.
GetLongLong Междувременно, макар и глупаво име, в действителност е просто
цяло число, което е два пъти по-голям, два пъти по- дълго, потенциално, като редовен
число, 64 бита вместо 32.
И GetString Ние използваме.
>> Но се оказва, че в библиотеката CS50, която се прилага, както ще видим, в
под формата на два файла, единият от които се нарича cs50.h, има две други
типове данни в него.
Булев тип не съществуват в C. Можете да симулира тях само с използване на 0s и 1s
във всичките ви програми.
Но ние в библиотеката CS50 са създали символите "истински" и "фалшиви"
да представляват един и 0, така че не Трябва да твърди код нещо
буквално като 1 и 0.
Но ще видим тези отново.
>> String, също не съществува.
И затова споменах, че е малко на една благородна лъжа за сега.
Но ние ще Отлепете че слой не след дълго.
Но за сега, низ е поредица от знаци.
>> Междувременно, в ° С, те наистина имат различни типове данни.
Забележете, това са малки.
Така функциите си видял преди малко са функции, дадени от CS50, че
ще се върне към вас стойност, която попада в една от тези категории.
>> А листове мамят няколко просто да засадят семената тук. ФОРМАТ не просто
вземат% S като контейнери.
Отнема% г за десетични числа, или% ще работя, както добре.
% F е с плаваща запетая. % С е на Чар, ако искате да включите само един
знак в предварително форматиран низ като ние сме били прави, можете да използвате в%.
>> И тогава, малко дразнещо,% LLD е за дълго, дълго цяло число десетична запетая,
което просто означава, ако имате нужда от наистина Големият брой и използвате нещо
нарича дълго време, което ще дойдем обратно към по PSET, можете да използвате LLD% до
ФОРМАТ кажа, включете в една наистина голяма число тук под формата на втория си или
някакъв друг аргумент.
>> И накрая, аз обещах, че има няколко други бягство
последователности, които ФОРМАТ поддържа.
Виждали сме наклонена черта-н.
Обратно наклонена черта-R може да видите.
Това е нещо от старата школа нещо.
Ако някога сте използвали истински години пишеща машина Преди и извади на манивела
които не само се върти колелото, за да премести на подреждане, но и разви
цялата работа по целия път обратно към отляво, добре, наклонена черта-R само
по същество се движи курсора обратно началото на линията
без да се движат надолу.
Но отново, повече за това, Може би, в бъдеще.
>> Обратно наклонена черта-цитат, наклонена черта-двойни кавички, наклонена черта-наклонена черта е
решение на мъничък гатанка Споменах по-рано.
И обратно наклонена черта-0 е всъщност доста интересно.
Но ние ще се върнем към че не след дълго.
>> Така че нека да отидат в, сега, на CS50 уред, и нека действително направи
Бързо се затопли с един от примерите ние направихме вече и след това преминете към
нещо малко по-сложни.
Така че, ако се отвори програмата си нарича Gedit -
това е моят графичен редактор.
И аз мога да го направя -
нека да затворите този прозорец там -
чрез тази икона, тук долу, Gedit, в долния ляв
ъгъл до менюто.
>> Аз ще отида напред и да премина, и спести този пример в, да речем, John
Харвард папка.
Папка Джон Харвард е само дома си директорията, в която всичките си файлове живеят
по подразбиране.
И аз отивам да спаси това като файл със същото име-0.c.
И аз избрах това име само, така че застане срещу примерен код на
Разбира се на интернет страницата и в YouTube видео онлайн.
>> Така че сега аз ще започнат да напиша първата програма.
Нека да я увеличите за четливост.
И аз ще отида напред и да кажа, Int Основната празнота, която е просто ей така
жълт пъзел парче, че стартира програмата.
I са придобили в навик през години от откриването си в фигурна скоба, след това
също я закрият и след това се връщам в мястото, където искам да си сложа код, просто
защото тя ми помага да запази всичко балансирано, особено като ми
Програмата получава дълго.
>> И сега, тук, аз отивам да се продължи напред и да кажа, ФОРМАТ, цитирам цитата,
здравей свят, наклонена черта-п, в близост цитат, близо скоби, точка и запетая.
Така че аз съм просто повтаря всичко, което сме са приемали за даденост до този момент.
Сега отивам да намалите.
>> И това терминален прозорец тук, това, което Позволено ли е да се направи в този черен
и бяло прозореца?
Какво мога да го използвате за?
Така че това е мястото, където изпълняват команди и , където можете да компилирате неща.
И аз ще да го прости.
Отивам да използвате програма Уверете се нарича, която не е
технически компилатор.
Наречена компилатор звъня, но Ще се върнем на този при
седмица или две е време.
>> За сега, аз съм просто ще объркате направи здравей-0, но тези от вас, които са
сравняване в умовете ви това, което току-що написали за това, което е трябвало да въвеждания
знаеш вече, че го направих Нещо не е наред тук.
Сега, явно е че някои грешки.
Преди дори да погледнем какви са те, нито мисли за това къде сбърках?
>> СТУДЕНТИ: [вмъкване VOICES].
>> DAVID Malan: Да.
Аз съм липсва заглавния файл на библиотеката.
Всеки един от тези файлове. Ч се наричат ​​с глава файлове, и те колективно
принадлежат към неща наречени библиотеки.
Библиотеките са просто парчета код че други хора е написал.
Така стандартната [? I?] Библиотеката е колекция от файлове, съдържащи код
че други хора е написал.
>> Така че аз съм липсва това.
Така че, защо ми дава грешка?
Е, нека да превъртите обратно в ми терминален прозорец тук.
За съжаление, в ° С, като в много езиците за програмиране, особено
ако всичко е ново за вас, грешката съобщения са точни, но те са също така
доста загадъчен.
И грешката тук, в червено, е "Мълчаливо обявяване библиотека функция
ФОРМАТ с тип ", а след това го свитъци на следващия ред, "INT Конст Чар *,
... "Тя просто става наистина преобладаващото бързо.
>> Но това, което трябва да започне да прави, ако, отново, нови за всичко това, е просто да
започнете да търсите за ключови думи.
Ясно е, че не може да разбере половината от думите, виждам, просто все още.
Ще разбереш, все пак, в срок от една седмица.
Но виждам, ФОРМАТ.
И това трябва да започне, не след дълго, за да бутам паметта си, добре, ФОРМАТ.
Нещо не е наред с ФОРМАТ.
Казах пише правилно?
Не, това не изглежда като - о.
Не мога да го използвам, освен ако аз преподавам съставител, че той съществува.
И така, отново, да отидат с инстинктите си, дори ако всъщност не разбират
действителните съобщения за грешка.
>> И наистина, разтворът тук е просто включват се в горната част на файла
така, resaving моето досие с Control-S или от менюто File.
И ако сега се върна тук, Отивам, за да изчистите това.
Control-L е просто един добър начин да изчистите екрана.
И тогава аз ще напишете "направи здрасти 0 "Enter, и сега продължавам да виждам
неразбираем последователност от символи, но ще се върнем към това.
Това е, което Уверете прави за вас.
Той е автоматизиране на процеса на вземане на доста досадно команда включващи
Звъня, действителната компилатор.
Но фактът, че аз имам грешки не означава че това нещо трябва да работи.
>> Така че аз сега ще направя - нека да я увеличите отново -
./hello-0 Enter, и наистина, виждам "Здравей, свят". Така че нека сега засили
това все така леко, само за да възпроизведе стъпките, които е предвидено.
Отивам да преименувате тази с Save As да hello1.c.
И сега аз отивам да декларира променлива наименува, така низ име,
и аз отивам да туриш в него стойност в кавички
D-A-V-I-D близък цитат запетая.
И сега аз ще замени "света" с какво контейнер за низ?
% S.
>> И сега, колко доводи ФОРМАТ вземе този път?
Така две.
Така че да излезем навън на котировките.
I въведете "име" след запетаята.
Но аз съм направил нещо друго погрешно това време.
Но нека приемем, че не го направих осъзнават, че все още.
Пусни ме тук.
>> И забележете също, аз съм се малко скучно да пишете "направи здравей 0" всички
време, "марка" и всичко това.
Така че, оказва се, в Linus можете често се срещна Up стрелка на
клавиатура, и всъщност можете да превъртите чрез всички команди, които съм
екзекутиран преди малко.
Така че, ако го направя, Up, Up, няма да здравей 0.
Аз не искам това.
Аз просто искам да се промени, че да Здравейте една този път, Enter.
В крайна сметка, това ще да ви спести доста време.
>> Добре.
За съжаление, не е грешка.
Така че нека да се придвижите нагоре.
Това изглежда наистина избивани тази програма.
Искам да кажа, Боже мой, това е два реда код, и неговите 10 линии на грешки.
Но ако се вгледате в горната една първа.
Използване на недекларирания идентификатор низ.
Смятате имам предвид стандартната П рез?
Не, аз не го направих.
Имах предвид низ.
>> Но къде е низ променлива тип декларирани, DD кажем?
Така че това е в CS50 библиотеката.
Така че това не е достатъчно, в тези първи няколко седмици, просто да се използва
C какво ни дава.
Аз също ще отида до тук, и аз успя да я прати над или под, но ще
само да го азбучен да пазят нещата подреден.
Отивам да включват cs50.h, която е предварително инсталирана на
вие върху уреда CS50.
И това е с отворен код, така че дори и хората в интернет, могат да я използват за тяхната
собствени компютри.
Но той идва с уреда CS50.
>> Така че сега нека да се върна и да компилирате това с марката Hello 1.
Дявол да го вземе.
Още една друга грешка.
Позволете ми да превъртите до първия, все пак.
Това е малко сложно.
Multi-знаков характер постоянно.
Това не ми помага.
Но забележете, звъня е поне малко малко достойни, което с малко
зелени карета символ, той казва Тук е мястото, където се издъних.
Защо се посочи, че с малко зелена стрелка, за апостроф следващия
за името ми?
>> Така че това е едно от нещата, които само свикнеш, особено ако сте били
Програмиране на Python или JavaScript, или други езици, където този детайл
Няма значение.
В C, това няма значение.
Ако за обявяване на низ, който е последователност от 0 или повече символа,
всъщност трябва да използвате двойни кавички.
Така че всъщност трябва да се промени това обратно , за да отворите цитат, затворете цитат, с
двойни кавички.
Единични кавички имат своето място, но само когато използвате индивидуална
символа, но повече за това друг път.
За сега, двойни кавички са необходими.
>> Така че сега, позволете ми да се върна в терминал прозорец, направи едно здрасти.
И кой е уверен?
Е тази програма сега ще да съставят правилно?
OK.
Така че ние тримата, че това.
Добре.
Enter.
И това всъщност е направил.
Така, че няма грешки този път, дори че тази програма е намерила малко
по-сложна.
Ако аз сега правя точка наклонена черта здравей 1, Enter, тя ще каже "Здравей, Дейвид."
>> Но нека да направим третата итерация това, когато
Програмата е наистина динамичен.
Позволете ми да отида напред и да промените файла име, само за съгласуваност с
файловете, които ще са на разположение да ви след това онлайн.
Enter.
И сега аз ще ида и да не магазин "David" твърди кодирани тук.
Какво мога да направя, за да много просто подобряване на тази програма?
>> Мога да се обадя getstring.
Тя може да е малко извън това, което е очевидно, път да се случи, така че аз ще
действително да добавите друга линия, ФОРМАТ, и да кажа името, на дебелото черво, в близост цитат, просто
да дава на потребителя бърза на екрана.
И сега аз отивам да отидете тук, и аз съм Ще използвам клавишна комбинация.
Аз ще отида Up, Up, както и промяна Здравейте от 1 до 2 Здравейте, Enter.
И слава Богу, че правя прогрес.
>> И сега аз ще отида да намали Здравейте точка и
промени това до 2, Enter.
И сега моята програма -
Ще я увеличите - става малко по-хубава.
Името ще бъде, да кажем Rob този път, Enter, здравей, Роб.
Ние можем да го направим отново.
Име, Лорън, Enter.
Име, Joseph, Enter.
Име, нека се опитаме да бъде трудно, Enter.
Eh.
Всъщност не е бъг.
Така че това е малко грозно.
Така че може би бихме могли да решим този в бъдеще, не сега.
>> Но как бихте се инстинктивно отида за справяне
че особено предизвикателство?
Той просто изглежда глупаво.
Как да се избегне неща търси глупав?
Така че бихме могли да направим, OK, чух няколко на нещата, състояние, и една линия.
Можем да използваме, една, състояние, за да се провери това, което е дължината на низа
ръководство ни е дал?
И ако това е 0, това е просто цитирам цитата, те просто да натиснете Enter, след това
може би трябва да му крещиш, и ги подкани отново.
Но как един ги подкани отново?
Е, аз също чух линия, и мога да прави отново и отново и отново
подканване на потребителя за едно и също нещо.
>> Е, нека да направим още един пример с помощта на различни
функция в библиотеката CS50.
Позволете ми да затворите този файл.
Позволете ми да се създаде нова.
И аз ще го наричат ​​adder.c, само защото това е лесно да се направи проста аритметика,
Въпреки че това ще бъде напълно underwhelming с какво бихте могли да направите
във всеки съвременен компютър.
>> Но нека да вървим напред и сега -
Взех си поука последен път - включват cs50.h, включват stdio.h, вътр
Основната празнота, която, за сега, просто ще вземат на сляпа вяра, но ние ще приемем,
че ще разберат какво това означава, че не след дълго.
И аз ще кажа нещо като "ми даде едно цяло число."
>> И сега, как мога да получа едно цяло число?
Искам в крайна сметка да декларира променлива призова х от тип Int и
съхранява в него е цяло число от потребителя.
Така че това е една хапка.
Но ако някой иска да предложи, как да декларират цяло число наречена X?
Int х.
>> Така че това наистина е толкова просто.
Дай ми едно цяло число.
Наречете го х.
Сега използвам оператора за присвояване.
И как мога да се съхранява от оставили стойност на потребител?
Аз не искам да се обадя getstring, Очевидно е, а по-скоро getint.
Всички аргументи?
Не.
Така че това е отворена скоба, близо скоба незабавно, а след това и
точка и запетая завършва линията.
>> Сега нека да го направим отново.
Дай ми още един Int.
Този път аз ще направя Int, нека Наричат ​​го г, се равнява getint.
А сега нека да направим нещо супер-прост като някаква математика.
Така ФОРМАТ, сумата от% D е контейнер за вътр.
И г%, период, наклонена черта-н.
>> Добре.
Така че това не е всъщност математика.
Но ако искам да кажа, сумата на тази стойност плюс тази стойност се равнява това
друга стойност, колко много аргументи в общо трябва да се дава ФОРМАТ,
в крайна сметка?
Така четири, нали?
Този низ и след това трите стойности.
Така че х е първият Искам да бъда включен в първия до% г.
Y ще бъде следващата.
>> И сега нещо искам да кажа, Z, Z, но не съществува.
Но това не е голяма работа.
Защото какво би направил инстинктивно, особено ако сте имали
графики Калкулатор, какво сте?
Какво ще кажете за Х плюс Y?
Така че това не е действително променлива.
Това е просто сбор от две други променливи.
И това е напълно законно.
C със сигурност разбира прости аритметична така.
>> Точка и запетая, спаси.
Сега ме пусна тук и въведете направи ехидна, Enter.
Не грешка, така че това е напредък също.
Въведете ехидна.
И още една клавишна комбинация, Ако започнете да се отегчиш
с всички команди -
Ако започнете да въвеждате команда, като точка наклонена черта реклама, и това е, когато си
скуката ритници, обикновено можете да натиснете Tab за да имат на компютъра завърши
останалата част от фразата за вас, ако това не е двусмислени какво трябва да дойде след рекламата.
>> Така че позволете ми давай сега и щракнете върху Enter.
Дай ми едно цяло число, 1, 2, и За щастие, това е 3.
Но както винаги, тестване на програми не трябва да се намали до
Просто го пробват веднъж.
Нека се опитам корнер случай, като отрицателна 1, ми даде една, и че един
освобождава, както добре.
Вероятно и аз искам да направя някои по- строги тестове, но аз съм сигурен,
комфортно, където това е най.
>> Е, сега нека се опитаме друга програма че този път използва
малко други синтаксис.
Позволете ми да се създаде нов файл.
Ще се обадя на този conditions0.c да се подредят с някои онлайн примерен код.
И нека да вървим напред и да направим включват cs50.h, включват
stdio.h, в главната нищожен -
OK.
Ето.
Ние разполагаме със стандартен шаблон.
>> И този път аз ще кажа ФОРМАТ, "Бих искал едно цяло число, моля", само за да
направи бърз малко по-приятелски.
И сега искам да се получи INT от потребителя.
Отивам да го наричат ​​п този път, само защото п звучи като брой.
getint, а сега, това, което правя Искам да правя с него?
Е, ако п е - и аз ще я увеличите -
ако N е по-голяма от 0, искам да направите следното -
ФОРМАТ "Избрахте положително число." Иначе, аз отивам да въведете ФОРМАТ "Вие
качват отрицателно
номер. "Добре.
Така че тази програма, въпреки че аз съм го направил бързо, изглежда правото синтактично.
Нека да опитам това.
Направете състояние 0.
Изглежда, за да работи.
Състояние 0, въведете.
Да го даде на 50 вътр.
Взех положително число.
Нека опитаме отново.
Състояние 0.
Отрицателна 50.
Взех отрицателно число.
>> Но сега, позволете ми да взема това, което ние ще продължаваме да наричаш ъгъл случай, който е по-
интересен случай, че смятате, може да ви даде някои проблеми, 0.
Сега, аз съм сигурен, че това е една от тези ъглови случаите, когато е нула
положителен, нито отрицателен, така че моят програма, въпреки че в синтактично
коригира - той съставя, той работи - не е логично правилни.
Така че каква е обикновено определят тук, ако искам да се открие, ако искам да се справят с п
е равна на 0 поотделно?
>> Така че, ако N е равно на 0, а след това искам да кажа, нещо като ФОРМАТ "Избрали сте 0."
Нека се опитам това сега.
Нека да се върнем тук, изчистете прозореца ми, и прекомпилирате.
Hm.
Една грешка генерира.
Но аз искам да се провери ако N е равно на 0.
>> Така че отново, друга глупост да свикне, знак за равенство е
оператора за присвояване.
Така че това всъщност е грешка в това, че технически, въпреки че компилаторът
ме защитен от себе си, ние бихме технически бъдат копиране 0 в N, които
не е това, което искам.
Искам да се тества за равенство с равен с равни.
И така, че сега може да се окаже ми по-добро решение.
>> Нека действително запазете това като, да речем, conditions1, да бъде нова и подобрена.
Така че сега, ако компилирате това, би имало условия -
Опа - да conditions1 точка наклонена черта conditions1, Enter, "Бих искал едно цяло число,
моля те. "Аз ще отида напред и въведете 50.
Тя все още е добро.
Отрицателна 50, все още е добро.
0, и наистина, открити че взех 0.
>> И така, какво повече мога сега правя с това?
Е, със сигурност можем да направим повече сложни неща.
Но това, което бих искал да предложа е че ние приключи на тази бележка тук.
Ако спра това, ще видите, може би, любим анимационен филм на твоя
до днес може да имате никога не са разбрали.
И това е за качеството на смеха вие трябва да получите с вицове CS.
Така че това е за правото.
>> Но още по-атрактивен, мислех, че ще да ни даде малко закачка за понеделник.
Така че ние сме започнали да използват цели числа.
Ние сме по плувки.
Ние дори по двойки, , което още веднъж ви дам номера
след знака след десетичната запетая.
>> Но се оказва, че и плувки двойни, и, наистина, компютри,
фундаментално, не могат да изразят някои стойности точно.
Знаем от математика класове, които можете да имат произволен брой числа след
десетичната запетая.
И вие дори може да постави вертикална лента да се каже, това да продължи вечно.
>> За съжаление, наистина не може да направи това в компютъра.
И така, ъглови случаи възникват.
Да предположим, че сте прави нещо финансова.
Правиш математиката с проценти, и
с долари и центове.
И тези цента не непременно състава.
Е, оказва се, че фракции на пари могат да започнат да се добави, когато
моделирани с компютърна система по такъв начин, че умен
хората могат да се възползват.
>> И тези от вас, които не са видели, щях искал да ви дам 30-секунден тийзър на
прекрасен филм, известен като Office Space, което ще нарисува картина на
Проблемът, който трябва да се справи Първото нещо, което в понеделник.
Ако можехме да усилвате звука малко, аз ви давам 30
секунди на офис площи.
>> [VIDEO PLAYBACK]
>> -Искам да кажа, ти, ти не са показваща и ти се да запазиш работата си.
>> -Всъщност, аз съм се насърчава.
>> -Мога да програмирате вирус, който ще откъснете това място от голям време.
>> -Е, как става това?
>> -Всеки път, когато има банков превод където лихвата се изчислява, и там
хиляди на ден, компютърът завърши с тези части от процента.
>> -Но аз няма да правя нищо незаконно.
>> -Незаконно?
Samir, това е Америка.
>> -Трябва да Кълна се в Бога.
>> -Ако никой не знае за това но ни, нали?
Не са членове на семейството, без приятелки, никой.
>> -Разбира се.
>> -Съгласен съм.
>> -Не се притеснявай, човече.
Няма да кажа на никого от двамата.
>> [END възпроизвеждане на видео]
>> DAVID Malan: Така че това, тогава, е CS50, това беше Office Space, и всичко това ще се
смисъл в понеделник.
Ще се видим тогава.
>> Разказвач: На следващото CS50, Rob настройва за да бъде извън
Harvard план за хранене.