[Mūzikas atskaņošanai] SPEAKER 1: Tas ir CS50 un šis ir sākums nedēļas divas. Tātad, pieņemsim nirt labi kaut ko tas ir buggy, lai runāt. Tātad, nekā šeit ir CS50 IDE, un es esmu velk up iepriekš šī screen-- nopelt tā. Spoileris brīdinājuma. Viss kārtībā. Esmu velk šo ekrānu šeit, kas ir ļoti vienkāršu programmu. Ja mēs ritiniet uz leju, visvairāk tas ir tikai komentāri, bet šeit rindās 13 ar 17 mums ir programma. Tas ir sintaktiski spēkā, kas nozīmē, ja Es sastādīt tā, tas būs apkopot un palaist, bet tas ir buggy. Šī programma apgalvo komentāriem up augšu, ka tai vajadzētu drukāt 10 zvaigznes, bet tā nav. Un, pamatojoties uz savu pieredzi, vai drīz būs pieredze ar C, Jūs varat loģiski saskatīt kāpēc tas ir, faktiski, buggy? Yeah? Mērķauditorija: Pats no nulles līdz 10. Tas ir 11 atkārtojumiem. SPEAKER 1: Jā. Tātad, tas būs no nulles augšup caur un vienāds ar 10, kas, protams, ir 11 atkārtojumiem. Tātad, tas notiek, lai drukāt, protams, 11 zvaigznes. Tātad, datorzinātnes konvencija vairumā programmēšanas valodas Ir, protams, tikai lai sākt skaitīšanas nulles līmenī, bet skaitīt līdz, bet ne caur vērtība, ka jūs faktiski rūp. Tagad tas ir viena lieta, kas aizņem mazliet kļūst izmantoti, lai un pat Scratch, veidota kā tas ir viesiem programmētājiem vai bez datora zinātnieki un bērniem lielā mērā, ir paredzēts, lai būtu sākat parasti skaitīšanas vienā. Un tas ir jauki. Jūs varat absolūti sākt skaitīšanas pie viena, ja tas ir ērtāk. Un saskaitīt uz un caur 10, bet jūs apzināties īpaši šonedēļ un tālāk, ka tikai tā daudzas lietas programmēšana pieņemu, ka 0 ir pirmais cipars, ar kuru jūs rēķināties, ka jūs gatavojas vieglāk tikai, lai iegūtu šajā ieradums palaišanas no nulles un skaitot līdz vērtībai jums rūp tieši tagad no get iet. Tātad, kas ir noteikts, ka. Mēs mainījies mazāks vai vienāds, lai tikai mazāk nekā. Pieņemsim to apskatīt Otrs piemērs šeit. Tātad, šī programma arī apgalvo tās komentāri up top ka tai vajadzētu drukāt desmit zvaigznes, bet tā nav. Kas ir bug šeit? Tātad, what-- un piedodiet, pieņemsim skaidrs. 10 zvaigznes. Viens vienu līniju, bet tā nav. Tātad, faktiski, ļaujiet man iet uz priekšu un apkopo tas viens, jo tas ir nedaudz mazāk skaidrs, pamatojoties uz šo aprakstu. Ļaujiet man iet uz mūsu avots direktorijā. Padarīt Buggy vienu dot slīpsvītra buggy vienu. Labi, es redzu 11 zvaigznes, kas joprojām ir problemātiska, bet viņi arī visi vienā rindā. Kāda ir problēma šeit? Jā. Mērķauditorija: [nedzirdama]. SPEAKER 1: Jā. Tātad šī ir smalkums, ka Jums varētu atgādināt mani padarot īsi pieminēts. Pat ja viss izskatās diezgan, un tas ir labi atkāpi, un tā veida izskatās Scratch līdzīgu Šajā rindā 16. un 17., tiešām, atkāpi saskaņā ka cilpa. Tas ir nebūtisks. Dators nav zināt vai redzēt balto laukumu. White telpa ir tikai Mums, cilvēkiem, stilistiski. Dators zina, kad jums ir cirtaini bikšturi, kas, protams, atrisinātu šo problēmu. Tātad, ja mēs tiešām gāja un skaidri likt šajos cirtaini lencēm kas varētu novērst šo problēmu, padarot skaidrs kompilators ka es tiešām gribu, lai izpildītu divas rindiņas kodu vēlreiz, un atkal, un atkal. Bet kas ir būtisks izskaidrojums? Tiesības? Mums nav strikti nepieciešams cirtaini bikšturi visu laiku, pat ja tas ir iespējams, vislabāk prakse nokļūt šajā ieradums vienalga pat ja tas pievieno divus rakstzīmes kodu. kāpēc? Mērķauditorija: [dzirdams]? SPEAKER 1: Jā tā, ka ir cits risinājums pavisam. Tiesības? It īpaši, ja pēc pirmā acu uzmetiena jums nav patiešām novērtējam to, kas notiek. Nu, protams, mēs varētu vienkārši darīt divas lietas uzreiz un vienkārši izvairīties no problēmu vispār. Un tas ir labi, bet tagad, šodienas vajadzībām, ko ir izskaidrojums bug? Kāpēc bija visi šie zvaigznes vienā rindā? Yeah? Mērķauditorija: Šķiet, ka tad, ja Jums ir vienu rindiņu kodu, jūs varat darīt to bez tiem. SPEAKER 1: Tieši tā. Tas ir tikai cilvēka konvencija. Cilvēki saprot, ka tas ir mazliet kaitinošas vai garlaicīgs lai būtu likt cirtaini bikšturi visu no laika, ja viss, ko vēlaties darīt ir izpildīt vienu rindiņu kodu. Tātad, cilvēki nolēma daži laiku atpakaļ, ka tas ir jauki. Ja jūs vēlaties, lai visas jūsu cilpas uz tikai šajā vienā rindā, kā šis, tas ir jauki ar vienoto Semikolu beigās. Bet jūs varat darīt tikai viena šāda line bez cirtaini lencēm. Tātad, kad CS50 stila rokasgrāmata kā būs punkts jums, Jūs redzēsiet, ka parasti tas ir labs ieradums iekļūt šo darbību, līdz jūs esat diezgan ērti klaiņojošus No šiem konvencijām veidu un dara savu lietu. Tik ilgi, kamēr jūs esat sevi konsekventi. Un mēs runājam vairāk par stils mazliet vēlāk šodien. Tātad, ļaujiet man atvērt vēl vienu programmu. Protams, mums vajadzētu noteikt, ka 10, kā arī. Ļaujiet man iet uz priekšu un rakstīt īsta ātra programma, kas es saukšu, teiksim, cilpa dot C. Tātad, cilpa dot C. Un cilpa dot C es esmu nāksies, ietver standarta I / O dot H int galvenais tukšumu. Un tagad pieņemsim tikai darīt, tiešām ir cilpa. Tātad, 4 int es izpaužas nulle. Man ir mazāk nekā, teiksim, 50. Es plus, plus. Un tad šeit pieņemsim iet uz priekšu un darīt izdrukāt F. Un tad es gribu, lai drukātu I un jauna līnija, semikols. Un tas būtu drukāt visu skaitļi no nulles līdz 50? Daži galvu pamāj. Daži nos. Kas ir bug jau? Kāda ir viegli kļūda es? Jā. Mērķauditorija: [nedzirdama]. SPEAKER 1: Jā. Tātad, pat ja tas izskatās piemēram, tas ir tas, ko es plānoju, atceros, ka man ir arī tikai ASCII raksturs. Tātad, ja es saku, print "I." Tas burtiski notiek drukāt I. Tātad, ja es vēlas plug-in vietturi vērtība man tiešām ir nepieciešams, lai to paveiktu un pēc tam plug-in I vērtība dinamiski. Pretējā gadījumā es esmu tikai gatavojas saņemsiet 50 I ir uz ekrāna. Tātad, ļaujiet man iet uz priekšu un padara šo cilpa, palaist to, un, protams, mēs visi esam ceļu augšup pa 49. Un, ja es ritināt atpakaļ laikā es redzu numurs nulle sākumā. Nu, ko tad, ja es veida screw up? Ko darīt, ja man darīt? Tikai tāpēc, ka es neesmu domājis. Kas ir šī programma. Kad atkal apkopoti un palaist, gatavojas darīt loģiski? Mērķauditorija: Nekas. SPEAKER 1: Nekas. Kāpēc ir tā, ka? AUDITORIJA: Man ir paredzēta nulles. Tātad, šis nosacījums ir nepatiess. SPEAKER 1: Jā, tieši tā. Visi kods ir pareizs, sintaktiski. Tas apkopo, šis kods darbosies, bet tas nav gatavojas kaut ko noderīgu darīt jo es sāktu es līdz nullei. Tad mēs pārbaudām, ir man lielāks par 50? Acīmredzot, nē, tā nav. Tātad cilpa nekad izpilda vispār. Ko darīt, ja mēs kaut ko darīt nedaudz vairāk neapdomāti? Tātad, ko tad, ja mēs, piemēram, int man kļūst nulle. Un tagad ļaujiet man izmantot šo laiku cilpa, kas bija vēl viens nosacījums. Un, kamēr es saku, bet es ir lielāks nekā vai vienāds ar nulli, un pēc tam, kas šeit es iet uz priekšu un saglabāt failu, veikt cilpa. Un es esmu par, lai palaistu to. Kas es esmu gatavojas, lai redzētu šo laiks ar kamēr cilpa? Jā. Mērķauditorija: Infinite loop? SPEAKER 1: Infinite loop? Jā, un kāpēc? Mērķauditorija: Tā tas vienmēr ir nulle. SPEAKER 1: Jā. Tātad, es ir inicializēts kā nulle. Protams, es vienmēr ir lielāks par vai vienāds ar 0, kā rezultātā. Tātad, es esmu tikai gatavojas redzēt šo bezgalīgi. Un tagad, tas ir jānāk klajā pēc tam, kad vai divreiz, lai kursa galvām. Kas notiek, ja jūs ir bezgalīgs cilpa? Mērķauditorija: Control C. SPEAKER 1: Jā. Tātad Control C būs iespējams atbildēt. Diemžēl, mēs esam izdrukāt miljoniem un miljoniem nulles jau un tāpēc dators ir veida ieguva pirms manis. Tātad, tas notiek, lai ignorēt mani par mazliet. Bet, ja jūs vienkārši hit kontrolēt C daži reizes uz jūsu Mac vai PC tastatūru, galu galā tas būtu patiešām izbeigt. Un, ja ne, mēs jums parādīsim dažus paņēmieni pirms ilgi, kur jūs var faktiski varu nogalināt programmas, līdzīgi kā Windows un Mac OS, ja tas būtu nepieciešams. Bet pamēģināsim kaut ko citu. Pieņemsim faktiski pieauguma I. Vai tas joprojām būs bezgalīgs? Ļaujiet man palaist šo. Un tagad jūs varat veida redzētu, kas notiek. Arī tas ir bezgalīgs cilpa. Bet tas ir mazliet āķīgs jautājums. Vai tas notiek, lai drukātu numuru uz visiem laikiem? Mērķauditorija: Nē. SPEAKER 1: Nē. Kāpēc? Es dzirdēju dažas nos nekā šeit. Someone-- Jā. Mērķauditorija: Jums nav pietiekami daudz biti tiešām saglabātu turpinās. SPEAKER 1: Nu labi. Tāpēc man nav pietiekami daudz biti, lai saglabātu turpinās. Tātad, kas notiek varētu notikt? Tas ir tikai gatavojas pārtraukt? Mērķauditorija: Kādā brīdī tas būs slēgtas the-- SPEAKER 1: Tas būs slēgtas cilpa uz leju, bet kāpēc? Kas notiks pie Ļoti beigām tās robežām? Yeah? Mērķauditorija: Tas būs cikls atpakaļ uz negatīviem skaitļiem. SPEAKER 1: Lai negatīviem skaitļiem, vai ja mēs bijām tikai ārstē pozitīvs, nulle vismaz. Tātad, jā, absolūti. Atgādināt, ka mēs redzējām pēdējo reizi, ka, ja pieauguma jūsu bits viens pārāk daudz reižu, un tu tur Fore pārplūdes jauda jūsu int vai kāds datu veids ir, jūs esat gatavojas wrap ap, iespējams, divi negatīvi skaitļi. Vai, ja jūs esat norādīt, lai diapazons ir tikai pozitīvi, ko jūs varat darīt, bet mēs esam nav redzējuši, ka vēl, jūs varētu nonākt vismaz atpakaļ uz nulli. Lai gan, patiesībā jā. Šajā gadījumā, negatīvs skaitļi, un tādā gadījumā cilpa gatavojas izbeigt jo man nav, faktiski, lielāks par vai vienāds ar nulle, ja tas ir negatīvs. Tātad, diemžēl, kā sen būtu mums ir jāgaida? Tieši tagad mēs esam līdz ko, 2 miljoni-ish? Mēs esam kā 2 miljardus, mēs esam nāksies gaidīt kamēr mēs faktiski var redzēt šis simptoms. Bet mēs varam redzēt to nedaudz ātrāk, maybe-- pieņemsim redzēt, ja mēs varam pārtraukt. Nāc šurp. Pat izvēlnes parādās lēni. Viss kārtībā. Tātad, mēs atgriezīsimies pie ka pirms ilgi. Tā ir laba LAIKU_ nopelt to, kucēni. Tas ir labs laiks, lai dažiem paziņojumiem. Tātad, ja jūs vēlētos iesaistīties YHack, kas ir notikums tiek sponsorēja mūsu draugiem pie Yale. Un, protams, daži protams s TFS at Yale ir saistītas ar šo. YHack ir starptautiska kapāt-a-thon vadīs un tur at Yale, apvienojot 1500 līdzīgi domājošiem hakeriem un radošās visu visā pasaulē. Ja šis ir interese, apskatīt šeit. Ja tas ir pārāk īsi par ekrāns, ieskatieties šodienas slaidiem par URL yhack.org. Tātad, arī daži ātri paziņojumi. Tātad, oficiāli sekcijas sāks nākamnedēļ gan šeit, gan New Haven. Paturiet prātā, jums tiks iegūt e-pasts vēlāk šajā nedēļas nogalē, visticamāk. Tas aizņem ilgu laiku par CS50 nodaļu, Ņemot vērā visas cilvēkus klases un visi pārvietojas. Un visi Mācību Fellows " grafiki ir arī joprojām solidifying, bet sekojiet līdzi e-pastu, un, ja nepieciešams, ir, jūs varat atkārtoti sadaļu tur pēc. Study.cs50.net. Tātad, pat ja jums ir pastāvīgs dalībnieks pie sadaļām, saprotam, ka gandrīz visi no līdzekļiem, mēs izmantojam sadaļās ir publiski pieejami CS50 Studēt šo URL šeit. Tātad, ja jūs kādreiz vēlētos vēlreiz atsauksmi materiāls no sadaļas, vai lasīt priekšā, vai jūs nevarat veikt to dažas nedēļas, saprast, ka izlases slaidi, un problēmas, un definīcijas, un vēl visi tur kā labi. Darba laiks atsākt šodien, un rīt, un trešdien, un ceturtdien pārbaudīt kurss ir mājaslapa grafiku. Un arī tagad uzsākot šodien ir CS50 Apspriest. Tātad, ja un kad jums ir jautājumi par otru vai par kursu personālam, un parasti strādā par kādu problēmu kopumu, saprotam, ka jums nav obligāti ir vērsties pie cilvēka nākamo jums. Ja tur neviens tur, jūs varat aizsniegt mums un klasesbiedriem tiešsaistē, izmantojot CS50 Apspriest. Tātad, šī ir diskusija valde par kursu, un saprast, ka šis ir iespējams, vislabāk vieta, kur sākt, ja esat Jautājumi, kad ārpus darba laika IT īpaši. Pakas sāks up šonedēļ too. Pēc uguns un ledus [Dzirdams] New Haven. Veikt apskatīt kurss ir mājas lapā, lai RSVP. Pirmais brauc, pirmais kalpot par to. Ja jūs nesaņemat šajā nedēļā mēs darīsim tie visvairāk katru piektdienu termiņa laikā. OK, un tagad vārds par šķirošanu. Īpaši, kad mēs ieiesim problēma noteikts viens, kas ir ārpus šī nedēļa, un problēma noteikti divi un pēc tam. Kā mēs iet par P komplekti izvērtējot un novērtējot to kvalitāti? Tātad, tas ir četras asis, ko mēs izmantojam CS50, un viņi šos četrus šeit. Darbības joma, kas atspoguļo uz ciparu pamatojums, cik daudz no P komplekta jūs risināt. Tas ir aptuveni atbilst pūles, un tas ir mūsu veids, kā saglabāt Jūs mēģināt puse P noteikts, visi no P komplekta. Tas ir viegli viens iegūt perfektu rādītāji, ja jūs darāt, patiešām, izmēģināt katru no P komplekta aspektu. Tātad, paturiet to prātā. Pareizība ir tieši tā. Vai jūsu kods darbojas kā specifikācijai un kā personāls "parauga šķīduma liek domāt, ka jūsu kods būtu faktiski strādā. Pārbaudiet 50, ja jums nav tikušies to tomēr, ir P noteikt vienu specifikācija un parasti dot jums ir / nav atbildes par to, vai jūsu kods ir pareizs. Vismaz tiktāl, cik mēs ejam novērtēt to, pamatojoties uz testiem ka mēs palaist šo programmu ietvaros. Dizains ir daudz subjektīva. Tas ir, cik labi uzrakstīts ir jūsu kods. Un tas ir kaut kas jūs saņemsiet labāk laika gaitā, un tas ir kaut kas, mēs sniegt vairāk kvalitatīvu atgriezenisko saiti par. Un dizains es varētu nozīmēt pirms ilgi jūs varētu būt kārdinājums kādā P noteikti kaut ko darīt loopingly, bet ir varbūt trīs vai četri, vai pieci ligzdotu priekšējās cilpas vai ligzdotu kamēr cilpas. Tas parasti vajadzētu sākt veikt jums verdziskums un kopumā būtu uzskatīts par sliktu dizainu. Un jūs sākat redzēt klasē un no klases labas veidus, kā darīt lietas, slikti veidus, kā darīt lietas, kas varētu visi būt pareizs, bet ne vienmēr ir labi izstrādāta. Tāpat rakstot eseju. Jūs varētu likt vārdus lapa, kas ir gramatiski pareizs, bet eseja vai Darbā viņi ir, ir tikai pilnīgi nesakarīgi vai unpersuasive. Un tā, ka var būt analog In rakstisks pasaule sliktu vai labu dizainu. Un stils, arī ir diezgan subjektīva. Bet vismaz mēs sagaidām konsekvenci. Tas ir kā diezgan ir jūsu kods. Ir lietas, labi atkāpi? Vai jūsu mainīgie labi nosaukts / Vai visi Sava iekavās un cirtaini lencēm jāsaskaņo, jo tie būtu? Mums patiešām ir CS50 stila ceļvedis, kā problēma komplekts būs punkts jums. Tie, ērtāk ir laipni nomaldījies no ka tik ilgi, cik jūs esat sevi konsekventi. Un tas arī ir mācība mēs pastiprināt sadaļā. Tātad, ja tas viss bija nedaudz ātrs, realizēt P kopa un sekcijas stāsies padziļināti pirms ilgi. Bet vispār mums ir ļoti maz kausu CS50. Rādītājus parasti atzīmi no viena līdz trim, vai viena līdz pieciem. Mēs esam literally--, un es nevaru teikt Tas ir pietiekami pirmajā nedēļā. Trīs ir labs. Tātad, pat ja, jā, trīs no pieci normāli, matemātiski, varētu būt 60 procenti vai kā D mīnusu. Trīs ir, faktiski, labi. Un, patiesībā, mēs sagaidām lielākā daļa studentu klasē lai sāktu terminu apkārt twos, un trijiem, un četrrāpus. Droši vien ne tik daudz Fives. Ne pārāk daudz ones. Bet vispār sākt ka sweet spot in līknes tā ka laika gaitā, tur tiešām telpa, un iespējas augšējo progresēšanu. Tātad, lūdzu, nav pielīdzināmi trīs ar 60%. Tas ir daudz vairāk abstrakts, nekā. Formula, ar kuru mēs aprēķinām pakāpes tiek vērtē šādi. Pareizība ir vērts visvairāk. Dizains ir vērts nedaudz mazāk. Stils ir vērts nedaudz mazāk. Un tas parasti uztver laiku kas tērēta kļūst katrs Šo asīm tikai labi. Stils ir super viegli, jābūt super ātri, bet tas ir viegli ieradums saņemt slinks par. Pareizība varētu veikt jūs lielāko daļu laika. Pakaļdzīšanās nosaka dažas bug varenību pieņemt, ka papildu stundu vai vairāk, un tā, vērtēšanas galu galā uztver to. Un tā, tagad daudz nopietnu vārdu. Tā CS50 ir tāda atšķirība, jo labāk vai sliktāk, būt varbūt labāk iepazītos ar jautājumiem par akadēmisko godīgums nekā lielākā daļa jebkuru citu kursu. Un tiešām, tas ir man zināms, ka mēs sūtīt vairāk studentu, diemžēl, disciplinārā nolūkā katru gadu, kā rezultātā. Tātad, interesēs pilna atklāšana, pieņemsim runāt īsi par to, kas notiek CS50, un tas, ko jūs var darīt, un ko jūs varat būt uzmanīgiem. Tātad, šeit kopš 2007. gada, kad Es mantojis kursu, ir vairāki Ad valdes gadījumiem. Ad Board ir Hārvarda ir disciplinārs ķermenis, vai tagad Honor Counsel, uz kuru tiek minētas gadījumi, kad skolēni kaut ko darīt, ka kurss ir programma uzskata par nepamatotu. Nav īsta modelis šeit, es teiktu. Tā svārstās pār gadiem, bet parasti tas ir skaitlis no gadījumi, kas ir minēti. Studējošo skaits kas ir iesaistīti? Tas arī ir atšķirīga. Raksturīgi, ka pagājušajā gadā Piemēram, 29 studenti Harvard bija Ad iekāpuši, lai runāt. 29 no tiem pašreizējiem studentiem, Divi no tiem iepriekšējiem studentiem, kurš tika sadarbojas kaut kādā veidā nelabvēlīgs. Un pēc tam, pēc darbības procents, tas parasti ir apmēram 3% no klases, kas, diemžēl, padara šos lēmumus veidus. Tātad, pagājušajā gadā tas bija 3,5% no CS50 ir studentu organizācijas tas bija Ad aizturētajam, lai runāt. Tātad, ko tas viss nozīmē? Un ko mēs faktiski darīt? Tātad, par pilnīgu atklātību, mēs pilnīgi, kā datorzinātnieku, ir programmatūras rīkus mūsu rīcībā un tas ir ļoti viegli, lai mēs, taisnīgumu, ka citi klasesbiedri, kuri nav šķērsojot šo līniju šķērsot salīdzinātu katru iesniegšana šogad pret katru iesniegums par pēdējo astoņu gadu laikā. Software dara. Un galu galā tas ir cilvēka acīm, kas nolemj vai nodot vai nenodot kādu jautājums tālākai iztiesāšanai, bet programmatūra noteikti palīdz. Un tas, atklāti sakot, ir iemesls, kāpēc, ka es domāju, ka mums ir tik lielā skaitā CS50. Tas nav tāpēc, ka CS50 studenti vai CS studenti vairāk parasti ir kāds mazāk godīgi nekā jebkuriem citiem studentiem, tas ir tikai mums ir instrumenti un metodes ar kuriem veikt šo pirmo piespēli. Bet mēs paturēt acīs par visas šīs lietas kā arī, atkal, jo intereses atzīstot darbu, kas ir tiek likts in ar super vairākumu klasē. Un protams politika par akadēmisko godīgumu, pat ja tas ir ķekars punktā ilgi ar ķekars lodes ka ir cerams diezgan lasāma, tā tiešām vārīties uz leju, lai būtu pamatoti. Un labākais noteikums īkšķis, ka mēs piedāvājam ietvaros mācību programmas ir tas, būtība visu darbu, kas jums iesniedz šo kursu, ir jābūt savu. Un tiešām, jo ​​gandrīz visi no tiem minētajos gadījumos par disciplināratbildības tas bija tāpēc, ka daži studentu vēlu nakts parasti kļuva viņa vai viņas kodu vairāk tieši uz klasesbiedrene, kurš tad to pieņēma pilnībā vai būtiski to. Bet tiešām, tas ir OK. Un tiešām, birojā stundām lapiņām jums ir nodota, ja jūs nāca birojs stundas pagājušajā nedēļā rosina tik daudz. Jūs esat absolūti apsveica un mudināja apspriest problēmu kopas ar klasesbiedriem. Lai palīdzētu viens otram, kad klupšanas. Bet parasti īkšķis būtu būt tas, "kad jūs lūdz palīdzību, jūs varat parādīt savu kodu, lai citiem, bet jūs nevar apskatīt savējo. " Tātad, citiem vārdiem sakot, ja es esmu cīnās ar kādu P komplektu un es esmu sēžot tur ēdamzālē, vai bibliotēkā, vai klasē mēģinot atrast kādu vainu, Es, protams, var parādīt mans kods uz mana ekrāna lai persona sēž blakus man, protams, darbinieki, bet arī klasesbiedrs. Bet, ja risinājums, kas mans klases biedrs piedāvā ir, ak, šeit tikai to apskatīt to, ko Es tā, kas šķērso robežu. Un es vēlētos uzdrošinos teikt, ka ir vispār saprātīgs lieta vairumam cilvēku ļoti viegli pamanīt līniju. Un tā, redzēt to mācību programmu lai sīkāk. Un tagad viens no vairāk pretrunīgi aspekti no CS50 mācību, ka es domāju, ka varētu runāt ar Nobeigumā šeit ir tā sauktā nožēlu klauzula. Tātad, šeit ir viss fine print. Bet kopumā mēs esam redzējuši pēdējo 8 gadu laikā, kā arī kas, protams, gandrīz visi no CS50 s gadījumi akadēmisko negodīgumu ir rezultāts tikai slikts lēmumu pieņemšanas vēlu naktī. No stresa, rezultāts rezultāts trūkuma ēšanas, miega trūkums, pārāk daudz P komplekti, pārāk daudz termiņi, pārāk daudz saistības. Stress veidojot ar 2:00, 3:00 AM, 04:00, ar termiņu draudošo. Lielākā daļa studentu šajos gadījumos tikko veikts slikti lēmumi ka viņi varētu ļoti labi žēl Nākamajā rītā, ja ne minūtes vēlāk, bet līdz pagājušā gada nebija izlaišanas vārsts, ka šie skolēni varētu faktiski atvērt faktiski risināt Problēma galvu bez baidoties, ka booted no koledžas vispār. Un, protams, mēs iepazīstinājām šis nožēlu klauzula pagājušajā gadā, kurā teikts, ka, ja laikā 72 stundas, trīs dienas, šķērso dažas līnijas noteikts mācību programmu jūs nākt klajā ar vienu no kursa s galvas un mēs patērzēt par to. Ir vēl daži iznākums, pretēji tam, ko ir Ziņots par pretējo. Ir vēl daži rezultāts, kas ir ierosināt, ko, protams, parasti reducēšana līdz nullei P komplektu vai veikt kādu citu darbību, bet mēs, protams, rīkoties ar to sevi un nav atsaukties tas augstāks bija rezultāts varētu būt daudz smagākas. Un, protams, lai dalītos, kas notika pagājušajā gadā, astoņu gadu laikā, un tagad deviņus gadus, mācīšanas šo kursu un pēc tinkering ar dažādām pogām, pagrieziena dažādus ciparnīcas Pēdējo vairākus gadus par akadēmisko godīgumu, un redzēt vienu datiem bez redzama ietekme, pat runas, piemēram, tas, tas bija roku paredz vislabāko lieta mēs esam ieviesuši pedagoģiski Astoņos gados kopā šīs līnijas CS50. 19 skolēni nāca klajā saskaņā ar pagājušā gada šo klauzulu. Mēs neveica nekādas darbības, lai septiņi no tiem studentiem, nosakot, ka tie bija nevajadzīgi uztrauc. Viņiem nebija, patiesībā, šķērsoja līniju, bet tas bija labs tērzēšana ir tomēr. Mēs nulli 11. punktu skaitu kas tika iesniegti. Un vienā gadījumā mēs lūdzām students darīt problēmu iestatītu. Bet vēl pārliecinoši, godīgi, ar šiem 19 tērzēšanu, kas bija daudz vairāk nekā es sagaidāms, ka, katrs no tiem 10 minūtes līdz varbūt stundu garš, arī cēla iedegt vairākus jautājumus attiecībā ģimenisko jautājumi, draugs jautājumi, garīgās veselības jautājumi ka mēs tad nodarbojas, ar studenta svētību, rezidents dekāns, vai draugi, vai jebkuru citu numuru no atbalsta resursiem. Tā, ka tas bija līdz šim viens no labākajiem lietojumu mūsu laika un viens no labākajiem iejaukšanās. Ar to teica, tas nebija ieeja par likmi atklāšanas Akadēmiskā negodīgums kopumā. Un es uzdrošinos teikt, šo apakšgrupu Studentu pērn bija demogrāfisko ka mēs iepriekš nekad identificēti pirms un nekad nav bijis saistīts ar agrāk. Un tā, tie bija brīnišķīgi veiksmes stāsti pat ja tie tika celta gaismā mazāk nekā optimālos apstākļos. Tātad, paturēt to prātā kā jūs veicat, iespējams, daži slikts lēmums yourself vēlu naktī, ka tur ir izmantot tik ilgi kā students šajā situācijā pieder up un nākt klajā, lai mēs varētu ir šāda veida tērzēšana un rīkoties ar to tādā veidā, kas ir izglītības, un pēc tam mēs varam nodot to aiz mums nākamajā dienā. Tātad bez papildu ADO, veikt malu pie šīs sarunas, iemesls kucēni ir up ir tikai, lai lauztu ledu uz brīdi. Un diemžēl, viņi visi gulēt, bet to, kas bija paredzēts notikt šeit bija visi bija paredzēts ar bijību un veida atpūsties pēc šī ļoti smagā saruna. Bet acīmredzot man kucēni gulēt. Bet, ja jums iet uz CS50 s mājas lapa slīpsvītra kucēni, Jūs varat skatīties tos visas dienas garumā. Īpaši varbūt 02:00, vai 3:00, vai 4:00 naktī lai redzētu mazliet stresa atvieglojums tur. Tātad, kas ir slīpsvītra kucēni. Viss kārtībā. Nebija tik jautri? LABI. Tātad, atpakaļ uz kādu datoru zinātne, ja es drīkstu. Tātad, atgādināt, ka pēdējo reizi mēs sākām meklē ne tikai galvenais, kas bija noklusējuma funkciju, kad zaļais karogs uzklikšķināt ekvivalents, bet mēs arī īsi sākām rakstiski daži no mūsu pašu funkciju. Un līdz šim neviena no šīm funkcijām ir bijuši īpaši liels vai saturīgs. Jūs saņemsiet uz tiem lielāks funkcijas, iespējams, P, kas 2, P, kas 3, noteikti P noteikts 4. un tālāk. Tieši tagad lielākā daļa no jūsu programmas, ja ne visi no tiem, protams, P komplekts 1 var izdarīt pilnīgi galvenais. Ja jūsu programma ir tikai piecas līnijas, 10 līnijas, pat 20 līnijas ilgi, perfekti saprātīgi rakstīt to viss galvenais un ne vairāk sarežģīt savu kodu, bet tas, ko mēs darām šodien un tālāk mēģina arī ieviest dažas labas projektēšanas metodes tā ka jūsu kods kļūst vairāk sarežģīta un kā problēmu Jūs vēlaties, lai atrisinātu grūtāk un vairāk interesanti jums ir, veida, rīkus jūsu kompleksa, ar kuru izstrādāt labus risinājumus tiem. Tātad, pieņemsim ātri apskatīt atpakaļ Šī programma no mana pagājušajā nedēļā, kas bija funkcijas nulle dot C. Un paziņojums, ka, gluži vienkārši, tas izskatās šādi ar diviem funkcijas, galvenais un drukāt nosaukums. Un domāšana atpakaļ vai varbūt reverse engineering šodien, kāda bija motivācija ieviest funkcija rindā 28 sauc, print nosaukums? Vai kāds bija šis piemērs in noteikumi princips vai takeaway, ja jūs būtu. Daži murmina. Ko? Yeah tik Funkcionālā Sadalīšanās ir sava veida iedomātā veids, kā pateikt, sadalīties savu programmu par tā sastāvdaļu un pēc tam izmantot tās daļas apkopot visu. Tātad, tas arī ir tikai veida kumoss jau, bet tas ir iespējams, pat labāks piemērs par kaut ko vienkārši sauc abstrakcijas. Tiesības? Abstrakcija būs viens no periodiskiem tēmām CS50 un arī datorzinātne vispār, jo tas ir tehnika, ar kuru jūs varat atrisināt problēmas efektīvāk, jo jums var rakstīt risinājumus vairāk intuitīvi un tādā veidā, ka svari un ir saprotams, ko citiem cilvēkiem. Ko es domāju ar šo? Tātad, varbūt tas ir daudz vairāk lasāms apskatīt programmu, piemēram, tas, super īss, lai gan tas ir. Kad jūs redzēt uz līnijas 22, kas tur ir funkcija sauc, drukāt nosaukums. Šis nosaukums vien saka to, ko tā dara. Šī funkcija acīmredzot notiek input starp tās iekavās, un acīmredzot kaut ko dara, domājams drukā vārdu. Un tā, lai gan mēs pilnīgi varētu būt darījuši to, ko mēs darījām pirms nedēļas, kas bija vienkārši izmantot šo faktisko koda rindu, atbrīvoties no šīs, kā arī iegūt atbrīvoties no šo visu kopā, mēs veida paņemts prom jēdziens drukāšanas nosaukumu. Man vienalga, ja jūs izmantojat drukas Def. Man vienalga, ja jums ir procenti S un slīpsvītru N. Šie ir neticami Arcane informācija. Kas man rūp kā programmētājs drukā vārdu. Un tā, ko labāks veids, kā to darīt, nekā zvanot funkciju, drukas vārdu? Un tā, ka bija viens no motivācijas darot kaut kas līdzīgs šim. Padarīt kods vieglāk lasāmu, vairāk atkārtoti, un arī sevi aprakstošs. Tagad, pieņemsim to apskatīt citā Piemēram, kas bija viens funkcijas, kas mums bija vairāk nekā šeit. Tātad, šī ir varbūt pat vairāk piespiest jo, šajā gadījumā, Es nevēlos, lai tikai iegūtu int. Es vēlos saņemt pozitīvu int. Un izrādās, lai saņemtu pozitīvu int, kas Jums jādara ķekars legwork. Tiesības? Tas nav vienkāršs līnija zvanīt tāpat print vārds bija, kas ir, protams, mazāk pārliecinoši. Lai iegūtu pozitīvu int, logically-- ļaujiet man ritiniet atpakaļ uz leju, lai slēptu to. Kas jums ir jādara? Tāpat kā visiem instrumentiem mēs ir šobrīd tiek lietas, piemēram, drukas DEF no standarta Bibliotēka un arī no CS50 bibliotēkā mums ir Get Int, un Get peldēt, Get Long Long, Get String, bet vienīgais, Germane, tieši tagad, ir iegūt Int. Tātad, ja vienīgais līdzeklis, jums ir Jūsu instrumentu kaste, ir iegūt Int, kā mēs iet par īstenojot tā, lai iegūtu pozitīvu int? Mērķauditorija: Izveidot žurnālu un pārbaudiet par to, vai ieejas ka tie deva bija pozitīvs vai nav. SPEAKER 1: Perfect. Tieši tā. Vēl viens instruments, kas mums ir mūsu toolbox no nedēļas vai divām atpakaļ ir tikai looping būvēt. Un tā, jā, ja mēs izmantojam laiku cilpa, vai darīt, kamēr cilpa, vai priekšgalā cilpa mēs droši vien varētu aizmukt ar kādu no tiem, kas kaut kādā veidā. Mēs varam ieviest jēdzienu get pozitīvs int, tikai izmantojot Saņemt Int, un tad tikai glabāt aicinot to atkal un saglabāt pestering lietotāju kamēr viņš vai viņa patiešām dod mums to, ko mēs gribam. Un tāpēc tagad, šo abstrakcija procesa iegūt pozitīvu int par funkciju sauc Saņemt Pozitīvs Int ir nedaudz vairāk pārliecinoši jo apskatīt šo. Tie ir, piemēram, 10 plus rindiņas kodu, kas ir iesaistīti iegūt pozitīvu int, un man nav īsti aprūpi, kā jūs to darīt. Viss, ko es vienalga ir tas, ka jums var darīt, un tāpēc es esmu slēptās visi šie dati aiz funkcija sauc Get Pozitīvi int ka, Patiešām, ir šī darīt, kamēr cilpa. Un redzēt pagājušajā nedēļā sintaksi tur, bet tas tikai apliecina, N, un tas drukā out norādījums uz lietotājam. Tā aicina Get Int, un pēc tam tā pārbauda šis nosacījums atkal, un atkal, un atkal, līdz lietotājs sadarbojas. Tāpēc tagad, daži vesels saprāts pārbaudes. Tiem varbūt pazīstami ar dažiem plānošanu, kāpēc N deklarēta, kāpēc es izveidot N ārpus darīt, kamēr cilpa? Kāpēc ir tā, on line 29 un ne par, piemēram, 33, piemēram. Mērķauditorija: Jo, kad jūs atzīt to ārā, to veida par pilnu, jo lielāks scope-- SPEAKER 1: Labi. Mērķauditorija: --and ja jums paziņot, tā iekšpusē cilpas, [nedzirdama] jo tas nezina par to. SPEAKER 1: Tieši tā. Ja es varētu simplify-- tas ir jautājums par darbības jomu. Un darbības joma attiecas uz konteksta kuru mainīgais pastāv vai ir lietojams. Un jauki īkšķis šeit ir tas, ka Parasti, kad jūs atzīt vai izveidot mainīgs jūs varat izmantot tikai to iekšpusē no vistuvāk aptver cirtaini lencēm. Tātad, ko tas nozīmē? Ja es, tā vietā, atsaukt šo un iet ar kaut kas jūtas nedaudz vienkāršāka. Tiesības? Line 32 tikai izskatās tīrāka man tagad. Es esmu darot abas lietas vienreiz un pēc tam piešķirot labā roka uz kreisās rokas. Problēma tagad, pamatojoties uz ka definīcija jomas ir tā, ka N var izmantot līnijās 31 un 32 iekšpusē šīs cilpas, bet kur šī definīcija vai to nevar izmantot? Saskaņā ko? Jā. Mērķauditorija: 35. SPEAKER 1: 35. Noteikti ne 35. Un arī kur citur? Mērķauditorija: 34. SPEAKER 1: Pat 34 ir problemātiska, jo tas ir ārpus cirtaini lencēm. Un tā patiesībā, pieņemsim redzēt, kas notiek. Tiesības? Tas varētu likties nedaudz intuitīva vai nevarētu, bet pieņemsim redzēt, kas kompilators ir ko teikt, kad mēs iedziļināties mūsdienu avota direktorijā. Padarīt funkciju vienu. Ak, mans Dievs. Nu, es beidzot pabeigts ka, starp citu. Viss kārtībā. Un kāda ir problēma šeit? Ļoti arcane apskatīt. Bet šeit ir tas, ko es typed-- veikt funkciju vienu. Lūk, ko darīt izraisītas, kas ir faktiski izmantojot kompilators šķindēt ar dažiem no šiem karogiem ka mēs redzēsim atkal pirms ilgi. Un atkal, vienmēr izskatās pie pirmās kļūdu, jo tas var tikai būt kaskādes bezjēdzīgs ietekme uz citām līnijām. Tātad, ko tas nozīmē, ka Problēma ir tā funkciju 1.c Tas ir uz 32 līniju. Un tas ir pie kolonnas, vai raksturu, 13. Tātad, ja jūsu teksta redaktoru, kas var palīdzēs jums noteikt, kur jautājums ir. Tātad, ja es ritiniet uz augšu, kas ir 32 līnijas? Tas ir patiešām tas viens kas jau iezīmēts Tiesības here-- neizmantota mainīgs n. Bet tas vēl nav izmantotas. Es esmu, izmantojot to. Bet kompilators ir sajaukt, jo tas pastāv tikai iekšpusē šo jomu. Un tāpēc es nevaru izmantot to šeit. Es nevaru to izmantot šeit. Un kompilators, tādēļ, nav pat vienalga, ka es cenšos. Tas, šķiet, ir neizmantota tās faktisko darbības jomu. Tātad, mēs varam paplašināt darot tieši tas, ko mēs sākām with-- int n. Un, pat ja tas nav izskatās kā elegants, iespējams, un mēs esam ņemot papildu līnija šeit, tagad tas ir joma visur. Tātad, pieņemsim, mēģiniet vēlreiz. Tātad, lai funkciju vienu. Nice. Un tagad, ja man, ja es palaistu funkciju viens, pieņemsim arī tā negatīvā 10, negatīvs 1, 0, 1, un tas patiešām darbojas. Tātad tur ir cits risinājums šeit. Tu zini ko? Ko darīt, ja es tiešām esmu cīnās ar šo? Es nezinu, kur n ir vajadzēja iet. Tu zini ko? Es esmu tikai gatavojas nodot to visu veids augšpusē manu failu šeit. Kas būtu tas darīt, jūs domājat? Yeah? Mērķauditorija: [nedzirdama]. SPEAKER 1: Jā. Tāpēc es esmu padarīja pasaules, lai runāt. Ja jums ir mainīgais, kas ir ārpus visas jūsu funkcijas, kas ir atļauta, un kods būtu jāapkopo, un n tagad būs pieejams ne tikai get pozitīvs int, bet arī main-- kas ir nedaudz satraucoša, jo tur ir jau ir n ir galvenais, lai vairāk par ka tikai moment-- bet tas būtu uzskatīts par sliktu dizainu. Viss kārtībā. Ja jums ir jāizmanto kaut kas līdzīgs, ak, es ņemšu vienkārši ielieciet to šeit, jo kodu, šķiet, lai apkopotu parasti nav labākā prakse. Drīzāk jūs vēlaties, lai izvēlētos visšaurākā iespējams joma Jūsu mainīgajiem, kas nozīmētu notiek ar mūsu sākotnējo dizainu, kas ir tepat. Tagad kā malā, ja jums tomēr ir identiski nosauktā mainīgo šeit, veids c varētu rīkoties this-- lai gan tas nenotiks pārāk often-- ir tā, ka tas joprojām ir perfekti labi šeit. Bet šī definīcija n saskaņā 22 būs ēna globālo vienu. Tātad tas viens būs jāstrādā galvenais, un pasaules viens faktiski piemēros, kad tu esi saņemt pozitīvu int bet vairāk par to citā laikā, bet tikai tiem, ziņkārīgs. Tātad īsumā, mēs noteikt to šeit. Tagad pieņemsim kaitināt intervālu divus citus Pirms mēs apskatīt vienu pēdējo rindiņu kodu šajā programmā. Iegūt pozitīvu int. No kreisajā pusē tā vārds ir vārds int. Ko tas iezīmēs jūs domājat? Līdz šim mēs esam redzējuši galvenokārt par spēkā neesošu. Yeah? Mērķauditorija: Tas ir par veidu mainīgais, ka jūs esat jautā par. SPEAKER 1: Jā, tas ir par veidu, ļaujiet man nesaka mainīgs, bet vērtības tips ka es esmu lūdzot atpakaļ. Un tiešām, tas ir intuitīvs šeit, cerams. Tiesības? Ja jūs vēlaties saņemt pozitīvs int, kas tas ir jūs gribu līdzīgu function-- mūsu brīvprātīgie no pagājušajā nedēļā atdot jums atpakaļ gabals papīra ar int par to? Un tāpēc mēs esam norādīts, ka tā sauktais atgriešanās tips šīs funkcijas ir iegūt pozitīvu int. Ja mēs negribējām to atgriezties kaut ko, jūs sakāt par spēkā neesošu. Ja jūs vēlaties, lai atgrieztos string, jūs sakāt virkni. Ja jūs vēlaties, lai atgrieztos pludiņš, tu saki peldēt. Bet vienīgais, kas attiecas šeit loģiski, jo es esmu, izmantojot get int, kaut gan es esmu ierobežojot to pozitīvās vērtības, ir atgriezties int. Tātad pretēji, ko tas nozīmē ka tur ir spēkā neesošu iekavās? Ko darīt iekavās vispār definēt? Yeah? Mērķauditorija: Tas nozīmē, ka funkcija ir faktiski nav panākt, lai to. SPEAKER 1: Tas nozīmē, ka funkcija ir faktiski nav iegūt to, ko? Mērķauditorija: ieejas. SPEAKER 1: ieejas, whatsoever. Tātad tiešām, ja iekavas Šeit norādiet spēkā neesošu, tas nozīmē tikai to, es negribu nevienu ievadi. Es galā ar šo problēmu pats. Un tiešām, jums nav pastāstīt saņemt pozitīvu int neko. Jūs vienkārši teikt, iegūt pozitīvu int, un ka funkcija nodzisīs un darīt lieta. Bet tur ir bijis maz triks es esmu spēlē šeit šo visu laiku lai pārliecinātos, ka šo kodu apkopo. Ievērojiet, ka int-- saņemt pozitīvs int void-- ir uz līnijas 27. Bet kādu šķietami dīvainu iemeslu dēļ tas ir arī šeit uz 16 līnijas. Un tikai labu pasākumu es atkārtoju tas tāpēc tas ir pilnīgi identiski. Un es esmu teica prototips ar maz viena līnija komentārs. Kas notiks, ja es izdzēst ka, un Tagad atkārto veikt funkcijas 1, ievadiet. Whoops. Uzgaidi minūti. Kur ir mana tab? Huh? Stāvēt. Padarīt funkciju 1. Tur mēs ejam. LABI. Nebija saglabātas to pareizi. Tātad, es domāju, ka tur ir maz bug šeit, kur es neesmu redzot cilnes nosaukumu brīdī. Tātad, kas notiek šeit? Netieši deklarācija funkcijas saņemt pozitīvu int nav spēkā C99. Tik mulsinoši vēlreiz. Tātad, kas ir tas liecina par? Nu, izrādās, ka C ir diezgan stulba. Nu, tas ir programmēšana valoda, vai drīzāk kompilators ir. Tas tikai zina, kas jums ir māca to, un tas ir tikai gatavojas zināt kaut ko ja jūs mācīja to pirms tam. Citiem vārdiem, kas Galvenais šobrīd, es esmu mēģinot zvanīt funkciju sauc iegūt pozitīvu int. Bet kompilators nav dodas pamanīt, ka iegūt pozitīvu int pastāv līdz līniju 26. Un tā, ko kompilators dara, ir tikai kļūdas, tiklīdz tā kļūst pozīcijā 17, sakot netieši deklarāciju no iegūt pozitīvu INT, kas ir tikai iedomātā veids, kā pateikt, man nav zināt, ko saņemt pozitīvas int vēl. Citas valodas, piemēram, Java un Python un Ruby varētu raudzīties nākotnē. C nav. Un tā kā mēs noteikt šis ir viens no diviem veidiem. Vai nu viens, ja problēma ir tā, ka nokļūt pozitīvs int nav redzējis, labi, ļaujiet man vienkārši pārvietot to uz augšu. Tas atrisinātu šo problēmu. Bet vispār, tas ir uzskatīt labāku tehniku lai jūsu galvenā funkcija ir ļoti top, lai cilvēks lasa jūsu kodu zina, ko programma dara, jo galvenais nav aprakti visi veids, apakšā vai vidū. Tas ir pašā augšā. Tā, ka nejūtas ideāls. Un jūs faktiski var iegūt uz situācijām, kad ja viena funkcija zvani vēl viens, kas aicina citu, jūs varat saņemt par jautājumiem, ja neviena no var iet virs otra, loģiski. Tas vienkārši nav iespējams. Un tā veids, kā strādāt ap šo ir tikai ņemt Funkcija paraksts, tā speak-- pirmajā rindā, kur tas ir declared-- un tikai kopēt, ielīmēt pie top, bet ne ar cirtaini braces-- tikai ar semikolu. Tas ir kā mazs mājienu par to, kas nāk. Un patiesībā, visu šo laiku, kad mēs esmu redzējis lietas, piemēram, standarta io.h un cs50.h, līdzīgi, jo tie dot h faili ir tur citi prototipi. Un mēs redzam, ka pirms ilgi. Tātad īsumā, ja jums ir programma failā ar vairākām funkcijām turklāt galvenais, jūs gandrīz vienmēr vēlas deklarēt tos tikai ceļā viņu pirmais līnija, kam seko semikolu, pašā augšā faila. Tas bija daudz visu uzreiz. Kādi jautājumi? Kādi jautājumi? Viss kārtībā. Tātad, pieņemsim pāriet uz tam lai kaut ko līdzīgu klepus. Oh. Kā montāžu. Viss kārtībā. Klepus. Tātad, šeit ir c programmas īstenošanu mēs darījām citu dienu Scratch ka ļoti vienkārši tikai saka klepus, klepus, klepus. Viss kārtībā. Un kāds teica daži dienas atpakaļ, ka tur ir veids tīrīšanas šo kodu up jau. Viss kārtībā? Tiklīdz jūs esat kopēšana un līmēšana, iespējams, slikti dizainu. Vismaz reizi mēs nokļūt līdz četriem vai pieciem vai 20 klepus, tā uzskata sliktu praksi. Mēs tikai glabāt kopiju, līmēšana. Kas ir acīmredzams risinājums tīrīšanas šo programmu up? Mērķauditorija: Loop. SPEAKER 1: Jā. Tātad izmantot cilpu. Un mēs varam izmantot, lai cilpa, kamēr cilpa, jebkurš no pieejas numurs. Un tiešām, tas, ko mēs versijā vienā šeit. Esmu vietā pārrakstīt to no cough.c versijā viena būt tikai klepus laikā pēc cilpas. Labi, bet tur ir iespēja tagad veida sākumu izstrādāt šo nedaudz vairāk kā mācība mums mācīja pirms brīža, kas ir this-- domāju, ka es gribēju lai izveidotu funkciju sauc klepus, pieņemsim apsvērt tikai brīdi kas tas notiek, lai izskatās. Tātad, ja es gribu kaut ko klepus, es vienkārši vajag izmantot drukas f iekšpusē funkciju. Un tiešām es esmu. Un patiesībā, tas viss laikā, jebkurā laikā jūs esat drukājot kaut ko ekrāns, programmētājs sauktu ka blakusparādība. Tas nav man nododot atpakaļ kāds vērtība. Tas mani veikt kādu darbību kas varētu būt vizuāli acīmredzama. Bet šī funkcija klepus, tas atgriezīsies kaut kas, pamatojoties uz tās pirmajā rindā? Nē, jo tā atgriešanās veidam nav spēkā, kas nozīmē tikai to, tas nav nododot man neko atpakaļ. To varētu darīt kaut ko vizuāli, bet tas nav nododot mani atpakaļ papīra gabaliņu, piemēram, pagājušajā nedēļā. Vai tas nepieciešams kādu ievadi? Nē. Un tā tas ir spēkā neesošs arī šeit. Tātad tas arī ir sava veida pār-engineering šo problēmu. Tiesības? Esmu veikusi programmu vairāk sarežģītas, vairāk koda rindiņas, Man nav padarījusi jebkādu funkcionālāku, bet tas būtu pakāpiens, varbūt, plašāks konteksts ar vairāk sarežģītu kodu. Bet ko par šo? Ko es esmu done-- tikko glancing Tas bez apskatot komentāru pašā augšā file-- Ko Es pilnīgi darīts šeit ar manu klepu īstenošana, kas ir atšķirīgs? Jā, muguras? Mērķauditorija: Padariet to, lai jūs varētu ir raksturs izslēgt. SPEAKER 1: Jā. Tātad tas jūtas veida jauki. Tiesības? Tas ir tāpat kā pievienojot funkciju, lai jūsu Programma vai jūsu funkcija, šajā gadījumā. Tas joprojām atgriež neko. Tas varētu būt vizuāli blakusparādība, jo tas zvana drukas f. Bet tagad man ir parametrized funkcija, kas nozīmē, ka es esmu norādītais pieņemts ievade int tipa un to sauc par n, bet es varētu to nosaukt kaut ko es gribu. Faktiski, tas varētu vienkārši reizes, lai būtu vēl skaidrāks. Un tad es varētu vienkārši mainīt šeit. Bet jautājums ir, ka tas ir tas, kā es izveidot funkciju, kas ņem ievadi. Un, ja jūs atceraties flipping caur varbūt online vienā no staigāt pievadiem, tad Ceturtais un pēdējais klepus piemērs, Jūs pamanīsiet šeit es esmu vispārināt mans kods further-- veida nošķirts tā tālāk. Tāpat kā klepus un šķaudīt, abi ir par, piemēram, sakot, kaut vai veicot sava veida skaņu. Saglabāt būtu atbilst Scratch bloku. Un tā, ko es darīju šajā versijā, kuru mēs varam tikai skatienu, ir klepus ir tāpat kā sakot, [klepus], klepus, un tikmēr, šķaudīšana ir tāpat kā teikt, [ACHOO]. Un tāpēc es esmu vispārināt īstenot šos ko tagad īstenojot Tas generic funkcija, teikt, kas ir interesanti šodienas vajadzībām tikai tāpēc, ka tas joprojām nav atgriezes tipa. Bet cik ieejas tas ir? Mērķauditorija: Two. SPEAKER 1: Two. Un tā, ja jūs vēlaties, lai uzņemt diviem argumentiem, vienkārši atdaliet tās ar komatu. Un, ja jūs vēlaties, lai pēc tam aicinu šo funkciju, ievērosiet, ka jūs vienkārši zvaniet teiksim, quote, likt pēdiņas beigās, par pirmo argumentu, kopējā n, par otro argumentu. Tātad atkal, mums vienkārši ir tagad celtniecības bloki, lai mēs varētu reāli īstenotu dažus no mūsu pašu funkciju. Viss kārtībā. Visus jautājumus par šo? Tāpēc tagad pieņemsim mizu atpakaļ slāni, ja tā. Un mērķis, galu galā, ir nākamās nedēļas problēma komplekts būs par cryptogrophy-- māksla šifrēšanas informāciju. Un konkrēti, informācija būs jums šifrēt vai atšifrēt būs teksts. Un tā, ka veida ielūgumiem jautājums šodien, piemēram, labi, kas notiek zem motora pārsega ar tekstu ārpus ASCII no nedēļas nulles, un kā mēs varam reāli sākt manipulēt ar to? Tātad, šeit ir Zamyla vārds. Un tekstā, kas varētu būt ievadīts uz kā get virknes funkciju. Un sākas tagad, kad jūs redzat stīgu tāpat this-- Z-A-M-Y-L-A-- sāk domāt par to, it kā katrs no šiem burtiem ir kastē no tās pašu. Un tiešām, pēc nedēļas, vai arī tā ir laiks, katrs no šiem kastes gatavojas pārstāvēt ļoti konkrēti bloks memory-- BITE atmiņas. Tātad katrs no šiem burtiem, galu galā, pārstāvēs 8 biti. Un mēs patiešām redzam, kas notiek par zem motora pārsega manā datorā. Bet ne pietiek tikai apskatīt Zamyla caur šo objektīvu, ar kuru katram no šie burti ir savā kastē. Un labi pietiekami C mēs varam piekļūt katrai no šīm kastēm tieši. Tātad, ja jūs vēlaties, lai iegūtu pirmo vēstule viņas vārdu, super viegli C. Ja vēlaties saņemt pēdējo vēstule, super viegli, kā arī ar kādu jaunu sintaksi. Tāpēc es esmu gatavojas iet uz priekšu uz CS50 IDE un atvērt stīgu nulles dot C. Un šajā piemērā šeit, tur ir pāris jaunas lietas notiek. Tātad pirmais pēc kārtas 19., mēs esam redzējis šo before-- get virkni. Tik vienkārši kā ātri veselība pārbaudītu, ja kāds varētu piedāvāt līdz mutiski lajs skaidrojums kas notiek saskaņā 19. Tāpat vienkārši tulkot to vērā Angļu, ka kaimiņiem nav CS50 varētu saprast. Jā. Mērķauditorija: Vai lietotāja ievade stīgu un uzglabāt to mainīgā s. SPEAKER 1: Labi. Ir lietotāja ievadi virkni un uzglabāt to mainīgā s. Tas ir lieliski. Tātad uz labās rokas pusē, mēs saucam get string. Kas atgriež vērtību kas nesaņēma piešķirts no labās puses uz kreiso, roku side uz mainīgo sauc s, kas ir projektēta, lai saglabātu virkni. Tieši tā. Tāpēc tagad līnija 22, per komentārs rindā 21, protams, izdrukā šo string viena rakstzīme katrā rindiņā. Bet kā? Tātad pirmkārt, mēs sāktu I 0. Un tad kā mēs nokļūt beigas Zamyla vārda? Labi, beigās Zamyla vārds, es varētu manuāli ierakstiet pēdējā raksturs viņas vārds kaut kā, vai skaits no tā. Tiesības? Ja mēs ejam atpakaļ here-- Z-A-M-L-- Y-L-A--, lai es varētu rakstīt. Kas ir indekss Zamyla pēdējā vēstule? Ja tas ir 0-- runā Like programmer-- 0, 1, 2, 3, 4, 5, Es heard-- tik tiešām, pēdējais burts in Zamyla vārda ir sestais, bet, ja mēs paļaujamies no 0, tas būs skaitlis 5. Lai saglabātu, ka prātā šeit. Izrādās, tur ir funkcija C sauc strlen, un atpakaļ dienā un līdz pat šai dienai joprojām, daudz programmētāju izvēlēties sinhronizēt vārdus par viņu funkcijas, kas izklausīsies vārdiem viņi cenšas pateikt. Tātad strlen ir virknes garums. Un tā, kādi būtu virknes garums S atgriešanās kad Zamyla ir ieejas? Mērķauditorija: Five. SPEAKER 1: Z-A-M-Y-L. Six. Tiesības? Kas garums Zamyla vārda? Tiesības? Un tikai patiesībā, seši burti. Tiesības? Un tā, ko tas nozīmē mūsu cilpa? Mēs ejam, lai iet no 0 līdz sešiem, kas gatavojas sniegt mums piecas atkārtojumiem. Ko mēs darām katru atkārtojuma? Nu, C procenti, kāds uzminējāt citu dienu, ir vietturis ko? Mērķauditorija: Char. SPEAKER 1: Tikai char. Tātad viena character-- nav vairākas rakstzīmes, piemēram, virknes. Un tad šeit ir jaunu līniju ka mēs esam ieguvuši drukā. Un tad šeit ir jauns sintakse. Ja vēlaties izdrukāt i- varonis stīgu S, tā sakot, Jūs varat vienkārši teikt Nosaukums stīgu S, un tad atveriet kvadrātveida kronšteinu, un tad slēgts kvadrātveida kronšteinu, ar i vidus. Un tas ir sava veida jauki, ka tā veida izskatās kā kvadrāts tāpat kā kvadrātu, kurā Zamyla s rakstzīmes pastāvēt uz šo attēlu tur. Tātad, ja es tiešām palaist šo Tagad, pieņemsim redzēt, kas notiek. Padarīt stīgu 0 dot slīpsvītru stīgu 0, un tad es esmu gatavojas rakstīt Zamyla vārda. Nav ātru, jo man nav izmantot drukas f, bet tas ir jauki. Es tikai zinu, ko darīt. Un tiešām, tas izdrukā Zamyla vārds, pa vienam katrā rindā. Tagad pieņemsim būt nedaudz neapdomīgi. Pieņemsim, ka es nezināju par strlen un es sapratu, viss labi, neviens gatavojas, lai būtu nosaukt lielāks nekā, piemēram, 50 rakstzīmes. Iesim uz priekšu un recompile šis un atkārto to, un pēc tam ierakstiet Zamyla vēlreiz. Loģiski, kāda ir Programma gatavojas izmēģināt drukāt? Z-A-M-Y-L-A pēc tam, piemēram, 45 nezināmi baiti atmiņas. Un tiešām, mēs atgriezīsimies šo ideju atmiņas. Bet tikai loģiski, ja Zamyla vārds ir tas garš, kā vienu attēlu šeit, ko mēs esam sakot ir saglabāt drukāšanu, saglabāt drukāšanu, saglabāt apdruka, saglabāt drukāšanu, saglabāt drukāšanu, visu ceļu līdz 50. raksturu, kas, kurš zina, kas notiek varētu notikt. Tātad pieņemsim faktiski to apskatīt. Pieņemsim ierakstiet Zamyla. Interesanti. Mums palaimējies. Tikai visu ķekars atstarpēm. Oh. Tur ir viens bailīgs raksturs. Tas izskatās veida, piemēram, dīvaini jautājums atzīmēt tur, bet ir Zamyla vārds. Iesim patiešām neapdomāti. Kā par mums izdrukāt 500 bloķē pretī nezināmajam? Iesim uz priekšu un padarīt šo kā arī un pēc tam atkal palaist. Un pieņemsim pilnu ekrānu tā, jo mums ir nepieciešams, lai redzētu vairāk vietas. Zamyla. Palaimējies vēlreiz. Uzdrīkstēties mēs iegūtu vairāk neapdomāti? Iesim vairāk neapdomāti. 50000 rakstzīmes. Tas pats, protams, nav laba ideja. Viss kārtībā. Padarīt virkni 0. Tas būs mūsu pēdējais demo. Zamyla. Ugh. Ugh. LABI. Tātad mana atmiņa ir ļoti tukša tieši tagad, kas ir faktiski veida ērti. Ko es cenšos iegūt kuri paredzēti, visas tiesības. Un tagad es esmu tikai gatavojas saņemt neapdomāti. 500,000. Make-- pieņemsim pilnekrāna to. Enter. Zamyla. Tur mēs ejam. Man nav ne jausmas, ko tas ir, bet tas izklausās slikti. Viss kārtībā. Un patiesībā, drīz, ja tu esi viens paveicies maz darba laika un problēmu noteikt vienu, jūs varētu ļoti labi saskarties šo. Segmentācija vaina tiešām ir labi definētā nozīmē. Tas nozīmē, kādu kļūdas kas attiecas uz segmentu atmiņas. Un lajs izteiksmē, tas nozīmē, ka mēs pieskārās memory-- mēs izmantojām RAM manā datorā ka man nebūtu bijusi pieeja. Un tas, ko ir gan spēcīgs un arī bīstams par C ir tas, ka jūs faktiski ir neierobežota pieeja uz visu jūsu programmas atmiņā vai baiti vai RAM, precīzāk. Tātad, pat ja Zamyla nosaukuma ir tikai sešas rakstzīmes, Es vēl joprojām var iet visur atmiņā es gribu. Un kā malā, ja esat kādreiz lasīt kādu rakstu gadu gaitā par kādu servera vai kādu programma kļūst ieplaisājusi vai hacked, kas ir ņem priekšrocība kaut sauc bufera pārpildes izmantot ka mēs faktiski runāt par pāris nedēļām, tas ir parasti atsaucoties uz kaut tricking dators uz iet labi ārpus robežām atmiņas ka tai vajadzētu būt, un atrast kaut ko sulīgu jo memory-- parole, iespējams, ir veids, apiešanas dažas sērijas numuru pārbaudiet, vai vienkārši parasti spēj triks dators ir izpildes kodu, kas nebija paredzēta. Bet pieņemsim atgriezties realitāte tikai brīdi ja šī programma bija īstenots ar strlen, un ieviest viena lieta šeit. Kas jauns starp šiem trim līnijām? Tātad stīgu dot h. Izrādās, tur ir šis bibliotēka sauc String Dot H, vai String Library, kura header failu, tā sakot, Ir virkne dot h, kas dod man piekļuve šai strlen funkciju. Ja es izlaist, ka kompilators ir gatavojas kliegt uz mani kaut kādā veidā. Bet jūs zināt, ko? Tagad pieņemsim nokļūt tiešām niansēts. Atbilstoši 22, tur ir kaut kas labs no inefficient-- slikti izstrādāti, arguably-- par šo līniju kodu. Domāju, ka atpakaļ uz to, kā for-cilpa tiek īstenoti un kādi pasākumi notikt atkal, un atkal un again-- inicializācijas, nosacījums, kods, kas izpaužas izpildīts, tad pieaugumu vai izmaiņas, tad nosacījums, tad kods, tad izmaiņas, tad nosacījums, tad kods, tad izmaiņas, un tā tālāk. Tātad, kādi varētu būt nedaudz satraucoša vai slikti darīts šeit? Jā, zilā krāsā. Mērķauditorija: strlen ir sauc daudzas, daudzas reizes. SPEAKER 1: Jā. Tātad strlen sauc daudzas reizes, bet to, kas ir garums Zamyla vārda par Pirmo reizi cilpa izpilda? Mērķauditorija: Six. SPEAKER 1: Six. Nu, kas ir garums viņas vārdu otrā reize, kad kods izpilda? Mērķauditorija: Six. SPEAKER 1: Nu labi. Tas joprojām ir seši. Tiesības? Zarla vārds ir ne mainījies, pat ja es esmu meklē ir tikai daļa no vēstulēm viņas vārdu. Un tā tas, ka es esmu efektīvi jautā šo jautājumu, kas ir garums Zamyla, kāda ir garums no Zamyla, kas ir garums Zamyla, sešas atsevišķas reizes, vai septiņi pat, ir tikai stulba, jo tas ir nemainīgs, ka atbilde. Un tā, ko es patiešām varētu darīt, ir this-- virknē vienā Man ir nedaudz labāka versiju šeit. There-- whoops-- string divi man ir pavisam nedaudz labāks variants, kur Man this-- nevis tikai inicializēšana i 0, es arī ar komatu atzīt otru mainīgo sauc N- Man nav ko teikt int vēlreiz. Man nevajadzētu, patiesībā. Bet es saku n. Un tad es sāktu n strlen no n, lai tagad cik reizes tas strlen get izpildīts kopā? Tikai vienu reizi. Un tā tas ir tas, ko mēs domājam agrāk par labāku dizainu. Patiesībā, kad jūsu kods ir pareizs, atgriežās un domāšanas veidu, es esmu tik maz, izmantojot atmiņa vai kā dažas sekundes vai no datora laiku milisekundes kā iespējams īstenot kādu problēmu? Un es esmu gatavojas, lai ritinātu augšup un tikai pieminēt ka tur ir šis pieminēt no null šajā versijā, bet mēs atgriezīsimies pie ka pirms ilgi. Jo tagad, pieņemsim to apskatīt at, kur tas notiek, lai mūs vadīt. Tātad viena, izrādās, ka Tagad, kad mums ir iespēja apskatīt atsevišķas rakstzīmes, mēs varam kaut ko sviras no 0. nedēļā, kas bija ļoti arcane un kārtot neinteresanti laikā. Bet tagad, un jo īpaši, ja mēs nokļūt Kriptogrāfija nedēļā, tas būs diezgan spēcīgs. Izrādās, ka ar dažiem dati types-- Ints un pludiņi un chars un stīgas un cits things-- daži no tiem var ļoti viegli pārvērš citu. Piemēram, kad mēs runājām par ASCII kādu laiku ago-- šeit Lielie burti caur M, dot, dot, dot-- mēs teicām, ka tur ir kartēšana starp šiem burtiem un cipariem. Un patiesībā, tas sakāms uz mazajiem burtiem, kā arī. Mazie a ir 97, kapitāls a ir 65. Un tur ir vairāki ASCII, kas ir tikai šis kartēšana sistēma attiecībā uz visiem šiem citiem burtiem. Tātad, ko tas nozīmē? Nu, es esmu gatavojas iet uz priekšu un atvērt up reālā ātri kaut ko sauc ASCII 0, no kuriem lielākā daļa ir komentāri. Un atkal online jūs vienmēr varat skatiens caur komentāriem. Un to apskatīt to, ko tas būs jādara. Tātad tas ir ieguvuši galveno funkciju. Esmu iekodēts numurus tikai tagad, jo es zinu, ko es daru. Es zinu, ko es gribu redzēt šeit. Un es esmu inicializēts I-65. Un es esmu skaitīs ar 26 burtiem kopā. Un ko es esmu gatavojas izdrukāt vienu līniju laikā ja jūs varat interpretēt Tas uzsvērts līnijas? Kas izpaužas drukāts? Jā. Mērķauditorija: Vai jūs plānojat izdrukāt vēstuli, atbilst kartes no vēstule vērtība un veselais skaitlis? SPEAKER 1: Tieši tā. Es esmu gatavojas, lai drukātu vēstuli atbilst veselam skaitlim, un otrādi, kā šādi. Nu tas, kāds teica agrāk, ir tikai vietturis char. Tas joprojām ir. Tas, protams, ir vietturis For an int-- nav jauna līnija. Un tagad paziņojums, manu pirmo vērtību, Es esmu tapām šim viettura ir ne tikai I. es saku, iekavās, char es, kuru Parenthetical char ir stāsta kompilators, ārstēt I ne, kādi tie ir, kas ir skaitlis. Uzskatīt to par faktisko raksturu. Savukārt otrā vērtību es esmu tapām in-- I-- vajadzētu būt tikai skaitlis. Tātad, ja es apkopot šo program-- tāpēc tas ir padarīt ASCII 0, dot slash ASCII 0-- es tikai iegūt Šī parocīgiem maz diagramma, kas rāda man visu iespējamo samērošanai bez domāt to izmantojot vai skaitlis tas par savu. Un es esmu arī izdrukāt, paziņojums mazos burtus, jo dažas rindiņas vēlāk, es arī izdrukāt šo kartēšanu kā arī, kas ir tikai uz saka, ka tad, kad jūs saprotat Kas notiek zem ar kapuci, jūs varat automātiski konvertēt uz priekšu un atpakaļ. Un patiesībā, ja kāds no jums kādreiz darīja pakāpē skolā vai dzirdējis par kādu mythically ņemot vērā un iet to viņa vai viņas draugs klasē, bet tu scrambled Letters Tāpat kā kļūst B, un B kļūst par C, vai kaut ko sarežģītāka nekā tas, labi, kā jūs iet par Īstenojot kas kā mazulis? Nu, jūs vienkārši veida zināt Kļūst B, B kļūst C, bet matemātiski, Kas tas bija mazulis dara? Ko jūs pievienojot katram burtam? Efektīvi, 1. Tātad, kad jūs maināt A uz punktu B, kas ir veida, piemēram, mainot 65 līdz 66, kas matemātiski nozīmē vienkārši pievienojiet 1. Un tādēļ, ja jums bija, lai īstenotu ka maz maldinošs paņēmiens Jūsu skolotājs kodu, jūs varētu darīt tieši to tikko pievienojot vienu burtu kopā. Tātad, pirms ilgi, mēs esam gatavojas redzēt, kā mēs var izmantot, ka, lai reāli patiesi motokross un atšifrēt informācija. Pa to laiku, zina, ka mēs esam sākuši ieviest pāris citām bibliotēkām here-- virkni vienu šodien. Un ļoti noderīga vietne cerams, jūs atradīsiet sauc reference.cs50.net, kas mācībspēki ir salikti kopā, tā ka, ja jūs vēlaties, lai uzmeklēt cik strlen darbus, Jūs varat sākt rakstīt Funkcija vārds, noklikšķiniet strlen tur, un tad mazāk ērts izskaidrojums gatavojas parādīties. Vai, ja jūs vēlaties amatpersonu Linux bāzes paskaidrojums, Jūs varat noklikšķināt vairāk comfy pie augšējā labajā stūrī, un to sniegs to pašu informāciju, bet sarežģītākos ziņā. Tas ir noderīgs resurss, lai tiešām zina, ko dara viss. Nākamreiz mēs spēsim ieskatieties Ovaltine un vēl, un iepazīstināt sevi uz pasaules kriptogrāfiju. Pirms tam, mēs redzēsim Jūs vēlāk šonedēļ. Un tagad, Colton Ogden. Tiekamies trešdien. [Mūzikas atskaņošanai] [Mūzikas atskaņošanai] SPEAKER 1: Kas [Bleep] tu dari? SPEAKER 1: Es esmu ēšanas manu desertu? Kā jūs ēst? Ar rokām? [Mūzikas atskaņošanai]