[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. 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 jums saku. -Es zināju, ka tā varētu strādāt. Labi, dod to man. -Kombinācija ir viens. -One. -One. -Divi. -Divi. -Divi. -Trīs -Trīs. -Trīs. Četrzvaigžņu. Četrzvaigžņu. Četrzvaigžņu. -Pieci -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. 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. 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.