[За възпроизвеждане на музика] JASON Hirschhorn: OK, всички. Добре дошли в раздел. Това е CS50, ни много Първият супер раздел. Както всички знаете, през следващата седмица редовни секции ще започнат, но тази седмица всички сме заедно. Има себе си. Моето име е Джейсън. Аз съм преподавател по компютърни науки. Имаме Andi, който е ръководител на екипа за техническа помощ CS50. И Scaz, професор Брайън Scassellati, той е професор по компютърни науки. Ние сме най-CS50 главите в Йейл. Винаги можете да пишете ни heads@cs50.yale.edu. Ние ще бъдем в лекциите. Ще бъдете в работно време. Ако има нещо, което можем някога направя за вас, всичко, което трябва, Чувствайте се свободни да се достигне до нас. И така, какво ще правим днес? Или преди това, какво е идва тази седмица? Така че работното време е от понеделник, вторник, Сряда и четвъртък, 8:00-11:00. Има график на уебсайта. Секции, като споменах, започват следващата седмица. И вие ще разберете какво тази седмица времето си точка е, какъв ден е, и кой ви е TA. Проблем Set 1 се дължи в четвъртък в обяд, петък по обяд с края на деня. Да, имате девет късните дни. И там са девет проблемни комплекти. И може да използва само един края на ден за проблем набор. Да, в смисъл, всичко проблем набори се дължат петък по обяд. Това е всичко. Всичко, което детайли са на учебната програма. Всеки петък, имаме обяд. Ние обичаме да се направи тази голяма Разбира се чувствам малко по-малък. Значи вие сте добре дошли да RSVP. Безплатен обяд с колегите съученици и персонал. cs50.yale.edu/rsvp. Всички тези неща, които Имам на екрана, и повече, можете да намерите cs50.yale.edu или cs50.harvard.edu, ако отидете в Харвард и гледате този онлайн. Също така на тези сайтове, там един тон на ресурси за вас. Всяка лекция има не само видеото на лекцията, но също така отбелязва. Някой ще гледате лекции и да си водите бележки за вас. Така че може просто да плащат внимание по време на лекции, или можете да използвате своите бележки / ни отбелязва, да допълнят собствените си бележки. Има пързалки онлайн. Източникът code-- всичко David преминава в лекция, или Scaz преминава лекция, че изходния код е достъпен онлайн както и, тъй като, както аз, споменато видеоклипове. Секции, също така, всички ще бъдат заснети. Всички тези слайдове ще бъде на разположение. Всичко това кодът ще да бъде на разположение за вас. Има шорти на интернет страницата, където Членове на персонала CS50 прекарват пет до 10 та става чрез теми за вас. Някои от тези, които вече сте срещани в проблемните комплекти. Работно време, както споменах, понеделник чрез четвъртък, 8:00 часа до 11:00 часа. CS50 Study е фантастичен ресурс. Има проблеми практика, примерни пързалки, известни бъгове че учениците обичат да тичам в, за всяка тема по същество ние ще покрива в този курс. И накрая, на този слайд най-малко, Reference50 която ви дава информация на всички функции C можеш да си вероятно се надяваме за използване и много, много повече. Отново, че Дот точка точка в дъното на екрана е да покаже, че има дори повече ресурси за тези два сайта: cs50.yale.edu, cs50.harvard.edu. И така, какво ще правим днес? Ами, първо аз ще дам погледнете ресурсите. Вече направих това. Погледни ни. Сега, ние ще отидем типове данни и оператори в C. Тогава Andi ще дойде тук и разясни библиотеки в C, ФОРМАТ (), функция, с която вече сте познати или бързо ще стане много познато. И вие също така ще разясни условни и примки. И накрая, Scaz ще отидем ID на CS50. Ако не сте се гмурна в вече във Проблем Set 1, както и как да се използва терминални и полезни команди и след това да ви дам някои демонстрации и кодиране практика в ID на CS50. Преди да скочи в към настоящия съдържанието на тази страна, Дали някой има някакви въпроси досега? Страхотен. ДОБРЕ. Смяна на предавките. [Смяна на предавките] Това беше ме измества съоръжения в наръчник кола. Така типове данни в C, не може просто да има променлива х и той да бъде на линия 10, цяло число, може би номер 1, по линия 20, десетична стойност 10.5, и след няколко линии късно низ, обичам CS50. В C, променливи могат да бъдат само едно нещо, и само едно нещо. И така, вие трябва да ги даде видове. И в този борд, ние има списък на видовете. Има символи, които престои знака. Така че това е една буква A, B, C, D. Това също може да бъде пространство, или които могат да бъдат нова линия характер. Има цели числа, които са само числа, цели числа или numbers-- rather-- но не и десетични дроби. За знака след десетичната запетая, имаме числа с плаваща запетая. Числа с плаваща запетая са числа с десетични дроби. Тогава там са копнее, които са същество дълги числа. Ще забележите, че дълго е 8 има предвид, че едно цяло число е 4. Ще стигнем и до това в секунда. Това е, защото копнее да съхранявате още повече числа, отколкото едно цяло число може да се съхранява. Двойна е дълъг плувка. И накрая, ние имаме низ, който е вид че вероятно сте използвали преди това. Ако включите таг # includeCS50.h във вашия файл с изходен код, След това можете да използвате тип низ. Това не е реално, вградена в C. Има няколко други видове, както и. Но това са основните тези с които ще използвате и се сблъскват. C като, отново споменах, всеки го variable-- може да бъде само един вид и само един вид. Това е, защото C е статично напечатан език, за разлика за динамично напечатани езици където ако създадете променлива можете да промените това, което се съхранява в то като отидеш във вашата програма. Над тук на дясната ръка страна, имам различните размери на тези видове данни в байтове. Така че знакът е 1 байт. Това е 8 бита. А това означава, защото 8 бита има осем 0s и 1S. Видяхме тези демонстрации в първата седмица с това, че двоични крушки. С 8 бита или 1 байт, което можем представляват номера 0-255. Право. Ако всички 8 бита са 0, че е 0. Ако първият бит е 1, това е броя един, и така нататък, по целия път до 255. И ето защо за героите можете да имат по същество до 255 от тях, но това е много за покриване на всички героите, които трябва да се използват. За числа, можете да имате 0 и След това имате 2 до 32 минус 1. Това са колко много възможности имате за цели числа. За дълго, имате 0 от 2 до 64 минус 1. Така че ще трябва много, много, повече възможности за копнее. Strings, това е под въпрос защото това е Катерачът за по-късно. Да. Мога да кажа на всички е на ръба на мястото си, като това, което е, че въпросната марка? Това е Катерачът. В крайна сметка ще покрие размера на струни и да говорят повече за струни. Защото всъщност е низ едно от колелата на обучение ще се постави върху по този Разбира се в началото и след това да се свали по-късно нататък, защото низове в C са всъщност Указатели да символни масиви. Но отново, това е Катерачът за по-късно. Преди да се премести по всякакви въпроси, коментари, се отнася за този кадър? ДОБРЕ. Аз трябва да съм фантастична Explainer. Също така, когато сте програмиране, започваш да се използват тези оператори. Наистина прости признаци, че може да направи проста операции, с които вие вероятно Вече много запознат. Така например, в дясно дясната страна, ние виждаме, добавете. За да добавите, просто правя знак плюс. И така може да се наложи две променливи х и у. Можете да направите х + у в кода си. Може би искате to-- казваш имаме номера 7 и 3, искате да съхранявате, че в променлива наречена сума а. Можете да направите инт за тип, пространство Накратко, наименование на променливата, = 7 + 3; Какво би този магазин в сума? Някой? Ако имах в сума = 7 + 3. Какво щеше да се съхранява в сума? Можете просто да го вика. АУДИТОРИЯ: 10. JASON Hirschhorn: 10! Това е точно така. Ами в сума = 7-3, Аз просто използвам, че пробив знак. Какво се случва, за да се съхранява? АУДИТОРИЯ: 4. JASON Hirschhorn: 4. Sum вероятно е грешно име за тази променлива, но 4 ще се съхранява. За да се размножава в C, използвайте малкото, Star характер, не е нужно да използвате х. За да се разделят, да се използва Forward Не Слаш символа дивизия. И да по модул, използвайте символа Percent. Така че нека да кажа, че искам да видя инт г = 7% 3, което ще се съхраняват в Z? Така че, това е по същество пита какво прави по модул направя? Някой знае ли какво прави по модул? Да. у 4. SPEAKER 1: Това е остатъка. JASON Hirschhorn: Това е най- остатък, когато се разделят. Така 7, разделена на 3 е 2 остатък 1. Така един ще се съхранява. Справи изваждане, но това е как тя работи. Това е, което операторът на модул прави. Това отнема няколко го дели от друг номер и се връща към вас остатъка. Така че отново, 7% 3 дава 1, защото 7, разделена на 3 е 2 остатък 1, и връща остатъка. Ами нека се върнем до една стъпка към това разделение знак. Ако го бях направил 7 /, разделена на 3 прави Някой знае ли какво е това ще се върне? SPEAKER 2: 2. JASON Hirschhorn: Защо 2 и не 2,333? SPEAKER 2: Мисля, че това намалява изключва след като цяло число. JASON Hirschhorn: Значи това е точно така. В C, ако го направите разделение на две числа 7 разделени с 3, той получава отговорът, който в този случай 2.3333 завинаги и установи, че десетична запетая и пържоли всичко изключва след десетичната и то просто ви връща 2. Така че, ако аз го направих 8 разделена на три. Това всъщност, ние знаем, че за да се върнете 2.666, но пържоли всичко започва в десетичната, всичко отрязъци, и просто се връща към вас 2. Така 6 разделена на 3, 7 разделен с 3, 8, разделена на 3, всички ще се върне при вас 2. Някой знае ли, или да има предположение, за това, как бих могъл да се получи в действителност пълния отговор, ако искам, че десетични? Да. Продължавай. SPEAKER 3: Използвайте плувка? JASON Hirschhorn: Какво искаш да кажеш? SPEAKER 3: Понеже ти каза плувка е за номера [недоловим] JASON Hirschhorn: Точно така. Така че, това е точно така. 7 е цяло число. Но ако аз исках да се обърнат, че в брой с плаваща запетая, Аз ще трябва да се съхранява, че като 7.0 защото компютъра е наистина stupid-- видяхме, че с example-- PB и J той ще направи това само точно това, което той каже. Така че, ако ти пиша 7, то мисля, че е цяло число. Ако напишете 7.0, въпреки че ние знаете тези неща са еквивалентни, тя се отнася, че като плаваща запетая номер. Така че, ако си направил 7.0 разделена с 3, или разделен от 3.0, тя ще каже, OK, сега имаме работа с поплавъци. Аз ще се върна при вас 2.333333 завинаги. Но наистина не завинаги, защото както видяхме и в лекция, тези числа с плаваща запетая не са точно точна. Така че, ако искате това десетични, или част от които десетични, тогава ще трябва да use-- един от тях трябва да е число с плаваща точка и компютърът трябва да разбере, че това е плаваща запетая сте занимаващи се с, не е цяло число. Всякакви въпроси относно тази таблица за отдясно, досега? Или лявата си страна, си наляво, лявата си страна. Да. SPEAKER 4: Точно така. За точно като редовен числа, бихте write-- ще трябва да напишете плува? JASON Hirschhorn: Да, така. Е, ако искате да създадете променлива, която е с плаваща запетая, което трябва да се каже, флоат Z е равно на нещо. SPEAKER 4: OK. JASON Hirschhorn: Но ако исках да направя 7, разделено на 3 и се получи, че десетични, Аз ще направя плувка г = 7.0 / с 3.0; и че ще ми даде плаваща запетая номер. SPEAKER 4: OK. JASON Hirschhorn: Ако го бях направил нещо като инт г = 7 / с 3, че ще ми даде едно цяло число, защото това са всички числа. Това прави ли смисъл? SPEAKER 4: Да. JASON Hirschhorn: OK. Страхотен. Всякакви други въпроси за тази таблица? Вярно ли? Толкова съм развълнуван. ДОБРЕ. Така някои други неща, които ще използвате, често в условия или примки, са тези видове operators-- тези видове булеви изрази. И както научихме, == е това, което използвате, за да се провери дали двете неща са равни. Така че тук аз съм проверка, ако х == у, нека отново се предположи, че х е 7, а у е 3. Така че, ако съм написал 7 == 3, какво ще се върне, че за мен? Истина или лъжа ли е това? АУДИТОРИЯ: False. JASON Hirschhorn: OK. Имам чувството, че всеки може да се получи това. Така че всеки, какво ще се върне, че? АУДИТОРИЯ: False. JASON Hirschhorn: False. Страхотен. 7 не равно 3. Така 7 == 3 ще се върне фалшиви. Вие нямате не знак за равенство на, така че, ако проверените 7! = 3, какво щеше да се върне, че? АУДИТОРИЯ: True. JASON Hirschhorn: True. Отлично. Някой беше много категоричен в гърба и оценявам това. След това имате по-малко от оператор, по-малко от или равно на оператор, по-голяма от оператор, по- от или равно на оператор. Така че още една проверка здрав разум. Ако имах 7 е по-голяма от или равно на 3. Какво ще се върне? АУДИТОРИЯ: True. JASON Hirschhorn: True. Да. Това задна стая, задна страна на стаята, фантастично. Можете да комбинирате тези изрази, ако ви харесва, както и, с логическа И което е && Или логически ИЛИ което е || ||. И така, сега можете да тествате две неща together-- смешно ли е това? Защо това е смешно? Така че, ако аз исках, което мога да кажа е 7 по-голяма от 3 и 2 е по-малко от 4? Е, ако 7 е по-голяма от 3, това е вярно. 2 е по-малко от 4, това е вярно. Така че цялото това нещо ще се върне вярно. Ако бях тестван 7 е по-голяма от 3 and-- Аз съм просто бране на случайни числа here-- 4 е по-малко от 2, добре, това е фалшива. Така истина и лъжа изработка фалшива. И вие можете да отида и да комбинирате като много условия, заедно, както бихте искали. Дали някой има някакви въпроси, коментари, се отнася до този момент? И виждам някои от вас да правите снимки на мен в екрана, което аз оценявам. Надяваме се, че това не е Snapchat. Надяваме се, че това е за вашите бележки. Но всичко това ще да бъде на разположение онлайн. Така че не е нужно да правите снимки на това. Както споменах, всичко ще бъде на разположение онлайн за вас. ДОБРЕ. Аз съм за да получите сцената, така че няма никого искам да казвам нищо преди това се случи? Въпроси? [Вмъкване VOICES] JASON Hirschhorn: О, да спре. Вие, момчета, сте твърде хубаво. ДОБРЕ. Отивам да маркирате навън. Да тръгваме. АНДИ Пенг: Отиваме да направим неудобно микрофон промяна сега. JASON Hirschhorn: Аз съм Ще се възползвам от тази на разстояние. АНДИ Пенг: Оценявам подкрепата, момчета. Чуваш ли ме? Добро ли е това? Perfect. Красив. Нека само да завия, че инча ДОБРЕ. Така че, аз съм на път да направя като гигантски информация зареже за вас, момчета точно сега. И не се тревожете каквато Ако сте Не след всяко малко линия на това, което Аз съм за да ви покажа. Както каза Джейсън, всичко е напълно онлайн. Само ние ще се опитаме да представим всеки да концепциите обхваната В някои от тези слайдове. Така че просто следват заедно. Не се тревожете, ако не разбират всичко; обаче, ако във всяка точка да се чувстваш изгубен, вдигнете ръката, ще спрем, не се безпокойте. Готино. Затова мисля, че нещо, което Дейвид има Вече вид споменато в лекция и Джейсън е вид намекнато до днес, е това, което е една библиотека. Така че в програмирането, имаме тези неща, наречени библиотеки. Къде, по същество, всички те са просто съвкупност на функции, т.е. по същество това е просто код вече е била написана от някой друг, че всички ние можем да използва в рамките на нашите програми. И така, как един нормален библиотечното дело, нали? Можете да въведете вратата на библиотеката. Вие имате всички тези книги можете да извадя и можете да получите достъп до информация в рамките на тези книги. Същото е и в програмирането. Имате библиотека, която вече е са написани от други хора. И начинът, по който можете, като програмист или студент, могат да получат достъп до тази библиотека е чрез таг # включват. Например, в C ние има три C-- максимума често се използва три стандартната C libraries-- на вход / изход библиотеката, струнния библиотеката, и математика библиотеката. Така в рамките на първата си Няколко проблем комплекти, тези, които ще бъдат тримата че можете да започнете първо място се използват. Така че, както вече David обяснено в лекция, стандартната I / O библиотека, или стандартния вход / изход библиотека прави точно това. Тя дава възможност, в кода си, за да въведете нищо от потребителя и на изхода, че на екрана, по същество отпечатването на екрана. И така всеки път, когато използвате всички функции, например ФОРМАТ функция (), които ние ще отидем на следващия слайд, се уверете, че да се включи стандарта I / O библиотека или друго, което няма да можете да използвате функцията за ФОРМАТ (). Защото вие, като програмист всъщност никога не е написал тази функция, ти си просто някой, използвайки Код друг в рамките на собствения си код. Това прави ли смисъл всички? Готино. И тогава ние по същество се върху библиотеката string.h и math.h библиотека, .h просто означава, библиотека, други библиотеки, че ще в крайна сметка да се използва в рамките на кода си. Въпреки това, за целите на на тази библиотека, ние have-- на този class-- ние също имаме това, което се нарича библиотеката CS50, cs50.h, където можем, за вашия прочит създадохме много важни и полезни функции. Така, че вие ​​като програмист може да стъпи това, което вече съм писал, така че тази функция е достъпна за вас за ваша употреба. Ще бъде обхващаща няколко функциите обикновено се използват, но знам, че това са всички googleable онлайн. Чувствайте се свободни, дръпнете нагоре CS50 библиотеката и тогава ще трябва всички функции там. Да. SPEAKER 5: Така че, ако не сте били помощта на софтуера, е предоставена ни от класа, прави това означава, че ние ще трябва да изтеглите и да намерят тази глава подаде себе си и кажете компютъра къде е тя? АНДИ Пенг: Great въпрос. Точно. Така че това е като, ако не сте присъства физически в библиотека, няма начин за вас да всъщност отидете и да получите достъп до него. Така че едно и също нещо с програмиране в C, можете трябва да се уверите, че използвате нашата уред, защото библиотеката е вече са включени в него. И тогава, когато таг # включват, на библиотеката там. Да. Добър въпрос. Всеки добър? Готино. Всичко е наред. Така че отиваме да се удари, същество, което е че първата функция Ние като програмисти са ще бъде с помощта в рамките на нашия код. Това се нарича () функцията ФОРМАТ. Така че, ФОРМАТ () функция, както съм Вече казах, в последния слайд, е включена в стандартната I / O, стандартния вход / изход, библиотека. Така че се уверете, че каквото и да using-- О, да ме вземеш, лазерът pointer-- всеки път, когато използвате () функцията ФОРМАТ, което трябва да включва стандарта I / O библиотека или друго, когато се съберат, започваш да получите съобщение за грешка защото компютърът ще бъде като, О, аз не знам къде ФОРМАТ () е, ти не ми казваш къде ФОРМАТ () е. Ами ФОРМАТ () е включена в стандартна I / O, така че, когато използвате ФОРМАТ (), уверете се, че да има Линия над кода си. Така например, ФОРМАТ () тук е функция. Всичко, което прави е да изписва нещо в скобите на потребителя. Бихте ли някой искал да се възползвам прободна в това, което този ред код полето Тук ще се разпечатва? Следователно, отговорът е на екрана. Някой? ВЕРДИ: Дъното. АНДИ Пенг: Verdi, защо не отидеш напред и да се каже, че целият отчет? ВЕРДИ: Здравейте, моето име е Andi, и аз съм на 20 години. АНДИ Пенг: Ах, прекрасно. Така че в този ред ние ще разпечатате, Здравейте, моето име е Анди, и аз съм на 20 години, които в действителност е вярно твърдение. Синтаксис. Така няколко синтактични въпроси, които вие искате да се уверете, че знаете. Цитати. Двойни кавички разкаже компютър, че всичко вътре ще бъде отпечатана. Всичко във вътрешността консерва просто бъдете точно как сте го написали, с изключение на обикновено в края, ние ще искате да включите а hash-- о sorry-- пробив п. Така пробив п. Някой иска да вземе предположение в това, което прави в нашия код, който? Да. SPEAKER 6: го слага на нов ред. АНДИ Пенг: Точно така. Така че всичко това прави е позволи каквото и да става След това, след това изявление, да бъде отпечатан на нов ред. Така че, когато пишете си код не случайно има неща, достига чак на края че вие ​​не искате. Че всичко получава спретнато отпечатан един ред и след това да започнем по следния ред. Дали някой си спомня какво, че запетая прави, когато сме кодиране? Да. SPEAKER 7: резюме. АНДИ Пенг: Съжаляваме? SPEAKER 7: Има ли го сложи край на изложението? АНДИ Пенг: Да. Така в С, или програмиране език, точка и запетая обозначава края на програмния ред. Така например, на английски език, които използваме период да се каже, о, това е краят на присъда. В програмирането, едно и също нещо, ние имаме точка и запетая, за да се обозначи края на реда. Много пъти, когато сте започва да се програмира, вие ще осъзнаете забравяйте да добавите точка и запетая и след това да се опитате да стартирате код и тя не работи. И вие сте като, Ах, аз не правя знам защо, трябва да се работи. Шансовете са, най-вероятно е забравил за точка и запетая или скоба или нещо някъде. Така че, това е важно да се помни. Готино. Добре, вдигане на ръка, как много хора тук имат някога взети AP Computer Science или програмиран в Java и преди, някога? ДОБРЕ. Lovely. Това няма да е приложимо след това, но в Java, можете има нещо, наречено System.out.println който не съществува в C. Така че в C, когато искате да добавите в променливи в нещо, което искате да разпечатате, има специфичен синтаксис ние ще използваме. Това се нарича placeholding-- същество ние добавяме контейнери на място на цяло число или променлива че искаме да отпечатате. Така че, както вие може да видите сме включили нова глава библиотека файл тук. Библиотеката за CS50. И, съдържаща се в рамките на тази CS50 библиотека е обща функция ние ще се използва в нашия курс, наречен GetInt (). Някой може ли да искате да се вземат пробождане в това, което евентуално може да се прави GetInt (). АУДИТОРИЯ: [недоловим] АНДИ Пенг: Съжалявам. Не може да ви чува. Мади, никого. Мади: О, това подсказва ви за цяло число. АНДИ Пенг: Точно така. Така че тази функция, друга функция, която вече е написана от някой друг че можем да призоваваме сега. Всичко това е е да подтикне вас, потребителя, за въвеждане на каквото си искате, както кода работи и да го съхранява whatever-- в този случай ние сме GetInt () - позиция, така че това означава, че сме получаване на цяло число. И ние ще се съхранява че в друга число че ние току-що направена нарича възраст. Които имат смисъл за всички? Готино. Така че сега, че сме се съхранява това число, че сме подкана от страна на потребителя, в тази променлива, ние сме създаден от тип INT нарича възраст, можем да вървим напред и място че в нашата ФОРМАТ () функцията. Така че синтаксиса обикновено за ФОРМАТ () е че където и в действителност физическото си Онлайн искате да включите, че число, направите това символ точно там, Символът на процента, с Тип на променлива, която искате. Така че в този случай възрастта е цяло число. Така че ти започваш да се включи % аз, защото това е цяло число. И тогава, след като си Декларация, ти започваш За да направите запетая, а Име на променливата. Така че тук, ние ще отпечата вън, Здравейте, моето име е Анди, и аз съм празни години. Hashta-- или, sorry--, възраст с каквото мога вход. Така че ако трябва да вход 20 за моя GetInt () тук, той ще отпечата точно същото нещо. Но, ако исках да въведете нещо друго, като може би 40 или 45, тогава ще се види, че е отразено съответно в кода. Така че това е пример на нещо, в което той отпечатва и изглежда да вие като че ли е едно и също нещо, но под капака на компютъра всъщност има много различни неща, които се случват. Готино. Всичко е наред. И какво от това, ако искаме множество променливи? Доста лесно. Същото. Ние също имаме нова функция тук нарича GetString (), Също така са включени в библиотеката CS50, че всичко, което прави е да подтикне потребителя за низ, който е просто набор от символи, така като присъда или подобно име. Така че в този случай, ние ще имаме две контейнери% S за струнен и аз% за число. И ние ще следваме че от двете променливи Искаме включени в реда че те се появяват в изречението. Така например, името ми е празно, искам име там, така че аз отивам да носят името на първо място. И тогава след това, което искам възраст, искам да имам възраст секунда. И така, ако исках да вход, Hello, Моето име Andi, и аз съм на 20 години. Ако въведеният Andi и 20 г. точно същото нещо ще отпечата; Въпреки това, сега ние имаме две съхранява променливи на име, както и Int. Да. SPEAKER 8: Ще бъде ли може да се движи, ако е включен име и възраст в края на това? АНДИ Пенг: Да. Това е наистина добър въпрос. Така дълга история кратко, не. Тъй име и age-- какво тип променлива е името? SPEAKER 8: String. АНДИ Пенг: И това, което тип променлива е възрастта? SPEAKER 8: Integer. АНДИ Пенг: Така че тук имаме контейнер за струнен и число, нали? Така че, ако ви се налага да превключвате тях, компютърът няма да знаем. Това ще провери за низ, и ако се опитате да го дам едно цяло число, това ще бъде като изчакайте аз съм объркан, вие ми каза, че трябва да бъде разпределяне на паметта за инт. И точно тук, когато че очаква цяло число и ти го дадете име и низ вместо това, тя също щеше да бъде много объркващо, то няма да се изпълняват точно по начина, имате нужда от него. Така че тук, именуване и синтаксис е много важно за тичане код. Всеки добър? Да. Мади. Мади: Ето, аз знам, след като видяхме най примери в клас, където те попитам каква е вашата възраст, какво е вашето име. Ето, че би било то doesn't-- ако бяхме да тече този код, той не ще поиска за това? Но бихте направили само на входните две числа и след това ще тече по този начин? АНДИ Пенг: Да, точно така. Така че, ако искате тя да дисплей, моля въведете вашия възраст, можете просто да добавите ФОРМАТ () функция който казва, Моля, въведете вашия възраст, над него. Това е добър въпрос. Да. SPEAKER 9: Така че, вече ще бъде включени в GetInt () [недоловим]. АНДИ Пенг: Не, това всъщност не е така. Така че всичко това прави е просто подканва празен екран на потребителя да въведе нещо. Ако го искате, ако искате да го да отпечатате нещо, което казва на потребителя харесват, моля да ми дадете вашата възраст, а след това ще трябва да ФОРМАТ (), които сами. Защото всеки използва този функция за различни неща, бихте могли да съхранявате г. бихте могли да съхранявате адрес, бихте могли да съхранявате телефонни номера. И така, това е наистина до индивидуалните нужди на вашите момчета " за това, което искате да кажете. Да. SPEAKER 10: Така, само за да се изясни, когато което правите вход името и възрастта така че тя да се появи на мястото на% ите? АНДИ Пенг: Както във потребителя? SPEAKER 10: Да, като например как да направя направи it-- къде сложих Andi, и къде мога да прехвърля 20? АНДИ Пенг: Да. Така че, ако ви се налага да всъщност тече този код, Аз не съм действително надпреварата на код, това е само тук, точно сега. Ако аз трябваше да тичам кода, бих компилирате кода, направи файла, тичам кода и след това има би да бъде само две помещения за мен да го вход. Да. Вие, момчета, ще видите, когато играеш наоколо с кода си. Добре отиваме да се движат в следващия раздел на какво ние ще се обхващаща днес. Отиваме да разясни какво условни конструкции са. Така че, ако вие си спомнят и извикайте от лекция, условни конструкции, всички те са са набор на инструкции на компютъра в които, ако дадено условие е вярно, изпълните кода вътрешността на това условие. Така че в Scratch-- същество голямата тема от днес е, че вие ​​имате вече всички виждал логиката зад всичко че ние сме покриваща. И всичко, което правим, е превода нещо това беше много интуитивен в Scratch, и е трудно за кодиране в синтаксиса ние ще се използва за класа, която е C. Така логично, всичко това беше блок е, че част от кода точно там. Да. ДОБРЕ. Ние също така се получи в един друг, ако ... изявление, което е само едно допълнително слой на сложност на, ако изявлението когато компютърът се погледнете в тази и вижда, ако това условие е вярно, направете каквото и да е вътре в тези две конзоли, else-- така един вид като по подразбиране, ако тя не отговаря на condition-- направите това. Това е като разклонение на пътя. Ако навън вали, сложих на дъжд яке, друго нищо иначе аз не се облича с дъжд яке. Дали тази логика да има смисъл за всички? Готино. Всичко е наред. Така че като твърд пример за това, което искаме да видим в C е, ако исках да се създаде променливи, наречени домашни часа. И ако домашните часа е по-малко от пет, казвам Животът е страхотно. Прекрасен е. Въпреки това, казват Борбата е real-- което е това, което всички ние в този понеделник следобед до Science Hill са Вероятно прави дясната now-- АУДИТОРИЯ: [сайта] АНДИ Пенг: Те начин ние би, благодаря ти за това. Начинът, по който бихме hardcode това в C е if-- нека приемем, вече имаме променлива от тип инт нарича домашна часа точно тук. Ако домашните часа е по-малко от пет ФОРМАТ (), Животът е чудесен. Запомни пазят / п, защото искате нов ред след това. Else печат, Борбата е реално. Всички ли се разбере как I прехвърлен от този блок в този блок от код? Готино. Всичко е наред. Така че сега ние ще да разгледаме най- множество отчети, ако напълно. Така че нека да поеме целта на тази програма Беше ни напомни на потребителя за клас. Ние подкани с помощта GetInt () за клас, и те въвеждане на стойност, и искате да покажете какъв тип клас те имам. Така че ако трябва да се изработи програма, I означава обикновено във всички очите ни, 90-100 е А, 80-90 е В, и така нататък и така нататък. Какво не е наред с този парче код, че не е правя това, което искате да направите. Да. SPEAKER 11: Те имат по-ниски граници, но те не разполагат с горни граници. АНДИ Пенг: Точно така. Знаете всички чуя какво каза тя? Там ще бъде горната граници, но не по-ниски граници. Съжаляваме, друг начин наоколо, по-ниски граници, никакви горни граници. Така че бихте искали да отнеме хладно оръжие при казвайки какво ще бъде отпечатана на този екран ако аз трябваше да изпълня този код. SPEAKER 11: Една грешка? АНДИ Пенг: Една грешка? Great предположение, не е съвсем прав. Дали някой има друго хладно оръжие? Да, Аарон. ААРОН: Ако сложите в нещо повече от 90, това ще покаже всички степени имаш. Тя ще ви покаже получих A, имаш B, имаш C. АНДИ Пенг: Да. Това е точно така. Така че, това ще бъде чудесно. Въпреки това, те са взаимно изключителен, мисля. Ако аз да стартирате тази част от кода. И тогава нека просто кажем, I въведена длъжността на 95. Така 95 сега се съхранява в на INT наречения клас. И така, C е език която работи до горе до долу, така че ще винаги тичам до дъното. Така то се случва да дойде тук, прочетете, ако степен е по-голямо от или равно на 90, ФОРМАТ (), която получих от A. Great, I имаме 95, което е по-голямо от 90. Това ще отпечата, Имам А. Това ще да вземе един поглед на това, ако то се случва казват, добре 95 също е по-голяма от 80, то се случва да отпечатате можете също имам Got Б удивителен знак, и така нататък и така нататък. Така че, както всички ние можем да видим, това е често срещана грешка които могат да възникнат, когато сме пишете код, за да се грижа за. Всеки, на всички въпроси по защо това се случва? Страхотен. ДОБРЕ. И как ще се определи това, очевидно е логичната следваща въпрос. Е, ние имаме тези красиви неща, наречени ако друго, ако другаде ако друг отчети. Така че можете да видите, ако искате да се промени този проблем, което искаше да направи всеки от условия взаимно изключващи се, бихте добавяте друго ... ако изявление. И тези от course-- мисля за тях, както стълби, или като стъпала на ladder-- можете да добавите като много от тях, колкото Искам толкова много условия, както искате. Така че тук, ако бях въведена клас да бъде 95. Ако степен е по-голяма от 95, ФОРМАТ (), аз имам една A. Great. Това ще видите един друг ... ако и то се случва да знам, О, не, Аз вече изпълнен първият друго. I know-- или първото if-- Знам, че Не трябва да гледаме на всеки от тях защото едно от тях вече е било вярно. Така, че ще ходи да тече от горе надолу. Веднага след като първият е вярно, тогава то се случва да пропуснете всички останали от друго ... ИС. Това прави ли смисъл? Така че, по този начин имате различни нива на проверка и веднага след като един от тях не е верен, почивка също, те дори няма да се покажат. Готино. Всичко е наред. Така че това е пример за различен нещо като условен израз ние виждаме по-рядко, но ще ги видим и да ги използват. И те са често по- ефективно за някои случаи. Така че ние имаме това, което се нарича изявление ключ. Така че, преди да обхванат това, което е останало от отчети, ако ... друго изявление. Ето, ние имаме това, което са нарича превключване отчети. Така че, когато ние използваме превключвател отчети е ключът? Така че в изявление превключвател, Ви Обикновено, обикновено, всъщност ви Мога само входни числа за вашия променлива, която можете да започнете проверка. Така че, ако аз исках да се провери, за да видите ако даден number-- например един клас, ако аз имам 90. Искам тя да се види дали това е А, B или C. I може да има случай тук. Въпреки това, по делото има да бъде друг постоянно. Така че в този смисъл, Декларация за превключване може само проверка за равенство на две числа. Тя не проверява за нищо друго. Така че това е нещо, което да бъде много внимателни на, когато използвате този. Така че тук, ако исках да се провери, за да видите ако ми клас на 90 е равно на 90 или 80 или 70 или 60, и след това да отпечатате съответния клас, Щях да съм в състояние да пиша, че в изявление ключ. Така то се случва да дойде тук, проверка е това число, равно на това постоянно? Ако не, то се случва да пропуснете. Дали е равно на константа две, и така нататък и така нататък, докато не удари по подразбиране, ако никой от тях не са равни. След като един от тях е предвидено да бъде равно, то се случва да направите това ред код и почивка. Което означава, че ще ходи да се удари, че тичам, почивка, и просто напълно пропуснете до дъното на кода. Така че в този смисъл вида на функции като, ако друго, ако друго, ако изявление. Така че тук е бетонен Например за вас, момчета. Така че нека да приемем, че аз исках да създадете променлива, наречена година основателно. И аз искам да напомни на потребителя, за да въведете годината, която е основана тяхното училище. Така че мога да се създаде изявление превключвател тук. И нека просто кажем, че входния 1636. Този код тук ще видите ключ година основана което се равнява на 1636. Това ще видите случай 1636, о, тези хора са равни, ФОРМАТ () Не трябва ли да по това училище на север? Защото ние приемаме, те не го правят отидете тук, ако те отидат в Харвард, счупи и прескочите до края. Ако трябва да вход 1701, които Предполагам, че всеки от нас би вход, това ще пропуснете този случай, ела до два случая, който е 1701, и печат Добре дошли в Yale! Пробив, прескочите до края. Иначе най-вероятно приемате този курс онлайн, в която case-- страхотно посрещане да Yale-- то се случва да отида до подразбиране за печат, Hello Internet! И счупи. Да. SPEAKER 12: Можете ли да използвате друг вместо подразбиране там? АНДИ Пенг: Не, защото начин, че цялата тази функция превключвател е построен, за вас синтаксис трябва да използвате е случай случай подразбиране. Това е като, ако друго, ако това това е един случай, при неизпълнение. Да. SPEAKER 13: Вие може би вече каза, че това, но може да имате повече от два случая? АНДИ Пенг: Да, бихте могли има най-много случаи, колкото искате. Мислете за това като просто искала безкрайно добавяне на. SPEAKER 14: Ако включено 1701 с 1636, наистина не направи право разлика? Той просто ще трябва да се проверява за това. АНДИ Пенг: Това е наистина добър въпрос. И ние ще засегнем това по-късно, но просто знам, че това е ключът Декларация се infinitely-- това е по-ефективно, отколкото ако и иначе, ако, защото тя работи използване на различен тип на функция, която ви позволява, по същество, просто скочи направо на случай, че трябва да бъде най. Да. SPEAKER 14: Cool. Благодаря. АНДИ Пенг: Да SPEAKER 14: И ти не можаха направя случаи като и по-голяма от. АНДИ Пенг: No. Така че, това е това, което се ограничава за Декларация за преминаване е, че имате да има само константи, само числа. Да. ДОБРЕ. Така че това е нещо, което ти момчета ще срещнат по-рядко от, но аз просто исках да го въведе в случай. Тук имаме това, което е наречен трикомпонентна оператор. Къде по същество, това е просто искал ако изявление компилиран в един ред. Ето, аз ще отида на следващия ред, на следваща страница, защото е по-лесно да се види. Така че всичко, което сме виждали това право? Това е доста лесно да се следват. Ако исках да се направи променлива, наречена струнни име ите, ако даден брой Давам това е по-малко от 100, I искате да зададете ниска към низ, друго, което искате да зададете висока. Това тук прави точно същото нещо тези осем реда код са прави. Така че тук искам да създам низ променлива. И това е при условие, че съм проверка, ако редица е по-малко от 100, След като зададете стойността на ниска, останало присвоява стойността на високо. Тези слайдове ще бъдат онлайн, не се безпокойте ако вие не се получи това надолу. Това е само един прост начин, по- ефективен начин за писане на код. ДОБРЕ. Така че сега ние ще въведете това, което, за повечето хора са като един много, много объркващо нещо да си помисля на първо време. В частта за контур. Така че днес ние ще говорим около три вида примки. Отиваме да започне с известно време линия, тогава говорим за да не се прави линия, докато, и след това да се говори за за вериги. Така по същество, за по- визуални учащите там, имаме, по същество, графичен изображение на това, което една линия, докато го прави. Така че в програмирането, вие ще започнете и въведете линия в определен момент. Вие се провери състояние. И ако условието е вярно, изпълните кода вътре. И ти се върне обратно и да погледнете. Ако тя все още е вярно, ти продължи да работи този код отново и отново в цикъл. Въпреки, че Второто условието стане невярна, започваш да се прекъсне и да се сложи край на цикъла. И това е по същество синтаксис ти започваш да се използва. Докато дадено условие е Вярно направите това, ако това не е вярно, започваш да прескочите до края и да вървим напред с вашата програма. ДОБРЕ. Дали някой има пример за това какво може да се случи потенциално ако се опитам да стартирате тази част от кода? Между другото, това е SAJ-- Scaz, Andi, Jason-- ние ще подпише нашите имейли, Любов, Saj. Това сме ние. ДОБРЕ. Всеки, който има един пример, или да има идея за това какво ще отпечата? Вид на подвеждащ въпрос. Така че тук, не забравяйте, условието ние сме проверка е, докато е вярно. Така че, докато това е вярно, това е ще отпечата, обичам Saj! Има ли смисъл, в който ние бихме промени това с нищо друго? Не, нали? Така че тук, ние имаме срещани това, което е най-вероятно ще бъде подслушване много програмите си, за безкраен цикъл. Ще откриете, че ако стартирате тази част от код, това е просто ще продължим да печат, обичам Saj! Докато ние оценяваме подкрепата, ние не искаме вашите компютри да се срине, защото вие запази печат Обичам Saj! Така че, моля, моля, избегне безкрайното линия защото тя никога не се случва да се направи оценка на невярна и никога няма да напуснат линия. И ти започваш да се се всмуче завинаги. Готино. ДОБРЕ. Вторият тип линия ние ще говорим за днес е правя, докато линия, направи, докато цикъл. И това се нарича да не се прави, докато линия защото имате задачи и известно време. Така че това е доста сходен с известно време линия, но малко по-различно. Ето, ти започваш да се направи каквото и да е вътре в този докато дадено условие е вярно. Така че, ако бях C и компютъра съм стичаше по тази част от код, Аз ги накарайте да поглеждат в горната част. Аз отивам да C, казвам се направи това нещо. И след това да проверя, а това е вярно, аз трябва да го повторя. Но докато това е невярна, тогава аз се движи напред и никога не съм се върне към тази линия отново. Някой може ли да вземе хладно оръжие при каква е разликата между тази линия и тази, която Погледнах е практически. Да. SPEAKER 15: Условието идва след вместо по-рано? АНДИ Пенг: Точно така. И така, тя каза, че условието идва след, а не преди това. В крайна сметка, разликата между този и примката, докато е, че сте просто ще направя каквото и да е вътре в този независимо от със или без вашето състояние е Вярно, и след това да се провери състоянието. Така че в този случай, вие сте always-- по този начин, винаги сте като се уверите, каквото и да е вътре в спринта на най-малко веднъж преди проверка, за да видите ако искате да стартирате отново. И тук е един пример кога ще го използвам. Така например, ако исках да имам променлива от тип INT име възраст, и аз искам да подтикне потребителя за тяхната възраст, Отивам да направя ФОРМАТ () Каква е твоята възраст? възраст = GetInt (), която е подканване на потребителя. И някои хора ще бъдат наистина досадни. А вие не искате бъгове във вашия Програма на някого въвеждане харесват, О, аз съм негативно на 4 години или нещо такова. В този случай, ако те направите това, това се оценява да е вярно, което означава, че аз отивам да трябва да продължава напред, назад и прави това. Така че това ще се запази повторно подканване на потребителя да ви дам като истински възраст номер и това е ще продължим да се връщам и redoing него, докато те ви дават реална възраст по-голям от един, или не е нула. Така намек, намек. Това ще бъде много, много полезно за един от вашите PSet проблеми. Да. SPEAKER 16: Опа, съжалявам. АНДИ Пенг: Да. SPEAKER 16: Има ли, не да бъде задник, but-- АНДИ Пенг: Не се тревожете. SPEAKER 16: --are там различни правила тук, или не сте просто да забравите да се сложи цитата? АНДИ Пенг: О, да. За съжаление, това е напълно моя лош. Това беше определено Предполага се, че един цитат. Добър улов. Това би не съм тичал. ДОБРЕ. Така че за последния вид цикъл ще поговорим около и в крайна сметка, вид най-много Комплексът е на линия за. Не се притеснявайте, ако не го направите знам какво означава това. Това е доста объркващо в началото. Ние ще отидем един пример. Всичко, което се случва в една линия за е, че имате три изявления че ти започваш да се включи. Така че за нещо определено, че си Ще се инициализира променлива. Ще добавим условието за които тази линия ще продължи да работи. И след това, в края на линия, ти започваш да го актуализира. Можете да актуализирате променливата които искате да следите. Така че ние обикновено се използва за вериги за когато сме искате да изпълните една линия за определено количество пъти и ние вече знаем, Oh искам този цикъл да се изпълни като 10 пъти, тогава do-- Ще отидем пример на следващата страница. Така че тук например, в Scratch, ако Исках нещо да се повтаря 10 пъти, всичко, което трябваше да се каже е, повторете 10 пъти обичам Saj! което е по-приемливо знак на подкрепа за нас отколкото безкраен цикъл. Ето, как бихте преход към C и писане че е за int-- Отивам да създадете или декларира променлива от тип INT име аз. Отивам да се инициализира то до 0, така че аз = 0; и това ще е състоянието ми. Така че аз е по-малко от 10. И тогава в end-- последното изявление сте Ще трябва е актуализацията на какво се случва с променлива I в края на вашия цикъл за. Така че това е вид объркващо, защото различни части на тази линия се случва по различно типа на цикъла. Но аз ще отида в продължение на Псевдокод пример за това а може би и да обясни това малко по-добре. Така че тук. Това е на линия ние просто видях. По същество в Псевдокод, това, което се случва в тази програма, е първото аз съм създаване Аз, неговото инициализиране на 0. Аз съм проверка, за да видите, ако аз е по-малко от 10, при което за първи път, че е тъй като 0 е по-малко от 10. По този начин цикълът ще избяга. И тогава аз отивам да отпечатате тази линия. И след това в края на тази линия, нали тук, аз отивам да се направи увеличение аз, аз ++, всичко, което е средство то увеличаване с единица. Така че аз сега е 1. Защото веднъж е 0, ако аз прираста това е, това е вече една. И тогава аз ще се върна в началото на цикъла и аз се провери състоянието. Дали състоянието все още е вярно? Да 1 все още е по-малко от 10. Така, че ще ходи да отпечатате това отново, отидете и след това нарастване аз, както и проверка състоянието непрекъснато, непрекъснато, докато в крайна сметка се получи до точката, където аз е 10. Ти ще се отпечата тази 10 пъти и тогава аз ще се равнява на 10. Ти ще провери състоянието. Е 10 по-малко от 10? Не, това е лъжа. По този начин, тази линия не се случва да тичам, че ще ходи да се прекъсне, и ти започваш да се Продължете с вашия код. Така че, както вие може да видите, това е наистина чудесен пример на една линия можете да програмирате в тази работи за определен период от време. Всеки един ясен? Да. SPEAKER 17: Какво ще кажете за увеличение експоненциално, е това различно кодиране? АНДИ Пенг: Вие can-- ние ще отидем над това в следващия слайд. Добър въпрос. Дали anyone--, преди да се премести on-- някой изобщо объркана, защото това е един наистина труден концепция. Не се тревожете, ако you're-- OK. Готино. Всичко е наред. Само една обща пързалка. Тази линия, докато върши точно същото нещо на линия за е. Това е просто написани по различен начин. Вие, момчета, да чета слайдовете в удобно за вас по-късно. Но просто знам, че има множествена начини за писане на едно и също нещо да се случи с различни цикли. ДОБРЕ. Така че, сега ние получаваме по въпроса за това, което ако имаме една линия във вътрешността на една линия. Ние получаваме в реално Inception тип неща тук. Когато искате да направите неща множествена пъти в рамките на други неща че правим нещата по няколко пъти, вие Искам това, което се нарича вложен за контур. За тези от вас, които първи са въвели това и се много объркани, всички правим тук е като за цикъл, където имаме променлива от ред. Но вътре в него, ние също имаме друг за контур на променлива, наречена колона. И аз силно препоръчваме на всички вас които могат да бъдат сбъркани с първия запази track-- изготви този вън, да изготвят това. Не се опитвайте да просто причина през нея, да я изпробвате. В главата ти, на това парче хартия, или каквото и да, пиши ред, следя какво се ред е равен. Напиши колона, да следите на това, което е равно на колона. И следите на това, което е отпечатване с всяка итерация. Всеки повторение на този цикъл всеки повторение на този голям цикъл, просто да се следва логиката. И аз ви гарантирам, ще ви хареса това, което виждате, защото това е също много приложимо за вашия проблем комплекти. Готино. Всичко е наред. Така че най-важното нещо че вие ​​вероятно са всички мисля за сега, са вашите Проблем Определете 1s, които се дължат четвъртък / петък. Във вашата water.c програма, намек, че ще има да напомни на потребителя за вход. В рамките на вашата mario.c програма започваш да имат използването на вложените за контур, което е а за контур във вътрешността на линия за, за отпечатване на един блок от пирамида, по същество като това, Марио трябва да скочи през. И тогава във вашата greedy-- или може би Осъществяване на климата, ако някой от вас, момчета някога са чували за that-- започваш да се наложи да бъде много внимателни на първите числа с плаваща запетая. Не забравяйте, плаващи знака след десетичната запетая и числа не са едно и също нещо. Следете кой е по които. И ти започваш да се използва условни конструкции, както и. Добре, последно нещо. Имам останали няколко минути. Style. Така че това е нещо, което не е така действително ефект на ефективността, или действителното протичане на кода си. Въпреки това, тя ни въздейства като Вашите грейдери, както вашите читатели. Тя въздейства себе си, ако сте Опитваме се да намерим проблем. Тя въздейства на четливостта на кода си. Така стил, като, когато се опитвате да стил на есе по английски език, ако сте не са имали параграфи, имате всичко натура на разбъркани заедно на един ред, то го прави много трудно за всеки, да прочетете есето си, дори и ако Вашите точки са логически звукови. Същото е и в програмирането. Можете да имате ужасно неясно код, който Scaz ще покрие, и тя все още може да работи и функция. Но за нас, тъй като вашата прекрасна СНС, които ще да се чете и оценка на вашите PSets, това не е много хубаво. Така че, моля, за по-голяма от нас и себе си, когато се опитвате да се определи проблем в кода си, и вие се опитвате да Прочети собствен код, направи Сигурни ли сте, следват някои конвенции че ние ще отидем. Така че на първо място. Дайте вашите променливи смислени имена. Ако искате да съхранявате цяло число наречено възраст, може да го назове възраст. Не го назове височина. Когато се опитвате да съхранява една епоха във височина, тя прави всичко много объркващо за нас. Ние не обичаме да се бърка. Вие не искате да бъде объркан. Никой не обича да бъде объркан. Ако ти започваш да се създаде нещо, го наречете нещо смислено. Въпреки това, за верига, еднократно символни променливи обикновено са фини. И в по линия, ако искате само аз, и к, к, не се колебайте да просто да го направя. Последователно инициализация. И така, какво означава това? Това означава, че от техническа, теоретично, можете да стартирате и да създадете множество променливи на същия ред. Така например, мога да създам цяло число, наречено scaz_age, и число, наречено andi_age = 20, и е цяло число, наречено jason_age на същия ред. И аз също може да зададете само един от тях, а не другите до стойности. Питаме ви моля, не прави това. Защото тук сте същество създадено три променливи, но само една от тях всъщност има стойност. И тогава, когато сме опитвайки се да прочетете кода си, или ако се опитвате да се определи проблем в кода си, това е много объркващо да се следват. Така че просто за вашата разпознаваемост, за нашата четивността, не прави това. Последователните фигурни скоби. Някои хора обичат да поставят своите фигурни скоби на различни места. Това няма значение. Просто се уверете, че сте последователен във вашия собствен код за това къде искате да ги пуснат. Последователно разстояние. Ако сложите интервал след за линия, винаги прави това. Не точно като един вид го правя най- някои места, не го правят в други. Просто бъдете последователни. На второ място, ако някой би желал да чета указания за оформяне на CS50, ние имаме официално ръководство стил, който всички тези конвенции ви казва, плюс още. Това е онлайн. Това е като cs50.net/style или нещо такова. Можете да го Google. Постоянството е от ключово значение. Така че не се притеснявайте, това, което правят другите, Просто се уверете, че сте последователно в рамките на собствения си код. Всеки, който има някакви въпроси за това? Да. SPEAKER 18: Така че правилното нещо общо с инициализация е просто всички тях в отделен линия, е, че това, което казвате? АНДИ Пенг: Така че аз рядко са това да се случи. Но ако искате да, ако искате да бъде като спестяване на пространство в кода си, или каквото и да, можете да направите това. Молим ви просто не се инициализира едно нещо, а не другите. Така че, ако искате да направите инт scaz_age, инт andi_age, инт jason_age, това е добре. Просто не се инициализира една а не на другите е всичко. Въпроси? Всичко е наред. Отивам да се премине на разстояние от микрофон, и лазерна показалка, и щафетата на Scaz в този момент. Това е неудобно. Ето. БРАЯН SCASSELLATI: Благодаря. Как е, че за възпроизвеждане на звук? Звукът е добър? , Отлично. ДОБРЕ. Така че, Здравейте всички. Аз ще се опитам да работят чрез практически пример със себе си. И ние ще използваме CS50 е развитие на околната среда, което се нарича Интегрираната среда за разработка. И това, което сте виждали демонстрирана в лекция. И в Проблемна Set 1, ти си Ще имате възможност да го използвате, и си поиграете с него, и да свикнат с него, защото ние ще го използвам през останалата част от семестъра. Така че в този IDE, трябва да имате това, което изглежда като един много традиционен файлов браузър над от едната страна. Имаш една част нагоре топ къде отиваш за да видите изходния си код, си Cfile, кодът, който пишете. И надолу дъното, ще има терминален прозорец които ще бъдете използвате, за да както компилирате вашата програма и да работят или да изпълни програмата си. ДОБРЕ. Така че просто да ни даде малко фондация, в която терминален прозорец, започваш да бъде с помощта на набор от команди които са стандартни команди в цялата повечето Unix или Linux системи. И така, ако някога сте се използва всяка форма на Unix, Ubuntu, или някоя от другите аромати, те ще изглеждат познати. Ако не сте, не се притеснявайте. Няма нищо сложно за тях. Те просто с помощта на различни синтаксис, различно именуване конвенция, отколкото сте виждали преди. Така че да се изброят на файловете в рамките на определена директория, те започват да използват команда, наречена ли, или списък. Ако искате да видите всичко с всички подробности, вие ще използвате командите Онлайн спор с LS -l. И това ще ви покажа всичко По-подробно, включително разрешенията за даден файл. За да промените директорията, вие ще използвате командата сд. И вие ще бъдете в състояние да промените директорията както за да преминете към вашата домашна директория. Това е просто сд всичко от себе си, сд с двама точки ще ви върнат с още един равнище за предишния си директория. А също така можете сд до поддиректория, като напишете в сд и името на тази поддиректория. Можете също така да създавате нови директории. И отиваме да ходи чрез това само за минута. Но само за да сложи всичко на екрана. Така че можете да ги видите. Вие също така ще имате възможност за манипулиране на файлове директно от командния ред. Ще можете да ги копирате, за да да ги преместите, или да ги премахнете, тоест, ефективно, за да ги изтриете. IDE The CS50 дава пълна мощност на аргументи от командния ред. А това означава, можете също направя много опасни неща. ДОБРЕ. Например, можете да премахнете, или че е за изтриване, файл, без да иска за потвърждение. И можете да дори да премахне recursively-- това е на таблото R flag-- цяла поддиректория и цялото му съдържание. ДОБРЕ. Те са изброени в червено, защото вие трябва да мислим "Danger" всеки път, виждате тези неща. ДОБРЕ. Всичко е наред. Сега най-накрая, за нещата, които са Ще бъде наистина ценно за вас, са има няколко добри трикове да се знае, както сте навигацията чрез този терминален прозорец. Първо, можете да изчистите екрана при всяко време, като напишете в ясна. И ти започваш да се види ме направи това доста често. Можете също така просто да се покаже Текстът на файл чрез въвеждане на повече и след това името на файла. След това ще бъдете в състояние да превъртате назад и излезе с които просто с интервал и клавишите със стрелки. Ако имате, както направихме днес в лекция, програма, която се изпълнява постоянно в безкраен цикъл, вие може да спре тази програма от изпълняващата чрез въвеждане на контрол, че се държите натиснат Control-C. И вие може да има общо това няколко пъти. Компютърът получава много по-напред от вас. И понякога трябва да го дам няколко опита преди тя действително ще дойде сам. Вие също така ще бъде в състояние да сортиране чрез командите че просто напечатани с помощта на до ключ, стрелка, а след това на клавиша със стрелка надолу. И това, което е най-полезно е, вместо пишете на дълги имена на файлове, вие ще бъдете в състояние да използват Tab до довършим няколко инструкции. Сега отиваме да демонстрират Всички тези само за секунда. Така че, ако не си спомням тях, не се притеснявайте. Това са неща, които ще вдигне и да използвате като отидем заедно. ДОБРЕ. Така че в C-- разлика в Scratch-- C е компилиран език. Това означава, че ние ще се вземе източник file-- това е текста, който пишете, командите, които ти пиша, за ФОРМАТ () становища, примките, всичко else-- и отиваме да вземе този файл и да го оставиш в ръцете на програма, наречена компилатор. След това компилаторът ще се че текстът, който съм писал и да го превърне в двоичните инструкциите че компютърът ви е всъщност ще използва. Това се нарича обекта или изпълнимия файл. Ако се вгледате в този файл, ти започваш за да видите кода, които сте написали. Ако се вгледате в този файл, ти започваш да видят случайна поредица от символи че няма смисъл, каквато. Това е, защото това е двоичен. Тя не е предназначена за вас, за да се чете. Въпреки това, всеки път, когато искате да тече нещо, това, което става да се работи е този обект файл. Така че, когато ние работим с тях файлове, ще напиши файл в C. След това ние ще го съставят, като се използва команда като изработка, която ще се позове съставител звън за езика C. И това ще произведе един обект файл, като извършва или в този случай, името, моето досие, че съм сложи вътре. Всичко е наред. Така че нека да се опитаме действително това. Така че аз дойдох с един пример от това, което исках да опитам. И едно от нещата, които ме очарова е анимация. Така че ние ще се опитаме да направим малко анимация използвайки само ASCII символи. Герои можем да разпечатат лесно сега. Така че тук е най-добрият ми опит към създаване за вас анимацията на зайче минава през високата трева. Ето го и него. ДОБРЕ. Така че той не работи все още, но той е стои там във високата трева. Сега, ако бях аниматор, в старото училище версия на анимацията, което аз ще направя е Бих произвежда снимка на това зайче в тревата. И тогава аз ще произведе друга picture-- друго, което те наричат ​​cell-- че бе зайче само леко се мести. И тогава една трета, на които имаше на зайче премести малко по-нататък. И аз ще произвежда цяла последователност на тези клетки. Някои където зайчето е над върху лявата страна. И тогава се движи бавно, една от една към средата. И след това си от центъра над надясно. И ако аз бях тогава, наистина късметлия, че мога да го съберат и мога да ги анимирате. И там е моето зайче минава през тревата. Това е моята голяма PowerPoint трик за деня. ДОБРЕ. Така че това е толкова добър, колкото го получава. ДОБРЕ. Така че, тук още един път, тук е нашата зайче минава през тревата. SPEAKER 19: Отново. БРАЯН SCASSELLATI: One повече време, всичко е наред. Има си зайче. ДОБРЕ. Така че днес това, което ще да направите е да отиваме да се опита да се автоматизира процеса за получаване на тези клетки. Ние няма да доста стигнем до точката на е в състояние да ги всички заедно. Но ние ще се опитаме да се автоматизира процес на генериране на тази последователност. И това е голяма част от това, което анимация днес е като. Това е, вие не правите неща задължително чрез теглене на всичко на ръка. Ние използваме компютър, за да автоматизирате части от този процес. ДОБРЕ. Така че нека да превключи Сега в нашия CS50 IDE. И Аз създадох за us-- и нека ми я увеличите тук малко bit-- съм създаден за нас отправна точка. Всеки път, че ние ви молим да седне надолу и напишете част от код, това, което наистина ви моля да направите се молим за решаване на проблем. И начинът, по който ти трябва мисля за това, че е като се започне с някои просто част от това решение. И тогава се изгради от тази част. И това е, което ние ще направим днес. Така че вместо да се опитва всичко наведнъж, за да напиши целия куп код, който е ще произвеждат тези, 10 анимационни клетки, ние ще започнем вместо с едно парче, което работи. И тогава ние ще построи малко около това и по-малко и по-малко. Сега хубавото решаване на проблеми по този начин е, че тя ще ви позволи да започнете винаги с нещо, което знаете работи и да се въведе една постепенна промяна. И това е чудесен начин да се научат как да се кодира, защото всеки път, когато правите промяна, ще видите какво влияние има тя. ДОБРЕ. Така че тук е нашата отправна точка. ДОБРЕ. Така в началото на моето досие, Аз бях хеш #included stdio.h. Това е така, че мога да получа ФОРМАТ () функция, за да работят. Аз тогава имам моята основна функция. И това все още изглежда малко тайнствена или неясно на някои от вас. Това е добре. All тя казва, е, че чиято основна функция се не arguments-- невалидни средства нищо в C. И това възвръщаемост от конвенцията цяло число. Главна винаги се връща цяло число, Обикновено код казва неща мина добре или не върви добре. ДОБРЕ. Но основното е да има, че образува за нас в момента. Аз тогава сме поставени в три реда код. И заедно с всеки ред от код, Вложил съм коментар. Сега едно от нещата, които ние ще настояваме да правите, и това е толкова важен програмиране практика, е винаги да коментирам вашия код. Винаги записвайте в English коментар нещо че си мислите, че код е трябвало да се направи. По този начин, по-късно, когато се върне в него, можете да го погледнете и може да се каже, О, аз помня какво съм опитвам да направя с това. Или когато TA сяда с вас, за да се опита да ви помогне в работно време, те могат да погледнете това и си отиват, I да видим какво сте се опитвали да направите, но вместо това е какво наистина се случва. ДОБРЕ. Така че аз имам три части за моя код, Отивам да се преди всичко за печат някои точки в началото. Тогава аз ще разпечатате ми изключително фантазия зайче. И тогава някои малко точки в края. И тези три печатни отчети следва ви изглеждат познати в този момент. Всичко, което правя в всеки един от тях е, че съм отпечатване на поредица от символи. Няма по участват променливи. Всичко е просто плосък. ДОБРЕ. Така че, ако сляза сега да ми terminal-- нека да видим дали мога да получа това обратно out-- и аз отивам да напишете ясно отново. SPEAKER 20: ние използваме за Двойна наклонена черта да коментирате? БРАЯН SCASSELLATI: Can използвате double-- Да. Има няколко начина за оставят коментари в C. One начин е да се използва двойна наклонена черта. Другата е да се използва наклонена черта и една звезда и след това затворете с една звезда и наклонена черта. Всичко е наред. На първо място, аз отивам да започнете да навигирате тук. Така че, ако отида в моята домашна директория, Промених директории там, Отивам да гледам и да видим какво е в тази директория, LS, избройте навън. Отивам да видя, че съм имам две поддиректории. Нека да направим това малко по-голям тук, така че всички ние можем да го видим. Виждам, че съм имам две поддиректории. Ще се промени директорията да отидат в работното пространство. И аз ще съм само да напишете част от него, а след това просто да натиснете Tab. И това ще допише за мен. Fancy. Ще разгледаме и да видим в работното пространство. И точно сега, аз съм на работа на SuperSection че ние сме преподава в момента. Така че аз ще отида в тази директория. И накрая, изглежда и да видим. И аз имам този файл bunny.c. Добре, така че нека ясно още веднъж. И аз отивам да now-- отново съм все още пребивават в тази директория и тя ми казва, че съм в че SuperSection директория. Отивам да вървим напред и да направи моята програма зайче. И тази заповед, да направи зайче, докато звучи малко странно, също се позовава на трясък компилатора. И е произведен за ми изход, който е изпълним funny-- на изпълнимия файл, наречен зайче. ДОБРЕ. Аз мога след това, и това звучи още по-лошо, изпълни зайче. ДОБРЕ. И нека да видим какво прави той. ДОБРЕ. Това е малко това, което аз очаквах. Имам моя зайче картина там, но аз вид на всичко това искаше от само себе си. Какво ми липсва? SPEAKER 21: Slash л или наклонена черта п. БРАЯН SCASSELLATI: Slash п. ДОБРЕ. Така че нека да се върнем тук. И аз ще се измъкнем от това. И аз ще се върна в този. И нека да разгледаме сега от моята основна функция тук. И така, какво трябва да направя? Искам да се сложи край на линията. Така че аз ще поставя в коментар. Ще сложа в ФОРМАТ (). И това, което мога да пробва? / п. ДОБРЕ. Какво трябва да го завърши с? Точка и запетая. Всичко е наред. Сега, един от наистина важните неща е да сте сигурни всеки път, когато направите промяна в кода си, че сте го спаси. Ако не сте записали своя код, вие сте ще забележите малка звезда там. И това ви казва звезда не сте записали този код. Ако аз го компилирате точно сега, това не е ще се отрази всяка от тези промени, защото компилаторът поглежда към файла това е на диска, а не файла, че е отворете във вашия редактор. Всичко е наред. Така че нека да го спаси, а след това ние ще отидем точно на тук, върни се. Слез на моя терминал. И нека да изчистите пространство отново. И ние можем да вървим напред и една по- Време направим зайче програма. И изпълни зайче. Това не е работа от двамата. Грешен наклонена черта. Така че, ако се вгледате в това, което имам, Сложих / п там, но имах грешен черта. Всичко, което вашия компютър прави, е много ясна. ДОБРЕ? Една малка грешка на пунктуацията, и Изведнъж не получите това, което искате. Всичко е наред. Така че нека да я увеличите върна отново. Ние ще се върна. Ами направи, че много бърз ремонт. Ние ще сложи дясната черта инча Ние ще го спаси. Ние ще я обратно. По някаква причина, това не е да бъде щастлив, но нека да вървим напред и ние ще се върнем към терминала тук. Тя Изчистване. Ще я увеличите инча И още един път, ние ще направим зайче. И сега е достатъчно сигурен, че работи. Ура. ДОБРЕ. Така че нека да се опитаме да направим това малко по-общо. Да видим дали вместо просто отпечатване на една определена рамка, нека да видим дали можем да направим това така че можем да получите всички 10 от тези анимирани рамки че искаме да имаме. Така че отново, нека да тази стъпка в даден момент. Нека първо да го обобщим, не така че аз правя всички рамки, но така правя всяка една рамка, която бих могъл да искам. Така че каква е разликата между кадрите? Дали зайче същото? АУДИТОРИЯ: Да. БРАЯН SCASSELLATI: Да. Каква е разликата? АУДИТОРИЯ: Позиция. БРАЯН SCASSELLATI: Нейната позиция, нали? И как мога да контролирате своята позиция? Колко точки Аз съм пускането в началото и колко точки съм пускането в края. Така че аз трябваше петте най- начало и пет в края. Нека да се замени, че пет с по контур. ДОБРЕ. И аз отивам да се създаде за линия сега, че ще ходи да се каже, Отивам да отпечатате някои номер от точки в началото. Отивам да използвате променлива. Да кажем, какво ще кажеш аз като тезгяха в моята линия. И аз отивам да го декларира до върха. И тогава в цикъл за Аз трябва да направите три неща. Първото нещо, което трябва да направите, е, че трябва да се инициализира аз. Какво трябва да се инициализира тя да започне да бъде? 0. ДОБРЕ. Тогава аз трябва да кажа, това, което е условието за прекратяване? Кога трябва да се спре? Ами колко точки правиш искате да отпечатате на тази? АУДИТОРИЯ: Five. БРАЯН SCASSELLATI: Five отново? Какво ще кажете за нека да направим нещо различна, ние направихме пет. Нека да покажем, че това е различно. SPEAKER 22: Two. БРАЯН SCASSELLATI: Two. ДОБРЕ. Така че, ако искам две точки, това, което трябва да сложа тук? АУДИТОРИЯ: Three. БРАЯН SCASSELLATI: Three. ДОБРЕ. Колко пъти е, че ще мине през? Това ще мине през три пъти, 0, 1, 2 и, нали? Добре, нека се върнем до две. Сега ние ще се заемем две точки. И това, което правя аз искам да направя всеки път, когато отида през примката? Какво трябва да се промени всеки път, когато мине през? SPEAKER 23: Добави една точка. БРАЯН SCASSELLATI: Аз трябва да продължи да функционира. Отивам да добавите точка. Отивам да отпечатате една точка, всеки път, през примката. Но как съм следене на начина, Много пъти съм бил през примката? Аз съм с помощта аз, че променлива, която брояч. Така че всеки път, през, аз отивам и прираста на тезгяха по един. Сега, това е една и съща за ми да казва, аз = I + 1. Това е добре. Мога да го направя that-- ми харесва стенограмите, така че аз ще кажа, че ++. ДОБРЕ. Нека да направим едно и също нещо тук долу на дъното. Само аз вид направих това. Отивам да ви момчета нека направите това един напълно. Всичко е наред. И така, какво трябва да пиша тук? Тук е моят за контур. Отивам да направя ФОРМАТ () и аз отивам за да го направи, така че мога само отпечатате една точка по този отдолу. Какво да пиша вътре в тази линия за сега? Ами, на първо място това, което променливи трябва да използвам? SPEAKER 24: к. БРАЯН SCASSELLATI: Мога да използвате й. Мога ли да използвам същият? Мога ли да използвам аз отново? Да. Това е добре, защото е че аз съм с тук, Аз не се нуждаят от тях отново, когато I стигнем до тази точка. И така, какво трябва да се инициализира и да? SPEAKER 25: 10. БРАЯН SCASSELLATI: 0. Какво трябва да се провери? Колко точки трябва да имам сега в края ако аз имам две точки в началото? Имам нужда от осем в края, така че това, което трябва да проверя, аз по-малко than-- АУДИТОРИЯ: Седем, осем, девет. БРАЯН SCASSELLATI: Чух седем. Чух осем. И чух девет. ДОБРЕ. Така че всички ние сме в правото ball-- Джейсън казва 10. ДОБРЕ. Ако имах нужда от две точки за първата, колко направя I-- и имам нужда от осем точки за по Последният one-- Сложих два до горе, това, което трябва да сложа по-долу? АУДИТОРИЯ: Eight. БРАЯН SCASSELLATI: Eight. Тъй като това ще брои нула през седем. И това е осем пъти през примката. ДОБРЕ. И какво трябва да направя в края? АУДИТОРИЯ: аз ++. БРАЯН SCASSELLATI: аз ++. Всичко е наред. Така че търси доста добре там. Нека да го пробвам и да видим какво прави той. ДОБРЕ. Така че ние ще го спаси. Ница и спаси. Ние ще я върна. Ние ще се опитаме тук, в терминала. Ще я увеличите инча Ами сега. Ние ще, още един път, направим зайче програма. И вървим напред и да изпълни зайче. И то е там. Така че има нашата зайче. Когато има две точки в началото и осем точки в края. Всички все още с мен? ДОБРЕ. Така че ние го изградена. Ние изградихме един зайче, една конкретна рамка. Сега ние сме били в състояние да обобщим, че за да се изгради повече, различни видове рамки. Сега нека да вървим напред и да има тя генерира не само един кадър, но нека да генерира 10 рамки, където ние бавно направи зайче движат всички Между другото в областта. Всичко е наред. Нека се върнем. И ние ще се опитаме сега. И така, какво наистина трябва да се промени тук? Какво трябва да се промени? SPEAKER 26: Вие първо трябва да промяна на броя на точките максимална в началото. Защото, ако правим 10 точки, че ще трябва да се до скалата. БРАЯН SCASSELLATI: Да. Така че точно сега имам някак програмирани винаги да направя две точки в началото и винаги правим осем точки в края. Искам да изградя друга линия, нали? Защото аз не искам да се изгради само един зайче картина, Искам да изградя 10 зайче снимков материал. Така че аз трябва да се изгради друга линия, и както аз проверете, че цикъл, Искам да променя колко точки I печатат в началото и колко точки да печатам в края, въз основа на която цикъл през примката Аз съм в. Всичко е наред. Така че нека да получите друг брояч. Някой каза, преди да й, така че ние ще направим друго й. И сега, ние ще изгради друг за контур. Какво става вътре в тази линия? Това нещо трябва да си отиде вътре в контура, нали? Зайче има ли да отиде във вътрешността на линия? Имате ли нужда от зайче в всяка една от тези 10 кадъра? АУДИТОРИЯ: Аха. БРАЯН SCASSELLATI: Да. Искам зайче във всяка от 10-те кадъра, нали? Какво ще кажете за точките в края, трябва да имам това? ДОБРЕ. Така че аз отивам да отстъп всички от тях. Отивам да подчертае всички това, и аз отивам да се удари Tab. И това се случва да ги бутнете всички краища малко, така че е лесно за мен да видя какво има в контура. И тогава аз ще го свърши. Да речем. ДОБРЕ? Сега, че в този цикъл Аз съм building-- Опа, направи, че да можете да see-- Имам моя брояч й. Аз ще го започна при 0. Колко пъти искам да мине през този цикъл? АУДИТОРИЯ: 10 пъти. БРАЯН SCASSELLATI: 10 пъти. Така че какъв номер трябва да сложа тук? АУДИТОРИЯ: 9, 10. БРАЯН SCASSELLATI: 9, 10, Някой трябва да каже 11, нали? Исках две точки преди и сложи аз по-малко от 2. Исках осем точки, Сложих аз по-малко от 8. Сега искам да се мине през 10 пъти, така че сложих й малко than-- АУДИТОРИЯ: 10. БРАЯН SCASSELLATI: 10. Ето. И това, което мога да направя в края, за да й? ++, Нарастване него. ДОБРЕ. Сега, тук е сложната част, което е ще се случи точно сега, ако аз направя това? Отивам да отпечатате 10 кадъра? SPEAKER 27: Мисля, че всички те няма да бъде същата. БРАЯН SCASSELLATI: те ще всичко да е същото, нали? Тъй като всички от тях са все още продължава да постави две точки в началото. Но аз не искам да ги всички имат две точки в началото. Колко точки правя Искам в началото? АУДИТОРИЯ: Промяна. БРАЯН SCASSELLATI: I искам тя да се промени, нали? И така, какво имам тук, че се променя всеки път, когато примката минава през? АУДИТОРИЯ: Брой точки, к. БРАЯН SCASSELLATI: й, броя на точките. Така че мога да променя това да й. За първи път през анализатора линия, какво се, че щеше да бъде? Какво да задам й до най-напред? АУДИТОРИЯ: 0. БРАЯН SCASSELLATI: Така че колко пъти съм аз ще направя това? 0. За втори път през линия, к-те ще бъде един, защото аз го увеличите. Колко точки отивам да печатате? 1. Третият път през примката, колко точки съм аз ще печатате? АУДИТОРИЯ: Three. БРАЯН SCASSELLATI: й ще бъде 3. Колко точки отивам да печатате? О, съжалявам, й се случва да бъде 2. Колко точки отивам да печатате? АУДИТОРИЯ: 2. БРАЯН SCASSELLATI: 2. ОК, така че аз ще се запази Увеличаването че като отидем заедно. Какво ще кажете за по-долу? Какво става тук? Аз не искам 8 винаги в края вече? SPEAKER 28: 10. БРАЯН SCASSELLATI: Искам 10 точки? Искам тя да се промени, също. Е, как да искам тя да се промени? АУДИТОРИЯ: [недоловим]. БРАЯН SCASSELLATI: Ами, ако аз има пет точки в началото, колко точки е да получа в края? АУДИТОРИЯ: Five. БРАЯН SCASSELLATI: Ако имам шест точки в началото, колко мога да получа в края? АУДИТОРИЯ: Four. БРАЯН SCASSELLATI: Ако аз имам седем точки в началото, колко мога да получа в края? АУДИТОРИЯ: Three. БРАЯН SCASSELLATI: Ако аз съм Трябва й точки в началото, колко мога да получа в края? 10-J. ДОБРЕ. Така че нека да се опитаме, че навън. Така че аз отивам да спаси нашия зайче програма. За пореден път ние ще намалите. Ще отидем до нашия терминал. Ние ще го изчисти. И я увеличите инча Ние ще направим нашата зайче програма, отново. И ние ще го изпълни. Охо. Чакай, нека да го намалите. Знаете ли да получа 10 кадъра? Е, колко зайчета виждам там? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Имам 10 кадъра. Дали са едни и същи? АУДИТОРИЯ: Да. Не. БРАЯН SCASSELLATI: No. Това първо една, на зайче е далеч от ляво. И тук, зайчето е далеч относно SPEAKER 29: Точно така. БРАЯН SCASSELLATI: Така че, какво съм забравяйте да го направите? SPEAKER 30: Старт на нов ред. БРАЯН SCASSELLATI: Забравих да започнете нов ред, отново. Същата грешка направих преди. Добре, нека се оправя това. Сега, аз съм все още имам кода там да се направи нов ред. Защо не работи? SPEAKER 31: Това не е вътре в контура. БРАЯН SCASSELLATI: О, това не е вътре в контура. Това е вярно. Тя седи извън тук. И за цикъл е всичко че е вътре в този текст. Така че аз отивам да се движат това вътрешността на за цикъл. И аз ще Tab пред него, за да показват, че това е на мястото си. И сега, ние ще го запишете отново. Ще намалите. Ние ще премине в нашия терминал. Приближавам. Ние ще римейк нашето зайче програма. И сега, в момента ние имаме нашите 10 кадъра. [ПЛЯСКАМ С РЪЦЕ] БРАЯН SCASSELLATI: OK. So. Тук е нашата вложени за вериги. Ние бяхме в състояние да генерира в Вътрешният контур колко точки Исках да печатате в началото, в края. И външният контур контролирано колко кадъра I строеше. Започнахме с един малък ядрото на проблема, и ние построен от тази точка. Всичко е наред. Нека да направим още една стъпка. Готов ли си? Има едно нещо, тук, където всъщност сме вид имам по-голяма сложност, отколкото имаме нужда. Нека да разгледаме. Така че в нашето зайче програма, ако аз отдалечаване тук, Аз всъщност правят някои от същите нещо отново и отново. Какво да правя, че е нещо същото се повтаря два пъти? SPEAKER 32: Печат на точките. БРАЯН SCASSELLATI: Да Отпечатам тези точки на два пъти. Наистина, аз трябва да има този коментар тук долу. Отпечатам някои точки в започващ, чак до тук. И тогава аз отпечатате някои точки в края. И аз правя нещо точно същото нещо. Това, което ние ще започнем работи по в следващите няколко седмици е в състояние да се съобразят с тези блокове код, който ние използваме отново и отново, и чрез процес нарича абстракция, ние ще ги извадя и ги пиша веднъж, за да можем след това да ги използва повторно отново и отново. Така че нека да се опитаме това. В готовност? Отиваме да се възползвам от тази блок от код. И аз отивам да го извади от там. И аз отивам да define-- надолу към дъното, Отивам да напише нова функция. Това няма да върне нищо. И аз отивам да го наричат ​​printDots. Това ще отнеме една аргумент, множител, че казва howManyDots I трябва да се отпечатат. И сега, вместо да печатате й точки, аз ще отпечатате кажа howManyDots I трябва да се отпечатат. И има един малък проблем тук. Някой знае ли какво е това? Какво трябва която е вписана Тук това не е определено? АУДИТОРИЯ: [недоловим] БРАЯН SCASSELLATI: Ами как много точки се определя чак тук, но аз съм с тази променлива аз. Така че аз ще взема тази променлива аз и аз отивам да го определят предвидени в тук вместо. Така че сега, че ще ходи да stay-- Опа, имам капачките заключване на somehow-- съм ще продължим да мога предвидени в тук. Така че сега тук ми е малко по функция или подпрограма, и то се казва, колко точки съм аз ще печатате? И това ще мине през тази линия и ги отпечатате отново и отново. Тогава мога да променя моята програма тук. И какво аз наричам тази функция? printDots. Така че аз ще се обадя printDots. Колко точки искам да отпечатате първи път пред зайче? АУДИТОРИЯ: к. БРАЯН SCASSELLATI: к. Колко точки искам да отпечатате в края, след като зайче? 10-J. И има едно нещо, което пропускам. Както видяхте в лекция днес, отиваме да обяви printDots до горе, за да се даде на прототипа. ДОБРЕ. Така че това, което съм направил е Опитах се да изолиране, че се използва повторно част от код че съм направил отново и отново. И аз се опитах да го извадя, така че всичко това се съдържа в едно място. По този начин, ако имам грешка някъде, Аз само трябва да го поправим на едно място. Всичко е наред. Така че нека да го спаси. И нека да се уверите, че работи. Така че нека да излезем. Ще отидем отново в нашия терминал. Ще я увеличите инча Ние ще направим този процес зайче. Oh. И това ми даде предупреждение. Какво е да ми кажеш? Е, в някои от тях пъти, вие винаги искат , за да превъртите до първия error-- Сега на този един, аз имам само един. Той ми каза, че в bunny.c, он-лайн 8, колона 9, че има проблем. Той казва, че сте обявен за това променлива аз и не сте го използвали. Сега нормално, това е не най-лошия грешката. Това е лесна да се определи. И в действителност, ние можем да се върнем инча Ние можем да се върнем към зайче. И в този случай, ние всички трябва да направите е да се отървете от I, защото ние не използвате аз в рамките на основната вече. Ние просто го използвате в рамките на нашата подпрограма. Така че нека да спаси това. Ние ще се върна. И я увеличите инча Ние ще направим още един път зайче. И там отново са нашите 10 кадъра. ДОБРЕ. По всяко време можете да започнете дадена а procedure-- Да. SPEAKER 33: Имам A-- аз съм объркан. Може ли да се върнем на кода? БРАЯН SCASSELLATI: Да. SPEAKER 33: Така че, когато е написал Вашата прототип, на вас аргумент бе обявен се нарича howMany? Но, below-- БРАЯН SCASSELLATI: О, да. SPEAKER 33: ги --called нещо различно, аз не разбирам. БРАЯН SCASSELLATI: Защо те са различни. Така че това е един голям въпрос. Така че въпросът е, нагоре тук, аз написах howMany, и по-долу, аз написах howManyDots. Причината е, че във вашия прототип, тя всъщност не е да се обръща внимание до имената, които сте пускането инча Всичко това наистина му пука за е, че е цяло число. Той иска да знае формата от това, което прати инча Сега stylistically-- oops-- какво трябва да да се I искал да направи това в срещата. ДОБРЕ. Защото това ще го пази лесно за мен да си спомня. Но това беше моя грешка Да. SPEAKER 34: И така за прототип на работа, просто писмено, че линията, написването на прототипа, позволява тази функция, която идва точно под него, за да отидете в края и извличане какво означава това? БРАЯН SCASSELLATI: Какво означава е, когато компилаторът минава, тя преминава от горната част на Код си към дъното. И това, което този прототип е, е това е основно обещание. Той казва, че ще бъде функция дефинирана някъде. Той ще бъде наречен printDots. И това ще отнеме един аргумент че ще бъде цяло число и то се случва да се върне нищо, нищожни тип. ДОБРЕ. Обещавам ви, че ще бъде определено някъде по пътя. Но всеки път, когато видите че, както и да отидете надолу през останалата част от моето Основната функция, искам ти за лечение, че като функция който взема едно цяло число вход. И така, когато компилаторът върви надолу чрез това, той вижда, че обещанието. И когато тя стане надолу, ще поддържа, продължава да става, установи първи път printDots се споменава. И той казва, О, ти даваме мен това й. к е цяло число. Ами ти ми обеща, че ще да бъде цяло число, и че е прав. Това е добре. И накрая, надолу на самото дъно, преди да стигнем до края на моя файл, аз направи добро на обещанието си и аз я определят. ДОБРЕ? SPEAKER 35: Значи, това saves-- на програма ще спестите празни места че той се връща и се пълни в края? БРАЯН SCASSELLATI: Това не е за разпределение на паметта. Това всъщност е само за това, което Тип ви очакваме да видим. Ако това нещо има един аргумент, или пет аргументи? Трябваше да го цели числа се даден на играта, или низове? Това е всичко, тя търси да направите, е да се провери, ли ме за даване полето вид аргумент. ДОБРЕ? Всичко е наред. Позволете ми да ви оставя с една друга битова за гледане. ASCII изкуство не е великият модел на анимацията, както е днес. Но някои хора, разбира се вземат неща и те го избута до своите крайности. Това е, както е показано David в лекция, част от код че ти трябва при никакви обстоятелства се опита да дублира себе си. Тъй като това е ужасно стилово. В действителност, това е проектиран да бъде като Трудно е възможно да се чете. ДОБРЕ. Така че, за да направя отново, нека да я увеличите тук. Отивам да отида сега, промяна директория. Отивам да се изкачат един ниво, обратно към моя работен плот. Тогава аз ще променя директорията в тази друга директория, която съм създал. И това е интернационал Завоалира C състезание по програмиране. Завоалира средства като твърдия е възможно да се разбере. Така че, моля, не се плаши, ако се вгледате На този и си отиват, не мога да прочета това. Това е смисълът на това. ДОБРЕ? Но, ние имаме това прекрасна програма, която съм ще разгледаме като напишете повече. И нека да видим дали мога да отдалечите малко, така че можете да го видите И това е програмата. Той е кръстен endo.c. И това изглежда така кофа с вид на буквите F-L-U-I-D в него. Това всъщност е програма. Това е записано в най-загадъчните начин, че авторите биха могли да Напиши го. Но това е едно прекрасно малко парче, че генерира модел на динамиката на флуидите. И така, ние отиваме да се даде този модел чийто вход изглежда по този начин, на staired зададете на контейнери с някои течности, някои течност, нагоре към върха. И ние ще трябва да го симулира какво се случва с него. Така че аз ще се обадя на тази функция, ендо. И аз ще го дам, че входен файл, който съм имал. И там е нашата въплъщение на ASCII изкуството. Една пълна течност динамичен симулатор използвате само с няколко реда код. Сега това, което всъщност е наистина невероятно за тази малка програмка е, че искам да го спре сега, така че аз отивам да използват това, което команда? АУДИТОРИЯ: Control-C. БРАЯН SCASSELLATI: Control-C. ДОБРЕ. Така че аз ще използвате Control-C. С това ще го спре. Ще изчисти отново. И сега аз отивам да се позове на програма, изпълнява програмата, от своя страна използва като вход. И ние ще видим динамиката на течността симулация на това топене. ДОБРЕ. Моля, не позволявайте на тази програма е нещо, което обърква. Това е просто, така че можем да приключи на нещо готино и интересно. ДОБРЕ. Най-доброто от късмет с проблемните комплекти. Ние ще се радваме да отговорим въпроси след клас. Благодаря много, момчета.