[Muzikos grojimo] DAVID Malan: Sveiki, visi. Tai CS50 anketa supersection. Paskirtos Profiliai nebus pradėti kitą savaitę. Ir taip ir šiandien, aš čia with-- MARIA Maria. DAVID Malan: --to tikrųjų pažvelgti problemą pažvelgti nustatyti vieną, žinoma anketa pirmąsias savaites medžiagos, gauti Jums orientuota CS50 IDE, šiek tiek Linux operacinė sistema ŠTAI veikia IDE, taip pat ieškoti kai perėjimo nuo nulio C pirmaujančių iki problemą nustatyti vieną. Taigi be tolesnio ceremonija, į problemą nustatyti vieną, jūs ketinate būti supažindinami su CS50 IDE, kuris tai žiniatinklio programavimo aplinka, kuri mes naudojame tam, kad rašyti programas. Jis sukurtas taip, kad atrodo labai primena tipiškas kompiuterio sistema veikia operacinė sistema, vadinama "Linux". Bet jis yra vadinamosios debesies, o tai reiškia, kiekvienas į klasę iš tikrųjų gali turėti jo ar jos savo sąskaita ir ją naudoti, taip pat. Taigi, dauguma iš jūsų tikriausiai niekada naudojamas Linux aplinkoje prieš arba galbūt net komandinės eilutės aplinka. Ir komandų eilutės aplinka yra skirtingi. Tai viskas tekstinę. Tai visų klaviatūros komandas. Ir tai ne miłej, nėra piktogramos, Dialogas langai, nėra meniu. Tai grynai tekstas. Taigi, pirmiausia, kad tipo iš jaučiasi žingsnio atgal kalbant apie sudėtingumo. Bet tai galų gale buvo daug galingesnis, žinoma, už kompiuterio mokslininkas, galiausiai. Taigi leiskite pažvelgti. Čia aš esu CS50.io, per kurį galite prisijungti prie CS50 IDE. Ir panašiai kaip nulio, ten trys pagrindinės sritys šį langą. Taigi kairėje pusėje, mes turime kas bus failas naršyklė. Ir ten šis aplankas ne viršuje, kuri yra dabar tuščias nes aš atsikratė visų savo failus prieš supersection. Ir tai, kai mes išsaugoti C failus, mes rašome. Viršuje dešinėje, mes turime vietą, kur visi mūsų kodas ketina gauti parašyta. Ir iš tiesų, jei aš spustelėkite šį plius, tai ketina leisti man išsirinkti naują failą. Ir čia aš galiu pradėti rašyti kodą C, arba tikrai, bet ir kitomis kalbomis, skaičius. Ir tada apačioje, kur ją sako jharvard @ ide50-- ir jūsų bus pasakyti ką nors šiek tiek different-- kas buvo tai vadinama? Terminalo lange. Taip. Taigi terminalas langas vadinamasis komandinės eilutės sąsaja, per kurią jūs galite bendrauti su operacinės sistemos. Ir dabar mes ketiname kad labai mažai naudojasi this-- tik kaupti, pažvelgti į klaidų pranešimai, kad mes matome, ir paleisti savo programas. Bet galiausiai, mes ketiname padaryti daug daugiau, taip pat. Ir jūs netgi galite įdiegti programinę įrangą ir administruoti savo darbo sritį per CS50 IDE, taip pat. Bet daugiau apie tai kitu laiku. Taigi eikime į priekį ir rašyti labai paprasta programa, tik eiti per apšilimo nuo hello.c, kuris, ko gero, paprasčiausias programa, mes galime rašyti. Aš jau atvėrė naują skirtuką. Aš ruošiuosi eiti į priekį ir sako apima standartinį io.h. Tada int main (void). Ir tada printf ("Sveikas, pasauli" Backslash N, netoli citata, Artimų skliausteliuose ir kabliataškiais. Gerai. Taigi dabar pastebėsite, mano langas yra Untitled. Taigi, aš labai greitai vyksta eiti į File, Save. Ir labai svarbu, kad Aš vadinu tai ne "labas". Taigi labai dažna klaida, ypač problemos nustatyti vieną, yra atsitiktinai tiesiog paskambinti į savo Programa "vanduo" arba "godus" arba "Mario" arba "kredito" ar panašiai. Bet jūs iš tikrųjų norite padaryti įsitikinkite, kad turite failo plėtinį nes tai yra vienintelis būdas, kad sudarytojas ir redaktorius kodas žino, kad esate iš tikrųjų rašyti C kodą. Taigi leiskite man eiti į priekį ir spustelėkite Įrašyti. O dabar, taip pat, kas CS50 IDE padarė mums yra tai taip pat sintaksė pabrėžė viską. Taigi ji padarė viskas labai spalvinga. Ir visa tikslas kad yra ne funkcionalus. Tai tiesiog atkreipti akis į konceptualiai skirtingi gabalai Šios programos. Taigi eikime į priekį ir surinkti tai. Ir aš galiu surinkti tai būdais pora. Ir savaitę vieno vyro, senosios mokyklos, kaip mes padarėme tai buvo tiesiog ne yra komanda line-- "žvangėjimas hello.c". Ir tada aš paspauskite Enter. Ir niekas, atrodo, kad taip atsitiktų terminalo lange. Bet ką darė pokytį IDE? Tais atvejais, kai vėl, IDE tiesiog reiškia, Integruota kūrimo aplinka. Tai išgalvotas būdas pasakyti Ši integruota kūrimo aplinka kuriant programinę įrangą. Taigi, ką pakeisti UI? Ką pastebite kad skiriasi, Marija? MARIA: aš pastebėjau kažką pagal IDE50 aplanką čia. DAVID Malan: Taip. Taigi, čia, ne tik mes turime "hello.c". Mes taip pat turime "a.out", kuris yra rūšies kvailas pavadinimą programą. Bet iš tiesų, tai numatytasis pavadinimas dėl programą, kai jūs tiesiog kaupia savo kodą ir nesakykite kompiliatorius kas failą išvesties. Taigi, jei aš noriu paleisti tai, aš reikia pasakyti compiler-- arba, tiksliau, man reikia pasakyti, kad aš darbo sritį norite paleisti programą, pavadintą "a.out". Įveskite. Ir ten "labas, pasaulis. "Dabar" ./ ". iš tiesų yra svarbu. Nors paprastai mes tik rašyti komandų pavadinimus, kai tai programa jūs parašyta, jūs norite pasakyti "./" nes tai aiškiai pasako Linux kad norite paleisti programą, pavadintą "a.out" tai šioje, kur taškas reiškia šią direktoriją, kad aš šiuo metu į, kuris atsitinka būti vadinamas Workspace "a.out. Nes jei aš tiesiog pasakė: "a.out" Enter Aš ruošiuosi gauti "a.out komandą nėra rasti ", nes computer-- nes aš išrado "a.out;" jis neatėjo su computer-- nežino, kur ieškoti jo, nors tiesa pagal mano nosį, taip sakant. GERAI. Taigi, mes galime tai pakeisti, kad būti "žvangėjimas -o labas hello.c". Ir jei aš paspauskite Enter, kokia programa tai vyksta produkcijos už mane? Koks failo pavadinimas? Taip, nugaros. Teisingai. "Labas." Taigi "labas" bus programos pavadinimas nes mes naudojamas vadinamasis komandinės eilutės argumentas, kuris yra tik iš keičiant elgseną būdas į faktiškai produkcijos kompiliatorius konkretus failo pavadinimas. Ir iš tiesų, jei aš padidinti , ir ieškoti čia dabar turiu ne tik "a.out" ir "hello.c", bet ir "labas", taip pat. Taigi, dabar aš galiu padaryti "./hello," Enter ". Ir ten "Labas, pasauli". Bet lastly-- ir tai dabar bus konvencija mes naudojame visoje semestras, typically-- yra taip pat galite tiesiog pasakyti "padaryti labas." Ir iš tiesų, tai sakydamas, jis iki iki šiol, nes jis jau egzistuoja. Leiskite man eiti į priekį ir nuimti, su RM komandą, tiek "a.out", - ir sako: "pašalinti reguliariai failo a.out?" Tai tiesiog reiškia, kad tu Ar tikrai norite ištrinti? Aš ruošiuosi pasakyti "taip". Ir tada aš ruošiuosi pašalinti "labas", o ne "hello.c". Aš ruošiuosi pasakyti "taip" aiškiai, bet "y" yra pakankamas, taip pat. Ir dabar pastebėsite, jei aš įrašykite ls--, kuris prisimena, reiškia list-- ji išvardija visus iš mano failus aplanke. Ir iš tiesų, jei aš padidinti , ir pažvelgti į viršų kairėje, patvirtina, kad tai, kas šiame aplanke, net Nors tai ženklinami kaip IDE50 čia o ne Workspace, tai tik "hello.c". Taigi dabar žemyn čia, jei aš do "padaryti labas," Enter dabar matau daug ilgesnį komandą, bet sudėtingesnės komandą, kad vyksta būti naudinga savaites į priekį. Ir dabar galiu pasakyti, "./hello". Taigi leiskite priimti greitai kelionė kai kurių kitų "Linux" komandos. Tada kodėl gi ne mes žengiame žingsnį atgal ir iš tikrųjų pažvelgti C daugiau Apskritai, pereinant nuo nulio C, ir po to sudaryti su išvaizdą pirmo problemos nustatyti C. Gerai. Taigi, aš ruošiuosi eiti į priekį ir tik švarus iki mano darbo vietos su Control-L tik išlaikyti ekraną tvarkingas. Bet tai neturi funkcinės paveikti kitaip. Prisiminkite, kad mes matėme keletas komandos dabar. Taigi mes matėme klingsėti, kurie paprastai jums nereikės atlikti rankiniu būdu nebėra. Mes vietoj naudoti markę. Tačiau mes taip pat matė ls, kuris rodo sąrašas iš mano katalogo failus. O dabar kodėl there-- ten du failai dabar "labas" ir "hello.c". Kodėl yra žvaigždė arba Žvaigždutė po "labas"? Ką reiškia, kad, remiantis apie tai, ką matėme per savaitę vieną? Ką tu manai? Ką žvaigždė reiškia? MARIA: For-- programos "Labas"? DAVID Malan: "Labas *". Taip. O taip? Oi, vykdomąjį. Teisingai. Taip, kad tai reiškia, kad "labas" yra vykdomąjį. Taigi iš tiesų, tai kodėl Galiu padaryti "./hello". Gerai. Taigi, ką dar galiu padaryti čia? Na, it turns out galiu taip pat sukurti katalogus. Taigi leiskite man eiti į priekį ir kurti, Pavyzdžiui, "pset1" katalogas. Ir problema nustatyti specifikacija bus jums daryti būtent tai, todėl jūs neturite prisiminti šiandien. Tačiau "mkdir pset1" atrodo turėti jokios įtakos. Bet vėl, nėra klaidos pranešimas paprastai yra geras dalykas. Taigi, jei aš tipo "ls" now-- Ah, dabar Turiu vykdomąjį failą pavadinimu "Sveiki," C failas, vadinamas "hello.c". Ir tada gale velniop, taip kalbėti, reiškia, kad tai yra katalogas. Taigi iš tiesų, dabar noriu jį atidaryti. Ir aš nemanau, dukart spustelėkite jį, kaip į GUI grafinę aplinką. Aš vietoj pasakyti "cd pset1". Įveskite. Nieko įdomaus, atrodo, turi atsitiko, išskyrus mano mažai eilutę here-- tai Linux būdas priminti man, kur aš esu, tai kas aplankas yra atvira. Tai tiesiog pasakojo, aiškiai o ne grafiškai. Ir jei aš tipo "ls", kodėl aš matau kitą greitai iš karto, ar manote, kai aš sudaryti sąrašą pset1 turinį? MARIA: Jūs tikriausiai neturite nieko ten. DAVID Malan: Taip. Taigi mes turime akivaizdžiai ne sukurta nieko ten nes aš ką tik sukūrėte katalogą. Dabar, jei aš norėjau sukurti file-- Pavyzdžiui, aš galėtų sukurti naują failą. Ir tada aš galėčiau eiti į Išsaugoti ir išsaugokite jį kaip, pavyzdžiui, "mario.c", jei jūs darote standartinis leidimas pset vieną. Ir tada, kaip ir bet Mac arba PC, tiesiog pasirinkti aplanką "pset1, Save. Ir dabar failas yra tuščias. Bet tegul priartinti vėl sekundę. Darom ls čia. Dabar mes matome "mario.c". Taigi ten keletas kitų komandų, kurios yra verta turint omenyje per LAIKĄ_ aišku, ar Valdymo L yra tai, ką aš buvo pataikyti; mkdir mes matėme; rm matėme, o taip pat, kuris yra pašalinimo arba ištrinti failą. Saugokitės galite also-- ir jei peržvelgsite ne interneto samouczków, jums rm-rf yra labai paplitęs būdas pasakyti ištrinti aplanką, kuris turi daiktų į jį. Tiesiog super, super atsargūs. rf reiškia rekursyviai ištrinti, kokia ji yra Jūs bandote ištrinti ir prievarta jį ištrinti. Taigi rekursywny reiškia, jei tai aplankas aplankas su aplanką su aplanke, ištrinti visi iš jų. Ir prievarta reiškia net ne paklausti manęs taip "arba" ne ", aš tikrai? Taigi, tai super pavojingas būdas išbraukiant daug stuff greitai. Bet beware-- pernelyg dažnai daro bebaimis studentas netyčia ištrinti, tarkim, pset vienas, pavyzdžiui. MARIA: Ir jei jie tiesiog padaryti -r, jie ketina paklausti jų apie kiekvieną failą. DAVID Malan: Kuris yra vidutiniškai erzina. MARIA: Taip. DAVID Malan: Štai kodėl tiek daug iš mūsų, savarankiškai įtraukti, esu iš naudojant rf įpročio. Bet tai pavojinga. Taigi pirkėjas beware. Ir tada MV yra natūra Įdomu pavadintas. Taigi tai yra žingsnis komandą, kurie jaučiasi šiek tiek keistai nes jūs iš tiesų gali jį naudoti perkelti failus iš vienos vietos į kitą. Pavyzdžiui, tarkime, kad aš messed up. Tarkime, kad aš sukūriau naujas failas už pset. Ir įrašiau jį kaip "greedy.c". Bet tarkime, aš netyčia jį išsaugoti į IDE50-- todėl pati mano darbo vietos o ne pset1. Jūs galite pamatyti, kiek viršuje kairėje. Yra "greedy.c". Ir ten keli sprendimai. Taigi vienas, galiu naudoti Super patogus būdas tiesiog velkant ir numetant ją. Ir tai iš tikrųjų išspręsti šią problemą. Tačiau šiandien, mes bandome pažvelgti ir paslaptingas, bet galingi būdai tai padaryti. Taigi leiskite man pasinaudoti "ls" į pset1. Ir aš tik skyrelyje "mario.c". Leiskite man eiti į priekį ir daryti "cd ..". Taigi CD kartą yra pokytis katalogas. ".." Reiškia ką nors? Paskutinį kartą sakiau "CD pset1 "eiti į pset1. Taigi, kai aš sakau "cd ..", ką aš darau? Atgal. Taip. Taigi jis ketina vadinamąją tėvų. Eiti vienu lygiu, pavyzdžiui, išeinant iš aplanko. Taigi Enter. Ir iš tiesų, atrodo, ką jis padarė. Jis persikėlė mane tiesiog į darbo vietą, o ne iš į pset1, kuris yra darbo vietos. Ir dabar, jei aš tipo "ls", ten visa krūva daiktų. Ten yra "greedy.c". Taigi dabar leiskite naudoti mv pažodžiui perkelti "greedy.c" į pset1. Ir todėl Linux daug komandas dirbti tiksliai, kaip šis. Jie priima jokių argumentų, arba jie priima vieną argumentas ar jie imasi du komandinės eilutės argumentai ir kt. Ir šiuo atveju, tai tiesiog daryti tai, ką jis sako, nors succinctly-- perkelti greedy.c į pset1. Įveskite. Niekas, atrodo, kad taip atsitiktų. Bet jei aš padaryti ls vėl, godus dingo. Ir jei aš "cd pset1", įveskite, tada Lt vėl, dabar jis yra reikiamoje vietoje. Kaip panaikinti, jei dėl kai reason-- ypač jei turite pertrūkiais tinklo ryšys ar jūs vaikščioti aplink Su bendrabučiu su jūsų nešiojamojo kompiuterio dangtį uždaryti ir tada atidarykite jį ir vėl savo darbo sritį Atrodo šiek tiek out of sync, ne big deal. Tiesiog perkraukite naršyklę langas, ir ji turėtų RESYNC kad kairinis Failų naršyklė atrodo lygiai kaip terminalo lange. Ne verta nerimauti. Jei abejojate, perkraukite puslapį, todėl Tol, kol jūs išsaugojote failus jau. GERAI. Taigi MV taip pat gali būti naudojamas pervadinti failus. Ir tegul pažvelgti Ši galutinė komandų čia. Taigi suppose-- ir tai yra Super bendra, taip pat anksti. Kai kurie studentai kartais sukurti failą vadinamas, tegul say-- kas dar vienas? Kaip "WATER.C". Taigi aš tiesiog klykauti, už jokios priežasties, visų dangteliais. Bet tai nėra teisingas failo vardą jei tik dėl mūsų problema nustatyti specifikacija nebuvo papasakoti išsaugoti failą kaip visos kepurės "WATER.C". Vietoj to, mes tikimės "water.c" mažosiomis raidėmis. Ir, tiesą sakant, tai yra problemiškas, nes check50, programa jūs ketinate susitikti problemos nustatyti vieną, kuri automatiškai testai Jūsų kodas teisingumas ketina klykauti ne jums, jei jis negali rasti "water.c" Visose mažosiomis raidėmis. Taigi man reikia išspręsti šią problemą. Tiek daug skirtingų būdų tai padaryti, iš kurių pirmasis būtų Kontroliuokite paspaudimą arba dešiniuoju pelės klavišu failo pavadinimas ir tiesiog pakeisti Pervardyti. Visiškai gerai padaryti. Bet vėl, šiandien, tegul tai padaryti šiek tiek mėgėjas. Leiskite naudoti mv keisti "WATER.C" į "water.c". Taigi jūs taip pat galite naudoti pirmąjį argumentą pervadinti į antrąjį argumentą, Jei antrasis argumentas yra, kad Faktas, aplanką ar katalogo pavadinimas. Gerai. Ir galiausiai, šiek tiek trick-- todėl aš Mano darbo sritis katalogas metu. Jei aš noriu patekti į pset vieną, Aš tikrai galite įvesti "cd pset1". Bet tai taip varginantis įrašykite "pset1" arba daugiau failų vardai ar pavardės katalogas vis dar. Taigi labai dažnai Linux, kas jūs galite padaryti, tai pradėti rašyti "PSE" ir tiesiog nuobodu, paspauskite "Tab" ir tegul kompiuteris figure it out už jus. Super naudinga gauti į tą įprotį. Tik laimikis, jei turite kelis failus arba aplankus prasidedančios raide "p" arba "PS", jums gali tekti įvesti keli prieš kompiuteris žino, ką daryti. MARIA: Mums patinka nuorodas. DAVID Malan: Šis valia sutaupyti tiek daug laiko. Ir taip pat, kaip mes sakėme į paskaitą, galite gali slinkti aukštyn istorijoje, aukštyn ir žemyn, rasti neseniai įvykdytas komandas, taip pat. Gerai. Taigi dabar, tegul ruožtu mūsų dėmesį atgal į paprastą programą, hello world. Taigi mes sudarė tai tiksliai. O dabar kodėl ne mes čia duomenų tipų žvilgsnis ir tada pereiti nuo kai atitinkantis Scratch blokus C MARIA: awesome. Taigi dabar, kad jūs pradėjote rašyti programas C, mes ketiname pradėti kalbėti apie duomenų tipus ir kintamųjų. Todėl kai kurie duomenų tipai, kad jūs norėtų žinoti jau dabar yra tie, kurie yra pažymėta mėlynai. Taigi, mes turime int pirma, kuris reiškia sveikojo skaičiaus. Ir tai turi sveikieji skaičiai, kaip jums gali turėti guessed-- tiek 1, 2, 3, ir visi kiti sveikieji skaičiai kad jūs galite galvoti. DAVID Malan: Ir taip pat neigiamas. MARIA: Ir taip pat neigiami tie, yep. Ir 0. Tada mes turime plūdes, kurios yra slankiojo kablelio skaičių. Taigi, kad visi realieji skaičiai kad turi dešimtųjų tikslumu. Taigi, 5,0, 5,2, ir dar daugiau skaitmenų po dešimtainio taško, Kaip gerai, o taip pat neigiamą poveikį. Tada mes turime char kuris yra simbolis. Taigi manau, kad mes kalbėjome apie tai paskaitos šiandien. Bet mes turime laiškus, už example-- A, B, C--, kuris gali būti saugomas kaip char. Bet tada mes turime daug daugiau simbolius , kuris gali būti saugomas kaip char. Ir tie, kurie saugomi kaip ASCII. Ir tada mes turime bool, kurie yra loginę. Ir tie, įvertinti, Tiesa ar Klaidinga arba 1 ir 0, atitinkamai. DAVID Malan: Ir priminti, kad bool ateina iš CS50 bibliotekoje. Taigi tai nėra integruotas į C, bet tai super naudinga turėti apie true ir false sąvoką. Ir nors jums gali think-- įdomus faktas. Bool techniškai būtina, kiek bitų, tikrai, atstovauti Tiesa, palyginti su klaidinga? Kiek bitai jūs manote jums reikės, maksimaliai? Taip, tik vieną. Taigi paaiškėja, kad C negali duoti jums tik vieną tiek. Mažiausias matavimo vienetas Jūs galite gauti yra aštuoni. Taigi tai šiek tiek kainuojančio jie esate naudojant visą baitą, ar aštuonis bitus, atstovauti Tiesa ar klaidinga. Bet tai tik būdas tai įgyvendinamos C iki CS50 bibliotekoje. MARIA: Ir tada tie, kad mes nesiruošia kalbėti apie taip plačiai teisė now-- dvigubai, tai didesniems plūdės. Ilgas ilgas ir trumpas Taip pat yra sveiką skaičių. DAVID Malan: Iš tiesų. Be hacker leidimas pset vieną, mes iš tikrųjų naudoti ilgai ilgai. Tačiau standartinis leidimas, ji turėtų būti nėra būtinas. MARIA: cool. GERAI. Taigi operators-- jums turėtų būti tikriausiai, susipažinę su dauguma iš jų. Be to, +; atimtis, -. Dauginti, mes turime *. Taigi ne x, mes paprastai naudoti. Skyrius, turime backslash. Ir modulį yra mūsų paskutinis operatorius, mes ketiname kalbėti apie dabar. Tai operatorius, kuris leidžia mums imtis skaidymo dalį. Taigi, jei mes turime 4%, 2, 4 padalintas iš 2 yra 2 su 0 likusią dalį. Taigi 4% 2 yra 0. 4% 3 yra 1. 4% 5 yra 4, kaip jums gali atspėti. Ir nepamiršti, kai naudojant visi šie operatoriai naudoti PEMDAS taisykles. DAVID Malan: Taigi, kad būtų aišku, jei jus iki 4% 2, kodėl tai, kad 0, tiksliai? MARIA: Kadangi 4, padalytą iš 2 yra 2 su 0 likusią dalį. Taigi modulį suteikia mums tą likusią dalį kaip o ne į skaidantis. DAVID Malan: Ir iš tiesų, ką rasite tai naudinga mes už yra tai, kad kai kurių problemų tai nebūtinai vienas, jei norite turėti poveikis apriboti save į diapazone skaičių kaip 0 per kažką, galite naudoti modulo wrap aplink anksčiau nei kaip 2 mlrd arba 4 mlrd vertė, kuri mes kalbėjo apie paskaitą. MARIA: Taip. Ir net "godus" Galėtume. DAVID Malan: Taip, problema nustatyti vieną, taip pat. MARIA: Taip, gražus. DAVID Malan: Geras patarimas. MARIA: Atsiprašau. Būlio expressions-- taip Būlio operatoriais, mes ketiname kalbėti apie visus iš jų, kad jūs matote čia. Taigi dabar mes turime du Lygios ženklai įrašyti į sąrašą lygių. Taigi tie, kurie palyginimui. Iki šiol, mes tik mačiau vieną lygybės ženklą. Štai tada mes priskirti vertės kintamasis. Taigi, jei mes matėme int n = 5, tada mes priskirti 5 kintamojo n. Bet jei mes norime naudoti == už palyginimas, mes galime patikrinti, ar n == 5. Ir jei n == 5, tai tiesa. Taigi loginius operatorius leidžia mums, iš esmės, įvertinti Būlio išraiškas Tiesa ar klaidinga. Taigi ne equals-- mes turime šauktukas ir lygūs. Taigi mes taip pat galėtų patikrinti, ar n nėra lygi 5-- taip n! = 5. Mažiau nei, mažiau negu arba lygus, didesnis nei, yra didesnis negu arba lygus, ir tada mes turime logiška IR ir logiška ARBA. Ir tie, leidžia mums įvertinti kelis loginius išraiškos kartu kad iš esmės susibūrė vieną visumą Bulio logikos išraiška. Taigi, jei norime rasti skaičių, tarkim, kad yra didesnis už 5, bet mažesnis negu 15 tuo pačiu metu, mes naudoti logiška ir operatorius norėdami pamatyti, jei n yra didesnė nei 5 && n yra mažesnis nei 15. DAVID Malan: Ir čia taip pat, tai tikrai lengva anksti, kad netyčia naudoti tik vieną ampersendo arba vieno vertikali juosta. Ir tikiuosi, kompiliatorių klykauti ne jums, nes jie iš tikrųjų turėti labai skirtingą prasmę. Tiems, smalsu, jie naudojamas Bitinis operacijų, veikia atskirus bitus. Bet jūs norite, kad jų pora čia. Ir super svarbu, kad Pirmasis iš jų, lygybės ženklas, kuri yra lygybė operatorius ne priskyrimo operatorius. MARIA: Ir vertikali juosta yra Įsikūręs tarp ištrinti ir sugrįžti. DAVID Malan: Taip. Apie tipiškas JAV klaviatūros. MARIA: Yep. Taigi leiskite pereiti teisę į sąlyginiai teiginiai. Be nulio, jūs jau matė, greičiausiai, if, kad leidžia jums patikrinti, ar kažkas yra tiesa, tuomet daryti ką nors kita. Taigi jums gali norėjau patikrinti, ar jūsų Sprite yra neliesti kai kurių kitų Sprite arba ekrano sienos. Ir tada jūs galbūt norėjo baigti žaidimą ar daryti ką nors kita. Taigi už tą sintaksę yra ", jei (sąlyga)." Taigi, jei jūsų Sprite liečia kažką, tada padaryti yra viduje garbanotas petnešos. Tada mes turime IF-kitur atskaitomybę. Kita leidžia mums padaryti kažką jei sąlyga, kad mes patikrinti pradžioje tai nėra tiesa. Taigi, jei Sprite prisilietė prie sienos tai padaryti, dar ką nors kita. Taigi kitaip daryti kažką kita. Tada mes turime trumpą pavyzdį tai. Taigi, jei (military_time <12), mes noriu printf "Labas rytas!" Kita mes ketiname printf "Labas vakaras!" Pagrindinė pavyzdys. DAVID Malan: Geras. MARIA: cool. Taigi dabar mes turime jungiklis atskaitomybę. Perjungti pareiškimus apskritai gali leidžia mums padaryti iš to paties dalyko daug kad mes tik kalbėjome apie su if. Pavyzdžiui, dabar mes turime Apskritai forma jungiklis pareiškimą kuri leidžia mums imtis kintamasis vadinamas n ir palyginti su iš partijos skirtingas vertybes, kurios mes čia paragino constant1, CONSTANT2. Mes gali turėti daug daugiau. Ir tie vadinami atvejai. Taigi, jei mes turime pereiti statement-- ir tai veikia tik integers-- turime kintamasis šiuo atveju tai n. Jei kintamasis n yra lygus constant1, mes atliks tam tikrą kodo fragmentą ar kažkas, kad mes norime daryti. Ir tada mes pertrauka. Taigi pertrauka reiškia, kad jungiklis pareiškimas nustos vykdyti, jei n yra lygus constant1, ir tada jūsų programa bus tęsiama. Jis bus išeiti iš pereiti pareiškimą ir jis bus toliau daryti ką nors kita. Tačiau, jeigu n nėra lygi constant1, tada dėklas CONSTANT2 bus tikrinama. Taigi, jei n yra lygus CONSTANT2, ta kita kodo fragmentas bus įvykdytas. Ir tada jis bus pertrauka jei tai yra lygus į jį. Ir tada mes galime turėti also-- nėra nebūtinai, though-- numatytąjį bylą, kuri bus, jei n nėra lygi bet atvejų, kad turite išvardytų. Ir numatytąją atveju, mes taip pat nereikia pertrauką būtinai nes jungiklis pareiškimas bus žinoti kad ji turi baigtis po nutylėjimą atveju, jei tai toks atvejis. DAVID Malan: Bet stilistiškai, mes visada jį ten. MARIA: Taip. DAVID Malan: Taip. Taigi ypač kai pradedate, ypač jei tarp tų mažiau patogus, aš asmeniškai tiesiog rekomenduojame klijuoti su IF ir IFS-elses ir jei-kitur-jei-elses ir tt, jei tik nes jie šiek tiek paprastesnė. Tai gražus optimizavimas, arba kartais net estetiškai ją daro kodas suprantamesnės. Ir iš tiesų, tikriausiai vidurio semestro matysime problema nustatyti, kur jis tiesiog atrodo geriau ir lengviau skaityti apie žmones, naudojant jungiklį pareiškimą. Bet nesijaudinkite Prigludęs tai per anksti. MARIA: Taip. Jei turite daug, jei produktas ataskaitų, jis gali tiesiog negali būti lengvai skaitoma. Jis gali būti labai greitai jums eiti per ją. Taigi pereiti teiginiai gali būti labai naudinga, taip pat. Ir taip pat, nereikia remember-- ne pamiršote įdėti pertraukas ten. DAVID Malan: Nepamenu tai. MARIA: Nes tada jums gali nukristi per iš vienos atveju į kitą. Taigi tarkime, kad byla constant1 neturėjo pertraukos pareiškimą į jį. Tada mes galime patenka per viduje atveju CONSTANT2. Ir mes nenorime daryti, kad jei mes jau pasiekė byla constant1 ir tai, kad n yra lygus. Taigi, pavyzdžiui, jei turime kintamąjį n, kad yra klasės numeris, ir mes norime pamatyti, ką tai klasė is-- jei n yra lygus 50, mes ketiname spausdinti "CS50 yra Įvadas į kompiuterių mokslo I " Tada mes ketiname nutraukti. Štai ir viskas. Tačiau, jeigu n yra lygus iki 51, mes ketiname spausdinti "CS51 yra Įvadas į informatikos II ". Tada vėl, mes ketiname nutraukti. Tačiau, jeigu tada mes įdėti 124, 61, bet kitas numeris, kad galite galvoti apie, arba programa yra nesiruošia pripažinti, kad. Taigi jis ketina pasakyti: "Atsiprašau, aš tikiu, nėra susipažinę su tos klasės. " Ir jis ketina nutraukti. DAVID Malan: Taigi, galite tikrai pamatyti IF, kitur, jei kita idėja čia. Tai tiesiog skirtingi sintaksė išreikšti tą patį idėją. MARIA: Būtent. Dabar mes turime trijų komponentų operatoriams. Taigi trinariai operatoriai trijų parts-- sąlyga, ką daryti, jei kad sąlyga yra teisinga, ir tada kažką daryti Jei ši sąlyga yra klaidinga. Taigi, kaip matote, iš esmės, iš čia, kad sintaksė. Mes turime klaustuką, ir tada the-- ką mes vadiname tai? DAVID Malan: dvitaškis. MARIA: dvitaškis. Ačiū. Atsiprašau. Taigi pažvelkime į mūsų pavyzdžiu pamatyti, jei mes galime padaryti jausmą this-- class_num == 50. Taigi čia mes matome mūsų Būlio operatorius == kad palygina kintama class_num 50. Taigi class_num parduotuvės sveikasis skaičius. Ir jei tai sveikasis skaičius lygi 50, tuomet mes ketina laikyti "Davidas Malan" viduje styginių profesorius. Jei klasės numeris nėra lygus 50, "Dovydas Malan" bus profesorius. DAVID Malan: Ačiū. Ir taip, tai atrodo lygiavertis Ką jūs pasakytumėte, iš pirmo žvilgsnio? MARIA: Man atrodo pavyzdžiui, jei-kitur ataskaitos. DAVID Malan: Taip. Ir iš tiesų, tai yra natūra iš gana vienos linijinės, taip sakant, įgyvendinimo tiksliai logikos, jei-kitur bet viską daro vieną žingsnį. MARIA: Būtent. Taip. Taigi, jei else pareiškimai galėtų užima daug vietos. Jie gali būti per ilgas kažkas taip paprasta, kaip šis. Taigi, tai gali būti labai glaustas ir labai gražus. Taigi dabar mes ketiname pažvelgti į vėl ir vėl vykdyti kažką, taip patikrinti dėl sąlyga kelis kartus ir tada toliau daryti kažką o, kad sąlyga yra teisinga. Taigi, tai duoda mums gražiai į Nors kilpų. Į kairę, mes turime pirmasis mūsų while cikle. Taigi, nors kažkas yra tiesa, vėl ir vėl kažką daryti. Todėl įsitikinkite, kad atkreipti dėmesį, kad mūsų sąlyga čia yra patvirtintas viršuje. Kadangi mūsų antrąjį loop-- mes vadiname kad do-o loop-- mes darome ką nors, tada mes patikrinti, ar būklės. Ir jei ši sąlyga toliau, kad būtų tiesa, mes einame atgal ir padaryti ką dar kartą. Taigi, pagrindinis skirtumas yra, kur sąlyga yra tikrinama dėl. Ir kodas niekada negali būti vykdomas, jei sąlyga yra ne tiesa su while cikle. Kadangi su do-o kilpa, mes turime kodą kuris yra visada atliekamos bent vieną kartą. Ir tada, kai būklė toliau, kad būtų tiesa, galime grįžti ir pakartoti vėl viduje. Taigi, kodėl manote, kad mes būtų naudoti do-while cikle per while cikle? Teisė. Taigi, jei norime, kad tai paskatins vartotojas tam tikrą indėlį rūšiuoti, jei norime paprašyti juos įvesti savo vardą, norime bent paprašyti juos vieną kartą. Ir jei jie įrašyti tas pavadinimas, mes ne ketina juos užduoti vėl nes mes jau žinome. Bet jei jie nerašykite jų pavadinimas arba, jei jie įvesti kažką, kad akivaizdu, kad ne vardas, mes vis dar norime toliau klausia juos už jų vardu. DAVID Malan: Ir paskaitą mes turėjome vieną kaip tai su gauti teigiamą int Pavyzdžiui, kai ten nieko Tikrinti pirmiausia todėl, kad jūs neturite net Dotarłeś int. Taigi, mes norime padaryti this-- gauti iš user-- int tada patikrinkite jį, ko gero, vėl ir vėl ir vėl. MARIA: Būtent. Dėl loops-- OK. Dėl kilpos gali leisti mums daryti beveik lygiai toks pats dalykas, kaip gerai. Tai tikrai lygiai toks pats dalykas. Taigi nėra nieko, kad jūs galite padaryti su už kilpomis kad jūs negalėtų daryti su tuo pačiu kilpų. Bet kilpos gali atrodyti šiek tiek šiek tiek daugiau sudėtinga sintaksiškai nes jie turi trys dalys viduje, kas buvo prieš tik Būklė su tuo pačiu kilpų. Taigi pirmoji dalis, kad jūs jūra, kairės dauguma, turime "INT nykštukai = 0." Taigi, tai yra ten, kur mes inicijuoti mūsų kintamąjį. Tada mes turime kabliataškį ir "nykštukai <7." Taigi, tai yra, kai iš Būklė iš tikrųjų yra. Taigi, kad tai, ką mes turėtume įdėti tik į laiką loop-- "o nykštukai <7." Čia, kad eina į viduryje mūsų už kilpa. Taigi "dwaves <7." Ir tada mūsų paskutinė dalis yra "nykštukai ++" kuris yra kur mes atnaujiname mūsų kintamąjį. Taigi svarbus dalykas suprasti, kad šis ketina eiti per tai už kilpos septynis kartus ir septynis kartus. vykdyti Taigi, mes turime septyni nykštukai, ir jie visi ketinate pasakyti: "Aš čia siekiant padėti jums, Snieguolė " nes jie yra pasirengę padėti Snieguolė. Su tuo pačiu kilpos, mes padarėme iniciacijos ir atnaujinimas ne viduje su sąlyga, dar kartą, tačiau prieš arba viduje, o kilpa įsitikinti, kad we--, nes mes visada reikia tų dalių. Taigi, norint įsitikinti, kad mes turime juos, mes tai jau dar pridūrė juos ant, tik ne viduje skliausteliuose. DAVID Malan: Ir taip jis atrodo like-- Paskaitoje, pavyzdžiui, Aš beveik visada naudoti, pavyzdžiui, i ir n ir gana nuobodu kintamieji. Atrodo, galite naudoti daugiau gudriai pavadintas kintamuosius, taip pat. MARIA: Taip, tai tikrai labai gražus naudoti šiek tiek daugiau aprašomųjų kintamuosius nes ypač jei kažkas yra skaityti jūsų code-- gal esate rūšiuotojas arba jei esate bendradarbiauja su somebody-- Jūs norite įsitikinti, kad jie suprasti, ką jūs darote. GERAI. Taigi tai yra kažkas labai funky-- už kilpos viduje už linijos. Aš nežinau, jei mes matėme anksčiau. Tikriausiai ne. Bet mes iš tikrųjų gali turėti this-- taip kilpų vietoj kilpų. Taigi ar kas nors nori gal vaikščioti man per tai, kas vyksta čia? DAVID Malan: Imsiu Pabandyti. MARIA: cool. DAVID Malan: Gerai. Taigi, spoiler-- norime spausdinti stuff tai apatiniame dešiniajame kampe ten. MARIA: Teisė. Taip taip. DAVID Malan: Taigi mes tiesiog įdėti, kad mėginio produkcija ten. Taigi aš galiu numanyti iš Viršutinis kilpa, kad esate Iteracja per eilėmis į atokiausiuose kilpa, taip sakant. Ir jūs Iteracja per kolonos su slapčiausias kilpa. Ir intuityviai, tai turėtų tikiuosi prasmę nes pagal savo pobūdį iš kiekviena programa mes matėme anksčiau, printf, kuris yra funkcija mes naudojame, galiausiai, turi galimybę spausdinti stuff iš esmės eilutė po eilutės. Kaip, kai jūs išvedamas nauja eilutė, ten ne dvigubai atgal ir spausdinti kažką didesnis ekrano, bent jau nenaudojate printf, kaip šis. Ir taip šiuo klausimu ji daro ta prasme, kad atokiausiuose kilpa turėtų būti nuoroda į eilių nes kiekviena suteikta eilutė, jūs ketinate norite spausdinti xxxxx, ir tada pereiti į kitą eilutę, xxxxx. Taigi eilutės atėjai, pirmas. Ir tada per kiekvieną eilutė, jums spausdinti stulpelius. Jei bandėte tai padaryti, kad atvirkščiai, jis tikriausiai nebūtų išeiti, kaip jūs ketinate. MARIA: Taip. Mes tiesiog negalėjo grįžti į ankstesnė eilutė su printf. DAVID Malan: Ir kas įdomu už šiandienos čate apie taikymo sritį, tikrųjų, yra ta, kad eilė yra tarpinis junginys kad manimi deklaruotas viršutinis kilpa. Bet pranešimas, kad jis yra vis dar viduje, taip sakant, garbanotieji petnešų, kad iš karto po, nors tai nėra techniškai per tas garbanotas petnešos. Taigi eilutė apimties už visuma kodo fragmentą, tiek viduje už linijos, išorinės ir viduje, kad vidinis už kilpos. Bet priešingai, kur yra stulpelis taikymo sritį? Kintamasis stulpelis? Taip, tik viduje kilpa. Ir tai viskas OK, nes mes neturime prieigos tai ne jos garbanotas petnešos. Visi mes darome, yra spausdinti iš naujo linija pačiame gale ten. Taigi, kad iš tiesų yra OK. Taigi tai turi įtakos, atrodo, daro trys eilutes ir stulpelius keturi. MARIA: Teisė. Taigi, pirmiausia mes einame per mūsų pirmoje eilėje. Ir tik mūsų pirmoje eilutėje, mes darome keturi stulpeliai viduje pirmoje eilėje. Taigi, mes atsispausdinti keturis X-aisiais. Ir tada mes galime išeiti už kilpos, nes mes jau išspausdinti keturi X-aisiais. Ir mes spausdinti naują eilutę. Ir tada mes eiti per pats procesas dar dvi eiles padaryti trijų iš viso. DAVID Malan: Ir tai verta paminėti, kad tai tik šrifto artefaktas, tai kad mėginio rezultatų atrodo tiek daug aukštesni, kaip nors daugiau eilutės, nei stulpelių. Bet tai tik todėl, kad X yra aukštesni, nei ji yra plati. Štai visa tai, kas vyksta ten, plius baltas tarpas tarp eilučių. MARIA: Teisė. Kietas. DAVID Malan: Visos dešinę. Taigi Žvilgsnis problema nustatyti vieną, imtis bet kokių klausimų, tada atidėti? Gerai. Taigi problema nustatyti vieną, yra trys pirminiai sunkumai galiausiai. Bet pirmiausia, rasite kad problema nustatyti specifikacija, kaip ir daugeliui psets šį rudenį, ketina vaikščioti per keletą apšilimo pratimų, atkreipti jus keletą išteklius kad jums gali arba ne mačiau jau. Pavyzdžiui, CS50 turi šortai komplektą, kurie yra trumpi filmai, ne kitaip, tačiau, kad yra labai rodymas specific-- gal penkias minutes, 10 minučių ilgio ant vyrių arba sąlygomis arba algoritmai ar vėliau daugiau Išplėstinė temos, taip pat. Ir mes paprastai įdėti tiems į problemą rinkiniai taip, kad studentai turėti išteklių, su kuriuo peržiūrėti medžiagą, kuri gali turėti jau sugalvoti paskaitos ar skyriuje. Bet tai, kaip jis daugiau dėmesio ir daugiau ne jų ranka. Mes taip pat linkę dėti į problemą nustato dalykus, vadinamus Walkthroughs. Taigi beveik visi iš pavyzdžių darau į paskaitą, scenoje čia, mes taip pat jau nufilmuotas kamera iš anksto labiau lėčiau, daugiau intymūs Walkthrough mane ant mano nešiojamas šio kodekso, eilutė po eilutės taip, kad klasėje, mes dažnai nugriebti per ką nors ar kažkas bus interject su atsakyti į klausimą. Bet tai nebūtinai kriaukle į už visiems žiūrovams. Taigi jūs rasite kodo walkthroughs dauguma iš pavyzdžių kad mes čia paskaitą, kad jūs gali vaikščioti per ją savo tempu ir atgal arba pirmyn arba praleisti apskritai, jei norite. Dažnai yra keletas Įšilimo klausimai, paprašys jūsų rūšiuoti sustiprinti šią medžiagą ir įsitikinkite, kad esate Nežiūriu prieš tęsdami su pset poilsio. Ir tada, žinoma, ten pati pset. Ir vienas iš dalykų, mes labai sąmoningai daryti CS50 yra beveik kas neįdomu ar intelektualiai neįdomu mechaninis veiksmas, jums gali tekti padaryti beveik visada yra labai gerai pagrįsta dokumentais. Per terminą, žinoma, mes pradėti užduoti daugiau retorinius klausimus kaip prisiminti, kaip ta ar kita daryti? Bet apskritai, jūs rasite kad problema rinkiniai jums per mechanika kažkas, kad įdomių, intelektinės iššūkius galiausiai paliko jums studentas. Turint tai sakė, Zamyla, kuriam mes nuolat kalbama šiandien paskaitos yra vienas iš mūsų ilgametis darbuotojų narys, kuris taip pat turi walkthroughs dėl konkrečių problemų, pavyzdžiui, Mario pset ir gobšus, nors ir ne laistyti šiemet. Ir tai tiems, Walkthroughs, kad ji dažnai siūlo keletą patarimų ir gudrybės kaip elgtis, niekada, sakau jums ką daryti, bet rather-- kaip sąlyga, jei will-- suteikiant Jums bent pora idėjų, kad jis iki jums, galiausiai nuspręsti, Kaip užmegzti su jais. MARIA: Rūšiuoti kaip aukšto lygio supratimą apie logika, kas mes prašome jus padaryti. DAVID Malan: Būtent. Ir, tiesą sakant, Zamyla s Walkthroughs yra skirtas atsakyti į dažnai užduodamas klausimas, iš kur man prasidėjo, ypač kai Šie ilgi specifikacijos šiek tiek varginantis suteikta visa tekstą ir vaizdus, ​​kad jie turi į juos. Taigi water.c, rasite po to, kai baigsite jį, iš tiesų yra gana paprasta. Absoliučiai yra krūva iš ketinate bang savo galvas nuo sienos bando išsiaiškinti, kodėl tai nėra sudarant arba kodėl jis neveikia tinkamai. Bet kai baigsite su juo ir kai jūs praleido šiek tiek laiko imtynių su bet iš klaidų, kad jūs galite turėti, Jūs pamatysite, kad tai labai trumpas programa. Tai gali būti padaryta tik keletas eilučių kodo, kurių dauguma mes matėme čia, paskaitos jau jei jums surinkti reikiamus blokus. Ir kaip mes rekomenduojame čia jis ketina prašyti galite nurodyti, kiek minučių kažkas atsižvelgiant miesteliu dušas. Mes nurodyti problemos nustatyti vandens srautas normą į, pavyzdžiui, mažo srauto dušo kabina galva, panašiai kaip Seinfeld klipą mes matėme vakar arba priešinga jo. Ir tada jums tereikia padaryti šiek tiek matematikos, really-- aritmetiką naudojant C pasakyti mums kiek, maždaug, buteliai vandens yra tai, kad lygiavertis, jei mes atsižvelgiant N-minučių dušas. Dabar, mario.c, tai vyksta būti šiek tiek ilgesnis programa. Jis vis dar nesiruošia būti tai ilgai. Vos už kelių linijų ilgiau nei water.c. Bet tai bus proga atkurti senąją mokyklą Mario piramidė iš Super Mario Broliai arba kai ant tolesnio maitinimo. Jis nesiruošia atrodo kaip gražiau arba kaip spalvinga, kaip kad vienas ten. Užtenka tik ketinate naudoti mažai žymas su grotelėmis kaip čia turime ekrane naudojant ASCII teksto. Bet tai bus suderinti tą pačią idėją. Ir jis ketina būti pasinaudoti, kad iš pirmo žvilgsnio atrodo gana simple-- tik spausdinti paprastą piramidę. Bet yra pora savybės kad čia yra įdomu. Atkreipkite dėmesį, kad labiausiai į dešinę nutolusį kraštą piramidės iš tikrųjų turi plotis du. Taigi ten dvi lygias aukštis kolonos, kurios todėl reikalauja šiek tiek tiek minties, kad kad jūs gaunate, kad visiškai teisus, nes ne tik puikiai kampu linija. Taigi, kad iš kampinio atveju tiek bet atitinka faktinį žaidimą. Ir tai taip pat neakivaizdus ne pirmas žvilgsnis, kaip spausdinti tarpą. Taigi, kai aš pažvelgti į pavyzdys produkcijos here-- ir tai taip pat į tai spec-- rūšies atrodo stačiakampio, bet įstrižainės iš stačiakampis buvo kapotų išjungti, ir tai tik baltos erdvės, taip sakant. Ir taip dažnai užduodamus Čia kyla klausimas, visada gerai, kaip man perkelti žymas su grotelėmis daugiau į dešinę? Arba kaip man atspausdinti tarpų? Ir tai tikrai lengviau nei dauguma studentų manote. Teisė? Jūs galite suderinti ją vizualiai tiesiog pataikyti tarpo vieną ar du kartus arba tris kartus. Ir todėl, nors su printf mes beveik visada atsispausdinti eilutę arba int arba kaip "labas žodis pasaulis "ar seriją iš žodžių, Taip pat galite tiesiog atsispausdinti citata, erdvė, citatos pabaiga. Ir tai tikrai bus suteikti Jūs baltas tarpas ten. Taigi keep that in mind ir nereikia overthink tai. Jūs tikrai turite nuspręsti eilėje esančią eilutę, ne kitaip jūsų pavyzdžiui, akimirka prieš kiek tie stulpeliai turi būti balti tarpai ir kiek jų turėtų būti Žymos su grotelėmis. Tai užtruks šiek tiek laiko, bet tai galiausiai logika dėlionė nekaip. MARIA: Taip. Bet vyksta eilėje eilės logika bus labai naudingas. DAVID Malan: Taip. Manau, kad mėginio kodą galite gave-- net nors tai buvo ne visa programa. Jums vis dar reikia int ir pagrindinis negaliojančiu ir #include stdio.h, Atsisakius paskaitos daug dalykų. Bet blokai Atrodo, kad ten. Ir tada galiausiai yra kažkas šiek tiek daugiau algoritminės. Taigi paaiškėja, kad bet kuriuo metu galite eiti į CVS ar savitarnos parduotuvė ir kažkas rankas jus ne kasos sąskaitas ar monetų, kaip pokyčių, paaiškėja, kad jie, žmonės, ar jie žino, ar ne, tikriausiai naudojate kas vadinamas godus algoritmas, kuriuo, jei esate skolingas, tarkim, $ 21 į pokyčius, nes dėl tam tikrų priežasčių pirkote kažką labai nebrangiai su labai dideliu sąskaitai CVS, tai būtų tikrai erzina, jei kasininkas padovanojo tau 21 singlų, arba blogiau dar visai daug monetų. Atvirkščiai, kas protingas asmuo yra tikriausiai ketina padaryti, tai jie ketina patraukti $ 20 ir tada $ 1-sąskaitą, ir jums ranka tik dvi sąskaitas tokiu atveju. MARIA: Taigi jie siekia sumažinti pokytis, kad jie su jumis. DAVID Malan: Būtent. Ir pats susidoroti su monetos, taip pat. Jei esate skolingas, tarkim, $ 0.50 Tikimės, kad jūs nenorite 50 centus. Jūs vietoj nori du ketvirtadaliai, pavyzdžiui. Dabar, tai daro prielaidą, kad kasininkas turi pakankamai kiekvieno nominalo kad jis ar ji gali norėti suteikti jums. Bet mes leidžia daryti prielaidą, kiek į problemą. Ir tikslas, galų gale, yra įgyvendinti C kodas gobšus algoritmą. Todėl vartotojas yra leidžiama įveskite kiek keisti jis arba ji yra skolinga su doleriais ir centų, kai slankiojo kablelio natūra vertė tikriausiai. Ir tada jūs turite padaryti matematikos ir išsiaiškinti algoritmiškai, gerai, kiek monetų galiu duoti Jūs minimaliai duoti jums tiksliai, kad pokyčio suma. Bet ten ketina būti Keletas Tricky dalys čia, tiesa? Kaip ten visa netikslumas problema. MARIA: Būtent. Taigi slankaus kablelio vertės turi netikslumų. Ar mes kalbame apie tai paskaitą šiandien? DAVID Malan: mes padarėme Paskutinį kartą į paskaitą. Mes kalbėjome apie netikslumų. Ir jūs nenorite apgauti vartotoją kiek pakeitimas jis arba ji yra skolinga. Ir taip žingsnis po žingsnio, ir problema nustatyti specifikacija, apgalvoti, galiausiai dėl to, kaip galima sumažinti tų netikslumas klaidų, potencialiai. Tai galima išvengti, žinoma, už įėjimai mes kalbame apie. Ir, tiesą sakant, pennies-- gal mes atidėti iki Zamyla, Manau, ten triukų. Taigi galiausiai, jums rasti progresavimas problemas šią savaitę, kurio pirmasis yra gana mažas, tada terpė, tada šiek tiek didesnis. Bet visi iš jų naudoti pastatą blokai nuo šio praeitą savaitę, iš šio supersection, problema nustatyti specifikacija kelia jums daugybę išteklių. Bet vis tiek, jei ne visi kovoja, ypač tarp tų, kurie mažiau patogūs be išankstinio fone, ateiti į darbo valandų pirmadienį ir antradienį ir Trečiadienį ir ketvirtadienį. Eiti į CS50 Aptarkite per Kursas tinklapyje, per kurį galite kalbėtis su darbuotojais ir klasiokų. Bet galiausiai, manau, geriausias patarimas yra tiesiog pradėti anksti. Tai ne klasės natūra, kad jums Reikėtų pradėti psets trečiadienį naktį, arba, dar blogiau Ketvirtadienio naktį. MARIA: Mano geriausias patarimas yra , kad pradėtas pirmadienį. DAVID Malan: pirmadienį. Taigi, jei jūs dar nepradėjo already-- Nr. Bet net jei nėra Pirmadienis, tada antradienį. Kuo anksčiau, tuo geriau. Ir tai priežastis, Žinoma tiek daug vėlai dienomis duoti jums šiek tiek psichologinio spaudimo pradėti anksčiau, bet vis dar tegul viskas slydimo, kai viskas trunka ilgiau nei tikitės. MARIA: ir norite pasinaudoti Darbo valandos, kiek, kaip jūs galite, taip pat. DAVID Malan: Turite klausimų? Gerai. Na, kodėl ne mes atidėti čia?