>> [За възпроизвеждане на музика]
>> ZAMYLA CHAN: Бихте ли скоро получават $ 10,00 милиона сега или получавате
пари всеки ден от месеца, когато е всеки следващ ден, получавате
двоен размер на пари ви получили в деня преди?
В пари, ние ще докаже защо трябва да
Определено вземат пари.
Вашата работа е да се напише pennies.c--
програма, която първо пита потребителя как много дни има в месеца и
след това пита колко пари на потребителя ще получат на първия ден.
Програмата след това трябва да се изчисли сумата, която потребителят ще трябва
натрупана в края на месеца и ще го покаже.
>> Ние може да разбие тази програма до в няколко задачи.
Ние ще трябва да се пита за множество данни от потребителя -
дни и месеци, и стотинките на първия ден.
Трябва да следите колко пари потребителят трябва и да го актуализира всеки
ден, удвояване на размера на пари, които получават.
И накрая, ние принтират крайна общо в долари.
>> Нека приноса на потребителите шпагат първи.
Отивам да се отворят apples.c, кратка програма, която се занимава
с входове и изходи.
На върха тук, сме включили някои на библиотеките, които трябва -
CS50 библиотека и стандартен I / O библиотека.
I отпечатате бързо с помощта на ФОРМАТ функция от
стандартна I / O библиотека.
Но действителната подтика на потребителя се случва в следващия ред с този
GetInt функция в библиотеката CS50.
>> GetInt получава информация от потребителя и гарантира, че на входа е цяло число.
Така че аз се съхранява въвеждане на потребителя в цяло число Аз, се изважда една от I, и след това
отпечатване на нова стойност, ако аз.
След събиране apples.c използва команда "направи ябълки," Имам
ябълки изпълним файл.
Спринт че, аз ще вход 1.
Програмата ми казва, че Имам 0 останали ябълки.
И така, който работи както се очаква.
>> Така че нека да тичам отново и въвеждане на отрицателен 1.
Сега, като отрицателна сума на ябълки не наистина да има смисъл, но
програмата го приема, защото отрицателно 1, и е цяло число.
И сега на програмата или на чудовището в рамките на програмата яде отрицателно
ябълка, и сега имам отрицателни две ябълки.
Хм, така че това е един урок -
въпреки че GetInt функция и функции, свързани с подобни GetFlow или
GetString получите правилния тип данни, трябва да се уверите, че на входа прави
чувство за вашата програма.
>> В пари, той няма да направи точно бърз за цяло число, ще трябва да се направи
уверите, че потребителските въвеждания цяло число че има смисъл като се има предвид контекста.
Месец може да има само 28, 29, 30 или 31 дни.
Искаме да изисква непрекъснато валиден число.
Ако входа цяло число извън нашата приетите граници, ще ги подтикне
отново и отново, докато не да ни даде валиден число.
>> Спомнете си "многократно, докато" блок в Scratch?
Можете да направите подобен конструкт в С с използване на "а" линия
или "направи, докато" линия.
Структурата линия, докато има състояние , които трябва да бъдат изпълнени за
тялото на цикъла да се изпълни.
>> Това би трябвало да изглежда малко по-сходни, защото състоянието е подобно на
Scratch блокове с ъглите и отива в скоби
на "а" примка.
Така че това условие ще провери дали числото е в рамките
съответните граници.
Можете да подтикне число използване GetInt и след това да си "а"
линия, повтаряща се на бързото и печат инструкции, докато на входа
не е валиден.
>> Друг начин да се гарантира правилното въвеждане от потребителя е с помощта на "направи-а" примка,
който е много подобен на линия, докато.
The "направи, докато" примка изпълнява код вътре в тялото и след това тези проверки
дали условието е изпълнено или не.
Това е полезно за получаване на приноса на потребителите, защото вие знаете, че имате нужда
да ги подтикне най-малко веднъж.
Ако условието не е изпълнено, програмата ще изпълни линия след
ви "направи, докато" линия.
Ако условието е изпълнено, обаче, на цикъл ще се повтаря
>> A "направи, докато" линия за валидиране на потребителя вход ще изглежда по следния начин.
Декларирам, променлива N, GetInt, и след това се повтаря, докато п е валиден.
И този процес, обясних, е използвал цялото число-тип данни, които
ще използвате за дните на месеца.
Но ние знаем, че броят на пари ще се трупат бързо, така че, за да се
запомнят по-големи числа, използвайте тип данни LongLong, но не забравяйте, същото
принципа на валидиране се прилага.
>> Awesome, така че щом имаме две валидни суровини от страна на потребителя -
дни в месеца и стотинките на първия ден -
ние може да преминете към следващата част от програмата.
Първият ден, потребителят започва с обаче много пари те посочени
и сумата от пари, че те получават на следващия ден се удвоява.
Така че има смисъл, за да следите от тези две суми -
колко пари потребителят трябва и как много пари, че ще се обърне.
>> Сега, прави нещо в продължение на 28 до 31 дни е повтаряща се, така че нека да се използва "за"
линия, за да превъртате през ден в месеца, актуализиране на общия и стотинка
възлиза всеки път.
"За" примка синтаксис съдържа следното -
инициализация, условие, и актуализация.
Вие "за" линия ще се инициализира променлива, когато
първо започва цикъла.
Ако условието е изпълнено, тялото на цикъла ще се изпълни.
След това, актуализацията ще се изпълни.
Ако състоянието е все още изпълнени, линия ще изпълни и актуализира, и
Повтарям, толкова дълго, колкото Ви състояние Проверява.
>> Ето един "за" линия, която разделя на цяло число от 2 стр. общо 10 пъти.
Забележете как се обявява число стр. извън моя "за" линия, така че
число може да бъде достъпна извън "за" линия.
След месец е преминал, е време да съобщите на потребителя, колко пари
те сте придобили.
Per спецификацията, трябва да съобщите на потребителя колко долара, а не колко
пари, които имат.
Но до този момент, вие сте следили на общо и пари използващи LongLongs,
които са цели числа.
>> Има 100 пари до $ 1, така че освен ако броят на пари е
кратно на 100, ще трябва да представляват знака след десетичната запетая.
The удвои автотипия позволява можете да направите това.
И как ще се превърне в гол от представляващи пари на долара?
>> Нека да разгледаме pi.c.
Тази програма отнема LongLong big_pi и разделя го на 100 000, и отпечатва
резултат до пет знака след десетичната запетая.
Ако искахме да се покаже четири знака след десетичната места, тогава може просто да замени настоящия
номер тук.
Така че нека да спести, съставяне пи, и После ще видиш резултат, който ние
Очакваме да бъдете 3.1415 -
първите пет цифри от PI.
>> Не е все пак.
И защо?
Ами, защото big_pi е LongLong, която е цяло число, което няма да
да следите знака след десетичната запетая.
Промяната трябва да да е в разделянето.
Трябва да се хвърли към двоен тук преди разделяне, тъй двойки не могат да
следите на знака след десетичната запетая.
И аз отивам да добавите нов ред тук за по-добро форматиране.
>> И тук ние я имаме -
3.1416.
Може да забележите, че той печата 3.1416 вместо 3,1415, както се очаква.
Това е, защото по време на кръга делене, а не само
отрязване на стойността.
Сега би трябвало да можете да отпечатате крайната обща правилно, което завършва
програмата.
>> Поздравления.
Моето име е Zamyla.
И това е пари.
>> [За възпроизвеждане на музика]