[Powered by Google Translate] David J. Malan: Nu labi.
Tas ir CS50, un tas ir beigas divas nedēļas.
Ja jūs gaidīt, lai būtu izsalcis ap šo laiku rīt, zinu, ka mēs ejam
sasaukt kā nelielu grupu rīt, ceturtdien, 01:15.
Tur šis URL šeit, ja jūs vēlaties, lai RSVP.
Telpa ir ierobežota, tāpēc, lūdzu, piedod, ja veidlapa ir piepildīts ar laiku jums
aizpildīt šo veidlapu.
Vēl URL gan, ka varētu būt interesanti tas ir.
>> Tātad tikai par mēneša laikā, protams, ir būs pieejami
vēl plašāk izmantojot EDX, pa kuru ļaudis internetā būs
iespēja sekot līdzi, iesaistīties gaitā diezgan aktīvi, patiesībā.
Tie būs, izmantojot CS50 Appliance un CS50 diskutēt un lielākā daļa
dažādas programmatūras rīki, kas mums jau ir, izmantojot šo semestri.
Un viena no iniciatīvām mēs gribētu uzņemties kā eksperiments šogad
ir redzēt, cik daudz satura mēs varam tulkot citi runā un
rakstveida valodas.
Tātad, ja jūs varētu būt interese piedalīties šajā projektā, kuru laikā
mēs nodrošināsim angļu stenogrammas un subtitrus kurss s
lekcijas un šorti un semināri un sekcijas un tamlīdzīgi -
ja tu runā tekoši vai rakstīt tekoši kādu citu valodu, mēs varētu
patīk iesaistīties jums šajā projektā, kurā jūs ņemt uz vienu vai vairākiem
video, tulkojot tos valodu jūs zināt gluži labi.
Lai dotu jums sajūtu interfeisu, tur tas ir interneta lietotāja saskarne
ka mēs, izmantojot kas radīs būtībā UI kā šis.
Tas bija man māca daži Halloween atpakaļ.
Un labajā pusē tur melnā blakus šiem laika zīmogiem,
Jūs redzēsiet dažādas lietas, kas nāca no manas mutes, ka dienā.
Un tad zem tā, jūs varēsiet tulkot kādā citā valodā.
Ko tieši kartēšana ir starp, šajā gadījumā, angļu
un, teiksim, spāņu.
Tātad, tas ir tiešām ļoti lietotājam draudzīgs rīks.
Jūs varat attīt un ātri uz priekšu ļoti viegli ar tastatūras īsceļus.
Tātad, ja jūs vēlaties piedalīties šajā eksperimentā un ir jūsu vārdiem
redzējuši un lasa potenciāli tūkstošiem ļaudīm, kas tur, lūdzu, justies
brīvi piedalīties.
>> Tagad viens vārds par no pirmdienas kaķēns, citādi mēs esam nosūtīti pārlieku
biedējošu ziņu.
Vai saprast, ka darba laiks domāt un kā sekcijas liecina, ka
dizains protams, ir ļoti daudz, lai skolēni sadarbojas un
runājot strādāt problēmu kopas un problēmas kopā.
Un tiešām līnija vienkārši nāk uz leju, lai, atkal, darbs jūs galu galā
jāiesniedz būtu savu.
Un tā tas ir, pavisam godīgi - jo darba laika, tas ir pilnīgi normāli -
tas ir pilnīgi paredzams, pat - lai čatā ar dažiem
draugi blakus.
Ja viņš vai viņa cīnās ar kādu tēmu, un jūs, piemēram, ak, arī ļaujiet
man sniegt jums ieskatu kādu rindiņu kodu, kas man rakstīja.
Tas ir jauki.
Kas notiek.
Un tas ir ļoti daudz labvēlīga, es domāju, ar mācību procesā.
Ja līnija, atkal izpaužas šķērsoja ir, kad galva ir sava veida slīpi pāri
šeit pārāk daudz sekundes vai minūtēs, kas tiešām ir tikai
bijis atbloķēšana iespēja savu draugu.
Un, protams, kad lietas iegūt apmaiņa pa e-pastu un Dropbox un
līdzīgi, arī tur ir līnija.
Tātad ar visiem līdzekļiem, justies ērti un sajust aicināti tērzēt ar draugiem
un klasesbiedru par psets un vairāk.
Un tikai saprast, ka tas, ko jūs galu galā iesniegt patiešām ir
produkts no jūsu radīšanu un nevis kāds cits.
>> Tātad pašā vēnu cuddly radījumi, jūs varētu
zina par šo puisis šeit.
Tātad šis ir horrifically stilīgs filmu no gadus atpakaļ.
Kāds šeit redzējis Spaceballs?
Labi.
Tik labs skaits šeit.
Tātad šī ir mūsu lieliski akadēmiskā veids, kā ieviest šodien beidzot
jēdziens par kriptogrāfiju.
Un tā viena no domēna īpašas problēmas 2 PSET, kas stāsies
veic vēlu rīt naktī, ir nirt vērā pasaulē kriptogrāfija, kas
ir māksla šifrējot vai kodēšanas informāciju.
Un tas galu galā ir saistīts ar pasaules drošību.
>> Tagad drošību visvairāk mūs nāk kā diezgan ikdienišķa mehānismu.
Visi no mums ir lietotājvārdus un paroles.
Un visi no mums ir ļoti slikti lietotājvārdus un paroles, visticamāk.
Ja parole ir tāda pati uz vairākām vietnēm, kas, iespējams, nav
labākā ideja, jo mēs apspriestu uz semestra beigām.
Ja parole ir rakstīts uz līmlapas - nav joks - uz jūsu
monitors, ka arī ne vienmēr ir labākais dizains, bet diezgan izplatīta
parādība.
Un, ja jūs nelietojat kriptogrāfija, lai šifrētu paroles, tie ir
īpaši neaizsargāti.
Tātad, ja jūs domājat, ka jūs ir super gudrs, ņemot slēpto vārdu
dokumentēt kaut kur uz cietā diska, kas ir visas jūsu paroles, bet
tas mapē, ka neviens gatavojas meklēt, kas arī nav ļoti
drošs mehānisms.
Un tā, ko 2 PSET ieviesīs tas māksla kriptogrāfiju un
kodēšanas informācija, lai lietas, piemēram, paroles, ir
visi drošāku.
Lai motivētu šo ļoti reālās pasaules problēmas ar ļoti nav reālā pasaule
scenārijs, ļaujiet man jūs iepazīstināt ar mūsu mīļākie klipus to šeit no šīs
filma, Spaceballs.
>> [VIDEO ATSKAŅOŠANA]
-Ķivere, jūs velns, kas notiek?
Ko jūs darāt, lai mana meita?
-Ļaujiet man iepazīstināt izcili jauno plastikas ķirurgs, Dr Philip
Schlotkin, vislielākais deguns darbs cilvēks visu
Visums un Beverly Hills.
-Jūsu Augstība.
-Deguns darbu?
Es nesaprotu.
Viņa jau bija deguns darbu.
Tas bija salds 16 klāt.
-Nē, tas nav tas, ko tu domā.
Tas ir daudz, daudz sliktāk.
Ja tu nedod man kombināciju ar gaisa vairogs, Dr Schlotkin būs
sniegt savu meitu atpakaļ savu veco degunu.
-Nē!
Kur tu tā?
-Nu labi.
Es jums saku.
-Nē, tētis, nē.
Jūs nedrīkstat.
-Jūs esat nokļuvis labi, mans mīļais.
Es garām savu jauno degunu.
Bet es nevaru pateikt viņiem kombināciju vienalga ko.
-Ļoti labi.
Dr Schlotkin, darīt savu sliktāko.
-Mans prieks.
-Nē!
Pagaidiet, pagaidiet.
Es jums saku.
-Es zināju, ka tā varētu strādāt.
Labi, dod to man.
-Kombinācija ir viens.
-One.
-Divi.
-Trīs
-Trīs.
Četrzvaigžņu.
-Pieci
-Pieci.
-Tātad kombinācija ir viens, divi, trīs, četri, pieci.
Tas ir stupidest kombinācija es jebkad dzirdējis manā dzīvē.
Tas ir tāda veida lieta idiots būtu viņa bagāžu.
-Paldies, Jūsu Augstība.
-Ko jūs darījāt?
-Man palika pie sienas.
-Nē, jums nav.
Jūs izslēgt visu filmu.
-Man ir nospiests nepareizs pogas.
-Nu, ielieciet to atpakaļ.
Ielieciet filmu atpakaļ.
-Jā, kungs.
Jā, kungs.
-Let 's go, Erna.
Nāc, Gretchen.
Protams, jūs zināt, es joprojām ir arī rēķinu par šo.
-Nu, tas darbojas?
Kur ir vārti?
-Tā strādāja, kungs.
Mums ir kombinācija.
-Lieliski.
Tagad mēs varam veikt katru pēdējo elpu svaigu gaisu no planētas Druidia.
Kas ir kombinācija?
-Viens, divi, trīs, četri, pieci.
-Viens, divi, trīs, četri, pieci?
-Jā.
-Tas ir pārsteidzošs.
Man to pašu kombināciju manā bagāžā.
Sagatavot Spaceball 1 tūlītējai izbraukšanas.
-Jā, kungs.
-Un mainīt kombināciju par manu bagāžu.
-Ā!
[END VIDEO ATSKAŅOŠANA]
>> David J. Malan: pārsteidzošs filma jums tagad visi redzēt.
Tāpēc konteksts šeit ir tāda, ka ar nedrošiem datiem nāk iespēja
šifrēt to un motokross to.
Un tā tas, piemēram, ir piemērs no šifrētu ziņu.
Tas tiešām saka kaut ko angliski.
Bet tas noteikti nav pilnīgi skaidrs.
Un mēs būsim pilnu apli šodien kaitināt neatkarīgi ko tas noslēpums
ziņa šeit ir.
Bet reālajā pasaulē datoriem, lietas nav pat izskatās viņi varētu
būt angļu frāzes.
Piemēram, tas ir tas, ko jūs varētu atrast standarta Linux vai Mac vai
Unix datoru failā, kas bija reiz sauc paroli failu.
Mūsdienās, tas ir pārcelts uz citām vietām.
Bet, ja paskatās īstajā vietā sistēmu, jūs redzēsiet ne tikai savu
lietotājvārds vai citu cilvēku uz sistēmu, bet jūs redzēsiet
šifrētu versija par to paroli.
Patiešām, vārds kapenes tur liecina, ka šādi sīkumi tiek šifrēta.
Un šis šķietami izlases burtu un rakstzīmju un ciparu sēriju un
utt var atšifrēt tikai vispārīgi zinot kādu noslēpumu -
noslēpums vārdu, noslēpums numuru.
Un tā patiesi, par kriptogrāfiju galu galā vārīties uz leju māksla uzticēties dažus
šķirot un zinot kaut ka kāds cits nav.
Mēs izpētīt šo mazliet sīkāk šodien un PSET nākt.
>> Un tagad vārdu par der / neder.
Jo īpaši tāpēc, kā daži no jums ir ienira 1 PSET, ierīces, un
ļoti jauna pasaule par sevi, sapratu, ka neapmierinātību un
apjukums un vienkārši tehniskas grūtības ir sagaidāmas.
Speciāli ar pirmo PSET, kur tur ir tikai tik daudz jauna, tikai kļūst
iepazinušies ar ls un cd un visu šo mistiskā komandas jaunā vidē.
Un tas ir nodalīta no faktisko materiālu un pašu programmu.
Tātad saproti arī, ka pastāv noteikti darba laiks, kas pastāv kā
atbalsta struktūra.
Sadaļas sākt šo nāk svētdiena.
Bet pats galvenais, ja jūs sajūta tikai, ka tas nav
pasaule par jums, saprotu, ka tas tiešām tikai vajadzīgs laiks.
Un ja nebūtu šo iespēju gadiem man par ņemot klase
/ neatbilstības, godīgi, es nekad nebūtu pat kāju klasē.
Un jūs varat mainīt šo līdz, teiksim, piektā kursa pirmdiena.
Tātad, ja jūs esat uz malas tagad saprotam, ka nevis galva uz kādu citu
ūdeņi vispār, vai noteikti jāapsver tikai mainot nodot / neizdoties.
Atkal, tur nav īsti šī kultūra šeit Hārvarda no ņemot lietas
/ neatbilstības jo visi patiešām vēlas sasniegt vai overachieve.
Bet godīgi sakot, tas ir brīnišķīgs veids, kā mēģināt kaut ko, kas varbūt nav
būs pazīstams ar jums.
Un jūs galu galā darīt vairumā gadījumu diezgan smalkas, varbūt
daudz jūsu pārsteigums.
Un vēl konkrēti, ko es domāju / neatbilstības parasti dara,
jo, kā jūs varētu būt pieredzējuši ar 0 PSET, ja esat likts
kas 10 stundas, 15 stundas, 25 stundas par dažām PSET - un jūs tikai banging
galvu pret sienu,
un tas kļūst super vēlu naktī,
bet tu esi PSET tāpat 90% no ceļu,
Jūs zināt, jūs vienkārši nevar izrēķināt viena lieta -
/ neatbilstības patiešām ņem malas off no klases, piemēram, tas, kur jūs varat kārtot
gada laimīgi saka labi, es zinu, tas nav ideāls.
Bet es strādāju manu ass off par šo.
Es esmu diezgan apmierināts ar kur tas beidzās.
Un ka būs cerības uz der / neder.
Tātad paturēt to prātā.
>> Labi.
Tātad tiem no jums, kuri ir cīnījušies, lai izmantotu Harvard University Wi-Fi zināt
ka tur CS50 SSID, Wi-Fi savienojums peldošs apkārt, ka jums
varētu būt labāk veicas par.
Tas mazliet ironiski, ka paroles par šo - ja vēlaties izmēģināt
savieno ar šo par labāku ātrumu un dariet mums zināmu, ja tas nav labāk -
ir viens, divi, trīs, četri, pieci, visu ceļu līdz pat astoņiem jo astoņi ir
drošāka nekā pieci.
Tātad, ja jums ir nepieciešama Wi-Fi paroli, izveidojiet savienojumu ar CS50 bezvadu šeit.
Viens, divi, trīs, četri, pieci, seši, septiņi, astoņi.
Un pēc gada CS50 Pārrunājiet, ja jums vēl ir neregulāra savienojumu jautājumiem,
un mēs pieņemsim pilnvaras, kas būtu jāzina par šo telpu.
>> Labi.
Tik ātri ķircinātājs, jo īpaši tiem no jums, kas ir fanu zēni vai meitenes
visas lietas Apple.
Ko es izraka no pāris gadus atpakaļ bija šo failu šeit, ilock.c, tikai lai
veida padarīt konkrētākas un sarežģītāka kādu no vairāk pamata C
programmas mēs esam rakstiski.
Tāpēc es atvēra šo failu, ilock.c.
Tas ir pieejams par Lekciju lapā šodien.
Kreisajā pusē, jūs redzēsiet garš saraksts funkcijas.
Tātad puisis, kurš rakstīja šo uzrakstīja daudz funkciju,
vairāk nekā tikai galvenais.
Viņš izmantoja visu ķekars bibliotēku šeit.
Un, ja mēs sāktu ritinàt, ko tas patiesībā ir, ir ļoti
pirmkārt, es uzskatu, kreka par sākotnējo IPHONE.
Ja jūs vēlaties, lai jailbreak sākotnējo iPhone, kas nozīmē untether
tas no AT & T un faktiski instalēt īpašu programmatūru par to un darīt lietas
ka Apple nevēlējās cilvēkiem darīt -
labi, kāds bija laiks, lai noskaidrotu, kā tieši viņi varētu izmantot
programmatūras kļūdas, kļūdas, bugs, jo Apple programmatūru.
Un tādējādi dzimis ilock.c.
Ka, ja jūs apkopota to uz datora un uzstāda to uz iPhone, kas
bija saistīts ar datoru, izmantojot, teiksim, izmantojot USB kabeli, tas dod jums
administratīvi vai saknes privilēģijas uz jūsu iPhone, un ļauj jums darīt diezgan daudz
ko jūs vēlaties.
>> Un tā tur ir bijis šis aizraujoši kaķis un pele starp Apple spēli un
pārējā pasaule jo īpaši tie, tāpat kā daudziem uzņēmumiem, mēģināt, lai bloķētu
viņu sīkumi leju, lai jūs varētu darīt tikai ar to, ko viņi vēlas.
Bet, pateicoties tādiem cilvēkiem kā šis, un viņu izpratne par zema līmeņa
informācija un, šajā gadījumā, C programmēšana un no pazīstamajiem konstrukcijas krava
ka mēs esam sākuši spēlēt ar, jums ir iespēja tiešām sviras
aparatūra veidā redzat fit un ne vienmēr kādu komersantu.
Tātad, piemēram, man nav ne jausmas, ko tas viss dara.
Bet GetVersion izklausās diezgan vienkārši.
Un izskatās, ka tas ir funkcija, ka šī persona rakstīja.
Ņemt kādu skaitlim kā argumentu, neatgriež neko, bet
Šķiet cilpa ar par cilpu šeit un ja stāvoklī, ja nosacījums,
pauze, un kaut kā saistīts ar versiju numuriem.
Ja mēs ritiniet uz leju -
pat ja no šiem atslēgvārdiem partijas būs jaunas, un tur
Visai daudz funkciju šeit mēs nekad neesmu redzējis, un, iespējams, kādreiz redzēt pāri
kurss semestrī -
beigās, dienā, tas ievēro tos pašus noteikumus un loģiku, ka mēs esam
spēlē ar līdz šim.
Tātad tas ir pārāk vecs, lai kreka jūsu iPhone 3s vai 4s vai drīz 5s, šajās dienās,
bet zinu, ka tas viss ir ļoti daudz iegūst no šīs pasaules, ka mēs esam
ienira.
>> Tāpēc pieņemsim to apskatīt nedaudz vairāk vienkāršs piemērs.
Tas viens, tikai, lai iesilda ar kādu sintaksi un arī daži citi dati
veids, ka mēs esam runājuši par to, bet nav īsti redzams C. Tātad šis ir
failu sauc positive1.c.
Un vienu augšpusē komentāriem, tas tikai prasa, lai lietotājs nodrošina
pozitīvs skaitlis.
Tātad, tas ir piemērs do-kamēr cilpa, kas ir jauki, lai lietotājam interaktīvu
programmas, kur jums ir nepieciešams, lai pastāstītu lietotājam kaut ko darīt.
Un, ja tie nav sadarboties, jūs kliegt uz viņiem vai noraidīt savu ieguldījumu.
Sakāms, es esmu gatavojas darīt līnijas 19 līdz 24, kamēr lietotājs ir
man nav devis pozitīvu skaitli.
Tagad šī detaļa šeit 18 līnijas, kāpēc es apliecinu n iepriekš šo visu
looping būvēt nevis blakus līdz 22 līnijas, kur es
tiešām rūp, lai iegūtu n?
Yeah?
[Dzirdams]
>> David J. Malan: Jā, tā tas jautājums par darbības jomu.
Un lajs pilnvaru laikā, ko tas joma attiecas uz?
Yeah?
[Dzirdams]
David J. Malan: Vai tu runā nedaudz skaļāk?
SPEAKER 1: Kur jūs varat piekļūt konkrētu mainīgo.
David J. Malan: Perfect.
Kur jūs varat piekļūt konkrētu mainīgo.
Un vispār, īkšķis noteikums līdz šim ir bijis, ka dažu darbības joma
mainīgais ir definēts ar jaunākajiem cirtaini bikšturi ka esat redzējuši.
Un tāpēc šajā gadījumā, ja es sniedza kļūda paziņojot n 22 līnijas,
ka līnija varētu strādāt.
Es vēlos saņemt int, un es liktu to, ka mainīgais N 22 rindā.
Bet kas rindā kodu, tagad nav ne jausmas, ko es runāju par?
Tātad 25, un izrādās, 24, kā arī, jo šajā gadījumā, tā atrodas ārpus
no cirtaini lencēm.
Tik vienkārši nedaudz par traucējumu mazliet, bet ļoti viegli atrisināt, vienkārši paziņojot
mainīgo ārpus funkciju pati.
>> Tagad mēs redzēsim vēlāk šodien, jūs varat iet vienu soli tālāk.
Un jūs pat varētu saņemt nedaudz slinks -
un tas nav ieteicams, jo vispār -
bet jūs pat varētu saņemt slinks un nodot mainīgo globāli, tā teikt, ne
iekšpusē funkciju, nevis iekšpusē cilpas, bet failu pati, ārpus
no visas funkcijas jūs esat rakstiski, jo es darīju šeit 15 līnijas.
Bet tas parasti ir sarauca pieri.
Bet saprotu, tas ir risinājums reizēm citas problēmas, jo mēs
beidzot redzēt.
Tātad tagad, mēs atstāt to kā šis.
Bet pieņemsim redzēt, ja mēs varam pārrakstīt šo tikai sākt izteikt sevi
nedaudz savādāk.
>> Tātad šī programma, tikai, lai būtu skaidrs, ir positive1.
Ļaujiet man iet uz priekšu šeit un manā termināļa logā padarīt positive1, Enter.
Apkopo, labi.
Es esmu gatavojas palaist positive1, hit Enter.
Es pieprasu, ka jūs man vesels pozitīvs skaitlis.
Es saku -1.
Tas nestrādāja.
0, 99, kas, šķiet, darbojas.
Varbūt ne visvairāk stingra pārbaude.
Bet vismaz tas ir jauki veselība pārbaudītu, ka mēs esam uz pareizā ceļa.
Tāpēc tagad ļaujiet man iet uz priekšu un atvērt šīs divas versijas.
Un kas ir atšķirīgs jau?
Tā īsteno to pašu.
Bet kas ir lekt kā nepārprotami atšķiras šajā laikā?
Jā, tā tas bool zaļā krāsā.
Gedit ir iezīmēts zaļā krāsā šo atslēgvārdu pazīstams kā bool,
kas ir datu tips.
Tas nenāk uzcelta uz visiem C. versijām Jums nepieciešams iekļaut
īpaša bibliotēka.
Mūsu gadījumā, es iekļauta CS50 bibliotēku, lai mēs
piekļūt bool.
Bet 18 līnijā, mēs, šķiet, ir Būla vērtība šeit sauc pateicīgi.
Lai es varētu būt sauc šo neko.
Bet es to sauca pateicīgs tikai veida izteikt dažus semantisko nozīmi.
Tātad sākotnēji 18 līnijas, es neesmu acīmredzot nav pateicīgs, jo
Būla vērtība pateicīgi tiek inicializēts ar viltus 18 rindā.
Un tad šķiet, ko es esmu darījusi šeit 21 līnijām līdz 23 ir man tikko
veida pārrakstīt manu loģiku.
Līdz ar to nav funkcionāli atšķirīgs.
Bet 22 līnija tagad, es varētu pārbaudīt, vai int lietotājs ir nodrošināts ir lielāks nekā
0, tad es vienkārši mainīt vērtību pateicīgs taisnība.
Un kāpēc es varu darīt?
Jo 25 līnija, acīmredzot, es esmu gatavojas pārbaudīt stāvokli.
Vai šī cilpa, kamēr pateicīgi ir nepatiesa.
>> Tāpēc es ierosinu to kā alternatīvu vienas versijas, jo tas ir vismaz
nedaudz vairāk intuitīvu, varbūt.
Tas nedaudz vairāk balstīta angļu valodā.
Tā darīt tālāk, kamēr jūs neesat pateicīgi vai kamēr pateicīgi ir nepatiesa.
Un šoreiz, arī es acīmredzot negribu atcerēties, ko lietotājs drukāti
kas jo paziņojumā tur nav mainīgo n.
Tātad patiesībā, es -
maz balta meli tur.
Funkcionāli, programma ir nedaudz atšķirīgs, kad mēs nokļūt uz leju
tas tāpēc, ka es neesmu atcerēties to, ko n.
Bet es gribēju parādīt arī šeit, ka, lai gan mēs esam redzējuši GetInt un
GetString ko izmanto par labajā pusē vienādības zīmi līdz šim tā, ka
mēs atceramies vērtību, tehniski, tas nav obligāti nepieciešams.
Ja kāda iemesla dēļ jūs vienkārši nav aprūpi, lai saglabātu vērtību, jūs vienkārši vēlaties
lai pārbaudītu vērtību, pamanīsiet, ka mēs varam vienkārši rakstīt šo kā GetInt atvērts
paren, tuvu paren.
Ka funkcija ir gatavojas atgriezties vērtību, jo mēs esam teikuši.
Tas notiek, lai dotu jums atpakaļ int.
Un tā, ja jūs garīgi domā par šo notiek, kad es rakstīt 99, GetInt
atgriež skaitli 99.
Un tā konceptuāli, tas ir, it kā mans kods ir faktiski šo.
Tātad, ja 99 ir patiešām lielāks par 0, tad pateicīgs kļūst patiesa.
Tad līnijas 25 saprot ooh, mēs esam darīts, jo es esmu tagad pateicīgs.
Un 26 līnija, mēs vienkārši saka, paldies par pozitīvam skaitlim, kāds tas
gadījās būt.
>> Tagad pieņemsim do nedaudz sintaktisko cukura šeit, lai runāt.
Redzēsim, vai mēs varam sakopt šo pozīciju 25 ar šo trešo un pēdējo dispersijas
jo positive3.
Tātad paziņojums vienīgā atšķirība tagad ir kāda līnija kodu?
Yeah, tāpēc 25.
Un mēs esam nav īsti redzējuši šo triks tikai yet.
Bet mēs redzēt izsaukuma zīmi pirmdien, ko apzīmē ko?
Tātad ne, vai noliegums.
Tātad to Būla vērtību un uzsist savu vērtību.
Patiess kļūst nepatiesa.
Viltus kļūst patiesa.
Tātad, es ierosinu, ir pat nedaudz vairāk intuitīvu par veidu
rakstot kodu, jo es vēl sāktu pateicīgs nepatiesa.
Es joprojām rīkoties šādi.
Es noteikti pateicīgs taisnība, kad pienāks laiks.
Bet tagad jūs varat patiešām vienkārši tulkot šo kodu mutiski kreisās uz labo,
kamēr nav pateicīgi.
Jo sprādziena, vai izsaukuma zīme, apzīmē jēdzienu nav, tāpēc, kamēr
nav pateicīgi.
>> Tātad vēlreiz, mēs esam nav ieviesusi jaunus jēdzienus par sevi.
Mēs esam runājuši par booleans atpakaļ, kad mēs spēlējām ar nulles.
Bet saprotu, tagad mēs varam tikai sākt rakstīt savu kodu
daudzi un dažādi veidi.
Jo īpaši tāpēc pset1, ja jūs esat veida cīnās, lai noskaidrotu ceļu uz
uzrakstīt kādu programmu, izredzes ir tu esi veiksmi, jo tur būs kāds
risinājumu skaits, kas var notikt pēc.
Piemēram, tas ir tikai trīs, pat vienkāršāko programmu.
Labi.
Un tagad atceros pirmdien, mēs atstājām uz šo piezīmi ar atgriešanās vērtībām.
Tātad par ļoti pirmo reizi, mēs uzrakstīja programmu, kas nav vienkārši ir galvenais,
Tā arī ir sava pielāgotu funkciju, ka es uzrakstīju šeit.
Tātad caur 34 31 līnija, es esmu ieviesta kuba funkciju.
Tas nav sarežģīti.
Tas ir tikai reizes nedēļā reizes, šajā gadījumā.
Bet kas ir svarīgi par to, ka es esmu ņemot ieguldījumu veidā, un
Es esmu atpakaļ izejas formā reizes reizes a.
>> Tāpēc tagad man ir iespēja, līdzīgi man, lai ar printf vien izmanto, lai izsauktu
Šī funkcija zvanot kuba funkciju.
Un kubs funkcija prasa zināmu ieguldījumu.
Un kubs funkcija atgriež kādu produkciju.
Un tā savukārt, printf vienkārši darīja kaut ko.
Tā nav atgriešanās neko, kas mums nerūp - lai gan, kā
malā, tas atgriež vērtību.
Jums tikai parasti ignorēt to.
Printf tikko izdarīja kaut ko.
Tas bija blakus efekts drukāšanas uz ekrāna.
Turpretī šeit, mums ir kuba funkcija, kas
faktiski atgriežas kaut.
>> Tātad tas parasti -
tiem iepazinušies ar to, tas ir diezgan vienkārši ideja.
Bet tiem, kas mazāk pazīstami ar šo ideju iet uz izejvielu un kļūst
atpakaļ izejas, pamēģināsim tikai kaut super vienkārši.
Vai kāds ērti nāk uz skatuves īsi?
Jums ir apmierināti ar kameru uz jums, kā labi.
Yeah.
Labi, kāda ir jūsu vārds?
KEN: Ken.
David J. Malan: Ken.
Labi, Ken.
Nāciet uz augšu.
Tāpēc Ken būs funkcija veidu šeit.
Un iesim uz priekšu un darīt to.
Būsim mazliet iedomātā.
Priecājos ar jums iepazīties.
Laipni lūdzam skatuves centrā.
Labi.
Pieņemsim skārusi šo pogu šeit.
Labi.
Tātad šeit jums ir moderna tāfeles.
Un ko es esmu, ir galvenā funkcija, piemēram.
Un man nav iPad manā rokā.
Man nav īsti atcerēties, kā - labi, patiesībā, nevar teikt, ka.
Man nav īsti ir labs rokraksts.
Un tātad, es gribu, lai jūs drukāt kaut uz ekrāna par mani.
>> Tāpēc es esmu to galvenās programmas.
Un es esmu nāksies jums teikt, rakstot to manā vistas nulles un
tad iet jums ievadi.
Tā kā dumjš gan šis darbs ir, funkciju jēdziens un aicinot
funkcija un atgriežas funkciju tiešām vārīties uz leju, lai šo.
Es esmu galvenais.
Man ir tikai rakstīts printf ("kaut kas"), uz ekrāna.
Es skrienu šo programmu.
Un tiklīdz printf izpaužas sauc, tas aizņem vienu argumentu - vai viens parametrs,
reizēm -
starp pēdiņas.
Šeit ir tas, ka arguments.
Es esmu iet to Ken.
Tagad viņš ir melnā kaste rakstisku dažas vairākus gadus atpakaļ, ka acīmredzot
tikai zina, kā drukāt lietas uz ekrāna.
>> Tātad, izpildīt.
Tas nav slikti.
Tātad, ļoti labs.
Tāpēc tagad Ken tiek darīts izpildes.
Vai viņš ir roku man neko atpakaļ?
Tāpēc nav, ka mēs esam redzējuši līdz šim.
Atkal, printf tas faktiski atgriežas numuru.
Bet mēs esam gatavojas ignorēt to, ka tagad, jo mēs nekad to izmanto.
Tā ka tas uz Ken.
Un tāpēc tagad galvenais nāk atpakaļ izpildīt -
Galvenais pārņem kontroli par programmas no jauna, jo šī līnija kodu,
printf, tiek darīts izpildes.
Un mēs iet par mūsu ceļu izpildes neatkarīgi citām līnijām ir tur.
>> Labi.
Tāpēc tagad pamēģināsim nedaudz atšķirīgu piemēru.
Un šoreiz šeit, pieņemsim vispirms notīrītu ekrānu šeit.
Un šoreiz, mēs izdarīsim cubing funkciju.
Bet šoreiz, es gaidu produkcijas vērtību.
Tāpēc pieņemsim iet uz priekšu un darīt to.
Tāpēc tagad man ir līnijas kodu, kas saka x = kubs (x).
Tik tiešām let's -
koda, atgādināt, līnijas izskatās šādi.
x = kubs (x).
Tātad, kā tas notiek uz darbu?
Tāpēc iesim uz priekšu un sniegt jums baltu ekrānu.
Un es esmu gatavojas rakstīt tagad nosaka vērtību x, kas šobrīd ir
time notiek, ir, teiksim, 2, lai saglabātu tā vienkārši.
Tāpēc man ir uzrakstītas uz papīra vērtība 2,
kas ir mana vērtība x.
Es to nodod Ken.
KEN: Un es vienkārši uzrakstīt atbildi?
David J. Malan: Jā, pieņemsim tikai uzrakstīt atbildi.
Labi.
Un tagad viņš ir atgriezties man kaut ko.
Tātad -
perfekta.
Nice segue.
>> Tāpēc tagad viņš rokas mani atpakaļ vērtību 8, šajā gadījumā.
Un ko man darīt ar to?
Nu, patiesībā, redzēsim.
Get šīs tiesības.
Kas es esmu gatavojas darīt ar to?
Tagad es esmu gatavojas izmantot šo vērtību un faktiski uzglabāt to tām
paši biti atmiņā.
Bet paziņojums, es esmu veida cīnās šeit.
Es esmu nedaudz mulsina, jo, kad man tiešām rakstīt vērtību x?
Jo tas, ko es esmu tikko izdarīt fiziski roku Kens papīra gabals
kas bija vērtība 2, kas bija x.
Un tiešām, tas ir tieši tas, kas notiek.
Tātad izrādās, ka tad, kad jūs zvanu funkciju, un jums iet uz argumentu
patīk "Hello World" vai jums iet ar argumentu, piemēram 2, vispār, tu esi
aizrit kopiju šo argumentu.
Un tā tāpat kā es pierakstīju numuru 2 šeit un pasniedza to Ken; ka jābūt
nozīmē, ka man vēl ir kopiju vērtība 2 kaut kur.
Jo patiesi, tagad, ka es esmu gotten atpakaļ vērtību 8, man ir nepieciešams, lai dotos atpakaļ
RAM un faktiski pierakstīt 8 Ja man reiz bija numuru 2.
>> Tik vizuāli atcerēties šo jēdzienu aizrit burtiski
kopiju no vērtības.
Ken dara viņa lieta, rokas mani atpakaļ kaut ko - šajā gadījumā,
vērtību, piemēram, 8.
Un tad man ir kaut ko darīt ar šo vērtību, ja es
vēlas, lai saglabātu to apkārt.
Tātad tas viss būs pārāk pazīstams pirms ilgi.
Paldies tik daudz par šo demo šeit, Ken.
Labi.
Ļoti labi darīts.
Tātad, pieņemsim redzēt, kā tas galu galā ir saistīts ar kādu no funkcijām
zvanot ka mēs esam bijuši dara šeit.
Tāpēc ļaujiet man iet uz priekšu un mūs atpakaļ uz cubing piemēram, šeit.
Un paziņo, ka, ja mēs vēlamies, lai faktiski sākt lietot šo tālāk, mēs ejam
ir jābūt uzmanīgiem par to, ka skaitlis x, kas ir tiek pagāja
šeit ir atšķirīga no tā, ko patiesībā tiek nodots uz funkciju.
Tātad vēlreiz, ko ir pieņēmis kopiju kļūs pavisam
Germane tikai brīdi.
>> Tāpēc pieņemsim to apskatīt kaut ko, kas nav gluži darbu labi vēl.
Es iešu uz priekšu un atvērt 1/3 buggy piemēru, kas
ir kļūdains pēc būtības.
Un to sauc buggy3, un tā īsteno swapping funkciju.
Tātad šeit mums ir galvenā funkcija, kas ir x un y patvaļīgi inicializēts ar
1 un 2, attiecīgi.
Mēs varētu izmantot GetInt, bet mums vienkārši ir nepieciešams vienkāršs uzdevums.
Tātad, tas ir iekodēts kā 1 un 2.
Līnijās 21 un 22, mēs acīmredzot izdrukāt x un y, vienu par vienu līniju.
Tad, 23 līnijas, es varu pieprasīt es esmu pārnešana šīs vērtības, dot, dot, dot.
Es acīmredzot zvanīt jau 24 līnijā funkciju sauc mijmaiņas
kas ņem divus argumentus.
Tas ir pilnīgi legit, lai funkcijas veikt divus argumentus.
Mēs esam redzējuši printf darīt jau.
Tātad mijmaiņas acīmredzot ņem x un y.
Un jo tā nosaukums liecina, es ceru, ka tas notiek, lai
swap šīm divām vērtībām.
Tātad, tad es varu pieprasīt, 25 līnijas, nomainīju.
Un es pārdrukāt x un y, pieņemot, ka
viņi patiešām ir samainīti.
Bet, ja es tiešām palaist šo programmu -
ļaujiet man atvērt termināla logu.
Ļaujiet man buggy3.
Kā liecina nosaukums, tas nav gatavojas pārtraukt labi.
Jo, kad es hit Enter, ievērosiet, ka x ir 1.
y ir 2.
Un vēl pēc programmas beigām, viņi joprojām, patiesībā, tas pats.
>> Tātad, pamatojoties uz demonstrāciju tikai tagad ar Ken, kas patiesībā notiek?
Nu, pieņemsim pikējošais šajā mijmaiņas funkciju.
Tas ir super īss.
Tas ir tikai dažas rindiņas kodu ilgu.
Bet kas ir būtiska problēma, pamatojoties uz vienkāršu stāsts
šeit ar Ken?
Kāpēc mijmaiņas bojāta?
[Dzirdams]
Tieši tā.
Tāpēc mēs esam uzglabājot uz kopiju, nevis uz mainīgo pati.
Citiem vārdiem sakot, mijmaiņas acīmredzot ņem divus argumentus, int.
Un tas ir patvaļīgi sauc un b.
Un šeit, es esmu pieņemts X un Y, kas ir attiecīgi 1 un 2.
Bet es neesmu burtiski iet uz x.
Es neesmu burtiski iet y.
Es esmu pieņemot no x kopiju un y kopija.
Tas ir tāpat kā gandrīz it kā tu nokopēt un ielīmēt mijmaiņas vērtības, kas
vēlaties, lai tas tiešām manipulēt.
Tātad, ja tas ir gadījumā, kad es, programma, sākt izpildot
līnija 35, tad 36 -
kad man ar 37 līniju, šajā brīdī stāsts, kāda ir vērtība?
Šajā brīdī stāsts, 37 līnija, kāda ir vērtība šajā brīdī?
Tātad tas būtu vienkārši 1.
Labi?
Jo x tika pieņemts kā pirmo argumentu.
Un šī funkcija tikai patvaļīgi ir zvanot savu pirmo argumentu,.
Tāpat ir y, otrais arguments.
Un tas ir tikai patvaļīgi zvanot uz otro argumentu b.
>> Tagad šis dalījums ir faktiski diezgan vienkārši izskaidrot.
Padomā par to.
Neviens no mums ir tikās persona, kas rakstīja printf.
Tā protams, viņš vai viņa nav ne jausmas, ko mūsu mainīgajiem 30 gadus vēlāk dodaties
saukt.
Tāpēc ir jābūt atšķirībai starp to, ko jūs saucat mainīgie
funkcijas rakstāt un ko tu sauc mainīgos funkcijas jūs esat
zvanot vai izmantojot.
Tātad citiem vārdiem sakot, es esmu uzrakstījis manu mainīgos kā x un y.
Bet, ja kāds cits bija rakstīts mijmaiņas funkciju, viņš vai viņa noteikti
nezinu, ko mani mainīgie gatavojas saukt.
Lai saprastu, ka tas ir iemesls, kāpēc jums ir šī divdabība nosaukumiem.
Tehniski, es varētu darīt sagadīšanās.
Bet tie joprojām būtu pieņemts kā kopijas.
Tas būtu tikai tīra nejaušība estētiski ja šī persona, kas rakstīja
mijmaiņas bija izmantojusi tos pašus vārdus.
>> Labi.
Tātad šajā brīdī stāsts, 37 līnija, ir 1.
b ir 2.
Un tagad es doties uz mijmaiņas tiem.
Nu, pirmkārt, ļaujiet man patiesībā darīt daudz vienkāršāk.
Es nezinu, ko šie trīs rindas koda darām.
Ļaujiet man tikai darīt.
b izpaužas.
izpaužas b.
Darīts.
Kāpēc tas ir salauzta, loģiski?
Tas ir sava veida intuitīvo lieta, vai ne?
Tātad kļūst b.
Un b kļūst.
Bet problēma ir tā, ka tiklīdz 37 līnijas izpilda, kāda ir
vērtību un b?
Pats, 1.
Jo jums ir clobbered, tā sakot, jūs esat mainījuši b vienāds.
Lai vienreiz līnija 37 izpildīts, tas ir lieliski.
Jums tagad ir divas kopijas numuru 1 iekšpuses šo funkciju.
Tātad tad, kad jūs sakāt 38 līnija, izpaužas b, labi, tu esi veida ieskrūvē.
Jo jūs esat tikai piešķirot 1 līdz 1.
Jūs esat veida zaudējis vērtību jums nerūp.
>> Tātad sākotnējā versijā šis, pamanīt to, ko es darīju.
Es tā vietā bija trešajā rindā kodu, kas izskatījās.
Es paziņoju pagaidu mainīgo - TPP ir ļoti bieži vārdu
par pagaidu mainīgo.
Tas ir int, jo tā ir saskaņot to, ko es gribu, lai kopiju.
Es glabāt kopiju iekšpusē TPP. Lai vienreiz līnija 37 ir izpildīts,
gada vērtība ir -
ātri veselība pārbaudītu -
1.
No b vērtība ir 2.
Un no tmp vērtība ir arī 1.
Tāpēc tagad es izpildīt līnija 38.
Lai vienreiz līnija 38 izpilda, uzņemas ar b vērtību.
Un b bija 2.
Tāpēc tagad ir 2.
Tātad šajā brīdī stāsts, ir 2, b ir 2,
un tmp ir 1.
Tāpēc tagad loģiski, mēs varam tikai plunkšķis TPP vērtība uz b.
Un mēs esam darīts.
>> Tātad mēs esam atrisināt šo problēmu.
Diemžēl, kad es palaist šo programmu šādā veidā, tas nav reāli mijmaiņas
nekādas vērtības.
Bet, lai būtu skaidrs, kāpēc?
Es noteikti loģisku problēmu no tikai pirms brīža.
Bet atkal, ja man palaist šo programmu, x un y paliek nemainīgs līdz gada beigām
programmas izpilde.
[Dzirdams]
David J. Malan: Tātad mums nav atgriezušies neko.
Tāpēc, ka ir taisnība.
Bet izrādās, tur ir par problēmu, mazliet šeit, jo līdz šim,
Vienīgais mēs esam spējuši atgriezties, ir viena lieta.
Un tas ir ierobežojums C. Jūs varat atgriezties tikai patiešām vienu vērtību,
tādā gadījumā, es esmu veida iestrēdzis šeit
jo es varētu atgriezties jaunu vērtību x vai es varētu atgriezties
jaunā vērtība y.
Bet es gribu gan atpakaļ.
Tāpēc atgriežoties nav vienkāršs risinājums šeit.
Bet problēma būtībā ir, kāpēc?
Ko mēs patiesībā samainīti?
un b.
Bet a un b ir kopijas X un Y, kas nozīmē, ka mēs vienkārši darīja visu šo
darbs - mēs tikko pavadīja kā trīs minūtes runā par mijmaiņas
funkcija un visi no šiem mainīgajiem trīs.
Un tas ir lieliski, pilnīgi pareizs izolēti.
Bet A un B darbības joma tikai šajās līnijās šeit.
Tik vienkārši kā par cilpu, ja jūs atzīt skaitlim es iekšā par
cilpa - līdzīgi, ja jūs atzīst un b iekšpusē funkcija, kas
Jūs esat rakstiski, viņi tikai derīgs iekšā šī funkcija.
Kas nozīmē, tiklīdz mijmaiņas tiek darīts izpildes un mēs aiziet no līdz 24 līnijas
līnija 25, x un y nav mainījies vispār.
Jūs vienkārši izšķērdēta visai daudz laika pārnešana kopijas mainīgajiem.
>> Tātad izrādās, ka risinājums ir tas tiešām nav skaidrs.
Tas nav gluži pietiekami, lai atgrieztos vērtības, jo mēs varam
atgriezties tikai vienu vērtību.
Un es tiešām gribu, lai mijmaiņas gan x un y, tajā pašā laikā.
Tāpēc mēs esam gatavojas atgriezties uz šo.
Bet tagad, saprotam, ka šis jautājums būtībā izriet no fakta
ka a un b ir kopijas.
Un tie ir savā darbības jomā.
Nu, pieņemsim mēģināt atrisināt šo kaut kādā veidā.
Ļaujiet man tiešām ritināt atpakaļ šeit un atvērt, teiksim, ceturto variantu
par šo, buggy4.
Un ko par šo?
Tas ir līdzīgi, bet vienkāršāk problēma apskatīt, pirms mēs pieņemt stab pie
risināt to.
Šī programma sauc pieaugums.
Un tas acīmredzot inicializē ar x skaitlis līdz 1 18 rindā.
Es tam jāpieprasa x ir 1.
Es tam jāpieprasa palielināšanai, dot, dot, dot.
Es tad aicinu pieaugumu.
Bet tad rindās 22 un 23, man apgalvo, tas ir bijis palielināts.
Es apgalvo x ir tagad kāds tas ir, 2 iespējams.
>> Taču šī programma ir buggy.
Kāda ir problēma?
Yeah?
[Dzirdams]
David J. Malan: Tieši tā.
Tātad x ir pasludināts acīmredzami 18 līnijas.
Tas ir iekšā Main s cirtaini lencēm.
Tik vienkārša atbilde ir tāda, ka, labi, x pastāv šeit.
Tā nepastāv 32 rindā.
Tāpēc šī programma faktiski nav pat sastādīt.
Kompilators, kad mēģinu apkopojot šo kodu, gatavojas kliegt uz mani
par kādu nedeklarētu identifikatoru vai kaut kas šajā sakarā.
Faktiski, pamēģināsim.
Tas ir padarīt buggy4.
Tur tas ir.
Izmantot nedeklarētu identifikators x 32 rindā.
Un tiešām, būsim precīzāk šodien šeit tā, ka tas ir noderīgi
darba laiks un mājās.
Ievērojiet, ka tas ir mazliet cryptically rakstīts.
Bet fakts, ka šķindēt ir kliedza uz mums, sakot
buggy4.c: 32:5, ir faktiski noderīga.
Tas nozīmē, ka kļūda ir par pie raksturs nostāju 5 32 līniju.
Tātad viens, divi, trīs, četri, pieci.
Tas ir, faktiski, kur ir problēma.
Un arī paturēt prātā, darba laika un mājās, es esmu laimīgs šeit.
Man ir viena kļūda.
Tas būs salīdzinoši viegli noteikt.
Bet, ja jūs saņemsiet visu ekrānu pilns milzīgs kļūdu ziņojumus, atkal,
saprotam, ka viszemākais viens var tikai būt simptoms
augšējais ones.
Tāpēc vienmēr tramdīt nosaka jūsu bugs no augšas uz leju.
Jo tur var tikai margrietiņa ķēdes efekts, kas tiek iesaka jums
ir veids, vairāk problēmu, nekā jūs faktiski darīt.
>> Tātad, kā mēs varētu noteikt šo ja mans mērķis ir, lai pieauguma x?
Ko tas nozīmē?
Labi.
Tātad, mēs varam padarīt x pasaules.
Paņemsim saīsni, kas man brīdinājusi par agrāk.
Bet heck, mēs vienkārši ir nepieciešams ātrs risinājums.
Tāpēc pieņemsim tikai teikt, int x šeit.
Tas padara x globāla.
Tāpēc tagad galvenais ir piekļuve tai.
Un pieauguma ir piekļuve tai.
Un tāpēc ļaujiet man iet uz priekšu un apkopo šo tagad.
Padarīt buggy4, Enter.
Šķiet, lai apkopotu tagad.
Pieņemsim palaist buggy4, un tas, šķiet, faktiski strādā.
Tagad tas ir viens no šīm lietām -
darīt, kā es saku, nevis kā es, jo es esmu tikai izdarīt šeit.
Jo kopumā mūsu programmas gatavojas saņemt daudz vairāk interesantu un
daudz ilgāk nekā šis.
Un, ja jūsu risinājums dzīves problēmām ir tikai ah, nodot visas
mainīgie augšpusē jūsu failu, ļoti ātri darīt programmas nokļūt
horrifically grūti pārvaldīt.
Tā kļūst grūtāk izdomāt jaunus mainīgo nosaukumi.
Tā kļūst grūtāk saprast, ko mainīgais dara ko.
>> Un tā vispār, tas nav labs risinājums.
Tāpēc pieņemsim darīt labāk.
Mēs nevēlamies, lai izmantotu globālu mainīgo šeit.
Es vēlos, lai pieauguma x.
Tāpēc es varētu, protams -
beigās, dienā, tas ir sava veida dumjš stāsts, jo mēs vienkārši izdarīt.
Bet, ja es nezināju par šo operatoru, vai arī man neļāva
mainīt to galvenais pats, kā gan citādi es varētu īstenot Ken nekā šeit, šajā
laiks nav kubu, bet pieauguma?
Kā es varu mainīt šo lietu šeit?
Yeah.
[Dzirdams]
David J. Malan: Labi, labi.
Tātad, kāpēc nav man caurlaide X?
Un tad nevis atdot to, kāpēc nav es tikai darīt atdevi x + 1?
Tagad, pāris vairāk lietas ir jāmaina šeit.
Es esmu uz pareizā ceļa.
Kas vēl man ir nepieciešams nomainīt?
Kāds cits.
Yeah?
[Dzirdams]
David J. Malan: Man vajag, lai mainītu atgriešanās veidu pieauguma
jo tas nav anulēta.
Neesošu nozīmē nekas ir atdoti.
Bet skaidri, tagad tas ir.
Tāpēc to nepieciešams mainīt, lai int būtu saskaņā ar kāda
Es esmu tiešām atgriezties.
>> Tagad kaut kas cits vēl ir bagijs šeit.
Yeah?
[Dzirdams]
David J. Malan: Tātad man ir nepieciešams, lai pieauguma x?
[Dzirdams]
David J. Malan: Ah, tāpēc man ir nepieciešams, lai iet x.
Tāpēc man ir nepieciešams to darīt šeit.
Tātad prototips, man ir, lai mainītu šo šeit.
Tāpēc šī ir kļūt int.
Tas ir kļuvis -
hmm.
Man tiešām ir bug leju šeit.
Pieņemsim noteikt šo vienu vispirms.
Kas būtu tas patiesībā ir?
Tātad tas ir got būt int kaut.
Tas varētu būt x.
Bet godīgi sakot, ja jūs sākat aicinot visas jūsu mainīgo x, tas notiek, lai saņemtu
mazāk un mazāk skaidrs, kas ir kas.
Tāpēc pieņemsim tikai patvaļīgi izvēlēties citu nosaukumu konvencija For My
palīga funkcijas, uzdevumus es esmu rakstiski.
Mēs to saucam.
Vai mēs varētu to saucam - sauksim to even_number būt vēl skaidrāks.
Tātad, tad man ir atgriezties kāds numurs ir plus 1.
Un tagad man ir jāmaina viena cita lieta šeit un viens
Otra lieta šeit.
Kas man ir jāmaina uz 21 līniju pirmais?
Man ir to uzticēs x.
Tāpēc es nevaru vienkārši piezvanīt porciju x.
Man vajag atcerēties atbildi, mainot vērtību X
kreisajā pusē.
Un pat ja x ir tagad pa kreisi un pa labi, tas ir pilnīgi naudas sodu, jo
labajā pusē izpaužas izpildīts pirmais tam izpaužas plopped uz kreiso
rokas lieta, x šajā gadījumā.
Un tad visbeidzot, tas ir viegli noteikt tagad.
Tas būtu tikai saskaņot to, ko ir zemāk.
Int skaits.
>> Labi.
Tātad viss ķekars izmaiņu patiešām stulba funkcijas.
Bet pārstāvis lietām, ka mēs arvien vairāk vēlas darīt.
Lai padarītu buggy4.
Es esmu ieskrūvē augšu kaut kur.
Ak mans Dievs.
Pieci kļūdas, tāpat, sešu līnija programma.
Tātad, kas ir nepareizi, 18 līnija, raksturs 5?
Labi.
Tāpēc man ir atzīt šo int.
Labi.
Tātad, pieņemsim redzēt, visu ķekars citas kļūdas.
Ak mans Dievs.
19, 18, 21.
Bet atkal, pieņemsim tikai skaidrs ekrānu -
Kontrole L šeit - un atkārtoti palaist šķindēt.
Tātad 5 problēmas ir faktiski tikai, ka viens.
Tāpēc tagad pieņemsim darboties buggy4, Enter.
Whew.
x ir palielināts pareizi.
>> Labi.
Kādi jautājumi par to, kā pieauguma skaitļus?
Yeah?
SPEAKER 2: Kāpēc ir tā, ka jūs varat vienkārši mainīt x uz numuru kas mainīgo
nosaukt un tas būs zināt, ko tu domā?
David J. Malan: Labs jautājums.
Kā tas ir, ka es varu tikai mainīt x uz numuru un programma būs zināt
uzreiz?
Tātad vēlreiz, domā par to, kā šo abstrakciju.
Tātad, ja es esmu galvenais un Ken ir elementārparaugu, atklāti sakot, man nav vienalga
ko Kens aicina savu iPad.
Man vienalga, ko viņš prasa kaut kas ir jādara ar savu ieviešanu
šo funkcionalitāti.
Tātad šis ir īstenošana detaļa, kas man, galvenais, nav
ir rūpēties par.
Un tā vienkārši mainot to konsekventi iekšpusē funkciju, numuru šeit
un skaits šeit ir viss tas notiek tik ilgi, kā es recompile.
Tas ir veida, piemēram, ja jūs domājat par - daudzi no mums, tiem no jums, ar vadītāja
licences, kas esam virza, vai, ja esat pat brauc ar automašīnu -
lielākā daļa no mums nav ne jausmas, kā auto darbojas zem motora pārsega.
Un burtiski, ja jūs atvērtu kapuci, lielākā daļa no mums - mani ieskaitot -
nav gatavojas, lai tiešām zināt, ko mēs meklējam, ir.
Veida, piemēram, jūs varētu justies ar stuff kā šīs tiesības tagad.
Bet mums nav īsti ir vienalga, kā auto darbojas.
Mums nav vienalga, ko visi stieņi un virzuļu un kabeļiem iekšpusē
auto ir faktiski dara.
>> Tātad kaut kas līdzīgs, ko jūs saucat virzulis nav nozīmes
šeit, šajā gadījumā.
Pati ideja.
Yeah?
[Dzirdams]
David J. Malan: Ja būtu vairāk izmantojumu mainīgo Xa brīdi atpakaļ,
Jūs, programmētājs, būtu jāmaina tos visur.
Vai jūs varētu burtiski darīt File, Menu, un pēc tam atrast / nomainīt,
kaut kā tā.
Bet jums nāksies izdarīt šīs pārmaiņas sevi.
Jums ir jābūt konsekventiem.
[Dzirdams]
David J. Malan: īpaši lai, piemēram šeit?
Ja tas bija int citu numuru?
Yeah.
Tātad, lai jautājumi, kad jūs zvanāt funkciju.
Tātad, ja es bija aicinot pieaugumu šeit ar kaut komats kaut ko,
tur tieši kartēšanu.
Pirmais mainīgo, neatkarīgi no tā sauc, ir izgatavots kopiju pirmā
arguments nekā šeit.
Atvainojiet, tas nedrīkst būt iekavas.
Otrs arguments līniju līdz ar otru.
>> Tātad, lai, jā, jautājumi.
Labi.
Žēl man bija tālu tur nokļūt.
Citi jautājumi?
Labi.
Tātad, pieņemsim redzēt, ja mēs nevaram uzzīmēt zīmējumu par to, kas patiesībā notiek
šeit zem motora pārsega, lai runāt.
Tātad šī ir taisnstūra, kas varētu pārstāvēt datora atmiņā.
Tātad, pat ja jums nav ne jausmas, cik atmiņa strādā vai cik RAM darbi, vismaz
pieņemu, ka jums ir ķekarus to šajās dienās.
Jūs esat ieguvuši megabaiti tā.
Jūs esat ieguvuši gigabaitu tā.
Un mēs zinām no nedēļu nulles ka baits ir tieši tas, ko?
8 biti.
Labi, tāpēc 8 nulles un ones.
Tātad, ja jūsu datoram ir GIG RAM, divas gigs RAM šajās dienās, jums ir
miljards vai 2 miljards baitu atmiņas, vai aptuveni 8 miljardiem vai 16000000000
biti, iekšpusē datora.
Tagad atšķirībā no mazā pūkainā Willy Piemēram, tas nav magnētiskās daļiņas
parasti vairs.
Arvien vairāk, klēpjdatoriem vismaz, tas ir cietvielu diskus, SSDs, ka
vienkārši nav kustīgu daļu.
Tas viss elektroniski.
Tas viss balstās elektrība.
Tāpēc domāju, ka, lai gan, šī taisnstūra kā tikai pārstāv vienu vai divas
gigabaitu atmiņas, kas jums ir.
>> Tāpēc tas rieciens atmiņas.
Tagad datorzinātņu pasaulē ir sava veida atdalīta gabalos
atmiņa darīt dažādas lietas.
Tātad, piemēram, ja tas ir jūsu datora atmiņa - kā to ierosināja
taisnstūris tur - izrādās, ka pēc vienošanās, augšpusē jūsu RAM, tāpēc
runāt, parasti tas, ko sauc teksta segments.
Tie ir nulles un tiem, kas jums ir apkopojusi.
Tātad, kad mēs esam paskatījās zem motora pārsega pie kāda a.out ir, visas
kad skaitļi un tiem -
palaižot programmu, šie skaitļi mainās un tiem tiek ielādēta no cietā
iedzīt kaut ko sauc RAM.
Un RAM, viņi likts uz augšu.
Tagad tikmēr, jums ir citas lietas.
Inicializēts dati, neinicializēts dati.
Šie divi swaths atmiņas atsaucas uz globālo mainīgo, kas
jums nav bieži izmanto.
Bet dažreiz, ja jūs darāt, viņi galu galā tur augšā, kā arī.
Tad tur ir daži citi sīkumi.
Vides mainīgos, kas mums nav tērēt daudz laika.
Bet tad divas svarīgas lietas, kas nāks atpakaļ visā šajā
semestris, steku un kaudze.
>> Tātad lielākā daļa no jūsu datora atmiņa ir rezervēta, braucot programmu
kaut ko sauc kaudzīti un kaut sauc kaudze.
Un mēs nebrauksim runāt par kaudzes šodien, bet mēs
runāt par kaudze.
Un kaudze ir domāts, lai uzburt vizuāli līdzīgi ēdamzālē
Paplātes in Mather namā, vai kur jums gadās būt, ja
ēdamzāle darbinieki tīrīt tos katru dienu.
Viņi kaudze tos no grīdas uz augšu.
Un līdzīgi atmiņā ir šo ideju, liekot kaut uz
kaudze, liekot kaut uz steku, liekot kaut uz kaudze.
Un ko mēs saprotam ar šo?
Nu, pieņemsim tuvinātu tikai apakšējā pusē šī attēla, jūsu datora
RAM, ierosināt turpmāko.
Izrādās, ka tad, kad jūs darbināt programmu, piemēram a.out vai sveiki, neatkarīgi
programma ir, ka jūs esat rakstiski,
atkal, šie skaitļi mainās un tiem tiek ielādēta no cietā diska - kas ir
ilgtermiņa uzglabāšanu, paliek tur pat ja jūs kontaktdakšu -
iekrauj RAM.
RAM ir ātrāks nekā cieto disku.
Tas ir mazāks nekā cietajiem diskiem.
Bet tas ir, ja programmas dzīvot, bet jūs tos palaižot.
>> Tātad jūs dubultklikšķi programmu uz Mac vai PC - tas ir ielādēta no
cietais disks RAM.
Tiklīdz tas ir iekrauj RAM, kad skaitļi un tiem iet pie ceļu augšā,
tā sauc teksta segmentā.
Bet tad, tiklīdz jūsu programma faktiski sāk darboties, galvenais
funkcija sauc.
Un galvenais, kā mēs esam redzējuši, bieži ir vietējās mainīgie.
Un tas ir Ints un stīgas un simboli un kā.
Tātad, ja jūsu programma, kas jums ir rakstisks vai programma, kas jums ir
dubultā noklikšķinājuši izmanto daži mainīgie iekšpusē galvenais, viņi galu galā pie
apakšā jūsu kaudze atmiņas, lai runāt.
Tagad vairāk konkrētāk, ko tas patiesībā nozīmē?
Tas tikai nozīmē, ka, ja mēs gatavojamies numurēt lietas -
ja mēs gatavojamies skaits bytes RAM savā datorā, ievērosiet, ka
tas varētu būt baitu skaits nulle.
Tas varētu būt baitu numur viens, divi, trīs, četri, pieci, seši, visi
ceļu līdz pat patīk -
2000000000 būtu visu ceļu tur augšā.
Tātad, citiem vārdiem sakot, ja mēs runājam par RAM vai atmiņas ziņā baitos, tā
tikai nozīmē, ka kāds ir nolēmis, ko skaitu katram no
šie gabalos atmiņas.
>> Tātad, ja jums ir nepieciešams 32 bitus int, vai jums ir nepieciešams 8 bitus char, kur
tie nonāk atmiņā?
Nu konceptuāli, viņi tikai beigās apakšā šis
lieta, ko sauc kaudzīti.
Bet kas ir interesanti tagad ir, kad galvenā aicina funkcija.
Pieņemsim funkciju sauc foo, tikai patvaļīgi nosaukumu.
Kas notiek, ir galvenais ir apakšā šo kaudze atmiņu.
Foo tagad tiek likts uz augšu no galvenā atmiņā.
Tātad kādi vietējie mainīgie ka foo ir galu galā veida konceptuāli iepriekš
tiem, kas galvenais.
Ja foo aicina citu funkciju sauc bārs, šie mainīgie galu galā šeit.
Ja josla aicina kaut ko citu, šeit, šeit, šeit.
Tātad, kas ir interesanti par darbības programmu, ir, ka, kā jūs sauc funkcijas,
un kā tās funkcijas zvanu funkcijas, un kā šīs funkcijas zvanu funkciju,
Jūs veidot šo kaudzīti funkciju atmiņā.
Un tikai vienu reizi funkcija atgriež jūs sākat saņemt šo atmiņu atpakaļ.
Tātad viens no vienkāršākajiem veidiem, kā pietrūkt atmiņas, kas datorprogrammu ir
rakstīt funkcijas, kas nekad atgriezties.
>> Tātad, piemēram, pieņemsim demonstrēt tik daudz ar
apzināti bagijs programma.
Ļaujiet man iet uz priekšu un darīt # Ietvert , int galvenais (spēkā neesošs).
Un es esmu gatavojas darīt, kamēr (2> 1), kas, iespējams, nebūs nekad
mainīties uz mums.
Un ļaujiet man iet uz priekšu tagad un darīt printf.
Faktiski, tas būs mazāk vizuāli interesants.
Darīsim to.
Par int (i = 0, i> 0).
Pieņemsim šo kļūdu, i + +.
Un pieņemsim nav printf šeit.
Pieņemsim praktizēt to, ko man bija sludināja.
Pieņemsim ir metode šeit.
Anulēts koris, un mēs teikt int i.
Un tad es esmu gatavojas teikt, printf -
ak, pieņemsim šo interesantāku.
Pieņemsim faktiski nav drukāt neko.
Darīsim to.
Koris (i).
>> Labi.
Tātad tas ir bagijs, jo kāpēc?
Es esmu padarot šo augšu, kā es iet, jo programma nav reāli darīt neko
procentu.
Bet tas nav mērķis.
Mērķis ir uzrakstīt programmu, kuras galvenā funkcija ko dara, acīmredzot?
Zvanu pati.
Un patiesībā, mums nav vajadzīga cilpa.
Pieņemsim pat vienkāršos tas vienkārši tā, lai aizmirst par patiešām
fundamentāls kļūda.
Galvenie zvani koris dziedāt kādu koris.
Tad es tomēr kaut ko stulbu, un man bija koris zvanu koris, jo es pieņemts
kāds cits gatavojas to īstenot varbūt.
Un tagad tas nav gatavojas sastādīt vēl.
Man vajag darīt?
Man vajag prototips, atcerēties.
Tāpēc man ir nepieciešams, lai būtu šeit anulēts koris (int i);.
>> Tāpēc tagad, ja es eju uz leju šeit -
patiesībā, pieņemsim izmantot lielāku logu.
Iesim uz priekšu un veikt koris.
Izmantot neidentificēts deklarantam i.
Ak, tas bija muļķīgi.
Mums nav vajadzīga argumentu.
Darīsim to.
Wish mums bija sākām šo ceļu.
Tas būtu bijis daudz vieglāk programma rakstīt.
Tātad tur.
Tagad iesim uz manu termināļa logu, atkārtoti palaist šķindēt.
Un šeit mēs iet.
Tas bija ļoti ātri.
Kas patiesībā vienkārši notika, lai gan?
Nu, tagad es ņemšu pievienot drukas rindu, lai mēs varētu redzēt.
Tāpēc ļaujiet man teikt printf, teiksim, es esmu šeit.
Labi, ne mainīgie, mēs atstāt to tāpat.
Ļaujiet man vēlreiz palaist darīt.
Ļaujiet man atkārtoti palaist koris.
Un nāk par.
Saglabātu turpinās.
Kā malā, kāpēc tā nav avarēja vēl?
Segmentācija vaina notika super ātri pirms tam.
[Dzirdams]
David J. Malan: Tieši tā.
Tāpēc ir nepieciešams laiks, lai drukātu.
Tas tikai ņem vairāk darbu par datora daļas.
Un tur tas ir.
Segmentācija vaina.
>> Tātad paziņojums cik ātri programmas darbojas.
Ja jūs neesat drukāšanas neko, super ātri.
Bet mēs joprojām got šo segmentācijas vaina, jo to, kas notiek?
Nu, ja jūs domājat par to, kā jūsu datora atmiņā ir izklāstīts, šis
notiek, ir galvenais.
Bet šeit -
pieņemsim tikai nosaukt šo koris, un sauksim šo koris.
Un tagad, ja man darīt manu estētiku labi, tas ir tikai gatavojas teikt koris,
koris, koris, koris, koris, koris, koris, ad nauseum.
Un visbeidzot, kas notiks?
Ja liels attēls burtiski ir tas, kas vienkārši notiek konceptuāli?
Kaudzīti pārtēriņš kaudzi.
Vai vēl ļaunāk, jūs vienkārši pārsniegts viss, ieskaitot teksta segmentā, kas ir
kad skaitļi un tie, kas pārstāv savu programmu.
Īsāk sakot, tas ir vienkārši super, super slikti.
Labi?
Jūsu programmā ir spiraled ārpus kontroles.
Jūs izmantojat kā vairāk atmiņas, nekā paredzēts visiem, jo ​​stulba
kļūda, šajā gadījumā.
Vai šajā gadījumā, ļoti apzināti darīts funkcija zvana pati.
Tagad tas ir ne visi slikti.
Funkcijas, kas sevi dēvēja tiešām ir ļoti liels spēks
kad jūs to izmantot pareizi.
Man ir neizmanto to pareizi šeit.
>> Tātad tas nav viss slikti.
Bet fakts, ka es nekad tiešām pārtraukt zvana sevi ir būtiska
vājums šeit par šo programmu.
Tātad, ja mēs ejam ar visu šo?
Nu, ko īsti notiek?
Kad es zvanu pieauguma funkcijas, tāpat kā mēs to darām ar šiem piemēriem,
Man ir vērtība, piemēram, 1 ka es iet iekšā
Es iet uz kopiju numur viens.
Tāpēc šādi notiek.
Tāpēc iesim uz pieauguma piemērs.
Un šis puisis tiesības pār šeit.
Tātad, šeit ir to, kas patiesībā notiek.
Kad es piezvanīju pieaugumu, un es iet uz X, piktogrammām, kas ir
šeit notiek, tas ir -
ja man ir vērtība 1 glabājas šeit, un es tiešām aicinu pieaugumu, kas
tagad sauc koris -
Jā, tas ir throwing mani šeit.
Tāpēc sauksim šo pieaugumu.
Un mēs nezinām, kas tas nākamais uzdevums būs.
Tātad, kas patiesībā notiek, ir šeit kaut kur galvenais, man ir rieciens
atmiņa, kas ir uzglabāt numuru 1.
Kad es aicinu pieaugumu, es esmu, izmantojot citu rieciens atmiņas, bet tagad es
ir kopiju 1.
Kad es pieauguma šo vērtību, tas kļūst 2 - briesmīgi rakstīts uz
ekrāns šeit.
Bet tad, kas notiek ātrāk pieauguma atdevi?
Šī atmiņa vienkārši izpaužas nodota atpakaļ uz operētājsistēmu, kas nozīmē visu
Jūs esat darījuši, ir nekas noderīgs.
Viens, kas sākotnēji tika ietverts galvenais ir joprojām faktiski tur.
>> Tātad, kur mēs nokļūsim ar šo?
Nu, izrādās, ka atmiņā ir tas atpakaļ atpakaļ secību
baiti ka jums var likt sīkumi iekšā
Un izrādās, ka mēs jau esam redzējuši kaut kas ietver liekot
lietas atpakaļ atpakaļ atpakaļ atpakaļ.
Kas ir virkne, kas balstās uz nedēļu un vienu tagad nedēļu divi?
Tātad tas ir tikai kolekcija rakstzīmes.
Tātad izrādās, tāpat kā jūs varat ievietot numurus atmiņā, tāpat jūs varat
likts rakstzīmes atmiņā.
Un, kad sāksim rakstzīmes atmiņā atpakaļ atpakaļ atpakaļ uz
atpakaļ, izrādās, ka, izmantojot vienkāršāko lietām, piemēram, par cilpu vai
kamēr cilpa, mēs varam atkārtot -
no kreisās uz labo pa virknē burtiem -
un sākt masāžas tos dažādiem burtiem pavisam.
Varētu kļūt B. B varētu kļūt C. Tāpēc, ka galu galā, mēs varam veikt
Angļu teikums, kas faktiski ir jēga un pārvērst katru no tām
burti vienam ejot caur mūsu datora atmiņā paliek
Tiesības uz faktiski šifrēt.
>> Tāpēc pieņemsim mūsu piecu minūšu pārtraukumu šeit, un, kad mēs atgriezīsimies, mēs
uzsāktu šo procesu kodēšanas informācija.
>> Labi.
Tātad, pirms mēs ienirt uz kādu crypto un šīs lietas sauc bloki, ļaujiet man
pauzes, lai kādi jautājumi, jo es jūtu, ka man tiešām veida neskaidri daži
šīm tēmām.
Tāpēc pieņemsim noteikt tagad, ja mēs varam.
Tātad mēs vienkārši runājām par atgriešanās vērtībām.
Mēs runājām par argumentiem.
Un mēs runājām par šo jēdzienu, ko mēs būsim atpakaļ uz nedēļās
nāc, no skatīšanās atmiņas par visu ķekars no šiem stacked
paplātes, lai runāt.
No apakšas uz augšu, piemēram, ka katrs paplātes, kas izpaužas likts uz skursteņa atspoguļo
funkcija, kas pašlaik tiek saukta.
Kādi jautājumi?
Tā kā par - ļaujiet man mēģināt lūdzot jautājumu.
Es turpinu nesabojātos, taču tagad it's - you've visi redzējuši zēna seju.
Tātad mēs būsim atpakaļ uz to.
>> Tāpēc ļaujiet man uzdot jautājumu šeit.
Ļaujiet man vienkāršot šo atpakaļ uz kāda tā bija pirms dažiem mūsu agrāk Q & A.
Un fakts, ka pieaugums ir atvērta iekavas, int skaits, slēgtas
iekavas.
Kāda int skaits pārstāv?
[Dzirdams]
David J. Malan: arguments.
Labi, bet kas ir arguments?
[Dzirdams]
David J. Malan: Atvainojiet, kas tas ir?
SPEAKER 3: Kaut jūs iet iekšā
David J. Malan: Labi.
Tātad kaut kas jums iet iekšā
Un vispār, tas ir tikai ieejas.
Ja jūs esat rakstiski funkciju un kuru funkcijas ir mērķis dzīvē ir darīt
kaut nedaudz atšķiras katru reizi, kad lietojat to, tad vienīgais veids, kā
Lai tas notiktu tiešām, šķiet, būtu nodrošināt to ar ieguldījumu, lai tā
var darīt kaut ko citu, ar šo ieejas katru reizi.
>> Tātad jums ir nepieciešams norādīt divas lietas, kad funkcija tiek ieejas.
Jums ir nepieciešams norādīt vārdu, kas jūs vēlaties, lai dotu šo ieguldījumu, vienīgi
savas ērtības, lai jūs varētu atsaukties uz to, kas tu funkciju
sevi ir rakstiski, kā es šeit 32 rindā.
Bet jums arī nepieciešams norādīt tā tipu, jo C ir programmēšanas valoda
ka tikai prasa
ka, ja jūs vēlaties mainīgo, jums ir pateikt datoram, ko
datu tips tas ir,
liela daļa tā, ka tā zina, cik daudz biti
piešķirt uz šo mainīgo.
, Jo tas varētu būt Six -
žēl, tas nebūs seši.
Tas var būt 16.
Tas var būt 8.
Tas var būt 32, pat 64.
Bet dators jāzina.
Tagad kreisajā pusē int atspoguļo to, tieši pretēji?
[Dzirdams]
David J. Malan: Kas tas ir?
[Dzirdams]
David J. Malan: tips funkciju un, konkrētāk,
veids no saražotā.
Tiesības.
Tātad tā lieta iekavās pārstāv tās ieejas, ja tādi ir,
lieta kreisi pārstāv savu produkciju.
Un šajā gadījumā, pieauguma acīmredzot atgriež int.
Un tā int ir atgriešanās tips šīs funkcijas.
>> Ko tas nozīmē ar atgriešanu?
Burtiski, jūs izmantojat atslēgvārdu atdevi.
Un tad, ja tas, ko jūs atgriežas labi no atslēgvārds ir
vesels, tad tas ir patiešām saskan ar to, ko mēs esam solīja.
Jūs nevar darīt kaut kas līdzīgs šim -
Sveiki, pasaule -
jo tas ir virkne.
Acīmredzot tas nav vesels skaitlis.
Tātad īsumā, slogs ir tiešām par mums, programmētājs, būs specifiska
ko mēs esam atgriežas un tad tiešām iet par to atpakaļ.
Un tad, lai tad vēl skaidrs konteksts -
tur viņš ir atkal.
Konteksts -
liels pārsteigums nāk tikai brīdi.
Konteksts šeit tagad ir tas, ka datora atmiņa ir, atkal,
gigabaitu, divi gigabaiti, neatkarīgi.
Varbūt tas ir vairāk.
Varbūt tas ir mazāk.
Bet dators uzskata to par tādu, kam dažādas sadaļas.
Kaut kas tur lejā.
Kaut kas cits iet uz augšu tur.
Tēmām iet pa vidu.
Un šodien, mēs vienkārši sākt stāstīt šo stāstu.
>> Bet mēs būsim atpakaļ uz šo laika gaitā.
Tagad, vienīgais gabals atmiņas mums patiešām rūp ir teksta segments
jo tas tikai atspoguļo nulles un ones
kas šķindēt ir izvadīt.
Tātad, ja jūs palaist komandu pie klaviatūras, piemēram a.out, vai jūs dubultā
noklikšķiniet uz ikonas Mac OS vai Windows, jūsu programma ir ielādēta no cietā
iedzīt RAM.
Un tas ir plopped augšpusē datora RAM, lai runāt.
Tagad tikmēr, kā jūsu programma sākas un galvenais izpaužas sauc
Programma Jūs rakstījāt vai programmu Microsoft vai Apple rakstīja, kāds no tās
vietējās mainīgie galu galā tur lejā apakšā datora atmiņā.
Bet, ja galvenais aicina citu funkciju, kas pati ir mainīgos vai
argumenti, viņi galu galā virs tā.
Un, ja šī funkcija prasa kaut ko, viņi galu galā virs tā,
virs tā, virs tā.
Un tikai tad, kad funkcija tiek darīts izpildes dara kaudze paplātes, tāpēc
runāt, sāk iegūt zemāk un zemāk.
Un tas ir tas, ko tad, īsumā, izskaidro, kāpēc, kad jūs zvanu Cube -
vai jūs saucat pieaugumu -
jūs iet uz kopiju vērtības.
Un ko tas nozīmē piktogrammām ir, ka jūs burtiski rakstot
citā daļā atmiņu 1 numuru, mainot ka 1 līdz 2, ja
pieaugums -
vai līdz 8 ir, ja kuba -
un tad izmet atmiņu prom, tiklīdz palielinājums vai kubā
funkcija atgriež.
>> Jautājums.
[Dzirdams]
David J. Malan: Kur - globālie mainīgie tiek glabāti, kas ir
Pašlaik sauc inicializēts dati vai neinicializēts dati.
Atšķirība ir, ja jums ir globālā mainīgā, un jūs piešķirat to
Nekavējoties ar vienādības zīmes vērtība, tas beidzas līdz augšpusē tur.
Un, ja jūs vienkārši pateikt int x semikolu ar nekādas vērtības, tas beidzas līdz mazliet
mazāks RAM vienkārši pēc vienošanās.
Citi jautājumi.
Labi.
>> Tātad šo attēlu nāks atpakaļ, jo mēs iegūtu vairāk spēcīgs ar ko mēs varam darīt
ar datoru.
Bet tagad, pieņemsim ir īss intro uz kriptogrāfija, īpaša veida
Kriptogrāfija tas neatrisina visas pasaules problēmas, bet tas atrisinātu
daži no tiem.
Šajā gadījumā šeit, mums ir kaut ko sauc noslēpums atslēgas kriptogrāfiju.
Un slepenā atslēga kriptogrāfija, kā nosaukums liecina, iegūst savu drošību
no noslēpumu.
Tātad, piemēram, ja jūs esat atpakaļ pakāpē skolā un jūs iet
maz noslēpums mīlestības vēstuli uz zēns vai meitene jūs drupināšanas par - ja tu
gribēju iet, ka ar auditoriju, jūs, iespējams, nebūtu rakstīt
šāds angļu piezīmi vai kāds jūsu dzimtā valoda ir, drīzāk, tu
varētu šifrēt to.
Vai jūs varētu vienkārši nosūtīt tos īsziņu šajās dienās.
Bet jūs tiešām var iet viņiem piezīmi visā klasē.
Un tas ir jādara droši, tādā veidā, ka jūsu draugi un skolotājs
nezinu, ko jūs esat rakstiski, jūs varētu nākt klajā ar diezgan vienkāršu
algoritms -
Jauns gan jūs varētu būt -
lai tikai motokross vārdiem.
Tā vietā rakstot, jūs varētu uzrakstīt B. vietā B, jūs varētu uzrakstīt
C. vietā C, jūs varētu rakstīt D, un tā tālāk.
Vai jūs varētu nākt klajā ar daudz sarežģītu tulkojumu vēstulēm
dažādām vēstulēm.
Bet nozveja ir zēns vai meitene, kuram jūs sūtāt šo piezīmi ir
zināt kaut ko.
Kas ir tas, protams?
Piemēram, kādas ir jūsu noslēpums ir.
Piemēram, kāda ir starp AS un BS un Cs un DS kartēšana?
Tas ir tikai pievienojot vienu, tā sakot, uz katru no burtiem, lai iet no
Uz B, B uz C?
Tas ir daudz sarežģītāka, nekā?
Tātad jūs un jūsu simpātiju ir nepieciešama šo slepeno informāciju.
Bet tur ir sava veida nozvejas-22 šeit.
Ja šī ir pirmā reizi, kad jūs sūtāt šo mīlestības vēstuli caur
klasē, kā tas, ka zēns vai meitene dodas uz zināt noslēpums pat ir?
Tātad slepenā atslēga Šifrēšanas neatrisina visas pasaules problēmas.
Un tur tiešām attiecības, ka mēs atgriezīsimies pie virzienā
semestra beigās.
>> Tāpat, ir neviens no mums, iespējams, kādreiz nosūtīts -
Tāpat, lielākā daļa no mums nevar zināt kādu, kas darbojas, piemēram, pie
Amazon.com.
Un tomēr, daudzi no mums ir iespējams iegādāties sīkumi pie Amazon.com.
Un mēs esam mācīti domāt, ka šos e-komercijas
darījumi ir droši.
Labi?
URL, iespējams saka https.
Tur varbūt muļķīgi mazliet atslēdziņa ikonas kaut kur.
Tur ir dažas no kriptogrāfijas veida nodrošināt savu kredītkartes informāciju
starp jums un Amazon.com.
Un tomēr, ja kriptogrāfija ietver zinot kādu noslēpumu, un tomēr man nav
zināt kāds pie Amazon, un es esmu, protams, nav sakārtoti jebkāda veida
noslēpums ar kādu Amazon, kā mans dators vai mana pārlūkprogramma to izdarīt?
Nu, izrādās, tur ir citi veidi, kriptogrāfija kopā kas atrisinās
ka problēma.
Bet šodien, mēs koncentrēties uz vienkāršu vienu, kur jūs varat sakārtot
pārietu zināt kādu noslēpumu, piemēram, 1 plus vai kādu starp AS un BS kartēšanu.
>> Un par kriptogrāfiju process parasti ietver šo.
Jums ir dažas teksta, kas attēlota šeit kreisi.
Jūs palaist to caur kādu algoritmu vai procedūras
šifrējot to.
Varbūt tas ir tikai kļūst B un B kļūst C. un tad jūs galu galā ar
šifrēt tekstu.
Tikmēr, kad jūsu simpātiju saņem slepeno piezīmi, viņš vai viņa ir, tad
atšifrēt ar vispārīgi atpakaļgaitas ka algoritmu, lai iegūtu
atpakaļ uz teksta.
Tagad tur ir fiziski iemiesojumi šo.
Piemēram, tas ir mazliet noslēpums dekodera gredzenu.
Un tas ir gredzens, kas nozīmē, ka tur ir divas ciparnīcas šeit.
Uz ārējās perifērijā šī lieta, tur ir burti no A līdz Z,
kaut viņi nejaušā secībā.
Un no iekšpuses, tur tiešām daži skaitļi, piemēram, ka ar šo
gredzens, jūs varat veida vērsties ārpus tā, bet ne no iekšpuses, lai rindā
numurus ar burtiem.
Un klipa jūs gatavojaties redzēt - no kuriem daži jūs varētu būt redzējis 24/7
ap Ziemassvētku sezonā no filmu sauc Ziemassvētku stāsts.
Jūs redzēsiet, ka maz Ralphie bija tik ieinteresēts, lai noskaidrotu, ko maz bāreni
Annie noslēpums vēstījums bija viņam, ka tika paziņots, es domāju,
forma skaitliskajā ziņojumus par sērijveida kastē.
Un jums bija uzkrāt visu maz kartes, kas nāca
ar labības kastē.
Jums bija uz pastu tos collas
Jums bija, lai saņemtu atpakaļ slepeno dekodera gredzenu, lai jūs varētu beidzot saprast
, ko kartēšana ir starp burtiem un cipariem,
vai burti un burti.
Tāpēc es jums šo īso klipu no Ziemassvētku stāsts motivēt PSET 2 un
Mūsu diskusija, pēc brīža, par masīvu.
Tātad šeit mums ir Ralphie.
>> [VIDEO ATSKAŅOŠANA]
-Vai tas zināms visiem un dažādi, ka Ralfs Pārkers tiek iecelts
no Little Orphan Annie Secret Circle loceklis un viņam ir tiesības uz visiem
godina un ieguvumi rodas tiem.
-Parakstīts, Mazā Bārenis Annija.
Parakstu, Pierre Andre!
Ar tinti!
Apbalvojumus un ieguvumi, kas jau vecumā no deviņiem.
Nāc, pieņemsim nokļūt ar to.
Man nav nepieciešams visu, kas jazz par kontrabandistiem un pirāti.
-Dziesmas rīt naktī noslēguma piedzīvojumu Melnais
Pirātu kuģis.
Tagad ir pienācis laiks, lai Annie slepeno ziņu jums biedri
no Secret Circle.
Atcerieties, bērni, tikai locekļi Annie s Secret Circle var atšifrēt
Annie noslēpums ziņa.
Atcerieties, Annija ir atkarīgs no jums.
Iestatīt savu pins līdz B2.
Šeit ir ziņa.
12, 11 -
-Es esmu savā pirmajā slepenā sanāksmē.
-14, 11, 18, 16 -
Pjērs bija liels balss šovakar.
Es varētu pateikt, ka šovakar vēstījums bija ļoti svarīgi.
-3, 25.
Tas ir vēstījums no Annie pati.
Atcerieties, nav pateikt kāds.
-90 Sekundes vēlāk, es esmu tikai telpā mājā, kur zēns no deviņiem
varētu sēdēt privātumu un atšifrēt.
Aha, B. Es devos uz nākamo.
E. Pirmais vārds ir jābūt.
S. Tā nāca vieglāk tagad.
U.
-Ak, come on, Ralphie.
Man iet.
-I'll būt tiesības uz leju, ma.
-Gee sīkšana.
-T, O. Noteikti.
Noteikti ko?
Kas bija maz Bārenis Annija cenšas pateikt?
Noteikti ko?
-Ralphie!
Randy ir ieguvuši iet.
Vai jūs, lūdzu, nākt ārā?
-Nu labi, ma.
Es būšu tiesības out.
-Es biju kļūst tuvāk tagad.
Spriedze bija briesmīga.
Kas tas bija?
No planētas liktenis var pakārt līdzsvarā.
-Ralphie!
Randy dabūja iet.
-I'll būt labi ārā, lai kliedz skaļi.
-Gee, gandrīz tur.
Mani pirksti lidoja.
Mans prāts bija tērauda lamatas.
Katru poru virmoja.
Tas bija gandrīz skaidrs.
Jā, jā, jā, jā.
-Noteikti dzert savu Ovaltine.
Ovaltine?
Apaļīgs komerciāla?
Dēls kuce.
[END VIDEO ATSKAŅOŠANA]
>> David J. Malan: Tātad mums ir kriptogrāfiju.
Tātad, kā ar datoru, mēs varam iet par īstenošanu vai
pārstāv lietas, kā šis?
Nu, mums ir nepieciešams veids, kā izteikt sevi nedaudz elastīgāk nekā
Mūsu mainīgie līdz šim sniegtie pakalpojumi.
Mēs esam bija Ints.
Mēs esam bija chars.
Mēs esam bija pludiņus un dubultspēlēs un daži citi.
Bet tie ir unikāli atmiņu, kas nav īsti ļauj mums
izteikt lietas, piemēram, vārdus un teikumus un frāzes.
Patiesi, mēs esam sauc tādas lietas stīgas.
Bet mēs solīja, ka tas patiešām ir tikai vienkāršošanu CS50 ar
bibliotēka, kas mēs esam, kas vēlas mizu atpakaļ.
>> Un tāpēc sāksim to darīt šeit.
Ļaujiet man iet uz priekšu un atvērt failu -
visi šie faili ir pieejami kā parasti tiešsaistē -
aicināja array.c lai atrisinātu problēmu nav saistīta ar stīgas bet glezno
attēlu šeit, kā mēs varētu izmantot kaut ko sauc par masīvu.
Masīvs ir datu tips.
Tas ir veids, mainīgais, par veidu, ka ir vairākas mazākas datu tipu
iekšpusē tā atpakaļ atpakaļ atpakaļ atpakaļ.
Tātad, piemēram, ja mēs vēlamies, lai rakstītu maz programmu, kas sniedz jums jūsu
viktorīna vidējo kursu, piemēram, 50, kas ir divas viktorīnas, jūs varētu ļoti viegli
rakstīt šo programmu - pamatā pat par dažiem pagājušās nedēļas materiālu -
izmantojot GetInt un mainīgo lielumu pāris.
Int quiz1, int quiz2, un tas ir diezgan vienkārši.
Tas ir varbūt 10, 20 rindas kods, max, lai īstenotu programmu, kas lūdz
lietotājs divas viktorīnu punktus un pēc tam aprēķina to vidējais pievienojot tos
kopā, dalot ar divi, un tad izdrukāt rezultātu.
Mēs droši vien varētu izdarīt diezgan viegli tagad pēc
daži minūšu skaits.
>> Bet problēma ir tā, ka pieņemsim, ka 50 bija trīs viktorīnas vai četri.
Pieņemsim, ka jūs vēlaties izmantot to pašu programmu klase, kas bija
nedēļas viktorīnas.
Padomā par klasi, kas ir nedēļas viktorīnas.
Ja tur ir, piemēram, 16 vai tik nedēļas semestrī, tagad jums ir 16 mainīgie -
int quiz1, int quiz2, int quiz3, int quiz4.
Tiklīdz jūs sākat redzēt šo atlaišanu, tas kopēšanu un ielīmēšanu
koda, tas ir jāsāk, lai jūs vēlaties, tur bija labāks veids.
Un par laimi, jo bloki, tur ir.
Tāpēc pieņemsim darīt.
Pirmkārt, ļaujiet man iepazīstināt ļoti vienkārša lieta, ka mēs esam ne izmantots līdz šim,
bet jūs redzēsiet to reizēm kodu.
Tas ir tas, ko parasti sauc nemainīgs.
Tāpēc tas konstanti nozīmē, ka šī vērtība nekad nemainās.
Cilvēka konvencija veidojot nemainīga ir izmantot visu kapitālu
burti, tikai tāpēc, ka tas patiešām izceļas savu kodu.
Un īpašs atslēgvārdu, ka jūs izmantot C ir # definēt.
Tātad, ja jūs sakāt # define, tad atstarpi, tad vārdu, kuru vēlaties izmantot
Pastāvīga vārds, un tad vērtība nemainās.
Tātad paziņojuma, tas ir atšķirīgs no piešķirot kaut mainīgo.
Nav vienlīdzības zīmi.
Nav semikolu.
Tas ir tas, ko parasti sauc par apstrādātāju direktīvas, bet vairāk par
ka cita laika.
>> Tagad, tas rada nemainīgu sauc vērtība viktorīnas kuru faktiskā
skaitliskā vērtība ir 2.
Tātad visur jūs redzēt viktorīnas, viktorīnas, aptaujas visā šo failu, kas ir
tikai numurs 2.
Tagad, ja es paskatos galvenais tagad, pieņemsim redzēt, kā tas darbojas.
Sākumā tas izskatās mazliet noslēpumains.
Bet tas viss ir sīkumi, no vienas nedēļas.
Pieprasīt no lietotāja pakāpēs.
Kā mēs to darām?
Nu, 22 līnija -
Tas ir patiešām sulīgs daļa -
Es paziņoju, apgrozāmos līdzekļus, bet ne tikai viena pludiņš.
Es esmu paziņojot, drīzāk, masīvu peldošā komata vērtību.
Ka mainīgais tiks sauc pakāpes, kā jau minēts šeit.
Bet vienīgais gabals jaunās sintakses tad ir šie kvadrātiekavas, fakts
ka es esmu teica peldēt pakāpes un tad atveriet kronšteins un tad numurs.
Paziņojums, ja tas ir nemainīgs, tas ir tāpat kā mēs to darījām.
Tas nozīmē, hey dators, dod man divas pludiņi, un pieņemsim kolektīvi piezvanīt
viņiem pakāpes.
Tas ir pretstatā daudz garlaicīgs process, kā šis.
Peldēt Grade1, peldēt Grade2, un tā tālāk.
Tāpēc masīvs ļauj mums īstenot šo ideju, bet daudz mazāk messily, jo
tādā veidā, ka mēs varam rakstīt vienu rindiņu kodu, nevis, teiksim, 16 16 A
nedēļa semestris.
Tāpēc es negribēju grūti kods 2, jo, ja jūs domājat par šo tagad
loģiski - pieņemsim nākamgad CS50 maiņas 3 viktorīnas vietā.
Un man bija numuru 2 šeit.
Man bija numuru 2 šeit.
Tā kļūst ļoti garlaicīgs un ļoti viegli skrūvējamu augšu un uz nejauši mainīt
viena vērtība līdz 3 un garām kādu citu vērtību 2.
Tāpēc es esmu gatavojas nevis abstrakti šo prom, un izmantot šo konstante, ka tās
nosaukums, nekad nemainās.
Un tagad, nav svarīgi, vai mums ir dažādi viktorīnas šogad vai nākamā, es
vienkārši ir mainīt to vienā vietā, šeit augšā.
>> Tā ka viss konstante ir.
Tikmēr jaunā konceptuālā iezīme ir tā, ka no masīva.
Tātad kvadrātiekavas man šo daudz pludiņus un ļauj man kolektīvi
viņiem piezvanīt pakāpes šeit.
Tāpēc tagad pieņemsim redzēt, ko es esmu gatavojas darīt.
Šeit 24 līnija ir par sākums cilpu.
Tas ir patiešām nekas iedomātā.
Tas ir vienkārši, izmantojot aptaujas nevis iekodēts numuru.
Bet tur nekas intelektuāli atšķiras no tiem pagājušajā nedēļā.
Tas ir tikai printf.
Tātad printf ("viktorīna skaits% d no% d"), jo es tikai vēlos, lai izdrukātu dot man viktorīnas
numurs diviem un tad viens no diviem divi.
Tātad šis ir tīri estētisks lieta.
Bet interesanti daļa tagad ir 27 rindā.
Lai aizpildītu vienā no divām vietturu ar peldošo komatu
vērtība, tu atkal izmantot kvadrātiekavas.
Šajā gadījumā, es esmu, izmantojot i, jo šis cilpa ir sācies ar I līdzinoties
kāda vērtība, acīmredzot?
0.
>> Tātad pirmajā atkārtojuma šīs cilpas, tas ir, it kā es
rakstīja šo kodu.
Bet otrajā atkārtojuma šīs cilpas, tas ir, it kā es
rakstīja šo manā kodu.
Bet fakts, ka es esmu, izmantojot mainīgo ir ideāls, jo, kā nosaukums
ierosina, tas mainās savu vērtību par katru atkārtojuma.
Tāpēc es esmu aizpildot šī masīva vienas vietas laikā.
Ko tas masīvs izskatās?
Nu, iemesls, kāpēc es vērsa šo super vienkāršu taisnstūri uz ekrāna šeit
Pirms šī iemesla.
Masīvs ir tikai atmiņas rieciens seko cita rieciens atmiņas,
seko cits rieciens atmiņu, un tā tālāk.
Tātad, ja mans masīvs ir 2 izmēru, šajā gadījumā šeit, viss, ko es varētu darīt ar
ierakstot manu viktorīnu punktus, piemēram, šeit.
Man 100 par šo vienu.
Un tad es saņēmu 99 par šo vienu.
Tad šī atmiņa varētu pat tikt izmantots, jo es esmu tikai lūdza
Dators masīva 2 izmēru.
Šie laukumi ir joprojām.
Labi?
Jums vēl ir divi gigabaiti RAM, pat ja tu esi tikai
lūdzot divus pludiņi.
Tātad aiz masīviem ideja ir tāda, ka dators vienkārši ņem rieciens atmiņas
un tad proporcionāli sadala mazākos gabalos atpakaļ atpakaļ atpakaļ atpakaļ.
Un tā tas viss masīvs.
Tas ir blakusesoši rieciens atmiņas, iekšā kas var nodot lietas.
>> Tagad tas notiek, lai pēc tam darīt tikai dažas boring aritmētika.
Ja es ritiniet uz leju šeit, tas ir, ja es tad atkārtot pa masīva.
Es nāku klajā ar summējot visu masīvā vērtībām.
Un tad es izmantot apaļo funkciju šeit, lai faktiski darīt
Apkopojot dalīts ar viktorīnas.
Bet ļaujiet man vilnis savu roku tajā kā sava veida pietiekami aritmētikas tagad.
Bet viss, kas dara man beidzot ir skaitļošanas vidēji.
Tāpēc vispirms viktorīna plus 2. viktorīna, dalīts ar 2, un pēc tam drukāšanas
tā veic kā int.
>> Bet pieņemsim tagad pāreja uz citu piemēru sauc virkne1,
kas krāsām līdzīgu ainu, bet, izmantojot stīgām.
Ļaujiet man iet uz priekšu un vienkāršot tikai brīdi.
Un piedod iedobi tagad.
Paziņojums šā piemērā 19 līnijā, man string no lietotāja.
Bet pamanīt to, ko es esmu nākamais dara rindās 22 vēlāk.
Es esmu tiešām atkārtojot no i līdz - un tas ir jauns triks -
strlen, stīgu garumu.
Tas ir funkcija, kas nāk ar C, ka, ja jūs iet to stīgu, tā stāsta
Jūs cik rakstzīmes ir šajā virknē.
Tas arī viss.
Fakts, ka tā ir strlen instead stīgu garums ir tikai tāpēc, ka tas ir
vairāk kodolīgs.
Pirms 30 gadiem, cilvēkiem patika rakstīt lietas kā īsi vien iespējams.
Tāpēc mēs esam tur, ka konvenciju šeit.
I + + tikai nozīmē pieauguma i katrā atkārtojuma.
Un tagad paziņojums šo, kas ir patiešām interesanti.
Tātad 24 rindā, es saku datoru, man raksturs ziņām astoņi
biti, un to sauc c.
Bet kas tas ir par labajā pusē saka?
Angļu, ko tas pārstāv?
[Dzirdams]
David J. Malan: Tieši tā.
Dodiet man pirmo rakstzīmi masīvs.
Vai vispār, man i-rakstzīmi masīvs.
Un saprast, tas ir svarīgi, ka šobrīd kā datorzinātnieku, mēs esam patiesībā
skaitot no 0.
Jums nav rīcības brīvības tagad, lai sāktu to darīt.
Tagad jums ir rīkosies saskaņā ar datoru cerībām un
skaitīt no nulles, jo [0] būs pirmais
raksturs virknē.
[1] būs otrais.
[2] būs trešais, un tā tālāk.
Tātad šajā programmā, ja es apkopot to - tas ir, atkal, virkne1.
>> Lai padarītu virkne1.
Un tagad es palaist virkne1 manā termināļa logā.
Tas gaida ievadi, tāpēc es esmu gatavojas rakstīt, teiksim, David.
Enter.
Un tagad tas drukā David viss dažādās līnijās, jo
paziņojums, ko es esmu dara.
Es esmu izdevējdarbība vienu rakstzīmi laikā.
Tagad mēs ne iedziļināties sīkāk šodien par šo.
Bet es svītrots brīdi pirms šīs pārbaudes šeit.
Izrādās, ka tad, ja lietotājs nedarbojas atbilstoši, sacīkstes, vai vienkārši
sajaukt, jūs faktiski var neizdoties, lai sniegtu virkni kādu garumu.
Ja jūs hit nepareizu taustiņu uz tastatūras, jūs varētu dot
Nav virknes vispār.
Vai, ja jūs esat ļaunprātīga, jūs varētu mēģināt ielīmēt gigabaitu vērts
eseja, lai aizpildītu šo virkni.
Un, ja dators darbojas no atmiņas, izrādās, ka mēs ejam
lai saņemtu atpakaļ šo īpašo vērtību sauc null.
Tātad tagad, tikai zinu, ka tur ir šī īpašā vērtība sauc Null, ka
ļaus mums pārbaudīt, kad mēs esam no atmiņas, cita starpā.
>> Bet, ja es atvērt tagad virkne2, paziņojums viena atšķirība šeit.
Paziņojums viena atšķirība šeit ar virkne2.
Ar virkne2, šis cilpa ir nedaudz atšķirīgs.
Ļaujiet man izdzēst nulls, lai mēs varētu runāt par tiem citā laikā.
Bet kas ir atšķirīgs par, lai cilpa šoreiz?
Un es varētu doties atpakaļ uz iepriekšējo piemēru.
Tā ka ir versija divi.
Šī ir versija viens.
Viens, divi, viens divi.
Tāpēc strlen zvans ir kur?
Tas pirmajā daļā attiecībā uz cilpas.
Jebkurš domas par to, kāpēc es esmu to izdarīt?
Yeah.
[Dzirdams]
David J. Malan: Tātad mums nav zvanu funkciju katru reizi.
Tieši tā.
Atceros no uz cilpas, kas viņi super vienkārša, kad jūs veida
saprotu, ka tas ir inicializācijas,
nosacījums, un atjauninājums.
Problēma ir tā, ka nosacījums notiek par katru
atkārtojuma no cilpas.
Un tāpēc šajā piemērā šeit, kas ir slikti par to,
ka šis ir mans stāvoklis?
Jūs aicināt strlen atkal un atkal un atkal.
Bet tad, kad es esmu drukāti Dāvids, šī virknes garums ir pieci.
Un tas nav gatavojas mainīt uz katru atkārtojuma no cilpas, jo
stīgu joprojām D-V-I-D. Tātad tas ir mājiens par to, kas notiek, lai kļūtu
arvien svarīga ideja pazīstama kā dizaina lēmumu, kur - vienkārši nav
padarīt datoru darīt nevajadzīgu darbu.
>> Tagad tāpat kā ložņāt preview 2 PSET, PSET 2 standarta izdevuma
gatavojas apstrīdēt jums tiešām īstenotu dažas vairākus cipariem, daži
skaits šifrēšanas algoritmu, lai jūs var gan šifrēt un atšifrēt
noslēpums ziņas, līdzīgi vienas Ralphie tur dekodēt.
Jo hakeru izdevumā 2 PSET, mēs gatavojamies iet mazliet tālāk.
Mēs ejam, lai rokas jums failu no faktiskā datora sistēmu, kas satur
viss ķekars lietotājvārdus un faktisko šifrētu paroles, un izaicinājums
par hakeru valodā būs kreka tās paroles un izdomāt
, ko kriptogrāfijas vai kāda slepena tika izmantots, lai faktiski
ģenerēt tās paroles.
Un mēs esam gatavojas darīt, izmantojot jaunu funkciju šeit no C, ka es došu
Jums tikai demo, kas pazīstams kā komandrindas argumentus.
>> Tātad izrādās, kā daži no jums var būt redzējis sadaļā vai mācību grāmatas,
Galvenais ne vienmēr ir jābūt spēkā neesošu iekavās.
Izrādās, ka galvenais var būt arī rakstīts kā šis, ar diviem argumentiem,
argc un argv, kur argc ir vārdu skaits, kas jums rakstīt pēc
programmas nosaukums uz jūsu komandrindas.
Un argv ir faktiskie vārdi.
Un kā kvadrātiekavas tur liecina, argv acīmredzot masīvs.
Tas būs virkne pēc virknes pēc virknes atmiņā.
Tātad, ko mēs ejam, lai varētu to darīt, sākot ar 2 PSET, tiek
kaut kas līdzīgs šim.
Ja es argv1, kas ir piemērs mēs atgriezīsimies pie pirmdien, un palaist
tas, ievērosiet, ka tas nav, šķiet, darīt kaut ko vēl.
Tā vienkārši izdrukā savu vārdu.
Bet, ja es saku ardievas klase, paziņojums, ka šī programma acīmredzot vairākkārt uzsvērts
pār katru vārdu, kas tika drukāti uz ātru.
Un līdzekļus, ar kuriem mēs iegūtu piekļuvi vārdiem, ka lietotājam ir
drukāti uz ātru ir mainot galvenais, sākot ar šo nedēļas nogalē, no int
galvenais (spēkā neesošs) int galvenais (argc, argv).
Un tādējādi būs piedzimis komandrindas argumentus.
Un, kad jums patiešām sarežģīta šajā, jūs varēsiet rakstīt
tiešām trippy programmas, piemēram, šo vienu šeit, kas iet virs un aiz
daži no funkcionalitātes mēs esam darījuši līdz šim, bet visi ir diezgan spēcīgs.
>> Tāpēc mēs atstāt to ar šo uz ekrāna.
Un mēs redzēt jūs pirmdien.