[Powered by Google Translate] [Aste 3]
[David J. Malan - Harvard Unibertsitatea]
[Hau CS50 da. - CS50.TV]
Dezagun non utzi ditugu azken aldian norabidean gidatu me,
sintaxia baino pixka bat gehiago pentsatzen hasi
eta apur bat gutxiago uste minutiae-guztiei buruzko saiatzen
denbora pixka bat hartzen du, beraz, orain arte puntu dagokionez acclimate
eta parentesi eta kortxeteak kurtsibak,
gauzak apur bat hartzen hasteko kontzeptuala maila handiagoa
beraz, arazoak hasteko orain dugu hurrengo asteetan zehar hainbat konpontzeko
askoz gehiago inplikatzeko maila altuagoa kontzeptuala arazoak
eta apur bat gutxiago sintaktiko en zure oinak bustitzeko
eta eskuak zikin horiek azken asteetan sintaxia batzuk.
>> Beraz, gogora ekarri azken astean array baten ideia hori aurkeztu dugu.
Eta ingelesez array bat zer gisa azaldu daiteke? >> [Inaudible ikaslearen erantzuna]
Sentitzen dugu?
Bilduma bat? >> [Inaudible ikaslearen erantzuna] >> Ados, ona da.
Elementuen bilduma. Beraz, Scratch-en array ikusi genuen.
Gertatu duzun pset erabili 0 Scratch-en zerrendak gauza arrastatu ahal bada
laranja eta bananak, sartu ordenatzen inbentario bat bezala,
mota horretako zer array bat da.
Eta gero teknikoki, benetako ordenagailu baten testuinguruan,
array bat besterik ez da, memoria zatia alboko.
Beste era batera esanda, byte bat baduzu, byte beste gero, orduan byte beste, orduan byte beste,
eta byte horiek marrazteko irudi bat bada,
Atzera itzuli ziren itzuli. Hau da, zer esan nahi du alboko dugu.
>> Beraz, byte multzoko 1, ondoren, 2 eta, ondoren, 3.
Horrek ez du esan nahi hemen, hemen, hemen, hemen.
Zatia 0 edo gehiago bytes Alboko array bat da.
Beraz, zer dira erabilgarri?
Gogorarazten gordetzeko pertsona quiz kalifikazio adibide contrived sort hau izan genuen programa batean
zure quiz batez bestekoa kalkulatzeko, ikastaro batzuk
eta gogoratzen programa hori idatzi ezin izan dugu aldakorreko quiz1 geratuko.
Ondoren deitu quiz2 beste aldagai bat izan dugu.
Baina gero 3 balitz galdetegiek klase honetan, quiz4.
Edo badago astero galdetegi bat izan zen, quiz5 izango litzateke, quiz6, quiz7.
Beraz, aldagai horiek guztiak barruan deklaratu nahi duzun nagusiak
edo zure programa nonbait,
eta ikuspegi arazoa, erraza da, kopiatu eta itsatsi arren,
da, besterik gabe bihurtzen da oso azkar unwieldy.
Jainkoa forbid benetan, 30 galdetegiak edo 50 galdetegiek.
Batxilergoko estilo eguneroko pop quiz bezala bada,
ondoren, ridiculously aldagai ari deklaratu zerrenda luze bat besterik ez duzu,
eta hori guztia oso azkar lortzen kontrola.
Itsusi da, mantentzeko zaila da, eta, beraz, askoz errazagoa da typo egin
lortu izanez gero zenbaki 1 ostalaria nonbait zure programan.
>> Beraz, array baten ideia sartu dugu horren ordez.
Eta gogoratzen jarri du martxan, honen antzeko zerbait apur bat egiten dugu programa honetan.
Gaur egungo Iturria 3 Astelehena direktorioan sartu me
eta ireki array, azken aldiz ikusi genuen.
Eta nahiz eta ez ziren berriak C trikimailuen pare bat hemen,
horien artean, konstante baten ideia,
gogoratzen deklaratu karroza bat baino gehiago funtsean, sintaxi honen bidez:
nuen, eta ondoren aldagaiaren izena, eta gero karratu kortxeteak erabili dugu benetan, lehen aldiz,
eta zer egin duten karratu giltza barruan eraginkortasunez zenbaki bat jarri zen.
Baina zenbaki bat jarri ordez, letra larriz hitza, galdetegiek jarri dut.
Eta zer galdetegiek bezala letra larriz hitz bat jarriz motibazioa
eta, ondoren, linea 17-en trikimailu erabiliz hemen benetan zenbaki bat eman hori?
Zein motibazio bertan? Bai.
>> [Inaudible ikaslearen erantzuna] >> Zehazki.
Nahi dugu hori 2 balioa aldatu nahi izanez gero, besterik ez dugu aldatu, leku 1
kontuan hartu delako, nahiz eta ez dut gogoratzen zer programa hau egin zehatz-mehatz,
baina besterik ez duzu gaingabetuak bada galdetegiek ikusten duzu, galdetegiek.
Galdetegiak, behera hemen gehiago galdetegiak ikusten duzu.
Beraz, ez bada, ez dugu etengabe, zorrotz erabilera definitzeko,
idatzitako genuke 2, ondoren, 2 eta, ondoren, 2 eta, ondoren, 2, eta hori gauza ederra da. Bezain zuzena izango litzateke.
Baina demagun datorren urtean 3 galdetegiek dugu CS50.
Joan behar dut eta eguneratzeko kodea Beraz, konpilatu behar dut,
baina arazoa da zerbait ergelak ez bada, ahaztu I 1 2 aipamen bezala
eta plug ahaztu 3, programa osoa oso ondo apurtu.
Beraz, arazoak eskatzen ari gara.
>> Beraz, konstante baten ideia da datu-pieza batzuk factoring buruz,
ote den kate bat edo char edo mugikor bat edo dena delakoa,
eta geratuko da, beraz, leku 1 gehiago erraz alda ditzakezu etorkizunean.
Eta gainera, Egia, pixka bat errazagoa bada besterik ez delako uste duzu irakurri,
galdetegiek da, edo are gehiago izan dugu berrizendatu NUMBER_OF_QUIZZES bezalako zerbait
edo zerbait gehiago esplizitua.
Kodea apur bat gehiago, zer egiten ari da bistako bihurtzen da,
eta apur bat gutxiago multzoko 2 esan nahi gerta liteke galdetzen duzu.
Etengabeko Beraz, zuen ezer funtsean egin array.
Array karratu giltza horiek modu sartu.
>> Beraz, konturatu linea 23 erabiltzaileak eskatzen dugu, "Zein izan ziren zure quiz partiturak?"
Ondoren, besterik ez dugu begizta horrek, itxuraz, bere kalifikazio erabiltzaile galdetzen. Nola?
0-tik 2 iterates. Eta 2 diot galdetegiek txanoak guztietan dagoelako une honetan 2.
Beraz, 0-tik 2 iterates eta gero bistaratzen out Quiz # zerbait zerbait,
eta, ondoren, GetFloat erabiltzen da erabiltzaileari balio bat lortzeko.
Beraz, sintaxia berri bakarra beste pieza Asteazkena astetik.
Nahi duzun zerbait array horretan kokapen jakin batean gorde nahi baduzu,
erabili berriro karratu parentesi artean.
>> Beraz, dikotomia apur bat dago hemen.
Karratu parentesi artean erabiltzen duzun lehen aldian
array, nola handi izan nahi duzu zehaztu erabili nahi duzun.
Baina testuinguru honetan hurrengo hemen non berriro enplegatzen dugu karratu parentesi artean hauek
array hori esan nahi du non balio batzuk jarri nahi duzun?
Eta hemen bereizketa testuinguru adierazitako daiteke.
Iragarki hemen datu-mota bat dugu, eta, ondoren, aldagai baten izena dugu,
ondoren, gure karratu giltza dugu, barruan puntu eta koma zenbaki batekin. Dela.
Beraz, adierazpen bat da.
Karroza grade2; bezala nahiz egin izan dugu karroza grade1 bezalako zerbait da;
baina berriro ere, oso azkar, modu gehiegi kopia, itsatsi sartu devolves,
beraz, ordez sinplifikatuz besterik ez dugu, esate baterako,
Horrek esan nahi du aurrerantzean kalifikazioa bracket 0 gorde daiteke,
kalifikazioa bracket 1 gorde daiteke beste dugu,
baina zer I goof bada, eta, esate baterako, nire loop doa hain urrun
Adibidez, hau baino txikiagoa edo berdina egiten dut,
abisuaren aurreko bug baten iturri izan zen
den eraginkortasunez esan nahi du batzuk begizta honen hirugarren ustekabeko iterazio
Parentesirik 2 erabiltzen dut. Eraginkorrean, hemen zer gerta liteke? Sentitzen dugu?
[Ikasleak] ordezkatu behar da. >> Va egin behar du?
Zer aldatuko litzateke?
Hau da, hitzez hitz esaten ordezkatzeko balio bueltan GetFloat kokapena 2.
Baina arazoa da nola big istorioa Puntu honetan array da?
[Inaudible ikaslearen erantzuna] >> array da, oraindik ere, tamaina 2 bakarrik
array delako, aldagai edozein bezala izendatu zuten lehen aldiz, erabili aurretik,
eta hemen zehaztu delako konstante 2 kalifikazio jarri naiz dut joan behar dut.
>> Baina gogoan, ordenagailu zientzialari 0 hasita.
Beraz, kokapena array horretan lehen parentesia 0 da.
Hurrengo kokapena 1. Gauza hau da inoiz beraz apur bat urrunegi alde.
Beraz, beste era batera esanda, egia esan nuen array hau -
eta nola Coopera Gurekin hemen ikus me -
array bat daukat, besterik gabe ditudan honela marrazten
eta espazioa 2 elementu esleitu dut, hau marraztu dezake I hau atsegin memoria
non mihise zuri handi hau.
Besterik ez da RAM dut nire ordenagailuan, RAM Kontzertu bat, 2 RAM kontzertuak, edozein izanda ere,
baina 2 kaxak hauek orain banaka mugikor bat, 32 bit.
Beraz, 1 zenbakia jarri dut hemen 1.0 bezala eta, ondoren, beste zenbaki bat jarri dut hemen 3,2 atsegin dute
baina gero parentesirik 2, zerbait jarriz hemen bezala egiten dut.
Eta irudian dioen bezala, ez dago ezer han.
Sort da inoren lurralde atsegin dut ez delako sistema eragilearen eskatuko
Hirugarren galdetegi hau me emateko.
Nuen hirugarren galdetegi hori nahi izanez gero, egin behar izan nuen behar forethought
geratuko da sistema eragilearen galdetu galdetegiek ez 2
baina horren ordez berdinak 3.
>> Beraz, beste era batera esanda, argazki eraginkortasunez dugun esku itxura hau hemen.
Honek berriro inoren lurra da. Ez dugu hobeto saiatu balioak idatziz hemen.
Baina, berriro ere, ordenagailua delako zientzialariek, 0-tik,
kokapena honi buruz hitz array, ustezko kokapena 0
hau da, ustezko kokapena 1 izan behar duela, eta hori ere ez da existitzen
besterik ez dugu eskatu delako sistema eragilearen 2 lekuak, hala nola.
Duten beste hizkuntza batzuetan aldez aurretik programazio esperientzia duten Beraz,
hori ez da beti array edo deitu bektoreak gauzak gertatzen den jakin daiteke.
Izan ere, mantendu dezakezu gehituz eta gehituz eta gauzak gehitzen array
Egia, Scratch gaitasuna izan dugu, eta oraindik eman hemen badirudi
C ere askoz ere esplizituki programazioa.
Bakarrik da eta ordenagailua oraintxe bertan, eta ordenagailua baino ez da egingo
zer egin esango dizu.
Beraz, bada esan besterik ez duzu 2 karroza emateko modu line 22 Hemen,
hori guztia lortzeko ari zaren sistema eragilearen: espazioa 2.
>> Beraz, gero eta gehiago dira, zure programak array dagokionez buggy noizean behin.
Piztia izaera sort Horren bidez, guztion fallible dira,
eta uneren batean oso litekeena da zure array muga gainditzen indizea duzu.
Eta hori besterik ez joan bracket zerbait esaten modu fancy
eta beste zerbait izan zen, zenbaki bat besterik ez too big. Zure array mugetatik haratago joan zara.
Baina goitik da.
Programa honen gainerako benetan ezer ez funtsean, array zerikusia du.
Denak da informatika batez bestekoen simple aritmetikoa batzuei buruzko.
Beraz, hemen izan behar, hau loop hemen lehen aldakorra izeneko batura: 0 hasieratu.
Ondoren, batetik bestera joateko 0-tik 2 dugu berriro, eta gehitu summation aldagaia dugu
Ith kalifikazioa, eta, beraz, parentesia 0 ondoren parentesirik 1.
Eta gero, nahi duzun eskola kalifikazioa egin batez bestekoa kalkulatzeko,
hartu besterik ez dugu batura hori, zatitzea galdetegiek kopuru osoaren
eta, ondoren, neurri ona funtzio bat hemen izeneko txandan deitzen dugu.
>> Orain, bat alde batera utzita, zer linea 34 parenthetical int honekin asko da?
Etorri izan daiteke dagoeneko atalean, ez dute benetan hitz formalki hemen
baina zer int hau parens ziurrenik egiten da? >> [Inaudible ikaslearen erantzuna]
Bai, casting edo typecasting dagokio,
Horrek esan nahi du, 1 datu-mota hartu eta bestera bihurtzeko.
Ezin duzu hau egin datu-mota guztiak, batzuetan, pixka bat arraroa izango delako.
Baina kasu honetan, txanda balioa bueltan mugikor bat da
zeren, azken finean, float dut hartu eta zenbaki bat zatituz 2 bezala,
Mugikor bat itzuli dut.
Baina eskola kalifikazioa jendeak ez benetan nahi izan zen, batez besteko 93,4 ezagutu
inoiz ziren konturatzen delako izango dute, beraz, 95 puntu hori biribiltze ixteko.
>> Beraz, guztiontzat int ordez erabiltzeko biribiltzeko hurbilen int nahi dugu,
kasu honetan, 94 izan ondoren puntu gabe.
Beraz, trikimailu matematiko txiki bat besterik ez da.
Eta itzuli gara galdaketa nozioa inplikazio izan delako,
aurkitu ez baduzu dagoeneko, arazoa ezarri 2.
Array bat orduan, pentsatu ahal izango duzu - egun osoan irribarrea me.
Itxura hau atsegin marraztu irudi bat bada,
baina gakoa da tamaina hori ere zuk aukeratutako
eskatu duzun sistema eragilea.
Edozein galdera ondoren, array on? Bai.
[Inaudible ikasleak galdera]
Ah, galdera ona.
Galdera da, zer gertatzen array 0 null? Testuinguru honetan, ez da existitzen.
Hori bakarrik, kateak, etorri une bat besterik ez gara testuinguruan badago.
Baina array bat, kasu honetan bezala, duzun guztia lortzeko zer sistema eragilea eskatzen duzu.
>> Eta bat alde batera utzita, hau izan unclear kausituko,
Sistema eragilearen esaten dizu mantentzen dut, galdetu sistema eragilea.
Sistema eragile bat, ezagutzen ziurrenik duzun bezala, Mac OS, Windows, Linux da.
Funtzioak GetFloat bezala deitzen ari zaren
edo kalifikazio bezalako aldagaiak deklaratzen,
egunaren amaieran eraginkortasunez ari zaren beste norbaitek emango dizu memoria hori eskatuz
dugun bezala, programatzaileak delako aspirante
ez daki nola benetan fisiko memoria sarbidea.
Baina norbaitek ez: sistema eragilea.
Beraz, gainera gurekin ikonoak eta menuak eder eta karpetak aurkeztea eta atsegin
zure mahaigaina ikusten, Mac edo PC ala ez,
sistema eragile maila baxua eguneroko gauzak ere egin,
gigabyte kudeatzeko stuff oso teknikoa
memoria edo 2 gigabyte duzula, CPU duzula kudeaketa, eta abar.
Beraz, kodea idazten ari zaren,
Benetan zauden Pribatutasun zure sistema eragilearen zentzu horretan.
Minimizatu behar dut. Guztiak eskubidea.
>> Beste array buruzko galderak?
Ez? Ongi da.
Beraz, trantsizio naturalean array pixka bat ezagutzen duten gai bat da, benetan.
Eta inoiz begiratu dugu, beraz, labur-labur, azken une honetan ere.
Asteazkena Adibidez kate bat izan zen.
Katea Adibide honetan pretty simple programa bat izan zen,
eta benetan Nik sinplifikatu da gaur egungo helburuetarako lerro pare bat.
Guztiak ez line 19 erabiltzaileak kate bat lortzeko, deitu s aldagai batean gordetzen.
Ondoren line 22 aurrerantzean itxuraz hori kate 1 lerroko izaera inprimatzeko.
Baina, nola egiten ari da hau?
Aldagai i deklaratzen ari gara, 0-berdintasuna,
eta hau antzinako ohitura bihurtzen ari da orain.
Ez genuen ikusi asteazkena arte, baina infer mota ahal izango duzu, bere izena
strlen besterik ez itzultzen denean zer ematen da? Katearen luzera.
Beraz, bada kate bat pasatzen dut, aurrekontu-unquote DAVID
espero da me itzuli delako DAVID 5 zenbakia.
Beraz, bere bizitzaren helburua da kate bat hartu ala ez, gogor kodetuta duzu
edo kasu honetan aldagai gisa sartuta dagoela, argudio gisa,
eta zifrak zer kate horren luzera da.
>> Beraz, orain notazio batzuk hemen ari gara mailegu quiz aurreko adibide.
Honek ez du ezer karroza batekin, galdetegiek zerikusirik ez dago ezer,
baina bihurtzen da zuri gezurra da dugu dugu aste 1 diozu geroztik
kate bat ez dela benetan existitzen C.
Egunaren amaieran katea A array bat besterik ez da, benetan.
Byte array bat, beraz, byte, byte, byte, byte, zein gogoratzen da 8 bit besterik ez da,
zatia memoria, memoria zatia, memoria zatia, beraz memoria zatia.
Eta bide kate bat da inplementatu
Hemen lehen karaktere gisa jarri da,
gero hemen, eta gero hemen, eta hemen, volver ordenagailuaren memoria Itzuli.
Beraz, nahi duzun ortografia HELLO bezalako hitz bat izanez gero, 1 karaktere H jarri nahi duzun,
ondoren, E, ondoren L ondoren, L, ondoren O - guztira 5 karaktere - nonbait zure ordenagailuaren RAM.
Baina gakoa xehetasun hemen ari dira itzuliko itzuli itzuli itzuli egingo da,
eskubidea, bata bestearen ondoan.
Noiz esango dizut s [i], ingelesez zer da hau me ematen?
Zer esan nahi du s [i] irudikatzeko kasu honetan? Bai.
>> [Ikasleen] katea karaktere Ith. >> Zehazki. Katea karaktere Ith.
Orain, 0 etan hasiko da, nire per i joan loop hemen,
baina ona da hori guztia hasten 0 hasita duelako.
Beraz, s [0] letra H adierazteko HELLO bezalako hitz batean,
s [1] E bezala hitz batean letra ordezkatzen HELLO bezala, eta abar.
Eta zer begizta honen iterazio bakoitzerako egiten badirudi dugu
pertsonaia da aldi baterako Ith gordetzeko, c izeneko aldagai bat besterik ez da char bat,
eta, ondoren, inprimatzeko ari gara c
beraz, honako hau da programa hau duenaren egun amaieran.
Iturburu direktorioa sartu nintzen eta katea1 bada egiten dut, eta aurrera joaten naiz, eta exekutatu katea1
eta, ondoren, hitz bat idazten dut HELLO, Sartu bezala, guztiak ez inprimatu 1 karaktere aldi berean.
>> Beraz, fintasun aukera bat dago hemen.
Mota, lan gehiago egin dut, nahiz eta argiagoa da agian modu honetan, behar baino.
Zein kodea hemen line ziurrenik bota dut kanpoan guztira? Bai.
Line 24. 24 linea, aldagai c deklaratzen dut.
S izaera Ith naiz gordetzeko da, baina, ondoren, c erabiltzen dut hemen.
Beraz, c naiz erabiltzen eta, beraz, ez dut atsegin, besterik gabe bota line 24 urrun sentitzen dut.
[Inaudible ikaslea comment] >> Zehazki.
Beraz, programak diseinatzeko buruz hitz egiten denean,
nabarituko kodea sinplifikazioa arina, hori besterik ez da irakurgarria,
baina konturatzen da s aldagai bat, bere datu-mota, array bat da
s, beraz, [i] besterik ez da berehala, kate horretan izaera Ith itzuli egingo da.
Eta nahi duzun inprimatu nahi izanez gero, isuna.
Besterik ez duzu% c erabiltzen ari zaren ez delako kate bat inprimatzean
pertsonaia bat ari zaren inprimatzeko kate batean, eta hau ere Ith karaktere inprimatzen eragin du.
Eta gogoratzen Ezberdintasun bakarra benetan astetik printf erabiliz
asteetan, berriz, zerbait super simple past genuke
Ondoren,% s biltegian bezala kate bat hemen izen-abizenak,
gara gaur egun urpekaritza kanpaia azpian apur bat sakonago eta esaten,
ez inprimatu katea; inprimatzeko karaktere bertan.
>> Beraz, zerbait pixka bat egin ahal izango dugu han 1 beste delako - ez bug
Programa hau da, eskubidea delako, baina zerbait ergelak egiten ari naiz
labur-labur aipatzen dut asteazkenean.
Baina pentsatzen, nola izan programa honen diseinua hobetu are gehiago? Bai.
[Inaudible ikaslearen erantzuna] >> Oh, ona da.
Beraz, gogoratzen izeneko bigarren aldagai bat n azken aldian sartu garela,
Badirudi kontra geure burua nire helburua delako bigarren ago
izan zen, besterik gabe, eta gola alferrikako gisa aldagai bat bota,
baina gogoratzen asteazkenean egin dugu.
Aldatu dut loop benetan koma bat hemen, eta ondoren n = strlen
eta, ondoren, hemen n <i, eta gero egin nuen nire gehikuntzak egin nuen.
Zer da funtsezko irabazia naiz dut nire Hasieratzea aldatzen hau lortzeko
eta nire egoera hau orain? >> [Inaudible ikaslearen erantzuna] >> Zehazki.
Ez dut strlen gogorarazi berriro, eta behin eta berriz gogoratzen delako nola loop lanak.
Nahiz eta zailagoa begira hasten dira,
gogoratzen lehen puntu eta koma aurretik gauza Hasieratzea gertatzen, behin da.
Hala ere, egoera erdi-erdian dago,
eta hau lortzen hautatuta begizta bidez joan den bakoitzean.
>> Beraz, ergelak-mota eskatzen ordenagailua galdera bera behin eta berriro
Zer da HELLO luzera? Zer da HELLO luzera? Zer da HELLO luzera?
dugu gaur ikus ahal izango delako, eta asteazkenean, hau da, zalantzarik gabe, denbora behar du,
eta ez da denbora erabilera oso ona bat irudikatu nahi delako kate baten luzera
benetan ahalegin apur bat hartzen du.
Ez da berehalako, hizkuntza batzuk da.
Beraz, hau aldatuz n, prezioa ordaindu behar dut zer?
Merkataritza-off bat ikusten ari gara hemen.
Denbora aurreztu ahal izango dut, ez madarikatua galdera bera eskatuz behin eta berriro,
baina me kostua zerbait, hau da, zer da?
>> [Ikasleak] memoria kopuru jakin bat galtzen duzu. >> Zehazki. Me kostua memoria pixka bat egingo da.
Beraz, kasu honetan niri zer kostatzen da?
Another 32 bit n int bat besterik ez da delako, hemen hitza int engaiatuko gisa.
Baina hori ados?
Egia, ziurrenik ados uste duzulako,
longer katea da, eta denbora gehiago behar galdu dut
strlen deitzen behin eta berriro eta berriro delako joan
begizta-iterazio bakoitzeko.
Eta egun hauetan, nire Mac 2 RAM kontzertuak, egun hauetan 4 RAM batzuetan kontzertuak.
4 byte horiek jasan dezakete dut benetan Azkartu uste dut.
Baina hau ez da merkataritza-off bat eta gai bat benetan programazioa eta informatika
inoiz ez benetan doan ezer.
Nahi duzun zerbait hemen hobetu nahi izanez gero, ordaindu, bestalde, nolabait behar duzu.
Space versus kasu honetan.
>> Beraz, hori guztia zerbait hau atsegin críptica aldera igotzen
horrek, ziurrenik duzun bezala figured out orain, benetan dio?
[Inaudible ikaslearen erantzuna] >> Bai, eta, beraz, hau da, ziur zure Ovaltine edan,
benetan izeneko algoritmo bat ROT13, ROT 1-3 erabiliz,
besterik gabe esan nahi du horrek biratu letrak 13 plaza guztiak,
Horrek esan nahi du A eta, ondoren,, gehitu 13 da, eta dot, dot, dot joan
13 letra kanpoan modu guztiak, egin gauza bera B eta C eta D, eta abar.
Eta hala bada benetan bihurtu dugu hau hemen 13 leku aldaketa bat erabiliz,
itzuliko gara apur Ralphie izan, izan zen, ziur zure Ovaltine edan.
Baina orain arazo ezarri 2, gutxienez, edizio estandarra,
ez hau zeure burua enciphering mota
eta nolabait hau atsegin dute sarrera hartu eta, edo desenkriptatzeko enkriptatzeko dugu.
>> Beraz, hauek oinarri ordenatu horrek garamatza aukera hori?
Dezagun hirugarren Adibide honetan hemen begirada bat.
Lehenik eta behin, ASCII deitzen zaio. Zer esan nahi du ASCII erreferentzia itzuli?
Informazio Trukakor American Standard Code,
esaten modu benetan luze bat da? Zer da ASCII?
[Inaudible ikaslearen erantzuna] >> Zer da hori? >> [Ikasleak] pertsonaia mapa bat. >> Pertsonaia mapa.
Maps-en besterik ez zenbakiak letrak mundu ditu normalizatua delako
zer egin zenbakiak letrak beraz, guztiok ordenagailuak erabili ahal izango dira,
eta gure programak besterik ez dira bateragarri orduan inprimatzeko gauza pantailan.
Beraz, gogora ekarri 65 gertatzen den A irudikatzeko, 97 gertatzen minuskula bat irudikatzeko.
Eta, beraz, hau simple programa hemen ASCII Izan ere, horren abantaila hartzen ari da
mundua ezagutzen duten kapitala A 65 - eta besterik ez da mapaketaren inprimatzean.
>> Beraz, kode hau sartu dugu murgiltze aurretik, ireki terminal-leiho bat sortu ordez me utzi.
Dezagun aurrera eta ASCII egiteko, eta, ondoren, dezagun aski da hori besterik ez irteera hondatzen.
Eta ez besterik ez da hau: taula oso handia dela esaten dit hainbat kodeak guztiak
hainbat gutun guztiak.
Beraz, super simple programa bat, baina ez dut gogorra kodea irteera 52 lerro horiek:
26 maiuskulaz, minuskulaz 26.
Horren ordez, hau egin nuen programazioaren loops pare bat.
Iragarki hemen zer egin nuen.
Iterated 65 i 65 + 26 26 letrak inprimatu nahi nuen delako
English alfabetoa, i + + iterazio bakoitzerako, eta gaur egun nabarituko hau berriro.
It da, gure laguna typecasting errepikatze
Horren bidez, 1 datu-mota bihurtzeko duzun beste
zer programa zehatz honetan egin nahi dut?
Zenbakiaren zenbatzen hori delako nola hazi nintzen zenbaketa nahi dut, 65, 66, 67, eta abar
baina ez dut nahi besterik ez zenbakiak inprimatzeko.
Zenbakia gutun inprimatu nahi dut.
Zenbakia, B: A inprimatu nahi dut, baina hau egin ahal izango dut, aldagai berarekin zehatza.
Beraz,% c inprimatzen ditut pertsonaia bat biltegian,
Digitu bat edo telefono zenbaki biltegia% d.
Orduan, zer entxufatu 2 leku horiek I?
I i baliokidea pertsonaia plug lehenengo, eta, ondoren, inprimatu i out bera.
>> Beraz, nabarituko honetan ere, besterik gabe lan egiten du.
Just mugikor bat bota dezake I int bat
zenbaki erreal zenbaki oso bat joan,
Hemen int bat char bat, hau da, pixka bat arraro I -
ez da nahiko mundu errealaren gainean mapatzeko baina ordenagailuak
Karaktereen kanpaia azpian zenbaki bat besterik ez da,
beraz, inoiz hain esplizitua ari gara ari hemen ordenagailua, esaten,
printf, inprimatu ere ez, 65 gisa i inprimatu bere baliokidea zenbakizko gisa.
Eta teknikoki dut out ezta behar bihurtzen da.
Duela momentu bat izan dut egiten ari den esplizituki galdaketa
zer datu-mota joan eta nahi dut zehaztuz.
Baina dagoeneko nabarituko dut hau leku-marka% c
eta beste% c biltegian hemen.
Nahiz eta hau ez da int, ordenagailua konturatuko char bat,
kanpaia azpian int bat besterik ez da.
>> Beraz, bada benetan birkonpilatzeko I eta ASCII programa berrabiarazi,
nabarituko besterik ez oraindik funtzionatzen duen ordenagailua konturatuko korrespondentzia hau delako.
Orain, garrantzitsua da esplizitua casting egin karroza munduko ints
ez delako benetan ari zaren kalkulatzen erabakia:
bota du dezimal ondoren guztia.
Hemen ez dago benetan ezer ez urrun bota pertsonaia bat, zenbaki bat besterik ez da delako,
eta kate bat besterik ez da karaktere array bat da.
Beraz enkriptatze batzuk edo deszifratzeko ezartzeko orduan,
nola da benetan itzuli ahal izango dugu, eta zentzugabekeria hau atsegin dute zerbait,
Ziurtatu zure Ovaltine edan nahi?
Zer jakin behar badugu oraintxe dezagun suposizio gisa hartu gakoa,
ari garela gutun horiek guztiak biratzen, 13 zenbakia da?
Beraz, joan gutun B zigorraren Irteeran O,
Ziurtatu zure Ovaltine edan, bada B ez dudalako
eta, ondoren, C, D, E, F, G, H, I, J, K, L, M, N, O joaten naiz,
horregatik, gutun B enkriptatze bihurtzen O
besterik ez dut gehitu delako 13 da.
>> Beraz, desenkriptatu nahi dut, funtsean, I, O hartu eta, ondoren, 13 kentzen da.
Edo, Egia, ez da 26 alfabetoaren hizkiak delako, hau da wonderfully simetrikoa,
ere egin ahal izango dugu, besterik gabe gehitu 13 eta lortu dugu gutun B.
Baina nola Caesar honen antzeko zerbait ezartzeko
edo, oro har, benetan kateak manipulatzeko?
Gutun-B zer zenbaki bada?
Zer da gutun B? Beraz, 66 da, ezta?
Beraz, bada, gutun-A 65, eta letra B 66,
66, beraz, egin behar dut gehitu 13 da, eta horrek ematen dit 79.
Eta gure little-Cheat fitxa, 79 hain zuzen ere, O. aldera mapak gara
>> Baina izkinan kasu bat pixka bat da hemen.
Zer da, esan, gutuna Z?
Egiten dugu 66 + 25 bada, bide guztiak alfabetoaren amaieran, 91 gara.
91 + 13 ematen dit 104, eta zer asmatzen?
104 maiuskulaz letra bat ez berdinak.
Dezagun atzera jo apur bat Cheat fitxa hemen.
Berrabiarazi programa hau aparailua, aldez aurretik jakinarazi 104 bada, atzera joan I terminal-leihoa bada,
104 itxuraz minuskulaz h.
Beraz, gako trikimailu batzuk hemen behar ditugu, ziur noiz hasten Z dugu
eta 13 gehitu dugu, ez dugu nahi gorde aurretik forja handiagoa eta handiagoa zenbakiak.
Zer egin nahi dugu?
Inguruan biltzea nahi duzu.
>> Beraz, izarrekin bihurtzen da, Nik ikusi ziurrenik atala orain edo arazo multzo zehaztapenak bera
konturatu ez dagoela C beste operadore ere ehuneko seinale bat da hau da,
baina erabili dugu hemen, berriz,% leku-marka bat zehaztu,
ezagutzen, batez ere, arazo multzo 2 ere, ez da honen antzeko zerbait:
int x = y% z.
Dezagun aurkeztu just me hau oso forma generiko gisa.
Portzentaia esan nahi du programazio hizkuntza batean zer? >> [Ikasleen] Modulo.
Modulo, gainerakoa esaten fancy modu bat da.
Nahiz eta definizio bertan bereizketa txiki bat da,
horrek esan nahi du zatitzen y z, baina zatiketa horren emaitza ez itzultzeko;
ordez, itzuli gainerakoa.
>> Beraz, bada y benetan 3 eta z da benetan 2, 3 2 banatuta 1 1 gainerako batekin,
beraz, zer ez x benetan berdinak Egoera honetan? 1.
Hau soil bat, behe-mailako ideia hori.
Denbora pixka bat hartzen du your mind inguruan bilduta
seguru asko izan da, nahiz eta pixka bat izan da geroztik hondakinak buruzko zaintzeko
eta benetan zerbait purposeful
baina kasu honetan, simple Izan ere, kopuru handi bat joan ahal izango duzu 3 bezalako
kopuru nahiko txiki bat 2 eta, ondoren, bezala eraginkortasunez inguruan itzulbiratu
Gainerakoa 1 bezala balio txikiago bat erabiliz trikimailu bat eskerga izango da
bai Caesar antzeko zerbait eta beste gauza Vigenere hau erabili ahal izango dugu
arazoa ezarri 2, baina hau da seihilekoan zehar trikimailu errepikakor bat izango da.
Simple, gainerakoak eta, oro har, ideia sinple
itzulbiratu inguruan gaitu ahal izateko.
Eta hasten gara gehiago jolasten array gisa, hasten gara jotzen memoria bera,
hau da, gero eta gehiago indartsu bat trikimailu bihurtuko du.
>> Edozein zalantza ASCII edo array gisa kateak ordezkaritza? Beraz,
Eta hartu dugu sortu 1 Notch gehiago. Bai.
[Inaudible ikasleak galdera] >> Ona galdera.
Zer esan nahi du aldagai baten aurrean izartxoa du esan nahi du?
Utzidazu atzeratzeko hori xehetasun edozein erantzunez,
baina hori erakuslea izenez ezagutzen den gaia aipatzen du.
Erakusleak, memoria egin behar dute, eta benetan ari gara gaur
eztabaida hori lehen urratsa hartu,
baina orain, izar hori ez da existitzen asmoa me
eta kateak kateak deituz char * erabiliz beharrean jarraituko dugu,
ziurrenik duzun ikusi aurretik eta pantailan une bat besterik ez dut jarri teaser gisa.
Beraz, itzuli dugu hori zehatz-mehatz modu asko baino gehiago izango da ziurrenik nahi.
Azkenean, ez da gaur egun. Bai.
>> [Inaudible ikasleak galdera]
Zer testuinguru zeinua emateko pertsonaia bat izan duzu? >> [Ikasleak] Bai.
Beraz, lehenespenez ez duzunean + bat jarri, zenbaki positiboak besterik ez direla.
Beraz, bada besterik ez 1 zenbakia idatzi, positiboa 1.
Benetan nahi duzun balio bat ukatzea zehaztu bada,
literalki -1 zure teklatua.
Baina hau ziurrenik ez da zure galdera. >> [Inaudible ikaslearen erantzuna]
>> Ona galdera. Ongi da.
Hau, bildu dut, bug-mota batzuk sartu zuena
ziren zenbaki oso bat delako pertsonaia bat bihurtzeko,
baina, nolabait, negatiboaren got parte hartzen du,
eta, beraz, pertsonaia atera munged nolabait.
Beraz, oraingoz, utzi pixka bat oversimplify me gaia mota honetako gara itzuli arte.
Oraingoz, gauzak uste Modu honetan, eta hau oversimplification bat da.
Baina zenbaki oso bat munduan, zenbat bit behar duzu zure eskura?
32 bit duzu.
Eta horrela, orain arte, zenbaki osoen beraz dezakezu irudikatu kopuru osoaren hitz egin dugu
gutxi gorabehera 4 milioi guztira 32 bits delako,
Beraz, 2 da 32, eta, beraz, hori da, gutxi gorabehera 4 milioi.
Baina duela aste bat edo 2 ikusi genuen ez duzula benetan zenbaki-barrutia
0-tik gora 4 milioi.
Barruti gutxi gorabehera negatibo 2 milioi positiboa 2 milioi ordez doa.
Baina hau eta ondoren galdera begs, nola 2 negatiboa milioi ideia ordezkatzen duzun
utzi bakarrik negatiboa 1?
Oraingoz, oversimplify eta ezin dugu besterik ez esaten ari dugu ezkerreko bit erabili
32 bit horiek, eta 1 bada zenbaki negatiboa izan da,
eta 0 zenbaki positibo bat da.
Zenbaki negatiboak ordezkaritza duten sinplifikatu arazoa
zinen nahita clever eta karaktere bat zenbaki bat bihurtzen saiatzen ari dela
edo alderantziz, ez dago gauza, hala nola, pertsonaia negatiboa da.
ASCII, 8 bit bakarrik erabiltzen dituen, 8 bit gai horiek munduan,
eta ezkerreko bit ezer negatiboaren zerikusia du.
Eta besterik gabe, argi eta garbi izan behar du, ezkerreko bit diot,
gogoratzen genuen lehenengo astean, gure bit-adibide
gogoratzen marraztu dugun gauza 1001101 bezala, honen antzeko zerbait.
Bit ezkerreko esaten dut, besterik ez du esan nahi literalki I 1 ezkerrera idazten duzun guztiak.
Beraz, karaktere munduan negatiboaren kontzeptua ez da,
beraz, ezkerreko bit hori benetan zerbait ASCII, ezer negatiboaren zerikusirik ez du.
>> Eta testuingurutik kanpo zaila da zehatz-mehatz erantzun - Beraz, soinuak bezala
baina, nolabait, zure kodea ez zen ezkerreko duten bit nahasgarria balio negatiboa ordezkari gisa
izan zen benetan zati galdera pertsonaia.
Eta berriro ere, ordenagailuak benetan egiten baita zerbait apur bat fancier dut oversimplifying
besterik ez bit ezkerreko hori aldatzen 1 eta 0 versus zeinu negatiboa baino.
Ordez, Oraindik Google bitxia bada, erabili zerbait normalean 2 osagarria deitzen zaio,
hau da, pixka bat gehiago una aproximación sofistikatuak
baina ideia da, azken finean, gauza bera da.
>> Beraz, azken finean, Izan ere, zenbaki bat massaging pertsonaia bat izan da
edo alderantziz, baina zure kodea Izan ere, ez zen berri
1 bit horien mundu zenbakizko esangura izan.
Hori ez da kasua pertsonaia mundua.
Baina konpondu duzun bezala, kasu horretan, moot now soinuak. Beste galdera.
Ongi da.
Beraz, beraz, orain arte, idatzitakoa dugu programa guztietan parte hartu dute sarrera agian erabiltzailea
funtzio GetInt, GetString bezala,
edo duzun aurretik irakurtzeko bada, hainbat liburu edo erreferentziak online
duzu zuek scanf bezala, Egia, CS50 liburutegia erabiltzen dugu funtzio erabili izan liteke.
Hala ere, aste bat edo 2, benetan dugu erakutsiko dizu nola CS50 liburutegia da inplementatu
beraz, prestakuntza-gurpil horiek hartu ahal izango dugu off guztira.
>> Baina ez dago beste modu bat da erabiltzaile baten sarrera lortzeko izarrekin bihurtzen da.
Izan ere, geure buruari dira komando-lerroko argumentuak erabiliz
orain aste pare bat.
Exekutatu dugu Clang edo exekutatu dugu denbora bakoitza egiteko,
ez bakarrik idatzi clang ditugu, Sartu, ez dugu idatzi egin, Sartu.
Zer egin gure terminal windows gonbitean hitza ondoren clang normalean idatzi dugu?
[Ikasleak] fitxategi-izena. >> Fitxategi-izena, ezta?
Hello.c edo mario.c edo dena delakoa, dagokion fitxategi-izena da.
Eta, zentzu horretan, benetan zer egiten duzun eragina dituzun Clang portaera
zalantzarik gabe idatzi duten pertsonen Clang izan ez delako ideia txiki zaharra
izeneko mario.c urte geroago, programa bat idazteko.
Beraz, nolabait eragina izan duzu programa hori portaera
eta programa Clang zuela modu bat, hala nola, sarrera idatzi behar dela onartu dezakezu
gonbitan hitz gain erabiltzaileak hits aurretik Sartu.
>> Beraz, izarrekin bihurtzen da denbora pixka bat izan dugu gure programa ia guztiak geratuko
horrela hasi int main (void) - eta, ondoren, aurretik joan behar dugu
eta gure kodea idazten hasi zen.
Eta zorrotz batzuk izan genezake fitxategia goialdean,
baina ia guztiak gure programa, beraz, orain arte honekin hasi
nahiz atalean baliteke ikusi, liburuak, online erreferentzia
hori ez da, hain zuzen ere void izango dute.
Hau hartzeko modu legitimo int argc bat da eta, ondoren, kate argv [].
Beraz, gaur egun, zer da hau ulertuta?
Bihurtzen da argc horrek giza konbentzio bat da - foo deitu ahal izango duzu,
baina besterik ez litzateke askoz gutxiago irakurleak argi eta garbi -
argc izeneko nagusiak adierazten du zer funtzioa argumentu bat da?
Zer esan nahi du argc stand horiek ezagutzen?
>> [Inaudible ikaslearen erantzuna] >> Bai, argumentuak edo argumentua Aldaketa kopurua.
Gisa duten bezain sinplea da.
Zenbat argumentuak ziren programa hau pasa da?
Zer esan nahi du horrek?
Komando-lerroa bada exekutatu dut honen antzeko zerbait - clang mario.c--
argc Sartu hit I da, balio bat hartu, zertxobait confusingly, 2.
Beraz, izarrekin bihurtzen da argc argumentu Aldaketa da,
baina arrazoi historikoengatik, programa bertan izena Aldaketa horretan sartuta dago.
Beraz argc 2 clang mario.c idatzi nuen.
Zer esan nahi du argv eduki?
Lehenik eta behin, argv kate itxura da, baina ez da nahiko
Asteazkena azken gisa eta gehiago guztiak gaur egun delako,
karratu horiek parentesi artean adierazteko zer? Array bat da.
Array kopurua ez da, eta zentzu intuizioz egin behar
nork idatzi duela Clang urte, zalantzarik izan ez delako ideia
zenbat hitz Gurekin atsegin dute gonbitan idatzi Sartu sakatuz aurretik.
>> Beraz, kasu honetan hemen argumentuak array bat hartzen gisa deklaratu dute funtzioa nagusiak,
0 edo gehiago argumentuak.
Ez dute aldez aurretik jakin zenbat daude,
beraz, ez da karratu parentesi artean horien barruan zenbaki ez nahita.
Baina karratu parentesi artean daude ordenagailua kontatzea,
espero array bat.
Besterik ez da, argv azkarra argumentu bektore idazkera.
Bektorea A array esaten fancy modu bat da,
eta zerrenda bat edo bilduma esaten array fancy modu bat da.
Hori esan nahi du, beraz, gero hau atsegin nagusia idazten
ordez, nola egin dugu egiten iragan bi asteetan bezala,
zure programa komando-lerroko argumentu onartu du
beraz, ez da gehiago ez mario idatzi duzu eta, ondoren, sakatu Sartu,
ondoren, zenbaki bat idatzi zenbat bloke handiko piramidea izan nahi duzu,
eta sakatu Sartu berriro.
Ere ez dugu behar GetString gehiago edo GetInt edo GetFloat gai erabili.
Besterik ez dugu espero erabiltzaileari hitz horiek idatzi gonbitan bera
atsegin dute Clang egileek erabaki benetan gogaikarriak programa bat izango litzateke
Zure kodea konpilatu nahi izanez gero idatzitako lehen clang, sakatu Sartu,
ondoren, esan erabiltzaileari, idatzi izena konpilatu nahi duzun fitxategia,
ondoren, idatzi mario.c dugu, eta sakatu Sartu.
Baina hori da, zehatz-mehatz zer egin dugu gure erabiltzaileek aste pare iraganean egiten.
GetString erabiltzen dugu, eta programa horiek gonbita sarrera arte exekutatzen itxaron dugu.
Ez dituen kasua izan behar.
>> Beraz, hemen adibide honetan, gaur egun kate argv
eta hau ere oversimplification bat da,
prestakuntza gurpilak oso laster etorriko off.
Nagusiak adierazpen alternatibo hau idazteko modu egokia da
bihurtzen da delako zer, kate deituz mantentzen dugu benetan izar bat du,
Asteriskoa, bere definizioa benetako, baina hori itxura korapilatsu,
lehen nahasgarria da, eta, beraz, errazteko ordenatzen sinonimo bat sortzen dugu
CS50 liburutegia mapak char more user-friendly hitza katea *.
>> Beraz, dezagun benetan saiatu ondoren. Dezagun aurrera eta ireki gedit hemen.
Dezagun aurrera eta argv ireki 1.
Programa honek itxuraz bistaratzen argumentuak, baina termino ingeles,
kode hau begira, zer egin zehatzago esanda?
Mota komando a.out foo bar dut, zer bada lortzen nire leiho zuri-beltza eta inprimatutako?
A.out foo bar, Sartu.
Anima zaitez. Bai. >> [Inaudible ikaslearen erantzuna]
Good. Beraz a.out, linea berria, foo, linea berria, taberna, linea berria.
Zergatik da hau? Ahal izango dugu, zalantzarik gabe, une bat besterik ez baieztatzeko.
Kode Fluffy lerro baten antzeko zerbait da.
Bistaratzen linea berri bat besterik ez da, besterik gabe gauzak pantailan prettier egiteko.
Hau loop bat 0-tik errepikatzean on argc da,
eta, hau da, iterazio bakoitzean incrementing + +.
Beraz, hau da gaur egun inprimatu kate bat esaten,% s hau engaiatuko.
Argv [i] pretty askoz ere aurreko adibide ideia bera.
Aldakorra s deitzeko erabiltzen dugu, gaur egun izenekoa, arbitrarioki, argv.
Horrek esan nahi du, inprimatu Ith argumentua zen komando-lerroan idatzitako,
eta, ondoren, gauza hau guztia egin ondoren, neurri ona inprimatu beste lerro berri bat.
>> Beraz, ikus dezagun hau. Ireki me terminal leihoa.
1 argv konpilatu me, eta, gaur egun, argv exekutatu me 1, Sartu. Hmm. Ongi da.
Dezagun exekutatu foo bar. Interesgarria da. Baz.
Eta duzun inoiz bada galdetu zergatik idazten dut,
hau besterik ez da bat ere ergelak informatika konbentzio.
Mundua sarritan hitzak leku hitzezko behar.
Beraz, bada, string generiko batzuk buruz hitz egin nahi baduzu,
ordenagailu zientzialari esan ohi foo ausazko hitz bat behar dute,
ondoren bar esan dute random word dute bigarren behar izanez gero,
ondoren baz diote behar dute hirugarren hitz bat bada, qux esaten dute hitz bat behar dute laugarren
eta, ondoren, qux ondoren dator eztabaida handia erlijio konektatuta
Google irudikatu nahi beste arbitrarioak hitza izan behar dezakezu.
Baina horiek ez dute inolako zentzua,
foo bar arren, duzun Google, duten zentzua ez bada,
etimologia hemen zati da.
>> Beraz, hori guztia ondoren egiten da lerro bakoitzeko kate horiek 1 inprimatzeko.
Beraz, I ordez bada, ordea, apur bat fancier lortu nahi,
demagun ez, ez dut nahi lerro bakoitzeko kate bakoitza inprimatu;
Lerro bakoitzeko kate bakoitzean pertsonaia bakoitzak inprimatzeko nahi nuen.
Nola izan ordez egin dut hori?
Zer aldatu behar dut programa honi buruz egin nahi dut, ez da hitz bakoitzaren inprimatu nahi izanez gero
baina hitza letra bakoitza inprimatu letraz letra nahi dut,
hitza letraz letra eta gero hurrengo letra?
Nola ideia horiek konbinatu dugu, beraz, orain arte? Bai.
[Ikasleak]% c. >> Guztiak eskubidea. Beraz, nonbait behar dugu% c.
Good, ez dudalako nahi osoa kateak inprimatu, karaktere inprimatu nahi dut. Zer gehiago?
>> [Inaudible ikaslearen erantzuna] >> interesgarriak.
Beraz, bigarren dimentsio bat hemen sort behar dugu
zeren argv uste array bat da, baina kateak array bat da.
Baina, bezala, 15 minutu ago, zer kate bat? Karaktere array bat da.
Beraz, benetan, argv karaktere array baten array bat da,
karaktere array array bat.
Beraz, besterik ez kortxetea notazio bihurtzen da erabili ahal izango dugun. Beraz, egin dezagun hau.
19 on line begizta honen goiko aldean, batetik bestera joateko-i arte argc noa,
baina, ondoren, hau egin nahi dut:
for ezin dut erabili i.
Beste aldagai bat behar dut eta nahi dut batetik bestera joateko hitz duelako
baina gero ere hitz letrak baino gehiago
beraz, izan sort dut ardatz bertikala eta ardatz horizontala, kontzeptualki antzeko.
Beraz, int j lortzen 0, orduan j luze j baino gutxiago egin nahi dut, eta hau garbitu dut pixka bat.
Nola batetik bestera joateko kate batean letrak baino gehiago I? Hau egin genuen duela une bat.
Argv-Strlen [i]. Good.
Eta berriro ere eraginkortasunik eza, apur bat ari naiz egiten hemen ez n edo dena delakoa sortuz,
baina itzuli dugu hori.
>> Beraz, gaur egun j + +. Orain koska gehiago nahi izanez gero hemen daukat.
Zer nahi dut iterazio bakoitzean inprimatzeko?
[Inaudible ikaslearen erantzuna] >> Beraz, [i] me ematen du hitza.
[I] [j], sort matrize bat bezala.
Duzun dutenek math-y jatorri,
indexatzeko moduko are sakonagoa gara array-matrizea edo array honetan sartu,
2 dimentsioko egitura honetan.
Beraz, gaur egun zer gertatzen den ikusteko hemen. Ireki nire handiagoa terminal leihoa.
Argv 1 berrabiarazi me.
Eta izorratu dut hemen, too ikasgaia ona da ahaztu ere egin.
Inplizituki C liburutegi funtzioa 'strlen' geratuko mota 'unsigned
Ere ez dut jakin zer esan nahi duen gainerako, baina hau ikusi dut aurretik,
inplizituki geratuko.
Errore hau ikusiko dugu bakoitzean, zer du honek normalean adierazten?
>> [Inaudible ikaslearen erantzuna] >> liburutegi bat ahaztu dut goiko sortu. Baina minutu bat itxaron.
Normalean izorratu dut ahaztu dut CS50 liburutegi delako, baina hori ez dago.
Normalean izorratu dut Nik ahaztuta delako standard I / O.
Eta Egia, ez dut behar hau. Ez ari gara GetString gaur egun erabiltzen.
Beraz, zer naiz falta?
Liburutegia beste orain noizean behin deitzen string.h erabili behar dugu,
eta hau besterik ez da, oraindik gehiago standard I / O. ez diren funtzio duen beste liburutegi
>> Beraz, goazen nire terminal-leiho handi itzuli.
Ongi da. Orain, madarikatua, oker nengoen uste dut. CS50 liburutegia izan zen I erabiliz.
Beraz, hau konpondu ahal izango dugu, 2 modu bai.
Hartu ahal izango ditugu, prestakuntza gurpilak off oraintxe besterik ez Horretarako,
edo let mantentzeko sinplifikazio hori oraintxe mota, itsatsi itzuli honetan,
arazo hori konpontzeko, eta gaur egun itzuli terminal leihoa.
Beraz, argi eta garbi, CS50 liburutegia ez da bakarrik funtzio
keyword katea da, hau da, errore hori zergatik gertatu da.
>> Beraz, hemen goaz. Bai liburutegia gaiak konpondu dut. Sartu. Good.
1 argv, foo bar, Sartu. Bikain.
Beraz, inprimatutako 1 lerro bakoitzeko hitz bakoitzaren hizki bakoitza behar dugu,
horrek ez du programa bat oso interesgarria egin,
baina oharra, gaur egun, ez bakarrik hitz baino gehiago errepikatzean gaitasuna dugu
baina ere hitz banakako letrak, soinuak awfully ezagunak baino gehiago
hau atsegin kate batean scrambling letrak bezalako aplikazio errazena izango balitu.
Dezagun aurrera, eta 5 minutuko gure break hemen.
Eta itzuli gara, eraginkortasuna buruz hitz egiten hasten gara
duten gauza horiek hobeto egin ahal izango dugu.
>> Guztiak eskubidea. Itzuli gara.
Gure TFS bat bananagrams asko du esker,
karakteretan sorta osoa izan dugu gurekin hemen gaur egun
fisikoki incarnated plastikozko pieza txiki horiek,
eta utzi me zuri hau hutsik arbel proposatzen hemen nire ordenagailuan RAM adierazten du
laptop, desktop, edozein izanda ere - eta ez da asko itxura
hasteko badugu byte-tamaina txiki zatitan Tajadura RAM duelako,
dezagun arbitrarioki esan tamaina eta blurry dela adierazten duen zerbait
han, joan gara, eta utzi pixka bat zooma hemen
demagun single byte adierazten du zerbait tamaina.
Beraz, hain zuzen ere, ezin dugu egokitzen bytes, memoria honen barruan edo karaktereak sorta osoa,
erlatiboa tamaina hemen iradoki.
>> Beraz, demagun orain helburua, hau da, kate bat da memoria esleitu.
Nola ez hau benetan lan?
Programak idazten dugu, normalean dugu izan GetString erabiliz,
baina orain, argi eta garbi, ez dago beste kanalaren bidez erabiltzaileak argv sarrera eskuratu ahal izango dugu, hau da
komando lerroko argumentuak bidez.
Baina zer benetan joan kanpaia azpian?
Bihurtzen da deitzen badugu dezagun joan itzuli GetString funtzio - GetString
CS50 liburutegia, erabiltzaileari kate bat eskatuko zaizu,
zenbait testu mota - dezagun deitu HELLO.
Eta iragan bi aste esaten dugu GetString balioa itzulera
Izan ere, kate bat da, hitza HELLO bezala.
>> Baina, zer da benetan egiten GetString?
HELLO, Sartu erabiltzaile-motak, GetString da kalkulatzen,
ados, zenbat karaktere da hau? H-E-L-L-O.
Linux kasu honetan - Beraz, esleitu behar da, sistema eragilea eskatu behar da
gutxienez 5 byte HELLO gordetzeko.
Eta zer hasten ondoren, egin egingo du behin 5 byte horiek sistema eragilearen
HELLO finkatzeko Itzuli atzera.
Eta beraz, zer benetan GetString itzuli datuen zatia duen itxura da.
Baina, hau da, apur bat zehaztugabeak bihurtzen da delako ez dela bezain erraza
HELLO gordetzeko ordenagailuaren memoria
zeren demagun nire programa naiz I C idazteko orduan deiak berriro GetString
eta hurrengo hitza Erabiltzaile mota Bye da, Agur.
Beno, nonbait memoria hitza bye hori egokitzeko behar dut.
Ezin dut clobber HELLO.
Esate baterako, ez dut nahi, nahikoa da ordenagailu hau atsegin gainidatziz
baliteke dudalako oraindik ere hitza erabiltzen HELLO aldagai batean jatorrizko hitza
beste nonbait nire programan.
>> Beraz, B-Y-E amaitzeko beste nonbait memorian.
Baina konbentzioa normalean hurrengo kate esleitu
seguruenik, baina ez beti, azkenean eskuragarri hurrengo memoriaren kokaleku joan.
Eta ez badut memoria edozein eskatu sistema eragilearen
azken GetString izeneko I geroztik, odds hitza bye
eskubidea amaitzeko HELLO memoria hitza ondoren.
Baina puntu honetan, agian ikusi ahal izango duzu non potentzial arazo bat sortzen da.
Memoria hurrengo zatiak, besterik ez free ziren bytes hurrengo delako -
garbitu zuri arbel - ordenagailuaren memoria eskubidea HELLO ondoan izan ziren,
liteke bat-batean orain aldatu galdetu nuen lehen katea bezala sentitzen
Nik funtsean aldatu delako HELLOBYE da
ordez, nolabait, bye Irteeran eta HELLO amaieran demarcing.
>> Beraz, izarrekin bihurtzen da zer den benetan kanpaia azpian,
duten erreferentziak online edo atal edo liburu glimpsed
edo ez, guztiak ondo oraindik ez dagoela da, benetan, nahita demarcation
ordenagailu baten memoria hitzen artean.
Eta, hain zuzen ere, kasu honetan hemen, baino gehiago jarri bye ondoan HELLO
horren ordez, ordenagailuak karaktere berezi bat, null karaktere berezia, eta, beraz, hitz egiten du,
backslash 0 markatzaile bat irudikatzen den.
Beraz, luzea istorioa labur, gogoratzen diren karaktereak ASCII irudikatzen.
Besterik ez da, ASCII zenbakiak eta letrak arteko mapaketa
eta gutun horietako gehienak hasteko gutxi gorabehera 65 hiriburua A,
baina, zalantzarik gabe, out zenbaki oso bat edo bitar 0 zenbakia bihurtzen da,
eta bihurtzen da munduko erabaki luze, aspaldi, "zer ezagutzen duzu?"
"Let erreserba kopurua ez teklatua pertsonaiak edozein ordezkari gisa 0 -
"Ez da letrak, zenbakiak, puntuazio ez. 0 berezia da."
"Izaera berezia null da joan, eta idatzi \ 0 goaz".
Aldea besterik ez dugu idatzi bada 0, 0 pertsonaia bat da.
Gogoratu daudela kodeak ASCII 0, 1, 2, 3
pertsonaia 0 zenbaki 0 ​​desberdina delako.
Eta ikusten begiratzen itzuliz gero aste 1 ASCII buruz hitz egin dugu lehenengo dezakezu,
0 eta 1 eta 2 eta 3 eta 9 zuten beren ASCII kodeak.
Ez dira, coincidentally, bidez 0 9. Oso desberdinak dira.
Beraz, 0, besterik gabe esan nahi du "berezia naiz," eta \ 0 bitartez, literalki, "ez naiz 0 karakterea."
"Balio berezi hau, null naiz".
Beraz, benetan behar dut horietako beste bat ez dut akats bera birritan.
>> Beraz, hitza bye ondoren ari gara, halaber, null karaktere horietako beste bat behar du.
Utzi nire luma grab me hemen eta utzi marraztu azkar me beste \ 0
beraz, eskatu dut ondoren sistema eragilearen 2 kateak
GetString ondoren beste GetString dei bidez,
hau da, zer da benetan memorian.
Beraz, kate bat itzuli dut, benetan ari naiz back hori lortzean,
eta hurrengo kate dut, benetan ari naiz atzera lortzean.
Beraz Galdera hau begs, strlen, lehenik eta behin, zer egin behar da itzultzeko?
Noiz strlen deitzen diot nik katea s eta s HELLO erabiltzaileak idatzitako hitza,
zer egin dugu, jakina, esan HELLO luzera izan zen, duela minutu batzuk?
5 izan da, ezta? H-E-L-L-O. Eta hori da, hain zuzen ere, nola strlen lanak.
Gizaki normal bat kate bat izan zer luzera espero itzultzen da.
Baina, egia esan, nola big kaixo gordetzeko karaktere array da?
Benetan da 6.
Strlen Beraz, ez du aipatu Izan ere, hori duzu.
Kanpaia azpian ordenagailua da hain zuzen ere, 6 byte erabiliz 5 gutun-hitza bat gorde nahi du,
eta hori egia da, ez du axola zenbat denbora du hitza.
Beti NULL karaktere berezi bat izango katearen amaieran
bere luzera guztira demarc.
>> Beraz, gero, orain egiten ari zaren pertsona strlen 20 ezartzeko, duela 30 urte,
nola joaten strlen ezartzeko berari buruz duzu?
Emandako hartuko dugu existitzen dela, emandako printf existitzen dela bezala hartuko dugu,
baina HELLO hitza bada
eta memorian zerbait itxura hau da,
reimplement strlen izan baduzu ziren delako eskatu
edo, Egia, ez zenekien strlen existitu
ko hau roll zeure izan duzu nola izan strlen ezartzea
denean zerbait hori itxura?
Orain ezagutzen dugun kate array bat da, batetik bestera joateko dezakegu banakako karaktere bakoitzaren
antzeko zerbait erabiliz Horretarako hegan saiatu da.
>> Dezagun joan aparatuaren me. Let me fitxategi berri bat, strlen.c sortzeko.
Dezagun aurrera me now eta stdio.h beraz dugula to printf sarbidea ez.
Dezagun int main (void) do me. Oh. Besterik ez dut egin, nire Ondoren, oraingoz. [Chuckles]
Eskerrik asko.
Hau da, zer egiten ari naiz. Guztiak eskubidea.
Beraz, aurretik zen pantailan dut, hori guztia idatzi dut.
Eta orain zer egin behar dut honako hau da:
printf ("Emadazu kate bat:")
Hori besterik ez Fluffy argibideak.
Orain utzi katea s = GetString do me.
Orain aldaketa bat egin behar dut dagoeneko.
CS50 liburutegia erabiltzen dut bat-batean, eta, beraz, utzi aurretik, joan eta idatzi cs50.h.
Eta orain egin dezagun hau: printf ("luzera:% d, strlen [s] -
eta ez dut egin oraindik. Zer gehiago programa hau gehitu behar dut?
>> [Ikasleen] string.h. >> String.h.
Beraz, oraingoz, strlen erabiltzen ari gara, eta, beraz dezagun konpilatzailea daki non dagoela ziurtatu,
hain txikia behatu egiaztatzeko.
Line 8 kate bat naiz, eta linea 9 naiz,% d luzera inprimatzean.
Beraz, dezagun aurrera eta gora hau irekitzeko.
Strlen egin dugu biltzen ados
strlen - utzi gerturatzeko me - Sartu, H-E-L-L-O, Sartu. Luzera 5.
>> Ongi da, eta, beraz, strlen badirudi lan egiteko, baina mundua ezagutzen.
Hargatik, gaur egun ezartzeko strlen honela geure buruari.
Dezagun liburutegi hau hartu me kanpoan.
Dute jada ez nuen ez delako, nahiz eta jakin existitu string.h sarbidea.
Baina hori ados strlen I ezartzea daitekeelako neure burua
eta sarrerako izeneko kate bat hartzen du,
eta, orain, kate honen luzera irudikatu behar dut.
Beraz, nola egin dezakegu hori egin behar dut?
Zer egin behar dut - Ikus dezagun hau nola egin - Zer egin nahi duzu?
>> [Inaudible ikaslearen erantzuna] >> Ados.
Beraz, hau egin ahal izango dugu modu sorta bat. Ikuspegi hori hartzen saiatu me.
Neure burua ematen dit, aldagai int i, beraz, hasten 0 i.
Eta hau esan me: sarrera, berriz, [i] ez dago zer berdina al da? \ 0.
Beraz, izarrekin bihurtzen da, guztiak idatziz literalki programa bat karakteretan kasuan bezala,
single quotes, ez komatxo bikoitzak erabili ahal izango duzu.
Beraz gutun bat idazten dut, hori egin nahi dut, gutun b, egin nahi nuke.
Honek, ordea, kate bat izango litzateke, ez banakako karaktere bat.
>> Beraz, \ 0 literalki nahi dut. Zer begizta honetan egin nahi dut?
Egia esan, beste aldagai bat behar dut, beraz, int luzera 0 lortzen.
Nahiz eta ez zinen ziur genuen zergatik hasi ginen,
orain goaz errepide hau, zer egin nahi dut linea 9?
luzera + + eta gero behera hemen line 10, bueltan luzera.
Beraz, nola da strlen inplementatu?
Benetan inplementatu ziurrenik hau atsegin dute.
Agian pertsona erabili a loop, agian ez loop berriz, nork daki?
Benetan litzaidake dugu kanpaia azpian bilatzeko iturburu-kodea
izeneko fitxategi batzuk string.c ziurrenik.
>> Baina hemen zer egiten ari naizen pentsatzen.
Izeneko aldagai bat i naiz geratuko, berdintasuna 0 ezartzeko.
Ondoren, aldakorra naiz beste izeneko luzera geratuko, berdintasuna 0 ezartzeko.
Ondoren, sarrera pertsonaia Ith null karaktere berezia, \ 0 berdina da, aldiz, ez dut esaten
Kontatzailea luzera.
Baina laster Ith karakterea karaktere berezi hau da, loop, zer gertatzen da?
Labur zirkuituak. Gelditzen da, horrek esan nahi du, berehala gero itzuli luzera.
>> Beraz, nuen nahaspila sortu ez bada, goazen aurrera eta itzuli nire terminal leihoa.
Utzidazu birkonpilatzeko. Eta hondatzeko nuen.
Adierazpen berria liburutegia funtzioa strlen bateraezina.
Beraz, gehiegi nire ona propioa clever hemen nintzen saiatzen ari dela esan nahi du.
Konpilatzailea benetan daki ez dagoela izeneko funtzio bat strlen
nahiz eta ez dugu liburutegian. Hori da, fina. Whatever.
Ondoren kooperatu ari gara. Dezagun berrizendatu luzera hori.
Dezagun erabilera aldatzeko me luzera hemen, eta hau Clang beharra egingo.
Bat alde batera utzita, funtzio hauetako batzuk, beraz, darn direlako komun bezala -
strlen, prinf - benetan egoera bereziak sort.
Eta, beraz, Clang apur bat baino ez haiei buruz zerbait berezia daki.
Hori ez da beti funtzio gehienetan kasuan, eta, beraz, beraz, horregatik got yelled at.
>> Berriro saiatu me. Zorionez, une horretan lan egin du.
Beraz, gaur egun, let me nire strlen programa exekutatu.
Give me kate bat: H-E-L-L-O, Sartu. Eta izorratu dut.
Zergatik? >> [Inaudible ikaslearen erantzuna] >> Zehazki.
Beraz, neure burua daukat hemen oso nice-begira begizta infinitua
naiz, nahiz eta luzera incrementing iterazio bakoitzerako delako,
ez nago argi eta garbi egiten dut? Ez dut incrementing i. Ongi da. Erraza fix. Bai?
Ongi da. N º orain beste akats orokor batzuk exekutatu afoul genuke non parentesi artean behar dut.
Eta, Egia, kode hau itsusi begiratzen hasi,
Stab bat hartu dugu, hau garbitzeko une batean.
Baina orain bai luzera eta incrementing i dut.
Egia, dagoeneko I hobetzeko aukera bat hemen, baina itzuli dugu hori.
>> Beraz, gaur egun dezagun ziurtatu gutxienez Oraindik dugu aurrera egiteko.
Batzuk gertatu zen, eta aldez aurretik aipatu behar ahazturik nuen.
Hau atsegin dute eszenatoki bat ezbeharra izan ez baduzu, nola egiten da hau konpontzen ez duzun
labur-tresna edo ordenagailua berrabiarazi edo leihoa ixteko?
Benetan erraza da.
Control C txiki honetan azenario ikurra C bidaliko da, eta programa gehienak bukatzen da.
Duzu benetan txarra den infinitua loop stuff infinituki hainbat aldiz inprimatzeko bada,
batzuetan Control C hit bat mila aldiz entzun da benetan egin beharko duzu.
Beraz, Orain konturatu naiz ez delako ezer egin, nahiko erraza izan zen inprimatzean.
Eta teknikoki, behin nahikoa, baina pazientziarik lortu dut eta normalean hit dut asko aldiz.
>> Strlen Beraz. Give me kate bat: HELLO. Dago une honetan lanean?
Ongi da. Komuna akats bat. Have birkonpilatu.
Hori izan zen, nahita, bat. Guztiak eskubidea.
Strlen Beraz, H-E-L-L-O, Sartu. Bikain.
Beraz, orain dugu strlen 5.
Beraz, gurpil reimplemented literalki dugu.
Beraz, gaur egun utzi garbitzeari hau ez delako egin me zirrara
nire kodea diseinua.
Zer egin dezakete programa honetan argi eta garbi dugu, hau kentzeko garbitu?
[Inaudible ikaslearen erantzuna] >> Bai. Literalki, i eta luzera tratatzeko berdinean ari gara.
Beraz, zergatik ez dugu smart eta esan luzera bitartean?
Izan ere, dezagun deitu besterik ez hasteko luzera, hasieratu 0
default katea luzera ez duelako irudikatu dugu arte zer da.
>> Orain egiten dugu, eta, gaur egun, hau nahiko dotorea programa bat da.
Aldagai bat. Garbitu dut, estutu sortu.
Beraz, gaur egun, goazen nire terminal leihoa. Dezagun aurrera, eta hau exekutatu.
Egin strlen. Looks good. Exekutatu strlen berriz, Sartu.
Give me kate bat: HELLO, Sartu. Eta 5 lan dirudi.
Gaur egun, argi eta garbi izan behar du, izan ez banu idatzi, esate baterako, HELLO 1 kate
eta, ondoren, beste bye, zalantzarik gabe, ahal izango dugu hitz bat baino gehiago.
Adierazpen nahi actually I idatzi izan ez bada HELLO baina, esate baterako,
HELLO WORLD, aldez aurretik jakinarazi zer ez genuke egoera hori da hemen, eskuinera?
Hori dela 2 kateak iradokitzen litzateke.
Zuriune-barra karaktereak, zalantzarik duzu daiteke, hala badagokio esaldi luzeagoak idatzi benetan dugu
HELLO WORLD bezala, benetan zer genuke memorian
ez dagoela antzeko zerbait apur bat dirudi.
>> Guztiak eskubidea. Gero, ordezkaritza Hemen kateak buruzko edozein galdera?
Ez? Guztiak eskubidea.
Beraz, lehenago esan dut deituz strlen behin eta berriro nahita horrela
Seguruenik ez da onena ideia ari zaren lan asko egiten duelako joan
behin eta berriz eta berriz.
Izan ere, zer kate baten luzera kalkulatzen, itxuraz beharrezko lan mota da?
Hasieran hasiko da eta, ondoren, begiratu, begiratu, begiratu, begiratu, begiratu duzu
azkenik karaktere berezi hori ikusten duzun arte, eta amaitzen da, ah, orain luzera ezagutzen dut.
Beraz, lehenago strlen genuen izeneko berriro, eta behin eta berriro,
arrazoia proposatu I ergelak mota izan zen, berriz, kate hori delako duten itxura.
Duzun aldi bakoitzean batetik bestera joateko ez da aldatu begizta batzuen bidez,
beraz, ez da beharrezkoa izango lan egiten ari zarenean.
Aldi berean, jakin behar duzu, bat alde batera utzita, Clang bezala Konpilatzaileak diren egun hauetan
izan dira urte askotan zehar garatu da,
konpilatzailea idazle, programatzaileak, pretty smart dira.
Eta horrela bihurtzen da Konpilatzaileak Clang eta beste benetan irudikatu,
ados, bai, strlen idatzi zure egoera
teknikoki esan diegu behin eta berriz eta berriz.
Baina Konpilatzaileak smart benetan Erabiltzaile pobreak erabakiak mota horiek optimizatzeko
Zure kodea out gauzak zuzentzeko.
>> Beraz, ez besterik ez konturatzen batzuetan konpilatzailea da smarter gurekin baino
eta mota horretako ezkutatu gure akatsak.
Baina, zalantzarik gabe, orduan eta arazo multzo bezala,
funtsean, horien diseinua okerrak erabakiak buruz ez pentsatzeko
potentzialki dugun modu lan gehiago egiten litzaidake arrazoi sinple
benetan egin behar duguna baino. Baina zenbat lan gehiago?
MUNDUKO HELLO kasuan, dezagun hasteko arazo honen tamaina orokortu.
Zein da arazoa arazoa luzera edo tamaina
hitza idatzi erabiltzaile HELLO da?
Itxuraz da 5, agian 6. Plus edo minus 1. Whatever.
Beraz, hurbil da besterik ez dugu deitu du 5.
>> Beraz, zer da arazoa tamaina hemen HELLO luzera irudikatu nahian?
1, 2, 3, 4, 5, eta, agian, azken karakterea 6 da,, baina dezagun orokortu n bezala.
Beraz, n, aski aldakorra n, ordenagailu zientzialari litzateke normalean erabiltzen
arazo baten tamaina, eta arazoa eskuz deskribatzeko zenbat denboraz HELLO?
Zenbat denbora du strlen hartu?
N urratsak ordena hartzen du, non urrats bakoitzaren pertsonaia bat begirada esan nahi du,
begiratu pertsonaia bat, pertsonaia bat bilatzeko.
Eta eztabaida hau pixka bat izan genuen, eragiketa kopuru zerbait hartzen du.
Klase egun oso lehen pertsona guztien genuen awkwardly Zutik,
eta, ondoren, denek hasi off PCa parekatu ondoren, elkarren artean
benetan zenbatu ahal izateko haien gela zenbat pertsona zeuden.
Eta beste gauza bat ere egin dugu horren bidez ordez nuen bada eskola zaharra modu
besterik ez, 1, 2, 3, 4, 5, 6 hasita, eta abar,
hau ere, arazo hori tamaina tamaina-n izan da. Izan ziren gelan jendea n.
Baina hori bizkortzeko izan dut, ezta? Kalifikazio eskola estiloa hasteko 2s en kontatuta nuen.
2, 4, 6, 8, 10, 12. Eta hori sentitzen, beraz, askoz ere azkarragoa, eta halaxe da.
Literalki bi aldiz azkarrago da, baina berriro ere, gela honetan sartzeko beste 400 pertsona ibili bada
aldi berean, algoritmo horiek beste 400 edo agian 200 neurriak hartuko luke.
>> Baina, aitzitik, benetan smart gara, eta horren ordez dugu guztiak zenbatu zuei,
gogoratzen algoritmoa, nola lan egin.
Koa izan da duzun guztia. Utzidazu Aurreratu hau.
Koa izan duzun guztia, off parekatuta duzu, gero erdia eseri,
duzun erdia eseri, eseri duzun erdia,
eta begizta hau aste 0 iterazio bakoitzerako, arazo erdira murriztu dugu eskua
eta n / 2 joan ziren eta, ondoren, n / 4, eta ondoren n / 8.
Eta horren inplikazioa da, beste 400 pertsona gela, big aurre ez oinez bada,
eramango gaituzte 1 gehiago txanda izango da, ez 400 erronda gehiago, ez 200 gehiago erronda.
Eta beraz, istorioa pixka bat esan dugu atzera honekin zerbait pixka bat egin behar izan zuen.
Lerro honek gorria hemen da lineala, zuzenean, eta n gisa etiketatu
arazo baten tamaina hazten delako,
zure algoritmo edo programa konpontzeko bada ari zaren n urratsak hartzen du,
marraz dezakegu, lerro zuzen bat, non denbora gehiago arazoaren tamaina handiagoa hartzen du.
Eta twosies hurbilketa, 2 kontatuta, 4, 6, 8, oraindik lerro zuzen bat, besterik gabe, apur bat hobea.
Pixka bat denbora gutxiago hartzen du, eta, beraz, lerro horiak marra gorria puntu puntu txikiagoa da, beraz.
>> Baina are hobeto logaritmikoa deitzen dugu Grial santua hau izan zen
non berriro ere pertsonen kopurua bikoiztu egin dugu gelan,
tamaina bikoiztu dugu liburu hori telefono klaseko lehen egunean,
big aurre ez, 1 orria gehiago malko hartzen du, 1 gehiago eserita behera irauten du
bikoitza big arazo bat konpondu ahal izateko.
Eta, beraz, elkarrizketa izaten ari da hasteko
nola ez dugu arazoak konpontzeko benetan modu eraginkorrean
uste dugu arazo hau atsegin sinpleena da, bada?
Demagun 8 ateak ditugu horien atzean dauden zenbaki batzuk,
eta zenbaki horiek bakoitzean, ez da inolaz ere horrela antolatu da,
besterik ez ausazko zenbaki osoen ari dira ate horien atzean,
eta galdera dugu nola joaten zenbakia aurkitzeko buruz duzu - nork daki -
7 ate horien atzean?
Zer egingo zenuke zuk, giza, ni aurkitzea kopurua 7
berriro horietako bakoitzean badira ateak eta ate bat irekitzeko balio bat ikusteko behar duzu?
Zer izango litzateke zure algoritmoa izan, agian?
>> [Inaudible ikaslearen erantzuna] >> Beraz, ezkerretik hasi eta ate bat ireki, ate bat ireki, ate bat irekitzeko.
Eta kasu horretan, txarrena, zenbat denbora eramango gaitu 7 aurkituko da?
Eta berriro ere, dira ez ordenatuta, beraz, ez da bezain erraza da, ondo, 7 atea ireki dut joan.
Eramango gaitu, Gehienez, 8 urrats.
Kasurik okerrenean, 7 ausaz ateak line amaieran,
beraz, n ate guztiak saiatu gara dezake.
Beraz, berriro hemen, algoritmo lineal bat izan dirudi dugu.
Hain zuzen ere, duela urte pare bat besterik ez genuen.
Zure aurrekoek bat izan zen, hain zuzen honekin desafioa
non ez dugu digital bertsio bat izan ordez arbel bat
gainean paper-pieza batzuk.
Eta zer egingo lukeen pentsatu nuen look back hau nola joan zen azkar bat hartu da,
etapa onena eta agian gehien awkward aukera bat
manifestazio bat izan eskubidea hemen Sanders.
2 zenbakiak ilara izan genuen.
Bakarrik ari gara zer gertatzen hemen Sean goiko errenkada horiek oso begiratu.
Inork ez du inoiz berriro CS50 boluntarioen ezean,
Sean bedeinkazioa hau mantentzeko kamera izan genuen,
beraz, ehunka pertsona izan dira hau ikusten orain urte daki.
Baina Sean egin amazing lan bat edo egin zuen? Benetan gurekin, bereziki zenbaki bat aurkitzeko.
>> Hargatik algoritmo hau nola konpondu zuen, beraz, elkarrizketa hau eta berrekiteko dugu luze baino lehen
nola gauza aurkituko dugu modu eraginkorrean.
[Video Malan] ate horien atzean ezkutatuta kopurua 7
baina ate horietako batzuk bilduta kanpoan baita beste zenbaki ez-negatiboa,
eta zure helburua da zenbakiak goiko errenkadan honetan uste array bat besterik ez
edo, besterik gabe, paper-pieza atzean zenbakiak dituzten sekuentzia bat,
eta zure helburua da, bakarrik goiko array Hemen, aurkituko me kopurua 7.
Eta gero ari gara kritika nola egiten duzun. >> Guztiak eskubidea.
[Malan] Aurkitu 7 zenbakia, mesedez.
[Barreak]
[Malan] N º [barreak]
5, 19, 13, [barreak]. Ez da trikimailu galdera bat.
1.
[Barreak]
Puntu honetan zure puntuazioa ez da oso ona, beraz, baita dezakezu mantendu egingo da. [Barreak]
3.
Joan. Egia, ezin dut lagundu, baina harritzekoa zer are ari zaren pentsatzen. [Barreak]
Goiko errenkadan, bakarrik, eta, beraz, lortu dituzun 3 ezker. Beraz aurkitu me 7.
[Ikasle murmuring]
[Malan] 17.
[Ikasle murmuring]
[Malan] 7! [Txalo]
>> Beraz, asteazkenean eta algoritmo sofistikatuak gehiago sartuko dugu murgiltze gauzak aurkitzeko.
Oraingoz utziko dugu Sean eta asteazkenean ikusiko duzu.
[CS50.TV]