>> [Muzika]
>> DOUG Lloyd: TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu qĂ« le tĂ« flasin pĂ«r argumente command-line.
Pra, deri mĂ« tani gjatĂ« goxha shumĂ« tĂ« gjitha programet tuaja
kanĂ« filluar ndoshta si this-- zbrazĂ«ti int main.
Ne kemi qenĂ« mbledhur input pĂ«rdorues nĂ« qoftĂ« se ne kemi nevojĂ« pĂ«r atĂ«
nĂ« programet tona, tĂ« tilla si Programi Mario, pĂ«r shembull,
nga nĂ«-programi bĂ«n.
Ne nuk kemi nevojĂ« pĂ«r tĂ« ndryshuar deklarata e kryesor,
sepse nĂ« vend brenda ne kryesore them vetĂ«m, ju mund tĂ« telefononi atĂ« pĂ«r tĂ« marrĂ« int.
Sa i madh ju dĂ«shironi piramidale tĂ« jetĂ«?
Ose ju mund tĂ« telefononi atĂ« pĂ«r tĂ« marrĂ« float-- ndryshojĂ« mĂ«nyrĂ«n se si shumĂ«
UnĂ« duhet tĂ« prodhimit tĂ« pĂ«rdoruesit?
>> Nuk Ă«shtĂ« njĂ« tjetĂ«r mĂ«nyrĂ« edhe pse, dhe nĂ« qoftĂ« se ne duam pĂ«rdoruesit tonĂ«
tĂ« jenĂ« nĂ« gjendje tĂ« ofrojnĂ« tĂ« dhĂ«na pĂ«r programin tonĂ«
nĂ« kohĂ«n e duhur nĂ« vend tĂ« kohĂ« programi Ă«shtĂ« i rrjedhshĂ«m,
njĂ« dallim delikate, por nganjĂ«herĂ« njĂ« shumĂ« tĂ« dobishme,
ne kemi nevojĂ« pĂ«r njĂ« formĂ« tĂ« re tĂ« deklaruar kryesore.
Ne nuk mund tĂ« pĂ«rdorim boshllĂ«kun int main nĂ« qoftĂ« se ne duam tĂ« tĂ« mbledhĂ« tĂ« dhĂ«na tĂ« tjera nĂ« command-line
kur pĂ«rdoruesi shkon programi, prandaj argumente command-line.
>> PĂ«r tĂ« mbledhur kĂ«to command-line Argumentet nga pĂ«rdoruesit,
ndryshojĂ« deklaratĂ«n tuaj tĂ« kryesor pĂ«r tĂ« duken si this-- int
kryesore, paren hapura, int argc, presje, string argv, kllapa katrore,
dhe pastaj tĂ« hapur mbajtĂ«se kaĂ§urrel.
Pra, Ă§farĂ« do tĂ« thotĂ« tashmĂ«?
E pra, ne jemi duke kaluar nĂ« dy parametra, apo argumentet, apo inputet pĂ«r kryesor.
NjĂ«, njĂ« numĂ«r i plotĂ« i quajtur argc, dhe tjetra Ă«shtĂ« ajo?
Ă‹shtĂ« njĂ« grup i tela, e drejtĂ«?
Ne e shohim se simbol katror kllapa.
Ă‹shtĂ« njĂ« grup i strings.
Kjo nuk Ă«shtĂ« njĂ« varg individ, Ă«shtĂ« njĂ« grup i strings.
Dhe kĂ«to dy argumente, argc dhe argv, tĂ« mundĂ«sojĂ« qĂ« tĂ« dini se Ă§farĂ« tĂ« dhĂ«nave tĂ« pĂ«rdoruesit
ka siguruar nĂ« command-line dhe sa gjĂ«ra tĂ«
dhĂ«nĂ« nĂ« command-line.
GjĂ«ra mjaft tĂ« dobishme pĂ«r tĂ« punuar me tĂ«.
>> Argc qĂ«ndron pĂ«r numĂ«rimin argument, dhe ju duhet tĂ« dini, nga rruga,
qĂ« ju mund tĂ« telefononi argc Ă§do gjĂ« qĂ« ju doni atĂ«.
Ju mund tĂ« telefononi argv Ă§do gjĂ« qĂ« dĂ«shironte.
KĂ«to janĂ« emrat e vetĂ«m konvencionale qĂ« ne pĂ«rdorim pĂ«r tĂ«, porsi numĂ«rimin argument,
dhe si ne do tĂ« shohim nĂ« njĂ« tĂ« dytĂ«, vektor Argumenti, argv.
Por ju nuk keni pĂ«r tĂ« thirrur ata argc dhe argv nĂ« qoftĂ« se ju nuk doni tĂ«,
por konvencionale, kjo Ă«shtĂ« ajo qĂ« ne bĂ«jmĂ«.
>> Pra, gjithsesi, argc, numĂ«rimi argumenti.
Kjo Ă«shtĂ« njĂ« variabĂ«l integer-lloj dhe kĂ«shtu, si ju mund tĂ« presin, nĂ« qoftĂ« se ne kemi dy gjĂ«ra
se ne jemi duke shkuar pĂ«r tĂ« gjetur se Ă§farĂ« kĂ«to janĂ« shtypur
dhe sa stuff pĂ«rdorues shtypur, argc Ă«shtĂ«
do tĂ« na tregoni se sa tĂ« stuff pĂ«rdoruesit shtypur.
Pra, kjo ju jep njĂ« numĂ«r tĂ« argumente command-line pĂ«rdorues
shtypur kur u ekzekutua programi.
Pra, nĂ« qoftĂ« se programi juaj Ă«shtĂ« i drejtuar dot Ă§aj lakmitar,
dhe brenda lakmitar tuaj programit funksionin tuaj kryesor
ka deklaratĂ« int int kryesor argc, string argv kllapa katrore, atĂ«herĂ«
argc nĂ« kĂ«tĂ« rast Ă«shtĂ« njĂ«.
Tani vini re, ne nuk bĂ«jmĂ« numĂ«rimin e sa shumĂ« gjĂ«ra
pĂ«rdoruesi shtypur me emrin e programit.
Emri Programi vetĂ« numĂ«ron si njĂ« argument command-line.
>> Pra dot Ă§aj babĂ«zitur, nĂ« se rasti, argc Ă«shtĂ« njĂ«.
NĂ«se pĂ«rdoruesi typed slash babĂ«zitur 1024 CS50 nĂ« command-line, argc nĂ« kĂ«tĂ« rast
do tĂ« jetĂ« tre.
Dhe ne e dimĂ« kĂ«tĂ«, sepse rruga se ndarja mes strings
Ă«shtĂ« zbuluar Ă«shtĂ« nĂ«se ka njĂ« hapĂ«sirĂ«, ose nje tab,
ose diĂ§ka tĂ« tillĂ« mes tyre.
Pra, Ă§do shumĂ« hapĂ«sirĂ« â€‹â€‹tĂ« bardhĂ«, ashtu-quajtur, midis vlerave shtypur command-line
tregon se sa ka.
Pra dot Ă§aj hapĂ«sirĂ« â€‹â€‹babĂ«zitur 1024 hapĂ«sirĂ« CS50, argc, nĂ« kĂ«tĂ« rast, Ă«shtĂ« tre.
>> Argv Ă«shtĂ« vektori argumenti.
Vector, nga rruga, Ă«shtĂ« vetĂ«m njĂ« tjetĂ«r fjalĂ« pĂ«r njĂ« grup,
dhe kjo Ă«shtĂ« njĂ« grup qĂ« ruan strings.
NjĂ« varg pĂ«r element, i cili Ă«shtĂ« vargjet qĂ« pĂ«rdoruesi nĂ« fakt
shtypur nĂ« command-line kur programi u ekzekutua.
Tani, siĂ§ Ă«shtĂ« rasti me ndonjĂ« grup, nĂ« qoftĂ« se ju
kujtojnĂ« nga diskutimit tonĂ« tĂ« vargjeve, elementi i parĂ« i argv
Ă«shtĂ« gjithmonĂ« do tĂ« gjendet nĂ« argv kllapa katrore zero.
Kjo Ă«shtĂ« indeksi i parĂ« e array argv.
KĂ«shtu qĂ« will-- dhe nĂ« fakt, se vullneti gjithmonĂ« tĂ« jetĂ« emri i programit,
gjithmonĂ« do tĂ« jetĂ« e vendosur nĂ« argv kllapa katrore zero.
>> Elementi i fundit i argv Ă«shtĂ« gjetur gjithmonĂ« nĂ« argv kllapave argc minus njĂ«.
A e shihni se pse?
Mos harroni se si shumĂ« elemente ekzistojnĂ« nĂ« kĂ«tĂ« grup.
E pra, ne e dimĂ« se Ă«shtĂ« that-- Numri argc i elementeve.
NĂ«se pĂ«rdoruesi shtypur tri gjĂ«ra nĂ« komanda-line, argc Ă«shtĂ« tre.
Por pĂ«r shkak se nĂ« C, kur ne jemi duke punuar me vargjeve, Ă§do element i vektorit,
ose mĂ« mirĂ« indekset e array, tĂ« fillojĂ« nĂ« zero.
NĂ«se kemi tre elemente nĂ« tonĂ« grup, ne kemi njĂ« element nĂ« argv zero,
njĂ« element nĂ« argv njĂ«, dhe njĂ« element nĂ« argv dy.
Nuk ka asnjĂ« element nĂ« argv tre, dhe njĂ« koleksion tĂ« madhĂ«sisĂ« tre.
Pra, kjo Ă«shtĂ« arsyeja pse e fundit element i argv mund gjithmonĂ«
tĂ« gjenden nĂ« sheshin argv argc kllapa minus njĂ«.
>> Pra, le tĂ« supozojmĂ« qĂ« e ekzekuton pĂ«rdoruesit programi i pangopur si follows--
nĂ«se shkruani nĂ« command-line dot Ă§aj babĂ«zitur hapĂ«sirĂ« â€‹â€‹1024 hapĂ«sirĂ« â€‹â€‹CS50,
dhe pĂ«r Ă§farĂ«do arsye ne kemi pĂ«rgatitur tashmĂ« programin tonĂ« lakmitar
tĂ« njohin dhe tĂ« punojnĂ« me kĂ«to argumente command-line.
Ne nuk e bĂ«ri mĂ« parĂ«, kur ne kemi punuar nĂ« atĂ« pĂ«r problemin babĂ«zitur,
por le tĂ« themi qĂ« kemi modifikuar tani ajo qĂ« ne bĂ«jmĂ« procesin
argumente komanda-line nĂ« njĂ« farĂ« mĂ«nyre.
NĂ« kĂ«tĂ« rast, argv zero Ă«shtĂ« plagĂ« dot lakmitar.
Ă‡farĂ« Ă«shtĂ« argv njĂ«?
E pra, kjo Ă«shtĂ« 1024, e drejtĂ«?
Ă‹shtĂ« e 1024, por kĂ«tu Ă«shtĂ« njĂ« distinction-- vĂ«rtetĂ« e rĂ«ndĂ«sishme
a ju kujtohet llojin e tĂ« dhĂ«nave e argv?
>> Ajo ruan vargjet, e drejtĂ«?
Por kjo duket si 1024 Ă«shtĂ« njĂ« vlerĂ« e plotĂ«.
Kjo Ă«shtĂ« njĂ« tĂ« vĂ«rtetĂ« e rĂ«ndĂ«sishme dallim, dhe nĂ« fakt Ă«shtĂ«
duke shkuar pĂ«r tĂ« bĂ«rĂ« diĂ§ka qĂ« ju mund tĂ« hasni nĂ« probleme mĂ« vonĂ«.
Ă‡do gjĂ« nĂ« argv Ă«shtĂ« ruhet si njĂ« varg.
Pra, pĂ«rmbajtja argv dikujt janĂ« string njĂ«, zero, dy, katĂ«r,
i pĂ«rbĂ«rĂ« nga kĂ«to katĂ«r karaktere.
Ă‹shtĂ« sikur pĂ«rdoruesi shtypur njĂ«, zero, dy, katĂ«r
si letra individuale apo karaktere.
Ajo nuk Ă«shtĂ« numĂ«r i plotĂ« 1024, dhe kĂ«shtu qĂ« ju nuk mund tĂ« drejtpĂ«rdrejt
punojnĂ« me tĂ« duke thĂ«nĂ« int 1000, ose nĂ« vend tĂ« int x Ă«shtĂ« e barabartĂ« me njĂ« tĂ« tillĂ« argv minus 24.
>> Intuitive, ju mund tĂ« mendoni pĂ«r atĂ« si, OK, edhe kjo Ă«shtĂ« 1,024 minus 24,
kĂ«shtu x Ă«shtĂ« i barabartĂ« me 1,000.
Por nĂ« fakt, kjo nuk Ă«shtĂ« rasti, sepse argv njĂ« Ă«shtĂ« njĂ« varg.
String 1024.
Tani ka njĂ« funksion qĂ« mund tĂ« jetĂ« pĂ«rdoret pĂ«r tĂ« kthyer nĂ« vargjet nĂ« integers.
UnĂ« nuk do tĂ« prishin atĂ« pĂ«r ju tani, por unĂ« jam i sigurt Zamyla
do tĂ« jetĂ« i lumtur tĂ« ju tregojĂ« pĂ«r atĂ« nĂ« walkthrough pĂ«r njĂ« problem nĂ« tĂ« ardhmen.
Por ju mund tĂ« gjeni edhe PROBLEMET like-- justifikim
mua, funksionet qĂ« do tĂ« bĂ«ni kĂ«tĂ« duke iu referuar 50,
nĂ« qoftĂ« se ju shkoni nĂ« udhĂ«zues referimi ju mund tĂ« gjeni njĂ« funksion qĂ«
do ta bĂ«jĂ« kĂ«tĂ« konvertim pĂ«r ju.
Por pĂ«rsĂ«ri, nĂ« walkthrough pĂ«r njĂ« problem nĂ« tĂ« ardhmen,
Zamyla do tĂ« jenĂ« tĂ« lumtur pĂ«r po ju them se Ă§farĂ« funksioni
ajo Ă«shtĂ« se do tĂ« konvertohet string 1024 nĂ« numrin e plotĂ« 1024.
>> TĂ« gjithĂ« tĂ« drejtĂ«, kĂ«shtu duke lĂ«vizur nĂ«.
Ne kemi mbuluar zero tonĂ« argv, ne kemi mbuluar argv njĂ«.
Ă‡farĂ« Ă«shtĂ« nĂ« argv dy?
CS50.
Kjo Ă«shtĂ« ndoshta njĂ« shumĂ« vetĂ«-shpjeguese.
Ă‡farĂ« Ă«shtĂ« nĂ« argv tre?
MirĂ« pĂ«rsĂ«ri, ne nuk tĂ« vĂ«rtetĂ« e di, e drejtĂ«?
Ne kemi njĂ« grup tĂ« madhĂ«sisĂ« tre, kjo Ă«shtĂ« si shumĂ« elemente pĂ«rdorues
shtypur nĂ« command-line, kĂ«shtu qĂ« nĂ« qoftĂ« se ne do tĂ« shkojmĂ« nĂ« argv tre,
ne jemi tani tejkaluar caqet e array tonĂ«.
PĂ«rpiluesit do tĂ« na bĂ«jĂ« kĂ«tĂ«, nuk ka asnjĂ« problem intuitive me tĂ«,
por nĂ« aspektin e nĂ« fakt Ă§farĂ« po ndodh tĂ« ndodhĂ«, ne vĂ«rtetĂ« nuk e di.
Kjo varet nga ajo qĂ« Ă«shtĂ« qĂ« ndodhet nĂ« memorie ku
argv tre do tĂ« pritet tĂ« jetĂ«.
Dhe kĂ«shtu qĂ« ne mund tĂ« pĂ«rfundojĂ« duke u larguar Scot falas.
MĂ« shumĂ« gjasa se jo, veĂ§anĂ«risht kur ju jeni duke punuar me argv krahasim
Ă§do grup tjetĂ«r kjo Ă«shtĂ« nĂ« programin tonĂ«,
ne jeni me siguri do tĂ« vuajnĂ« njĂ« faji segmentimit. Pra, pĂ«rsĂ«ri,
tĂ« sigurt qĂ« tĂ« mos kaloj kufijtĂ« e vargjeve tuaja, veĂ§anĂ«risht argv,
duke pasur parasysh shkallĂ«n e lartĂ« tĂ« RĂ«ndĂ«sia nĂ« programet tuaja.
>> UnĂ« jam Doug Lloyd.
Kjo Ă«shtĂ« CS50.