[Powered by Google Translate] David J. Malan: Nu labi, tas ir CS50, un tas ir sākums divu nedēļu. Paldies. Ļaujiet mums sākas šeit ar telefona zvanu. Es esmu par, lai izsauktu 617-Bug-CS50. CS50: Tas ir CS50. Turp un atpakaļ Boy, nospiediet 1. Lai sāktu no jauna, nospiediet 9. David J. Malan: Tā viņš teica par Shuttle Boy, nospiediet 1. Tāpēc mēs esam gatavojas nospiediet 1. CS50: Kāds ir jūsu izcelsme? Par Quad, nospiediet 1. Mather, nospiediet 2. Boylston, nospiediet 3. Lamont, nospiediet 4. Mem zāle, nospiediet 5. Lai sāktu no jauna, nospiediet taustiņu 0. David J. Malan: Mēs nospiediet 1 quad. CS50: Nākamais maršruta atstāj šo ļoti minūti at 1:10 PM, un tad at 1:20 PM, 01:30, 1:40 PM. Tas ir CS50. David J. Malan: Tātad tas ir CS50 balss. Un tas ir piemērs no gala projektu veidu, lai Piemēram, jūs varat nokost pret beigās semestra. Piemēram, ka shuttleboy.cs50.net eksistē - patiesībā projekts, kas es pirmo reizi rakstīja, ņemot CS51 atpakaļ, kad man bija undergraduate. Un iedvesmas šeit bija toreiz, visi viņi bija bija iespiestās piepilsētas autobusu grafikus, un nebija jēdziens meklē lietas uz augšu tiešsaistē. Un tāpēc es veida balodis vienā nedēļas nogalē, izlej caur izdrukāt grafiku, un pārnesti to uz datora programmu. Tajā laikā, kad datorprogramma notika jāraksta jo C. Un tu tiešām ilga to, ierakstot Shuttle puika mirgo ātri kā mēs esam darījuši līdz šim. Taču gadu gaitā, tas ir pārtapusi tūlītēja ziņapmaiņu bot. Tas ir kļuvis vēl nesen šajā tīmekļa vietnē, uz Īsziņu balstīts instruments, kā arī šajā balss rīks. Un tas ir mājienu lietas veidu, ka jūs varat darīt, lai sevi līdz semestra beigām. Piemēram, tur, SMS versija Shuttle Boy notiek darboties šādi. Ja uz jūsu mobilo tālruni, jūs sūtīt īsziņu uz 41.411 un pēc tam nosūtīt īpašu simbolu sboy, par Shuttle Boy, seko A un B, kur ir izcelsme un B ir galamērķi - Piemēram, Boylston Space Quad - ko jums vajadzētu saņemt atpakaļ dažu sekunžu laikā ir teksts ziņa no Shuttle Boy stāsta jums, kad tieši Nākamie atspoles ir, no šī punkta dodas uz kas punktu B. Un tas ir vairāk vispārējs piemērs, kas pazīstams kā izmantojot API. Tātad, piemēram, tas šeit ir tikai shuttleboy.cs50.net, Faktiskais tīmekļa iemiesojums to. Bet dati, kas ir uzsvērta šī un citu progr, ka CS50 ir izstrādājusi visi pakļauti ikvienam šeit formā API, lietojumprogrammu saskarnes. Un tas ir tikai iedomātā veids, kā pateikt, ka cilvēkiem patīk mēs par Internets un citi ir pavadījuši kādu laiku izveidojot programmatūru, jūs varat izmantot, lai greifers datus no mums un tad veidot savu pieteikumu uz augšu Šīs datu kopas. Tātad, piemēram, tas Transporta Zēns API lapā šeit, kas notiek, ir uz CS50 rokasgrāmatā, būtībā dokumentiem kā jūs varat iet par lūdzot CS50 serveriem datiem. Piemēram, ja jūs esat iepazinušies ar CSV failiem, komats atdalītas vērtības, tie ir tikai sava veida ātri un netīrās Excel līdzīgi failus. Tātad jūs varat lūgt Shuttle zēns visus datus par visiem mājas un GPS koordinātas, un Jūs saņemsiet muguras, būtībā, izklājlapu, piemēram, ka Jūs varat izlasīt programmā savu un pēc tam radīt rezultātus, piemēram Shuttle Boy pati notiek darīt. Tiem vairāk pazīstams, vairāk mūsdienu datu pārstāvniecībās ietver JSON, JavaScript objekts pierakstā. Kaut nāks atpakaļ uz jums uz beigās semestra. Bet atkal, tas ir tikai viens no vairākiem CS50 pašu API. Un aizraujošu lieta ir tagad, šajās dienās, Facebook un Twitter un Google un diezgan daudz ik populāri mājas lapā, kas tur ir dažas no API, kas nozīmē, ja jūs lasīt kārtot dokumentāciju par to mājas lapā, jūs pierakstīties uz kontu, tad varat sākt rakstīt programmatūru uz augšu neatkarīgi rīkus vai dati, uzņēmums tur piedāvā. Un tāpēc viens no mūsu pašu mācību līdzcilvēkiem pāris gadus atpakaļ uzrakstīju Mac versiju par to. Tāpēc pie saites ar nosaukumu Mac šeit augšējā kreisajā stūrī, jūs faktiski lejupielādēt Mac OS widget, kas darbojas uz sava Mac darīt to pašas lietas. Tātad tas viss ir par ēkas uz augšu datu kopu, piemēram, šo. Bet vairāk par to uz beigām semestra. Tātad, pieņemsim pikējošais nekustamo ātri ar kļūdu, tikai, lai veida nokļūt lietas iesilda šodien, un domāju, ka atpakaļ uz dažiem Lietas, ko mēs paskatījās pagājušajā nedēļā. Jo īpaši, ļaujiet man iet uz priekšu un uzvilkt, teiksim, šis piemērs šeit. Buggy1.c, tas ir pieejams par kursu mājas lapā, ja jūs vēlaties patīk lejupielādēt un pabāzt ap sevi. Bet pieņemsim tuvinātu šeit šajā diezgan īsā programma, un tikai super-ātru Atgādinājums daži no stūrakmeņiem, ka mēs patiešām gribam, lai tikai sāktu veikt par pašsaprotamu. Tātad zilā sīkumi, kas no 1 līdz 9 līnijas, ir tikai softbola jautājumus. Tātad tie ir tikai komentāri. Viņiem nav nekādas funkcionālas nozīmes. Bet viņi komentārus tādā nozīmē, ka viņi norāda, ka Es, cilvēks, kas pie sevis, lai lekciju un pēc lekcija, es tiešām atceros, ko šī programma dara bez lasīt caur to pozīcijai un atjaunošanās vēsturi manā prātā. Turklāt, ja es roku šo programmu, lai kāds cits, piemēram, tu, tas ir daudz skaidrāks, lai jūs, jo komentāriem, kā šis, kāda programma ir faktiski dara, vai vismaz kāda Programma ir vajadzēja darīt. Vai tas ir pareizi, ir cits jautājums vispār. Tagad, C, ar multi-line komentāriem, atcerēties, ka uz līnijas vienu šeit ir burvju simbols, / *. Tas nozīmē šeit nāk sākumu komentāra. Un nekas cits jautājumiem, līdz jūs sasniedzat beigu pārtraucēju kas ir * /, pretī. Tātad fakts, ka man ir 80-daži nepāra zvaigznes šeit no kreisās uz labo, ir tiešām tikai estētiska detaļa. Tam nav funkcionālas nozīmes. Tagad, kā par 11 līniju? Ko tas dara lajs izteiksmē? Ko tas nozīmē? Mērķauditorija: Ietver standartu. David J. Malan: Labi, labi. Tātad tas ietver stdio.h bibliotēku. Tātad, ko tas nozīmē? Nu, iekšā šo failu, stdio.h, ir visai ķekars funkcija deklarācijas - tas ir, koda ka kāds cits rakstīja. Un perfekts piemērs funkciju, kas ir deklarēta stdio.h ir - kas mīļākā ko tagad? Tātad printf, viens no visbiežāk tiem izmantot, protams agri no šīs bibliotēkas ir tur. Ja es izslēgt, ka līnijas kodu, šķindēt gatavojas kliegt manī kaut kas par izmantojot nedeklarēto simbolu. Nedeklarētu kaut kas ir iespējams, atslēgvārds, jo mēs neesam informēti kompilators ko printf izskatās patīk, ja mēs arī šo rindu. Un vēl uz leju, lai Zemes, tiešām, ko tas līnija saka, ir atvērt šo failu, stdio.h, kur tas ir par servera cietais disks, vai par ierīces cieto disku, un kopēt-ielīmēt to labi tur manā failā, bez manas kam to darīt manuāli. Tagad, kad mēs noteikti šeit galvenais, pirms ilgi mēs sāksim teasing intervālu ko int un kāda neesošu ir. Bet tagad, aplūkosim trīs līnijas aktu 15 līdz 17. Tas šeit es varu pieprasīt kā mašīnīti. Manā komentāros 7 line saka "jāizdrukā 10 zvaigznītes bet nav "Kāpēc. tas nav drukāt, patiesībā, 10 Piemēram zvaigznes? Mērķauditorija: [nedzirdama]. David J. Malan: Tieši tā. Tātad ievēroju, ka mēs sākam skaitīt no 0. Un tas ir faktiski konvencija plānošanas un datorzinātnes kopumā, sākot skaitīt no 0, nevis 1. Un tas patiešām ir tikai cēlies no tā, ka, lai Piemēram, kad mums bija astoņi cilvēki uz augšu uz skatuves, kad neviens netika paaugstinot savu roku, viņi bija visi efektīvi nullēm. Un tā tas ir tikai sava veida datora konvenciju tā, Tādēļ, lai sāktu skaitot no 0. Ja tas ir mazākais skaits var pārstāvēt bināro. Tāpēc šeit mēs esam sākuši inicializēšana I līdz 0. Mēs esam, kas man ir vienāda ar 0. Bet tad es šo kļūda šeit, sakot man ir mazāks vai vienāds ar 10. Bet, ja jūs domājat, ka cauri, ja es sāktu ar 0, un tad es dodos līdz 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, es esmu patiešām gatavojas izdrukāt 11 zvaigznēm uz ekrāna, jo es esmu gājusi uz augšu uz un vienāds ar 10. Tik viegli noteikt šeit tad ir tas, ko? Mērķauditorija: [nedzirdama]. David J. Malan: Vienkārši mainīt to mazāk nekā. Ja jūs patiešām vēlaties, jūs varētu darīt. Bet vispār, kas ir sarauca pieri. Un tā sāk skaitīt no 0 ir tikai kaut kas jums vajadzētu parasti pierast. Tagad, ko par šo visu būvēt un pats par sevi? Šī līnija 15 demarks par cilpu. Tāpēc nav funkcija. Tas ir tikai apgalvojums. Tas looping konstrukcija, tāpat kā mēs redzējām nulles. Un tas ir trīs daļas. Ievērojiet, ka tur ir pirmā daļa, kas kreisi no semikolu. Tur vidusdaļa starp diviem semikoliem. Un tad tur ir labā puse pa labi otrās semikolu. Tagad, pirmais no tiem dara? Mērķauditorija: [nedzirdama]. David J. Malan: Atpakaļ tur? Yeah? AUDITORIJA: Inicializācijas. David J. Malan: inicializācija. Tātad, ko tas nozīmē? Mēs esam paziņoja mainīgo sauc i. Tas ir int tipa, jo es esmu norādīts int i. Un es esmu inicializēšana I vērtību 0. Tātad, ko tas īsti saprotams? Tas ir efektīvi sakot ar datoru hey, dod man pietiek atmiņu, pietiekami daudz RAM, lai ietilptu numuru, un tad ielieciet Šajā rieciens RAM 0 numuru. Un kā malā, cik liela ir int parasti, vismaz iekšā no ierīces? Mērķauditorija: 32 bitu. David J. Malan: 32 biti. Tātad tas nozīmē, man 32 bitus, citādi zināma kā 4 baiti, un nodot vērtība 0 tā, kas ir diezgan viegli, jo Tas nozīmē tikai to noteikt visus bitiem līdz 0. Tāpēc tagad, otrā daļa šeit ir nosacījums. Un nosacījums, kas liecina nosaukums, ir tas, ko pārbauda atkal un atkal un atkal, vai tā ir patiesa vai nepatiesa. Tātad tas ir tikai saprotams darīt šādas rindas koda - proti līnija 16, jo tas ir vienīgais izrobota 1 zem - tik ilgi, kamēr es ir mazāks par 10. Un pēc katra atkārtojuma caur šo cilpu, do incrementation, kas šajā gadījumā ir i + +. Tagad, tas nav jābūt I + +. Tas varētu būt es -. Bet, ja es to izdarīja, to, uzvedība notiek būt par šo programmu? Mērķauditorija: Tas būs bezgalīga cilpa. David J. Malan: Tas būs sava veida bezgalīgu cilpu, ja mēs paveiksies pēc negatīvs 2 miljardi jeb tā. Varbūt lietas aptīšanas, tikai pēc būtības no noteiktas bitu skaits, kas mums ir iedalītas int. Bet tas noteikti būs atkārtot daudz vairāk nekā 10 valstīs un protams, vairāk nekā 11 reizes šeit. Un tagad, tāpat kā malā, saprotam, ka i + + un i - Ir tiešām tikai sintaktisko cukura. Tas ir tikai stenogrāfija nošu kas ir nedaudz vairāk skaidri rakstīts šādi: i = i + 1. Tas ir identisks i + +. Tas tikai veida izskatās glītāka teikt i + +. Tas ir vairāk koncentrēts, vieglāk uztveramu. Un tāpēc lielākā daļa cilvēku darīt vietā. Bet tas ir identisks funkcionāli ko mēs tikko redzējām. Tātad īsumā, ātri noteikt šeit ir tikai pateikt atkārtot I no 0 visu ceļu līdz pat mazāk nekā 10. Un tad mēs tiešām saņem 10 zvaigznes. Tāpēc pieņemsim mēģināt šo. Ļaujiet man atvērt termināla apakšā. Ļaujiet man iet uz direktoriju, ka tas ir iekšā Un es esmu gatavojas apkopot to manuāli ar šķindēt tagad. Un es esmu gatavojas apkopot šo kā buggy1.c, Enter. Un tagad buggy1, kāpēc tur nav šādu failu vai direktoriju sauc buggy1? Mērķauditorija: [nedzirdama]. David J. Malan: Jā. Tātad tas faktiski aicināja a.out. Tātad atcerēties, ja jūs vienkārši palaist šķindēt, kur šķindēt ir kompilators, un jums nav jānorāda vārds, kuru vēlaties dot savu programmu, tas notiek, lai noklusējuma a.out. Tātad tiešām, ja man ls - Ups. Un es didn't - uz melna un balta jautājumu dažus esat saskārusies ir noteikts. Bet ļaujiet man darīt. Tur mums ir a.out uz kreisajā pusē tur. Tāpēc mums ir palaist a.out nevis buggy1. Tāpēc ļaujiet man iet uz priekšu un darīt to. . / A.out, Enter. Un es acīmredzot nebija darīt? AUDITORIJA: Saglabāt. David J. Malan: Saglabāt manu failu. Tāpēc, ka ir viegli atrisināt, trāpot Control S, vai dodas uz Failu, Saglabāt, tāpat kā vairumā programmu. Ļaujiet man iet uz leju šeit, notīrītu ekrānu, palaist vēlreiz. Un tur ir vēl kļūda. Tātad, kas notiek - Mērķauditorija: Jums nav sastādīt. David J. Malan: Ah, labi. Man nav salīdzināšanu. Kā idiots, es esmu meklē kodu, lai redzētu, kas ir nepareizi. Tātad šķindoņa buggy1.c, tagad a.out. Un Phew, saglabātas. Tāpēc tas izskatās mazliet neglīts, jo tur nav jauna līnija jebkur programmā. Bet atkal, tas ir tikai estētiska detaļa. Un vismaz, ja mēs paļaujamies tos, mums vajadzētu tagad redzēt 10 tādas zvaigznes. Nu, ko par šo otro iesildīšanās piemēram? Tātad buggy2, es apgalvot, ka šī versija arī būs drukāt 10 zvaigznes, pa vienai katrā rindā. Tātad šajā laikā, man ir newline raksturs, tikai lai lietas mazliet prettier. Bet tā vietā, ko man tas ir. Tāpēc ļaujiet man darīt šķindēt buggy2.c, Enter. Tagad tas atkal sauc a.out. Enter. Es redzu tikai vienu jaunu līniju, tikai pašā pēdējā jaunā līnija, kas pārceļas mans aicinājums nākamajā rindā. Un vēl skaidri es esmu drukāšanas *, tad jaunu līniju, *, Tad jaunā pozīcija. Bet kāda kļūda šeit? Yeah? Mērķauditorija: [nedzirdama]. David J. Malan: Tieši tā. Tātad atšķirībā no dažiem valodām, piemēram, Python, kur līdzinājums faktiski ir funkcionālo nozīmi, jo valoda, piemēram, C - kā mēs redzēsim, PHP, JavaScript - sašaurinājums ir tiešām tikai par cilvēkiem "labā. Tātad fakts, ka es esmu izrobota līniju 16 un 17 izskatās lieliski, bet tas nav funkcionālas nozīmes šeit. Ja es gribu abas līnijas izpildīt kā daļu par cilpa, tad man ir jāpievieno tos cirtaini lencēm, ko darīt. Jūs varat tikai samazināt šo stūri un izlaist cirtaini bikšturi, ja kāda ir lieta? Mērķauditorija: Tikai vienu līniju. David J. Malan: Tikai vienu līniju. Tātad tas ir tikai sava veida jauku veida sintakses detalizēti, lai jūs netērētu laiku, rakstot trīs līnijas, no kuriem divi ir cirtaini bikšturi, vienkārši rakstīt vienu rindiņu kodu. Bet, ja jums ir divas vai vairākas līnijas, mēs tiešām ir nepieciešams to darīt. Tāpēc tagad ļaujiet man ietaupīt šo. Ļaujiet man iet uz priekšu un atkal palaist šķindēt. Tad ļaujiet man atkārto a.out, un tagad man tos pa vienam katrā rindā. Tagad, a.out atkal ir sava veida mēms nosaukumu programmas. Kā es varu pateikt šķindēt faktiski man faila nosaukumu kas ir vairāk lietotājam draudzīgs, tāpat buggy2 pati? Nedaudz skaidrāk? Mērķauditorija: [nedzirdama]. David J. Malan: Labi, tāpēc es patiesībā var veikt ļoti lietotājam draudzīgu saīsnes un tikai rakstīt padarīt buggy2. Man nav jānorāda c šajā lietā., Un hit Enter. Un ko darīt tas ir tas sastāda buggy2.c man ar lūdzot šķindēt to darīt. Proti, tā aicina šķindēt, tas darbojas šķindēt izmantojot tā vairāk komandrindas argumentus vai slēdžus, nekā es tiešām ir nepieciešams. Ar laiku, mēs būsim atpakaļ uz to, ko visi šie dažādu mistisks hyphenated izteiksmes līdzekļiem. Bet tagad, tas ir tikai ietaupot man nepatikšanas nepieciešamības atcerēties un kam tipa no visiem tiem dažādas hyphenated izteiksmes. Un tā otrādi galu galā ir ka tagad man ir buggy2. Ja es gribu to darīt manuāli, gan, es var tā vietā izdarīt - šķindoņa-o buggy2 un tad buggy2.c. Un kas būs līdzīgi man failu ar nosaukumu buggy2. Tātad īsumā, šķindēt ir kompilators. Darīt ir tikai lietotājam draudzīgs rīks, kas mums būs, izmantojot vairāk un vēl, jo tā vienkārši sāk vienkāršot lietas mums. Un mēs atgriežamies 0, visbeidzot. Tagad, tikai tāpēc, bet mēs sāksim Teasing, ka daļa šodien un trešdien. Visus jautājumus par kādu no šo? Yeah? Mērķauditorija: [dzirdams] Ls pēdiņām tur? David J. Malan: Labi. Kad es drukāti Ls citātus, kas bija mani dara daži burvju aizkulisēs, lai noteikt bug. Es aizmirsu, kā mēs esam stāsta daudzi no jums par diskusiju dēļiem, kas darīt - mēs darīt tagad - sudo Yum-y atjauninājumu appliance50. Whoops, ka ir uzrakstīti pareizi. Tātad ierīce ir kā operētājsistēmu. Tas darbojas šo operētājsistēmu sauc Fedora. Un tagad, jo mana lēnu interneta savienojumu, es esmu tiešām jātulko to. Tātad darbojas sudo Yum atjauninājumu, kā mēs jums pastāstīt darīt Problēma komplekts, būtībā tāpat kā darbojas automātisko atjauninājumu Mac OS vai Windows. Un iemesls darbojas šī pašā sākumā Problēma komplekts ir tāpēc, kad mēs radīja ierīci, es messed up, un es nejauši izgatavots visas programmas izskatās melns uz melna ekrāna, kas ir iemesls, kāpēc jūs neredzat tos pēc noklusējuma. Bet jaunākā versija no ierīces nosaka šo. Un es noteikt, ka laikā pārtraukuma reiz man ir internets savienojamību. Tātad citē vienkārši slēpj mana kļūda, ļoti diskrēti, acīmredzot. Citi jautājumi? Jā? Mērķauditorija: Kur veikt nāk no? [Dzirdams] David J. Malan: Labs jautājums. Kur tas padara nāk no? Tas ir Linux programma, kas pastāv jau vairākus gadus, kamēr Pirms CS50. Un tas nāk ar operētājsistēmu, piemēram, Fedora. Tas nenāk no CS50 bibliotēkas. Patiesībā, tikai lietas, kas nāk no CS50 bibliotēkas Līdz šim, ka mēs esam redzējuši, ir GetString, GetInt, visi tiem Get funkcijas, un vārdu virkne, un uz dažiem mērā vārdu bool. Bet mēs kaitināt, ka bez kad mēs nirt CS50 uz pati ierīce. Tātad, jā, vēl viens jautājums šeit. Mērķauditorija: Kad jūs teicāt veikt un pēc tam Buggy, kā tas dators zina [dzirdams]? David J. Malan: Labs jautājums. Tātad, ja jūs vienkārši palaist padarīt buggy1 vai padarīt buggy2, cik tas padara zina? Tātad pēc noklusējuma, ja jūs rakstīt veikt buggy1, padara meklē failu sauc buggy1.c. Un tad tas izpilda attiecīgus šķindēt komandas, tādējādi ignorējot noklusējuma izvades failu sauc a.out. Patiesībā, ja mēs skatāmies uz to, ko darīt, ko - pieņemsim atmest šo. Ja mēs skatāmies uz to, kas padara faktiski dara, dara buggy2, tas jau līdz šim. Tāpēc ļaujiet man noņemt rm komandu, Programma es uzrakstīju iepriekš. Ierakstot Y-E-S, lai apstiprinātu, ka es gribu, lai to noņemtu. Ja man tagad darīt darīt, ievēroju, ka šajā ļoti garā rindā, tur ir šī pēdējā lieta šeit,-o buggy2. Visi dara dara, ir iet šo argumentu, tā sakot, lai Šķindoņa, tāpēc, ka man nav rakstīt pats. Labi, tāpēc ātri pāris administratīvo paziņojumi. Tātad sadaļām, kuras oficiāli sākās šo nāk Svētdiena, jūs vienmēr vēlaties, lai, ja jums ir viens, klēpjdators. Ja jums nav klēpjdators, do panākt, lai man krītot man e-pastu. Un mēs izdomāt darbplūsmu. Ko vispār jūs atradīsiet nodaļā ir tas, ka viņi daļa konceptuāls, nepilna praktisku. Mēs speciāli izmantot sadaļu jautājumiem, daļa no Šī nedēļa ir problēma, kas, lai staigāt pa kādu no konceptuālu materiālu no lekciju. Un tas viss ar pašreizējo problēmu kopumu. Un mēs arī nirt dažas praktiskas aktivitātes, dažreiz kas tiks pieprasīts iesniegt, dažkārt kas nebūs. Piemēram, šī pirmā nedēļa, viņi nozīmēja tikpat iesildīšanās pasākums. Un jūs atradīsiet, ka šīs problēmas ir tiešām tikai to. Tie ir domāti, lai būtu diezgan maza, bet ne vienmēr triviāla programmām, lai rakstītu, ka ne vienmēr ir aizraujoši un par sevi, bet ir labas iespējas praktizēt ar sintaksi, ar jaunām funkcijām, kas komforts sadaļā, kur jums ir daži no jūsu klasesbiedriem klāt kā arī savu TF. Un ko mēs darīsim laika gaitā ir izmantot rīku, ko sauc CS50 Spaces, kuru nevis tikai izmantojot CS50 Appliance, jūs vietā iet uz mājas lapā pārlūkprogrammā, kur jūs varēsiet rakstīt kodu pārlūka loga laikā sadaļā. Un tad, ja jūs izvēlaties, jūsu mācību kolēģis tad var parādīt kāds tas ir jūs rakstāt uz ekrāna savā pārlūkprogrammā logu augšā klases priekšā, vai anonīmi vai publiski, lai viņš vai viņa var, tad staigāt cauri ar jūsu klasesbiedri, ko jūs labi, ko jūs nav darīt labi. Un atkal, drošs tas viss var labi anonīmus. Bet tas būs jauka iespēja daudz interaktivitāte kā kaut ko līdzīgu lekciju atļauj. Pa to laiku, mums būs šīs lietas sauc par super posmi, kas ir obligāta, bet ir atvērtas ikvienam klases, lai jūs varētu darīt vairāk, kopumā attiecībā Problēma noteikti vienu. Lūk grafiks. Tas ir arī publicēta mājaslapā cs50.net. Ievērojiet, ka tur būs hakeris specifiska 1 rīt pēcpusdienā. Un mēs filmēt vienu šodien un vienu rīt un pēc tām Pašreiz 24 stundu laikā. Tātad, ja jūs nevarat veikt kādu no šiem laikiem, nav jāuztraucas. Un atkal, grafiks ir tiešsaistē tagad pie cs50.net. Runājot par sectioning sevi, jums ir jābūt gotten rakstiet instruēt jums iet uz kursiem mājas lapā, lai atrastu kādas ir jūsu sadaļā. Ja dzīve ir mainījusies, un jums ir nepieciešams, lai mainītu savu sadaļu, nav problēma. Iet atpakaļ uz to pašu URL, cs50.net/section, vienskaitlis, un jūs aizpildīt līdzīgu formu, lai jūs varat tad dod mums savu izvēli. Un mēs sekot līdz nedēļas beigām, par to, ko mēs varam pielāgotos. Pagājušajā nedēļā, atgādināt, ka mēs ierosinājām, izmantojot CS50 diskutēt, Kurss diskusija instruments, lekciju. Tāpēc mums bija 40 jautājumi, kas tika uzdoti un atbildēja laikā lekciju. Tā likās strādāt labi, tāpēc mēs turpināsim mēģina to darīt. Ja, veicot lekciju, jūs ne tikai justies ērti piesaistīšanu roku, nevis problēma. Iet uz cs50.net/discuss, post tur, un mūsu mācību 1 stipendiātiem būs vai nu atbildēt elektroniski vai paaugstināt to roku uz jūsu vārdā anonīmi jautāt, atkarībā par rakstura jautājumu. Un attiecībā uz atsauksmēm, parasti psets būs atgriezās nedēļas laikā. Jo tas aizņem maz, bet, lai sekcijas lai sasniegtu līdzsvars, pirmā PSET, 0 un 1, būs mazliet aizkavēta kā lietas apmesties. Bet sekojiet līdzi ka nedēļās. Visiem labi, tāpēc ļaujiet man likts uz manu nopietns balss tikai brīdi. Tātad tas ir faktiski interesants klimats būt ņemot šo diskusiju, kas ar visām citām lietām notiek uz Campus tiem saistīto. Bet CS50 noteikti ir bijusi sava vēsture šis konkrētais temats, jo tik daudz kā katru gadu, šis kurss, daudziem gadiem, Ad-dēļi apmēram 3% no klases. Šī pēdējā gadā, 2011, CS50 Ad-iekāpa 35 studenti. Tas nav, es domāju, jo trūkst skaidrības. Saprast, ka, veicot s mācību, ir lapa paziņojumu, kurā paskaidro, kur līnijas ir. Tas pats apgalvojums tiek atkārtots katru vienu no Problēma noteikti uz vienas lapas. Tāpēc es pieminu šodien tiešām tikai veikt ļaudīm domājot par to. Un mēs esam mēģinājuši dažādas lietas. Un ko es domāju, ka mēs varētu darīt šobrīd ir tikai jāņem brīdi, lai faktiski apskatīt dažus no pēdējiem gadījumiem, kas ir ieradušies uz augšu. Nevis saglabāt šos jo netīrās maz noslēpumus, faktiski norādīt, ko studenti ir jādara un kā mēs esam atklāti tas un tiešām, ko galvenais motivācija ir pat ar šī saruna. Tātad ar to teica, līnija būtībā tas ir - vienu mācību, jūs laipni, tiek aicināti, lai runāt ar klasesbiedriem. Tas ir viss mērķis, kam šie sadarbības biroja stundas Annenberg un mudinot cilvēkus uz galīgais projekts strādāt kopā. Bet līnija ir sagatavots, kad runa ir laiks, lai faktiski rakstīt savu galīgo risinājumu. Runājot angļu valodā, pilnīgi naudas sodu, uzstājoties pseido kodu, pilnīgi naudas sodu. Nosūtot klasesbiedrs savu PSET, ļaujot viņiem apskatīt ekrāns, jo rokas turpināt rakstīt, pa līniju, kā arī. Vai skatīties uz mācību par konkrētām pozīcijām. Bet tikai uzzīmēt zīmējumu par to, kā tas diemžēl realitāte, apzināties, ka ir mājas lapas, kas tur, ka ir risinājumi šīs klases un daudzās citās klasēs. Fakts, ka jūs vai apmēram 3% no jums zina, ka tas eksistē nozīmē, ka mēs zinām, ka tas eksistē. Fakts, ka tur ir mājas lapas, piemēram, tas, kur jūs var maksāt kādam, lai faktiski darīt savu problēmu kopumu - tas bija faktiskais gadījums, kas nāca klajā pagājušajā gadā. Tas ir mājas lapā sauc odesk.com. Un Tims bija personas vārds, šeit, kas bija norīkošanu par Šī tīmekļa vietne un lūdza kādu darīt savu PSET 7, šajā konkrētajā gadījumā. Nu, odesk.com ir ļoti Google spējīgs, un arī mēs esam Ļoti labi Googling. Arī šeit ir vietas - un tas viens ir diezgan zvērīgās, atklāti. [Smiekli] David J. Malan: smieklīgi lieta par šo vietni ir, ja Jūs lasīt Par lapu, viņi runā par to korporatīvo kultūra un cik klientu apkalpošana ir to skaits-viens prioritāte, lai pārliecinātos, ka jūsu uzdevumu iegūt pagriezās uz laiku. Bet visu nopietnību, atkal fakts, ka šajās vietās pastāvēt, saproti, mēs, arī ir informētāki par šāda veida portālos. Un lai dotu jums sajūtu, ko veido tas kopumā ņem, mēs parasti nav lielas skandāliem, kur cilvēki sadarbojas uz jebkura veida liela mēroga, bet drīzāk tas ir šīs vakara mirkļus vājumu, kur jums ir tik daudz ko darīt, tas ir 04:00, jūs izsmelti, un jums domāju, lai sevi, labi, ļaujiet man tikai veikt apskatīt manu kaimiņiem ir vai mana drauga kods vai līdzīgi. Un tas izpausmes diemžēl ietver Student Iesniedzot kaut kas līdzīgs šim, un students B IESNIEGŠANAS kaut kas līdzīgs šim, kas, protams, ir dators zinātne klasē, ir ļoti viegli datorzinātnieku atklāt ar programmatūru. Tas ir vēl viens kopīgs paradigma, kur jūs esat veida strādājuši līdzās kāds, varbūt runājot Angļu, tikai naudas sodu, pseudocode. Bet tad runa ir laiks, lai faktiski iesniegt, un psets tikai iegūt apmainījās pa e-pastu vai Dropbox vai līdzīgu. Bet mēģinājums padarīt to mazāk skaidrs, ka šis ir kas ir noticis, tad tas ir tas, kas ir iesniegts. Arī tas nav ceļojums pat labi uzrakstīts gabalus programmatūru, piemēram, mums ir reāli atklāt šāda veida lietām. Un tiešām, ko mēs darām, ir palaist programmatūru, kas salīdzina visus šogad iesniegumiem pret visiem pagājušā gada s iesniegumi, pret ko mēs atrast Internets, pret katru darbu lapā, kas tur. Tas viss ir ļoti automatizēta. Un tāpēc mēs to patiešām liels taisnīgumu ar 97%, kas patiešām strādā viņu ēzeļi off šajā un citos klases un liekot visu šīs pūles, lai darbs viņi galu galā iesniegt ir viņu pašu. Un es varu iet uz vecumu. Tie ir tikai nedaudz pagājušā gada gadījumiem. Daži skolēni iesniedza šos failus identiski uz 2 PSET, PSET 3, PSET 4, PSET 5, PSET 6, PSET 9. Šajā gadījumā, tas bija viktorīnu 0 un pēdējā gadā, kad divi studenti iesniedza identiski šo teikumu starp daudzām citi, "pieprasījums - tipa" dot, dot, dot. Tik pat klasē 600 vai mēs atklāt šo gada iesniegti viktorīnas. Tātad īsumā, šo - atklāti sakot, es ienīstu ņemot šāda veida saruna - bet tas ir patiešām apzināta pūles Šogad, lai mēģinātu samazināt šo skaitu. Jo, pat ja mēs sakām šāda veida lietām ik gadu, es domāju realitāti, kas dwelled pie tā, lai maz vairāk sekundes nekā parasti un faktiski tikai norādot ka kāds varētu šķist, eh, nav tik liels darījumu, vismaz domāju, ka atpakaļ uz šo konkrēto brīdi, gan taisnīgumu, lai sevi un saviem klasesbiedriem šeit. Tātad, ja jums kādreiz ir kādi jautājumi par to, kur līnija ir, lūdzu, tikai panākt, lai mani personīgi. Bet atbilde vienmēr ir, pilnīgi uzsvēra pēdējā minūte, jo vēlu dienā naudas. Vai, ja tas ir jautājums, kam nav vēlīnu dienas, godīgi, rakstiet man personīgi. Mēs izdomāt kaut ko. Lūdzu nelieciet savu laiku šeit Hārvarda riskam. Tagad, es domāju, mēs būtu mazāk garastāvokli, tāpēc es iekļautas to kā nākamo slaidu. [Smiekli] David J. Malan: Šī mājas lapa bija lieliski. Es tiešām saņēmu mazliet apjucis. Tur tas ir viens. Un tad tas viens bija pārsteidzošs. Labi, tāpēc domāju, ka kaķēnu vēlu vakarā, veicot šie lēmumi. Labi, tāpēc jau vairāk jautrības un mazāk nopietnas sīkumi, piemēram, apstākļiem. Labi, tāpēc mēs runājām īsi par tiem. Tas ir kaut kas ir iespējams, diezgan pazīstams no pasaules nulles. Un pasaulē Scratch, mums ir šī vajadzība dažreiz iet padarīt dakšām uz ceļa. Nu darīt šo vai to, vai šī cita lieta šeit. Un, kad mēs vēlamies to darīt, mēs varam izmantot, jo C tagad, šo, ja cits būvēt. Un tad šeit mums ir Būla izteiksmes. Piemēram, Būla izteiksmes šeit, mēs varam VAI tos kopā, tādā nozīmē, ka mums ir šis nosacījums vai šis nosacījums. Mēs varam un tos kopā, tādā nozīmē, ka mēs vēlamies, lai pārbaudīt šo nosacījumu, un šis nosacījums. Un šeit mums ir slēdzi paziņojumu tagad, kas ir ne tik līdzīgi sintaktiski tām apstākļos veidu, taču tas ļauj mums darīt ekvivalentu, ja cits, ja cits, ja cits ja, un līdzīgi, vienkārši uzskaitot tiem katrā gadījumā atsevišķi ko katrā atsevišķā gadījumā. Tātad mēs redzējām tos pēdējo reizi. Un tad mēs sākām pieskaroties uz lietām, piemēram, cilpu. Mēs redzējām vienu no šiem tikai pirms brīža. Bet ir šie citi looping konstrukcijas. Piemēram, šo vienu šeit. Tāpēc, kamēr (nosacījums), darīt šo lietu atkal un atkal. Tātad būtībā, ko, šķiet, ir atšķirīgas šo cilpa un šī kamēr cilpa šeit? Šī cilpu un šī kamēr cilpa. Yeah? Ko tas nozīmē? Mērķauditorija: [nedzirdama]. David J. Malan: Labi. Tātad tā kā cilpa stāvoklī, tur ir skaidri vairāk sintakse. Tur tas ir inicializācijas, tur šis atjauninājums. Jo kamēr cilpa, tur ir tikai šis nosacījums. Tāpēc šķiet, ka tas ir mazliet salīdzinātas leju pret par cilpa, kas nozīmē, ja mēs vēlamies, lai būtu mainīgie un mēs vēlamies ir incrementation, mēs faktiski ir darīt šo lietu sevi. Tāpēc ļaujiet man iet uz priekšu un atvērt gedit. Ļaujiet man pārslēgties uz ierīci. Un pieņemsim tikai darīt ātri nedaudz piemēru, ka atšķir vienu no šiem citiem. Un uz muguras manuprāt šeit, es saku viena lieta. Es īpaši minēja vārdu Tim. Tim bija tiešām kāds, kas students centos atrast darīt savu mājasdarbu par viņiem. Mums nebija ne Timu konkrētajā sadaļā. Tātad saproti, ka ne man atklāti students, tas nebija students. Tas bija nejauši internetā cilvēks dara lietas ar proxy pagājušajā gadā. Tātad mēs redzam, ka, pārāk. Tātad šajā gadījumā šeit, ļaujiet man iet uz priekšu un atvērt jaunu failu. Failu, Jauns. Tas dod man cilni šeit. Ļaujiet man iet uz priekšu un saglabājiet to kā loop.c. Ļaujiet man aiziet un noklikšķiniet uz Saglabāt. Un tad noteikti šeit, iesim uz priekšu un sākt rakstīt # Ietvert . Ļaujiet man pietuvinātu objektu Tagad mēs darīsim int galvenais (spēkā neesošs). Tagad ļaujiet man iet uz priekšu un darīt uz (int i = 0, i < ak, 10; i + +). Un tagad es esmu gatavojas iet uz priekšu un darīt izdrukāt zvaigzne ka es darīja agrāk. Un tad beigās šo programmu, mēs esam tikai gatavojas drukāt jaunu līniju, tikai tāpēc, ka mana tūlītēja neizskatās visu netīrs. atgriezties 0. Šķiet sintaktiski pareizi? Līdz šim. Tātad, pieņemsim redzēt. Tāpēc ļaujiet man tālināt, iet manā termināļa loga. Un ļaujiet man iet uz priekšu un palaist cilpas, jo es sauc šo lieta loop.c. Tātad, lai cilpa. Šķiet, lai apkopotu Labi. Ļaujiet man palaist cilpas, un tagad Enter. Un tas, šķiet, ir izdrukāt 10 zvaigznes. Tāpēc pieņemsim tikai pārvērstu to, kamēr cilpa un redzēt, ko veidu jautājumiem mēs paklupt. Tā vietā, ļaujiet man iet šeit un teikt, bet es ir mazāk nekā 10 - ļaujiet man atbrīvoties no cilpa. Labi, tāpēc mums ir pāris problēmas jau. Tātad nosacījums ir tas pats, bet es esmu acīmredzot trūkst inicializācija. Es esmu trūkst incrementation. Tātad, ko kompilators varētu man pateikt, kad es mēģinātu apkopot šo programmu? Yeah? Mērķauditorija: [nedzirdama]. David J. Malan: Labi. Tātad tas notiek, lai pateikt kaut ko līdzīgu nereģistrētu - šajā gadījumā, mainīgo i. Un tiešām, izmantot nedeklarētu identifikators i. Un tā tas ir pretrunā ar valodas, piemēram, PHP un Python un Ruby, ar kuru daži no jums varētu būt pazīstams, kur jūs varat vienkārši veida sākuma, izmantojot mainīgos lielumus Willy-nilly un nav jāuztraucas par deklarējot tos skaidri vienmēr. C un tādās valodās kā Java un C + +, jums ir jābūt super skaidra. Un, ja jūs vēlaties, mainīgo sauc I, jums ir, lai man pateikt kāda veida mainīgo tas ir. Tāpēc mēs esam nāksies noteikt šo šādi. Es esmu nāksies iet uz augšu šeit un rakstiet int i, tāpēc Man ir paziņojuši mainīgo sauc i. Tagad es esmu izlaidis vienu soli. Man, protams, nav inicializēts, bet pieņemsim redzēt, ja tas ir Vismaz padara šķindēt pietura sūdzību. Tāpēc ļaujiet man pārtaisīt šo programmu. Labi, tagad tas ir tikai sūdzas cita iemesla dēļ. "Mainīgais" i "tiek neinicializēts ja izmanto šeit." Labi, lai tas ir diezgan skaidri. Inicializēts tikai nozīmē nosakot to vienāds ar vērtību. Un mēs esam nav darījuši, tāpēc ļaujiet man mēģināt vienāds ar 0. Tagad pamēģināsim atkal un atkal palaist šķindēt. Apkopoti šo laiku. Un es esmu par, lai palaistu to. Bet liels vecs bezgalīga cilpa, jo es esmu darījusi inicializācijas, es esmu darījusi to stāvokli, bet es nekad neesmu darījusi jebkāda veida incrementation. Tātad, kā es varu darīt to incrementation? Nu, tādā kamēr cilpa, tā uzskata, tāpat es esmu nāksies to darīt iekšpusē no cilpas, jo daudz tāpat kā pirmā nedēļas piemēri dara looping konstrukcijas, piemēram, ar zeķes un ar sevis skaitīšanas, mums bija jādara kaut pašās beigās, gribētu atgriezties uz nākamo rindiņu. Ko darīt, ja es iet uz priekšu un darīt i + + šeit? Pieņemsim nav pat apkopot šo. Nozvejas mani jau. Kas ir nepareizi šeit? Mērķauditorija: [nedzirdama]. David J. Malan: Tātad tas noteikti nav int. Tas ir man. Un cirtaini bikšturi, kā līdz šim, ierobījums nepietiek. Tāpēc tagad man ir tas būvēt. Tāpēc, kamēr es ir mazāks par 10, drukāt zvaigzne, tad pieauguma i. Un kā kamēr cilpa darbojas, ka, tiklīdz jūs hit apakšējā no cilpas, kas šajā gadījumā izskatās, piemēram, 10 līnija, tas notiek, lai dotos atpakaļ uz 6 līniju, kurā brīdī nosacījums tiks pārbaudīti vēlreiz. Un ja es vēl joprojām ir mazāks par 10, mēs darīsim līnijām 8 un tad 9, tad mēs hit 10, un doties atpakaļ uz 6, atkal un atkal un atkal un atkal, kamēr es ir mazāks par 10. Tātad pieņemsim atkārtoti palaist darīt šeit. Labi, mēs esam apkopoti labi. Ļaujiet man atkārtoti palaist cilpa. Un tagad tas tiešām šķiet, darbu. Tātad plusi un mīnusi šeit? Nu, līdz šim tur tiešām nav viss PLO - tik gudrs. Labi, ka bija - ak, tas bija nelaimes gadījums. Visiem labi, tāpēc iesim atpakaļ uz cilpa. Tāpēc cilpas ir jauki, jo viņi super skaidra. Un, pat ja viņi mazliet clunky rakstīt, tas ir ļoti spēcīgs un tas ļauj jums darīt vairākas lietas vienlaicīgi. Bet cilpas nav, šķiet, ir milzīgs daudzums vērtības tikko vēl, jo tā uzskata, tāpat kā mēs vienkārši ir jādara vairāk darba. Mums ir likts inicializācijas šeit, tad atjaunināt uz leju šeit, un mums ir jāatceras, lai darīt visu. Tātad mēs redzam laiku, kamēr cilpas tiešām aizdot paši, lai tikai dažādos kontekstos, dažādi dati struktūras, piemēram sarakstiem un hash tabulu, lietas mēs nokļūt Mid-semestris. Bet tagad, zinu, ka tur ir šis trešais veids pazīstams kā do- kamēr cilpa. Un mēs esam redzējuši šo īsi. Un tas varētu būt super noderīga ar 1 PSET. Jebkurā laikā jūs vēlaties darīt kaut ko, un tad pārbaudiet, vai lietotājs sadarbojās, un, ja tās nav, to darīt atkal, do- kamēr cilpa pakļauj sevi šāda veida loģiku. Jo, kā no augšas pasūtīšanas uz leju šeit liecina, do burtiski nozīmē darīt. Un darīt atkal un atkal, kādi varētu būt? Varbūt tas nozīmē, aicinot GetInt vai GetString un tad pārbaudot vērtību GetInt vai GetString un tad kliegt pie lietotāju, ja viņi nav sadarbojušies lūdzot atkal un atkal un atkal. Kur jūs vēlaties darīt kaut ko vienu reizi, pēc tam pārbauda kādu stāvokli. Tāpēc pieņemsim mēģināt šo. Ļaujiet man tiešām mainīt tagad do-kamēr cilpa. Un es esmu gatavojas iet uz priekšu un darīt tālāk. Tā darīt tālāk. Darīsim int i = GetInt (), bet pieņemsim vispirms pateikt lietotājam ko darīt. Tāpēc nedaudz atšķiras šoreiz. "Dodiet man int". Tāpēc es ņemšu izmantot printf par to. Un tagad es esmu gatavojas iet uz leju šeit, un es esmu gatavojas darīt kamēr es ir, teiksim, lielāks - pieņemsim redzēt, man ir, teiksim, mazāk nekā 0, vai i ir lielāka nekā 10. Citiem vārdiem sakot, es gribu skaitli no 1 līdz 9, vienkārši patvaļīgi. Tāpēc es esmu, izmantojot kombinēto Būla izteiksme šeit pārliecinieties, ka man ir mazāks par 0 vai lielāks par 10, kurā Ja man būs darīt cilpa šeit atkal. Tātad vēlreiz, darīt - kamēr es ir mazāks par 0 vai man ir lielāks par 10. Tāpēc tagad iesim uz priekšu un darīt, kad mēs esam darījuši. Pieņemsim tikai darīt ātri veselība pārbaudītu. printf ("Paldies, man ir% d", i). Tāpēc šis vienkārša programma prasa lietotājam par int, padara pārliecināts, ka tas ir robežās kādu no 1 līdz 9 ieskaitot, un tad pateicas lietotājam, atgādinot viņiem, ko viņi tikko drukāti, tāpat kā mazliet veselība pārbaudītu. Bet pieņemsim redzēt, ja tas darbojas, kā paredzēts. Ļaujiet man iet galvu uz leju šeit un atkal palaist padarīt cilpa. Hmm. "Izmantošana nedeklarētu identifikators 'i'". Tas ir dīvaini. Es domāju, ka mēs atrisināt to. Pats simptoms, bet atšķirīgas kodu. Yeah? Mērķauditorija: [dzirdams] iekšpusē diviem, mums ir [Nedzirdama]. David J. Malan: Tieši tā. Tātad tas faktiski noved mūs pie tēmu pazīstams kā joma. Izrādās, ka C, atkal, tas tiešām ved burtiski. Un, ja jūs kaut kas līdzīgs šim, kur deklarēt int un tad piešķirt tam dažas vērtību, bet jūs darīt, iekšpuse Pāris cirtaini bikšturi, kas C tas ir tas pieņemts, ka jums tikai vēlaties šos 32 bitus sauc par I pastāvēt Saistībā ar šīm cirtaini bikšturi, ietvaros līniju 6 līdz 9. Tāpēc es ir deklarēta, un tas tiek piešķirts vērtība 8 rindā, bet, tiklīdz jūs saņemsiet ārpus zem cirtaini lencēm līniju 9, man vairs nav jomu, lai runāt. S-C-O-P-E. Tas vairs pareizajā kontekstā. Tāpēc tagad nav man, tāpēc tas ir, it kā mums bija pat deklarēta to visu. Tātad, kas ir noteikt, tad kaut kas līdzīgs šim, ja Iemesls ir tas, ka es ir deklarētas cirtaini bikšturi, kas ir acīmredzami slikti? Šeit? Mērķauditorija: [nedzirdama]. David J. Malan: Jā. Tātad, mēs varam inicializēt to ārā. Tāpēc ļaujiet man iet uz priekšu un dzēst deklarācijas daļas saskaņā ar kurām Es norādīt veidu, un ļaujiet man darīt to šeit. Tātad 5 rindā, tagad saka: "Dodiet man int." Zvanīt tas i. Pamanīt 9 rindā, es nevēlos to darīt, jo es jau ir 32 biti. Es nevēlos lūgt dators dažādi 32 biti. Es vēlos izmantot šo pašu 32 bitus. Un tagad, jo es ir deklarēta 5 rindā, tas joprojām ir legit to izmantot 11 līnijas un līnija 12. Tāpēc ļaujiet man mēģināt recompile šo un redzēt ja šķindēt apstājas kliegt. padarīt cilpa. Tāpēc tagad tas ir "netiešs deklarācija funkcijas "GetInt" ir nederīgs C99 "Kas ir tas, ka.? Yeah? Mērķauditorija: [nedzirdama]. David J. Malan: Jā. Tāpēc tagad, ka es esmu faktiski izmantojot GetInt, tas nav kaut kas kas tikai nāk ar C. Tas nāk no CS50. Tāpēc mums ir nepieciešams šo šeit. Un ļaujiet man iet atpakaļ uz tūlītēju leju šeit un atkārtoti palaist darīt. Labi, beidzot. Tagad mēs esam nolēma, ka un citu kļūdas. Ļaujiet man tagad palaist cilpu un redzēt, kas notiek. "Dodiet man int." Es arī tā 11. Es arī tā -1. Es arī tā foo. Es arī tā 5. Un tagad tas patiešām darbojas. Bet ātri mainīja par iemeslu šeit. Kāpēc tā saku atkārtojuma vienu no šiem laikiem, bet man int pārējās trīs reizes? Kāpēc ir tā, ka uzvedība atšķiras? Mērķauditorija: deva tam virkni. David J. Malan: Atvaino? Mērķauditorija: Tu deva tam virkni. David J. Malan: Jā. Tātad mēs deva tam virkni šajā trešo mēģinājumu, kad es drukāti foo. Foo ir virkne. Tas acīmredzot nav int. Un tā, ka CS50 ir īstenojusi GetInt ir, ka mēs nepārbauda, ​​vai kaut kas ir zemāka par 0 vai lielāks par 10 jums, jo kā mēs zinām, jau iepriekš, kāda veida int jūs vēlaties? Bet mēs varam minimāli pārbaudīt jums, tomēr lietotājam vismaz rakstiet skaitlim? Un, ja viņi nav, mēs bļaut uz lietotāju, ierakstot "retry" par ekrāns. Tāpēc tagad mums ir programma, kas ir looping. Labi. Tagad, kura no tām ir sava veida labāk būvēt? Tātad tas ir, ja lietas sāk iegūt mazliet netīrs, Tas, ka jums ir jāatceras, lai deklarēt mainīgo šeit ja jūs vēlaties izmantot to iekšpusē dažu cirtaini bikšturi un ārpuses. Bet, pat ja tas izskatās mazliet noslēpumains sākumā skatienu, tikai atkal, atcerieties vienkāršu loģiku. Lai izmantotu kaut ko C, vai tas ir funkcija vai tas mainīgais, jums ir jāiekļauj, ja tas ir funkcija kādā bibliotēkā, vai jums ir nepieciešams atzīt to. Bet tagad jums ir jābūt papildu norūpējusies par to, ka jūs atzīstot to tiesības jomu. Jūs neesat liekot to pārāk cieši iekšpusē iekavās. Tāpēc ļaujiet man tiešām roll atpakaļ. Ja mēs ejam atpakaļ uz mūsu piemēram, no agrāk, un es iet atpakaļ uz lai int, int i = 0, i <10; i + +, un es do printf zvaigznes, kā šis, un tad ciešu paren, un tagad printf i ir tagad - Saskaņā ar to pašu loģiku, kas notiks, kad es mēģinātu apkopot šo programmu? AUDITORIJA: Invalid identifikators. David J. Malan: Tātad tas ir cits derīgs identifikators, nedeklarētu identifikators. Tagad iemesls ir nedaudz atšķirīgs. Ir acīmredzami nav cirtaini bikšturi šeit, bet pats Ideja, pats stāsts par darbības jomu attiecas. Ja jums ir paziņojuši mainīgo, piemēram, es iekšā cilpa, pat ja jums nav skaidri rakstīts cirtaini bikšturi, domā par tiem garīgi, kā vēl to tur, kur Ja man ir derīga tikai iekšpusē cilpa. Tā nav derīga, kad jums uz nākamo līniju, kas šī lieta ir tagad 10. Tāpēc tikai daži jautājumi par apjomu un līdzīgu. Viss labais, kādi jautājumi? Labi, tāpēc šis ir sava veida triviāls maz programmu, drukā tieši maz zvaigznes. Bet pieņemsim redzēt, ja jūs atceraties šo dziesmu šeit. Tas ir neticami kaitinošas dziesma bērni varētu dziedāt par skolas autobuss un līdzīgi. Bet kas ir jauka par to, ka tas ir šo cikliskumu, kuru tas "99 pudeles alus pie sienas, 99 pudeles alus. Ņem vienu uz leju, iet tā apkārt, 98 pudeles alus par sienu. "Un tad dziesma atkārto 97, tad 96, tad 95, tad 94, visu ceļu uz leju līdz 0, ja jūs tiešām got ka tālu uz autobusu. Tātad šī ir jauka programma, lai sakārtotu un agregātu, jo mani Dievs, ja jūs varētu tikai ieviest to ar maz rindas kods, jūs varētu izspļaut visu lyrics uz šo Dziesma diezgan ātri. Bet pa ceļam, mēs varam sākt tagad kaitināt intervālu daži Šo pamata looping konstrukcijas un tagad arī ieviest funkcijas, kas mums rakstīt sevi, atgriezties vērtības ka mums iet apkārt. Bet vispirms, kāpēc nav mēs iet uz priekšu un veikt mūsu piecu minūšu pauze šeit? Un, kad mēs saņemam atpakaļ, mēs dziedam šo dziesmu. Labi, tāpēc mēs esam atpakaļ. Un kad es saku, ka mēs tagad dziedam šo dziesmu, es domāju programmiski, ne mutiski. Tātad šeit mums ir beer1.c, kas ir viens īstenošana šī īpaši dziesma. Un tikai, lai būtu skaidrs, tiem svešs ar to, ko Šī lieta izskatās, ļaujiet man iet uz priekšu un padarīt beer1, Enter. Tagad ļaujiet man palaist beer1, un ko mēs redzēsim - cik pudeles Alus būs tur būt? Es rakstīt 99, tāpat dziesma saka. Enter. Un tagad, ja mēs ritinātu - hmm - ja mēs ritinātu visu, mēs redzam, ka Šis patiešām dzied visu dziesmu. Pagaidiet minūti. Mans ritjosla ir nedaudz messed up. Pieņemsim izmantot lielāku logu. Tātad beer1, 99, tur mums iet. Tātad šeit mums ir visu dziesmu, dziedājis daudz ātrāk dators, nekā tas varētu būt bijis ar mums. Tātad paziņojums, lai gan, ciklisko raksturu šeit. Tajā teikts 99, tad 99, tad "ņemt vienu uz leju, nodot to apkārt ", tad 98. Un tagad tas atkārtojas atkal un atkal. Tātad tas ir faktiski lieliska iespēja kādu looping būvēt. Ievērojiet, ka es esmu veida griešanas stūrī šeit. Ievērojiet, ka es saku "98 pudeles alus pie sienas, 97 pudeles alus pie sienas, "un tas bija tikai tik ka tad, kad mēs ar vienu alus pudeles, man nav jāuztraucas par angļu valodas gramatikas. Bet mēs varam arī noteikt to ar mazliet ja nosacījums, varbūt. Ja šis skaitlis ir vienskaitlī, iet uz priekšu un saka "pudeli", pretējā gadījumā, ja tas ir daudzskaitlī, saka "pudeles". Bet tagad, es esmu pilnīgi griešana šajā stūrī. Tātad, pieņemsim redzēt, ko mēs esam ieguvuši šeit. Tāpēc mēs esam ieguvuši dažas piezīmes augšpusē. Es esmu arī šīs divas bibliotēkas, kā Mēs esam bieži bijuši. Un tagad ļaujiet man ritiniet uz leju līdz pirmajai faktiskie rindas kodu. Line 17 sākas galvenais. 21 līnija un 20 ir cik pudeles alus vai būs? Un tad es aicinu GetInt. Un tagad man ir mazliet veselība pārbaudītu. Tātad šī ir vienošanās, ka mēs tagad sāk pieņemt līdz stingrāk pārbaudīt lietotāja ievadi. Reizēm jūs vienkārši nevēlaties, lai liktu viņiem atkal un atkal un atkal. Ja lietotājs skrūves augšu un nesadarbojas, naudas sodu. Atmest un vienkārši nav galā ar tām. Un tā, ka tas, ko es daru šeit. Ja n ir mazāks par 1, es esmu tikai gatavojas kliegt uz lietotāju, "Atvainojiet, ka nav jēgas." Un tad es esmu gatavojas patvaļīgi atgriezties 1. Tātad atkal, tas ir tikai konvencija, lai pierastu pie. Tagad, ņemt to uz ticību. Bet līdz šim, mēs esam vienmēr ir atgriešanās 0, jo Mēs esam teica atgriešanās 0 apzīmē ko? AUDITORIJA: Veiksme. David J. Malan: Veiksme, ka viss. Tāpēc tagad, ka mēs beidzot sāk domāt par ne-panākumiem - citiem vārdiem sakot, stūra kastes, kļūdu nosacījumiem - tagad man ir bezgalīgs piegādi, vai vismaz 4000000000 iespējamās lietas, kas var noiet greizi manas programmas. Un es varētu sākt piešķirot tiem individuālu numurus. Tagad, parasti pietiek tikai atgriezties kaut kas nav 0. Tāpēc mēs esam gatavojas vienkārši return 1 tagad. Bet par atgriešanos 1 iemesls ir tas, ka tiklīdz jūs atgriezties 1, uzminēt, kas notiek ar pārējo programmas? Tas apstājas. Viss. Tātad fakts, ka es esmu atpakaļ 1 efektīvi īssavienojums šīs programmas izpildi, lai nekas zem 27 līnija turpinās izpildes. Tiklīdz galvenie atdevi, tas ir tā. Labi, tāpēc, ja lietotājs nav sadarboties un mums sasniegt līnija 30 jo tie drukāti likumīgu numuru, šeit ir mana īstenotu šo dziesmu. Tāpēc es vispirms izdrukāt newline raksturs, tikai estētika. Man tagad ir par cilpu. Un paziņojums es esmu darot lietas, kas mazliet no citā virzienā. Man nav darīt mazāk, nekā, man nav jādara + +. Es varu vietā teikt inicializēt mainīgo i, kas tas ir vienāds ar n, skaitlis lietotājs drukāti, tad rīkojieties šādi, lai Kamēr es ir lielāks par 0, tad es - kad esat pabeidzis viena atkārtojuma no šīs cilpas. Tātad, mēs varam rēķināties uz leju, izmantojot par cilpu, kā arī. Tagad tas ir diezgan daudz Week One sīkumi tagad, ar printf. Tā print "% d pudeles alus pie sienas." Print "% d pudeles alus. "" Ņem vienu uz leju, iet tā apkārt. "Izdrukāt "% D pudeles alus pie sienas." Tāpēc tas joprojām% d, bet ievērojat, ka arguments, lai printf mainās. Aiz komata, man ir I, jo es gribu teikt 99. Pēc šī komats, man ir I, jo es gribu teikt 99. Pēc šī komats, man ir I - 1, jo es gribu teikt 98, šī pirmā iterācija, un tā tālāk. Un tagad šeit lejā, man vienkārši ir kādu stulbu maz piezīmi. Un tad līnija 42, es atgriezties 0 pēc vienošanās, kas nozīmē, ka viss ir kārtībā. Tātad, ko tad es goofed? Kas varētu izplatīta kļūda šeit būt? Nu ko darīt, ja es nejauši teicu labi, es vēlos, lai saskaitītu līdz 0, es vēlos 0 alus pudeles uz sienas? Tāpēc es saku, man ir lielāka vai vienāda ar 0. Kas būs simptoms, ka es tagad redzēt, ja es recompile beer1 un palaist to? AUDITORIJA: Negatīvs. David J. Malan: Jā, tas ir gonna iet negatīvs. Tas ir off-ko-viena kļūda, neticami izplatīta kļūda, lai padarītu. Pieņemsim faktiski iet atpakaļ uz termināla logu un darīt to šeit, lai mēs varētu redzēt vairāk laikā. Ievadīt, 99 pudeles alus. Tuvu, bet mēs devāmies kādreiz tik nedaudz par tālu. Mēs dziedāja dziesmu pārāk tālu uz leju, tā, ka mēs tagad skāra negatīvs skaitlis. Tātad tas nav gluži darbu. Labi, lai mēs varētu viegli noteikt, ka, atgriežoties kā tas bija kādreiz. Bet kādi ir dažas iespējas tagad uzlabošanu? Nu, ļaujiet man atvērt beer2.c un ritiniet uz leju šeit un veikt apskatīt šo versiju. Kas ir pirmā lieta, kas lec ārā pie jums kā dažādas šajā versijā šeit? Mērķauditorija: [nedzirdama]. David J. Malan: Jā, tāpēc ne es, jo tas noticis ar man jūs zināt, ko, es esmu lūdzot lietotājam par n, un tad es esmu kurā es vienāds ar n, un tad es esmu mainot es, bet es esmu nekad pieskaroties N vēlreiz. Tātad, ko heck bija no jums punkts neierādot citu 32 biti sauc Es tikai tā, ka es varētu būt atšķirīgs mainīgo? Tātad šajā gadījumā, es veida atzina, ka nevajadzīgu dizaina elements. Un es esmu tagad gatavojas teikt, bet n ir lielāks par 0, dodieties priekšu un izdrukāt to pašu dziesmu, izejot n uz printf kā Otrs arguments, un n - kā otro argumentu leju šeit 1. Un tad par katru atkārtojuma šīs cilpas, iet uz priekšu un vienkārši Samazināt n pati. Tagad, funkcionāli, šī programma būs identiski. Ja es rakstīt 99, n sākas pie 99. Es samazināšanās, samazināšanās, samazināšanās, samazināšanās. Es esmu gatavojas saņemt visu ceļu uz leju, lai "vienas pudeles alus par sienas, viena pudele alus. Ņem vienu uz leju, iet tā apkārt. 0 pudeles alus pie sienas. "Galu galā, jo es darīju get nosacījums pareiza. Tas ir lielāks par 0. Man nav padarīt šo kļūdu. Tātad, kas ir labāks, versija viens vai versija divi? Tāpēc es dzirdēju ķekars murmurings diviem. Kāpēc divi? Ko tas nozīmē? Mērķauditorija: [nedzirdama]. David J. Malan: Ak, labi. Tāpēc tas nav iet zem 0, bet atcerēties, vienā versijā, sākotnējā pareizā versija negāja zem 0 nu. Tāpēc atcerieties, ka šis ir pareizais variants. Tātad pieņemsim vismaz salīdzināt divu pareizās versijas. Kas par labu versijai arguments divi ir, mmm, labāk? Yeah? Mērķauditorija: Tas izmanto mazāk vietas. David J. Malan: Labi, tāpēc tā izmanto mazāk vietas, labi? Tā versija, kuru izmanto 32 bitus uz n, un tad vēl 32 biti uz i. Versija tikai divas izmanto 32 bitus uz n, lai šķiet, plus. Citas domas? Vai kāds vēlas, lai argumentētu par labu vienam? Yeah? Mērķauditorija: Jums ir izmantot papildus koda rindu uz n -. David J. Malan: Labi, protams. Tātad tas ir godīgi. Tāpēc tas vienkārši, vismaz man - Es domāju, tas tiešām jūtas mazliet Mesjē, ka Es nevaru kārtot no rezumēju visu manu loģiku vienā skaistas līnijas, lai cilpa, jo cilpa var. Lūk, es veida ir sadiegšana par šo n - beigās cilpa, jo tas ir loģiski nepieciešams. Bet tas veida rubs man nepareizi, tikai tāpēc, ka tas Šķiet atsevišķi no loģikas šeit, lai gan, atkal, tas ir nepieciešams. Citas domas? Yeah? Mērķauditorija: [nedzirdama]. David J. Malan: Jā. Tātad, ko tad, ja jūs tā vietā, beigās dziesmu, gribēja izdrukāt atkal nosaukumu dziesmu? Tāpat "Paldies par spēlējot 99 pudeles alus", vai kaut kas muļķīgi, piemēram, ka? Bet jautājums ir, jūs vēlaties piekļūt sākotnējās vērtības. Tas, ka jūs esat mutācijas vai mainīts n par katru atkārtojuma un tāpēc ir iznīcināti tās sākotnējo vērtību nozīmē, ka jūs vienkārši nevar darīt, ka gada beigās. Tagad, varbūt, mēs skaidri negribam darīt ka šajā programmā. Tā, kas rūpējas? Bet tas ir ļoti derīgs punkts. Un ja godīgi, tur tiešām neviens pareizā atbilde šeit. Viņi abi vienlīdz pareizs. Es varētu būt pārliecināts nu veidā. Es teikšu, ka kopumā tas ir labs princips, ja jūs lūdza lietotājam kādu vērtību un jūs saglabāti mainīgo piemēram n, tikai sava veida uz principu, tas ir iespējams, laba lai saglabātu, ka apkārt. Un visus datus vēlaties mutācijas atkal un atkal, tikai sev kopiju šo mainīgo, tikai tāpēc, ka jums piekļūt oriģināls. Tu tērē 32 vairāk bitus, bet realitāte ir šī dators ir, piemēram, divi gigabaiti RAM šajās dienās, un mēs esam quibbling vairāk nekā 32 bitu? Tiešām nav tik liels darījumu. Un pat uz šo ierīci šeit, ar pusi GIG vai gigabaitu RAM, 32 bitu versus 64 bitiem, nav tik liels darījumu. Protams šodien, tas būs ceļš overwhelmed ar izmēru no pašas programmas, kas būs vairāki simti kilobaiti, ja ne pāris megabaiti, šajās dienās. Tāpēc pamatotas bažas, neviens pareizā atbilde. Bet vismaz tie ir domas, ka vajadzētu sākt ar iet caur jūsu prātā? Jo 0 PSET, lai gan mēs patiešām tikai gaidāms pareizība, vai vismaz atsakoties dažādi kukaiņi, ka Jums varētu būt radušās, kā mēs virzāmies uz priekšu, dizains ir būs vēl viens svarīgs aspekts, gan rakstot kodu un arī mūsu izvērtējot kodu. Un tā vismaz pārdomāt lietas, kā šis. Un tikai tāpēc, ka kaut kas darbojas nenozīmē, ka tas ir labi, nenozīmē, ka tas ir labi izstrādāta. Un tas ir viens no lietām, mācību līdzcilvēkiem un problēma komplekti palīdzēs mums kaitināt daļu laika gaitā. Nu, ko par, teiksim, šo versiju šeit? Ļaujiet man darīt kaut nedaudz sexy šeit brīdi. Pirmais ļaujiet man atbrīvoties no šo. Un tagad pieņemsim noteikt šo gramatikas jautājumu. Tātad šajā versijā, es gribu noteikt gramatiku tā, ka, nevis tikai teikt parenthetical s, piemēram, "pudeles" vai "pudeles" - Es nevēlos, lai samazinātu šo stūrī - Es arī gribu, lai dinamiski izdrukāt vārdu "pudeles" vai "pudeles", tādējādi izmantojot šos% s vietturus šodien. Tāpēc man ir nepieciešams, lai nosacīti pārbaudīt, kāda ir vērtība no i. Un, ja tas ir 1, es gribu teikt "pudeli", un, ja tas ir kaut kas cits, es gribu teikt "pudeles". Tāpēc pieņemsim mēģināt to darīt. Tātad, ja es == 1, tad ļaujiet man iet uz priekšu un atzīt - Man vajag virkni, tāpēc ļaujiet man darīt stīgu S1, jo tas ir pirmā rinda Man rūp tiesības tagad. Es esmu gatavojas teikt "pudeli". Un tad, pieņemsim redzēt, stīgu S2 - un es paskaidrošu, kur es esmu, pēc brīža - "Pudeles." Tā atceros, ka šo dziesmu, mums jāspēj drukāt lietas, divus dažādus vārdus potenciāli. Tātad, ja mēs atskatāmies šeit, ievērosiet, ka tad, kad mēs nokļūt šis piemērs šeit, "divas pudeles alus pie sienas, divas pudeles alus, ņem vienu uz leju, iet tā apkārt ", es gribu Šajā ceturtajā rindā, lai tagad saka "vienu pudeli alus siena "Tāpēc man ir nepieciešams izlemt,. vēlos teikt" pudeles "vai "Pudele"? Tāpēc es esmu gatavojas patvaļīgi teikt, visas tiesības, Es esmu gatavojas tagad deklarēt mainīgo sauc s1, stīgu viens, kas notiek, lai saņemtu pieslēgts šeit un arī šeit, jo šie vārdi ir vienmēr identiska, tikai tāpēc, ka raksturu dziesmu. Un es esmu dodas uz zvanu S2 neatkarīgi vārdu es gribu beidzot parādās uz leju šeit. Tagad, burtiski, 99 reizes no 100, tas būs pats abās šajās lietās, jo 3 ir daudzskaitlī, 2 ir daudzskaitlī, 4 ir daudzskaitlī. Bet šajā stūra gadījumā, ja mēs līdz 2 un tad 1, vai pat 1 un tad 0, man vajag šo loģiku. Tāpēc man ir pavadīt kādu laiku manā kods kļūst šīs tiesības. Tātad, ja es to darītu, ja es == 1, tad noteikti S1 vienāds ar "pudeles" un S2 vienāds ar "pudeles", jo tas būs par 1 pudele, un tas būs 0 pudelēm. Un tas šeit, ko tas pārstāv? Tikai, lai būtu skaidrs. Tas ir tikai komentārs. Tātad fakts, ka jūs varat būt viena līnija komentārus nozīmē jums var komentēt savu kodu kā šis, bet vēl viens kopējā paradigma, arī ir, ka, ja jums ir super-īsu frāzi, kas Jūs vēlaties, lai sevi, un tas ir tikai vairāk lasāms likt tas labi beigās līnijas kodu, jūs varat absolūti darīt kaut kas līdzīgs šim. Tāpēc tagad ko, ja es to varu darīt? Cits ja man nav vienāds ar 1. Tā bang vienāds - izsaukuma zīme ir pazīstama kā "sprādziena". Tāpēc sprādziena = 1. Tātad, ja man nav vienāds ar 1, ko es vietā gribu darīt? Nu, pirmais vārds es vēlos būt, ko? Tātad virkne 1 vajadzētu būt "pudeles" daudzskaitlis pudelēm, un tad tas būs daudzskaitlī "pudeles", kā arī, lai tagad. Un mēs redzētu, vai tas tiešām izpaužas mums kur mēs gribam iet. Tāpēc tagad, ja es ritiniet uz leju šeit, pamanīsiet, ka es esmu tapām ne tikai es, bet S1. Es esmu tapām i un S1. Un tad noteikti šeit, es esmu mīnus 1, kas ir tāds pats kā pirms, bet S2. Citiem vārdiem sakot, es gribu angļu vārdu mainīt, pamatojoties uz šo loģiku. Tagad tur ir jau dažas šā koda problēmas. Kas ir bojāts jau no vārtiem šeit? Yeah? Mērķauditorija: [nedzirdama]. David J. Malan: Tieši tā. Tāpēc es jau esmu pārkāpis mācība jomu. Tāpēc es esmu atzīts S1 un S2, bet es esmu darījusi to iekšpusē cirtaini bikšturi, kas nozīmē, jā, šis kods strādās līdz līdz 42 līnijas, bet tiklīdz es hit līniju 43, uzminēt, ko nav vairs nepastāv? Nu, domāju, ko vairs darbības joma - ne s1 vai S2. Tāpēc mums ir noteikt šo. Tāpēc ļaujiet man dzēst deklarācijas. Un es ņemšu atvaļinājumu mainīgo nosaukumi un dzēst šeit un dzēst šeit. Un kādi līnijām man tiešām atzīt šīs lietas? Mērķauditorija: [nedzirdama]. David J. Malan: Jā, tāpēc, iespējams, līdz pat šeit, 33-ish. Tātad virknes s1 un tad virkne s2. Un izrādās, es varētu darīt. Ja jūs deklarējot divi mainīgie no viena veida, Jūs faktiski var tikai izmantot komatu, un darīt, ka C. Visi labi, tāpēc tagad man ir divi mainīgie - S1 un S2. Es esmu piešķirot tiem vērtības šajos apstākļiem šeit, vai šeit. Un tad es esmu, izmantojot tos tālāk. Cik labi ir tas tagad iet uz darbu? Nu, tas joprojām mazliet buggy, bet pieņemsim vismaz redzēt cik tālu esam tikuši. Tāpēc ļaujiet man iet uz priekšu un darīt beer3. Vai tas beer3? Yep, tas ir beer3. Un tagad ļaujiet man iet uz priekšu un palaist beer3. 399 99. Mēs varam droši izlaist lielāko daļu no tiem. Un šeit lejā, apskatīt to. "Viena pudele alus uz sienas, viena pudele alus, ņem vienu uz leju, iet tā apkārt, 0 alus pudeles uz sienas. " Bet es esmu zīmēšanas jūsu uzmanību tikai puse no risinājuma. Veida ieskrūvē šeit. Tāpēc šķiet, ka stūra gadījumi rodas, kad es vienāds kāda Abas vērtības? Mērķauditorija: 2, 1. David J. Malan: 2 un 1. Tas nav 1 un nav 1. Tas ir patiešām tikai šie divi pēdējie stanzas šo dziesmu. Tātad, ko es vietā gribu darīt? Tāpēc man šķiet, ir nozvejotas gadījumu, kur, ja i ir == līdz 1, tad pirmais vārds ir "pudeles", bet otrais vārds ir "pudeles". Bet šeit, es vēlos mainīt šo būtu == 2. Un, ja tas ir gadījums, ko es vēlos Pirmais vārds ir? Mērķauditorija: "pudeles". David J. Malan: "pudeles", tā par diviem pudelēm. Un tad šis vārds šeit būtu - Mērķauditorija: "Pudeles". David J. Malan: "Pudele", vienskaitlī. Labi, pieņemsim tālināt, iet atpakaļ vairāk nekā šeit, atkārtoti palaist darīt, atkārtoti palaist beer3, tips 99 vēlreiz. Labi, "segmentācija defektu (kodols dempings)." Ko es izdarīju nepareizi? Mērķauditorija: Jums nav vērtība [nedzirdama]. David J. Malan: Ak, lieliski punkts. Labi, lai to, ko es daru nepareizi šeit? Tātad segmentēšanas vainas, un mēs esam patiešām gatavojas redzēt tas diezgan maz reizes nākotnē, apzināti. Bet tagad, ko tas patiesībā nozīmē? Segmentēšana vaina gandrīz vienmēr nozīmē, ka jums ir kaut mēģinājis piekļūt atmiņas, RAM savā datorā, kas jums nepieder, ka jums nav faktiski lūgusi operētājsistēma. Tātad šajā gadījumā, paziņojums, ko es esmu darījusi, kas ir kļūdains manā loģikā. Man ir piešķirts s1 un s2 vērtību, ja es vienāds ar 1. Es esmu darījusi arī, ka, ja es vienāds ar 2. Bet man nav izdarīts to bezgalīgi daudz citu iespējas - jo īpaši, 3 vai 4 vai dot, dot, dot, 99. Tāpēc viens labojums, tas varētu būt tikai pieņemsim ir cits nosacījums. Un ļaujiet man iet šeit un teikt S1 vienāds - kāds tas būtu šeit? Mērķauditorija: [nedzirdama]. David J. Malan: "pudeles", jo kopējā lietā, tas ir tikai pats. Tāpēc vienāds quote, likt pēdiņas beigās, "pudeles." Tātad daudzskaitlis pudeles, un tad šeit, daudzskaitlis pudelēm. Labi, tāpēc tagad ļaujiet man iet atpakaļ uz manu termināļa logā, recompile, atkārtoti palaist to. 99. Whew. Un pieņemsim darīt ātri veselība pārbaudītu. Tehniski mēs gribētu vēlas lasīt visu šo, lai pārliecinātos viņi pareizi, bet pieņemsim apskatīt vismaz zināmās vainīgie. 3 pudeles, 2 pudeles, 2 pudeles, 1 pudele, 1 pudele, 0 pudeles. Šķiet, ka esam vismaz noteikts to tagad. Bet loma šeit ir tas, kas dievs šausmīgi haoss tas ir tikai, lai atrisinātu stulba vienzīmes gramatikas detaļas. Tātad tur ir sava veida iemesla dēļ, ka es samazināt šo stūri agrāk, jo tas ir tikai pilnīgi kaitinošas ir rakstīt tik daudz kodu. Bet izrādās, ka tur ir nedaudz vairāk elegants veidi izsakot tieši tas pats. Un mēs varam izdarīt šādi. Ļaujiet man atstāt šo uz ekrāna uz brīdi un ieviest kaut kas pazīstams kā trīskāršu operators. Tas ir sava veida viena līnijpārvadātāju, kas ir tikai paredzēts, lai padarītu mūsu dzīvo nedaudz sexier, kā solīts. Un es esmu gatavojas darīt šādi. Dodiet man virkni sauc s1, un ļaujiet man piešķirtu to šādi. (I == 1)? "Pudeles", citādi "pudeles". Stīgu s2 izpaužas (i == 2)? "Pudeles", citādi "pudeles". Tātad, kāda tad ir atšķirība šeit? Šie divi rindas kods, es apgalvot, var aizstāt visu šo putru. Tāpēc es aicinu to haoss, tikai tāpēc, ka tas veida rubs mani nepareizs veids, ka tas ir tik daudz rindas kodu. Nav nepareizi. Tas nav slikts dizains. Patīk, tas ir pilnīgi pareizi un perfekti labi. Bet kodēšana kļūst garlaicīgs, ja jums ir, lai izteiktu sevi, lai nopelt konkrēti atkal un atkal un atkal ar vienkāršu scenārijs kā šis. Tāpēc C ir dažas īsceļus, kā šis. Tātad šis būtībā ir saprotams atzīt virkni sauc s1 un piešķirtu to nu šo vērtību vai šī vērtība, ja i ir == - Atvainojiet, es saku daudz skaidrāk. Deklarēt mainīgo S1, piešķirt tam šo vērtību, ja tā ir taisnība. Pretējā gadījumā piešķirt tam šo vērtību. Tātad, citiem vārdiem sakot, tas ir sava veida viena līnija ceļā sakot, ja cits, bet dara norīkojumu gar ceļu. Tātad, ja es ir 1, tad iet uz priekšu un to sauc par "pudeli". Un tad tas cits, to sauc par "pudeles". Tikmēr, S2, Otrais vārds, kas mums ir nepieciešams noteikt, ja es vienāds ar 2, mēs iestatīts S2 "pudeles". Pretējā gadījumā noteikti to "pudeles". Un kādi Tas nozīmē, tagad ir tā, es varētu iet caur šo un izdzēst visus šie rindas kodu. Un kad es saku, nedaudz smieklīgi, ka tas ir tagad sexier, tas sexier kas veida stilistiskā ziņā. Fakts, ka funkcionāli, šis kods ir faktiski gatavojas darīt tieši to pašu. Un, pat ja tas varētu izskatīties mazliet noslēpumains sākumā skatienu, jo mēs esam nav redzējuši šo būvēt pirms, es gribētu apgalvo, ka tas galu galā būs tik daudz lasāma un tik daudz vieglāk mēs cilvēkiem, lai sakārtotu un saprotu, jo tagad jūs varat vienkārši izlasīt kods visi vienā rindā. Tas joprojām ir līdzīgs garu ja gadījumos, kad tas ir stāvoklī, un tad tas ir tas, kas ir iekšā, ja un šī ir tas, kas ir iekšā cits. Bet mēs varam izdarīt tikai daudz vairāk eleganti. Un ja es tagad iet atpakaļ uz manu terminālu, kas svītro visas Šo līniju un aizstāj tos ar tikai tiem diviem, recompile, atkārtoti palaist pudeles alus ar 99, paziņojums, ka mana gramatika ir, faktiski, joprojām ir pareiza. Tātad vēlreiz, kaut sākt. 2 pudeles alus, 1 pudele alus. Izskatās labi. Yeah. Tātad mums ir daudz vairāk īsu risinājumu. Tātad arī tas, kā jūs iegūtu vairāk apmierināti ar C, ne vienmēr ar pirmo PSET vai pat otrās, bet saprast, ka šīs konstrukcijas var ļaut mums darīt lietas kādreiz vairāk eleganti. Tagad pieņemsim do viena lieta šeit. Ļaujiet man iet uz priekšu un atvērt return1.c. Tagad sāksim risināt kādu problēmu tādā veidā, ka ļauj mums rakstīt sarežģītākas kodu. Tātad šeit ir vienkāršs maz programmu, kuras mērķis dzīvē ir pieauguma vērtības. Un tiešām, pieņemsim veikt soli atpakaļ. Ļaujiet man darīt manuāli. Ļaujiet man darīt iekļaut un int galvenais (spēkā neesošs). Un ļaujiet man nosaukt šo increment.c. Un ko es gribu darīt? Es iešu uz priekšu un teikt kaut ko līdzīgu - mēs saucam numurus pats - int x. Tātad int x izpaužas 2; printf x ir% d, jaunā pozīcija, x. Tāpēc es esmu mašīnrakstīšanu ātri, bet iepazinušies sīkumi veida tagad. Tad es esmu gatavojas darīt x + +. Tad es esmu gatavojas drukāt šo pašu teikumu vēlreiz. Un tad es esmu gatavojas atgriezties 0 tikai atmest programmu. Labi, tāpēc šī ir programma, kas soli numuru. Tas ir pirmais iet, lai sāktu kaut ko līdz 2, un tad tas ir dodas uz pieauguma to un izdrukāt to vēlreiz. Tātad pieņemsim palaist pieaugumu, neticami vienkāršu programmu. Bet pieņemsim, ka tagad, ka es gribu, lai kubs vērtību, tāpēc kaut nedaudz patvaļīgi. Un es tiešām gribu darīt x izpaužas kubs tā. Lai es varētu izmantot to, ko sauc par pow funkcija, bet man nav tiešām zināt, kur tas ir vēl. Tāpēc es esmu gatavojas darīt to vecmodīgs veidā. x reizes tas ir vienāds x reizes x reizes x. Tāpēc es esmu cubing vērtību, reizinot to ar sevi vēlreiz un atkal un atkal, lai mēs iegūtu tiesības gada 3 šajā gadījumā. Tāpēc tagad to skaits man jāizdrukā jābūt, jo mēs redzēsim šeit - padarīt pieaugumu, tāpēc tas tiešām nav īsti pieauguma vairs, bet mēs atstāt nosaukumu vien - 2 un tad 8. Tagad mums ir pirmsākumiem ir iespēja izsmalcinātību šeit, turklāt šis cubing lieta reizināt numuru pati ar sevi, pats par sevi jūtas kā tas varētu būt tikai noderīgi, lai būtu kā funkcija, līdzīgi kāds nolēma gadus atpakaļ - jūs zināt, veida lietderīgi, ja viens no mums sēž uz leju un raksta printf lai pārējā pasaule var izmantot, kāpēc nav mēs sēdēt un rakstīt funkciju sauc kubs kas dara šo cubing par mums, lai mums nav manuāli īstenotu jēdzienu cubing vērtības šeit? Tik vienkāršs piemērs, bet iesim uz priekšu un izmantot tas ir iespēja rakstīt mūsu pašu funkciju. Tātad līdz šim, mēs esam izmanto tikai galvenais, un mēs esam izmanto citiem cilvēku funkcijas, bet mēs esam nav rakstīts mūsu pašu. Tāpēc šeit mēs iet. Es iešu uz priekšu un rakstīt funkciju sauc kubs. Un es esmu nāksies to pieņemt ievadi. Tāpēc tās ieejas būs skaitlim. Un ko tas gatavojas darīt? Tas notiek, lai paziņot int produkciju = ieeja reizes ieeja reizes ieejas. Un tad tas notiek, lai atgrieztos minēto produkciju. Un tad man ir jābūt īpaša tagad. Šī funkcija ir gatavojas atgriezties int. Tātad šeit, tad ir, kā jūs rakstīt savas funkcijas. Jums vispirms izlemt, kas ir nosaukums jūsu funkcija būs. Un vispār, kaut paskaidrojuma ir labs, tāpēc es ņemšu to sauc kubs. Tad jums ir jānorāda ko tā gatavojas atgriezties, kas ir tā produkcija būs. Un mums nav, ka daudz iespēju vēl. Int, char, peldēt, bool, stīgu. Tagad, es esmu gatavojas stick ar int, jo es gribu to atgriezties skaitlim. Tad jums ir jānorāda, kādi ir tās izejvielas, ja tādi ir, ir. Un, ja kubs ņem argumentu, ņem kaut ko starp iekavas, jums ir jāsniedz šis arguments nosaukumu, lai Jūs varat zvanīt to kaut kā jūs īstenot vai rakstot Šī funkcija, un jums ir arī tā tipa, kas šajā lieta būs int. Tātad īsumā, kubs ir funkcija, kas ņem skaitlim kā priekšnodokli un atgriežas skaitlim kā produkciju. Tātad, ko tas dara ar šo ieejas? Nu, 14 līnija, es deklarēt mainīgo sauc izejas, un es piešķirt tai vērtību, ieeja reizes ieeja reizes ieejas. Un tad es atgriezties produkciju. Tātad, kā es varu izmantot šo, tad? Ko es varu mainīt šos iezīmētos rakstzīmes tiešsaistē 7 būtu, jūs domājat? Mērķauditorija: [nedzirdama]. David J. Malan: Jā, tā kubs x. Tātad x ir mainīgs, kas nozīmē, ka tur kādu vērtību. Par laimi, tas ir tipa skaitlim. Un tāpēc x ir int, tas nozīmē, ka es varētu nodot to kubu. Un pat ja es esmu ignorējot vērtību x ar vērtību gada kuba x, kā tas ir bijis gadījums līdz šim, jebkurā laikā jūs ir vienādības zīmi un kodu līnija, stuff tiesības izpaužas izpildīts un tad kļūst piešķirts vērtība kreisi. Tātad darbību kārtība ir, kā mēs ceram. Tātad tas darbojas? Nu, ļaujiet man iet uz leju šeit. Ļaujiet man atvērt manu termināļa logu. Ļaujiet man darīt darīt pieaugumu, Enter. "Netieša deklarāciju funkcija" kubs "ir spēkā neesoša C99. "Kā malā, C99 attiecas uz valodas C, kā tas bija definēta 1999.gadā, kas bija atjauninājums pa versiju, no 1989, kas ir atjaunota vairāk nekā oriģināls. Tā ka viss, ka līdzekļi. Tātad, ko tas nozīmē, ka "netiešs deklarācija funkcija "kubs" ir nederīgs "Tas ir tieši šeit?. Tas ir labi tur 12 rindā. Mērķauditorija: [nedzirdama]. David J. Malan: Kas tas ir? Mērķauditorija: Tas nav pirms tam. David J. Malan: Tas nav pirms tam. Tātad šī ir lieta. C ir sava veida stulba, vai C kompilatori ir sava veida stulba. Viņi tiešām darīt tikai to, ko jums pateikt viņiem darīt. Un tie, jo īpaši, tikai lasīt savu kodu augšas uz apakšu, kreisās uz labo. Tātad, ja kompilators, šķindēt, ir lasīšana savu kodu, līnija 1, tas skaitļi, kā to izdarīt. Ak, šeit nāk galvenais. Labi, ļaujiet man iet uz priekšu un atzīt mainīgo x. Ļaujiet man drukāt kaut ko. Līnija 7, kāda heck ir kubs? Tas nav deklarēti stdio.h. Tas nenāk ar C. Man nav ne jausmas, ko darīt. Un tā šķindēt tikai galvojumi un aizveras ar šo kļūdas ziņojumu. Lai mēs varētu noteikt šo pāris veidos. Mēs varam iemācīt šķindēt ko kubs ir, tikai pārvietojot kur deklarācija ir. Tāpēc es izgriezt un ielīmēt to atop galvenais. Tagad saprotam, ka tikai tāpēc galvenais vairs pirmkārt, tas ir joprojām izpildīts pēc noklusējuma. Galvenais ir galvenais. Tas ir noklusējuma funkcijas nosaukums. Tas nav svarīgi, ja tas ir failā. Bet vismaz tagad šķindēt ir redzējis kubs pirms es to izmantot. Tātad, pieņemsim redzēt, ja šķindēt ir laimīgāki tagad. Padariet pieaugumu, tā apkopo šo laiku. Ļaujiet man palaist pieaugumu. Un tiešām, šķiet, ir darba. Tagad, jūs varat nākt klajā ar scenārijiem beidzot kur tas nav iespējams, lai visas funkcijas Iepriekš katru citu funkciju. Jūs saņemsiet iestrēdzis šajā bezgalīga cilpa patiesībā, ja tas puisis grib būt šeit, bet tas puisis ir jābūt tur. Tāpēc tas ne vienmēr strādā. Tātad par laimi, C ir vairāk elegants risinājums. Es esmu gatavojas nodot to atpakaļ, kad tā bija, tikai tāpēc, ka es dod priekšroku, jo principā, ka galvenais vienmēr būs augšpusē, jo tas ir tikai jauki, lai redzētu šī programma dara pēc noklusējuma. Un ko es esmu gatavojas darīt šeit ir atzīt to, ko sauc prototips. Es esmu gatavojas atkārtoti deklarēt savu kuba funkciju, burtiski kopējot un ielīmējot. Patiesībā, tas nav burtiski. Tik burtiski kopējot un ielīmējot līnija 15 līdz virs 6 līniju. Tas nav svarīgi, kādi līnija tas nonāks uz. Tas notiek, ir par 4 līnijas. Bet tā ir jābūt, pirms galvenais. Bet pamanīt atšķirību. Līnija 4 beidzas ar semikolu, kas nozīmē hey, Šķindoņa, ņem manu vārdu par to, ka pastāv funkcijas sauc kubs, kas ņem int un atgriež int. Bet es neesmu gonna pateikt, kas tas ir vēl. Tikai zinu, ka es apsolu pateikt beidzot. Un tiešām, tagad tas ir labi, ka tas ir zemāk. Tātad tas parasti ir labāk, jo tad augšā Jūsu fails, jūs varat vienkārši grabēt off, ātru uguns, viena līnija katrs, kādas ir jūsu funkcijas vārdi, kāda ir to izejvielas, kādi ir viņu rezultāti ir. Un, lai būtu skaidrs, ieeja parasti nozīmē argumentu vai parametrs, sinonīms. Izeja ir atgriešanās vērtību, ko tas rokas atpakaļ uz mani. Tātad šajā gadījumā šeit, kubs ir pasludināts augšpusē, bet definēts, citādi zināma kā īstenots, apakšā. Tāpēc tagad iesim atpakaļ šeit un atkārtoti palaist šo. Tāpēc tagad ļaujiet man iet uz priekšu un atkal palaist padarīt, atkārtoti palaist pieaugums. Un tagad, šķiet, ir strādā tikai naudas sodu. Tātad tagad mēs varam iet uz priekšu un faktors, kas kaut ko līdzīgu alus piemēru par šo ceturto versiju. Tāpēc ļaujiet man ritiniet uz leju šeit. Un ievēroju, ka es veida ņēma šo tēmu, lai sirdi tikai tagad. Fakts, ka es dziedu to pašu strofa atkal un atkal un atkal, tas pats koris līnija dziesmu, filcs like kāpēc ne es faktors, kas ārā funkciju? Un tiešām, tas būtu viens no motīviem. Bez tam, ka kāds cits pasaulē varētu vēlēties izmantot kuba funkciju - tas labs iemesls, lai faktors kaut ko un uzrakstiet pašu pasūtījuma funkcija - ja tur koda gabalu savā programmā, kas tikai padara konceptuālā nozīmē, ka jūs veida vēlaties, lai dotu tai nosaukums - tāpat kā šajā gadījumā, koris - tad jūs varat līdzīgi rakstīt, ka par atsevišķu funkciju. Jums nav rakstīt visu, galvenais, ja tas vienkārši jūtas tīrītājs nodalīt to, un piešķir tai nosaukumu. Tātad šajā gadījumā šeit, pamanīsiet, ka man ir komentāru atop Šo funkciju, kas tikai dzied par norādītie numuri pudeles. Pamanīt šeit, ka man nav nepieciešams, lai izsauktu šos lietas ieejas un izejas. Patiesībā šoreiz es tikai sauc manu ieejas b par pudeli. Un pamanīt šeit, anulēts liecina ko? Ka koris - Mērķauditorija: Vai to atpakaļ. David J. Malan: neatgriež vērtību. Un tiešām, funkcijas nav atgriezties vērtības. Viņi var tikai kaut ko darīt. Tie var būt, ko sauc blakusparādības, kas šajā lieta ir tikai viss ķekars drukāšanas uz ekrāna. Tāpēc ievērosiet, ka šis kods šeit, es burtiski tikko nozaga no iepriekšējā piemērs. Vienīgā atšķirība ir tā vietā izmantojot i kā manu mainīgs, es esmu tagad, izmantojot B kā manu mainīgo. Tāpēc man ir b šeit lejā, man ir b šeit lejā, man ir b mīnus 1 leju šeit. Bet kods ir tieši tāds pats. Bet tikai, lai parādītu jums, tagad, kā mēs varam izmantot šo, ļaujiet man iet priekšu un faktiski mainīt būt par cilpu. par (int i = n, i> n, i -). Tāpēc es esmu nozagta, ka no iepriekšējā piemēra. Agrāk, tas ir 37 rindā, ka man būtu sākuši dziedot šo kaitinošas dziesmu. Bet tā vietā, es esmu tikai gatavojas tagad saucam koris i. Darīts. Tāpēc tagad katrā atkārtojuma šīs cilpas, es aicinu šo citu funkcija, koris, kas man gadījās rakstīt. Tas nebija rakstīts kāds cits gadiem. Bet koris, tikmēr izmanto printf drukāt ārpus šīm četrām pozīcijām. Bet fakts, ka es esmu aicinot koris atkal un atkal cilpa nozīmē, ka es esmu gatavojas saņemt, pašās beigās, Precīzs pati dziesma, jo man ir līdz šim. Tātad īsumā, tagad, ja es atskatos uz manu kodu, lai gan funkcionāli tas ir līdzvērtīgs, ievērosiet, ka tas ir sāk iegūt vēl lasāms. Man nav īsti zināt, cik GetInt tiek īstenots. Atklāti sakot, es nezinu, kā koris tiek īstenota. Bet tas nav jautājums man. Man vienalga, jo tagad es varu veida, kā cilvēku, lasīt tas no augšas uz leju. Un tāpēc, ka funkcijas tiek nosaukti saskaņā ar ko tie do, mans kods ir arvien lasāma. Un kā mūsu programmas iegūt daudz sarežģītāka - ko semestra beigām, jums būs rakstiski simtiem līniju gada koda valodu, piemēram, PHP un JavaScript un līdzīgu - Jūs atradīsiet, ka tas ir tik daudz vieglāk, nekā sekot ko jūs esat darījuši. Un, kad jūs sākat sadarboties ar draugiem vai partneriem vai kolēģiem, jūs varēsiet rakstīt daudz masīvas programmas, sākot izmantot šos pamata celtniecības bloki. Tātad ar to teica, kāpēc nav mēs to saucam dienā? Un mēs redzēt jūs trešdien. [Aplausi]