[Powered by Google Translate] [Reviżjoni] [Quiz 0]
>> [Lexi Ross, Tommy MacWilliam, Lucas Freitas, Joseph Ong] [Università ta 'Harvard]
>> [Dan huwa CS50.] [CS50.TV]
>> Ħej, kulħadd.
Merħba għas-sessjoni ta 'reviżjoni għall-Quiz 0, li qed isir dan l-Erbgħa.
Dak li aħna qed tmur biex tagħmel tonight, jien bi 3 TFS oħra,
u flimkien aħna qed tmur biex jmorru permezz ta 'reviżjoni ta' dak li aħna ghamilt fil-kors s'issa.
Huwa mhux se tkun 100% komprensiva, iżda għandu itik idea aħjar
ta 'dak li diġà għandek isfel u dak li inti xorta jkollok bżonn biex tistudja qabel l-Erbgħa.
U li tħossok liberu li jgħollu naħa tiegħek bil-mistoqsijiet kif aħna qed tmur flimkien,
iżda jżomm f'moħħu li aħna ser wkoll ikollhom ftit ta 'żmien fit-tmiem-
jekk irridu jiksbu permezz ta 'l ftit minuti biex spare-li tagħmel mistoqsijiet ġenerali,
sabiex iżommu dan f'moħħhom, u hekk aħna qed tmur biex tibda fil-bidu ma f'Ġimgħa 0.
>> [Quiz 0 Reviżjoni!] [Parti 0] [Lexi Ross] Iżda qabel ma nagħmlu li ejja nitkellmu dwar
il-loġistika tat-kwizz.
>> [Loġistika] [Quiz sseħħ l-Erbgħa 10/10 minflok lecture]
>> [(Ara http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf għad-dettalji)] Huwa fuq l-Erbgħa 10 OTTUBRU.
>> Li dan l-Erbgħa, u jekk inti tmur għal dan URL hawn,
li huwa wkoll aċċessibbli minn CS50.net-hemm rabta li it-
tista 'tara l-informazzjoni dwar fejn tmur bbażata fuq
isem aħħar tiegħek jew affiljazzjoni-iskola kif ukoll
jgħidlek dwar eżattament dak li l-kwizz se jkopri u t-tipi ta 'mistoqsijiet li int ser tikseb.
Wieħed iżomm f'moħħu li inti taf ukoll ikollhom iċ-ċans li tirrevedi l-kwizz fit-taqsima,
hekk TFS tiegħek għandu jkun għaddej matul xi problemi prattiċi,
u li l-ieħor ċans tajjeb biex tara fejn inti xorta jkollok bżonn biex jistudjaw għall-kwizz.
Nibdew fil-bidu ma 'Bytes "n" Bits.
Ftakar ftit huwa biss 0 jew 1,
u byte hija ġabra ta '8 ta' dawk bits.
Ejja nħarsu lejn dan il-ġbir ta 'bits dritt hawn.
Għandna nkunu kapaċi biex insemmu kif ħafna bits hemm.
Fejn aħna għadd hemm biss 8 minnhom, 8 0 jew 1 unità.
U peress li hemm 8 bits, dak l 1 byte,
u ejja jaqilbu għall hexadeċimali.
Hexadecimal hija bażi 16, u huwa pjuttost faċli biex jikkonvertu
numru fil-binarju, li huwa dak li hu, għal numru f'hexadecimal.
Kollha għandna nagħmlu huwa irridu nħarsu lejn gruppi ta '4,
u aħna jikkonvertu lill-ċifri hexadeċimali xierqa.
Nibdew bl-grupp dritt aktar ta '4, hekk 0011.
Li għaddej biex tkun waħda 1 u 1 2, sabiex flimkien li jagħmel 3.
U mbagħad ejja nħarsu lejn il-blokk ieħor ta '4.
1101. Li għaddej biex tkun waħda 1, 1 4, u wieħed 8.
Flimkien li għaddej biex tkun 13, li jagħmel D.
U aħna ser niftakru li f'hexadecimal aħna ma jmurx biss 0 sa 9.
Immorru 0 sa F, hekk wara 9, 10 jikkorrispondi għal A,
11 sa B, eċċetera fejn F hija l-15.
Hawnhekk 13 hija D,
hekk li jaqilbu għal punt deċimali kollu li nagħmlu huwa aħna fil-fatt
jittrattaw lil kull pożizzjoni ta 'poter ta' 2.
Din kienet waħda 1, 1 2, zero 4s, żero 8S, wieħed 16, eċċetera,
u huwa ftit diffiċli biex tiġi kkalkulata fir-ras, imma jekk immorru l-slide li jmiss
nistgħu naraw ir-risposta għal din.
>> Essenzjalment aħna qed tmur madwar minn dritt lura għax-xellug,
u aħna qed multiplikazzjoni kull ċifra mill-qawwa korrispondenti ta '2.
U ftakar, għal hexadeċimali aħna tiddenota dawn in-numri ma 0x fil-bidu
hekk aħna ma dan jiġi mħawwad ma 'numru deċimali.
Kontinwa fuq, dan huwa t-Tabella ASCII,
u dak li nużaw ASCII għal huwa li Mappa minn karattri li valuri numeriċi.
Ftakar fil-pset kriptografija għamilna użu estensiv tat-Tabella ASCII
sabiex jużaw metodi differenti ta 'kriptografija,
il Caesar u l-cipher Vigenère, li jikkonvertu ittri differenti
fi string skond il-kjavi mogħtija mill-utent.
Ejja nħarsu lejn xi ftit ta 'matematika ASCII.
Ħarsa lejn "P" + 1, fil-forma karattru li tkun Q,
u ftakar li '5 ≠ 5.
U kif eżattament kieku aħna jikkonvertu bejn dawk il-forom 2?
Mhuwiex fil-fatt iebes wisq.
Sabiex tikseb 5 aħna naqqas '0 '
għaliex hemm 5 postijiet bejn l-0 "u l '5."
Sabiex tmur il-mod ieħor aħna biss żid il-0,
dan huwa tip ta 'bħal aritmetika regolari.
Just ftakar li meta xi ħaġa tkun kwotazzjonijiet madwaru huwa karattru
u b'hekk jikkorrispondi għal valur fit-tabella ASCII.
Nimxu fis-suġġetti aktar ġenerali xjenza tal-kompjuter.
Aħna tgħallimna dak algoriżmu huwa u kif nużaw l-ipprogrammar
biex jimplimentaw algoritmi.
Xi eżempji ta 'algoritmi huma xi ħaġa verament sempliċi bħal
verifika dwar jekk numru huwa saħansitra jew fard.
Għal dak ftakar aħna Mod in-numru 2 u jivverifika jekk ir-riżultat huwa 0.
Jekk iva, huwa saħansitra. Jekk le, huwa bil-fard.
U dan huwa eżempju ta 'algoritmu verament bażiku.
>> Ftit ftit ta 'waħda aktar involuti huwa tfittxija binarja,
li aħna ser jmorru fuq aktar tard fis-sessjoni reviżjoni.
U l-ipprogrammar huwa t-terminu li nużaw għat-teħid algoritmu
u dan jinbidel għall-kodiċi tal-kompjuter tista 'taqra.
2 eżempji ta 'programmazzjoni huwa Scratch,
li huwa dak li għamilna fil-Ġimgħa 0.
Anki jekk aħna ma attwalment tip l-kodiċi huwa mod ta 'implimentazzjoni
dan algoritmu, li hija l-istampar n-numri 1-10,
u hawn aħna nagħmlu l-istess fil-lingwa ta 'programmar C.
Dawn huma funzjonalment ekwivalenti, biss bil-miktub fil-lingwi differenti jew sintassi.
Aħna mbagħad tgħallmu dwar espressjonijiet Boolean,
u Boolean huwa valur li l-la vera jew falza,
u espressjonijiet hawn oftentimes Boolean
mur ġewwa ta 'kundizzjonijiet, hekk jekk (x ≤ 5),
ukoll, aħna diġà stabbiliti x = 5, sabiex din il-kundizzjoni se tevalwa l-vera.
U jekk huwa veru, tkun xi tkun il-kodiċi huwa taħt il-kundizzjoni
se jiġu evalwati mill-kompjuter, hekk li string se jiġi stampat
għall-produzzjoni standard, u l-kondizzjoni terminu
jirreferi għal dak kollu li huwa ġewwa l-parentesi tal-istqarrija jekk.
Ftakar l-operaturi kollha.
Ftakar && huwa u l | | meta aħna qed jippruvaw biex jgħaqqdu 2 jew aktar kondizzjonijiet,
== Mhux = li tivverifika jekk 2 affarijiet huma ndaqs.
Ftakar li = hija għal assenjazzjoni filwaqt == hija operatur Boolean.
≤, ≥ u allura l-2 finali jispjegaw lilhom infushom.
A reviżjoni ġenerali tal-loġika Boolean hawn.
U espressjonijiet Boolean huma wkoll importanti fil-linji,
li aħna ser jmorru fuq issa.
Aħna tgħallimna madwar 3 tipi ta 'linji s'issa fil CS50, għal, ftit, u tagħmel waqt.
U huwa importanti li tkun taf li filwaqt li għall-aktar skopijiet
nistgħu attwalment jużaw kull tip ta 'linja ġeneralment
hemm ċerti tipi ta 'għanijiet jew mudelli komuni
fl-ipprogrammar li speċifikament jitolbu għal waħda minn dawn il-linji
li jagħmilha l-. aktar effiċjenti jew eleganti għall-kodiċi li b'dan il-mod
Ejja jmorru fuq liema kull waħda minn dawn il-linji tendenza li jintużaw għal ħafna drabi.
>> Fi għat loop aħna ġeneralment diġà taf kif ħafna drabi aħna rridu jtenni.
Dan huwa dak li nitfgħu fil-kondizzjoni.
Għall, i = 0, i <10, per eżempju.
Aħna diġà jafu li rridu nagħmlu xi ħaġa 10 darbiet.
Issa, għal loop waqt, ġeneralment aħna ma neċessarjament
taf kif ħafna drabi aħna rridu l-linja jiddekorri.
Imma aħna nafu xi tip ta 'kundizzjoni li irridu li
dejjem ikun veru jew dejjem tkun falza.
Per eżempju, filwaqt li huwa stabbilit.
Ejja ngħidu li l-varjabbli Boolean.
Filwaqt li huwa veru li rridu l-kodiċi li tevalwa,
hekk ftit aktar extensible, ftit aktar ġenerali minn għall loop,
iżda kwalunkwe għat loop jistgħu wkoll jiġu konvertiti għal loop waqt.
Fl-aħħarnett, do filwaqt loops, li jistgħu jkunu l-trickiest biex tifhem dritt bogħod,
huma spiss użati meta rridu biex jevalwaw il-kodiċi 1
qabel l-ewwel darba aħna jivverifika l-kundizzjoni.
Każ użu komuni għal tagħmel waqt loop
huwa meta inti tixtieq li tikseb l-input utent, u inti taf li inti tixtieq li tistaqsi lill-utent
għall-input mill-inqas darba, imma jekk dawn ma jagħtuk b'input tajjeb mill-ewwel
inti tixtieq li żżomm tistaqsi lilhom sakemm dawn jagħtuk l-input tajba.
Dik hija l-aktar użu komuni ta 'do filwaqt loop,
u ejja nħarsu lejn l-istruttura attwali ta 'dawn loops.
Huma tipikament dejjem tendenza li jsegwu dawn it-tendenzi.
>> Fuq il-linja għal ġewwa inti għandek 3 komponenti:
inizjalizzazzjoni, tipikament xi ħaġa simili i int = 0 fejn i hija l-counter,
kondizzjoni, fejn irridu ngħidu imexxu dan għal loop sakemm din il-kundizzjoni xorta żżomm,
bħal i <10, u mbagħad finalment, aġġornament, li hija kif aħna inkrement
il-varjabbli counter f'kull punt fil-linja.
A ħaġa komuni biex tara hemm biss i + +,
li jfisser inkrement i sa l-1 kull darba.
Inti tista 'wkoll tagħmel xi ħaġa simili i + = 2,
li jfisser żid 2 sa i kull darba li inti tmur permezz tal-linja.
U allura l-tagħmel dan biss jirreferi għal kwalunkwe kodiċi li attwalment runs bħala parti mill-linja.
U għal loop waqt, dan iż-żmien għandna attwalment ikollhom l-inizjalizzazzjoni ta 'barra tal-linja,
hekk per eżempju, ejja ngħidu aħna qed tipprova tagħmel l-istess tip ta 'linja kif I biss deskritt.
Aħna ngħid i int = 0 qabel il-linja jibda.
Imbagħad nistgħu ngħidu filwaqt i <10 jagħmlu dan,
hekk l-istess blokk ta 'kodiċi bħal qabel,
u din id-darba l-parti aġġornament tal-kodiċi, per eżempju, i + +,
fil-fatt tmur ġewwa tal-linja.
U fl-aħħarnett, għal do waqt, huwa simili għal-linja filwaqt li,
imma għandna niftakru li l-kodiċi se jevalwa darba
qabel il-kondizzjoni hija vverifikata, u għalhekk jagħmel sens ħafna aktar
jekk inti tħares lejn din fl-ordni tal fuq għal isfel.
Fi, tagħmel filwaqt li l-linja kodiċi jevalwa qabel ma inti anki tħares lejn il-kondizzjoni waqt
billi loop waqt, hija għandha tivverifika l-ewwel.
Dikjarazzjonijiet u varjabbli.
Meta aħna rridu li jinħoloq varjabbli ġdid aħna l-ewwel trid initialize dan.
>> Per eżempju, bar int initializes l-bar varjabbli,
iżda ma tagħtiha valur, iva, liema huwa valur bar issa?
Ma nafux.
Dan jista 'jkun xi valur żibel li qabel kienet maħżuna fil-memorja hemm,
u aħna ma jridu jużaw dak il-varjabbli
sakemm aħna fil-fatt tagħtiha valur,
hekk aħna tiddikjara hawnhekk.
Imbagħad aħna initialize din tkun 42 hawn taħt.
Issa, naturalment, nafu dan jista 'jsir fuq linja waħda, int bar = 42.
Iżda biss li jiġu ċar l-passi multipli li huma għaddejjin,
id-dikjarazzjoni u l-inizjalizzazzjoni qed jiġri separatament hawn.
Dan jiġri fuq pass wieħed, u dak li jmiss, int baz = bar + 1,
din id-dikjarazzjoni taħt, li baz żidiet, sabiex fl-aħħar ta 'dan il-blokk kodiċi
jekk konna li jistampaw il-valur ta 'baz ikun 44
għaliex aħna tiddikjara u initialize din tkun bar> 1,
u allura aħna inkrement darba aktar ma 'l-+ +.
Aħna marru fuq dan fil-qosor pretty, iżda huwa tajjeb li jkollha ġenerali
fehim ta 'liema ħjut u avvenimenti huma.
Aħna prinċipalment ma dan fil Scratch,
sabiex inti tista 'taħseb ħjut bħala sekwenzi multipli ta' kodiċi
running fl-istess ħin.
Fil actuality, hija probabbilment ma tkunx qed taħdem fl-istess ħin,
iżda xorta ta astratt nistgħu jaħsbu li b'dan il-mod.
>> Fil Scratch, per eżempju, kellna l-sprites multipli.
Dan jista 'jiġi eżekuzzjoni kodiċi differenti fl-istess ħin.
Wieħed jista 'mixi waqt li l-oħra huwa qal xi ħaġa
fil-parti differenti tal-iskrin.
Avvenimenti huma mod ieħor kif tissepara l-loġika
bejn l-elementi differenti tal-kodiċi tiegħek,
u fl Scratch konna kapaċi jissimulaw avvenimenti bl-użu Broadcast,
u li fil-fatt Meta I jirċievu, mhux Meta I Isma,
iżda essenzjalment huwa mod biex jittrasmettu l-informazzjoni
minn Sprite għall-ieħor.
Per eżempju, inti tista 'tixtieq li jittrasmettu logħba fuq,
u meta ieħor Sprite jirċievi logħba fuq,
din tirrispondi b'ċertu mod.
Huwa ta 'mudell importanti li wieħed jifhem għall-programmazzjoni.
Just jmorru fuq il-Ġimgħa bażiku 0, dak li aħna ħadthom marret fuq s'issa,
ejja nħarsu lejn dan il-programm C sempliċi.
It-test jista 'jkun xi ftit żgħira minn hawn, imma jien ser jmorru fuq huwa verament malajr.
Aħna inklużi 2 fajls header fil-quċċata, cs50.h u stdio.h.
Aħna mbagħad jiddefinixxu limitu kostanti msejħa biex tkun ta '100.
Aħna mbagħad timplementa funzjoni prinċipali tagħna.
Minħabba li aħna ma jużawx argumenti kmand tal-linja hawn neħtieġu npoġġu null
bħala l-argumenti favur prinċipali.
Naraw int hawn prinċipali. Dik hija l-tip ta 'ritorn, għalhekk ritorn 0 fil-qiegħ.
U aħna qed tuża l-funzjoni librerija CS50 tikseb int
li titlob lill-utent għall-input, u aħna jaħżnu f'dan x varjabbli,
hekk aħna tiddikjara x 'hawn fuq, u aħna initialize ma x = GetInt.
>> Aħna mbagħad tiċċekkja biex tara jekk l-utent tana b'input tajjeb.
Jekk huwa LIMITU ≥ irridu li jirritornaw kodiċi ta 'żball ta' 1 u jistampaw messaġġ ta 'żball.
U fl-aħħarnett, jekk l-utent tatna tajba input
aħna qed tmur biex kwadru in-numru u jistampa dan ir-riżultat.
Just biex tiżgura li dawk dar hit kollha
tista 'tara t-tikketti tal-partijiet differenti tal-kodiċi hawn.
Semmejt kostanti, fajls header.
Oh, int x. Kun żgur li wieħed jiftakar li l-varjabbli lokali.
Dan jikkuntrasta minn varjabbli globali, li aħna ser nitkellmu dwar
ftit aktar tard fis-sessjoni reviżjoni,
u aħna qed jitolbu l-funzjoni librerija printf,
hekk jekk aħna ma kinux jinkludu l-fajl tal-header stdio.h
aħna mhux se jkunu jistgħu jsejħu printf.
U jien nemmen li l-vleġġa li ltqajna maqtugħa hawn hija li tipponta lejn il-d%,
li huwa string ifformattjar fil printf.
Hija tgħid jistampa din il-varjabbli bħala numru d%,.
U li huwa għall f'Ġimgħa 0.
Issa Lucas se tkompli.
Ħej, guys. Jisimni Lucas.
Jien sophomore fil-dar aħjar fuq il-kampus, Mather,
u jien ser jitkellmu ftit dwar Ġimgħa 1 u 2.1.
[Ġimgħa 1 u 2.1!] [Lucas Freitas]
Kif Lexi kien qal, meta bdejna traduzzjoni kodiċi tiegħek mill Scratch sa C
waħda mill-affarijiet li aħna ndunat hija li inti ma tistax biss
jikteb il-kodiċi tiegħek u run-użu ta 'bandiera aħdar aktar.
Attwalment, inti għandek tuża xi passi biex jagħmlu program tiegħek C
issir fajl eżekutibbli.
Bażikament dak li għandek tagħmel meta int kitba ta 'programm huwa li
inti tittraduċi l-idea tiegħek f'lingwa li kompilatur jista 'jifhem,
hekk meta int bil-miktub ta 'programm fis-C
dak li qed tagħmel huwa attwalment miktub xi ħaġa li kompilatur tiegħek se jifhmu,
u allura l-kumpilatur se tittraduċi dan il-kodiċi
f'xi ħaġa li l-kompjuter tiegħek ser jifhmu.
>> U l-ħaġa hija, il-kompjuter tiegħek huwa attwalment ħafna dumb.
Kompjuter tiegħek jista 'biss jifhmu 0s u 1s,
hekk fil-fatt fl-ewwel kompjuters nies normalment programmati
użu 0s u 1s, iżda mhux aktar, nirringrazzjaw 'l Alla.
Aħna ma għandekx memorize-sekwenzi ta 0s u 1s
għal għal loop jew għal loop waqt u l-bqija.
C'est pourquoi għandna kompilatur.
What a kompilatur ma huwa bażikament jittraduċi l-kodiċi C,
fil-każ tagħna, għal lingwa li l-kompjuter tiegħek ser jifhmu,
li huwa l-kodiċi oġġett, u l-kumpilatur li aħna qed tuża
huwa msejjaħ clang, għalhekk dan huwa effettivament il-simbolu għall clang.
Meta inti għandek program tiegħek, inti għandek tagħmel 2 affarijiet.
L-ewwel, inti għandek biex jikkompilaw programm tiegħek, u allura inti qed tmur jiddekorri program tiegħek.
Biex jikkompila programm tiegħek ikollok ħafna ta 'għażliet li jagħmlu dan.
L-ewwel waħda hija li jagħmlu program.c clang
li fiha programm huwa l-isem tal-programm tiegħek.
F'dan il-każ tista 'tara dawn qed biss qal "ħej, jikkompilaw programm tiegħi."
Int ma qal "Irrid dan l-isem għall-programm tiegħi" jew xi ħaġa.
>> It-tieni għażla hija li tagħti l-isem lill-programm tiegħek.
Tista 'tgħid clang-o u allura l-isem li trid
il-fajl eżekutibbli li jkun nominat bħala u mbagħad program.c.
U inti tista 'ukoll tagħmel jagħmlu programm, u tara kif fl-ewwel 2 każijiet
Nressaq. C, u fil-tielet wieħed I biss għandhom programmi?
Yeah, inti fil-fatt ma għandhom ipoġġu. C meta tuża tagħmel.
Inkella l-kumpilatur huwa attwalment għaddejjin biex Yell fi inti.
U wkoll, I do not know jekk inti guys ftakar,
iżda ħafna drabi aħna wkoll użat-lcs50 or-lm.
Dan huwa msejjaħ jgħaqqdu.
Hija biss jirrakkonta l-kumpilatur li int ser tuża dawk libreriji hemm dritt,
hekk jekk inti tixtieq li tuża cs50.h inti fil-fatt għandek tip
clang program.c-lcs50.
Jekk inti ma tagħmel dan, l-kumpilatur mhux se tkun taf
li inti qed tuża dawk il-funzjonijiet fl-cs50.h.
U meta inti tixtieq li run program tiegħek għandek 2 għażliet.
Jekk inti ma program.c clang inti ma tagħti l-isem lill-programm tiegħek.
Int għandek run jużaw. / A.out.
A.out huwa isem standard li clang jagħti program tiegħek jekk inti ma tagħtiha isem.
Inkella int se tagħmel. / Programm jekk inti taw l-isem għall-programm tiegħek,
u wkoll jekk inti ma tagħmel l-programm isem li programm hija se tikseb
huwa diġà se jiġu programmati-istess isem bħall-fajl c.
Imbagħad aħna tkellem dwar it-tipi ta 'data u data.
>> Bażikament tipi tad-data huma l-istess ħaġa bħat kaxxi ftit huma jużaw
li żżomm il-valuri, sabiex it-tipi tad-data huma attwalment bħad pokemons.
Huma daħlu fil-daqsijiet kollha u t-tipi.
I do not know jekk dan analoġija jagħmel sens.
Id-daqs tad-data fil-fatt jiddependi fuq l-arkitettura magna.
Il-daqsijiet tad-data li jien ser juru hawn
huma attwalment għal magna 32-bit, li huwa l-każ ta 'apparat tagħna,
imma jekk int attwalment kodifikazzjoni Mac tiegħek jew Windows ukoll
probabbilment int ser jkollhom magna 64-bit,
sabiex tiftakar li l-daqsijiet tad-data li jien ser juru hawn
huma għall-magna 32-bit.
L-ewwel waħda li rajna kienet int,
li huwa pjuttost sempliċi.
Tuża int taħżen numru sħiħ.
Rajna wkoll il-karattru, il-karatteristiċi.
Jekk inti tixtieq li tuża ittra jew simbolu ftit int probabbilment se jużaw char.
A char tkun 1 byte, li jfisser 8 bits, bħal Lexi qal.
Bażikament għandna Tabella ASCII li tkun 256
kombinazzjonijiet possibbli ta '0s u 1s,
u mbagħad meta inti tip ta 'char li għaddej biex tittraduċi
l-karattru li inti inputs numru li għandek fil-tabella ASCII, bħal Lexi qal.
Għandna wkoll il-float, li nużaw biex taħżen numri deċimali.
Jekk inti tixtieq li jagħżlu 3.14, per eżempju, int ser tuża float
jew doppju li għandu aktar preċiżjoni.
A float għandha 4 bytes.
A doppja għandha 8 bytes, hekk l-unika differenza hija l-preċiżjoni.
Għandna wkoll fit-tul li jintuża għall-interi,
u tista 'tara għal magna 32-bit l-int u fit jkollhom l-istess daqs,
għalhekk ma verament jagħmel sens għall-użu fit-tul fil-magna 32-bit.
>> Imma jekk inti qed tuża magna Mac u 64-bit, attwalment twila għandu daqs 8,
hekk huwa verament jiddependi fuq l-arkitettura.
Għall-magni 32-bit ma jagħmilx sens li jużaw twil verament.
U mbagħad twil twil, min-naħa l-oħra, għandha 8 bytes,
għalhekk huwa tajjeb ħafna jekk inti tixtieq li jkollok numru sħiħ itwal.
U fl-aħħarnett, aħna għandna spag, li huwa attwalment * char,
li huwa pointer għal char.
Huwa faċli ħafna li wieħed jaħseb li d-daqs tas-sekwenza se tkun simili
in-numru ta 'karattri li inti għandek hemmhekk,
imma attwalment l-* char innifsu
għandha l-daqs ta 'pointer għal char, li huwa 4 bytes.
Id-daqs ta '* char huwa 4 bytes.
Ma jimpurtax jekk għandek kelma żgħira jew ittra jew xejn.
Huwa ser jkun ta '4 bytes.
Aħna wkoll tgħallmu ftit dwar ikkastjar,
sabiex tistgħu taraw, jekk ikollok, per eżempju, programm li tgħid
int x = 3 u mbagħad printf ("% d", x / 2)
do you guys taf dak li għaddej biex jistampaw fuq l-iskrin?
>> Xi ħadd? >> [Studenti] 2.
1. >> 1, yeah.
Meta tagħmel 3/2 li għaddej biex tikseb 1.5,
iżda peress li aħna qed jużaw numru sħiħ li għaddej biex jinjora l-parti deċimali,
u int se jkollhom 1.
Jekk inti ma tridx li jiġri x'tista 'tagħmel, per eżempju,
huwa jiddikjara float y = x.
Imbagħad x li jintuża biex tkun 3 huwa issa se tkun 3.000 fil-y.
U allura inti tistax tistampa l-y / 2.
Fil-fatt, I għandu jkollhom 2. hemmhekk.
Huwa ser tagħmel 3.00/2.00,
u int ser tikseb 1.5.
U aħna għandna dan f 0.2 biss li jistaqsu għal 2 unitajiet deċimali fil-parti deċimali.
Jekk għandek .3 f li għaddej biex ikollhom attwalment 1.500.
Jekk huwa 2 li għaddej biex tkun 1.50.
Għandna wkoll il-każ hawnhekk.
Jekk inti tagħmel float x = 3.14 u mbagħad inti x printf
int ser tikseb 3.14.
U jekk inti tagħmel x = l-int ta x,
li jfisser jittrattaw x bħala int u inti print x issa
int ser ikollhom 3.00.
Does li jagħmel sens?
Għaliex int l-ewwel trattament x bħala numru sħiħ, hekk int jinjora l-parti deċimali,
u allura int istampar x.
U fl-aħħarnett, inti tista 'ukoll tagħmel dan,
int x = 65, u allura inti tiddikjara char c = x,
u mbagħad jekk inti print-c int fil-fatt se tikseb
A, sabiex bażikament dak li qed isir hawn
huwa traduzzjoni tal-eqreb numru sħiħ fil-karattru,
bħad-Tabella ASCII ma.
Aħna wkoll tkellem dwar l-operaturi matematika.
Ħafna minnhom huma pjuttost sempliċi, hekk +, -, *, /,
u wkoll tkellimna dwar mod, li huwa l-bqija ta 'diviżjoni ta' 2 numri.
Jekk għandek 10% 3, per eżempju,
dan ifisser jaqsam 10 sat-3, u dak li huwa l-bqija?
Huwa ser tkun l-1, dan huwa attwalment utli ħafna għal ħafna tal-programmi.
Għal Vigenère u Caesar jien pretty żgur li kollha inti guys użat mod.
Dwar operaturi matematika, ikunu attenti ħafna meta tgħaqqad * u /.
>> Per eżempju, jekk inti tagħmel (3/2) * 2 dak li huma inti se tikseb?
[Studenti] 2.
Yeah, 2, minħabba li 3/2 se tkun 1.5,
imma peress li inti qed tagħmel l-operazzjonijiet bejn 2 interi
int fil-fatt biss ser tikkunsidra 1,
u mbagħad 1 * 2 se tkun 2, sabiex ikun ferm, ferm attent
meta tagħmel aritmetika ma interi minħabba
inti tista 'tikseb li 2 = 3, f'dak il-każ.
U wkoll ikunu attenti ħafna dwar preċedenza.
Għandek normalment juża parentesi biex tkun żgur li int taf dak li qed isir.
Xi shortcuts utli, naturalment, wieħed huwa i + + jew + i = 1
jew bl-użu + =.
Dan huwa l-istess ħaġa bħat tagħmel i = i + 1.
Tista 'wkoll tagħmel i - jew i - = 1,
li huwa l-istess ħaġa kif i = i -1,
inti guys xi ħaġa jużaw ħafna fl għal linji, mill-inqas.
Ukoll, għal *, jekk tuża * = u jekk inti tagħmel, per eżempju,
i * = 2 hija l-istess ħaġa kif qal i = i * 2,
u l-istess ħaġa għall-diviżjoni.
Jekk inti do i / = 2 huwa l-istess ħaġa bħat i = i / 2.
>> Issa dwar il-funzjonijiet.
You guys tgħallmu li l-funzjonijiet huma strateġija tajba ħafna biex jiffranka l-kodiċi
filwaqt li qed programmazzjoni, hekk jekk inti tixtieq li twettaq il-kompitu istess
fil-kodiċi ġdid u għal darb'oħra, probabbilment inti tixtieq li tuża l-funzjoni
biss sabiex inti ma għandekx kopja u paste tal-kodiċi fuq u aktar mill-ġdid.
Attwalment, prinċipali hija funzjoni, u meta I nuruk l-format ta 'funzjoni
int ser tara li dan huwa pjuttost ovvju.
Aħna nużaw ukoll il-funzjonijiet minn xi libreriji,
per eżempju, printf, GetIn, li hija mill-bibljoteka CS50,
u funzjonijiet oħra bħall toupper.
Kollha ta 'dawn il-funzjonijiet huma attwalment implimentati fil-libreriji oħra,
u meta inti tpoġġi dawk il-fajls irbit fil-bidu tal-programm tiegħek
int tgħid tista 'jekk jogħġbok agħtini l-kodiċi għal dawk il-funzjonijiet
so I ma jkollhom jimplimentawhom mill myself?
U inti tista 'wkoll tikteb funzjonijiet tiegħek, hekk meta tibda programmazzjoni
inti tirrealizza li l-libreriji ma jkollhomx l-funzjonijiet kollha li għandek bżonn.
Għall-pset aħħar, per eżempju, aħna kiteb tiġbed, ġirja, u Lookup,
u huwa ħafna, importanti ħafna li tkun tista 'tikteb funzjonijiet
għaliex huma utli, u nużaw il-ħin kollu fl-ipprogrammar,
u dan jiffranka ħafna ta 'kodiċi.
Il-format ta 'funzjoni huwa dan wieħed.
Għandna tip ritorn fil-bidu. X'inhu t-tip ritorn?
Huwa biss meta l-funzjoni tiegħek se terġa 'lura.
Jekk għandek funzjoni, per eżempju, fatturi,
li ser jikkalkula fattorjali ta 'numru sħiħ,
probabbilment li għaddej biex jirritorna numru sħiħ ukoll.
Imbagħad it-tip ritorn se tkun int.
Printf attwalment għandha vojt tip ritorn
għax int ma jirritornaw xejn.
Inti sempliċiment istampar affarijiet li l-iskrin
u jaqtagħhom l-funzjoni wara.
Imbagħad għandek l-isem tal-funzjoni li inti tista 'tagħżel.
Inti għandek tkun ftit raġonevoli, bħal ma jagħżlu isem bħall xyz
jew simili x2f.
Ipprova biex tpatti isem li jagħmel sens.
>> Per eżempju, jekk huwa fatturi, jgħidu fattorjali.
Jekk huwa funzjoni li ser jiġbed xi ħaġa, isem li bih tiġbed.
U allura aħna għandna l-parametri, li jissejjħu wkoll argumenti,
li huma bħall-riżorsi dik il-funzjoni tiegħek jeħtieġ
mill-kodiċi tiegħek biex twettaq ix-xogħol tagħha.
Jekk inti tixtieq li tikkalkula l-fattorjali ta 'numru
probabbilment għandek bżonn li jkollhom numru biex tikkalkola fattorjali.
Wieħed mill-argumenti li int ser jkollhom huwa n-numru innifsu.
U allura li għaddej biex jagħmlu xi ħaġa u jirritorna l-valur fl-aħħar
sakemm huwa funzjoni null.
Ejja naraw eżempju.
Jekk irrid li jiktbu funzjoni li tiġbor il-numri fil-firxa tan-numri interi,
ewwel nett, it-tip ritorn se tkun int
minħabba I jkollhom firxa ta 'numri interi.
U mbagħad jien ser ikollhom l-isem funzjoni simili sumArray,
u mbagħad li għaddej biex tieħu l-array innifsu, li nums int,
u mbagħad it-tul tal-firxa so I know kif ħafna numri għandi qosor.
Imbagħad I għandhom initialize somma varjabbli msejħa, per eżempju, għal 0,
u kull darba nara element fil-firxa I għandha żżid li somma, so I ma 'għall-loop.
Eżatt bħal Lexi qal, inti i int = 0, i <tul ui + +.
U għal kull element fil-firxa għamilt somma + = nums [i],
u mbagħad I lura s-somma, dan huwa sempliċi ħafna, u dan jiffranka ħafna ta 'kodiċi
jekk inti qed tuża din il-funzjoni ta 'lott ta' drabi.
Imbagħad ħadna ħarsa lejn kundizzjonijiet.
Aħna jekk, inkella, u jekk inkella.
Ejja naraw dak li huwa d-differenza bejn dawk.
Agħti ħarsa lejn dawn il-kodiċijiet 2. X'inhi d-differenza bejniethom?
L-ewwel waħda kienet bażikament 'l-kodiċijiet li inti tgħid
jekk numru huwa +, -, jew 0.
L-ewwel wieħed jgħid jekk huwa> 0 allura huwa pożittiv.
Jekk huwa = għal 0 allura huwa 0, u jekk huwa <0 allura huwa negattiv.
>> U l-ieħor qed tagħmel jekk, inkella jekk, inkella.
Id-differenza bejn it-tnejn hija li dan huwa wieħed attwalment se
jiċċekkjaw jekk> 0, <0 jew 0 = tliet darbiet,
hekk jekk ikollok in-numru 2, per eżempju, li għaddej biex jiġu hawn u jgħidu
jekk (x> 0), u li għaddej biex ngħid iva, so I jistampaw pożittiv.
Iżda anke jekk naf li huwa> 0 u mhuwiex ser ikun 0 jew <0
Jien xorta se tagħmel huwa 0, huwa <0,
hekk jien attwalment għaddejjin ġewwa ta 'IFs li jien ma kellhomx
minħabba I diġà jafu li huwa mhux ser tissodisfa xi wieħed minn dawn il-kundizzjonijiet.
I jistgħu jużaw il-jekk, inkella jekk, inkella dikjarazzjoni.
Bażikament tgħid jekk x = 0 I jistampaw il-pożittiv.
Jekk mhuwiex, jien ser wkoll tittestja dan.
Jekk huwa 2 ma jien ser tagħmel dan.
Bażikament jekk kelli x = 2 inti ngħid
jekk (x> 0), iva, hekk jistampa dan.
Issa li naf li huwa> 0 u li hija ssodisfat l-ewwel jekk
Jien lanqas se run dan il-kodiċi.
Il-kodiċi tmur aktar malajr, fil-fatt, 3 darbiet aktar mgħaġġla jekk tuża dan.
Aħna wkoll tgħallmu dwar u u jew.
Jien mhux ser jgħaddu dan għaliex Lexi diġà tkellem dwar minnhom.
Huwa biss il-&& u | | operatur.
>> L-unika ħaġa I ser ngħid huwa jkun attent meta inti għandek 3 kundizzjonijiet.
Uża parentesi għaliex dan huwa ħafna konfużjoni meta għandek kundizzjoni
u ieħor waħda jew ieħor.
Uża parentesi biss biex tkun ċert li l-kondizzjonijiet tiegħek jagħmel sens
għaliex f'dak il-każ, per eżempju, tista 'timmaġina li
jista 'jkun l-ewwel kundizzjoni u waħda jew l-oħra
jew il-kondizzjonijiet 2 magħquda fi u
jew t-tielet wieħed, hekk biss ikunu attenti.
U fl-aħħarnett, aħna tkellem dwar switches.
A swiċċ huwa utli ħafna meta jkollok varjabbli.
Ejja ngħidu li għandek varjabbli bħall n
li jista 'jkun 0, 1, jew 2, u għal kull wieħed minn dawk każijiet
int ser twettaq xogħol.
Tista 'tgħid jaqilbu l-varjabbli, u dan jindika li l-
il-valur allura huwa simili value1 jien ser tagħmel dan,
u mbagħad I break, li jfisser jien mhux ser tħares lejn kwalunkwe mill-każijiet l-oħra
għaliex aħna diġà sodisfatti f'dak il-każ
u mbagħad value2 u fuq hekk, u jien ukoll jista 'jkollhom bidla default.
Dan ifisser li jekk ma tissodisfax xi waħda mill-każijiet li kelli
li jien se jagħmlu xi ħaġa oħra, iżda li mhux obbligatorju.
Li kollox għalija. Issa ejja jkollhom Tommy.
Kull dritt, din se tkun Ġimgħa 3-ish.
Dawn huma xi wħud mis-suġġetti aħna ser tkun li jkopru, kripto, l-ambitu, arrays, eċċetera.
Just kelma malajr dwar kripto. Aħna mhux se martell din id-dar.
>> Għamilna dan fil pset 2, iżda għall-kwizz tagħmel żgur li int taf id-differenza
bejn il-cipher Caesar u l-cipher Vigenère,
kif kemm ta 'dawk tax-xogħol ciphers u dak li huwa simili għall-kriptaġġ
u t-test decrypt juża dawk ciphers 2.
Ftakar, il-cipher Caesar sempliċiment tiġi assenjata b'rotazzjoni kull karattru bl-istess ammont,
tagħmel żgur li int mod bin-numru ta 'ittri fl-alfabett.
U l-cipher Vigenère, min-naħa l-oħra, tiġi assenjata b'rotazzjoni kull karattru
b'ammont differenti, sabiex minflok qal
kull mdawwar karattru minn 3 Vigenère se jduru kull karattru
b'ammont differenti skond xi keyword
fejn kull ittra fil-keyword jirrappreżenta xi ammont differenti
biex idawwar il-test ċar minn.
Ejja ewwel tkellem dwar firxa varjabbli.
Hemm 2 tipi differenti ta 'varjabbli.
Aħna varjabbli lokali, u dawn ser jiġu definiti
barra ta 'prinċipali jew barra minn kwalunkwe funzjoni jew blokka,
u dawn se jkunu aċċessibbli kullimkien fil-programm tiegħek.
Jekk għandek funzjoni u f'dik il-funzjoni hija loop filwaqt
il-varjabbli globali kbira hija aċċessibbli kullimkien.
A varjabbli lokali, min-naħa l-oħra, huwa scoped għall-post fejn hija definita.
>> Jekk għandek funzjoni hawn, per eżempju, aħna għandna dan g funzjoni,
u ġewwa ta 'g hemm varjabbli hawnhekk imsejjaħ y,
u dan ifisser li din hija varjabbli lokali.
Anki jekk din il-varjabbli huwa msejjaħ y
u din il-varjabbli huwa msejjaħ y dawn il-funzjonijiet 2
m'għandhom l-ebda idea dak varjazzjonijiet lokali ta 'xulxin huma.
Min-naħa l-oħra, sa hawn ngħidu int x = 5,
u dan huwa barra mill-ambitu ta 'xi funzjoni.
Hu l barra mill-ambitu ta 'prinċipali, għalhekk din hija varjabbli globali.
Dan ifisser li ġewwa ta 'dawn il-funzjonijiet 2 meta ngħid x - jew x + +
Jien aċċess għall-x istess biha din y u dan y huma varjabbli differenti.
Dik hija d-differenza bejn varjabbli globali u varjabbli lokali.
Safejn huwa kkonċernat id-disinn, xi kultant huwa probabbilment idea aħjar
li jżomm varjabbli lokali kull meta inti tista 'possibilment
peress li jkollhom mazz ta 'varjabbli globali jistgħu jiksbu verament konfużjoni.
Jekk għandek mazz ta 'funzjonijiet kollha li jimmodifika l-istess ħaġa
inti tista tinsa dak li jekk din il-funzjoni aċċidentalment timmodifika dan globali,
u din il-funzjoni l-oħra ma tkunx taf dwar dan,
u dan ma jiksbu pjuttost konfuża kif ikollok il-kodiċi aktar.
Żamma varjabbli lokali kull meta inti tista 'possibilment
hu d-disinn biss tajjeb.
Arrays, ftakar, huma sempliċiment listi ta 'elementi tal-istess tip.
Ġewwa tal-IK ma tistax jkollhom lista bħal 1, 2.0, bonjour.
Aħna biss ma tistax tagħmel dan.
>> Meta aħna jiddikjara firxa fis-C l-elementi kollha għandhom ikunu tal-istess tip.
Hawnhekk I jkollhom firxa ta '3 numri interi.
Hawn irrid niċċara-tul tal-firxa, imma jekk jien biss li tiddikjara li f'dan sintassi
fejn I jispeċifikaw x'hemm l-elementi kollha huma I m'għandhomx bżonn din teknikament 3.
Il-kompilatur huwa intelliġenti biżżejjed biex insemmu kemm hu kbir il-firxa għandu jkun.
Issa meta I rridu nġibu jew sett il-valur ta 'firxa
dan huwa l-sintassi li tagħmel dan.
Dan fil-fatt se timmodifika l-tieni element tal-firxa għaliex, ftakar,
numerazzjoni jibda b'0, mhux fl-1.
Jekk irrid jaqra dak il-valur nista 'ngħid xi ħaġa simili int x = array [1].
Jew jekk irrid li jistabbilixxu dan il-valur, bħal jien tagħmel hawn,
Nista 'ngħid firxa [1] = 4.
Dak iż-żmien aċċess elementi mill-indiċi tagħhom
jew il-pożizzjoni tagħhom jew meta jkunu fil-firxa,
u li elenkar jibda fil 0.
Nistgħu wkoll arrays ta 'arrays,
u dan jissejjaħ firxa multi-dimensjonali.
Meta aħna għandna firxa multi-dimensjonali
dan ifisser li jista 'jkollna xi ħaġa bħal ringieli u kolonni,
u dan huwa biss mod wieħed ta 'viżwalizzazzjoni dan jew taħseb dwar dan.
Meta I jkollhom firxa multi-dimensjonali li jfisser jien ser tibda jeħtieġu
aktar minn 1 indiċi għaliex jekk ikolli grid
biss qal dak ringiela int fil ma tagħtina numru.
Li verament biss se tagħtina lista ta 'numri.
Ejja ngħidu għandi din array hawn.
I jkollhom firxa imsejħa grid, u jien qal huwa s 2 ringieli u kolonni 3,
u għalhekk dan huwa mod wieħed ta 'viżwalizzazzjoni dan.
Meta I say I rridu nġibu l-element fi [1] [2]
dan ifisser li minħabba li dawn huma ringieli ewwel u mbagħad kolonni
Jien ser jaqbżu l-ringiela 1 peress li jien qal 1.
>> Imbagħad Jien ser jiġi maż hawn għall-kolonna 2, u jien ser jiksbu l-valur 6.
Jagħmel sens?
Multi-dimensjonali arrays, ftakar, huma teknikament biss firxa ta 'arrays.
Jista 'jkollna arrays ta' arrays ta 'arrays.
Nistgħu jibqgħu għaddejjin, imma verament mod wieħed biex jaħsbu dwar
kif din qed stabbiliti u x'inhu għaddej huwa li Ħares
fil-grid bħal dan.
Meta aħna jgħaddu matriċi għall-funzjonijiet, dawn qed tmur biex jaġixxu
ftit differenti minn meta aħna jgħaddu varjabbli regolari għall-funzjonijiet
bħal jgħaddu int jew float.
Meta aħna jgħaddu tipproċessa tipi int jew char jew xi waħda minn dawn id-data l-oħra
aħna biss ħa ħarsa lejn jekk il-funzjoni jimmodifika
il-valur ta 'dak il-varjabbli li l-bidla mhux se jitkabbru up
għall-funzjoni sejħa.
Ma 'firxa, min-naħa l-oħra, li se jiġri.
Jekk I jgħaddu fil-firxa għal xi funzjoni u li l-funzjoni bidliet wħud mill-elementi,
meta nasal lura sa l-funzjoni li hija imsejħa
firxa tiegħi issa hija se tkun differenti, u l-vokabularju għal dak
arrays huwa huma mgħoddija permezz ta 'referenza, kif Ser naraw aktar tard.
Dan huwa relatat ma 'kif pointers xogħol, fejn dawn it-tipi ta' data bażika,
min-naħa l-oħra, huma mgħoddija minn valur.
>> Aħna jistgħu jaħsbu li bħala li tagħmel kopja ta 'xi varjabbli u mbagħad tgħaddi fil-kopja.
Ma jimpurtax dak li nagħmlu ma 'dak varjabbli.
Il-funzjoni sejħa mhux se jkun jaf li kien inbidel.
Arrays huma biss ftit differenti f'dan ir-rigward.
Per eżempju, kif aħna biss raw, prinċipali hija sempliċement funzjoni
li tista 'tieħu fi 2 argumenti.
L-ewwel argument li l-funzjoni ewlenija hija argc, jew in-numru ta 'argumenti,
u t-tieni argument huwa msejjaħ ARGV,
u dawk li huma l-valuri reali ta 'dawn l-argumenti.
Ejja ngħidu għandi programm imsejjaħ this.c,
u jien ngħid jagħmlu dan, u jien ser imexxu dan fil-linja tal-kmand.
Issa li jgħaddu f'xi argumenti għall-programm tiegħi imsejħa 'dan,
Nista 'ngħid xi ħaġa simili. / Dan huwa cs 50.
Dan huwa dak li aħna nimmaġinaw David tagħmel kull jum fit-terminal.
Imma issa l-ġewwa funzjoni prinċipali ta 'dak il-programm
għandha dawn il-valuri, sabiex argc hija 4.
Jista 'jkun ftit konfuża għaliex verament aħna qed biss tgħaddi fil hija cs 50.
Dak biss 3.
Imma ftakar li l-ewwel element tal ARGV jew l-ewwel argument
huwa l-isem tal-funzjoni stess.
Allura dan ifisser li għandna 4 affarijiet hawn,
u l-ewwel element se tkun. / dan.
U dan se jkun rappreżentati kif string.
Imbagħad l-elementi li fadal huma dak li aħna ittajpjat fil wara l-isem tal-programm.
Hekk biss bħala twarrib, kif aħna probabbilment raw fil pset 2,
ftakar li l-sekwenza 50 hija ≠-50 numru sħiħ.
Allura aħna ma tista 'tgħid xi ħaġa simili, "int x = ARGV 3."
>> Li jinsab biss mhux ser jagħmel sens, għax din hija sekwenza, u dan huwa numru sħiħ.
Mela jekk inti tixtieq li jikkonvertu bejn il-2, ftakar, aħna qed tmur biex
jkollhom din il-funzjoni magic imsejħa atoi.
Li jieħu string u jirritorna l-eqreb numru sħiħ rappreżentati ġewwa ta 'dak sekwenza.
Allura dak żball faċli li tagħmel fuq il-kwizz,
biss ħsieb li dan awtomatikament se jkun it-tip korrett.
Iżda biss jafu li dawn dejjem se jkun kordi
anke jekk l-sekwenza fih biss numru sħiħ jew karattru jew float.
Allura issa ejja nitkellmu dwar running time.
Meta aħna għandna kollha dawn algoritmi li jagħmlu dawn l-affarijiet crazy,
isir verament utli li tistaqsi l-mistoqsija, "Kemm indumu dawn jieħdu?"
Aħna jirrappreżentaw dak ma 'xi ħaġa imsejħa notazzjoni asintotiku.
Allura dan ifisser li - ukoll, ejja ngħidu li nagħtu algoritmu tagħna
xi tassew, tassew, tassew kbar input.
Aħna tixtieq li tistaqsi l-mistoqsija, "Kemm idum huwa se jieħu?
Kemm passi se tieħu algoritmu tagħna biex imexxu
bħala funzjoni tad-daqs tal-input? "
Allura l-ewwel mod aħna jistgħu jiddeskrivu ħin taħdem huwa ma big O.
U dan huwa żmien tagħna running-agħar każ.
Mela jekk irridu li sort firxa, u nagħtu algoritmu tagħna firxa
li l f'ordni dixxendenti meta dan għandu jkun sabiex axxendenti,
li għaddej biex tkun l-agħar każ.
Dan huwa ta 'fuq tagħna marbut fit-tul ta' żmien massimu algoritmu tagħna se tieħu.
Min-naħa l-oħra, din Ω se tiddeskrivi aħjar każ running time.
Allura jekk aħna nagħtu firxa diġà magħżula għal algoritmu issortjar,
kemm se jdum dan jieħu biex sort dan?
U dan, imbagħad, jiddeskrivi aktar baxx bound fuq running time.
Allura hawn huma biss ftit kliem li jiddeskrivu xi drabi komuni running.
Dawn huma f'ordni axxendenti.
Il-ħin l-aktar mgħaġġla running għandna huwa msejjaħ kostanti.
>> Dan ifisser l-ebda kwistjoni kif ħafna elementi li nagħtu algoritmu tagħna,
ebda kwistjoni kemm hu kbir firxa tagħna hija, issortjar hija
jew tagħmel kwalunkwe aħna qed tagħmel l-firxa dejjem se tieħu l-istess ammont ta 'ħin.
Allura aħna jistgħu jirrappreżentaw biss li ma '1, li hija kostanti.
Aħna wkoll ħares lejn run time logaritmika.
Allura xi ħaġa bħal tfittxija binarja hija logaritmika,
fejn aħna maqtugħin il-problema fil nofs kull darba
u mbagħad l-affarijiet biss jiksbu ogħla minn hemm.
U jekk int qatt tikteb O ta 'kwalunkwe algoritmu fatturi,
inti probabilment ma għandhom jikkunsidraw dan bħala ġurnata tax-xogħol tiegħek.
Meta nqabblu drabi running huwa importanti li wieħed iżomm f'moħħu dawn l-affarijiet.
Mela jekk ikolli algoritmu li l-O (n), u xi ħadd ieħor
għandha algoritmu ta 'O (2n) dawn huma attwalment asimptotikalment ekwivalenti.
Allura jekk aħna jimmaġina n li hemm numru kbir bħal eleventy biljun:
hekk meta aħna qed jitqabblu eleventy biljun għal xi ħaġa bħal eleventy biljun + 3,
f'daqqa waħda li 3 ma verament tagħmel differenza kbira jibqgħalu.
C'est pourquoi aħna qed tmur biex jibdew jikkunsidraw dawn l-affarijiet li huma ekwivalenti.
Allura affarijiet bħal dawn il-kostanti hawn, hemm 2 x dan, jew li żżid 3,
dawn huma biss kostanti, u dawn ser qatra up.
Allura hu għalhekk li kollha 3 ta 'dawn il-ħinijiet run huma l-istess kif qal li qed O (n).
Bl-istess mod, jekk ikollna 2 darbiet run oħra, ejja ngħidu O (n ³ + 2n ²), nistgħu żid
+ N, + 7, u mbagħad għandna ieħor run time li jinsab biss O (³ n).
għal darb'oħra, dawn huma l-istess ħaġa għaliex dawn - dawn mhumiex l-istess.
Dawn huma l-istess affarijiet, sorry. Allura dawn huma l-istess għaliex
dan ³ n hija se jiddominaw din ² 2n.
>> Dak li mhux l-istess ħaġa hija jekk aħna run żminijiet bħal O (³ n) u O (n ²)
għaliex dan ³ n hija ħafna akbar minn dan ² n.
Mela jekk ikollna esponenti, f'daqqa waħda dan jibda jimpurtax,
iżda meta aħna qed biss jittrattaw ma 'fatturi kif aħna up hawn,
allura huwa mhuwiex ser jimpurtax għaliex huma biss se jitilqu.
Ejja tagħti ħarsa lejn uħud mill-algoritmi Rajna s'issa
u jitkellmu dwar run time tagħhom.
L-ewwel mod ta 'tiftix għal numru f'lista, li rajna, kien tfittxija lineari.
U l-implimentazzjoni ta 'tfittxija lineari huwa super faċli.
Aħna biss jkollhom lista, u aħna qed tmur biex tħares lejn kull element uniku fil-lista
sakemm insibu l-għadd aħna qed infittxu.
Allura dan ifisser li fl-agħar każ, dan O (n).
U l-agħar każ hawnhekk jista 'jkun jekk l-element huwa
l-aħħar element, imbagħad bl-użu tfittxija lineari irridu nħarsu lejn kull element wieħed
sakemm aħna jiksbu l-aħħar wieħed sabiex tkun taf li hija kienet effettivament fil-lista.
Ma nistgħux biss jagħtu up fin-nofs u jgħidu, "Huwa probabbilment ma jkunx hemm."
Bil tfittxija lineari irridu nħarsu lejn il-ħaġa sħiħa.
Il-ħin tmexxija aħjar każ, min-naħa l-oħra, huwa kostanti
għaliex fil-każ aħjar l-element aħna qed tfittex huwa biss l-ewwel wieħed fil-lista.
Allura huwa għaddej li jqarrbuna eżattament 1 pass, ebda kwistjoni kemm hu kbir il-lista hija
jekk aħna qed ifittxu l-ewwel element kull darba.
>> Allura meta inti tfittex, ftakar, dan ma jeħtieġx li lista tagħna jiġu magħżula.
Għaliex aħna qed sempliċiment se tħares fuq kull element wieħed, u ma verament kwistjoni
f'liema ordni dawk l-elementi huma pulzieri
A algoritmu tfittxija aktar intelliġenti hija xi ħaġa simili tiftix binarju.
Ftakar, l-implimentazzjoni ta 'tfittxija binarja huwa meta inti qed tmur biex
iżommu tħares lejn l-nofs tal-lista.
U għaliex aħna qed tħares lejn l-nofs, aħna jeħtieġu li l-lista magħżula
jew inkella ma nafux fejn l-nofs huwa, u għandna li tħares fuq
il-lista sħiħa li jsibuha, u mbagħad f'dak il-punt aħna qed biss ħela ta 'ħin.
Mela jekk għandna lista magħżula u insibu l-nofs, aħna qed tmur biex iqabblu l-nofs
għall-element aħna qed infittxu.
Jekk huwa għoli wisq, allura nistgħu ninsew il-nofs tal-lemin
għaliex aħna nafu li jekk element tagħna huwa diġà għoli wisq
u kollox għad-dritt ta 'dan l-element huwa saħansitra ogħla,
allura ma kellniex bżonn li wieħed iħares hemm aktar.
Fejn min-naħa l-oħra, jekk l-element tagħna huwa baxx wisq,
nafu kollox ix-xellug ta 'dan l-element huwa wkoll ftit wisq,
għalhekk ma verament jagħmel sens li wieħed iħares hemm, lanqas.
Dan il-mod, ma 'kull pass u kull darba li aħna nħarsu lejn il-punt tan-nofs tal-lista,
aħna qed tmur biex tnaqqas il-problema tagħna fil nofs minħabba f'daqqa nafu
mazz sħiħ ta 'numri li ma jistgħux ikunu l-waħda aħna qed tfittex.
>> F'dan pseudocode dan se tfittex xi ħaġa bħal din,
u għaliex aħna qed qtugħ il-lista fil nofs kull wieħed ħin,
run jumps tagħna agħar każ time minn lineari sa logaritmika.
Hekk f'daqqa għandna log-in passi sabiex isibu element fil-lista.
Il-ħin tmexxija aħjar każ, għalkemm, għadu kostanti
għaliex issa, ejja biss jgħidu li l-element aħna qed infittxu huwa
dejjem l-nofs eżatt tal-lista oriġinali.
Allura nistgħu jikbru lista tagħna kemm kbar kif irridu, imma jekk l-element aħna qed tfittex huwa fil-nofs,
allura huwa biss se jqarrbuna 1 pass.
Allura hu għalhekk li aħna qed O (log n) u Ω (1) jew kostanti.
Ejja tmexxi effettivament tfittxija binarja fuq din il-lista.
Mela ejja ngħidu li aħna qed ifittxu għall-element 164.
L-ewwel ħaġa aħna se tagħmel hu li ssib l-punt fokali ta 'din lista.
Huwa biss hekk jiġri li l-punt fokali se jaqgħu bejn dawn in-numri 2,
hekk ejja biss jgħidu b'mod arbitrarju, kull darba li l-punt fokali taqa 'bejn 2 numri,
ejja biss tondi sa.
Aħna biss bżonn tagħmel ċert li nagħmlu dan kull pass tar-rotta.
Allura aħna qed tmur biex round up, u aħna qed tmur biex jgħidu li 161 huwa l-nofs tal-lista tagħna.
Allura 161 <164, u kull element għall-xellug tal 161
huwa wkoll <164, hekk aħna nafu li huwa mhux ser tgħinna fil-livelli kollha
biex tibda 'tfittex hawn fuq minħabba li l-element aħna qed tfittex ma jistax ikun hemm.
Allura dak li nistgħu nagħmlu huwa li nistgħu tinsieh li nofs tax-xellug sħiħ tal-lista,
u issa tikkunsidra biss mid-dritt ta 'l-onward 161.
>> Għalhekk għal darb'oħra, dan huwa l-punt fokali; ejja biss tondi sa.
Issa 175 hija kbira wisq.
Allura aħna nafu mhuwiex ser tgħinna tfittex hawn jew hawn,
sabiex inkunu nistgħu biss tarmi dan bogħod, u eventwalment aħna ser tolqot l-164.
Kwalunkwe mistoqsijiet dwar tfittxija binarja?
Ejja jimxu fuq minn tiftix permezz lista diġà magħżula
li fil-fatt tieħu lista ta 'numri fi kwalunkwe ordni
u jagħmlu dik il-lista f'ordni axxendenti.
L-algoritmu 1 ħarisna lejn kienet imsejħa tip bużżieqa.
U dan ikun aktar sempliċi ta 'l-algoritmi rajna.
Sort Bubble jgħid li meta xi elementi 2 ġewwa l-lista huma barra mill-post,
li jfisser li hemm numru akbar lejn ix-xellug ta 'numru iktar baxx,
allura aħna qed tmur biex tpartit lilhom, minħabba li tfisser li l-lista tkun
"Aktar magħżula" milli kienet qabel.
U aħna qed biss jmorru biex ikomplu dan il-proċess ġdid u għal darb'oħra u għal darb'oħra
sakemm eventwalment it-tip elementi ta 'bużżieqa li post korretta tagħhom u għandna lista magħżula.
>> Il-ħin run ta 'dan se tkun O (n ²). Għaliex?
Ukoll, minħabba li fl-agħar każ, aħna qed tmur biex tieħu kull element, u
aħna qed tmur biex jispiċċaw tqabbilha għal kull element ieħor fil-lista.
Iżda fil-każ aħjar, għandna lista diġà magħżula, l-sort bubble
biss se jmorru permezz darba, jgħidu "Nope. I ma tagħmel l-ebda swaps, hekk jien jsir."
Allura aħna għandna ħin aħjar każ tmexxija ta Ω (n).
Ejja run tip bużżieqa fuq lista.
Jew l-ewwel, ejja biss ħarsa lejn uħud pseudocode verament malajr.
Aħna rridu li ngħidu li rridu li jżommu rekord ta ', f'kull iterazzjoni tal-linja,
jżommu rekord ta 'jekk jew le aħna mibdula xi elementi.
Allura l-raġuni għal dan hija, aħna qed tmur biex tieqaf meta aħna ma biddlu xi elementi.
Allura fil-bidu ta 'linja tagħna aħna ma biddlu xejn, hekk aħna ser ngħidu li l-foloz.
Issa, aħna qed tmur biex jgħaddu l-lista u jqabblu l-element i f'dak l-element i + 1
u jekk huwa l-każ li jkun hemm numru akbar lejn ix-xellug ta 'numru iżgħar,
allura aħna qed biss jmorru li tpartit lilhom.
>> U allura aħna qed tmur biex niftakru li aħna biddlu element.
Dan ifisser li għandna bżonn li jgħaddu l-lista mill-inqas 1 aktar ħin
minħabba li l-kundizzjoni li aħna waqaf huwa meta l-lista kollha hija diġà magħżula,
jiġifieri aħna ma saru ebda tpartit.
Allura hu għalhekk li kundizzjoni tagħna stabbiliti hawn huwa "filwaqt li ċerti elementi jkunu ġew skambjati."
Allura issa ejja biss ħarsa lejn din taħdem fuq lista.
Għandi l-lista 5,0,1,6,4.
Sort Bubble se tibda fit-triq kollha lejn ix-xellug, u li għaddej biex iqabblu
l-elementi i, so 0 sa i + 1, li hija l-element 1.
Huwa ser ngħid, sew 5> 0, iżda issa dritt 5 huwa lejn ix-xellug,
hekk għandi bżonn biex tpartit l-5 u l-0.
Meta I tpartit lilhom, f'daqqa waħda niġi din il-lista differenti.
Issa 5> 1, hekk aħna qed tmur biex tpartit lilhom.
5 ma tkunx> 6, hekk aħna ma bżonn li tagħmel xejn hawn.
Iżda 6> 4, għalhekk għandna bżonn li tpartit.
Għal darb'oħra, għandna bżonn li jgħaddi mill-lista kollha biex eventwalment jiskopru
li dawn huma out of order; aħna tpartit minnhom,
u f'dan il-punt għandna bżonn li tgħaddi minn ġos-lista ħin 1 aktar
biex tiżgura li kollox huwa fl-ordni tagħha, u fuq din it-tip bużżieqa punt tkun spiċċat.
A algoritmu differenti għat-teħid xi elementi u l-għażla tagħhom huwa tip ta 'għażla.
L-idea wara tip għażla hija li aħna qed tmur biex jibnu porzjon magħżula tal-lista
1 element fi żmien.
>> U l-mod kif aħna qed tmur biex tagħmel dan huwa billi tibni l-segment tax-xellug tal-lista.
U bażikament, kull - fuq kull pass, aħna qed tmur biex tieħu l-element iżgħar fadlilna
li għadha ma ġietx magħżula għadhom, u aħna qed tmur biex jimxu fis dak is-segment magħżula.
Dan ifisser li għandna bżonn li kontinwament issib l-element mhux magħżul minimu
u imbagħad ħu l-element minimu u tpartit ma 'kwalunkwe
xellug-aktar element li ma jkunx magħżula.
Il-ħin run ta 'dan se tkun O (n ²) minħabba fl-agħar każ
għandna bżonn biex iqabblu kull element uniku għal kull element ieħor.
Għaliex aħna qed tgħid li jekk aħna tibda fil-nofs tax-xellug tal-lista, għandna bżonn
jgħaddu mill-segment dritt kollu li ssib l-element iżgħar.
U mbagħad, għal darb'oħra, għandna bżonn li jmorru fuq il-segment dritt kollu u
iżommu għaddejjin fuq li aktar u aktar u aktar mill-ġdid.
Li għaddej biex tkun ² n. Aħna ser bżonn għal ġewwa linja ta 'ieħor għall-loop
li jissuġġerixxi ² n.
Fil-ħsieb aħjar każ, ejja ngħidu aħna jagħtih lista diġà magħżula;
aħna fil-fatt ma tagħmel ebda aħjar minn ² n.
Minħabba sort għażla m'għandha l-ebda mod sabiex tkun taf dak
l-element minimu huwa biss il-wieħed I jiġri li tkun tħares lejn.
Hija xorta teħtieġ li tagħmel ċert li dan huwa effettivament il-minimu.
>> U l-unika mod biex ikun żgurat li huwa l-minimu, jużaw dan algoritmu,
hi li tħares lejn kull element wieħed ġdid.
Allura verament, jekk inti tagħti dan - jekk inti tagħti sort għażla lista diġà magħżula,
huwa mhux se jagħmlu xi aħjar minn jtuha lista li ma jintgħażlux s'issa.
Mill-mod, jekk jiġri li jkun il-każ li xi ħaġa O (xi ħaġa)
u l-omega 'xi ħaġa, nistgħu biss jgħidu aktar konċiż li huwa θ' xi ħaġa.
Mela jekk inti tara li toħroġ kullimkien, dan huwa dak li biss mezzi.
>> Jekk xi ħaġa hija theta 'n ², huwa kemm O kbir (n ²) u Ω (n ²).
So każ aħjar u l-agħar każ, ma tagħmel differenza,
l-algoritmu se tagħmel l-istess ħaġa kull darba.
Allura dan huwa dak pseudocode għall tip għażla tista 'look like.
Aħna bażikament se ngħid li nixtieq li ttenni fuq il-lista
mix-xellug għal-lemin, u fuq kull iterazzjoni tal-linja, jien ser jimxu
l-element minimu fis dan il-porzjon magħżula tal-lista.
U ladarba I jiċċaqalqu xi ħaġa hemmhekk, jien qatt bżonn tħares lejn dan l-element ġdid.
Minħabba malli I swap element fil lill-segment tax-xellug tal-lista, huwa magħżula
għaliex aħna qed tagħmel dak kollu f'ordni axxendenti bl-użu minimums.
Allura aħna qal, okay, aħna qed fil-pożizzjoni i, u għandna bżonn li nħarsu lejn l-elementi kollha
għad-dritt ta 'i sabiex isibu l-minimu.
Allura dan ifisser li rridu nħarsu mill i + 1 sat-tmiem tal-lista.
U issa, jekk l-element li aħna qed attwalment tħares lejn huwa inqas minn minimu tagħna s'issa,
li, ftakar, aħna qed jibdew l-off minimu li jkun biss
kwalunkwe element aħna qed bħalissa; jien ser jassumi li hija l-minimu.
Jekk I isibu element li huwa iżgħar minn dak, allura jien se ngħid, okay,
ukoll, I sabu minimu ġdid.
Jien ser tiftakar fejn dak il-minimu kien.
>> Allura issa, ladarba stajt marret permezz ta 'dak is-segment mhux magħżul id-dritt,
Nista 'ngħid jien ser tpartit l-element minimu bl-element li huwa fil-pożizzjoni i.
Li għaddej biex jibnu lista tiegħi, porzjon magħżula tiegħi tal-lista mix-xellug għal-lemin,
u aħna qatt ma bżonn li nħarsu lejn element ġdid ladarba huwa f'dak il-porzjon.
Ladarba konna biddlu dan.
Mela ejja jimxu tip għażla fuq din il-lista.
L-element blu hawn se tkun l-i, u l-element aħmar se tkun l-element minimu.
So i tibda fit-triq kollha lejn ix-xellug tal-lista, hekk fil-5.
Issa għandna bżonn issib l-element mhux magħżul minimu.
Allura aħna ngħidu 0 <5, 0 ikun minimu ġdid tiegħi.
>> Imma ma nistax tieqaf hemm, għaliex anki jekk nistgħu jirrikonoxxu li 0 hija l-iżgħar,
għandna bżonn biex imexxu permezz ta 'kull element ieħor tal-lista biex jiġi żgurat.
Allura 1 hija akbar, 6 hija akbar, 4 huwa akbar.
Dan ifisser li wara li tħares lejn kollha ta 'dawn l-elementi, stajt determinat 0 hija l-iżgħar.
Allura jien ser tpartit l-5 u l-0.
Ladarba I tpartit li, jien ser tikseb lista ġdida, u naf li jien qatt ma jeħtieġ li tħares lejn dak 0 ġdid
minħabba li ladarba stajt biddlu dan, stajt magħżula hija u aħna qed isir.
Issa huwa biss hekk jiġri li l-element blu hija għal darb'oħra l-5,
u għandna bżonn li nħarsu lejn il-1, is-6 u l-4 ta 'jiddetermina li 1
huwa l-element minimu iżgħar, hekk aħna ser tpartit l-1 u l-5.
Għal darb'oħra, għandna bżonn li nħarsu lejn - jikkomparaw il-5 għall-6 u l-4,
u aħna qed tmur biex tpartit l-4 u l-5, u finalment, iqabblu
dawn in-numri 2 u tpartit lilhom sakemm aħna nikseb lista magħżula tagħna.
Kwalunkwe mistoqsijiet dwar it-tip ta 'għażla?
Okay. Ejja jimxu għas-suġġett aħħar hawnhekk, u li hija recursion.
>> Recursion, ftakar, huwa dan il-ħaġa meta verament fejn funzjoni
ripetutament jitlob huwa stess.
Allura fil f'xi punt, filwaqt li fuction tagħna huwa ripetutament ssejjaħ lilha nnifisha,
jeħtieġ li jkun hemm xi punt li fih aħna niefqu milli nsejħulha nfusna.
Għaliex jekk aħna ma tagħmel dan, allura aħna qed biss se jkomplu jagħmlu dan għal dejjem,
u l-programm tagħna huwa biss mhux se tintemm.
Aħna nsejħu din il-kundizzjoni tal-każ bażi.
U l-każ bażiku jgħid, aktar milli ssejjaħ funzjoni mill-ġdid,
Jien biss ser jirritorna xi valur.
Allura ladarba aħna ve lura valur, konna waqfet ssejjaħ lilna nfusna,
u l-bqija tas-sejħiet li ħadna s'issa jistgħu wkoll jirritornaw.
L-oppost tax-xenarju bażi huwa l-każ rikursivi.
U dan huwa meta irridu li jagħmlu sejħa oħra għall-funzjoni li aħna qed attwalment pulzieri
U aħna probabbilment, għalkemm mhux dejjem, tkun trid tuża argumenti differenti.
>> Allura jekk aħna għandhom funzjoni msejħa f, uf biss imsejħa tieħu 1 argument,
u aħna biss iżommu ssejjaħ f (1), f (1), f (1), u huwa biss hekk jiġri li
l-argument 1 taqa 'fil-każ rikursivi, aħna qed għadhom qatt ma ser tieqaf.
Anki jekk aħna għandna każ ta 'bażi, għandna bżonn li jiġi żgurat li eventwalment aħna qed tmur biex hit li każ bażi.
Aħna ma biss iżommu joqogħdu f'dan il-każ rikursivi.
Ġeneralment, meta aħna sejħa lilna nfusna, aħna qed probabbilment se jkollhom argument differenti kull darba.
Hawnhekk huwa funzjoni rikursivi verament sempliċi.
Allura dan se kkalkulata l-fattorjali ta 'numru.
Up top hawnhekk għandna każ bażi tagħna.
Fil-każ li n ≤ 1, aħna mhux se sejħa fattorjali mill-ġdid.
Aħna ser tieqaf; aħna qed biss jmorru lura xi valur.
Jekk dan mhux veru, allura aħna qed tmur biex jolqtu każ rikursivi tagħna.
Avviż hawnhekk li aħna qed mhux biss ssejjaħ fattorjali (n), minħabba li ma tkunx utli ħafna.
Aħna ser sejħa fattorjali 'xi ħaġa oħra.
>> U għalhekk tistgħu taraw, eventwalment jekk aħna jgħaddu xi ħaġa fattorjali (5) jew,
aħna qed tmur biex sejħa fattorjali (4) u l-bqija, u eventwalment aħna qed tmur biex jolqtu din il-bażi.
Allura dan jidher tajjeb. Ejja naraw x'jiġri meta aħna tmexxi effettivament dan.
Dan huwa l-munzell, u ejja ngħidu li ewlieni huwa ser sejħa din il-funzjoni ma 'l-argument (4).
Allura ladarba fattorjali jara u = 4, fattorjali se sejħa nnifisha.
Issa, f'daqqa waħda, aħna għandna fattorjali (3).
Allura dawn il-funzjonijiet huma ser jibqgħu jikbru sakemm eventwalment aħna hit każ bażi tagħna.
Fuq dan il-punt, il-valur tar-ritorn ta 'dan huwa r-ritorn (nx il-valur tar-ritorn ta' dan),
il-valur tar-ritorn ta 'dan huwa nx il-valur tar-ritorn ta' dan.
Eventwalment għandna bżonn li taħbat xi numru.
Fil-quċċata hawn, ngħidu ritorn 1.
Dan ifisser li ladarba nerġgħu lura dak in-numru, nistgħu pop dan off-munzell.
Allura dan fattorjali (1) isir.
Meta 1 prospetti, dan fattorjali (1) prospetti, dan ritorn għal 1.
Il-valur tar-ritorn ta 'dan, ftakar, kien nx il-valur tar-ritorn ta' dan.
Allura f'daqqa waħda, dan Guy jaf li nixtieq li jirritornaw 2.
>> Mela ftakar, jirritorna valur ta 'dan huwa biss nx il-valur tar-ritorn up here.
Allura issa nistgħu ngħidu 3 x 2, u fl-aħħarnett, hawnhekk nistgħu ngħidu
dan huwa biss se jkun ta '4 x 3 x 2.
U ladarba dan prospetti, irridu jiksbu stabbiliti għal ġewwa numru sħiħ wieħed ta 'prinċipali.
Kwalunkwe mistoqsijiet dwar recursion?
Kull dritt. Allura hemm aktar ħin għall-mistoqsijiet fit-tmiem,
iżda issa Joseph se tkopri s-suġġetti li jifdal.
>> [Joseph Ong] Kull dritt. Allura issa li aħna ve tkellem dwar recursions,
ejja nitkellmu ftit dwar dak li jingħaqdu tip huwa.
Jingħaqdu tip huwa bażikament mod ieħor ta 'għażla lista ta' numri.
U kif jaħdem huwa, ma sort jingħaqdu ikollok lista, u dak li nagħmlu huwa
ngħidu, ejja maqsuma dan fis-2 nofsijiet.
Aħna ser imexxu 1 jingħaqdu tip ġdid fuq in-nofs tax-xellug,
allura aħna ser jimxu jingħaqdu tip fuq il-nofs tal-lemin,
u li jagħtina issa 2 nofsijiet li huma magħżula, u issa aħna qed tmur biex jgħaqqdu dawk nofsijiet flimkien.
Huwa daqsxejn diffiċli li wieħed jara mingħajr eżempju, hekk aħna ser jgħaddu l-movimenti u tara x'jiġri.
Allura inti tibda bil din il-lista, aħna qasmitha fis-2 nofsijiet.
We run jingħaqdu sort fuq in-nofs tax-xellug l-ewwel.
Allura dak l-nofs tax-xellug, u issa aħna imexxuhom permezz din il-lista mill-ġdid
li gets mgħoddija fis sort jingħaqdu, u allura aħna nħarsu, għal darb'oħra,
fuq in-naħa tax-xellug tal-lista u aħna run jingħaqdu tip fuqha.
Issa, aħna għonqna għal lista ta '2 numri,
u issa l-nofs tax-xellug hija biss 1 element twil, u ma nistgħux
maqsuma lista li biss 1 element fis-nofs, hekk aħna biss jgħidu, ladarba għandna 50,
li huwa biss 1 element, huwa diġà magħżula.
>> Ladarba aħna qed isir ma 'dan, nistgħu naraw li nistgħu
jimxu fuq il-nofs tal-lemin ta 'din il-lista,
u 3 huwa wkoll magħżula, u hekk issa li ż-żewġ nofsijiet tas din il-lista huma magħżula
nistgħu jingħaqdu dawn in-numri lura flimkien.
Allura aħna nħarsu lejn 50 u 3; 3 huwa iżgħar minn 50, għalhekk tmur fl-ewwel u mbagħad 50 taqa pulzieri
Issa, dan isir; immorru lura sa dik il-lista u sort huwa nofs tal-lemin.
42 huwa numru huwa stess, dan huwa diġà magħżula.
Allura issa nqabblu dawn 2 u 3 huwa iżgħar minn 42, b'tali mod li gets mqiegħda fl-ewwel,
issa 42 gets mqiegħda fi, u 50 gets tpoġġi pulzieri
Issa, li s magħżula, aħna tmur it-triq lura lejn il-wiċċ, 1337 u 15.
Ukoll, aħna issa nħarsu lejn in-nofs tax-xellug ta din il-lista; 1337 hija fiha nfisha hekk huwa magħżula u l-istess ma '15.
Allura issa aħna ngħaqqdu dawn in-numri 2 sa sort dik il-lista oriġinali, 15 <1337,
għalhekk tmur fl-ewwel, imbagħad tmur pulzieri 1337
U issa aħna magħżula żewġ nofsijiet tas-lista oriġinali top up.
U kollha għandna nagħmlu huwa jikkombinaw dawn.
Aħna nħarsu lejn l-ewwel 2 numri ta 'din il-lista, 3 <15, u għalhekk tmur fil-firxa tip 1.
15 <42, għalhekk tmur pulzieri Issa, 42 <1337, li tmur pulzieri
50 <1337, għalhekk tmur pulzieri U tinduna li aħna biss ħa 2 numri off ta 'din il-lista.
Allura aħna qed mhux biss jalterna bejn il-listi 2.
Aħna qed tfittex biss fil-bidu, u aħna qed tieħu l-element
li l-iżgħar u mbagħad it-tqegħid fis firxa tagħna.
Issa konna magħquda l-nofsijiet u aħna qed isir.
>> Kwalunkwe mistoqsijiet dwar jingħaqdu tip? Iva?
[Student] Jekk huwa qsim fi gruppi differenti, għaliex ma huma biss maqsuma darba
u inti għandek 3 u 2 fi grupp? [Bqija tad mhux intelliġibbli kwistjoni]
Ir-raġuni - sabiex il-kwistjoni hija, għaliex ma nistgħu biss jingħaqdu f'dak l-ewwel pass wara għandna minnhom?
Ir-raġuni li nistgħu nagħmlu dan, tibda fil-elementi tax-biċċa l-kbira taż-żewġ naħat,
u mbagħad ħu l-iżgħar waħda u poġġih fil, huwa li aħna nafu li dawn
listi individwali huma fl-ordnijiet magħżula.
Mela jekk jien tħares lejn l-elementi tax-biċċa l-kbira taż-żewġ nofsijiet,
Naf li qed tmur biex ikunu l-elementi iżgħar ta 'dawk il-listi.
So I tista 'tpoġġihom fil-tikek element iżgħar ta' din il-lista kbir.
Min-naħa l-oħra, jekk I ħarsa lejn dawn il-listi 2 fit-tieni livell hemmhekk,
50, 3, 42, 1337 u 15, dawn ma jkunux magħżula.
Mela jekk jien tħares lejn 50 u 1337, jien ser jitqiegħdu fis 50-lista tiegħi ewwel.
Iżda dan ma verament jagħmel sens, għax 3 hija l-element iżgħar minn dawk kollha.
Allura l-unika raġuni li nistgħu nagħmlu dan il-pass li jgħaqqad huwa minħabba listi tagħna huma diġà magħżula.
Liema hu għaliex għandna biex tikseb l isfel it-triq kollha lejn il-qiegħ
għaliex meta aħna għandna biss numru wieħed, inti taf li numru uniku
u fih innifsu huwa diġà lista magħżula.
>> Kwalunkwe mistoqsijiet? Nru?
Kumplessità? Ukoll, inti tista 'tara li f'kull pass hemm numri finali,
u nistgħu jaqsmu f'lista log 1/2 n darbiet,
li huwa fejn irridu jiksbu dan il-log x n n kumplessità.
U tkun taf ara l-każ aħjar għall tip jingħaqdu huwa n log n, u huwa biss hekk jiġri
li l-agħar każ, jew il Ω hemmhekk, huwa wkoll n log n.
Xi ħaġa li wieħed iżomm f'moħħu.
Nimxu fuq, ejja mur fuq xi fajl bażiku super I / O.
Jekk inti ħares lejn ġirja, inti ser ikollok avviż kellna xi tip ta 'sistema
fejn inti tista 'tikteb lil fajl log jekk inti taqra permezz tal-kodiċi.
Ejja naraw kif inti tista 'tagħmel dan.
Well, aħna għandna fprintf, li inti tista 'taħseb biss bħala printf,
iżda biss l-istampar għall-fajl minflok, u għalhekk il-f fil-bidu.
Din it-tip ta 'kodiċi up hawn, dak li tagħmel huwa, kif inti tista raw fil ġirja,
din tmur permezz ta 'stampar tiegħek firxa 2-dimensjonali out ringiela minn ringiela liema in-numri huma.
F'dan il-każ, printf prints lil terminal tiegħek jew nsejħu l-output standard ta 'taqsima.
>> U issa, f'dan il-każ, kollha għandna nagħmlu huwa tissostitwixxi printf ma fprintf,
għid liema fajl li inti tixtieq li jistampaw għal, u f'dan il-każ hija biss prints out biex dan il-fajl
minflok ta 'stampar dan jitwettaq għall-terminal tiegħek.
Ukoll, allura dak iqajjem il-mistoqsija: Fejn se nilħqu dan it-tip ta 'fajl minn, id-dritt?
Aħna għadda log fl għal dan fuction fprintf imma kellna l-ebda idea fejn ġew minn.
Ukoll, kmieni fil-kodiċi, dak li kellna kienet din blokki tal-kodiċi hawn fuq,
li bażikament tgħid li tiftaħ il-fajl sejħiet log.txt.
Dak li nagħmlu wara li għandna biex jagħmlu ċert li l-fajl huwa attwalment jinfetaħ b'suċċess.
Allura jista 'tfalli għal raġunijiet multipli, inti ma jkollhomx spazju biżżejjed fuq il-kompjuter tiegħek, per eżempju.
Allura huwa dejjem importanti qabel ma tagħmel xi ħidmiet mal-fajl
li aħna tiċċekkja jekk dan il-fajl nfetħet b'suċċess.
Allura dak li, li l-argument li fopen, ukoll, nistgħu tiftaħ fajl f'ħafna modi.
Dak li nistgħu nagħmlu huwa, nistgħu tgħaddiha w, li jfisser jwarrab il-fajl jekk meta toħroġ diġà,
Nistgħu jgħaddu minn a, li huma tehmeż l-aħħar tal-fajl minflok prevalenti dan,
jew nistgħu jispeċifikaw r, li jfisser, ejja tiftaħ il-fajl bħala read-only.
Allura jekk il-programm jipprova jagħmel xi bidliet għall-fajl,
Yell fil minnhom u ma ħallihom jagħmlu dan.
Fl-aħħarnett, ladarba aħna qed isir mal-fajl, magħmul tagħmel operazzjonijiet fuqu,
għandna bżonn li niżguraw li tagħlaq il-fajl.
U hekk fl-aħħar tal-programm tiegħek, inti ser jgħaddu lilhom mill-ġdid
dan il-fajl li inti miftuħa, u biss mill-qrib magħha.
Allura dan huwa xi ħaġa importanti li inti għandek tagħmel ċert li inti tagħmel.
So ftakar li inti tista 'tiftaħ fajl, allura inti tista' tikteb lill-fajl,
jagħmlu l-operazzjonijiet fil-fajl, iżda imbagħad inti għandek li tagħlaq il-fajl fl-aħħar.
>> Kwalunkwe mistoqsijiet dwar fajl bażiku I / O? Iva?
[Kwistjoni Student, mhux intelliġibbli]
Dritt hawn. Il-kwistjoni hija, fejn ma dan il-fajl log.txt jidhru?
Ukoll, jekk inti biss tagħtiha log.txt, toħloq fil-direttorju istess bħall-eżekutibbli.
Mela jekk you're - >> [domanda Student, mhux intelliġibbli]
Iva. Fl-istess folder, jew fl-istess direttorju, kif inti sejħa hija.
Issa, memorja munzell, u borġ.
Allura kif huwa memorja stipulati fil-kompjuter?
Ukoll, inti tista 'timmaġina memorja bħala tip ta' din il-blokka hawn.
U fil-memorja aħna għandna dak li jissejjaħ il-borġ staġnati hemmhekk, u l-munzell li l stabbiliti hemmhekk.
U l-borġ tikber isfel u l-munzell tikber fuq.
Allura kif Tommy imsemmi - oh, ukoll, u għandna dawn is-segmenti l-oħra 4 li jiena ser tingħata fit-tieni -
Kif Tommy qal qabel, inti taf kif il-funzjonijiet tiegħu jsejħu lilhom infushom u sejħa lil xulxin?
Huma jibnu dan it-tip ta 'qafas munzell.
Ukoll, jekk sejħiet ewlenin foo, foo gets mqiegħda fis-munzell.
Foo jitlob bar, bar jiksbu s tpoġġi fuq il-munzell, u li gets mqiegħda fis-munzell wara.
U kif huma jirritornaw, huma kull nikseb jittieħdu barra l-munzell.
What do kull wieħed minn dawn il-lokalitajiet u l-memorja istiva?
Ukoll, il-quċċata, li hija l-segment test, fih il-programm innifsu.
Allura l-kodiċi tal-magna, li hemm, ladarba inti tiġbor program tiegħek.
Sussegwentement, kull initialized varjabbli globali.
>> Allura għandek varjabbli globali fil-programm tiegħek, u inti tgħidli simili, a 5 =,
li gets mqiegħda f'dak is-segment, u d-dritt taħt li,
Għandek xi data globali uninitialized, li huwa biss int a,
imma inti ma jgħidu huwa ugwali għal xejn.
Jirrealizzaw li dawn huma varjabbli globali, allura jkunu barra ta 'prinċipali.
Allura dan ifisser kwalunkwe varjabbli globali li huma ddikjarati iżda mhumiex initialized.
Allura x'hemm fil-borġ? Memorja allokati permezz malloc, li aħna ser tingħata fil-ftit.
U fl-aħħarnett, bil-munzell għandek xi varjazzjonijiet lokali
u kull funzjonijiet inti tista 'sejħa fi kwalunkwe ta' parametri tagħhom.
L-aħħar ħaġa, inti ma verament għandek tkun taf liema l-varjabbli ambjent jagħmlu,
imma kull darba li inti tmexxi programm, hemm xi ħaġa assoċjata, bħal
dan huwa l-username tal-persuna li mexxa l-programm.
U li għaddej biex tkun tip ta 'fil-qiegħ.
F'termini ta 'indirizzi tal-memorja, li huma valuri hexadeċimali,
il-valuri fil-bidu ta 'fuq ta' 0, u dawn imorru-triq kollha sal-qiegħ.
F'dan il-każ, jekk int fuq is-sistema 32-bit,
l-indirizz fil-qiegħ se tkun 0x, segwit minn af, għaliex dan huwa 32 bits,
li huwa 8 bytes, u f'dan il-każ 8 bytes jikkorrispondi għal numri hexadecimal 8.
Allura stabbiliti hawn int se jkollhom, bħal, 0xffffff, u up hemm int ser ikollhom 0.
Allura x'inhuma pointers? Xi wħud minnkom jista 'ma jkollhomx koperti dan fis-sezzjoni qabel.
imma aħna ma jmorru fuq fil lecture, so a pointer huwa biss tip ta 'data
li ħwienet, minflok ta 'xi tip ta' valur simili 50, huwa jaħżen l-indirizz ta 'xi post fil-memorja.
Bħal li l-memorja [mhux intelliġibbli].
Allura f'dan il-każ, dak li għandna hija, għandna pointer għal integer jew * int,
u fiha dan l-indirizz hexadeċimali ta 0xDEADBEEF.
>> Allura dak li għandna huwa, issa, dan il-punti pointer f'xi post fil-memorja,
u li jinsab biss, il-valur 50 huwa f'dan il-post tal-memorja.
Fuq xi sistemi 32-bit, fuq is-sistemi kollha 32-bit, pointers jieħdu bits 32 jew 4 bytes.
Iżda, per eżempju, fuq sistema 64-bit, pointers huma 64 bits.
Allura li xi ħaġa tkun taf tixtieq li wieħed iżomm f'moħħu.
Allura fuq sistema end-bit, pointer huwa bits tmiem twil.
Pointers huma tip ta 'diffiċli li jiddiġerixxu mingħajr affarijiet żejda,
hekk ejja jmorru permezz ta 'eżempju ta' allokazzjoni memorja dinamika.
Liema allokazzjoni memorja dinamika ma għalik, jew dak li nsejħu malloc,
ihallik talloka xi tip ta 'data barra tas-sett.
Allura dan huwa tip ta 'data aktar permanenti għat-tul tal-programm.
Għaliex kif inti taf, jekk inti tiddikjara x ġewwa ta 'funzjoni, u li prospetti funzjoni,
inti m'għadx għandhom aċċess għad-data li kienet maħżuna x.
Liema indikaturi ejjew nagħmlu huwa li jgħidilna żżomm il-valuri tal-memorja jew maħżen
f'segment differenti ta 'memorja, jiġifieri l-borġ.
Issa ladarba nerġgħu lura mill-funzjoni, sakemm għandna pointer
li dak il-post fil-memorja, allura dak li nistgħu nagħmlu huwa li nistgħu biss ħarsa lejn il-valuri hemmhekk.
Ejja nħarsu lejn eżempju: Dan huwa tqassim memorja tagħna mill-ġdid.
U aħna għandna din il-funzjoni, prinċipali.
Dak li dan huwa - okay, tant sempliċi, id-dritt -? Int x = 5, li jinsab biss varjabbli fuq il-munzell fl prinċipali.
>> Min-naħa l-oħra, issa aħna tiddikjara pointer li jitlob l-giveMeThreeInts funzjoni.
U hekk issa immorru fis din il-funzjoni u noħolqu qafas munzell ġdid għaliha.
Madankollu, f'dan il-qafas munzell, aħna niddikjaraw int * temperatura,
li mallocs 3 interi għalina.
Allura daqs ta 'int se tagħtina kemm bytes dan int huwa,
u malloc tagħtina dak bytes ħafna ta 'spazju fuq il-borġ.
Allura f'dan il-każ, ħloqna spazju biżżejjed għal 3 interi,
u l-borġ huwa mod up hemm, u huwa għalhekk li stajt magħmula lilha ogħla sa.
Ladarba aħna qed isir, aħna terga 'lura up hawn, inti għandek bżonn biss 3 ints lura,
u huwa u jirritorna l-indirizz, f'dan il-każ aktar minn fejn dik memorja huwa.
U aħna waqqafna pointer = swiċċ, u up hemm aħna għandna biss ieħor pointer.
Imma dak li prospetti funzjoni hija f'munzelli hawn u tisparixxi.
Allura temperatura tisparixxi, iżda aħna xorta jżomm l-indirizz ta 'fejn
dawk interi 3 huma ġewwa tal mains.
Allura f'dan is-sett, il-pointers huma scoped lokalment għall-qafas f'munzelli,
iżda l-memorja li għaliha jirreferu hija fil-borġ.
>> Does li jagħmel sens?
[Student] Tista 'tirrepeti dak? >> [Joseph] Iva.
Mela jekk immur lura ftit ftit, tara allokat temperatura li
xi memorja fuq il-borġ up hemm.
Allura meta din il-funzjoni, giveMeThreeInts prospetti, dan munzell hawn se jisparixxu.
U magħha xi waħda mill-varjabbli, f'dan il-każ, dan il-werrej li kien allokat fil-qafas f'munzelli.
Li ser jisparixxu, iżda peress li aħna lura temperatura
u aħna waqqafna pointer = temperatura, pointer s issa se punt l-memorja istess post bħala temperatura kienet.
Allura issa, anke jekk aħna jitilfu temperatura, li pointer lokali,
aħna xorta jżommu l-indirizz tal-memorja ta 'dak li kien li tipponta lejn ġewwa ta' dak werrej varjabbli.
Mistoqsijiet? Dan jista 'jkun it-tip ta' suġġett konfuża jekk int ma marret fuqha fit-taqsima.
Nistgħu, TF tiegħek definittivament se jmorru fuqha u ta 'kors nistgħu twieġeb mistoqsijiet
fl-aħħar tas-sessjoni ta 'reviżjoni għal dan.
Iżda dan huwa tip ta 'suġġett kumpless, u jien aktar eżempji li ser juru up
li se jgħinu biex jiċċaraw liema indikaturi fil-fatt huma.
>> F'dan il-każ, pointers huma ekwivalenti għal arrays,
hekk nista 'biss użu dan il-werrej bħala l-istess ħaġa bħat firxa int.
Allura jien indiċjar fis 0, u jinbidlu l-ewwel numru sħiħ għall-1,
jinbidlu l-eqreb numru sħiħ 2 għal 2, u l-eqreb numru sħiħ 3 sa 3.
Allura aktar fuq pointers. Ukoll, recall Binky.
F'dan il-każ konna allokati pointer, jew aħna iddikjarat pointer,
iżda inizjalment, meta I biss iddikjarat pointer, mhuwiex tipponta lejn kullimkien fil-memorja.
Huwa biss il-valuri taż-żibel ġewwa ta 'dan.
Allura għandi l-ebda idea fejn dan il-werrej hija li tipponta lejn.
Hija għandha l-indirizz li huwa biss mimlija bl '0 u għal 1 fejn kien inizjalment iddikjarat.
I ma tistax tagħmel xejn ma 'dan sal I call malloc fuqha
u mbagħad tagħti me ftit spazju fuq il-borġ fejn I tista 'tpoġġi valuri ġewwa.
Imbagħad għal darb'oħra, I do not know x'hemm ġewwa ta 'dan il-memorja.
Allura l-ewwel ħaġa li nagħmel huwa li jiċċekkja jekk is-sistema kellha memorja biżżejjed
li tagħti me lura 1 numru sħiħ fl-ewwel post, u huwa għalhekk li jien tagħmel dan check.
Jekk pointer huwa null, li jfisser li ma kellhiex biżżejjed spazju jew xi żball ieħor seħħet,
so I għandhom ħruġ minn programm tiegħi.
Iżda jekk hija għamlet tirnexxi, issa nista 'nuża li werrej
u liema pointer * ma huwa isegwi fejn l-indirizz ikun
ta 'fejn dan il-valur hu, u dan jagħtih ugwali għal 1.
Allura hawn fuq, aħna qed iċċekkjar jekk din memorja jeżistu.
>> Ladarba inti taf li jeżisti, inti tista 'tpoġġi fis dan
liema valur inti tixtieq li jitqiegħed fis dan, f'dan il-każ 1.
Ladarba aħna qed isir ma 'dan, inti għandek bżonn biex ħielsa li werrej
għaliex għandna bżonn li terġa 'lura għas-sistema li l-memorja li inti mitlub fl-ewwel post.
Minħabba li l-kompjuter ma jkunx jaf meta aħna qed isir magħha.
F'dan il-każ aħna qed espliċitament javżak dan, okay, aħna qed isir ma 'dak tal-memorja.
Jekk xi proċess ieħor jeħtieġ dan, xi programm ieħor jeħtieġ dan, tħossok liberu li jimxi 'l quddiem u teħodha.
Dak li nistgħu wkoll nagħmlu huwa li nistgħu biss jiksbu l-indirizz ta 'varjabbli lokali fuq is-sett.
X Allura int tkun ġewwa l-qafas f'munzelli ta prinċipali.
U meta nużaw din ampersand, dan u l-operatur, dak li tagħmel huwa
hija tieħu x, u x huwa biss xi data fil-memorja, iżda għandha l-indirizz.
Huwa jinsab x'imkien. Allura billi ssejjaħ & x, dak li dan ma huwa jagħtina l-indirizz ta 'x.
Billi tagħmel dan, aħna qed jagħmlu punt pointer lejn fejn x hija fil-memorja.
Issa aħna biss ma xi ħaġa simili * x, aħna qed tmur biex tikseb 5 lura.
L-istilla huwa msejjaħ dereferencing dan.
Inti ssegwi l-indirizz u jkollok l-valur ta 'dan maħżun hemmhekk.
>> Kwalunkwe mistoqsijiet? Iva?
[Student] Jekk inti ma tagħmel il-ħaġa 3-ponta, ma xorta tiġbor?
Iva. Jekk inti ma tagħmel il-ħaġa 3-pointer, huwa għadu għaddej biex jikkompila,
imma jien ser jurik dak li jiġri fit-tieni, u mingħajr ma jsir dan,
dan huwa dak li nsejħu nixxija memorja. Int mhux li tagħti s-sistema
back-memorja tiegħu, dan wara filwaqt li l-programm se jakkumulaw
memorja li mhuwiex bl-użu, u xejn jista 'jużah.
Jekk inti stajt qatt rat Firefox ma 1,500,000 kilobytes fuq il-kompjuter tiegħek,
fil-maniġer tal-kompiti, dan huwa dak li għaddej.
Inti għandek nixxija memorja fil-programm li dawn mhux qed tqandil.
Allura kif ma pointer xogħol aritmetika?
Ukoll, aritmetika pointer huwa tip ta 'indiċjar simili fil-firxa.
F'dan il-każ, għandi pointer, u dak li nagħmel huwa nagħmel punt pointer għall-ewwel element
ta 'dan l-firxa ta' numri interi 3 li stajt allokati.
Allura issa dak I do, pointer istilla ftit bidliet l-ewwel element fil-lista.
Star pointer 1 punti minn hawn.
Allura pointer huwa fuq hawn, pointer +1 huwa minn hawn, pointer 2 huwa fuq hawn.
>> Hekk biss żżid 1 huwa l-istess ħaġa bħat jimxu tul dan array.
Dak li nagħmlu huwa, meta nagħmlu pointer 1 ikollok l-indirizz hawn fuq,
u sabiex jiksbu il-valur fil hawn, inti tpoġġi stilla fil mill-espressjoni sħiħa
li dereference dan.
Għalhekk, f'dan il-każ, jien iffissar tal-post ewwel f'dan array għal 1,
lokazzjoni 2 għal 2, u l-post 3 sa 3.
Imbagħad dak li qed nagħmel hawn fuq huwa jien istampar pointer tagħna +1,
li biss tagħti me 2.
Issa jien inkrementazzjoni pointer, hekk pointer ugwali pointer +1,
li timxi 'l quddiem.
U għalhekk issa jekk I jistampa pointer 1, pointer 1 issa hija 3,
li f'dan il-każ tistampa 3.
U sabiex xi ħaġa ħielsa, il-pointer li I tagħtiha
għandha tkun tipponta fil-bidu ta 'l-array li jiena marret lura mill malloc.
Għalhekk, f'dan il-każ, jekk kienu I li sejħa 3 dritt hawn, dan ma jkunx id-dritt,
għaliex dan huwa fin-nofs tal-firxa.
Għandi biex naqqas biex jiksbu l-post oriġinali
il-post 1 inizjali qabel I jista 'b'xejn dan.
Allura, hawn huwa eżempju aktar involuti.
F'dan il-każ, aħna qed jalloka 7 karattri firxa karattru.
>> U f'dan il-każ dak li aħna qed tagħmel huwa li aħna qed looping fuq l-ewwel 6 minnhom,
u aħna qed jistabbilixxu lilhom sa Z.
Għalhekk, għal INT i = 0, i> 6, i + +,
Allura, pointer + i se biss tagħtina, f'dan il-każ,
pointer, pointer 1, pointer 2, 3 pointer, u hekk u ibqa 'sejjer hekk fil-linja.
Dak li għaddej biex tagħmel huwa jiġrilha dak l-indirizz, dereferences huwa li jiksbu l-valur,
u l-bidliet li valur lil Z.
Imbagħad fl-aħħar ftakar li dan huwa string, id-dritt?
Kollha kordi għandhom jintemmu mad-karattru null jtemm.
Allura, dak li nagħmel huwa pointer 6 nressaq il-karattru terminatur null pulzieri
U issa dak li jien bażikament jagħmlu minn hawn qed timplimenta printf għal string, id-dritt?
>> Allura, meta ma printf issa meta huwa laħaq it-tmiem ta 'sekwenza?
Meta hits-karattru null jtemm.
Għalhekk, f'dan il-każ, il-punti oriġinali tiegħi pointer għall-bidu ta 'din array.
I jistampaw l-ewwel karattru barra. I jġorrhom aktar minn.
I jistampa dan il-karattru barra. I jġorrhom fuq.
U jien iżommu tagħmel dan sal I jilħqu t-tmiem.
U issa l-pointer * tmiem se dereference dan u jiksbu l-karattru null jtemm lura.
U hekk loop filwaqt tiegħi runs biss meta dak il-valur ma jkunx il-karattru null jtemm.
Allura, issa I ħruġ minn din il-linja.
U hekk jekk I naqqas 6 minn dan il-werrej,
Mmur lura-triq kollha lejn il-bidu.
Ftakar, jien tagħmel dan minħabba I ikollhom imorru għall-bidu sabiex ħielsa minnha.
>> Allura, naf li kien ħafna. Hemm xi mistoqsijiet?
Jekk jogħġbok, iva?
[Mhux intelliġibbli kwistjoni Student]
Tista 'tgħid li l-louder? Jiddispjacini.
[Student] Fuq il-pjastra aħħar dritt qabel ma jinħelsu l-pointer,
fejn kienu inti fil-fatt jinbidlu l-valur tal-pointer?
[Joseph] Allura, dritt hawn. >> [Student] Oh, okay.
[Joseph] So, I jkollhom pointer minus minus, id-dritt,
li timxi il-ħaġa lura waħda, u mbagħad I ħielsa it-
minħabba dan il-werrej għandu jiġi nnutat li l-bidu ta 'l-array.
[Student] Iżda dan ma jkunx meħtieġ kien waqaft wara dik il-linja.
[Joseph] Mela, jekk I kienet waqfet wara dan, din tkun ikkunsidrata bħala telf tal-memorja,
minħabba I ma run-ħielsa.
[Student] I [mhux intelliġibbli] wara l-ewwel tliet linji fejn kellek pointer 1 [mhux intelliġibbli].
[Joseph] Uh-huh. Allura, x'inhu l-kwistjoni hemmhekk?
Jiddispjacini. No, no. Mur, mur, jekk jogħġbok.
[Student] Għalhekk, int ma jinbidlu l-valur tal-pointers.
Inti ma kienx ikollha tagħmel pointer minus minus.
[Joseph] Iva, eżattament.
Allura, meta I do pointer 1 u 2 pointer,
Jien ma nagħmilx pointer ugwali pointer +1.
Għalhekk, il-pointer biss jibqa tipponta fil-bidu ta 'l-array.
Huwa biss meta I do plus plus li tistabbilixxi l-valur lura ġewwa l-pointer,
li hija effettivament jiċċaqlaq dan flimkien.
Kull dritt.
Mistoqsijiet Aktar?
>> Għal darb'oħra, jekk dan huwa tip ta 'kbira, dan se jkun kopert f'sessjoni.
Staqsi sħabi tagħlim tiegħek dwar dan, u aħna tista 'twieġeb mistoqsijiet fl-aħħar.
U normalment aħna ma tixtieq tagħmel dan ħaġa nieqes.
Dan għandu jirrikjedi lili iżżomm rekord ta 'kemm stajt kkumpensati fil-firxa.
Għalhekk, b'mod ġenerali, dan huwa biss biex jispjegaw kif jaħdem aritmetika pointer.
Imma dak li aħna normalment tixtieq tagħmel hu li aħna nixtiequ li joħolqu kopja ta 'l-werrej,
u mbagħad aħna ser tuża dik il-kopja meta aħna qed jiċċaqalqu madwar fil-sekwenza.
Għalhekk, f'dawn il-każijiet li tuża l-kopja li jistampaw il-sekwenza sħiħa,
iżda aħna ma jkollhom jagħmlu bħal pointer minus 6 jew iżżomm rekord ta 'kemm aħna mċaqalqa f'dan,
biss għaliex aħna nafu li l-punt oriġinali tagħna għadu indikat il-bidu tal-lista
u dak kollu li aħna mibdula kienet din il-kopja.
Għalhekk, b'mod ġenerali, tbiddel kopji ta 'pointer oriġinali tiegħek.
Tippruvax sort ta 'prodotti simili - don' t tbiddel kopji oriġinali.
Jippruvaw jibdlu kopji biss tad oriġinali tiegħek.
Allura, tinnota meta aħna jgħaddu l-sekwenza fis printf
inti ma għandekx li jitqiegħed stilla quddiem ta 'dan bħal għamilna ma' l-dereferences-oħra, id-dritt?
Għalhekk, jekk inti jistampa l-i kollu% sekwenza jistenna huwa indirizz,
u f'dan il-każ pointer jew f'dan il-każ bħal firxa ta 'karattri.
>> Karattri, char * i, u arrays huma l-istess ħaġa.
Pointer hija li karattri, u arrays karattru huma l-istess ħaġa.
U għalhekk, kollha għandna nagħmlu hu jgħaddu pointer.
Aħna ma jkollhom jgħaddu bl-istess pointer * jew xi ħaġa bħal dik.
Allura, arrays u indikaturi huma l-istess ħaġa.
Meta inti qed tagħmel xi ħaġa bħal x [y] minn hawn għal firxa,
dak li qed jagħmel taħt il-barnuża huwa huwa qal, okay, huwa firxa karattru,
hekk huwa pointer.
U hekk x huma l-istess ħaġa,
u għalhekk dak li ma hu li żżid y għal x,
li huwa l-istess ħaġa bħat timxi 'l quddiem fil-memorja li ħafna.
U issa x + y tagħtina xi tip ta 'indirizz,
u aħna dereference-indirizz jew isegwu l-vleġġa
sa fejn dak il-post fil-memorja huwa u aħna jiksbu l-valur minn dak il-post fil-memorja.
Għalhekk, hekk dawn iż-żewġ huma eżattament l-istess ħaġa.
Huwa biss zokkor sintattiku.
Huma jagħmlu l-istess ħaġa. Huma qed biss syntactics differenti għal xulxin.
>> Allura, dak li tista 'tmur ħażin ma pointers? Bħal, ħafna. Okay. Allura, affarijiet ħżiena.
Xi affarijiet ħżiena li tista 'tagħmel ma iċċekkjar jekk is-sejħa malloc tiegħek prospetti nulli, id-dritt?
F'dan il-każ, jien tistaqsi s-sistema li tagħti me - x'inhu dak in-numru?
Bħal 2000000000 darbiet 4, minħabba d-daqs ta 'numru sħiħ huwa ta' 4 bytes.
Jien tistaqsi lilha għall like 8000000000 bytes.
Of course kompjuter tiegħi mhux se tkun tista 'tagħti me li lura memorja ħafna.
U aħna ma tivverifika jekk dan huwa null, hekk meta aħna tipprova dereference dan matul hemm -
isegwu l-vleġġa sa fejn għaddej biex - aħna ma jkollhomx dak memorja.
Dan hu dak li nsejħu dereferencing pointer null.
U dan essenzjalment kawżi li inti segfault.
Dan huwa wieħed mill-modi kif inti tista segfault.
Affarijiet ħżiena oħra li tista 'tagħmel - oh ukoll.
Dan kien dereferencing pointer null. Okay.
Affarijiet ħżiena oħra - ukoll, li jiffissaw li inti biss jitqiegħed verifika fil hemm
li l-kontrolli dwar jekk l-pointer huwa null
u l-ħruġ mill-programm jekk dan jiġri li malloc jirritorna pointer null.
Dik hija l-komiks xkcd. Nies jifhmu issa. Sort ta '.
>> Allura, memorja. U jien marru fuq dan.
Aħna qed titlob malloc fil-linja, imma kull darba li nsejħu malloc
aħna qed jitilfu rekord ta 'fejn dan il-werrej hija li tipponta lejn,
għaliex aħna qed clobbering dan.
Allura, is-sejħa inizjali għall malloc tagħti me memorja hawn fuq.
Pointer pointers tiegħi għal dan.
Issa, jien ma ħielsa hija, hekk issa I call malloc mill-ġdid.
Issa punti hawn fuq. Issa memorja tiegħi hija li tipponta hawn fuq.
Identifikazzjoni hawn fuq. Identifikazzjoni hawn fuq.
Imma stajt mitlufa mogħdija ta 'l-indirizzi ta l-memorja hawn fuq li jiena allokati.
U hekk issa I ma jkollhom ebda referenza għalihom jibqgħalu.
So, I ma jista 'b'xejn minnhom barra ta' dan loop.
U hekk sabiex tiffissa xi ħaġa bħal din,
jekk tinsa memorja ħielsa u ikollok dan nixxija memorja,
Inti għandek biex ħielsa l-memorja ġewwa ta 'dan loop darba qed isir magħha.
Ukoll, dan huwa dak li jiġri. Naf lottijiet ta 'inti mibegħda dan.
Imma issa -! Yay Ikollok bħall 44000 kilobytes.
Allura, inti liberu li fl-aħħar tal-linja,
u li għaddej biex sempliċiment ħielsa l-memorja kull darba.
Essenzjalment, il-programm tiegħek ma jkollux telf tal-memorja aktar.
>> U issa xi ħaġa oħra li tista 'tagħmel huwa b'xejn xi memorja li inti stajt mitlub darbtejn.
F'dan il-każ, xi ħaġa malloc, int bdilt il-valur tagħha.
You ħielsa darba għaliex inti qal inti kienu jsir minnu.
Imma allura aħna meħlus mill-ġdid.
Din hija xi ħaġa li pretty bad.
Huwa mhux ser inizjalment segfault,
iżda wara filwaqt li dak li dan ma huwa d-doppju ħelsien dan corrupts istruttura borġ tiegħek,
u inti ser jitgħallmu ftit aktar dwar dan jekk inti tagħżel li tieħu klassi bħal CS61.
Iżda essenzjalment wara filwaqt kompjuter tiegħek se tikseb konfuż
dwar dak postijiet memorja huma fejn u fejn huwa maħżun -
fejn id-data hija maħżuna fil-memorja.
U hekk ħelsien pointer darbtejn hija ħaġa ħażina li inti ma trid tagħmel.
>> Affarijiet oħra li jistgħu imorru ħażin ma jkunx qiegħed juża sizeof.
Għalhekk, f'dan il-każ inti malloc 8 bytes,
u dak l-istess ħaġa bħala żewġ numri interi, id-dritt?
Allura, li perfettament sikur, imma huwa?
Ukoll, kif Lucas tkellem dwar l-arkitetturi differenti,
interi huma ta 'tulijiet differenti.
Għalhekk, fuq il-appliance li inti qed tuża, interi huma ta 'madwar 4 bytes,
iżda fuq xi sistema oħra li tista 'tkun 8 bytes jew jistgħu jkunu 16 bytes.
Għalhekk, jekk I biss jużaw dan in-numru hawn fuq,
dan il-programm jista 'jaħdem fuq il-appliance,
iżda mhux se talloka memorja biżżejjed fuq xi sistema oħra.
F'dan il-każ, dan huwa dak l-operatur sizeof huwa użat għall.
Meta nitolbu sizeof (int), dak li dan ma huwa
li jagħtina d-daqs ta 'numru sħiħ fuq is-sistema li l-programm qed taħdem.
Għalhekk, f'dan il-każ, sizeof (int) se jirritorna 4 dwar xi ħaġa bħal l-appliance,
u issa dan se 4 * 2, li huwa 8,
li huwa biss l-ammont ta 'spazju meħtieġ għal żewġ interi.
Fuq sistema differenti, jekk int huwa simili 16 bytes jew 8 bytes,
huwa biss se jirritornaw bytes biżżejjed biex taħżen dak l-ammont.
>> U fl-aħħarnett, structs.
Għalhekk, jekk inti riedu li jaħżen bord sudoku fil-memorja, kif jista 'nagħmlu dan?
Għandek mnejn taħseb bħal varjabbli l-ewwel ħaġa,
varjabbli ta 'tieni ħaġa, varjabbli għall-ħaġa tielet,
varjabbli għall-ħaġa 4 - ħażina, id-dritt?
Għalhekk, wieħed titjib inti tista 'tagħmel fuq quċċata ta' dan huwa li tagħmel 9 x 9 array.
Li l-multa, imma dak jekk inti ridt li jassoċjaw affarijiet oħra mal-bord sudoku
bħal dak li l-diffikultà tal-bord huwa,
jew, per eżempju, dak li score tiegħek huwa, jew kemm ħin huwa meħud li inti issolvi dan il-bord?
Ukoll, x'tista 'tagħmel huwa inti tista' toħloq Struct.
Dak li jien bażikament tgħid huwa li jien tiddefinixxi din l-istruttura hawn fuq,
u jien tiddefinixxi bord sudoku li tikkonsisti minn bord li hija 9 × 9.
>> U dak li għandha jkollha indikazzjonijiet għall-isem tal-livell.
Hija għandha wkoll xuy, li huma l-koordinati ta 'fejn I am dritt issa.
Hija għandha wkoll ħin mgħoddi [mhux intelliġibbli], u għandha l-għadd totali ta 'jiċċaqlaq stajt inputted s'issa.
U hekk f'dan il-każ, I tista 'grupp mazz sħiħ ta' data fis wieħed biss struttura
minflok li hija simili jtajru madwar bl-istess varjabbli differenti
li ma nistax verament jżommu rekord ta '.
U dan tikri us jkollhom biss sintassi sbieħ għall tip ta 'referenzar affarijiet differenti ġewwa ta' dan Struct.
I biss tista 'tagħmel board.board, u nieħu l-bord sudoku lura.
Board.level, I nikseb kif iebsa huwa.
Board.x u board.y agħtini l-koordinati ta 'fejn I jista' jkun fil-bord.
U hekk jien aċċess nsejħu l-oqsma fil-Struct.
Din tiddefinixxi sudokuBoard, li huwa tip li għandi.
U issa aħna qed hawn. I jkollhom varjabbli imsejjaħ "bord" ta 'sudokuBoard tip.
U hekk issa I tista 'aċċess l-oqsma kollha li jiffurmaw din l-istruttura hawn fuq.
>> Kwalunkwe mistoqsijiet dwar structs? Iva?
[Student] Għal int x, y, inti ddikjarat kemm fuq linja waħda? >> [Joseph] Uh-huh.
[Student] Għalhekk, tista 'biss tagħmel dan ma' kull wieħed minnhom?
Bħal fil x, y ħinijiet comma li total?
[Joseph] Iva, inti tista 'definittivament tagħmel dan, iżda r-raġuni nressaq xuy fuq l-istess linja -
u l-kwistjoni hija għaliex nistgħu biss tagħmel dan fuq l-istess linja?
Għaliex ma aħna biss jitqiegħed kollha ta 'dawn fuq il-linja istess
xu y huma relatati ma 'xulxin,
u dan huwa biss stylistically aktar korretta, f'ċertu sens,
għaliex dan huwa grupp żewġ affarijiet fl-istess linja
dik it-tip simili ta jirrelataw mal-istess ħaġa.
U jien biss maqsuma dawn apparti. Huwa biss ħaġa stil.
Hija funzjonalment mhijiex rilevanti.
Kwalunkwe mistoqsijiet oħra dwar structs?
Inti tista 'tiddefinixxi l-Pokdex ma' Struct.
A Pokémon għandha numru u għandu ittra, sid, tip.
U mbagħad jekk għandek firxa ta 'Pokémon, inti tista' tagħmel up a Pokdex, id-dritt?
Okay, berred. Allura, mistoqsijiet dwar structs. Dawk huma relatati ma structs.
>> Fl-aħħarnett, GDB. Xi jfisser GDB let you do? Hija ihallik debug program tiegħek.
U jekk int ma użati GDB, nixtieq rakkomandat jaraw il-qasir
u biss jmorru fuq hija GDB dak, kif inti jaħdmu magħha, kif inti tista 'tagħmel użu minnha,
u test fuq programm.
U hekk dak li GDB ihallik tagħmel huwa li tikri nieqaf-[mhux intelliġibbli] up program tiegħek
u linja prattiku.
Per eżempju, nixtieq li l-eżekuzzjoni nieqaf fuq bħal-linja 3 ta 'programm tiegħi,
u filwaqt li jien fuq linja 3 nista jistampa il-valuri kollha li qegħdin hemm.
U għalhekk dak li nsejħu bħal espressjonijiet fit f'linja
huwa nagħmlu sejħa dan tqegħid breakpoint fuq dik il-linja
u allura nistgħu jistampa l-varjabbli fil-qagħda tal-programm dak iż-żmien.
>> Nistgħu mbagħad minn hemm pass permezz tal-programm linja b'linja.
U allura nistgħu nħarsu lejn l-istat tal-munzell fil-ħin.
U għalhekk sabiex jużaw GDB, dak li nagħmlu hu li nsejħu clang fuq il-fajl C,
iżda aħna jkollu jgħaddihom l ggdb-bandiera.
U ladarba aħna qed isir ma 'li aħna biss run GDB fuq il-fajl output li tirriżulta.
U hekk ikollok xi massa bħal ta 'test bħal dan,
imma verament kull ma għandek tagħmel huwa tip fil-kmandi fil-bidu.
Break prinċipali tpoġġi breakpoint fuq prinċipali.
Lista 400 jelenka l-linji ta 'kodiċi ta' madwar linja 400.
U hekk f'dan il-każ tista 'biss ħarsa madwar u jgħidu, oh,
Irrid li jistabbilixxu breakpoint fuq linja 397, li hija din il-linja,
u mbagħad programm tiegħek isib dak il-pass u li għaddej biex jinkiser.
Huwa ser nieqaf hemmhekk, u inti tista 'jistampa, per eżempju, il-valur tal-baxx jew għoli.
U hekk hemm mazz ta 'kmandi għandek bżonn tkun taf,
u dan Wirja se jitla 'fuq il-websajt,
hekk jekk inti biss trid referenza dawn jew simili jqiegħdhom fuq folji iqarrqu tiegħek, tħossok liberu.
>> Kessaħ. Dan kien Quiz Reviżjoni 0, u aħna ser twaħħal madwar jekk għandek xi mistoqsijiet.
Kull dritt.
>> [Applause]
>> [CS50.TV]