[Muusika mängib] DAVID Humala: Tere kõigile. See on CS50 on supersection. Määratud lõigud ei alustada veel nädal. Ja nii täna, et ma olen siin with-- MARIA: Maria. DAVID Humala: --to tegelikult heita pilk probleemi määrata ühe, kursuse esimestel nädalatel materjali, sulle orienteeritud CS50 IDE, natuke Linux on operatsioonisüsteem, mis on töötab IDE, samuti mõningaid üleminek Nullist C juhtiv kuni probleem seatud üks. Nii ilma pikema jututa, probleemide määrata üks, sa lähed olema kasutusele CS50 IDE, mis on see veebipõhine programmeerimine keskkonda, mida me kasutame, et kirjutada programme. See on loodud selleks, et otsida väga meenutab tüüpiline arvuti Süsteem töötab operatsioonisüsteemi süsteemi nimetatakse Linux. Aga see on nn pilve mis tähendab kõigile klassi võib tegelikult olla tema enda tarbeks ja seda kasutada, samuti. Nii enamus teist ilmselt ei ole kunagi kasutanud Linuxi keskkonnas enne või ehk isegi käsurea keskkond. Ja käsurea keskkond on erinev. See kõik tekstilised. See kõik klaviatuurkäskudega. Ja see pole üht hiirega, ei ikoonid, no dialoogi aknad, no menüüd. See on puhtalt teksti. Nii on esiteks selline on tunne sammu osas tagasiminekut rafineeritumalt. Aga see jõuab on palju võimsam, kindlasti, jaoks arvuti teadlane lõpuks. Võtame pilk. Siin ma olen kell CS50.io, mille kaudu võite sisse logida CS50 IDE. Ja palju nagu Scratch, seal on kolm peamist alade sellele ekraanile. Nii vasakul servas on meil milline saab olema Failibrauseri. Ja seal on see kausta top, mis on kohe tühi sest ma sain lahti kõik mu failid enne supersection. Ja see, kui me tulen salvestada C failid, et me kirjutame. Paremal üleval, meil on koht, kus kõik meie koodi läheb aina kirjutatud. Ja tõepoolest, kui ma vajutan seda pluss, see läheb lubage mul valida Uus fail. Ja siin ma ei kirjutame C või juhul, tõesti, ükskõik kui palju muid keeli. Ja siis allosas kus see ütleb jharvard @ ide50-- ja sinu tahe öelda midagi natuke erinevalt-- milline oli selle nimega? Terminal aknas. Jah. Nii terminali aken nn käsurea liides, mille kaudu saab suhelda koos operatsioonisüsteemi. Ja nüüd, me ei kavatse teha väga vähe kasutanud see-- lihtsalt koguda, et vaadata veateateid, mida me näeme, ja näidata meie programme. Aga lõpuks me läheme teha nii palju, kui hästi. Ja te võite isegi installida tarkvara ja hallata oma tööruumi jooksul CS50 IDE, samuti. Aga sellest pikemalt mõni teine ​​kord. Nii lähme edasi ja kirjutage väga lihtne programm lihtsalt läbima soojenemist hello.c, mis on võib-olla lihtsaim programmi saame kirjutada. Olen juba avanud uue kaardi. Ma lähen edasi minna ja öelda hulka standard io.h. Siis int main (void). Ja siis printf ("Hello, world" kurakriips n lähedal quote, Sulge sulgudes ja semikooloniga. Hästi. Nüüd märkate mu aken on pealkirjata. Nii et ma olen väga kiiresti läheb minna kuni File, Save. Ja see on oluline, et Ma nimetan seda ei "tere." Nii väga levinud viga, eriti probleem määrata üks, on kogemata lihtsalt helistada Programmi "vesi" või "ahne" või "Mario" või "krediidi" vms. Aga mida sa tegelikult tahad teha Kindlasti olete faililaiend sest see on ainus viis, et tõlkija ja ka koodiredaktor teab, et sa oled tegelikult kirjalikult C koodi. Nii et lubage mul minna ja klõpsake nuppu Salvesta. Ja nüüd ka, mida CS50 IDE on teinud meie heaks on see ka süntaksi esile kõike. Nii see on tehtud kõik väga värviline. Ja kogu eesmärk mis ei toimi. See on lihtsalt juhtida oma silmad kontseptuaalselt erinevad tükid Selle programmi. Nii lähme edasi ja koostab selle. Ja ma ei saa koostada selle paari viisil. Ja nädal üks, siis vana kooli viis tegime see oli sõna otseses mõttes käsk LINE "rõkkama hello.c." Ja siis ma Enter. Ja miski ei juhtu terminali aknas. Aga mida tegid muutus IDE? Kui jälle, IDE tähendab lihtsalt Integreeritud arenduskeskkond. See on fancy viis öelda Selle tervikliku arengu keskkond tarkvara arendamine. Mis siis muutus UI? Mida panid mis on erinev, Maria? MARIA: märkasin midagi all IDE50 kausta siin. DAVID Humala: Jah. Nii siin, mitte ainult kas meil on "hello.c." Meil on ka "a.out", mis on selline loll nimi programm. Aga tõepoolest, see on vaikimisi antud nime jaoks Programm, kui sa just kompileerida koodi ja ärge rääkige koostaja Mis faili väljund. Nii et kui ma tahan teha selle, ma vaja öelda compiler-- või õigemini, ma pean rääkige tööruumi, et ma soovid käivitada programmi nimega "a.out." Sisesta. Ja seal on "Tere, maailma. "nüüd" ./ ". on tegelikult oluline. Kuigi tavaliselt me ​​ainult kirjutada nimed käske, kui see on programm, olete kirjutatud, sa ei taha öelda "./" sest see selgelt ütleb Linux et soovid käivitada programmi nimega "a.out", mis on selles, kus dot tähendab see kataloog, et ma olen praegu in, mis juhtub olema nimetatakse tööruumi, "a.out. Sest kui ma just ütlesin "a.out" Enter, Ma lähen "a.out käsk mitte leitud ", sest computer-- sest ma leiutanud "a.out;" see ei tulnud koos computer-- ei tea, kust otsida seda, kuigi see on õige minu nina, kui nii võib öelda. OKEI. Nii et me võiks muuta seda olla "rõkkama -o hello hello.c." Ja kui ma Enter, mida programm see läheb väljund minu jaoks? Mis on faili nimi? Jah, on tagasi. See on õige. "Tere." Nii "tere" saab olema nimi programmi sest me oleme kasutanud nn käsurea argument, mis on lihtsalt viis käitumist muuta koostaja tegelikult väljund konkreetse faili nimi. Ja tõepoolest, kui ma suurendamiseks välja ja otsida siin Nüüd ma ei ole mitte ainult "a.out" ja "hello.c", vaid ka "Tere," samuti. Nüüd ma saan teha "./hello" Enter. Ja seal on "Tere, maailm." Aga lastly-- ja selle Nüüdsest on konventsiooni Me kasutame kogu semestri typically-- on teil võib ka lihtsalt öelda "teha tere." Ja tõepoolest, see ütleb et see on kuni Seni, sest see on juba olemas. Lubage mul minna ja eemaldada koos käsuga rm, nii "a.out" - ja öelda "eemaldada tavaline fail a.out?" See tähendab lihtsalt, kas te olete kindel, et soovid kustutada? Ma ütlen jah. Ja siis ma lähen eemaldada "tere", aga mitte "hello.c." Ma ütlen "jah" selgesõnaliselt, kuid "y" on piisav, samuti. Ja nüüd märgata, kui ma kirjuta ls--, mis meenutavad, tähendab list-- ta loetleb kõik failide minu kausta. Ja tõepoolest, kui ma suurendamiseks välja ja vaadata ülaosas vasakul, see kinnitab, et milline on Selles kaustas, isegi Kuigi see on märgistatud IDE50 siin ja ei tööruumi, see on lihtsalt "hello.c." Nüüd siin, kui ma ei "teha hello" Enter, nüüd ma näen palju enam käsu kuid keerukamaid käsk, mis läheb olevat kasulikud lähinädalatel. Ja nüüd ma ei saa öelda "./hello." Võtame kiirülevaate mõne muu Linuxi käsud. Siis miks me ei sammu tagasi tegelikult vaadata C rohkem Üldiselt minnakse nullist C ja seejärel sõlmida ilme esimesel probleem sätestatud C. Olgu. Nii et ma lähen edasi minna ja lihtsalt puhas minu tööruumi, kus kontroll-L lihtsalt hoida ekraani puhas. Aga see ei ole funktsionaalne mõjutada teisiti. Tuletame meelde, et oleme näinud mõned käsud nüüd. Nii oleme näinud rõkkama, mis üldjuhul sa ei pea täitma käsitsi enam. Me asemel kasutada make. Aga me nägime ka LS, mis näitab noteerimise minu faile kataloogis. Ja nüüd, miks on there-- seal kaks Failide nüüd, "tere" ja "hello.c." Miks on star või Tärniga pärast "tere"? Mida see tähendama, mis põhineb mida me nägime nädalal üks? Mida sa arvad? Mida star tähendama? MARIA: For-- programmi "tere"? DAVID Humala: "Tere *". Jah. Oo jaa? Oh, täidetavad. See on õige. Nii et see tähendab, et "tere" on käivitatav. Nii tõesti, et miks Ma suudan "./hello." Hästi. Mida ma oskan teha siin? Noh, selgub suudan Samuti luua katalooge. Nii et lubage mul minna ja luua, Näiteks "pset1" kataloog. Ja probleem seatud spetsifikatsioon on teil teha just seda, nii et sa ei pea meeles pidama täna. Aga "mkdir pset1" tundub mõju puudub. Aga jälle, veateadet on üldiselt hea. Nii et kui ma tüüpi "ls" now-- ah, nüüd Mul on käivitatav fail nimega "Tere," C fail nimega "hello.c." Ja siis kaldkriips, nii et rääkida, tähendab, et see on kataloog. Nii tõesti, nüüd ma tahan, et see avada. Ja ma ei topeltklõpsu, siis nagu GUI, graafiline keskkond. Ma asemel öelda "cd pset1." Sisesta. Miski huvitav tundub olevat juhtus peale minu väike kiire siin-- see on Linuxi viis meelde kus ma olen, mis siis kaust on avatud. See on lihtsalt ütleb mulle selgesõnaliselt vastandina graafiliselt. Ja kui ma tüüpi "ls" Miks ma näen teise küsib kohe, kas sa arvad, kui ma loetleda sisu pset1? MARIA: Sa ilmselt ei ole midagi seal. DAVID Humala: Jah. Siis me ei ole ilmselt loodud midagi seal sest ma äsja loodud kataloogi. Nüüd, kui ma tahtsin luua file-- eest Näiteks saad luua uus fail. Ja siis ma võiks minna Salvesta ja salvestage see, nagu "mario.c" kui sa teed standardväljaandele pset üks. Ja siis, nagu iga Mac või PC, lihtsalt vali kaust "pset1, Save. Ja nüüd fail on tühi. Aga olgem suumida jälle teist. Teeme ls siin. Nüüd näeme "mario.c". Nii et mõned teised käsud tasub meeles pidada üle AEG_ selge, ega kontrolli-L on, mida ma olen pihta; mkdir oleme näinud; rm oleme näinud, samuti, mis on eemaldamiseks või faili kustutamist. Ettevaatust võite also-- ja kui sa vaatad kell õppematerjalid, saate rm -rf on väga levinud viis öelda kustutada kausta, mis on kraam ta. Lihtsalt super, super ettevaatlik. -rf tähendab rekursiivselt kustutada iganes see on üritad kustutada ja sunniviisiliselt kustutada. Nii kirjutan vahenditega kui see kaust kausta kausta kausta kustutada neid kõiki. Ja sunniviisiliselt tähendab isegi ei küsi jah või ei, ma olen selles kindel? Nii et see on super ohtlik viis kustutada palju kraami kiiresti. Aga beware-- liiga sageli ei kartmatu õpilase kogemata kustutada, ütleme, pset ühe, näiteks. MARIA: Ja kui nad lihtsalt teha -r, nad ei kavatse paluda neil umbes iga faili. DAVID Humala: Kumb on mõõdukalt tüütu. MARIA: Jah. DAVID Humala: Nii et miks nii paljud meist, ise lisatud, olen harjunud kasutades -rf. Aga see on ohtlik. Nii ostja valvel. Ja siis mv on selline Huvitav nimega. Nii et see on liikvel käsk, mis tundub natuke imelik sest sa võid tõesti seda kasutada teisaldada ühest kohast teise. Näiteks oletame, et ma segi. Oletame, et ma loodud Uue faili pset. Ja ma päästsin ta nagu "greedy.c." Aga arvan, et ma kogemata salvestada in IDE50-- nii minu tööruumi ise ja mitte pset1. Näete, kui palju ülevalt vasakult. Seal on "greedy.c." Ja seal on mõned lahendused. Nii, ma ei kasuta super kasutajasõbralikult lihtsalt lohistades seda. Ja mis tegelikult Selle probleemi lahendamiseks. Aga täna me üritame vaadata rohkem kauge, kuid võimas võimalusi seda teha. Nii et lubage mul võtta "ls" in pset1. Ja ma näen ainult "mario.c." Lubage mul minna ja teha "cd ..". Nii CD jälle on muutus kataloogi. ".." Tähendab mida, kuigi? Viimane kord, kui ma ütlesin "cd pset1 "minema pset1. Nii et kui ma ütlen "cd ..", mida ma teen? Tahapoole. Jah. Nii see läheb nn vanem. Mine taset ühe, nagu väljumisel ühest kaustast. Nii Enter. Ja tõepoolest, vaatame, mida ta tegi. See kolis mulle lihtsalt sisse tööruumi asemel Into pset1, mis on tööruumi. Ja nüüd, kui ma kirjutada "ls", seal on terve hunnik asju. Seal on "greedy.c". Nüüd lubage mul kasutada mv sõna otseses mõttes liikuda "greedy.c" ümber pset1. Ja nii palju Linuxi käsud töö täpselt nagu see. Nad ei võta argumente või nad võtavad ühe argument või nad võtavad kaks käsurea argumente ja nii edasi. Ja sel juhul, see on sõnalt seda, mida ta ütleb, ehkki succinctly-- liikuda greedy.c arvesse pset1. Sisesta. Miski tundub juhtuda. Aga kui ma teha ls jälle, ahne on läinud. Ja kui ma "cd pset1" Enter, ja seejärel LS uuesti, nüüd on õiges kohas. Selle kõrvale, kui ette mõned reason-- eriti Kui teil on vahelduva võrguühenduse või sa jalutamas campus oma sülearvuti kaas suletud ja siis seda avatumaks uuesti ja oma tööruumi Tundub veidi sünkroonist, ei ole suur asi. Just reload oma brauseri aken, ja see peaks RESYNC et vasakul failibrauseri näeb välja täpselt nagu terminali aknas. Mitte muretseda. Kui kahtled, laadige leht nii, Niikaua kui oled salvestanud faili juba. OKEI. Nii mv saab kasutada ka ümber faile. Ja võtame pilk see viimane käsk siin. Nii suppose-- ja see on super ühise liiga varakult. Mõned õpilased aeg-ajalt luua faili nimetatakse, olgem say-- mida on veel üks? Like "WATER.C." Nii et ma lihtsalt karjusin eest mingit põhjust, kõik mütsid. Kuid see ei ole õige faili nimi kui ainult sellepärast, et meie probleem seatud spetsifikatsioon ei saa öelda, Faili salvestamiseks kõik mütsid "WATER.C." Selle asemel, ootame "water.c" väiketähtedega. Ja tegelikult on see problemaatiline, sest check50, Programmi sa lähed kohtuda probleem määrata üks, mis automaatselt testid õigsuse koodi läheb kisa teile, kui ta ei saa leida "water.c" kõik väiketähed. Nii et ma pean lahendada. Nii palju erinevaid võimalusi Selleks, millest esimene Oleks Control-click või paremklõpsu faili nimi ja lihtsalt muuta Nimeta ümber. Täiesti trahvi teha. Aga jälle, täna, olgem seda veidi Kasvataja. Kasutame mv muuta "WATER.C" kuni "water.c." Nii võid kasutada ka esimene argument nimeta see, et teine ​​argument Kui teine ​​argument ei ole, on Tegelikult kausta või kataloogi nime. Hästi. Ja lõpuks, veidi trick--, et ma olen minu tööruumi kataloog hetkel. Kui ma tahan sattuda pset üks, Ma kindlasti kirjutada "cd pset1." Aga see on nii tüütu tüüp "pset1" või enam failinimede või kataloogi nimed ikka. Nii väga sageli Linux, mida mida saate teha on hakata kirjutama "PSE" ja lihtsalt igavleda, tabas Tab, ja lase arvuti sellest aru saada teile. Super abivalmis sattuda, et harjumus. Ainult saak on, kui teil on mitu faili või kataloogi alates tähega "p" või "ps", mida oleks võinud kirjuta veel paar enne arvuti teab, mida teha. MARIA: Meile meeldib otseteid. DAVID Humala: See tahe säästa nii palju aega. Ja ka, sest me ütlesime loeng, siis saab kerida üles ajalugu, üles ja alla, leida hiljuti hukati käsud, samuti. Hästi. Nüüd, pöördume meie tähelepanu tagasi to lihtne programm, tere. Nii et me oleme koostanud selle täpselt. Ja nüüd, miks me ei võta pilk andmetüübid ja siis üleminek mõned vastava Scratch plokid C. MARIA: Awesome. Nüüd, et olete alustanud kirjutamise programmid C, me ei kavatse hakata rääkima umbes andmetüübid ja muutujad. Nii mõned andmetüüpe, et sa tahaks teada mis algab nüüd on need, mis on esile sinine. Nii et meil on int esimene, mis tähistab täisarvu. Ja mis hoiab täisarvud, kui Võib-olla guessed-- nii 1, 2, 3, ja muu täisarvud et sa ei mõtle. DAVID Humala: Ja ka negatiivne. MARIA: Ja ka negatiivseid, eks. Ja 0. Siis on meil ujukid, mis on ujukoma numbrid. Nii et kõik reaalarvud mis on koma. Nii 5,0, 5,2 ja veelgi numbrit pärast koma, samuti, kui ka negatiivseid. Siis on meil char, mis on märk. Nii et ma arvan, et me rääkisime Selles loengus täna. Aga meil on tähed, et example-- A, B, C-, et saab salvestada näiteks süsi. Aga siis on meil palju rohkem sümboleid mida saab panna kui paalia. Ja need on salvestatud ASCII. Ja siis on meil bool, mis on tõeväärtused. Ja need TÕENE või Vale või 1 ja 0 võrra. DAVID Humala: Ja meenutada, et bool pärineb CS50 raamatukogu. Nii see ei ole ehitatud C, kuid see on super kasulik on mõiste õige ja vale. Ja kuigi sa Võib think-- lõbus fakt. Bool tehniliselt vajab mitu bitti, Tõeliselt esindama Tõsi versus vale? Mitu bitti sa arvad siis oleks vaja, maksimaalselt? Jah, ainult üks. Nii selgub, et C ei saa sa lihtsalt üks natuke. Väikseim mõõtühik saad kaheksa. Nii et see on natuke raiskav nad oled kasutades kogu bait, või kaheksa bitti, esindada True või False. Aga see on lihtsalt nii see on rakendatud C poolt CS50 raamatukogu. MARIA: Ja siis need, kes me oleme ei hakka rääkima, kui ulatuslikult õige now-- topelt, see on suurematele ujub. Pikad pikad ja lühikesed on ka täisarvud. DAVID Humala: Tõepoolest. In häkker väljaanne pset üks, me tegelikult kasutada pikka. Aga standard väljaanne, see ei tohiks olla vajalik. MARIA: Cool. OKEI. Nii operators-- siis peaks olema ilmselt tuttav enamik neist. Lisaks +; lahutamine, -. Sest korrutamine, meil on *. Nii ei ole X, et me tavaliselt kasutada. Division, meil on kurakriips. Ja moodul on meie viimane operaator, me räägime praegu. See on operaator, mis võimaldab meil võtta ülejäänud osaks. Nii et kui meil on 4% 2, 4 jagatud 2 on 2 koos ülejäänud 0. Nii 4% 2 on 0. 4% 3 on 1. 4% 5 on 4, kui oleks võinud arvata. Ja pidage meeles, kui kasutatakse kõiki neid ettevõtjatel kasutada PEMDAS reegleid. DAVID Humala: Nii olevat selge, kui te teha 4% 2, miks see nii on 0, täpselt? MARIA: Sest 4 jagatud 2 on 2 koos ülejäänud 0. Nii moodul annab meile, et ülejäänu Erinevalt jagunemise tulemusena. DAVID Humala: Ja tõepoolest, Mis me seda kasulikuks on, et mõned probleemid see ei ole tingimata üks, kui sa tahad olla piirab ise et numbrite vahemik nagu 0 läbi midagi, saate moodul ümbritsev varem nagu 2 miljardit või 4 miljardit väärtus, mis me rääkisime loengus. MARIA: Jah. Ja isegi "ahne" me võiksime. DAVID Humala: Jah, Probleem määrata üks, samuti. MARIA: Jah, tore. DAVID Humala: Hea vihje. MARIA: Vabandust. Loogiline expressions-- nii Boole'i ​​operaatorid, me räägime kõik Nende et näete siin. Nii kohe, meil on kaks võrdne märke loetletud võrdsete. Nii et need on võrdluseks. Seni oleme näinud ainult ühte võrdusmärki. See, kui anname väärtus muutuja. Nii et kui me oleme näinud int n = 5, siis oleme määratud 5 muutuja n. Aga kui me tahame kasutada == eest Võrdluseks, saame näha, kui n == 5. Ja kui n == 5, siis see on tõsi. Nii Boole'i ​​operaatorid võimaldab meil põhiliselt hinnata Boole'i väljendeid True või False. Nii ei equals-- meil hüüumärk ja võrdsete. Nii et me võiks ka kontrollida, kas n ei võrdu 5-- nii n! = 5. Vähem kui väiksem või võrdne, suurem kui, mis on suurem või võrdne, ja siis on meil loogilist JA ja loogilise OR. Ja need võimaldavad meil hinnata Mitme Loogiline väljendeid koos põhiliselt tulevad koos üks terve Loogiline väljendus. Nii et kui me tahame leida number, ütleme, mis on suurem kui 5, kuid alla 15 samal ajal me kasutaks loogilised ja operaator näha, kui n on üle 5 && n alla 15. DAVID Humala: Ja siin Ka see on väga lihtne varakult kogemata kasutada vaid ühe ampersand või ühe püstkriipsu. Ja loodetavasti kompilaator kisa teile, sest nad tegelikult on hoopis teistsugune tähendus. Neile uudishimulik, nad kasutatud bitwise toimingud, tegutsevad üksikute bittide. Aga sa ei taha paari neid siin. Ja super oluline on, et Esimene, võrdusmärk, mis on võrdõiguslikkuse käitaja Erinevalt omistamisoperaatorile. MARIA: Ja ribal on vahel paiknevad Delete ja tagastamine. DAVID Humala: Jah. On tüüpiline USA klaviatuuri. MARIA: Yep. Nii saab hüpata paremale tingimisi avaldused. Scratch, olete juba näinud, ilmselt, Kui avaldused, mis võimaldab teil kontrollida, kas midagi on tõsi, siis midagi muud. Nii võite tahtnud kontrollida, kas teie sprite on puudutades mõne muu sprite või piiri ekraani. Ja siis oleks tahtnud Mängu lõpetamiseks või teha midagi muud. Nii süntaks, mis on "if (tingimus)." Seega, kui teie sprite on liigutav midagi, siis ei on sees looksulg. Siis on meil kui-mujal avaldused. Else võimaldab meil teha midagi kui tingimus, et me kontrollige alguses ei ole tõsi. Nii et kui sprite on liigutav piiri teha, muidu midagi muud. Nii teisiti teha midagi muud. Siis on meil väike näide selle eest. Nii et kui (military_time <12), siis me tahan printf "Tere hommikust!" Else läheme printf "Tere õhtust!" Basic näiteks. DAVID Humala: Hea. MARIA: Cool. Nüüd on meil switch väited. Lülita avaldused üldiselt võib võimaldab meil teha palju sama asi et me lihtsalt rääkisime umbes koos, kui avaldused. Näiteks praegu on meil üldkuju lüliti avaldusega mis võimaldab meil võtta muutuja, mida kutsutakse n ja võrrelda seda palju erinevaid väärtusi, mis siin kutsunud constant1, constant2. Meil võib olla palju rohkem. Ja need on kutsutud juhtudel. Nii et kui meil on lüliti statement-- ja see töötab ainult integers-- meil varieeruv, et käesoleval juhul on n. Kui muutuja n on võrdne constant1, me täidab mõned koodilõige või midagi, mida me tahame teha. Ja siis me murda. Nii break tähendab, et lüliti avaldusega peatub täidesaatva kui n on võrdne constant1, ja siis teie programm jätkub. See väljuda vahetada avalduse ja siis see jätkuvalt teha midagi muud. Kui aga n ei võrdu constant1, siis kehtib constant2 tuleb kontrollida. Nii et kui n võrdub constant2, et teised koodilõige viiakse. Ja siis pead murda kui see on võrdne sellega. Ja siis saame also-- ole tingimata, though-- vaikimisi juhul, mis juhtub siis, kui n ei võrdu ühele juhtudest, et olete loetletud. Ja vaikimisi juhul me ka ei vaja murda tingimata sest lüliti avaldus tea et see peab lõppema pärast default Juhul kui see on nii. DAVID Humala: Aga stiililiselt, me alati pane see sinna. MARIA: Jah. DAVID Humala: Jah. Nii kui auto hakkab välja eriti kui nende hulgas vähem mugav, ma isiklikult lihtsalt soovitan jääda ifs ja IFS-elses ja kui-mujal-kui-elses ja nii edasi kui ainult sest nad on natuke selgemad. See on tore optimeerimise või mõnikord isegi esteetiliselt see muudab koodi loetavamaks. Ja tegelikult, ilmselt keskel semester me näeme probleemi kehtestatud, kui see lihtsalt tundub parem ja lihtsam lugeda, et inimestel kasutades lülitit avalduse. Aga ärge muretsege klammerdumine see liiga vara. MARIA: Jah. Kui teil on palju, kui avaldused, see võib lihtsalt olla üsna loetav. See ei pruugi olla väga kiire sul minna läbi. Nii lülitub avaldusi saab väga kasulik, kui hästi. Ja ka ei mäletada ei unustage panna katkestused seal. DAVID Humala: Ei mäleta seda. MARIA: Sest siis võib langeda läbi ühe asja teisele. Nii oletame, et juhul constant1 ei pea murda avaldus see. Siis võib läbi kukkuda sees juhul constant2. Ja me ei taha seda teha, kui me oleme juba jõudnud juhul constant1 ja see on võrdne n. Nii näiteks, kui meil on varieeruv n, mis sisaldab klassi number, ja me tahame näha, mida see klassi on-- kui n võrdub 50, me läheme välja printida "CS50 on Sissejuhatus Computer Science I. " Siis me murrame. Ja see ongi kõik. Kui aga n võrdub 51, me ei kavatse trükkida "CS51 on Sissejuhatus to Computer Science II. " Siis jälle, me murrame. Kui aga siis panime 124, 61, ükskõik muu number, et sa võiksid mõelda, või programm ei kavatse tunnistada, et. Nii see läheb öelda, "Vabandust, ma olen ei ole tuttav selle klassi. " Ja see läheb katki. DAVID Humala: Nii saab tõesti näha if, else if, teine ​​mõte siin. See on lihtsalt süntaks väljendab täpselt sama mõte. MARIA: Täpselt. Nüüd on meil kolmekomponendiliste ettevõtjad. Nii kolmekomponendiliste operaatorid kolm osa- tingimus, midagi teha, kui see tingimus on tõene, ja siis midagi teha Kui see tingimus on vale. Nii et näete, põhimõtteliselt süntaks, mis siin. Meil on küsimärk, ja siis the-- mida me nimetame seda? DAVID Humala: koolon. MARIA: Colon. Aitäh. Vabandust. Nii vaatame meie eeskuju näha, kas saame mõtestada see-- class_num == 50. Nii et siin me näeme meie Boole'i ​​operaatori == mis võrdleb muutuja class_num 50. Nii class_num kauplustes täisarv. Ja kui see täisarv võrdub 50, siis me oleme läheb salvestada "David Humala" sees string professor. Kui klassi number ei on 50, "ei David Humala" saab olema professor. DAVID Humala: Aitäh. Ja nii see tundub samaväärne Mis, kas te ütleksite, esmapilgul? MARIA: Mulle tundub nagu kui-mujal avaldused. DAVID Humala: Jah. Ja tegelikult, see on omamoodi on päris üks liner, niiöelda rakendamiseks täpselt loogika kui-mujal kuid teeme kõik ühte sammu. MARIA: Täpselt. Jah. Nii et kui-mujal avaldused võiksid võtavad palju ruumi. Nad võivad olla liiga pikk midagi nii lihtne kui see. Nii et see võib olla väga sisutihedat ja väga kena. Nüüd me ei kavatse võtta vaadates täidesaatva midagi ikka ja jälle, nii kontrollimise jaoks tingimus mitu korda ja seejärel jätkatakse midagi samas kui tingimus on tõene. Nii et see toob meid kenasti samas silmuseid. Vasakul on meil Meie esimene samas loop. Niisiis, kui midagi on tõsi, midagi ikka ja jälle. Seega veenduge, et märgata, et meie tingimus siin on valideeritud tipus. Arvestades meie teine ​​loop-- me nimetame et tee-samas loop-- me midagi, siis kontrollige seisukorras. Ja kui see seisund Jätkuvalt on tõsi, me minna tagasi ja asi jälle. Seega on peamine erinevus on see, kus tingimus on kontrollitud. Ja kood ei tohi kunagi olla täideta, kui tingimus ei ole tõsi samas silmus. Arvestades koos do-ajal loop, meil koodi mis on alati rakenduma vähemalt üks kord. Ja siis samas seisukorras Jätkuvalt on tõsi, Me ei saa minna tagasi ja korrata jälle sees. Miks sa arvad, me kasutame do-samas silmus üle, samas loop? Õigus. Nii et kui me tahame, et paluda kasutaja mingi sisend, Kui me tahame, et paluda neil sisestada oma nimi, tahame vähemalt neilt kord. Ja kui nad ei sisesta et nimi, et me ei küsin neid uuesti sest me juba teame. Aga kui nad ei sisesta oma nime, või kui nad sisestage midagi, mis on loomulikult ei ole nime, me ikka tahame jätkata küsib neid oma nime. DAVID Humala: Ja loengus oli meil üks niimoodi koos saada positiivset int Näiteks, kui seal on midagi vaadake esimesel sest sa ei ole isegi saanud int. Nii et me tahame teha see-- saada int alates user-- siis seda kontrollida, võib-olla, uuesti ja uuesti ja uuesti. MARIA: Täpselt. Sest loops-- OK. Sest silmad võimaldavad meil teha peaaegu täpselt sama asi, samuti. See on tegelikult täpselt sama asi. Nii pole midagi, et saate teha jaoks silmuseid et sa ei saaks teha samas silmuseid. Aga silmad võivad tunduda veidi natuke keerulisem süntaktiliselt sest neil on kolm osi, mida oli enne ainult seisund samas silmuseid. Nii et esimene osa, et te meri, vasak-kõige meil "int päkapikud = 0." Nii et see on koht, kus me initsialiseerida meie muutuja. Siis on meil semikooloniga ja "kääbused <7." Nii et see on koht, kus välja tingimus tegelikult on. Nii et me oleks pane lihtsalt selles samas loop-- "Kuigi päkapikud <7." Siin, et läheb ka Keset meie jaoks silmus. Nii "dwaves <7." Ja siis meie viimane osa on "päkapikud ++," mis on kui me uuendada meie muutuja. Nii tähtsam mõistma, et see läheb läbi selle jaoks silmus seitse korda ja täidab seitse korda. Nii et meil on seitse päkapikud, ja nad kõik ütled, "ma olen siin sind aidata, Lumivalgeke " sest nad on valmis aidata Snow White. Mis samas silmuseid, oleksime teinud vormindamise ja ajakohastamine mitte sees tingimus, uuesti, kuid kas enne või sees samas silmus veenduda, et we-- sest Peame alati need osad. Nii veenduda, et meil on neid, me oleks olen ikka lisatakse neile kohta, lihtsalt ei sulgudes. DAVID Humala: Ja nii tundub like-- loeng, näiteks Ma peaaegu alati kasutada, nagu mina ja n ja üsna igav muutujaid. Tundub, et teil on võimalik kasutada rohkem nutikalt nimega muutujaid ka. MARIA: Jah, see on tegelikult väga kena kasutada natuke rohkem kirjeldav muutuja sest eriti kui keegi teine lugemist oma code-- äkki oled teehöövel või kui sa koostööd koos somebody-- soovite veenduda, et nad mõista, mida sa teed. OKEI. Nii et see on midagi väga funky-- silmus sees jaoks silmus. Ma ei tea, kas me oleme näinud seda enne. Ilmselt mitte. Aga me saame tegelikult on see-- nii silmad asemel silmad. Nii ei keegi taha olla kõndida minu kaudu, mis siin toimub? DAVID Humala: Ma võtan stab. MARIA: Cool. DAVID Humala: OK. Nii, spoiler-- tahame printida kraami see all paremas nurgas seal. MARIA: Right. Ja ja. DAVID Humala: Nii oleme lihtsalt panna, et proovi väljund olemas. Nii et ma ei järeldada tähtsaim loop, et sa oled iterating üle ridu äärepoolseimate loop, kui nii võib öelda. Ja sa iterating üle veerud sisemine loop. Ja intuitiivselt, seda loodetavasti mõtet sest iseloom Iga programmi oleme näinud Enne, printf, mis on funktsiooni me kasutame lõpuks suudab printida kraami sisuliselt läbi rida-realt. Like, kui olete väljastada uus liin, seal on no kahekordistada tagasi ja trükkimine midagi suurem ekraan, vähemalt ei kasuta printf niimoodi. Ja nii selles osas, see teeb mõttes, et äärepoolseimate loop Tuleks viidates rida sest iga antud rida, sa lähed tahan välja printida XXXXX ja seejärel liikuda edasi järgmisele reale, XXXXX. Nii rida esikohal. Ja siis iga rida, siis prinditakse sambad. Kui oled proovinud seda teha vastupidi, see ilmselt ei tule välja, nagu seda soovitakse. MARIA: Jah. Me lihtsalt ei suutnud minna tagasi Eelmise reas printf. DAVID Humala: Ja mis huvitav Ühe tänapäeva vestelda ulatus, tegelikult, on see, et järjest on int mis on deklareeritud tähtsaim loop. Aga teate, et see on ikka sees, kui nii võib öelda, lokkis traksid, mis vahetult järgnema, kuigi see ei ole tehniliselt neis looksulg. Nii reas on oma ulatuselt kogu koodilõik, nii seest välimise jaoks silmus ja selle sees sisemise jaoks silmus. Aga seevastu kui kolonnis ulatus? Muutuva veerus? Jah, ainult sees silmus. Ja see on OK, sest me ei pääse see väljaspool oma lokkis traksid. Kõik me teeme, on väljatrüki uus line päris lõpus on. Nii et tegelikult on OK. Nii et see on toime, tundub, teed kolm rida ja neli veergu. MARIA: Right. Nii esimese kui me minna läbi meie esimene rida. Ja just meie esimene rida, me teeme neli veergu sees esimeses reas. Nii me välja printida neli Xi. Ja siis me saame väljuda silmus, kuna me oleme juba välja prinditud neli Xi. Ja me printida uus liin. Ja siis me läheme läbi Sama protsessi veel kaks rida tegemas kokku kolm. DAVID Humala: Ja see on väärt märkimist, et see on lihtsalt jäänuk font, asjaolu, et proovi väljund tunduvad nii palju kõrgemaks, nagu oleks seal rohkem rida kui veergu. Aga see on lihtsalt sellepärast, et X on pikem kui see on lai. See on kõik, mis seal toimub, pluss valge ridade vahele. MARIA: Right. Cool. DAVID Humala: Okei. Nii kiire pilk probleem määrata üks, võta mingeid küsimusi ja siis edasi lükata? Hästi. Nii probleem määrata üks, seal on kolm Esmane väljakutseid lõpuks. Aga kõigepealt, leiad et probleem seatud spetsifikatsioonile, nagu Paljude psets sel sügisel, läheb samm-sammult läbi mõne soojenduseks harjutusi, juhtida teid läbi mõned vahendid et siis võib või ei näinud juba. Näiteks CS50 on komplekt lühikesed püksid, mis on lühikese videos, mitte erinevalt, kuid et väga teema specific-- võibolla viis minutit, 10 minuti pikkuses silmad või tingimustel või algoritmide või hiljem rohkem Kogenud, samuti. Ja me üldiselt kinnistada neid arvesse probleemi komplekti nii, et õpilased on ressurss, mis vaadata materjali, mis võib olla juba tulla loengu või osa. Aga nii see on rohkem keskendunud ja nende käeulatuses. Samuti kipuvad kinnistada probleem seab asju nimetatakse trajektooridega. Nii peaaegu kõik näited mina loengus, laval siin, me ka on tulistas kaamera edasi rohkem aeglasem, intiimsem ülevaadet minu kohta minu arvuti selle koodi rea kaupa nii, et klassis, siis me sageli koorima läbi kellegi või millegi saab hüüdma koos vastata küsimusele. Aga see ei tähenda tingimata valamu igaüks, kes publiku. Nii leiad koodi trajektooridega enamiku näited et me teeme siin loengu, et sa saab kõndida läbi oma tempos ja edasi või tagasi kerida või vahele jätta, kui soovite. Seal on sageli vähe soojenduseks küsimused, mis palun mingisugune tugevdada selle materjali ja veenduge, et olete hubane enne kui asud ülejäänud pset. Ja siis muidugi seal on pset ise. Ja üks asi, me väga teadlikult teha CS50 on peaaegu iga ebahuvitav või intellektuaalselt ebahuvitav mehaaniline samm, sa oleks võinud teha on peaaegu alati väga hästi dokumenteeritud. Jooksul sõna, siis me alustada küsida rohkem retorisia nagu mäletan, kuidas seda teha või mis? Aga üldiselt leiad et probleem seab sulle läbi mehaanikud midagi nii, et huvitav, intellektuaalse väljakutseid lõppkokkuvõttes jäetakse teil õpilane. Olles seda öelnud, Zamyla, kellele me hoida viidates täna loengu, on üks meie kauaaegne töötaja liige, kes omab ka trajektooridega konkreetsete pset probleeme nagu Mario ja ahne, aga mitte kasta sel aastal. Ja see on nende walkthroughs et ta tihti pakub mõningaid näpunäiteid kuidas toimida, ei ütle teile täpselt, mida teha, kuid rather-- nagu tingimus, Kui te will-- annab sulle vähemalt paar ideed, nii et see on kuni teil, lõpuks otsustada kuidas neile läheneda. MARIA: omamoodi nagu kõrgetasemeline mõista loogikat, mida Palume teil teha. DAVID Humala: Täpselt. Ja tegelikult, Zamyla s trajektooridega on mõeldud vastata korduma küsis küsimus, kust ma hakkas, eriti kui Nende pikad kirjeldused on natuke hirmuäratav anda kogu tekst ja kujundeid, mis on nende sees. Nii water.c leiad kui oled valmis see, on tegelikult üsna lihtne. Absoluutselt on kamp ja sa paugu oma pead vastu seina üritab aru saada, miks see ei ole koostamine või miks see ei tööta korralikult. Aga kui sa oled teinud seda ja kui sa oled mõnda aega maadlevad tahes ja vead, mida sa võib-olla, leiad, et see on Väga lühikese programmi. Seda saab teha vaid paar koodiread, millest enamik oleme näinud siin loeng juba, kui sa koguda õige ehituskivid. Ja nagu me soovitame siin, see saab küsida saab määrata mitu minutit keegi dushi ülikooli. Me täpsustada probleemi määra kehtestab veevool nagu mingi väikese voolu dušš Pea meelega Seinfeld clip nägime eile või vastupidine sätestatut. Ja siis sa lihtsalt pead teha natuke matemaatikat, really-- aritmeetiline kasutades C öelda meile, kuidas paljud umbes nii, pudelit vett on see, et samaväärne kui me oleme võttes n-minutilise dušš. Nüüd, mario.c, see läheb olla veidi pikem programm. See on ikka ei kavatse olla nii kaua. Just paar rida enam kui water.c. Aga see saab olema võimalus taastada vana kooli Mario Püramiidi Super Mario Brothers või mõne jätkuna. Ta ei kavatse vaadata nii ilusam või värvikas, et üks seal. Me lihtsalt kavatse kasutada vähe hashtags nagu meil siin ekraanil kasutades ASCII teksti. Aga see umbkaudu sama mõte. Ja see saab olema kasutada, et esmapilgul Tundub päris simple-- lihtsalt prindi lihtne püramiid. Aga seal on paar omadused siin, mis on huvitav. Pange tähele, et kõige parempoolsem serva Püramiidi tegelikult on laius kaks. Nii et kaks võrdset kõrgus sambad, mis muudab see nõuab veidi natuke mõelnud teha Kindlasti sa selle täpselt õige, sest mitte ainult täiesti angled line. Nii et natuke nurgas juhul kuid vastab tegelikule mängu. Ja see on ka mitte-ilmne esimesel lühidalt, kuidas printida tühja ruumi. Nii et kui ma vaatan proovi väljund siin-- ja see on ka spec-- see Selline näeb välja nagu ristkülik, kuid diagonaal ristkülik on hakitud off, ja see on lihtsalt tühikuid, nii rääkida. Ja nii korduma kippuvad Küsimus on selles, alati hästi, kuidas ma liigutada hashtags üle õige? Või kuidas ma printida tühikuid? Ja see on tegelikult lihtsam kui enamik õpilasi mõtlema. Õigus? Võite ühtlustada see visuaalselt lihtsalt lööb tühikut üks või kaks korda või kolm korda. Ja nii isegi koos printf me peaaegu alati välja printida string või int või sõna nagu "tere, maailma "või rea sõnu, võite ka lihtsalt printida tsitaat, ruumi, lõppeb. Ja mis tegelikult annab Teile valge ruum olemas. Nii et hoidke seda silmas pidades ja ei overthink seda. Sa tõesti otsustada rida-rida-realt, ei ole erinevalt oma näiteks Hetk tagasi, kui palju neid veerud peaksid olema tühikuid ja kui palju neid peaks olema hashtags. See võtab natuke aega, aga see on lõpuks loogika puzzle kehvasti. MARIA: Jah. Aga loogika läheb rida-realt läheb suureks abiks. DAVID Humala: Jah. Ma arvan, et proovi kood, mida gave-- isegi kuigi see ei olnud täielik programm. Sul on vaja veel int ja peamised ja tühine ja #include stdio.h, palju asju loeng. Aga ehituskivid Tundub, et seal olema. Ja siis lõpuks on midagi natuke rohkem algoritmilise. Nii selgub, et iga kord, kui minema CVS või tarbekaupade pood ja keegi kätt juures kassapidaja arved või mündid muutus, Selgub, et nad on inimesed, kas nad teavad seda või mitte, Tõenäoliselt kasutad, mis on nimetatakse ahne algoritm, kusjuures, kui sa oled võlgu, ütleme, $ 21 muutuste tõttu mingil põhjusel sa ostsid midagi väga odav väga suur arve CVS, oleks tõesti tüütu, kui Kassapidaja andis sulle 21 Suur või, veel hullem veel terve hulk münte. Pigem mõistlik isik on ilmselt lähen tegema, on nad lähevad haarata $ 20 ja siis 1 $-arve, ja käe lihtsalt kaks arvet sellisel juhul. MARIA: Nii nad püüavad vähendada muutus, et nad annavad sulle tagasi. DAVID Humala: Täpselt. Ja sama palju münte, samuti. Kui sa oled võlgu, ütleme, $ 0,50 loodetavasti sa ei taha 50 penni. Sa asemel tahavad kaks kvartalites, näiteks. Nüüd, see ei arvata et kassapidaja on piisavalt iga nimiväärtus, et ta võib tahan teile. Aga me ei võimalda teil eeldada sama palju probleemi. Ja eesmärk lõppkokkuvõttes on rakendada C koodi ahne algoritm. Nii kasutajal on lubatud kirjuta, kui palju muuta ta võlgu dollarit ja senti, mingi ujukoma väärtus ilmselt. Ja siis sa pead tegema, matemaatika ja nuputada algoritmiliselt, noh, kui palju münte saab annan sa minimaalselt teile täpselt selle summa muutuse. Aga seal saab olla paari keeruline osad siin, eks? Nagu seal on kogu ebatäpsuse probleem. MARIA: Täpselt. Nii ujukoma väärtused on ebatäpsus. Kas me räägime sellest loeng täna? DAVID Humala: Tegime Viimast korda loengu. Rääkisime ebatäpsus. Ja sa ei taha petta kasutaja kui palju muutus ta võlgneb. Ja nii ülevaadet, in Probleemi kehtestatud spetsifikatsioonile, mõtlema, lõpuks, et kuidas saab leevendada neid ebatäpsus vigu, potentsiaalselt. See on välditav, kindlasti, et sisendite me räägime. Ja tegelikult, pennies-- võibolla me edasi lükata Zamyla, Ma arvan, et trikke seal. Nii lõpuks leiad progresseerumist probleeme sel nädalal millest esimene on üsna väike, siis keskmise, siis veidi suurem. Kuid kõik neist kasutavad hoone kvartali kaugusel möödunud nädalal, Sellest supersection, Probleem seatud spetsifikatsioon paneb sind lugematu ressursse. Aga ikkagi, kui üldse vaeva, eriti nende seas, vähem mugav ilma eelneva taustal, tulevad tööaega Esmaspäeval ja teisipäeval ja Kolmapäeval ja neljapäeval. Mine CS50 Arutle kaudu Kursuse kodulehel mille kaudu saab vestelda personali ja klassikaaslastega. Aga lõpuks, ma arvan, et Parim soovitus on lihtsalt alustada varakult. See ei ole mingi klassi, et teil tuleks alustades psets kolmapäeval öösel, või mis veel hullem neljapäeva õhtul. MARIA: Minu parim nõu on et on hakanud esmaspäevaks. DAVID Humala: esmaspäeval. Nii et kui sa ei ole alustatud already-- ole. Aga isegi kui ei ole esmaspäev, siis teisipäeval. Mida varem, seda parem. Ja see on põhjus, miks Muidugi on nii palju hiljaks päeva on teile natuke psühholoogilist survet alustada varem, kuid siiski lasta asjad libisevad asjad võtavad kauem kui te ootate. MARIA: Ja sa tahad kasutada tööaega nii palju kui võimalik, ka. DAVID Humala: Kas on küsimusi? Hästi. Noh, miks me ei lükata siin?