[Powered by Google Translate] [♪ бръмчене ♪] Така че, за да ви запозная с какво имам на екрана; това е един от инструментите, които ние разработихме през лятото; тя се нарича CS50 пространства, и това е нашата съвместна кодирането на приложението че отиваме да се използва в секции. Това е много готино. Някой от вас CS50 план? Остави ме да извадя, че в друг раздел. Run.cs50.net Така ако отидете run.cs50.net можете да видите, това е във вашия браузър начин да всъщност код - напишете C код, и след това да го стартирате, така че и двамата го съставя, той работи, а след това се връща изхода за вас, така че това е вид на готин начин да експериментирате с някои от кода, че Дейвид преминава в лекциите и даваме върху проблемните комплекти без да се налага да огън на уреда. Така че, каквото и да Spaces прави, че е различно от това ако се върнете към този раздел, Пространства е CS50 план, като виждате тук, но ако превъртите и погледнете от другата страна на прозореца, виждате, аз съм единственият човек в това пространство, но това, което аз ще направя, е да попитате вие ​​да се присъедините към тази пространство с мен и ние ще стигнем до код по същия малък прозорец, акции код помежду си, и да говорим за разликите между нашия код. Така че това е вид готино нещо - така че да се присъединят, ако желаете да посетите тази връзка тук на върха че съм освети, можете просто да напишете в apps.cs50.net/spaces/vqcspSnO. Добре, така да започнем, Отивам да ви дам малко на този тур. Ще направим някои глупави малки кодиране с него в началото, просто така, че всички доста получава усещане за това, което е като но това, което съм направил - или това, което аз съм на път да направя точно тук е - Отивам да взема кода, който съм написал тук, които, както виждате, в момента е празна; тя не прави нищо. Котел табела код, ние ще го наречем. С малко да направя коментар. Отивам да го спаси чрез натискането на този бутон Save. И какво прави подчерта тук накратко, че преразглеждането освен зеленото поле, и сега, ако търсите за мен в пространството, щракнете върху моето име, можете да видите, че аз имам тази ревизия точно тук, а ако кликнете на това преразглеждане, тя ще се зареди този код във вашия Space. Така е всеки зареден този код в тяхното пространство? Добре, ако все още не сте, отидете напред и да го направя, и после какво искам вие да се направи в този малък, за да направя раздел е да напишете малко ФОРМАТ за себе си, Така например, бих изписал ФОРМАТ ("Моето име е Нейт"); и след това щях да напиша "Аз завърших през 2009 г. от Станфордския " и аз бих се радвал да чуе за коя година сте в училище, независимо дали сте в колежа или бизнес училище или друго училище на Харвард, това, което учи, ако е известен още; ако това не е известно, това е много готино. Не се решават, докато бях в края на ми второкурсник година. и след това бих искал да знам нещо лудо, което искаш да ми кажеш или нещо за класа или просто нещо друго. Когато приключите с писмено, че с малко ФОРМАТ ако ще спестите преразглеждане или по-скоро първо се уверете, че можете да я изпълните и че тя се отпечатва точно това, което искате да отпечатате, и тогава, ако отидете напред и спести, че преразглеждането Преглед на бутона Запиши, това първо малко момче тук, и ние ще доста премине и да направя малко въвеждането по този начин. Така че просто трябва да натисне бутона за възпроизвеждане, който е тук в горния ляв ъгъл, , така че тази пиеса бутон в горния ляв изпратите код на нашия сървър, където тя получава съставя и след това да изпълните. Така че това, което е доста луд за това е този код всъщност не е на вашия компютър; всъщност се изпращат по Интернет. Как върви, Шарлот? >> I - добре. Съм - Мисля, че съм изпитват трудности да го запазите на сървъра такава, че да може - мога да стартирате програмата. И тогава, когато се опитам да го стартирате, тя казва, че има грешка. Обявена като вирус, който вече не е там. О, нека да видим, може да ви удари Запиши отново? Аз го виждам на екрана. >> Точно така, добре, така че това е, което имам. И аз не знам защо не ми позволява да го стартирате. О, добре, съжалявам. Можеш ли да обясниш защо - какво не е наред - това, което не е работил с него? >> Да, защото аз не виждам, че е имало последния ред, където има все още променлива , че не е декларирал, което не е имал намерение да е там. Да, перфектно! >> Сега, ако аз го спаси, мисля, че тя трябва да работи. Сега, след като сте го запазили, тя работи; страхотно. Така че да, тъй като ние преминаваме през така че това, което се случва, Аз съм просто ще повторя това за камерата. Това, което се случва, е, че тази променлива е остана след - Предполагам, че сте изтрили някои други неща , където са обявени за и така това е хвърляне неща и не ви позволява да го стартирате. Така че това е точно това, което искаме да направим в раздел е да има хора се опитват писане на различни части от код, съставянето на този списък, да видим какво работи, какво не, и след това доста се говори за тези неща, защото те са спъване точки Аз все още срещат, Аз все още правя много глупави неща през цялото време, и аз не знам защо тя не работи, така че нека издърпайте нагоре преразглеждане на Шарлот 3, и ние ще го изпълним. Така че, когато аз тичам, че сега имам си код тук Мога да я увеличите, натиснете бутона Run, качени, то се натрупва, той работи, казва, че се проведе успешно, и ако превъртете надолу виж Шарлот е младши Адамс Къща психология, средно по икономика; страхотно. Радвам се да се запозная с вас! Страхотно. Добре, да преминат, да вървим към Даниел, отидете на ревизия 3, съставят, стартирайте; защо не ни кажете малко за себе си, Даниел? >> Обадете ми Дан. Отивам да бизнес училище срещу вас, момчета, и аз бях в морската пехота преди тук и всичко това е ново за мен, така че да. Не се чувствам зле, аз съм на 30 и не знам някое от тези неща. Страхотно, благодаря, Дан! Добре, имаме друга Даниел. Отиваш на Даниел ще си представим, Даниел? >> Разбира се, аз съм Даниел. Аз съм второкурсник в Mather точно сега. Аз съм се концентрира върху правителството, но аз исках да взема CS50, защото съм чувал страхотни отзиви за клас и аз никога не сте опитвали CS преди. Превъртете надолу тук и да се покаже - прохладно. Преместване, Джаред. Как върви? >> Добър, как сте? Както можете да видите, аз съм младши концентратор философия в Елиът, родом от Южна Калифорния, и аз съм като CS50, защото ми харесва логиката от него, и изглежда наистина страхотно да правят неща на компютъра, така че. Страхотно, където в южната част на Калифорния? >> За един час от [чува, малък град се чува. О, да, баща ми е от Redlands. Готини неща. Добре, Джими, как върви, Джими? >> Добър, как сте? Справя доста добре! Разкажете ни за себе си. >> Аз съм първокурсник, и аз не съм съвсем сигурен какво съм специалност но аз съм доста склонност към икономиката. , Като Даниел преди мен, аз никога не съм правил всеки CS, но това звучи доста хладно. Аз съм родом от Чикаго. Страхотно. Така че проверете си разпечатка тук. Исках да попитам, този печат, както сте очаквали? >> Не, забравих да отпечатате нов ред. Аз всъщност забравих, че когато се пише нещо за първи път. Това е вид болка, за да се помни, да се сложи ръчно. Щеше да е хубаво, ако просто знам, че това, което исках. Добре, Кели. Уау, имаме две Kellys; 2 Даниелс, 2 Kellys. Така Kelly - да отида от Кели Рен? Добре, страхотно. Или Кели, искам да кажа. >> Така че, да, така че аз съм Кели. Аз съм второкурсник в Pfoho. Имам електронна поща днес, че все още имам 7 седмици, за да обяви концентрацията си, така че аз се опитвам да не мисля за това, и аз като печене, и Craisins. Аз нямам опит с повечето от CS; Сама се научих как да се изгради уеб сайтове, когато бях много млад, но мисля, че най-вероятно научи себе си погрешно много пъти. Надявам се, че ще научите малко повече и - да. Страхотно, добре, благодаря ви. Нека отидем в другата Кели; Аз нямам нищо - каза ли нещо тук? >> Чува] Ето това е! Sweet! >> Добре, така че аз съм Кели. Аз съм първа година студент. Аз съм специалност "Mind, мозъка и образованието. Завършил съм в Franklin & Marshall College през 2008 г. със специалности по психология и социология и незначително на френски език. Взимам CS50 защото аз съм се интересуват от получаване на докторска степен в областта на неврологията и аз се чувствам като това ще ми помогне да разбера технологии, които се използват. Страхотно. Преместване, Микаела. Е, че правилното произношение? Добре, страхотно. >> Аз съм Mikhaila. Съм второкурсник в Kirkland House, и аз съм се концентрира в машиностроенето. Аз наистина харесвам колоездене, построен наем това лято. Аз съм като CS, всъщност, като изискване за концентрация, но знаеш ли, мисля, че все още е готино нещо на инженерната клас. Страхотно сте построили под наем това лято? >> Да. Уау, като рамката и всичко това? >> Uh-hunh (положителен). Уау, това е наистина страхотно. >> Чува извън камерата чат] [Смях] Да, това е било толкова дълго време. Човек никога не знае, нали? Е, хладно и благодарение, Mikhaila. Добре, Миси. >> Моето име Миси, аз съм първокурсник, така че това означава, че аз не знам нищо! Искам да се концентрира по астрофизика. В CS50, Имам чувството, че определено ще помогне с това. Странен факт за мен е, че съм национално заверен пожарникар. Wow! Как се случи това? >> Присъствах академия и премина през ада за много седмици и имам сертифициране. Уау, поздравления! Това не е малко постижение, със сигурност. Добре, сега ще ми направиш. Аз съм следващата в редицата. Съм го стартирате. Така че моето име е Нейт. Бях випуск 2009 в Станфорд. Бях основните символни системи , който е подобен Mind, Brain, Behavior концентрация тук, но това е вид на комбинация от компютърни науки, лингвистика, психология и философия. Вид - Да, много странни неща, но беше страхотно, и след това, което направих на господаря ми по компютърни науки, както добре. Така че аз съм нов в Харвард през тази година. Аз наистина исках да се получи в процеса на преподаване. Прекарах последните 4 години в Станфорд TA-Наука компютърни класове и така Дейвид позволи ми да дойда на и аз ще се помага с CS50, така правя с това през цялото време, аз не съм в училище град. Това е било забавно. Надяваме се, че ще продължи да бъде забавно, аз съм сигурен, че ще. Добре, Сам. >> Моето име е Сам, аз съм второкурсник в колежа, законът изрично. Моята специалност ще бъде историята на науката, вероятно и Ves средно, и любимият ми цвят е жълт. Не е необходимо да се произнася или нещо, но това е един добър цвят! И Стела. >> Здравейте, аз съм Стела, аз съм първокурсник в Grays. Аз нямам представа какво съм съсредоточена в още така CS50 е просто вид на случаен принцип, което е интересно. Fun Всъщност, Джими беше пръв приятел на Харвард мой, защото и двамата сме от Чикаго. Охлажда се и Грейс - това е трябвало да бъде наистина хубаво, нали? >> Мислех, че се чува]. О, да. [Не се чува / извън камерата чат] Добре, аз съм все още се учат, все още се уча. Така че ние имаме нещо друго, което е нещо интересно тук. Да, аз просто се питам, имате ли идея, която става тук? Знаеш ли как да се тълкува това? >> I е трябвало да се постави точка и запетая след всеки един ред. Това е вид болка. Понякога тези точка и запетая може да бъде истинска болка, за да се проследят. Така се оказва, че специална програма, ние използваме тази година, за да съставят нашия C код се нарича звъня, и причината да са започнали да използват звъня тази година - защото не сме използвали тази програма в миналото; ние сме използвали още един наречен GCC, който е много популярен - Звъня всъщност ви дава съобщения за грешки, които имат смисъл. Това казва: "очаква", "след изразяване", и дори ви разказва израз, след което се нуждаеше от точка и запетая. Така са го поправя? >> Да, точно сега. Awesome, да ме уведомите и ние ще го издърпайте нагоре, и ние ще го изпълним. Но да, въвеждането на тези точка и запетая е вид болка. >> Аз го поправя, така че аз мисля, че тя трябва да работи. Страхотно - ревизия 3. Това прилича на него. Добре, сега, ако го изпълним, там тя отива. Готини неща. Добре. Така че благодаря за това. Това е страхотно да се срещнем момчета. Какво ще правим сега, е да прекара малко доста гмуркане в секцията проблеми които идват от проблема, от тази седмица и ние ще направим това за по-голямата част от секциите за остатъка от срока, и след това ще спести последните 15, 20 минути, или така да се говори за проблема си постави и всякакви други въпроси, които имате като цяло за класа. Това каза, това, което наистина искам да направя са всички участващи използване на пространства неща, хвърляне в кода, хвърлят в предложения, и говорим за това, когато нещата като тази почивка или не работят, просто защото това са неща, които Знам, че се натъкнах , когато започнах кодиране, и бяха наистина доста разочароващо на моменти защото ако това е като 2 часа преди вашия проблем се дължи - само за разкриване, Аз не започнете програмирането, докато бях второкурсник в колежа. Това е вид на това странно, непознато нещо , която чух, беше доста хладно и аз също чух, че може да бъде истинска болка в задника ако сте пропуснали една точка и запетая и това е единствената грешка запазване на програма от работа и Ви помага да заспя, така категорично, ако имате подобни въпроси, ако имате притеснения като това, нека да знаят, защото искам да направя това е добър опит за вас, момчета. Така че бяхте всички изтеглени проблема, все още? Малко знам къде е тя? Добре. Така че ние ще отидем да cs50.net, защото аз не разполагат с него по тази сметка, издърпайте нагоре проблемните комплекти, издърпайте нагоре проблем набор две, и ние ще разгледаме днес в стандартното издание. Ще спра спецификацията тук. Превъртете надолу. Така че ние ще започнат да търсят в този раздел на въпроси. Вие гледания тези шорти? Добре. Така че има шорти на вериги, която се извършва от Томи, един от стипендиантите на главата на преподаване. Има един на обхвата, Вярвам, че от друго учение човек на име Дейвид и след това на Цезар Cipher направено от Дейвид. Те са много готино. Бяхте гледат техните шорти досега? How've те? Бяха полезни? Добре, добре да се знае. Ако не сте, може да се каже така. Но преди да го направите, вие погледнете на тези въпроси изобщо? Нека поговорим за това малко. Така че ние въведохме през последните няколко седмици в лекцията брой на различни вериги. Има линия по време на цикъла и след това направи линия, докато и в лекцията, ние говорим много за как тези вериги са доста сходни в много отношения, и можете да направите много от същите неща с линия, докато че можете с цел цикъл. Просто трябва да използвате правилните комбинации от променливи и такива. и така наистина реална разлика между всички на примките е, че понякога те са по-полезни да ги използват по едно време, отколкото по друго време. Така например, линия, докато се различава от направи линия, докато. Ли всички да се чувстват като те имат добра дръжка, когато направи линия, докато е по- полезно или каква е разликата? >> Мисля, че разликата е направи линия, докато писти - Не знам точно това, което е терминологията, но серия от функциите в рамките на цикъла. Те автоматично го прави на пистата най-малко преди да го проверява състоянието или цикъл, докато само ще го стартирате, когато непрекъснато работи - без значение дали са изпълнени условието е. Да, не, че има смисъл? Нека да разгледаме най-малко код. Така че просто да повтори въпроса, или отговор, а Отговорът беше, че цикъл, докато ще провери, ако условието , които сте задали е изпълнено , преди да проникват в тялото на цикъла за първи път, като има предвид, че не се прави, докато цикълът ще се стартира автоматично на тялото на цикъла, е това, което ние го наричаме - това е странно терминология, но ако някога съм казвал нещо, което няма смисъл, нека да знаят - контур тялото е, че неща, които ще ви постави в между фигурни скоби. Направи линия, докато, тялото си да се изпълнява поне веднъж, и след това условие, получава проверени преди тя работи всеки следващ път. Така че всъщност, Сам, Имаш ли нещо против написването на прост линия, докато в пространства? >> Как ли нещо като направи нов ...? Просто да изтриете каквото имате там. Да, ясно. >> Е, аз вярвам, че съм с този - кой искате, а, или искаш ...? Да, просто се малко вярно, отпечатайте нещо. И нека видим. Александър, аз осъзнах, че никога няма да въведе. >> О, това е добре. Ли - може да кодира направи линия, докато за нас? >> Да, ще опитам. Добре, ние просто ще дръпнете тези на екрана, така че някак си да контролираме какви са разликите. Така че тук е това, което Сам е направил. Той има цяло число, наречено аз че той е инициализиран до 17. Тогава той казва, докато (INT I = 17) ФОРМАТ ("Моето име е Сам."); Така че това, което се случва, когато стартирате този код? Има грешка; какво прави грешката? Нека си го издърпайте нагоре и да говоря за това. Възникна грешка, тя казва. Нека превъртете надолу. Така че ни даде тази грешка, и тя каза, "Хей, аз се очакваше израз". Това е доста загадъчно. Да, точно - и отново, ще има още една малка грешка, която ние ще хване само една секунда. Но това е още една от такива странни терминология неща, така че това Int I = 17 не е израз. Как изглежда тя прави е, че е обявяване цяло число Обадих и то, за да е равна на 17 или по-скоро, поставяйки 17 в тази вътр съм се обаждал. И това няма смисъл в контекста на това, докато контур. Това няма смисъл, както ще видим, в контекста на цикъл, защото за контур декларации се започне с това, за вътр аз се равнява на нещо и по-нататък. Така че - поправите нещо, нали. Here It Goes; страхотно. Така че сега нещата изглеждат малко по-различно. Няколко неща са се променили. Може ли да ни кажете какви неща са се променили? >> Извадих вътр, така че няма декларация чува вместо задача. Един знак за равенство, сложих две еднакви знаци, което означава, че се равнява. Страхотно. Да, и какво от това Сам пък бе той извади на вътр това беше тук по-рано, така че, ако просто погледнете това - това е това, което беше по-рано, се казва в ПНА, която го обявява - така че ние извади тип. Има ПНА, Чар, низ, кратко, тези, които се наричат ​​видове. Така че извади тип и след това по-рано, Той току-що сингъл знак за равенство и това, което той казва, е проблематично за това е , когато имате един знак за равенство, това е оператор за присвояване. Това не е тестване дали или не две неща са равни. Това е всъщност създаването нещо равно на нещо. Спретваш номер 17 в променливата I. Така че, за да се направи този вид сравнение, трябва да се използва два пъти равен, , което е един вид на странно нещо но е доста често срещана грешка. Така че едно друго нещо, аз ще посоча, ако нямате нищо против, е, че в нашата функция в INT главната ще видите, че тялото на нашата функция се компенсира от лявата страна от четири пространства или табулация. Причината правим това е само за четивността. Както можете да видите тук, в линия, докато Сам той не е тире изобщо, и това не се отразява на функционалността на кода. Тя ще продължи точно същото. Така например, ако отидем до върха тук и натиснете бутона за възпроизвеждане, ще го строят, че ще го изпълним, и какво ще се случи? Защо все още твърдят, че работи? >> Защото това ще продължаваме да повтаря здрасти. Точно така, и защо го повтаряха здрасти? >> Защото целочислени никога не се променя, така че винаги е 17. Да, точно така нека да видим, след като ми напомня на името си отново? Джими. Така че Джими каза, че Причината за това продължава да се повтаря Здравейте отново и отново е така, защото това състояние винаги е вярно. Ние никога не се променят стойността на I. Ние никога не се променят съдържанието на това, което се съхранява в тази променлива. Така че в този момент е появила тази грешка, че вашата програма генерира прекалено много продукция, и ако ние превъртете надолу и вид погледнете какво става тук, можете да видите, че е здравей, здравей, здравей, здравей, здравей, здравей, здравей през целия път. Страхотно. Така вид обратно към отправната точка че има вдлъбнатина тук в тялото на линия, докато не засегне нищо. Програмата все още се завтече добре. Типично за добър стил - и това е нещо, което търсим в проблемните комплекти - Ви молим да тире от четири помещения, които можете да направите само с натискане на клавиша за табулатор или чрез ръчно пускане в четири пространства себе си. Охлажда се, добре така че нека се върнем и да погледнем Александър направи, докато. >> Просто доста малко неприятности. Добре, нека да работим през него. Е ли страхотно? >> Да. Добре, така че тук ние тръгваме. Това е кодът, че Александър е написал. Ходите ли на Алекс - добре. Така че тук е, че Алекс е написал код. Така че, ние имаме нашата декларация на основните точно тук, и тогава ще имам тази целочислена променлива Обадих да бъде обявен точно тук. Имаме направи изявление и след това тялото отново с тези скоби, така че това е тялото на направи, докато - нека ми я увеличите по този въпрос, така че е по-разбираеми - и в тялото, ние се опитвате да отпечатате "това е тялото", + +, да увеличите съдържанието на I и ще направим това докато не стане да бъде 3, и след това нашата програма свършва. Така че това, което се случва, когато стартирате тази програма? >> Очаквах идентификатор. Добре, изграждане, експлоатация, възниква грешка. Какво се случва? Превъртете надолу, получаваме това до известна степен загадъчен търсите нещо, точка и запетая след най-високо ниво декларация. Това е доста странно. Някой има ли представа на какво може да се случва? Малко е странно, да. >> Чува да бъде обявена извън скобите? Така че не се прилага тогава, когато използвате скоби? Така той обявява този човек извън от които скоби? О, тези момчета - фигурни скоби? >> Да. Да, точно така. Така се оказва, че не можете да декларирате променлива тук по този начин. Какво може да се опитвам да направя е - го отрежете от там - можете да го поставите в рамките на фигурните скоби тук или друга алтернатива е да го поставите напълно извън. И така, те - в зависимост от това къде действително пуснати декларация на тази целочислена променлива, можете да получите две много различни видове променливи; , когато е извън основната, това е, което ние наричаме глобална променлива. Това е извън обхвата на някоя от функциите - това не е в рамките на функция - като има предвид, че ако го сложат на основната, искал точно тук, а след това тя се нарича локална променлива, защото това е местно, така и обхвата на основния. И ние ще говорим малко повече за това, какви са разликите между два вида и защо да използвате различни видове променливи, но за сега, може просто да запази местната всички променливи, защото ние нямаме никаква нужда от глобални променливи. Добре, така че това е едно нещо точно там. Да пуснете отново, да видим какво ще стане. Run, получават още една грешка. Увеличи малко, какво ще получа? Ние се очаква скоби след / а. Някакви идеи какво става? Дан? >> А след това скоба и след това - Аз не знам, ако трябва да redeclare вътр, но време (I <3). Точно така, да. Така се оказва, че Дан е точно така. Ние не трябва да се сложи този тип тук отново. Ние може вместо това да убие тип и просто правя това. Добре. Ще я увеличите обратно, опитайте още веднъж. Виж това, тя работи успешно. Ако ние превъртете надолу, това е тялото ", отпечатан от три пъти. Това е доста сладък. Браво, браво, момчета. Браво. Как ще досега? Достоен крачка? Добре, готин. Така, както ние вид на гърба на първоначалния въпрос, ние - и сега, ако ние виждаме разликата, ще видите, че в това направи линия, докато, състоянието идва последно. Така, докато компютърът чете програмата тъй като на програми се изпълняват вид в този последователен ред, , когато те буквално започват с първа линия на главния и след това изпълни линия 6, ред 7, ред 8, 9, ред 10, ред 11, всички тези неща в горния десен ъгъл ще се изпълнява веднъж преди да можем някога да тествате това условие, за да се види дали или не - или съдържанието на АЗ, а - са по-малко от 3 броя. И само ако някога стигнем до линия 12, съдържанието на АЗ са по-малко от 3 ние всъщност скочи обратно до линия 7 и след това повторете процеса, и след това ние тестваме състояние отново и отново и отново. Така че ние можем да контрастира това с - мащабиране, превъртете надолу до версия на Сам, ние ще разгледаме това, леко променени, така че тя вече не е безкраен цикъл - където, ако ние я увеличите ние виждаме, че тъй като тази програма се изпълнява, е първо ще обяви вътр аз, определят съдържанието на I да бъде 0, и след това го удари състоянието на линия, докато първият, така че в този случай, това тяло, това ФОРМАТ ("здрасти") и аз + + дори няма да се изпълни освен ако не съм всъщност е по-малка или равна на 2. Така че, ако е 3, например, ако това право тук равна на 4 - или аз ще направя три, защото казах, 3 - и след това да го стартирате, ще изгради, ще работи напълно добре, но това не действително ще отпечата нищо, тъй като не е, че тест за първия случай. Така че в клас, ние говорихме за това защо тези направи, докато вериги са полезни понякога и защо да го използвате, за разлика от линия, докато. Там - вие имате някакви предложения защо направи линия, докато може да бъде по-полезно? >> Е, мисля, направи докато вериги е, ако искате, въведена от потребителя, защото по този начин можете да ги пусна сложите нещо веднъж, ако това е вярно, ние можем да преминат към останалата част от програмата, но ако тя не е вярна, то ви държат на подканване на потребителя докато не сложи на правилния вход. Да, точно така - точно, така направи линия, докато е полезен защото, когато се пита за въвеждане на потребителя защото трябва да се вход на потребителя, преди да можете да го проверите. Така че в един pset, в pset 2, къде сте пита за приноса на потребителите много, това е удобно нещо, което трябва да се използва за разлика от само един прост цикъл, докато. Ако използвате линия, докато, можете да направите същото нещо - можете да направите същото с линия, докато направи линия, докато. Ти просто трябва някак да получите този дубликат процес , където можете да получите на входа първо и след това започнете вашия цикъл, докато. Като има предвид, че не се прави докато контур, просто трябва да го пиша веднъж и тя е много по-чист. Добре. Някакви въпроси? Направи ли смисъл? >> Връщането на 0 - това е просто вид на обора или е? Да, за да можем да добре, ние ще разгледаме това малко по-късно но се оказва, че 0 това връщане, че ние поставяме в края на основната цялото време - доста просто можете да го приема като нещо, което правим за момента. Онова, което сме започнали да говорим за с функции вид в края на миналата седмица и след това отново тази седмица е, че една функция взема суровини, които са тези неща в скобите; това са два входа, нашите аргументи и параметри, това, което се нарича основната ни функция, и след това функция произвежда продукция което ние наричаме връщане на стойност. И на върнатата стойност по отношение на главната е тази Int това число, и начина, по който ви разкажа една функция, "Хей, това е вашата продукция ще бъде ", е с тази дума" завръщане ", тази ключова дума, по-скоро, и т.н. Основната връщане 0 или основен извежда 0 е стандарт в програмите на C защото връщането на 0 от основните означава, че "Хей, всичко, изпълнен с моята програма само глоба." Ако бяхме да се сложи нещо различно от 0, като 1, например, , който се използва да кажа на всеки, който избяга тази програма , че нещо се е объркало. Така, както ние се ангажира повече с неща през семестъра, Ако някога се налага да кажа, "Ами, знаете ли, нещо се е объркало с тази програма", , отколкото като моята програма катастрофата, искам да уведоми бегач на програмата си, че нещо се е объркало, можете да използвате връщаната стойност, , както ние го наричаме, това не е 0. Така че ние ще разгледаме малко по- веднъж влезем в функции. Този вид има смисъл? Добре. Функциите са вид странно - Мисля, че за хора, които имат много математика фон, става дума малко по-лесно, особено ако имате малко по-абстрактна математика фон и сте свикнали да говорим за функции и всички тези неща. Но ние ще се опитаме и да ги покрият и си отиват хубаво и бавно, тъй като те идват. По същия начин, цялата тази вътр argc, знак * argv [], за сега, можете също да приема това като плоча на котела. Ние започнахме да покрие тези малко в лекция когато говорим за аргументи, които се предават в програми на командния ред, но в проблемните комплекти и програми, това е напълно добре просто да напишете невалидни и да го прости. И тази празнота означава, че - Хей, основно не ще да приема каквито и входове; това е просто програма, ние ще просто стартирате. Ние не ще го дава допълнителна информация всеки път, когато я стартирате работи. " Така че за сега, можете да направите това; дори можете да пропуснете 0 за връщане в края на вашите програми и те ще тече само глоба, но аз препоръчвам просто да поддържаш, че инча В няколко седмици, ние ще започнем да се вид на издърпайте капака малко и разберете повече за всички тези различни малки движещи се части. Добре, сега нека поговорим за втория въпрос тук. И така, какво означава "недекларирания идентификатор" обикновено означава ако е изведен от звъня? Мисля, че може да са видели, че днес вече. Може ли някой да даде една рекапитулация на това какво означава? Да видим, Кели - един от Kellys. >> Така че - Да, това, което прави - >> Мисля, че когато ти, като не декларират променливи и се опитате да го използвате. Да, точно така, точно така. Така че, ако някога видя този изход , когато се опитате и да компилирате програмата, точно както каза Кели, това означава, че сте използвали променлива, която не е декларирал, така че, ако се върнем към нашето пространство, и аз правя нещо подобно ФОРМАТ ( "Здравей% S") и се опитайте да попълните, че% с променлива, че не са декларирали никъде и аз се опитвам да го изпълним, Ще видим какво ще сляза на това дъно тук: "Използване на недекларирания идентификатор" ""; това просто означава, че не е декларирал променливата. Същото нещо се случи, ако имате х и се опитате и да се съхранява 7 в него и аз не декларират X. Аз се, че една и съща грешка: "Използване на недекларирания идентификатор" х ". Добре, така Cipher Цезар, не е много сигурно, Ще ви оставя вие гледайте този кратък вид да разбера защо, и се надявам след това проблем тази седмица, където всъщност пиша Cipher Цезар, ще разберете малко повече за това какво означава да бъдеш сигурна и несигурна или не е сигурен, предполагам - несигурен е малко по-различен. Другото нещо е, имаме тези и други въпроси тук за функциите и каква функция е и ние говорихме за това кратко, когато говорихме за връщане стойности; за някой, който е бил на лекция, може да ви рекапитулация, който е бил на днешната лекция? Добре. Нека да видим, нека да има - Може ли някой да ни каже какво е функция? Кели? >> Основно нещо, което разчита нещо, което е писано в библиотеката, която е по-сложен там, и след това просто напишете кратка форма на така като говориш обратно към тази библиотека, като се използва всичко, което дълго код и чува. Да, точно така, и след това искаш да добави нещо към това? >> Да, мисля за него като подобна на концепцията на формула в математиката , където можете просто напишете формула и след това можете да включите променливи в и това е, което функция е недоловим. Да, така че ние имаме няколко от отговорите тук , които са наистина добри и точно на. Отнасящи се до код, който е бил написан някъде в библиотеката че е по-сложно и след това можете да рисувате върху този код и действително го използвате само с писмено кратка форма на или по-скоро, неговото име - и тогава там е тази сравнение с формула по математика или физика, такива неща , когато имате формула и след това можете да включите променливите тази формула за да получите резултата от формулата, така че мисля за него като квадратно уравнение. Представете си, ако вместо да се налага да научат повече за квадратното формула е в клас по математика, просто имаше малка програма калкулатор, който го е направил за вас. Дали някой калкулатор програми по математика класове в гимназията? Да, часовете по физика? Където може просто да се каже: "Хей, квадратични формула. Това са променливи, които искам да въведа. Сега ми даде отговор. " Това е вид каква функция. Това е начин за нас да вид на запис като малка под програма в рамките на нашата голяма програма и да го използвате отново и отново , така че ние не трябва да копирате и поставяте код, можем да го дават различни входове и да получите различни изходи, това е супер удобен , когато се опитвате да напишете различни програми в различни времена. Така например, функция, която сме използвали отново и отново и отново по време на курса е ФОРМАТ. ФОРМАТ само по себе си е функция и се оказва, че това всъщност е доста дълъг и сложен, гаден гледам, функционират да пиша. Така че, просто, колкото изглежда за нас да отпечатате неща на екрана, защото всички ние що го направих, че в началото на раздел днес, се оказва, че това е всъщност, вие знаете, няколко стотин реда код. Това не е нещо, което аз никога няма да искам да пиша, със сигурност, но ние се да я използвате всеки ден, това е нещо готино, така че ние да го споделят помежду си, с различни програми, така че ние ще бъдем гмуркане в по-голяма степен функции; за момента, ние не сме - единствената функция, ние ще се пише е основният. Основна себе си също е функция, и можете да видите, че има своята продукция, нейните входове като ние говорихме, и след това му наименование, което е основният. Майн е един вид - там е специална функция. С вашата програма, трябва да има основна функция, и така за сега, ние сме вид на пропуснати писане прототип, или на декларация на Майн. Ние сме като се има предвид, че за вас, и ние току-що е да попълните в натура на бланки. >> Така че за втория сет проблем, ние не трябва да го напиша във втората функция? Аз не вярвам така. Вярвам, че това е всичко тук. Да, така Цезар Cipher не е нужно, тя не изглежда като и Vigenere, не искаш или, така - и се оказва, не някога действително трябва да напишете функция, нали? Ти наричаш винаги се поставя на кода си в основния, и много програмисти. Като се движим, да започнем въвеждане на функции като начин да почистите вашия код, да стане по-елегантен, в случай, че имате задачи - нещо като, когато говорихме за вериги, как понякога има неща, които искате да направите отново и отново, и отново, и имате вид на наивен начин - или това, което ние често наричаме "слама човек" решение, е просто да копирате и поставите отново и отново - можете да направите същото и с функции, където можете просто да копирате и поставите същия код отново и отново, но това bloats кода си - завършва кода си наистина дълго - и то получава малко объркващо, и това означава, че не сте в състояние да ти харесва - ако някога искате да използвате този код отново в друга програма, вие сте също остана го копирате и поставите отново, така че едно от нещата, ние ще говорим за е вид на дизайн и стил на вашите програми, и така, когато има смисъл да се вид пакет нещо и го слагам като отделна функция, ние ви съветваме да направите това, и това е нещо, което, отново, не е трудно и бързо правило. Ние рядко казват, че трябва да напиша функция, наречена това, но това е повече от едно от тези неща просто се развиват с течение на времето като пишете повече и повече програми. Има ли още въпроси? Добре, така че нека сега Върни се обратно до този човек точно тук, така че аз все още съм в този раздел от въпроси. Говорили сме за всички тези различни, какво е функция, защо да пиша функции, , когато можете просто да копирате и поставяте? Надяваме се сме убедени, че писането на функции е нещо добро. Така че нека сега да преминем към този MySpace програма, и ние ще прекарат малко време по този начин. Така че, нека да видим, мога да имам някой прочете това за мен? Нека да Mikhaila - ще ви прочета това за нас? >> Искаш да кажеш, обратно, когато MySpace Обратно, когато MySpace е готино. >> "Обратно, когато MySpace е готино, това е цялата ярост подобен тип. Може би все още е? Аз не съм много сигурен. Във всеки случай, като се използва CS50 техника, CS50 Run, или CS50 пространства, напишете програма, която подсказва на потребителя за съобщение и след това извежда съобщение с първата буква е главна, с всички останали букви в променлив случай, по примерен резултат по-долу, в който boldfaced текст представлява въвеждане на някой друг потребител. За простота, може да приемем, че потребителят само ще входни малки букви и интервали. Помислете за този проблем възможност да практикуват; няма да бъдат поканени да представят тази програма. " Страхотно, благодаря ви. Така че, както каза Mikhaila, ние ще напишем програма, която MySpaces кода си. Така че е някой от вас, момчета използват MySpace? Някой от вас има MySpace сметки? О, да, да! Това е много готино. [Смях] Аз знам. Запознанства себе си. Така че това, което ние се опитваме да направим, е да се напише програма , който преминава през и капитализира първата буква и след всяко писмо, след това - или всеки друг писмо след това, съжалявам. Така че - и можете да видите в този пример, това е начина, по който стартирате програмата, и така това е просто казвам: "Ние сме една програма, наречена a.out. Принос, който започваш да го даде ще бъдете подканени. Няма да предоставят на входа на командния ред. " Ако сте били след всички лекции и слуха за аргументите на командния ред, това е нещо, където тези - че фънки синтаксис в основния идва с INT argc, всички тези неща, така че тук ние не използвате, че ние не се занимават с нищо от това. Ние сме просто ще получите тази пишеща машина от потребителя, и след това втора линия с фънки капитализация е това, което ние искаме нашата програма за изход. Така че, вместо да използвате уреда или Run, ние ще използваме пространства, защото ние имаме пространства, и така, ако вие получите код, за да изглежда нещо като това, така че аз отивам да спаси тази ревизия просто така имаш котел табела тук че прилича на това, Int основни (Void), нищо в него. Всъщност, това, което ние ще направим, е, че ние просто ще изтриете всичко заедно. Искаме празен лист, защото ние не сме ще почнат да пишат код; , ние по-скоро ще се опитате да пишете някои pseudocode , които наистина просто означава, че ние отиваме да напиша нещо, което не е код този вид описва това, което искаме да направим, доста като Давид на първия ден на лекцията, или аз предполагам, че е вторият ден на лекцията, когато той е цялото демо чорапи. Вие, момчета, не забравяйте, че виждат чорапите? Йосиф беше там вид пишете на английски? Така че ние ще направим същото. Така че, когато започнете да пишете pseudocode, Бих искал да започна, като се търси в това, което входът ще бъде. И аз се даде проба случай, така като "благодаря за добавката!" И тогава аз пиша това, което искам продукцията да бъде, който в този случай е нещо подобно. И този вид ми дава добро, като се започне да се мисли за - Добре, искам да взема линия 1 и аз искам да я превърне в линия 2 " и този вид помага да се ръководят мисленето ми. Това е едно добро място да започнете. Друг начин да се мисли за това, прекалено, тъй като ние доста се движат и като направите това в собствените си програми, е да мисля за вид като това, което са крайни случаи на това? Какви са вид на странни сценарии? Какви са странни входове, които бихме могли да получите? И какво тези изходи трябва да изглежда? Например, един странен вход ще бъде този, създаване на абсолютно нищо, като това, което трябва да изведе в този случай? Нещо, което искаме да мислим за това, твърде. Така че просто като въпрос, какво може да искаме да изход? Ако ние не се въвеждане на всички, какво трябва нашата програма се извежда? >> Нищо. Нищо? Звучи страхотно. Така че ние искаме да се уверите, че не пишеш нищо ако не се получи нищо инча Cool. Добре. Така Отивам да се обадя на няколко души, тъй като ние преминаваме през и просто да разбера нещо като общ алгоритъм вид и ще започне да работи през това заедно. Така че, нека да видим. Миси. Как мислите, че ще започне? Какво ще бъде едно добро място да започнете тук ако искаме да се трансформира, да речем, линия 1 в съответствие два? Мога ли просто да ми обясни на английски, какво си мислиш? Не се притеснявайте за код. >> Първото нещо, което ще направя, ще бъде да се вид директно на потребителя, за да им кажа това, което искате. Добре, така че, да речем, "Хей, потребител. Искам низ "- страхотно. Така че нека да напиша тази надолу. Подкани потребителя за низ. Това звучи като едно добро начало. Добре. Нека попитаме Кели Рен това време. Какво бихме след това искате да правите по-нататък? Какво е вид на следващата ни? >> Съберете своя принос и да го съхранява като променлива. Велики. Така събира низ, да го съхранява в променлива. Така че има ли нещо специално, искаме да направим тук? Ли искате да проверите своя принос преди? >> Да. Какво бихме могли да искате да проверите? >> Е, ти каза, че не е нужно да се провери дали това е номер, нали? Защото това ще приемем, че това е само с малки букви? Да. Така се оказва, че - да. Така getString е гарантирано да ни върне низ. Това няма да се върне на номер към нас или нещо подобно. Там могат да бъдат цифрени знаци в рамките на този низ, все пак. А това, което можем да игнорираме като направихме капитализация. Но е напълно празен низ глоба, така че тук на линия 4 и 5, надясно, където няма вход, и ние сме поставени нищо, тъй като нашата продукция. Ние не трябва да се притеснявате за като се уверите, че има нещо в низ или че низът е по-малко от 4 символа; всичко е наред. Така че това е в контраст, например, като стотинките програми, които сте написали , където трябваше да се уверете, че сте били отрицателни числа; вие трябва да се уверите, че сте били получаване на правилната броя на дните в месеца. И как правите, момчета? Как бихте направили този тест? Какво, които изискват от вас да използвате? >> Направи докато вериги. Направи докато линии; други видове вериги, също, да. Така се оказва, че не трябва да се използва една линия в този случай, когато сме инициатива за поредица, която е нещо хубаво. Добре, да преминат. Така че, Стела. Можеш ли да ни разкажеш малко за това какво трябва да направим следващата? Така че сега ние имаме низ, имаме го съхранява в променлива; какво трябва да направим с низ? >> Ние трябва да идентифициране на 2 - Да, просто да го кажа на английски, това е страхотно. >> Идентифицирайте [недоловимите] столици - или главни букви. Да, така че ще се определи кои от тях са главни и малки букви. Ние не можем да главни или малки букви, докато сме идентифицирали кои от тях. Така че ние ще поставим тук. Така че, само при мисълта за този процес, как да го направим тази идентификация? Знаете ли, Дан? Вид на това, което ние - какъв инструмент ние ще трябва да се използва от нашия инструментариум? >> Бих го постави в по някакъв начин като масив или всяка линия е неговата собствена малка кутия, и след това главни букви от там или не. Добре, така че един инструмент, който можем да използваме масив. Какво трябва да погледнете в низа, все пак, за да разбера - ние трябваше да погледнете героите. >> Така че имаш да изглежда по дължината на низа? Да, част от които се дължината на низа. Просто от любопитство, какво да използвате, за да получите дължината на низ? >> Strlen? Да, strlen, ние наричаме това "strlen" Всички тези низови функции, така че strlen е функция, и е супер удобен, защото можем да го използваме да кажем, Хей, strlen: Ето низ, кажи ми колко е дълго. В лекцията днес, Дейвид говорихме много за това как strlen се изпълнява, какво всъщност се случва зад кулисите. Но това е един от много супер удобен. Има и други, които също са в низ библиотека, като strcmp, който е написан "strcmp", който се използва за сравнение на низове един към друг. Други тези, които ще използват като strstr , което е добро за намиране под струните и така нататък. За по-голямата си част, те всички се започне с ул. и след това, за да бъде нещо друго. Причина те не всъщност ги пише като низ и т.н. е така, защото отново като първите дни на C, когато хората са първо писмено и всичко това, са имали ограничения за броя на символите, които можете да използвате за имена на функции и променливи имена, така че всичко е като супер кондензирано. Но по всяко време виждате нещо, което започва с ул. , които обикновено означава, че това има нещо общо с низ. Добре, така че сте се погрижили да получите дължината на низа, и след това, какво правим с героите? Знаеш ли, Сам? >> Нямам представа, аз се опитвах да го разбера. Аз наистина не знам - Иска ми се, имаше някакъв начин да Искам да кажа, би си помислил, може би бихме могли да направим нещо с коефициент и изравнява тена, но аз не знам на всяка функция така. Да. >> Но това - не е задължително да работи защото тогава вие ще получите празни места, за да бъдат ще трябва да имат пространство, за да получите съвети за това как - Добре. >> Аз не знам - аз съм загубена в този момент. Да - не, не, не, това са добри точки. Така че това, което ние трябва да направим, е, както каза Сам, ние трябва да се проследи кои писма са странни писма, и кои от тях са дори писма. Но ние искаме да направим сме сигурни, че не сте просто търсите в странно и дори индекси в низ а в четните и нечетните букви в низа, така че ние трябва да имат доста това разграничение между писма - подобно на това, което всъщност е A, B, C, D, или така нататък, и какви неща не са писма, но все още в нашата низ. За пример тук, като този удивителен знак не е писмо, но тя все още е част от нашия низ, тя все още е Чар. Също така, всички тези пространства - тя не прави смисъл да се възползва пространство, нали? Затова искаме да сме сигурни, че ние по някакъв начин да пропуснете тези докато все още проследяване на коефициенти и изравнява тена. Така вид в нашия програмен инструментариум досега, ако щете, имаме няколко различни инструменти, които сме говорили за. Така, например, са променливи, като си говорихме тук. Друг инструмент, сме говорили за функции. Така че ние сме говорили за променливи в нашата pseudocode тук като това, което отива да се използват за съхраняване на нашата низ. Говорили сме за функции, за да получите дължината на низ, като strlen. Ние говорим за нещо друго, и сме говорили за него за много по-рано днес в раздел: обръчи. Какво вие мислите за използване на една линия в тази програма? Джаред, какво мислиш? Ще използваме една линия в тази програма? >> Вероятно не, не, защото вие не трябва да мине през него повече от веднъж. Добре, вие не трябва да мине през това, което повече от веднъж? >> Целия низ. Добре, така че не е нужно да се мине през целия низ. Съжалявам, че абсолютно никакъв смисъл! Вие не трябва да мине през целия низ повече от веднъж. Добре. Какво мислите? >> Мисля, че е по-добре да ги използвате така че можем да направим като се възползва, докато местоположението на [недоловим] брой. Велики, и така се възползва какво? Добре, поне така ни се казва, че ние трябва да използваме една линия, защото ние искаме да главна буква, макар и да не е номер. Така че - съжалявам, не искате да добавите? >> Щях да кажа, че начинът, по който се отнасяте низ и да го чува] отделна чува] върху героите? Да. >> И тогава ние можем да предоставят номерата на или въз основа на мястото на буквите в низа? Да. >> И да установи дали е странно или дори и да се възползва самото писмо , докато местоположението на писмото е недоловим] - съжалявам. Велики. Така че просто една рекапитулация. Можеш ли да ми напомнят отново на името си - Съжалявам. >> Шарлот. Шарлот, добре. Така че това, което Шарлот казва, , което е напълно прав - Боже, това обича да автоматично тире от мен - е, че ако се вгледаме в низ като този в горната част - "Благодаря за добавката" - като поредица от символи , когато е на позиция 0, з е на позиция 1. А е на 2, а след това имаме 3, 4, 5; пространството е на позиция 6. Като се има предвид, че - каква е позицията на е? 7! О? 8. R? 9. И тогава ние имаме 10, а тогава не мога наистина да го пиша, без да го доста да се разхвърлян на екрана. Но това всъщност е как можем да говорим за низове в паметта. Низ е поредица от символи, и когато говорим за отделен знак в низ ние често го правят, като се позовава на позицията, че героя в низа, вероятно по същия начин, че ние говорим за септември е деветият месец на годината или понеделник е първия ден от седмицата. Така че това ни дава начин да разбера кои от тях са странно в сравнение дори защото можете да видите тук, ако го съпоставим с този T, можете да видите, че всички капитализираната са на равни позиции, най-малко за първата дума, и след това нещата се изхвърлен веднъж удари, че пространството, тъй като не броим това пространство под формата на писмо, така че ако ние започнахме и отиде 0, 1, 2, 3, 4, 5, пространство, 6, 7, 8, пространство, 9 и 10, 11, 12, и така нататък. Cool, така че ние определено ще искате да използвате някаква линия да премине всеки един от героите на свой ред. Така че в този момент, ние ще се върнем към нашия стар pseudocode тук. Като част от тази идентификация на кои от тях са главни и кои от тях са малки, ние ще искате да направите това в някаква линия. Loop, дебелото черво. Какъв вид на верига, от вида на повторения, които имаме, изглежда да бъде добър да се използва в този случай? >> И аз си мислех за контур. И защо си мислиш за линия? >> Тъй като тя започва от нула, а след това , когато стигнем до дължината на низа, и след това всяка итерация можете чува],? Да, точно така. Така че, от различните възможности за избор на вериги, имаме за контури, докато вериги, и не се прави, докато вериги. Когато за цикъла е особено полезно е, когато искате да знаете вид на мястото, където сте в течение, колко пъти контур е изпълнен досега. Което е точно това, което искаме да знаем в тази ситуация, като Кели каза, въз основа на по-рано коментар на Шарлот, че ние искаме да знаем позицията на героя в низа, и за контур ще ни даде точно това, защото ако започнем да гледаш назад в нашия низ, ако започнем за нашата линия на 0, и нагоре по дължината на целия низ, тогава можем да свържем буквата Т с 0 в нашата линия, писмо H с една в нашата верига, и така нататък, става по целия път до края на низа. Така че нека започнем кодиране това е просто малко просто така че вие ​​да получите усещане за това как изглежда това. Отивам да запазите този, така че ние имаме нашата псевдо код тук и аз отивам да изтриете всичко. Така че аз имам един празен лист. Аз ще започна с писмено INT главната (недействителни) { Аз ще поставя 0 за връщане в и тогава}. Така че, обикновено, когато започнете да програмирате, това е, което аз започвам с. Аз ще го спаси, така че вие ​​го. Така че едно от първите неща, за които говорихме да получава данни от потребителя и да го приберете в низ. Как да стигнем до въвеждане от потребител? >> GetString. GetString, всичко е наред. Така че, ако въведете GetString () и точка и запетая. Да пуснете този план, на първо място? А защо не и това ще бягаш? >> Трябва да декларирате променлива. Аз трябва да декларирате променлива. Добре. И така, как да го направя? Имате ли нещо против пишете нещо, го споделят? И тогава можем да го издърпайте нагоре. Да видим, Дан, нали, нали. Или Даниел. Разбрано, въвеждане на низ = GetString (). Страхотно. Това ще бягаш? Нека да опитаме. Хит план, код качване източник, сграда, но е станала грешка. Добре. Така че какво става тук? Използване на недекларирания идентификатор "низ". >> Ние трябва да включват библиотеките? Да, така Дан казваме, че трябва да се включи библиотеките. Че това, което ще кажа, Стела? Страхотно. Това е страхотно, така че Стела, можете да копирайте този код от Space Даниел? Ако кликнете върху Даниел Roland Ки, копирате, и тогава ще ви постави включват ред, и след това го запишете? Нека да знаят, когато сте готови. Така че този синтаксис включват също е вид фънки; е като че хеш таг, и е там да включват, и след това са тези ъглови скоби. Спомняте ли си как това работи, или трябва да ги качим на този код точно тук? >> Аз съм добре. Добре. >> Отпечатани - Не бях сигурен, които библиотеката, макар и. О, добре - да, така че е CS50 библиотека. >> О, аз слагам stdio библиотека. О, я - да, не, това е - Така се оказва, че низ е всъщност нещо, което е специално за CS50. Всъщност не е вярно тип низ защото точно тук, стринг е в позиция вида - ние сме за обявяване на променлива наречена вход от тип низ - и ние сме вътре на входа стойност, която получава върнат при нас: на изхода на тази GetString извикване на функция. Можете да кажете, това е извикване на функция, защото има скоби, точно както ФОРМАТ прави, точно като strlen. Но низ всъщност не е реален вид на езика C. Сме го направили във вид, а ние ще се повече, това, което всъщност е C, защото има начин да работят с низове; ние току-що направихте нещо, за да го правят да изглежда по-малко хубав. Така че тук ние тръгваме. Ето код Стела. Трябва # включват . Други хора ще наричаме това като хеш включват понякога или рязко включват. Сега можем да я стартирате, да го стартирате, и ние все още се грешка. Нека видим какво се случва. "Неизползван променлива" вход ". Добре, така че е готино, това е супер. Искам да кажа, че не е наистина страхотно, защото ние сме грешка и тя не работи, но това, което казва, е, че не сме използвали нашата променлива, която има смисъл. Ние не се опитах да направя нещо с него. Това е начинът, по който Звъня се опитва да ни помогнат да сме сигурни, че не сте само с помощта на променливи и след това по невнимание ги нарича нещо друго, по-късно в нашия код, ни помага да се избегнат грешки по този начин. Добре, така че ние имаме вход от потребителя, ние го съхранява в променлива. Следващата стъпка е да се тогава започнете да търсите всички символи в низа и идентифициране на тези, които трябва да бъдат главни букви и кои от тях трябва да бъдат малки. И като Кели и Шарлот възпитан, Ние правим това с помощта на примка. Така че някой си спомня синтаксиса на линия и би искал да забие нож в писмена форма на първа линия на линия, само за малко? Кели, искам да го пробвам? >> Да, така трябва да се инициализира първо, така че аз сложих = 0, и след това аз съм > Да, прецаках малко, но да. Добре, нека го издърпайте нагоре. Страхотно. >> Но тогава аз не знаех, че ако сте имали - Да, добре. Значи ето какво Кели: нека погледнем бързо. Значи тя е включена cs50 библиотека на върха. Тя е включена в стандартната библиотека IO в горната част, , а стандартната IO има функции като ФОРМАТ Така че, ако някога искате да използвате ФОРМАТ, имате нужда от тази линия. И тогава тя включва низ библиотека, , които ще имаме нужда, ,, защото низ библиотека има strlen функция, които ние ще стигнем до само малко. Така че, ако погледнем какво е направил Кели, можете ли да ни преведе през какво си направил? >> Да, така искам да кажа, аз имам грешки, така Да, не, it's - >> Исках да се обадя на низ, че аз имам само "низ". Исках да отпечатате низа и след това - Исках да ти харесва да зададете низ като масив на всеки знак е различен [чува, нали? И тогава аз исках да започне на позиция 0 и след това на всеки две пространства, Щях да се възползва, така че аз просто го описва като 23, защото бях в ASCII таблица. Така че това е, което аз си мислех - Знам, че не е правилно. Получих го, така че това е едно чудесно начало. Мисля, че много на рамката е на мястото си тук. Нека минем през вид ред по ред и да видим какво се случва. Така че начина, по който обичам да правя това е просто започнете от съставянето на код и отдаване под наем на компилатора да ми каже, какво не е наред с моя код, тъй като съставител е наистина добър в ви казвам какво не е наред с вашия код. Така че, ако ние го играят, изграждане, и тя не се гради. Той казва, че има грешка, така че ако ние превъртете надолу и потърсете в първата грешка, се казва - превъртете нагоре към върха, можем да видим, има 5 грешки, генерирани тук в долната част. Опа, това е наистина отрязани. Предполагам, че това просто няма да се получи по-добре. Ето ни. Така че има пет общите генерирани грешки. Тук мога само да видите първата 2, така че може да се движи нагоре малко и след това на превъртане нагоре. Това е командата, което се проведе за съставяне на код, и след това първата грешка е в file.c тук: "Очаква се идентифицират или" ("", и това е по тази линия където казахме низ = GetString (). Можете да видите тук, че е на ред 8 от file.c и след това аз вярвам, че това е знак 12 - това е грешка. И така, какво не е наред по линия 8 - Кели? >> Ти просто трябва да го нарека, като писмо или нещо, като низ или нещо? Да, така се оказва, че тези специални имена тип низ, ПНА, Чар, кратко, всички те са специални ключови думи, и не може действително да ги използват като имената на променливите, защото компилаторът гледа и казва: "О, аз знам, че е един вид" така че всъщност не може да има низ променлива наречена низ, както аз се опитвам да направя тук, това няма да работи. Но вместо това, ние можем да го наречем нещо като S ST или ул.. Ние също така не може да се нарече Int. Не можем да имаме низ, наречен Int. Ние не може да има низ, наречен Чар, нито един от тези, които ще работят. Така че ние просто ще го наречем за момента. Страхотно. И така, какво следва се случва в тази насока? String - тази линия изглежда доста добре? Да му се даде още един шанс, за да го стартирате. Добре, така че ние все още се грешки. Този път, ние сме до четири грешки. Така че имаме един от тях. Нека да се движи нагоре. "Неочакван тип на име" низ ": очаквани израз," нали? >> Да, това е, защото аз се опитах да назове низ. Да, така изглежда сега ние също трябва да се определят всички тези препратки към низ. Можете да видите, че има препратка към низ тук, тук, тук, така че ние може да се движи всичко това да е. Велики. Добре, че се кандидатира отново. Сграда - друга грешка. Добре, сега сме на една грешка, така Int I = и след това квадратните скоби. Можете ли да ни кажете малко повече за това, което правим тук, Кели? >> Да. Това е по линия 10. >> Не знам дали имаме нужда от всичко това, но мисля, че се опитва да Аз ще го спаси, така че да следват заедно. >> Мисля, че бях опитвайки се да го кажа, за да започне в позиция "0" в началото на моята линия, така че аз мисля, че може би това, казвайки е излишно. Така че просто трябва да набележи казваха, че това сте се опитвали да започне тази позиция 0 и се получи това - Да, така че аз мисля, че по-рано, твърде, когато вървяха чрез кода, си говорим за начина, по който исках за лечение на низ като масив така че ние може да има достъп до всеки символ поотделно. Мисля, че Дан масиви, също се опитва да конвертирате струни в масиви. Оказва се, че под предния капак, низ всъщност се съхранява като масив, и можете да я ползвате като масив; че няма реализация, която трябва да направим. Низ не е ли така - низ не е наистина масив, но можете да получите достъп до него като такъв, защото всички герои се съхраняват в непосредствена близост една до друга в паметта, така че, ако искате да получите първия символ на низа, това е същото като получаване на първото число в цяло число масив. Така че ние често - Ще 2 като о, като низ като масив, въпреки че наистина - ñ това са много различни неща, но можете да се отнасяме към тях много същото. Така се оказва, че тази линия всъщност - ние не трябва да се направи някаква реализация, и в действителност, това всъщност не е валиден израз, което е това, което ни компилатор ни казва. Той казва: "Хей, че очаква израз, и това, което имам тук е нещо, което не е израз. " Да се ​​обяви масив, всичко, което трябва да направите, е нещо като това с точка и запетая, и след това да ви кажа масива колко дълго искате да бъде, като пет, така че тази линия 10 ще обяви масив наречен с пет числа в него. Това е настрана, това не е необходимо за кода, но това е - това е един вид на какво прилича декларацията. >> Как да не използвате Чар [strlen (а)? Чар [strlen (а)? >> Чар I, а след това вътре в скоби, strlen (а). Да, така бихме могли да бихме могли да направим това, и това ще обявят какво ще направите? >> Мисля, че ще обяви масив , като на О, не е нужно и - о, Да, определено не е нужно аз. Вие декларирате масив от знаци на дължина и. И така, това, което Сам казва, е, че тази линия 10 - нека ме остави малко пространство между него и останалите, за да можем да го изолира - тази линия 10 ще обявят масив от символи, strlen (а) на стойност от тях, но ние всъщност се нуждаем от I, и причината ние се нуждаем от е така, защото трябва да дадем на масива име; В противен случай, ние не ще има възможност да се позове на масива по-късно в кода. Така че това тук е името на масива и вътре е дължината. Това ще ни даде масив, но това е - отново, това е декларация. Това не е задача, това не е инициализация. Ако ние заявяваме този масив по този начин, всъщност има нищо в съдържанието на масива. Това е просто боклуци - каквото има в него. И както казахме, ние всъщност дори не е необходимо да се направи това преобразуване, защото ние вече можем да лечение на низ като масив. Знам, че малко дълго време, но аз искам просто наистина бързо да стигнете до това за цикъл и ще ви покаже как за достъп до отделните символи в масива, защото това е от ключово значение за нашата задача. И тогава ние ще ви позволи да се премине от там. Така че тук имаме за цикъл , който изглежда почти добре. Това, което не е съвсем почти там? What's - това, което не е съвсем прав за това линия? >> Не фигурни скоби? Не фигурни скоби, например. Искаш ли да сме сигурни, че тялото на цикъла с фигурни скоби. Опа, не на площада презрамки! А какво е следващото нещо, което ние трябва да направим с този цикъл? Ако се опитам и да го стартирате, какво тази грешка, че съм се? Получите всички тези грешки - аз трябва да съм се инициализира. Велики. Така че това ще бъде една линия - това не е съвсем там, но това е наистина близо. Този код сега можем да тичам, изграждане, грешка все още съществува. Защо той все още се оплакват, заявявайки, че изразът е неизползвана, и това е така, защото този ред не прави нищо. Ние не го съхранява навсякъде, ние не запазите резултата. Къде трябва да се спестяват този резултат? >> Или аз? Точно така, и това фънки синтаксис, това е с квадратни скоби означава достъп до I-тата характер на S. Това ще бъде нещо, което е наистина важно за възлагане. За съжаление, ние ще трябва да спрем до тук, така, че Себастиан раздел може да дойде, , но съм щастлив да остане след отвън и ще предприемат някакви въпроси. Така че благодаря ви момчета, че дойдохте. Това би трябвало да качвате, изграждане, стартирайте. Можем да въведете низ като "здравей" и го отпечатва "QOX". [Смях] Така че не е съвсем там, но се движат, все към тези вериги! Благодаря, че дойдохте, и аз ще бъда отвън.