>> HIZLARIA: 1 Kaixo guztioi.
Hasteko goaz.
Jendeak oraindik uste dut iragazteko izan.
Baina denbora interesa ere, ahal dugu, beraz, Lortuko duzu guys hemendik denbora,
hasteko goaz.
Beraz CS50 Quiz 0 berrikuspena ongi etorria.
Ez dute konturatu duzuenontzat For hala ere, asteazkenean galdera bat duzu.
Woo-Hoo.
>> Ez baduzu hasi bada oraindik ikasten edo ez dute konturatu hau existitzen dela oraindik,
Iraganean ariketak eta informazio guztia Galdetegi cs50.net/quizzes daude.
Badira gauzak nahiko onak izan ez on, azkena 10etik iragan galdetegiak
urte baita informazioa galdetegi eta gai honi buruz
hori estali egingo da.
Beraz, dezagun Hasteko.
>> Beraz duzu guys gogoratu agian, lehena class David eguna lanparak horiek izan ditu.
Beraz, funtsean, dena doa pean ordenagailu baten kanpaia da on
binary egin.
Binary esan zer soinuak bezala, 0 eta 1-en.
Bi balio ditu duten irudikatzen daiteke.
>> Beraz, besterik atalean lehen egunean bezala David argi bat piztuta
bonbilla on irudikatzeko, edo 1, gure ordenagailuan ulertzen 0-ren gisa bitarra eta
1-en, on edo off.
Binary Oinarriak.
Leku bakoitzak irudikatzen da bi basean.
Beraz gehitzen duzunean 2 0 to izateko 1 2 way up guztiei.
>> Zein da zure bitarra da kalkulatzeko hamartar, jarraitu besterik ez duzu ekuazio hau
mota gauza.
Daukazula 1 bazara lekuetan edozeinetan, , biderkatu by dena delakoa
oinarritzeko da, gehitu zuen, eta, digituak hamartarra lortuko duzu.
Beraz, hau da, nola zenbatu dituzu bitarretan 5.
Just zer egiten genuen bezala azken diapositiba, hau da, nola egiten duzun bezala
ordezkatzen 1 5 bidez.
>> Era berean, besterik ez gustatzen gehitu dezakezu eta hamartarrean kendu edo 10 oinarritzeko, edo
benetan inolako oinarri an ahal gehitu eta bitar kenketa.
Zehazki zer espero duzun duzunean gehitu bi sortu, orduan eta handiagoa berdin bada
1 baino, 1 a, egin da 0 bat eramanez gero, eta horrela egin gain, besterik
erregularra bezala eta espero duzun hamartar edo beste edozein oinarri.
Cool.
>> Beraz, esan bezala, dena aurretik duten doa gure ordenagailuaren kanpaia azpian
0 eta 1-en, edo bitar egin.
Beraz, nola ez adierazi nahi dugu, adibidez, letrak edo zenbakiak edo karaktereak?
Eta horri erantzuna ASCII da.
>> ASCII karaktere arteko mapping bat da dugu normalean zela ikusten
A, B-ren bezalako ingelera, C-ren, azpimarra, marrak, eta
horrelako ezer.
Eta mapak egiten duten ASCII balioa bat.
ASCII balioa An zenbaki bat besterik ez da, zure ordenagailuan arabera uler daiteke.
Eta besterik ez bezalakoa Horrez egin dezakezu eta zenbakiekin kenketak, egin dezakezu
ASCII balioak dituzten horiek.
>> Adibide honetan, beraz, zer hau inprimatu egingo?
Bai, beraz, besterik gabe, B espazioa espazio C espazio bat D. Nora joan nire sagua?
Iragarki int bat defini dezakezu 65 at.
Eta noiz erabiltzen duten inprimatu duzu ehuneko C, gisa interpretatu egingo da
pertsonaia eta A. inprimatu egingo
>> Era berean, adierazi dezakezu char bat bezala.
Eta noiz inprimatu duzu ehuneko erabiliz C, interpretatu egingo duten bezala
ehuneko D. Eta besterik ez bezalako bat gehitu dezakezu zenbakia, gehitu ahal izango pertsonaiak zara
ASCII balioak, kasu honetan.
>> Beraz, denontzat erakuslea apur bat.
5, kate gisa, ez du benetan berdinak 5.
Beraz, nola liteke bihurtu dugu katea 5 osokoa 5?
Ideia bat?
Bai.
>> Beraz, 5 dugun kate bat balitz bezala, 0 kendu ahal izango dugu.
Eta hori eman egingo 5.
Eta, era berean, 5 dugun bezala, bada osokoa, gehitu katea 0.
Eta katea 5 ematen digu.
Cool.
>> Orain, gogoratzen back bat non hitzaldia Hitz egin algoritmoak gara.
Beraz, nola ez, egia esan, ordenagailu bat nahi dugu gauza interesgarriak egin?
Badakizu besterik gehituz eta kenduz Zenbaki eta inprimatzeko gauzak ez dela
zirraragarria.
Normalean, gure ordenagailua nahi dugun algoritmo-mota batzuk egiteko.
Zerbait apur bat konplexuagoa besterik aritmetiko sinplea baino.
>> Algoritmo bat, urrats multzo urrats bat da nola egiteko argibideak
task-- jakin bat
besterik ez gustatzen errezeta bat.
Baliteke lehen eguna gogoratzen duzu class non David zuen gela bat zenbatu gurekin
pertsonen eta zenbat pertsona aretoan ziren.
Erabil liteke kontatuta banan-banan.
1, 2, 3, 4.
Kasu horretan, denbora lineala algoritmoa.
>> Baina David algoritmo bat sartu Gelan pertsona zenbatu dituzu
non denek nabarmentzen sortu, zure esan duzu beste pertsona bati zenbakia, gehitzen duten
zenbakia sortu, eta pertsona bat eseri behera.
Eta hori errepikatzeko.
Hori algoritmo-mota bat da.
Bat nola eraginkorra aztertu ahal izango dugu Algoritmo on nik denbora exekutatu oinarritzen da.
Baina hitz egingo dugu pixka bat hori geroago buruz.
>> Beraz, algoritmo guztiak, gainera, ahal egon pseudocode idatzita.
Pseudocode besterik ez da atsegin ingeleseko irudikatzeko erabilitako sintaxia
programazio hizkuntza bat.
Adibidez, erabiltzaile batek eskatu nahi izanez gero nire zenbaki gogokoena asmatzen, dugu
pseudocode hala nola izan dezake.
>> Eskuratu erabiltzaile bat asmatzen.
Etxebizitza zuzena bada, esaiozu zuzena ari dira, beste kontatu
Oraindik ez dira zuzenak.
Eta pseudocode erraz egiteko modu bat da Ideia bat edo algoritmo bat ordezkari.
Beraz, orain dugu agian benetan idatzi nahi honek hizkuntzan ordenagailua duten
agian ulertzeko.
Beraz, gure pseudocode idatzi izan dugu eta interpretatzen duen iturburu-kodea sartu.
>> Orain arte, iturri kodea behar bazaio sintaxia jakin bat
programazio hizkuntza bat.
Eta orain arte, CS50, dugu dira, batez ere, c erabiliz.
Beraz, hau iturri c kodea izan daiteke.
Geroago ikastaroan, gaueko zatoz beste programazio harremanetan jartzen
PHP bezalako hizkuntza.
Edo are beste klaseak hartzen bada, zuk Java, Python, edo are OCML egin liteke.
Baina gure c programa hizkuntzan, hau da, iturburu-kodea, nola idatzi dugu agian
pseudocode algoritmoa Besterik lehenago deskribatu dut.
>> Beraz, nola zure ordenagailua benetan Ulertzen?
, Aurretik esan nuen bezala bakarrik benetan zero eta ulertzen du.
Beraz, nola ez iturritik da Zerbait kodea duen ahal izan
ulertu?
Beno, zerbait egin behar dugu Konpiladore izeneko.
>> Gogoratzen al duzu atzera bada gehienetan zure psets, programa-mota batzuk izan dituzu
dot c fitxategi batean idatzita.
Eta gero make hau idatzi behar duzu.
Beraz, zer da egin egiten?
>> Make idatz dezakezu konpilatu zure programa delako someone--
duenak idatzi zure p set; ziurrenik David--
marka fitxategi bat sortu.
Eta hori kontatzen egiteko exekutatu jakin zure konpiladorea, Clang deitu, borondate horren
ondoren, konpilatu zure iturburu-kodea oposiziorako kodea; zeroen eta bai da
Zure ordenagailuan ulertzen duela.
Baina, pixka bat geroago, utziko dugu gehiago Konpilatzaileak buruz sakontasunez.
>> Beraz, gogora ekarri pset 0, where-- bai, galdera bat duzu?
>> IKUSLEEN: [INAUDIBLE]?
>> HIZLARIA: 1 Bai.
Nik uste dut benetan konektatuta egon behar du.
Bai.
>> IKUSLEEN: Da [INAUDIBLE] bezala?
>> HIZLARIA: 1 Ez da.
The cs50.net/quizzes daude.
>> IKUSLEEN: barra galdetegiak, barra 2013, barra 0, eta egin klik bitartez
galdetegiak 2013 eta quiz 0, ikuskatzea atalean diapositibak.
>> HIZLARIA: 1 Yeah, beraz, you guys nahi izanez zabaltzen da eta begiratu behar diozu
egin ordenagailuan, isuna ere.
Esan berriro.
>> IKUSLEEN: [INAUDIBLE].
>> HIZLARIA 1: Bai, [INAUDIBLE] gezurrezko aldakorra da.
Oh, bai?
>> IKUSLEEN: [INAUDIBLE]?
>> HIZLARIA: 1 Ez, grebak Ez daude azterketa.
Barkatu, bere galdera izan zen, izan zen azterketa grebak.
Eta ez da.
Beraz pset 0, you guys guztiak izan beharko Zerbait inplementatu scratch erabiliz.
Eta oinarrizko programazio batzuetan ikasi dugu Eraikitzeko bloke scratch erabiliz.
>> Beraz, dezagun batzuk begirada bat adreilu
osatzen duten programa bat.
Lehen adierazpen boolear da.
Adierazpen boolearrak dira eta 0 edo ezer ez duela
Bi balio izan ditzake.
Kasu honetan, egia edo gezurra, edo itzaltzeko, eta bai edo ez.
Soil bat, oso sinplea adibide bat, Boolean bat erabiltzen duen programa
espresioa sortu hemen.
>> Beraz, adierazpen boolearrak egiteko ordena izan erabilgarria, operadore boolearrak dugu.
Hauek dira erabil daitezkeen operadoreak dira zenbait balio alderatzeko.
Beraz, eta nahiz eta ez berdina, gutxiago baino handiagoa edo berdina, edo handiagoa
berdina, eta baino gutxiago edo baino handiagoa.
Baina operadore horiek ez dira oso erabilgarriak dugu horiek konbinatu ahal bada behintzat sartu
baldintza.
>> Beraz duzu guys agian hutsetik gogoratu eta p-tik ezartzen dugun
baldintza izan.
Honako hauek dira, funtsean, Sardexka bezala zure programa logika duen
ala ez arabera exekutatzen baldintza bat bete.
Beraz, baldintza hori izan dugu askotan erabili ikastaro honetan da
, bada, bestela, gero eta kondizio beste.
>> Here nola adibide bat hori erabili dezakezu.
Norbaitek arteko aldea ezagutzen besterik adierazpenak guztiak galtzen erabiliz
bertso bada, bestela behera bidean, bada, eta, bestela, konbinatu?
Bai?
>> IKUSLEEN: [INAUDIBLE].
>> HIZLARIA: 1 Zehazki.
Beraz banu bada hau behera modu guztiak modu, baldintza hori itzultzen bada ere
egia da, oraindik ere izango da jarraituko Hurrengo bi probatzen.
Berriz, bat, bestela-bada, beste batekin adierazpena, bat itzultzen du egia bada,
beste batzuk ez dira probatu.
Horri buruzko edozein galdera?
Cool.
>> Beraz, erabiltzen duzun beste bat bada-beste bat adierazpena ezagutu behar dela bakarrik
Kasu horietako bat izan.
Beraz, badakigu x 0 baino txikiagoa bada, ez da betiko ez doa
0 baino handiagoa.
>> Ondoren, eraikina beste bloke ikasi dugu begiztak dira.
Hiru loops mota ditugu.
Loops, loops bitartean, eta loops bitartean.
Eta, oro har, eseri arte zerbait idatzi, erabaki behar duzu
Erabili nahi duzun hiruretan bertan.
Beraz, nola egin erabakiko dugu zein den?
>> Oro har, erabiltzen ditugu loop baldin badakigu zenbat aldiz batetik bestera joateko nahi dugu
Zerbait bidez edo zenbat aldiz zeregin bat egiteko nahi dugu.
Erabili loops bitartean dugu batzuk behar badugu Baldintza egia exekutatzen mantentzeko izan.
Eta egiten duguna oso antzekoak berriz erabili bitartean, baina exekutatu gure kodea nahi dugun
behintzat garai batean.
>> Beraz, egiten ari den bitartean, edozein dela do dago borondate beti denbora bat behintzat exekutatu.
Berriz, berriz ere, bertan, Agian ez da ibiliko bada
baldintza ez da bete.
Horrekin edozein galdera?
>> Beraz baten egitura begizta.
Zaudete guztiak ikusi.
Abiarazi duzu.
Egoera-mota batzuk behar duzu.
Beraz, adibidez, agian abiarazi dugu berdin i 0 bezala.
i 10 baino gutxiago.
Eta i ++.
Bat oso erraza egin ditudan.
>> Berriz, begizta bat, era berean, behar duzu urratsak mota batzuk izatea,
egoera-mota batzuk, eta update-mota batzuk.
Beraz, gure Ere egin dezakegun begizta hau, berriz, begizta bat bezala erabiliz.
Eta, era berean do loop bitartean, Baliteke initialization batzuk ditugu,
zerbait exekutatu, eguneratzeko, eta eta egiaztatu baldintza du.
>> Beraz, orain funtzioak.
Guztia jarri dugu elkarrekin.
Baliteke batzuk idatzi nahi dugu funtzio-mota.
Funtzio Ohiko duzula agian ikusi dute dagoeneko nagusia.
Main funtzio bat da.
Baten bueltan mota, int ditu.
Funtzioaren izena, nagusi ditu.
Eta argumentuak, argc eta argv ditu.
Beraz nagusia funtzio bat besterik ez da.
>> Beste funtzio duzu izan bide dira, printf printf funtzioa da
GetInt, toupper.
Baina horiek gertatuko izan dela Gurekin inplementatu arabera
liburutegi-mota batzuk.
You guys gogoratu bada barne CS50.h liburutegi hori edo
I standard / O liburutegia.
Bai, zalantzan?
>> IKUSLEEN: besterik c berezko nagusia da?
Du mota besterik ez [INAUDIBLE]?
>> HIZLARIA: 1 Galdera da c berezkoa da nagusia bada.
Eta bai, funtzio guztiak funtzio nagusia dute.
Mota It ordenagailua beharrezko non hasi jakitea
Kodea martxan.
>> IKUSLEEN: Beraz, ez zenuke [INAUDIBLE]?
>> HIZLARIA: 1 º
Beste edozein galdera?
Cool.
Beraz, besterik ez bezalako funtzio bat erabil dezakezu hori zuk idatzitako dezakezu, gainera
Zeure funtzioa idatzi.
Hau funtzio bat da, norbaitek agian bolumena kalkulatzeko idatzi dute
q bat, adibidez.
Ez dago itzulera mota bat da hemen, kasu honetan, int, gure funtzioa izen q eta gure
parametroen zerrenda.
>> Eta kontuan izan datu hauek idatzi behar duzula parametroa nahi duzun mota
erabili edo, bestela, funtzio honek ez du zer nolako jakin
Parametro onartu behar izango dut.
Beraz, kasu honetan, nahi dugun zenbaki oso bat gure sarrera gisa.
Beraz, zergatik funtzioak erabili nahi dugu?
>> Lehenik eta behin, antolakuntza handia.
Apurtu sortu zure kodea sartu laguntzen dute gehiago zatitan antolatu eta egiteko
errazago irakurtzen da.
Sinplifikazioa.
Horrek diseinu ona.
Noiz Kode zati bat irakurtzen ari zaren eta funtzio nagusia da, benetan,
benetan luze, gogorragoa izango da agian zer ari den gertatzen buruz arrazoirik.
Beraz, hautsi baduzu funtzio sartu, irakurtzeko errazagoa izango da agian.
Eta berrerabiltzea-gaitasuna.
Zatia kode bat baduzu, hori izanik deitu edo hainbat aldiz exekutatu,
ordez kodea duten berridazketa 10 aldiz zure eginkizun nagusia, baliteke
berrerabiltzea nahi.
Eta gero, hori erabili behar duen bakoitzean Kode zati, deitu funtzioa.
>> Beraz, gaur scratch itzuli gogoratzen badugu, kontzeptu batzuk buruz ere hitz egin dugu,
horietako bat hari da.
Thread anitzen kontzeptua da kodea sekuentziak
aldi berean exekutatzea.
Beraz, uste back egun bat non David izan behar you guys zenbatu kopuruan off
gela dute.
>> Funtsean, zer zen joan da on you guys ziren guztiak
hariak bereizi martxan.
Eta hari horiek ziren elkarrekin datozen Galdera-mota batzuk lortzeko.
Era berean, Scratch, denean behar duzu anitz sprites, baliteke
katu bat eta txakur bat.
Eta, aldi berean izango lukete beren scripts martxan.
Hori hariztaketa adibide bat da.
>> Eta beste kontzeptu hori izan zen scratch sartutako gertaerei zen.
Eta gertakari zati bat baino gehiago daude Zure kodea elkarrekin komunikatzeko.
Scratch, hau izan da, erabiltzen dituzun difusio kontrola eta When I
Blokeak jasotzen.
>> Eta, gainera, Arazoa Ezarri 4, ikusi genuen Ekitaldi pixka bat, baita.
Zaudete izan bide Gevent liburutegian.
Eta ez dago funtzio bat izan zen waitForClick bertan zain zinen
Erabiltzaileak klik egin.
Eta zure click, kasu honetan, izango litzateke gertaera eta itxaron click for your da
gertaera kudeatzailea.
>> Eta, gainera, zure psets exekutatzen zehar eta zure psets lanean, duzu
agian kontaktua sartuko Komando horietako batzuk.
Hau da, zer idatzitako sartu dituzu zure terminal-leiho edo dena leihoa
erakusten dituen zure g to edit an, funtsean, nabigatu zure ordenagailuan.
>> Beraz, adibidez, LS zerrendatzen dira direktorio baten edukia.
Egin direktorioa karpeta berri bat sortzen du.
CD, aldaketa direktorioa.
RM, kendu, fitxategi bat ezabatzen edo direktorioa batzuk.
Eta gero direktorioa kendu Direktorio bat kentzen.
>> IKUSLEEN: [INAUDIBLE]?
>> HIZLARIA: 1 Bai, ziur.
Barkatu, galdera zen baduzu hau jarriz iradokitzen litzateke
Cheat fitxa.
Laguntza izan du.
Gela badaukazu, jarri ahal izango duzu.
Gainera, oro har nahikoa ona gogoratzeko noiz erabili duzulako
duzu agian nahi besterik horri buruz ikasi behar.
Hori egingo zure bizitza errazagoa.
Ba zure galderari erantzun dut?
>> Beraz, orain, pixka bat hitz egin dugu liburutegiak buruz laburki.
Baina bi horien artean dagoela izan gara beraz, jakina, urrun daude erabiliz
I / O eta cs50 estandarra.
Zer nolako gauzak daude barne I / O liburutegi estandarrak ere?
>> Bai, orain arte printf erabili dugu.
CS50, erabili dugu GetInt eta GetString.
Eta datu-mota katea ere gertatzen CS50 liburutegi horretako deklaratu.
Pixka bat gehiago hitz egingo dugu sakonki buruz nola liburutegietan lan eta nola
Zure kodea gainerako elkarreragin.
Baina horiek dira, bi horien artean dugun dute ukitzea hain urrun batera
ikastaroa.
>> Motak.
Hauek onak gogoratzeko zenbat dira mota bakoitza edo nola irudikatzen
byte asko mota bakoitzaren requires--
int 4 bytes; char, 1 byte.
Karroza 4 bytes da.
Zer da bikoitzean?
>> IKUSLEEN: [INAUDIBLE].
>> HIZLARIA: 1 Yeah, beraz, mugikor bat baina bikoiztu tamaina.
Zer luze bati buruz?
>> IKUSLEEN: [INAUDIBLE].
>> HIZLARIA: 1 OK.
Zer da luzean?
>> IKUSLEEN: [INAUDIBLE].
>> HIZLARIA: 1 Yeah, bikoiztu int.
Bai.
>> IKUSLEEN: [INAUDIBLE].
>> HIZLARIA: 1 Long [INAUDIBLE].
Eta gero, luze bat bikoitza da.
>> IKUSLEEN: Ez, ez.
Luze int bat da.
Araberakoa arkitektura It aurretik [INAUDIBLE]
eta int tamaina bera izan.
[INAUDIBLE].
>> HIZLARIA: 1 Beraz, luzea eta Int bat bera dira.
Eta gero, luze int bikoitza da.
Cool.
Eta gero, zer azken mota da?
>> IKUSLEEN: erakuslea.
>> HIZLARIA: 1 Yeah, beraz, ikasi dugu erakusleak buruz pixka bat.
Eta erakuslea zer den kontuan hartu gabe egiten zaie apuntatzen char izar bat izan daiteke
edo bat int star--
beti da, 4 byte erakuslea da.
Horri buruzko galderak?
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> HIZLARIA: 1 Beraz, luzea eta int bat dira CS50 tresna honetan bera.
>> IKUSLEEN: Aparatua guztiz trukagarriak.
>> HIZLARIA: 1 Yeah.
Orduan luze bat int bat bikoitza da.
>> IKUSLEEN: 32 bit da?
>> HIZLARIA: 1 32 bit, bai.
>> IKUSLEEN: [INAUDIBLE]?
>> HIZLARIA 1: Bai, ala ez bada esplizituki esan, zuk
32 bit bat suposatuko luke.
>> IKUSLEEN: zerbait esatea litzateke bat suposatuz bezala
aparatuaren antzeko arkitektura.
64 bit, gauza bakarra dela aldaketaren Longs eta erakusleak dira.
Biek [INAUDIBLE].
>> HIZLARIA: 1 Bai?
>> IKUSLEEN: Galdera.
Beraz, praktikan galdetegiak baten gainean, unsigned int buruz galdetzen du.
Beraz, nola zehaztu behar lukeen Int bat [INAUDIBLE] from?
>> HIZLARIA: 1 unsigned An 4 byte da ere.
Baina zer gertatzen da sinatu bati buruz ezberdinak int eta unsigned int bat?
>> IKUSLEEN: [INAUDIBLE].
>> HIZLARIA: 1 Eskuin.
One balio negatiboak adierazten daiteke.
Baina nola ez, egin du?
>> IKUSLEEN: [INAUDIBLE].
>> HIZLARIA 1: Bai, aurrezten da 1 bit zeinua adierazteko.
Sinatu pixka bat duela zeinua adierazten du.
Eta unsigned besterik positibo guztia.
>> IKUSLEEN: OK.
Beraz, esan duzun hori bikoitza da karroza baten tamaina bi aldiz?
>> HIZLARIA: 1 bikoitza da bi aldiz bai, karroza baten tamaina.
>> IKUSLEEN: nola erakuslea du bat luze luzea [INAUDIBLE]?
>> HIZLARIA: 1 Beraz, galdera da, nola ez, long-- luze baten erakuslea
nola da hori byte bakarrik lau denean luze luze bat bere 8 byte.
Beraz, gogoratu zer erakuslea da, funtsean, oso base balioan.
>> IKUSLEEN: [INAUDIBLE].
>> HIZLARIA: 1 Yeah, beraz, erakuslea besterik memoriaren kokapena da.
Beraz, ez du axola zenbat espazioa erakuslea dela seinalatuz.
4 byte bakarrik behar da segimendua egiteko memoriaren kokaleku hori.
Beste edozein galdera?
Cool.
>> Beraz, azken gauza daukadan irteera estandarra da.
Horiek maiz erabili behar zenuke nahikoa dela gogoratu dezakezu.
Baina hau da, erabiltzen ditugu, printf, adibidez.
Eta leku-markak hauek izan dugun ziren formatu kodeak izenekoa.
>> Beraz ehuneko c char, ehuneko i int for, eta, gainera, ehuneko d erabili ahal izango dugu.
Gauza bera gertatzen da.
Baina, oro har, urtean CS50 dugu saiatu berea i erabiltzeko.
Ehuneko karroza f.
Ehuneko luze luze ld eta ehuneko s katea da.
>> Era berean, Nik gutxi batzuk erabiliz ditugun Ihes-sekuentzia horiek.
Adibidez, backslash n linea berrirako.
Hau besterik ez denean formateatzen ari zaren zure inprimatu f kodea.
Bai?
>> IKUSLEEN: Zer da ehuneko d for?
>> HIZLARIA: 1 Beraz, galdera da zer ehuneko d da?
Ehuneko d ints da.
Ehuneko d eta ehuneko i berdinak dira.
>> IKUSLEEN: Zer da arteko aldea backslash n eta backslash r?
>> HIZLARIA: 1 Beraz, galdera da, zer da arteko erreakzio n eta aldea
erreakzio r?
Uste dut backslash r is--
>> IKUSLEEN: backslash r besterik ez dakar lerroaren hasierara itzultzen du
benetan linea berri bat joan gabe.
Beraz backslash r inprimatu eta baduzu atzera jo lerroaren hasierara
gero gauza gehiago inprimatzen baduzu, gainidatzi duzu stuff hori dagoeneko
[INAUDIBLE].
Kontuan izanik, n benetan berrian doa line eta [INAUDIBLE] doa.
>> HIZLARIA: 1 Beno, beste edozein galdera?
Guztiak eskubidea.
Eskuz off noa Dan nor jarraitzeko.
>> [Txaloak]
>> DAN: righty guztiak.
Beraz, beste bat zabal buruz egingo dut hitz egingo class direla ideiak sorta
gutxi gorabehera, astean bi ordezkari eta astean hiru hasieratik hasita off
casting, besterik modu bat da gisa mota jakin bateko balio bat tratatzeko
beste mota bateko balio bat.
Beraz, hau egin ahal izango dugu karakteretan batera ints, ints karroza, eta
Longs luze bikoiztu.
>> Gauza horiek guztiak modu gisa erabil daiteke zenbaki batzuk tratatzeko
ken char beste batzuek bezala zenbakizko balioa.
Beraz, gai batzuk daude, hau da, dituzten Jakina, horrek datorrenean bota duzu
ints karroza bezalako gauzak.
Beraz, hau da, pixka bat arraroa.
Duten 1,31 da mugikor bat daukagu.
Biderkatu dugu 10,000 arabera.
Eta, ondoren, inprimatu dugu int gisa.
Zer irteera honek?
10.000 aldiz 1,31.
Beraz, 13.000, etxebizitza dela?
>> IKUSLEEN: Uste dut, 10.000.
>> DAN: Beraz, biderkatu egiten dit 10.000 by galdaketa dut aurretik.
>> IKUSLEEN: Oh.
Ez litzateke ez bat 9 izan eta 0 zenbaki batzuk?
>> DAN: agian digituak bitxi erakusten ditu.
Beraz, oraintxe, 1,3 aldiz 10.000 da.
Beraz, 13.000 da.
Eta weird-- extra honetan
>> Ikusleak: 13.100.
>> DAN: 13.100.
Eskerrik asko, Rob.
Eta weirdness-- extra honetan
hau 9,9--
besterik ez da casting hau delako zen azkenean behera non biribilketak
Ez da izan behar.
Bai.
>> IKUSLEEN: casting gertatzen beste ezer egin ondoren?
>> DAN: Beraz delako daukat hau inprimatu, berau biderketa hau egiten du aurretik
casting hau egiten.
>> IKUSLEEN: [INAUDIBLE].
>> DAN: Nik uste dut lehen bota litzateke, bai, horietatik 10.000 izango litzateke.
Beste ezer?
Cool.
Beraz, hau 13.099 da.
Zergatik gertatzen da hori?
Imprecision.
>> Pausoak ez da perfektua.
Batera zenbakiak bakarrik dute ordezkatzen ahal zenbait datu adierazgarri kopurua.
8 sig pikuak inprimatu Beraz badugu an karroza honetan, antzeko bat lortuko dugu
bila zenbaki itsusia.
Eta hori da 1,31 ezin zehatz-mehatz ez delako egon simple ordezkatzen duen
bi eskumenak makinan.
Beraz, eta ondorioz hurbilena hartu asmatzen, eta ondorioz sortu
txiki txikia izanik.
Zentzurik?
Ados.
>> Orain, piztuta ezberdinak modu bat dira conditional baieztapenak non guztia egiten
zaintzen dugu aldagai bakar bat da buruz.
Beraz, adibide zehatz honetan, ez gara erabiltzaileari zenbaki oso bat lortzeko.
Eta gero ari gara begira osokoa dela zer den.
Ustezko, zenbakia da bat eta lau artean.
Horixe ari gara galdetzen.
>> Beraz, etengailu bat egin nahi duzu aldagai-izena.
Ondoren, posible den kasuetan konfiguratzerakoan baloratzen izan zitekeen.
Beraz, kasu, esaten txikia da.
Eta gero ateratzeko apurtu duzu switch baldintza hain
Zuk ez mantendu egingo da.
>> Hurrengo kasu In
beraz, bi kasu eta kasu three--
Kasu bi bada tanta besterik ez zuen aldeko kodea lehen lerroan bezala ikusten du
Hiru maiuskulak eta atseden bat ikusten arte.
Beraz, arrazoia kasu bat eskuratu ahal izango duzu bakarrik inprimatu txikia da nuelako
break hau dute hemen.
Badut, esan, ikusi egiten zaie break-- honetan breakaway-- hau bota dut bada
txikia inprimatu litzateke, eta orduan ez litzateke inprimatu erdian, eta, ondoren, break litzateke.
>> Beraz, jauziak zati garrantzitsu bat dira of aldatzeko baldintzak eta
hor egon behar dute.
Ez diren esplizituki adierazi Edozein kasutan berez onartzen dituzte
aldatzeko eta kasu bota behar dira.
>> IKUSLEEN: Beraz, 1, 2, 3, eta 4 izango litzateke n?
>> DAN: noiz n ahal izango Baloreak.
Bai.
Bai?
>> IKUSLEEN: Beraz, egin behar duzu [INAUDIBLE]?
>> DAN: txikia inprimatu nahi duzun, eta, ondoren, Erdialdetik inprimatu litzateke, eta
ondoren, break litzateke.
>> IKUSLEEN: Zergatik inprimatu Erdialdetik bada [INAUDIBLE]?
>> DAN: Beraz, dena kasu baten azpian jauzi baten azpian erori baino lehen.
Beraz, kasu inprimatu bat azpian kasua da bat bezala honako hau inprimatu da.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Beraz, kopuru hau besterik ez da jakin baten balioa duten aldagai hau
hartu ahal izango da, ezta?
Ez duela zentzurik?
Bai.
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Bai, kasu bi inprimatu litzateke erdi eta gero apurtu.
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: edozein uste dut?
Zer beste datu-mota ahal baino gehiago piztu duzu?
>> IKUSLEEN: piztu dezakezu Datu mota edozein baino gehiago.
Baina chars gehiagoko ezer bakarra esan nahi du eta ints eta horrelako gauzak, zeren
duzu erakuslea baino gehiago aldatu behar bada horrek ez du benetan zentzurik,
zamak hor, nahiz eta utzi bada-en hori egin duzu, puntu mugikorreko delako
doitasun ere, ez litzateke izango duzu benetan hala ere egin nahi.
Beraz, nahiko askoz, ints besterik eta karakteretan eta horrelako gauzak.
>> DAN: Bai, da noiz esplizitua duzu badakizu balioak, nire ustez, ezin izan
switch bat benetan erabilgarria da.
Good?
Ados.
>> Scope dagoela deklaratu sorta da aldakorra hedatzen.
Beraz zatia kode hau txikia daukat, akatsak beteta egongo litzateke.
Eta arrazoia da int hau deklaratu dut i honen esparrutik begizta barruan.
Eta, ondoren, erreferentzia ari naiz i begizta esparrua dela kanpo.
>> Beraz, funtsean, esparrua pentsatzen dezakezu Ezer duzula deklaratzen duten bezala
giltza kizkur multzo barruan bakarrik horiek kizkur giltza barruan badago.
Eta saiatu bada, eta aldagai hori erabili horiek kizkur giltza kanpo, duzu
konpiladoreak errore bat lortzeko.
Bai?
>> IKUSLEEN: Beraz, hau ez du funtzionatzen?
>> DAN: Hau ez badabil, bai.
Strings.
String char * bat.
Berdin ari dira.
Besterik karaktere erakusleak dira.
Eta duzula inolako kateak amaitu behar backslash zero, besterik ez dituzten
c hitzarmen bat.
>> NULL amaierako deritzo.
Eta NULL
capital N, kapitala U, kapitala L, kapitala L--
Ez da berdina NULL amaierako.
Horrek erakuslea da.
Hau pertsonaia bat da.
Oso ezberdin dira.
Gogoratu du.
Galdetegiaren izango da, seguruenik.
Ez dut galdetegiaren ikusi.
Bai?
>> IKUSLEEN: Beraz NULL da, adibidez, erakuslea?
>> DAN: Bai.
>> IKUSLEEN: Zer esan nahi du [INAUDIBLE]?
>> DAN: bada, esan, malloc deritzo duzunean ez dute lortu Nahikoa memoria
tamaina edozein dela ere galdetzen ari, malloc NULL itzultzeko.
Da, funtsean, betiere, funtzio bat da erakuslea itzuli ustezko, you
to NULL delako aurka egiaztatu behar NULL good-- polit bat da
, Sort da, zabor-balioa.
Zero bat da, orain arte bezala, erakusle gisa joan.
>> Bakoitzean funtzio bat deitu, duen erakuslea itzultzen.
Izango begiratu nahi ari zara ziur erakuslea ez da NULL
NULL oso ohikoa delako.
Zabor itzulera moduko bat da.
Beraz, zerbait egin ez bada, joan eskuinera, return NULL ordez.
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Bai, eta hori da hau.
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Zuzenketa da horixe.
NULL amaierako da.
Da minuskulaz N-U-L-L bada Ortografia zaren.
>> IKUSLEEN: Eta besterik gabe joan nintzen atzera eta probatu da.
Eta puntu mugikorreko bat jarri nahi baduzu, switch bat sartu balioa, Yell izango da
esaten, adierazpen espresioa eskatzen integer motakoa.
>> DAN: Bertan joan zaitezke.
Baina bai, zer berriro galdera izan zen?
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Beraz, kapital-N, kapital-U, kapitala L, kapitala L benetako c gauza bat da.
NULL erakuslea da, eta borondatea hala nola tratatu bakarra.
Ez du inoiz saiatu eta ortografia dira NULL karaktere ikusi eta edozein
hau ez den beste modu.
Bai?
>> IKUSLEEN: Beraz max char itzuli edo notak zerbait, litzateke
funtzio bera embody [INAUDIBLE] bezala?
>> IKUSLEEN: Beraz, ari zaren aipatuz char max itzuli getchar hasita, edo
edozein da?
>> IKUSLEEN: Bai.
>> IKUSLEEN: Bai, orokorrean, beraz, Gauza horiek guztiak epe
Sentinel balioak dira.
Beraz, int max itzuli GetInt bezala eta char max getchar hasita, hori
ustezko bezala, eskubidea izango, bada Gauza horiek dira gurekin itzuli,
zerbait gaizki joan da.
>> Erakusleak baterako, gerta besterik ez dugu behar Sentinel balio hori guztiontzat
ados gainean.
Eta hori itzultzeko duzun gauza da gauzak okertuko.
Beraz char max zer erabiltzen ari gara da zerbait adierazteko
NULL edo getchar bezala.
>> IKUSLEEN: Beraz, bada getchar probatzen ari zaren, ezin jarri besterik ez duzu NULL?
Diferentzia bat egingo luke?
>> DAN: ezin besterik ez duzu egiaztatu NULL.
Char max delako egiaztatu nahi duzuna bueltan funtzioaren balioa da
pertsonaia ez da erakuslea.
Bai?
>> IKUSLEEN: galdera hau galdetzen katea luzera da.
Ba al da hori NULL karaktere, besteak?
>> DAN: N º
Eta hori da benetan katea nola luzera doa bidez delako gelditzeko daki
Zure karaktere array arte NULL karaktere bat ikusten da.
Eta orduan bezala, guztien eskuinera, egin dut.
>> IKUSLEEN: [INAUDIBLE] bost?
>> DAN: Kaixo bost izango litzateke.
Yep.
Beraz, array jarraiak dira memoria bloke.
Berehalako sarbidea dute esanez array izendatu eta gero, kizkur ere
giltza, edozein dela indizea joan nahi duzun to, dira indexed zerotik bidez
ken 1 array luzera du.
>> Eta motaren arabera ari dira deklaratu Gauza duzula gordetzeko ari
array, array baten izena, eta, ondoren, edozein dela ere tamaina array horren da.
Beraz, hau char luzera sorta bat da Sei izan balio hauek ditu.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Bai.
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: zer ari den gertatzen badaukazu array sartu dagoeneko egin.
Beraz, horren ordez hau zehaztu ahal izan duzun bezala, adibidez, char, edozein dela izena,
array da, parentesi hutsak berdin kizkur giltza H koma E koma L koma L koma
O koma NULL karaktere eta kizkur giltza.
Hori izango litzateke, halaber, adierazpen bat bezala funtzionatzen.
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Ondoren izan behar duzu tamaina dagoeneko egin.
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Bai.
Righty guztiak.
Komando lerroko argumentuak modu bat dira Erabiltzaile bezala sarrera eskuratzerakoan
nagusiak argumentuak.
Bi argumentu hartzen nagusian.
Argumentu kopurua hori izanik Komando-lerroan eta bat gainditu batera
bektore katea edo kate array bat Argumentu guztien.
>> Beraz, I, esateko, funtzio bat deitzen bada, esate baterako, dot a 1 espazio, 2 espazio hiruk,
argc 4 izango litzateke.
Eta argv 0 dot bat izango litzateke.
Argv1 1 izango litzateke.
argv2 izango litzateke 2. argv3 izango litzateke 3, kasu jakin horretan.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: array azken elementua array luzera argc delako plus
argb bat, azken elementua NULL erakuslea da.
Argc gehi 1 da.
Beraz, kasu hori esan dut, bertan argv beharko litzateke, 0 puntu bat atera da.
argv 1 da 1. argv2 2 argv 3 3 da.
argv 4, hau da, inork handiagoa argc baino NULL izango litzateke.
>> Eta hori NULL erakuslea da.
Bai.
Eta hori da katea delako char izar bat erakuslea da.
Beraz, mota bera izan behar du.
Bai?
>> IKUSLEEN: Bi galdera.
Bat, beraz, zer da arteko aldea mota bat baino beste GetString hau eta
Erabiltzaile motorreanerabilitakoak?
Eta bi, da barruan gordetzen da Zure azken memoria?
Horrela, GetString litzateke izan [INAUDIBLE]?
>> DAN: Non gordetzen da?
Ez dakit non gordetzen da.
>> IKUSLEEN: Beraz, egia esan, badakizu nola edozein deitzen duzunean, argumentuak da funtziona
dira pila gordetzen?
Beraz argc eta argv argumentuak dira nagusira eta pila dira, edo benetan
besterik zer uste duzu gainetik pila hasieran.
Zein zen beste zati galdera?
>> IKUSLEEN: Beraz, zer da [INAUDIBLE]?
>> DAN: Bai, beste modu bat besterik ez da sarrera eskuratzerakoan erabiltzaileari.
Hau apur bat eraginkorragoak eta scripten handier da duzulako
besterik gabe gainditu ahal argumentuak zure nagusira funtzioa baizik eta itxaron behar izatea baino
erabiltzaileei ez baduzu erabiltzailerik.
>> IKUSLEEN: Eta bai, lortu kateak izango litzateke [INAUDIBLE].
Gauzak behar duzun gordetzeko litzateke.
>> DAN: Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Bai, argv 0 beti barne hartzen du dot funtzioa deialdiaren barra.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Bai, argumentuak bakoitzari dira NULL karaktere amaitu dutelako
kateak dira.
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Bai, argv argc NULL erakuslea da.
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Oh yeah.
Bai, barkatu.
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Beraz, galdera da, izan baduzu Komando-lerroan dot dot a barra out 1, 2,
litzateke komando lerro-kopurua argumentuak bi izan edo litzateke hiru izango da?
>> IKUSLEEN: ez du uste dut benetan axola.
Esan ohi dut, oh, ez duzu pasatzen edozein komando lerroko argumentuak denean,
jakina, funtzioa deitzen duzu.
Beraz dutena ahoz baztertzeko joera dut Komando-lerrotik funtzioa
Argumentu horri nahiz argv sartuta.
>> DAN: Baina zen test-- on bada
yeah-- eta ere zerbait esan baduzu argc berdin antzera 3,
Oraindik zutik segurua duzu.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: uste ordez bada hau deitzen dut argc eta katea argv parentesi artean
baina mota bera mantendu eta besterik ez deitu baten antzeko zerbait desberdin horiek
eta b, oraindik ere lan litzateke?
Eta, hala ere, lan litzateke, besterik ez litzateke duzu
ordez argc-- erabiliz a eta b erabili nahi duzuna.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Beraz, galdera da GetString da memoria gordetzeko zeure joan
GetString char dagoelako *.
Memorian gordetzen delako zeure deiak orain malloc benetako barruan
GetString ezartzeko.
Ados, mugitzea.
>> Segurtasuna.
Beraz, benetan segurua izan dadin, aintzat hartu behar ez dituzten bat eta bat edozein sarbidea ez baimendu duzu
Zure informazio, zein da zergatik guztiontzat eraikitzen beren makina,
beren sistema eragileak, guztiak beren Hutsetik programak, eta jakina,
ez beste edozein makinak konektatzeko Internet bidez.
Beraz, ordenagailuak insecure dira.
Benetan dira.
Beste pertsona batzuekin fidatu behar dugu.
>> Eta segurtasun ideia da zarela kopurua mugatu nahian
Konfiantza behar duzula.
Eta bide bat egiten duzula kriptografia bidez.
Kriptografia da, funtsean, sekretuak dugu.
>> Batzuetan gure sekretuak gainditu behar dugu zehar bidez, adibidez, Interneten edo
beste gauza batzuk.
Eta ez dugu jendeak nahi horien sekretuak ezagutzeko.
Gure sekretuak Beraz enkriptatzen ditugu modu batean ea inork ez irudikatu daiteke.
>> Beraz used-- dugu
class-- hau ikastaroaren bidez
Zesarrek zifratze bezalako gauzak eta [INAUDIBLE] dira, biak oso-oso
Gauza hauek enkriptatu moduak ziurra.
Erraza Oraindik dute irudikatu nahi dutena diren eta zer zure sekretuak dira.
Mundu erreala askoz gehiago erabiltzen du konplikatuak enkriptatze eskemak.
Eta ez dugu sartu Hori baino askoz gehiago da.
>> Arazketa.
GDB onena da.
Honetan ere, azpimarratu nahi dut.
Erabili GDB aldi bakoitzean guztia denbora arazo bat duzu.
Baliagarriak diren GDB komandoak dira hautsi, eta horrek bai, lerro bat gainditu duzu
zenbakia, funtzioaren izena, funtsean non zure kodea gelditu nahi duzu,
eta izan kontrola hartu ahal izango.
>> Print aldagai bat hartzen du eta bistaratzen du edozein dela ere, aldagai hori da
exekuzio puntu.
Hurrengo exekuzio mugitzen urrats bat ere.
Eta funtzio baten barruan urrats urratsa Zure exekuzioa.
>> Beste gauza exekutatu dira, hau da, nola benetan zure kodea exekutatzen duzun.
Jarraitu behar diren urrats guztiak hartzen den hurrengo break puntu lortu.
Eta badira beste hainbat eta hainbat dira.
Begira haien.
Handia dute.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Bai, horrek araztaile bat da.
Beraz araztaile bat programa bat da, Zure programa arazteko aukera ematen.
Ez bugs topatzen dituen programa bat da duzu, nahiz eta horrek ere handia izango litzateke.
>> Eta niretzat azken bilaketa da.
Beraz, bilaketa mota horrek hitz egin dugu Klase honi buruz dira bilaketa lineala,
hau da, besterik gabe, begiratu duzula bakoitzean zehar bilaketa espazioaren elementu, bata
aldi berean elementu, zer aurkitu arte zuretzat edo heldu arte bila ari
zure bilaketa espazioa amaieran zein seinalatu izan ez duzula aurkitu esan duzu
duzula bilatzen ari elementua.
Eta hau onenean etengabeko denbora hartzen du, horietatik 1 0 da eta txarrena lineala at
denbora, eta horietatik n 0 da.
>> Bilaketa bitarra, horrek behar du sordid elementu.
Joan zure elementu erdian duzu, ikusten baduzu, bilatzen ari zaren elementua
da elementu baino handiagoa edo txikiagoa ari zaren erdian.
It handiagoa da, esan beheko duzula zure bilaketa espazioa zure dago
uneko kokapena, erdian, eta prozesua berrabiarazi.
Txikiagoa bada, esan begiratuz duten the-- bai, zer gertatzen da?
>> IKUSLEEN: [INAUDIBLE]?
>> DAN: Bai.
Edozein izan da irakasten moduko moduko class arrazoizko proba jokoa da.
>> [Barreak]
>> DAN: Izan ere, ez duzula izan egin behar den arazo multzo bat, bidezko da
proba jokoa.
>> IKUSLEEN: Pasatuko gara nola zaie
>> DAN: It desagertu egingo dira.
>> SPEAKER 2: benetako kodea The [INAUDIBLE] study.cs50.net dago.
Beraz, bada praktikan arazoa at merge sort orrian
study.cs50.net, ez dago kodea gauzatzeko batu sort da.
Beraz, ez duzu ezartzea it yourself gaur gauean.
Baina ziurtatu ulertzen duzun baizik baino besterik ez da buruz ikasi.
>> IKUSLEEN: [INAUDIBLE]?
>> SPEAKER 2: merge sort-orrian study.cs50.net, han ohitura da
duten, bidez klik egiten baduzu, arazo Arazoa, oso amaieran ez da bat
irtenbidea, horrek merge da sort ezartzeko.
Baina ziurtatu ulertzen duzu baizik eta besterik ez da buruz ikasi baino
edo kopiatzeko behera.
>> IKUSLEEN: Eta primeran baliozko azterketa arazo izango litzateke
Hemen antzeko zerbait zerrenda bat da.
Zer zerrenda honetan begiratzen du ondoren bezala selections Ordena urrats bat edo
txertatzeko sort edo dena.
Zerrendako iterazio bat osoa.
Ez baduzu, beraz, nahiz eta azkenean beharrik it kodea, hura ulertu behar duzu
nahikoa nola joan jakin nahi array hau aldatzea da.
>> DAN: Hori da niretzat.
>> [Txaloak]
>> LUCAS: Hey guztiontzat.
Nire izena Lucas da.
Naiz guztiei errekurtsio buruz hitz egingo, dela ikasi dugu ordenatzen du, eta bat
erakusleak guztiak pixka.
OK?
Beraz, lehenik eta behin, errekurtsio.
Zer du horrek esan nahi du funtzioa da recursive?
>> IKUSLEEN: Deiak berez.
>> LUCAS: OK, deiak bera, bai.
Beraz, argazki hau, adibidez.
Da irudian bezala da barruan beraz, irudi bat eta.
Beraz, adibidez, Dan bezala have-- dezakezu bilaketa bitarra buruz hitz egiten.
One modu horretan, bilaketa bitarra da recursive Izan ere, zuk ari da
Zenbaki bat aurkitu nahian.
Beraz, joan erdialdera duzu.
Eta gero, egiaztatu zenbakiak ez baduzu ezkerreko eta eskuineko.
>> Eta gero jakiteko zenbakia da agertzen nahi duzun izango da, bera da
Gauza bilaketa berriro egiten baina besterik zerrendaren ezker.
Beraz, nola soinuak bezalako errekurtsiboa da.
Beraz, horregatik zuk guys dute recursive merge sort irtenbiderik.
>> Ados, beraz, hona hemen adibide bat.
Beraz, demagun aukeratu nahi dut 1etik n zenbaki guztiak.
Daiteke konturatzen naiz horren n batuketa kopurua da n plus n ken 1 1 gehienez.
Baina gero, begiratu dut at n ken 1 bada plus n ken 2 plus 1, hori bera da
Gauza summing zenbakiak n ken 1 gehienez.
Beraz batura berdinketarik batuketa esan dezaket n plus n ken 1 batuketa.
Ez duela zentzurik?
>> Eta, gainera, beste zerbait izan nahi dut oinarri kasuan deitzen zaio, hau da,
Zenbakiak batuketa sortu zero zero izango litzateke.
Beraz, ahalik eta lasterren lortu zenbakira dut zero, kontatuta gelditu nintzen.
Ez duela zentzurik?
>> Hortaz, hona hemen nola adibide bat Dut hori ezartzeko dezakezu.
Beraz, batzuetan funtzio hori daukat.
Osoko n agertu du.
Hortaz, hona hemen lehen begiratu dut n bada txikiagoa edo zero berdin.
Beraz gutxiago edo zero da, badut itzultzeko zero, horrek gure kasuan da.
Bestela, besterik gabe itzuli ahal izango dut n plus Zenbakiak batuketa eginez
n ken bat irudikatuko da.
Zentzurik?
Ados.
>> Hortaz, hona hemen zer itxura.
2 berdinen batura daukazu 2 gehi 1 batuketa.
Eta 1 batzuk 1 plus 0 batuketa, zein da 0.
Zentzurik?
Beraz begiratzen dugu pila at bada zure programa, hau da, zer itxura.
>> Lehenik eta behin, funtzio nagusia dugu.
Eta ondoren, funtzio nagusia batuketa 2 izenekoa.
Eta gero batuketa 2, esateko oi va, batuketa 2 berdin 2 plus bat batuketa.
Beraz, gehitu I 1 batura pila.
Eta 1 batuketa da batura deitu noa 0, eta hori ere gehitu egingo da
pila.
Eta gero direnak hauek dira bakoitzaren bestearen gainean itzuliko dute
aurretik beste batzuk jarraitzea daiteke.
>> Beraz, adibidez, hemen, 0 batuketa, lehen, hau da, 0 itzuli du.
Eta, ondoren, aukeratu 1 batura.
Gero 1 batuketa da joan itzultzeko 1 guztira 2 laburbildu.
Eta, azkenik, 2 batura va 3 itzultzeko nagusira.
Ez duela zentzurik?
>> Benetan garrantzitsua da ulertzeko nola pila lanean ari da, eta saiatu
ikusi zentzuzkoa bada.
Ados, beraz ordenatzeko.
Beraz, zergatik da garrantzitsua ordenatzeko, lehenik eta behin?
Zergatik dugu arduratu behar?
Edonork?
Eman adibideren bat?
Bai?
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: Bai, OK.
Beraz, gehiago eraginkortasunez dezakezu bilaketa.
Hori modu ona da.
Beraz, adibidez, asko daukagu gauzak, egia esan, gure bizitzak,
ordenatuko dira.
Adibidez, hiztegiak.
>> Oso garrantzitsua da guztiak izatea Ordena nolabaiteko hitz egiten dugula
erraz eskura dezaten.
Beraz, zer zen esaten zuen.
Ere modu eraginkorrean bila ditzakezu.
Nola gogor bat izatea izango litzateke pentsatzea hiztegi zein hitz dauden
ausaz.
Izan dituzu begiratzen, nahiko askoz, Hitz bakoitza aurkitu arte
Hitz hori bilatzen ari zaren.
>> You Facebook ere erabiltzen ari bazara, orduan zure lagunak ikusten ari zara, Oraindik
Facebook jarri ikusteko joan zure Lagun hurbilago daudenak, gainean da
ez duzula horretan hitz askoz.
Modu guztiak joan behar bada hondoan Lagun zerrendan, zu ikusten zoazen
duten Ziurrenik ez duzu, nahiz eta ez pertsona gogoratu zarela lagunekin.
Eta hori delako Facebook era Zure oinarritutako nola an
itxi dira zenieke.
>> Beraz, datuak antolatzeko.
Era berean Pokemon.
Beraz, ikusi Pokemons guztiak duzula zenbakiak dituzte.
Eta hori erraz bat bezalakoa da datuetan sartzeko bidea.
>> IKUSLEEN: Pokemon sartzea.
>> LUCAS: Bai.
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: Yep.
Ados, beraz, aukeraketa sort.
Aukeraketa sort da hautatzeko joan txikiena Unsorted zerrenda bat balio bakoitzeko
iterazio bakoitzerako denbora.
Mota moduko duzula egiten bezalakoa da zure burua denean saiatzen ari zaren
alde batetik zerrenda ordenatzeko.
>> Funtsean, egiten duzun guztia begiratu kopuru txikiena da.
Jarri duzu ordenatuko zerrendan.
Eta gero, bilatzen hurrengo zenbakia txikiena.
Eta gero egiten jarraituko duzu duten eta abar.
>> Beraz, aukeraketa sort da, funtsean, zuk hautatu txikiena den bakoitzean
Unsorted balioa.
Ordenatuko amaieran jarri zerrendan parte.
Eta gorde egiten.
Hargatik ikusi azkar horrek zer itxura hau.
Hortaz, hona hemen ordenatuko eta Unsorted zerrenda.
>> Beraz, zerrendaren ordenatuko da, Hasieran hutsik da.
Eta gero noa hautatzeko joan txikiena zenbaki hemen, hau da, 2.
Beraz, 2 zenbakia lortu nuen eta nik jarri zerrendaren aurrean.
Eta gero, begiratu hurrengo txikiena dut elementu, hau da 3.
Beraz, jarri dut amaieran zerrenda ordenatuaren.
Eta gero mantentzen dut hori egiten.
4 iruditzen zait eta jarri amaieran.
Aurkitu 5 eta jarri amaieran.
>> Eta garai hartan, nola guztia itxura At amaiera da ipini esaten dut,
funtsean, bi balioen aldaketa.
OK?
Eta gero, azkena, besterik ez duzu elementu bat gehiago dute.
Hain dagoeneko ordenatuko da.
>> Ados, beraz, txertatzeko sort.
Txertatzeko sort zu ere izan da joan haber bat ordenatuko gauza dela eta
Unsorted zerrenda bat.
Gauza bakarra da, aldi bakoitzean duten elementu bat gehitzen ari zaren antolatuko den
zerrenda, hartu besterik ez duzu elementu hori Unsorted zerrenda aurrean da.
Eta gero zu zer aurkituko joan posizio ordenatuko ere izan beharko luke
zerrendan parte.
>> Ea hau zer da, beraz, dezagun hori zentzuzkoa.
Beraz, hasiera batean, adibidez, saiatzen ari naiz Hiru zenbakia txertatzeko dauden
zerrendako zati ordenatuko.
Beraz, zerrenda ez da ezer izan.
Beraz, besterik gabe, jarri ahal izango dut 3 zenbakia.
>> Orain, 5 zenbakia gehitu nahi dut zerrendako zati ordenatuko du.
Beraz, itxura kopurua 5 dut.
Nabarituko dut 3 baino handiagoa dela.
Beraz, 3 ondoren izan du ez duela ezagutzen dut.
Beraz, 3 eta 5 jarri dut.
>> Ondoren, 2 zenbakia sartu nahi dut.
Konturatu nintzen 2 zenbakia dela benetan iraungo orduan bai 3 eta 5.
Beraz, benetan izan dut jartzea guztia egiten du zerrendaren hasieran modu.
Beraz, mota, filmea guztiak daukat ordenatuko zerrenda beraz, ezin dut elementu
gela egin 2 zenbakia da.
>> Ondoren, 6 zenbakia ikusten dut.
Eskaintza 5 ondoren izan beharko litzateke ikusten dut.
Beraz, ez dut jarri.
Eta, azkenik, itxura kopurua 4 at dut.
Eta konturatu nintzen behar lukeen 3 eta 5 artekoa izan.
Eta gero han jarri nintzen, eta shift beste elementu guztiak.
Zentzurik?
>> Bubble Sort.
Beraz burbuila sort da, funtsean, zer ari zaren gertatzen da burbuila deitzen dugun do-- to
list-- bidez joan moduko duzulako hobe da benetan I erakutsi besterik ez bada
hau bezalako duzu
eta ari alderatu zoazen ondoko zenbakiak.
Eta ari trukatzeko zoazen beren Oraindik ez badute posizioak
ordena egokian.
>> Beraz, funtsean, zer ari den gertatzen gertatuko da hemen, adibidez,
daukazula 8 eta 6.
Badakizu ordenatuko ordena horretan izango benetan izan 6 eta 5, ezta?
Beraz, ari aginduak trukatzeko zoazen.
Orduan ikusi nuen 8 eta 4 hemen.
Eta gauza bera egin dut.
Berriro aldatu dut.
Eta, azkenik, 2 eta 8.
Gainera, trukatu ditut.
>> Honez Bubble delako Sort ondoren izeneko iterazio horietako bakoitzean, benetan,
Zerrendako kopuru handiena lortzen zerrendaren bukaeran bidean.
Ez duela zentzurik?
Da aldaketa mantentzen delako eta mugitzen du eskuinera.
>> Ados, beraz, hau, bigarren iterazio da.
Gauza bera izango litzateke.
Swap bat egin dut eta ondoren, azkena.
Ez nuen diren trukeak ez eta zerrenda ordenatuko da.
Beraz Bubble Sort, funtsean mantendu dugu zerrendan zehar joan eta aldaketa
gauzak ez nituela egin konturatu nintzen arte iterazio egiten edozein trukeak, eta horrek
esan nahi du zerrendan dagoeneko ordenatuko da.
Zentzurik?
>> Dezagun pixka bat Let denbora exekutatzen buruz.
Beraz, gogoratzen duzu guys Big O, Omega, eta Theta?
Bai?
Ados, zer Big O da, lehenik eta behin?
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: Bai, kasu horretan, txarrena bat deitu du exekuzio, besterik gabe esan nahi da dela
zenbat programa espero duzu exekutatu hartzeko.
Bezala, termino horretako
kasu n honetan.
Elementu-kopurua kasurik okerrenean ere zerrendan.
Atsegin dut, ahalik eta kasu txarrenean.
>> Beraz Bubble Sort, adibidez, Big n karratu O dugu.
Zergatik dugun?
Zergatik Bubble da Sort Big O n karratu?
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: Bai, beraz, kasu horretan, txarrena izango da n iterazioak egin behar dut.
Beraz iterazio bakoitza joan elementu handiena ekarri amaieran
zerrendaren.
Beraz, kasu txarrena da tengo que Gauza n aldiz ez da egin behar.
Eta garai horietan bakoitzean, izan dut Egin n trukeak alderatu ditudalako
Bi elementu bakoitza.
Beraz, horregatik eta karratu n da n aldiz n. delako
>> Ondoren, aukeraketa sort da, gainera, n karratu delako, iterazio bakoitzerako, izan dut
elementu bakar behin begiratu zerrendan.
Eta gero, txikiena aurkitu, horrek esan nahi du, I izan
n elementuen bidez bilatzeko.
Eta n aldiz bat pentsatu behar izan dut N elementu guztiak aukeratu behar dut.
>> Txertatzeko moduko bat ere n karratu Kasu txarrena eszenatoki izango delako
izan, bat, sartu behar dut n zenbakiak, ezta?
Beraz, dagoeneko badakit noa n iterazioak izatea.
Baina izan dut zenbaki horiek bakoitzerako, bada zenbakiak guztietan begiratu
ordenatzen du zerrenda, eta modu guztiak ipini aurrean, duten n karratu izango
delako n aldiz n berriro izango da.
Zentzurik?
Zer omega buruz?
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: kasu onena agertokia da.
Beraz bezalakoa da, asko aldiz egiteko , ordenatzeko kasu onena agertokia da
zerrendan dagoeneko ordenatuko da.
Beraz, ez duzu benetan ezer egin.
Bubble Sort ditu onenak Kasu n eszenatoki.
Ez duzu guys dakizu zergatik?
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: Bai, segimendua baduzu Datu anoa trukeak edozein izan ala
Ez, zerbait bada, ez duzu behar bezala ezarri Egia ez iterazio bat izan bada ere, bada
Zerrenda dagoeneko ordenatuko da, funtsean, zer gertatuko da noa
saiatu bi bakoitzak trukatu ondoko elementuak.
Duten ikusi nahi dut daude trukeak ez.
Eta itzultzeko besterik ez dut berehala.
>> Beraz, I besterik ez dela egin behar izan dela esan nahi du the list denbora bat pasatzen.
Beraz, n egiten dut begiratu delako n elementu at.
Zergatik aukeraketa sort n plazan?
>> Bai, zerrendan ordenatuko bada ere, alde aukeraketa sort iterazio bakoitzean, I
gutxieneko elementu hautatu behar.
Beraz, horrek esan out daukat begiratzen duten Unsorted elementu guztietan
zerrendatu eta minimoa aurkitu iterazio bakoitzerako.
Ez duela zentzurik?
>> Eta txertatzeko ezpata delako n agertzen duten txertatzeko ari naiz kasu
zenbakiak eta zenbakiak guztiak, denean dut saiatu horiek txertatzeko, ikusten dute dudala
eskuineko posizioa dira.
Nik ez dut joan den egiaztatzeko beste guztia Unsorted zerrendan zenbakiak.
Beraz, horregatik n izango da.
Zentzurik?
Eta zer da, theta?
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: Zer, barkatu?
Esan berriro.
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: Zehazki.
Beraz, aukeraketa hori bakarrik ikusi ahal izango duzu Batu gordetzen moduko dute thetas.
Eta hori da zuk bakarrik izan theta delako bai Big O eta Omega bera baldin badira.
Ados.
Eta, azkenik, batu, ordenatu, hau da in log n.
>> Eta gero, Dan zen esaten gisa, Batu sort motatako modu berean bezalakoa dela
bilaketa bitarra egin duzu.
Beraz, zerrenda lortuko duzu.
Eta ari den erditik ebaki zoazen.
Eta gero horiek ebakitzen halves txikietan.
Eta gero batu duzu.
Zaudete gogoratu, ezta?
Ados, jo zuen esaten zen.
>> Ados, erakusleak.
Beraz, zer erakuslea da?
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: helbidea.
Ados.
David duten mordo bat azaltzen jakin dut binky bideoak eta gauzak apuntatzen
elkar.
Baina gustatzen zait erakusleak pentsatzea besterik helbide gisa.
Beraz, hori gertatzen aldagai bat da Helbide bat gordetzeko.
>> Beraz, aldagai berezi hau besterik ez da dela lau byte luzea.
Gogoratu, ezer erakuslea dela beti lau byte gure 32-bit luze
Makina hain kasua tresnari.
Eta besterik kokalekua ditu barruan aldagai baten.
>> Ados, beraz, ez dago memoria hau da, funtsean.
Beraz, memoria bloke bakoitza benetan ditu etiketan, eta hori helbidea da
slotty memoria.
Beraz, horrek esan nahi dut ahal izango dute erakuslea seinalatuz bat
Helbide hauek edozein.
Beraz, arrazoia zergatik erakusleak erabiliko dugu da kokapena gogoratu behar badut
aldagai zehatz bat duten memoria bat da.
>> Eta gogoratzen duzu guys horiek bat duten Kasu zen funtzio bat badut
daukat benetan bada nahi duzu erreal for swap, I actually
erakuslea bidali behar.
Ez da aldagai.
Ez duzu guys gogoratu?
Aldea between-- The
zer izen da?
Balioa eta deituz Deitzen erreferentzia, ezta?
>> Ados, bai.
Beraz, balio by deitu.
Noiz aldagai bat bidali besterik ez duzu funtziona zu besterik balio bat bidaliz duzu.
Beraz, benetan ari bidaltzea aldagai horren kopia bat.
Eta zure programa bortz axola zaie aldagai berarekin benetan bada buruz
kopia bat egiten du.
>> Eta deituta erreferentzia esan nahi du, Benetan kopia bat naiz bidaliz
aldagai hori erakuslea.
Beraz, naiz duten I bidaliz esan nahi du aldagai horren kokapena.
Beraz senti kokalekua daukat aldagai, funtzio nuenean deitu
erakusleak, benetan gai naiz Datu hori nagusia izan zen aldatu.
Zentzurik?
>> Arren, erakuslea kopia bat da, erakuslea oraindik helbide benetako du
aldagai hori aldatu nahi dut.
Zentzurik?
>> Beraz, erakusleak sortzeko.
Gogoratu, erakuslea beti dute duten seinalatuz motaren
izar bat eta gero.
Eta gero, izena jarri behar duzu.
Beraz, gogoratu, betiere duzu edozein dela izarra, izan erakuslea bat bezalakoa da
edozein dela ere, aldagai hori idatzi izan duzula.
>> Beraz, hemen izarra, adibidez, oso erakuslea eta zenbaki oso bat.
Eta gero, char star erakuslea da char izar eta abar.
Bai?
>> IKUSLEEN: Zer badugu bat n erakuslea x izarra izateko.
Duten x erakuslea sortzen badakit.
Ba al da zenbaki oso bat x deklaratzeko, gainera?
>> LUCAS: OK, beraz, n izar x esan duzu, Ez duzu erakuslea sortzen ari
x aldagai.
X izeneko erakuslea bat sortzen ari zara.
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: Beraz, n izar x diot, naiz , esaten hey, memoria, naiz joan
lortzeko hiru kutxa horietako bat.
Eta ez dut esan nahi hori joan da, hau da x izango da,
joan erakuslea izan nahi du.
Eta zerbait erakusleak buruz interesgarria dela dute ez dutela esan dugun
4 byte 32-bit makina bat da.
Eta horren arrazoia dagoelako 4 byte 32-bit dira.
>> Eta makinek duten 64 bit dira benetan erakusleak helbideak dute
duten 64 bit luze dira.
Beraz, esan nahi du, besterik ez duten tamainaren helbideak makina desberdina da.
>> Beraz, erreferentzia eta Dereferencing.
Badira bi operadore you guys gogoratu behar.
Lehena ampersand da.
Bigarrena izarra da.
Ez zaitez nahastu izarra duten eta honen arabera izar duelako gogoratu, in
Kasu honetan, n izarra duzu.
>> Gauza oso bat bezala da elkarrekin.
Inolako n espazio star ez.
Beraz, esan nahi du motakoa dela.
Gogoratu, denean behar duzu star aldagaia, zaren
motari buruz hitz egiten.
>> Noiz besterik izar eta gero egin behar duzu aldagaiaren izena, esan nahi du
erakuslea, dereferencing ari zaren horrek, esan nahi du ikusten ari zara
erakuslea, helbidea bilatzeari da, seinalatuz, helbide horretara joan,
eta, betiere, begira ez duzu.
Beraz, esango dut nire ikasleak denean behar duzu izarra, pentsatu behar duzu, hori da
edukia laburdurarik du.
>> Beraz, erakuslea bat baduzu eta zuk egin star erakuslea, da
erakuslea edukia.
Beraz, edozein dela ere da seinalatuz behar duzu eta etengabea eduki begiratu.
Eta ampersand berdina da Gauza helbide gisa.
>> Beraz, aldagai bat bezala a-- badut, dezagun esan ez dut int bat itzultzen 3--
horren helbidea aurkitu nahi badut aldagai memoria bat, besterik gabe, egin ahal dut
ampersand bat.
Beraz baten helbidea da.
Zentzurik?
>> Hortaz, hona hemen adibide bat.
Hau int b eta int c falta da.
Beraz, int bat berdinen 3 bitartekoak direla Memoria joan noa.
Eta ez dut zirrikitu bat aurkitu du eta jarri 3 zenbakia hemen.
>> Eta gero, int b berdinen 4.
Gauza bera egin behar dut.
Memoria joan eta zenbaki bat jarri Kutxetako batean 4.
Eta int berdinen 5.
Aurki box beste bat eta zenbaki bat jarri 5.
>> Beraz, zer lerro hori aurrera egiten ari da? n izar pa ampersand bat berdin.
Beraz, lehenik eta behin, n izar pa.
Zer egiten da?
>> IKUSLEEN: [INAUDIBLE].
>> LUCAS: Bai, beraz n izar pa, lehenik eta behin, pa izeneko erakuslea deklaratzen.
Eta gero nik balioa esleitzea da erakuslea baten helbidea izan nahi du.
Beraz, ampersand bat.
Ondoren, izar pb egiten badut, zer izar pb bat da?
>> Oh, barkatu.
Honek ere falta da. n izar pb.
Izar pc esan nahi dut.
Asko sentitzen dut.
Gauza bera gertatzen da.
Baina orain ona erakuslea sortzeko ar naiz b eta gero c erakuslea.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> LUCAS: Bai.
Beraz, joan memoria gero eta joan behar duzu koadroan duten Designatzaile da pa egiteko,
benetan ari zaren joan ikusi Ziurtagiri baten ezaugarriak.
OK?
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> LUCAS: Bai, erakuslea helbidea da.
Inoiz ez ahaztu.
Da garrantzitsuena bezala da erakusleak buruz zati.
Ez dago gordetzeko eta helbidea aldagai batzuk.
Beste ezer?
Beste edozein galdera?
Ados.
>> Beraz, erakusleak eta Matrizeak.
Gogoratu int array 3 egin dut, Funtsean, zer egiten ari naiz da, naiz nolako
ren, erakusle bat ere geratuko.
Beraz, array mota da erakuslea bat bezalakoa da memorian leku jakin horretan, I
hiru zirrikitu esleitu osokoak da.
Ez duela zentzurik?
>> Beraz, int array 3 egin dut, zer naiz egiten, funtsean, hiru sortzen da
memorian slots.
Beraz, memoria hiru zirrikitu aurkitu dut.
Beraz, egin nuen, eta, ondoren, izar array bat, bada funtsean, array edukiak esan nahi du,
horrek esan nahi du ezabatuko dut erakuslea, I joan dela seinalatuz leku horretara,
eta zenbaki bat jarri dut.
>> Eta gero, izar array plus 1 egiten badut, array egiten gauza bera
Alde parentesi artean, besterik gabe esan nahi joan nahi dut lekua dela seinalatuz.
Eta gero plus 1 markek posizio bat mugitzeko me.
Beraz, jarrera hori nahi dut, egia esan, eta jarri bi zenbakia du.
>> Eta gero, azkenik, noiz egin behar dut array gehi 2, joan nora dut
array en seinalatuz.
Eta gero, mugitu memoria bloke nahi dut.
Eta gero, hiru zenbakia jarri dut hemen.
Bai?
>> IKUSLEEN: Beraz, izar array besterik ez da, Oso lehen puntua esaten.
Eta gehitu dezakezu 1, besterik ez delako gaude bakarrik benetan
Lehenengo helbide hori erreferentzia.
>> LUCAS: Bai.
Zergatik ez dugu, adibidez, esan array 0, array 1, eta array 2?
, Esaten dut zergatik egiten duzu 0, 1, 2, 3 1 ordez, 2, 3?
Arrazoietako bat da, bat, ordenagailu programatzaileak nahiago hasteko
0 hasita.
Bi denean array 0 egin duzulako, array egiten gauza bera da
plus 0, horrek esan nahi du joan nahi dut posizio horretan, eta ez dut
memoria bloke edozein saltatzeko.
Beraz, ez dut memoria bloke edozein mugitzeko.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> LUCAS: Beraz, zuen zer den galdetuz egiten arteko aldea
hau edo malloc egiten.
Desberdintasunak bat dela int array 3 eratuz
array pilan.
Eta noiz malloc egin nuen, zeure gainean sortzen.
Ez duela zentzurik?
>> Beraz, nola malloc benetan lan?
Beraz, zergatik ez, nahiz malloc erabili behar dugu?
Zure konpiladorea zifra motatako guztiak dela deklaratu aldagaiak.
Eta espazioa sortzen zuen guztientzat horietako pila.
Beraz, zure aldagai guztiak dira joan pila nonbait izan.
Hortaz, hona ingurune-aldagai da.
>> Beraz, funtsean, aldagai horiek, espazio memorian dago at esleituko
bildu denbora.
Beraz, zure ordenagailua duela esan nahi du aldagai horiek guztiak ezagutu
aldez aurretik.
Ez du behar den jakin zer balio eurengan jarri ari zaren.
Baina nola jakin behar du memoria askoz behar duzu.
>> Baina orain, demagun, adibidez, array bat sortzen ari zaren edo bat hartuz
kate hori hartzen ari zaren erabiltzaileari.
Zenbat denbora ez dakizu katea da, izan adibidez joan.
Beraz, ez dakizu zenbat memoria bloke, esleitu ezta?
>> Beraz, ez da benetan zentzurik for 100 karaktere jarri esateko duzu.
Eta gero, erabiltzaileak idazten 150? Zer bada
Izorratu behar izan duzu.
>> Beraz, funtsean, ezin duzu nola ziur memoria askoz esleitu behar duzu
denean programa konpilatu duzu.
Badakizu besterik ez dela exekutatu denbora.
Beraz, horregatik zeure duzu.
Beraz, zeure memoria izan da joan zehar duzula esleitzean ari
programari iraupena.
>> Beraz, funtsean, noiz malloc egin duzu, zer egiten ari zaren memoria esleitzean at
exekuzio, horrek esan nahi du zarela une horretan eskuineko erabakia hartu duzula
memoria hori izan behar dute.
Beraz, noiz da esleitzean zaren.
Ez duela zentzurik?
>> Beraz, gogoratu, pila aldagai ditu diren konpilatzerakoan zabaltzea da.
Eta gero, zeure aldagai ditu sortzen joan ahala
malloc, adibidez.
>> IKUSLEEN: [INAUDIBLE]?
>> LUCAS: Beraz GetString da malloc deitu noa.
Me hitz malloc egin dezagun, eta Azalduko dut GetString.
Beraz, malloc gauza bera da memoria esleipena gisa.
Beraz, esleitu joan memoria zeure gainean.
Eta hori erakuslea itzuli joan non memoria hartan esleitu zen.
>> Beraz, do-- duzu
hemen adibide for
n star erakuslea.
Eta, ondoren erakuslea berdinen malloc hazbeteko aldiz 10 tamaina.
Erakuslea sortzen ari naiz.
Eta, ondoren erakuslea duten Dut esleitzeko erakuslea malloc duten balioa
da me emanez.
>> Beraz, galdetzen dut malloc dezakezu esleitu 10 osokoak espazioa.
Horixe esaten da.
Eta malloc ematen dit atzera leku hori erakuslea.
Zentzurik?
Ados.
I Eta GetString da, funtsean, bat egiten malloc deitu beraz esleitu ahal izango duzu
exekuzio bitartean memoria.
>> Beti gogoratu null egiaztatzeko malloc null itzuliko delako joan
ezin badu memoria esleitu.
Demagun barregarria bat eskatu duzula memoria kopurua.
Zure ordenagailuak ez da izango duten askoz ere esleitu ahal izango.
>> Beraz, malloc da, besterik gabe, joan null itzultzeko.
Beraz, beti gogoan izan balitz egiaztatu erakuslea duzula got malloc da
nulua edo ez, zeren bada, baliteke egon erakuslea dereferencing eta
Bigarren mailako failak eragiten.
Eta, azkenik, ez ahaztu Zure memoria doan.
>> Malloc zeure memoria sortzen da.
Eta memoria libratzeko behar duzu programa amaitu aurretik.
Ados, hori da dena niretzat.
Barkatu, Rob.
Eskerrik asko.
>> [Txaloak]
>> LUCAS: Edozein azken galdera aurretik Rob dator?
No?
Bai?
>> IKUSLEEN: ez nuen ikusi Bat online honetan.
Dute oraindik igotako duzu?
>> LUCAS: uste dut Dave da laster igotzen.
>> DAVE: It argitaratu egingo dugu.
>> LUCAS: online izango da.
>> IKUSLEEN: Ez da sortu.
>> LUCAS: Ez da sortu?
Ados.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> LUCAS: Bai, askatu behar duzun guztia memoria hori zeure jarri.
>> IKUSLEEN: [INAUDIBLE]?
>> LUCAS: Bai.
Duten kultura malloc a behar duzun edozein unetan, kultura bat libre izan beharko duzu
ondoren gelditu aldagai hori erabilita.
Beraz, malloc eta dohainik dira Beti elkarrekin.
Haien lagun onena.
Bai.
Rob?
>> ROB: azkar joango naiz.
Eta, gainera, bideoa jarriko du.
On mic daukat.
>> Ados, beraz, astean bost gauzak.
Lehenik eta behin ditugun pila da.
Beraz, gogoratu ez dagoela pila bat besterik ez funtzio dei aktibo bakoitzeko fotograma.
Duten ikusiko dugu bigarren bat.
Eta, gainera, gogoratu, benetan zer gertatzen den pila marko bakoitzean izango dira
Gure funtzioen aldagai lokalak dira, diren pasa argudioak gure
funtzioak, pare bat batera beste gauza batzuk ez duzu benetan
kezkatu behar.
>> Hortaz, hona hemen adibide-programa bat, non, oharra, nagusia da itzulera printfing
foo 4 balioa.
foo da besterik gabe itzuli egingo da bar 4 koma 6 balioa.
Eta bar da tokiko zenbait gauzak argitzera 4 6 berdina aldakorreko n.
Eta gero itzuli n.
>> Hargatik zehar ditzagun pila at benetako programa honen iterazio.
Beraz, ez dago gure pila behealdean dago.
Gogoratu pila hazten sortu.
Beraz, gure pila behealdean, dugu pila nagusiak marko bat.
Noiz programa hasieran, nagusiak beti egon behar dute
gure pila behean.
>> Eta zer da barruan gure pila marko nagusia da?
Beraz, ez dira tokiko no nahiz nagusira aldagaiak, lehen esan dudan bezala,
argc eta rgv dute hartzen espazioa dugu pila nagusiak marko barruan.
Beraz nagusia da orain joan deitu funtzioa foo.
Eta horrek esan nahi foo da joan lortzeko bere pila-markoa.
>> Beraz, gaur egun ari gara, barruan funtzioa foo.
Eta zer behar du joan foo pila marko?
Beno, foo argumentu n du.
Eta N 4 berdina da hori geroztik zer nagusiak pasatzen foo en argumentu gisa.
>> Beraz, orain foo bar da deitu behar.
Zer da barra barruan izan da joan Bere 'pila marko of?
X 4 y sei berdina berdina dauka.
Hori ez da behar behar dugun guztia pila markoaren bar delako
halaber, aldagai lokal bat n ditu.
Eta n ari gara 24 berdinak ezarri behar.
>> Beraz, gaur egun taberna da itzuliko n egingo.
Beraz bar itzuli da eta 24 pila marko foo.
Eta delako bar orain, itzuli da, esan nahi du, pila marko ari gara leihoa
bar off pila da.
Beraz, memoria guztia bar izan dira erabiliz, gaur egun pila off.
>> Orain, lelo hori ere joan 24 itzultzeko nagusira.
Beraz, orain foo duten itzultzean, memorian lelo hori bere 'in erabiliz
pila-markoa ere joan da.
Eta orain, nagusia da printf deitu noa.
Beraz printf funtzioa bat besterik ez da.
Noiz printf deitzen diogu, izan da joan beste pila printf egiteko markoa
funtzio deia.
>> Zer dira printf pasatzen dugu?
Horrexek nahasten joango gara bere pila-markoa.
Oso gutxienez, pasatzen ari gara ehuneko i backslash n eta
argumentua 24.
Gehiago izan dezake, bertan pila-markoa da printf gertatzen bada izango batzuk erabiliz
aldagai lokalak.
Ez dakigu.
>> Baina hori guztia printf en doa pila fotograma.
Honez printf exekutatu behar.
Ondoren printf kitto.
Itzuliko da.
Azkenik, nagusia egiten da.
Main itzuliko da.
Eta orduan gure programa egiten da.
Bai?
>> IKUSLEEN: zuk ikusten dira [INAUDIBLE]
argumentuak [INAUDIBLE]
parametroak?
>> ROB: Beraz, ez sotil aldea da argudioak eta parametroak artean.
Eta benetan, hitz komunean, jendeak joera besterik nahastu du denbora guztian.
Baina parametro formalak dira Gauzak izena.
>> Beraz argc eta argv dira nagusira parametroak.
Argumentuak dira zer benetan pasatzen diren parametro horiek bezala.
Beraz ez denean 4 foo, 4 deitzen dut argumentua I pasatzen naiz da.
Eta parametro n, barrutik foo, 4 balioa hartzen
4 geroztik argudioa zen.
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: n tokiko aldagai bat taberna da.
n dago oraindik foo tokiko, baina Parametro bat foo da.
Ez da tokiko aldagai bat.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: foo besterik deituz taberna eta edozein dela bar itzultzen itzuli.
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Bai, bat baino gehiago ikusteko markoak pilatu.
Bai?
>> IKUSLEEN: Zergatik deitzen zen lelo printf aurretik?
>> ROB: Zergatik deitzen zen foo printf aurretik?
Beraz, izan dut, ordez, zerbait egin int bezalako x berdin 4ko foo
eta gero inprimatutako x.
Baina horren ordez, funtzioak konbinatzen dut printf argumentua sartu deitu.
>> Ezin dugu baina konturatu benetan deialdira dugun arte printf exekutatu
irudikatu 4 foo zer den.
Beraz, hau ebaluatu behar.
Eta hori behin bakarrik egiten zoazen itzuli eta hau ebaluatzeko.
Bai?
>> IKUSLEEN: bai bar geroztik [INAUDIBLE]
balioa, zergatik ez dugu [INAUDIBLE]?
>> ROB: guztiz int izan beharko lukete.
Hori ez zela harrapatu gorako bat baino gehiago gainditu.
Beraz, int bar eta int izan beharko litzateke Horietako bi geroztik lelo
dira osokoak itzuli.
Hutsa da bakarrik ari dira, ez bada benetako balio itzultzeko.
Bai?
>> IKUSLEEN: lerro bat izan ezkero gainetik itzulera, [INAUDIBLE]?
>> ROB: itzulera gainetik lerro bat?
>> IKUSLEEN: Bai.
Like printf eta [INAUDIBLE] egin baduzu, litzateke bi aldiz inprimatu?
>> ROB: Beraz, foo barrutik?
Printf bat izan dugu hemen, bada?
>> IKUSLEEN: Bai.
>> ROB: Beraz, printf eskubide bat izan genuen Hemen, behin inprimatu litzateke.
Foo behin eskuineko deitzen ari gara geroztik Hona hemen, beraz printf hit dugu.
Ondoren bar deitu dugu.
Eta gero itzuli egingo foo.
Eta hori da.
Bakarra inoiz aurkituko dugu printf behin.
Bai?
>> IKUSLEEN: [INAUDIBLE]
printf foo deituz lehen garelako printf deituz eta ondoren pasatzen ari gara
argudioak.
>> ROB: Beraz, teorian, ez da printf foo deituz?
Beraz, ez.
Just ordena c hori joan Gauza horiek exekutatu da, ahal dugu aurretik
funtzio bat deitu, argumentuak guztiak funtzioa behar den
erabat baloratuko dira.
Beraz, hau erabat ebaluatzen da?
Bai, kate bat besterik ez da.
Balio bat besterik ez da.
>> Orduan guztiz daukagu hau ebaluatzeko.
Hori egin eta gero, gaur egun guztien bere argumentuak ebaluatzen dira.
Eta orain egin dezakegu deitu printf.
Bai?
>> IKUSLEEN: galdera bat.
Void funtzioa bat baduzu, muztioa bueltan koma behar duzu?
>> ROB: ez duzu bueltan puntu eta koma ez Void funtzioa bat duzu bada.
Ados.
Beraz, orain, zeure gauza batzuk.
Beraz, arazoak izaten ari da, nola ari gara aurre joan memoria dinamikoa kudeaketa batekin.
Eta hori zuzenean kontrasteak pila bertan automatikoa deitu genuke
memoria kudeatzea.
>> Beraz, pila, benetan inoiz ez duzu nola tokiko aldagai landu
galtzen ari dira eta popped off guztiak pila fotograma horiek eta halakoak.
Ez daukazu kezkatu.
It automatikoa da.
Beraz, zeure Eskuliburu da.
Eta [INAUDIBLE]
funtzio horiek dator malloc eta doakoa.
>> Hortaz, hona hemen programa bat da.
Guztiak egiten ari gara, mallocing zenbaki oso bat.
Gordetzeko ari gara izar x.
Jakina, egiaztatu behar dugu x null bada ikusteko.
Ondoren gaude besterik ezarri zer gertatzen x 50 egingo dutenak.
Inprimatu zer x seinalatuz, inprimatu x, eta, ondoren, free x.
>> Beraz, nola da hau benetan begiratzen joan begiratzen dugu gure pila eta zeure kontuan hartuz gero?
Beraz, hasiko gara berriro.
Gure pila behealdean lehen bezala.
Gogoratu zuzenean zeure duten thee pila kontra?
Beraz, egin behar joan Gure zeure goialdean han.
>> Beraz, gure pila behealdean, hemengo gure pila nagusiak marko.
Argc, argv espazioa du, eta guk orain aldagai x lokal bat, behar horrek
int izar bat da.
Beraz, batetik bestera joateko joan Programa honen bidez.
Lehenengo gauza egin dugu malloc deitu.
>> Beraz, malloc dei bat egiten ari gara.
Malloc funtzioa da.
Honez pila marko bat lortzeko.
Zer ari gara malloc pasatzen?
Hori barruan joan pila markoaren.
N, eta horietatik 4 neurri pasatzen ari gara.
Beraz, hori da malloc gainditu.
>> Zer egiten du malloc?
Gurekin zeure buruzko espazioa batzuk hartuko da.
Beraz, zeure joango gara.
Eta ari gara hartzen joan 4 byte zeure from.
Hargatik eman besterik gabe dagoela arbitrarioa helbide bat.
0x123 Just asmoa dela bat helbide hori zeure gainean.
>> Beraz, zer da, benetan, horren barruan helbidea ox123 at memoria eskualdea?
Garbage.
Beraz, ez dugu ezer gordetzen.
Beraz, guk dakigula, bezala edozer izan daiteke.
Ez zenuke arduratuko da zero.
Da ziurrenik ez da zero.
>> Beraz, gaur egun malloc itzultzen.
Eta zer egiten dugu malloc itzultzen?
Zer itzultzen ezarri dugu.
X berdinak ezarri dugu zer itzuli da.
Beraz, zer da itzuli?
Honez 0x123 itzuli egiten dela geroztik memoria bloke-en helbide hori
besterik zeure esleitu.
>> Beraz itzultzeko 0x123 x orain ezarri beharreko joan 0x123 berdina bertan, pictorially,
marraztu maiz dugu benetako bat izatea x gisa arrow bloke hori seinalatuz.
Baina x besterik ez da helbide hori gordetzeko.
Beraz, gaur x null bada egiaztatu behar dugu.
Ez da nulua.
Malloc hori lortu nahi dugu.
>> Beraz, gaur egun izar x berdin 50.
Beraz, izar gogoratzen esan nahi duen helbide horretara joan.
Beraz 0x123 ari gara joan helbide horretara joan.
Beraz, horrek garamatza han.
Zer ari gara egiten helbide hartan?
50 gordetzeko ari gara.
>> Beraz, lerro honen ondoren, horixe da gauzak ez dira itxura.
Beraz, gaur egun jada ez da zabor sortu ez.
Orain badakigu 50a da helbidea bereziki delako
ezarri dugu hori.
OK?
Beraz, gaur egun ari gara f inprimatu.
>> Beraz, lehenengo ari gara izar x inprimatzeko.
Beraz, zer da izarra x?
Berriz ere, izar x esan nahi joan Gauza x dela seinalatuz.
Beraz, x gordetzeko 0x123 Go horretara.
50 lortuko dugu.
Beraz, inprimatu f.
Eta horrek esan nahi du 50 inprimatu behar da joan.
Eta gero, hori itzuliko du.
>> Eta gero, bigarren printf dugu.
Gara orain berea p.
Ez duzu ikusi bada, hori da, besterik gabe, nola erakuslea inprimatu duzu.
Beraz ehuneko i, garbi daukagu f, eta dagoeneko horiek guztiak.
Beraz ehuneko p, inprimatu erakuslea.
>> Beraz, x erakuslea da.
Beraz, ari gara, berez x inprimatu bada, ari zer da benetan barrutik inprimatzeko dugu
x, zein 0x123 da Beraz lehenengoa inprimatu f 50 inprimatu.
Bigarren inprimatu f va 0x123 inprimatu behar Yeah?
>> IKUSLEEN: Ba ehuneko erabiltzen dituzun x erakuslea inprimatu?
>> ROB: Beraz, garbi erabili behar dituzu x erakuslea inprimatu?
Beraz, ahal duzun, baina ehuneko x besterik ez da, oro har, bezala batzuk izanez gero
osokoa eta inprimatu nahi duzun it hamaseitar bat bezala.
Hori besterik ez nola egiten duzun.
>> Berriz, ehuneko d litzateke hamartar gisa inprimatu.
Hori duk honako ehuneko lortuko dugu d. i besterik osokoa da.
ehuneko p da, zehazki, erakusle da.
>> Beraz, x erakuslea da.
Ehuneko p erabili nahi dugu.
Baina ehuneko x lan izan.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Bai.
Horretarako Gutxienez beraz call-- dut ez zituen, hemen da.
Baina bi argumentu horiek ez dira nahitaez pila marko honen barruan
edozein aldagai lokalak batera printf gertatzen erabiltzen dituztela.
Eta gero, hurrengo deia orain printf pila marko printf barruan
ehuneko p backslash n eta edozein x-ren balioa da, eta horrek 0x123 da.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: zerbait inprimatu egingo da itxura hau.
>> IKUSLEEN: [INAUDIBLE].
>> ROB: Beraz bistaratzen helbidea inprimakia.
Itxura helbide bat bezalakoa da.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Zergatik da zer?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Zergatik da erakuslea hau 4 byte?
Beraz, ez dira sorta osoa 0-ren honen aurrean.
Beraz, benetan 0x0000000123 da.
64-bit sistema bat, ez luke izan zeroen gehiago sorta osoa.
Bai?
>> IKUSLEEN: [INAUDIBLE].
>> ROB: Beraz, lehenengo printf da print-- joan
>> IKUSLEEN: [INAUDIBLE].
>> ROB: Bai, nik inprimatzeko joan zer x seinalatuz.
Star dio zer da hau Gauza seinalatuz.
Hartu ezazu.
Beraz, zer da apuntatzen da?
50.
Hartu ezazu.
Horixe ari gara inprimatzeko joan.
, Berriz, hurrengo bat, gara besterik berez x inprimatzeko.
Zer da f-barrutik?
0x123.
Ados.
>> Eta gero, azkenik, librea daukagu.
Zer ari gara free pasatzen?
X pasatzen ari gara.
Denbora hori benetan bistaratzen dut pila-markoa da.
>> Beraz balioa pasatzen ari gara 0x123 free.
Beraz, orain doan badaki, eskubidea, Igo zeure behar dut
eta memoria hori doan.
Honez jada ez erabiliz zer helbidea 0x123 da.
>> Beraz, doan da askatu joan zeure duten.
Orain gure zeure hutsik dago berriro.
Memoria filtrazioak ez daukagu.
Orain doan itzuliko da.
Ohartu x dela oraindik 0x123.
Baina hori da, gaur egun ez du balio memoria.
Jada ez erreferentzia kenduta x hori behar dugu.
Bai?
>> IKUSLEEN: da itzuliko 0 erredundantea?
>> ROB: Is returen 0 erredundantea?
Bai.
Jarri dugu besterik gabe, hori ez delako itzulera bat aire dugu.
Beraz bezalakoa da, bai, aukera ematen dizu Return 0 besteak beste.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Beraz, x free ondoren, zer gertatzen bada saiatu gara erakuslea dereference?
Posible da ezer oker.
Posible da egingo dugun oraindik lortu 50.
>> Posible da, halaber, memoria hori dela gaur egun, beste zerbait erabiltzen da.
Beraz, portaera undefined.
Eta undefined ezer esan nahi gerta daiteke.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Ez, beraz, esleitu bada beste zerbait x.
Beraz, hementxe bada esan dugu x funtzioak malloc zerbait else--
malloc tamaina gertaera
ondoren, jatorrizko bloke hori Memoriarik ez da libratuko.
Eta ofizialki ditugu galdu zuen.
Memoria-leak bat da.
Erreferentzia guztiak galdu dugu memoria bloke horretan.
Beraz, ez dago modurik ez dugu inoiz askatu daitekeela.
Ados, beraz, ondoren, itzultzeko 0 bitartez egin.
>> Ondo da, beraz, pilaren gainezkatzea.
Zein da ideia hemen?
Beraz, gogoratu, zeure beheraka doa.
Stack up da.
Beraz, hau hitzaldia adibidea izan zen, Uste dut, non nagusia besterik ez da joan
deitu funtzioa foo hau, hau da, joan bera errekurtsiboki deitzeko baino gehiago eta
berriz.
>> Beraz, pila markoak dira joan lan bera zehazki.
Beraz, nahi nagusirekin hasiko da beheko pila marko gisa.
Gero nagusia da foo deitu, joan eta bertan pila fotograma bat iritsi.
>> Ondoren foo da foo deitu noa berriro ere, eta hori da iritsi
pila marko beste.
Eta gero berriro, eta berriro, eta berriro, eta berriz arte, azkenean, korrika egin genuen
zeure sartu.
Beraz, hau da, nola lortuko dugu pilaren gainezkatzea.
Eta puntu honetan, seg errua duzu.
Edo dituzu, benetan seg aurretik errua Puntu honetan, baina bai.
>> IKUSLEEN: Is core irauliko du seg matxura bera?
>> ROB: Beraz, ikusiko duzu segmentazio errua core iraultzeko.
Nukleoaren iraulketa bat denean lortuko duzu seg errua duzu.
Eta guztien iraulketa bat bezalakoa da Zure uneko memoria edukiak beraz,
saiatu eta identifikatu ahal izango duzu zergatik faulted seg duzu.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Beraz, segmentazio errua bitartekoak ez gainezkatzea pila bat.
Beraz, ez du zertan.
Segmentaziuo hutsegitea esan nahi du zarela modu batean memoria hunkigarri
ez behar duzu.
Beraz, gertatzen ari den bide bat da, gainezkatzea pilatu duzu, hunkigarri hasten gara
dela ez genuke modu bat memoria.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Beraz, begizta infinitu baten barruan.
Bezala, hau infinitua recursive bat bezalakoa da loop eta, beraz, beste bat lortuko dugu
pila aldi bakoitzean enkoadratzearekin.
Baina besterik ez erregular baten barruko infinitua one-- bitartean
ondo, ez dezagun are inprimatu f
Zerbait egin.
Whatever.
>> Ez ari gara lortzean joan pila marko beste.
Besterik ez gara begizta jarraitzea instrukzio bakar horretan.
Pila ez da hazten.
Recursive bakoitzak Izan ere, dei pila marko bat uzten dizkigu.
Horregatik pilaren gainezkatzea bat lortuko dugu.
Bai?
>> IKUSLEEN: Beraz, lortu esan duzu loop bitartean eta ondoren, [INAUDIBLE]?
>> ROB: Beraz, berriz, loop, barruan bada ez zen printf bat, oraindik ere egiten duzun
Ez errua seg.
Ez nuen nahi, gauzak nahastu.
Begizta litzateke izango.
Pila bakar bat egin ahal dituzu, printf du markoa.
>> Ondoren printf itzuliko litzateke.
Ondoren begizta zinela berriro.
Pila bakar bat egin ahal dituzu, printf du markoa.
Itzuliko litzateke.
Pila bakar markoa.
Beraz, zu ez infinitua hau eskuratzerakoan pila fotograma piling.
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Bai.
Beraz pilaren gainezkatzea hau gertatzen horietako bat ere ez delako
foo egindako deiak itzuli dira.
Beraz itzultzeko badugu, orduan genuke hasteko pila fotograma galdu.
Eta gero, ez genuke gainezkatzea pila.
Eta horregatik base kasu bat behar duzu zure funtzio pertsonalerako.
Bai?
>> IKUSLEEN: balizko tamaina eta Is zeure berdina pila
programa guztiak?
>> ROB: Gutxi gorabehera.
Da pilaren tamaina potentziala eta programak guztietan berdina zeure?
Gutxi gorabehera.
Badira to Ausazkotzea batzuk non pila hasten da eta
non zeure hasten da.
Asko izan gertatuko baduzu aldagai eta global gauzak, baliteke
kentzen espazioa batzuetatik zure arazoak izaten ari da.
>> 64-bit sistema bat, ia duzu memoria infinitua dute.
Ez dago besterik ez hainbeste.
32 bit eta 64 bit, arteko aldea esanguratsua da.
>> Oso bat asko gehiago lortzeko ari zara pila eta zeure espazioa 64 bit-batean
sistema ez delako, besterik gabe, gehiago helbideak erabili ahal izango dutela.
Baina banakako sistema batean, izango da gutxi gorabehera pila kopuru bera izango
eta zeure espazioa.
Guztiak eskubidea.
>> Beraz, azken gauza konpilazio da.
Beraz, prozesu hori jakin behar duzu.
Lau urrats handiak daude.
Beraz, lehenengoa izan beharko lukete gogoratzeko erraza izan.
Pre-prozesatzeko.
Bertan aurrez aurrizkia dauka.
Beraz, beste guztia aurretik dator.
>> Gauza gogoratu hash da.
Beraz hash definitzen eta hash barne hartzen horiek guztiak ere.
Horiek dira pre-prozesadore guztiak zuzentarau.
Hauek dira gauza dela pre-prozesadore ardura hartzen du.
>> Beraz, zer egiten du pre-prozesadorea?
Benetan muda gauza bat da.
Guztiak gai da dira horiek guztiak kopia, eta ebaki eta itsatsi eragiketak.
>> Beraz hash i0 dot h estandarra dira.
Zer da hau egiterakoan?
Honez grabbing i0 dot h estandarra da artxibatzen eta itsasten goiko sartu
lekuan hash barne hartzen dio i0 dot h estandarra.
>> Eta edozein hash definitu dugun ikusita, zer da hori egiten?
Bere hash duten balioa kopiatzea definitu bezala eta itsatsi definitzen da,
edonon balioa erabiltzen ari zarenean.
Beraz preprocessor besterik ez du benetan Testu sinple oinarritutako eragiketak.
Ezer smart egiten du.
Beraz, beste guztia da zailagoa da.
>> Beraz, orain preprocessor dela done, benetan konpilatu dugu.
Beraz, zer esan nahi du konpilatzean?
Orain ari gara c kodigoa joan muntaia kodea.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Bai, hori harrapatu dugu.
Beraz konpilatzean.
Muntaia c aurrera goaz.
Beraz, hau hizkuntzaren aldaketaren benetako bat da.
Berez konpilatzean esan nahi joan mailara hizkuntza handiagoa
mailako hizkuntza txikiagoa.
>> Eta c mailako hizkuntza altua da aldean muntaia.
Zer da muntaia?
Bere argibideak direla, nahiko askoz, zure CPU egin.
Baina zure ordenagailuan, oraindik ez Ez du ulertzen muntaia.
Eta zeroen bakarrik ulertzen du.
Beraz, hurrengo urratsa muntaia da, eta horrek dizkigun argibide hauek dakartzate,
zure CPU ulertzen eta benetan itzultzen du,
direnak eta zeroen.
>> Beraz bitarra muntaia C.
Baina ez daukat exekutagarria oraindik.
Beraz CS50 liburutegia uste.
Prestatu ditugu zuretzat bitar batekin CS50 liburutegi hau, eta bertan ditu GetString
eta GetInt eta hori guztia.
>> Baina cs50 liburutegia
eta bera ez da exekutagarria.
Ez du funtzio nagusia dute.
Besterik bitar-sorta bat da hori erabili ahal izango duzu.
Beraz lotzen nola ekarri dugu elkarrekin guztiak fitxategi bitarrak desberdin horien
Benetako exekutagarri batean.
Duten idatzi dezakezu One dot barrarik dot bat out.
>> Beraz, hau fitxategia bezalakoa da duzula idatzi zuen, - zure programa edozein dela is--
Slavia dot c.
Baina orain, konpilatu binary behera.
Beraz Slavia dot o.
Eta hau da gure cs50 liburutegiak bitarra.
Eta ari dira konbinatzen ari exekutagarri bakar batean.
Bai?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Beraz, lehenengo besteak beste, gogoratu, hash ere sartuko da, benetan bat
pre-prozesadore urratsa.
Baina, bereizita.
Oraindik ez duzu edozein funtzio erabiliz gero duen Zure fitxategi bakar at daudenean, ondoren,
ez, ez duzu behar ezer lotzeko guztia duzu geroztik.
>> Esan, printf horretan lotuta ari dira.
Inoiz printf erabiltzen baduzu, zerbait horretan bideratu behar dira
ez duzu idazten delako.
Eta, hain zuzen ere, printf automatikoki lotuta.
Badakizu zenbat komando-lerroan edo noiz egiteko idazten duzunean, zertan ikusten duzu
etenaren l cs50, eta horrek lotura dauka CS50 liburutegia?
Printf, eta horrelako gauzak, va estekatuko dira automatikoki.
Ezer beste zalantzaren bat?
>> IKUSLEEN: [INAUDIBLE]?
>> ROB: Linking?
Sorta oso bat daukagu fitxategi bitarrak ezberdinak.
Hau kanonikoak adibidea da erabiltzen dugun CS50 liburutegia da.
Konpilatu dugu, eta zuk emandako CS50 liburutegia honen bitar.
>> GetString erabili nahi duzun programan.
Beraz, joan eta GetString erabili.
Baina nire kodea binary gabe GetString, zure kodea konpilatu duzu
behera, ezin benetan exekutatu duzu zure programa delako GetString String da
oraindik ez dago guztiz definituta.
>> Besterik ez da, nire bitarretan estekatzerakoan duten GetString dauzkan orain, guztiak
eskubidea, benetan ezin dut exekutatu GetString.
Nire fitxategia osatu da.
Eta hau exekutatu ahal izango dut.
Bai?
>> IKUSLEEN: bihurtzeko estekatzailearen bitarraren exekutagarri?
Ez baduzu Beraz, nahiz eta beste eduki liburutegiak, ez litzateke oraindik ere izango da
itzultzeko beharrezkoa [INAUDIBLE]?
>> ROB: Beraz, exekutagarria da oraindik bitar.
Besterik osotasunean konbinatuz bitarrik sorta.
>> IKUSLEEN: Eskerrik asko.
>> ROB: Ez dago arazorik.
Beste edozein galdera?
Bestela, ari guztiei ezarri dugu.
Guztiak eskubidea.
Eskerrik asko.
>> [Txaloak]
>> IKUSLEEN: Eskerrik asko.
>> ROB: Bai.