[Musika jotzen] ROB Boden: Guztiak eskubidea. Beraz, lehenik eta lehenengo gauza, bideoaren Aurpegi ezagunak batetik. [Bideo-erreprodukzioa] -Ondo da. Hau CS50 da, eta hau da, astean hiru hasieran. Barkatu ezin nuen han egon zurekin nago gaur egun, baina baimendu aurkeztu me CS50 Rob Boden egin. [END bideo-erreprodukzioa] [Txaloak ETA CHEERS] ROB Boden: in filmografian The Bideo duten fantastic da. Ondo da. Beraz, lehenengo, han bazkaldu bat da. 1:15 etan bihar da. Ez dago bazkaria ostiral honetan. Quora rekin da. Eta Tommy ez da hemen oraindik, baina bat Jende ohia buru CF dago, Tommy McWilliam. Hain dibertigarria lasaia izan zuen. Etorri behar duzu. Ondo da. Beraz, azken astean, gain hautsi hasi ginen kate bat benetan zer den azaltzeko. Hasieratik dugu ezagutzen duten karaktere-sekuentzia bat da. Baina azken astean, hain zuzen ere lan egin dugu zer dela benetan sekuentzia bat pertsonaiak, bai, orain dugu karaktere array. Eta badakigu kate bat, array bat da pertsonaien, oso amaieran, null byte berezia hau dugu, hau backslash 0, eta horren amaieran adierazten katea. Eta horrela kate bat array bat da pertsonaiak, baina izan dezakegu baino gehiago besterik pertsonaiak ezagutuko ditu, edozein array bat izan dezakegu Gauza mota nahi dugun. Beraz, gogoratzen duzu astetik bada, Adin programa hori David sartu benetan azkar. Beraz, lehenengo gauza egin behar dugu, galdetu erabiltzaileari zenbaki oso bat eman du, Gelan pertsona kopurua. Behin zenbaki oso dugula, array bat deklaratzen ari gara. Iragarki bracket sintaxia hau. Ohitu dela joan zaren. Beraz, zenbaki osoen array bat deklaratzen ari gara Adin izenekoa, eta badira n array honetan osokoak. Beraz, eredu honetan hementxe, 4 int honetan berdin i 0, i n baino gutxiago, i plus plus, hori ere eredu bat izango da joan duzu oso erabiltzen duten urratsak emateko. Hori nahiko askoz nola zauden delako Beti matrizeak baino gehiago batetik bestera joateko. Beraz, gogoratu n dela gure array luzera. Eta beraz, hemen, behin eta berriz galdetzen ari gara Pertsona gelan i adina da. Honen ondoren, jaitsiko gara, eta edozein dela ere arrazoia arbitrarioak, orduan dugu inprimatu zenbat urte ari dira joan Urte bat izango da hemendik aurrera. Eta programa hori exekutatzen, dezagun Adin egiteko, dot barrarik adin. Beraz gelan pertsonen kopurua, demagun, hiru dira. Eta esan, lehen pertsona da 13, hurrengo 26 da, eta azkena izan da 30. Beraz, ondoren, hiru horiek baino gehiago batetik bestera izango da pertsonak, inprimatu 14, 27, eta 31. Beraz gogoan izan denean bat aldarrikatzen dugu tamaina n array, horretan indizeak array, matrizearen balioak ditu eta indizeak 0, 1, 2, modu guztiak gehienez n ken 1. Beraz, esan dugu ez hiru pertsona izan ziren gelan, eta jarri dugu hemen honen bidez lehen iterazio begizta, 0 izango da i joan. Beraz, indizea 0. Lehenengoa esleitzea ari gara adina, erabiltzaileak sartzen da. Ondoren, hurrengo urtean, sartzen ari gara bigarren n erabiltzaileari sartzen da, eta urtean bi, azken n ondoan. Beraz nabarituko tamaina array hiru ez du ezer izan indizearen hiru urtean. Hau ez da zuzena. Ondo da. Beraz, joan atzera hemen. Beraz, orain dugu tratatzen array, ezagutza batzuk izan dugu. Orain ari gara mugitu komando joan lerroko argumentuak, diren izango da Nahiko arazo multzo honetan garrantzitsua. Beraz, orain arte, betiere duzun zure eginkizun nagusia izendatu, dugu esan int hutsune nagusia. Beraz, hutsunea besterik esan nahi ez dugu inolako pasatuz funtzio honen argumentuak. Orain ari gara nagusia duten ikusteko joan argudio batzuk hartu daiteke. Hemen horietako int deitzen dugun argc eta katea argv parentesi artean. Parentesi artean, berriro ere, adieraziz array horrek gure aztergaia. Beraz, hemen, kate argv parentesi artean, gaude kateak array aurre. Beraz argc, hori adierazteko joan zenbat argumentuak dugu programa hau gainditu. Eta zer esan nahi duen ikusteko, dezagun hau ixteko. Ados. Beraz, orain arte, nik exekutatu dugu behin dot barra adin bezalako programa. Gaitezke, komando-lerroan, iragana argumentuak pasatzeko, beraz, terminoa, komando lerroko argumentuak. Beraz, lehen argumentua, kaixo mundua. Beraz, hemen, argc hiru izango litzateke. Argumentuak kopuruan da komando-lerroan. Argc da beti, gutxienez 1, geroztik dot slash adin, berez, bat bezala zenbatzen komando lerroko argumentuak. Ondoren kaixo lehenengoa izango da. Zeroth dot barra adin bada, orduan kaixo lehen da, eta mundua dago Bigarren komando lerroko argumentu. Beraz, katea argv du, ari gara ikusten joan, kateak, dot barra dauka Adin, kaixo, eta munduko. Eta, Daviden eskaera eginda, goazen bideo bat sartuz erreproduzitzeko. [Bideo-erreprodukzioa] -Orain arte programak dugu hemen idatzizko, deklaratzen dugu int gisa nagusia hutsune nagusia. Eta denbora hori guztia, hutsune hori besterik ez dira zehazten diren programa ez du inolako hartu komando lerroko argumentuak. Beste era batera esanda, erabiltzaileak bat exekutatzen denean programa, berak komando eman dezake lerroko argumentu osagarriak idatziz Hitzak edo esaldiak ondoren programaren gonbitan izendatzeko. Beno, ez baduzu zure programa nahi duzun komando lerroko argumentuak, bat edo hartu esaterako, hitz gehiago, ordezkatu behar dugu argumentuak pare bat gal. Beraz, utzi egin dela. Honakoak cs50.h. Honakoak io.h. estandarra Int nagusia. Eta orain, hutsune ordez, noa joan argc izeneko int bat, eta zehaztu argv izeneko kateen array. Orain, argc eta argv dira besterik gabe konbentzio. Dugu argudio horiek deitzen zitekeen gehienetan ezer nahi dugu. Baina, zer da garrantzitsua da argc dela int bat, izan ere, definizioz, da argumentu Aldaketa eduki behar, du guztira hitz kopuru hori Erabiltzaileak bere gonbitean idatzi ditu. argv, bere aldetik, argudio vector, da array bat gordetzeko benetan izango da Erabiltzaileak ditu hitzen guztiak bere gonbitean idatzi. Dezagun jarraitu orain zerbait egin behar bat edo gehiago hauek batera komando lerroko argumentuak. Bereziki, dezagun aurrera eta inprimatu dena delakoa hitza erabiltzaile motak programaren izena ondoren gonbitan. Irekita parentesia. Itxi parentesia. Printf ehuneko ren alderantzizko barra eta koma. Eta orain zer printf balioa kontatu behar dut den leku-marka duten sartu konektatu. Lehen hitza Erabiltzaileak ez du nahi dut programaren izena ondoren idatzi, eta beraz, ez dut zehaztu joan argv parentesi 1, itxi parentesi, puntu eta koma. Orain, zergatik parentesi 1 eta ez parentesirik 0? Beno, bihurtzen da, automatikoki gordetako argv 0 izango da, joan den programa oraingo izena. Beraz, lehen hitza duten erabiltzaile motak programaren izena da ondoren, egindako konbentzio, izango da argv 1 gordeta. Dezagun konpilatu en orain eta programa hau exekutatu. Egin argv 0, dot barra argv 0. Eta orain hitz bat bezalakoa kaixo. Sartu. Eta hor egon behar dugu, kaixo. [END bideo-erreprodukzioa] ROB Boden: Guztiak eskubidea. Ixtea. Beraz, programa horretan begirada bat hartu duten gurekin sartu besterik ez dugu, bai, besterik , erakusteko inprimatu dugu 0 argv bada, egin, orain zer da, argv 0, dot barra argv 0. Beraz, espero bezala, zer inprimatzeko dut programaren izena, argv 0 da geroztik beti izango da du programaren izena. Baina egin dezagun zerbait bat utzi interesgarriagoa bit. Beraz arazoa multzoan, izango duzu honen funtzioa, atoi sartu. Beraz, zer egin atoi erabili dugu? Hori bihurtzeko joan a zenbaki oso bat katea. Beraz, katea pasatzen badut, bat, bi, hiru, atoi, hau bihurtzeko egingo duen zenbaki osora, bat, bi, hiru. Beraz, lehenengo bihurtzeko joan Komando lerro osoko bat argumentu, eta, ondoren, osoko zenbaki hori inprimatu. Beraz, funtsean, gara motatako GetInt reimplementing, besterik Zenbaki oso komando at idatzi duzula line programan ordez interaktiboki. Beraz, ondoren, argv 0 eginez, egin dezagun hemen da, eta ixtea. Beraz argv 0 korrika, eta dezagun idatzi Zenbaki oso, bat, hiru, lau, bat, bi, bi. Beraz osokoa inprimatu ahal izango da, inork bi, hiru, lau, bat, bi. Badira ñabardurak batzuk ATOI izateko ezer ez zaintzen gelditu egingo da baliozko zenbakizko pertsonaia haratago, baina horrek ez du axola. Beraz, zer uste duzu gertatzen egin behar dut? Segmentaziuo hutsegitea. Beraz, zergatik da hori? Atzera duzu gure programa at bada begiratu, gaude argv 1, lehen argumentua bihurtzeko programaren izenaren ondoren, zenbaki oso bat izateko. Baina badira argumentu gabe igaro da programaren izenaren ondoren. Beraz, hemen, ikusten dugun hori buggy bat da programa, geroztik, exekutatu saiatzen badugu argumenturik gabe, hura besterik ez du huts egingo. Beraz, beste bat ikusiko duzu patroi komun zerbait, argc da gutxiago bada bi, ez dagoela ez zen adieraziz baino gutxienez programaren izena eta bat Lehen argumentua, orduan zerbait egin dugu printf bezala, ez da nahikoa komando lerroko argumentuak. Hori da, ziurrenik, ez on bat inprimatzeko, seguruenik zerbait, atsegin zenbaki oso bat sartu behar duzu komando-lerroan. Besterik ez dut amaituko han. Eta gero itzuliko 1. Beraz, gogoratu, gure amaieran programa, itzuliko gara bada 0, moduko hori arrakasta adierazten du. Eta nagusiak ere automatikoki 0 itzultzen ez baduzu. Beraz, hemen, retuning ari gara 1 adierazten duten hori ez da arrakasta. Eta nahi duzuna itzuli ahal izango duzu, besterik ez, 0 arrakasta adierazten du, eta beste ezer porrota adierazten. Hargatik exekutatu gauzen bertsio hau. Beraz, gaur egun, ez badugu komando-lerro bat sartu argumentua, behar bezala izango da kontatu digu, ez da nahikoa, komando-lerroan. Ez zuen esaldia bukatzeko. Bestela, benetan pasatzen dugu bada bat, programa osatu ahal izango da. Beraz, hau da argc nola erabiliko zenuke in ordena zenbakia balioztatzeko komando lerroko argumentuak duten benetan pasatu dira. Hargatik pixka bat gehiago egiteko programa honetan zaila, eta bigarren begiratu Gauzak iterazio. Beraz, gaur egun, ez ari inprimatzeko dugu komando lerroko argumentu lehen. Hemen, int i berdin batetik ari gara errepikatzean 0, argc baino gutxiago da i, i plus gehi, eta inprimatzeko argv, indizea i. Beraz, eredu honetan, berriz ere, hau da, bera eredua lehen bezala, ordez ezik aldagaia deituz n, argc erabiltzen ari gara. Beraz, indize bakoitzaren gainetik dago, hau errepikatzean array, eta bakoitza inprimatzeko Array horretan elementu. Eta beraz, programa hau exekutatu dugu, bai, Ez nuen edozein komando lerroan sartu argumentuak, beraz, besterik gabe, grabatuak programaren izenarekin. Gauza mordo bat idatzi dut bada, egingo inprimatu bat, bakoitza bere lerroan kabuz. Ados. Beraz, dezagun urrats bat gehiago. Eta argumentu bakoitza inprimatzeko ordez Lerro batean, utzi bakoitzaren inprimatu argumentu bakoitzaren izaera Lerro batean. Beraz, gogoratu argv dela kateak array bat. Beraz, zer kate bat da, baina karaktere array bat? Beraz, horrek esan nahi du argv benetan bat pertsonaiak ezagutuko ditu array. Beraz aprobetxatuz hartako, dezagun alde batetara honetan oraingoz. Utzi kontuan hartu besterik ez en kate argv 0. Beraz, pertsonaia bakoitzak ekarri nahi badugu argv 0 Lerro batean, orduan nahi dut ereduarekin ari gara erabiltzen egiteko, i da array luzera baino gutxiago, Hemen, da strlen, hori da ez, zer egin nahi dut, katea ak berdin argv 0. Beraz, gure luzera baino txikiagoa da i array, eta kasu honetan array bat da pertsonaien, i plus plus. Eta, beraz, azken astean ikusi genuen bezala, ezin hobea da kanpo strlen duten mugitzeko badugu baldintza, geroztik n be gehituz egingo s strlen go dugu aldi bakoitzean begizta bidez, eta hura da ez dira aldatzen joan. Beraz, ezarri ahal izango da hemen baino gehiago n berdina dugu. Ados. Beraz, orain, zu baino gehiago errepikatzean dugu array indizea bakoitzean. Eta beraz, bakoitzak inprimatu nahi badugu Array hori, ehuneko c pertsonaia da Ez erabili nahi dugu pertsonaiak. Eta orain parentesi i bat izango da, joan den katea, indizea pertsonaia i, hala badagokio du katea ziren kaixo. Orduz s 0 da h izango da, parentesi s 1 E izango da, eta abar. Beraz, orain konbinatu nahi dugu bi gauza horiek. Pertsonaia bakoitzak inprimatu nahi dugu komando lerroko argumentu bakoitzaren. Beraz, behar joan loop habiaratu. Eta konbentzionalki lehen kontagailu da i, hurrengoa da j izango da, n argv i strlen izango da, i n baino gutxiago, i plus plus da. Eta, orain, ordez inprimatzeko argv i, beraz, argv parentesi i da indizea joan - hori i-garren komando lerroan izango da argumentua, argv i, j da, joan j izaera izango i-garren argumentua. Dut hau kentzeko hemen orain berriz jarri genuenetik begizta horretan. Hain da katea s berdinen baliokidea argv i, eta gero ak parentesia j. Beno, ez dugu behar den deklaratzen z aldagai hau. Horren ordez, besterik ez dugu konbinatu horiek bi duguna izan sartu, argv i, j. HIZLARIA 1: [INAUDIBLE]. ROB Boden: dei Good. Beraz, hau hondatuta dago. Benetan I ran bada, ez genuke konturatu hau. Beraz counter buruzko zaintzen dut zehatz honen in begizta j, iterator da. Beraz gaiak sartu zenuke exekutatu dute, Ziurrenik begizta infinitu bat, ez badugu izan ez finkoa. Horregatik ere ari gara hitz gaur arazketa buruz. Ados. Hargatik exekutatu programa hau. Eta utzi bereizi printf gehi benetan en hementxe egingo dela besterik inprimatu lerro beste, horrek esan nahi du geroztik dugunean programa exekutatu, ez dago huts bat izango pertsonaia bakoitzaren artean lerro komando lerroko argumentu bakoitzeko. Beno, zer esan nahi duen ikusiko dugu. Oop. Akatsen batzuk lortu. Error inplizituki deklaratzen liburutegi funtzioa strlen. Beraz, atzera egingo gure programa sartu, dut honakoak string.h egiaztatu ahazten. Beraz string.h izango da izan goiburu fitxategi hori adierazten funtzioa strlen. Ados, hura biltzen. Orain, dezagun exekutatu. Beraz, besterik ez da. Honez nahi inprimatu goaz gure programaren izena, kaixo mundua. Honez gauza bakoitza inprimatu, bata joan pertsonaia, bere lerro propioa. Ados. Hargatik hartu benetan en esta urrats bat gehiago. Eta horren ordez string.h erabiliz, dezagun nola gure kabuz ezartzeko genuke pentsatu funtzioa strlen. Beraz, berehala ematen dut funtzioa sinadura. Hargatik deitu my_strlen eta berau da kate bat hartu argumentu gisa joan, eta itzultzeko espero dugu katea luzera. Beraz, non da tipo hori? Bai. Ados. Beraz, gogoratu lehenago diapositiba duen astetik ere izan zen, hori bat pertsonaiak ezagutuko ditu, bai, katea, beraz, demagun hau gure katea s da. Beraz, s katea bada, kaixo, gero, H-E-L-L-O, memoria, hori da joan den izan, eta, ondoren backslash honetan 0 pertsonaia. Beraz, nola ez sua luzera lortuko dugu? Beno, trikimailu da hau bila erreakzio 0 pertsonaia, null honetan terminator. Beraz algoritmoa va gutxi antzeko zerbait izan nahi du nahikoa karaktere - egin ditzagun eskuan hau irudikatzeko batzuk counter, dezagun deitu int luzera hau. Beraz, hemen baino gehiago hasita, gaude Gure katea baino gehiago batetik bestera joan. Beraz, lehen pertsonaia, H da, eta ez da atzera slash 0, beraz, luzera 1 da. Hurrengo pertsonaia batetik bestera joateko, E, eta nik backslash ez 0. Luzera 2 da. L, 3. L, 4. O, 5. Eta, azkenik, backslash iritsiko gara 0, eta beraz, bide horretan, ondo, kate hau amaitu egingo da. Hargatik itzuli 5. Beraz, benetan gauzatzeko, lehenik eta behin, my n luzera funtzioak 0, nire eskuineko eskua. Eta ari gara batetik bestera joateko joan - HIZLARIA 1: [INAUDIBLE] ROB Boden: Oh, tiro. Ona deia. Boom. Beraz, n luzerakoa funtzioak 0 itzultzen du. Beraz, gaur egun, berriz, s luzerak ez du berdinak eta, ondoren, backslash 0. Beraz, gogoratu, backslash hau 0, bat da benetako pertsonaia, eta bertan adierazten katearen amaieran. Just bezala, ere, backslash n benetako pertsonaia da. Backslash 0 da adierazteko joan gure katea amaieran. Ez dut nahi duten han jarri. Eta berriz s luzerak indexatuta ez da null amaierako berdina, ondoren besterik ari gara luzera Kontatzailea joan. Beraz, ondoren, gure programa amaieran, luzera da, azkenean joan izan 5 kasu honetan. Eta besterik ez dugu itzultzeko luzera. Ados. Beraz, gaur hemen, ez dut egin my_strlen. Dezagun konpilatu ziurtatu Guztia exekutatzen leunki. Zen egiten dut 2 in? Edo 1 izan zen? Hori egin behar. Ondo da. Beraz, hau argv 2 da. Works aurreikusi bezala, nahiz eta zen bat, hori egin nuen hemen? Bai. Ados. Gauzen bertsio hau ez dute linea berria printf ondoren, baina ez du desberdintasunik. Ados. Beraz, lan egin zuen, espero bezala. Orain dugu, nahiz eta urrats bat konbinatu ahal aurrerago, non oharra hemen, ondo, Lehenengo, argv of strlen grabbing ari gara i, eta gero zu baino gehiago errepikatzean dugu kate horretan pertsonaia bakoitzak. Beraz ordez hori egiteko, zer badugu besterik konbinatu zain logika hau hit dugu backslash arte 0 eskubidea hau sartu loop? Beraz, batetik bestera joateko argv i, j ez bitartean backslash ez berdina: 0. Hargatik exekutatu lehen. Ondo da. Beraz, hemen, egoera hau esaten da - utzi garbitu en duten. Beraz, orain, utzi hau gure argv izan. Beraz, besterik gabe, programa hori exekutatu dut aurretik, argv kateen array bat da. Eta, beraz, hura dut exekutatu bada dot barra argv rekin 2, kaixo mundua, orduan argv du bera luzera 3 da, argv egiteko zero, kaixo, eta munduko. Eta indize horietako bakoitzaren barruan, bera array bat, non hau izango izango dot, hau barra izango da, ez dakit duten eskubidea norabidean bazen, I ez dut uste izan zen. A-R-V etenaren, leku gehiago behar. Dezagun moztu array honetan sartu. A-R-V etenaren 0, eta gero backslash 0. Eta gero disarray kaixo izango da. Demagun, H-E backslash 0. Eta, azkenik, N-O backslash 0. Beraz algoritmoa idatzi besterik ez dugu, the begiztak, zer dute Oraindik egiteko habiaratu da egiten, lehenengo behar dugu kontraerasoan i eta, ondoren, j. Honek kode errazagoa izango litzateke pantaila, Goazen hau itzuli. Ados. Beraz nabarituko i iterator du hori da Komando bakoitzean baino gehiago errepikatzean lerroko argumentu. Eta j iterator errepikatzean da horretan pertsonaia besteen gainetik komando lerroko argumentu. Beraz, barru-barruan printf hau zer egiten ari da da, argv 0 0, printf printf dugu argv 0 1, printf argv 0 2, 0 3, 4 eta 0, 0 5, 6 eta 0, baina orain, argv 0 7 da, joan backslash berdinak 0. Beraz, orduan irten dugu begizta, eta orain iterates 1era i. Eta orain ari gara inprimatu joan argv 1 0, argv 1 1 - ondo, orain, moztu nuen kaixo labur geroztik, argv 1 2 da berriro izango da backslash 0. Eta beraz, Kontatzailea i eta jarraitzeko, eta abar, dugu inprimatu arte guztia mundua, eta horiek hiru komando-lerro daude argumentuak, eta irteteko atera ditugun outermost begizta, eta gure programa bukatzeko. Ados. Hargatik itzuli hemen. Beraz, ezagutza batzuk lortuko dituzu honetan komando lerroko argumentuak arazo jakin ezarri. Orain, arazteko. Beraz, ziurrenik dagoeneko izan duzu egin zure aurreko ekin arazteko batzuk Arazo multzo. Eta bat arazteko modu oso erraza, lehen, dezagun buggy programa batean. Programa honen bidez ondo, oinez, baten erabiltzaileak eskatu goaz Zenbaki oso, grab osokoa dela, eta, ondoren, arbitrarioki, berriz, begizta bat dugu horretan besterik ez da behar decrement joan 10 berdina da. i arte Demagun besterik en sartu naiz zenbaki oso bat 10 baino handiagoa. Beraz decrement i 10 berdina izan arte. Eta gero, berriz, begizta beste dugu , i ez berdina: 0 bitartean, gaude i decrement 3 egin du. Beraz akatsen asmoa ikusten baduzu Hemen, ez da hori decrement dut izan 10, eta ondoren, berriz, begizta borondate hau decrement i 10, 7, 4, 1-tik, 2 negatiboak, negatiboak 5, eta abar egiteko, infinitua negatiboa den, i will geroztik inoiz benetan berdinak 0. Eta gero, programa honen amaieran, the foo funtzioa hau da, ez dugu inprimatu gertatzen daudelarik i duten. Beraz, hau programa labur eta hutsala da, eta akatsen begien bistakoa da, batez ere, ondoren besterik ez dut esan bug zer zen. Baina asmoa da hemen, bai, hau agian egia esan batzuk itxura zure azken from Greedy irtenbideak Arazo multzo, eta, agian, ez duzu begizta infinitua batzuk zure programan, eta ideia ez duzu zer ari da eragiten. Beraz oso erabilgarria arazketa-teknika bat da printfs besterik gehitu guztiak zure kodea zehar. Beraz, hemen printf kanpo nahi dut lehen, berriz, begizta. Eta hemen printf bat nahi dut, eta besterik ez dut inprimatu i. Dut ere egingo lehen begizta bitartean, i. Kanpo, bigarren begizta bitartean. Berriro ere, inprima barruan hemen, balioa i. Eta dezagun hau exekutatu. Beraz dot barra arazteko. Idatzi zenbaki bat. Egin dezagun 13. Eta boom. Begizta infinitua garela ikusiko dugu bitartean bigarren begizta barruan. Beraz, gaur egun ezagutzen ditugun akatsen berri eman gabe. Baina printf arazketa primeran handia, baina zure programak lortu ostean luzeagoa eta zailagoa da, ez dira irtenbideak sofistikatuagoa ohitu gauzak lanean. Hargatik kendu printfs horiek guztiak. Eta utzi ziurtatu ez nuen ezer apurtu. Ados. Beraz, programa goaz aurkeztu deritzo GDB, GNU Debugger da. Beno, egia esan, dezagun kendu arazketa egiteko bat bigarren, eta egin arazteko berriro. Beno, egia esan, lehenengo, ikasgai ona komando lerroko argumentuak. Nabarituko Clang komando hau dela Guztia gainditu ari konpilatzean komando-lerroan, horiek komando lerroko argumentuak. Beraz, zehazki nola erabiltzen ari zaren komando lerroko argumentuak, jo dugu egin baino lehen, eta pset en izango duzun bezala 2, Clang horiek nola erabiltzen ari da. Beraz nabarituko duten lehen bandera, marratxo hau ggdb3, zer da hori esaten, Clang, Fitxategi hau konpilatu beharko zenuke batera asmo azkenean izango dugun da arazteko behar. Beraz, betiere Ez hori izan duzun bezala, ondoren GDB arazketa ahal dugun. Eta ireki egingo GNU Debugger du. Beraz, ez dira komandoak asko ohitu behar duzula. Bata lehen duten baliteke zuk berehala behar Run da. Beraz, zer da Korrika egin? Honez gure programa hasteko. Beraz, korrika egin, hasierako programa, programaren eskatzen digu zenbaki oso bat, 13. Eta gero, begizta infinitua da gisa Espero zen, salbu I kendu du printfs, beraz ere ez dugu ikusten. Normalean irten da. Oh. Posible da horiek bilduta duten guztiek alderantziz, itzuli - hori jaramonik ez. Bere gain hartzen ez zuen irteteko normalean. Ez dagoela erantzun korapilatsu bat da. Beraz, gaur egun, hori ez da oso erabilgarria. Beraz, besterik gabe, gure programaren barruan exekutatzen araztaileak honek ez du laguntzen digu edozein modurik, besterik ez dugu egiten geroztik izan dute dot barrarik debug GDB kanpotik. Beraz, inork komandoa duten seguruenik duzu - eta irten dut hau. Kontrol-d edo irten, bai lana. Hargatik hura ireki berriro. Komando beste baliteke zuk duten berehala nahi ohitzeko Break da. Beraz dugu apurtzen nagusian oraingoz, eta, ondoren, hori azaldu dut. Beno, hemen etendura ezarri dugu ikusten dugun debug.c lerro honetan. Beraz, zer break bitarteko dela naizenean run idazteko, programa da, joan martxan jarrituko arte Etendura bat sakatu dut. Beraz, run sakatu dut, programa hasten da, eta, ondoren, bezain laster hausten da funtzio nagusia sartzen da. Apurtu nagusia zerbait izango da egin duzu nahiko normalean. Eta orain, zuk aurkeztu komando batzuk gehiago. Iragarki hemen, hori dugu esaten da linea 11, hau da, at hautsi printf, idatzi zenbaki bat. Beraz komandoa Hurrengo dago izan nola joan joan hurrengo kode lerro behar dugu. Hau da urratsa aukera izango dugu gure programa lineaz linea bidez. Beraz, hurrengo. Orain 12 lerro, goazen osokoa lortzeko. Hurrengoa. Eta asmatuz gero, besterik gabe idatzi berriro ere, egingo berregin azken gauza zenuen. Beraz, ez dut behar den idatzi hurrengo aldi bakoitzean. Beraz, idatzi zenbaki bat, 13. Beraz, gaur egun, linea 14, i handiagoa den bitartean 10 baino, eta egin dut hurrengoan. Eta i decrement goaz ikusiko dugu. Beraz, i berriro decrement joan. Beraz, gaur egun, beste erabilgarria Komando Print da. Beraz Print da inprimatu joan aldagaiaren balioa. Dezagun ekarri balioa i aldakorra. Dezagun inprimatu i. Honez i da 11 esan nahi du. Orain Hurrengo berriro dugun bitartean i 10 baino handiagoa da. Beraz baino handiagoa da oraindik i 10 da 11 urtetik. i ken ken. Dezagun inprimatu i berriro. Espero zen bezala, 10 da. Beraz, orain, hurrengo. Honez baldintza atzera joan, i da 10 baino handiagoa, baina i da orain 10, hain 10 baino handiagoa ez da, beraz, espero dugu berriz, begizta erortzen da. Eta orain, kode lerro bat beherago gaude. Eta komando beste, zerrenda, besterik ez da joan Aurreko eta hurrengo bistaratzeko kode lerro, urtean pare Kasu zeure burua galdu duzu. Beraz, irten besterik ez dugu berriz, begizta hau, eta orain sartu gara honetan berriz, begizta, line 18. Beraz, i ez berdina: 0 bitartean. Eta, hurrengo, berdin i i ken 3, eta guk egingo nabarituko, hau besterik mantendu egingo. Eta i inprimatu ahal izango dugu. Komando bakoitzean sort lasterbideak ditu. Beraz, p Print labur. Beraz, p i ahal dugun. Horretarako, mantendu eusten n, edo mantentzeko Hurrengo egiten. Inprimatu i berriro. Ikus orain duzu negatiboa 167 da. Beraz, hau betiko joan dira, baina ez benetan betiko, ikusi besterik ez duzu geroztik, benetan uneren batean amaituko. Beraz, hori da GDB hasieran. Baina egin dezagun gauza bat gehiago GDB utzi. Uh, arazketa. Beraz, kasu honetan ere, begizta infinitua gertatu barruan egon funtzio nagusia. Eta oraingoz, besterik ez onartzea dela naiz infinitua begizta mugitzeko sartzen joan foo funtzioa. Just gogoratu, honen amaieran programa, ondo, hau izan zen jatorriz foo, besterik ez zen deituz i inprimatzeko. Baina orain foo deitzen ari gara, hau da, i decrement da 0 arte, eta joan ondoren, aldagai hori inprimatu. Ados. Gorde duten. Egin arazteko. Eta orain, gdb arazteko. Ados. Beraz, I exekutatu besterik ez bada orduan ez naiz joan izan bidez benetan zapaldu gai nire programaren lerro-lerro. Hargatik hautsi nagusietan, eta, ondoren, run idazteko. Beraz, honen bidez, printf, sartu zenbaki oso bat, lortu osokoa, 13. Beraz, decrementing jarraitzea i 10 baino handiagoa izan arte. Ondoren gaude erori igaro berriz, begizta, eta iristeko - dezagun ireki beste leiho batean. Beraz decremented dugu i ez zen arte 10 baino handiagoa, eta egin dugu funtzioa foo izeneko,. Beraz, zer hit I bezain laster gertatu funtzioa foo, ondo, foo deitu nuen, eta orduan jada ez GDB gaineko kontrola izan nuen. Beraz, ahalik eta azkarren jo dut Next gisa lerro honetan, Gauzak jarraitu hau gertatu arte, non programatik irten denean - bere gain hartzen, ez da existitzen, azkenean. Pausatu pixka bat, nahiz eta ikusi duzu. Beraz, zergatik gaineko kontrola galdu nuen puntu horretan programan? Beno, hurrengoa idazten dut, hori doa hurrengo kode lerro literal hori exekutatuko da. Beraz, ondoren line 21, hurrengo kode lerro duten exekutatu egingo line 22 da, hau da, nagusitik irteten. Beraz, ez dut nahi, besterik gabe joan hurrengo kode lerro izateko. Hemen funtzioa, foo sartu joan nahi dut, eta ondoren ere egin dute urratsa kode lerro horiek. Beraz, horretarako, alternatiba bat behar dugu. Dezagun berriro irten en duten. Apurtu nagusia. Uh, 1, hurrengoa, hurrengoa, 13, hurrengoa, hurrengoa, hurrengoa, arretaz, line foo hit dugu aurretik. Ados. Beraz, gaur egun, Oraindik line 21 dugu, non foo deitu dugu. Ez dugu nahi hurrengoa idatzi, horixe baita besterik deituko funtzioa foo, eta hurrengo kode lerro joan. Zer erabili nahi dugu urratsa. Beraz, ez dago Step arteko aldea da eta ondoan, non Step sartu egoteagatik funtzionatzeko, eta Hurrengo doa funtzioaren gainetik. Osoa exekutatzen du, besterik ez da funtzioa eta mantentzen du. Beraz Step ekartzea joan funtzioa sartu, foo. Eta hemen ikusten dugu, orain, hemen gara berriro at berriz, begizta hau hori da, teorian, betiko jarraitu behar. Eta hit duzu Step, ez denean, nahiz eta gero deitu funtzio bat, orduan da Hurrengo berdina. Beraz, bakarrik da Oraindik lerro batean duzula Step duten funtzio bat deituz da ondoan datoz joan. Beraz Step gu hemen ekarriko ditu. Urrats, Urrats, Urrats, Urrats, Urrats, Urrats, eta besterik begizta infinitua betiko zaitugu. Beraz duzu erabili ahal dezake bat bezala zure infinitua begiztak identifikatzeko bide, da besterik Sartu tekla horri eusten ikusi non itsatsita lortzen duzu. Badira modu hoberik ez da egin behar, baina oraingoz, egoera ona izan nahikoa. Eta estilistikoki, nahi Style adostasuna 50, hau egin beharko nuke. Ados. Beraz, joan den komando bat aurkeztera. Beno, goazen gdb debug sartu Beraz ordez nagusia hautsi, badut foo funtzioa ezagutzen da, halaber, Arazoa, orduan izan nuen besterik erran, foo at hautsi ordez. Demagun apurtzen dut at bai nagusia eta foo. Beraz, eten-puntu askotan bezala ezar dezakezu nahi duzun bezala. Noiz run idazten dudanean, joan da hemen geldituko - ooh, dezagun birkonpilatu, geroztik Gauzak aldatu dut. Line, Abisua, iturri hau ikusiko duzu fitxategi exekutagarria baino berriagoa da. Beraz, horrek esan nahi du, hemen dudala paregabea eman eta aldatu horiei Style adostasuna 50, baina ez nuen birkonpilatu programan. Beraz GDB egiten jakitun of me. Irten dut, arazketa berriro egiteko, gdb debug hit. Ados. Beraz, gaur egun, zer egiten ari nintzen itzuli. Apurtu nagusia, break foo. Orain programa exekutatu badut, beraz hits arte jarraituko joan a etendura. Etendura hori gertatzen nagusian lehenengoa izango da. Orain, ordez hurrengoa egiteko, hurrengoa, hurrengoa, hurrengoa, hurrengoa, foo jo nuen arte, I jarraitzeko, hau da, jarrai idatz dezakezu hurrengo etendura sakatzen duzun arte. Osokoa sartzeko lehen daukat. Jarraitu gelditu nintzen arte jarraituko du hurrengo etendura, hau da, foo funtzioa. Beraz Run bat sakatzen duzun arte exekutatu egingo etendura, baina run bakarrik idazten duzunean programan hasten zaren, eta, ondoren, ordutik aurrera, jarraituko da. , Egin dut, bada apurtu nagusia eta ondoren ran, at hautsi egingo da nagusia, eta ondoren aurrera jarraituko du. Ez dut ez baita izan break puntu bat foo at, idatzi zenbaki eta, ondoren, gaur egun, naiz ez foo at hautsi egingo. Besterik ez da infinitua joan begizta hori bete arte. Ados. Beraz, Intro GDB izateko. Hura erabiltzen hasi behar duzu zure arazoa multzo. Oso lagungarria izan daiteke bugs identifikatzeko. Baduzu benetan, lerro-lerro, joan Zure kodea bidez, eta konparatu zer da benetan zer espero duzu gertatzen gertatuko, orduan nahiko da zaila zure bugs galdu. Ados. Beraz, joan den astean David hazi honetan sekretua kriptografia simetrikoaren egiteko gauza lehen aldiz, non ez dugu nahi pasahitzak izan besterik gordetzen dira gure Testu fitxategi arrunta batzuetan ordenagailua, non norbait baino gehiago eta besterik etorri ahal zabalduko da eta irakur itzazu. Haien, dute enkriptatuko litzateke nolabait. Eta Arazoa Ezarri 2, aurre egingo enkriptatze-metodo bat, edo, beno, bi metodo, baina ez dira hain handia. Hacker edizioan Egiten baduzu, zaren ere aurre egingo gauza batzuk desenkriptatzea. Beraz, arazoa da orain, bai, nahiz encryption indartsuena dugu munduko algoritmoa, bat aukeratzen baduzu pasahitza bereziki pobreen, orduan ez duzu lagun asko, geroztik jende izango da oraindik ere irudikatu nahi gai izan. Kodifikatuta katea ikusten, nahiz eta itxura zabor nahaspila bat bezala duten ezer esan nahi zien, badute Oraindik ere gutxi batzuetan pasahitzak bat saiatu behar irudikatu nahi, eta gero zuk ez dira oso seguruak. Beraz, bideo bat ikusi duen Puntu horri esker. [Bideo-erreprodukzioa] -Helmet fiend. Zer gertatzen da? Zer egiten ari zara nire alaba? -Uztazu aparta aurkezteko Plastikozko zirujau gazte, Phillip Dr Schlotkin, sudur handiena lan osoa man unibertsoa, ​​eta Beverly Hills. -Zure Gorentasuna. Nose-lana? Ez dut ulertzen. Zuen jada sudurra lan bat. Gozoa hamasei present izan zen. -Ez. Kontua ez da zer uste duzu. Askoz ere, askoz okerrago. Ez baduzu, emadazu konbinazioa egiteko aire armarria, Schlotkin doktoreak izango zure alaba bere sudurra zaharra eman back. -Ez. Non atera duzu? -Ondo da. Esango dut. Esango dut. Ez, aita. Ez, ez behar duzu. -Arrazoi eskubidea, maitea. Berria sudurra galdu dut. Baina ez dut kontatu zion konbinazioa, axola zer. -Oso ondo. Dr Schlotkin, egin zure txarrena. -Nire plazer. [Tresna izateaz zorroztu] -Ez. Itxaron. Itxaron. Esango dut. Esango dut. -Banekien lan litzateke. Ondo da. Eman dit. -The konbinazio bat da. -One. -One. -Bi. -Bi. -Bi. -Hiru. -Hiru. -Hiru. -Lau. -Lau. -Lau. -Bost. -Bost. -Bost. -Beraz, konbinazio bat da, bi, hiru, lau, bost. Hori da konbinazio stupidest Inoiz nire bizitzan entzun. Hori gauza mota ergel bat litzateke bere ekipajea. -Eskerrik asko, jauna. -Zer egin duzu? -I off aktibatuta horman. -Ez ez zenuen. Desaktibatzen filma osoa. -I okerreko botoia sakatzen behar. -Beno, jarri berriz. Jarri filma berriro. -Bai, jauna. Bai, jauna. -Goazen, Arnold. Goazen, Gretchen. Jakina, badakizu, oraindik ere dut duzu blog honetan fakturatzen dute. [END bideo-erreprodukzioa] ROB Boden: Guztiak eskubidea. Dagoeneko ari gara hitz egiten, beraz, orain dela nolabait, segurtasun, polita Apur movie poster, beraz, azken urtean egun, NSA dituzten gai horiek guztia jarraipena. Zaila izan daiteke nahi duzun bezala sentitzen pribatutasun nolabaiteko parte izan online munduan, baina ezin dizut esan duzu prisma xehetasun gehienak. Beraz, prisma haratago mugitzen, ez goaz Horri buruz hitz egiten, orain eramangarria pentsatzen. Beraz, hemen sortu, aldatu nahi dut nire benetako kontura, nire pinguino gutxirekin. Beraz pasahitza multzo bat daukat, eta hori pasahitza da edozein dela ere izan nahi dut. Baina gogoratu zer logging naiz eta, beraz, login honekin in gonbita, programa batzuk. Programa batzuk hori izan da Pertsona batzuek idatzitako. Eta, beraz, pertsona horrek, badira bereziki maltzurren, zalantzarik dute esan, eskubidea, hala bada pasahitza sartu dudala da berdina nire oraingo pasahitza, edo berdina da pasahitza berezi batzuk - David da awesome edo zerbait - ondoren, utzi horiek sartu Beraz programatzaile bat kaltegarria izan liteke Zure Macs guztiak, edo sarbidea Windows, edo ezer. Beraz, hori ez da kezka bat askoz, geroztik, Esan nahi dut, hau da, saio-programa dela OS X, ehunka datorrena edo milaka pertsona izan kode hau berrikusi. Eta, beraz,, bada zure kodea nonbait, zuk esan kate hau berdin berdin bada David da awesome, saioa hasteko, eta gero norbait da izango da, nahi, itxaron. Hau ez da eskubidea. Honek ez luke hemen egongo. Beraz, modu bat gauzak lortuko dugu da motatako seguru izateko. Baina programak, nahiz eta pentsatu idatzi duzula. Demagun login programa idatzi duzu. Beraz, saio-programa hau idatzi duzu, beraz, jakina, dira duzun ona programatzaile. Zu ez asmo txarreko edozein jarri nahi dut x berdin berdin David is awesome Zure kodea sartu. Baina programa honek, zer egin nahi duzu erabili programa hau konpilatu? Clang antzeko zerbait. Beraz, zer bada nor gertatu pertsonaren Clang bereziak Clang in cased idatzi zerbait bezala, I am konpilatzean bada ADI programa, ondoren, idatzi kode hau login programa dioen, gero sartu x berdin berdin David da awesome? Beraz, ez da nahiko oraindik, baina bera izan dugu igorriko hemen, non Clang, ondo, Milaka, ez bada milaka hamarnaka of pertsonak, izan Clang begiratu, izan bere kode lerro begiratu eta esan zuen, guztiak ondo, ez dago ezer txarra hemen. Jakina, inork ez du egiten ari da ezer maltzurren hau. Baina zer clang berez, bezala, zer konpilatu dut Clang bada? Zer konpiladore batzuk badut duten biltzen Clang duten Clang sartu txertatzen hack berezi hau dela dio, eskubidea, denean konpilatu dut Clang, orduan exekutagarri I get bereziki begiratu behar saio programa eta txertatze-barrutik pasahitz hori, berdin berdin Dave da awesome? Beraz, gogoratu zure konpiladore bera uneren batean konpilatuta egon behar. Beraz, zer Clang biltzeko aukeratu baduzu batera, asmo txarreko da berez, eta gero zuk izorratu litezke osoa Modu line behera. Beraz, hemen, ez dugu Ken Thompson eta Dennis Ritchie. Beraz, hau ikoniko bat argazki da. Dennis Ritchie eskuinean den. Nagusietako bat da zuen - nahiko askoz idatzi C. Beraz, ahal duzun eskerrak eman zion klase honentzako. Ken Thomson ezker aldean da. Horietako bi funtsean idatzi UNIX. Beno, nagusien laguntzaileen ziren UNIX-en. Beste batzuk egon ziren. Beraz, Ken Thompson, uneren batean, Turing saria irabazi zuen. Eta Turing saria, Nik beti entzun dut Modu honetan erreferentziatutako da, da Nobel Saria informatikako. Beraz, Turing saria hartan, egin behar du bere onarpen hitzaldian eman. Eta hizketa oso famatua hau ematen zuen orain, hausnarketak fidatu izeneko Konfiantza, eta hori lotuta dugu Jakina, web orrian ere. Eta hizketa honetan, dio, guztiak eskuineko, beraz UNIX idatzi nuen, eta orain guztia duzun pertsona UNIX erabiltzen ari. Orain, gogoratu gaur egun Linux dela UNIX ondorengo zuzena. OS X zuzenean erabiltzen ditu UNIX. Leihoak ez du hainbeste, baina asko ideien ziren UNIX hartua. Beraz, gora doa zuen etapa, eta dio, guztiak eskubidea, UNIX idatzi nuen. Eta besterik ez, beraz, you guys ezagutzen, naiz gai bakoitzean sartu Zure ordenagailuak bakar. Bereziak horietako bat jarri dut x bada noiztik berdin berdin Ken Thomson is awesome, Orduz dut onartzen du saioa. Beraz, pertsona bezala, ondo, dira Nola hori? Begiratu login programa dugu eta ezer ez da han. Da, bezala ondo, konpiladoreak eraldatutako dut zuen Login programan hasi beraz saio-programa gaur egun izango dute x duten berdin berdin Ken Thompson Zoragarria da. Eta, esaten dute bai, hori ez da egia. Dugun konpiladore ikusten ari zara, eta konpiladoreak ez du ildo edozein horrelako kodea. Zuen bezala, OK, baina zer egiten ari zaren konpiladoreak konpilatzean batekin? Eta, uste dute, eta zuen da, bezala, ondo, Ko duten konpiladore eman zenuen naiz konpiladoreak biltzeko erabiltzen ari zara, beraz, konpiladore bat konpilatzen ari zaren, dela maltzurren da berez, eta, izango login programa apurtu. Beraz, funtsean, puntu horretan, ez da modu ez duzu iturburua begiratu zezakeen login programaren kodea gaizki dagoena ikusteko. Ezin duzu ere begiratu iturri konpiladoreak kode gaizki dagoena ikusteko. Makina begiratu beharko zenuke kodea, benetako bikoan konpilatutako konpiladorea, ikusteko itxaron, horiek kode lerro ez luke hemen egongo. Baina Ken Thompson urrats bat hartu zuen aurrerago, eta esan zuen, bai, badira programa bereziak horiek benetan programen bitar irakurri duzu lagun, eta beraz, norbaitek programa hori erabiltzen bada bitarra irakurri, ikusi zuten horiek kode lerro. Esan programa hori aldatu egin zen, guztiak eskubidea, zuk begira bazabiltza konpiladorea, ez erakutsi hau bereziki bitarra multzo. Beraz, ondoren, hartu behar duzu, beste urrats bat gehiago eta, batez ere, hori izan liteke hartu indirection hainbat mailatako, eta uneren batean, inork ez da benetan egiaztapena egingo. Beraz Istorioaren morala da, zu ez dugu idazten joan Klase honetan astintzen. Egon eskalada erabiliz joan zaren Asko astintzen klase honetan. Jakingo duzuen guztientzat, Clang da gaiztoren programa hori behin saboteatzen programa bakar Duzun inoiz konpilatu. Eta zuk oso kezkagarriak utzi ohar, ikusten duzu asteazkenean. [Txaloak] HIZLARIA 2: hurrengo CS50 At. HIZLARIA: 3 Ez esan ausartzen duzu. Hau egin ahal izango duzu. Egin duzun hori baino lehen, hau egin ahal izango duzu gaur, hau egin ahal izango duzu bihar. Izan duzun lan hau egiteko urte. Just joan han eta hori egin. Hau egin ahal izango duzu. [Musika jotzen]