[Powered by Google Translate] [♪ зуењето ♪]
Така да ве запознаам со она што го имаш на екранот;
тоа е една од алатките ние развиена во текот на летото;
се вика CS50 простори,
и тоа е нашиот заеднички кодирање апликација
дека ние ќе треба да се користи во делови.
Тоа е прилично кул.
Дали некој од вас гледа CS50 бегство уште?
Дозволете ми да се повлече дека во друг таб.
Run.cs50.net
Така
ако одите во run.cs50.net,
можете да видите ова е во вашиот интернет пребарувач начин да
всушност код - пишуваат C код,
а потоа се кандидира,
па тоа и го компајлира, работи тоа, тогаш се враќа на излез со вас,
па ова е вид на кул начин да експериментирате
со некои од код кој Дејвид оди во текот на предавања
и даваме да на вас на проблемот поставува
без всушност морале да оган до апаратот.
>> Значи она што простори не дека е различен од оној
ако се вратиш назад на ова јазиче,
Простори е CS50 рок, како гледате тука,
но ако дојдете во текот и се погледне на другата страна на прозорецот,
можете да го видите вистинскиот јас сум единствената личност во овој простор,
но она што јас ќе одам да направите е да се побара од вас момци да се приклучат на овој простор со мене
и сите ние ќе дојдеме до кодот во ист малку прозорецот,
споделат код едни со други,
и да разговараат за разликите помеѓу нашиот код.
Така, тоа е еден вид на кул работа -
така да се придружите, ако сакате да ја посетите оваа врска, токму тука на врвот
што сум ги подвлече,
едноставно можете да напишете во apps.cs50.net/spaces/vqcspSnO.
>> Добро, така да започнете,
Одам да ви даде малку турнеја на тоа.
Ние ќе направи некои глупо малку кодирање со неа на прв,
само така што сите kinda добива чувство за она што тоа е како,
но она што го направив -
или она што јас сум за да го направите тука е -
Одам да преземе код кој што сум напишал овде,
кој како што гледате во моментов е празна;
тоа не направи ништо.
Тоа е само котел плоча код, ние ќе го наречеме.
Со малку to-do коментар.
Одам да го зачувате со притискање на ова копче Зачувај.
И она што го прави тоа е
истакна дека се тука накратко - дека ревизијата спаси зелена кутија,
и сега, ако барате за мене во просторот,
кликнете моето име,
можете да видите дека имам оваа ревизија токму тука,
и ако кликнете на овој ревизија,
тоа ќе се вчита дека кодот во вашиот простор, исто така.
>> Значи има сите натоварен дека кодот во просторот?
Добро, ако сеуште не сте, оди напред и да го направи тоа,
а потоа она што го сакате вие ​​момци да се направи во оваа мала to-do дел
се напише малку користење printf за себе,
така на пример, јас ќе пишувам
printf ("Моето име е Нејт");
и тогаш ќе напише
"Јас завршив во 2009 година
од Стенфорд "
и јас би сакал да се слушне за
која година сте во училиште,
без разлика дали сте на колеџ или бизнис училиште
или друго училиште Харвард,
она што го учите ако е познат уште;
ако тоа не е познат, тоа е тотално кул.
Јас не одлучи додека не беше доцна во мојата сафомор година.
а потоа, исто така, би сакал да знам
нешто лудо дека сакате да ми кажете или
нешто за класа или само нешто друго.
Кога ќе завршиш пишување дека со вашиот малку printf,
ако ќе заштедите ревизија или подобро
Првиот бидете сигурни дека можете да го стартувате
и дека тоа отпечатоци од токму она што го сакате тоа да испечатите,
а потоа, ако одите напред и да спаси ревизија
користење на верзии Зачувај копчето, овој прв малиот човек овде,
и ние kinda ќе одат преку и направи малку вовед на тој начин.
Така да само треба да кликнете на копчето PLAY,
што е овде горе во горниот лев агол,
па ова Play копчето на горниот лев волја
испрати вашиот код исклучување на нашиот сервер, каде што станува составен, а потоа работи.
Значи она што е kinda луд за ова е
овој код, всушност, не се извршува на Вашиот компјутер;
тоа е, всушност, се испраќаат преку Интернет.
>> Како оди, Шарлот?
>> Јас - во ред. I'm - Мислам дека сум
имаат тешкотии да го снимите
на серверот, како што тоа може да се - јас може да ја стартувате програмата.
И тогаш кога се обидувам да се кандидира, тој вели дека има грешка.
Прогласена како вирус, што не е таму веќе.
Ох, ајде да видиме, може да удри Зачувај повторно?
Ја гледам на екранот.
>> Право, во ред, па тоа е она што го имам.
И јас не знам зошто тоа не ми дозволи да го работи.
О, во ред, извинете.
Може да се објасни зошто - она ​​што не беше во ред - што не работи со неа?
>> Да, затоа што јас не видов дека имало последната линија каде што има уште една променлива
дека не сум прогласи, кои Немав намера за тоа се таму.
Да, совршено!
>> Сега, ако јас го зачувате, мислам дека тоа треба да работат.
Сега дека сте ја спаси, таа работи; неверојатна.
>> Така да, како што ние одиме преку -
Значи она што се случува,
Јас сум само ќе го повтори овој за камерата.
Што се случува е дека оваа променлива е
беше оставен во по - Претпоставувам дека избришани некои други работи
каде што декларираат како,
и така ова беше фрлање работи надвор и не допуштајќи да го работи.
Значи ова е токму она што сакате да го направите во делот
е има луѓе обидете се да пишувате различни парчиња на код,
составувањето на тоа, да видиме што работи, да видиме што не се случи,
а потоа kinda зборува за овие работи, бидејќи тие се трипал точки кои
Јас се уште се судрите,
Јас се уште - Јас не многу глупо работи цело време,
и јас не знам зошто тоа не функционира,
па ајде наново ревизија на Charlotte 3,
и ние ќе го работи.
>> Па кога ќе се кандидира, сега што сум ги добила код овде,
Можам да зумирате, притиснете на копчето Изврши,
Поставени тоа, гради тоа, таа работи,
вели дека трчаше успешно, а ако се движите надолу,
види Шарлот е помлад од Адамс куќа,
психологија, средното во економијата; неверојатна.
Одлично да ви се исполнат!
Страшни.
Океј, се движат на, ајде да одиме на Даниел,
одат на ревизија 3,
компајлира, работи;
зошто не ни кажете малку за себе, Даниел?
>> Ме викаат Дан.
Одам да се бизнис училиште спроти вас момци,
и јас бев во маринци пред тука,
и ова е нешто ново за мене, па да.
Не се чувствувајте лошо, јас сум 30 и јас не знам ништо од тоа работи.
Прекрасно, благодарение, Дан!
Сите во право, ние имаме друг Даниел.
Одите од Даниел - ќе се воведе, Даниел?
>> >> Секако, јас сум Даниел.
Јас сум сафомор во Mather во моментов.
Јас сум сконцентриран на владата,
но јас сакав да се земе CS50, бидејќи јас сум слушнал голема критика за класа
а јас никогаш не сум се обидел CS порано.
Дојдете долу тука и ја прикажете - кул.
Преселба на, Јаред.
Како оди?
>> Добро, како си?
Како што можете да видите, јас сум помлад филозофија концентратор во Елиот,
по потекло од јужна Калифорнија,
и јас сум заинтересиран за преземање CS50, бидејќи ми се допаѓа логиката на тоа,
и се чини дека навистина кул да се прават работите на компјутерот, па.
Прекрасно, каде во јужниот дел на Калифорнија си?
>> За еден час од [недоловим], мал град [недоловим].
О, да, татко ми е од Redlands.
Кул работи.
>> Добро, Џими; Како оди, Џими?
>> Добро, како си?
Прават многу добро!
Кажете ни за себе.
>> Јас сум бруцош, и јас не сум сосема сигурен што сум отсек во
но јас сум kinda ведне економија.
Како Даниел пред мене, јас никогаш не го направиле било CS, но тоа звучи kinda кул.
Јас сум по потекло од Чикаго.
Страшни. Па проверете неговиот отпечатоците тука.
Сакав да прашам, дали оваа печати колку што сте очекувале?
>> Не, јас заборавив да се печати нова линија.
Јас всушност заборавивме дека кога бев да компонирам моја работа
за прв пат, исто така.
Тоа е вид на болка да се сеќавам да се стави оние во рачно.
Тоа би било убаво ако само знам дека е она што го сакаше.
>> Океј, Кели.
Леле, имаме 2 Kellys, 2 Даниелс, 2 Kellys.
Значи Кели - да одите со Кели Рен?
Океј, неверојатна.
Или Кели, мислам.
>> Така да, па јас сум Кели.
Јас сум сафомор во Pfoho.
Добив e-mail денеска дека сè уште имам 7 недели го искажам концентрација,
па јас се обидувам да не размислувам за тоа,
и ми се допаѓа печење, трчање, и Craisins.
Јас немам искуство со повеќето од CS;
Јас научи да се изгради веб-сајтови, кога бев навистина млад,
но мислам дека веројатно се предава себеси погрешно многу пати.
Се надеваме дека ќе научат малку повеќе
и - Да.
>> Прекрасно, добро, ви благодарам.
Ајде да одиме во другата Кели;
Јас немам ништо - дали рече нешто тука?
>> [Недоловим]
Ете го!
Слатка!
>> Добро, па јас сум Кели.
Јас сум прва година студент.
Јас сум отсек во умот, мозокот и образование.
Јас завршив во Френклин и Маршал колеџ во 2008 година
со специјалност во психологија и социологија
и малолетно лице во француски јазик.
Јас сум земајќи CS50
бидејќи јас сум заинтересиран за добивање на д-р во невронски мрежи
и јас се чувствувам како тоа ќе ми помогне да се разбере технологии кои се користат.
Страшни.
Преселба на, Микаела.
Е дека правилно изговарање?
Океј, неверојатна.
>> >> Јас сум Mikhaila.
Јас сум сафомор во Киркланд куќа,
и јас сум се концентрира во Машинскиот факултет.
Навистина ми се допаѓа велосипедизам, изградена Велосипеди ова лето.
Земам CS, всушност,
како концентрација барање,
но знаете, мислам дека тоа е уште кул вид на инженеринг класа.
Прекрасно - ќе изгради Велосипеди ова лето?
>> Да.
Леле, како рамка и сето тоа?
>> Ух-hunh (афирмативна).
Леле, тоа е навистина кул.
>> [Нечујни Off-камера разговор]
[Смеа]
Да, тоа е толку долго.
Никогаш не знаеш, нели?
Па, кул, и благодарение, Mikhaila.
>> Добро, Missy.
Моето име >> ма, јас сум бруцош,
па тоа значи дека не знам ништо!
Сакам да се концентрира во астрофизиката.
Во CS50,
Се чувствувам како дефинитивно ќе ви помогне со тоа.
Непарен факт за мене е дека сум национално сертифицирани пожарникар.
Wow!
Како се случило тоа?
>> Јас присуствуваа академија
и помина низ пекол за многу недели
и добив сертификација.
Леле, Congrats!
Тоа не е мала работа, за сигурен.
Океј, па сега ние ќе ме направи.
Јас сум следниот во редот.
I'm - тоа работи.
>> Значи, моето име е Нејт.
Бев класа на 2009 година во Стенфорд.
Бев симболички системи големи,
која е слична на умот, мозокот, Однесување концентрација тука,
но тоа е вид на мешавина на
компјутерски науки, лингвистиката, психологија и филозофија.
Вид на - Да, многу чудни работи, но тоа беше одличен,
а потоа го направив мојот господар во компјутерски науки таму, како и.
Па јас сум нов на Харвард оваа година.
Навистина сакав да се влезе во наставата.
Јас ги помина последните 4 години во Стенфорд TA-ИНГ компјутерски науки настава
и така Дејвид дозволете ми да дојде на,
и јас сум ќе биде помагање надвор со CS50,
па јас го направите тоа со полно работно време, јас не сум во град училиште.
Тоа е забавно.
Се надеваме дека тоа ќе продолжи да биде забавно, јас сум сигурен дека ќе.
>> Добро, Сем.
>> Моето име е Сем, јас сум сафомор во колеџ, во законот конкретно.
Моите големи ќе бидат историјата на науката, веројатно, и Ves средно,
и мојата омилена боја е жолта.
Нема потреба да се судат или ништо, но тоа е добра боја!
И Стела.
>> Здраво, јас сум Стела, јас сум бруцош во сиво.
Јас немам поим што сум концентриран во уште,
па CS50 е само вид на случаен избор,
што е интересно.
Забава Всушност, Џими беше првиот Харвард мој пријател,
затоа што двајцата сме од Чикаго.
Кул, и Грејс - тоа би требало да биде навистина убаво еден, нели?
>> Мислев [недоловим].
О, да.
[Нечујни / Off-камера разговор]
Океј, јас сум уште за учење, уште за учење.
>> Значи имаме нешто друго што е вид на интересно овде.
Да, јас сум само се прашувам, дали имаш идеја што се случува овде?
Знаете како да се интерпретираат ова?
>> Јас требаше да се стави точка-запирка после секоја линија.
Тоа е вид на болка.
Понекогаш тие semicolons може да биде вистински болка да ги пратите надолу.
Значи излегува дека
на посебна програма ние користиме оваа година да
собере нашите C кодот е наречен ѕвекот,
и причината што почнаа да користат ѕвекот оваа година -
затоа што ние не го користат таа програма во минатото;
ние сме се користи уште еден наречен GCC тоа е навистина популарен -
Ѕвекот всушност ти дава грешка пораки кои го прават смисла.
Ова е еден вели: "очекува ';' по изразот"
и тоа дури и ти кажува изразот по кој што сте потребни запирка.
Значи се сте ја одредување?
>> Да, токму сега.
Прекрасно, дозволете ми да знам и ние ќе го повлече нагоре, а ние ќе го работи.
Но, yeah, ставајќи овие semicolons во е вид на болка.
>> Го поправив, па мислам дека тоа треба да работат.
Прекрасно - ревизија 3.
Тоа изгледа како неа.
Добро, па сега ако се стартува,
таму оди.
Кул работи.
>> Во ред.
Па благодарност за тоа.
Тоа е одлично да се исполнат вас момци.
Што ние ќе направиме сега е поминат следните малку
kinda нуркање во делот проблеми
кои доаѓаат од проблемот да се постави од оваа недела
и ние ќе го направи тоа за повеќето од деловите
за остатокот од мандатот,
а потоа ние ќе го спаси последните 15, 20 минути или така
да се зборува за проблемот постави
а потоа само било други прашања имаш воопшто за класа.
Тоа, рече, она што навистина сакате да направите
е се сите учесници
користење на простори работи,
фрлање во кодот, фрлање во предлози,
и зборуваме за кога работите се допаѓа ова пауза
или не работат, само затоа што овие се нештата што
Знам наидов
кога почнав кодирање,
и беа навистина kinda фрустрирачки на моменти
бидејќи ако тоа е како 2:00 пред вашиот проблем сет се должи,
така - само за откривање,
Јас не започне програмирање додека бев сафомор во колеџ.
Тоа беше вид на овој чуден, непознат работа
што чув беше kinda кул
и јас исто така слушнав тоа би можело да биде вистински болка во газот
ако ви недостасуваат точка и запирка, а тоа е само грешка одржување на програмата од работа
и одржување сте од одам да спијам,
па дефинитивно,
ако имате прашања како што,
ако имате проблеми како што, дозволете ми да знам,
затоа што сакам да се направи ова добро искуство за вас момци.
>> Значи сте момци сите преземени проблемот постави уште?
Kinda знае каде е тоа? Во ред.
Значи ќе одиме да cs50.net, бидејќи јас не го имаат на оваа сметка,
наново проблемот сетови,
наново проблем во собата 2, а ние ќе се погледне на Standard Edition денес.
Ние ќе се повлечат до спецификација тука.
Скролувајте надолу.
Па ние ќе почнете да барате во овој дел на прашања.
Дали сте момци гледавме овие шорцеви уште?
Во ред.
Па така постојат шорцеви за петелки,
што е направено од страна на Томи, еден од главата наставата соработници.
Има една на обемот,
Верувам направено од страна на друга настава колеги по име Дејвид
а потоа еден на Цезар Спортот исто така направено од страна на Давид.
Тие се прилично кул.
Дали вие момци се гледа своите панталони досега?
How've тие биле?
Корисни? Океј, добро е да знаете.
Ако тие не се, може да се каже така.
Но, пред да се направи,
ви момци погледна овие прашања
на сите?
>> Ајде да зборуваме за ова малку.
Значи ние сме воведени во текот на последните неколку недели
во предавање
голем број на различни петелки.
Тука е за телефонска линија,
додека јамка, а потоа не-додека јамка,
а во предавањето, ние сме биле зборува многу за
како оние петелки се
доста сличен на многу начини,
и можете да направите многу од истата работи со време јамка
дека може со за телефонска линија.
Вие само треба да се вид на користење на правото комбинации на променливи и сл.
и така навистина
вистинската разлика помеѓу сите јазли е дека
понекогаш тие се повеќе корисни
да ги користите на едно време отколку во друго време.
>> Така на пример,
додека јамка различни од не-додека јамка.
Дали сите се чувствуваат како тие имаат добра рачка кога
на не-додека јамка е повеќе
корисни или она што разликата е?
>> Мислам дека разликата е не-додека јамка
работи - не знам доста што терминологија,
но серијата на функции во рамките на јамка.
Тие автоматски - тоа го прави нејзиниот работи барем
пред да ја проверува состојбата, или додека јамка само што ќе се пушта кога
тоа постојано работи - дали е или не е услов се задоволни.
Да, не дека има смисла?
>> Ајде да ги разгледаме во малку код.
Па само да го повтори прашањето,
или одговорот, а;
одговорот беше дека
додека јамка ќе ги провери да се види дали состојбата
кои ќе ги специфицирате е исполнет
пред бега телото на јамка за прв пат,
со оглед на тоа направи додека јамка автоматски ќе се кандидира на телото на јамка,
е она што ние го нарекуваме - тоа е чудно терминологија,
но ако некогаш се каже нешто што не дава никаква смисла, дозволете ми да знам -
јамка тело е тоа нешто што ќе ги ставите во меѓу кадрави загради.
И во не-време јамка,
тоа тело се кандидира барем еднаш,
а потоа состојбата добива проверуваат пред бега секое наредно време.
>> Така, всушност, Сем,
им пречиш пишување едноставна додека јамка
во простори?
>> Како да се вид на како
направи нов ...?
Јас само го избришете тоа што имате таму.
Да, само да го исчистите од.
>> Па, верувам јас сум имаат ова -
кој сакаш време, или сакаш ...?
Да, само не подолго време точно, печати нешто надвор.
И да видиме.
Александар, сфатив што никогаш не сте воведен.
>> О, тоа е во ред.
Дали - можете да го кодот до не-додека јамка за нас?
>> Да, ќе се обидам.
Сите во право, ние само ќе се повлече овие горе на екранот,
така што ќе вид на имате рачка на она што се разликите.
>> Значи тука е она што Сем е направено.
Тој доби целобројна наречен i
дека тој е иницијализиран на 17.
Тогаш тој вели дека иако (int i = 17)
printf ("Моето име е Сем.");
Значи она што се случува кога ќе ја извршите оваа код?
Има грешка, она што го прави грешка кажам?
Ајде да го повлече и да разговараат за тоа.
Настана грешка, таа вели.
Да скролувајте надолу.
Па тоа ни даде оваа грешка, а тоа го рече,
"Еј, јас очекува израз."
Тоа е kinda криптичната.
Да, така точно - и повторно,
ќе има уште малку бубачка дека ќе се фати во само една секунда.
Но, ова е уште една од оние вид на чуден терминологија работи,
па ова int i = 17
не е израз.
Она што изгледа како таа го прави е тоа е
прогласување цел број наречен i
и поставување на еднаква на 17
или, поточно, ставајќи 17 во таа int i нарекува.
И тоа не дава никаква смисла
во контекст на ова додека јамка.
Тоа го прави смисла, како што ќе видиме,
во контекст на за телефонска линија, бидејќи за јамка декларации не започнете
со тоа што за int i изнесува нешто
и продолжува.
>> Значи не сте -
поправи нешто, во ред.
Еве оди; неверојатна.
Па сега работите изгледаат малку различен.
Неколку работи се променија.
Можете ли да ни кажете што работите се променија?
>> Го извадив int, па нема декларација [недоловим] наместо задача.
Оној знак за еднаквост, ја ставив 2 еднакви знаци, што значи еднакви.
Страшни.
Да, па што Сем не беше тој извади int
дека е во право тука порано,
па ако јас само погледнете во ова - тоа е она што беше порано, рече int,
што беше тоа прогласувајќи - па ние извади тип.
Има int, char, стринг, кратко,
тие се нарекуваат типови.
Значи ти извади од типот
а потоа претходно,
тој имаше само еден еднаквите знаци
и како што рече бил проблематичен за ова беше
кога имате 1 еднаквите знаци,
тоа е задача оператор.
Тоа не е за тестирање дали или не 2 работи се еднакви.
Тоа е, всушност, поставување нешто еднаква на нешто.
Ние сме додавање на број 17 во променлива i.
Па да се направи тој вид на споредба,
ќе мора да ја користи двојно изнесува,
кој е вид на чудно нешто
но е прилично честа грешка.
Значи една друга работа јас ќе истакнам, ако не ти пречи,
е дека во
нашата функција овде во int главната,
ќе видите дека телото на нашата функција
е поместување од левата страна
со 4 простории или табот.
Причината поради која го правиме ова
е само за читливост.
Како што можете да видите во додека јамка Сем тука,
тој не алинеја на сите,
и дека не влијае на функционалноста на код.
Таа ќе работи токму истото.
>> Така на пример, ако дојде до врвот тука
и притиснете нашата игра копче, тој ќе го изгради,
тоа ќе го работи,
и она што ќе се случи?
Зошто се уште велат дека работи?
>> Поради тоа што ќе ги повторува Здраво.
Токму така, и зошто тоа ги повторува hi?
>> Бидејќи број никогаш не се менува, па тоа е секогаш 17.
Да, точно, па
ајде да видиме, по - ме потсетува на вашето име повторно?
Џими. Значи Џими вели дека
причината на овој постојано ги повторува hi одново и одново
е затоа што оваа состојба е секогаш точно.
Ние никогаш не се промени вредноста на i.
Ние никогаш не се менуваат содржината на она што се чуваат во таа променлива.
Па во овој момент имаме оваа грешка која
вашата програма генерирана премногу излез,
и ако ние движете се надолу и вид поглед на она што се случува тука,
можете да видите дека е здраво, здраво, здраво, здраво, здраво, здраво, hi целиот пат низ.
Страшни.
>> Значи каков вид на назад кон оригиналната точка
кои имаат вовлекување тука
во телото на додека јамка не влијае ништо.
На програмата се уште траеше само парична казна.
Типично за добар стил -
и ова е нешто што ние барате во вашиот проблем поставува -
бараме од вас да алинеја ова со 4 простории, што можете да направите
само со притиснување на копчето Tab
или со рачно поставување на 4 простори себе.
Кул, океј, па ајде да одиме назад и погледнете во
Александар не-време.
>> Само kinda има малку проблеми.
Океј, и ајде да работиме низ него.
Е кул?
>> Да.
>> Океј, па тука ќе одиме.
Ова е кодот кој Александар напиша.
Дали одите од Алекс - во ред.
Значи тука е код кој Алекс има напишано.
Значи, ние го добивме нашата декларација од главните токму тука,
а потоа ние го добивме ова целобројна променлива наречена i
се прогласи токму тука.
Имаме do изјава
а потоа телото повторно со овие протези,
па ова е телото на не-време -
дозволете ми да зумирате на ова, па тоа е повеќе може да се чита -
и во телото, ние се обидуваме да се печати "ова е телото",
i + +,
па зголемување на содржината на i и го правиме ова
се додека не добива да биде 3,
и тогаш нашата програма завршува.
>> Значи она што се случува кога ќе ја извршите оваа програма?
>> Јас очекува идентификатор.
Океј, па се изгради, да го стартуваш, грешка се јавува.
Што се случува?
Ние дојдете долу тука,
ние го добивате ова малку криптичната потрага работа,
очекува запирка после највисоко ниво декларација.
Тоа е kinda чудно.
Дали некој има идеја за она што може да се случува?
Kinda чудно, да.
>> [Недоловим] се декларираат надвор од загради?
Значи не дека се применува тогаш кога користите загради?
Па тој прогласи овој човек надвор од која загради?
О, овие момци - кадрави загради?
>> Да.
Да, точно.
Значи излегува дека
не, всушност може да декларирате променлива токму тука се допаѓа ова.
Она што може да се обидуваат да ја направам е -
зарежи од таму -
можете или да го стави во големи загради право тука
или друга алтернатива
е да се стави целосно надвор.
И така тие - во зависност од тоа каде всушност се стави декларација
на тој целобројна променлива,
може да се добијат 2 многу различни видови на променливи;
кога е надвор од главниот,
тоа е она што ние го нарекуваме глобалната променлива.
Тоа е надвор од опсегот на било која од функциите -
тоа не е во функција -
а ако ние го стави во внатрешноста на главниот,
како токму тука, тогаш тоа се нарекува локална променлива,
затоа што тоа е локално до обемот на главниот.
И ние ќе разговараме малку повеќе за она што се разликите
помеѓу 2 вида и зошто да користите различни видови на променливи,
но сега за сега,
вие само може да ги задржи сите променливи локално,
бидејќи ние немаме никаква потреба за глобални променливи.
>> Океј, па тоа е едно нешто право таму.
Ајде пробајте ова, повторно, да видиме што се случува.
Работи, се уште грешка.
Зум во малку, што ќе ги добиеме?
Ние го добивате ова очекува заграда по направите / време.
Сите идеи што се случува? Дан?
>> Дали време тогаш заграда и потоа -
Јас не знам дали треба да redeclare int,
но не додека (i <3).
Точно, да.
Значи излегува дека Дан е точно во право.
Ние не треба да се стави овој тип тука повторно.
Ние наместо да убие видот
и само го прават тоа.
Во ред.
Ќе зумирате назад, пробајте го уште еднаш.
Гледај на тоа; бега успешна.
Ако ние движете надолу ", ова е телото" отпечатени 3 пати.
Тоа е прилично слатка.
Добро направено, добро направено, момци.
Добро направено.
Како е ова се случува досега?
Пристојно темпо?
Океј, кул.
>> Значи, како ние вид на назад кон оригиналната прашање,
ние - и сега, ако ние се види разликата,
ќе видите дека во оваа не-додека јамка,
состојбата доаѓа последен.
Така што компјутерот го чита на програмата
од C програми се извршуваат вид во овој секвенцијален ред,
каде што буквално се започне со првата линија на главните,
а потоа изврши алинеја 6, алинеја 7, алинеја 8, алинеја 9,
линија 10, алинеја 11,
сите овие работи во горниот десен агол тука
се случува да се изврши еднаш
пред некогаш тестира оваа состојба за да ја видите
дали или не јас - или содржината на јас, попрво -
помалку од бројот 3.
И само ако еднаш сме се стигне до линијата 12,
содржината на i се помалку од 3
дали всушност ние скок назад до линија 7
и потоа повторете го процесот,
а потоа тестирање на состојба повторно и повторно и повторно.
>> Значи можеме да се спротивставиме на оваа
со - зумирање назад надвор,
дојдете до верзија Сем,
ние ќе се погледне на овој, малку изменета, така што тоа веќе не е бесконечна јамка -
каде што ако ние зумирате,
можеме да видиме дека оваа програма ја извршува,
тоа се случува прво да прогласи int i,
поставите содржината на i биде на 0,
и тогаш тоа хитови на состојбата на додека јамка прво,
така што во овој случај, ова тело, оваа printf ("Здраво") и i + +
нема ни да изврши
освен ако не е, всушност, помала или еднаква на 2.
Значи, ако јас е 3, на пример,
ако ние го поставите ова право тука
еднаков на 4 - или јас ќе сторам 3, затоа реков 3 -
а потоа се кандидира,
тоа ќе се изгради, тоа ќе се кандидира сосема во ред,
но тоа всушност не ќе се печати ништо,
поради тоа што не успеа тој тест за првиот случај.
Значи во класа, ние вид на зборуваше за тоа зошто овие не-додека петелки
се корисни понекогаш
и зошто би го користат како разлика време јамка.
>> Дали постојат - ви момци имате било какви предлози
за зошто не се прави додека јамка може да биде повеќе корисни?
>> Па, мислам дека не се прави додека петелки е ако сакате корисник влез,
бидејќи на тој начин можете да ги споделите со
стави нешто во еднаш, ако тоа е точно,
ние може да се движи со остатокот од програмата,
но ако тоа не е точно, тогаш продолжи да се прашува корисникот
додека не се стави на правото влез.
Да, точно - точно,
па не се прави додека јамка е корисно
бидејќи кога поттикнувајќи за корисникот влез
затоа што треба да се добие влез на корисникот пред да всушност може да го провериш.
Значи во pset 1, во pset 2,
каде си прашува за корисникот влез многу,
тоа е корисна работа е да се користат
за разлика од само обичен додека јамка.
Ако користите додека јамка, можете да го прават истото -
можете да го направите истото со време јамка
како да направите со не-додека јамка.
Вие само треба да се вид на ја имаат оваа дупликат процес
каде што ќе го добиете влез, а потоа започнете вашиот додека јамка.
Со оглед на не-додека јамка, едноставно мора да го пишувам еднаш
и тоа е многу почист.
>> Во ред.
Било какви прашања?
Смисла?
>> Враќањето 0 - тоа е само вид на штанд или тоа е -
Да, така што можеме -
добро, ние ќе ги покрие ова малку повеќе подоцна
но излегува дека
ова враќање 0 дека ќе стави
на крајот на главната цело време -
можете да kinda само да го земе како нешто што го правиме
засега.
Што сме отворени да се зборува за со функции
вид на кон крајот на минатата недела, а потоа повторно оваа недела
е дека некоја функција
зема влезови кои се овие работи во загради;
овие се 2 влеза, нашите аргументи или параметри,
она што го викаат исто така да нашата главна функција,
а потоа функција произведува излезен
кој ние го нарекуваме повратната вредност.
И повратната вредност во случај на главниот е ова int,
овој број,
и начинот на кој ви кажам една функција, "Еј, тоа е она што вашиот излез
ќе биде, "е со овој збор" враќање ",
овој клучен збор, туку
и така главниот враќање 0
или главниот Ставање 0
е стандард во C програми
бидејќи враќањето 0 од главните средства кои
"Еј, се извршува со мојата програма само парична казна."
Ако бевме да се стави нешто друго од 0,
како 1, на пример,
кој се користи да се каже кој трчаше оваа програма
дека нешто тргнало наопаку.
Така како што ние се повеќе вклучени со работи во текот на семестарот,
ако сте воопшто потреба да се каже,
"Упс, знаеш, нешто не беше во ред со оваа програма,"
наместо мојата програма несреќата, сакам да го извести
на тркачот на мојата програма дека нешто тргнало наопаку,
можете да го користите повратната вредност,
како што го нарекуваат, тоа не е 0.
>> Значи ние ќе ги покрие дека малку повеќе
штом ќе го добиеме во функции.
Тој вид на прави смисла?
Во ред.
Функции се вид на бизарен -
Мислам дека за луѓе кои имаат многу математика позадина,
станува збор малку полесно,
особено ако имате малку повеќе апстрактна математика позадина
и сте навикнати да зборуваат за функциите
и сите тој вид на работи.
Но, ние ќе се обидеме и да ги покријат
и да си одат убаво и бавно како тие доаѓаат.
Исто така, целата оваа int argc,
char * avg [],
за сега, исто така, може да се земе дека како котел плоча.
Ние сме отворени за да се покријат оние малку во предавање
кога зборуваме за аргументите кои се донесени во програми на командната линија,
но вашиот проблем поставува и вашите програми,
тоа е сосема во ред само да се напише празнина и да биде едноставно.
И она што оваа празнина значи дека
"Еј, главниот нема да ги прифати сите влезови;
ова е само програма ние ќе само ја стартувате.
Ние не сме ќе го даде никакви дополнителни информации
секој пат кога ние го стартувате работи. "
Па за сега, можете да го направите ова,
можете исто така да дури изостави Врати 0
на крајот од вашите програми и тие ќе работат само парична казна,
но јас препорачувам само чување дека внатре
Во неколку недели, ние ќе почне да се вид на
се повлечат на насловната малку и да се разбере повеќе за
сите оние различни малку подвижни делови.
>> Добро, сега да зборуваме за нашите второто прашање тука.
Значи она што не "непријавена идентификатор" обично укажуваат на
ако outputted со ѕвекот?
Мислам дека би можело да се види дека веќе денес.
Некој може да даде реприза на она што тоа значи?
Ајде да видиме, Кели - еден од Kellys.
>> Значи -
Да, она што не -
>> Мислам дека кога ќе, како, не се декларираат променливи и ќе се обидат да го користам.
Да, точно, точно.
Значи, ако некогаш се види овој резултат
кога ќе се обидат и ги собира вашата програма,
исто како и Кели рече,
тоа значи дека се користи променлива дека не ја декларирале,
па ако се навратам на нашиот простор,
и јас нешто слично
printf (
"Здраво% s")
и да се обиде и да се пополни во таа% s
со променлива е дека јас не го прогласија насекаде
и јас се обидувам да се стартува,
ќе видам што можам да се фаќате во овој долниот десен тука:
"Употреба на непријавена идентификатор 's'";
тоа само значи дека не ја декларирале својата променлива.
Истото се случува ако
имате x и ќе се обидат и чување 7 во него
и јас не ја декларирале X.
Јас се дека истата грешка:
"Употреба на" х "непријавена идентификатор".
>> Сите права,
па Цезар шифра, не се многу сигурни,
Јас ќе ти момци се види овој краток, вид на се разбере зошто,
и се надевам дека откако ќе го направите проблем оваа недела во собата
каде што всушност се напише шифра Цезар, ќе се разбере малку повеќе
за тоа што значи да се биде безбеден и несигурни -
или не е безбеден, претпоставувам - несигурен е малку поинаква.
Од друга работа е што имаат овие други прашања тука
за функциите
и она што функција е,
и ние вид на зборуваше за тоа кратко кога ние разговаравме за враќање вредности;
за некој кој е на предавање,
можете да повториме кој беше на предавање денес?
Во ред.
Ајде да видиме, нека имаат - некој да ни кажете што функција е?
Кели?
>> >> Суштина нешто што се осврне нешто што е напишано во библиотека која е
покомплициран таму, а потоа можете само да пишувате кратка форма од него,
па како да сте се однесуваат назад кон таа библиотека, со користење на
сето тоа долго код и [недоловим].
Да, точно, а потоа сакаш да додадете нешто на што?
>> Да, размислувам за тоа како сличен на концептот на формула во математиката
каде што можете само да пишувате формула, а потоа можете да го приклучиш променливи во
и тоа е она што функција е [недоловим].
>> Да, така имаме неколку одговори тука
што се и навистина добри и право на.
Има однесуваат на код и тоа е се напишани во библиотеката некаде
дека е многу покомплицирано
а потоа можете да се осврне дека кодот
и всушност го користат само со пишување на кратка форма за тоа -
или, поточно, своето име -
а потоа тука е и оваа споредба на формула во математиката
или физика, сите тој вид на работи
каде што имаш формула
и тогаш може да се вклучи во
променливи за кои формулата
за да потоа се добие резултат на формула,
па ќе размислите околу тоа како како квадратна равенка.
Замислете ако наместо да научат за
што квадратната формула е во траат часовите по математика,
можете само имаше малку калкулатор програма со која го направив тоа за вас.
Дали некој користи сметач програми по математика наставата во средното училиште?
Да, физика класи?
Каде што само може да се каже, "Еј, квадратната формула.
Тоа се променливи што сакам да го внесете.
Сега ми даде одговор. "
Тоа е вид на она што функција е.
Тоа е начин за нас да
вид на запишување како мал малку под програмата
во нашата поголема програма
и го користат одново и одново
така што ние не треба да копирате и залепите кодот,
можеме да го даде различни влезови и да добијат различни резултати,
тоа е супер корисна
кога ќе се обидуваш да се напише на различни програми во различни времиња.
>> Така на пример, функција која ние сме биле користење одново и одново и одново
во текот на курсот е printf.
Printf е самата функција
и излегува дека тоа е всушност прилично долг и комплициран,
грозен изглед, функција за да пишувам.
Значи толку едноставно како што ни се чини
да се печати работи надвор на екранот,
затоа што сите ние само го направи тоа на почетокот на делот денес,
излегува дека тоа е всушност, знаеш,
добра неколку стотици линии на код.
Тоа не е нешто што јас некогаш ќе сакате да пишувате, за сигурни,
но ние да го користам секој ден, а тоа е вид на кул,
па ние да го споделат со едни со други,
со различни програми,
па ние ќе биде нуркање повеќе во функции;
засега, ние не сме -
единствената функција ние ќе се пишува е главен.
Главната себе е исто така функција,
и можете да видите дека доби своето производство,
нејзините влезови како што зборуваше,
а потоа неговото име, кој е главен.
Главните е вид на - е посебна функција таму.
Во вашиот C програма, има да биде главна функција,
и така сега за сега, ние сме вид на испуштена пишување
прототип, или прогласувањето на, главниот.
Ние сме со оглед на тоа за вас,
и ние само имаше да се пополни во вид на празни места.
>> >> Па за вториот проблем во собата, ние не треба да
напишете го во втората функција?
Јас не верувам дека е така.
Верувам дека тоа е сите овде.
Да, па Цезар шифра,
вие не мора да, тоа не изгледа,
и Vigenere, вие не било,
така - и испоставува дека никогаш не всушност треба да се напише
функција, нели?
Ти се јавам секогаш се стави сите на вашиот код во главната,
и многу програмери направи тоа.
Како што се движи,
ние почне со воведување на функции како начин
да се исчисти вашиот код,
да се направи повеќе домот,
во случај да имате задачи - нешто како кога ние разговаравме за петелки,
како понекогаш постојат работи што сакате да го направите повторно и повторно и повторно,
и имаш вид на наивна начин -
или она што ние често го нарекуваат "сламка човек" решение,
е само да копирате и залепите одново и одново -
можете да го направите истото со функции, каде што само копирајте го и ставете
истиот код одново и одново,
но тоа bloats вашиот код -
тој завршува правење на вашиот код навистина долго -
и исто така добива малку збунувачки,
и тогаш тоа значи дека не сте во можност да ја сакам -
Ако некогаш сакате да го користите овој код повторно во друга програма,
ти си исто така заглавени копирање и вметнување повторно,
така една од работите ние ќе зборуваме за е
вид на дизајнот и стилот на вашите програми,
и така кога има смисла да се вид на
пакет нешто и го ставив како посебна функција,
ние ве охрабруваме да го направат тоа,
и тоа е нешто што, пак,
нема тешко и брзо правило.
Ние ретко велат дека мора да се напише функција наречена ова,
но тоа е повеќе од една од оние работи што само се развие со текот на времето
како што пишува се повеќе и повеќе програми.
>> Други прашања?
Океј, па ајде сега
Одете назад до овој човек токму тука,
па јас сум уште во овој дел на прашања.
Ние разговаравме за сите овие поинакви,
она што е во функција, зошто да пишувам функции,
кога само да копирате и залепите?
Се надеваме дека ние сме ви убеден дека пишувањето функции е добра работа.
Па сега ајде да се движи кон оваа Мајспејс програма,
и ние ќе потрошите малку време го прават тоа.
>> Значи, ајде да видиме,
Јас може да постои некој прочита ова за мене?
Ајде да се Mikhaila - ќе го прочитате ова за нас?
>> Сакаш да кажеш назад кога Мајспејс -
Назад кога MySpace беше кул.
>> "Назад кога MySpace беше студено,
тоа е сите бес да напишеш како оваа.
Можеби се уште е? Јас не сум сигурен.
Во секој случај, со користење на CS50 апарати,
CS50 Run, или CS50 простори,
напише програма која го поттикнува на корисникот за порака
а потоа излези на порака со првата буква капитализирани,
со сите други писма во наизменични случај,
според написот подолу,
кој boldfaced текст претставува инпут некои корисникот.
За едноставност, може да се претпостави дека на корисникот
само ќе влез мали букви и простори.
Размислете за овој проблем можност да ја практикуваат;
вие не ќе биде побарано да поднесе оваа програма. "
>> Прекрасно, ви благодарам.
Па како Mikhaila рече,
ние ќе се напише програма која MySpaces вашиот код.
Па не некој од вас момци го користите MySpace?
Некој од вас има Мајспејс сметки?
О, да, да!
Тоа беше прилично кул.
[Смеа]
Знам.
Запознавање себе.
Значи она што ние се обидуваме да направите е да напишете програма
што оди преку
и капитализира првата буква
а потоа секоја буква потоа -
или секој друг писмо потоа, Жал ми е.
>> Значи - и што можете да видите во овој пример,
ова е како да ја стартувате програмата,
и така ова е само велејќи, "Ние сме водење на програма наречена a.out.
На влез што ние ќе му дава
ќе биде побарано.
Ние не сме gonna снабдување на влез на командната линија. "
Ако сте биле по сите предавања
и слух за командната линија аргументи,
тоа е вид на кој тие - дека фанки синтакса
во главната доаѓа во со int argc, сите нешта,
па еве ние не сме користење дека, ние не се занимаваат со некој од тоа.
Ние сме само ќе се добие оваа внесе од страна на корисникот,
а потоа оваа втора линија со фанки капитализација
е она што сакаме нашата програма за излез.
>> Така, наместо користење на апаратот или да трчаат, ние ќе ги користат простори,
бидејќи ние го добивме простори,
и така, ако вие момци би
добиете вашиот код да изгледа нешто како ова,
па ќе одам да се спаси оваа ревизија
само така имаш котел плоча право тука
што личи ова, int главната (празно), ништо во него.
Всушност, она што ние ќе направиме е ние само ќе избришете сè, сите заедно.
Ние сакаме празно чеша,
бидејќи ние не сме ќе почнете да пишувате код;
Наместо тоа, ние ќе се обиде пишување некои pseudocode
кои, навистина, само значи ние ќе треба да напишете нешто што не е код
таков вид на опишува она што сакате да го направите,
kinda како Давид на првиот ден на предавање,
или Претпоставувам дека беше на вториот ден на предавање кога го правеше целиот чорапи демо.
Вие момци се сеќавам дека - гледањето на чорапи?
Јосиф беше таму вид на пишување на англиски јазик?
Така ние ќе го прават истото.
>> Значи кога ќе почнете да пишувате pseudocode,
Ми се допаѓа да се започне со гледање на она што влезот ќе биде.
И јас си даде примерок случај,
па како "thanks for the add!"
И тогаш ти пишувам што сакам на излез да биде,
кој во овој случај е нешто како ова.
И тој вид на ми дава добра, како, почнувајќи место да се размислува за,
"Добро, сакам да ги преземе алинеја 1
и сакам да го трансформира во линија 2 "
и тој вид на помага води моето размислување.
Ова е добро место за почеток.
Друг начин да се размислува за тоа, исто така, како што kinda се движи
и како да го направите тоа во вашата програми, е да се
се размислува за нешто како што се на работ случаи на ова?
Кои се вид на чудни сценарија?
Кои се чудни влезови дека ние може да се добие?
И што треба тие излези изгледа?
На пример, еден чуден влез
ќе биде оваа,
создавање апсолутно ништо,
како што ние треба да излез во тој случај?
Нешто што сакате да се размислува за, исто така.
>> Па само како прашање,
она што ние можеби ќе сакате да излез?
Ако ние не добивам никакви влез на сите, она што нашата програма треба да се Ставање?
>> Ништо.
Ништо? Звучи одлично.
Значи, сакаме да бидете сигурни дека ние не сме пишување ништо надвор
ако ние не се добие ништо внатре
Кул. Во ред.
Така
Одам да се јавите на неколку луѓе како што ние одиме преку
и само дознаам нешто како она на општата алгоритам е
и ние вид ќе почне да работи преку ова заедно.
>> Значи, ајде да видиме. Ма.
Како мислите дека ние би започнете?
Што ќе биде добро место да се започне тука
ако сакаме да се трансформира, да речеме, алинеја 1
во алинеја 2?
Можете ли вид на само објасни ми, на англиски јазик, што мислиш?
Дури и не се грижите за код.
>> Прво нешто што ќе направи ќе биде да
вид на директна на корисникот за да им каже она што го сакате.
Океј, па, да речеме,
"Еј, корисникот. Сакам
низа "- неверојатна.
Значи, да го запишам ова.
Го извести корисникот за низа.
Тоа звучи како добар почеток.
Во ред.
Да прашам Кели Рен овој пат.
Што тогаш би сакате да правите следно?
Што е вид на нашиот следен -
>> Собери нивниот придонес и чувајте го како променлива.
Велики.
Значи соберат низа,
чувајте го на променлива.
Па има ли нешто посебно што сакаме да направиме тука?
Сакаме да се провери нивниот придонес
пред -
>> Да.
Она што можеби ќе сакате да се провери за?
>> Па, ти рече дека не треба да се провери дали тоа е голем број, нели?
Поради тоа ќе се претпостави дека тоа е со мали букви?
Да.
>> Значи излегува дека - Да.
Значи getString е загарантирана да ни се врати стринг.
Тоа нема да се вратат голем број на нас или нешто слично.
Може да има цифрен ликовите во рамките на таа низа, иако.
И оние, што може да се игнорира како што направивме капитализација.
Но празен стринг е сосема во ред,
па случајот токму тука на алинеја 4 и 5,
право, каде што нема влез,
и ние сме се стави ништо како нашите излез.
Ние не мора да се грижите за што си сигурен дека има нешто во низа
или дека стрингот е најмалку 4 карактери;
ништо е во ред.
Значи ова е во контраст, на пример, со како пени програми кои сте го напишале
каде што требаше да се направат сигурни дека се добива без негативни броеви;
ти мораше да бидете сигурни дека ќе се добива точниот број на денови во месецот.
И како си момци тоа го прават?
Како ти би го направил тој тест?
Што тоа се бара од вас да ги користите?
>> Do-а петелки.
Do-а петелки, други видови на јамки, исто така, да.
Значи испаѓа ние не треба да се користи јамка во овој случај,
кога сме поттикнувајќи за низа, што е вид на убаво.
>> Добро, се движат натаму.
Значи, Стела.
Можете да ни кажете малку за она што треба да правите следно?
Па сега ние го добивме стринг, ние го добивме тоа се чуваат во променлива;
она што ние треба да направите со низа?
>> Ние треба да -
идентификуваат 2 -
Да, само да го каже на англиски, тоа е неверојатна.
>> Идентификација на [недоловим] престолнини - или големи букви.
Да, па ќе идентификува кои од нив се големи и мали букви.
Ние не можеме да големи букви или мали букви нив се додека ние сме идентификувани кои од нив.
Па ние ќе се стави дека во тука.
>> Значи, само размислување за овој процес,
како ние да го правиме ова за идентификација?
Дали знаете, Дан?
Вид на она што ние - она ​​алатка ние ќе треба да се користи надвор од нашата алатникот?
>> Би го стави во некако во како низа или секоја линија
е неговото мала кутија,
а потоа големи букви од таму или не.
Океј, па една алатка може да се користи е низа.
Што треба да се погледне во низа,
иако, да дознаам - моравме да се погледне на карактери.
>> Значи имаш да се погледне на должината на стрингот?
Да, така дел од тоа е добивање на должината на стрингот.
Само од љубопитност, што ние ги користиме за да се добие должина на стринг?
>> Strlen?
Да, strlen, ние ова го нарекуваат "strlen"
Сите овие низа функции, па strlen е функција,
и тоа е супер корисна, затоа што може да го користат за да речеме,
Еј, strlen: Еве еден стринг, кажи ми колку долго е.
Во предавањето денес, Давид зборуваше многу за тоа како strlen се спроведува,
она што всушност се случува зад сцената.
Но, ова е еден од многу супер корисна оние.
Постојат и други оние кои се исто така во низа библиотека,
како strcmp, која е напишано "strcmp"
кој се користи да се споредуваат жици едни на други.
Останатите ќе го искористите како strstr,
што е добро за изнаоѓање под жици и така натаму.
За најголем дел, тие сите се започне со ул, а потоа одат за да биде нешто друго.
Причината поради која тие не се всушност ги опишат како стринг и така натаму
е затоа врати во како раните денови на C,
кога луѓето беа првите пишување и сето тоа,
тие имаа ограничувања на бројот на знаци кои можете да го користите
за имиња на функции и променлива имиња,
така што се е како супер кондензирана.
Но, во секое време да видите нешто што започнува со ул,
што обично значи ова има нешто да се направи со низа.
>> Океј, па имаш да се добие на должина на стринг,
и тогаш, што ќе правиме со ликовите?
Дали знаете, Сем?
>> Јас немам идеја, јас се обидував да го дознаам.
Јас навистина не знам - Би сакал имало некој начин да -
Мислам, јас би помислил можеби и ние може да се направи нешто со коефициенти и ја изедначува,
но не знам на која било функција како што.
Да.
>> Но тоа - тоа не мора да работат,
бидејќи тогаш ќе добиете простори да биде -
ќе треба да имаат простор за да се добие совети за тоа како -
Во ред.
>> Не знам - I'm вид на изгубените во овој момент.
Да - Не, не, не, овие се добри поени.
Значи она што треба да направите е, како Сем рече,
ние треба да пратите што букви се чудни букви,
и кои од нив се дури и букви.
Но ние сакаме да бидете сигурни дека ние не сме само гледа
на чудни, па дури и
индекси во низа,
туку гледа во чудни, па дури и букви во низа,
па ние треба да kinda имаат оваа разлика помеѓу
букви - како што е, всушност, А, Б, Ц, Д, или така натаму,
и она што не се букви, но сепак во нашата низа.
На пример тука, вака фантастичен точка не е писмо,
но тоа е сепак дел од нашата стринг, тоа е уште еден знак.
Исто така, сите од овие простори -
тоа не дава никаква смисла да профитираат простор, нели?
Значи ние сакаме да се осигураме дека можеме некако прескокнете оние
додека сеуште следење на шансите и ја изедначува.
>> Значи каков вид на во нашата програмирање алатникот
досега, ако сакате,
имаме голем број на различни алатки кои ние разговаравме за.
Значи еден, на пример, се променливи,
како ние разговаравме за тука.
Друга алатка ние разговаравме за се функции.
Па ние разговаравме за променливи во нашата pseudocode се тука
како што ние ќе треба да се користи за чување стринг.
Ние разговаравме за функции за да се добие должина на стринг, како strlen.
Ние сме биле зборува за нешто друго, и ние разговаравме за тоа
за многу порано во делот денес: петелки.
>> Што ви момци мислите за користење на јамка во оваа програма?
Jared, што мислите?
Ние ќе го користи јамка во оваа програма?
>> Веројатно не, не, затоа што не мора да одат преку него повеќе од еднаш.
Добро, вие не мора да одат преку она што повеќе од еднаш?
>> Целиот стринг.
Право, така да не мора да одат преку низа целиот еднаш.
Жал ми е што го направија апсолутно никаква смисла!
Вие не мора да одат преку целата низа повеќе од еднаш.
Во ред.
Што мислите?
>> Мислам дека е подобро да ги користите
така што можеме да направиме како профитираат додека
локацијата од тоа е [недоловим] број.
Одлично, и така профитираат што?
Океј, па ние велиме дека
ние треба да го користи телефонска линија, бидејќи ние сакаме да
голема буква, додека тоа не е број.
Па - се извинувам, дали сакате да додадете?
>> Јас требаше да се каже дека начинот на кој се третираат низа
и [недоловим] одделни [недоловим] на карактери?
Да.
>> И тогаш можеме да му ја додели броеви -
или базирани на локацијата на букви во низа?
Да.
>> И се утврди дали тоа е чудно, па дури и да ја капитализира на писмото себе
додека локацијата на писмото е [недоловим] - Жал ми е.
Велики.
>> Па само повториме.
Можете да ме потсетува на твоето име повторно - I'm sorry.
>> Шарлот.
Шарлот, во ред.
Значи она што Шарлот е велејќи:
што е сосема во право - боже, ова сака да автоматски алинеја од мене -
е дека ако гледаме низа
како што е оваа на врвот -
"Thanks for the add" -
како секвенца од знаци
каде што е на позиција 0,
ж е на позиција 1.
А е на 2, тогаш добивме 3, 4, 5;
просторот е во позиција 6.
А - што е позицијата на ѓ?
7!
О? 8.
Р? 9.
И тогаш имаме 10, а потоа јас навистина не може да се пишува без тоа
kinda добивање неуредна на екранот.
Но, ова е всушност како можеме да зборуваме за стрингови во меморијата.
Тоа е еден стринг
е низа од карактери,
и кога ќе се однесуваат на индивидуален карактер во низа,
ние често го стори тоа со повикување на ставот дека ликот
во низа,
веројатно ист начин како што ние зборуваме за септември
е деветтиот месец од годината
или понеделник е првиот ден од седмицата.
Па ова ни обезбедува начин да се
дознаам кои од нив се чудни наспроти дури
бидејќи можете да ја видите тука,
ако тоа се поклопува со оваа T,
можете да видите дека сите капитализирани оние
се во дури позиции,
барем за првиот збор,
и потоа работите да се исфрлени еднаш сме го погоди тој простор,
затоа што ние не очекувај овој простор како писмо,
па тоа е како да сме отворени
и отиде 0, 1, 2, 3, 4, 5,
простор, 6, 7, 8, простор,
9, а потоа 10, 11, 12, и така натаму.
>> Кул, така што дефинитивно ќе сакате да го користите некој вид на јамка
да одиме во текот на секој од ликовите во ред.
Па во овој момент,
ние ќе се вратам на нашите стари pseudocode тука.
Како дел од оваа идентификација на кои од нив
се големи и кои од нив се мали,
ќе сакате да го направите ова во некој вид на јамка.
Јамка, дебелото црево.
Каков вид на јамка, од видови на јамки што ги имаме,
чини да се биде добар за да го користи во овој случај?
>> Јас мислев за телефонска линија.
И зошто мислиш на за телефонска линија?
>> Поради тоа што започнува на нула, а потоа
кога ќе стигнат до должината на стрингот,
а потоа секој повторување можете да [недоловим], исто така?
Да, точно.
Значи, од различни избори на јамки,
имаме за петелки, додека петелки, и не се прави додека петелки.
Каде што за телефонска линија е особено корисно
е кога сакате да знаете
вид на каде сте во во јамка,
колку пати јамка е извршена досега.
Кој е токму она што сакате да знаете во оваа ситуација,
како што е Кели рече,
базирана на претходно коментар на Charlotte дека сакаме да се знае позицијата
на карактер во рамките на стринг,
и за телефонска линија ќе ни даде само тоа,
затоа што ако почнеме вид на бара назад во нашата низа,
ако ние започнуваме нашата за јамка на 0,
и одиме нагоре низ должината на целата низа,
тогаш можеме да ја поврзете писмо T
со 0 во нашата за телефонска линија,
писмо H со 1 во нашата за телефонска линија, и така натаму,
ќе целиот пат до крајот на стрингот.
>> Значи, да почнеме кодирање ова само малку
само така вие момци се добие чувство за она што оваа изгледа.
Одам да се спаси ова,
па ние го добивме нашиот псевдо код овде,
и јас одам да го избришете сè.
Па имам празно чеша.
Јас сум ќе започне со пишување int главната (празно)
{
Јас сум ќе се стави на враќање 0 во
а потоа}.
Па обично кога ќе почнете да програма, тоа е она што јас се започне со.
Ќе го спаси, така што вие момци го имаат.
Значи една од првите работи што зборуваше е
добивање на влез од корисникот
и чување на тоа во низа.
Како да ја добиете влез од корисникот?
>> GetString.
GetString, сите во право.
Значи, ако јас внесете GetString ()
и точка-запирка.
Ајде пробајте ова, ова ќе се кандидира, прв од сите?
И зошто тоа не ќе се кандидира?
>> Мора да се прогласи променлива.
Морам да декларирате променлива. Во ред.
>> Па, како да го направам тоа?
Дали ќе ти пречи пишувате нешто, споделување на тоа?
И потоа можеме да го повлече.
Ајде да видиме, Дан, десно, во ред.
Или Даниел. Копија од тоа во, стринг внесување = GetString ().
Страшни.
Тоа ќе се кандидира?
Ајде да ја обидат.
Хит рок, качувањето изворниот код, зграда, се јави грешка.
Во ред.
Значи правите се случува овде?
Употреба на 'стринг' непријавена идентификатор.
>> Ние мора да вклучуваат библиотеки?
Да, па на Dan велејќи дека ние треба да вклучуваат библиотеки.
Е дека она што се случува да се каже, Стела? Страшни.
Тоа е страшно, па Стела, може да ви
Копирај го овој код надвор од просторот на Daniel?
Ако кликнете на Даниел Роланд Ки, копирај,
и тогаш ќе го стави вклучуваат линија во, а потоа зачувајте ја надвор?
Дозволете ми да знам, кога ќе завршиш.
Значи оваа синтакса вклучуваат е исто така еден вид на фанки;
таму е како што хаш таг,
и тука е се, а потоа таму се овие аглести загради.
Се сеќаваш ли како тоа функционира, или јас треба да го постави на овој код овде?
>> Јас сум добар.
Во ред.
>> Јас го испечатени - не бев сигурен што библиотеката, иако.
О, во ред - Да, па тоа е CS50 библиотека.
>> О, јас се стави stdio библиотека.
>> Ох, тој доби - Да, не, that's -
па излегува дека стрингот е всушност нешто што е посебно за CS50.
Таму всушност не е вистинска стринг тип
бидејќи токму тука, стринг е во видот позиција, -
ние сме за прогласување на променлива наречена влез од типот string -
и ние сме ставање во внатрешноста на влезни
вредноста која добива се врати во нас: на излез од оваа GetString повик на функција.
Може да се каже ова е повик на функција, бидејќи тоа е доби загради, исто како printf не,
исто како strlen прави.
Но, стринг не е всушност вистински тип
во јазик C.
Ние го направи во еден вид, а ние ќе трае околу повеќе што тој навистина е
во C, бидејќи постои начин да се работи со жици;
ние сме само направено нешто за да го направите да изгледа малку поубаво.
>> Значи тука ќе одиме.
Еве код Стела.
Тоа доби # вклучуваат .
Други луѓе ќе го наречеме ова како хаш вклучуваат понекогаш или остар вклучат.
Сега можеме да го пушти, да го стартуваш неа,
и ние се уште добиеш грешка.
Ајде да видиме што се случува.
"Неискористени променлива" влез ".
Океј, па тоа е кул, тоа е кул.
Мислам, тоа не е навистина кул,
затоа што ние сме добивање на грешка и не е водење,
но она што ова е велејќи дека
ние не го користат нашите променлива, што ја прави смисла.
Ние не се обиде да направи нешто со неа.
Ова е начинот на кој
Ѕвекот се обидува да ни помогне да бидете сигурни дека ние не сме само користење на променливи
а потоа ненамерно нарекувајќи ги нешто друго подоцна во нашиот код,
ни помага да се избегне грешки на тој начин.
>> Добро, така имаме влез од корисникот,
ние го чуваат во променлива.
Следниот чекор е да потоа
почнете да барате во сите карактери во стринг
и идентификување на кои од нив треба да бидат големи
а кои треба да бидат со мали букви.
И како што е Кели и Шарлот израснати,
Ние го правиме ова со користење на за телефонска линија.
Значи не некој се сеќавам на синтаксата на за телефонска линија
и би сакале да земе прободе во само пишување
на првата линија на за телефонска линија, само за малку?
Кели, сакаш да пробвам?
>> Да, па мора да се иницијализира прво,
па јас го ставам = 0,
а потоа го направив јас <strlen ().
Тоа е во вашиот простор - можам да го повлече?
>> Да, јас зезнав малку, но је.
>> Океј, ајде да се повлече.
Страшни.
>> Но, тогаш јас не знам дали сте ја имале таа -
Да, во ред.
Значи тука е она што Кели доби: ајде да погледнеме тоа брзо.
Па таа е вклучено на cs50 библиотека на врвот.
Таа е вклучена во стандардната IO библиотека на врвот,
и стандардот IO има функции како printf,
па ако некогаш сакате да го користите printf, треба таа линија.
И тогаш таа вклучува низа библиотека,
кои ние ќе треба,
бидејќи стринг библиотека има strlen функција,
која ние ќе дојдеме до само малку.
Значи, ако ние погледнеме во она што Кели е направено овде,
можете да ни одат преку она што го направив?
>> Да, па - мислам, добив грешки, па -
Да, не, it's -
>> Значи сакав да се јавите на стринг што ја добив само "стринг".
Сакав да се печати низа
и тогаш јас -
Сакав да ја сакам постави низа како како низа на секој карактер
да се биде различен [недоловим], нели?
А потоа сакав да започне во положба 0
а потоа на секои 2 простори,
Јас требаше да профитираат,
па јас само го опиша како 23, бидејќи јас бев во потрага на ASCII табелата.
Значи тоа е она што јас мислев - Знам дека не е во право.
>> Доби, така што ова е одличен почеток.
Мислам дека многу од рамката е во местото тука.
Ајде да одиме преку вид на линија по линија и да видиме што се случува.
Па начинот на кој сакам да го направите ова е само почеток со составувањето на кодот
и препуштајќи му се на компајлерот да ми кажете како што е проблемот со мојот код,
бидејќи компајлер е навистина добар во ти го кажувам она што е во ред со вашиот код.
Значи, ако ние го игра, градење, и тоа не се изгради.
Таа вели дека има грешка,
Значи, ако ние движете се надолу и да се погледне на првата грешка,
таа рече -
ние дојдете назад до врвот,
можеме да видиме има 5 грешки генерирана овде долу на дното.
Упс, тоа е навистина отсечени.
Претпоставувам дека е само не се случува да се добие било подобро.
>> Еве ќе одиме.
Па така постојат вкупно 5 грешки генерирана.
Еве јас само може да се види на првите 2,
така што може да се помести ова се малку, а потоа вид на скролувајте горе.
Ова е командата која беше водена да се компајлира кодот,
а потоа на првата грешка беше во враќам документот тука:
"Очекува идентификуваат или '('", а тоа беше на оваа линија
каде што рече стринг = GetString ().
Можете да видите тука дека тоа е на линија 8 од враќам документот,
и тогаш верувам дека ова е карактер 12 - тоа е грешка.
Значи она што се случува погрешно on-line 8 - Кели?
>> Вие само треба да ја наречете, како, писмо или нешто,
како стринг s или нешто?
Да, па излегува дека овие посебен вид имиња,
па стринг, int, char, кратки,
сите тие се специјални клучни зборови,
а вие всушност не можат да ги користат како имиња на променливи,
затоа што на компајлерот изгледа во тоа и вели:
"Ах, знам дека е еден вид"
така да не всушност може да има стринг променлива наречена стринг,
како што јас се обидувам да го направите тука, тоа нема да работи.
Но, наместо тоа, можеме да го наречеме нешто како s или ул или ул.
Ние исто така не може да се нарече тоа int.
Ние не може да има низа наречен int.
Ние не може да има низа наречен знак; ниту еден од тие ќе работат.
>> Па ние само ќе го наречеме ги засега.
Страшни.
Значи она што следи што се случува во оваа линија?
Низа - оваа линија изгледа прилично добро?
Да го дадеме уште се обидете, ајде да ја стартувате.
Океј, па ние се уште се грешки.
Овој пат, ние сме до 4 грешки.
Значи имаме еден од нив.
Ајде да се движи нагоре.
"Неочекувана тип името 'стринг': очекувани изразување", да?
>> Да, тоа е затоа што јас се обидував да го именува стрингот.
Да, така што изгледа како ние сега, исто така, треба да се оди фикс
сите овие референци кон стринг.
Можете да видите има повикување на стринг тука, овде, овде,
за да можеме да ги преместите сите овие да ги.
Велики. Океј, тоа се кандидира повторно.
Зграда - уште една грешка.
>> Океј, сега сме до една грешка,
па int i = S а потоа квадратни загради.
Па можете да ни кажете малку за она што го правите овде, Кели?
>> Да.
Тоа беше на линија 10.
>> Јас не знам дали ни е потребно сето тоа,
но мислам дека се обидува да -
Јас ќе ја спаси, па можете да го следат заедно.
>> Мислам дека јас бев
се обидува да го кажам за да започне во положба 0
на почетокот на мојата за телефонска линија,
па мислам дека можеби тоа велејќи дека е непотребно.
Значи само да повториме,
сте биле велејќи дека ова - ќе се обидуваат да почнат тоа во положба 0
и го добивате ова - Да,
па мислам дека претходно, исто така, кога ќе се шетаат низ кодот,
ви се зборува за тоа како си сакал да се третираат низа како низа
па ние да пристапите секој лик поединечно.
Мислам Дан споменати низи, исто така, се обидуваат да го конвертирате жици во низи.
>> Излегува дека вид на под хауба,
низа е всушност чуваат како низа веќе,
и можете да го пристап како низа;
нема реализација, која што треба да направите.
А низа isn't - толку -
низа не е навистина низа,
но можете да го пристап, како што се, затоа што сите на ликовите се чуваат
еден веднаш до едни со други во меморијата,
па ако сакате да го добиете првиот карактер на стрингот,
тоа е исто како добивање на првиот број во број низа.
Па ние често - we'll
однесуваат на 2 како
ох, како стринг, како низа,
иако тоа навистина - they're многу различни нешта,
но можете да ги третираат многу исти.
Значи излегува дека оваа линија всушност -
ние не треба да направите било конверзија,
и всушност,
ова всушност не е валидна изразување,
што е она што нашите компајлерот ни кажува.
Тоа е велејќи: "Еј, се очекува израз,
и што имам тука е нешто што не е израз ".
Да се ​​прогласи низа,
сите што треба да направите е нешто како ова со точка-запирка,
а потоа ви кажам низата колку долго ќе сакате да биде,
како што се 5, па оваа линија 10
ќе прогласи низа наречен i со 5 броеви во неа.
>> Ова е настрана, тоа не е потребно за кодот,
но ова е - ова е вид на она што декларацијата изгледа.
>> Како ќе го користите знак i [strlen (s)]?
Char i [strlen (s)]?
>> Знак i, а потоа внатре во загради, strlen (а).
Да, па ние би можеле да -
ние би можеле да го направите ова,
и ова ќе прогласи - Што ќе правиме?
>> Мислам дека ќе прогласи низа
на, како и - на -
ох, не треба i - ох,
Да, вие дефинитивно не треба јас.
Вие декларирате низа на карактери
должина s.
И така што на Sam вели дека
оваа линија 10 - дозволете ми да стави некои простор меѓу него и останатите за да можеме да ја изолира -
оваа линија 10 ќе прогласи низа
на карактери, strlen (а) во вредност од нив,
но ние всушност треба јас,
и причина ние треба i е затоа што ние треба да се даде на низа име;
Во спротивно, нема да има начин да се однесуваат на низа подоцна во кодот.
>> Значи ова право тука е низа името
и од внатре е должината.
Ова ќе ни даде низа,
но тоа е - еднаш, ова е изјава.
Тоа не е задача, тоа не е иницијализација.
Ако изјавуваме оваа низа вака,
има всушност ништо во содржината на низата.
Тоа е само ѓубре - што е таму.
И како што рековме,
ние всушност не ни треба да направите конверзија,
бидејќи ние веќе можеме да се третираат стринг е како низа.
Знам дека сте водење на малку долго на време,
но сакам само да навистина брзо дојде до ова за телефонска линија
и ќе покаже како да пристапите до индивидуалните карактери во низа,
затоа што тоа е клучот за нашиот задача.
И тогаш ќе те оставам да си одат од таму.
>> Па еве, ние имаме еден за телефонска линија
која изгледа речиси добро.
Она што не е сосема речиси таму?
What's - она ​​што не е сосема во право за ова за телефонска линија?
>> Не кадрави загради?
Не кадрави загради, за еден.
Сакате да бидете сигурни дека имаме телото на јамка со кадрави загради.
Упс, не на плоштадот голема заграда!
И она што е следното нешто што ние треба да направите со овој циклус?
Ако јас се обидувам и да ја стартувате,
правите оваа грешка што ќе добијам?
Јас ги добиете сите овие грешки - Морам да ми се иницијализира.
Велики.
Па ова ќе биде еден циклус - ова не е сосема таму,
но станува навистина блиску.
Овој код ние сега може да работи,
изградба, грешка уште се случува.
Зошто е тоа уште се жалат,
велејќи дека изразот е неискористен,
и тоа е затоа што оваа линија не прави ништо.
Ние не го чува насекаде, ние не спаси резултат.
Каде што треба да се штеди овој резултат?
>> S или јас?
Точно, и оваа фанки синтакса,
ова е со квадратни загради
значи пристап на i-тиот карактер е.
Тоа ќе биде нешто што е навистина важно за задачата.
За жал, ние ќе мора да запре тука,
така што Себастијан дел може да дојдат,
но јас сум среќен да остане по надвор и ќе ги преземе сите прашања.
Па ви благодарам момци за кои доаѓаат.
Ова сега треба да испратите, да се изгради, да го стартуваш.
Ние можеме да внесете како "здраво"
и тоа отпечатоци "QOX".
[Смеа]
>> Па не е сосема таму, но се движат, добивање кон оние петелки!
Ви благодариме за доаѓање, а јас ќе бидам надвор.