>> [MUSIC PLAYING]
>> Rob Boden: B眉t眉n h眉ququ.
Video ilk Bel蓹 ki, ilk 艧ey, bir tan谋艧 眉z.
>> [Video playback]
>> -B眉t眉n h眉ququ.
Bu CS50, v蓹 bu H蓹ft蓹 眉莽 start.
M蓹n sizinl蓹 ola bilm蓹z 眉zg眉n眉m Bu g眉n, amma m蓹n蓹 t蓹qdim etm蓹y蓹 imkan verir
CS50 枚z Rob Boden.
>> [END Video playback]
>> [Alq谋艧 v蓹 alq谋艧]
>> Rob Boden: The Filmoqrafiya ki, video fantastik edir.
B眉t眉n h眉quqlar.
Bel蓹 ki, ilk, bir nahar var.
Bu 1:15 sabah var.
Bu c眉m蓹 bir nahar var.
Bu Quora il蓹.
V蓹 Tommy bir, lakin, h蓹l蓹 burada deyil ke莽mi艧 r蓹hb蓹ri CF var insanlar,
Tommy McWilliam.
Bel蓹 ki, o bir 蓹yl蓹nc蓹 o臒lan var.
Siz g蓹lm蓹lidir.
>> B眉t眉n h眉quqlar.
Bel蓹 ki, 枚t蓹n h蓹ft蓹 biz ayr谋 q谋raraq ba艧layan bir string h蓹qiq蓹t蓹n n蓹 haqq谋nda.
Biz ba艧谋ndan b蓹ri m蓹lum etdik ki, Bu simvol bir ard谋c谋ll谋qla var.
Amma ke莽蓹n h蓹ft蓹, biz 蓹slind蓹 delved n蓹 h蓹qiq蓹t蓹n bir ard谋c谋ll谋qla ki,
simvol, yax艧谋, biz indi simvol Diziler.
V蓹 biz bir string, bir s谋ra var bilirik ki, simvol, 莽ox sonunda,
biz bu x眉susi null byte var, bu backslash 0 ki, son of g枚st蓹rir
simli.
>> V蓹 bel蓹 bir string bir s谋ra edir simvol, lakin biz daha 莽ox
simvol yaln谋z bir array, biz h蓹r hans谋 bir s谋ra ola bil蓹r
biz ist蓹yirik 艧ey n枚v眉.
Bel蓹 ki, 枚t蓹n h蓹ft蓹 geri 蓹g蓹r David t蓹qdim ed蓹n 脟a臒lar proqram
h蓹qiq蓹t蓹n tez.
Biz n蓹 olacaq Bel蓹 ki, ilk 艧ey , tam 眉莽眉n istifad蓹莽i xahi艧
oda insanlar谋n say谋.
Biz tam var, biz bir s谋ra elan edirik.
Bu bracket sintaksis bildiri艧.
Siz istifad蓹 almaq olacaq.
>> Bel蓹likl蓹, biz integers bir s谋ra elan edirik ya艧 adlan谋r v蓹 n var
Bu array integers.
Burada Bel蓹 ki, bu model, bu 4 int i i plus, i az n edir, 0 b蓹rab蓹rdir
plus, h蓹m莽inin bir model olacaq 莽ox 眉莽眉n istifad蓹 almaq.
Ki, olduqca 莽ox siz nec蓹 莽眉nki h蓹mi艧蓹 seriallar谋n 眉z蓹rind蓹 t蓹krarlamaq 眉莽眉n gedir.
Bel蓹 ki, n ki xat谋rlay谋ram bizim serial谋n uzunlu臒u.
V蓹 bel蓹 ki, burada biz d蓹f蓹l蓹rl蓹 xahi艧 olunur otaqda adam i ya艧 眉莽眉n.
>> Bundan sonra, biz a艧a臒谋 getm蓹k v蓹 n蓹 眉莽眉n ixtiyari s蓹b蓹bi, biz sonra
onlar olacaq n蓹 q蓹d蓹r k枚hn蓹 莽ap 陌ndi bir il olacaq.
V蓹 proqram 莽al谋艧an ed蓹k , ya艧 etm蓹k 莽izgi ya艧 n枚qt蓹.
Bel蓹 ki, oda insanlar谋n say谋, 眉莽 var dey蓹k.
V蓹 ilk 艧蓹xs 13, dem蓹k N枚vb蓹ti 26 v蓹 son 30.
Bel蓹 ki, o, h蓹min 眉莽 t蓹krarlamaq laz谋md谋r n蓹f蓹r, 14 h蓹yata 27 v蓹 31 莽ap.
>> Bel蓹 ki, unutmay谋n ki, biz bir zaman b蓹yan 枚l莽眉s眉 n array, ki indeksl蓹ri
array, array d蓹y蓹rl蓹ri var v蓹 indeksl蓹ri 0, 1, 2, b眉t眉n yol
up n minus 1.
Bel蓹likl蓹, biz dedi 眉莽 n蓹f蓹r var idi otaqda, v蓹 biz burada qoymaq
Bu vasit蓹sil蓹 ilk iteration loop, i 0 olacaq.
Bel蓹 ki, index 0.
Biz ilk t蓹yin olunur istifad蓹莽i daxil ya艧.
Sonra n枚vb蓹ti bir, biz daxil oldu臒unuz ikinci n istifad蓹莽i daxil, v蓹
iki, son n yan谋nda.
>> Bel蓹 ki, fark 枚l莽眉s眉 bir array 眉莽 艧ey yoxdur
indeksi 眉莽.
Bu d眉zg眉n deyil.
B眉t眉n h眉quqlar.
Bel蓹 ki, burada geri gedir.
Bel蓹 ki, indi biz Diziler b蓹hs etdik ki, biz b蓹zi tan谋艧l谋q var.
陌ndi biz komanda 眉莽眉n h蓹r蓹k蓹t olacaq olacaq olan line d蓹lill蓹ri,
Bu problem set olduqca m眉vafiq.
>> Bel蓹 ki, indi q蓹d蓹r, zaman var Sizin 蓹sas funksiyas谋 elan, biz var
int main etibars谋z etdi.
Bel蓹 ki, etibars谋z yaln谋z dem蓹kdir ki, Biz h蓹r hans谋 bir ke莽蓹n deyil
Bu funksiya arqumentl蓹r.
陌ndi biz 蓹sas g枚rm蓹k olacaq b蓹zi arqumentl蓹r bil蓹r.
Burada argc int onlara z蓹ng v蓹 simli argv m枚t蓹riz蓹d蓹.
M枚t蓹riz蓹d蓹, bir daha ifad蓹 biz seriallar谋n il蓹 m蓹艧臒ul oldu臒unuz.
Bel蓹 ki, burada, simli argv M枚t蓹riz蓹d蓹, biz ist蓹yirik strings bir s谋ra il蓹 m蓹艧臒ul.
Bel蓹 argc g枚st蓹rir ki, olacaq biz etdik ne莽蓹 arqumentl蓹r
Bu proqram ke莽di.
V蓹 o dem蓹kdir ki, n蓹 Bu yax谋n qoy.
>> OK.
Bel蓹 ki, indi q蓹d蓹r, biz h蓹r run etdik dot 莽izgi ya艧 kimi proqram.
Biz h蓹m莽inin, command line, ke莽mi艧 d蓹lill蓹ri q蓹bul, bel蓹likl蓹 termini, command
line d蓹lill蓹ri.
Bel蓹 ki, ilk arqument, d眉nya salam.
Bel蓹 ki, burada, argc 眉莽 olard谋.
Bu arqumentl蓹r say谋 var command line.
Argc, h蓹mi艧蓹 蓹n az谋 1 ild蓹n dot 枚z眉n眉 ya艧 z蓹rb蓹 biri kimi sayar
command line d蓹lill蓹ri.
>> Sonra salam ilk.
Dot 莽izgi ya艧, sonra zeroth varsa salam ilk v蓹 d眉nya edir
ikinci command line arqument.
Bel蓹 ki, simli argv, biz g枚rm蓹k olacaq, strings, dot 莽izgi var
ya艧, hello, v蓹 d眉nya.
V蓹 Davudun xahi艧i il蓹 biz gedirik ki tan谋dan bir video oynamaq.
>> [Video playback]
>> -Up biz etdik proqramlar谋 indiy蓹 q蓹d蓹r yaz谋l谋, biz b蓹yan etdik
蓹sas kimi int main void.
V蓹 b眉t眉n bu d蓹f蓹 ki, etibars谋z var sad蓹c蓹 ifad蓹 edilmi艧dir ki,
Proqram h蓹r hans谋 bir etmir command line d蓹lill蓹ri.
Bir istifad蓹莽i bir 莽al谋艧谋r zaman dig蓹r s枚zl蓹, proqram, o komanda t蓹min ed蓹 bil蓹r
蓹lav蓹 yazaraq line arqumentl蓹r s枚z v蓹 ya s枚z sonra proqram
s蓹tirin蓹 ad谋.
>> Yax艧谋, sizin proqram ist蓹yir蓹m, 蓹g蓹r command line d蓹lill蓹ri, bir v蓹 ya almaq
daha bel蓹 s枚zl蓹ri biz 蓹v蓹z etm蓹k laz谋md谋r d蓹lill蓹ri bir ne莽蓹 il蓹 l蓹臒v.
Bel蓹 ki, bunu bildirin.
Cs50.h. daxildir
Standart io.h. daxildir
茝sas Int.
陌ndi 蓹v蓹zin蓹 etibars谋z, m蓹n gedir蓹m bir argc adl谋 int v蓹 m眉蓹yy蓹n
argv strings array.
陌ndi, argc v蓹 argv var sad蓹c蓹 konvensiyalar.
>> Biz bu d蓹lill蓹ri deyil蓹n bil蓹rdi biz ist蓹yirik 蓹n 艧ey.
Amma n蓹 vacibdir argc oldu臒unu bir int m眉蓹yy蓹n, bu, 莽眉nki
Bu arqument count ehtiva gedir, c蓹mi s枚zl蓹 say谋 ki,
istifad蓹莽i onun tez-da 莽ap etmi艧dir.
argv, eyni zamanda, d蓹lil vektor edir h蓹qiq蓹t蓹n saxlan谋lmas谋 bir s谋ra olacaq
istifad蓹莽i var ki, s枚zl蓹ri b眉t眉n onun tez-da 莽ap.
>> 陌ndi bir 艧ey davam ed蓹k bu bir v蓹 ya daha 莽ox
command line d蓹lill蓹ri.
X眉susil蓹 nin ir蓹li v蓹 莽ap ged蓹k h蓹r hans谋 s枚z istifad蓹莽i n枚vl蓹ri
Proqram谋n ad谋na s蓹tirin蓹.
Open bracket.
Close bracket.
Printf faiz s backslash v蓹 verg眉l.
V蓹 indi m蓹n printf n蓹 d蓹y蓹ri dem蓹k laz谋md谋r ki, tutucu plug.
M蓹n istifad蓹莽i var ki, ilk s枚z眉 ist蓹yir蓹m proqram ad谋 sonra tipli,
v蓹 m蓹n m眉蓹yy蓹n etm蓹k 眉莽眉n gedir蓹m argv bracket 1, yax谋n
m枚t蓹riz蓹, n枚qt蓹li verg眉l.
>> 陌ndi niy蓹 bracket 1 v蓹 bracket 0?
B蓹li, bu, avtomatik olaraq saxlan谋l谋r 莽谋x谋r argv 0 olacaq edir
Proqram谋n faktiki ad谋.
Bel蓹 ki, ilk s枚z istifad蓹莽i n枚vl蓹ri Proqram谋n ad谋 il蓹 sonra
konvensiya, olacaq argv 1 saxlan谋l谋r.
陌ndi t蓹rtib ed蓹k v蓹 Bu proqram run.
>> Argv 0, dot 莽izgi argv 0 olun.
陌ndi bir s枚z salam kimi.
Daxil edin.
V蓹 biz hello, var.
>> [END Video playback]
>> Rob Boden: B眉t眉n h眉ququ.
Ki ba臒lay谋n.
Bel蓹 ki, proqram bir g枚z alaraq biz yaln谋z, yax艧谋, biz蓹 yaln谋z t蓹qdim
biz 0 argv 莽ap 蓹g蓹r indi, etm蓹k, g枚st蓹rm蓹k Bu, argv 0, dot 莽izgi argv 0 budur.
G枚zl蓹nilir ki, onu 莽ap oldu argv 0 ild蓹n, proqram谋n ad谋n谋
h蓹mi艧蓹 gedir Proqram谋n ad谋.
Amma bir 艧ey ed蓹k daha maraql谋 bit.
>> Bel蓹 ki, problem d蓹sti, siz olacaq Bu funksiya, ATOI t蓹qdim.
Bel蓹 ki, n蓹 biz ATOI istifad蓹 edirsiniz?
Ki, 莽evirm蓹k olacaq bir bir tam string.
M蓹n string ke莽m蓹k 蓹g蓹r, bir iki 眉莽, ATOI 眉莽眉n ki, 莽evirm蓹k laz谋md谋r ki,
Bu tam, bir iki 眉莽.
Bel蓹likl蓹, biz ilk 莽evirm蓹k olacaq bir tam command line arqument
v蓹 sonra yaln谋z tam 莽ap.
>> Bel蓹 ki, 蓹sas蓹n, biz n枚v ist蓹yirik yaln谋z GetInt reimplementing
tam 蓹mrind蓹 daxil edilir line 蓹v蓹zin蓹 proqram
interaktiv.
Bel蓹likl蓹, argv 0 edilm蓹si, n蓹 ed蓹k burada bu ki, yax谋n.
Bel蓹 argv 0 莽al谋艧an, v蓹 daxil ed蓹k tam, bir iki 眉莽 d枚rd bir iki.
Bel蓹 ki, biri tam 莽ap ed蓹c蓹yik iki 眉莽 d枚rd bir iki.
Ki ATOI b蓹zi inc蓹likl蓹rini var bir 艧ey haqq谋nda qay臒谋 dayand谋rmaq laz谋md谋r
cari r蓹q蓹mli karakter N. k蓹narda, lakin etm蓹z.
>> Bel蓹likl蓹, siz n蓹 d眉艧眉n眉rs眉n眉z M蓹n bunu 蓹g蓹r?
Segmentasyon g眉nah.
Bel蓹 ki, niy蓹 ki?
Bizim proqram谋m谋zda siz geri baxsaq, biz ist蓹yirik argv 1, ilk d蓹lil konvertasiya
proqram ad谋 sonra, bir tam.
Amma ke莽di he莽 bir d蓹lil yoxdur proqram ad谋na.
Odur ki, biz bu arabas谋 g枚r眉r眉k proqram, 莽眉nki, biz 莽al谋艧t谋rmak 眉莽眉n c蓹hd 蓹g蓹r
h蓹r hans谋 bir d蓹lill蓹ri olmadan, yaln谋z q蓹za ed蓹c蓹k.
>> Siz g枚r眉rs眉n眉z bel蓹 bir 眉mumi model bir 艧ey kimi, argc az olduqda
olmad谋臒谋n谋 ifad蓹 ed蓹n iki, daha 蓹n az谋 proqram ad谋 v蓹
ilk d蓹lil, sonra biz bir 艧ey ed蓹c蓹yik kimi printf, kifay蓹t deyil
command line d蓹lill蓹ri.
Bu y蓹qin ki, 莽ap 眉莽眉n yax艧谋 bir deyil, kimi, y蓹qin ki, bir 艧ey var
Siz tam daxil olmal谋d谋r command line.
M蓹n yaln谋z orada 莽谋xaca臒谋q.
V蓹 sonra 1 qay谋tmaq.
Bel蓹 ki, bizim sonunda unutmay谋n ki proqram, biz 0 qay谋tmaq 蓹g蓹r ki, sort-
u臒urlar g枚st蓹rir.
V蓹 蓹sas da avtomatik olaraq 蓹g蓹r 0 qaytar谋r.
>> Odur ki, biz g枚st蓹rir 1 retuning edirik ki, u臒ur deyil ki.
V蓹 siz ist蓹diyiniz h蓹r hans谋 qay谋da bil蓹r, yaln谋z 0 u臒urlar g枚st蓹rir v蓹
ba艧qa bir 艧ey u臒ursuzluq g枚st蓹rir.
Bel蓹 ki, h蓹r 艧eyi bu versiyas谋 run bildirin.
Bel蓹likl蓹, biz bir command line daxil deyil, 蓹g蓹r d蓹lil, d眉zg眉n dem蓹k laz谋md谋r
us, kifay蓹t q蓹d蓹r command line deyil.
C眉ml蓹 ba艧a g蓹lm蓹di.
Ba艧qa, biz, h蓹qiq蓹t蓹n, bir ke莽m蓹k 蓹g蓹r, bu proqram tam bil蓹r.
Bel蓹 ki, bu siz argc istifad蓹 nec蓹 edir say谋 do臒rulamak 眉莽眉n
command line d蓹lill蓹ri ki, h蓹qiq蓹t蓹n q蓹bul olunur.
>> Bel蓹 ki, bir az daha bu program ed蓹k m眉r蓹kk蓹b, ikinci baxmaq
艧eyi iteration.
Bel蓹 ki, indi biz yaln谋z 莽ap deyilik ilk command line arqument.
Burada, biz int i b蓹rab蓹rdir iterating edirik 0, i, i argc azd谋r plus
plus, v蓹 莽ap argv, index i.
Bel蓹 ki, bu model, yenid蓹n, bu, eyni 蓹v蓹zin蓹 ba艧qa 蓹vv蓹l model,
d蓹yi艧蓹n z蓹ng n, biz argc istifad蓹 edirik.
>> Bel蓹 ki, bu h蓹r indeksi 眉z蓹rind蓹 iterating olunur serialda v蓹 h蓹r 莽ap
ki, array element.
V蓹 bel蓹 ki, biz bu proqram 莽al谋艧t谋rd谋臒谋n谋zda, yax艧谋, M蓹n he莽 bir command line daxil etm蓹yib
arqumentl蓹r yaln谋z izl蓹ri bel蓹 proqram ad谋.
M蓹n h蓹r 艧eyi bir d蓹st蓹 daxil edin, bu will biri 枚z x蓹tti il蓹 h蓹r 莽ap.
>> OK.
Bel蓹 ki, g蓹l蓹c蓹k bu bir add谋m olsun.
V蓹 蓹v蓹zin蓹 h蓹r arqument 莽ap 枚z x蓹tti il蓹, h蓹r 莽ap imkan
h蓹r bir arqument xarakter 枚z x蓹tti il蓹.
Bel蓹 argv oldu臒unu unutmay谋n strings bir s谋ra.
Bel蓹 ki, n蓹 bir string, lakin simvol bir array?
Bel蓹 ki, argv h蓹qiq蓹t蓹n o dem蓹kdir ki, bir simvol bir s谋ra array.
Bel蓹 ki, istifad蓹 ed蓹r蓹k, indi bu ignore bildirin.
Yaln谋z simli argv 0 n蓹z蓹rd蓹n ke莽ir蓹k.
>> Biz h蓹r bir xarakter g蓹tirm蓹k ist蓹yir蓹m 蓹g蓹r argv 0 枚z x蓹tti il蓹, sonra m蓹n ist蓹yir蓹m
biz istifad蓹 etdiyiniz model etm蓹k, i serial谋n uzunlu臒u az,
, burada strlen olan ki, M蓹n ist蓹yir蓹m n蓹, simli
s argv 0 b蓹rab蓹rdir.
Bel蓹 ki, i bizim uzunlu臒u azd谋r bu halda bir s谋ra olan array,
simvol, i plus plus.
Biz ke莽蓹n h蓹ft蓹 g枚rd眉m kimi, bel蓹 ki, bu ideal var Biz k蓹narda strlen ki, h蓹r蓹k蓹t 蓹g蓹r
v蓹ziyy蓹ti, ild蓹n n 蓹lav蓹 olunacaq s strlen biz getm蓹k h蓹r d蓹f蓹
loop vasit蓹sil蓹 v蓹 bu d蓹yi艧蓹n etm蓹k niyy蓹tind蓹 deyil.
Bel蓹 ki, biz burada n b蓹rab蓹r m眉蓹yy蓹n ed蓹c蓹yik.
>> OK.
Bel蓹 ki, indi biz art谋q iterating edirik serial谋n h蓹r index.
V蓹 bel蓹 ki, biz h蓹r 莽ap etm蓹k ist蓹yirsinizs蓹 ki, array, faiz c karakter
biz istifad蓹 etm蓹k ist蓹diyiniz bayra臒谋 simvol.
陌ndi bir bracket i olacaq edir string, index xarakter i, bel蓹 ki, 蓹g蓹r
string salam idi.
sonra bracket 0 h olacaq S S 1 bel蓹 e olacaq v蓹.
>> Bel蓹 ki, indi biz birl蓹艧dirm蓹k ist蓹yir蓹m Bu iki 艧eyi.
Biz h蓹r bir xarakter 莽ap etm蓹k ist蓹yir蓹m h蓹r command line arqument.
Bel蓹 ki, biz olacaq bir loop 眉莽眉n i莽 i莽蓹.
V蓹 艧蓹rti, ilk counter i, n枚vb蓹ti j olacaq, n edir
argv i strlen olacaq, i az n, i plus plus edir.
陌ndi 蓹v蓹zin蓹 莽ap argv i, bel蓹 ki, i index gedir argv bracket -
ki, i-ci command line olacaq arqument argv i, j gedir
Bu jth xarakter ola i-ci arqument.
M蓹n indi burada bu q蓹d蓹r qurtarmaq laz谋md谋r biz ki, loop onu qoymaq b蓹ri.
Bel蓹 ki, simli s b蓹rab蓹rdir b蓹rab蓹rdir argv i, sonra s bracket j.
>> Yax艧谋, biz b蓹yan etm蓹k laz谋m deyil Bu d蓹yi艧蓹n s.
茝ksin蓹, biz yaln谋z bu birl蓹艧dirm蓹k laz谋md谋r biz n蓹 iki, j i argv.
>> HOPARL脰R 1: [i艧itilemez].
>> Rob Boden: Yax艧谋 z蓹ng.
Bel蓹 ki, bu pozuldu.
M蓹n, h蓹qiq蓹t蓹n, qa莽谋b varsa, biz ki, bu h蓹yata.
M蓹n qay臒谋 bel蓹 counter Bu x眉susil蓹
loop j, iterator edir.
Bel蓹 ki, m蓹s蓹l蓹l蓹r daxil olard谋, y蓹qin ki, bir sonsuz loop, 蓹g蓹r biz
sabit deyil.
Biz d蓹 s枚hb蓹t edirik, niy蓹 ki haqq谋nda bu g眉n ay谋klama.
>> OK.
Bel蓹 ki, bu proqram run imkan verir.
V蓹 蓹slind蓹 ayr谋-ayr谋 printf 蓹lav蓹 ed蓹k burada yaln谋z 莽ap ed蓹c蓹k
Bu dem蓹kdir ild蓹n bir line, biz proqram run, bir bo艧 olacaq
H蓹r xarakterli aras谋nda line h蓹r command line arqument.
B蓹li, biz o dem蓹kdir ki, n蓹 g枚r眉rs眉n眉z.
Oop.
B蓹zi s蓹hv var.
Error dolay谋s谋 elan kitabxana funksiyas谋 strlen.
>> Bel蓹 ki, bizim proqram geri gedir, m蓹n string.h daxil hash unuttum.
Bel蓹 ki, string.h olacaq edir bildirir ki, header file
funksiyas谋 strlen.
OK, bu, t蓹rtib edir.
陌ndi run bildirin.
Bel蓹 ki, yaln谋z.
Bu 莽ap olacaq bizim proqram ad谋, hello d眉nya.
H蓹r bir, h蓹r 艧ey 莽ap olacaq 枚z x蓹tti il蓹 xarakter.
OK.
>> Bel蓹 nin 蓹slind蓹 bu g枚t眉r蓹k daha bir add谋m.
茝v蓹zin蓹 string.h istifad蓹, ed蓹k biz 枚z h蓹yata ist蓹diyiniz nec蓹 d眉艧眉nm蓹k
strlen funksiyas谋.
M蓹n d蓹rhal ver蓹c蓹yik bir funksiyas谋 imza.
Bel蓹 ki, my_strlen z蓹ng ed蓹k, v蓹 bu bir arqument kimi bir string almaq 眉莽眉n gedir,
v蓹 biz geri g枚zl蓹yirik ki, simli uzunlu臒u.
Bel蓹 ki, burada ki, o臒lan var?
B蓹li.
OK.
Bel蓹 ki, 蓹vv蓹ll蓹r Slayd xat谋rlay谋ram ki, , ke莽蓹n h蓹ft蓹 idi ki,
simvol array, yax艧谋, bir string, bel蓹 ki, bu, bizim string s dey蓹k.
Bel蓹 ki, s simli 蓹g蓹r, hello, sonra, H-E-L-L-O, yadda艧 ki, olacaq
sonra bu backslash ola bil蓹r, v蓹 0 character.
>> Bel蓹 ki, nec蓹 biz s uzunlu臒u almaq edirsiniz?
Yax艧谋, oyun bu axtar谋r 0 xarakter, bu null reaksiyalara
terminator.
Bel蓹 ki, alqoritm davam edir ne莽蓹 kimi bir 艧ey olacaq
kifay蓹t q蓹d蓹r simvol ki, -
Bu 蓹l b蓹zi t蓹msil ed蓹k counter, bu int uzunlu臒u z蓹ng ed蓹k.
Bel蓹 ki, burada-d蓹n ba艧layaraq, biz ist蓹yirik simli 眉z蓹rind蓹 t蓹krarlamaq gedir.
>> Bel蓹 ki, bu H ilk xarakter var, v蓹 geri, bel蓹 ki, 0 do臒ramaq deyil
uzunlu臒u 1.
N枚vb蓹ti xarakter t蓹krarlamaq, E, v蓹 0 backslash deyil.
Length 2.
L, 3.
L, 4.
O, 5.
V蓹, n蓹hay蓹t, biz backslash 莽atmaq 0, v蓹 o dem蓹kdir ki, yax艧谋,
Bu simli bitdi.
Bel蓹 ki, 5 qay谋daq.
>> Y蓹ni 蓹slind蓹, ilk ki, h蓹yata m蓹nim n uzunlu臒u M蓹nim sa臒, 0 b蓹rab蓹rdir.
V蓹 biz t蓹krarlamaq olacaq -
>> HOPARL脰R 1: [i艧itilemez]
>> Rob Boden: Oh, vur.
Yax艧谋 z蓹ng.
Boom.
Bel蓹 ki, n uzunlu臒u 0 b蓹rab蓹rdir.
Bel蓹 ki, indi is蓹 uzunlu臒u deyil sonra b蓹rab蓹r v蓹 backslash 0.
Bel蓹 ki, bu backslash 0 xat谋rlay谋ram, bir edir faktiki xarakter, v蓹 bu g枚st蓹rir
simli sonu.
Just kimi, h蓹m莽inin, backslash n faktiki karakter.
Backslash 0 qeyd edir bizim simli sonunda.
M蓹n orada qoymaq ist蓹mir蓹m.
V蓹 uzunlu臒u dizine s deyil is蓹 null terminator b蓹rab蓹r, sonra
biz yaln谋z uzunlu臒u artt谋rmay谋 olacaq.
Bel蓹likl蓹, bizim proqram谋n sonunda, uzunlu臒u n蓹tic蓹d蓹 gedir
bu halda 5 olun.
V蓹 biz yaln谋z uzunlu臒u qay谋tmaq laz谋md谋r.
>> OK.
Bel蓹 ki, indi a艧a臒谋 burada, m蓹n yox my_strlen yoxdur.
Nin 蓹min etm蓹k 眉莽眉n t蓹rtib ed蓹k h蓹r 艧ey r蓹van 莽al谋艧谋r.
M蓹n 2 edirdi?
V蓹 ya 1 idi?
Etm蓹lidir.
B眉t眉n h眉quqlar.
Bel蓹 ki, bu argv 2.
G枚zl蓹nil蓹n kimi, 莽al谋艧谋r, baxmayaraq ki, bir m蓹n bunu etdi ki, idi?
B蓹li.
OK.
艦eyi bu versiyas谋 yoxdur Bu printf yeni sonra line, lakin
he莽 bir f蓹rq etmir.
OK.
G枚zl蓹nilir ki i艧l蓹mi艧dir.
>> 陌ndi biz h蓹tta bu bir add谋m birl蓹艧dir蓹 bil蓹r daha, burada yerl蓹艧ir bildiri艧, yax艧谋,
ilk, biz argv olan strlen q蓹nim蓹t莽ilik edirik i, sonra biz art谋q iterating edirik
ki, simli h蓹r character.
Bel蓹 ki, 蓹v蓹zin蓹 bunu, n蓹 蓹g蓹r biz yaln谋z g枚zl蓹m蓹 bu m蓹ntiqi birl蓹艧dirm蓹k
biz backslash 0 h眉ququna hit q蓹d蓹r loop 眉莽眉n bu daxil?
Argv i, j n蓹 is蓹 bel蓹 t蓹krarlamaq b蓹rab蓹r backslash 0.
Bel蓹 ki, ilk run bildirin.
>> B眉t眉n h眉quqlar.
Bel蓹 ki, burada, bu v蓹ziyy蓹ti deyib -
ki sil.
Bel蓹 ki, indi, bu, bizim argv olsun.
M蓹n yaln谋z 蓹vv蓹l proqram qa莽d谋 zaman, argv strings bir s谋ra edir.
V蓹 m蓹n dot 莽izgi argv il蓹 run 蓹g蓹r 2, hello d眉nya, sonra argv
枚z眉 argv 眉莽眉n, uzunlu臒u 3 s谋f谋r, hello, v蓹 d眉nya.
>> V蓹 bu g枚st蓹ricil蓹rinin h蓹r biri daxilind蓹 deyil, 枚z眉 bu olacaq bir array,
dot, bu 莽izgi olacaq, bilmir蓹m ki, d眉zg眉n istiqam蓹td蓹 idi, m蓹n
Bu idi d眉艧眉nm眉r蓹m.
A-R-V dash, daha 莽ox yer laz谋md谋r.
Bu array daxil k蓹silir.
A-R-V dash 0, sonra backslash 0.
V蓹 sonra nizams谋zl谋q salam olacaq.
Nin, H-E backslash 0 deyirl蓹r.
V蓹 n蓹hay蓹t, W-O backslash 0.
>> Bel蓹likl蓹, biz yaln谋z yaz谋rd谋 ki, alqoritm, onlar oldu臒unuz loops 眉莽眉n i莽-i莽蓹
Doing, biz ilk var i v蓹 sonra j qar艧谋.
Bu kod il蓹 daha asan olard谋 ekran, geri bu ged蓹k.
OK.
Bel蓹 ki, i olan iterator oldu臒unu qeyd h蓹r bir komanda 眉z蓹rind蓹 iterating
line arqument.
V蓹 j iterator iterating edir ki, h蓹r bir xarakter 眉z蓹rind蓹
command line arqument.
Bel蓹 ki, bu olanlar谋 printf n蓹 , biz argv 0 0 printf printf var olunur
argv 0 1, printf argv 0 2 0 3 0 4 0 5, 0 6, lakin indi, argv 0 7 gedir
b蓹rab蓹r backslash 0.
>> Bel蓹likl蓹 biz loop 眉莽眉n 莽谋xmaq, v蓹 indi i 1 iterates.
V蓹 indi biz 莽ap olacaq argv 1 0, argv 1 1 -
yax艧谋, indi m蓹n q谋sa salam k蓹silmi艧 ild蓹n, argv 1 2 t蓹krar olacaq
backslash 0.
V蓹 bel蓹 ki, i artt谋rmay谋 v蓹 davam v蓹 ki, q蓹d蓹r biz b眉t眉n 莽ap
d眉nya v蓹 o 眉莽 command line var arqumentl蓹r v蓹 biz h蓹yata 莽谋xmaq laz谋md谋r
outermost loop, v蓹 proqram bitirm蓹k.
OK.
>> Bel蓹 ki, burada qay谋da bildirin.
Bel蓹 ki, b蓹zi tan谋艧 olmaq laz谋md谋r Bu command line d蓹lill蓹ri
x眉susi problem m眉蓹yy蓹n.
>> 陌ndi, hata.
Bel蓹likl蓹, siz y蓹qin ki, art谋q n蓹 idi 茝vv蓹lki il蓹 b蓹zi ay谋klama
problem m眉蓹yy蓹n.
V蓹 ay谋klama bir 莽ox asan yol, ilk bir arabas谋 proqram baxaq.
Yax艧谋, bu proqram谋 vasit蓹sil蓹 g蓹zinti biz 眉莽眉n istifad蓹莽i xahi艧 olacaq
tam ki, tam qamarlamaq, v蓹 sonra, 枚zba艧谋na, biz is蓹 loop var ki,
yaln谋z azalma gedir Bu 10 b蓹rab蓹r i q蓹d蓹r.
Ed蓹k yaln谋z m蓹n daxil deyil蓹m g眉man 10-d蓹n 莽ox bir tam.
Bu 10 b蓹rab蓹r q蓹d蓹r i azalma.
>> V蓹 sonra biz ba艧qa is蓹 loop var i 0 b蓹rab蓹r deyil is蓹, biz ist蓹yirik ki,
3 i azalma gedir.
Bel蓹likl蓹, siz s蓹hv niyy蓹ti g枚rm蓹k 蓹g蓹r burada, bu i 眉莽眉n azalma laz谋md谋r ki, var
10, v蓹 sonra bu is蓹 loop irad蓹 ola 1 4 7 10, g蓹l蓹n azalma i,
m蓹nfi 2, bel蓹 ki, 5 m蓹nfi v蓹 m蓹nfi sonsuzlu臒a, i olacaq ild蓹n
h蓹qiq蓹t蓹n 0 b蓹rab蓹r he莽 vaxt.
V蓹 sonra bu proqram谋n sonunda, biz olan foo funksiyas谋 var
莽ap gedi艧 i ki.
>> Bel蓹 ki, bu, q谋sa v蓹 m蓹nas谋z proqram v蓹 s蓹hv ayd谋nd谋r,
x眉susil蓹 sonra m蓹n yaln谋z s蓹hv idi n蓹 dedi.
Amma burada niyy蓹t yax艧谋, bu g眉c deyil, h蓹qiq蓹t蓹n b蓹zi kimi baxmaq sizin
g蓹l蓹n son g枚rm蓹mi艧 olan h蓹ll蓹r problem m眉蓹yy蓹n v蓹 b蓹lk蓹 siz var
proqram b蓹zi sonsuz loop, v蓹 siz he莽 bir fikrim yoxdur
n蓹 s蓹b蓹b oldu.
Bel蓹 ki, bir 莽ox faydal谋 ay谋klama texnika yaln谋z printfs 蓹lav蓹 etm蓹k
b眉t眉n kodu 眉z蓹rind蓹.
>> Bel蓹 ki, burada xaricind蓹 bir printf ist蓹yir蓹m ilk is蓹 loop.
V蓹 burada m蓹n bir printf ist蓹yir蓹m, M蓹n yaln谋z i 莽ap ed蓹c蓹yik.
Loop is蓹 h蓹tta i, ilk ed蓹c蓹yik.
K蓹narda, ikinci is蓹 loop.
Bir daha, daxili 莽ap burada, d蓹y蓹ri i.
V蓹 bu run bildirin.
>> Bel蓹 ki, dot 莽izgi debug.
Tam daxil edin.
13 ed蓹k.
V蓹 bumu.
Biz sonsuz loop oldu臒unu g枚r眉r眉k ikinci is蓹 loop daxilind蓹.
Bel蓹 ki, indi biz s蓹hv oldu臒unu bilirik.
Amma printf ay谋klama, m眉k蓹mm蓹l b枚y眉k ancaq proqramlar谋 almaq d蓹f蓹
uzun v蓹 daha m眉r蓹kk蓹b var daha m眉r蓹kk蓹b h蓹ll蓹ri
艧eyi i艧 蓹ld蓹.
Bel蓹 ki, b眉t眉n bu printfs y谋臒谋艧d谋raq.
V蓹 蓹min M蓹n etm蓹dim ed蓹k bir 艧ey q谋rmaq.
OK.
>> Bel蓹likl蓹, biz olacaq proqram t蓹qdim adlan谋r
GNU Debugger gdb.
Yax艧谋, h蓹qiq蓹t蓹n, 眉莽眉n debug aradan qald谋r谋lmas谋 imkan ikinci, v蓹 daha debug etm蓹k.
B蓹li, h蓹qiq蓹t蓹n ilk bir yax艧谋 d蓹rs command line d蓹lill蓹ri il蓹.
Bu cingilti komanda ki, Qeyd ed蓹k ki, h蓹r 艧ey q蓹bul edilir t蓹rtib
command line, bu command line d蓹lill蓹ri.
Istifad蓹 olunur, bel蓹 ki, tam olaraq nec蓹 command line d蓹lill蓹ri kimi biz
蓹vv蓹l idi, v蓹 siz pset olacaq kimi 2, ki, cingilti, onlardan istifad蓹 edir nec蓹.
>> Bel蓹 ki, qeyd ki, bu ilk bayraq, dash ggdb3, ki s枚yl蓹y蓹r蓹k n蓹, cingilti,
Siz bu fayl谋 t蓹rtib etm蓹li niyy蓹t ki, biz n蓹hay蓹t olacaq
bu debug laz谋md谋r.
Bel蓹 ki, kimi uzun siz bayra臒谋 var, sonra biz gdb debug bil蓹r.
V蓹 bu GNU Debugger a莽maq laz谋md谋r.
>> Bel蓹 ki, 蓹mrl蓹ri var siz istifad蓹 almaq laz谋md谋r ki,.
Birincisi ki, siz y蓹qin ki, laz谋md谋r d蓹rhal laz谋m Run edir.
Bel蓹 ki, n蓹 gedir Run olunur?
Bu, bizim proqram ba艧lamaq olacaq.
Bel蓹 ki, ba艧layan proqram, proqram 莽al谋艧t谋rmak bir tam 13 眉莽眉n biz蓹 xahi艧 edir.
V蓹 sonra bu sonsuz loop kimi var M蓹n xaric istisna olmaqla, g枚zl蓹nil蓹n
printfs, bel蓹 ki, biz h蓹tta g枚rm眉r蓹m.
Normal 莽谋x谋ld谋.
Oh.
Bu b眉k眉lm眉艧 m眉mk眉nd眉r b眉t眉n yol, geri - ki, m蓹h蓹l.
Normal 莽谋xmad谋臒谋n谋 da艧谋m谋r.
Ki, bir m眉r蓹kk蓹b cavab var.
>> Bel蓹 ki, indi ki, 莽ox faydal谋 deyil.
Bel蓹 ki, yaln谋z daxilind蓹 bizim proqram 莽al谋艧an Bu ay谋klama h蓹r hans谋 bir biz蓹 k枚m蓹k etmir
biz yaln谋z g枚rm眉艧眉k bil蓹r-ci ild蓹n yol, dot gdb k蓹narda debug do臒ramaq.
Bel蓹 ki, bir komanda ki, y蓹qin ki, laz谋md谋r -
v蓹 m蓹n bu 莽谋xmaq laz谋md谋r.
Control-d v蓹 ya i艧 h蓹m 莽谋x谋n.
Bel蓹likl蓹, bir daha onu a莽maq bildirin.
>> Dig蓹r komanda ki, siz y蓹qin ki, laz谋md谋r d蓹rhal ist蓹yir蓹m
眉莽眉n istifad蓹 almaq Break edir.
Bel蓹 ki, biz, indi 蓹sas q谋rmaq laz谋md谋r v蓹 sonra m蓹n izah ed蓹c蓹yik.
Yax艧谋, burada biz bir breakpoint bax debug.c bu x蓹tt.
Bel蓹 ki, n蓹 break vasit蓹dir zaman run yaz谋n, proqram gedir
q蓹d蓹r davam M蓹n breakpoint edib.
I run hit zaman, bel蓹 ki, proqram, ba艧lay谋r v蓹 sonra bu kimi tezlikl蓹 kimi pozur
蓹sas funksiyas谋 olur.
茝sas Break 艧ey olacaq Siz olduqca 莽ox n蓹.
>> 陌ndi siz蓹 t蓹qdim etm蓹k bir daha 蓹mrl蓹ri.
Biz dey蓹r蓹k ki, burada qeyd olan line 11 at q谋rd谋
printf, tam daxil edin.
Bel蓹 ki, komanda Next nec蓹 olacaq biz kodu n枚vb蓹ti line getm蓹k.
Bu, bizim add谋m imkan gedir x蓹tti il蓹 proqram x蓹tti il蓹.
Bel蓹 ki, n枚vb蓹ti.
>> 陌ndi line 12, biz gedirik tam almaq 眉莽眉n.
Next.
Siz yaln谋z yenid蓹n Enter varsa, bu will siz etdi son 艧ey redo.
M蓹n yaz谋n ehtiyac yoxdur N枚vb蓹ti h蓹r zaman.
Bel蓹 bir tam, 13 daxil edin.
Bel蓹 ki, indi line 14, i 莽ox is蓹 10-d蓹n, v蓹 m蓹n n枚vb蓹ti ed蓹c蓹yik.
V蓹 biz i azalma olacaq g枚r眉r眉k.
Y蓹ni biz yenid蓹n i azalma olacaq.
>> Bel蓹 ki, indi dig蓹r faydal谋 command Print edir.
Bel蓹 ki, 莽ap 莽ap gedir d蓹yi艧蓹n d蓹y蓹ri.
Nin d蓹y蓹rini getirsin d蓹yi艧蓹n i.
M蓹n 莽ap ed蓹k.
Bu i 11 dem蓹k olacaq.
陌ndi biz Next yen蓹 d蓹 i 10-d蓹n 莽oxdur.
Bel蓹 ki, i h蓹l蓹 daha 莽ox var 11-ci ild蓹n 10.
i minus minus.
Yen蓹 i 莽ap ed蓹k.
G枚zl蓹nildiyi kimi, 10 var.
>> Bel蓹 ki, indi g蓹l蓹c蓹k.
Bu geri v蓹ziyy蓹td蓹 olacaq, i 10-d蓹n 莽ox, lakin i bel蓹 ki, indi 10
Bu 10-d蓹n 莽ox deyil, bel蓹 ki, biz g枚zl蓹yirik Bu is蓹 loop t枚k眉lm蓹k 眉莽眉n.
V蓹 indi biz kod ki line a艧a臒谋da ist蓹yirik.
V蓹 ba艧qa komanda siyah谋s谋, yaln谋z gedir 蓹vv蓹lki v蓹 sonrak谋 ke莽irm蓹k 眉莽眉n
kodu x蓹tl蓹ri, ild蓹 bir ne莽蓹 halda siz 枚z眉n眉z itirdi.
Bel蓹likl蓹, biz yaln谋z, bu is蓹 loop ayr谋ld谋臒谋 v蓹 indi biz bu daxil
is蓹 loop, line 18.
I 0 b蓹rab蓹r deyil is蓹 bel蓹.
V蓹 n枚vb蓹ti, i biz will i minus 3 b蓹rab蓹rdir, v蓹 qeyd, bu, yaln谋z davam ed蓹c蓹yik.
V蓹 biz i 莽ap ed蓹 bil蓹rsiniz.
>> H蓹r bir komanda sort q谋sa malikdir.
Bel蓹 ki, p 脟ap 眉莽眉n q谋sa.
Bel蓹likl蓹, biz p i bil蓹rsiniz.
Just n ke莽irilm蓹si saxlamaq, v蓹 ya Next bunu saxlamaq.
Yen蓹 莽ap.
Siz 167 m蓹nfi indi g枚r眉r眉k.
Bel蓹 ki, bu 蓹b蓹di getm蓹k, lakin h蓹qiq蓹t蓹n 蓹b蓹di, yaln谋z g枚rd眉m ild蓹n, bu,
h蓹qiq蓹t蓹n bir n枚qt蓹d蓹 sona 莽atacaq.
>> Bel蓹 ki, gdb ba艧layaraq edilir.
Amma gdb daha bir 艧ey ed蓹k.
Uh, debug.
Bel蓹 ki, bu halda, sonsuz loop daxilind蓹 ola oldu
蓹sas funksiyas谋.
V蓹 indi 眉莽眉n, yaln谋z m蓹n ki, q蓹bul daxil sonsuz loop h蓹r蓹k蓹t olacaq
foo funksiyas谋.
M蓹hz bu sonunda, unutmay谋n ki, proqram, yax艧谋, bu ilk idi
yaln谋z olan foo z蓹ng i 莽ap gedir.
Amma indi biz olan, foo z蓹ng etdiyiniz Bu 0 q蓹d蓹r i azalma, v蓹 gedir
sonra d蓹yi艧蓹n 莽ap.
OK.
Ki saxla.
Debug olun.
陌ndi, gdb debug.
OK.
>> M蓹n yaln谋z Run Bel蓹 ki, 蓹g蓹r m蓹n fikrind蓹 deyil蓹m h蓹qiq蓹t蓹n gezinmek 眉莽眉n ed蓹 m蓹nim
proqram line-by-line.
Bel蓹 ki, 蓹sas da q谋ra ed蓹k, v蓹 sonra run yaz谋n.
Bel蓹 ki, bu yolu getm蓹k, printf daxil bir tam, tam, 13 almaq.
Bel蓹likl蓹, biz decrementing saxlamaq olacaq i 10-d蓹n 莽oxdur q蓹d蓹r.
Sonra vasit蓹sil蓹 d眉艧m蓹k olacaq is蓹 loop, v蓹 x蓹tti almaq -
bir ayr谋 p蓹nc蓹r蓹 a莽maq bildirin.
I art谋q q蓹d蓹r biz endirildiyi sonra 10-d蓹n 莽ox v蓹 biz
foo, funksiyas谋 adlan谋r.
>> Bel蓹 ki, n蓹 tezlikl蓹 m蓹n hit ba艧 verib funksiyas谋 foo, yax艧谋, M蓹n foo adlan谋r v蓹
sonra art谋q gdb 眉z蓹rind蓹 n蓹zar蓹t var idi.
Bel蓹 ki, tezlikl蓹 m蓹n bu x蓹tti Next hit, Bu ba艧 q蓹d蓹r 艧eyi davam
脺 proqram 莽谋kt谋 -
n蓹tic蓹d蓹 yox idi da艧谋m谋r.
Siz baxmayaraq bir az fasil蓹 g枚rd眉m.
Bel蓹 ki, niy蓹 m蓹n 眉z蓹rind蓹 n蓹zar蓹ti itirm蓹k idi o n枚qt蓹d蓹 proqram?
M蓹n n枚vb蓹ti yaz谋n zaman Yax艧谋, ki, gedir kod h蓹rfi n枚vb蓹ti x蓹tti
icra ed蓹c蓹k.
Bel蓹 ki, sonra line 21, kodu n枚vb蓹ti line ki, line 22 icra ed蓹c蓹k
蓹sas olan m枚vcud olan.
M蓹n yaln谋z getm蓹k ist蓹mir蓹m kodu n枚vb蓹ti line.
M蓹n funksiyas谋, foo daxil getm蓹k ist蓹yir蓹m, v蓹 sonra da add谋m
kodu h蓹min sat谋r.
>> Bel蓹 ki, biz bir alternativ var.
Ki, daha 莽谋xmaq imkan verir.
茝sas ay谋r谋n.
Uh, 1, n枚vb蓹ti, n枚vb蓹ti, 13, n枚vb蓹ti, n枚vb蓹ti, n枚vb蓹ti, diqq蓹tl蓹,
biz line foo hit 蓹vv蓹l.
OK.
>> Bel蓹 ki, indi biz, line 21 ist蓹yirik biz foo z蓹ng yerl蓹艧ir.
Biz n枚vb蓹ti yaz谋n ist蓹mir蓹m ki, b蓹ri yaln谋z funksiyas谋 foo z蓹ng v蓹
kodu n枚vb蓹ti line getm蓹k.
N蓹 biz istifad蓹 etm蓹k ist蓹diyiniz add谋md谋r.
Bel蓹 ki Add谋m aras谋nda bir f蓹rq var v蓹 Step daxil add谋mlar Next,
f蓹aliyy蓹t, v蓹 Next gedir funksiyas谋 眉z蓹rind蓹.
Bu yaln谋z tam icra funksiyas谋 v蓹 saxlay谋r gedir.
>> Bel蓹 ki, Step bizi g蓹tirm蓹k niyy蓹tind蓹dir funksiyas谋 daxil foo.
V蓹 biz indi, biz geri ist蓹yirik, bax burada n蓹z蓹riyy蓹 var ki, bu is蓹 loop,
蓹b蓹di davam.
V蓹 h蓹tta deyil zaman Add谋m, hit 蓹g蓹r z蓹ng etm蓹k 眉莽眉n bir funksiyas谋, sonra bu
Sonrak谋 eyni.
Bir x蓹tt oldu臒unuzda bel蓹 ki, yaln谋z ki, Add谋m ki, bir funksiyas谋 z蓹ng
Sonrak谋 f蓹rql蓹nir gedir.
Bel蓹 ki, Step burada biz蓹 g蓹tir蓹c蓹k.
Step, add谋m, add谋m, add谋m, add谋m, add谋m, v蓹 biz 蓹b蓹di yaln谋z sonsuz loop laz谋md谋r.
>> Bel蓹likl蓹, siz kimi istifad蓹 almaq bil蓹r Sizin sonsuz loops m眉蓹yy蓹n yolu,
yaln谋z bu Enter d眉ym蓹sini ke莽irilm蓹si Zorland谋臒谋n谋z yerl蓹艧ir g枚r眉r眉k.
Var ki, n蓹 yax艧谋 yollar谋 var, lakin indi ki, m眉k蓹mm蓹l kifay蓹tdir.
V蓹 stylistically, Style uy臒un 50, m蓹n bu h蓹yata olmal谋d谋r.
OK.
>> Bel蓹 ki, son bir komanda t蓹qdim.
Yax艧谋, daxil debug gdb ili
Bel蓹 ki, 蓹v蓹zin蓹 蓹sas da q谋r谋lma, 蓹g蓹r m蓹n foo funksiyas谋 h蓹m莽inin bilirik edir
problem, sonra ola bil蓹r yaln谋z 蓹v蓹zin蓹, foo q谋rmaq etdi.
M蓹n q谋rmaq deyirl蓹r 蓹sas v蓹 foo d蓹.
Bel蓹 ki, bir 莽ox breakpoints bil蓹rsiniz ist蓹diyiniz kimi.
I run yaz谋n, o gedir Bu dayand谋rmaq 眉莽眉n -
ooh, 莽眉nki nin compile bildirin M蓹n h蓹r 艧eyi d蓹yi艧di.
Bu x蓹tt, Warning, m蓹nb蓹 g枚r蓹c蓹ksiniz fayl y眉r眉t眉lebilir daha son deyil.
Bel蓹 ki, m蓹n yaln谋z burada getdi o dem蓹kdir ki, v蓹 Style uy臒un bu d蓹yi艧di
50, lakin m蓹n derleyece臒iz etm蓹yib proqram.
Bel蓹 ki, gdb ki, m蓹ni x蓹b蓹rdar edir.
M蓹n yen蓹 debug etm蓹k, 莽谋xmaq laz谋md谋r gdb debug edib.
OK.
>> Bel蓹 ki, indi geri m蓹n bunu n蓹.
茝sas, break foo ay谋r谋n.
陌ndi proqram run, bel蓹 ki, 蓹g蓹r xit q蓹d蓹r davam bir
breakpoint.
Bu breakpoint olur 蓹sas da ilk biri.
陌ndi 蓹v蓹zin蓹 n枚vb蓹ti etdiyini, n枚vb蓹ti, n枚vb蓹ti, n枚vb蓹ti, n枚vb蓹ti, foo hit q蓹d蓹r, m蓹n
davam ed蓹c蓹k, davam ed蓹bil蓹rsiniz n枚vb蓹ti breakpoint hit q蓹d蓹r.
M蓹n ilk tam daxil etm蓹k laz谋md谋r.
M蓹n hit q蓹d蓹r davam ed蓹c蓹k Davam ki, n枚vb蓹ti breakpoint,
foo funksiyas谋.
>> Bir hit q蓹d蓹r Run davam ed蓹c蓹k zaman breakpoint, lakin yaln谋z run yaz谋n
Siz, sonra proqram ba艧layaraq, edirik sonra, bu davam edir.
M蓹n yaln谋z 蓹sas q谋rmaq idi v蓹 蓹g蓹r sonra qa莽d谋, o q谋rmaq laz谋md谋r
sonra 蓹sas, v蓹 davam edir.
M蓹n foo bir fasil蓹 point var, yoxdur-ci ild蓹n Bu tam daxil edin, sonra indi m蓹n
foo at q谋rmaq niyy蓹tind蓹 deyil.
Bu, yaln谋z sonsuz olacaq ki, q蓹d蓹r loop.
OK.
>> Bel蓹 ki, gdb Intro var.
Siz onu istifad蓹 ba艧lamaq laz谋md谋r Sizin problem d蓹stl蓹ri.
Bu, 莽ox faydal谋 ola bil蓹r bugs m眉蓹yy蓹n etm蓹k.
H蓹qiq蓹t蓹n, yaln谋z, line-by-line getm蓹k varsa, Sizin kod vasit蓹sil蓹, v蓹 n蓹 m眉qayis蓹
h蓹qiq蓹t蓹n g枚zl蓹m蓹k n蓹 il蓹 ba艧 ba艧, sonra bu, olduqca
sizin hatalar谋 miss 莽蓹tindir.
OK.
>> Bel蓹 ki, 枚t蓹n h蓹ft蓹 David bu t蓹rbiy蓹 眉莽眉n gizli-蓹sas Kriptoqrafiya stuff
biz ist蓹mir蓹m ilk d蓹f蓹, parol yaln谋z saxlan谋l谋r bizim
bir d眉z m蓹tn fayl谋 komp眉ter, 脺 kims蓹 v蓹 yaln谋z g蓹l蓹 bil蓹r
a莽maq v蓹 onlar谋 oxumaq.
陌deal halda, onlar 艧ifrelenmi艧 olacaq bir 艧蓹kild蓹.
V蓹 Problem Set 2, Siz m蓹艧臒ul olacaq 艧ifreleme bir 眉sulu il蓹,
v蓹 ya, yax艧谋, iki metod, lakin onlar b枚y眉k deyil.
Siz hacker n蓹艧r n蓹 varsa, siz da m蓹艧臒ul olacaq
b蓹zi 艧eyl蓹r decrypting.
>> Bel蓹 ki, m蓹s蓹l蓹 indi d蓹, h蓹tta halda, biz g眉cl眉 艧ifreleme var
D眉nyada alqoritm, 蓹g蓹r bir se莽m蓹k x眉susil蓹 yoxsul parol, o,
, 莽ox siz蓹 k枚m蓹k ed蓹c蓹k bu yana insanlar谋n h蓹l蓹 d蓹 anlamaq olacaq.
艦ifreli simli g枚r蓹n v蓹 h蓹tta bu zibil bir mess kimi g枚r眉n眉r
蓹g蓹r ki, onlara he莽 bir 艧ey dem蓹kdir h蓹l蓹 yaln谋z bir ne莽蓹 parol c蓹hd laz谋md谋r
茝g蓹r bunu anlama臒a 莽ox t蓹hl眉k蓹siz deyil.
Bel蓹 ki, bir video seyr ki, i艧ar蓹 edir.
>> [Video playback]
>> -Kask, siz 艧eytan.
N蓹 olub?
茝g蓹r q谋z谋m n蓹 edirl蓹r?
>> Parlaq t蓹qdim etm蓹k m蓹n蓹 icaz蓹 g蓹nc plastik c蓹rrah Dr Phillip
Schlotkin 蓹n b枚y眉k burun b眉t眉n, i艧 adam谋
kainat, v蓹 Beverly Hills.
>> -茝lah蓹zr蓹t.
>> -Burun i艧?
M蓹n ba艧a d眉艧m眉r蓹m.
O, art谋q bir burun i艧 idi oldu.
Bu 艧irin on alt谋 idi.
>> -No.
Bu n蓹 deyil.
Bu, 莽ox, 莽ox pis.
Siz m蓹n蓹 birl蓹艧m蓹si vermir varsa hava qalxan, Dr Schlotkin olacaq
onun k枚hn蓹 burun q谋z谋 geri verir.
>> -No.
Harada ki, 蓹ld蓹 etdiniz?
>> -B眉t眉n h眉ququ.
M蓹n deyim.
Xeyr, daddy.
Xeyr, olmaz.
>> -Sen sa臒, 蓹ziz.
M蓹n sizin yeni burun miss laz谋md谋r.
Amma ona birl蓹艧m蓹si dem蓹k deyil, n蓹 olursa olsun.
>> -脟ox yax艧谋.
Dr Schlotkin, sizin 蓹n pis edin.
>> -M蓹nim z枚vq.
>> [TOOLS itil蓹nmi艧]
>> -No.
G枚zl蓹yin.
M蓹n deyim.
>> -M蓹n bunu bilirdik.
B眉t眉n h眉quqlar.
M蓹n蓹 verin.
>> -Birl蓹艧m蓹si biridir.
>> -One.
>> -陌ki.
>> -脺莽.
>> -Four.
>> -Be艧.
>> -Yax艧谋 birl蓹艧m蓹si biridir iki, 眉莽, d枚rd, be艧.
Bu stupidest birl蓹艧m蓹si var M蓹n he莽 h蓹yat谋mda e艧itdim.
Ki, bir 艧ey c眉r bir idiot var onun baqaj var ki.
>> Sizin 茝lah蓹zr蓹t, siz蓹 t蓹艧蓹kk眉r edirik.
>> -N蓹 oldu?
>> -M蓹n divar off 莽谋xd谋.
>> -No etm蓹di.
Siz b眉t眉n film s枚nd眉r眉l眉r.
>> M蓹n s蓹hv d眉ym蓹ni basd谋 olmal谋d谋r.
>> -Yax艧谋, geri qoydu.
Film geri qoyun.
>> -B蓹li, efendim.
B蓹li, efendim.
>> Nin, Arnold getm蓹k ed蓹k.
, Gretchen gel.
茝lb蓹tt蓹 ki, m蓹n h蓹l蓹 laz谋md谋r bilirik Bunun 眉莽眉n qanun var.
>> [END Video playback]
>> Rob Boden: B眉t眉n h眉ququ.
Biz art谋q s枚hb蓹t edirik Bel蓹 ki, indi ki, b蓹zi yollarla t蓹hl眉k蓹sizlik, g枚z蓹l
az film poster, bel蓹 ki, son NSA il蓹 g眉n, bu m蓹s蓹l蓹l蓹r
h蓹r 艧eyi monitorinq.
Bu sizin kimi hiss etm蓹k 莽蓹tin ola bil蓹r Bu gizlilik bir n枚v var
online d眉nya, m蓹n dey蓹 bilm蓹di Siz prizma m蓹lumat 蓹n.
Bel蓹 ki, prizma k蓹narda h蓹r蓹k蓹t, biz fikrind蓹 deyilik 陌ndi ki, s枚hb蓹t etm蓹k
Sizin laptop haqq谋nda d眉艧眉nm蓹k.
Bel蓹 ki, burada, m蓹n ke莽m蓹k ist蓹yir蓹m m蓹nim faktiki hesab谋na,
m蓹nim ki莽ik pinqvin il蓹.
M蓹n bir parol d蓹sti var ki, Parolu M蓹n olmaq ist蓹yir蓹m n蓹.
>> Amma unutmay谋n ki, n蓹 m蓹n giri艧 al谋ram , bel蓹 ki, bu giri艧 il蓹
tez, b蓹zi proqramd谋r.
Bu idi ki, b蓹zi proqram bir 艧蓹xs t蓹r蓹find蓹n yaz谋l谋.
V蓹 bel蓹 ki, 艧蓹xs, 蓹g蓹r onlar x眉susil蓹 z蓹r蓹rli, onlar bil蓹r
dedi, b眉t眉n sa臒, bel蓹 ki, 蓹g蓹r parol M蓹n daxil b蓹rab蓹rdir m蓹nim
faktiki parol, v蓹 ya b蓹rab蓹r b蓹zi x眉susi parol -
David z蓹hmli v蓹 ya bir 艧ey -
sonra onlar谋 i莽蓹ri buraxa
Bel蓹 ki, bir z蓹r蓹rli proqram莽谋 ola bil蓹r Mac b眉t眉n v蓹 ya giri艧
Windows, v蓹 ya bir 艧ey.
>> Bel蓹 ki, ild蓹n, bir narahatl谋q 莽ox deyil M蓹n dem蓹k, Bu giri艧 proqram
ki, OS X, y眉zl蓹rl蓹 s枚vq edir v蓹 ya minl蓹rl蓹 var
Bu kodu n蓹z蓹rd蓹n.
V蓹 bel蓹 ki, siz haradasa kodunu, 蓹g蓹r Bu string b蓹rab蓹rdir b蓹rab蓹rdir dem蓹k
David z蓹hmli, giri艧, sonra kims蓹 var olacaq, kimi, g枚zl蓹yin.
Bu do臒ru deyil.
Burada olmamal谋d谋r.
Bel蓹 ki, biz h蓹r 艧eyi almaq bir yolu var c眉r t蓹hl眉k蓹siz olmal谋d谋r.
>> Lakin h蓹tta proqramlar谋 haqq谋nda d眉艧眉nm蓹k Siz yazmaq.
Siz giri艧 proqram谋 yazd谋 deyirl蓹r.
Yaz谋rd谋 ki, bu giri艧 proqram, bel蓹 a莽谋q-ayd谋n, bir yax艧谋
proqram莽谋.
Siz h蓹r hans谋 bir z蓹r蓹rli qoymaq fikrind蓹 deyilik x b蓹rab蓹rdir b蓹rab蓹rdir 蓹g蓹r David z蓹hmli deyil
kodu daxil.
Lakin bu proqram, n蓹 Bu proqram t蓹rtib etm蓹k 眉莽眉n istifad蓹?
Cingilti kimi bir 艧ey.
Bel蓹 ki, n蓹 蓹g蓹r ba艧 ver蓹n 艧蓹xs cingilti qoruyucu cingilti x眉susi yazmaq
bir 艧ey kimi m蓹n t蓹rtib edir蓹m 蓹g蓹r proqram daxil, sonra bu kodu daxil edin
蓹g蓹r deyir ki, giri艧 proqram谋 x b蓹rab蓹rdir David z蓹hmli deyil b蓹rab蓹rdir?
Bel蓹 ki, tamamil蓹 h蓹l蓹, lakin biz eyni var burada verm蓹k, harada cingilti, yax艧谋,
min, 蓹g蓹r on minl蓹rl蓹 insanlar var, cingilti baxd谋 var
kodu 枚z x蓹tti baxd谋 v蓹 dedi, b眉t眉n sa臒, burada pis bir 艧ey yoxdur.
Ayd谋nd谋r ki, he莽 bir edir Bu z蓹r蓹rli bir 艧ey.
>> Amma n蓹 kimi, 枚z眉n眉 cingilti edir n蓹 cingilti t蓹rtib 蓹g蓹r?
M蓹n b蓹zi compiler var ki, 蓹g蓹r cingilti daxil ed蓹r ki, cingilti t蓹rtib
deyir ki, bu x眉susi hack, b眉t眉n sa臒, M蓹n cingilti t蓹rtib ed蓹rk蓹n, sonra
莽al谋艧t谋r谋labilir M蓹n x眉susi baxmaq laz谋md谋r almaq giri艧 proqram v蓹 insert daxilind蓹
Bu parol, b蓹rab蓹rdir b蓹rab蓹rdir Dave z蓹hmli deyil?
Bel蓹 ki, unutmay谋n ki, compiler 枚z眉 bir n枚qt蓹d蓹 t蓹rtib etm蓹k laz谋md谋r.
Bel蓹 ki, cingilti t蓹rtib se莽蓹 n蓹 , 枚z眉 sonra, z蓹r蓹rli il蓹
b眉t眉n berbat bil蓹r yol a艧a臒谋 x蓹tti.
>> Odur ki, biz Ken Thompson var v蓹 Dennis Ritchie.
Bel蓹 ki, bu iconic 艧蓹kil var.
Dennis Ritchie do臒ru deyil.
O, bir b枚y眉k -
olduqca 莽ox C. yazd谋 Bel蓹 ki, siz Bu sinif g枚r蓹 t蓹艧蓹kk眉r edir蓹m.
Ken Thomson sol var.
Onlara iki 蓹sas蓹n UNIX yazd谋.
B蓹li, onlar 蓹sas amil olmu艧dur UN陌X.
B蓹zi ba艧qalar谋 var idi.
Bir n枚qt蓹d蓹 bel蓹 Ken Thompson, O Turing m眉kafat谋 qazan谋r.
V蓹 Turing m眉kafat谋, m蓹n h蓹mi艧蓹 e艧itdim bu 艧蓹kild蓹 istinad, bu var
Komp眉ter elminin Nobel m眉kafat谋.
>> Bel蓹 ki, Turing m眉kafat谋, o var onun q蓹bul 莽谋x谋艧.
V蓹 o, bu 莽ox m蓹艧hur dan谋艧ma verir indi g眉v蓹n蓹r蓹k Reflections 莽a臒谋r谋b
Biz ba臒l谋 olan Trust, kurs veb haqq谋nda.
V蓹 bu dan谋艧mada, o, b眉t眉n do臒ru deyir M蓹n UNIX yazd谋 v蓹 indi b眉t眉n
Siz insanlar UNIX istifad蓹 olunur.
陌ndi Linux bu g眉n xat谋rlay谋ram UNIX birba艧a n蓹slind蓹n.
OS X birba艧a UNIX istifad蓹 edir.
Windows q蓹d蓹r deyil, amma bir 莽ox fikir UNIX g枚t眉r眉lm眉艧d眉r.
>> Bel蓹 ki, o, m蓹rh蓹l蓹sin蓹 q蓹d蓹r gedir v蓹 deyir b眉t眉n sa臒, m蓹n UNIX yazd谋.
V蓹 yaln谋z bel蓹 u艧aqlar bilirsiniz, m蓹n deyil蓹m h蓹r daxil ed蓹
Sizin komp眉ter biri.
X, m蓹n bu x眉susi bir qoymaq ild蓹n b蓹rab蓹rdir, Ken Thomson z蓹hmli deyil b蓹rab蓹rdir
sonra giri艧 眉莽眉n icaz蓹 al谋ram.
Bel蓹 ki, insanlar, yax艧谋, kimi qar艧谋lad谋q bunu?
Biz giri艧 proqram谋 baxd谋 v蓹 he莽 bir 艧ey yoxdur.
O, m蓹n compiler redakt蓹 kimi giri艧 proqram daxil
giri艧 proqram谋 var ki, ki, x Ken Tekin b蓹rab蓹rdir b蓹rab蓹rdir
z蓹hmli deyil.
>> V蓹 onlar da, do臒ru deyil, dem蓹k.
Biz compiler baxaraq, v蓹 etdiyiniz compiler h蓹r hans谋 x蓹tl蓹ri yoxdur
kimi kodu.
O OK, kimi, ancaq n蓹 compiler il蓹 t蓹rtib?
V蓹, yax艧谋, kimi, onlar hesab edir蓹m ki, v蓹 o M蓹n siz蓹 compiler ver蓹n biriy蓹m
Siz compiler t蓹rtib 眉莽眉n istifad蓹, bel蓹 ki, etdiyiniz Siz, bir compiler t蓹rtib olunur ki,
枚z眉 z蓹r蓹rli v蓹 olacaq giri艧 proqram q谋rmaq.
Bel蓹 ki, 蓹sas蓹n, o n枚qt蓹d蓹 var Siz m蓹nb蓹 baxmaq bil蓹r he莽 bir yol
Giri艧 proqram谋n谋n kodu yanl谋艧 n蓹 g枚rm蓹k.
Siz h蓹tta baxmaq bilm蓹di Bu compiler m蓹nb蓹 kodu
yanl谋艧 n蓹 g枚rm蓹k.
>> Siz ma艧谋n baxmaq laz谋md谋r kodu, faktiki ikili
Bu, g枚zl蓹m蓹k, g枚rm蓹k 眉莽眉n t蓹rtib compiler kodu x蓹tl蓹ri burada olmamal谋d谋r.
Amma Ken Thompson bir add谋m atd谋 daha v蓹 yax艧谋, var, dedi
Bu x眉susi proqramlar 蓹slind蓹 Siz proqramlar谋 ikili oxumaq k枚m蓹k,
v蓹 bel蓹 kims蓹 ki, proqram istifad蓹 蓹g蓹r ikili oxumaq, onlar bu g枚r蓹c蓹k
kodu x蓹tl蓹ri.
O, b眉t眉n, dem蓹k h蓹min proqramlar谋n redakt蓹 sa臒, siz at ar谋yorsan谋z
compiler, bu g枚st蓹rm蓹k deyil ikili set.
>> Bel蓹likl蓹 siz almaq laz谋md谋r ki, bir add谋m daha v蓹 蓹sas蓹n ki, ola bil蓹r
dolayl谋 q蓹bul bird蓹n 莽ox s蓹viyy蓹si, v蓹 bir anda, he莽 bir h蓹qiq蓹t蓹n var
yoxlan谋lmas谋 olacaq.
Bel蓹 ki, hekay蓹 m蓹n蓹vi siz ist蓹yirik ki, yaz谋l谋 etm蓹k niyy蓹tind蓹 deyil
Bu sinif cingilti.
Siz d谋rmanma istifad蓹 etm蓹k olacaq Bu sinif bir 莽ox cingilti.
Bildiyiniz b眉t眉n, cingilti bir z蓹r蓹rli h蓹r sabote proqram谋
bir proqram 茝g蓹r t蓹rtib etdik.
V蓹 莽ox u臒ursuz sizi t蓹rk 脟蓹r艧蓹nb蓹 g眉n眉 g枚r蓹c蓹ksiniz, qeyd.
>> [Alq谋艧]
>> HOPARL脰R 2: N枚vb蓹ti CS50 edir.
>> HOPARL脰R 3: Siz dem蓹k c蓹sar蓹t etm蓹yin.
Siz bunu ed蓹 bil蓹rsiniz.
Siz 蓹vv蓹l bu etdik, siz bunu ed蓹 bil蓹rsiniz bu g眉n, sabah bunu ed蓹 bil蓹rsiniz.
Siz ildir bunu etdik.
Just orada getm蓹k v蓹 bunu.
Siz bunu ed蓹 bil蓹rsiniz.
>> [MUSIC PLAYING]