[? Дадзены ARMADARAS:] Прывітанне, Я [? Дэн Armadaras?].
Сёння мы збіраемся шукаць пры адладцы.
Не толькі мы будзем казаць аб некаторых метадаў,
але таксама мы будзем глядзець на некаторыя з функцый, якія змяшчаюцца
у CS50 IDE, якія дазваляюць Вы лёгка адладжваць праграму.
>> Толькі адзін прыклад тое, што можа пайсці не так
і гэта на самай справе нешта што мы ўжо бачылі раней.
У гэтым выпадку гэтая праграма З які прымае цэлы лік ад карыстальніка,
дзеліць яго на дзве часткі, і забяспечвае выхад назад карыстальніку.
Цяпер ад таго, што мы бачылі раней у лекцыі,
мы ведаем, што гэта будзе на самой справе прычына канкрэтныя тыпы праблем з дзяленнем
калі ў нас ёсць няцотныя лікі.
>> У прыватнасці, мы проста выкінуць небудзь пасля дзесятковай кропкі.
Цяпер мы ведаем, што гэта бывае так.
І калі мы запусціць яго, мы можам пацвердзіць, нашы падазрэнні, па-першае, кампіляцыі.
А потым, за кошт выканання і ўвод няцотная колькасць.
>> У гэтым няма нічога новага.
Але гэта на самай справе прыклад памылка,
можа існаваць у рамках больш шырокай праграмы што становіцца ўсё цяжэй высачыць.
Нават калі мы ведаем, што пытанне ёсць праўдзівы Сутнасць справы
можа быць спрабуюць вызначыць дзе канкрэтна адбываецца памылка,
Вызначэнне таго, што гэтую праблему гэта, а затым яе фіксацыі.
Так забяспечыць гэта ў якасці прыкладу што можа быць нешта
што мы ўжо ведаем, але можа быць пахаваны у іншых элементаў кода.
>> Так адкрыцця гэтага іншай крыніцы код файла ў якасці прыкладу,
гэтая праблема ў цяперашні час падзел часткай больш буйной праграмы.
Яшчэ можа быць трохі трохі надуманы, і мы
маглі б лёгка вызначыць яго, асабліва
бо мы якраз абмяркоўвалі гэта.
Але мы можам зразумець, што гэта Праблема можа існаваць у больш буйным маштабе.
>> Калі я скампіляваць і цяпер запусціць яго, увядзіце няцотны лік,
мы бачым, што мы не атрымліваем дакладна выхад, што мы, магчыма, чакалі.
У дадзеным канкрэтным выпадку, мы маглі б сказаць, што мы
хочаце палічыць усе нумары ад аднаго да некаторай вызначанага ліку.
І мы бачым, што мы ёсць шэраг пытанняў,
тут, калі мы вываду, проста, 0 і 1, калі мы забяспечваем ўвод 5.
>> Такім чынам, мы ўжо ведаем, што ёсць праблема.
Але мы не можам дакладна ведаць, дзе гэтае пытанне на самай справе існуе.
Цяпер адзін з спосабаў, які мы можам паспрабаваць гэта выправіць
што-тое, што мы ўжо былі ўведзеныя ў.
Мы можам проста выкарыстоўваць яго ў большым маштабе.
>> На лініі 14, мы маем гэтая функцыя Printf,
што дазваляе раздрукаваць дзяржавы розных частак інфармацыі.
І гэта тое, што вам павінны выкарыстоўваць у сваёй праграме
каб паспрабаваць высветліць, што менавіта гэта адбываецца ў розных радкоў кода.
Таму, нават калі гэта не Канчатковы вынік, што мы сапраўды
хочуць вырабляць з гэтая праграма, мы па-ранейшаму
магчыма, некаторыя адладкі заявы, дзе мы
можна паспрабаваць высветліць, што менавіта што адбываецца ўнутры нашага кода.
>> Такім чынам, у гэтым выпадку, я буду PRINTF з адладкі тэга.
У гэтым выпадку, гэта проста адладкі радок
што я да-здачы, так што яна становіцца вельмі ясна на выхадзе майго кода
тое, што гэта тое, што я хачу паказаць.
І выхад тут лік што мы разлічылі.
>> У гэтым выпадку, я мог бы хачу дакладна ведаць,
што адбываецца да і пасля некаторага канкрэтнага разліку.
Так што я, магчыма, выкарыстоўваць, перш чым Printf і пасля гэтага радка кода.
У гэтым выпадку, я мог нават зрабіць гэта крыху больш ясна,
кажучы адладку, перш чым і адладкі пасля так
што я не блытаю сябе з некалькі радкоў, якія выглядаюць ідэнтычна.
>> Цяпер, калі мы перакампіляваць і запусціць гэта гэта, увядзіце нумар як пяць разоў,
мы бачым, што ў нас ёсць Цяпер выхад да і пасля
і выявілі, што мы не зрабілі ясна падзел або ясна, які мае колькасці
што мы на самай справе хочам зрабіць.
У цяперашні час у дадзеным выпадку, гэта на самай справе не ясна выходны.
Гэта на самай справе не ясна, што вынік мы хочам ад гэтай канкрэтнай праграмы.
>> І гэта, зноў жа, трохі надуманы.
Але, мабыць, адна з рэчаў, якія мы маглі б зрабіць, калі спецыфікацыя сказаў
што мы хочам падзяліць гэта, 2 і дадаць 1-- так, іншымі словамі,
мы хочам, каб закругліць up-- то мы ведалі, што мы маглі б
зрабіць гэта асаблівая справу, у гэтым выпадку.
Цяпер вось мы ведаем, што мы будзем магчымасць дадаць 1 да нашай ўдвая колькасці.
>> Давайце перакампіляваць гэта і пацвердзіць, што гэта
паводзіць сябе так, што мы гэтага хочам.
Мы бачым, што цяпер, перш чым маючы, у нас ёсць шэраг 5.
Пасля, у нас ёсць лік 3, якія ў адпаведнасці з нашай спецыфікацыі,
гэта тое, што мы хацелі зрабіць.
Але калі мы паглядзім на Выйсце тут, мы можам
бачыць, што мы маглі б мець іншы памылка наогул, што
што мы пачынаем наш кошт ад 0.
>> Цяпер зноў, гэта тое, што мы бачылі ў мінулым
і мы можам выправіць даволі лёгка.
Але ў дадзеным выпадку, мы таксама меў перавага
выкарыстання PRINTF аб непасрэдна ўнутры для цыклу
каб дакладна ведаць, дзе што памылка адбывалася.
Так PRINTF заявы вельмі карысны ў дапамозе
Вы вызначыць, дзе, менавіта ў зыходным кодзе,
канкрэтная памылка адбываецца.
>> І гэта таксама важна разумець, што, як мы пішам код,
мы маглі б здагадкі аб стане праграмы.
Ці мы маглі б здагадкі аб тым, што частка праграмы
на самай справе правільна ці няправільна, калі пазней, як мы будуем па гэтай праграме
і зрабіць яго часткай больш складанай і больш праграма
што мы разумеем, што некаторыя аспекты таго, што на самой справе памылак.
>> Выкарыстанне Printf сапраўды можа дапамагчы звузіць і вызначыць
рэгіёны праграмы, якія не могуць быць сябе менавіта так, як мы
чакаць, грунтуючыся на нашых здагадках.
Але ёсць і іншыя інструменты даступныя, а таксама,
якія дазваляюць нам, каб паспрабаваць высветліць , Дзе памылка адбываецца
а таксама, у прыватнасці, якія рэчы адбываюцца ўнутры праграмы.
>> Такім чынам, выкарыстоўваючы Printf вельмі карысная, калі мы хочам
вызначыць канкрэтныя вобласці праграма, якая ёсць памылка.
Але гэта таксама становіцца стомна праз некаторы час.
У гэтым выпадку, гэта адносна простая праграма
з аднаго або двух зменных.
І гэта становіцца вельмі лёгка для нас, каб раздрукаваць значэнне гэтых зменных
у больш шырокім кантэксце праграмы.
>> Але мы маглі б мець розныя Праграма, якая мае шмат зменных.
І гэта можа быць не зусім настолькі просты ў выкарыстанні Printf
каб паспрабаваць ацаніць тое, што адбываецца у кожнай з гэтых пераменных
як праграма выконваецца.
Там гэта праграма, якая існуе называецца праграма адладчык.
У гэтым выпадку той, які мы будзем выкарыстанне адладчыка GNU ці GDB,
што дазваляе нам, каб агледзець ўнутраны выпрацовак праграмы ў значна больш
падрабязна.
>> Мы можам на самай справе выканаць GDB з каманднага радка
тут проста набраўшы GDB і Каманда, што мы хочам, каб адладзіць.
У гэтым выпадку, кошт.
У цяперашні час у гэтым выпадку, мы бачым, што гэта прыводзіць нас да радка, якая кажа GDB.
І мы сапраўды можам выканаць каманды GDB
на самай справе пачаць выкананне Праграма, спыніць яго ў пэўных кропках,
ацаніць зменныя і праверыць зменныя, якія
існуюць у Дзяржаўнай праграме у той момант,
і гэтак далей, і гэтак далей.
Гэта забяспечвае вялікую магутнасць для нас.
>> Але так ужо здарылася, што CS50 IDE таксама
прадастаўляе графічны інтэрфейс карыстальніка ці інтэрфейс для GDB, што
дазваляе нам зрабіць гэта без неабходнасці інтэрфейс каманднага радка наогул
ці наогул нават.
Такім чынам, што я магу атрымаць доступ, што гэта з дапамогай кнопкі адладкі
на самым версе CS50 IDE.
У цяперашні час у мінулым, што ў нас ёсць бачыў, што мы выкарыстоўваем каманду
Лінія для кампіляцыі, а затым запусціце праграму.
>> Кнопка адладкі робіць абодва гэтых крокаў.
Але гэта таксама будзе выхоўваць адладчык ўкладка ў далёкім правам
што дазваляе нам, каб агледзець разнастайныя уласцівасцяў праграмы
як гэта выконваецца.
Калі я націскаю адладкі, у гэтым так, яна будзе выхоўваць
новая ўкладка ў кансолі Акно ў самым нізе.
>> І вы можаце бачыць, што гэтая ўкладка мае Некаторая інфармацыя на самым версе.
І мы можам у значнай ступені ігнараваць гэта.
Але адна з рэчаў, што мы хочам заўважыць,
з'яўляецца тое, што ён выводзіць тое ж самае, што мы
хацеў бы атрымаць, калі б мы спрабавалі запусціць зрабіць на Праграма C у акне тэрмінала.
>> Тут мы бачым, што гэта працуе ляск, і мае розныя сцягі,
і гэта кампіляцыя наш count.c файл, які быў у той час выдзеленая ўкладка
што я трапіў адладкі.
Так што гэта вельмі карысна, таму што Зараз з дапамогай гэтай кнопкі адладкі,
мы можам адначасова скампіляваць, а затым выканаць праграму, мы на самай справе
хачу працаваць.
>> Адзін з сцягоў, які з'яўляецца Важна, у дадзеным выпадку,
мы на самай справе выкарыстоўвалі працягу доўгага перыяду часу
але і проста зрабіў некаторыя боку размахваючы [неразборліва], якія
гэта прама тут.
У ляскам, гэта кажа -ggdb3.
У гэтым выпадку, тое, што мы распавядаючы ляскам, наша кампілятар,
з'яўляецца тое, што мы хочам, каб скампіляваць нашу праграму.
Але таксама забяспечыць тое, што з'яўляюцца называецца сімвалам інфармацыя
так што кампілятар на самой справе мае доступ для многіх асноўнай інфармацыі
змяшчаюцца ў праграме.
>> Больш канкрэтна, колькасць функцый, якія ў мяне ёсць,
імёны тых функцый, зменныя, віды
што гэтыя зменныя, і разнастайнасць іншых рэчаў, якія дапамогуць адладчык
выконваюць сваю працу.
Зараз ёсць нешта яшчэ гэта важна адзначыць,
калі мы абмяркоўваем ход Праграма такім чынам.
>> Звярніце ўвагу, што на самой справе ён мае прынёс новую ўкладку ў нашай кансолі
па дне.
Мы больш не павінны ўзаемадзейнічаць непасрэдна ў акно тэрмінала.
Але гэтая новая ўкладка на самай справе акно тэрмінала.
Гэта проста спецыфічны для бегу Праграма, што мы стварылі.
>> Звярніце ўвагу, што ў ніжняй частцы, у Спалучэнне з нейкай выхад
па ляск кампілятар і GDB, якія мы можам у значнай ступені ігнараваць,
гэта на самай справе паказвае выснову наша праграма на самым дне.
Цяпер важна зразумець, што гэта на самай справе адно акно
пакажа вам Выхад з праграмы
але таксама можа прымаць ўвод для гэтай праграмы, а таксама.
>> Так звярніце ўвагу, што кажа калі ласка, увядзіце нумар,
што той жа выснову, што ў нас меў на акне тэрмінала да.
Але цяпер паказана ў гэтай новай ўкладцы.
Я магу ўвесці нумар.
І гэта будзе на самой справе Функцыя, як мы чакаем
паказваючы нам наш адладкі выхад, выхад, што можа быць багі,
як мы бачылі раней.
І ў самым нізе, яго на самай справе мае некаторыя дадатковыя выходныя
ад ВУП проста кажу, што гэтая праграма завершана.
>> Цяпер, як вы бачылі ў гэтым прыватнасці прабягаюць,
гэта не было асабліва карысна, таму што нават
хоць у нас былі меню адладчыка прыходзяць да, гэта было яшчэ працуе праграма.
Ні ў адной кропцы зрабіў гэта на самай справе прыпыніць выкананне для нас
каб быць у стане праверыць усе зменныя, якія змяшчаюцца ў.
Там нешта яшчэ што мы павінны зрабіць для таго,
каб атрымаць GDB прызнаць, што мы хочам каб прыпыніць выкананне праграмы
а не проста дазволіць ёй перайсці Звычайна, як мы б у любым іншым выпадку.
>> Для таго, каб прыпыніць выкананне, у нейкай канкрэтнай лініі,
мы павінны стварыць тое, што называецца кропкай разрыву.
І кропка разрыву вельмі лёгка стварыць у гэтым CS50 IDE, прымаючы вашу мыш
і націснуўшы непасрэдна злева некаторага вызначанага ліку ліній.
Пасля таго, як я гэта зраблю, чырвоная кропка Аказваецца, што паказвае
што гэтая лінія зараз кропка разрыву.
>> І ў наступны раз, што я запусціць GDB, яго спыніць выкананне ў гэтай кропцы разрыву
калі ён дасягае гэтага кода.
Зараз гэта важны рэч, каб зразумець
што гэта не абавязкова так, што кожны радок кода
на самай справе даступныя.
Калі б я быў, каб стварыць функцыю тут, на example-- пустэч F--
і проста зрабіць лінію друку here-- прывітанне world-- калі я ніколі не называюць гэтую функцыю,
гэта будзе той выпадак, калі, калі я ўсталяваць кропку супыну тут,
функцыя ніколі не будзе выклікана.
І, такім чынам, гэта Кропка разрыву прыватнасці
ніколі не будзе на самой справе паўза выкананне праграмы.
>> Так што давайце казаць, што я правільна стварыць кропка разрыву на некаторым радкі кода
што на самой справе будзе выконвацца.
У цяперашні час у дадзеным выпадку, гэта Першы радок у галоўнай функцыі.
Так што, безумоўна, будзе выпадак што, як толькі я пачынаю выкананне,
самая першая радок будзе дасягнута.
GDB будзе прыпыніць выкананне.
І тады, я буду ў стане ўзаемадзейнічаць з адладчыкам.
>> Вы можаце ўсталяваць некалькі радкоў, як кропкі супыну, калі вы хацелі б.
Мы таксама можам стварыць лінію да тут, у гэтым сегменце кода
што ніколі не будзе дасягнута.
І мы таксама можам ўсталяваць адну ніжэй.
Прычына таго, што мы б хачу зрабіць гэта мы будзем
перайсці ў трохі больш дэталь у хвіліну.
Так што цяпер, дазвольце мне проста адключыць гэтыя дадатковыя кропкі супыну
так што мы можам глядзець на тое, што адбываецца калі ў мяне ёсць адзін адзіны перапынак
кропка ў маёй праграме.
Я зрабіў некаторыя змены ў гэтай праграме.
Таму мне трэба, каб захаваць яго.
Я націсніце адладкі, так, што я магу пачаць кампіляцыю, а затым
выкананне адладчыка.
>> Мы ўбачым, што пасля момантаў, у лінія, што мы выбраны ў якасці перапынку
Кропка будзе выдзелены жоўтым колерам.
Мы можам таксама заўважыць, што ў верхні правы ў панэлі адладкі
што значок паўзы атрымалася ў маленькую абразок гульні.
Гэта азначае, што мы павінны паўзу Выкананне, у дадзеным канкрэтным выпадку.
І націснуўшы кнопку Play будзе дазваляюць аднавіць выкананне
ў гэтай канкрэтнай кропцы.
>> Звярніце ўвагу, што ёсць некалькі іншых даступныя ў гэтым адладкі панэлі кнопак,
а таксама.
Крок за, што дазваляе мне выканаць гэтую адну радок кода
і крок да гэтай лініі да Наступны, які, у дадзеным выпадку,
будзе азначаць, што Printf аператар выконваецца.
І гэта будзе паўза выкананне ў радку 13, як гэта.
>> І ёсць таксама крок у функцыі, якая
Карысна, калі я стварыў іншы функцыі ў іншых месцах у зыходным кодзе.
І я хачу, каб увайсці ў гэтыя функцыі, а не
выканаць гэтую функцыю ў цэлым.
Але мы больш на стадыі у функцыі у хвіліну.
Зараз звернеце ўвагу некаторыя іншыя рэчы, якія на самай справе існуюць у гэтай адладкі панэлі.
>> У нас ёсць гэтая панэль называецца Стэк выклікаў, які паказвае нам
дзе менавіта мы знаходзімся.
У гэтым выпадку, мы знаходзімся ўнутры з асноўнай функцыі.
Наш скрыпт называецца count.c.
І мы апынуліся на радок 13, слупок адной, якая
гэта менавіта тое, што выдзеленая вобласць зыходнага кода паказвае, як добра.
>> Зараз звернеце ўвагу, што гэта таксама паказвае, пад мясцовай пераменнага сячэння
ўсе зменныя, якія існуюць у гэтай функцыі.
Важна адзначыць, што ўсе зменныя
з'явіцца ў гэтай лакальнай зменнай раздзел ўнутры функцыі,
яшчэ да таго, як яны вызначаны.
Мы можам бачыць тут, што мы маем зменную называецца піт, па змаўчанні мае значэнне 0,
і гэта тыпу Int.
>> Зараз, перш чым мы на самай справе ініцыялізацыі усе гэтыя зменныя,
мы не абавязкова гарантавана паглядзець значэнне 0.
І ў залежнасці ад іншых пакаранняў смерцю што вы выканалі
і стан вашай памяці, калі вы на самой справе запусціць гэтую праграму,
Вы можаце выявіць, што вам не бачу значэння 0
і, замест гэтага, некаторыя іншыя вар'яцкія лічбы.
>> Але не турбуйцеся пра гэта.
Гэта не збіраецца быць актуальнымі да вы на самой справе ініцыялізацыі значэння.
У цяперашні час у гэтым выпадку, мы можам бачыць, што Я выканаў некаторыя выхады.
І я, прама зараз, спыніўся выкананне.
Але ў гэтым выпадку, тое, што Я сапраўды хачу зрабіць
з'яўляецца ў цяперашні час пераступіць гэтую лінію кода, так што я на самой справе магу
запытаць карыстальніка для гэтага Int, што мы хочам выкарыстоўваць у нашай праграме.
>> У цяперашні час у гэтым выпадку, калі Я ўдарыў пераступіць, апавяшчэнне
што паўза ці, хутчэй, рэзюмэ Кнопка была змененая на гэтай кнопцы Паўзы
Так як гэты код у рэчаіснасці выконваецца.
Што адбываецца прама зараз, што гэта
нас чакае ўводу некаторую інфармацыю як мы бачым наш вываду тэксту
на самым дне.
>> Так што цяпер, гэта на самай справе не спыніўся,
нават калі гэта, свайго роду, з'яўляецца быць, таму што нічога не адбываецца.
Але так ужо здарылася, што ў мой канкрэтны выпадак у радку 13,
Я чакаю карыстацкага ўводу.
І так, GDB не ў стане агледзець праграма, як гэта працуе.
>> Цяпер у наступны раз, што я ўваходжу некаторыя input-- таму я ўвесці гэты нумар 5,
як мы бачылі ў past-- ўдар Enter, і мы
Звярніце ўвагу, што адразу, GDB паўзаў і, зноў жа, падкрэслівае наступны радок.
Але звярніце ўвагу, што ў цяперашні час, як Вынік нашага ўводу значэння,
мы абнавілі гэта значэнне ўнутры нашых лакальных зменных, якія
вельмі карысна дакладна ведаць, што гэты лік было ў памяці.
>> Цяпер я магу дазволіць, каб гэтая праграма па-ранейшаму не гуляе да канца яго выканання
націснуўшы Рэзюмэ.
Мы бачым, што вельмі хутка робіць аздабленне праграма выканання
з тым жа, што выхад раней, адладчык закрывае,
і ў цяперашні час гэтая праграма цалкам спыніўся.
>> Я паказваю, што толькі для Мэты, бачачы, што
адбываецца, калі мы на самай справе ўдар Рэзюмэ.
Але мы на самай справе збіраемся хачу вярнуцца ў гэтую праграму
так што мы можам паспрабаваць адладкі менавіта тое, што адбываецца.
Цяпер, калі я з дапамогай адладчыка, я магу не патрэбныя гэтыя заявы адладкі PRINTF.
>> Так што я мог выдаліць іх, як я буду рабіць Цяпер проста вернемся да нашага простаму коду
што ў нас быў імгненне таму.
Цяпер, калі я захаваць праграмаваць і выконваць яго,
гэта, зноў жа, пайсці, што першапачатковы кропку супыну, што ў мяне ў радку 11.
І я буду мець магчымасць праверыць мае зменныя, як я хачу рабіць.
>> Проста так здарылася, што гэта частка не вельмі цікава,
І я ведаю, што я збіраюся раздрукаваць гэтую заяву.
Калі ласка, увядзіце лік.
А потым, я ведаю, што я збіраюся спытаць карыстальніка для гэтага цэлага.
Так што, магчыма, я на самой справе хачу, каб паварушыць Point Break крыху далей.
>> Вы можаце выдаліць кропкі супыну націснуўшы, зноў жа, наўпрост
злева ад дадзенай радка.
Гэта чырвоная кропка знікне, паказваючы што гэта кропка разрыву ў цяперашні час няма.
У цяперашні час у гэтым выпадку, выкананне было прыпынена.
І такім чынам, гэта на самай справе не збіраецца рэзюмэ ў гэтым канкрэтным выпадку.
Але я магу ўсталяваць перапынак паказваюць трохі пазней.
>> І калі цяпер я вяртаюся да сваіх Код, ён адновіць і сказаць
кропка гэтага пункту супыну.
Зноў жа, я ўдарыў Рэзюмэ.
Не падобна, што нешта адбываецца.
Але гэта таму, што мая код чакае ўводу.
Я увядзіце нумар 5, націсніце Увод і Цяпер наступны момант перапынку будзе ўдар.
>> У цяперашні час у дадзеным выпадку, гэта гэта радок кода
што, перш чым мы ведалі, апынуўся багі.
Такім чынам, давайце ацэньваць тое, што адбываецца у гэтым канкрэтны момант часу.
Калі радок будзе выдзелена, гэта лінія яшчэ не была выкананая.
Такім чынам, у гэтым выпадку, мы можам бачыць, што ў мяне ёсць нумар, які
У мяне ёсць цэлы лік, званае Num, што мае значэнне 5.
І я збіраюся зрабіць некаторыя матэматычныя на гэта лік.
>> Калі я пераступіць, што мы можам Звярніце ўвагу, што значэнне для піт
змянілася ў адпаведнасці з арыфметыка, што мы на самай справе зрабілі.
І зараз, калі мы ўнутры гэтага цыкла для
ці цяпер, калі цыкл Сам выдзелены,
мы бачым, што ў нас ёсць новы Пераменная называецца I, што
будзе выкарыстоўвацца ў тым, што цыкл.
>> Цяпер успомніце, да гэтага я адзначыў, што часам вы
ўбачыце нейкі вар'ят колькасці як па змаўчанні да гэтага ліку
або, што пераменная на самай справе ініцыялізацыі.
Мы можам бачыць, што менавіта тут, у гэтай зменнай
называецца I, якія не мае пакуль быў ініцыялізаваны
падчас вылучэння.
Але мы бачым, што яна мае некаторы колькасць што мы не на самай справе чакаць.
>> Гэта добра.
Не турбуйцеся пра гэта таму што ў нас на самай справе не
ня ініцыялізаваны гэты лік да I крок на гэтую лінію, а значэнне
я быў ініцыялізаваны да значэння 1.
Так, каб убачыць, што гэта на самай справе так, давайце пераступіць.
Цяпер мы можам бачыць, што, што Лінія была выкананая.
І мы зараз вылучаючы гэта Printf лініі.
>> А зараз мы бачым, як нашы каштоўнасці з я і 3 былі змененыя з цягам часу.
Гэта вельмі карысна, каб зрабіць, па сутнасці, гэта пераступіць лініі некалькі разоў.
І вы можаце знайсці тое, што на самой справе адбываецца ўнутры вашага цыкла для
і тое, што адбываецца з зменныя ўнутры цыклу, што для
як то выкананне праграмы адбываецца адзін крок у той час.
>> Зараз на гэтым месцы, я перасягнуў дастаткова проста
што я цяпер у канцы маёй праграмы.
Калі я пераступіць, што гэта будзе на самай справе спыніць выкананне
як мы бачылі ў мінулым.
Дазвольце мне перазагрузіць гэта, яшчэ раз, так што што я магу пазначыць што-то яшчэ з,
а таксама.
>> У гэтым выпадку, гэта цяпер просяць мяне, зноў жа,
для шэрагу, які Я, зноў жа, увайсці.
Але ў гэты раз, я іду, каб увайсці ў большую колькасць, так што цыкл
будзе паўтараць некалькі разоў.
У гэтым выпадку, я збіраюся ўвесці значэнне 11.
>> Цяпер зноў, таму што я ўсталяваць кропка разрыву на лініі 15,
ён збіраецца вылучыць гэты радок.
Мы бачым, што нашы № 11 правільна
прадстаўлена ў нашых лакальных зменных.
Пераступіўшы праз гэта, мы цяпер можам глядзець, што адбываецца з нашай кошту I
а мы пераходзім у гэта цыкл.
Ён атрымлівае прырашчэнне кожны раз, калі мы дасягнуць вяршыні, што для цыклу.
>> Цяпер адна з рэчаў, якія маглі б карысна зрабіць падчас выканання
гэтай праграмы для мяне на самой справе змяніць зменныя пераправе, каб убачыць
што адбываецца з маёй праграмы.
У гэтым выпадку, я на самой справе магу двойчы пстрыкніце значэнне.
Звярніце ўвагу, што гэта становіцца тэкставае поле.
>> Цяпер я магу ўвесці розныя шануеце наогул
каб убачыць, як паводзіць сябе мая праграма калі я змяніў гэтую зменную.
У цяперашні час у гэтым выпадку, пераменная Цяпер я змяшчае значэнне 10.
Але праграма яшчэ спыніўся ў выкананні.
Калі я пераступіць, я бачу, што Значэнне я, што я ўвайшоў у 10,
не болей, чым значэнне піт, які адразу ж выклікае цыкл
, Каб спыніць выкананне.
>> Зараз гэта не толькі Прычына, чаму вы
хочаце змяніць пераменную на месцы.
Вы маглі б на самой справе хочуць каб паспрабаваць змяніць яго так,
што вы можаце працягваць выкананне цыклу
або так, што вы можаце змяніць некаторы значэнне перад ім
дасягае некаторага вызначанага набору арыфметычных што вы збіраецеся выконваць.
>> Так што цяпер мы на самай справе змяніць значэнне я, як праграмы выконваў,
гэта выклікала цыкл кінуць заўчасна, таму што, раптам, я
апынулася больш, чым значэнне з піт, гэта азначае, што што для цыклу
больш не патрэбныя для выканання.
Акрамя таго, аказалася, быў так, што мы змянілі значэнне I
калі была падкрэслена лінія 17, які быў момант часу
што для выканання цыклу на самай справе ацэньваецца.
>> Калі б я змяніў значэнне я на іншай лініі, скажам, 19,
мы бачылі розныя паводзіны, таму што лінія 19 будзе
выканалі перад цыклам ўмова пераправерылі.
Зараз на гэтым месцы, я, зноў жа, У канцы гэтай праграмы.
І я магу дапусціць, каб гэта прыступіць да дазваляюць мая праграма кінуць натуральна.
Але ёсць некалькі рэчаў, якія маюць важнае значэнне, каб забраць
менавіта з гэтага абмеркавання.
Вы павінны ацаніць Вашы ўласныя здагадкі
аб тым, як код павінен быць сябе.
Кожны раз, калі вы думаеце, што некаторыя кавалак з кода вы ведаеце, здараецца, працуюць,
што можа быць чырвоны сцяг, каб пайсці таму і ацаніць, і быць упэўненым,
што уступленнем як гэты код працуе
на самай справе так, як гэта выяўляецца ў зыходным кодзе.
>> Але яшчэ больш было пункту, калі мы выкарыстоўваем адладчык,
Вы можаце змясціць кропкі супыну розныя радкі кода,
што выкліча адладчык для прыпыніць выкананне на кожнай з гэтых ліній
так што вы можаце ацаніць памяці ці нават змяніць яго на месцы.
І зноў, памятаеце, што вы можаце стварыць некалькі кропак супыну, так што вы
Таксама можна аднавіць выкананне, прапусціць на вялікіх участках кода,
і гэта аўтаматычна паўзу ў наступнай кропцы разрыву.
>> Там на самай справе больш прасунуты асаблівасці адладчыка, а таксама.
Але мы павінны накіраваць вас у некаторых наступных відэа
для таго, каб сапраўды дражніць адзін ад аднаго, як выкарыстоўваць гэтыя канкрэтныя функцыі.
Зараз, дзякуй вельмі падыходзіць для прагляду.
І добра адладкі ўдачы.