>> [Гуляе музыка]
>> Даг Lloyd: Добра, давайце казаць пра аргументаў каманднага радка.
Так, да гэтага часу ў ходзе даволі шмат усяго з вашых праграм
верагодна пачаў як this-- Int асноўны пустэчу.
Мы збіралі ўвод карыстальнікам, калі нам гэта трэба
у нашых праграмах, такіх, як Праграма Марыё, напрыклад,
па-праграмы ў падказак.
Мы не трэба змяніць дэкларацыя асноўны,
таму што замест ўнутры асноўнага мы проста сказаць, што вы можаце назваць гэта, каб атрымаць Int.
Як вялікі вы хочаце піраміда быць?
Ці вы можаце назваць гэта, каб атрымаць float-- як шмат змен
я павінен выводзіцца карыстачу?
>> Існуе яшчэ адзін спосаб, хоць, і калі мы хочам, каб нашы карыстальнікі
каб быць у стане забяспечыць Дадзеныя нашай праграме
падчас выканання, а не час Праграма працуе,
тонкае адрозненне, але часам вельмі карысным,
нам патрэбна новая форма дэкларавання асноўнай.
Мы не можам выкарыстоўваць INT асноўны пустэчу, калі мы хочам, каб збіраць іншыя дадзеныя ў камандным радку
калі карыстальнік запускае праграму, такім чынам аргументы каманднага радка.
>> Для збору гэтых каманднага радка Аргументы ад карыстальніка,
змяніць дэкларацыю Асноўны выглядаць this-- Int
Асноўныя, адкрытыя Хлопец, INT ARGC, коска, Радок ARGV квадратныя дужкі,
а затым адкрыць фігурную дужку.
Такім чынам, што ж гэта значыць ужо?
Ну, мы перадаем ў двух параметраў, або аргументы, або ўваходы ў асноўны.
Адзін з іх, цэлае называецца ARGC, а другі ёсць што?
Гэта масіў радкоў, дакладна?
Мы бачым, што абазначэння квадратная дужка.
Гэта масіў радкоў.
Гэта не асобная радок, гэта масіў радкоў.
І гэтыя два аргументу, ARGC і ARGV, дазваляюць ведаць, што дадзеныя карыстальніка
падаў у камандным радку і як шмат
пры ўмове, у камандным радку.
Даволі карысныя рэчы для працы.
>> ARGC выступае за колькасцю аргументаў, і вы павінны ведаць, дарэчы,
што вы маглі б назваць ARGC усё, што вы хочаце.
Вы можаце патэлефанаваць у ARGV, што вы хацелі.
Такія толькі звычайныя імёны што мы выкарыстоўваем для them-- колькасцю аргументаў,
і, як мы ўбачым у секунду, Аргумент вектар, ARGV.
Але вы не павінны называць іх ARGC і ARGV, калі вы не хочаце, каб,
але ўмоўна, гэта тое, што мы робім.
>> Так ці інакш, ARGC, колькасць аргументаў.
Гэта пераменная лікам тыпу і так, а Вы маглі б чакаць, калі ў нас ёсць дзве рэчы
што мы збіраемся знаходзіць , Што яны набралі
і колькі Напоўніце карыстач уводзіць, ARGC з'яўляецца
збіраюся расказаць нам, колькі напакаваць карыстач увёў.
Так што гэта дае вам шэраг Аргументы каманднага радка карыстальнік
набралі, калі праграма была выканана.
Так што, калі ваша праграма запусціць кропка слэш прагны,
і ўнутры вашай прагны запраграмаваць асноўную функцыю
мае дэкларацыі Int Int асноўны ARGC, Радок ARGV квадратныя дужкі, то
ARGC ў гэтым выпадку з'яўляецца адным.
Зараз звернеце ўвагу, мы не Палічыце, колькі рэчаў
карыстач уводзіць пасля імя праграмы.
Сама назва праграмы разлічвае ў якасці аргументу каманднага радка.
>> Так кропка слэш прагны, у У гэтым выпадку, ARGC адзін.
Калі карыстач уводзіць слэш прагны 1024 CS50 у камандным радку, ARGC ў гэтым выпадку
будзе тры.
І мы ведаем, што гэта таму, што шлях што падзел паміж радкоў
выяўлены Ці ёсць прастора, або ўкладку,
ці нешта падобнае, што паміж імі.
Такім чынам, любы аб'ём белага прасторы, так званыя, паміж значэннямі набраў каманднага радка
паказвае, колькі ёсць.
Так кропка слэш прагных прастору прастору 1024 CS50, ARGC, у гэтым выпадку, роўна тром.
>> ARGV вектар аргумент.
Вектар, дарэчы, як раз іншае слова для масіва,
і гэта з'яўляецца масівам які захоўвае радка.
Адзін радок для кожнага элемента, які з'яўляецца струны, што карыстальнік сапраўды
ўведзены ў камандным радку калі праграма была выканана.
Цяпер, як і ў выпадку з любога масіва, калі вы
Нагадаем, з нашага абмеркавання масівы, першы элемент ARGV
заўсёды будзе знойдзены у ARGV квадратных дужках нулявы.
Гэта першы індэкс масіва ARGV.
Так што will-- і на самай справе, што воля заўсёды быць назва праграмы,
заўсёды будзе размешчаны на ARGV квадратная дужка роўная нуля.
>> Апошні элемент ARGV заўсёды знаходзіцца у ARGV квадратных дужках ARGC мінус адзін.
Вы бачыце, чаму?
Памятаеце, як шмат элементаў існуюць у гэтым масіве.
Ну, мы ведаем, што гэта that-- ARGC колькасць элементаў.
Калі карыстач уводзіць тры рэчы камандны радок, ARGC тры.
Але таму, што ў C, калі мы працуем з масівамі, кожны элемент масіва,
ці, хутчэй, індэксы масіў, пачаць з нуля.
Калі ў нас ёсць тры элемента ў нашых Масіў, у нас ёсць элемент у ARGV нулявы,
элемент у ARGV адной, і элемент у ARGV два.
Там няма элемента ARGV на тры, і масіў памеру тры.
Дык вось чаму апошні элемент ARGV заўсёды можаце
можна знайсці на плошчы ARGV Кранштэйны ARGC мінус адзін.
>> Такім чынам, давайце выкажам здагадку, што карыстальнік выконвае прагны праграма, як follows--
калі яны ўвядуць у каманднага радка кропка скараціць прагны прастору прастору 1024 CS50,
і па якой прычыне мы ў ўжо падрыхтавалі нашу праграму прагны
ведаць і працаваць з імі Аргументы каманднага радка.
Мы не рабілі раней, калі мы працавалі на ёй прагным праблемы,
але, скажам, зараз мы зменены так, што мы робім працэс
аргументы каманднага радка ў нейкай меры.
У гэтым выпадку, ARGV нуля гэта кропка слэш прагны.
Што ARGV адным?
Ну, гэта 1024, ці не так?
Гэта 1024, але вось Вельмі важна distinction--
Вы памятаеце тып дадзеных ARGV?
>> Ён захоўвае радкі, праўда?
Але, падобна, 1024 з'яўляецца цэлым лікам.
Гэта сапраўды важна, адрозненне, і на самай справе
стане тое, што вам можа сутыкнуцца ў пазнейшых праблем.
Усё ў ARGV з'яўляецца захоўваецца ў выглядзе радка.
Так ўтрыманне ARGV сваёй з'яўляюцца Радок адным, нуль, два, чатыры,
якая складаецца з чатырох знакаў.
Гэта як калі б карыстач увёў Адзін з іх, роўна нулю, два, чатыры
як асобныя літары або сімвалы.
Гэта не цэлы лік 1024, і таму вы не можаце наўпрост
працаваць з ім, сказаўшы, INT 1000, або а INT х роўны ARGV адзін мінус 24.
>> Інтуітыўна, можна падумаць, што з а, добра, добра, што гэта мінус 1,024 24
так х роўны 1,000.
Але на самой справе, гэта не так, таму што ARGV адзін радком.
Радок 1024.
Зараз ёсць функцыя, якая можа быць выкарыстоўваецца для пераўтварэння радкоў у цэлыя лікі.
Я не буду псаваць гэта для вас цяпер, але я ўпэўнены, што Zamyla
будуць рады распавесці вам пра гэта ў праходжанне гульні для будучай праблемы.
Але вы таксама можаце знайсці Праблемы like-- апраўданне
мне, функцыі, якія зрабіць гэта ў дачыненні да 50,
калі вы ідзяце ў даведачным кіраўніцтве Вы можаце знайсці функцыю, якая
зробіць гэта пераўтварэнне для вас.
Але, зноў жа, у кіраўніцтве для будучыні праблемы,
Zamyla будуць рады скажу вам, што функцыя
гэта тое, што будзе ператвараць радок ад 1024 да цэлага ліку 1024.
>> Добра, так як рухацца далей.
Мы разгледзелі нашу нуля ARGV, мы разгледзелі ARGV адзін.
Што ў ARGV два?
CS50.
Той, верагодна, даволі відавочна.
Што ў ARGV трох?
Ну зноў жа, мы на самай справе не ведаю, правільна?
У нас ёсць масіў памерам тры, Вось як шмат элементаў карыстальнік
ўведзены ў камандным радку, так што калі мы ідзем у ARGV тры,
мы цяпер пераступаючы Межы нашага масіва.
Кампілятар дазволіць нам гэта зрабіць, няма інтуітыўна праблема з ім,
але з пункту гледжання фактычна што адбываецца каб гэта адбылося, мы не ведаем.
Гэта залежыць ад таго, што знаходзіцца ў памяці, дзе
ARGV тры можна было б чакаць, каб быць.
І такім чынам, мы маглі б скончыць сысці беспакараным бясплатна.
Хутчэй за ўсё, няма, асабліва, калі вы працуеце з ARGV, у адрозненне
каб любы іншы масіў гэта ў нашай праграме,
мы, верагодна, будзе пакутаваць памылкі сегментацыі. Такім чынам, яшчэ раз,
быць упэўнены, што не выходзяць за межы Вашы масіваў, асабліва ARGV,
улічваючы яго высокую ступень Важнасць ў вашых праграмах.
>> Я Дуг Лойд.
Гэта CS50.