>> [Predvajanja glasbe]
>> DAVID Malan V redu.
Dobrodošel nazaj.
To je CS50, in to En teden, nadaljuje.
Torej, eden od razlogov, da smo že potekata okoli tehnologij, kot so
Google Glass je, da prihajajo z nekaj, kar je znano kot API,
Application Programming Interface.
In kaj to pomeni, je, da s pravica datoteke in z desno
dokumentacijo, lahko dejansko napisati Programska oprema za celo naprav, kot ti.
>> Pa kaj imamo v mislih proti semestre konec je, če projekt
vključujejo, pravijo, Google Glass morda Pritožba, bomo videli, kaj lahko storimo v
Pogoji vas pečal z nekaterimi loaner strojne opreme, kot tudi
javno dostopen API, tako da lahko dejansko začeli ustvarjanje programske opreme
ki deluje na isti Google Glass.
>> Še ena naprava, ki smo bili igranje s pozno, da smo mislili, da bi lahko
zabava ob koncu semestra je ta mala stvar tukaj.
To se imenuje Leap Predlog, in kaj ste nadeja je tehnično
oglas za napravo, vendar ne govori, kaj to zlasti
Naprava lahko.
In to tudi, prihaja z API preko ki jo lahko napisati programsko opremo za
nadzor svoj računalnik na način, zelo všeč ta enominutni film tukaj.
>> [Predvajanje videa]
>> [END predvajanje videa]
>> Torej, zdaj, ta naprava se zgodi, da se izvaja kot majhen USB
priključek, ki ga lahko priključite na vaš računalnik, ampak jaz ne bi bil presenečen
če se pred dolgo bomo imeli te vrste tehnologije v naslednje serije računalnikov
in Mac, tako da lahko res, interakcijo z njim v
način, kot je ta.
V bistvu, kaj sem mislil, da sem naredil, kar je prav Sem potegnil malo demonstracijo
Program, ki pride s to programsko opremo.
Tako sem dal malo senzor pred mojim laptop.
>> In kot vidite, je to že uresničuje da je moja roka ni
njeno upravljanje.
In vse to vlogo pa je Gladko malo stvari, kot je ta.
Vendar pa lahko vidite, da je res, Imam pet prstov tam.
Če bomo dobili to storiti vse 10, si lahko predstavljate čeden klavir
uporaba ali podobno.
Torej, če želite, da bi prišli do po pouku danes in play s tem kot
No, ste dobrodošli.
Torej, več o tem proti koncu semester.
>> Torej nekaj upravno obvestila.
Ena, to poglavje, ki ga ta petek opoldne na cs60.net/section.
To je URL na tečaj je domača stran tudi.
V tem času, čeprav supersections bo prvi nastop to nedeljo.
Supersections so enkratna stvar, saj nam traja nekaj časa za delo
kdo je v kateri sekciji in kje.
>> Torej tega prihaja v nedeljo, bom tam ena oddelek za tiste manj udoben,
en del za tiste, bolj udobno.
In tiste, ki ste nekje v med, so dobrodošli, da gre za
ali oba ali pa tudi ne.
Oboje bo posnet.
Oni bodo v večji dvorani kot odsek je običajno noter
Ampak cilj tukaj je za vas opremili z nekateri udobje s problemom iz enega,
s C, s CS50 aparata, s tem vikend, še preden ste izvedeli vaše
formalna naloga oddelek.
Tako da boste izpolnjujejo vaše TF in tvoj manjši Skupina sectionmates v približno
čez en teden.
>> Uradne ure, medtem, so dogaja.
Naredite izkoristite njih nocoj ali jutri zvečer, če bi želeli.
Problem set 0 zapade v petek.
To je dan kasneje kot redno, predvidoma četrtek.
Ampak s problematičnega 1 setu boste videli da vključuje nekatere ogrevanjem
vaje, s katerimi si sami lahko razširite
Četrtek rok do petka.
Problem sklop 1, medtem, bo prvenec na spletni strani seveda je to prihajajočem
Petek, če želite, da curl z je, kot sem nekoč konec
Petek zvečer v svoji sobi.
>> Torej cs50.net/appliance je kraj, kjer lahko dobite CS50 aparat
da smo začeli uporabljati v ponedeljek.
Uporabili jo bomo malo več danes.
Pa prepričani, da problem iz 1 Specifikacija vas bo vodil skozi
natančneje koraki boste morali da bi dobili, da je gor in teče.
Torej, ne skrbite o tem, da je pred Pset 1, če raje ne bi.
>> Vse je v redu.
Tako smo pogledal v ponedeljek ob izvorne kode, vendar v okviru novo
programskega jezika, in sicer C in C, za razliko od nič, ni grafična.
To ni koščke.
To je bolj angleški podobno sintakso.
In tam je par korakov v dejansko pisanje in vodenje
program C, saj poleg vira kodo, kot je ta, boste potrebovali nekaj
imenovan prevajalnik.
In v smislu navadnega je, kaj ne prevajalnik naredi za nas?
Ja.
>> ŠTUDENT: pretvarja kodo da pišete, da 0s in 1s.
>> DAVID Malan: Dobro.
Tako da pretvori kodo, ki pišemo, da 0s in 1s.
Jo pretvori tako imenovano izvorno kodo kodi, so slednji izgleda
Malo kaj takega.
In to je vaš CPU, možgani zunanjost računalnik, ki zaradi
ljudje, ki so ustvarili te računalnike, veš, kaj te sekvence
v 0s in 1s povprečja.
>> Morda to pomeni tisk.
Morda to pomeni dodatek.
Morda to pomeni odštevanje.
Morda to pomeni, da prikaže sliko.
Tam so vnaprej določene vzorce bitov da se je svet odločil pomeni
nekatere stvari.
Toda za večino del v tem letu, bomo delo na višji ravni, in
bomo samoumevno, da obstaja stvari, kot so prevajalniki, ki lahko
da bi naše delovanje izvorno kodo na način želimo.
>> Torej programu smo pisali prvi zadnji teden nato pa je začela vrata, tako da
govorijo, da je to mimo C Ponedeljek, je bilo to.
Ko kliknete zelena zastava, pozdravi.
To je seveda napisana v nič.
In jaz sem trdil, da je enakovreden Program v C pogledal malo
kaj takega.
>> Torej, kaj sem mislil, da bi naredil, sprva je, dajmo draži narazen, kar izgleda na prvi
pogled Res je, kot je dokaj skrivnostno sintakso, vendar boste začeli opažati
precej hitro vzorci.
Kaj bomo storiti tudi danes, je zagotovila ste z duševno model za nekatere
kanonično, nekaj standardnih konstrukti pri programiranju.
In potem bomo dejansko dobili naše roke umazan z nekaterimi primeri, kot tudi.
>> Torej za tiste, ki ste bolj udobno, Zavedam se, da ta teden, nato pa naslednja
teden, se lahko zelo dobro biti malo pregleda.
Ampak, še posebej, če izdaja heker problema sklop 1 gre na
Spletna stran tečajnega v petek, mislim boste ugotovili, da tudi, ko izpolnijo
nekateri nedokončani v naslednjem tednu ali dveh, boste začeli, da bi dobili vse bolj
izpodbija in se srečujejo Nove in novejše stvari.
>> Torej, kaj je nagajal ta program narazen nekaj vrstic hkrati.
Na samem vrhu, imamo kaj strokovno imenujemo
preprocesor direktiva.
To je samo vrstico kode, ki pravi, vključiti vsebino datoteke,
imenovane standardne I / N, standardni vhod - ali pa, žal, Standard I / O, standardno
vhodno / izhodne. h, v notranjosti v svojem programu.
>> Torej, z drugimi besedami, če sem to napisal Program s preprostim urejevalnikom besedila, kot so
gedit, enostavnejša ekvivalent nekaj podobnega Microsoft Word, da
navodilo, # include stdio.h, je samo bo povedal prevajalnik, zgrabi
Vsebina te druge datoteke, stdio.h, in jih prilepite tukaj.
>> Zdaj, zakaj me briga?
Kaj pa trdimo, se znotraj te datoteke imenovano stdio.h, ki je shranjena
nekje na mojem trdem disku, ali v tem primera, nekje v CS50 aparata?
Nekdo drug ga tam za mene.
Toda kaj je v njej?
>> Ja, tako da je izjava o kličemo funkcijo printf.
Torej printf opozarja, da je funkcija prikazovalniki besed in znakov ter
Številke na zaslonu na mojo ponudbo.
Ampak nisem napisal.
CS50 nisem napisal.
Nekdo pred leti ga je napisal, in v bistvu nam je dal recept za njo
v datoteki z imenom stdio.h.
Tako, da v prvi vrstici samo mi daje dostop do funkcij, ki jih nekdo drug
napisal pred leti, med ki so printf.
>> Zdaj, naslednji vrstici bom pomahati moj roko na, vsaj do naslednjega tedna.
Ampak za zdaj, vedo, da int main (void) je v bistvu ustreza tem
rumena puzzle piece, ko kliknili zelena zastava.
Svet je pred leti odločila, da če pišete program
jezik se imenuje C, začnete vaš program z linijo
, ki je videti tako.
V skoraj enem tednu, se bo lahko občutek, kaj int je, kaj je nična.
Ampak za zdaj, samo pomislim kot to rumeno koščka sestavljanke.
>> Zdaj naslednji korak, imamo skodrane oklepaja sledi z drugo tesno zavitih naramnicami,
tako govoriti.
In bomo videli ta celotni programi v C, kot tudi
JavaScript in PHP.
In to samo zaobjeti povezane vrstice kode.
Odprta kodrasti naramnicami bistvu pravi, prihaja del kode.
In zaprt kodrasti naramnicami, ki je nagnjen v drugo smer, tako
pomeni, da je za ustrezno oznako.
>> Torej sočno linija v ta prvi Program je zadnji, printf,
quote-konec citata, zdravo svet.
In sem poklical stvar med citati, kaj zadnjem času?
Tako da je niz.
In niz je samo techie izraz za zaporedje
znakov, beseda, stavek.
Tudi sam pismo bi lahko se dvakrat citiral.
Ampak to je zaporedje nič ali več znakov.
>> Nagibnica-n, čeprav je videti malo čudno.
Ampak to preprosto pomenilo nekaj preprosto z računalnikom.
Kaj je Nagibnica-n?
Nova linija.
Tako, da je samo posebna zaporedje znaki, da se je svet odločil,
sredstvo dal prelom vrstice tam, ker bo prevajalnik dejansko dobili
zmeden, običajno, če ste, zelo Razumljivo je, a je nepravilno, samo
začetek pritisnemo Enter, da dajo Nove linije v kodi.
Moraš biti malo bolj Izrecno z backslash-n.
>> In bomo videli, da je nekaj drugega kot Vzorci za posebne znake.
Na primer, če si hotel, da pustite, da vam misel sprehaja do kota primeru,
Predvidevam, da sem želel natisniti dvojni narekovaj na zaslonu
ne glede na razlog, da se zdi, da biti malo problematično, kajne?
Ker če sem dal dvojni narekovaj v Sredi "Zdravo, svet", iz kakršnega koli
Razlog, zakaj se zdi, da potencialno problematično?
To prekine niz.
>> Prevajalnik je le program.
Program kot prevajalnik je le, da bo brati svojo kodo vrha do dna,
z leve proti desni.
In če vidi tri dvojne narekovaje, namesto dveh, to ne bo vedel
če misliš, da je stvar levo mora biti niz ali stvar
desno, ali stvar.
To je dvoumen, in kaj tipično prevajalnik bi storiti, je le zmešana,
in vam nekaj sporočilo o napaki, in da se ukvarjajo s tem problemom.
>> Torej, saj nagibnica-n pomeni nov linija, kaj bi svojim instinktom zdaj
začeti se, če si hotel, da vključuje kaj nenavadno, kot dvojna
citiram notranjost to drugače, citirano niz?
Nagibnica-dvojni narekovaj.
In zato bomo to videli vrsta vzorca preveč.
>> Če želite narediti nekaj malega Čudno, boste ugotovili, da
rešitve pogosto sledijo vzorcu, in Nagibnica
označuje ubežnega.
In to samo pomeni nekaj posebnega da moramo za zastopanje v
drugačen način.
Kot je za kako si predstavljajo poševnica nazaj, no, bomo
prišel nazaj na to.
Ampak odgovor, preveč, je pravzaprav bit očitna.
>> Torej, kaj je zdaj uvesti nekatere druge programski konstrukti
ki si ga videl v nič.
Verjetno ste že samoumevno že če ste že vrgli
Problem nastavite na 0.
Ampak kaj je zdaj predstavil sintakse v C Za te sicer precej intuitivno
ideje, vsaj nekateri izmed njih.
>> Tako da je ta pojem pogoj ali podružnica, ker je prej smo
je predstavljal s kodo, ki je preučevala tako na levi strani v nič -
Če je X manj kot y, nato pa reči, da -
Namesto zdaj v C - Naj Brus v na najenostavnejši -
bomo enostavno rekli, če je tako, da odprete oklepaj, kar je res -
Logični izraz bo šel kjer sem rekel pogoj -
zapri oklepaj, nato pa kaj znotraj teh zavitih oklepajih.
>> Torej tudi tu so zavite oklepaje so nekako kot Scratch je
U oblike sestavljanke kosov.
Ali kaj je v teh zavitih oklepajih.
V tem primeru, poševnica poševnica.
In to obvestilo je naprej poševnica, ne poševnico nazaj.
Poševnica, poševnica, za tiste, ki ste programirani
prej, samo pomeni -
to je samo komentar.
Komentar ni vrstica kode, samo po sebi.
To je linija angleškem jeziku, ki ga, ljudi, so napisali, da sami
Morda vas spomnil, da narediš nekaj, da razložiti, da si, da pojasni, da
nekdo drug, kaj je tvoj koda počne.
To je samo opisno comment.
>> Zdaj, seveda, lahko imamo dvosmerni odcepu samo s tem,
tristezni vilice v cestnem prometu, ki jih počne to, in če še to
vzorec, lahko imate štirih smereh, petsmerni, šest-way vilice na cesti, če
kar potrebujete za ravnanje, res, da številni pogoji.
In potem opazili podobnost tukaj -
if (pogoj), if (pogoj), in edini, ki je malo
Čudno je zadnji, ki je prav, da drug.
Toda tudi to je identična, konceptualno, da tisto, kar smo naredili
že bo, čeprav sintaksa traja malo privajanje.
>> Zdaj, v tem primeru obstaja kakšno drugo čudno sintakso.
Printf spet vidimo, odprto oklepajev, in blizu oklepaj.
In notranjost je kotirajo niz.
Oklepajih, v okviru od printf, pojdite na levo
in desno od česa?
Kaj bomo opisali, ki kotirajo Niz bolj na splošno?
>> Torej je trditev.
Vsak čas imate funkcijo, kot printf, nato pa odprt paren in
zapri paren in nekaj znotraj to, ali je niz, ali
celo, ali karkoli drugega, kar v Med te se oklepaje se imenuje
argument.
>> In argument samo vpliva vedenje funkcija je.
V tem primeru, je bilo precej jasno, kako.
x <y, kaj se je sprejet, takorekoč kot argument.
In printf bo natisnete točno to.
Ker je zagotovo pred leti se oseba ki izvajajo printf imel pojma
kaj smo človekovih nasledniki so bili bo printf uporabiti za.
Tako, da je razlog, zakaj obstajajo argumenti, da vplivati ​​na vedenje potem funkcija je
bila napisana.
>> Sedaj Logični izraz.
Videli smo jih, preden v nič.
Izkazalo se je, v C lahko tudi "ali" jih skupaj, tako rekoč.
Dve vertikalne palice, ta blok kode, je to to, bo
izvrši, če prvi pogoj izpolnjen ali drugi pogoj je res.
In čeprav morda niste storili to v nič, bi lahko dejansko
to storiti v nič, lahko pa tudi izraziti sebe drugače -
če prvi pogoj in drugi pogoj je to res, potem to, kar je
Notranjost v zavite oklepaje.
>> In prav tako razveljavilo, zato je Znak za dvojno in dvojno
navpičnica, bomo sčasoma videli da ena navpična vrstica in
Znak za eno dejansko imajo drugačen kar pomeni v C. Torej za zdaj,
podvajanju simbolov namerna.
>> Torej, kaj je uvedla, na kratko, ta druga malo sintakse.
To ne povsem prenesejo na Praske, vendar trdim, da sem lahko
izvajanje pojma, če drugega, če drugje, če drugega, če drug izjavo z
nekaj, kar se imenuje stikalo izjavo.
In edini razlog, da to res obstaja je samo vam, programer,
nekoliko drugačen način reševanja nekaterih Problem, čeprav je logično
vam ne daje nobenih novih zmogljivosti.
>> S tem mislim na to.
Ko rečeš stikalo, nato pa prostor, in par oklepajih, znotraj
ki gre izraz -
in to je lahko malo neočiten na prvi, ampak to ni argument,
tehnično, ker stikalo ne deluje.
Torej za zdaj, le domnevati, da smo z oklepaje v različnih krajih
iz različnih razlogov.
>> Torej vklop izražanja pomeni, da sem lahko čaka spremenljivo notranjost tistih
oklepajev, kjer piše izražanja.
In potem, če je ta spremenljivka -
Predvidevam, da se imenuje x in to je samo celo število -
Jaz lahko nato določi v mojem slide Tukaj je nekaj takega.
Če je x moja spremenljivka, in jaz želijo narediti nekaj, če je x
enak 1, ne morem storiti tega.
>> Če bi namesto tega želijo narediti nekaj če je x 2, lahko to storim.
Drugega, če želim narediti nekaj drugega celoti, lahko imajo privzeto primera
čemer sem naredil to drugo stvar.
Torej, v tem smislu, da je enakovreden če je x enak enak 1, pa če drugega,
vendar sem omenil to zdaj samo zato, ker Bomo še videli.
Ampak za zdaj, samo vem, da obstaja.
>> Vse je v redu.
Torej ti zadnji par so malo bolj kompleks na prvi pogled, vendar pa
nekaj precej enostavno.
Zanka v C je kos kode, ki Samo še nekaj stori in
znova in znova.
In samo nadležna stvar je, da je, da je malce skrivnosten
izraziti sebe v ciklično Vzorec, toda svet standardizirano
naslednji način.
>> Ko uporabljate za zanke, imaš par oklepajev znova.
In opazil dve podpičji tam.
Ti dve podpičji ločena tri različni izrazi zunanjost
oklepaje.
Eden je tako imenovani initializations.
Eden je tako imenovani stanje.
In ena je tako imenovani posodobitve.
>> Pogledal abstraktno, to je popolnoma ne-očitna, zato si oglejmo
na konkreten primer.
V Scratch smo imeli ponovitev blok.
In ta blok dejal ponovite 10-krat, pravijo "Zdravo, svet". Dovolite mi, da zahtevek za
zdaj, in se bomo vrnili k temu, in tudi to, boste dobili bolj znana
boste kmalu, enakovreden C koda Lahko bi rekli, da je to -
za izjavo in prostor, par oklepaje, opazili podpičjem leta
tam, ki loči tri ločene Stvari, inicializacijo
stanje in posodobitev.
>> In ugibati, kaj Prvi počne.
Int i = 0.
V zvezi Rough navadnega je, kaj je da delaš za nas, verjetno?
Torej, ja.
To je razglasila spremenljivko imenovano i, in to mu daje kakšno vrednost?
0.
Torej, to je ustvariti spremenljivko i, shranjevanje vrednosti 0 v njem.
To je tako imenovani inicializacija.
>> V redu, zdaj sem trdil, preden da srednjem stvar, i
<10, je pogoj.
Torej, kaj počne?
No, kaj za zanka naredi, ko Program s for zanko vodi, je
vsakič računalnik teče skozi Ta zanka, od zgoraj navzdol, od zgoraj
dno, tako kot vidva storila, ko Računam sebe in sedel,
spet in spet, računalnik se bo
Za preverjanje tega pogoja.
In če je manjši od 10, to bom še enkrat.
Če i manj kot 10, to bom še enkrat.
Če i manj kot deset, to bom še enkrat.
Tako da se zdi, da kažejo, da Upajmo, da se spreminja.
V nasprotnem primeru, bi imeli neskončno zanko.
In res, i se spreminja zaradi Zadnja stvar, ki po podpičjem tam
je nekoliko skrivnosten sintaksa i + +.
Ampak tiste, ki ste že to naredil pred tem, da samo pomeni,
kaj preprosto?
>> ŠTUDENTI: [interposing GLAS].
>> DAVID Malan: Dodajte 1 do i.
Prirastek i.
Tako smo videli Scratch sestavljanke kos za to, pravzaprav.
To ni videti kot i + +, vendar samo pomeni, preprosto, prirastek
cenite i do 1. vsakič, ko to stori.
Torej dobesedno, začnete z inicializacijo i na 0.
Nato preverite vaše stanje.
Je 0 manj kot 10?
Da.
Gremo skozi zanko.
>> Naslednja stvar, ki sem trdijo računalnika tekoč storiti, je, da se dogaja
za prirastek i.
Tako da sem zdaj 1.
Preverja stanje.
Je 1 manj kot 10?
Seveda.
Torej, to počne znova.
Nato ga korakih i + + do 2.
Je 2 manj kot 10?
Da.
In spet in spet in spet.
In na koncu, zaradi plus plussing, pridemo do i je enak 10.
Je 10 do 10?
No, očitno ne.
In to je točka, na kateri za zanko samo ustavi.
In če imate več kodo zaslon spodaj, računalnik
Izkupiček zagnati te kode namesto tega.
>> Še enkrat, čeprav bo to videz in občutek malo čudno na
Prvi, seveda za tiste, ki ste nikoli načrtovani, preden je
dobesedno zmanjšuje konceptualno s tem, kar je sicer zelo
enostavna puzzle kos v nič.
>> Vse je v redu, sem obljubil, da bi tudi drugi analogi v nič.
Tam je to eno preveč.
In smo videli to kratko zadnjič.
Vendar ne pozabite, da za vedno blok v nič?
Samo naredi nekaj za vedno?
Sem trdil, da bi lahko izvajala to na ta način.
In lahko dejansko izvajanje te na kup različnih načinov.
>> Ampak zanko, medtem ko je le drugačen Tako v C za izražanje sebe.
Ob koncu dneva, da ne moreš karkoli z while zanko, ki jo
ne more z zanka.
Tako da si na koncu dan funkcionalno enaka.
Ampak to vam omogoča, da izrazi sebe malo drugače
naslednji način.
>> Z while zanko, to je tisto, kar je v oklepaje, da se ponovno preverjena in
znova in znova.
In takoj, ko se ta izraz je napačen, potem zanka ustavi izvajanje,
in računalnik nadaljuje z teči koli drugo kodo, ki jo
so v datoteki.
>> Ampak kaj je zanimivo, tu je da sem dobesedno tipkal res.
In res je vrsta Boolove vrednosti, pravilna ali napačna vrednost.
Tako da bi res kdaj postane false, če sem dobesedno
je težko kodirane v mojem programu?
Torej ne.
To je malo čudno, da sem to storil.
Ampak res, je res.
Tukaj ni plus-plussing.
Ni Uporaba spremenljivk v tukaj.
Zato, ker sem težko kodirane čeprav je res, je to Zanka se vedno dogaja, da ocenijo
spet in spet in spet.
>> Torej, kolikokrat je zdravo svet tiskanjem na zaslonu?
Večno.
Neskončno število krat, dokler baterija umre ali kakšnega drugega zunanjega
dogodek zgodi.
Torej ta verjetno ni najboljši program pisati, ker če uporabnik
nikoli ne more končati svoj program, je to verjetno ni tisto, kar je bilo predvideno.
>> Ampak včasih, bi morali programi imajo neskončno zanko.
Na primer, če ima računalnik Ura na to, da bi bilo vsekakor
lepo je, če je vaša ura to ne vodi posodabljanje sam vedno, čeprav enkrat
Drugi ali enkrat minuto ali nekaj takega.
Torej, tudi neskončne zanke imajo svoje mesto.
>> Vse je v redu.
Nazadnje je to ena.
In ta je malo drugačen funkcionalno in bomo prišli nazaj
to verjetno v Pset 1.
Toda obstaja še ena vrsta zanke imenovano storiti, medtem ko zanke.
In edina razlika med tukaj , medtem ko je zanka in, recimo, while zanko,
je, da je pogoj preverja ne preden izvedete kodo, vendar po
zaženete kodo.
Torej, na vrhu za časa zanke, medtem ko je, medtem ko je
preveri na dnu.
>> In to samo pomeni, da medtem ko zanke bo običajno izvajajo večkrat
ali manj krat kot while zanko?
Potencialno večkrat, ker ne medtem ko se zanka jasno povedati to,
šele potem, ki kažejo, da preverite če stanje znotraj
oklepaje je res.
>> Torej bomo to še enkrat videti verjetno v Pset 1.
Če boste kdaj želeli nekaj narediti na Vsaj enkrat in potem morda nekaj več
krat, to je dobro konstrukt uporabiti.
Ampak zanko, medtem ko, nasprotno, se bo najprej preverite njegovo stanje.
In to je to za zanke v C, ne medtem pa, in zank.
In spet so map precej lepo nazaj na nič, razen tega ne
povsem enako analogno v nič.
>> No, kaj pa sedaj, spremenljivke?
Torej, to je, kako sem deklarirano spremenljivko skladenjsko drugi dan.
Imel sem int, kar sem trdil, je celo število.
Nato sem imel spremenljivko z imenom števec, in potem podpičjem.
Torej, kaj je ta vrstica kode počne?
To je preprosto, razglasitev spremenljivka -
da se sprašuje, računalnik, daj mi nekaj pomnilnika, daj mi nekaj bitov - v
kar sem lahko shranite kaj?
Int.
In podpičjem samo pomeni, konec vrstice kode.
>> Sedaj druga linija je verjetno Precej uganljivim.
Kaj je števec = 0; počne?
To je dodeljevanje 0 proti.
Tako je ta druga stvar To je malce nadležno
v primerjavi z, recimo, algebre.
Ker je v algebri, enačaj pomeni enaka, tukaj v C, enaka
znak pomeni odstop.
Torej to pomeni, da dajo kaj na desno v tisto, kar je na levi strani.
In bomo videli drug simbol, enaka enako, če hočemo, da dejansko preizkusiti
za kakovost, nekoliko nadležno.
>> To pa je malo neučinkovita.
To je nekako nadležno, da moram prijaviti spremenljivko in
potem pa ji dati vrednost.
Torej C pravzaprav nam omogoča poenostaviti to in samo to vse naenkrat.
Lahko razglasi spremenljivka na levi strani.
Še vedno lahko storite nalogo na prav s tem da ta enačaj v
srednja.
Torej, na koncu dneva, ti dve sta enakovredni, toda ta, odkrito povedano,
je verjetno bolje navado priti v samo zato, ker je malo manj
kodo, to je malo lažje, da se glasi, in to šele poostruje
kodo, tako rekoč.
>> Vsa vprašanja doslej o zank, o spremenljivkah, o pogojih, na
Booleans, bodisi tehnično ali konceptualno?
Vse je v redu.
Torej, zdaj je to naslednji dobi malo bolj zanimivo.
In to je primer, sem dal gor zadnji Čas je, da samo preslika v blok za zgled
prenesejo C.
>> Torej funkcija.
V smislu navadnega je, kaj je funkcija?
Moraš biti pogumnejši z vašim odgovorom.
Kaj je funkcija?
>> ŠTUDENT: Ali nekaj.
>> DAVID Malan: Kaj je to?
>> ŠTUDENT: Ali nekaj.
>> DAVID Malan: Ali nekaj.
OK.
Začeli bomo tam.
Torej funkcija naredi nekaj.
Torej, to je del kode, ki je v bistvu izvajala drugje,
v resnici počne nekaj.
Zdaj, kaj je zanimivo funkcijo je, da lahko sprejme vnosa
in lahko proizvajajo izhod.
In kaj je dejansko si pogled na to.
>> Torej človek za zaveso je bil namerno pred nekaj trenutki.
Tukaj imamo mizo.
Recimo, da je to dejansko predstavlja velik zaboj.
Torej je to tako imenovana črna skrinjica.
In na splošno, v oblikovanju, v računalniški znanost, črne skrinjice sklicujejo le na
kosov funkcionalnosti, da je nekdo bil izveden, in jih ne
nujno vedeti, ali mar, kako je izvaja pod pokrovom.
Ti samo skrbi, da se ta črna škatla, kar bomo zdaj začeli kliče
Funkcija, naredi nekaj.
>> Tako, na primer, če je to črna škatla na faza tukaj predstavlja printf,
Funkcija, vem iz prejšnjih primerov printf da ima eno ali več
argumenti, in prvo od teh argumenti mora biti niz, kot
"Zdravo, svet". No, če sem oseba pisanje programa, in želim,
za printf uporabo, I, na primer, lahko lahko kos prazen papir tu
črno marker in pisati o njem -
Sem napačno črkovana "svet" -
H-E-L-L-O.
>> Torej bom vzel črno marker in bom pisati, kot velika in čitljivo, kot sem lahko na
ta kos papirja, "Zdravo, svet" In Zdaj pa trdijo, da je to moj argument.
To je niz predstavljene s kos belega papirja.
In moj vložek zdaj funkcijo printf se bo to.
Torej kličem printf, ki poteka to trditev kot vhod v njo.
>> In zdaj, ne vem, kako se oseba, ki je napisal printf to storil že pred leti, vendar
Vem iz svoje dokumentacije tega njen cilj v življenju je, da tiskanje, kar sem
zagotavljajo z njo kot vhod.
In tako, čeprav je to izvajanje je nevede meni
Pod pokrovom motorja, zdaj Vidim, oh, je to storjeno.
To je natisnjen nekaj na zaslonu.
In zdaj nadzorujejo programa, če obstaja bilo več vrstic kode, bi
se je vrnila k meni.
In tako je dejstvo, da Colton -
blagoslovi njegovo srce, se skriva tukaj pod miza pred vsemi vami -
je namerno v tem, da ne vem in ne zanima me, kako je printf
izvajajo.
Jaz samo vem, spet, od njenega Dokumentacija, kaj počne in kako sem
sem moral uporabiti.
>> Zdaj pa opozarjajo, da bi lahko dobili printf malce bolj prefinjena.
Spet smo ravno govorimo o enakovredno Scratch pravijo bloka.
Ampak sem tudi to zadnjič.
Želel sem, da sem zdravo programa malo bolj dinamično in ne le težko
Koda nekaj takega kot "sveta", in Zagotovo ni težko koda nekaj
poljubno kot D-A-V-I-D v program.
Želel sem, da od uporabnika zahteva za njegovo ali njeno Ime in naredite nekaj z
da je niz, ki jih ponujajo.
>> Torej, nekaj je malo drugačna tukaj. printf, pred nekaj trenutki,
ni res, nekaj narediti, vendar je ni vrnil nič z mano.
Kajne?
Colton mi ni predati ničesar nazaj ni kos papirja.
Prišlo je le stranski učinek.
Moj zagotavljanje "Zdravo, svet", kot je Trditev, da Colton povzročilo
stranski učinek njegove besede še nekaj besed, prikazana na zaslonu.
>> getstring, čeprav je malo drugačna. getstring tudi
delovanje, vendar se vrne določeno vrednost.
To ni samo estetski stranski učinek.
To dejansko me daje, oseba kliče ali funkcijo,
nekaj nazaj.
Torej, v tem primeru, je getstring imenovana s getstring open
Oklepaj, blizu paren.
Ali getstring, zato bo nobenih argumentov ali vhodni?
Ne, to ni videti.
Njen namen v življenju je samo da bi dobili niz.
Ne potrebuje več podrobnosti, kot to.
Naj gredo naprej in se pretvarjati, da je še enkrat, to črna skrinjica ni printf,
ampak getstring, in naj me osebo pisanju tega programa, pokličite ali uporabite
getstring jih samo pisno G-E-T-S-T-R-I-N-G, odprt paren, blizu
Oklepaj, getstring.
>> Zdaj pa nimam pojma, kako CS50 osebje izvaja getstring, ampak vem, da
če sem počakati dovolj dolgo, bo to storila stvar pod pokrovom motorja, morda z
nekatere spremenljivke, morda z nekaterimi Pogoji, morda z nekaj zank,
Mogoče uporabo nekaterih funkcij, Mogoče uporabo -
samo poskušam stojnici - morda z nekatere druge programske funkcije.
Ampak, če sem počakati dovolj dolgo - v resnici, v računalniku, se to zgodi
super hitro -
če počakati dovolj dolgo, ta funkcija getstring bo dobil niz
od uporabnika, ki je domnevno tipkanje je na svojem tipkovnici in
potem, ko je getstring storiti pridobivanje ti znaki od uporabnika
in shranjevanje v niz, ki Funkcija, getstring, se dogaja, da imajo
pripravljeno zame nekaj izhod katerem sem gre za iskanje s pomočjo
Operater naloga.
>> In če grem seveda v izhod tukaj, Obosi je velikodušno
sodelovali, ne da bi vedel to s pisanjem svoje ime na ta napredek,
spremenljivka, ki predstavlja niz.
Zdaj, upravljavec dodelitev pomeni tudi čeprav bi to lahko počutijo malo
odveč, pravzaprav ne potrebujemo da bi svoj izvod to.
Ker je na levi strani stran - Ops! -
opazili, da sem v bistvu imajo niz ime na levi strani.
Torej, jaz sem tudi dogaja, da bi moja kopija tega.
In to je malo belo lažjo saj bomo videli v tednu ali dveh je
Čas, da so nizi dejansko ne kar se zdi, da bo.
>> Ampak za zdaj, tukaj je vrnjena vrednost.
Tukaj je moja kopija po pomočjo operaterja odstop.
In zdaj, kaj želim storiti?
Zdaj imamo drugo dveh vrstic kode.
Tako da sem zdaj želim printf poklicati.
Dajmo se pretvarjati, da je zdaj črna škatla je spet nazaj na počutje
printf in ne getstring.
>> Printf Tokrat se dogaja, da sprejmejo koliko argumentov?
Torej, poglej, to je kot dva.
Obstajata dve vejice v tam, ampak eden od teh vejicami, je
znotraj narekovajev.
Torej prva trditev je dobesedno bo to.
H-E-L-L-O, vejica odstotkov ov, Nagibnica-n.
In zdaj sem zagotavljanja Niti enega argumenta, ampak dva argumenti printf.
>> In kaj je printf naj naredim z ta dva vhoda, potem ko jih prenese v
kot argument?
To naj bi se druga od njih, ki sem klical ime, tako da
drugi kos papirja sem napisal Trenutek je pred imenuje ime.
To se dogaja, vtič vrednosti znotraj te spremenljivke v ogrado,
% S, tako da spet v samo trenutek Tokrat bomo videli stranski učinek
ki se imenuje printf, pri čemer zdaj ne vidijo "Zdravo, svet", ampak "hello,
Obosi. "
>> Tako velik aplavz za oba naši prostovoljci, od katerih je samo eden vedel
bi se to dogaja.
Vse je v redu.
Torej, morda, enostavno, kot da je bil, Vsekakor, če ste že seznanjeni
s takimi, upajmo, da ne bo nikoli pozabiti, da je še posebej vidno, kako
funkcije delujejo.
>> Tako da je več kot samo getstring.
Notranjost knjižnice CS50, tam je cel kup funkcij, ki so vse
z veliko začetnico samo, da bi jasno da smo pisali te funkcije.
Značilno je, da v C, skoraj vsak drugi Funkcija boste uporabljali, je z malimi črkami.
Vendar smo namenoma uporabiti velike tiskane črke Samo da bo jasno, da so ti
so kolesa usposabljanja vrst, da bomo uporabljati le za nekaj tednov, da
poenostavitev postopka za pridobivanje vhod od uporabnika.
>> Knjižnica CS50 ne naredi ničesar , ki ga sami ne bi mogel storiti z
samo z uporabo C kodo iz Oldschool učbenik.
Ampak, še enkrat, mi jih uporabiti kot usposabljanje Kolesa vrst za samo nekaj
tednov, tako da bomo lahko znebili Kompleksnost, da boste kmalu razumeli
sebe delaš nekaj kot sorazmerno enostavno, kot pridobivanje
vhod od uporabnika.
>> Torej veste, da boste imeli dostop da GetChar, GetDouble -
podvojilo.
Tisto, kako - in potem GetFloat.
Kaj je plovec?
Začnimo tam.
>> ŠTUDENT: [neslišno].
>> DAVID Malan: Ja.
To je številka z decimalno vejico.
Torej, medtem ko int je celo število, ki je le število z 0 do 9,
nekateri število ponovitev Pogodbe, plovec je nekaj
z decimalno vejico.
In dvakrat, medtem, je tudi Številka z decimalno vejico, ampak bolj
številke za decimalno točka, potencialno.
>> Tako da bomo dobili nazaj, da to kmalu.
Vendar pa običajno, vsako od teh vrst Podatki, vsaka od teh tipov spremenljivk
da lahko knjižnice, kot je naša vrnitev vi, uporabite različno število bitov na
shranjevanje podatkov.
Značilno je, Char, kar samo pomeni, en znak, uporablja 8 bitov.
In to je dejansko v skladu z našimi bajt prostovoljcev prejšnji teden, ki
prišel gor in predstavlja enega ASCII znakov hkrati.
Torej, Char je 8 bitov.
>> Float zgodi, da se 32 bitov, običajno.
In dvojna, kot bi si ugibati, je dejansko 64 bitov, kar je le še,
kar pomeni, da lahko imajo večji številke ali več natančnosti.
Ampak še enkrat, več o tem kdaj drugič.
GetLongLong, medtem, čeprav je neumno imenovan, je res samo
celo število, ki je dvakrat večje, kar je dvakrat dolga, potencialno, kot redna
celo število, 64 bitov namesto 32.
In GetString smo bili z uporabo.
>> Ampak se je izkazalo, v knjižnici CS50, ki se izvaja, kot bomo videli v
oblika dveh datotek, od katerih se imenuje cs50.h, ima dva druga
Vrste podatkov v njem.
Booleans ne obstajajo v C. Lahko jih simulirajo s samo uporabo 0s in 1s
po vaših programov.
Vendar pa smo v knjižnici CS50 so ustvarili simboli "true" in "false"
za zastopanje 1 in 0, tako da ne morali trdo kode nečem
dobesedno kot 1 in 0.
Ampak bomo spet videli tisti.
>> String, preveč, ne obstaja.
In to je razlog, zakaj sem omenil, da je malo belo laž za zdaj.
Vendar bomo Odlepite tem sloj pred dolgo.
Ampak za zdaj, niz Zaporedje znakov.
>> Medtem pa v C, si res imajo različne vrste podatkov.
Opazili so male črke.
Torej funkcije ste videli pred nekaj trenutki funkcije so napisali CS50 tem
se bodo vrnili vrednost, ki je v eno od teh kategorij.
>> Goljufija listov par šele posaditi seme tukaj. printf ne samo
sprejeti% s kot ograde.
To traja% d za decimalnih števil, ali% jaz bi delovala kot dobro.
% F plavajočo vejico vrednosti. % C je za char, če želite, da samo priključite eno
lik v Predoblikovano niz kot smo počeli, lahko uporabite% c.
>> In potem, nekoliko nadležno,% LLD je za dolgo, dolgo decimalno celo število,
kar samo pomeni, da če boste potrebovali res Veliko število in ste z uporabo nekaj
imenovano dolgo dolgo, kar bomo prišli nazaj na pset, lahko uporabite% liberijski oddelek za
povej printf, čep res velika celo tukaj preko njenega drugega ali
drug argument.
>> In nenazadnje, sem obljubil, da tam je nekaj drugega izhoda
sekvence, ki printf podpira.
Videli smo poševnico nazaj-n.
Nagibnica-r lahko vidite.
To je neke vrste stare šole stvar.
Če ste že kdaj uporabili resničnega pisalni stroj let nazaj in jo potegnil ročico
ki zavrti ne le kolo premakniti črta, prav tako preselil
Vsa stvar vse nazaj prenesejo levo, no, Nagibnica-r samo
v bistvu premakne kazalec nazaj na začetek vrstice
brez premika navzdol.
Ampak še enkrat, več o tem, morda v prihodnosti.
>> Poševnica nazaj, citiram, Nagibnica-dvojni narekovaj, Nagibnica-backslash je
rešitev za mali uganko Jaz omenili prej.
In backslash-0 je dejansko zelo zanimivo.
Ampak se bomo vrnili da je pred dolgo.
>> Naj gredo v, zdaj, CS50 aparata, in kaj je dejansko naredil
hitro ogreje z enim od primerov Nismo že in potem pojdite na
nekaj malo bolj zapletena.
Torej, če sem odprl svoj program imenovano gedit -
to je moj grafični urednik.
In jaz lahko naredim, da -
Naj zaprite to okno tam -
s pomočjo te ikone tukaj dol, gedit je v spodnjem levem
kotu poleg menija.
>> Jaz grem naprej in napredovanje, in shranite to primer v, recimo, John
Mapa Harvardu.
Mapa John Harvard je le njegov dom imenik, kjer vse svoje datoteke v živo
privzeto.
In jaz bom, da shranite to kot Datoteka se imenuje zdravo-0.c.
In sem izbral to ime, samo zato, da poravna z oznako na vzorčnih
Spletna stran tečajnega in v YouTube video posnetke na spletu.
>> Torej, zdaj bom začel napisal svoj prvi program.
Dovolite mi, da povečate za čitljivost.
In jaz grem naprej in rekli int Glavni ničen, ki je tako kot da
rumena puzzle kos, ki zažene program.
Imam gotten v navado preko let odprtju moje kodraste opornico, nato
Prav tako jo zaprejo in potem gredo nazaj če hočem dati svoj zbornik, samo
saj mi pomaga, da je vse uravnotežen, zlasti v moji
program dobi dolgo.
>> In zdaj, tukaj, jaz grem naprej in pravijo, printf, citiram konec citata,
zdravo svet, Nagibnica-n, blizu citiram, zapri oklepaj, podpičje.
Torej sem le ponoviti vse, kar sva jemala za doslej odobrena.
Zdaj grem za pomanjšanje.
>> In ta terminal okno tukaj, kaj sem lahko naredil v tej črni
in bela okna?
Kaj lahko uporabite za?
Torej, to je, če sem teči ukazov in Kje lahko pripravijo stvari.
In bom keep it simple.
Grem, da uporabite program imenovano Poskrbite, ki ni
tehnično prevajalnik.
Prevajalnik se imenuje Jek, vendar bomo prišli nazaj, da je v
teden ali čas dvojiški.
>> Za zdaj bom samo, da napišete make Zdravo-0, pa tiste, ki so bili
primerjave v vaših glavah, kaj sem pravkar tipkal na to, kar bi moral sem tipkal lahko
že veste, da sem storil nekaj narobe.
No, to je očitno nekaj napak.
Preden sem sploh pogledal, kaj so, vsak misli o tem, kaj sem naredil narobe?
>> ŠTUDENTI: [interposing GLAS].
>> DAVID Malan: Ja.
Mi manjka v glavi spis knjižnice.
Vsak od teh h. Datoteke se imenujejo glava datoteke in jih skupaj
pripadajo stvari, imenovane knjižnice.
Knjižnice so le koščki kode da drugi ljudje napisal.
Torej standard [? i?] knjižnica zbirka datotek, ki vsebujejo kodo
da drugi ljudje napisal.
>> Torej mi manjka, da.
Torej, zakaj imam jaz napako?
No, naj se pomaknete nazaj v moj terminal window tukaj.
In na žalost, v C, kot v veliko programski jeziki, zlasti
če je vse novo za vas, napaka Sporočila so natančni, ampak oni so tudi
precej skrivnosten.
In napaka tukaj, v rdeči barvi, je "Implicitno razglasi funkcija knjižnica
printf s tipom, "in potem se pomika v naslednjo vrstico, "int char *
... "To samo postane zelo Velika hitro.
>> Ampak kaj bi morali začeti storiti, če spet na novo vse to, je le, da
začeli iskati ključne besede.
Jasno je, da jaz ne bi razumeli pol od besed vidim samo še.
Boš, čeprav je v enem tednu.
Ampak vidim printf.
In da je treba začeti, preden dolgo, da jog spomin, vse v redu, printf.
Nekaj ​​je narobe s printf.
Sem urok narobe?
Ne, to ni videti - oh.
Ne morem uporabljati, če učim prevajalnik, da obstaja.
In tako, še enkrat, pojdite s svojim instinktom, tudi če ne boste dejansko razumeli
dejanska sporočil o napakah.
>> In res, rešitev tukaj je, da samo da so na vrhu datoteke
tako, resaving mojo datoteko s Control-S ali meni Datoteka.
In če bi zdaj šel nazaj dol, Bom jasno to.
Control-L je samo lep način da počistite zaslon.
In potem bom stavek "da pozdravi 0 "Enter, in zdaj sem še vedno videti
skrivnosten zaporedje simbolov, ampak se bomo vrnili k temu.
To je tisto, zaradi česar je delal za vas.
To je avtomatizacijo procesa sprejemanja precej nadležno ukaz, ki vključuje
Jek, dejansko prevajalnik.
Toda dejstvo, da sem brez napak pomeni da bi ta stvar delovala.
>> Tako da sem zdaj storil - Naj povečate spet -
./hello-0 Enter, in res, vidim "Zdravo, svet". Torej, kaj je zdaj okrepiti
To vedno tako malo, samo da posnemati koraki smo nameravali.
Bom preimenovati to z Shrani kot hello1.c.
In zdaj bom razglasi spremenljivko imenuje ime, tako niz ime
in bom dal v to Vrednost citatom-konec citata
D-A-V-I-D blizu citat podpičjem.
In zdaj bom, da se "svet" s tem, kar ograda za vrvico?
% S.
>> In zdaj, koliko argumentov je treba printf bo tokrat?
Torej dva.
Zato sem šel izven narekovajev.
Sem tip "ime", po vejico.
Vendar sem naredil nekaj drugega narobe tokrat.
Ampak kaj je domnevati, da nisem Zavedam se, da še ni.
Pusti me tukaj.
>> In obvestilo, preveč, sem že malo dolgčas tipkanje "make zdravo 0" vse
čas, "da" in vse to.
Torej, se je izkazalo, da je Linus lahko Pogosto hit Up puščico na vašem
tipkovnico, in lahko dejansko pomikanje skozi vse ukaze, ki sem jih
izvršena prejšnja, da šele zdaj.
Torej, če naredim to, Up, Up, tam je, da pozdravi 0.
Nočem tega.
Želim spremeniti, da Pozdravi 1 tokrat Enter.
Sčasoma, ki bo prihranili nekaj časa.
>> Vse je v redu.
Na žalost, tam je napaka.
Naj se pomaknete navzgor.
To izgleda res poklali ta program.
Mislim, moj Bog, to je dve vrstic kode, in njegove 10 vrstic napak.
Vendar pogled na vrh enega kopačke.
Uporabite črno identifikator niza.
Si mislim standardna I n?
Ne, nisem.
Mislil sem niz.
>> Toda če je spremenljivka niz Tip razglasila, dd, smo rekli?
Tako da je v CS50 knjižnice.
Torej, da ne zadostuje, v teh prvih nekaj tednov, tako da uporabite
kaj C daje nam.
Jaz sem tudi šel gor, in jaz bi ga dal zgoraj ali spodaj, ampak bom
hranite le po abecedi da so stvari urejene.
Jaz bom tudi cs50.h, ki so nameščeni v
Si na CS50 aparata.
In to je open source, tako da tudi ljudje na internetu lahko uporabljate na svojih
lastnih računalnikov.
Vendar pa prihaja z CS50 aparata.
>> Torej, zdaj pa grem nazaj in znova To bo z zdravo 1.
Prekleto.
Še ena napaka.
Naj se pomaknite do prvega, čeprav.
Ta je malce zapleteno.
Lik multi-znakovna konstanta.
To se mi ne pomaga.
Ampak obvestilo, Jek je vsaj malo bit dostojno, pri čemer z malo
zelena strešica simbol, to je pravi tukaj je, če sem zamočil.
Zakaj je poudaril, da je z malo zelena puščica, z enotnim citatom naslednjem
v mojem imenu?
>> Torej, to je ena od stvari, ki ste jo pravkar navadil, še posebej, če ste bili
programiranje v Pythonu, ali JavaScript, ali druge jezike, če je ta detajl
ni važno.
V C, to ne zadeva.
Če ste razglasitvi niz, ki je zaporedje 0 ali več znakov
morate dejansko uporabo dvojne narekovaje.
Tako da sem dejansko treba to spremeniti, Če želite odpreti ponudbo, zaprite ponudbo, s
narekovajih.
Enojne narekovaje imajo svoje mesto, vendar šele, ko boste uporabljali posameznika
znakov, ampak bolj o tem kdaj drugič.
Za zdaj, narekovajih niso potrebni.
>> Torej, zdaj, naj se vrnem na mojo terminal okno, se zdravo 1.
In kdo je samozavesten?
Je ta program sedaj dogaja pravilno pripraviti?
OK.
Torej, trije smo, da to.
Vse je v redu.
Enter.
In to dejansko storila.
Torej ni nobenih napak tokrat, čeprav čeprav je ta program prišel malo
bolj zapletena.
Če bom zdaj naredil dot poševnica Pozdravljeni 1, Enter to bo rekel "Zdravo, David."
>> Ampak kaj je naredil tretjo ponovitev od tega, če
Program je resnično dinamičen.
Dovolite mi, da gredo naprej in spremenite datoteko ime, samo za skladnost z
Datoteke boste imeli na voljo vam kasneje spletu.
Enter.
In zdaj bom šel in ne shranjevanje "David" težko kodirane tukaj.
Kaj lahko storim, da zelo enostavno izboljšati ta program?
>> Lahko pokličete getstring.
Mogoče je malo neočiten kaj se bo zgodilo, zato bom
dejansko dodati še eno vrstico, printf, in pravijo, ime, debelega črevesa, tesno ponudbo, samo
da bi uporabniku poziv na zaslonu.
In zdaj bom šel tu, in sem boste uporabljali svojo bližnjico na tipkovnici.
Jaz grem gor, gor in spremenite Pozdravi od 1 do 2 Pozdravljeni, Enter.
In hvaležen, da sem napredek.
>> In zdaj bom šel gor na dot slash Pozdravljeni in
spremeniti, da 2, Enter.
In zdaj moj program -
Jaz bom približati - postaja malo lepša.
Ime se bo, recimo, Rob Tokrat Enter, zdravo, Rob.
Mi lahko to storite še enkrat.
Ime, Lauren, Enter.
Ime, Joseph Enter.
Ime, poskusimo biti težko, Enter.
Eh.
To ni res bug.
Torej to je samo malo grdo.
Mogoče bi lahko rešili to v prihodnosti, ne zdaj.
>> Ampak kako bi vi nagonsko iti o reševanju
da je poseben izziv?
Prav tako je videti neumno.
Kako ste se izognili stvari si neumen?
Torej lahko storimo, OK, sem slišal nekaj stvari, stanje in zanke.
Mi lahko uporabite, nekaj, kar je pogoj, da preverite kar je dolžina niza
Uporabnik nam je dal?
In če je 0, to je samo citiram konec citata, so samo pritisnite tipko Enter, nato
Mogoče bi moral kričati na njih in jih ponovno pozval.
Ampak kako jih spet hitro?
No, tudi jaz slišal zanko, in sem lahko storiti, da znova in znova in znova
poziva uporabniku za isto stvar.
>> No, dajmo narediti še en primer uporabo različnih
Funkcija v knjižnici CS50.
Dovolite mi, da zaprete to datoteko.
Dovolite mi, da ustvarite novega.
In bom poklical, da adder.c, samo zato, ker to je enostavno narediti preprosto aritmetiko,
čeprav bo to popolnoma underwhelming s tem, kaj bi lahko storili
z vsako sodobno računalnik.
>> Ampak naj gredo naprej in zdaj -
Sem svojo lekcijo zadnji čas - vključuje cs50.h, include stdio.h, int
Glavni ničen, ki je za zdaj, bom samo prevzamejo slepo vero, vendar bomo prevzeti
da bodo razumeli, kaj to pomeni, da prej ali slej.
In jaz bom rekel nekaj kot "daj mi int."
>> In zdaj, kako pridem int?
Rad bi na koncu razglasi spremenljivko imenovan x tipa int in
shranjevanje v njej celo število od uporabnika.
To je bila Košček.
Toda, če nekdo želi predlagati, kako Ne Izjavljam celo število, imenovano x?
Int x.
>> Torej je res, da je preprost.
Daj mi int.
Call it x.
Sedaj uporabljam operaterja odstop.
In kako naj shranim iz pustila vrednost za uporabnika?
Ne želim, da pokličete getstring, očitno, ampak getint.
Vsi argumenti?
Število
Torej je odprta paren, blizu paren takoj nato
podpičjem konča linijo.
>> Zdaj pa mi to še enkrat.
Daj mi še int.
Tokrat bom naredil int, dajmo call it y, enako getint.
In zdaj mi narediti nekaj super-enostaven kot neke matematiki.
Torej printf, vsota% d je Ograda za notr.
In% d, obdobje, Nagibnica-n.
>> Vse je v redu.
Tako da je dejansko ni matematika.
Ampak, če želim povedati vsoto to vrednost in ta vrednost je enaka tem
druga vrednost, koliko argumentov v Skupno naj bi printf daje,
na koncu?
Torej štiri, kajne?
Ta niz in nato tri vrednosti.
Torej je x prvi Rad bi priključen na prvega do% d.
y se bo naslednji.
>> In zdaj sem nekako hotel povedati z, vendar z ne obstaja.
Ampak to ni nič takega.
Ker kaj bi ti naredil nagonsko, še posebej, če ste imeli
Grafična Kalkulator, kaj tipkate?
Kaj pa x plus y?
Torej, to ni dejanska spremenljivka.
To je samo vsota dveh druge spremenljivke.
In to je povsem legitimno.
C zagotovo razume preprosta aritmetično, kot je ta.
>> Podpičje, shranite.
Zdaj pa grem dol in napišete make seštevalnik, Enter.
Nobene napake, tako da je napredek preveč.
Vnesite seštevalnik.
In še bližnjico na tipkovnici, če začnete dolgčas
z vsemi ukazi -
če začnete tipkati ukaz, kot je pika poševnica oglas, in to je, če vaš
dolgočasje brcne, lahko ponavadi hit Tab ima računalnik konča
počitek stavka za vas, če to ni dvoumna, kaj pride po oglasu.
>> Naj gredo naprej zdaj in kliknete Enter.
Daj mi int, 1, 2, in na srečo, je 3.
Ampak kot vedno, testiranje programov ne sme zmanjšati za
samo poskušam enkrat.
Naj poskusim kotiček primerov, kot negativen 1, daj mi 1, in da je eden
odjavi kot dobro.
In jaz verjetno želeli narediti nekaj več strogo testiranje, vendar sem precej
udobno s tem, kje to je na.
>> No, zdaj pa poskusite drug program da tokrat uporablja
malo drugih sintakse.
Dovolite mi, da ustvarite novo datoteko.
Poklical bom to conditions0.c poravnati z nekaj vzorčne kode na spletu.
In mi gredo naprej in to vključujejo cs50.h, vključujejo
stdio.h, v glavnem praznini -
OK.
Takole.
Imamo standardna pogodba.
>> In tokrat bom printf reči, "Rad int, prosim," samo da se
da hitro malo bolj prijazna.
In zdaj želim, da bi dobili int od uporabnika.
Jaz ga bom n tokrat poklical, samo ker n zveni kot številko.
getint, in zdaj, kaj storiti Rad bi naredil z njim?
No, če je n - in bom povečavo -
če je n večji kot 0, rad storiti naslednje -
printf "Izbral si pozitivno število." Drugega, bom printf stavek "You
pobral negativno
številko. "V redu.
Torej ta program, čeprav sem to storil hitro, zgleda prav skladenjsko.
Naj poskusim to.
Da stanje 0.
Razliva.
Stanje 0, vnesite.
Dajmo mu int od 50 let.
Pobral sem pozitivno število.
Dajmo še enkrat poskusila.
Stanje 0.
Negativno 50.
Pobral sem negativno število.
>> Toda zdaj, vzamem kaj bomo naprej kliče kota primeru, ki je bolj
Zanimiv primer, ki mislite, bi vam nekaj težav, 0.
Zdaj sem prepričan, da je to eden od ti primeri kotiček, kjer je nič
niti pozitivno niti negativno, tako da moja Program, čeprav je v skladenjsko
popravijo - to pripravlja, da teče - ni logično pravilna.
Torej, kaj je enostavno pritrditi tukaj, če želim odkriti, če želim ročaj n
enaka 0 ločeno?
>> Torej, če je n enak 0, potem pa sem hotel povedati nekaj podobnega printf "Izbral si 0".
Dovolite mi, da poskusite to zdaj.
Naj grem nazaj, jasno moje okno, in prevedem.
Hm.
Ena napaka ustvarjajo.
Ampak jaz si želim, da preverite če je n enak 0.
>> Torej, še enkrat, še ena neumna stvar navaditi, enačaj je
Operater naloga.
To je torej dejansko napaka, da tehnično, čeprav prevajalnik
me je zaščiten od sebe, da bomo Tehnično se kopiranje 0 v n, ki
ni tisto, kar hočem.
Želim, da test za enakost z enako enako.
Tako, da bi lahko sedaj moja boljša rešitev.
>> Dovolite mi, da pravzaprav shranili to kot, recimo, razmer1, da je nov in izboljšan.
Torej, zdaj, če sem to prevedem, da bi pogoje -
Ops - da razmer1 pika slash razmer1, Enter "Rad bi int,
prosim. "Jaz grem naprej in vnesite 50.
To je še vedno dobra.
Negativni 50, še vedno dobra.
0, in seveda zazna da sem izbral 0.
>> Torej, kaj še lahko zdaj s tem?
No, bomo lahko zagotovo storiti vse kompleksne stvari.
Ampak kaj bi rad predlagal, je da smo na koncu na tej opombi tukaj.
Če bomo dvigni to, boste videli, morda, najljubša risanka tvoje
do danes ste morda nikoli razumel.
In to je, o kakovosti smeha bi morali dobiti s CS šale.
Torej, to je približno prav.
>> Toda še bolj prepričljivo, sem mislil, da sem dajte nam malo teaser za ponedeljek.
Tako smo začeli z uporabo števil.
Mi smo iz plovci.
Mi smo celo iz dvojicah, ki je, še enkrat, da vam številke
Po pikami.
>> Vendar se izkaže, da so boje in dvojice, in, res, računalniki,
bistveno pa je, ne more izraziti nekatere vrednosti natančno.
Vemo iz matematike razrede, ki jih lahko ima poljubno število številk po
decimalno vejico.
In lahko celo dal navpično vrstico torej ti traja večno.
>> Na žalost vam ne morem to v računalniku.
In tako se pojavljajo primeri, ko kotiček.
Recimo, da ste delaš nekaj finančno.
Delaš matematike z odstotki, in
s dolarjev in centov.
In tisti centov ne nujno postavo.
No, izkazalo se je, da frakcij penijev lahko začne sešteti, ko
oblikovana z računalniškim sistemom na tak način, da pametna
ljudje lahko izkoristijo.
>> In tiste, ki niso videli, jaz bi radi, da vam 30-sekundni teaser za
čudovit film, znan kot Office Space, ki bo naslikal
Problem smo se spopasti Prva stvar v ponedeljek.
Če bi lahko povečajo obseg malo, ti dam 30
sekund Office Space.
>> [Predvajanje videa]
>> -Mislim, ti, ti niso bili prikazujejo gor in dobiš obdržati svojo službo.
>> -Pravzaprav sem se oglašuje.
>> -Jaz lahko programirate virus, ki bi razporek ta kraj off veliko časa.
>> No, kako deluje?
>> -Vsakič, ko je banka posel kjer je interes izračuna in tam
tisoče dan, računalnik konča s temi frakcij cent.
>> Ampak jaz ne bom storiti nič nezakonitega.
>> -Nezakonito?
Samir, to je Amerika.
>> -Moramo prisežem.
>> -Če nihče ne ve o tem ampak nas, v redu?
Ni družinski člani, brez prijateljice, nobody.
>> -Seveda.
>> -Se strinjam.
>> -Ne skrbi, stari.
Nikomur ne bom povedal niti.
>> [END predvajanje videa]
>> DAVID Malan: Torej, to je potem CS50, da je Office Space, in da bo vse
smisla v ponedeljek.
Se vidiva takrat.
>> Pripovedovalec: Na naslednjem CS50, Rob prilagaja počutje off
Harvard obrok načrt.