[За възпроизвеждане на музика] ALLISON BUCHHOLTZ-AU: Хей всички. Добре дошли в първия си официален раздел CS50. Както можете да, виж това е раздел CS50-подобни, просто да спра нашия дневен ред за днес. Така че, кой съм аз, тъй като съм сигурен, че вие всички се чудите. Аз съм вашият TF. Аз не съм просто един случаен студент кой се представя за вашия TF. И аз отивам да мине през вид трябва секции ще се влеят, очакванията, които имаме, ресурси, така нататък и така нататък. Ние ще говорим за масиви, ASCII функции, аргументи от командния ред, и това не е за тук, но Аз също ще помогнете някак си мисля, че през следващата pset за тази седмица. Коя съм, че всички вие ще оцените. Така че, първо question-- кой съм аз, освен вашата буйна TF тук. Аз съм Алисън Buchholtz-Au. Това е втората ми година TFing CS50. Аз също TF CS51 през пролетта. Може да се видим отново там ако решите да го вземе. Аз също съм на PAF, така че всеки Freshmen-- и ако не сте първокурсник, това е третата ми година като съветва колегите. Аз съм много добре запознат с ви съветва за живота и курсове в CS, а не в рамките на CS. Аз съм Computer Science концентратор. Аз съм старши в Adams House, най-добър дом. И преди да се премине към CS ми Sophomore пролет, Всъщност бях биомедицински инженер. Щях да отида до Med училище. Щях да бъда травма хирург. И това е напълно променили откакто взех CS50. Взех хода ми Sophomore есен. Това беше първият ми въведение към CS всякога. Аз бях един от 78% от вас, които е нулев опит идва, и тя напълно промени живота ми. И сега аз съм на работа в Microsoft и вашата прекрасна TF. И CS50 е вероятно една от най-добрите преживявания че аз съм имал тук Harvard-- както като класа и е в състояние да помогне на обучава студенти като вас. Така че аз съм много развълнуван че всички сте тук. В случай, че дойде в късно, има бонбони, които трябва да се чувстват свободно да се вземете, или да изпратите някой друг да го вземете за вас. това е ОК. Аз не искам да ям това. Моята стая е достатъчно шоколад, така че всички вие трябва да се опитаме и да завърши това. Знам, че има 100 броя, но подобно, 04 часа в понеделник, Мисля, че всеки може да използва малко захар. Така че всички от вас, които са официално в моята секция трябва да са придобили имейл от мен с моя телефонен номер, имейл address-- чувствайте се свободни да ме добавите Gchat, чувствайте се свободни да ме добавите в Facebook, а също и за останалата част от вас, можете да ми пишете тук. Има два H години. Всеки винаги прави като два L'S или два от C. Две H в последното име. В противен случай тя ще се скача, и Аз няма да получите вашия имейл. Така че не се колебайте да се свържете с мен, да се свържете с мен по всяко време. Не може да се върнем към Вас в рамките на 24 минути но обещавам да се върна за вас в рамките на 24 часа. Ако ми се обади след половин час преди Вашата pset се дължи, може да бъде като, Нямам представа какво правя Алисън. Помогнете ми. Отивам да ви успокои, но в края на деня, ако сте ме вика половин час преди Вашата pset се дължи нищо писмено, Отивам да бъде като, добре, може би това е време, за да използвате, че късното ден. Така че аз ще отговоря на всички ви искания в много навременен начин. Телефонът ми е обикновено прикрепени към ръцете ми. Аз обикновено реагира много по-бързо от 24 часа, но мога само гаранция 24 часа реакция. Добре. Така че, защо сме тук? Също така, ако имате въпроси на всяко време, моля да ме уведомите. Говоря много. Говоря бързо, но моля, чувствайте се свободни да ме прекъсвай. Това ми дава дишане стая, както добре. Така секции са време за нас наистина просто гмуркане в, да получите някои практически опит, за да проверете теми, които ние, споменати в клас или в учебни материали, които ние препоръчваме да вие, момчета онлайн. И ние всъщност ще мине през някои от тези ресурси в малко. Така някои бележки за подкрепа раздел. CS50-- едно от нещата, което прави го превръщат в един от любимите ми класове е чувството, че никога не сте сами. Ние разполагаме с екип от над 100 хора, които са тук, за да ви помогнат. Имаме офис часа От понеделник до четвъртък. Така че има толкова много хора, които обичам класа точно толкова, колкото и аз и които са наистина тук защото те искат да бъдат тук. Повечето от нас са студенти, а това е като пети клас в допълнение за останалата част от нашата работа. И това е много работа, но ние го правим, защото ние го обичам, и ние наистина обичаме да ви научи и да помогне споделим вълнението за тази тема и този клас. Така че, моля да се възползвате. Хайде говори с нас. Аз се самотен, когато моите ученици не говори с мен, така че ако искате, дойде излизаш с мен. Това ще бъде страхотно. Така раздел е очевидно един от най-големите неща. Ще мине през всичко че сте научили в лекция, направя няколко кратки примера когато имаме време, и като цяло вид получите представа за нещата Вие трябва да се мисли за за определен вашия проблем. Shorts-- колко хора всъщност Гледах видеото от вашия нулата кратко? Всеки, който ме позна? Така че тези, които са много големи. Вие определено трябва да гледате тези. Много работа е била пусната в тях. И те просто трябваше да бъде хапят размер парчета за вас просто да гледате в продължение на три или четири минути и да получите по-добро разбиране на концепция. Разходка throughs-- как много хора са гледали Разходката проходи за предишните? Zamyla е невероятно, нали? Например, бих искал аз бяхме Zamyla понякога. Така че определено използва вашата разходка технологична среда. Тя ще го съборят в парчета малки, хапят размер. И когато имате тези огромни спецификации от проблемните комплекти, това ще бъде много важна да бъде в състояние само да се намери някъде да започне и да работи бавно през него. Добре, ние също имаме Study50, които е study50.harvard.edu, аз вярвам. Можете просто Google учат, и тя ще излезе. Това е един от най най-добрите ресурси, които имаме. Това е PowerPoints с бележки и практика проблеми за вас с решения, които ви всъщност може да ходи сам. Така че, ако някога искате повече практика, повече, отколкото го правим в секции или повече от проблемните комплекти, това е наистина място, аз ви насърчавам да отида. Тя е построена през миналото лято от някои от моите много добри приятели. И това е невероятно. В действителност, много от слайдовете че аз ще се използва за точка ще дойдат от Study50. Така че много от TFS го използвате. И накрая, тъй като аз горе, офис часа. Ако имате проблеми с домашна работа, вие сте има проблеми с концепция, елате в работно време. Отиди в началото на седмицата, ако можете. Излез на четириядрени, защото това е вид досега. Никой не обича да ходи там. Но това е във ваша полза, защото тогава вие сте ще има всички тези TFS, [Недоловим] ви заобикалят. И най-вече сега, само на върха, четвъртък са много хлад в момента в Mather защото вашите psets се дължат в четвъртък. И знаейки, иска да използвате края на дните ви, все още. Така че, ако имате проблеми с понятия, има много TFS, които са там, за да ви помогне. Така дойде до Mather в четвъртък. Ако искате да ме видите, Отивам да бъде там. Аз обикновено правя моята собствена домашна работа, защото никой не иска моята помощ. Така дойде да ни види. Запознайте се с нас наполовина. И така, как много хора са посещавали лекция или го гледах онлайн? Колко много хора отидоха да супер раздел миналата седмица? Cool. Това всъщност е справедливо номер. Колко от вас са чели си спец за тази седмица, за pset? Ооо, аз съм горд с вас, момчета! Повече бонбони за всички вие. Добре, така че това, което имаме предвид, "Запознай се с нас по средата", е този раздел е наистина само Ще бъде супер полезно за вас ако дойдете в прочел си спецификация за вашия pset. Защото, когато аз отивам чрез преглед неща, които трябва да се грижи за, това няма да направи като много смисъл, ако не знам какво зададете проблем ще се иска да направя. Ако не се стигне до точка, очевидно Не мога да бъда полезен, че за вас. Аз няма да го приемайте лично, ако не стигна до точка ми точно сега, но определено трябва. Ако не можете да ги гледате онлайн. Те са там поради някаква причина. Mine ще бъде точно там. Както можете да забележите, ние сме се записва, така че ще бъде точно там за вас, момчета. Както е добре, ще lectures-- това е очевидно когато сте се началото на материала си тук. Така че аз определено ще се опитам да да ви помогне толкова, колкото мога, но мога само да се запознаем досега. Трябва да се вид ни посрещне на половината път. Grading-- така, всички от вас, които получих имейл от мен, вие сте моя официален раздел. Аз ще се класификация на вашите psets. И аз просто искам да кажа, едно нещо, което ти трябва наистина да се обърне внимание на са коментарите. Коментарите често са по-полезни от действителната оценка ние ви даваме. И коментарите са всъщност където прекарвам много от времето си когато съм оценяване. Така че аз ще оценявам то ако ги чете. И те са всъщност как започваш за да научите повече за дизайн и стил и неща, които са по- малко по-малко нарязани и сухо. Така че наистина се обърне внимание за тези коментари. Ако имате въпроси, свързани с тях, или въпроси, свързани с резултата си, моля те да говориш с мен както преди, секция, Аз най-вероятно ще се излиза във фоайето, или след това. Ако искате да планирате един-на-един срещи за това как може да помогне за подобряване на по-късно проблемните комплекти, просто ми кажи. И след това само няколко полезни съвети за вас, момчета. Така че един от най-големите неща Винаги съм се подчертае, за моята секция когато сте да научите как да се код е да пиша нещата на хартия на първо място. Ако имате план за игра където вашият код трябва да отидете и това, което тя се нуждае, за да направя и това е съборен на малки парченца Псевдокод код сте изписано, ти започваш да бъде по-малко може да направи синтактични грешки или да създадете, ако линия, която не оказва друго. Ако знаете къде сте става като цяло, вие сте по-малко вероятно да направи тези малки грешки, които понякога ще ви отведе часа, за да се определи, тъй като вие сте като където съм липсва тази скоба? На тази бележка, моля използвайте Style50. Особено, когато сте ще работно време, ако вашият код е всичко превключва на една страна, е разбира политика че можем да кажем, го оправя така че да изглежда като Style50 казва трябва, и тогава ние ще ви помогнем. Така че това ще направи живота ви по-лесно. Това ще направи живота ни по-лесно. Всеки е щастлив. Всеки получава по-добри оценки. Не е ли това, което всички ние искаме? Така че пиша неща на хартия, преди да ли сте някога се докоснат компютъра. Говори неща на високо ниво, и уверете се, че знаете къде отиваш. И ако не сте сигурни, седна с някого и ги преведе през стъпка по стъпка какъв е вашият код е трябвало да се направи. И девет пъти от 10, ще бъдат като, о, забравих една ако състоянието или аз забравих запетая тук или Аз съм актуализиране на тази променлива погрешно. Така че това са моите съвети за успех. Така че, тъй като около половината от вас изглежда като сте присъствали супер раздел, Аз съм просто ще много накратко мине през примки, които не са били на нашата оригинална програма. Но те са наистина важни. И така, аз отивам да се вид на скоростта чрез тези преди да влязат в нашата действителното сечение. Преди да направи това, са налице всеки questions-- логистично, лично, има ли нещо друго, което искате да знаете за мен, нито за раздел или клас като цяло? Всичко добро? OK, хладно. Lovely. Така loops-- вие всички трябва да признават тези парчета от нулата. Така вериги са основно само начин за нас да направим нещо някои брой пъти, някои повтаря за действие въз основа на някои условно. Така че ние имаме три различни вида. Ние имаме за контур, а и да не се прави малко. Така че за loops-- ние просто трябва много общо разположение тук на за линия. И това е чудесно за когато знаеш как многократно нещо трябва да се изпълни. Когато говорим за други линии, ще се види защо това е важно разграничение. Но за вериги са за нещо в стаята. Знаеш, че може или да изчисляване на броя или знаете колко пъти искам това се повтаря в началото. Така че, ако ви видя тук, ние има само един общ вид на скелет рамка за за линия тук. Така че за инициализация, това е мястото, където Вашите променливи се инициализират. С Марио, аз съм сигурен, че вие, момчета направиха нещо като междинно съединение и е равна на 0. Това е, когато това ще се случи в синьо. Вие имате състояние, което е това, което се проверява всеки път. Ако това условие е вярно, тогава останалата част от кода се изпълнява. След това тя ще работи again-- и питам. И тогава имаме актуализация, където актуализирате вашия променлива. Така че, отново, с като Марио, аз съм сигурен, момчета направиха нещо като аз плюс плюс. Така че всеки път, когато примката завтече, аз имам актуализира така че когато бяхме го проверка срещу някакво условие, то се променя. Защото, ако просто има статична променлива, ако той изпълнява за първи път, че е просто ще изпълнява безкрайно. Така че трябва да се уверете, че актуализиране на променлива правилно. И ние също имаме само визуално представяне там. Всеки добър? За вериги. Ако сте виждали тези в pset. Cool. Така че тук е просто един лесен пример. Печат Това е CS50! 10 пъти. И така, ние имаме инициализация, както виждаме там, с инт аз е равна на 0, защото е по-малко от 10, и аз плюс плюс. И това ще се отпечата, че 10 пъти. Така че, докато loops-- докато вериги са страхотно, когато не е задължително Трябва да знаете, колко пъти го е ще се актуализира в началото. Просто има някои състояние, което е проверено. И това може да бъде нещо като while-- нека вземем пример от вашия pset. Ако Марио, когато се опитвате да въвеждане на отрицателно число. Така ли е? Вие би трябвало да отново подкани вашия потребител. Така че може да се каже, добре, ако потребителят не въведе нещо по-малко от нула, ре-бързо тях. И аз съм сигурен, че може да се наложи е нещо, което някои от вас използвани в кода си. Така че това е просто нещо. Трябва време, някои при условие, че се проверява всеки път, когато кодът отива да изпълни. Ако се изчисли на истина, ние го стартирате. В противен случай ние не. И това, което е наистина important-- нещо Мисля, че Давид говори за в lecture-- са свръзките. Каквато и да е в рамките на скоби е това, което е изпълнено. Ако сте пропуснали тези скоби, това е само ще да бъде пряко линия след като в същото време е бил екзекутиран. Така че, ако имате три неща, които се предполага, да се случи, когато това състояние се оценява да е вярно, а вие не разполагате с тези скоби, само първото нещо, което ще се случи. Така че бъдете много осведомени за когато си сложиш скоби. Ако се придържате с Style50, това определено ще ви помогне. Cool. Така че това е обратно броене от 10 до нула. И, както виждате тук, ние се инициализира някои брояч извън него. Едно нещо, което е различно е ние не сме инициализиране нашата променлива в рамките на нашата докато контур. Това е инициализира извън него. Ние сме просто само пускането на състояние в нашата време. Така че в този случай, това е по време на брой е по-голяма от нула. И ние разпечатате това, което ни брой е, и тогава ние намалите стъпково нашата променлива. И това е също и друго нещо, за да забележи. Нашата актуализация не се случи в рамките на че първата част на цикъла време. Това всъщност ще се случи в рамките на скоби, тялото на вашия текст. И така, да-а-а loops-- направи примки са страхотни за валидиране на потребителя. Така че някои от вас може да има Използва се и това в pset. Може да се каже, направи, като, поиска от потребителя за вход. И след известно време, като това вход е по-малко, отколкото някои номер. Така че за изрично случая с Марио, той щеше да направи ФОРМАТ, въведете цяло число, и след това някои число се равнява getint. И тогава всъщност ще изпълнение на този код на първо място. Вие всъщност ще трябва някакъв вид на число. И тогава може да се каже, докато че е цяло число по-малко от нула. Така че това, което ще направи, е, че е ще се изпълни поне веднъж. Това се случва, за да проверите състоянието. Ако състоянието е вярно, че ще се кандидатира отново. Така не се прави, докато вериги са чудесно за валидиране на потребителя, защото вие знаете кода ще се изпълни най-малко веднъж, докато при докато линии, не сте Гарантирано е, че това е ще се изпълни само веднъж. Това ще се провери състоянието първо и след това да реши да го изпълни, докато не се прави, а ще изпълнение на код първи и след това проверете дали трябва да го повтарям. Дали това разграничение да има смисъл за всички? OK. Cool. Така че в този случай, това е един вид от това, което се говори, Тази повторна екрана, докато достигнете получи положително число. Така че ние знаем, че ФОРМАТ "Въведете положително число" и всъщност пита за това вход ще се случи поне веднъж. Ако потребителят е зло и поддържа въвеждане на отрицателно число, който знае колко пъти ще се изпълни. Но този код е гарантирана да се изпълни най-малко веднъж. И това е защо това е страхотно за валидиране вход. И вие ще използвате, че доста малко. Добре, на всички въпроси досега? Ние всички сме добри? Am I говори прекалено бързо? Ние сме добри? OK. Страхотен Така че ние ще вървим напред и да говорим за масиви. Cool. Така масиви са основно само на структури от данни които ни позволяват да съхранявате неща от един и същи тип. Така че, ако някога имате масив, това е или просто ще има целочислени или това е просто няма да имат поплавъци или това е просто ще има символи. Нали няма да има INT с Чар с плаваща запетая с двойна. Едно нещо. Масивите са само един размер, или те са само един вид. Така че тук имаме масив с размер три с три числа в нея. Те може да плува, но ние сме щях да кажа, че са цели числа. Така че едно е да осъзнаем е, че масива са набор размер когато се инициализира тях и те не са easily-- тъй като всичко, което е по-малко удобни, просто трябва да мислим за тях като не е в състояние да се разшири по размер. Въпреки големия тръгнал Вашата масив в началото, това е размера, че ще да остане, тъй като масиви са непрекъснати блокове памет. И когато вие получавате в малко по- на колко памет е всъщност, изложени на дискове и в купчината и стека, тя ще направи малко по-дълбок смисъл. Но вие може просто да мисля за други подобни, това е само един ред помещения на вашия диск. И вие не може да гарантира, че има ще бъде свободно пространство след него. Може да се инициализира масив от три години и тогава може би инициализира друг масив от пет по-късно, и то веднага след това. Така че, ако ви се налага да отидете покрай място три в този първи масив, ще се пише върху нещо друго. Така масиви are-- за вас, момчета, просто мисля за тях като фиксиран размер. Така че създаването на array-- започваш да се наложи да направите това доста малко. Така че в един и същи начин, че имаме обща структура за нашия за примки, имаме хубава цяло структура за нашия масив. Тъй като те са от един вид, всички елементи в масива са от един вид, трябва да се инициализира това, което този вид е. Така че, както виждате тук, имаме хубав малък тип скоба данни. Така че, ако ние сме създаване на инт масив, който ще бъде Int. Ако ние сме създаване на Чар масив, това ще бъде знак. Ако ние сме създаване на низ масив, тя ще бъде низ. И след това името на вашия масив, каквото и да искате да бъде. Така че може би това е резултатите от тестовете или може би е студентите или може би това е бонбони. Каквото и да решите да дадете име масив, който е това, което ще бъде. И след това в скоби, ще има размер, който искате. Така че, ние съхранение 10 студенти или ние съхранение 15 вида бонбони? Какво не. Така че в нашия пример тук, ние създаваме масив от размера на три, които вие виж тук вдясно. И когато за първи път се инициализира това, всичко се свежда до нула. Така че това е просто, че на като празен лист. Имаме всички тези места, ние имаме всички тези кутии можем да поставяме нашите данни в, но те са просто празни засега. Така че, ако искаме действително да да ги възлагат на тези ценности, правим така, че точно под тук показва. Така че имате каквато и да е името на вашия масив е и тогава какво индекс, който искате. Така индексът се отнася само до като това, което слот гледаме. И едно важно нещо, за да забележите, е, че масивите са нулеви индексирани. Така че, ако искаме първото място в паметта на нашия масив, то се случва да бъде нула. Ако искаме второ, това ще бъде една. Ако искаме трето, ще бъде две. Така нататък и така нататък. Което е и причината, условно, когато правим за loops-- Сигурен съм, че вие се чудите, защо да започнем с 0 срещу 1? И това е така, защото, когато ние преход в употребата на масиви, то картите правилно. Така че, ако искате да обхождане на масив, то прави много повече смисъл да се правя аз е равна на 0, защото ние Знам, че ще съответства на първия място в паметта. Всеки добър с това? Cool. И тогава на дъното тук е просто друг начин да се инициализира масив. Вие все още имате тип данни, както и наименованието, но вместо действително поставяне на размер там, можете просто да направите празни скоби. И след това с тези къдрава скоби в долната част, можете просто да въведете данните, които искате разделени със запетаи. И това ще автоматично се каже, добре, виждам че имате три неща в тези скоби. Така че аз знам, че трябва да се разпределят на три блокове от паметта и след това се съхранява тези. Така че първата версия, която може да се използва ако питате вашия потребителя да въведе ценности, така че можете да превъртите през масива и ask-- получите някои инт да ги вход. Ако знаете, че стойностите предварително, го прави много по-дълбок смисъл да се използва втори път. Но в повечето случаи, не може да знае какви са тези стойности ще бъдат. Cool. Всякакви други въпроси? Добре. Така достъп elements-- така един от най-великите неща за масиви е, че те са случайни достъп, което означава, че не е нужно да погледнем през всеки блок. Ако знаете, че сте Искам това, което е в блок на две, може просто да се каже, дай ми блокира две. И това е защо те индекси са толкова важни, и това е, как ние всъщност достъп до тях. Така че в този случай, както видяхме преди, когато ние се дават стойности, в този преди имахме име и индекс искахме да имат достъп, нали? Така че, по същия начин, това е всичко, което можем направя, за да всъщност дръпнете, че от данните. Имаме името и ние имат индекс, който искаме. Така че в този случай, за линия тук на дъното, всеки знам какво прави, какво ще отпечата? Mmhmm? Точно така. Така че, да, това е просто итерации през. и е равен на zero-- можем да ходим чрез кода просто бързо. I е равно на нула, и е по-малко от три в този момент, нали? Така че, който проверява навън. И ние казваме, OK, печат е каквото и да е в температурата и. и е равна на нула, точно тук, когато за първи път обхождане, така че отиваме на това първо място, и ние казваме, добре, 65 е брой искаме да разпечатате. Така че това ще отпечата 65 и след това направете нов ред. Аз ще се актуализира, за да се отпечата 87. Тя актуализира отново, и това ще отпечата 30. Всеки готино? Awesome. Добре. Така че тук е един вид на една нещо, което се казва как можете да следите на резултат на някого и защо можете да използвате за първи начин за неговото инициализиране вместо на втория начин. И това просто преминава през. И забележи имаме клас размер от 30. И ние сме инициализиране това масив от цели числа, която е с размер 30. И тогава ние сме итерации чрез и ние сме иска от потребителя да въведе резултати за всеки от тях и след това да го разпределя за специфично място в паметта някъде в този масив. Cool? Това прави ли смисъл за всички? Mmhmm? Така таг определят размера на класа 30 е директива на Препроцесор, което просто означава, че тя има gets-- да се направи като процеса на съставяне. Можете да мислите за него като глобална променлива. Начинът, по който го правим е typically-- това позволява на вашия код да бъдат по-лесно да се промени. Така че нека да кажем, че нашият клас размер внезапно отива 30-15, ако не бях го определя по този начин, аз ще трябва да премине през цялата ми програма и промяна на всеки екземпляр на 30-15. Но с това съм се да се промени един място, и всичко останало промени. Ако някога искате да направите, хеш определят по дело където сте следене на някои определен брой точки за клас или сте с помощта на редица която ще се използва, като, през много дълга програма, това е по-добре да се определи, че в началото така че, ако някога го променя, можете да получите да се промени едно място, вместо 100. Да? STUDENT: Между това, че и просто обявяване [недоловим] над най-отгоре. ALLISON BUCHHOLTZ-AU: Така че трябва да се направи с efficient-- това е нещо извън обхвата на това, което може да покрие в този раздел. Тя трябва да направи повече с ефективност и как стоят нещата в действителност работи в процеса на съставяне. Ако искате наистина да знаем за това, аз съм щастлив да ви изпрати имейл с ресурси за това. Hash определи тенденция да бъде предпочитан за неща. И както можете да кодира повече, вид научи нюансите кога трябва да използвате глобалната срещу хеш определи. Но за момента, ти наистина не са да се притеснявате за това е че краткият отговор. Всеки добър с това? И също така, ако искате да се използва хеш определят, това е наистина важно да се отбележи, че името трябва да бъде във всички капачки. Ние не сме просто правиш CLASS SIZE да бъде драматична. Тя трябва действително да бъде във всички капачки. Cool. Нещо друго има? Ние сме добри? Lovely. Добре дошли. ОК, така че аз искам вие да погледнете при това и да видим дали можете да намерите бъг. Аз ще ви дам един намек. Това е някъде в тази за цикъл. Mmhmm? STUDENT: Трябва ли да бъде по-малко или равно на 2. ALLISON: Така че това би могло да бъде по-малко или равно на 2, или тя може да бъде по-малко от 3. И какво е основанието за това? STUDENT: The [недоловим], 0, 1, 2. ALLISON: Точно така. Така в масив с размер N, ние само индекси на п минус 1. Cool. И тогава можем да получим наистина луд и да получите многомерни масиви. Един от проблемите, когато аз го взех в моята години, необходими многомерни масиви, и аз мисля, че един от тях може да се наложи то тази година, така че да се чувстват удобно. Увийте главата си около него сега. Той ще се върне, за да общувам вас, но в по-готин начин. Така че можете да наистина просто мисля на многомерни масиви като масиви от масиви. Така че можете да вид мисля за това отгоре ред като първо парче на паметта. И това е най- второ парче от паметта, и последния ред е трето парче от памет. И в рамките на това, има един масив. Но, разбира се, е по-лесно да изобрази като този. Така че можете да го инициализира по същия начин. Това е знак, борда на три от три. Така имате три реда и три колони. Ние сме го представлява по този начин. И вие ще го получите достъп същия начин, колона по ред. И така, 1,1, както виждаме тук. Задаваме нула, нула там. 2,0 и 0,2. Така че можете просто да влезете them-- ако някой е правил линейна алгебра, по същия начин, по който достъп до елемент в на Matrice, това е същата идея тук. Така че можете да го отнасят обратно към математиката. Не е нужно да се притеснявате твърде много за това точно сега. Хубаво е да има експозиция, да знаете, че можете да го направите. Можете да създадете някои луд number-- можете създадете луди масиви се всичко, което ще кажа. [Недоловим] Той получава по-малко луд, но това е наистина страхотно. Awesome. И след това, така че ние имаме един пример тук. Той изчислява дължина низ. И така, как много хора са знаели, че конците, че използвате са само на масиви от символи? ОК, да. Така вие може да мислите, че не сте употребявани масиви и преди, но всяко време използвате getstring в CSView библиотека, вие сте всъщност просто питам за масив от знаци. И ние да се грижи за всички че в задния край за вас. Но сте използвали масиви, тъй като сте започнали. Ти просто не го знам още. И всеки път, когато имате характер масив или масив, който е съхраняване на низ, последното нещо, което винаги е това, което е нарича нула терминатор, който е това тук. И това е в края на всяка дума, която сте съхранение. Така че, ако искаме да разбера дължина на низ, можем да кажем, Е, вие знаете, съдържанието на този блок не е равно на нашата нула терминатор. Това означава, че има някои герой там, че ние всъщност се грижи за това е част от думата. Можете да увеличите дължина. И тогава, когато ние всъщност става дума за на края на думата, тя ще прекрати и тя ще се върне нашия дължина за нас. Mmhmm? STUDENT: Дали пространството брои като нулевата терминатор? ALLISON: Така че пространството е не нулев терминатор. Така че, ако имате multiple-- пространство всъщност е специфичен ASCII стойност. STUDENT: Какво е най- удивителен равен отново? ALLISON: Така че, това е, което се отнасят. Ако някога ме чуе в работно време, Аз винаги го наричат, като, бам равни. Така че взрив не е така. Така че това не е равен. Така че, ако се опитвате да да видим дали нещо е фалшиво, знаете ли, винаги го правя, каквото и трясък променливата е, и ако това е невярна, тя оценява за вярно и вие може да направи страхотни неща с това. Повече за това по-късно. Cool. Всичко добро там? Awesome. Така че сега е време вашите момчета до работят, тъй като аз съм разговарял. Така че аз искам просто да се създаде масив с числа един, два, три, и след това да ги отпечата. Не е нужно да се направи, като, Основната, дрън, дрън, дрън, независимо. Аз просто искам да се инициализира масива и след това да създадете а за линия, за да ги отпечатате out-- или по време на цикъл, до вас. Аз просто ще ви дам няколко минути, за да работят върху това. Отивам да си почине моя глас. Ако имате някакви въпроси, аз съм щастлив да се наоколо и говори с вас, момчета. Чувствайте се свободни да говорят един с друг. Спечелете повече бонбони. В действителност, аз просто ще разхожда с бонбони. Как е това? Искате ли такива? Някой друг в тази зала искам бонбони? Можете също така да отнеме повече от един, момчета. Вземете една шепа, ако искаш. Май, както добре. Всеки друг добър? OK. Също така, аз отивам да се създаде анонимен Google Форма, и вие може просто да се представят обратна връзка след всеки раздел ако има нещо, което искате да подобри или нещо, което искате направено. Ако аз съм малко прекалено весел за вас, мога да го смекчи. Ще създадете и изпратите, че до всичко, което след това. Добре. Така че нека да започнем малък. Как бихме могли да се инициализира нашия масив? Какъв е видът на нашия масив? Един INT, нали? ОК, така че това, което искаш да се обадите на вашия масив? Int масив, готино. Добре, така че ние имаме INT INT масив равни, и това, което имаме след това? STUDENT: [недоловим] скоби. ALLISON: скоби. И тогава вътре в скоби? Една запетая две запетая три. Cool. Така, че всичко е наред. Така че сега ние имаме за контур. Така в първата част на нашия за линия, какво имаме? STUDENT: аз се равнява на 0? ALLISON: Така INT и е равна на 0, и тогава какво е нашето състояние? Какво аз ще бъде по-малко от? По-малко от три, и как можем да актуализираме аз? аз плюс плюс, актуализирането по един. И тогава ние ще имаме някои ФОРМАТ на цяло число, и това, което е, че последната част, която всъщност е щях да кажа това, което ние трябва да печатате? Това ще бъде името на масив, който е INT масив, нали? И това, което е в скобите на INT масив? аз. [? Така че аз?] Обадих на моя например, но там ще отида. Не е толкова лошо. Всеки добър? Cool. Така че сме готови с масиви. Поздравления. Ти успя да превъртите през всички the-- нали? STUDENT: [недоловим] ALLISON: Да. STUDENT: Аз имам един въпрос. Възможно ли е трябвало да тире скоби? ALLISON: Така скоби трябва да се наредят с за линия, и след това всичко вътре в скоби трябва да бъдат разчленени. STUDENT: Добре, трябва ли за линия се отмества? ALLISON: The за линия не трябва да се отмества в този момент. Ако сте били в основния, ако ние всъщност има основна функция тук, тя ще бъде разчленена от основната. Но в този случай, това е добре. Да, въпрос. STUDENT: Трябва ли да има скобите след например? ALLISON: Да, ако сте инициализиране по този начин. Така че не забравяйте, това е втори начин за инициализиране на масив, където имаме скоби и след реалното ни данни, разделени със запетаи в него. STUDENT: Мислех, че е имало скоби за този пример. ALLISON: Не, те са скоби. Те са скоби. Ако сте го инициализиране че вторият начин, това е скоби. Ако трябва да се каже, Int example-- ако ние просто исках празен масив за цели числа, би било инт например конзоли три. Скобите представляват размер. Когато имате скоби, това е действителните данни сте пускането в нея по този начин. Ние можем да превъртите обратно много по-бързо. Така че в този един, това е само наш първоначалния масив, инициализация. И тук, ние сме индивидуално възлагане на петна към тях, така че това представлява индекс на нашия масив, който е защо имаме скоби. Но тук, ако забележите, ние сме оставихме скоби без размер, и ние го инициализира с действителните данни всичко-в-едно с тиранти. STUDENT: Така че, защо не сме скоби в този пример? ALLISON: Значи, в коя част? STUDENT: не бихме да речем, Int например скоби се равнява на скоби [недоловим] скоби за пример. ALLISON: О, съжалявам. Вие сте прав. Ние нямаме скоби там. Съжалявам момчета, ми лошо. Да, трябва да има скоби след пример. Вие сте абсолютно прав. STUDENT: [недоловим] не го прави. ALLISON: Не, вие трябва да имате скоби, защото в противен случай това е Няма да декларираме масив. STUDENT: [недоловим]. Съжалявам за това. ALLISON: За съжаление, трябва скоби след пример. Типо. Добър улов, златна звезда за вас. Също така, ако ви се иска един въпрос, ако вие просто ще ми кажат имената си, Бих искал това. Бих се радвал да бъде в състояние да Познавам всичките си имена. Аз не ходя на студ ти се обадя, аз всъщност просто искам да знам имената ви. Така че, моля да ми кажете всъщност имената ви. Лия: Лия. ALLISON: Лия. ОК, така functions-- Знам накратко те говорят за това по време на лекция. Така функции са вид на току-що като тези малки неща ухапване размер когато минаваш през входа, нещо, вълшебно се случва, и ще получите резултати. Cool. Така че всъщност използва Много от тях вече. Вземи INT, да низ, печат е. Това са всички функции където можете просто да ги наричаме, има много магически неща става във фонов режим че не е задължително да видите, и ще получите това, което искате. Или най-малкото можете да получите това, което се надяваме, което искате. И в общи линии точка на функциите, и една от основните теми на CS, е да се прекъсне вашия код в управляеми парчета. Когато започнете да пишете тези наистина дълги програми, или в Scratch, когато сте имали този велик идея за игра, трябва да сте в състояние да го прекъсне надолу, за да, като, добре, как да започна? Какви са малки парчета, които са ми необходими? О, аз трябва да попитам потребител за нещо. Сега аз трябва да отпечатате нещо. О, аз трябва да се изчисли тази стойност. И да научите как да се прекъсне си код и големите ви проблеми има в тези малки парченца и създаване на функции всъщност е един от най големите крайъгълни камъни на CS. Така че може да се мисли за функция просто като като черна кутия, магически черна кутия, че ще ви постави нещата в и ще получите някои изход. А останалата част от програмата не трябва да е задължително да знаете какво се случва в рамките на тази черна кутия. Всичко, което се грижи за това, което е влиза и какво излиза. Cool. Така че, защо функции? Organization-- както казах, когато сте занимаващи се с много големи кодови бази, как да организирате вашия код ще бъде много по-лесно, ако използвате функции. Тъй като вие ще бъдете в състояние да, като, ОК това, е това, което прави тази функция и Ето какво друго прави. И вие можете лесно да видите как всички те се вписват заедно. Така че това разчупване на всички тези управляеми подчасти. Така simplification-- Сигурен съм, че вие, момчета, Всички видяхме това, както казах, с Scratch. Можете да получите този велик идея и вие сте като, как цялата тази работа? Но ако подходим на парче, вие казвате, OK, как мога да направя един спрайт плаваш по екрана? Това е малко по-лесно. Така добро използване на функционалните марки кода си много по-лесно да се чете. Това го прави по-лесен за отстраняване на грешки, които като можете да получите във вашите късните проблемните комплекти, ти започваш да наистина Искам да бъда в състояние да направи. И те са също така по-лесно за проектиране и изпълнение. Можете да кодира една малка функционира сравнително бързо и се уверете, че тя работи срещу опитва да се създаде цялата тази дълга програма и тогава вид проверете и виж какво работи и какво не е. И след това повторно използване. Така само функции трябва да се пише веднъж, и след това можете да ги използвате толкова пъти, колкото е възможно. Така че това е, като, еко-приятелски в известен смисъл. Ако сте имали такива неща печат е, къде си Трябваше да напиша магията, която отива зад отпечатате е всеки път искате да отпечатате нещо, ще бъде доста болен и уморен от него до края. Едно от нещата, които ще научите в по-късните часове на CS, или един от най-добрите съвети, които получавам е, ако копирате и поставяте код, то вероятно трябва да бъде функция. Ако имате точно същото линии през целия си код, ако ги фактор се, кода си вероятно ще да, като, пет пъти по-къси и да бъде много по-лесно да се чете. И вместо да се опитвате да отстранявате всички тези различни места, където нещата може да се обърка, вие имате една функция че можете да се отстраните. И аз обещавам, много от това може да изглежда някак абстрактно сега, но както можете да получите в по-късно а по-късно създава проблем, тя ще направи много повече смисъл, и наистина да се управлява дома. Има ли някакви въпроси за функциите досега? Защо ние не ги използвате? Знам, че не съм намерила в гнидав пясъчен още. Така определянето на function-- точно като масиви, от които се нуждаем някаква of-- това е само общ изход. Така че това е функция, която е просто ще кубчета някакъв вход. И на следващата страница, всъщност, ние имаме всички тези страхотни малки неща тук. Така че, всеки може да чете че, от любопитство? Знам, лилаво и черно Може да е малко трудно. Но големите неща, за да know-- така че първо един точно тук е нашият вид замяна. Така че това говори за изхода на тази функция, когато в този случай, сложим в някои номер, какво сме получавате е, че редица кубчета. Така че тя трябва да бъде едно цяло число в този случай. Може би щеше да бъде двойно или нещо друго, по-късно, но в този случай, това е инт. С C, винаги се нуждаят от връщане тип. Това ще бъде едно цяло число. Тя ще бъде с плаваща запетая. Това ще бъде двойно. Но трябва да се уточни какво тази функция ще се върне. В противен случай тя ще крещи теб, и няма да се съберат. Ще бъде тъжно, и аз ще бъда тъжен. И това е просто не е добре. OK. И тогава ние имаме име на функция. И както можете да видите тук, като в има тази много последователен парадигма. Какво е вашето тип, какво е името, и след това нещо друго в края. Така че ние имаме нашия вид завръщане, нашето име на функция, и след това ние разполагаме с глава с нашия списък параметър. Така списъка на параметрите е, какво е тази функция ще се вземе в? Списък A параметър е просто синоним на това, което са нашите входове? И по същия начин, по който трябва да се определят нашата функция и го даде за връщане тип, всеки един от нашите входове трябва да има вид, свързани с нея. Така че ние знаем какво ни функция всъщност може да се работи. Така че в този случай, ние имаме някакъв принос Int. И отново, това ще бъде от типа и това, което тя търси. И тогава, както виждате, тук, ние имаме нашето тяло. Така че ние имаме някакъв изход INT, че е само на нашите входни сама пъти Самият пъти, което просто го кубчета. И след това да се върнем тази продукция. Така че, както виждате тук, имаме INT пъти пад пъти на ПНА, така го връща INT, които е обявен там. Така че всичко е сплотено. Всичко е щастлив. Вашата функция ще се изпълнява. И това е само общото нещо. Така че винаги има връщане тип, име, и своя списък параметър. Всяко нещо си списък параметър или вход, трябва да има вид, свързани с нея. И след като сте си тялото тук с каквото искате да правите с вашия вход. И тогава очевидно искам да се върне нещо. Понякога функции просто ще се върнат. Те всъщност не се върне нещо, за да можете да използвате. Но трябва да се върне по някакъв начин. И когато вие правите собствените си функции, ние може да получите в това малко по-дълбоко. Лично, ако искате, има много на различни неща, които можете да направите там. Всеки добър? Всичко в този списък, че ме искаш да разясни, че не разбирате? Всеки е добре там? Cool. Awesome. ОК, така че ние сме пускането всичко това заедно сега. Така че ние имаме някакъв инт куб вход, така че това е пълна програма тук. До сега, аз съм вид са ви дава момчета откъси, които могат да да става в рамките на една програма. Ние току-що се търси в функции. Но тук е цялата програма. Така че колко от вас си спомня Думата прототип от лекция? Cool. Имаме един. Какво е вашето име? Стеф: Стеф. ALLISON: Стеф? Добре, страхотно. Така че, помниш ли какво прототип е? STUDENT: Вие казвате [недоловим] преди всъщност се справят с нея. ALLISON: Помните ли защо? STUDENT: No. ALLISON: OK. Gold звезда. Така че, да, прототип имаме предварително, защото в противен случай, нашата компилатор ще крещи по нас. Той ще каже, OK, какво е това куб функция? Например, можете буквално да има ми каза нищо за това. Това е като, когато ходиш в една класна стая, и някой е като има викторина днес. И вие сте като вас Никога не ми е казал за това. Аз не съм щастлив с нас. Прототипът е основно като Вашата учебна програма казва, виж. Горе главите. Там ще бъде тест за този ден. Не се побърквам, когато стигнем до него. Ти започваш да се оправи. Така че всичко, прототипът се е кажете Основната, аз отивам да използвате тази функция. Обещавам ти, че съм го определяне по-късно. Не се побърквам при мен. Просто се съберат и да направим това, което аз ти кажа да. Така че ние имаме прототип има само за да ни съставител щастлив. И това е основно обещание, че сте задали тази функция по-късно и, че не са просто се обадите Този случаен нещо, което го не знам какво сте ще се прави. Така че в този случай, ние имаме основен тук. Ние инициализира някои число х. Това е два. Отиваме да отпечатате това, което е х. Отиваме да кубчета х. Както виждате, ние имаме декларация функция тук, че ние говорихме по-рано. Ще кубчета х, а след това, ако ние не забравяйте, функцията куб всъщност връща число на ни, която се съхранява в х отново, така че ние може да печата осем, или куб х точно сега. Това прави ли смисъл за всички? Ние сме добри? Добре. Awesome. Добре. Колко от вас, момчета Помнете това, така че това е основно просто си стак и си накуп само за визуализация на как се съхранява паметта тук. Така че ние просто искаме да направим уверете, че сте разбрали как те са представени в паметта. Ако сте приели класове като CS61 и такива неща по-късно, можете да се научим на това далеч по- в дълбочина, а това е наистина страхотно. Аз силно го препоръчвам. Но за сега, аз ще дам ви широк преглед така че не е нужно да се знаете гнидав пясъчен. Така на върха просто текст сегмент, който съдържа действителните нули и единици, двоичния код за това. И това се използва за съхраняване глобални променливи, ако имат такива. Като се движите надолу, ние има, както виждате тук, инициализират данни, неициализиран данни, и след това купчина. Така че ние наистина не говори около купчината точно сега. Ние ще се заемем с нея по-късно. За сега, аз съм просто ще размахва ръцете ми и ще бъда като, не е нужно да се знае за това сега. Но ние ще говорим малко по- малко за стека. Така че топчето е where-- имаме Увеличаване. Това всъщност е как програмата ние просто погледна случва в паметта. Така че това, което се случва, е, че всеки време ние наричаме функция, ние получаваме това, което се нарича купчина рамка, която е една от тях. Така на основните параметри. Така че това са неща, че можем да премине в основната. Така че те са точно тук, в дъното, защото това е първото нещо, което ние наричаме. И тогава стигаме до основните му местните жители, и когато казваме, че имаме предвид местните променливи които се съхраняват в главната. Така че местните жители тук ще бъде, като, х е равно на две в този случай. Защото това е локализиран на основното. Дали всеки си спомня обхват, преминавате, че в лекция? OK. Така че, просто променливите, които се инициализират в главната. Така че това е защо ние имаме основна [? вокали. ?] И след това в рамките на основното, което наричаме куб. Така ли е? Така получаваме друга рамка с параметри на куба. Така че в този случай, на кубчета в параметри вече са х, че минахме през, двамата, които минахме вътре. И тогава местните жители на куба, който е когато действителното cubing случва. И след това се връща. Така че това, което се случва, е като кубчето всъщност прави това, което е трябвало да направи, той се връща. Когато той се връща, тази рамка листа, и се върна до главната. И след това в главната, ние всъщност може да го отпечатате. Така че, когато сте се върне нещо, когато си функция връща, това е като преминаване на тези стойности, за да рамката под него и след това напуска. И нещата трябва да се изпълни в ред. И когато стигнем до по-големи програми, можем да направим охладител и по-сложно, диаграми. Но за сега, това е само общ преглед така че имате вид на разбиране на това, което се случва, когато се обаждате на функция и как всъщност изглежда в паметта. Cool? Всеки добър? Awesome. Така че това е тази, която е Просто се опитвам да сменяте неща. Както виждаме тук, имаме нашата функция прототип така че нашата компилатор не крещи по нас. Ние имаме някаква основна и ние искате да превключите х и у. Те не са направили това демо в още лекция, имат те? Те не трябва? OK. Така че ние ще отидем този най-кратко. Вие ще получите в този пример по- в дълбочина, мисля, че тази седмица. И тогава следващата седмица можем наистина потопите в защо това не работи. Така че ние имаме тази празнота суап функция here--. Така невалидни просто означава, че нищо не се връща. И ние имаме суап инт а и INT б. И ние имаме някои временни променлива, която е. а получава определен за и след това б получава възлага на TEMP така че и Б стойности сега са включени. Но, парцел обрат, това не работи. И част от него всъщност има общо с факта, че и Б тук, на тези, които се предават в тук, са всъщност копия на х и у. Така че, когато функцията всъщност се връща, превключва на копията, но не действителната X и Y години. Така че един от начините да се мисли за това е that-- преструват, те са суап. OK? Така че в основното, имаме х и у инициализират. Но когато ние действително отиде тези рамки с суап ние сме преминаване стойностите над към него, и те са се инициализира. И те само да живеят тук. Така и б живеят тук. И те се разменят. Но когато се върнем, ние не правим направя нещо с а и б. а и отпуск б с нашата функция. И така, х и у останат същите. Вие ще получите повече за това как да се определи, че и как ние всъщност се справят с това по-късно. Но това е само едно нещо някак да се има предвид. Използвайте го за бъдещето. Не се притеснявайте, ако това не се направи всички смисъл в света. Те са копия е най-голямото нещо. Ако ти започваш да се вземе нещо далеч от това, ти премина в копия. Така оригиналите остават същите. Всеки добър? Cool. Така командния ред аргументи. Сигурен съм, че в началото вие всички имали онези велики, като, Int основни кухини. И вие сте като OK готино. Аз наистина не се грижи. Това е точно това, което имам да пиша. Но в новите програми, особено в този pset, и защо е там тебешир на земята? Със следващата си pset, вие сте Ще се видим това. Int основен, Int арг С, низ дъга V, скоби. Така че, от това, което току-що научих днес, какво смятаме, че вторият параметър или че вторият елемент е тук? Това е масив. Какъв тип масив? String масив, да. Cool. Така че това е начина, по който започваш да се обявява за това сега. Дали някой си спомня какво е това престои? Не? Хм? STUDENT: арг в. ALLISON: Така арг в поддържа брояч. Това е инт. Това е номер, нали? И така, какво мислите, че този брой е? Да. Така арг в е броят на низове от които се състои от команден ред. Така че, ако бяхме да do-- всъщност, има примери след това, така че аз няма да го изпревари от себе си. Това е номер на низове, просто да си команден ред. Така че, когато го направите, като, точка, наклонена черта Марио, това е един низ, който го прави. В тази част, която действително ще бъде храна неща в командния ред, както аз съм сигурен, че вие, момчета, които Прочетох спец триона. Така че в тези случаи, може би ще има две или три аргумента. Това ще бъде полезно нещо, което да се използва. И тогава арг V, както казахме, е просто низ масив. Така че всъщност съхранява това, което сте въвели в командния ред. Така че ние имаме това. Имате някаква точка наклонена черта копирайте INFILE outfile. Така че, ако арг в е броят на низове че ние сме преминава в командата линия, каква е нашата арг в в този случай? Три. Точно така. Така че това, което е арг о нула? И така, какво е първото нещо, което ние сме се съхранява? Dot намали копие, точно така. И тогава вторият ще бъде INFILE. Третият ще бъде outfile. Така че какво да кажем за арг срещу три? Тя ще бъде нулев, тъй като това е В края на нашия масив, нали? Cool. И тогава какво да кажем за шестото? Това е един вид трик въпрос. Иш. Знаем ли какво е това? Това е неопределено. Ние нямаме представа какво би могло да бъде. Това е каквото е право след масива в паметта, и ние нямаме представа какво е това. И това е опасно да се докоснат до тези неща, защото за всичко, което знам, това е някаква част от паметта, която ви не трябва да бъде на достъп или нула. И това може да се направи луди неща. Тя се нарича по-индексиране си длъжен да си масив. Не отивам извън пределите на вашия масив, или лоши неща могат да се случат. Може да се върне и като законите на физиката, са били унищожени или нещо подобно. Cool. Това прави ли смисъл за всички? Не е твърде лошо. Така че сега, всички са любимата част, преглед pset. Уау! OK. Така че за тези от вас, които Не съм чел pset спекулация, правиш някои наистина готини неща с криптография. Ти започваш да се създаде Цезар Cipher и Vigenere Cipher. Вие определено трябва да прочетете спец, за да видите как те работят. И ако имате някакви проблеми около това, което всъщност трябва да се прави, моля те да говориш с мен, пишете ми или текст мен. Аз съм наоколо. Така че има три основни нещата тук, че ние искам да говоря about-- просто вид за удължаване на срока на лекция. Неща, които може би не знаете за, полезни съвети и инструменти. Така че ние ще направим бърз преглед на ASCII, защото това ще бъде супер важно за Cipher Vigenere е. Отиваме към превръщане на командния ред входове, които ще бъде много полезно за Caesar Cipher. И тогава по модул. Cool. Така че, ASCII символи карти до номера. Това е страхотна графика. Трябва да имате това отметка някъде. Вие ще го искат за първата си средносрочния. Аз съм сигурен, че всеки има тази диаграма на средносрочните си лист. Така че това се учи. Обичам го. Дръжте го под ръка. Това ще бъде от полза. И всичко това е е кодиране който съпоставя азбучен, цифров, и други знаци номера за нашия компютър. Защото, разбира се, в край, всичко, което се съхранява ще се получи, преустроен до нули и единици, така че ние трябва по някакъв начин да представлява текст и символи, които всички ние сме свикнали да виждат като някакъв номер. Така че, както виждаме тук, имаме главни букви A, която е точно там. Това е 65. И малки букви A е 97. Така че можете да разбера out-- както казах по-рано, ако сте имали набор от множествена струни, това, което всеки един от тях има нула терминатор. Това ще бъде място. Space има своя собствена special-- Забравя къде е тук. Ah. 32 е пространството. Така че всичко, карти за него. Така че ние имаме ASCII математика. Pro tip-- в Vigenere е, може да се изкушите да конвертирате вашите номера на числа, но всъщност е по-добре на практика за да може да се използва герои като този когато вие всъщност ги манипулира. Така че, ако искате да използвате номера, можете. Но по-добър начин, или по начин, който ние сме склонни да ви харесва момчета, за да го направя, е по този начин, когато сте всъщност изваждане знака. Така че аз ви искам момчета до вид разбера тези навън. Защо не се опитате всеки един? Така че първото, на третата и петата. Защото искам да се уверите, че ние говорим за всичко, което трябва да говорим. Аз съм просто ще кажа, един от важни неща to-- О, чакайте, вие, момчета, не съм виждал този човек. ОК, така направи първата тройка. Нека да направим това. Защото ние трябва да говорим за модул. Знам. Math е трудно. Можете да използвате калкулатор. Това е ОК. Или издърпайте нагоре таблица ASCII, защото вие вероятно ще искате това. Cool. Така че аз бързо ще ходи вие през тези. Така че хората са ASCII таблици издърпани нагоре? Каква е нашата цифрова номер за малки букви A? STUDENT: Seven. ALLISON: Значи малки букви A е 97 и главни букви A е 65. Така 97 минус 65? АУДИТОРИЯ: 32? ALLISON: 62, да. Така че в този случай, това, което ще го отпечатате? Това първият? Ако имаме процента г, какво би, които показват? STUDENT: A номер. ALLISON: Ние сме печат от действителен брой. Така че, ние всъщност ще да отпечатате 32 тук. И ако това беше на сто в, 32 ще ни даде пространство. Така разбира, че знаци могат да бъдат отпечатани както като брой, и като действителните символи Наистина е важно, и изплащане внимание на реалните типове това, което правим тук. Cool. Така за всеки един от тях, какво ще се печат? STUDENT: A характер. ALLISON: A характер. Cool. Така че, ако вие искате да знаете, могат да работят те по своему. Ако имате проблеми, пишете ми. Но второто ще отпечатате малки букви б. Третата ще отпечата на главни Б. Четвъртата ще отпечата от главна C, и последният ще бъде с малки букви A. И последният one-- ние всъщност ще да влязат в какво луда процента знак дори е в няколко пързалки. Така че опитайте тези по своему. Ако имате проблеми, моля те да говориш с мен. Ако сте обикновено в Adams D зала, най-вероятно ще ме намерят наоколо. Така че, atoi. Колко от вас са виждали това функция или чували за него изобщо? Някой? Cool. И така, какво всъщност означава е ASCII в цяло число. И така, какво можете да направите, е, с Цезар, за тези, които четат спец, ти започваш да се направи точка черта Caesar След като напишете програма, и след това започваш да въвеждане на някакъв номер, който искате да кодирате си тайно послание с. Но, ако ние си спомняме, всички от нашия суровини се съхраняват като струни. Така ли е? Имаме арг срещу масив това е всичко тип низ. Така че, ако просто се опитват да дръпнете, че един, че ще мисля, че един или независимо от броя ви е всъщност символ. Така че, ти започваш да се получи някои луди резултати. Така че, ако наистина искате да се превърне това в цяло число които можете да използвате, за да се манипулира Вашата дума или вашето съобщение, вие ще искате да използвате atoi. atoi просто преобразува низ с Int. Така че, ако имаме поредица от 12, ако ние наричаме atoi на 12, или каквото и да е вход, всъщност ще се върне на вас число. Не, чийто характер или низ 12. Което, когато започнете да добавя, че до номера, ще бъде много по-различно, защото низ 12 някои луди номер в ASCII, но числото 12 всъщност е 12, което е това, което искате. Значи вие искате да се уверете, че да се използва atoi. Вие ще искате това в Цезар, защото нужда от INT, предоставена от потребител в командния ред. Но когато го сложите в командата линия, тя се съхранява като низ да започнем с това. Това прави ли смисъл? Не е задължително нужда от това за Vigenere. С Vigenere, както казах преди, трябва да се опитате и да използвате ASCII математика, който изглежда по-скоро като това, когато сте в действителност като се използват символи, че ние сме дадени за вас. Cool. Всеки добър там? Awesome. Така модул. И какво, ако са ви дали този огромен брой на Цезар? Вие имате тази идея, че ако сте на Z и сте даден номер две, това означава, че need-- Z се превръща в секунда писмо след себе си, нали? Така че ще трябва по някакъв начин да обгърне, и модул е ​​начин да се направи това. Така че всичко, което прави, че е дава остатъка на разделението на Първият брой от втория. И ние имаме няколко примера за направи, че малко по-конкретен. Но общо взето, можете да използвате модул, когато искаме да направим нещо разгънатата. Така че, ако искате само за числа от едно до осем, можете да използвате модул на всеки друг брой, и то винаги ще върне редица от нула до осем. Така някои examples-- ако имаме 55 по модул 10, той просто дава остатъка от 55, разделена на 10, което ще бъде 5. И след това три модул пет, всеки, предполагам, какво ще бъде? Три. Така че, ако имате по-малък номер, преди да на по модул, той не може да отиде по-равномерно. Тя е равна на нула. Така че просто се връща на самия номер. Така осем модул осем ще бъде? STUDENT: Нула. ALLISON: Нула. Тъй като той отива в равномерно. 16 по модул 15? АУДИТОРИЯ: One. ALLISON: Cool. И тогава този последният е просто да показва you-- може би се чудите, OK, това, което е от порядъка на операции тук? Смятате ли да разделим на първо място? Имаме по модул на първо място? Така модул притежава същото предимство като подразделение или умножение, и лявата му асоциативно. Така че е по същия начин. Вие винаги ще направи скоби, след това умножение, деление, и модул по ред от ляво на дясно. Така че стандартните правила. Просто го постави в същата категория като деление и умножение. Така че в този случай, ние ще има 1 плюс 2 ни дава 3. Ние се размножават, че от 2, така че да получите 6. Ние по модул, който от 2, което ни дава? STUDENT: 0. ALLISON: 0. И тогава ние добавяме 2, така че ние получите 2 в последния случай. Така modulo-- вие определено ще се мисли за начини да се включат че когато сте опаковане около азбуката. Ако сте на Z и вие трябва да се движат изпраща три места, за да стигнем до C, там е, че цялата концепция увиване около. Така че аз ще го оставя да вие, за да разбера как точно ти започваш да се да го използвате. Но определено е полезен инструмент за pset тази седмица. Аз наистина харесвам това. Това е една от любимите ми psets. След това, след като го направи, ако имате приятели, можете да, като, изпрати един от друг тайна съобщения и се уверете, че тя работи. Защото това ще го или каквото и декриптиране. Много забавно. И това е в края на раздел. Завърших рано. Аз все още имам 15 минути с вие, момчета, така че ако има нещо, които бихте искали да отидете над по-нататък, аз ще бъда щастлив да го направя. Всякакви други въпроси, свързани с Вашата pset за тези от вас, които са започнали или прочетете спец. Всичко, което сме говорили за в последния час и 15 минути, в които ще ме обичат някак да преповтарям, щях да бъда щастлив. Или можем да го наричат ​​затваря, и можете да оставите всичко и да отнеме повече бонбони с вас като отидеш. Но, ако има такива спиращ въпроси, моля да ме уведомите. Можете също така да излезе и говори с мен след това. Обещавам да не хапят. Нещо друго? Всеки е добре? Усещане на всеки човек като те могат да се справят с този pset? Ти започваш да се оправи момчета. Работно време са там поради някаква причина. Cool. Добре. Е, в такъв случай, благодаря всички ви много, че дойдохте. Надявам се да се видим следващата седмица. Няма да има повече бонбони. Може да има други готини неща. И аз очаквам с нетърпение да се подготвите тази година, за да знам всичко за теб.