>> DAVID J. MALAN: Hau CS50 da, eta aste honetan lau hasiera da.
Eta, mutila, Volkswagen da aurkitu Arazo guztien software delako.
Dezagun begirada bat eramango gaituzte.
[Bideo-erreprodukzioa]
-Cars, Pertsonaiak smartest Azkar eta amorruz filmak.
Aste Alemaniako automaker hau Volkswagen aurkitu bera
eskandalu baten erdian proportzio penala potentzialki.
>> -Volkswagen Da milaka milioi bracing isunak, ahalik eta zigor-gastuak
bere exekutiboak, gisa Enpresan apologizes
11 milioi auto rigging hasi da lagundu isuriak probak beat.
>> -Certain Diesel eredu izan ziren software sofistikatuak diseinatu
erabilitako informazioa barne gidari eta ibilgailu posizioa
azkartzeko autoa izan zen zehazteko emisioak probak jasaten.
Egoera horren pean, motorra isuriak toxikoak murriztea litzateke.
Baina autoa saihesbidea nahi zutela zen Hori zenean bultzatuta ari.
Emisioak handitu 10 40 aldiz onargarria EPA mailatik.
>> [END erreprodukzioa]
>> DAVID J. MALAN: Hargatik honetan begirada bat hartu
eta ikusi nola hau inplementatu liteke
eta hori nola liteke eraginik hau bezalako autoak hainbeste.
Beraz, nire eskua hona hemen prentsa oharra EPA-- emana zen
Ingurumen Babesteko Agentziak bertan
AEBetako arautzaile agentzia da ingurumen kezkak maneiatzen,
eta, ondoren, benetako Legezko abisua zela
Volkswagen bidali egun gutxi batzuk besterik ez duela.
>> Beraz EPA idazten, eta discloses orain publikoki, software sofistikatu bat
Algoritmo batzurekin Volkswagen ibilgailu detektatzen
autoa murgilduta dago igorpen ofizialak probak
eta emisio osoa bihurtzen kontrolatzen proba bakarra zehar.
Eraginkortasuna ibilgailuen kutsadura horiek
isurien kontrol gailu da hein handi batean Gidatze normal guztian zehar murriztu
egoerak.
Hau betetzen duten autoak emaitzak laborategian edo probetan estandarrak
geltokia, baina ohiko funtzionamenduan zehar igortzen nitrogeno oxides-- edo NOx--
gehienez 40 aldiz estandarra.
Volkswagen sortutako software The aurrekontu unquote porrota gailu bat da,
definitu Clean-ek Air Act AEBetan.
>> Joan dira mutilzahar EPA eta beste bide
agerian porrota gailua analisi independentea ondoren software
West ikertzaileek Virginia University.
NOx kutsadura laguntzen du nitrogeno dioxidoa, lurraren mailan ozonoa,
eta partikula finak materia.
Horien eraginpean kutsatzaile izan lotuta
sorta zabal batekin osasun-ondorioak larriak,
asma handitu barne erasoak eta beste arnas
larria izan daiteke nahikoa gaixotasun Jende bidaltzeko ospitalera.
Ozonoaren eraginpean eta partikulak ditu, halaber,
izan goiztiarra lotutako heriotza arnas aparatuko ondorioz
edo erlazionatutako kardiobaskularrak ondorioak.
Haurrak, adinekoak, dituzten pertsonak lehengo arnas gaixotasun
bereziki arriskuan daude osasun kutsatzaile horien ondorioak.
>> Aski da esateko, nahiko larria da.
Eta goazen on irakurtzeko Puska bat gehiago
eta, ondoren, begirada bat hartuko dugu oinarrian dauden inplikazioak
hau auto baten testuinguruan.
Hain zuzen ere, Volkswagen fabrikatu eta instalatu
deiturikoak ere software kontrol elektronikoa
module-- edo ECM-- ibilgailu horiek sumatzen
ibilgailuak probatu ari zela EPA igorpen estandarrak betetzen.
Oinarritutako hainbat sarrera barne bolantea posizio, ibilgailu
Abiadura, motorraren iraupena Eragiketa eta barometric presio,
hain zuzen, sarrera horiek parametroak arloak
egiteko erabilitako federal proba prozedura- isuriaren EPA ziurtagiria lortzeko probak
helburuetarako.
>> EPA-ren isuriaren Probetan ibilgailu ECM softwarea
bertan ekoiztu software ran betetzen isuriak emaitzak.
Beste une oro, eta Ibilgailua ECM software
Aparteko errepide bat zuena calibration horrek murriztu
eraginkortasuna igorpen oro har, kontrol-sistema,
Zehazki selektiboa katalitikoa Lean NOx murriztea trap--
Hauei buruzko ikusiko dugu une batean.
Ondorioz, NOx 10 eta 40 aldiz aldiz handitzen du
EPA betetzen mailatik Pase zikloaren motaren arabera.
>> Beraz, zer esan nahi du benetan, eta source software exekutatzen den kodea
Volkswagen on ez dauka oraino publikoki kontuetarako,
dela, bai, hori baliokidea han nonbait barruan
Volkswagen kodearen.
Zuk probatu ari bazara, eta autoa bada ingurumen faktore batzuk detektatzen
bolantea bezala Posizio edo mugimendua
edo falta autoaren kontratuan edo Edozein beste faktore batzuk
Une horretan hipotesi daude formula honen parte izan nahi du,
piztu dute, besterik gabe, emisioak osoa kontrolatzeko.
Beste era batera esanda, hasten dira kutsatzaile gutxiago igortzen.
>> Bestela, beste egoera guztietan denean, ez da ari, antzemandako
laborategian, egin besterik ez dute.
Eta, beraz, hau errazteko daiteke gehiago sartu zerbait pseudocode hormigoia
horrela.
Gurpilak inflexio baina bada bolantea ez da, iradokitzailea
autoan batzuk abian da biratzen zilindro moduko
baina nolabaiteko probatzen ari biltegia,
orduan jokatzen duten bezala EPA duzu nahi.
Bestela, ez.
Beraz, dezagun begirada bat bideo labur batean dagoela
zer inplikazio errepasatzen du Hori, egia esan, mekanikoki.
>> [Bideo-erreprodukzioa]
>> -Azken Ostiralean EPA iragarri batzuk Volkswagen Audi autoak 2009 artean egina
eta aurten erabiliz Porrot gailu deiturikoak
emisioak legeak mugitu airea garbi mantentzeko diseinatuta.
Baina zer esan nahi du zehazki?
>> Beno, auto moderno dute dozenaka horien barruan ordenagailuak.
Eta ordenagailuak horietako batzuk funtzioak koordinatzeko laguntzeko
ahalik eta motorraren performance bitartean ziur
ez dagoela ez da gehiegi zabor ihes kanalizazio irteten.
Nik, egia esan, lanean izan dute zenbait hamarkada oraingoz modu hau.
Funtsean, zati bakoitza a auto moderno motorraren
sentsore bat edo controller ditu da, eta ordenagailu horiek on
dira irakurtzen datuak mila aldiz segundoko making doikuntzek
erregai ratioa airea bezalakoa hori zilindro sartu.
>> Iruzurra Volkswagen hauek eta Audi modeloak gasolioen dira,
eta gasolioen bat gehiago ordenagailu benetan garrantzitsua
parametroak kontrolatu, hau da, Erre gabeko erregai zenbatekoa joan
ihes egin ondoren.
Orain dela soinuak txarra.
Ez du ematen, nahi duzun bezala litzateke Erre gabeko erregaia agortzen sartu.
Baina baten kasuan ere diesel, zerbait egin behar duzu
NOx tranpa bat gailu bat da deitzen duten xurgatu eta nitrogeno oxidoak tranpak
kutsatzaile daude que iba bestela, atmosferara joaten.
Eta NOx tranpa duten eragina da erre ez erregai indartu.
Beraz porrota gailu bat programazio berezia da ordenagailu hauen barruan egin daiteke
itxura auto betetzen ditu igorpen estandarrak ez ditu denean ere.
Volkswagen arazo bat izan zuen bere eskuetan.
Bere diesel motorren ziren ezagunak erregai ekonomia handia lortzeko,
baina NOx tranpan bakarrik ondo funtzionatzen denean erregai gehiago erabiltzen ari da.
Beraz, auto detektatzeko litzateke, Porrot Telefonoa erabiltzeko,
denean isuriak bat zen lortzean Proba, erregai gehiago behar luke,
the NOx tranpa lana ondo egiteko, isuriak, ondo egongo litzateke.
Baina gero, errepidean, telefonoak itzaltzen, erregai gutxiago erretzea zu
baina bezain 40 aldiz ari zara atmosferara kutsatzaile gehiago.
Baina nola demontre egin Autoan jakin izan zela
ari isuriak betetzeko probatu?
EPA dioenez sofistikatu bat izan zen sistema gauza hautatuta dagoela
bolantea posizio bezala, abiadura, zenbat denbora motorra izan zen,
eta nahiz eta presio atmosferikoa.
Beste era batera esanda, ez zen no modu hau zen ezustekoa
software zegoelako diseinatu kontu handiz detektatzeko
emisioak proba ofizial batean.
Hori da, batzuk nahiko larriak iruzur eta hori da
zergatik Volkswagen da hala nola arazoak larriak.
Izan ere, bere zuzendari nagusia, Martin Winterkorn, urratsez urrats behera.
>> Beraz, zer gertatzen da gero?
Beno, milioi erdi bat bada diesel Jettas, Beatles, Golfs, Passats,
edo Audi A3s gauzatu da, Berri ona da, da
zure autoa gidatzeko segurua da oraindik.
Ez daukazu vtzitera Volkswagen abisuaren bat egiten duen arte.
Baina uneren batean ari dira ziurrenik behar joan
Zure autoa barruan softwarea eguneratzeko.
Hori gertatzen denean dituzun mila gutxiago depositua per lortu.
Abokatuak dagoeneko engranaje demanda sortu
beraz, jabeek ordaindu egin daitezke Etorkizunean uneren batean.
Baina hori ez da joan gertatuko edonoiz laster.
>> [END erreprodukzioa]
DAVID J. MALAN: Beraz, hau benetan altxatzen Irudian question handiagoa interesgarri bat
fidatu bezala.
Eskuin?
Guztiok iPhones edo Androids dute edo gure poltsikoetan zerbait ziurrenik
egun hauetan, edo eramangarriak gure itzulietan diren on
egin korrika software Apple eta Microsoft-ek
eta beste enpresa-sortak.
Baina nola dakigu zer software produktu hauek egiten ari
benetan zer horiek Enpresak esan egiten ari dira?
>> Esate baterako, nor den esaten duten aldi bakoitzean duzu
Telefono dei bat zure iPhone egin edo Android telefono edo antzekoak,
Telefono zenbaki hori, era berean, ez da ari konpainia batzuek en zerbitzari igotako
programa batzuen dut duzulako idatzia, eragilea ote den
sistema bera iOS edo Android bezalakoak, edo deskargatu delako
Zenbait hirugarren batzuen aplikazioa nolabait entzuten ari dela
Dena den zuk idazten ari edo guztia benetan esaten ari zaren.
Nola dakizu hori, betiere you guys Clang exekutatzen ari
edo Egin konpilatu zure CS50, nola, software propioa
Egin duzu CS50 horren langileak, CS50 liburutegia bidez,
Ez ditu behin saioa amaitzeko katea inoiz ahaztuak
edo behin inoiz ahaztuak hazbeteko?
Beno, zalantzarik gabe, ezin duzu begiratu source zerbait kodea at
CS50 liburutegia bezala, zuk zitekeen jatorrizko kodean begiratzeko
Linux sistema eragilea CS50 IDE exekutatzen.
Baina aurkezpen bat harrigarria eman zitzaion atzera 1984. urtean
Turing saria jaso batek ere ezagutzen ordenagailu oso ezaguna zientzialari
as-- izeneko Ken Thompson nor Turing saria jaso duen
informatikako en moduko da Nobel Saria, izango bada,
Bere baten lanagatik izeneko sistema eragile
Unix, eta bertan oso antzekoa da zer erabiltzen dugun espirituz Linux da.
Eta galdera eskatu zion bere onarpen hitzaldian, funtsean
esparrua finkatzen dituena urte eta eztabaidarako urte
konfiantza eta segurtasuna buruz, hau izan zen.
Zein neurritan beharko lukete konfiantza bat izan du adierazpena pieza bat programa bat
ren software-- da Troiako zaldiak, doan?
Agian gehiago garrantzitsua da fio duten pertsonen software idatzi zuen.
>> Eta hain zuzen ere, lotuta izan dugu hitzaldia izango zuela
Eman denean sari hau onartuz 'CS50 webgunean 80ko hamarkadan
gaur egun orria Hitzaldiak azpian.
Zer ikusiko duzu delako Benetan hori ematen zuen
nola, nahiz eta adibide nahiko simple Clang edo dena bezalakoa konpilatzailea
konpiladoreak beste batzuk iragan erabili behar izan zituzten, zer konpilatzailea dugu barneratua bada
geure erabiltzen ari da pixka bat bada Egoera hori, funtsean, dio,
kode hori erabiltzen ari da nabarituko duzu GetString funtzioa edo GetInt du
funtzioa, aurrera eta txertatu atzeko ate bat edo Troiako zaldi bat
besteak beste, programa hori orain zeroz batzuk
eta zerbait maltzurren egiten direnak.
Guztia hasten zure zanpatze, datu horiek igotzean
zerbitzari batzuk, edo benetan ezer.
>> Eta zer Ken Thompson Aurrera doa bere hitzaldia egin
dela frogatzeko, nahiz iturburu sarbidea izango duzu
Konpiladore baten Código maltzurki hori egiten liteke,
Ez du axola duelako Han oilasko hau eta arrautza da
Iraganean askoren errealitatea urte zeinaren konpiladoreak
beraiek biltzeko erabilitako dira.
Beste era batera esanda, modu back, norbaitek du lehen konpilatzailea idatzitako dute.
Eta hortik aurrera, edozein momentutan eguneratu dute Bere kodea aldatuta konpilatzailea,
ezaugarriak gehituz eta berriro konpilatu Gu bezalako jendeak erabili ahal izateko, bai eta,
Oraindik zaharra erabiliz dute konpilatzailea bertsio
berria biltzeko konpilatzailea bertsioa.
Eta begirada bat hartu baduzu hitzaldia izango zuela eman zuen,
egingo ikusten duelako zirkulartasunik hori,
benetan ahal izango duzu bugs edo Troiako zaldiak software murgildurik
erabiltzen ari gara.
Eta begiratuz gero, are at source programa horiek kodea,
Agian ez, nahiz agerikoa izan iruzurrak da benetan delako
a bertsio zaharrago batzuetan Konpiladore duten geroztik
Gure software sartu mehatxua injektatzen.
>> Zein da bakarrik, esan nahi dugu Benetan ez eta behar ez
Konfiantza software gure eramangarriak exekutatzen edo telefono edo edozein plaza kopurua.
Eta hain zuzen ere, geroago seihileko honetan denean web programazioari buruz hitz egiten hasten garen
eta benetan hasteko eraikitzeko web aplikazioen geure,
horiei buruz hitz egingo dugu mehatxuak eta beste batzuk.
Orain, zuk galdetu izan liteke, eta nabaritu Ez zela apur Darth txiki-txiki bat
Klipak ere Vader dagoela Zorian ez zen erakusten
Volkswagen buruz. Bada Nik inoiz ikusi, I
pentsatu argitu behar dugu umore hori guztia delako
Oso triste eta beldurgarria.
Atzera begiratu noa Super Bowl 2011
denean by merkataritza Volkswagen-- eta honek
ia egiten likable, berriro horiek Telebistan, lehen aldiz aired.
Da 60 bigarren clip It gozatu ahal izango duzu uste dut.
[Bideo-erreprodukzioa]
[MUSIKA - gaitik "Star Wars"]
[Txakur zaunka]
[CAR hasten]
[END erreprodukzioa]
DAVID J. MALAN: Bai.
I besterik ez egiaztatzea zen.
Kotxe hori urratzeak zerrendan dago.
Ados.
Beraz, begiratu batzuk ditugu pseudocode une bat duela.
Eta hemen handiago batean pseudocode kode
Hori ikusi dugu hainbat aldiz, orain arte.
Eta ez dezagun erabili hau aukera bat da orain programazioa aurkeztu berri
Teknika hori egin genuen ikusi algorithmically
azken astean, begiratu sort batu ginen.
Baina dezagun formalizatzeko eta ikusi nola Baliteke erabiltzen dugun benetako kodea ere,
eta, ondoren, goazen hau erabili joan Teknika errepidean behera gehien
seguru asko, beste zenbait arazo konpontzeko.
>> Beraz, hau izan zen lehen programa bat dugu inoiz idatzi zuen, pseudocode kodea bada ere.
Eta zer Programaren baimenik ikastaroan egin gurekin
Mike Smith aurkitu telefono-liburu bat izan zen.
Eta lerro bereziki zortzi nabarituko eta 11 bertan Go To adierazpen hau izan.
Eta hain zuzen ere, zenbait hizkuntzetan, C haien artean,
Egia esan, ez dute adierazpen hori da, hitzez
joan den aukera ematen dizu lerro jakin batera joateko.
Honez oro har, baita frowned da, oso erraz neurriz dezake
eta saltoka hasteko dezakezu zure programa guztiak leku baino ez bezala
mota erabiliz Logika eta kontrol fluxua
hori erabili dugu, orain arte baino ez dituzten loops eta egoerak eta antzekoak.
>> Baina algoritmo hau errazteko dezakegu pseudocode kodea ere honela.
Etorriko horren ordez edo begizta hurbilketa
non ezkutatzen ditugu eta atzera eta atzera, hiru lerro,
zergatik ez motatako punt dugu eta gehiago Oro har, zazpi eta 10 lerro esan,
besterik ordezkatu bi horiek lerroak bikote,
bestela Smith lehenago bada liburuan zaitugu
bilatu Mike for the in ezker liburuaren erdia.
Smith da geroago ez bada ere liburu, bilatu Mike egiteko eskubidea ere
liburu seihilekoan.
Eta konturatu dagoeneko zirkulartasunik du.
Eskuin?
Naiz bilatzen Mike batean telefono-liburua eta gero
Hit azkenean dut, agian, Zazpi edo lerro agian linea 10
eta nire neure buruari instrukzioa bilaketa da Mike telefono liburuaren erdia.
Beno, nola ez bilatu dut Mike egiteko?
Naiz erdian Mike, zergatik bilatuz
diren moduko bidaltzea duzu me biribilean?
Baina hori OK zer dagoelako Arazoaren tamaina gertatzen,
idatzitako gisa linea 7 eta 10 urtean?
Ez gara besterik bilaketa esanez Mike, bilatu Mike da.
Zehazki, esaten ari gara zer?
Zion bilatzea ezkerreko erdia eskuineko erdia eta hori eraginkortasunez
Arazoaren tamaina erdia.
Beraz ondo dago garela motatako zirkulartasunik honetan parte,
Argumentu zirkular honek, gutxienez garelako
arazoa gero eta txikiagoa egiteko.
Eta azkenean goaz iristeko joan oinarri hori kasu deiturikoak non
orrialde bakar bat behar dugu ezker aldean gure boluntario joan den astean bezala
did-- izan genuen orri bat utzi eta gero, ez dugu
Mike Smith bila mantendu behar bai zuen orrialde horretan dagoelako
edo ez da.
>> Beraz, nola ideia hori, hau martxan jarri dugu Benetako kodea biribilkeriarik moduko?
Beno, teknika bat leverage dugu hori, oro har, errekurtsio bezala ezagutzen.
Eta ikusi dugu hau ere merge sort pseudocode joan den astean.
Gogoratu hau zela merge sort pseudocode.
Dudarik gabe, nahiz baino errazagoa burbuila edo hautaketa edo txertatzeko ordenatu
besterik soiltasun dagokionez eta horrela izan, adierazi ahal izango duzu.
>> Baina hori delako zirkularki moduko gaude
, esanez bilatu zerbait egiteko horretarako berriro bilatuz.
Baina ari banatan bilatzen dugu ezkerreko erdian edo eskuineko erdia
eta gero, azkenean, ez gara Kasu honetan batuz.
Baina hemen ere, batera horiek bi moduko lerroak,
zuen berriro honetako dugu errekurtsio ideia.
Eta zehazkiago, zer esan nahi, Algoritmo baten testuinguruan,
da algoritmo hori errekurtsiboak da erabiltzen bada edo deiak bera.
>> Edo C dagokionez, funtzio bat da izeneko funtzio bat recursive
foo errekurtsiboak foo bada, nonbait bere iturburu-kodea ere,
funtzio foo bera deiak.
Eta hori txarra foo guztiak inoiz ez badu da behin eta berriro deitu bera.
OK da foo azkenean gelditzen bada, egiten duen bezala batu, ordenatu, esanez, minutu bat itxaron,
Arazo hau da super bada txikiak, adibidez,
edo aurkitu nuen harekin naiz bila, besterik gabe.
Ez errekurtsiboki, ez ziklikoki deitzen neure burua berriro.
>> Eta beraz dezagun begirada bat Hau nola benetan lan egin dezake.
Beraz, ez dut aurrera, eta irekia joan joan bi iturburu kodea adibide hemen.
Horietako bat sigma 0 deritzo.
Eta hori ez da batere errekurtsiboak, baina dezagun
Programa honek egiten duenari begiratu.
I biluztu Nik egindako guztiak da, baina guztietatik iruzkinak
source CS50 on kodearen Webgune iruzkinak baduzu ditu
bidez irakurri berriro beranduago nahi.
Eta egin dezagun pare bat utzi behatu egiaztatzen hemen.
>> Kode honen goialdean beraz, besteak beste cs50.h.
Zer egin?
Zergatik da hemen?
Arrazoizkoa Layman en dagokionez.
Zer egiten du?
Bai.
>> Ikusleak: GetInt funtzioa egiten du lan Beraz.
>> DAVID J. MALAN: Beraz, GetInt funtzioa egiten du lan.
Honen barruan duelako fitxategia, CS50.h, bertan
luze baino lehen ikusiko dugu bere iturburu kodea dagokionez,
funtzio sorta bat du declared-- GetInt, GetString,
eta others-- eta ezean mordo bat Egia esan, ez dugu Besteak beste, hori line,
Konpiladore Clang ez da existitzen dela jakin behar da.
Eta bera lerroan doa Bi non int definitzen da
printf, horrek funtzio bat da Pixka bat nahiko erabiltzen jarraitu genuen.
Orain, lau lerro funky apur bat badirudi Bat liner bat besterik ez delako.
Honez lortu, puntu eta koma, ez kizkur giltza, horren barruan kodea ez.
Baina zer egin dugu deitu aste iragan kontu hau?
Bai.
Beraz prototipoa bat.
Eta zergatik bat egin behar dugu prototipoa dela dirudien
redundant apur bat izango da normalean dugulako normalean
ikusi funtzioa berriro fitxategia beranduago, ezta?
Beraz, zergatik ez zauden besterik ditugun Zure burua hazka baina hartu dut.
Bai.
>> Ikusleak: [INAUDIBLE] Funtzio nagusia ondoren.
DAVID J. MALAN: Zehazki.
Beraz, konpiladore daki Azkenean definitzeko edo ezarriko ditu
Funtzio hori nagusien ondoren, ustez.
Beraz Clang eta gehien konpiladoreak mota daude muda
eta bakarrik egingo dute ezagutzen zer kontatu.
Eta erabili nahi izanez gero Sigma izeneko funtzio bat,
hobeto irakasteko konpilatzailea existitzen dela, aldez aurretik.
>> Orain, bera nagusia, nahiz eta lerro sorta da, nahiz eta,
da nahiko ezagunak Zorionez orain.
Honez do begizta bitartean lortu horren helburua bizitzan
Hemen da itxuraz bat lortzeko erabiltzaileari zenbaki positiboak.
Eta besterik gabe, gorde zion pestering edo bere dute lankidetzan aritzea arte.
Ondoren line 16 hasi nintzen dute deiaren interesgarri bat.
IntAnswer.
Zein ezquerrecoy Bigarren mailako ematen dit Int bat
ezin diren store-- Answer-- izeneko hau da, gordetzeko, itxuraz,
bueltan sigma balioa.
Beraz sigma bat besterik ez da izen arbitrario baina esanguratsuak
Dudan funtzio bat eman horren helburua bizitzan
da argumentu bat hartu egiten zaitugu N deitu Beraz Kasu honetan
eta besterik zenbaki hori batuketa hartu plus kopurua positiboren hori da
hura baino txikiagoa.
>> Beraz pasatzen dut 2 zenbakia ere bada sigma, gehitu nahi dut 2 plus 1
plus 0-- ez 0-- beraz, ematen dit 3.
Pasatzen dut 3 sigma nahi izanez gero, nahi dut 3 gehi 2 plus 1, horrek ematen dit 6.
Eta abar.
Beraz, besterik gabe, gehitzen zuen beste guztien zenbakiak baino txikiagoa edo berdina da.
>> Orain, behera hemen I besterik ez noa Erantzuna inprimatu.
Azkar behatu txeke bat da, beraz, dezagun sigma 0-- dot barra sigma egin 0--
eta let me mota 2.
Eta hain zuzen ere, lortu dut 3.
Demagun idatzi 3 me.
Hain zuzen ere, lortu dut 6.
Eta edonork math azkar egin ahal izanez gero, egin nuen 50 zer naiz zerbait egiten badut?
>> Ikusleak: [INAUDIBLE].
DAVID J. MALAN: Beno, ez.
Baina 1.275 horrek nahiko hurbil.
Beraz, hau 50 egitearen emaitza da plus 49 gehi 48 gehi 47 gehi 46
1 behera modu guztiak.
Beraz, hori da sigma guztia egiten du.
Baina ikus dezagun nola dugu orain martxan.
Beraz, behera hemen funtzioa bera da.
Eta hau ez dirudi dute ezer oraindik errekurtsio egin.
Izan ere, bat erabiltzen ari gara Eskola teknika zaharra.
Batura aldakorra izeneko bat naiz hasieratzean zero, gero foreloop bat daukat hemen,
eta deitzen Int bat geratuko naiz I, ezartzean lortzen 1-- berdintasuna
berdin da ezarri nezakeen arren zero, baina horrez gain, egiten ari naiz geroztik,
Nork zaintzen da zero edo bat bada.
Honez ez du eraginik izan behar.
>> Beraz errepikatzean naiz hain luze jo i txikiago edo m, berdina bertan
argudioa izan zen pasa da.
Eta gero, mantendu besterik ez dut I. eta ikuspegi Incrementing
Begizta guztiak egiten ari naiz batura egiten ari da plus berdintzen I. Eta hori da, nahita.
Ez dut nahi ez, honetan Kasu, batuketa gehi plus bezala.
Benetan gehitu nahi dut oraingoa dut balioa
horrek mantentzen handiagoa eta handiagoa eta lasterka Tally handiagoa.
>> Eta gero, batura itzuli nintzen.
Eta beraz, erantzuna balio batura lortuko.
Eta, ondoren, inprimatu egin nintzen.
Beraz, ez dago aukera bat da hemen, nahiz eta, mota horretako sinplifikatzen
Kode hori kontzeptualki eta kolpe mota bat da
egiteari dagokionez axola soiltasun are arren
ordenatzeko pixka bat hartzen eskertzen zergatik honetan
Adibide txiki horiek ere indartsua da.
Hemen sigma beraz one-- da Kode hori bigarren bertsioa.
Dena eman goi-berdina da, beraz, istorioa bera baino lehenago aplikatzen.
Baina, gaur egun dezagun at sigma ezartzeko bertan
Whittled behera Nik besterik horiei lerroak lau kode lerro, benetan,
plus batzuk kizkur giltza eta espazio zuria.
>> Baina, zer egiten ari naiz?
M baino txikiagoa edo berdina bada zero, mota horretako kudeatu behar dut
Kasu super erraza.
Eta entregatu me bada zero edo ezer negatiboa besterik ez da arraroa,
Besterik ez naiz arbitrarioki joan baina koherentziaz itzuli zero.
Ez dut gauza hori nahi infinitua bitxi batzuk sartu
begizta delako balio negatiboa.
Beraz, ez dut besterik gabe, esaten dut me ematen bada zero edo gutxiago, dut itzuli zero.
>> Baina hori ona da hori delako Telefono Liburuaren orrialde bakar batean,
Hori geratzen.
Oso arazo jakin bati ziztada naiz off eta ez zerbait deituz errekurtsiboki.
Baina line 31, zer ez da egiten, badirudi I?
Parentesi besterik mantenduz Gauzak, zorionez, apur bat argiagoa.
Baina guztiak egiten ari naiz da naiz m-- itzultzean edozein dela
Niretzat gehi entregatu m-- Sentitzen balioa,
plus m ken 1 sigma balioa.
Beraz, zer esan nahi du horrek?
3 zenbakia ematen badidazu sarrera gisa, erantzuna, azken finean, lortu nahi dut
6 da 3 gehi 2 gehi 1 ematen dit 6 delako.
Baina, nola egin pentsatu nuen nola kodea hau egiten ari da?
Sigma deitu nuen lehen aldiz eta pasa 3 balioa dut,
hori zati batean esaten duena bezalakoa da paper, hona hemen 3 balioa
eta izan dut gainditu hau sigma bezala.
3 da, jakina, 0 baino gutxiago, beraz, ez IF baldintza ez aplikatzeko.
Bestela ez.
Beraz, zer egin dezaket?
M itzuliko da, hau da, nahi dut 3, plus m ken 1 sigma.
Hargatik honen segimendua me.
Hau jarri noa paper behera pieza.
Eta zer balio du, eta izan argi eta garbi, preso pasatzen dut joan
Istorioa Puntu honetan sigma sartu?
Zer kopurua?
2, ezta?
3 ken 1 2 da.
Beraz, behar besterik ez dut pixka bat paper pusketa hemen.
Beraz, orain sigma ohitu da berriro deitu.
Eta nahita jarri dut behera hau da, zeren
motatako gelditzea bezala ipuinaren bertsio hori
nabilela nagoelako m ken 1 seinale on.
Beraz m 3 m zen ken 1 2 da.
Hortaz, hona 2 dudan gainditu da.
2 jakina da ez baino gutxiago 0, beraz, kasu horretan ez da aplikatu.
Bestela m itzuliko naiz, eta hori da hau Gauza, plus zer balio-sigma?
Beraz, bada Sigma 1-- delako m da oraintxe 2 orain 2 ken 1 1 da.
Beraz, gaur egun besterik balioa 1 daukat.
Besterik kopuruaren pasatzen ari naiz 1 funtzio sigma-- izateko
edo neure burua hemen hain 1 jakina da, ez zero baino txikiagoa da, oraindik ere ez du aplikatzen.
>> Ordainetan, bestela, 1 plus zer sigma?
0.
Hargatik gogoratu besterik ez dit hori.
Horretara itzuli dut geroago.
Orain aurrera eta jot joan joan 0 kopuruak behera hori delako
Nire argumentu edo parametro.
0 zenbakiaren I gainditu nabil eta prozesu hori azkenik
besterik ez neure buruari errepikatuz ad nauseum du utziko zer duelako
Zer egin behar dut berehala behin ikusi nuen 0 honek?
Zero itzuliko naiz.
Beraz, orain istorio atzeratzeko aukera izango duzu.
>> Orain badut atzeraka bada denboran, zer zen berrienak gauza
Literalki ez bazina egin nuen Bideo bat errebobinagarriaren?
Recoger berrienetakoa noa 1 eta ematen dit 1 plus 0 1 da.
The errebobinagarriaren jarraitzen badut Istorioa, hori niri emateko
2 plus hau martxan balio, hau da, 1.
Beraz, hori da 3.
Eta gero noa errebobinagarriaren jarraitzea.
Noiz jarri nuen behera kopuruaren Izango da 3 beraz 3 plus 3 ematen dit 6.
>> Eta orain, zuk berrasiera bada Bideo ireki du puntu honetan arte,
Hau izan zen oso Lehenengo galdera galdetu nion.
Igaro zenean 3, zer da 3ko sigma?
Hain zuzen ere, 6, guztien batuketa paper pieza horiek guztiak.
Beraz, hori pixka bat hartzen badu, berriz, your mind inguruan biltzea, hori da isuna.
Baina kontuan hartu bat izan zen hura pixka Oso nahita pilatuta nuen
bata bestearen gainean zenbaki horiek.
Mota da bat izatea bezala erregistro bat, memoria denboran,
bideo batean scrubber bat bezala, dudala, hain zuzen ere atzeratzeko ere.
Eta ari gara itzultzea joan Pixka bat besterik metafora hori.
>> Baina lehen, bihurtzen da, ez dagoela Geeks eta dibertigarria pertsona asko,
Pentsatzen dut nik, Google at.
Litzateke norbait da oso Googling kontuan onak
Datozen une bat besterik ez da, eta lagundu bilatu zerbait da niretzat?
Oso, oso baxua gakoa.
Norbait da inoiz zatoz gora aurretik, agian.
ONDO DA.
Bai?
Etorri.
Goazen behera.
Nola deitzen zara?
>> SAM: Sam.
>> DAVID J. MALAN: Sam, behera etorri dira.
Hori bera da.
Urte askotarako.
Hey.
Goazen gainetik.
Beraz, guztiak, bada, ez duzu behar dut dezakegu, Sam, hemen da Google.
Ahal izango dituzu bilatzeko zerbait errekurtsibitateko egiteko?
Ez hondatu.
>> Eta orain let's-- bai.
OK klik egin.
Hobeto egin klik.
Ahh, lortuko da.
No?
ONDO DA.
Beraz, egin besteei pare bat utzi.
Ez hainbeste erlazionatutako akademiko hemen, baina egin behar duzu
inoiz bilatuko Google anagrama egiteko?
>> SAM: No.
>> DAVID J. MALAN: OK.
Search anagrama errekurtsio ordez.
Nola okertu buruz.
Inoiz bilatu duzu okertu egiteko?
Orain, hau da, pixka bat gogorra ikusi baina zorionez everything's-- OK.
Besterik ez da zu eta ni honetan gozatuz.
ONDO DA.
>> Beraz, azkenean, one's-- honetan okertu txiki bat da.
Orain egiten kanoi roll.
Wonderful.
Ados.
Big eskerrak Sam nahi duzu.
Hemen duzu joan.
Eskerrik asko.
>> Beraz, zer gertatzen den guztietan Adibide txoro horiek?
Beraz, benetan, kanpaia azpian Google-ren kode lerro milioika
Nonbait, gutxi silly bat IF direla funtsean baldintza
erabiltzaileari badu egiaztapena Esaldi hau idatzi,
hori ziurrenik hartu zuen zerbait egin Denbora kopuru nontrivial bat
besterik ezartzea modu horretan, dibertigarria izan.
Baina hori guztia da irakiten kanpaia azpian behera.
Baina, jakina, errekurtsio da geekier gehiago
trikimailu berezia dutenen artean adibidez.
Eta ziur aski ez da beste batzuk han baita agian ez dugu, nahiz eta
besterik oraindik aurkitu.
>> Beraz, itxura bat hartu, edo kontuan hartu orain honako programazioa,
eta, zalantzarik gabe hartu duen horiek your way out of.
Aurrera joan noa eta ireki, hori da programa bat
Bi trukatzeko balio saiatuko da.
Baina ez gara joan aurretik, eta egin dezagun.
Ezin izan bat gehiago lortuko dugu boluntario, uste dut?
Hala ere, boluntarioak nahi duzu?
No?
Goazen sortu.
Ados.
Beraz, zure izen-abizenak, zer da?
>> LAUREN: Lauren.
>> DAVID J. MALAN: Lauren.
Goazen sortu, Lauren.
Beraz, Lauren ari Hemen desafioa honela.
Urte askotarako.
Beraz, Lauren hemen aurrean dauzka Bere bi katilu hutsak dira.
Eta laranja batzuk ditugu zukua eta esnea batzuk
eta horretan ari gara joango Animatu eta honako hau.
Ari gara hau bete beharko.
Esnea ounces gutxira daude, bai eta goazen bete gutxi laranja zuku bat hemen baino.
>> Eta guztien aurrean ikusle horiek,
bi katilu horien balioak trukatzeko.
Jarri laranja zukua esnea kopan eta laranja zukua kopa esnea.
Nola egin nahi duzu hau bazeunde at etxeko eta gaurko beste izateko aukera?
LAUREN: Jarri kopa bestean.
DAVID J. MALAN: OK.
Hargatik aldi baterako aldakorra, izango bagenu.
Eta aurrera orain, eta martxan jarri bera aldaketa prozedura hori.
Beraz, ona.
Jarri dugu AO aldi baterako sartu aldakorra, AO aldagai sartu esnea,
eta orain aldi baterako aldagai du esne aldagai sartu.
ONDO DA.
Beraz, oso ondo egin orain arte.
Beraz out-- duten eduki bihurtzen da une bat besterik ez pentsatu.
Hemen, besterik geek pixka bat, hau Dagokion C kodea izango litzateke
hori aplikatu besterik ez dugu.
Bi sarrera, a eta b, bai izan dugu bertan, besterik ez dugu esango sinpletasunagatik dira
int en.
Eta konturatu hemen, trukatu nahi badut bi aldagai, a eta b-ren balioak,
Hain zuzen ere, middleman bat behar dugu, bat Aldi baterako aldagai, aldi baterako kopa,
bertan sartu du balio hauetako bat bota Horrela, biltegia daukagu.
Baina orduan kodea da zehazki Hemen abian jarritako Lauren bezala.
>> Orain, besterik bat lortzeko eroago gutxi, bihurtzen
Hau egiteko zu gabe Aldi baterako aldagai bat.
Horretarako behar bezala, hala ere, goazen kimika batzuk iruzur dute.
Edalontziak estra batzuk ditugu hemen.
Beraz, gauza hurbilena itxura esnea eta ura, agian atsegin
edo esne eta OJ-- da batzuk ditugu ura, beraz, hau bete beharko dugu sortu
argi ura ontza gutxi batzuekin.
Hori da, ziurrenik, gehiegi.
Bai.
Hori da, zalantzarik gabe, gehiegi.
Sec bat askatu.
>> Eta orain, olioa, eta horrek, gogoratzen dut daukagu erdiko eskola kimika klase batetik,
zorionez, ez du ura nahasten.
Baina mota Sort esnea eta AO itxura.
Beraz, orain, erabili gabe Aldi baterako aldagai bat,
daiteke bi balio horiek trukatu duzu?
Beraz olioak ur kopa sartzen da, ura olio kopa sartzen da.
LAUREN: No beste edalontziak?
DAVID J. MALAN: No beste edalontziak.
Eta ez dut dut benetan probatu hau aurten aurretik
beraz, ez dut egingo hau bada jakin benetan kimikoki lan.
Hori ez zen luke gertatu.
Da lanean?
Ados.
Beraz, banantzen?
Ona.
Orain lortu genuen ur beste kopa sartu.
Kimika kontzentratzaileak Smarter Could ziurrenik hau egin baino hobea.
>> LAUREN: Ura behean da.
>> DAVID J. MALAN: water-- hori izan zen Zer da gakoa azken denbora honetan egin dugu.
Egin behar den ordena egokian egin behar duzu.
Bai.
Ondo da.
Beraz, orain bi olio edalontziak ditugu.
ONDO DA.
Ondo da.
Baina nola landu kimikoki bada nik baino
>> LAUREN: Hau ura da.
>> DAVID J. MALAN: Hori da, batez ere, ura.
Ados.
Baina hori kopa aurretik bera da oraindik.
Beraz pour saiatu it han.
ONDO DA.
Klase denbora erabilera ona da gaur egun.
ONDO DA.
Beraz, gaur egun badugu polita.
Gutxi gorabehera.
Ados.
Beraz, oso ona.
Eskerrik asko Lauren izateko.
Oso ondo egiten.
>> Beraz, besterik gabe, zure adimenak kolpe, eta hori da, beharbada zerbait
CS50 ID ere, nahi izanez gero, jolasteko, daiteke, hain zuzen ere, trukatu duzu bi aldagai
aldi baterako, zenbaki oso bat erabili gabe.
Eta hori, dagokien C kodea da.
Eta gogoratzen duzu azken balitz , Asteazkena, sartu dugu laburki,
C. Eta duela operadoreen berri batzuk Edozeinek gogoratzen zer azenarioa gutxi
sinboloa da, triangular gutxi dagoela adierazten teklatuaren sinbolo?
Zer bitekin operadorea?
>> Ikusleak: EXOR.
>> DAVID J. MALAN: EXOR.
Esklusiboa edo.
Beraz, nahi izanez gero, besterik gabe, ondo pasatzeko etxean, a eta b bi arbitrarioa emateko
Edozein eight-- eta I like balioak zortzi bit balio bat aukeratuko luke.
Hori eginez gero, 32 bit-ekin, Oso azkar duzu aspertuko.
Baina besterik eman bat zortzi bit bat balio hori edozein dela ere, bat edo bi,
eta eman antzeko balio bat b.
Eta gero, definizioa erabiliz XOR joan den asteazkenean hasita,
bit hori aplikatu pixka arabera, bakoitzari a eta b bakoitzean zortzi bit horiek,
eta gero egin du zehazki kode hau per.
Eta ez da okerra zer pantailan hemen ikusten duzu.
Hain zuzen ere, irakiten behera It Hiru XOR operazioak izateko
eta nolabait magikoki eta bat b posizioak trukatuko
Edozein informazio galdu gabe.
>> Beraz, olioa eta ura Trick da gertuen dagoen mundu errealean Enkarnazio
Dut hori imitatzen uste.
Baina da, ziur aski, errazagoa Aldi baterako aldagai bat erabili,
Kasu honetan, hemen bezala.
Eta hori ere ez dago aukera bat esan, gehiegi, mikro optimizazioa mota hau,
ordenagailu zientzialari gisa esango, berriz, fun-mota
Hau nola egin zu gabe brag Aparteko aldakorreko batekin trukea bezala,
Ez da hori guztia sinesgarria.
32 bit, gisa gorde nahi duelako Benetako int baten kasuan, berriz,
ez da hori guztia sinesgarria sistema bat non on
den megabyte hamarnaka erabiliz dezakezu edo egun hauetan, besteak beste, memoria, are gehiago.
Eta hain zuzen ere, noiz lortuko dugu geroago arazo multzo bati
eta sorginkeria ezartzeko checker eta ikusiko duzu
Zalantzan jarri dituzten hacerlo egon hau RAM gutxi bezala, eta txiki gisa
denbora buruzko ahalik eta ordenagailu dituzu oraindik
aste bat ezartzea it have-- izango dituzu dituzu
Zalantzan jarri baliabide horiek gutxitzeko.
Eta hori da benetan bakarrak seihileko honetan kausatu
non bizarra bultzatu beharko dituzu nahiz eta performance onenetako off
kostatzen bestela.
>> Beraz what-- nola dezakegu ikusi honen benetako kodea ere?
Dezagun aurrera me now eta ireki adibide bat
nahita deritzo Ez Swap ez duelako
Izan ere aldagai aldatu benetan espero liteke.
Beraz, dezagun begirada bat.
Hemen ez duela CS50 ditu programa bat da liburutegia gertatzen, I / O besterik estandarra.
Orain prototipoa bat dugu swap gora goitik zein besterik
esan nahi izan dadila geroago hautatu behar dela.
Eta hemen nagusia.
>> Arbitrarioki x eta y esleitutako dut, hurrenez hurren, baloreak eta bi
besterik txiki Oraindik dutelako eta erraza pentsatzen.
Eta gero, besterik ez dut printfs mordo bat non behatu kontrol bat daukat. x 1
eta y 2 ustez da zer printfs horiek esango du.
Beraz, magia ez orain arte.
>> Ondoren, naiz aldarrikatuko joan inprimatu def, dot dot dot aldaketa.
Swap deitzen noa funtzioa, x eta y pasatuz.
Eta demagun orain dela swap zehazki inplementatu
duela une bat izan zen bezala Aldi baterako aldagai batekin.
Eta beraz, boldly erreklamatzeko dut, trukatu.
x da, hau eta y da orain.
Baina fitxategiak orduan, noski, deritzo No Swap.
Beraz, benetan ikusi zer gertatzen den.
Bildu dut swap ez eta orduan bada egiten ./noswap, x 1, 2 y da.
Aldaketa trukatu.
x 1, y da 2.
Beraz, egia esan, badirudi, nahiz eta zuzena egon behar da nahiz swap-- dezagun scroll down da gaur egun
zehazki abian jarri den per kodea une bat duela proposatu dut.
Beraz, ez gara gauza ederrak lor joan XOR oraingoz gauzak batera.
Hau ere, funtzionatu beharko luke esnea eta AO bezala,
baina ez dirudi lanean.
>> Beraz Berriro egin dezagun.
Agian dut besterik ez zen hura eskubidea martxan.
Hargatik berriro exekutatu No Swap.
Agian nik ez.
Beraz, hau ez dabil.
Beraz, egin apur bat behatu kontrol utzi.
Dezagun aurrera me hemen Swap ere eta besterik gehitu, minutu bat itxaron,
a% i da / n eta dezagun plug-in baten balioa.
Benetan nahi dudalako zer gertatzen den ikusteko.
Eta hain zuzen ere, hau da, arazketa-teknika bat
izango duzula erabiliz agian bulego orduetan edo etxean dagoeneko,
Dan lehen erdian Akin Armendarizen PSET3 bideoa
dua inprimatu sartu dugu def gisa gomendatutako teknika bat, gutxienez
kasu errazak egiteko.
Dezagun aurrera me eta make swap no berriro, ./noswap.
>> Interesgarria da.
Beraz, konturatu zer badirudi egia izan. x da 1, 2 y da, baina bat da 2 denean b da 1.
Beraz, bi horiek nolabait got trukatu baina x eta y ez dira ohitu trukatu.
Beraz, argi izan, zer gertatzen ari hau da, hemen x eta y daukat
eta horiek aldagai tokiko dira nagusia esparrua, x eta y pasatzen ari naiz
trukatzeko.
Orain, swap, beste funtzio gisa, da free bere argudioak deitzeko
edo nahi duen bere parametro ezer.
Foo edo taberna edo x edo y edo edo b.
Just argi utzi zuten zarela Ez x berdin-berdina eta y per se,
Nik esan nion eta b.
Baina horiek ezer nahi dugu deitu genezake.
>> Eta beraz, itxura swap ari gainditu da
x-- Unzurrunzaga a-- eta hori da gainditu y-- Unzurrunzaga b ari.
Nolabait hiru lerro hauek dira balio horiek zehazki aldaketa
Lauren esnea eta AO egin zuen bezala.
Baina duzunean inprimatu dugu balioak, a eta b
dira, hain zuzen ere trukatu baina x eta y dute horiek aldatu gabe.
Gogoratzen x eta y dira hemen.
>> Beraz bidez ikusi ahal izango dugu beste teknika bat baita.
Eta hori ere teknika da Arazoa murgildurik ezarri hiru.
Goazen aurrera, eta hori ere CS50 NAN ez badaukazu Dagoeneko.
Eskuin hegalean dugu buruzko Debugger fitxa hau eduki.
Eta hau ireki nahi izanez gero, bada, han urrutira informazio batzuk
hori bota duzu, hasiera batean.
Baina dezagun aurre gain hau benetako azkar.
>> Bat, beraz, aldagai lokalak ikusten duzu.
Turns CS50 IDE sartu eraikiko dela, eta programazio inguruneak askoz gehiago
oro har, araztailea da.
Duten ikusmen ikusteko aukera ematen du tresna A zer gertatzen den zure programaren barruan
gehituz jo beharrik gabe printfs eta bildu eta martxan
eta printf en gehituz eta bilduz eta , martxan eta dagoeneko, bulego orduetan
edo etxean, da seguruenik nahiko lapurtera lortzean.
>> Beraz, hemen, une bat besterik ez, ez gara den denbora errealean ikusteko joan
Gure tokiko aldagaien balioak.
Ari gara, halaber ezarri ahal izango da zer dira eten izeneko
aukerak dira nire programa eteteko ere Kode-lerro jakin batean exekuzioa
Oso bitxia naiz.
Eskuin?
Programa horiek zatitu batean abiaraziko da bigarren.
Mota polita egiten digu gizakiak motelagoa gelditzeko, une bat hartu ahal izateko, ikusi
Zer ari den inguruan Kode-lerro jakin bat
programa plowing gabe horren bidez, eta oso-osorik, amaitu du.
Beraz, eten bat gaitu joan apurtu eta puntu jakin batean gelditu.
>> Deia pila modu dotore bat da zer funtzio Une esanez
ari da une honetan deitzen.
Main beti deitzen da lehenengo.
Baina Main deiak bada bat funtzioa aldatu deitu,
benetan ari gara hau ikusteko joan funtzio dorrea izan diren
kronologikoa alderantzizko ordena deitzen.
Beraz, ikus dezagun hori.
>> Urruntzeko noa.
Atzera joan my kodea noa.
Eta besterik nahi dudalako pedantekeriazko izan hemen,
Aurrera joan eta egin klik noa besterik linea bost ezkerreko.
Eta hori puntu gorri bat sortzen du.
Eta eskuinaldean nabarituko araztailea dela badaki, beno,
Esan dut at etendura bat Noswap.c linea bost, zehazki,
kode-lerro honetan.
Beraz araztailea daki dut eskatu duten hurrengo aldian
Nire programa da pausatu exekutatu dut exekuzioa ez besterik beharrean
gauza osoa super azkar korrika.
>> Beraz, orain ez dut Debug klikatzen joan IDE oso goialdean botoi
eta hori honako hau egin behar da joan.
Honez bat irekitzeko, hasieran zertxobait joan scary begira bigarren terminal leiho
urruneko arazketa antolatzailea, besteak beste, eta such--
eta egingo da itzuli dugu zer Hori guztia baino askoz lehenago esan.
Baina zer da garrantzitsua oraingoz da puntu gorri hori jo zuten,
araztailea ditu nahita pausatuta execution--
Ez se bakoitzeko lerro hori, baina lehen egunean benetako funtzioa duten kode lerro.
Eta horregatik zazpi linea da orain horiz nabarmenduta.
>> Eta orain dezagun begirada bat Eskuinean at.
Dirudienez, besterik ezean, nicely nahikoa, x zer balio du?
0.
Eta y dauka zer balio?
Zero.
Eta hori da, zentzu batean espero izatekoa x dela eta y-- lerroan horia duela
oraindik ez exekutatu.
Beraz, x ez luke balioa 1 izan.
Baliteke beste edozein balio izan du, Zabor balio deiturikoak.
Eta hori da ere zortea ginen puntu honetan zero, funtsean.
>> Beraz, gaur egun gutxi batzuk bakarrik botoiak arreta behar dugu
modu horretan, arazketa denean buruz.
Iragarki hemen, Play botoi bat dugu.
Eta jokatuko badugu edo hit berrekiteko, hori besterik
to bidez exekutatu joan Programaren gainerako
edo hits etendura beste arte.
Baina ez dut beste edozein ezarri eten, beraz, besterik ez da
to amaieran bidez exekutatu.
Porrot egin mota horretako kuxkuxean aritzea du helburu.
>> Beraz, horren ordez, zaintzen dut eskubidea ikono hauek.
Eta gainean pasatzean badut horiek ere behar bezala,
Ikusiko duzu pixka tips-- tresna aholkuak.
Honek bat zapaldu baino gehiago da.
Orain dela ez du esan nahi, skip Honakoa kode lerro.
Bakarrik esan nahi exekutatu eta hurrengo mugitzeko, hurrengo mugitzeko,
hurrengo mugitu.
Beste era batera esanda, bidez botoia, ezin dut oinez
Nire aldi berean urrats kode baten bidez.
Lerroz lerro, hitzez hitz.
Orain, eskubidea han beste bat
egingo dugun une bat besterik ez ikusi.
Hau da, llamado Into ikono hori Urratsera
me baimendu murgiltze joan funtzio beste.
Baina ikus dezagun une bat besterik ez.
Beraz, ez dut Ezkutatu bat gaindituta.
Eta orain konturatzen, I sakatu gisa botoia goiko eskuineko honetan,
your eyes gutxi gorabehera mantendu Local azpian Aldagaiak eta ikusi zer x gertatzen.
x da orain 1 delako lerro horiak orain abiarazi izan
eta lerro 8 ikusi dugu mugitu.
Eta besterik gabe, une y batean zorionez bihurtu behar 2.
>> Orain, ezer ez dela interesgarria Pixka bat gertatzen da.
Guztiak hau da printf da.
Eta nabarituko, nire bigarren mailako terminal batean leiho, inprimatu def irteera ikusten dut.
Eta orain, bat egin nahi izan dut Erabaki programatzaile gisa.
Ezin dut lerro honen gainetik pasatzeko kodea exekutatzea baina ez
zer barruan bitxi buruz lortzean.
Edo Ezin dut egia esan, hori bide eta Swap beraren barruan joan.
Beraz, azken hori egiten utzi.
>> Dezagun aurrera me eta egin klik Ez Urratsera baino gehiago, baina urrats sartu.
Oharra, bat-batean leiho aldaketak
Lehenengo nabarmentzeko Swap in kode lerro.
Hori line 21 da.
Eta orain, zer da funky mota da hori, zuk baino gehiago hemen begiratuz gero, espero bezala,
comma b a 1 eta 2, hurrenez hurren.
Zergatik da temp 32.767?
Temp hau gogora, askoz ere atsegin du hutsik kopa une bat lehenago,
Hemen deklaratu on line 21.
Zergatik 32,000- esan nahi dut, zergatik da Balio bitxi batzuk besterik ez?
Bai?
>> Ikusleak: Ez da hasieratu.
>> DAVID J. MALAN: hasieratu egin dira.
Beraz, gure ordenagailua beti memoria fisiko ditu.
Beti RAM fisikoak ditu.
Eta ez da beti zero da eta han inork, ezta?
Erabiltzen ari garelako gure ordenagailu egun osoan zehar,
CS50 IDE erabiltzen ari zarela edo zerbitzarietan egun osoan zehar.
Beraz RAM hori bai zeroz batzuk edo bakarren baten edo zero batzuk.
Ez dio axola ala Ez horiek erabiltzen ari zara.
Ezin duzu besterik ez dute hutsik espazio bit nahi duzun.
Zeroen eta bai Oraindik dute.
>> Eta gertatu da aldi baterako, zeren ez dugu oraindik hasieratu da,
32 bit horiek izan dugu, baina ez dut dute izan balioak ezagutzen duen hasieratu.
Beraz, edozein izanda ere izan ziren gehien Duela gutxi erabilitako For 32 horiek bit
besterik zenbait objektu ikusten ari gara 32 partikular horien erabilera aurreko
bit.
Bezain laster urratsa egin ahala ordea klik dudan bezala, Phew, tenporala da balioa 1 iritsiko.
Eta berriro egiten badut, bat da joan, eman behar da 2 balioa
eta, ondoren, b dago joan da emandako balioa 1.
>> Eta orain zer polita at Istorioa puntu honetan
da araztailea dela me erakutsiz, super astiro
nire erritmoan, zer Swap egoera da.
Baina goian hemen, oharra nabarituko dei pila benetan
bertan, bi mailetan ditu.
Orain hori bezala nabarmenduta bat Swap, sakatu dut Main ordez,
nabarituko aldagai lokalak nola aldatu delako sustatzailearen besterik hop
inguruan eta edozein desberdinak esparrua sartu.
Hori guztia gara egiten ditut, nahiz lan eta bat eta b behar bezala aldaketa,
atzera eta aurrera joaten naiz Swap artean bada non a 2 da eta b da 1 eta Main,
ditu Main kaltetutako guztietan?
No.
Beraz, zein da eramateko hemen?
Beno, bihurtzen da, edozein dela Swap bezalako funtzio bat deitu,
eta, argumentuak, pasatzen duzu zer Swap funtzioa nahi duzun pasatzen ari
Kasu honetan, kopia bat da argumentuak horietako.
Beraz, x eta y bakoitzak badira hurrenez hurren 32 bit, zer Swap ari da
da bertako bi berria aldagai edo argumentuak,
izeneko bat eta kentzea b baina horiek arbitrarioak dira names-- baina zero patroia
eta bai barrutik eta b dira lerrokatuak x eta y berdina izan
baina ez dira x eta y gauza bera.
>> Da nagusia bere pieza ditu, nahiz eta gisa paper 2 x eta y zenbakia 1 eta,
eta, ondoren, eskuak dela paper zati, swap
Swap oso azkar lortzen bere luma propioa, idazten du behera
1 eta 2 bere paper orri kabuz, esku jatorrizko xy kopiak Main
eta orduan ez du bere kabuz a eta b gauza.
Eta hau da orain super garrantzitsua delako hau nontrivial inplikazio ditu
benetan zuzena kodea idazteko badirudi lukeelako ezin ditugu trukatzeko
bi aldagai.
>> Swap funtzioa egoki bat idatzi dut.
Nik inplementatu dugun Lauren batera jo swap errealitatean funtzio zuzena da,
baina, antza denez, hori ere ez Ez benetan gaietan baduzu
Bi trukatzeko balio betirako.
Beraz, beste era bat behar dugu benetan honetan lortu,
eta gai izan behar dugu benetan konpondu arazo hau.
Eta bihurtzen da, eta etorri egingo dugu argazki hau, bereziki bizkarrean
long-- aurretik modu bat da hori zure ordenagailuaren memorian marraztu dezakezu.
Laukizuzen bat besterik ez da.
Inolako marraztu izan duzu Modu baina da kopurua
komenigarria da gisa marrazteko honako arrazoia dela eta laukizuzen.
>> Gaur hasiko den eta haratago goaz pila deiturikoak buruz hitz egiten.
Eta pila pusketa bat besterik ez da of RAM memoria zatia
funtzio hori eskuratzeko aukera dute direnean, deitzen ari den.
Eta horrela bihurtzen da aldi berean pila honen bukaerara
Hor Main en tokiko aldagaiak eta org C eta org V eta guzti
dira lehenetsita joango gara. Eta nagusia bada beste zenbait funtzio deiak Swap bezala,
bai, Swap da beste lortzeko joan haren gainetik memoria up geruza.
>> Eta horrela lortzen azaletik azkar bat emateko honen irudi baino gehiago, joan badut hemen
eta utzi ispilu me honi buruzko overhead well-- gisa benetan zer daukat,
buruzko bakarrik zaintzen badugu Argazki hau beheko oraingoz,
dela programa bat exekutatzen I eta Main izeneko lortzen,
Main zatia ematen da Nire ordenagailuan RAM dela
deiturikoak pila honen behealdean.
Eta ez dut marraztuko ditu nahita plaza gisa.
Beraz, 32 bit edo lau byte bezala.
Eta funtzio nagusiak honek badu bat aldakorra izeneko 1 balioa duten x
eta aldakorra izeneko ditu 2 balio batera y, hori da
memoria sliver hau hartuta bezala dagoela Main ha dado eragileak
sistema eta zatituko da, beraz, lehen tokiko aldagai hemen doa,
bigarren bat, hemen doa, eta hori da.
>> Main deiak Swap, Swap bere memoria xerra lortzen
egingo dugun Horrela marraztu sistema eragilearen,
eta nik behar joan bere egin aldagai lokalak oinarritutako
Gure ezartzeko lehenago tokiko aldagai bat
eta b hasieran balioak 1 eta 2.
Baina, ondoren, bezain laster Swap kodea exekutatzen,
eta Lauren benetan trukeak du AO eta esnea, zer gertatzen da?
Beno, 2 hau bihurtzen ari da 1 bat, hau 1 bihurtzen ari da 2 bat, eta, bide batez,
ez temp aldagai bat hori izanik Denbora guztian hori erabiliko dela, azkenean
ihes doa.
Baina ez du axola lan zenbat ez duzu
lerro honen memoria espazio honetan of--, x eta y erabat bereganatzea dira.
>> Beraz emanez modu bat behar dugu Swap eta funtzioak Gustatu
sarbide sekretua, izango bada, to funtzio x eta y bezalako oroimenari antzekoak.
Beraz, dezagun begirada bat Adibide bat laguntzen duen
zehazki zer egin digu ikusi denbora honetan guztian gertatzen.
Aurrera joan noa eta ireki Tarifa Zero.
Eta ez dut nahi itxi joan Gure araztaileak, noa
bila-mezu beldurgarriak hau ixteko besterik ez dio, itxaron minutu bat,
Oraindik erdialdera arazketa duzun.
Fitxa hau ezkutatzeko hemen noa besterik soiltasun itzuli nahi.
Beraz, ez kezkatu GDB hil bada.
Bakarrik esan nahi duen programa ditu irten dira, nahita, kasu honetan,
me arabera.
>> Eta orain Tarifa Zero du honek.
CS50 erabiltzen dut I / O standard liburutegia.
Dut funtzio nagusia dela lehen dio, esan zerbait, eta kate bat lortzen.
Gero, esaten du behin eta katea beste lortzen.
Eta hori bi kateak nabarituko dira s eta t deitzen dira, hurrenez hurren.
Eta, orain, programa honetan, Konparatu Zero, bere bizitza helburua,
ustezko me kontatzeko, idatzi nuen gauza bera?
Eta orain naiz atzera joan nintzen aste bat.
Nire berdinak operadorea berdina erabiltzen dut kalitate operadorea da.
Ez esleitzeko operadorea, berdintasun-operadorea.
Besterik s eta t naiz alderatuz.
>> Beraz, goazen benetan aurrera, eta hori.
Eta aurrera noa joan eta alderatu zero.
./comparezero Ez noa.
Eta naiz joango Animatu eta zerbait esaten
bezala, egin dezagun ama minuskulaz utzi eta maiuskulaz ama buruz nola.
Eta, jakina, idazten dudanean gauza desberdinak.
Ados.
Hori da, espero da.
>> Dezagun exekutatu berriro.
Biak aldiz egin minuskula, minuskulaz.
Itxura super me berdina.
Sartu.
ONDO DA.
Agian, bitxia delako Ez da nire gramatika gustuko.
Beraz, egin capital ama bat utzi, capital Ama, berdin-berdina.
Gauza ezberdinak.
>> Beraz, zergatik da hori?
Beno, zer benetan joan kanpaia Hemen azpian?
Beraz, goazen atzera baino gehiago Hemen une bat besterik ez
eta kontuan hartu zer GetString Benetan egiten.
GetString deitu, duten funtzioa dugu bat
idatzi zuen geure eta nolabait daukala bat erabiltzaileari karaktere adierazteko.
Eta utzi du bere gain hartzen lehena, egungo denbora GetString deitu dut, ematen dit
memoria zatia itxura hau.
Eta idatzi dut minuskulaz guztietan bada m-o-m-- eta horren ondoren zer gertatzen den?
Just azkar behatu kontrol bat.
>> Backslash zero.
Hori badakigu.
Eta gogoratzen jokatu dugun Inguruan Zamila izen
eta beste izen mordo bat denean Rob hemen ari zela
Zer gertatzen ari den memoriaren barruan at.
Beraz, istorio hori zehazki gauza bera da.
Hau da, zer GetString niri itzuli.
Orain, nire kodea une bat duela gordeta bueltan GetString balioa
aldagai batean s izeneko.
Eta gero, bigarren aldiz, deitzen dut, gordetzen da t aldakorra izeneko batean.
>> Beraz, hemen baino gehiago joan badut, behar dut tokiko aldagai hau marrazteko
eta, oro har, ez dut joan Kate bat just zaitugu marrazten
deitu s-- plaza txiki bat hemen bezala.
Eta orain, nolabait, nola egiten du ama s aldagai horren barruan joan?
Beno, atzera egin behar dugu Hemen printzipioei.
Zer da GetString benetan itzuli?
>> Beraz, izarrekin bihurtzen da M-O-M backslash zero, eta edozein zenbaki
beste bezalako memorian kateak Zamila eta Rob edo Andy edo beste edozein,
Ikastaro dira gure ordenagailuaren RAM memoria.
Eta zure RAM ditu antzekoak duzu RAM kontzertuan, bi RAM kontzertuak,
edo milioi edo bi milioi byte, edo, agian, are gehiago egun hauetan.
Hargatik bere gain, gaur egungo helburuetarako, Hori ez du axola nola ematen dugun
horiek, baina bakoitzak zenbaki dezakegu horiek milioi edo bi milioi
edo lau milioi byte.
>> Eta dezagun arbitrarioki esan duten hau lehen ziztadak, bigarren ziztadak da,
Hirugarren, laugarren.
Nahita dut, ez zero erabiliz gaur egun, baina etorriko atzera egingo dugu.
Beraz, beste era batera esanda, hau da baldin Lehen aldiz programa erabiltzen ari naiz,
Besterik ez naiz zortea eta lehenengo hartzean mokadu kokapen bat da, ondoren, bi
ondoren, hiru, lau baino.
Eta marrazketa mantendu badut, kutxa zenbakia bi milioi baino gehiago modu hemen izango litzateke.
>> Beraz, zer uste duzu, ondoren, GetString benetan itzultzen?
Ez da M-O-M backslash itzuli zero per se, argi eta garbi duelako
Ezin izango moldatzen direla idatzi dut herri koadroan.
Beraz, zer gehiago GetString agian benetan egon itzuli aste horiek guztiak?
Erantzuna piztuta board hemen nonbait.
Ezin dituzu M-O-M backslash zero, beraz, zer zentzurik dezake ordez?
Super azkarra izan da, jarriz bazenu ingeniaritza-hat deiturikoak,
zer duzu itzultzeko daiteke?
Zer da informazio gutxien hori oraindik itzuli ezin duzu litzateke
M-O-M aurkituko dituzu oroimenean utzi?
Bai?
>> Ikusleak: One.
>> DAVID J. MALAN: One.
Eta zergatik?
Ikusleak: esango luke delako duzu nora joan [INAUDIBLE].
DAVID J. MALAN: Zehazki.
Besterik ez naiz helbidea itzuli egingo da ahaztuak nuen katea.
Honen helbidea Kasu bat kokapena da.
Beraz, zer da s-- gordetzen ari den eta katea aldagai beraz, orain arte
besterik ez ditu izan da kate horren helbidea.
>> Bien bitartean, I deitu izanez Bigarren aldiz eta I GetString
idatz literalki gauza bera Minuskulaz M-O-M M-O-M
eta backslash beste zero, eta orain agian nire programa
dira, beraz, agian hau exekutatzen denbora pixka 10 da, hau kokapena 11 da, hau da, 12
hau 13 da.
Ordenagailuak beste batzuk erabiliz edozein arrazoigatik memoria.
Zer orain nire bigarren doa Nire programa t aldagaia?
10.
Hain zuzen ere.
>> Eta beraz, begiratu at dugu programa honen iturburu-kodea
non I besterik saiatzen naiz Bi balio konparatzeko,
S berdinak berdina t, zer da bistako giza erantzuna?
1 lukeen ez delako ez da berdina 10.
Eta beraz, hortxe dago bat Gurekin aukera benetan
besterik gabe, joan, itzuli, berriz ere, lehenengo printzipioak eta, buruz ondo pentsatzeko,
zer ari den gertatzen kanpaia azpian?
Izan gara buruz hitz egiten bit eta byte eta memoria,
baina benetan erabilgarria da ulertzen GetString deitu duzulako,
uste dugu, nahiz eta ez da M-O-M edo kate ama itzuli
edo Andy edo Zamila edo bezala, teknikoki
besterik ez da helbide itzuli memoria zatia dela.
>> Baina hori OK.
Nola ez dakit zeren non katea amaitu?
Naiz bakarrik eman hasieran bada?
Beno, backslash zero, ezta?
Just denbora lineala I can batean inprimatu inprimatu def M-O-M.
Eta backslash ikusi bezain laster zero, ez zait axola non hasi nintzen,
Dagoeneko ezagutzen dut inplizituki non amaituko behar dut.
>> Eta, beraz, gaur egun, hasieran du markatzen eta Horretarako me nabarmen dugulako
arazoak asko bidez joan eskuratu hemen horiek entrenatzen wheels--
beraz, gaur egun, prestakuntza gurpilak hasteko alde batera utzi eta agerian egon ginen least--
>> [Txaloak]
>> Hori izan zen, ondo bidaia merezi Gaur goizean helburu, bai?
Beraz, orain ez dago, hura bihurtzen out, katea gauza, hala nola.
Esaldia ez da existitzen.
Hori izan dugu sinonimo da CS50 liburutegiaren barruan.
Hemendik aurrera, deituz hasteko goaz s eta t ez kateak baina char izarrak.
Eta char izar zaitugu aurre gain luze baino lehen.
Baina honek esan nahi baita, jarraitzeko, nahiz eta dugun
GetString oraingoz, teknikoki behar dut
izan char izar eta char izar esanez.
>> Eta bihurtzen da zer Izarrak den adierazteko joan da zerbait
erakuslea edo helbide izenekoa.
Eta hain zuzen ere, aurkezpenik bat zer datza aurretik
20 segundoko bideo hau da gure Lagun Nick Parlante Stanford
izan ere, orain dela nahiko denbora pixka bat pasatzeko Denbora kopuru barregarria,
onena bezala ezin dut esango bere sukaldea edo bere sotoan,
claymation egiteko Mundu sartuz
izeneko pertsonaia bat Hegazti harekin egingo dugu
izango da sartu hurrengo aldian erakusleak.
Hortaz, hona hemen zer etorriko aurrebista bat da.
>> [Bideo-erreprodukzioa]
>> -Aizu, Hegazti.
Esnatu.
Erakuslea pasatzeko garaia da.
>> -Zer da hori?
Erakusleak buruz ikasi?
Oh, Goody.
>> [END erreprodukzioa]
DAVID J. MALAN: Eta ohar horretan, Asteazkenean ikusiko dugu.
Ados.
Nor dago dantzan?
Etorri.
Nor dago dantzan?
Nahi izanez me get hasi zen?
Lortuko dut hasi zen.
Woooo!
>> LAUREN: Sweet fancy Moises.