[Powered by Google Translate] David MALAN: Ito ang CS50, at ito ay ang simula ng Linggo 1.
Ano ang naisip naming gawin ngayon ay tingnan bumalik sa
isang bagay na marami sa inyo malamang lumakad nakalipas para sa ilang
oras ngayon at maaaring maging pamilyar ang ilang sandali.
Ito bagay dito, ito ng kurso ay sa -
Madla: Science.
David MALAN: Science center.
Kaya ito ay talagang isa sa pinakamaagang computer
-back mula sa 1940s.
Ito ay isa ng unang Electromechanical computer
na may kakayahang lalo na mahaba,
self-napapanatiling computations, at kung ano ang aming tunay na makita sa
ang sentro ng agham ay lamang ng isang maliit na bahagi ng bagay na ito.
Ano ang naisip naming gawin pagkatapos ay tumingin pabalik sa isang video
na ginawa ng ilang oras ang nakalipas, nagpapakilala ito
bagay sa mundo.
At makikita mo mula sa musika at boses na sa katunayan mga
napakasaya beses.
>> [Playback ng video]
Isang pagtatagumpay ng matematika at mechanical kasanayan ito
mahusay na bagong awtomatikong calculator sa Harvard University.
Buhol-buhol na mga problema sa matematika, ilagay sa pamamagitan ng
machine sa code form sa tape, ay tumpak malulutas sa isang
minutong bahagi ng oras na kinakailangan para sa tao
pagkalkula.
Dinisenyo upang mapabilis ang lahat ng mga paraan ng matematika at siyentipikong
pananaliksik, ang higanteng mechanical utak ay gumagana para sa Estados
Unidos Navy hanggang sa pagtatapos sa digmaan.
>> David MALAN: Kaya kung ano ang hindi mo maaaring malaman na ito ay nasa
ito parehong aparato na ang isang term namin ang lahat na ngayong kumuha ng medyo magkano
para likha ay nabigyan ng, na ng isang bug.
Kaya isa ng mga inhinyero na nagtatrabaho sa computer na ito
literal na natagpuan ng isang maliit na mariposa sa machine na nagresulta
sa ilang mga hindi tamang kalkulasyon.
At bilang napupunta ang kuwento mariposa na tape sa log na ito
journal dito, bumalik mula Setyembre 9 sa 1940-isang bagay,
at sa gayon ay ipinanganak para sa mundo ng term na "bug".
Kaya simula ngayon namin isaalang-alang ang mga bug sa anumang uri ng pagkakamali sa
programa, kung ginawa ng tao o, sa kasong ito, insekto.
>> Kaya ng ilang mga anunsyo, bilang namin magpatuloy.
Kaya CS50 ay may tradisyon ng nag-aalok ng tanghalian ng mga uri sa
pinaka-Biyernes sa panahon ng semestre, kung saan nagsasagawa kami ng 30 hanggang
40 mga mag-aaral sa Sunog at Yelo sa Square para sa casual
chitchat, makipag-usap tungkol sa computer science,
makipag-usap tungkol sa hinaharap.
Namin mag-imbita ng mga alumni at mga kaibigan mula sa industriya upang makipag-chat up
mag-aaral pati na rin.
Talagang patungo sa isang pagtatapos ng paggawa ng kung ano ang isang medyo malaking klase
ang lahat ng mga mas kilalang-kilala, hindi bababa sa isang beses sa habang para sa
subset ng mga mag-aaral.
Kaya kung nais mong upang sumali sa amin ito Biyernes, 1:15 PM, pumunta sa
CS50.net/lunch sa RSVP.
At gagawin namin ito recurringly, kaya huwag mag-alala kung hindi ka
kabilang sa mga unang 30 o kaya sa linggong ito.
>> Kaya tagasulat tala.
Isang salita sa ang mga mapagkukunan na ngayon simulan ang pagiging magagamit
sa mga mag-aaral sa klase.
Gayon na ang iyong ulo ay kailangang hindi sa panahon ng aralin
scribbling down na ang lahat ng sinasabi ko at iba pa, ano ang ginagawa namin
sa halip ay magbigay mula sa kawani ng pagtuturo ng
canonical na hanay ng mga tala.
Kaya kami ay may isa ng aming mga Fellows ng pagtuturo, Andrew Sellergren,
na makikita bawat linggo, sumusuri sa video, at pagkatapos ay
nagsusulat pababa kung ano ang sa tingin namin ay isang patas
makapangyarihan na hanay ng mga tala.
At Andrew sa hibang na hibang din, ng paglalagay ng snarky footnote sa
ibaba.
Kaya mo sana mga bisita mga ito bilang isang reference libro para sa
masaya, at din, dumating pagsusulit oras, pati na ang isang pagkakataon upang suriin ang
kung ano ang nangyari sa mga indibidwal na mga aralin.
Kaya mga naka-link sa pahina ng aralin.
>> Problema set 0, samantala, ay ang.
At sa mga tuntunin ng mga mapagkukunan na magagamit sa iyo -
ang walkthrough.
Milo humantong ang una sa Biyernes.
Ito ay kumuha, ilagay ang online ng Sabado.
At kaya Napagtanto, kung hindi ka talagang sigurado kung saan magsisimula,
para sa o hinaharap p-set, laging i-una sa
walkthrough o ang video hinggil doon.
Sectioning ay nasa progreso, sa cs50.net/section ay kung saan mo
dapat isumite ang iyong mga kagustuhan, kung hindi mo pa
na, sa pamamagitan ng ngayon.
Dahil ang mga seksyon ay magsisimula na ito darating na Linggo, Lunes,
at Martes.
Gawin namin ang mga seksyon ng tatlong araw na iyon, bawat linggo ng
semestre para sa pinaka-bahagi.
At din namin ipakilala, muli, iba't-ibang mga track.
Kaya tatanungin ka sa form na ito sectioning, kung
hindi nakikita ang mga ito na, kung ikaw ay kabilang sa mga mas
kumportable, mas kumportable, o isang lugar sa pagitan.
At kung ikaw ay uri ng sa bakod, sa pangkalahatan sa isang lugar sa
sa pagitan ng ang karamihan sa mga mag-aaral magtapos check.
Office oras magsimula ngayong gabi.
>> Kaya sa simula ay medyo mababa key, kahit na medyo natural
upang tumakbo sa iba't ibang mga bug, o hindi tiyak sa kung paano sa
ipatupad ang isang bagay.
Kaya Napagtanto na magsisimula kami sa oras ng opisina sa linggong ito.
Makikita nila sa Annenberg Lunes, Martes, Miyerkules,
Huwebes, 20:00-11:00 sa panahon ng utak pahinga.
Upper classmen ay maaaring makakuha ng sa, at kung sakaling magkaroon ng problema sa pagkuha ng
sa pinto, dahil sila ay swiping, lamang na makipag-usap sa iyong paraan
in at ipinapaliwanag ikaw ay may CS50.
Karaniwan 20-30 sa atin sa kawani ay doon upang makatulong sa
mo ang isa sa isa.
>> Sa pagdating ideya na ito: makikita mo dalhin ang iyong laptop,
makikita mo ang iyong charger, makikita namin may karagdagang kapangyarihan tanikala,
lalo sa kahabaan ng timog pader ng Annenberg kung saan
may maraming mga elektrikong saksakan.
At ang pangunahing punto ng entry sa mga oras ng opisina Q & A ay pumunta sa
cs50.net/discuss at mag-post ng
iyong katanungan doon.
At sa label ito may pset 0 o pset 1, anumang linggo
maaaring mangyari upang maging.
At pagkatapos ay kung ano ang gagawin namin ay magkaroon ng isang talaan ng mga Fellows ng pagtuturo
at kurso assistants, pangkalahatang 8 o 10 o kaya sa atin,
pagpunta sa pamamagitan, nang pinapanatili ang isang maalaga mata sa board, at
plucking off ang mga tanong talaga bilang mabilis hangga't makakaya namin,
nagre-refer ka sa mga kaugnay na mga post kung hindi mo pa nahanap mga
inyong sarili, online na mga sanggunian, ayon sa naaangkop.
At pagkatapos ay kung may mga problema, bilang may hindi maaaring hindi
ay, o ito ay ginagawang higit pang kahulugan sa umupo isa sa isa,
gumana sa pamamagitan ng mga problema sa isang tao.
>> O mo lamang darating sa oras ng opisina ay talagang
nangangailangan ng na mindset.
Hindi mo nais na pumunta sa pamamagitan ng electronic form,
talagang gusto upang matugunan sa isang tao.
Makipag-usap na sa amin, at kung ano ang mangyayari ay kapag ang iyong
tanong ay nakikita ng isang miyembro ng kawani, at kami
matukoy, yup, ito ay dapat despatsado sa isa ng 20 o
30 miyembro ng koponan dito sa lokal, makikita mo sa tuktok pakaliwa ito
kaunti Ipasok ang pindutan ng Queue nagsisimula flashing sa cs50.net /
talakayin.
At ito ay nagsasabi sa iyo mo na ngayon ay inanyayahan, nang sa gayon
magsalita, ipasok ang queue.
At sa pamamagitan ng pag-click na pindutan, ang iyong pangalan ay lilitaw sa
isang iPad na ang CS50 greeter, isa sa ulo ang kurso,
may hawak na malapit ang pasukan ng Annenberg, na ay
makita ang bilang itinatanghal dito, ang mga mag-aaral na may mga katanungan sa
sa kaliwa, ang mga miyembro ng kawani na sa kanan.
At may isang pag-click ng kaliwa at kanang, ang iyong web browser ay
simulan ang flashing sa lalong madaling panahon, halimbawa, Propesor McGonnagal
ay handa upang makita ka sa isang partikular na talahanayan sa Annenberg.
>> Kaya ginawa namin ang ilan sa mga nakaraang taon na ito.
Rebooted namin ang oras ng opisina at
muling ipinatupad ng karamihan ng software.
Kaya nauunawaan natin na ito ay magpainit sa linggong ito.
Kundi pati na rin Napagtanto masyadong, sa mga taon na nakalipas, tulad ng maaaring narinig mo
mula sa mga kaibigan, mga oras ng opisina ay may katunayan 50 sa
150 mga mag-aaral nang sabay-sabay.
At ito ay simpleng hindi posible para sa amin upang mahawakan na
epektibo, isa sa isa, sa buong gabi.
At kaya kung ano ang talagang kami ay pagpunta upang subukang gawin ito taon ay
mapakinabangan ang katotohanan na ng maraming ng mga tanong
madalas na itinatanong at maaaring madalas ay mas mahusay na nasagot
asynchronously.
Kaya maaari mong pag-uri-uriin ng tingin sa pamamagitan ng pagtugon sa mga tauhan ng,
at maaari naming isipin sa pamamagitan ng iyong code, nang walang heated
presyon ng kinakailangang struggling
sa pamamagitan nito magkatabi.
Kaya tinatantya namin na halos isang third o kalahati ng mga tanong
ay despatsado sa tao, at susubukan naming kumalbit off bilang
marami bilang isang kalahati o mas electronic,
sa panahon ng mga opisina oras.
At kami na patuloy na gamitin ang Talakayin
sa buong linggo pati na rin.
>> At bilang wakas, mapagtanto na ang kursong ito ay dadalhin pumasa / mabibigo.
Kaya kung ikaw ay sa bakod o isiping ikaw talaga
hindi sigurado kung ito ay ang mundo para sa iyo, o talaga ito
medyo banyaga sa iyo, nauunawaan natin na ito ay isang kahanga-hangang paraan
ng pagkakaroon ng ilang kumpiyansa sa hakbang sa
klase, tulad ng ginawa ko lantaran, taon na ang nakakaraan.
At pagkatapos ay limang linggo upang pag-uri-uriin ng figure out para sa
ang iyong sarili kung nais mong manatili pumasa / mabibigo, lumipat sa isang sulat
grado, o tulad ng.
At karaniwang kung ano ang pumasa / mabibigo ay, tingin ko, para sa mga mag-aaral ay
, kung inilagay mo sa na 10 oras, 20 oras, anumang ito
ay maaaring sa ilang mga problema, at ka banging iyong ulo
laban sa pader,
at mo ba talagang lamang ay hindi maaaring Chase isang bagay, at
may maraming iba pang mga bagay na kailangan mong gawin, totoo lang, kung ano ako
tingin pumasa / mabibigo ay, ito ay tumatagal ng sa gilid ng
sitwasyon tulad na.
Kung saan mo kinuha ang bagay sa 90% ng paraan.
Alam mo, ito ay hindi pa perpekto.
Subalit ba kayong ng maraming nito, gayunman.
Kaya isaalang-alang ang pumasa sa / mabibigo bilang nagbibigay sa iyo na
kaisipan modelo, marahil.
>> Lahat ng karapatan, kaya huling linggo na namin kalapati sa simula, at hindi na namin
uusapang tungkol sa mga programa sa isang medyo mataas na graphical antas.
At ngayon namin ang paglipat sa isang wika
na tinatawag na C, ang isang mas mababang antas ng programming language sa itaas ng
kung saan maraming modernong wika ay binuo ngayon, kabilang ang ilang mga
ng mga gagamitin namin ginagamit patungo sa pagtatapos ng termino.
At syntactically, kung ano ang tumingin sila tulad ng
lahat ng medyo katulad.
Kaya sabihin magsimula sa transition na ito dito.
Kaya ito ng programa noong nakaraang linggo na ang pinakasimpleng ng
kumusta mundo programa.
Naka-print na ito lamang sa mundo screen kumusta, na may
maliit na speech bubble darating ng pusa.
Well, kung tayo magsimula ngayon upang i-translate ito sa isa pang
wika, Napagtanto na ang mga ideya na ngayon at sa Miyerkules
ay magkapareho, ngunit syntax magsimula na baguhin.
Kaya kung saan noong nakaraang linggo nagkaroon kami, kapag ang berdeng bandila click, sabihin
kumusta mundo.
Ngayon kami ay pagpunta sa int, pangunahing, walang bisa, printf,
return, may ilang iba pang mga syntax sa doon pati na rin.
Kulot tirante, at panaklong, at quote, at watnat.
Ngunit mapagtanto na ang core ng ideya dito ay ang pag-print,
at sa huli ang katotohanan na ang pangunahing ay ngayon pagpunta sa
magkasingkahulugan na may sa simula ng isang programa.
Pangunahing na kung saan ang berdeng bandila kicks bagay off.
>> Kaya ngayon sabihin manunudyo bukod ang ilan ng ang mga bloke ng gusali dito
bago namin sumisid sa ilang mga kongkreto halimbawa.
Kaya tinatawag namin ang isang pahayag noong nakaraang linggo, kung saan lang
ng pagtuturo.
Gawin ito - sa kasong ito, kamustahin mundo.
Na rin sa C, kung tiningnan namin sa na linya lamang, ito ay kung paano kami
pagpunta upang simulan ang pagpapahayag na partikular na piraso ng puzzle:
printf ("Hello World");.
At ngayon namin manunudyo mga bukod higit pa at higit pa sa paglipas ng panahon,
ngunit mapagtanto na ang isang pattern dito.
Kaya isa, mayroon kaming ito bagay na tinatawag na printf, na
mahalagang kahalintulad sa salita Sabihing.
Iyon ay kung ano ang pagpunta sa gawin.
Printf, at f dito ay nangangahulugang "format".
Kaya lang ang ibig sabihin nito ay maaari mong ipasok
iba't ibang Aesthetic detalye.
Kaya quote magpanipi ang simula ng kung ano ang kami ay pagpunta
upang simulan ang pagtawag ng isang string.
Ang isang salita, parirala, pangungusap.
Isang string sa isang wika ng programming ay isang pagkakasunod-sunod ng mga zero
o higit pang character.
Kaya h-e-l-l-o, kuwit, at iba pa ay,
quote magpanipi, isang string.
At ngayon backslash n, isang maliit na syntactically kakaiba, ngunit hindi namin
natukoy na huling linggo bilang ibig sabihin kung ano?
Ito ay isang bagong linya.
Ito lamang ang paraan ng conveying sa computer na gusto mo na ang
katumbas ng pagpindot sa Ipasok doon, ngunit hindi mo gusto
gusto sa aktwal na pindutin ang Enter at samakatuwid Nagkamali ang lahat ng mga
-format ng iyong aktwal na programa.
Ngayon ang mga panaklong ay ilakip ang string na ito, bukas paren at
malapit paren, at sa loob ng na ang aming mga string.
Dahil na dahil sa C, at iba pang mga programming
wika, ang mga bagay na gusto printf tumagal argumento, o
parameter.
>> Kaya simulan ang iniisip ngayon ng ito lilang sabihin bloke bilang isang
function, bilang paraan, bilang isang pamamaraan.
Maaari mo ba talagang tumawag ito anumang nais mo sa ngayon, ngunit
ito ay uri ng isang pinaliit na programa na ginagawa lamang ng isa
bagay, sa isang linya, walang mas.
Kaya printf ay din kung ano ang namin ang pagpunta upang simulan ang pagtawag ng
function, at mga function na gawin ang isang bagay - sa kasong ito
mga Kopya ng format na string sa screen -
ngunit function ring kumuha ng mga argumento o mga parameter.
At sa pamamagitan ng mga argumento o mga parameter, salamat, ibig sabihin namin
na ang kanilang pag-uugali ay maaaring naiimpluwensyahan ng kung ano ang pumasa ka sa
sa loob ng panaklong.
Kaya sa kasong ito, printf pangangailangan nasabihan kung ano ang i-print, at kami
lamang pumasa sa, sa double quote dito, ang string na namin
aktwal na gustong i-print.
At ang semicolon sa pinakadulo ng line na ito ay lamang ng isang
makasaysayang istorbo kung saan sa dulo ng karamihan ng mga linya ng code,
kang maglagay ng semicolon sa sobrang malinaw sa computer
na ang linya ng code na nagtatapos dito.
Ngayon ito ay mabuti dahil bilang namin makita ang bilang programa makakuha ng mas maraming
complex, semicolon ay sobrang malinaw sa amin mga tao,
at din ang computer, kung saan ang mga linya ng code ng pagsisimula at pagtatapos.
Mapagtanto na ang ilang mga wika ay hindi magkakaroon ng ilang
ng mga parehong mga detalye.
At sa katunayan, sa JavaScript, hindi mo laging kailangan ng isang bagay
tulad ng semicolon.
Ngunit higit pa sa na sa darating.
>> Kaya loop.
Nagkaroon kami ng isang bagay na tulad nito, napaka intuitively, halata,
isang bagay muli at muli at muli.
Gusto ng paglalagay sa mga medyas, o sinasabi kumusta, sa kasong ito.
Well, simula ngayon sa C, maaari naming ipahayag ito sa simula
harangan ang bilang habang (tama) printf ("hoy mundo").
Kaya mapansin kami ay nagsisimula upang bumuo sa literal ang puzzle
piraso mula bago.
Mayroon kaming ang parehong mga lilang bloke, ngunit ito sa loob ng mga ito
bracketed Habang Panahon bloke, at ang pinakamahusay na paraan upang i-translate na
sa C ay tulad ng sumusunod.
Walang nang Tuluyan keyword.
Hindi lamang mo maaaring i-type f-o-r-e-v-e-r sa C.
Kaya ang pinakamalapit na analog ay habang.
>> Ngayon, habang (tama) tila ng kaunti bobo dahil ang halaga
ng tunay kailanman pagbabago?
Baka hindi.
Ito ay tulad ng sinasabi habang isa, habang, habang totoo.
Ang lahat ng mga parehong bagay, ang totoo ay palagi ang kaso.
Kaya loop na ito ay aktwal na pampalaglag kung anong uri ng loop?
Isang walang-katapusang loop, kanan.
Isang nang Tuluyan loop o bilang tinatawag namin ito noong nakaraang linggo,
isang walang-katapusang loop.
Kaya minsan na masamang.
Minsan na ang isang bug, minsan na ang dahilan kung bakit kumuha ka ng
ang Umiikot na bola ng beach o orasa o ang tulad ng.
Ngunit sa kasong ito, hindi namin sadyang, para sa anumang
dahilan, gusto upang i-print muli ang parehong bagay
at muli at muli.
O sa kaso ng tulad ng panonood, gusto mong gawin
isang bagay muli at muli at muli.
Kaya walang-katapusang loop ay maaaring magkaroon ng kahulugan.
At ito ay kung paano sa C maaari naming isalin sa Habang Panahon sa code.
>> Kaya ngayon ang isang ito ng kaunti mas tiyak na.
Namin ay ulitin ng 10 beses ang sumusunod na pahayag.
Kaya habang (tama) ay hindi pa gumana doon, dahil ang totoo ay
laging totoo.
Kaya kung sa halip namin tingnan ang bersyon ng C, ngayon syntax nakakakuha ng
kaunti pa misteriyoso.
Ngunit upang maging matapat sa sandaling sinimulan mo upang makita ito, lahat ng ito ay nakakakuha
medyo pamilyar mabilis.
Kaya ito ay kung ano ang tinatawag na para sa loop.
A para sa loop upang sabihin sa computer upang gawin ang isang bagay
muli at muli at muli para sa hangga't
mga bagay na ito ay totoo.
Ngayon ano ang gagawin namin ibig sabihin sa pamamagitan ng na?
Well, may tatlong bahagi sa isang loop, at kami ay pagpunta sa
bumalik ito sa konteksto ng aktwal na
halimbawa sa isang sandali.
Kaya huwag mag-alala kung hindi ito ay medyo mapasubsob sa lahat nang sabay-sabay.
Ngunit int i = 0, mahaba kuwento maikling, sinasabi ninyo akong bigyan ng
variable na ng uri ng integer, kaya ninyo ako ng isang numero
tinatawag i, at initialize ito sa 0.
Ninyo ako tulad ng isang algebraic variable x at
initialize ito sa 0.
Ngunit sa kasong ito tinatawag namin itong i.
Pagkatapos ay sa gitna, sabi i ay mas mababa sa 10.
Na nagsasabi sa computer ang mga sumusunod na mga bagay-bagay kaya mahaba
bilang i ay mas mababa sa 10.
At malinaw naman nagsisimula ito sa mas mababa sa 10 dahil
nagsisimula ito sa 0.
Pagkatapos bilang wakas, maaari mong marahil hulaan kung ano ang i + + paraan.
Ng kaunting syntax na lamang ay nangangahulugan dagdagan i.
Kaya magdagdag ng 1 sa i, muli at muli at muli.
>> At iba pa bilang namin makita ito loop, ang syntax na ito, sa halip, ipinapatupad
tiyak ang parehong bagay na, lantaran, sa simula ay lamang kaya
mas madali upang ipahayag.
Ulitin 10, at tapos ka na.
Sa C, at sa karamihan sa mga wika programming, mayroon kaming isang
kaunti pa nakapagtuturo para sa computer at aktwal
tukuyin ang isang bagay tulad nito.
Ngunit makikita namin bumalik ito at iba pang mga syntax.
>> Paano ang tungkol sa mga variable?
Sa simula namin ay may isang bagay tulad ng mga orange na bloke,
kung saan maaari kong ipinapahayag sa isang variable.
Sabihin mang tumawag ito counter.
Natin initialize ito sa 0, at pagkatapos ay
sabihin magpakailanman gawin ang isang bagay.
Sa kasong ito sa scratch ako sinasabi ng counter, kaya ang
pusa pagpunta sa magkaroon ng isang maliit na speech bubble na pagsasalita
ang bilang na ito variable.
At pagkatapos ay mayroon kaming counter ng pagbabago ng 1.
Kaya lahat ng ito ay nakabalot sa loob ng isang lock sa Habang Panahon.
Kaya na namin ngayon ang mga bloke ng gusali sa C may
kung saan upang i-translate ito.
>> One way kami maaaring gawin na ito.
Bigyan mo ako ng isang integer, tumawag ito counter.
Initialize ito sa 0
sa unang linya doon.
Habang (tama), kaya ako pagnanakaw na ideya mula sa sandali lamang
nakalipas, magpatuloy at gawin ang mga sumusunod.
I-print ang counter, at pagkatapos ay dagdagan ang counter,
muli, at muli, at muli.
O muli, + + lamang ay nangangahulugan na magdagdag ng 1 sa isang bagay.
Ngunit may isang bagong piraso ng syntax dito.
Ano ang paglukso bilang hindi kabilang ang aming mga nakaraang mga halimbawa?
Oo,% d na ito.
Sa gayon maaari mong maaaring magpakilala kung ano ito ay ginagawa, lantaran, batay
sa kung ano ang simula bloke ay ginagawa.
Ngunit muli sa C, lang namin ng kaunti pa sa partikular na
pagdating sa pagpapahayag ng ating sarili.
>> Kaya printf ("% d \ n").
Na rin ang karamihan ng na maaari naming itapon bilang pamilyar.
Lamang ang mga quote ay nangangahulugan na ito ay isang string, backslash n
ay isang bagong linya.
Kaya lamang bagong bagay dito ay% d.
At ang lahat ng iyon ay isang placeholder.
% D ay upang tukuyin ang isang decimal na numero.
At% d ay nangangahulugan na computer, maglagay ng decimal na numero dito.
Well, kung ano ang numero ang gusto mong upang ilagay doon?
Well, tulad ng maaari mong marahil magpakilala, pagkatapos ng kuwit sinasabi namin
counter, na ang pangalan ng isang variable na ipinahayag namin o
nilikha ng ilang linya nang mas maaga.
Kaya ito ay C ng paraan ng i-plug sa isang variable sa isang
string dynamic.
Dahil sa pamamagitan ng kaibahan, kung sa halip ako ay gawin ang isang bagay tulad ng
ito, printf ("counter"), ano ang gagawin ito
programa sa halip gawin, baka?
Ito literal-print "counter".
Na kung saan ay hindi ang effect na gusto ko.
Kailangan kong ihalili sa ilang mga numerong halaga.
Kaya gagamitin namin makita na mga function pagkatapos, tulad ng printf, maaaring tumagal ng hindi
lamang lang iisang argumento, tulad ng
"Hoy mundo".
Maaari silang quote magpanipi kuwit, at ang ilang mga variable
na makakuha ng mga nakasaksak sa, dahil kakailanganin namin makita ang mga nakaraang string
sa pamamagitan ng mga placeholder sa sign ng%.
>> Na rin kung ano ang tungkol sa Boolean expression?
Boolean expression ay mga halagang ito, true o false.
Oo o hindi.
1 o 0.
On o off.
Kaya sa scratch tumingin sila tulad nito, at mapapansin na ang
ibaba block dito ay ang tunay ang kasabay
ng dalawang mas maliit na mga bloke.
Kaya ko uri ng drag at bumaba ng tatlong piraso puzzle
magkasama upang doon na mas mahaba na piraso ng puzzle kaya na ako
maaaring ihatid ang ideya na gusto kong x sa mas mababa kaysa sa y at
y na mas mababa kaysa sa z.
At kaya ko isalin ang mga dalawang magkahiwalay na linya tulad ng sumusunod.
Sa tuktok napaka trivially isinalin sa C,
sa pamamagitan lamang ng x <y.
Siguro may ilang mga panaklong para sa mabuting panukala.
At pagkatapos ay sa C, hindi mo sumulat at upang tukuyin ang
kasama ng isang bagay.
Sa halip kang sumulat &&.
At bilang namin ay makakita, ng isang ampersand ang mangyayari
ibig sabihin kakaiba.
Kaya && lamang Nagpapahiwatig ang ideya ng AT.
>> Kaya muli, kahit nagsimulang upang tumingin sa halip kumplikadong,
isa sa mga layunin ng nagpapakilala sa simula, bukod sa
lamang pagkakaroon ng uri ng isang masaya-rampa kung saan maaari mong gawin
isang bagay na napaka graphical, at animated, at
naibabahaging at tulad, din upang ihatid ang ideya na
lahat ng mga ideya simulan namin diving sa ngayon at pasulong
ay katawanin sa kahit na simpleng
interface dahil sa araw isa.
Paano ang tungkol sa dito?
>> Kaya kondisyon.
Kaya ang scratch block sa kaliwa may hitsura
ng kaunti pa sa complex.
Ngunit ito lamang ang ilang mga pag-drag at
drop ng mga pamilyar na piraso.
Kung ang x ay mas mababa kaysa sa y, sabihin ito.
Else kung x ay mas malaki kaysa sa y, sabihin kaya.
Iba Pa, maaari naming lohikal na ipinapalagay ito ay natukoy na
dapat silang pantay.
Kaya sabihin na ang mga ito ay pantay-pantay.
Ngayon C sa kanan, parehong eksaktong bagay.
At mapansin na ang mga kulot tirante ay isang
tampok ng C at iba pang mga wika na gawin ang ganitong uri
ng encapsulation.
Lamang tulad ng kung ang block ito dilaw na bagay na uri ng
daklot ang mga lilang bloke sa loob nito.
Katulad nito ang mga tirante -
mga kulot tirante -
sinadya upang manawagan na parehong ideya ng embracing ng isa o higit pang mga
mga linya ng code na naka-indent sa loob ng mga ito.
Kaya sa kanang bahagi dito, kung x mas mababa sa y, printf
("X ay mas mababa kaysa sa y").
Iba Pa kung ang x ay mas malaki kaysa sa y, i-print ang parehong.
Iba Pa i-print na ang mga ito ay pantay-pantay.
>> Kaya sa maikling salita, mayroong patas direktang sa pagmamapa o translation
ng wika nasaksihan namin sa gayon ngayon, kabilang ang para sa ilang
ng mas sopistikadong mga tampok.
Kaya hindi mo maaaring gamit ang para sa iyong proyekto, o maaaring hindi
ginagamit ito para sa iyong proyekto sa linggong ito.
Ngunit namin ang mga bagay na ito na tinatawag na array sa C. Sa simula,
sila ay tinatawag na mga listahan.
At nakita namin ito na may RPG ang Fruitcraft noong nakaraang linggo.
Ang maliit na asul na tao na paglalakad sa paligid, tumatawag
seresa at dalandan at tulad.
Maayos sa simula, na ay ipinatupad gamit ang orange
i-block na naglalaman ng mga salita, sa kasong ito, hindi namin literal
pagdaragdag ng "orange" sa isang
variable na tinatawag na imbentaryo.
Kaya sa C, ang syntax na ito ay pagpunta upang makakuha ng kaunti pa misteriyoso.
At kami na bumalik sa susunod na linggo na ito at makagawa ng higit pa
kawili-wiling mga bagay-bagay sa mundo ng cryptography dito.
Ngunit sa ibaba dito, ang dalawang linya ay mahalagang
isalin ang sa kung anong ginagawa namin sa isang scratch harangan up doon.
Ngunit higit pa sa na sa darating.
>> Kaya paglalagay ng ito nang magkasama, narito ang isang programa sa C. Kaya natin
mabilis manunudyo bukod ang ilan sa mga piraso ng syntax dito, ngunit
pagkatapos sabihin aktwal na simulan ang pagsusulat ng ilang code, maging pamilyar
sa ilan sa mga tool na namin ginagamit, at makita kung namin
maaaring bumuo sa ngayon ang ilan sa mga pangunahing mga bloke ng gusali mula sa
noong nakaraang linggo, ngayon syntactically sa C. Kaya sa tuktok dito, ito
ay marahil isa ng ang pinaka-pagbubutas programa maaari mong
sumulat sa karamihan sa anumang wika programming.
Ngunit ito uri ng ay may espesyal na kahulugan dahil ito ay
canonical programa na ang anumang computer siyentipiko nagsusulat kapag
pagtuturo sa isang tao ng programming language -
kumusta na programa ng mundo.
>> Kaya sa pinakatuktok, hindi namin makita ang paniwala na ito ng # include
at pagkatapos, sa angled bracket, stdio.h.
Kami ay pagpunta sa bumalik na, ngunit talaga kung ano na
ay nangangahulugan na may isang file sa mundong ito na tinatawag na standard
I / O, stdio tuldok h, at ito lamang ay isang text file na
may sinulat ni taon na ang nakakaraan.
At sa loob ng text file na iyon ang maramihang mga
andar, o pamamaraan, o pamamaraan, na ibang tao
sinulat ni na namin ang mga makikinabang ng dahil namin
ay maaari na ngayong gamitin ang code na tao.
Ng mga pagpapaandar na siya sinulat ni.
Sa kasong ito, printf ay hindi isang bagay na sinulat ni ko,
hindi isang bagay na CS50 sinulat ni.
Ito ay isang bagay na may sinulat ni taon na ang nakakaraan at ilagay sa isang
file na tinatawag na stdio.h at pagkatapos, bilang isang bukod, ilagay
isa pang bahagi ng pag-andar sa isa pang file.
Ngunit magkakaroon kami makarating doon.
>> Kaya # include lamang ang aming paraan ng pagsabi sa
C, akong bigyan ng access sa mga function na ang ibang tao sinulat ni.
At sa kasong ito mahalaga ako dahil gusto ko printf.
Ngayon makuha namin ang int pangunahing (walang bisa).
Kaya ito ay isa sa mga bagay na ito, lantaran, na sa araw na 0,
medyo magkano ang iyong ko sa uri ng zone out, dahil ito lang
hindi kawili-wili
intellectually, ilang ng syntax.
Ngunit sa ngayon malaman na ang mga pag-andar, kung hindi man kilala bilang
pamamaraan, o pamamaraan, sa pangkalahatan ay makagawa ng ilang mga halaga.
Ginagawa nila ng isang bagay.
Ang mga ito ay may isang sagot.
Makagawa sila ng output.
Kaya int sa tabi ng pangunahing lamang ang aming shorthand paraan ng pagsabi
na ito function, ang pamamaraan na ito, ay malaon pagpunta
upang bigyan ka ng isang numero.
At bakit na, magpapadala kami bumalik sa.
Main ay ang default na pamantayan ng mundo para sa default
function na upang isinasagawa sa isang C programa kapag
patatakbuhin mo.
Walang bisa lamang ay nangangahulugan na ang bagay na ito, ang pangunahing, walang
argumento, sa kasong ito.
Kaya ako sobrang tahasang.
Walang string sa doon, may mga kuwit.
Walang bisa ay nangangahulugan na walang mga argumento sa main.
>> Ngayon bilang wakas, thankfully, ang huling dalawang linya ay pamilyar.
Inside ang kulot tirante mayroon kami ng printf
at mayroon kaming isang pagbalik.
At return uri ng kapus-palad na mayroon kaming
ilagay ito doon, dahil sa kasong ito hindi ito ginagawa ang lahat ng
magkano ng interes.
Ngunit sa isang computer program, kapag ang isang function na nagbabalik 0,
na nangangahulugan lahat na rin.
Walang nangyaring mali.
Sa pamamagitan ng kaibahan, kung ang isang function na nagbabalik 1, o negatibong 1, o
negatibong 1337, o ilang mga random na numero tulad na, na
karaniwan ay nangangahulugan ng isang error na aktwal na naganap.
Kaya kung ikaw ay sa iyong Mac o iyong PC, kung sakaling mo na nakita
ilang mga nakakainis na mensahe dahil ang iyong computer ay nag-crash o
frozen, at may isang misteriyoso mensahe ng error,
at pagkatapos ay ang ilang mga code, tulad ng sistema code
1,2,3,4, ang ilang mga numero,
na sa pangkalahatan ay isang hindi kinakailangang detalye upang sabihin sa
karamihan sa atin mga tao, ngunit ang ilang mga function na o ilang
programa ay aktwal na ibinalik, di-zero na halaga.
At ang mga benepisyo ng ito ay na 0 ay nangangahulugan ng pati na rin, at
pagkatapos mo mahalagang ay isang walang-katapusang bilang ng mga bagay na
maaaring magkamali.
Alin ang kung bakit nila pinili 0 para sa mahusay at ng non-zero na halaga para sa
masama, bilang ay namin sa lalong madaling panahon makita.
>> Kaya sabihin sige at isulat ito.
Kaya isipin ang na sa iba pang mga araw ginamit ko ang aking Mac upang buksan ang isang
terminal na window, at pagkatapos ko binuksan up ng programa sa teksto, tulad ng
TextEdit, at ako makapagsimula pagsusulat ng ilang code.
Na rin na fine.
Ngunit ang iyong karanasan ay iba sa Mac, o
sa isang Solaris computer, isang Linux computer, anumang operating
sistema mangyari gumagamit.
At kaya sa kurso, kung ano ang namin sa halip na gamitin ang isang bagay
tinatawag CS50 Appliance.
Kaya CS50 Appliance ay isang nada-download na piraso ng software
na nagpapahintulot sa iyo na magpatakbo ng isang operating system na tinatawag na Linux,
partikular Fedora Linux, sa iyong sariling Mac o PC.
At gawin mo ito sa pamamagitan ng pag-download ng isang bagay na tinatawag na hypervisor.
Kaya ang lahat ng ito ay dokumentado sa hanay ng problema 1.
At makikita mo ginagabayan patungo sa kung ano ang kailangan mong i-download.
Ngunit ang resulta, kung mayroon kang isang Mac o PC, ikaw
i-download ang ilang mga libreng software.
Mo pagkatapos ay i-download ang CS50 Appliance, at sabihin sa iyo na
libreng software - ang hypervisor -
upang patakbuhin ang CS50 Appliance sa isang window sa iyong computer.
At ano ang mangyayari ito.
>> Ako ngayon, mapansin dito, kung ano ang lilitaw sa isang desktop
kapaligiran.
At ipaalam sa akin aktwal na-urong ito solong window.
Kaya ito ngayon ang aking Mac, na may maliit na window dito, at sa loob ng
ng window na ito ay mangyayari sa isang ganap na
ibang mga operating system.
Sa katunayan ito simula menu dito, nakapagpapaalaala ng
Windows, na may isang buong grupo ng mga sub menu, kabilang ang
isang link sa CS50 manu-manong, Dropbox, at ang mga tulad ng.
At kung ano ang kapaligiran ito ngayon ay isang karaniwang kapaligiran
na ang lahat sa atin ay maaari na ngayong gamitin, kaya na kahit na ano ang iyong
computer ay, kung ano ang iyong na-install ito, kung anong bersyon
ng Mac OS o Windows nagpapatakbo ka, tayong lahat ngayon ng
parehong kapaligiran.
At ngayon sa environment na ito maaari naming simulan ang pagsusulat ng ilang code.
>> Kaya ako pagpunta upang magpatuloy at buksan ang isang programa na tinatawag na gedit.
Ito ay maihahambing sa notepad.exe, o
TextEdit sa Mac.
At ito lamang ang napaka-simpleng programa ng pag-edit ng teksto
na ganito ang hitsura sa unang tingin.
Ngayon sa pinakatuktok, mayroon akong isang puting palette, sa ibaba ko
ito itim na window na nagsasabing appliance jharvard @.
At na dahil ang gumagamit ng account na aming pre-nilikha
para sa lahat ay tinatawag na John Harvard.
Siya ay may isang folder kung saan lahat ng kanyang mga file upang pumunta, at
narito ang kung saan maaari naming simulan ang pagsusulat ng ilang code.
Kaya hayaan mo akong magpatuloy dito at mag-zoom in ng kaunti lamang, at ako ay
pagpunta sa gawin # isama , int pangunahing (walang bisa), at
pagkatapos ay ako pagpunta sa gawin printf ("Hello World")
; Bumalik ang 0.
Ngayon ito ay ang lahat ng medyo black and white.
>> Hayaan akong magpatuloy at gawin ang isang bagay upang magturo ng gedit kung ano ang ako
aktwal na paggawa.
Hayaan akong pumunta sa I-save Bilang.
Ako pagpunta sa pumili sa kaliwang bahagi dito jharvard.
Sa muli, kahit na hindi mo na ginagamit Linux bago, lantaran
mga araw na ito, ang lahat ng mga ito ay devolving sa mahalagang
parehong uri ng interface -
Mac OS, Windows, at Linux.
Kaya ko pinili bahay folder jharvard dito.
At ako pagpunta sa i-save ang file bilang hello.c.
Kaya sa pinakatuktok, ako-type hello.c; pagpapangalan ng isang C
programa na may extension na. c
kung ano ang karaniwang kasanayan.
At ako ay pindutin ang I-save.
At ngayon kung ano ang magaling na epektibong ko na nagturo gedit,
na ito ay isang C programa.
Pansinin na ang aking itim at puting teksto na ngayon ang kulay code, o
syntax highlight, na lang humahatak sa aking pansin ang
ibang semantiko bahagi ng programa.
Sa kaliwang tuktok doon, ng aking mga programa makakuha ng mas kumplikadong, ako
pagpunta sa magkaroon ng isang buod ng lahat ng mga bagay na isinulat ko.
Kaya na ito doon.
Kaya ipaalam sa akin ngayon mag-zoom out at pumunta sa terminal window na ito.
>> Kaya ito ay marahil bago sa maraming tao.
Kung hindi mo na ginagamit ang isang kapaligiran sa linya ng command na, hindi mo kailanman
ginagamit DOS, o hindi kailanman ginamit mo ang Linux, o hindi mo pa nabuksan
iyong Mac OS terminal na window, mayroong maraming mga bagay na
maaaring gawin gamit ang GUI, tulad ng pagturo, at pag-click, at
pag-drag at drop, at tulad ng, ngunit sa pangkalahatang -
tiyak sa mundo ng computer science -
gamit ang command line, kung saan hindi mo ang iyong mouse
pangkalahatan, mayroon ka lamang ng iyong keyboard, talagang ng maraming
mas malakas na kaysa sa interface, sa sandaling ka makapag acclimated sa
iba't-ibang mga utos.
At ikaw uri ng libreng ang iyong sarili nangangailangan upang ituro at i-click ang
sa lahat.
Kaya sa gedit magpapadala kami pag-uri-uriin ng may ang pinakamahusay na ng parehong mundo.
Maaari naming i-drag at i-drop ang teksto, maaari naming makita ito
Nice at kulay code.
Ngunit pagdating oras upang patakbuhin ang aming programa, bibigyan namin minsan
lamang gamitin ang maliit na window dito.
>> Kaya ako pagpunta upang magpatuloy at gawin ito.
Sa ilalim itim at puting window, ako pagpunta sa magpatuloy
at isulat kumalatong.
At kumalatong ay ang pangalan ng isang tagatala.
Ito ay isang programa na-convert sa aking source code
sa, kaya, code ng bagay.
0s at 1s, na nakita namin maikling noong nakaraang linggo.
Manariwa sa diwa mula sa nakaraang linggo, aming ipinangako na namin ang pagpunta sa
pumunta mula sa isang bagay tulad nito - kailangan namin upang maging
isang bagay tulad nito -
at ito ay tiyak na hindi isang bagay na ang isang tao ay pagpunta
gawin mano-mano.
Kaya sa halip kami ay pagpunta sa gumamit ng isang programa, at na programa sa
kaso na ito ay tinatawag na kumalatong.
At ang pangalan ng aking mga programa ay hello.c.
Kaya upang makatipon ng hello.c mula sa source code sa
object code, o 0s at 1s, dapat sumapat sa lamang gawin
ito at pindutin ang Enter.
>> Okay, walang Mukhang nangyari.
Ngunit alam ko na ngayon, o mula sa nakaraang linggo, na ang default na pangalan ng
isang programa, kapag nakasulat sa C, maloko tinatawag a.out.
Karamihan sa mga hindi kawili-wili pangalan maaari mong makabuo ng.
Ay ang unang titik ng alpabeto, out ay kung ano ang
outputted, ngunit kaya ito.
Ito ang aking programa, at ngayon tuldok slash, dahil kakailanganin namin nakikita, ay
aktwal na lamang ang uri ng mga tampok sa seguridad, dahil
a.out ay isang programa na ako sinulat ni.
Hindi ito dumating sa aking computer,
hindi sa Program Files.
Ito ay wala sa mga folder na Application sa Mac OS.
Kailangan ko bang maging sobrang tahasang gamit ang computer, at sabihin
programang ito, a.out, sa kasalukuyang folder, ang
kasalukuyang direktoryo.
At ang paraan na kinakatawan mo ito sa isang kapaligiran tulad nito
ay ang tuldok ay kumakatawan sa anumang folder ikaw ay kasalukuyang.
At iba pa. / Lamang ay nangangahulugan na ang magpatakbo ng a.out
sa kasalukuyang folder.
At magpatakbo ko ito sa Ipasok, at voila, ang aking unang programa.
>> Ngayon ipaalam sa akin tumagal ng isang hakbang pabalik.
Isang maliit na maliit ang window na ito, at mapagtanto na sa ilalim
kaliwa ng appliance dito ang isa pang icon.
Isa ay Chrome, na dapat na medyo pamilyar, lamang ng isang web
browser sa loob ng appliance.
At ang black and white na icon ay lamang
mas malaking terminal na window.
Kaya kung ito ay nakakakuha ng kaunti nakakainis na upang pag-uri-uriin ng may lamang
ito maliliit na maliit na hiwa ng isang window kung saan upang makipag-ugnay
sa mga programa, maaari naming sa halip gawin ito.
At ngayon hayaan mo akong magsimulang mag-type ng ilang madaling
pamilyar utos.
ls.
Kaya ls command para sa listahan.
Kaya sa isang Mac OS o Windows, nais mong pangkalahatang-double-click sa isang
folder at pagkatapos, voila, makikita mo ang lahat ng iba't-ibang mga file
at mga folder.
Sa isang kapaligiran ng command line, kung saan maaari ka lamang mag-type
utos o text, ang ls ay ang katumbas.
Kaya ipakita sa akin kung ano ang sa direktoryong ito.
>> Ngayon ay mayroong isang bungkos ng mga bagay-bagay dito na parehong maliit
pamilyar at isang maliit na pamilyar.
Ngunit notice na tulad ng Windows at Mac OS, jharvard
may isang desktop folder.
Kaya ang anumang mga icon na sa aking desktop mangyari
sa folder na iyon.
Mayroong isang folder ng mga download, mga bagay-bagay na
Chrome ay maaaring ilagay doon.
Dropbox.
Kaya appliance ay may built-in na suporta para sa Dropbox
upang sa ibabaw ng semestre, maaari mong i-sync sa iyong Dropbox
account upang ang lahat ng iyong mga programa ay nai-back up.
Hindi nila maa-access sa iyong iba pang mga computer.
Kung anumang kailanman napupunta mali sa mga appliance, maaari mong
napaka madaling mabawi mula sa Dropbox.
Kaya folder na doon para sa.
Mayroong dalawang mga file na ginawa ko - hello.c
at a.out.
At pagkatapos ay sa kanan ang ilang iba pang mga folder na bibigyan namin
makapunta sa patungo sa katapusan ng semestre, may web
programming.
Kaya kapag gagawin ko. /, A.out, Ipasok, na sinasabi pumunta
sa direktoryo ako sa, ang kasalukuyang direktoryo, at magpatakbo ng
programa na tinatawag na a.out doon.
>> Karapatan lahat, kaya na maganda at mahusay, ngunit ito ay hindi lahat na
nakapanghihimok upang magsulat ng isang programa na tinatawag na matulungan a.out.
Upang maaari naming aktwal na gawin ito ng kaunti naiiba.
Kaya sa halip na lamang tumatakbo kumalatong, hello.c, sabihin magdagdag
kung ano ang tinatawag na isang argument ng linya ng command na.
Kaya isang command line argument, o lumipat sa kasong ito, ay
isa pang salita o parirala na nagta-type ka sa prompt pagkatapos
ang programa na gusto mong patakbuhin.
Kaya sa kasong ito, kumalatong ang programa Gusto kong patakbuhin,-o
Nangangahulugan ang output ng isang file na hindi na tinatawag na a.out.
Output ng isang file na tinatawag na halo, at gawin ito sa pamamagitan ng kino-compile ang
huling salita sa linya, hello.c.
Kaya sa maikling salita, ito ay isang napaka nasa gilid pagpapabuti, kung saan
sa halip ng pagkakaroon ng ito stupidly na pinangalanang a.out file,
Ko na ngayon gawin kumalatong-o kumusta, pagkatapos hello.c, at
pagkatapos ay pindutin ang Enter.
Walang tila sa mangyayari, ngunit muli mas gusto na may 0 - kapag
walang tila mangyari na nangangahulugan na walang maling nangyari -
kaya sabihin gawin ng ls ngayon, Ipasok, at sa katunayan ako ngayon
magkaroon ng isang halo na programa.
Kaya kung type ko kumusta ngayon, ang utos ay hindi nahanap.
OK,. /.
Kaya akmang-akma.
Kaya dahil sa programang ito sinulat ni ko, at hindi ito ay may
computer,. / kumusta, Ipasok, ay nangangahulugan na
Ako nagpapatakbo ngayon kumusta.
>> Kaya na ito doon.
Ngayon kung ano ang makikita namin kalaunan sa higit pa at higit pang mga linya ng command
argumento na ay nagbibigay-daan sa amin upang makagawa ng higit pa, ngunit para lamang sa mga para sa
kanino maaaring ito ay lumang sumbrero, hayaan mo akong tunay na pumunta sa isang
direktoryo dito at magbibigay sa iyo ng isang teaser kung gaano tao namin
maaaring pumunta tungkol sa pagpapatupad ng halo mundo.
Hayaan akong pumunta sa dito, at ako pagpunta upang buksan ito.
Sa aktwal, ako pagpunta sa ipaliwanag kung ano ang ako ginagawa, kaya
ito ay kapaki-pakinabang.
Hayaan akong muli.
>> Kaya ko na ginagawa ito ng mahabang panahon.
Kaya mapapansin sa kanan may isang pares ng mga
mga direktoryo na ay nang kakatwa na may pangalang source1m at source1w.
Ito ay lamang ulok convention ginagamit namin.
Ay nangangahulugan lamang ng Pinagmulan ng source code, 1 ay nangangahulugan na ito ang isang linggo, at
m nangangahulugan ito Lunes, at w nangangahulugan ito ay Miyerkules.
Kaya walang misteriyoso doon.
Shorthand notation.
Mga asul na mga bagay ay ang mga folder, kung hindi man kilala bilang
mga direktoryo.
Gusto kong pumunta sa folder na iyon sa ngayon, at sa isang normal na computer
Ko lang double-click sa isang icon ng folder at
may lahat ng aking mga file.
Ngunit sa isang kapaligiran ng command line, hindi pa ako makapag gawin
na, kaya sa halip, mayroon akong upang baguhin nang manu-mano ang mga direktoryo.
Kaya kung type ko cd at pagkatapos source1m, Ipasok, mapapansin na ang
aking prompt, ang mga bagay ng kulay puti sa kaliwa, lamang ay nagbago.
At kaya sa katunayan, kapag ito ay sinabi ng mga panaklong at pagkatapos ay ang
maliit squiggle, ang tilda simbolo, na nilalayong lamang ako ay
sa home directory John Harvard, ang kanyang My Documents,
kanyang mga personal na mga file.
Ngunit ngayon sa panaklong sabi ni ~ / source1m.
Ito ay nangangahulugan lamang ako sa isang folder na tinatawag na source1m
na sa home directory John Harvard.
Kaya kung gusto ko ngayon upang ilista ang mga file sa folder na ito, madaling
tanong, type ko lang ls.
At ngayon ko makita ang lahat ng mga file na ko bang unang nilikha para sa ngayon
panayam, ang lahat ng, o karamihan sa mga ito, mangyayari
magtapos sa. c.
>> Kaya hayaan mo akong magpatuloy ngayon at patakbuhin ang gedit ng isang programa na tinatawag na
holloway.c, na nakasulat sa pamamagitan ng ilang mga random na Hacker
sa Internet, na mukhang isang maliit na tulad nito.
At hindi namin pagpunta sa pumunta sa pamamagitan ng isang ito sa anumang
detalyado, ngunit para sa mga mas kumportable, sa partikular, kung
gusto mong tumagal ng hula sa kung ano ang programang ito ang dito.
Maging panatag, kung ikaw ay mas mababa o mas kumportable,
hindi namin kahit sa ganitong uri ng bagay sa pamamagitan ng pagtatapos ng
ito semestre.
Ito ay kung ano ang isang halimbawa ng isang paligsahan ng nakapailalim C, na
paraan isulat ang pinaka-misteriyoso hinahanap program na posibleng
Maaari lumalo ang iba pang mga na smart tao, na katulad
pagsubok na magsulat ng mga bagay at ipakita-off na maaari nilang isulat
mas misteriyoso mga bagay kaysa sa iyo.
Kaya ito ay hindi isang halimbawa ng isang mahusay na nakasulat na programa mula sa
pananaw ng estilo, ito ay isang halimbawa ng isang program na
panalo sa isang paligsahan, para sa mga taong sinusubukang i-
maging malabo at abstract.
>> Kaya kung patatakbuhin namin ang bagay na ito, hayaan mo akong pumunta sa aking terminal na window,
kaya magsalita.
Kaya ang black and white na kapaligiran ay tinatawag na
terminal na window sa pangkalahatan.
Hayaan akong magpatuloy at makatipon ito.
Hindi ako pagpunta sa gamitin ang kumalatong, dahil ang programa na ito ay isang
kaunti misteriyoso at Kailangan ng ibang
tagatala, tinatawag GCC.
Subalit ipinapakita ang parehong bagay.
Ito ay tumatagal ng source code sa code ng bagay.
At ngayon kung nagpatakbo ako ng a.out, na programa
lamang nakita Ginagawa ito.
Upang ang kapwa na taon ay napanalunan na paligsahan.
Paano't paano man, hindi namin pagpunta sa na direksyon, per se.
>> Kaya sabihin aktwal na subukan sa ngayon manunudyo bukod kung ano ang maaari naming gawin
sa mga pangunahing mga bloke ng gusali upang gumawa ng higit pa at higit pa
kawili-wiling programa.
Kaya namin ang nakasulat na programa, kami magpatakbo ng programa.
Ngayon ay maaari namin ang aktwal na pasimplehin at hindi na na magsulat
kumalatong ang salita sa prompt.
Ito lumiliko out ng aming mga programa makakuha ng higit pang misteriyoso, kaya namin, o
mas kumplikado kaysa, maaari naming aktwal na patakbuhin ang command na ito.
Kaya hayaan mo akong bumalik sa aking home directory, kaya na magsalita, hayaan mo akong
alisin - rm ay ang alisin ang utos - I'm upang alisin
ang file na tinatawag a.out at kumusta.
At ngayon ay mapapansin sa isang kapaligiran ng command line, tulad ng sa
GUI, makakakuha ka ng prompt. Hindi ko maaaring i-click ng isang pindutan bagaman; ko
i-type ang y para sa yes, y para sa yes.
At ngayon kung ako type ls muli, notice na mga berde
programa - a.out at kumusta -
ay nawala.
Mag-ingat rm.
Maaari itong gumawa ng mga masamang bagay, tulad ng maaari mong sa pamamagitan ng pagkaladkad
bagay sa iyong basura.
>> Kaya ngayon sabihin magpatuloy - at maaari kong gawin ito - kumalatong-o
kumusta, kumusta -
Na ako nababato type na utos.
Kahit na-type ko ito ng kaunti mabilis.
Upang maaari naming halip gawin gumawa ng halo.
Kaya't ay hindi tagatala.
Ito ay isang friendly na programa na may Linux, sa
kaso - operating system -
na automates ang proseso ng kino-compile ang mga programa.
Kaya sa halip na alala kumalatong-o filename at
pagkatapos iba pa, lalo na sa sandaling mga linya makakuha ng na at
na, maaari ko lang magsulat ang gumawa.
At ito ay upang sabihin ang lahat ng buong grupo ng mga bagay-bagay na
namin ay makakita ang semestre na ito.
Ngunit mapansin ngayon kung nagta-type ako ls, kumusta pabalik sa aking direktoryo.
At sa katunayan ang maaari kong patakbuhin ito sa. / Kumusta.
Kaya gumawa lamang automates ang proseso ng tumatakbo kung ano ang,
sa kasong ito, ang isang mas matagal, mas kumplikado command.
Kaya kami ay upang simulan ang paggamit ng Magsagawa, dahil lang sa ito ng maraming
mas user friendly.
>> Ngunit ngayon sabihin ng mas kawili-wiling programa
pa sa kamustahin.
Kaya sa mga programa namin na nakasulat sa gayon ay malayo may pangunahing.
Na lang ang default na bagay na kicks ng lahat off.
Ngunit mayroong iba pang mga function out doon pati na rin, at
stdio.h ay ang mga bagay na nakita natin sa tuktok ng aming
file bago, at na kung ano ang kilala bilang ang karaniwang library.
Sa loob ng standard library ng buong bungkos ng mga function
may iba sinulat ni, at maaari naming simulan ang paggamit ng mga
function na magsulat ng higit pang mga
kawili-wiling programa ating sarili.
>> Kaya hayaan mo akong bumalik sa appliance.
Ako pagpunta upang isara ang window ng terminal.
Pupunta ako upang isara ang mga bagay na aming sinulat ni mas maaga, at pumunta lamang
sa hello.c, at mapapansin ngayon ang maaari kong gawin ang mga sumusunod.
Kamusta mundo ay hindi lahat na kawili-wili, nais kong
-personalize ang program na ito para sa aking sarili.
Kaya sa halip ng mga sinasabi mundo, ako pagpunta sa
sige at sabihin -
Maaari kong i-type ang David - ngunit ito ay talagang uri ng
sa panimula ang parehong.
Ngunit sabihin subukan ang placeholder ideya.
Manariwa sa diwa na sa C, sa halip na sa printf, nagkaroon kami ng mga
placeholder, at mayroong higit pa sa% d.
Kaya% d ay, quick katinuan check.
Okay, decimal na numero, na.
Decimal digit, na ang lahat.
Kaya% c, bilang ay nakatagpo namin, pagpunta sa isang character.
Ilagay ang isang character dito, isang sulat sa pamamagitan ng z,
o simbolo ng bantas.
Ang isang character,% f, sinuman malaman mula sa iba pang mga wika?
Kaya ng lumulutang na halaga ng point.
Ang isang tunay na numero.
Kaya hindi decimal numero - ito ay talagang isang tunay na numero na may
isang decimal point, at ilang bilang ng mga digit sa kaliwa
at kanan nito.
% S, string.
Na kami ay pagpunta upang makita ang medyo madalas.
String A, muli, lamang ang isang salita, parirala, ang pagkakasunud-sunod ng mga
indibidwal na mga character.
At bilang wakas, lld?
Kaya ito ay higit pa ng isang kaso ng sulok.
Mahaba, mahaba decimal.
Kaya kung nais mong hindi lamang bilang na ito malaki,
gusto ng mas malaking numero, ka upang tukuyin
ang computer na ito ng isang partikular na laki.
>> Kaya sabihin tweak ito ng kaunti.
Sa halip na lamang hard code sa David, hayaan mo akong bahagyang
sabihin dynamic s%.
Kaya ilagay ang% s dito, kung saan ay isang placeholder para sa isang string.
Pagkatapos ipaalam sa akin gawin kuwit, at pagkatapos ay "David" sa paglipas dito.
Ngayon, ito ay hindi lahat na intellectually kawili-wili,
dahil ang lahat ng nagawa ko na ngayon ay talagang lumikha ng mas maraming trabaho para sa
ang computer.
Sa halip na sabihin sa computer na ito nang sabay-sabay, ako ngayon
sinasabi gawin ito at magpasok ng isang string sa dito sa kalaunan, kuwit,
dito ay na string.
Kaya ito ay hindi isang mas mahusay na pagpapabuti, ngunit ito ay hindi bababa sa
isang hakbang patungo sa mas kawili-wiling programa.
Dahil ngayon, hayaan mo akong magpatuloy at ang window na ito ng kaunti
mas malaki, hayaan mo akong magpatuloy at patakbuhin ang gumawa ng halo.
At ngayon,. / A.out ay hindi gumagana, bakit?
Lahat ng karapatan, ngayon kumusta na tinatawag.
Kaya muli gumawa, at din kumalatong na may isang-o, pangalanan ang
programa ng isang bagay na mas kawili-wiling.
At voila: ngayon sabi ni si David.
>> Lahat ng karapatan, pa rin ng bobo programa.
Kaya ngayon sabihin aktwal na bumalik dito at ipakilala ang paniwala
ng isang variable.
Hindi magiging maganda ang kung maaari ko ipinapahayag ng variable
na ang uri ay string?
At halaga ng variable na aktwal na ay mula sa gumagamit
sa kanya o sarili.
Sa mang, ako tumawag sa aking mga variable na s, na
isang karaniwang convention kapag mayroon kang isang variable na tinatawag na
ang string.
Ako pagpunta sa gawin ang katumbas sign, at pagkatapos ay ako pagpunta sa tumawag sa isang
function na tinatawag GetString.
Kaya GetString ay hindi isang bagay na ay binuo sa C. Ito ay
isang function na ang CS50 kawani sinulat ni, talagang para lamang sa
mga unang ilang linggo, upang pasimplehin ang proseso ng
pagkuha ng input ng user at pagkakaroon ng input ng user sa form
ng string, o numero, at tulad.
Kaya GetString ay tulad ng printf, ngunit malinaw naman sa halip na
i-print ito upang gawin kung ano ang pangalan nito sabi, kumuha ng isang string.
Ngunit upang gamitin ang GetString, kami ay pagpunta sa may upang gumawa ng isang pagbabago
dito, lampas ito.
Kaya intuitively, ang program na ito, sana, ay pagpunta sa sa paanuman
makakuha ng isang string mula sa gumagamit, at pagkatapos ay kung ano ang pagpunta sa gawin
may string na iyon, na tinatawag na mga?
Lamang ito upang i-print ito, i-right?
Hindi pa rin ng stimulating programa dahil lahat ng ito ay pagpunta
gawin ay ang plug sa halaga na kung saan% s
sabi na dapat ito pumunta.
>> Kaya hayaan ng hindi bababa sa makita ito sa aksyon.
Hayaan akong i-save at mag-zoom out.
Ngayon sa aking terminal na window dito, ang maliit na hiwa ng isa,
hayaan mo akong muli gawin gumawa ng halo.
Okay, at ah, mapahamak; Nakatanggap ako ng isang buong grupo ng mga error.
Hayaan ang mag-scroll up ako, at nakikita namin ang aming unang -
kaya sabihin aktwal na gawin ito sa isang mas mas malaking window upang
maaaring makita kung paano di-wastong ko screwed up -
kaya't kumusta.
Okay, na kalamidad, tama?
Ko ang nakasulat na tatlong linya ng code, at
ito ay ibinigay sa akin ang 12 error.
Kaya bakit ito?
Kaya masuwerte, malimit kapag nakita mo ang marami, maraming mga error
pagsigam nang sabay-sabay, talaga lamang dahil ikaw
nalilito ang computer dito.
At nananatiling nalilito sa pamamagitan ng ang oras ay nakakakuha ito pababa dito.
At kaya lamang nagsisimula balakid, at stumbling, at
pagsigam mas nakakatakot bagay kaysa sa aktwal na nalalapat.
Kaya sa pangkalahatan, palaging magsimula sa sa tuktok.
>> Kaya ang pinakatuktok Halimbawa ng pula, ang
mensahe ng error na ito.
Gamitin ng hindi nagbigay-alam identifier string, ang nakuha ko
ibig sabihin ng pamantayan sa?
Ko hindi.
Nilalayong ko ang string, ngunit ito ay dahil, masyadong, ang salita string
na panatilihing ako gamit pasalita aktwal
Hindi umiiral ang sa C alinman.
Ito ay isang bagay na gagamitin namin para sa unang linggo o dalawang
dito, ngunit ito ay umiiral sa isang file na tinatawag na cs50.h.
Kaya sa ngayon, alam na mayroong iba pang mga library na ito na ang
kawani sinulat ni, kaya ito ay nakasulat na mas kamakailan kaysa
stdio.h.
Ngunit sa loob ng cs50.h isang kahulugan, ang isang kasingkahulugan ng
uri, na lumilikha ng salita string na ito.
>> Kaya ngayon hayaan mo akong bumalik sa aking terminal na window.
Ako pagpunta upang i-clear ang buong gulo sa pamamagitan ng Ctrl-L. Bibigyan namin lamang
punasan ang lahat malinis, at ako pagpunta sa sige at gumawa ng
kumusta muli, ang Enter.
Kaya kung ano ang nangyari ngayon?
Ngayon ang lahat ng mga error nagpunta ang layo.
Kaya kung ano na ko talagang gawin?
Tinuruan ko na ang computer na string umiiral, at ito ay
sa file na iyon na tinatawag na cs50.h.
Kaya itigil ang nagrereklamo, dahil ngayon ay alam mo kung saan makikita ang
deklarasyon na function na upang magsalita.
Kung saan ito umiiral sa mundo.
>> Kaya ngayon ako pagpunta upang magpatuloy at magpatakbo ng halo.
Mukhang kong magkaroon ng isang walang-katapusang loop, mangyari walang.
Kaya kailangan kong i-type ng isang bagay dito, kanan.
Ang unang linya ng code sa aking programa GetString.
Kaya literal ito ay naghihintay para sa akin upang makakuha ng isang string.
Kaya sa pakiramdam na oo, ito ay isang walang-katapusang loop.
Tila sa GetString ay default na pag-uugali na namin
sinulat ni - sa mga tauhan -
na lamang na nagsasabing maghintay at maghintay at maghintay at maghintay at maghintay,
hanggang user ang nagbibigay sa iyo ng isang string sa pamamagitan ng pag-type ng isang bagay.
Kaya hayaan mo akong magpatuloy at uri sa D-a-v - i-d, Ipasok.
At doon ito ay, si David.
>> Ngayon ito tila tulad ng ito ay isang gawa?
Hayaan akong magpatuloy at i-type sa Tommy.
Ipasok, okay, mukhang nagtatrabaho.
Works para sa Rob, gawa para sa Zamyla, ay gumagana para sa - okay.
Kaya pagpunta sa gumana, malamang.
Kaya dapat itong i-print ang anumang aktwal na namin bigyan ito,
at maaari naming ng kaunti mahirap dito.
Hayaan ang mga makita kung ginagawa namin ng isang bagay tulad ng halo.
Maaaring pumunta dito, sabihin makita, kopyahin, i-paste.
Hindi ako pagpunta sa i-paste na maraming beses dito.
Paste, okay, Shift + Ctrl + V. Kaya kung ano ang maaari
mangyari na ang masamang dito?
>> Okay, sa gayon, segfaults.
Kaya ang ilan sa inyo may bago background ay malaman na
pangkalahatan, ang pagbibigay ng mga computer ng maraming input kapag sila
marahil ay hindi ginawa upang makatanggap ng mahabang pangalan tulad nito - masamang
bagay mangyari.
Sa katunayan, sa mundo ng web, masyadong, nangyari ito lubos ng kaunti,
kung saan kapag ikaw ay pagdidisenyo ng website, kapag handa ka
Pagdidisenyo Facebook, mayroon kang gumawa ng mga arbitrary desisyon up
harap, tulad ng kung gaano katagal aabutin ng isang tao
Facebook username?
O kung gaano katagal ang pangalan ng isang tao?
Gaano katagal ang numero ng telepono ng isang tao at ang gusto.
At kung ang mga programmer gumawa masamang pagpapalagay, ang mga programa ay masira
dahil sinubukan mong na nagbibigay sa kanila ng higit na output, higit pang mga input
sa halip, kaysa sa mayroon silang memory.
O RAM ay inilalaan para dito, at kaya kung ngayon ko pindutin ang Enter,
programa na aktwal na nagtrabaho, sapagkat hindi namin nagawang sa library
at aktwal na namin inaasahang partikular na kasong ito.
Ngunit walang pagsala semestre na ito, ikaw ay sumulat ng hindi bababa sa isang
programa na sabihin ng mga salitang ito.
Tandaan ang mga linggo mula ngayon, siguro dalawang araw mula ngayon.
Segmentation fault ay isang masamang bagay.
Ito ay sumangguni sa iyong paggawa ng isang bagay na ang computer
ay hindi inaasahan.
At sa kasong iyon,, programmer, ay hindi inaasahan.
Karamihan bang kung ano ito tumpok ng mga medyas, may mga iba't-ibang
sulok kaso kami nakatagpo.
Katulad nito sa mga programa kung hindi mo inaasahan kung gaano katagal ay
ang pangalan ng isang tao upang maging.
O kung ano kung mayroon ako ng nakahahamak na gumagamit, at ang kanyang pangalan ay
aktwal na medyo maikling, ngunit lamang sinusubukan nila
sa gulo sa akin?
Kung ano ang nangyayari na ang pag-uugali ng aking mga programa?
Well, sa kasong iyon, isang bagay na maaaring aktwal na pag-crash ng.
>> Kaya sabihin gawin ito.
Sa 90 minuto, ito ay isang kahindik-hindik na mahabang panahon
computer science.
Bakit hindi namin sa ugali ng pagkuha ng limang minuto
masira dito, at kapag dumating namin pabalik, makikita namin sumisid sa ilang
mas kumplikado at kapansin-pansin na mga programa?
Limang minuto.
>> Ayos lang.
Kaya isang mabilis na komento.
Ako Sinabi na kahit na ito ay sa screen bago, kung ano ang
dumating ng aking bibig ay cs50.net/rsvp.
Ito ay tama. cs50.net/lunch.
Kaya ngayon maaari mong subukan ang RSVPing para ito sa / tanghalian.
Ngunit sabihin gawin ito ngayon.
Kaya ito ay sobrang mabilis, sobrang bagong para sa maraming mga tao.
Lumang sumbrero para sa ilang mga tao.
Kaya sabihin rewind para sa sandali lamang, at makita kung paano namin nakuha sa
ito kumusta na output ng mundo sandali lamang ang nakalipas.
>> Sa una, ito CS50 Appliance.
Muli, ang piraso ng software, problema itakda ang 1 pagpunta sa sabihin sa
sa iyo kung paano i-download ito, kung saan upang i-download, kung ano i-click ang
at iba pa.
At pagkatapos ay sa sandaling sundin mo ang mga tagubilin, makikita mo magagawang
upang i-maximize ang iyong window, at iyong Mac o PC ang magiging hitsura ng
maliit na isang bagay na tulad nito.
Ang isang itim na background, home folder sa itaas kung saan ang lahat ng
iyong mga file, ang basura ng lata sa kaliwang tuktok,
isang menu sa ibaba.
Kaya muli, medyo katulad sa espiritu sa Mac OS o Windows,
kahit na ang mangyayari sa Linux.
Kaya kung ano ang susunod naming gawin?
Well, nagsimula kaming pagsusulat programa.
At isipin ang mula sa nakaraang linggo na ang lahat ng ito ay tumatagal upang magsulat ng isang
programa ay isang simpleng editor ng teksto,
tulad ng Notepad o TextEdit.
Lantaran, kahit mo maaaring gamitin ang Microsoft Word.
Ngunit ang masamang bagay ay malaon mangyayari, dahil na isang napaka
malupit na solusyon para sa pagsusulat ng programa, kasama bibigyan ito
i-save ito sa maling format ng file.
Subalit isang editor ng teksto, isang word processor, ang lahat ng na
kinakailangan upang magsulat ng isang programa.
>> Kaya sa CS50 Appliance, maaari naming gawin ito sa isang simpleng paraan.
Maaari naming i-click lamang ang icon na ito sa ibabang kaliwang.
At muli, ang problema magtakda ng 1 ay payuhan ng ito, at voila -
makakakuha ka ng ito itim at puti interface kung saan maaari naming magsimula
sumusulat code.
Kaya natin simulan ang muling pagsusulat ng isang napaka-simpleng programa.
Ako pagpunta sa pumunta sa File, I-save, at ako pagpunta sa tumawag sa
ito, sabihin nating, hello2.c.
At ako na nagsasabi sa ito sa pamamagitan ng pag-click sa jharvard, ilagay ito
sa home directory nito, hindi ko talagang pakialam
kung saan ito napupunta.
At pagkatapos ay I-save.
At ngayon maaari kong simulan ang pagsusulat ng aking programa.
At manariwa sa diwa ko mula sa mas maaga na mayroon akong sumulat int
pangunahing (walang bisa).
Mag-zoom in sa kaliwang tuktok.
At pagkatapos ay gusto kong sabihin printf, magsagawa ng dalawang.
At ngayon isang newline, malapit quote, isara
panaklong, semicolon.
At pagkatapos ay pumunta down na ako dito sa aking terminal na window na
naka-embed sa gedit, para sa kaginhawahan.
At ako pagpunta upang magpatuloy at isulat ang gumawa kumusta, ngunit hindi
kumusta nag-iisa, hello2.
>> Kaya ang aking file ng tinatawag hello2.c. Aking file samakatuwid
ay dapat na matawag hello2, sa kasong ito.
Dammit, kung ano ang gagawin ko mali?
Karapatan lahat, kaya ko malinaw tinanggal ng isang line, kung manariwa sa diwa mo kung ano ang
nakaraang programa hitsura.
Ngunit sabihin makita kung hindi namin maaaring manunudyo ito bukod.
Sa kasamaang palad, ang karamihan ng mga tao na isulat ang mga programa na kung saan
isulat namin ang mga programa ay hindi gawing simple ang mga bagay sa lahat ng na mahusay na.
Kaya kami ay may sa uri ng sagap sa kung ano ang hindi masyadong gumawa
kahulugan dito at makita kung maaari naming malaman kung ano ang mali.
Ang unang linya sabi nang kataon lamang deklarasyon C
printf may uri int ang function na ng library.
OK, naunawaan ko ang bahagi ng na.
Ngunit mukhang alluding sa katotohanan na ginamit ko printf
mali, sa paanuman.
At kung ano ang kahulugan ay mali?
Ko lang ay hindi magturo sa computer na ito sa isang file
tinatawag stdio.h.
Ngayon ko lang lamang kabisaduhin ngayon na printf ay
sa stdio.h, at sa katunayan may makikita iba pang
mga function sa parehong file na iyon na namin masanay sa.
>> Kaya ngayon hayaan mo akong sige at pindutin ang Ctrl-L lang i-clear na
ang layo, muling palabas ng pelikula gumawa hello2, at voila.
At sa command na ito muli, mas kumplikado kaysa sa ipapaliwanag namin kung para sa
sa mga layuning ngayon.
Ngunit ito ay magpatakbo ng kumalatong, at kumalatong tumatagal ng source code at
spits 0s at 1s.
At ang mga 0s at 1s sa kasong ito ay tinatawag na kung ano?
Okay, bagay ang code.
At ang file na sila sa tinatawag na, kaya,
hello2, sa kasong ito.
Dahil ang aking text file ay hello2.c, ang Enter.
At ngayon ko dalawang exclamation point, exclamation
point, exclamation point.
Lahat ng karapatan, kaya na namin ngayon ang kakayahan upang makakuha ng mga string,
tila.
Well, ano pa ang maaari naming makakuha ng mula sa mga gumagamit?
>> Na rin sa CS50 library, mayroong iba pang mga function na
upang gawing simple ang aming mga buhay sa mga unang ilang araw.
GetChar, GetDouble, GetFloat, GetInt,
GetLongLong, GetString.
Well, sabihin kumalbit off ang pinakamadaling ng mga unang.
GetString literal ginagawa na.
Lang makikita doon, naghihintay para sa user i-type ang isang bagay sa,
at sa lalong madaling panahon bilang ako-type ang isang bagay sa at pindutin ang Enter,
ang isang bagay na may halaga na.
Kaya sabihin bumalik na halimbawa upang makita kung ano mismo ang
GetString ay ginagawa.
Hayaan akong sige at buksan sa gedit, hello.c, at isipin ang
na kanan bago ang pahinga, ito ay kung saan namin tumigil.
>> Kaya natin ngayon manunudyo ito bukod sa ng kaunti pa sa detalye.
Kaya sa linya 6, may dalawang bagay
nangyayari sa ngayon.
Ang katumbas sign naghihiwalay ng unang kalahati at ikalawang kalahati.
Kaya sa kaliwang bahagi ng katumbas sign, hindi namin
sinasabi string s.
At pagkatapos, sa mga tuntunin lamang lego ng, kung ano ang string s
ginagawa, tingin mo?
Ito ay ang paglikha ng isang kung ano?
Kaya ito ay lumilikha ng isang string na tinatawag na mga.
Ngayon kung ano ang na talagang ibig sabihin?
Well, ito mapagtipid ng espasyo para sa isang string na tinatawag na mga.
Iyon ay hindi masyadong tama.
Ano ito ginagawa?
Well computer, bilang alam mo, na hard drive, na kung saan
ang iyong mga file ay naka-imbak.
Computer may RAM, at na kung saan-load ang mga programa
habang sila ay tumatakbo.
Kaya kapag nag-double-click ang isang icon at Microsoft Word ay bubukas
up, Microsoft Word ay tumatakbo, kaya na magsalita, sa RAM, na kung saan ay
elektronikong bahagi ng iyong computer.
Hindi ang pisikal na, mekanikal bahagi na Umiikot na, kung saan
data ay naka-imbak sa pangkalahatan mahabang panahon.
Kaya string s ay medyo magkano na nagsasabi sa ang computer ninyo ako
sapat na RAM upang magkasya ang isang string.
Ngayon na isang bit ng isang oversimplification, dahil
kung gaano kalaki ang string sa pagpunta sa na?
Na rin ang aktwal na namin ang hindi alam pa, kaya sa linggo darating
aktwal na namin hilahin ang layer na string at
sasabihin namin sa iyo kung ano ito talaga ay.
String, sa ngayon, gandang pagpapagaan ng ating mundo.
Ngunit string mga declares isang string na tinatawag na mga, sa ngayon.
Declares isang string.
Inilalaan ng ilang espasyo sa RAM para sa string ang user ay
tungkol sa i-type.
>> Ngayon tingnan natin sa kanan ng katumbas sign.
Kaya sabi GetString ().
At ng kaunti katinuan suriin.
Ang katotohanan na wala sa loob ng panaklong
nagpapahiwatig kung ano ang tungkol sa GetString?
Ito ay tumatagal ng mga argumento.
Iyon ay, hindi mo maaaring maka-impluwensya ang pag-uugali nito sa anumang paraan.
Sa bawat oras na gamitin mo ito, ito ay makakuha ng isang string at na ito.
Sa pamamagitan ng kaibahan, printf, sana ang pag-uugali nito ginagawa
baguhin sa bawat oras.
Kung hindi man, ito ay medyo walang silbi ang function sa pag-print kung
ginagawa nito ang parehong bagay.
Kung ito ay palaging mga Kopya David o isang bagay
arbitrary sa lahat ng oras.
Kaya printf saysay na magkaroon ng isang argumento.
GetString ay talagang hindi kailangan ng argumento, dahil Nais kong
upang makakuha ng isang string mula sa gumagamit at ito ay gumagamit na nangyayari
upang matustusan ang dynamism sa pamamagitan ng pagta-type sa iba't-ibang mga titik
sa bawat oras sa keyboard.
>> Kaya kung ano ang GetString ang huli?
Isipin ito bilang ang maliit na itim na kahon na.
At ang itim na kahon na ito ay tumatagal ng walang input, ngunit kapag putok mo sa
ito, ito spits isang string na ang gumagamit ay nai-type.
At ang katotohanan na may katumbas sign ay nangangahulugan tumagal
kung ano ang sabihin ang lahat sa kanan at mag-imbak ito sa loob
kung ano ang sa kaliwa.
Kaya katumbas sign dito, aktwal na ito ay hindi nangangahulugan na
pagkakapantay-pantay, sa halip ito technically ay nangangahulugan ng pagtatalaga.
Ang halaga sa kanan, at ilagay ang mga ito sa
variable sa kaliwa.
Kaya na ng lahat na nangyayari doon.
>> Ngayon sa linya 7, kami ay pagtawag printf.
Kaya printf sana ng isang maliit na pagbubutas sa ngayon.
Kaya mag-print ng isang format na string.
Ano ang string?
I-print ang, "h-e-l-l-o,% s
! \ N ".
Karapatan lahat, kaya kung ano ang gusto kong plug-in para sa% s?
Literal, anumang ay naka-imbak sa mga.
Kaya sa kasong ito, kaunti katinuan check, kung gaano karaming mga argumento ang
printf?
Okay, Narinig ko ng isang.
Narinig ko ng isang muli.
Dalawa, Narinig ko ng dalawang.
At kung paano tungkol sa tatlong?
Okay, tatlong?
Mahusay na.
Tatlong posibleng sagot, isa lamang sa mga ito ay tama.
Argumento Kaya ang muli makaimpluwensiya sa pag-uugali ng isang function.
Sa nakaraan, printf ay lamang ng isang argumento.
"Hoy mundo" ng isang argumento.
Gayunpaman, ngayon, mapansin kung saan ito ay ang kuwit.
Kuwit Ito ay sa labas ng quote / magpanipi, na nangangahulugan na
hey printf, dito pagdating ng pangalawang argumento.
>> Kaya kuwit sa karamihan sa mga wika programming
hiwalay na ang maramihang mga argumento.
Kaya ang sagot dito ay tiyak na hindi isa, dahil
may kuwit ito.
Kaya Nagnais ng pinakamababang, printf ay tila pagkuha ng dalawang
argumento oras na ito.
Ngunit ang mga pagkakataon para sa isang nanlilinlang tanong dito ay kung ano ang
tungkol sa kuwit?
Ba ito magpahiwatig na may aktwal na tatlong argumento?
Ito, ito, at ito.
Kaya wala, dahil ang kuwit ay nasa loob ng quote, na
ay nangangahulugan na ito ay talagang lamang ng isang Aesthetic ng Ingles.
Ay walang kinalaman sa bilang ng mga
argumento sa programang ito.
Kaya kuwit na ito ay nasa labas ng double quote.
At pagkatapos ay bumalik 0.
Sa ngayon sabihin lamang ang uri ng ang isang ito sa pananampalataya para sa
ngayon, at malaman na kapag tapos ka na ang mga function execute
linya ng code, dapat silang pangkalahatan ibalik ang ilang mga halaga.
Sa kasong ito, dahil lang sa pangunahing dapat ibalik sa isang int,
na lamang ang paraan gumagana ang wika C.
>> Kaya dahil walang nangyaring mali, nararamdaman tulad ng programang ito
fine, ko lang hard code sa return 0.
Ngunit sa kabilang banda, at ako pagpunta sa sumulat ito sa palsipikado code
ngayon, tulad ng Joseph kapag ginawa namin ang sumuntok
Halimbawa noong nakaraang linggo.
Kung may nangyaring mali - ito ay hindi aktwal na code - nagpunta
mali, pagkatapos ay bumalik, sabihin nating, 1.
Iba Pa ibalik ang 0.
Kaya ito ay kung saan kami ay pagpunta na ito.
Na ito ay hindi aktwal na C code, pseudocode.
Ngunit ito ay kung paano mo maaaring bumalik
iba't ibang posibleng halaga.
Ngunit sa ngayon ako pagpunta upang magpatuloy at bumalik 0.
Lahat ng karapatan, anumang mga katanungan sa gayon ay malayo sa syntax, pag-andar,
o ang gusto?
Oo, sa likod.
>> Madla: [hindi marinig]
David MALAN: Maaari mo bang makipag-usap ng kaunti louder?
Bakit ginawa ito programa return 0, at?
Madla: [hindi marinig]
David MALAN: Oh, na dahil Nakatanggap ako tamad, paumanhin.
Walang magandang tugon ng akademikong, bumalik 0.
Maaari kong uri ng pagsagip sa dagat na ito, sa pamamagitan ng sinasabi ng technically C, kung pangunahing
ay hindi tahasang nagbabalik ng halaga, 0 ibabalik
nang awtomatiko para sa iyo.
Alin ang totoo, hindi ako lamang sumasaklaw sa.
Ngunit, dapat ko nagawa ito sa ganitong paraan.
Walang kawili-wili takeaway kaysa sa iba pang mga kaysa sa aking pagkakamali.
Oo?
>> Madla: Karaniwan kapag nagta-type ka sa walang bisa, na nangangahulugan na
hindi magbalik ng bagay.
David MALAN: Tama.
Kung sa halip, tinukoy mo bago ang pangalan ng isang function, para sa
Halimbawa dito, walang bisa, pagkatapos ang function na
ay hindi nagbabalik ng anumang.
At samakatuwid Gusto ko lang sabihin, pagbalik o walang sa lahat,
at na maging pare-pareho.
At kami na bumalik na.
At lamang Para sa Iyong Impormasyon, isa ng ang mga catches na may pag-aaral
mga programa sa isang mundo na may daan-daang ng mga aklat at
daan-daan ng mga website out doon ay ay walang paltos
makakita ng iba't ibang syntax sa iba't ibang aklat
sa pamamagitan ng iba't ibang mga tao.
Napagtanto gagawin namin ang aming pinakamahusay na sa mga seksyon at mga aralin upang maging
pare-pareho.
Ngunit minsan ay makikita mo ang magkasalungat na syntax.
Kaya sa tuwing may pagdududa, magtanong.
At sa pangkalahatan, makikita namin alagaan sa mga aralin at mga seksyon sa
halos palaging ipakita ito sa tamang paraan.
At sabihin ko halos palaging, dahil sa kaso sa point.
Iba pang mga tanong?
>> Madla: ba ang% s umiiral sa labas ng appliance?
David MALAN: ba% s umiiral sa labas ng appliance?
Oo.
Kaya% s ay may C. Ang katotohanan na tayo ay gamitin ito sa
ang appliance sa panimula ay walang kinalaman sa gamit ang
mga tampok ng wika na ginagamit namin.
Sa katunayan, noong nakaraang linggo kapag ginamit namin ang aking Mac, sinulat ni ako
C code sa aking Mac.
Ko ginamit ang% s sa aking Mac, at maaari mong gamitin ang mga ito sa
iyong Windows computer kung i-install mo ang isang tagatala, tulad ng
Visual Studio mula sa Microsoft.
Kaya% s.
Lahat ng ginagawa namin sa loob ng window na ito ngayon ay
gawin sa C. At sa panimula walang gawin gamit ang
operating system na pinag-uusapan.
Sa pamamagitan ng kaibahan, ang itim at puting window terminal - kapag
Nagta-type ako ng mga bagay tulad ng ls, at rm, at cd -
na may sa gawin sa operating system at
-navigate sa paligid.
Oo.
Madla: nilalayong ko ang library, ang CS50 library.
David MALAN: Okay, kaya kung ibig sabihin mo ang string ng keyword, na
lamang umiiral sa CS50 library, tama.
Na hindi umiiral sa C mismo, at sa katunayan sa loob ng ilang
linggo namin itapon CS50 library at simulan ang
paggawa ng mga bagay mula sa simula ating sarili, kaya na magsalita.
Iba pang mga tanong?
Oo.
>> Madla: [hindi marinig]
David MALAN: Magandang katanungan.
Ay ang mga utos case sensitive?
At hayaan mo akong gumawa ng isang pagkakaiba dito.
Kaya utos sa pangkalahatan ang mga bagay na namin magsulat sa
ibaba ng window, sa window ng terminal.
Anumang bagay up dito ay pahayag o C code.
Ngunit sa parehong mga kaso, ang sagot ay pareho, oo.
Parehong ng mga kapaligiran, ang C code sa itaas at ang
operating system linya ng command sa
ibaba, ay case sensitive.
Kaya dapat mong mapakinabangan ang GetString may capital G,
capital S. dapat mong isulat ang printf sa lahat ng maliit na.
Kailangan mong i-type ang ls sa lahat ng maliit na.
Kaya sa halos bawat sitwasyon ito semestre, kaso, sa
katotohanan, ang bagay na ito.
Oo.
>> Madla: [hindi marinig]
David MALAN: Ah, kaya okay, ano kung kami ay may isang file
tinatawag hello.d.
Kaya ito lumiliko D ay isang programming language.
At kaya sa ilang mga kaso, maaari naming aktwal magsulat ng isang programa sa
na file at ito ay pinagsama-sama sa na fashion.
Aming makakaya, at aktwal, Ang maikling sagot ay, hindi ko alam.
Kaya kami ay pagpunta sa gawin ito.
Hayaan akong magpatuloy at lumikha ng isang bagong file.
At iikot dito, totoo lang sa pangkalahatan, tuwing kayong alinlangan
ito semestre, at iyong appliance o computer
buksan, sige at subukan ang isang bagay.
Kaya ako pagpunta sa i-save ang isang file na tinatawag na hello.d.
I-save ito.
At ako na tumakbo na kumusta Ipasok.
Tila magpakilala na c ay mas malamang
kaysa sa d, sa kasong ito.
Iba pang mga tanong.
Oo.
>> Madla: [hindi marinig]
David MALAN: Okay, sabihin na minsan pa.
Madla: [hindi marinig]
David MALAN: Paano mo pumunta tungkol sa pag-diagnose na o
pag-troubleshoot na?
Kaya malamang, dahil hindi nila iba't ibang mga wika,
pinaka-malamang na nais mong makakuha ng ganap na
ibang programa outputted.
Gusto kang makakuha ng ganap na iba't ibang mga mensahe ng error.
At din lamang sa mga tuntunin ng disenyo, ito ay magdudulot ng arguably isang
mahinang disenyo ng desisyon na pagsusulat ng dalawang magkaibang
wika sa halos identically na may pangalang na mga file, sa
ang eksaktong parehong directory, gamit ang isang
awtomatikong tool tulad ng gumawa.
Sa gayon ay maaari ko rin uurong at sabihin sa 15 taon ng paggawa nito,
hindi kailanman nagkamali na.
Maaaring mangyari.
Ngunit may lamang iba't-ibang, sa tingin ko,
logistical panlaban sa lugar.
Plus ang mga mensahe ng error na maganap, na gagawin
kalaunan magbunyag kung ano ang isyu.
Ngunit isang posibleng kaso ng sulok.
>> Lahat ng karapatan, kaya sabihin ipakilala lamang ng ilang mga iba pang
tampok dito ngayon, kaya maaari naming simulan ang pagbuo sa higit
at mas kumplikadong programa.
Kaya una sa lahat, matematika.
Kaya matematika halimbawa lamang ang uri ng madali sa unang linggo.
Na ito ay hindi upang sabihin na ang lahat ng programming ay tungkol sa
matematika.
Tiyak, ang pag-unawa sa iba't ibang mga tampok ng
matematika, algebra sa partikular, ay
lubos na may-katuturan dito.
Sa mas mataas na antas ng CS klase, linear algebra,
calculus, at tulad.
Ngunit Napagtanto karamihan ng kung ano ang gagawin namin ito semestre binabawasan hindi
sa matematika, at tiyak na hindi sa aritmetika, per se, ngunit talagang
lang logic at sa maingat na pag-iisip.
At kaya Linkage ito na computer science katagal nagkaroon,
lalo na sa mataas na antas ng paaralan, sa matematika, ay isang
maliit na makapanlinlang.
Dahil karamihan ng mga programa na kami magsulat, talagang,
uri ng mas mataas na antas at pagtuon sa paglutas ng mga problema na,
sigurado, maaaring gamitin ang ilang mga karagdagan, pagbabawas, at iba't-ibang
mathematical formula o tulad ng,
ngunit sa pagtatapos ng araw, ito ay tungkol sa pag-iisip at hindi
lamang pagpapatupad kung ano ang maaari mong gawin tulad ng Ti
calculator sa mataas na paaralan.
>> Kaya may na sinabi, sabihin ngayon gawin ang isang bagay na may ganitong mga
mathematical operator na umiiral kaya maaari naming trip
sa paglipas ng ilang ng nakapailalim na mga aspeto ng programming, o sa
kasong ito C. Kaya may mga, ng CS50 library iminungkahing,
at ngayon lamang namin ginagamit GetString - at sa isang sandali
marahil isa iba pang mga function na -
ngunit may mga iba't ibang mga uri ng data sa isang computer.
Sa pagtatapos ng araw, ang mga computer lamang alam 0s at 1s.
Ngunit isipin ang na noong nakaraang linggo usapan natin ang tungkol sa sistema ng binary
sa kumakatawan sa mga numero, tulad ng bilang 0, at 1, at 2,
ang lahat ng mga paraan sa hanggang 8, sa Nate ng video.
At pagkatapos ay maaari naming bilangin ang mas mataas na bilang namin
ginawa sa entablado dito.
Ngunit kung nais mong kumatawan sa hindi lamang numero ngunit titik,
namin, ang mga tao, ay may ilang arbitrary
convention, kung saan kung sa pagtatapos ng araw ang lahat ng computer na aking
ay ang kakayahan upang ipahayag ng 0s at 1s, mahusay kami ay mas mahusay na
simulang standardizing ang mga pattern ng 0s at 1s na kumakatawan
iba't ibang mga bagay.
Isang pattern ng 0s at 1s na kumakatawan sa sulat ng.
Pattern ng 0s at 1s na kumakatawan sa sulat z.
Pattern ng 0s at 1s na kumakatawan sa kulay bughaw, o
pula, o tulad ng.
Kailangan namin upang magamit ang lahat ng mga 0s at 1s upang ipahayag ang ating sarili sa
iba't ibang konteksto, sa iba't ibang paraan na hindi
kailangang numeric.
>> Kaya sa mga tuntunin ng representasyon, C ay may iba't ibang mga uri ng data,
at nakakita kami ng isa sa mga ito sa ngayon.
Namin nakita int, at paunawa kung ano ang hindi sa screen
ngayon ay string.
String ay hindi, sa katunayan, umiiral sa C. Muli, ito ay isang
pagpapagaan namin ang iyong pagtatanghal para sa unang
dalawang linggo.
Ang isang pansamantalang trabaho ay isang indibidwal na character.
Float ay isang tunay na numero, na may decimal point at numero sa
sa kaliwa at kanan ng ito.
Double ay ang, para sa mga may likod bago background?
Kaya double ay dalawang beses isang bagay.
Nagdadagdag ng dalawang beses bilang magkano ang katumpakan.
Kaya kung ano ang ibig sabihin nito?
Kaya sa bawat isa sa mga kasong ito, ang mundo ang may uri ng Standardized
kung gaano karaming mga bits ay ginagamit upang kumatawan
sa bawat isa sa mga bagay na ito.
Kaya kung napanood mo na Nate ng ASCII video na para sa bahagi
ng pset 0, o sa ibang pagkakataon sa linggong ito ay sa iyo, marahil mo na alam
na ASCII -
character na representasyon -
gumamit ng kung gaano karaming mga bits?
At maaari mong kahit tandaan mula sa huling linggo ng kung paano ang aming demo
maraming tao ay sa entablado.
Kaya ng 7 o 8, karaniwang.
Kaya pangkalahatan 8, at may isang bagay na tinatawag bilang pinahaba
ASCII na gumagamit ng lahat ng 8 bits, sa halip na 7.
Ngunit sa pangkalahatan, makipag-usap namin sa kapangyarihan ng 2, kaya sa kasong ito, 8.
Kaya ng pansamantalang trabaho sa isang wika ng programming ay karaniwang 8 bit.
Kaya int ay 32 bits.
Float ay 32 bits.
Double ay 64 bits.
At kung ano ang na ibig sabihin nito?
Ito ay nangangahulugan na maaari mong kumatawan sa mas malaking numero, o sa kaso
ng mga tunay na numero, maaari kang magkaroon ng maraming higit pa numero pagkatapos ng
decimal lugar.
A maraming higit pa katumpakan, sa kasong iyon.
Ngayon ng mahabang mahaba ay sa kasamaang-palad na may pangalang.
Kaya may isang int na 32 bit.
May ay isang mahabang na, nope, 32 bit.
At ng mahabang mahaba na 64 bit.
Subalit ang ilan sa mga konteksto sensitive, ito depende
kung anong uri ng computer na mayroon ka.
Kaya sa pangkalahatan, na aming tinukoy sa isang homework o sa isang pagsusulit kapag
aktwal na mahalaga.
Ngunit ang punto ay mayroong lahat ng iba't ibang mga
representasyon dito.
>> Kaya sabihin aktwal na sumisid sa isang programa.
Sa halip na isulat ang isang ito mula sa simula, ipaalam sa akin pumunta magpatuloy
at buksan mula sa source code ngayon - ang lahat ng
online - kung gusto mong maghinang sa online, o return on
Miyerkules sa appliance sa iyong computer, mga tagubilin
na link sa homepage ng kurso.
Narito ang isang napaka-simpleng programa.
Ngunit ito ay nakuha ng isang maliit na isang bagay na bago sa tuktok na
hindi namin ginawa bago.
Ang isang buong maraming ng mga asul na linya ng teksto.
Kaya ang mga asul na linya ay kumakatawan komento.
Kaya lubos na kapaki-pakinabang sa isang programa na magsulat
ilang mga komento sa iyong sarili, o sa mga kasamahan, o mga kaibigan, o
Fellows pagtuturo, na uri ng ilarawan kung ano ang nangyayari sa
ang file na ito, ngunit walang kinalaman sa may C code mismo.
Walang gawin sa mga programa sa pagtakbo, lang
aesthetics.
Kaya ang paraan na gagawin mo ito sa C mo sa pangkalahatan simulan ang iyong
mga komento na may / *, at tapusin ang iyong mga komento sa
* /.
At kung ikaw ay talagang anal at tulad upang gumuhit ng uri ng mga larawan,
nais mong ilagay ang isang buong maraming ng mga bituin, na nais mong gumawa ng isang
maliit na kahon tulad nito.
Ngunit wala na usapin.
Ang tanging bagay na mahalaga ay ang unang
at ang napaka-huling.
Ito ay kung ano ang tinatawag na multi-line komento.
At lang tao convention sa madalas na gawin ang mga bituin at box
mga bagay na tulad nito kung mayroon kang maraming libreng oras.
>> Kaya pagkatapos mong nakasulat sa ilang mga komento, pangkalahatan, darating
ang aktwal na lakas ng loob ng programa.
Narito ang aming pamilyar # include .
At mabilis, ito ay kinakailangan o hindi kinakailangang?
Madla: Kinakailangang.
David MALAN: Kaya ito ay aktwal na hindi kinakailangan.
Kaya bakit, bagaman, ay hindi kinakailangan?
Kaya walang printf.
Katunayan.
Lahat ng ginagawa namin sa programang ito ay matematika.
Kaya ang maaari kong tanggalin ang aktwal na.
Kaya hindi mo palaging kasama sa kahit ano sa
sa tuktok ng isang programa.
>> Kaya sabihin pasimplehin ito ng kaunti.
At ngayon mapansin kung ano ang programang ito.
Hindi magkano ng interes.
int x = 1.
Well, kung ano ang ito ginagawa?
Well, sa tingin bumalik sa kaisipan modelo mula sa bago.
Ang kaliwang bahagi ng expression na ito ay hindi kung ano ang?
Lumikha ng puwang para sa isang integer.
Kaya kung magkano ang espasyo?
Well, mangyari naming malaman ngayon na 32 bit.
Dati, ang isang string ay technically 32 bit, ngunit higit pa
sa sa hinaharap.
Ngunit int isang 32 bit.
Kaya ito expression sa kaliwa dito, int x lang sabi ni hey
operating system, magbibigay sa akin ng 32 piraso ng RAM -
na kilala bilang 4 na bytes ng RAM -
sa gayon ay maaari ko bang ilagay ang isang integer sa puwang na iyon.
Anong integer ay gusto mong ilagay?
Well, lamang ang bilang 1.
int y nakakakuha ng 2, ipinapakita ang eksaktong parehong bagay kahit na ang
numero ay mas malaki, sa mga tuntunin ng nito magnitude.
Ang bilang mismo pa rin ang 32 bit lamang.
Lang ang pattern ng mga bits ay iba sa
kumatawan sa 1 kumpara sa 2.
int z ngayon nagsasabing bigyan ako ng isa pang 32 bit, tumawag ito z, at ilagay ang
pagbubuo ng 1 at 2 sa doon.
Kaya na ngayon z ay baka pag-iimbak ang halaga 3,
at pagkatapos ay bumalik 0.
>> Ngayon programang ito, ang anumang gawin ito ng interes?
Kaya aktwal ay hindi gawin kawili-wili, sa anumang
kahulugan, dahil bakit? Ito ay paggawa ng ilang matematika.
Ngunit hindi ito bumabalik ang sagot, kanan.
Ito ay bumabalik na 0.
Hindi ito pag-print ang sagot.
Kaya ang programang ito sa panimula walang kapararakan, dahil
nakatayo ngayon.
Ito ay paggawa ng ilang trabaho.
Ito ay pagpunta sa tumagal ng ilang bilang ng mga segundo, o microseconds, upang
patakbuhin, ngunit hindi ito aktwal na paggawa ng anumang
kapaki-pakinabang para sa mga tao.
>> Kaya sabihin aktwal na ngayon buksan math2, kung saan ngayon ako aktwal
pag-print ang resulta.
Kaya ito ay masyadong maaaring natukoy na mula sa aming mga nakaraang mga halimbawa.
Kung gusto kong gawin ang ilang mga simpleng matematika, int x = 1, y
= 2. z ay 1 plus 2 ngayon.
Ano ito upang i-print ang malinaw naman?
Lamang 3.
Kaya mabilis katinuan check.
Hayaan akong lumipat sa direktoryong ito.
Kaya cd source1m.
Hayaan akong magpatuloy at i-type ang gumawa ng math2.
Walang mga mensahe ng error ay dumating out, kaya hayaan mo akong patakbuhin -
hindi a.out hayaan mo akong magpatakbo ng math2. Enter.
At sa katunayan, ito print mo 3.
Well sabihin kumuha ng isang pagtingin sa isang variant ng ito.
Sa Sa math3.c, na namin ngayon ang halimbawang ito dito.
>> Kaya ang isang ito uri ng kawili-wiling.
Kaya ito dito, ang sagot ay pagpunta upang makakuha ng 1 hinati sa pamamagitan ng 10,
at mapansin ko na ipinahayag ito bilang isang Float.
Bakit ko gusto ang mga ito sa isang Float?
Well, isang fraction.
Ito ay pagpunta sa maging isang tunay na numero.
Kaya pagpunta sa 0.1, sana - 10%, sa kasong ito.
At ano ang gagawin ko pagkatapos ay nais na i-print?
Well, ang sagot na ito.
Well, sabihin manunudyo mga bukod unang.
Kaya sa kaliwang bahagi, ipinapahayag ng
lumutang, tumawag ito sagutin.
Sa kanang bahagi, 1 hinati sa pamamagitan ng 10 at ilagay na
answer loob ng variable.
Ngayon, ang hitsura ng linyang ito ng kaunti pa misteriyoso.
Ngunit mapansin ng ilang mga pamilyar na tampok. % Ay nangangahulugang dito ay isang
placeholder.
f ay nangangahulugan dito ng lumulutang na halaga ng point, lamang real
numero, isang bagay na may decimal point.
0.2 paraan kung ano?
Sinuman alam mula sa naunang karanasan?
Dalawang decimal place.
Kaya hindi namin nasaksihan ito bago, ngunit ito lamang ang paraan ng
ehersisyo ng kaunti pa kontrol sa printf at
sinasabi hindi ninyo akong bigyan ng 30 puntos pagkatapos ng decimal point,
sa halip ninyo ako may 2.
>> At pagkatapos ay sabihin sige at patakbuhin ang.
Kaya matematika 3, at ngayon hayaan mo akong magpatakbo ng matematika 3, Ipasok.
At na hindi tama.
Mukhang namin na nagkaroon ng aming unang tunay na bug.
Well, siguro lang ako hindi naghahanap malapit-lapit.
Kaya hayaan mo akong pumunta dito, at ipaalam sa akin ilagay 20 decimal
punto lugar doon.
At ipaalam sa akin makatipon ito, gumawa ng math3, patakbuhin.
Pretty bang 1 na hinati sa pamamagitan ng 10 ay hindi 0.
Kaya kung ano ang nangyayari sa?
Na rin okay, kaya aktwal hindi ito ay upang gawin na ito.
Iyon ay isang mahusay na pag-iisip.
Ito ay talagang lamang pagkakataon
na ginagawa namin ito.
Ngunit lamang upang patunayan na ito ay hindi ito, bibigyan ko
magbalik ng bagay random.
Huwag gawin ito sa bahay, dahil lamang mali.
Ngunit gumawa math3, hayaan mo akong patakbuhin ito.
Kaya ay walang kinalaman sa kung ano ang ako bumabalik, lamang gawin
sa kung ano ang ako pag-print.
Ngunit narinig ko ito dito.
Ano?
Madla: Kaya kailangan namin upang isulat ang mga numero sa
division bilang -
>> David MALAN: Okay magandang.
Kaya kailangan namin upang isulat ang mga numero na lumahok sa
division dito bilang lumulutang point halaga ang kanilang mga sarili.
Kaya ang problema dito ay tulad ng dati: C, na may maraming mga
wika, ay may iba't ibang mga uri ng data.
At ang mga uri ng data, halimbawa, ang mga ito dito.
At ang mga uri ng data na pinag-uusapan dito, kapag ako ay nag-type 1 at pagkatapos ko
uri 10, marahil kung ano ang uri ng data?
Kaya marahil ito ay isang int, i-right?
Ito ay talagang hindi isang Float dahil ang walang decimal
point o anumang bagay tulad na.
Kaya talaga, mayroon akong isang int na hinati sa pamamagitan ng isang int.
>> Kaya ang kawili-wiling bagay tungkol sa matematika at computer na
kung ikaw ay gumagawa ng division gamit integer -
1 na hinati sa pamamagitan ng 10, oo ay 0.1.
Subalit, kapag ikaw ay paghahati isang integer sa pamamagitan ng isang integer, ang
sagot ring maging isang integer dahil lang, sa ngayon.
At kung ano ang implikasyon pagkatapos?
Well, kung ang sagot ay 1 hinati sa pamamagitan ng 10 katumbas ng 0.1, kung ano ang
computer ay pagpunta sa gawin Mayroon akong walang ideya kung paano sa
kumakatawan sa 0.1, dahil na lumulutang na halaga ng point, hindi isang
integer; ito pagpunta sa pagpura-pirasuhin-off ang lahat pagkatapos ng
decimal point at ipakita sa iyo ang 0 sa umpisa.
At ang katotohanan na ito ay pag-print bilang isang lumulutang point
halaga, ito ay isang Aesthetic bagay.
Iyon ay dahil ako pagpilit ang computer upang i-print ito bilang isang
lumulutang point halaga.
At sa katunayan ko na ipinahayag ito bilang isang Float, ngunit matematika ay
nangyayari sa paglipas dito.
>> Kaya ipaalam sa akin aktwal na ayusin ito sa isang medyo madaling paraan.
Bakit hindi ko lang gawin ang 10.0 at 1.0, bagaman
technically ako makakakuha ng ang layo sa pamamagitan lamang ng paggawa ng isa sa mga.
Ngayon ipaalam sa akin magpatuloy at gumawa ng math3.
Hayaan akong magpatuloy at ngayon patakbuhin math3, Ipasok.
At ngayon, oh batang lalaki.
Ngayon kami ay may isang bagong problema sama-sama.
Kaya mas mahusay, i-right, hindi namin mas malapit sa 0.1, ngunit kung ano ang malinaw ay
mali dito?
Maliban kami namamalagi sa iyo para sa taon, i-right?
1 hinati sa pamamagitan ng 10 ay talagang hindi pa 0.1, kaya kung ano ang
talagang pagpunta sa dito?
Well maaari mong uri ng dahilan sa pamamagitan ng lohikal.
Kung ang computer ng isang lamang ay may isang tiyak na halaga ng RAM upang simulan
, at sa katunayan lamang ng computer ng isang gumagamit 32 bit para sa isang
lumulutang point halaga, nakatayo sa dahilan na may isang
tiyak na bilang ng mga bits, 32 sa kasong ito, oo, maaari mong
kumakatawan sa isang maraming mga bagay-bagay.
Aktwal na apat na bilyong iba't ibang mga halaga ay maaaring maging
kinakatawan may 32 bit, 2 sa 32, ngunit pa rin ito tiyak.
Kaya ang problema ay may isang walang-katapusang bilang ng real
numero, kanan.
Kung ba ninyo akong bigyan ng isang real numero, maaari ko laging mahanap mo ang isa
bahagyang mas malaki, bahagyang mas mababa, sa pamamagitan lamang pag-aayos ng
numero na pagkatapos ng decimal point.
Kaya kung hindi mo na magkaroon ng isang walang-katapusang bilang ng mga bits,
hindi maaaring posibleng kumakatawan sa isang walang-katapusang
bilang ng mga tunay na numero.
>> Kaya ito taglay imprecision sa mga computer, at
ito ay makakakuha ng tripped higit sa lahat ng oras kahit na sa pinakasimpleng ng
programa tulad nito.
Kundi pati na rin sa ilang mga tunay na problema ng mundo pati na rin.
Sa katunayan, sabihin maglaan ng sandali upang lamang tingnan ang
isang bagay na aktwal na naganap sa katotohanan.
Susubukan naming panoorin ang unang ilang minuto, at pagkatapos ay
namin post ang link sa online.
Ngunit ito ay testamento lamang kung ano ang maaaring magkamali, medyo
totoo lang, sa trahedya paraan kapag ang mga bagay na ito ay hindi
pinapahalagahan o lamang namin ang mga tao ay gumawa ng mga pagkakamali pagdating sa
mga ganitong uri ng mga detalye ng pagpapatupad ng mga modernong computer.
>> [Nagpe-play ng VIDEO]
Na namin ngayon bumalik sa kalamidad sa engineering sa Modern Marvels.
Computer.
Lahat namin na dumating upang tanggapin ang madalas na nakakabigo problema
na pumunta sa kanila.
Mga bug, mga virus, at software glitches maliit na presyo upang
magbayad para sa kaginhawahan.
Ngunit sa mataas na tech at high speed militar at espasyo
application programa, ang pinakamaliit na problema ay maaaring maging
Pinalaking sa kalamidad.
Sa Hunyo 4, 1996, mga siyentipiko ay handa upang maglunsad ng isang hindi pinuno ang mga tauhan
Ariane 5 rocket.
Ito ay nagdadala ng mga pang-agham satellite na dinisenyo upang
magtatag tiyak kung paano magnetic field sa earth
nakikipag-ugnayan sa solar wind.
Rocket ay binuo para sa European Agency Space at
itinaas mula sa pasilidad sa baybayin ng Pranses Guyana.
>> Sa tungkol sa 37 segundo sa flight, sila muna
Napansin ng isang bagay ay pagpunta mali, na ang mga nozzles ay
swiveling sa isang paraan na sila dapat talagang hindi.
Sa paligid ng 40 segundo sa flight, malinaw ang sasakyan
ay sa problema, at na kapag sila ay ginawa ang desisyon sa
wasakin ito.
Isang hanay ng kaligtasan ng opisyal na may napakalaking tapang pinindot ang
pindutan, blew sa rocket bago ito maging isang
Hazard sa kaligtasan ng publiko.
>> -Ito ay ang unang paglalayag ng Ariane 5, at ang mga
pagkawasak naganap dahil sa isang basag na naka-embed sa
rocket ng software.
>> -Ang problema sa Ariane na may isang numero na
nangangailangan ng 64 bit na ipahayag at ninais nilang i-convert ito
ng 16 bit na numero.
Ipinapalagay nila na ang numero ay hindi kailanman
pagpunta sa napaka malaking,
na ang karamihan ng mga digit sa 64 bit bilang ay 0s.
Sila ay mali.
>> Ang kawalan ng kakayahan ng isang software program upang tanggapin ang
uri ng bilang na nabuo ng isa pang ay sa root ng
ang pagkabigo.
Software development ay naging isang napaka-mahal na bahagi ng
bagong teknolohiya.
Ang Ariane 4 rocket ay lubhang matagumpay.
Kaya magkano ng software na nilikha para dito ay ginagamit din
sa Ariane 5.
>> -Ang pangunahing problema ay na ang Ariane 5 ay mas mabilis,
pinabilis na mas mabilis.
At software ay hindi para na.
>> Ang pagkawasak ng rocket ay isang malaking sa pananalapi
kalamidad, ang lahat ng dahil sa isang minutong software error.
Ngunit ito ay hindi ang unang pagkakataon na data mga problema ng conversion ay may
plagued ng modernong mga kuwitis teknolohiya.
>> David MALAN: makikita namin iwanan ito sa na.
Ngunit ito ay testamento sa lamang kung paano naaangkop kahit na ang ilan sa
mga pinakamababang antas ng detalye na namin na nagsimula sa
galugarin ngayon ay.
Kaya kahit kumuha ka ng isang maliit na ginulo marahil sa pamamagitan ng ilan sa mga
syntax at arcaneness dito, Napagtanto na sa ibabaw ng
termino na makikita namin nakatutok lamang sa kung paano naaangkop ito ay
mundo malayo sa CS.
Makikita natin sa Miyerkules.