[Powered by Google Translate] David J. MALAN: Ang lahat ng mga karapatan, ito ay CS50 at ito ang
magtapos ng Linggo 1, kaya ang pag-aaral card ay sa at ang kabuuang bilang ng
kaklase na mayroon ka sa taong ito ay 745.
At sa gayon kami ay nanginginig na magkaroon ng marami sa inyo sa kurso
semestre na ito, ngunit kahit na ang kursong ito kaya malaki,
mapagtanto na ito ay ang mga bagay na ito tulad ng mga tanghalian ng Biyernes, tulad ng
oras ng opisina, 15-taong seksyon, at iba pa na
ang talagang nilalayong ito upang lumikha ng mas intimate
kapaligiran.
Kaya kahit maaari naming mangalap ng isa o dalawang beses sa isang linggo, dito sa
Sanders, alam na magkano ng iyong karanasan sa kursong ito
ay napaka hands-on sa tabi ng iyong mga kaklase
at ang pagtuturo kawani.
>> Kaya dito namin pumunta, Fall 2012.
Kaya isipin ang na huling beses na namin natapos sa isang tala ng
imprecision, pakikipag-usap tungkol sa mga representasyon ng mga numero.
At kami ay tumingin sa isa sa mga pagkabigo na nangyari, sa
tunay na mundo, kapag dumating ito sa hindi pagkakaunawaan
kung paano computer gumana.
Well, ngayon gagamitin namin muling bisitahin ng isa pa ng mga ideya bilang
na rin na magpatuloy ang aming talakayan ng CS50 client
at C at kung ano ang ibig sabihin nito talagang sa programa.
Ngunit una, lamang ng ilang ng alimpuyo anunsyo.
>> Mga seksyon simulan ito Linggo, at unang linggo ay palaging isang
bit ng isang mabilis na pagsisimula, dahil Naging namin sa
ang iyong mga seksyon ng form.
Ginagawa namin ang parehong, ngayon, sa mga Fellows ng pagtuturo, ngayon
na alam nila ang kanilang mga iskedyul, kaya kami ay apunta, sa pamamagitan ng
Sabado umaga, mag-follow up sa iyo sa iyong seksyon
pagtatalaga at tf.
Napagtanto na sila simulan ang susunod na araw, Linggo
o Lunes o Martes.
At pagkatapos ay namin tumanggap mga pagbabago ng seksyon na lumitaw ang mga ito
sa mga araw na darating.
Office oras, samantala, ay, muli, ngayong gabi, 8 pm hanggang 11, sa
Annenberg, pati na rin bukas gabi.
Kahit na ang problema set sa pangkalahatan ay dahil sa Huwebes
sa tanghali, Napagtanto na mayroon kang hanggang sa limang mga late araw na gumastos,
samakatuwid ang availability ng mga oras ng opisina sa Huwebes kung
ka ng cash sa isa sa mga late araw at, at dahil doon, isumite
isang bagay sa Biyernes.
Hayaan ang iminumungkahi sa akin na sa simula ay kabilang sa mga mas masaya, kabilang ang
mas mababa ang key set ng problema.
At Gusto ko hang patungo sa daloy ng mga sasakyan sa mga late na araw, madiskarteng, lamang
para sa ibang pagkakataon sa semestre kapag ang buhay ay nagsisimula upang makakuha ng sa paraan
may midterms at iba pang klase.
Problema Set 1, samantala, ay nai-post sa kurso
website na ito Biyernes, bilang ay sa kurso lakad
sa pamamagitan ng video, na ay kumuha sa 2:30 PM sa Biyernes
at pagkatapos ay nai-post online sa pamamagitan ng susunod na araw.
>> Kaya namin natapos sa Lunes.
Gusto kong - aktwal, tandaan isa dito.
Dahil sa klase - dahil Sanders ay hindi eksakto bang ipahiram sa
mismo sa kaswal na Q & A likod at balik katakut-takot na rin, hindi namin
pagpunta upang subukan ang isang bagay ng isang maliit na bagong taong ito, kung saan
kung hindi ka kumportable itaas ang iyong kamay o mo lamang
ay sa halip hindi taasan ang iyong kamay sa isang kuwarto tulad nito,
kami ay pagpunta upang magkaroon ng ilan sa mga Fellows ng pagtuturo at Cas
Manning cs50.net/discuss sa panahon ng panayam.
Kaya kung mayroon kang isang tanong dahil ako ay ganap na
hindi malinaw tungkol sa isang bagay o hindi mausisa tungkol sa ilang
paksa, subukan ang pag-post doon.
Tag ito na may label ng panayam, at gagawin namin ang aming pinakamahusay na
ngayon at sa susunod na linggo - we'll subukan ito - sa na FIELD ito
alinman elektroniko, online, o kung ito nararamdaman tulad ng dapat namin
talagang tugunan ang mga ito en masse, isa ng Fellows pagtuturo o
Cas ay itaas ang kanilang mga kamay at hilingin
hindi nagpapakilala sa iyong ngalan.
Kaya bibigyan namin ito isang subukan at makita kung gaano kahusay ito gumagana.
Subalit, sa pamamagitan ng lahat ng paraan, patuloy na itaas ang mga kamay hangga't nais mong.
>> Kaya huling beses na inihayag namin na 10% o isang-ikasampu hindi,
katunayan, 0.1, tulad mo ay itinuro maraming taon na ang nakakaraan.
Ito ay sa katunayan, ng halaga tulad nito.
Ngunit hindi ganap na pag totoo, i-right?
Lang namin ito hadlang sa computer kung saan, kung ikaw
lamang magkaroon ng isang tiyak na halaga ng memorya, RAM, o higit pa
partikular na bit, maayos, may lamang ng isang tiyak na numero
ng mga bagay na maaari mong kumatawan.
Halimbawa, kung kami ay may numerong zero, at gusto naming
kumatawan sa binary, gamit ang walong bits, kung saan isang bit,
muli, ay zero o ng isa, maaari naming
kumatawan sa ito bilang 00,000,000.
At na ang isang maliit na hindi kinakailangan maligoy.
Tulad sa decimal system sa tunay na mundo,
pangkalahatan, kung nais mong isulat ang numero 123, namin
mga tao ay marahil ay hindi sumulat ng 00000123 kahit,
pagtakbo, na ang eksaktong parehong numero.
Namin lamang drop ang nangungunang zero, kaya na magsalita.
>> Sa binary, maaari naming gawin ang parehong.
Binary at zero, zero at binary lang zero.
Kailangan mo lamang ng isang sandali.
Ngunit muli, ang pinaka-karaniwang yunit ng pagsukat sa mundo
ng computing ay bytes, walong bits.
Dahil lang sa isang bit, medyo walang silbi.
Walong bits, hindi lubha kapaki-pakinabang, ngunit hindi bababa sa pa
kapaki-pakinabang kaysa sa isang solong yunit ng pagsukat.
Kaya may walong bits, makikita namin karaniwang kumakatawan sa binary.
Kaya dito mayroon kaming ang mga numero zero, isa, dalawa, at pagkatapos, tulad ng
Nate ginawa sa aming video huling Miyerkules, maaari naming magpatuloy
pagbibilang ng hanggang sa pitong, sa walong.
At pagkatapos ay kung ginagamit namin ang higit pa at higit pa na mga bits, namin
maaaring bilangin sa infinity.
Ngunit kung mayroon ka lamang ng isang tiyak na bilang ng mga bits, tulad ng
ang kaso sa anumang sistema ng computer, o kahit misayl
system, maayos, sa katunayan ka lamang magkaroon ng isang
tiyak na halaga ng katumpakan.
Kaya kung nais mong kumakatawan sa bilang tulad ng 0.1, na rin, ang
computer na may upang pumili at piliin ang.
At kung ito lamang ay may isang tiyak na bilang ng mga numero kaya nito
kumatawan, maaari itong ay malapit sa 0.1 para sa iyo, ngunit hindi ito maaari
kinakailangang magbibigay sa iyo ng eksaktong halaga na nais mong.
At ito ay isa lamang ng mga hamon ng computer,
sa ilalim ng hood, thankfully.
>> Habang kami malayo sa semestre, mga mas mababang antas
maging higit na mas mababa kawili-wili ang mga detalye, ngunit tiyak na ang
application ng mga ideya na ito ay maaaring magkaroon ng ilang mga tunay na mundo
ramifications.
Isa ay isang bit na masaya.
Gaano karaming mo nakita ang mga kamangha-manghang pelikula Office Space?
Kung hindi mo pa, na ang iyong hindi opisyal na
araling-bahay para sa linggo.
Ngunit sa Office Space, ang mga Fellows sa pelikula na
kalamangan ng tiyak na ito ideya, ngunit sila aktwal na balabal
ito mula sa isa pang pelikula na maaaring mayroon ka
nakita, kahit taon bago.
Kaya ipaalam sa akin magbibigay sa iyo ng ilang segundo ng trailer na ito mula sa
ito kamangha-manghang pelikula at ito ay napaka
academically may-katuturan.
>> [Nagpe-play ang pelikula]
Aktwal na ako pino-promote.
Ko programa ng virus na punitin na
ilagay-off ang malaking oras.
Well, paano ito gumagana?
Sa bawat oras na may isang transaksyon sa bangko kung saan interes ay
nakalkula, may mga libo-libo sa isang araw, ang computer ay nagtatapos
may mga fraction na ito ng isang sentimo.
Ngunit hindi ako pagpunta sa gawin ang anumang iligal.
Ilegal na? Samir, ito ay America.
Mayroon kang sumusumpa sa Diyos.
Kung walang tao alam tungkol dito ngunit sa amin, lahat ng karapatan? Walang mga miyembro ng pamilya, walang
girlfriends, walang sinuman.
[Hindi marinig].
Huwag mag-alala, tao, hindi ko ay sabihin sa sinuman alinman.
[Pelikula ay nagtatapos]
>> Karapatan lahat, kaya siguro nakita ko ang pelikulang ito na mas mahusay kaysa sa karamihan ng
mga tao dito, ngunit sa anumang kaso, ang virus na sila ay
sinusubukang lumikha -
at sa pelikula, anumang oras nais nilang tawagan ang isang bagay ng virus,
pangkalahatan, hindi talagang isang virus.
Ito ay isang programa na ang isang tao ay sinulat ni gawin ang isang bagay.
At sa kasong ito, ang mga guys ay sinusubukan upang magsulat ng isang programa
na kinuha kalamangan ng kanilang kumpanya na tinatawag Innotech ng
computing system, kung saan ang computer, masyadong, kahit na kapag ito
pagdating sa pera, maaari hindi kinakailangang
kumatawan ang pera tiyak.
Kaya kahit na maaaring mayroon ka ng $ 0.10 sa iyong bank account,
0.10, well, ang computer ay maaaring aktwal na sa tingin na mayroon kang
ito maraming sentimo sa iyong bank account.
At kaya kung ano ang mga guys ito ay naghahangad gawin - at sila
nakaagaw ng ideya, lumiliko mula sa superman III, kung saan
Richard Pryor ginawa ang parehong bagay - sila ay mahalagang
pagsulat programa na maghangad upang gawin ang lahat ng sumusunod na
numero, ang lahat ng sa napakaliit, napakaliit, napakaliit fraction ng
pennies, at siphoning mga upang ang ang mga tao lamang
iisip, oh, ito lamang $ 0.10 doon, ngunit ang lahat ng mga
sumusunod na kalaunan magdagdag ng mga numero.
Kaya ang isang kahanga-hangang ideya at backfired hilariously sa na
partikular na film.
>> Ngunit sa tunay na mundo, masyadong, may mas tungkol
implikasyon ng mga uri ng mga bagay.
At isa sa mga dahilan na sumisid sa larangan ng computer
agham ay, muli, nito applicability hindi sa
engineering agham nag-iisa, ngunit para lamang
iba pang mga patlang pati na rin.
Kaya ito ay isang mas lighthearted pagtingin sa kung ano ang maaaring magkamali, ngunit
ring masyadong ng pagbubukas ng mata, tingin ko, pagdating sa
unawa nang eksakto kung paano sumasalahat ng dako teknolohiya tulad ng
computer at programming o mga araw na ito,
sa paraan ng software.
Kaya ang susunod na clip na ito ay tungkol sa anim na minuto, patuloy
kung saan kami tumigil nakaraang oras, ngunit nagbibigay-daan sa amin upang tumingin ng kaunti
mas malalalim na sa isang tulad ng mga isyung ito.
Hayaan akong lumaktaw sa kung saan namin tumigil,
na sa dito.
At mayroon kaming bahagi dalawang ng dalawang, para sa mga tungkol sa anim na minuto dito.
>> [MAGLARO pelikula]
Plagued ng modernong mga kuwitis teknolohiya.
Noong 1991, ang simula ng unang Gulf War, ang Patriot
misayl nakaranas ng isang katulad na uri ng
problema sa conversion ng numero.
At bilang isang resulta, 20 tao, 20 Amerikanong sundalo, pinatay
at halos 100 iba nasugatan, kapag ang Patriot, na dapat
upang maprotektahan laban sa mga papasok na Scuds,
nabigong mag-sunog ng misayl.
>> Kapag Iraq invaded Kuwait at Amerika Inilunsad ng Disyerto
Bagyo sa unang bahagi ng 1991, Patriot misayl baterya ay
na itinalaga upang protektahan ang Saudi Arabia at Israel mula sa Iraqi
Tumakbo misil atake.
Patriot ay isang US medium-range na ibabaw-to-air sistema,
manufactured sa pamamagitan ng Raytheon ng kumpanya.
Ang laki ng Patriot interceptor mismo, tungkol sa
halos 20 talampakan ang haba at weighs tungkol sa £ 2000.
At nagdadala ng warhed ng tungkol sa - tingin ko ito ay halos
£ 150.
At ang warhed mismo ay isang mataas na paputok na may
fragment sa paligid nito.
Ang casing ng warhed ay dinisenyo upang kumilos tulad buckshot.
Ang mga missiles ay dinala apat bawat lalagyan at
transported sa pamamagitan ng isang semi trailer.
>> Ang Patriot anti-misayl sistema napupunta pabalik ng hindi bababa sa
20 taon na ngayon.
Orihinal na ito ay dinisenyo bilang isang air pagtatanggol misayl sa
shoot eroplano kaaway, sa unang Gulf War.
Kapag ang digmaan na dumating kasama, ang Army nais gamitin ito upang shoot
down mga Scuds, hindi eroplano.
Ang Air Iraqi Force ay hindi kaya magkano ng isang problema, ngunit ang Army
nag-aalala tungkol sa mga Scuds.
At kaya sila Sinubukan i-upgrade ang Patriot.
Intercepting isang kaaway misayl na naglalakbay sa Mach 5 ay pagpunta
na hamon ng sapat.
Ngunit kapag Patriot ay rushed sa serbisyo, ang Army
ay hindi malaman ng isang Iraqi pagbabago na ginawa ang kanilang
Scuds halos imposible upang maabot.
>> Ano ang nangyari mga Scuds na
darating sa mga hindi matatag.
Sila ay wobbling.
Ang dahilan para sa ay Iraqis, upang makakuha ng 600
kilometro ng 300 kilometro hanay ng misayl, kinuha
bigat ng front warhed at
ginawa warhed ang mas magaan.
Kaya ngayon Patriot ng sinusubukan na dumating sa malaking ulan, at karamihan ng
oras, napakatinding karamihan ng oras, gagawin ito
lamang lumipad ng malaking ulan.
Kapag ang operator ng sistema ng Patriot maisasakatuparan ang Patriot
nasagot ang target nito, sila mina Patriot warhed.
Upang maiwasan ang mga posibleng casualties, ito ay pinapayagan
mahulog sa lupa.
Iyon ay kung ano ang karamihan ng mga tao nakita, bilang malaking fireballs sa kalangitan,
at gusot bilang intercepts ng malaking ulan warheads.
>> Bagaman, sa kalangitan sa gabi, Patriots lumitaw na maging
matagumpay na sirain Scuds, sa Dhahran, mayroong maaaring hindi
pagkakamali tungkol sa pagganap nito.
Doon, radar sistema ang Patriot nawala ang pagsubaybay ng isang
papasok na tumakbo at hindi kailanman Inilunsad dahil
sa isang depekto software.
Ito ay ang Israelis na unang natuklasan na ang na
system ay, mas malaki ang oras pagkakaiba naging,
dahil sa isang orasan na naka-embed sa computer system ng.
Tungkol sa dalawang linggo bago ang trahedya sa Dhahran, ang
Israelis iniulat sa ang Kagawaran ng Depensa na ang
sistema ay mawala ang oras.
Matapos ang tungkol sa walong oras ng tumatakbo, napansin nila na ang
sistema ay nagiging kapansin-pansing hindi gaanong tumpak.
Ang Defense Department tumugon sa pamamagitan ng pagsasabi ng lahat ng
ang Patriot baterya sa hindi iwan ang system
sa para sa isang mahabang panahon.
Hindi nila sinabi kung ano ang isang mahabang panahon ay - 8 oras, 10
oras, 1,000 oras.
Walang alam.
>> Ang Patriot baterya na puwesto sa kuwartel sa Dhahran
at ang mga flawed panloob na orasan ay sa higit sa 100 oras sa
gabi ng Pebrero ika-25.
Nasubaybayan ito ang oras ng katumpakan ng tungkol sa 1/10 ng isang segundo.
Ngayon 1/10 ng ikalawang ay isang kawili-wiling bilang dahil
hindi ito maaaring ipinahayag sa binary, eksakto, na nangangahulugan na
hindi ito maaaring ipinahayag nang eksakto sa anumang
modernong digital computer.
Mahirap na paniwalaan.
Ngunit gamitin ang mga ito bilang isang halimbawa.
>> Natin ang bilang isang-katlo.
Isang-katlo ay hindi ipinahayag sa decimal, eksakto.
Isang-katlo .333 pagpunta sa para sa infinity.
Walang paraan upang gawin na may ganap na kawastuhan sa decimal.
Iyon mismo ang parehong uri ng problema na nangyari sa
ang Patriot.
Ang na system ang tumakbo, mas malala ang oras error ay naging.
Matapos ang 100 oras ng pagpapatakbo, ang error sa panahon lamang
tungkol sa isang ikatlo ng isang segundo.
Ngunit sa mga tuntunin ng pag-target ng isang misayl na naglalakbay sa Mach 5,
nagresulta ito sa isang tracking error ng higit sa 600 metro.
Gusto ito ng malalang error para sa mga sundalo sa Dhahran.
>> Ano ang nangyari ay isang malaking ulan launch ay nakita ng maagang babala
satellite at alam nila na ang malaking ulan ay paparating na sa kanilang
pangkalahatang direksyon.
Hindi nila alam kung saan ito ay darating.
Ito ay ngayon hanggang sa radar bahagi ng ang Patriot
system, pagtatanggol Dhahran, upang mahanap at subaybayan ang mga
papasok na misayl ng kaaway.
Radar ay napaka sa smart.
Aktwal mong subaybayan ang posisyon ng malaking ulan at pagkatapos ay
hulaan kung saan ito marahil ay sa susunod na oras ang
radar nagpadala ng pulso out.
Na tinatawag na hanay ng gate.
Pagkatapos, sa sandaling ang Patriot magdesisyon ang sapat na oras lumipas pumunta
-back at suriin ang susunod na lokasyon para sa Nakita
bagay, ito napupunta pabalik.
Kaya kapag nagpunta ito sa maling lugar, pagkatapos nakikita walang
bagay, at nagpasiya na mayroong hindi bagay.
Ito ay isang maling detection at patak ng track.
>> Ang papasok na tumakbo Naglaho mula sa radar screen.
At segundo mamaya, slammed ito sa kuwartel. Ang malaking ulan
pumatay ng 28 at ang huling fired panahon
ang unang Gulf War.
Tragically, ang na-update na software dumating sa Dhahran
sa susunod na araw.
At ang software depekto ay maayos, pagsasara ng isang kabanata sa
ang ligalig kasaysayan ng misayl Patriot.
Bayani ay talagang isang acronym para sa "Pagsubaybay sa Phased Array
Harangin ng Target. "
>> Lahat ng karapatan, kaya mas nalulungkot kinalabasan ng hindi pa
pag-unawa sa mundo na ito.
At takeaway, talagang, mula sa film na solusyon
doon ay i-reboot ang iyong misayl pagtatanggol system
bawat isang beses sa isang habang.
At kaya muli, isa ng layunin ng kursong ito, tiyak
sa isang mas mapagpakumbaba scale kaysa sa mga application na ito, ay
mata talagang bukas sa lahat sa kung paano pumunta ka tungkol sa
paggawa ng machine kung ano ang nais mong gawin nila at kung paano pumunta ka
tungkol sa paggawa na tama, habang sa kahabaan ng paraan na gawin ito
mahusay, elegante, at iba pa.
At kaya ngayon, sabihin dive sa isang kaunti higit pa sa mga ito, ngunit
sa gayon ay hindi namin pumunta masyadong mabilis, lalo na para sa mga mas
kumportable, ngunit din upang maaari naming panatilihin ang interes ng
mga mas kumportable, sabihin mabilis lang magsimula sa isang bit
ng pagbabalik-tanaw ng ilan sa mga ideya na ito.
At muli, hilingin ang layo, sa parehong tao o online, kung mayroon kang
tanong upang maaari naming panatilihin ang lahat sa parehong pahina.
>> Kaya ang CS50 Appliance, mabilis na hakbang pabalik,
ano, sa iyong sariling mga salita?
OK kung mayroon kang mga ideya kung ano ang mga salitang iyon ay maaaring pa.
[Hindi marinig]
Okay, kaya isang unibersal na interface para sa -
na maaari namin ang lahat ng ibahagi.
Ganap.
Kaya kami, halimbawa, sabihin sa iyo upang pumunta sa ilang
website, i-download ang software na ito para sa Mac OS.
I-download ang software na ito para sa Windows, i-configure sa
paroo't parito.
Ngunit ang katotohanan ay nagsasagawa kami sa mabilang teknikal
sumusuporta sa mga isyu.
At mayroon ding mga araw na ito, karami ng kung ano ang nagawa server side,
sa mundo ng computing, lalo na pagdating sa
web development at web batay sa mga application, ay talagang
medyo madalas na ginawa sa Unix o Linux computer, bilang kabaligtaran sa
Mac o Windows PC.
>> Kaya kabilang sa upsides, pagkatapos, ng gamit na ito bagay na tinatawag na
CS50 Appliance namin ang lahat ng parehong kapaligiran.
Kaya lahat sa parehong pahina kahit ano hardware mo
dumating sa campus na may ngunit din ay dabbling sa eksaktong
ang parehong kapaligiran na makikita mo gamit patungo sa
pagtatapos semestre pati na rin para sa web development, pati na rin sa
hinaharap para sa tunay na mundo application nito.
Kaya mas concretely, ang CS50 Appliance ay isang libreng piraso ng
software na nagpapahintulot sa iyo na magpatakbo ng ibang operating system,
Linux, sa kasong ito, sa iyong sariling computer, sa isang window.
Ngayon hindi lamang mo maaaring i-download ang appliance.
Kailangan mo ng isang programa upang i-play o patakbuhin ang appliance.
At na piraso ng software ay karaniwang kilala bilang isang
hypervisor.
Hypervisors ay sa anyo ng mga produkto tulad ng VMware,
Virtual Box, parallel.
Ang lahat ng mga uri ng mga kumpanya gumawa ng software, parehong libre at
komersyal, magkamukha.
Ano ang makikita mo sa Problema Set 1 ang mga tagubilin sa kung paano
kumuha libreng software kung saan
patakbuhin ang CS50 Appliance.
At sa sandaling mo, makikita mo may, sa isang window sa iyong Mac o PC,
isang desktop na kapaligiran na mukhang lubos na tulad nito, kung saan
ito ay may Start menu-tulad ng bagay sa
ibabang kaliwang sulok.
Ito ay may Home folder, o direktoryo sa Home, sa kaliwang tuktok
doon, basura ng lata, at iba pa.
Kaya makikita namin manunudyo hiwalayin ang mga kinakailangang detalye bilang namin pumunta.
>> Ngunit ngayon sabihin magsimula sa sumisid sa C.
Kaya C programming language na ito, katulad sa espiritu sa
Simula, ngunit higit na mas mababa graphical, ngunit ironically, malayo
mas malakas na kapag kumuha ka ng mahusay dito.
Kaya sa C, isulat namin mga programa sa pamamagitan ng pagsusulat ng source code, na
ito Ingles-tulad ng syntax, katulad sa medyas
demonstration na ginawa namin huling beses na nagpapahintulot sa iyo na
ipahayag ang iyong sarili medyo tiyak, kung
arcanely, sa computer.
>> Kaya kung anong uri ng produkto software ang iyong aktwal na kailangan
na magsulat ng mga programa sa isang wika tulad ng C, batay sa aming
-uusap sa Lunes?
[Hindi marinig]
OK, kailangan mo lamang ng isang text editor.
Hindi mo kailangang anumang espesyal na software
per se sa sumulat ng mga programa.
Kailangan mo lang ng isang text editor tulad ng Notepad, sa Windows,
TextEdit sa Mac, o isang bagay na tinatawag gedit, sa mundo ng
Linux, na gagamitin namin dito.
At na ito, isulat ang mga programa.
>> Ngunit pagsusulat lamang ng kalahati ng equation.
Pagkatapos ay kakailanganin mong patakbuhin ang mga ito.
Ngunit upang patakbuhin ang mga programa -
hindi ka maaaring magpatakbo ng source code.
Sa halip na gawin kung ano muna ito?
Oo.
David J. MALAN: Kailangan mong i-
makatipon ito.
At, ang ibang tao, kino-compile ang source code ay nangangahulugan -
[Hindi marinig]
David J. MALAN: Eksaktong.
Tina-translate ito sa mga zero at mga.
Dahil sa aming lahat, mga araw na ito, ay may computer na may CPUs,
halos lahat ng mga ito ay ginawa ng isang kumpanya na tinatawag na Intel, at
Intel Inside, nangangahulugan ito sa loob ng utak ng iyong
computer, na kilala bilang ang CPU.
At isa ng mga bagay na ginagawa ng utak na, alam
kung paano upang maunawaan ang mga pattern ng mga zero at mga.
Ito alam kung ano ang pattern ng bits ay kumakatawan karagdagan, kung ano ang
pattern ay kumakatawan sa mga subtractions, ano ang pattern ng
bit kinakatawan pag-print, at paglikha ng isang naririnig na tunog.
>> Kaya sa maikling, CPU, isinama sa mga operating system,
kung saan ay isang piraso ng software na tumatakbo sa tuktok ng CPU,
kaya magsalita.
Sama-sama, ang mga dalawang piraso alam kung paano magpatakbo ng mga programa na
namin tao magsulat.
>> Kaya kung pumunta ako sa CS50 Appliance dito, kailangan ko upang buksan
up ng isang text editor at ko ma-access ito
sa ilang mga paraan.
Ko pumunta sa Menu, Programming,
at pagkatapos ay maaari kong piliin -
nope, hindi na menu.
Maaari kong pumunta sa Mga Accessory / gedit dito upang buksan ang
ang aking maliit na text editor.
O higit pa lamang, maaari kong i-click ang maliit na icon sa ibaba
kaliwang sulok.
At ngayon ako makakakuha ng environment na ito dito.
Medyo nakapagpapaalaala ng isang simpleng editor ng teksto, sa pamamagitan lamang ng
isa o dalawang mga pagkakaiba.
Sa itaas, kung saan ang cursor ay kumikislap na ngayon, ito ay kung saan
Maaari kong simulan ang pagsusulat ng aking code.
Sa ibaba ay ang bagay na ito na tinatawag na terminal na window.
At kung ano ang mga uri ng mga bagay na maaari kong gawin sa
gayon tinatawag na terminal na window?
[Hindi marinig]
>> Okay, kaya ba akong magpatakbo ng mga utos.
At ang ilan sa mga utos na tumakbo namin sa Lunes ng kaunti
misteriyoso sa unang, ngunit ls listahan, cd para sa direktoryo ng pagbabago,
rm, para alisin.
Kaya ito ay uri ng isang lumang-paaralan na paraan ng pag-navigate sa iyong
computer, gamit lamang ang iyong keyboard at tekstuwal mga utos,
at hindi, sa pangkalahatan, gamit ang isang mouse.
Ngunit makikita namin makita, bago mahaba, ang aktwal na ay nagbibigay sa amin ng isang
kaunti pa kapangyarihan at ng kaunti pa sa katumpakan kung saan
ipahayag ang ating sarili.
At pagkatapos ay sa dito sa kaliwa, lamang kami ay pagpunta upang makita,
sisimulan namin ang software sa pagsulat, ang isang maliit na buod ng mga
programa na namin ang nakasulat sa itaas na kaliwang.
Ngunit makikita namin makita na muli mamaya.
>> Kaya sabihin gawin ang isang bagay na medyo simple dito.
Hayaan akong unang sige at pumunta sa File, I-save, at ako lamang
i-click sa jharvard dito, sa paglipas ng sa kaliwa, at
jharvard ay, muli, ang pangalan para sa aking home folder, ang aking
mga personal na mga file, sa akin, ngayon pagiging John Harvard, tulad ng lahat ng iyong
ay malapit John Harvard sa environment na ito.
Niya nakuha ito Home direktoryo, ang Aking mga Dokumento at iba pa,
na gusto kong i-save, ngayon, ang file na ito.
Kaya ako pagpunta sa tumawag ito hello.c. Pagkatapos ako pagpunta sa pumunta
magpatuloy at i-click ang I-save, at ngayon kung ano ang mayroon akong dito ay isang tab
tinatawag hello.c, kaya tulad ng isa pang uri ng editor.
>> Kaya ngayon hayaan mo akong sige at simulan ang pagsusulat ng programa.
int pangunahing (walang bisa).
At pagkatapos ko lang ang huling beses, printf, para sa mga naka-print na format,
("Hoy, mundo!"
);.
Halos makumpleto.
Ngunit ako Kulang ng ilang mga detalye.
Ano ay nawawala mula sa programang ito na kailangan ko talagang para sa
aktwal na ito upang makatipon?
Oo.
[Hindi marinig]?
>> David J. MALAN: Oo, kaya kailangan kong isama ang pamantayan
I / O library.
Kaya ang pangangailangan na ito upang pumunta sa itaas pangunahing, kaya lang ako pagpunta sa
gumawa ng ilang mga kuwarto para sa doon.
At ako pagpunta sa gawin # include .
At mapansin ang angled bracket doon.
At bilang isang bukod, gedit ng kaunti user friendly na, kung
minsan isang maliit na nakalilito, na sinusubukan upang matulungan ang iyong
mata mapansin kung ano ang linya sa kung ano.
Kaya ang katunayan na ang aking cursor ay sa tabi mismo ito angled
bracket, mapapansin kung paano ito highlight ang iba pang mga angled
bracket kasama ang isang ito.
At ito lamang ay upang gumuhit ang aking pansin sa ang katunayan na ang ko
magkaroon ng mahusay na proporsyon.
At mahusay na proporsyon sa programming ay isang magandang bagay.
Katulad nito, kung ilipat ko ang aking cursor sa dulo, pansinin kung paano ang
kulot tirante linya upang ipakita na, oo, mayroon akong isang bukas na
at isang closed isa, kaya na magsalita.
>> Lahat ng karapatan, at ako ay maaaring gawin ang isa sa iba pang mga bagay.
Ito ay hindi mahigpit na kinakailangan, ngunit mahusay na kasanayan, sasabihin
bumalik 0.
At return 0 ang kung ano ang para sa amin dito?
O Sumisimbolo kung ano?
[Hindi marinig]
David J. MALAN: Ngunit walang ang mali.
At lantaran ito mahirap para sa mas magkamali sa isang
programa ang maikling.
Kaya lang ako sa sobrang tahasang na ang lahat na rin.
Ko, ang mga tao, kapag nagpatakbo ako sa programang ito, ay malamang na hindi kailanman
makita na 0.
Sa pangkalahatan, ang mga bilang na ito na ibinalik mula sa pangunahing
likuran lamang ang kanilang mga ulo sa mga tao kapag
isang bagay na napupunta mali.
At kumuha ka ng isang maliit na pop up sa sinasabi ng error sa sistema, isa,
dalawa, tatlo, o anumang bilang ay
ay aktwal na ibinalik.
Kaya maling anumang bagay na ito?
[Hindi marinig]
>> David J. MALAN: Kaya ito ay hindi kaya magkano ang isang functional pagkakamali
ngunit isang Aesthetic.
Dapat ko marahil ilagay sa isang newline character doon sa
dulo ng ang string na ito nang sa gayon ay namin ang aktwal na ilipat ang cursor sa
sa susunod na linya, at ang programa hitsura ng kaunti prettier.
>> Kaya ngayon hayaan mo akong pumunta pababa sa aking terminal na window
at mag-zoom sa likod.
At ito bagay dito, ito ay tinatawag na prompt.
Lamang ito na nagpapaalala sa akin kung sino ako, jharvard @ appliance, kung saan
appliance ay ang pangalan ng computer na ako.
Sa panaklong ay ito tilda, ang squiggle simbolo, na
kumakatawan sa kung ano ang?
Madla: Home direktoryo.
David J. MALAN: Home direktoryo.
Kaya na lamang shorthand notation sa sinasabi ikaw ay nasa
iyong personal na folder kung saan ang lahat ng iyong mga file sa pamamagitan ng default.
Kaya ngayon, in dito, maaari kong i-type ls para sa listahan.
At ang tanging bagay na nakikita ko dito sa sandaling hello.c.
At ang magandang dahil ko lang sinulat ni ito.
>> Kaya ipaalam sa akin sige at gumawa ng halo.
At mapansin hindi nagta-type ako gumawa hello.c.
Sa halip, lamang ako ng pag-type ang pangunahing pangalan ng file, kumusta.
At gumawa, tulad ng nakita natin sa Lunes, lamang magpakilala na gusto ko
ang file na. c.
Kaya ngayon ko nai-type gumawa ng halo.
Ngayon nakikita ko ito medyo mahaba utos at patuloy
nakikita ito muli at muli.
Ngunit upang maging malinaw, kumalatong, ang salita na lamang lumitaw,
na ang aktwal na tagatala.
Gawing lamang build utility.
Lang ng mas user friendly na programa na sine-save sa akin, sa
katagal tatakbo, na kinakailangang i-type ang kapani-paniwalang nakakapagod mahaba
utos tulad na ang isa.
Kaya maaari mong patakbuhin ang kumalatong mano-mano.
Maaari mong i-type ang lahat ng iyon nang manu-mano.
Lamang nagiging sobrang nakakapagod.
At kaya gumawa lamang ng isang programa na pinapasimple sa aming mga buhay at
tumatakbo ng mas kumplikadong mga utos para sa amin.
>> Lahat ng karapatan, kaya ngayon kung ano ang file dapat na mayroon ako
sa aking kasalukuyang direktoryo?
Hindi lamang hello.c, ngunit din kumusta.
Kaya kung gusto kong patakbuhin kumusta, isipin ang na sinasabi ko ang tuldok slash,
kung saan ang mga tuldok paraan papunta sa kasalukuyang folder, kung saan mo man
, at pagkatapos ay patakbuhin ang programa na tinatawag na halo, at sa katunayan, ngayon,
Mayroon akong halo mundo.
Lahat ng karapatan, anumang mga katanungan sa workflow o ang syntax ng
kung ano lang namin ginawa?
>> Lahat ng karapatan, kaya hayaan ng tumagal ang mga bagay up ng isang bingaw muli.
Kaya ito ay underwhelming lamang na magsulat ng isang programa na lamang
kailanman sinasabi halo, mundo.
Kaya namin ay nagbago ito, sa Monday, sasabihin, kumusta, David.
Ito ay isang maliit na mas personal, ngunit tulad ng hard code tulad ng sa
unang bersyon.
Kaya hindi lahat na nakapanghihimok.
Ngunit mayroong umiiral, sa C, function tiyak na bukod sa
naka-print, ang mga function na nagbibigay-daan sa iyo na makakuha ng user input.
At ang paraan na ginawa namin ito, ang iba pang mga araw, ay tulad ng sumusunod.
Bago aktwal ko i-print ang isang bagay, nakuha ko unang
isang bagay mula sa user.
Kaya ipaalam sa gawin sa akin ito muli.
>> String s, kung saan s ay isang arbitrary na pangalan, dito, para sa isang
string, katumbas GetString.
Kaya kung ano ang GetString?
Ito ay malinaw naman nakakakuha ng isang string, batay sa pangalan nito.
Ngunit ano ito, mas technically?
Ito ay isang function.
Kaya ito ay isang function na ay hindi ay may C per se.
Sinulat ni ito ng CS50 kawani.
At sa gayon ay upang gamitin ito, hindi lamang mo maaaring isama stdio.h,
Kailangan mo ring upang isama ang kung ano?
Oo.
Kaya cs50.h, na lamang ang isang file na aming sinulat ni ilang taon na ang nakakaraan.
Naka-install na namin ito sa appliance para sa iyo sa tabi
lahat ng standard na mga file.
At iba pa sa mga unang ilang linggo ng klase, gagamitin namin
ito lamang pasimplehin ang proseso ng paggawa napaka pangunahing
user input ng mga bagay na gusto pagkuha.
Dahil bilang ipapakita namin makita sa loob ng ilang linggo, pagkuha ng input ng user sa isang
wika tulad ng C ay talagang nakakagulat na complex,
partikular na dahil hindi mo alam nang maaga, kadalasan, kung paano
magkano ang mga bagay-bagay ang user ay i-type in.
At kapag hindi mo alam kung magkano ang data sa inaasahan, hindi mo pag-
malaman kung gaano karaming memory ang maglaan.
At kung aktwal mong magkaroon ng isang adversarial gumagamit na sinusubukan
Hack sa iyong system, pag-crash ng iyong computer, na rin,
pangkalahatan ang unang paraan ng pag-atake, tulad ng ginawa ko sa
Lunes, type ng buong mahabang pagkakasunod-sunod ng mga random na mga character,
pindutin ang Enter, at makita kung ano ang Pinaghihiwa.
Dahil sa pangkalahatan, kung masira ang programa, na mga pahiwatig sa
seguridad kapintasan, potensyal na.
Tiyak na mga pahiwatig sa ka, programmer, pag-gumawa ng isang
pagkakamali, ngunit mas dangerously, maaari mong ginawa ng
seguridad-kaugnay na pagkakamali, at sa pangkalahatan naming makita na
na kung paano machine ay nakompromiso sa araw na ito, parehong
sa mundo ng web at mga programa sa
command line, tulad nito.
>> Ayos lang.
Kaya string mga katumbas GetString.
Kaya mas concretely ngayon, kung ano ang line 6 gawin dito?
Kaya ang function na sa kanan ay nakakakuha ng string,
tumatagal ng kung gaano karaming mga argumento?
Okay.
Kaya wala.
Isang kaunti katinuan suriin.
Argumento isang, muli, ay isang input lamang sa isang function na baguhin
nito default na pag-uugali sa ilang mga paraan.
Ngunit sa kasong ito, hindi ko nais na baguhin
ang pag-uugali ng GetString.
Gusto ko lang upang makakuha ng isang string.
Kaya ko bang ilagay ang walang sa mga panaklong, at pagkatapos ko bang ilagay ang isang
semicolon demarking ang dulo ng linya ng code.
Ngayon, ang equals sign ay hindi nangangahulugan na katumbas, per se.
Ito ay nangangahulugan ng pagtatalaga, na nangangahulugan na ilagay ang anumang nakakakuha ng
outputted sa kanan sa loob ng anumang sa kaliwa.
>> Kaya sa kaliwa, sinasabi namin na namin na ipinahayag ng
string na tinatawag na mga.
At higit na partikular, kami inilalaan memory sa loob ng
na maglalagay kami ang mga bits na kumakatawan sa isang pagkakasunud-sunod ng mga
character.
Ngunit para sa ngayon, kami ay inilalaan
o ipinahayag ng isang string.
Ayos lang.
Kaya ngayon kapag nagawa ko na ito, gusto kong i-plug sa ang halaga ng
s, hindi ang halaga ng David.
Kaya ito ay mali bakit?
Kaya ito ay lamang literal hard-code na mga.
Ito ay upang sabihin ang "kumusta, mga," na hindi kung ano ang gusto kong.
Kaya ang maaari kong gawin ito.
Ang porsyento sign ay isang placeholder, ngunit ngayon ay kailangan kong
pumasa sa i-print ng pangalawang argumento.
Manariwa sa diwa na ang mga argumento sa function ay pinaghiwalay sa pamamagitan ng
mga kuwit, kaya ang susunod kuwit dito ko bang ilagay pagkatapos na ito ang titik s.
At sa kontekstong ito ngayon, mga variable, at printf,
kapag pagtanggap ng mga dalawang input -
string sa kaliwa at ang mga variable na pangalan s sa kanan -
ito plug ang huli sa dating para sa amin, at
lang i-print ang isang magaling na magandang string na naglalaman ng
anumang ito ay na-type namin.
>> Kaya sabihin subukan ito.
Pagpunta sa sige at mag-zoom out, bumalik
sa aking terminal na window.
Mag-zoom in sa ibaba dito.
Type muli ang gumawa ng halo.
Kumalatong Mukhang na-muling palabas ng pelikula.
Ako i-type. / Kumusta, Ipasok.
Walang mukhang nangyayari pa, ngunit ito sa prompt
na maaari kong i-type ang isang bagay tulad ng Nate, Ipasok, at ngayon kami ay may
Kumusta, Nate.
At maaari kong gawin itong muli sa Rob, at iba pa.
Kaya sana ngayon Ang program na ito ay kumikilos bilang nilayon ko.
>> Ngayon, hindi lahat ng mga gumagamit na iyon friendly.
Nag ko walang ideya kung ano ang inaasahan sa akin.
Upang maaari naming tiyak na linisin ito up ng kaunti.
Hayaan akong bumalik up dito, at sa halip ng diving sa at
na humihiling ng user para sa isang string, hayaan mo akong tahasang sabihin ang
user kung ano ang ako umaasa.
Kaya printf ("Magpasok ng isang string:"
);
Kaya walang variable sa dito.
Walang palatandaan ng porsyento.
Lamang ang simpleng Ingles parirala.
Hayaan akong pupunta na ngayon sa ibaba dito at muling patakbuhin ang aking programa.
Ngunit wala tila nagbago.
Bakit?
Mayroon akong mag-recompile ito.
Kaya madaling pagkakamali sa.
Ngunit mayroon kang hindi lamang i-save ang file ngunit
mag-recompile sa programa.
At kaya kung kong patakbuhin muli gumawa kumusta, ngayon kumalatong tumatakbo.
Ngayon ay maaari ba akong magpatakbo. / Kumusta. At ngayon ko makita ang "Magpasok ng isang string:".
Okay.
Ngayon ito ng kaunti mas user-friendly.
Nate, Ipasok, kumusta, Nate.
>> Well, sabihin na subukan ulit ito at simulan ang pag-iisip
tungkol sa mga sulok kaso.
Kaya lang gusto sa simula, ikaw ay hinihikayat o pagiging
hinihikayat sa spec sa uri ng isipin ang tungkol sa kung ano ang maaaring pumunta
mali kung hindi mo inaasahan ng lahat ang user ay maaaring gawin.
Bug, samakatuwid, maaaring mauwi.
Kaya magpasok ng isang string -
kung ano ang isang sulok ng kaso dito?
Ano ang isang sitwasyon na ako, programmer, hindi maaaring magkaroon ng
inaasahang?
Oo.
Okay.
Kaya kung ano kung ako type sa isang numero tulad nito?
Ayos lang.
Kaya gumagana pa rin.
Gramatically ginagawang walang kahulugan.
Ngunit hindi bababa sa gumagana ang programa.
>> Ano ang isa pang sulok kaso?
Isang bagay na hindi ko inasahan.
Oo?
Okay.
Kaya kami maaaring gawin ang isang bagay tulad talaga, talagang malaking bilang.
Kaya natin gawin ito dito.
Hayaan akong mag-zoom out para sa isang pangalawang, hayaan mo akong i-highlight.
Hindi maaaring kopyahin at i-paste ang dito.
Ayos lang.
Kaya hindi ko maaaring kopyahin at i-paste sa terminal ang window na ito, kaya bibigyan namin
lang gayahin ito.
Hayaan akong mag-zoom out, pagpunta sa I-wrap.
Hindi ako pagpunta sa gawin ito para sa masyadong mahaba, dahil hindi ito
aktwal na masira sa programang ito.
Ngunit dati.
Enter.
Ngunit ito ay hindi.
Ayos lang.
Ngunit ito ay isang tunay na kaso ng sulok.
At ang tanging dahilan na sumusunod tama, kaya upang
magsalita, ay dahil sa CS50 GetString function na ay talagang
idinisenyo sa ilalim ng hood, dahil kakailanganin namin makita sa loob ng ilang linggo,
upang awtomatikong magtalaga ng higit pa at higit pa RAM, higit pa at higit pa
memorya mula sa operating system, kapag napagtanto, a,
talagang iyong nai-type sa isang bagay na medyo mahaba.
Ngayon, ito ay isang bit ng isang maliit na kasinungalingan.
Kung naka-pause namin ang aktwal na para pa sa isang habang at ako na nai-type sa
isang bagay tulad ng 5 bilyong mga character sa keyboard
dito, o talagang pindutin ang kopya-paste pa bit, aming lubos posibleng
maaaring magsanhi sa programa ng pag-crash.
Sandali lang mahirap gayahin na may isang tiyak na
tagal ng panahon.
>> Ano ang isa pang sulok kaso kami subukan?
Oo?
Oo.
Kaya bakit hindi namin sagutin ang walang?
Kaya namin ang aktwal na tumagal ng ilang pagkilos, dahil kung hindi man
ang programa pagpunta sa umupo doon kumikislap buong araw.
Ngunit kung ko lang pindutin ang Enter -
OK, ngayon, pa rin mukhang mali.
Hindi pag-crash ng, ngunit maaaring mayroong ngayon ng pagkakataon na
simulan ang pagpapatupad ng mas mahigpit na programa
na aktwal na sumusuri.
At kung ang string, pangungusap, salita na ako
na nai-type sa may haba 0, well, siguro ang dapat kong sumigaw sa
gumagamit, o sabihin sa kanya o kanya upang muling ipasok ang isang string, upang
namin ang aktwal na makakuha ng kung ano ang hitsura tulad ng tamang pag-uugali at hindi
lang kumpleto pangangasiwa sa aking bahagi.
>> Tanong sa likod?
Decimal number.
Kaya maaari naming subukang na, masyadong.
1,10000005.
Tila na pagpunta sa lamang gumana aktwal okay.
At na aktwal na ay inaasahan.
Kahit na maaari naming na-type na numero doon, o isang
mas malaking bilang mas maaga, Napagtanto na kapag tina-type namin ng user
input at ginagamit namin ang GetString function, hindi
bagay na kung ano ang nagta-type ako mukhang isang numero.
Manariwa sa diwa na ang ayon sa ASCII, ang lahat sa iyong
keyboard ay isang de-numerong halaga na maaaring mai-map sa isang
karakter, magpasinda.
Kaya sa kasong ito, kahit na maaaring ko type ng numero, ang
computer ay pagpunta sa tingin nito, kaya na magsalita, bilang isang string -
isang bagay na mukhang isang numero, ngunit
hindi tunay na isang numero.
Ngunit iyon lamang ang tunay na isang perpektong segue, dahil ngayon ng aming makakaya
aktwal na paglipat sa pagsusulat ng programa na
gumamit ng iba pang mga uri ng data.
>> Kaya bukod sa gamit ng mga char, o sa halip, bukod sa gamit ng mga string,
Napagtanto na mayroon kami ng mga iba pang mga uri ng data sa C pati na rin sa
iba pang mga wika.
Ang isang pansamantalang trabaho, pati na ang pangalan ay nagmumungkahi, ay lamang ng isang solong character.
Float ay isang lumulutang na halaga ng point, at na lamang magarbong
paraan ng sinasabi ng isang real numero - isang bagay na may isang decimal
point sa ito sa ilang mga numero sa kaliwa at / o pakanan.
Isang int ay isang integer, na lamang ang isang numero tulad ng 123.
At ngayon mas nang kawili-wili ang mga bagay tulad ng double.
Ano ang sinasabi namin double ng huling beses?
Ito ay 64, sa kanan.
Kaya kung saan karaniwang Float ng 32-bit -
kaya ito mahaba sa memory, ginagamit nito ang 32 zero at mga
kumatawan ang mga halaga - double ay literal na dalawang beses na, na
ay nangangahulugan na maaari mong kumatawan sa mas malaking numero, o
maaari mong kumatawan sa mas tumpak na mga numero.
Sa gayon ay maaari kang magkaroon ng higit pang mga numero pagkatapos ng decimal point, ngunit
bilang kapwa sinabi sa video, kahit na isang bagay
conceptually tulad ng 1/3 ay hindi maaaring kinakatawan tiyak ng isang
computer, dahil kalaunan kang magpatakbo ng mga bit, at
samakatuwid maaari mo lamang gawin ng mga .33333333 kaya maraming beses, sa
kung anong punto mo na lang ay upang sabihin ako ng representasyon
espasyo, mayroon akong lamang ito tumawag sa isang araw at kumatawan ito
medyo imprecisely bang na.
At ng mahabang mahaba -
bobo pangalan, ngunit ito ay dahil may isang uri ng data na kilala bilang isang
mahaba sa C na coincidentally ay madalas 32 bit, tulad ng isang
int ay 32 bit, ngunit ng mahabang mahaba ay
pangkalahatan ay 64 bit.
Kaya lamang ito ay nangangahulugan na maaari mong kumatawan sa mas malaking
numero kaysa dito.
>> Ayos lang.
Kaya kung gusto namin aktwal upang simulan ang kumakatawan ng mga bagay, namin
maaaring kailangan mas sopistikadong uri, at
na ang dahilan kung bakit mayroon kaming string.
Kaya sa CS50 library, na file na tinatawag na cs50.h, na namin
aktwal na ipinahayag ng uri ng data, kaya na magsalita, na tinatawag na string,
ngunit string ay hindi tunay na umiiral.
Ito ay, muli, isa sa mga layer kami ay pagpunta sa alisan ng balat
pabalik sa isang linggo o dalawang at magtapon ito ang layo, at aktwal
tumingin sa ilalim ng hood sa kung ano talaga ang string ng, at
kung paano ito ay kinakatawan.
Din namin ay pagpunta sa tumingin sa Boolean halaga.
>> Kaya kung ano ang isang bool sa konteksto ng scratch?
Ito ay totoo o hindi.
Kaya lang isang halaga na kung tama o mali, sa o off, 1 o
0, gayunpaman nais mong tingnan ang mundo.
Kaya sa C, salamat sa CS50 library, na siya namang
may kasamang isa pang library sa ilalim ng hood, mayroon kaming
access sa isang uri ng data na tinatawag bool, kung saan ay
literal-daan sa amin upang magtalaga ang mga halaga tama o mali sa
bagay sa isang programa.
>> Kaya sabihin sige dito at magsulat ng isang maliit na programa na
ang bagay na may kasamang numero sa halip.
Kaya hayaan mo akong bumalik sa CS50 Appliance, hayaan mo akong magpatuloy at
lumikha ng isang bagong file dito na tinatawag na -
sabihin lamang sabihin ng isang bagay, tulad ng math.c.
Ayos lang.
At pupunta na ngayon sa tuktok ng aking mga programa, ako
pagpunta sa gawin ang mga dati -
# Include , kaya na maaari kong gamitin
printf, int pangunahing (walang bisa) -
magpapadala kami bumalik, kalaunan, ano ang int ay nangangahulugan
dito, kung ano ang walang bisa ay nangangahulugan dito, ngunit sa ngayon, lamang malaman na
kailangan mo upang simulan ang mga programa tulad nito.
Ngayon ako pagpunta sa sige at sabihin na ang isang bagay na ng kaunti
ibang - printf ("Bigyan mo ako ng isang numero:"
);.
Pagkatapos ako pagpunta sa gawin int n = GetInt, sapagkat ito
liko out GetInt ay isa pang function sa CS50 library
bukod GetString.
At ngayon ako pagpunta sa gawin ang isang bagay bobo, tulad ng "salamat
para sa% d, "para sa decimal integer, at pagkatapos pinaghihiwalay n, at
pagkatapos ay bumalik sa 0.
Kaya muli, bumalik 0 ay walang gawin ang bilang ako
na humihiling sa gumagamit para sa.
Lamang Sumisimbolo sa dulo na ang lahat, siguro, ay mahusay na.
>> Kaya hayaan mo akong pumunta pababa sa aking terminal na window dito.
Hayaan akong i-type gumawa ng matematika, ipasok.
At ang isang bagay kung mali.
Gawin ang matematika ay hindi gumagana.
Narito ang unang ng aming mga mensahe ng error.
Bakit?
Ang isang maliit na misteriyoso, ngunit -
Oo.
Kaya cs50.h.
Sa muli, lalo na sa maagang bahagi, makikita mo isulat ang iyong unang
programa para sa pset 1 sa mga seksyon, sa opisina oras, at
lantaran, ito ay napakalaki minsan kung ano ang mga bagay na ito
ay talagang sinasabi.
Ngunit magkakaroon ka Napagtanto napakabilis na simulan nila sa mahulog
sa mga bucket kung saan ang isang ito ay nangangahulugan na ang mo na huminto isa
ng # kasama ang sa tuktok ng file.
At kumalatong, tagatala, nagpapaalam sa iyo ng ito sa pamamagitan ng
sinasabi, sa halip fancifully, implicit deklarasyon ng
function na GetInt ay hindi wasto.
>> Ayos lang.
Kaya kung ano ang na ibig sabihin nito?
Ay nangangahulugan lamang ito nang kataon lamang na iyong ipinahayag GetInt sa
ang kahulugan na hindi mo tahasang ipinahayag ito.
Upang tahasang ipinapahayag int, mayroon kang magturo
Kumalatong na ito umiiral.
At ang napaka-simpleng solusyon para sa ay upang turuan ang mga ito sa pamamagitan ng
kabilang ang iba pang mga file na ito, cs50.h, sa
sa tuktok ng iyong mga file.
Dahil literal, kung ano # include ang mga ito ay nagsasabi sa kumalatong
medyo magkano upang pumunta mahanap ang file na tinatawag na cs50.h, kopyahin,
awtomatikong i-paste ito sa tuktok ng aking mga programa para sa akin,
at pagkatapos ay convert ang source code sa mga zero at mga.
Ngunit na ay malinaw naman napaka nakakapagod kung namin tao ay may
upang pumunta sa pagkopya at pag-paste ng mga malaking file sa lahat ng oras,
kaya # include ginagawa ang lahat na awtomatikong nang walang
muddying ang aking code sa ibang tao library.
At library ay lamang ng isa pang file na naglalaman ng mga function at
iba pang mga bagay na ang ibang tao ay nakasulat, na namin
paggamit para sa aming sariling kapakanan.
>> Ayos lang.
Natin subukang muli.
Gawing matematika.
Enter.
Mabuti.
Kaya na mukhang nagtrabaho.
Kaya ipaalam sa akin ngayon patakbuhin ang matematika; / matematika.
Ipasok ang nagbibigay sa akin ang numero, 123.
Salamat para sa 123.
Ngayon sabihin subukan ang iba pang kaso ng sulok.
String ay medyo mapagbigay, dahil isang
string ay maaaring maging anumang.
Maaaring magmukhang numero, hitsura
character, hitsura ng mga salita.
Ngunit int ng isang int.
Kaya ngayon kung ako mahirap user, at ito ay nagsasabing "Bigyan mo ako
isang numero, "kung ano ang kung sinusubukan kong gawin ang isang bagay tulad ng 0.1?
Well, na isang numero, at ito ay pare-pareho sa
grammar na ginamit ko dito, ngunit sa ilalim ng hood, ako ng
kurso gamit ang function na GetInt.
>> Kaya sabihin makita kung ano ang mangyayari.
Ipasok muli.
Ayos lang.
Hayaan akong mahirap at pindutin ang Enter muli.
Ipasok, ang Enter.
Kaya ngayon tila GetInt na ng kaunti pa
malakas na kaysa GetString.
Namin, ang kawani, ipinatupad sa isang paraan na kung napansin namin
hindi mo pa ibinibigay sa amin ang int ng - at isang int ay isang decimal na numero
naglalaman ng mga zero, mga, twos, threes, fours, fives, sixes,
sevens, eights, o nines.
At na ito.
Walang mga decimal point, walang character, walang bantas.
Mukhang na mayroon kaming makikipagtulungan.
Kaya hayaan mo akong subukan ang apat, limang, anim, at na hindi nakakaabala sa akin sa pamamagitan.
Kaya talagang, anal dito, ang dapat kong marahil sabihin "Bigyan mo ako
isang integer "upang ihatid sa user
eksakto kung ano ang nilalayon ko.
>> Ngayon sabihin isipin ang tungkol sa ilalim ng hood.
Hindi namin ay pagpunta sa tumingin sa kung paano cs50.h ay ipinatupad ngayon,
na library.
Ngunit kung ito mapigil ang sinasabi na subukan muli, subukan muli, subukan muli, kung ano ang programming
bumuo ako baka ginagamit sa ilalim ng hood sa
ipatupad na?
Kaya lamang loop, tama?
Isa ng ang pinakasimpleng ideya na nakita natin sa simula.
Ang Habang Panahon bumuo, Ulitin ang bumuo.
Siguro, sa programang ito, sa ilalim ng hood, kahit
kahit na ito ay nakasulat sa C at hindi scratch, ito ginagawa
isang bagay na tinatawag katumbas ng magpakailanman kung ang user ay hindi
na nai-type sa isang integer, sabihin subukan muli, muling subukan, subukan muli, muling subukan, kaya
pagkatapos wakas kapag ginagawa namin makakuha ng isang integer, pagkatapos mo
masira ang ng na loop.
>> Kaya kung ano ang iba pang mga function na maaari naming gamitin dito sa CS50 ang library?
Well, uri ng mga halatang mga, hindi bababa sa batay sa
uri ng data na alam namin ngayon na umiiral.
Ipinatupad namin ang GetString, GetInt, ngunit sa buong
unang linggo ng termino, maaari mo ring gamitin ang GetFloat at
GetDouble at GetLongLong upang makakuha ng tumpak na
uri ng data na gusto mo.
Dahil ang pangunahing detalye dito ay hindi tulad ng ilang mga wika,
tulad ng Python at Ruby, kung saan hindi mo kailangang mag-
ipinapahayag ang mga uri ng data ng isang variable -
hindi mo na kailangang sabihin sa computer kung anong uri ng mga bagay-bagay
ka pagpunta upang ilagay sa variable -
sa C, mayroon kang napaka tumpak.
Kaya kung nais mo ang isang variable na tinatawag na n, isang tipak ng imbakan
na sa kasong ito ang mangyayari sa 32 bit sa pamamagitan ng convention,
upang sabihin sa computer na ang mga bits ay
pagpunta upang mag-imbak ng isang numero -
hindi isang character, hindi isang string, hindi isang Float.
At ito address ang isyu namin epektibong
bumangga sa nakaraang linggo.
Kung kami ay gumagamit ng mga zero at mga numero upang kumatawan hindi lamang
numero ngunit Bilang at BS at CS, kung paano sa mundo ay isang
computer na malaman na ang pattern na ito ng mga bits sa aktwal
kumakatawan sa bilang 65, bilang kabaligtaran sa kumakatawan sa
titik A, na coincidentally, ayon sa
ASCII, isipin ang, ay katumbas sa 65?
>> Kaya ang mga uri ng data na ito ay nagbibigay ng konteksto sa computer, kaya
na ito alam kung ang mga bits ay dapat kahulugan bilang isang
int o bilang isang string.
Anumang mga katanungan, pagkatapos, ito?
Oo?
David J. MALAN: Magandang katanungan.
Kung naming kumuha ng stdio.h, namin i-save ang file -
hayaan mo akong pumunta down sa window ng terminal at patakbuhin ang matematika, zoom
sa at ipasok -
ngayon nakakuha ako ng ibang error, dahil ako nang kataon lamang
deklarasyon kung ano ang gumana ngayon?
Printf.
Kaya ngayon Lumikha ako ng isang bagong problema, na ang solusyon ay
mahalagang parehong.
Kailangan kong maglagay na muli.
Madla: [hindi marinig]
David J. MALAN: Oh.
Kaya kung ako kumuha ng -
Okay, oo.
Kaya kung ako alisin ang karaniwang I / O library ng pagsasama
dito, at pagkatapos mo sinasabi kung nakukuha ko mapupuksa ng printf, kumuha ng
alisan printf?
Oo.
Ito ay dapat na gumana, dahil hindi na ako gamit ang anumang - Whoops.
Ibig ko lang nagsisinungaling?
Oh, okay.
Ito ay hindi gagana dahil sa isang bagong error na aming ipinakilala.
At ang isang ito ay ng kaunti pa maliwanag.
>> Ano ang problema?
Hindi nagamit variable n.
Kaya ang error na ito ay ang resulta ng aming mga nagki-configure ang
appliance upang maging partikular na pilosopo, sa talagang sumigaw sa
mo para sa bawat posibleng pagkakamali, kahit na kung ito uri ng
isang di-nakamamatay pagkakamali tulad nito - ito talagang isang malaking
harapin na inilalaan ko sa isang int, maglagay ng numero sa loob nito, at pagkatapos ay
ginawa walang ito?
Sa pagtakbo, hindi.
Na hindi pagpunta sa basagin ang programa.
Lamang uri ng bobo, i-right?
Walang halaga sa pag-tinanong para sa numerong iyon, na naka-imbak
ito sa isang variable, kung hindi ka pagpunta sa gawin
sa ito, kung print ito o i-save ito.
Kaya sa kasong ito, kumalatong ay tinatanggap ng mas maraming, at
ito sinasabi ng mga hindi nagamit na variable n.
>> Upang maayos namin ito kung gusto talaga namin.
Ngunit muli, ito ay hindi magandang programming ngayon.
Kaya ko lang gawin ito -
bumaba dito, hayaan mo akong i-clear ang screen, gumawa ng matematika.
Na gumagana.
Ngayon ay maaari kong patakbuhin ang aking programa sa matematika, tumatagal ng input -
mabuti, ay hindi maganda.
Tumatagal ng input, at na ang lahat ng ginagawa nito, sa kasong ito.
>> Sa aktwal, sabihin subukan ang isa sa iba pang sulok ng kaso na namin
ay hindi nag-iisip ng mas maaga.
Sa kasong ito - dito, sabihin bumalik sa isa na ang isang
kaunti mas user-friendly.
Hayaan akong bumalik dito at patakbuhin ang gumawa ng matematika muli.
Whoops, kung ano ang gagawin ko mali?
May ibalik karagdagang.
Okay.
Ngayon ay hindi namin pabalik sa orihinal na katayuan, kung saan ang lahat ng
sana na rin.
At ngayon kung nagpatakbo ako ng matematika, 123 tila upang gumana.
Ngunit ito ay hindi talagang isang epektibong patunay, sa makatarungan sabihin
okay, na gumagana.
789, na gumagana.
Oras upang isumite.
Dahil mayroong iba pang mga kaso ng sulok dito.
String A ay hindi talagang bigyan kami ng magkano ang pag-sa pamamagitan ng pag-type sa isang
buong maraming ng mga character.
Ngunit ano kung type ko sa?
Pagpindot sa numero 1 isang buong maraming, buong maraming dito -
lahat ng karapatan, ito ng isang maliit na pagbubutas, kaya ako pagpunta sa
hihinto dito, at ako pagpunta sa pindutin ang Enter.
>> Ano ang impiyerno nangyari?
Kaya ito ay maaaring aktwal na naipaliwanag.
Kaya tumagal ito bilang binary?
Ang isang mabuting pag-iisip, ngunit hindi, ito ay hindi ang katotohanan na ito kinuha ito
bilang binary, dahil sa katunayan, na lamang uri ng
pagkakataon.
Maaari naming gawin ito muli.
Kaya walang 2 sa sistema ng binary, na
marahil sapat pa rin.
Enter.
Kaya na ay hindi ang problema.
Ano pa?
Eksakto.
>> Kaya sa tingin bumalik sa kung ano ang int isang aktwal ay.
Ito ay 32 bit na kung saan pinagsama-sama ay kahulugan
bilang isang numero.
Kung mayroon kang 32 bit, na nangangahulugan na ang bawat isa sa ang mga bits ay maaaring maging
0 o 1, 0 o 1.
Kaya ito ay nangangahulugan na may dalawang posibilidad para sa bit,
dalawang mga posibilidad para sa ito, dalawang mga posibilidad para sa
bit - kaya na 2 beses 2 beses -
kaya na 2 sa 32 kapangyarihan ay ang kabuuang bilang ng
permutations ng mga zero at mga kung mayroon kang 32
placeholder, zero o na, sa harap mo.
Kaya kung mayroon akong 2 sa 32, mathematically, na kung ano?
Kaya ito ng maraming.
Ito ay 4 na bilyong, bigyan o.
At 4 bilyong ay mukhang hindi sa kung ano ang naka-print dito.
Sa katunayan, ito mukhang mas malapit sa 2 bilyong.
Ngunit ito ay hindi isang pagkakataon.
Ang katotohanan na computer na iyon ay misinterpreted ang aking malaking bilang,
aking malaking pagkakasunud-sunod ng mga bago at pagkatapos ay ang aking malaking pagkakasunud-sunod ng mga twos,
halos 2 bilyong, ay ipinaliwanag kung paano?
May isang cap sa int.
Mayroong isang tiyak na isang maximum na halaga na maaari mong kumatawan.
Ngunit ito ay karaniwang 4 bilyong, i-right?
Kung 2 sa 32 ay halos 4 bilyong, na tila
na ang pinakamalaking bilang.
Kaya hindi natitira, ngunit isang mahusay na pag-iisip.
Negatibong numero.
Kaya kung mayroon kang 4 bilyong posibleng bagay maaari mong
kumatawan na may mga iba't-ibang permutations ng 32 0s at
1s, na rin, ito ay nakatayo sa dahilan na namin ang mga tao ay maaaring gusto sa
kumatawan hindi lamang positibong integer
ngunit negatibong integer.
At sa katunayan, na palagay na C ginagawang.
Kaya may 32 bit, maaari mong kumatawan halos negatibong 2
bilyon ang lahat ng mga paraan sa positibong 2 bilyong.
At ito sa kasong ito, kung ano talaga namin nakikita lamang
palawit ng kapasidad ng aming integer, at kami ay may, kaya
magsalita, overflowed isang integer.
Na sinubukan namin magsiksik ng higit pang mga piraso ito kaysa maaaring aktwal na magkasya.
Kaya ang resulta ay namin mahalagang lahat ng 1 bit.
Namin ang Binaligtad nang lahat ng aming mga bit sa, na sinubukan namin upang kumatawan
ang pinakamalaking bilang na posible, ngunit ito ay malinaw na hindi halos
sapat na malaki ay kumakatawan sa dalawang bagay na lang ako nai-type ka.
Oo?
Madla: [hindi marinig]
>> David J. MALAN: Magandang katanungan.
Bakit hindi lang namin kumakatawan na negatibong
mag-sign bilang isang character lamang?
Kaya maaari namin talagang, at maaari naming pagkatapos ay i-save ang
ng karagdagang bit.
Ngunit ka pa rin upang kumatawan na gitling, at
na pagpunta sa gastos sa iyo ng hindi bababa sa isang bagay,
baka isang bit.
Kaya oo, kami may 32 bit na ginamit para sa aming mga numero, ngunit ngayon
kailangan namin ng isa pang bit na ginamit para sa aming mga gitling
simbolo, ang simbolong minus.
Kaya ngayon kami ay may 33 bit na halaga, na kung saan kami maaaring gawin, ngunit ito ay
lamang hindi paraan ang tapos na ito.
Ginawa namin ang isang paghatol tawag taon na ang nakakaraan, 32 bit ay uri ng ang
yunit ng pagsukat dito.
Kaya kami ay pagpunta sa gamitin ang isa sa mga bits epektibo sa
kumatawan negatibiti, at 31 bit sa kumakatawan sa bilang.
Iba pang mga tanong?
Ayos lang.
Na ang isang maraming.
Bakit hindi namin magpatuloy at ang aming limang minutong pahinga dito?
>> Ayos lang.
Kaya muli, hindi sa overemphasize ang matematika application
ng programming, sabihin lang kumalbit-off ang isang halimbawa
bago ilipat namin sa iba pang mga constructs, dahil lang
ay ilarawan ang ilang mga karaniwang stumbling punto sa ilan sa
ang mga pangunahing kaalaman pagdating sa pagsusulat ng programa.
Sa kasong ito, ang paggawa ng expression sa aritmetika na may ilang
kawili-wili kaugnayan sa syntax.
>> Kaya ito ay isang formula na kung saan maaari naming-convert
temperatura mula Fahrenheit sa Celsius.
Kung hindi mo isipin ang, ito ay ang formula.
Kaya kung plug namin sa Fahrenheit halaga ng 32 degrees, na kung saan ay
nagyeyelo, na magiging 32 minus 32 ay 0, at sa katunayan,
0 sa Celsius ay nagyeyelo din.
Kaya mabilis katinuan suriin doon - na ang pamilyar na formula.
Ipaalam sa akin pumunta sa appliance, bagaman, at simulan ang
pagsusulat ng isang programa na tinatawag na, tulad ng, f2c; "Fahrenheit sa
Celsius tuldok c ".
At hanggang sa tuktok dito, ako magsimula sa # include
stdio.h, at ako pagpunta sa gawin int pangunahing (walang bisa), at
muli, makikita namin bumalik sa hinaharap sa kung ano ang int ay nangangahulugan
doon at kung ano ang walang bisa ay nangangahulugan doon.
At ngayon hayaan mo akong magpatuloy at ipatupad ang isang programa na
mahalagang ito ng conversion para sa amin.
>> Kaya printf, sabihin nating, temperatura sa Fahrenheit.
At pagkatapos ay hayaan mo akong magpatuloy at makuha ang halaga mula sa mga gumagamit.
Anong uri ng halaga ang dapat kong makakuha ng mula sa user kung gusto ko
kanila upang magbigay sa akin ng temperatura sa Fahrenheit?
Oo?
Ano ang gusto mong ipanukala?
Oo.
Kaya Float nararamdaman medyo makatwirang.
Mayroon kaming, muli, lamang ng ilang mga pagpipilian na
nasaksihan namin sa gayon malayo.
Mayroon kaming mga bagay tulad ng pansamantalang trabaho, double, Float, int, mahaba ang haba,
bool, string.
Kaya sa mga ito, Float nararamdaman medyo makatwirang.
Maaari naming gamitin ang double, kanan, dahil kung gusto talaga namin sa
kumakatawan sa temperatura ng tao -
98,60000 -
maaari naming gamitin ang 64 bit upang gawin iyon, ngunit ito nararamdaman tulad ng
overkill para sa temperatura.
Kaya sabihin pumunta lamang may Float.
Ngayon ay kailangan ko ng variable.
Lamang upang panatilihing simple ang mga bagay, ako na tumawag ito f, ngunit ko
maaaring lamang bilang tama tumawag ito temperatura,
ngunit alinman ay pinong.
Kaya lumutang f = GetFloat.
Sa lalong madaling ako ngayon nagpasya upang gamitin ang GetFloat, bagaman, ako
kailangang gumawa ng isang pagwawasto.
Oo.
Kaya kailangan namin # include , kung hindi man, tagatala ay
pagpunta sa sumigaw sa amin.
Ngayon na mayroon akong isang Float, hayaan mo akong magpatuloy at gawin ang
conversion.
>> Kaya unang, hayaan mo akong ring makakuha dito sa ugali ng
pagkomento ang aking code.
Kaya muli, ang komento ng isang notation sa tao na
hindi bahagi ng programa per se, ngunit isa, ay tumutulong sa iyo
maunawaan kung ano ang ginawa mo sa susunod na umaga, o sa susunod
buwan, ito ay tumutulong sa iyong pagtuturo kapwa maunawaan kung ano ang ginawa mo
o kung ano ang balak mong gawin, kaya ito
sa pangkalahatan ay napaka mahusay na kasanayan.
Bawat ilang linya ng code, makapagsulat ng isang komento sa
iyong sarili o sa iyong mga kasamahan.
Sa dito, ako pagpunta sa sabihin, "Magtanong ng gumagamit para sa temperatura."
Ay hindi isang kumpletong pangungusap, lamang ng isang maikling parirala.
Ngunit ang ideya sa likod ng pagkomento sa C ay na ang bawat isa sa iyong
komento dapat magbigay ng kapangyarihan sa iyo - o, sabihin nating, tf o isang kasamahan -
sa sagap ang iyong programa at malaman eksakto kung ano ang ginagawa nito, sa pamamagitan ng hindi
kaya magkano pagbabasa ang code, ngunit sa pamamagitan ng pagbabasa ng mga komento, na
dapat na maikli at malinaw at malinaw.
Lahat ng karapatan, kaya ngayon hayaan mo akong sige at sabihin, "-convert
Farenheit sa Celsius. "Kaya ako pagpunta sa sige at gawin,
sabihin nating, lumutang ang c.
Patuloy kaming Celsius bilang isang lumulutang na halaga ng point.
>> At hayaan mo akong gumawa ng isang ulos sa.
Ang formula ay, muli, dito.
Bilang 5/9 beses F minus 32.
Kaya sabihin gawin ito.
Kaya 5 na hinati sa pamamagitan ng 9, minus -
Whoops, messed ko ito na.
Beses.
Kaya 5/9 beses F minus 32.
Kaya ng F minus 32, semicolon.
At ngayon, pababa dito, ako pagpunta sa magpatuloy
at sabihin, i-print ang resulta.
At bahagi ito madali. Printf.
Paano ko pumunta tungkol sa pag-print ito?
Well, maaari kong sabihin "Iyon numero sa Celsius ay% f \ n",
para lamang sa ilang mga aesthetics.
At pagkatapos ay kung ano ang halaga ang gusto kong mag-plug in dito bilang printf ng
pangalawang argumento?
Okay.
Kaya lamang c.
Kaya makikita namin magsimula sa mga ito at pagkatapos lamang bumalik sa 0.
Muli, ito ay walang upang gawin ang matematika.
Ito lamang ay nangangahulugan na lahat na rin.
>> Ngayon, ito tama, ang program na ito?
Ayos lang.
Kaya ko na ginawa ng ilang mga pagkakamali.
Kahit na kung mayroon kang walang ideya kung ano ang programming ay, maaari mong pag-uri-uriin
ng magpakilala pabalik sa mababang paaralan kung ano ang
maaaring maging ang mga pagkakamali dito.
Ano ang isa sa mga unang?
Madla: [hindi marinig]
David J. MALAN: Oo.
Kaya kami ay nawawala panaklong.
Ito ay sinadya na ginawa ko mga panaklong sa ang pangunahing tono
slide dito, dahil mayroong talagang ito paniwala ng pagkakasunod-sunod
ng mga pagpapatakbo, o mangingibabaw, kung saan ang ilang mga pagpapatakbo -
pagpaparami -
may mas mataas na nagbubuklod, may mas mataas na mangingibabaw, kaysa sa mga bagay
tulad ng karagdagan o pagbabawas.
Kaya ginawa namin ito para sa mga taon lamang upang gumawa ng malinaw na eksakto
kung ano ang matematika na operasyon ay dapat gawin muna.
Kaya dapat ko marahil gayahin eksakto ito.
Kung hindi man, ang computer baka upang subukang gawin
isang bagay tulad ng hatiin 5 sa pamamagitan ng 9, multiply pagkatapos F, pagkatapos ibawas
32 mula sa ang buong bagay.
Alin ang hindi, sa katunayan, kung ano ang gusto naming gawin.
Kaya sabihin parenthesize.
Natin idagdag ang aking mga panaklong dito, ang mga panaklong dito.
Natin ilagay ito sa paglipas dito.
Dito, napansin ko lang ang isa pang pagkakamali na ginawa ko sa kahabaan ng paraan.
Oo?
Madla: [hindi marinig]
>> David J. MALAN: Ah.
Mabuti.
Kaya namin ang aktwal na may parehong integer
division ng isyu mula sa bago.
Itama ko na, sabihin makita kung ano ang sintomas sa.
Ngunit kami ay upang itama ng isa
iba pang mga pagkakamali dito.
Oo?
Madla: [hindi marinig]
David J. MALAN: Oo.
Kaya, ang bobo pagkakamali na aking ginawa, ngunit hindi mapaniniwalaan o kapani-paniwala mahalaga.
Ang computer ay hindi lang pumikit ang mga mata at ipaalam
gamitin sa akin ang kabisera F, kapag ako ay aktwal na ipinahayag sa variable
bilang ng lowercase na f dito, sa linya 8.
Kaya kailangan ko upang iwasto ang sa linya 11 capitalization aking, na isang
sandali ang nakalipas ay isang kabisera F nang hindi sinasadya.
Paano ang tungkol dito?
Dapat ito ay lowercase pati na rin?
Ito ay dapat, ngunit na ang isang pagkakataon.
Na% f ay walang gawin sa mga variable.
Kaya lang sa sobrang malinaw dito, hayaan mo akong magpatuloy at
palitan ang pangalan ng ito, maikling, "temperatura." Hayaan akong palitan ang pangalan
ito "temperatura." Hayaan akong hindi palitan ang pangalan na ito.
Dahil, muli,% f buong mundo ay nangangahulugan, "lumulutang point halaga."
May walang gawin sa aking variable.
Ngunit "temperatura" lahat ng dako ng lugar sandali lang labis sa mga salita,
kaya ako pagpunta upang bumalik sa aking lowercase s "f".
>> Ngayon, hayaan mo akong magpatuloy down sa aking window dito.
Gawing f2c -
na, muli, ang arbitrary pangalan ko
ibinigay sa ang file na ito.
Mukhang inipon.
Hayaan akong magpatakbo ng f2c.
Enter.
Temperatura sa Fahrenheit - sabihin gawin ang isang madaling.
32.
OK, itama.
Ngunit, kung ako ngayon gawin 212 para sa bulak -
mapahamak.
Ayos lang.
Kaya, malinaw na hindi iwasto, kung sinusubukan ang iyong tf
hindi bababa sa dalawang halaga.
Kaya kung ano ang problema dito?
Well, ikaw ay ilagay ang iyong mga daliri sa kung ano ang isyu.
Ngunit bakit na ang kaso?
Up dito, kapag ako ginagawa ang matematika sa 5 na hinati sa pamamagitan ng 9.
Sa conceptually, na perpektong tama.
Lubos na pare-pareho sa mga formula.
Ngunit computer lamang gawin tiyak kung ano ang iyong
sabihin sa kanila na gawin.
At kung ano ang epektibong namin ay nagsasabi sa ang computer dito
hatiin ang integer 5 ng integer 9
at magbigay sa akin ang mga resulta.
Ang problema, bagaman, kapag mo division gamit ang data
uri, output ay ang parehong uri ng data bilang ng mga input.
At kaya kung ang dalawang input ay parehong ints, ang output ay pagpunta
sa isang int.
At kaya 5 na hinati sa pamamagitan ng 9 ang punto ng isang bagay.
Ngunit ano ang pinakamalapit na integer upang ituro ang isang bagay?
Kaya, ito ay aktwal na 0.
Kaya bilang namin tinalakay sa Monday, ang lahat pagkatapos ng decimal
punto ay makakakuha pinutol.
Ito lamang ay makakakuha itinapon ang layo.
Kaya ito ay isang kumpletong pagkakamali, dahil maaari ko pati na rin lamang
multiply ang lahat ng 0 dito.
>> Ngayon, maaari ko aayusin ang mga ito sa ilang mga paraan.
Maaari kong gawin ito.
5.0 na hinati sa pamamagitan ng siyam.
Technically, hindi ko kailangan upang gawin iyon.
Ginagawa sumapat sa lamang gumawa ng isa ng mga numero ng Float -
o double - sa pamamagitan ng paglalagay ng decimal point dito.
Dahil kung ano ang mangyayari ngayon kapag hatiin mo ang isang integer sa pamamagitan ng
Float, o ng double, computer pagpunta sa mapagtanto
oh, isa sa mga mas tumpak na.
Hayaan ang maligaw sa akin sa gilid na nagbibigay sa iyo ng higit pang katumpakan kaysa
nilayon mo.
Kaya ito i-convert ang resulta -
ito ay bumalik ang resulta bilang isang lumulutang na halaga ng point at pati na rin.
Kaya na gagana.
Ito ay gumagana.
At may isa pang mekanismo na namin makita sa
mas detalyado sa susunod na linggo.
Maaari mong aktwal na, bilang programmer, sabihin sa computer
sa aktwal na ituturing ng isang uri ng data bilang
bagaman ito ay isa pa.
>> Kaya ko maaaring aktwal na gawin ito.
Sa panaklong, ang maaari kong sabihin na ang isang bagay tulad ng (Float), bukas
paren, malapit paren.
At ito ay kung ano ang tinatawag na "Casting." Muli, higit pa
sa susunod na linggo.
Ngunit ito lang ang program na paraan ng nagsasabi sa
computer, oo alam ko 9 ay isang integer o ng mahabang.
Alam ko ito ay hindi isang lumulutang na halaga ng point.
Ngunit ituring ito bilang tulad pa rin.
Kaya nagsumite ng isang uri ng data ibig sabihin nito ay i-convert
mula sa isa sa iba pang mga.
Lantaran, ito ay sandali lang pangit, kaya Gusto ko ipinapanukala naming umalis
-back sa orihinal na mungkahi ng nagko-convert
ang mga bagay na ito sa lumulutang halaga punto nang manu-mano.
Dahil ngayon lang sobrang i-clear kung anong nangyayari sa, at
ito ay hindi lahat na distracting.
>> Kaya natin ngayon ay bumalik sa aking terminal na window.
Gawing f2c.
Hayaan akong magpatuloy at patakbuhin ang.
At, bilang isang bukod, na makukuha mo nababato type mga utos
muli at muli, nauunawaan natin na computer, tulad ng Linux dito,
may posibilidad na medyo na smart.
At kung ako pindutin Up, maaari naming pumunta sa pamamagitan ng aking buong kasaysayan ng
command, Pataas at Pababa.
Kaya sa kasong ito dito, maaari kong pumunta lamang Up na tumakbo na f2c.
Ako yelled sa, dahil ko lang ginawa na ang isang segundo na nakalipas.
Nang hanggang sa petsa.
Kaya ngayon maaari ba akong magpatakbo ng f2c muli.
Natin subukan ang 32 Fahrenheit.
Ngayon sabihin subukan ang 212 Fahrenheit.
>> Phew.
Tila upang gumana.
Ngayon, ito ay mabuti, ngunit ito nararamdaman ng kaunti arbitrary na
Nagpapakita ako ng mga anim na numero pagkatapos ng decimal point.
Tama?
Kung ikaw ang panahon ng tao sa TV, ikaw ay ang uri ng isang doofus
kung binabasa mo ang temperatura sa
ang antas ng katumpakan.
Kaya sabihin pasimplehin ito.
Kaya ipaalam sa aktwal na pumunta dito, sa aking printf.
At oo, gusto kong lumutang.
Ngunit nais ko na ngayong tukuyin ang katumpakan.
At ako pagpunta sa isang maliit na maikli at malinaw.
Ako pagpunta upang sabihin, bigyan ako ng isang punto pagkatapos ng decimal na lugar.
Kaya sa halip na nating ang% f, ako pagpunta sa sabihin% .1 f.
At ito ay nangangahulugan lamang ninyo akong bigyan ng isang posisyon
pagkatapos ng decimal point.
Ayos lang.
Natin subukan ito muli.
Hayaan akong muling patakbuhin ang mga ito pagkatapos ng kino-compile ang.
At ngayon ko type sa 32, at nakukuha ko pabalik ng
higit pang mga halaga ng maikli at malinaw.
At maaari ba akong type sa, ngayon, 212, at makakuha ng isang mas maikli at malinaw
halaga pati na rin.
At may iba pang mga bagay na maaari mong gawin sa printf.
Maaari mong aktwal na tukuyin kung gaano malawak ang numero ay dapat na.
Kung gusto mong magkaroon ng padding dito, kaya maaari mong i-right-ihanay o
kaliwang ihanay ang lahat ng iyong mga numero o
subukan sa sentro ng mga bagay.
Kaya Napagtanto may maliit na trick maaari mong gawin may.
Ngunit sila lamang pasingawan sa code format,
tulad namin magkaroon doon.
>> Kaya sa mga tuntunin ng ang isyu na ito ng mangingibabaw.
Ito ay pagbubutas talahanayan upang pumunta sa pamamagitan ng methodically.
Ngunit Napagtanto na ang mga may-akda ng C makabuo ng
panuntunan na tukuyin kung aling mga operator ay may mas mataas na
mangingibabaw, mas may-bisang kapangyarihan, kaysa sa iba.
Kaya kung saan sa mababang paaralan, alam namin sa pangkalahatan na ito ay
multiplikasyon at dibisyon, pagkatapos karagdagan at pagbabawas,
pagkatapos ilang iba pang mga bagay-bagay.
Sa mundo ng programming, may isang mas
mas mahabang listahan ng mga bagay.
At ito ay hindi isang bagay na nagkakahalaga memorizing ngayon.
Makakakuha ka ng acclimated dito bago mahaba.
Ngunit tulad ng sa mababang paaralan, panaklong pangkalahatan malutas
ang mga isyu ng mangingibabaw, sa pamamagitan ng sobrang maliwanag sa
computer at tao magkamukha kung ano ang nilalayon.
Kaya isaalang-alang ang isang maliit na sheet ng impostor doon.
Ngunit karamihan ng mga detalye hindi namin ay makakakuha para sa ilang oras.
>> Ayos lang.
Ngayon, sabihin bumuo ng up at ilipat ang layo mula sa mga ulok maliit
mathematical halimbawa.
Pa ring gamitin ang parehong batayan, ngunit magsimula
pagpapahayag ng ating sarili ng kaunti pa tulad ng sa simula.
Kaya sa simula, nagkaroon kami ng mga Boolean expression.
At sa Ingles, Boolean expression ay ang?
Totoo o hindi.
Ito ay isang bagay na sinusuri sa true o false.
1 o 0.
On o off.
Anuman ang nais mong tawagan ito.
Ngayon sa simula, ang mga piraso ng puzzle ay tumingin tulad nito.
At na ang kumbinasyon, sa ibaba doon, ng tatlong
puzzle piraso.
Isa kasama -
isang bagay na may blangko at blangko.
At pagkatapos ay dalawang Boolean expression sa loob nito.
Kaya maaari mong ma-nest ang Boolean expression upang makakuha ng higit pa
kumplikado Boolean expression.
Halimbawa, kung ito ay Sabado, at maganda
panahon, pagkatapos ay pumunta sa labas.
O isang bagay na arbitrary tulad na.
Kaya maaari mong sumali Boolean expression up sa isang
mas malaking halaga ng katotohanan, na ang sagot ay batay
sa mas maliit na mga.
>> Ngayon, sa C, thankfully, mapping na ito ay
aktwal na medyo simple.
Panaklong makatulong sa gumawa ang mga bagay na i-clear dito.
&& Kung ano ay nangangahulugan "at." Kaya na kung paano
kami ay i-convert ang mga bloke mula sa simula sa C.
At para sa mga kundisyon nakita natin sa simula, sa kaliwang banda
bahagi doon, maaari ko stack ang mga ito katulad sa C. Kung x ay mas
kaysa y, pagkatapos ay gawin ito.
Iba Pa kung ang x ay mas malaki kaysa sa y, pagkatapos ay gawin ito.
Iba Pa lohikal na dapat silang magiging katumbas, kaya sabihin
na ang mga ito ay pantay-pantay.
Upang maaari naming ngayon simulan upang makabuo ng mga bagay na ito.
>> Kaya natin ang isang halimbawa.
Hayaan akong buksan ang isang file na sa website ng kurso na
Sinulat ni ako nang maaga.
Na tinatawag na nonswitch.c.
At kami na makita kung bakit sa sandali lamang.
Kaya sa ang file na ito - nonswitch.c--
unang mapagtanto na may isang buong grupo ng mga
mga komento sa itaas.
Na lamang na nagpapaliwanag ng mga pangalan ng file, kung ano ang
, at iba pa.
At tila nagpapakita ng paggamit ng Boolean AT-Pina -
conjoining dalawang expression.
>> Kaya sabihin makita kung paano gumagana ang programang ito.
Isinama ko ang aking dalawang mga file, cs50.h at stdio.h.
Kung mag-scroll ko pababa, ngayon, sa programa, ito ay isang maliit na na
kaysa sa nakasulat na namin ang bago, ngunit medyo nababasa.
Kaya ko munang mag-print sa gumagamit, sa linya 18,
"Bigyan mo ako ng isang integer sa pagitan ng 1 at 10." Kaya
na doon.
Ngayon na nakukuha ko ang integer.
Ngunit Napagtanto na GetInt - medyo simple.
Lamang ito upang makakuha ng isang int.
Ito ay upang matiyak na makakuha ng isang int at hindi isang
string o isang Float.
Ngunit hindi ito ay pagpunta sa gawin ang anumang uri ng hangganan checking.
Hindi ito upang i-filter ang mga numero sa pagitan ng isang
ilang mga hanay.
Kaya mayroon kaming ipatupad na ating sarili.
Kaya lang gusto sa simula, kung saan maaari kong gawin kaugnay ng
dalawang expression, maaari kong gawin na sa C tulad ng sumusunod.
Kung ang n ay mas malaki kaysa sa o katumbas ng 1, at n ay mas mababa at
o patas sa 3, ako pagpunta sa napaka-mang mag-atas na
bilang isang maliit na bilang.
Para lamang sa ang kapakanan ng isang pahayag.
Iba Pa kung ang n ay sa pagitan ng 4 at 6, print "Pinili mo ang isang medium
numero. "Iba Pa kung ang n ay sa pagitan ng 7 at 10, print" Pinili mo ang isang
malaking bilang. "Iba Pa-print" kang pumili ng isang wastong numero. "
Dahil lohikal, na sumusunod kung na namin
naubos ang aming hanay.
>> Kaya Napagtanto ito ay hindi masyadong kung paano sumulat namin mas malaki kaysa sa o
katumbas ng sa isang klase matematika.
Tama?
Mong karaniwang gumuhit ang mga ito tulad nito, ang linya sa ilalim nito.
Ngunit walang ganoong susi sa aking keyboard.
Kaya ang simbolo sa C para sa pagpapahayag ng mas malaki kaysa sa o
katumbas ng dalawang character, at ang simbolo para sa mas mababa sa
o katumbas ng dalawang character pati na rin.
Ayos lang.
Kaya kung nagpatakbo ako ng programang ito, maaari mong marahil hulaan kung ano ito
pagpunta sa gawin.
Kung pumunta ako magpatuloy at gumawa ng nonswitch, ang Enter.
At pagkatapos ay magpatakbo ng nonswitch.
Bigyan mo ako ng isang numero sa pagitan ng 1 at 10.
Ako pagpunta upang bigyan ito ng 11.
Kinuha ko ang isang di-wastong numero.
Hayaan akong subukan ang bilang 3.
Kinuha ko ang isang maliit na bilang.
Kaya medyo direkta doon.
>> Paano kung gusto kong baguhin ang pag-uugali ng programang ito at
gawin ang isang bagay ng kaunti ibang sa halip?
Hayaan akong magpatuloy at sabihin ito.
Hayaan akong mapupuksa ng lahat ng ito.
At hayaan mo akong sabihin kung (n == 42).
At pagkatapos ay ako pagpunta sa magpatuloy at sabihin ang naka-print na "Pinili mo ang
tamang sagot. "Iba Pa kami ay pagpunta sa sige at sabihin,
printf ("Pinili mo ang
maling kasagutan ");. Okay.
Dahil lamang.
>> Ngayon, ang ilang mga puntos na maaari naming gumawa dito.
Isa, hindi ko i-type ang mga simbolo na gusto mong isipin ay ang
pinaka-makatwirang.
Kapag gusto kong suriin ang pagkakapantay-pantay, lumiliko out na hindi mo gamitin ang
katumbas sign.
Sa halip ay gamitin ang pantay na pantay-pantay na mag-sign.
At kung bakit maaaring na, lamang intuitively?
Oo.
Madla: [hindi marinig]
David J. MALAN: Tama.
Ang katumbas sign na ginagamit para sa pagtatalaga.
Isang tao ay hindi talagang sa tingin ito sa pamamagitan ng.
At kaya ngayon, pagdating sa pagkakapantay-pantay pagsubok, mayroon kaming upang
mas tahasang, at sabihin katumbas katumbas.
Ang isang karaniwang pagkakamali ay upang gawin ito.
At, kung sa mga oras ng opisina o minsan sa susunod na linggo o sa
susunod na dalawang linggo ka ng isang bagay tulad nito at pagkatapos ay
pagpakasakitan dito para sa 10, 20 minuto sinusubukan upang malaman kung
kung ano ang mapahamak bug, Napagtanto na ikaw ay isa sa mga
mga tao na ginawa ang pagkakamaling ito.
Kaya, napakadaling upang gumawa.
Ngunit ang layunin ngayon ay salagin ang pagkakamaling ito.
Ito ay maaaring suriin, dahil kung ano ang ito talagang sinasabi?
Kung n nakakakuha ng 42.
Kaya ang mga pandiwa na ginagamit ng mga tao, pasalita, upang ipahayag ang
paniwala ng pagtatalaga ay "ay nakakakuha." Kaya kung n nakakakuha ng 42.
Kaya na ibig sabihin nito ay magtalaga ng 42 sa n.
Ngayon Mayroon akong isang Boolean expression sa mga panaklong,
sa loob ng kondisyon na ito, ang halaga ng kung saan ay 42.
Tama?
Dahil kung mong suriin ang mga ito mula sa loob out, ang kabuuang
sagot, ngayon, ay 42.
>> Kaya kung Tinanong ko ang tanong, "kung (42)," kung ano ang
na talagang sinasabi?
Well, Boolean expression ay maaari lamang maging totoo o hindi.
1 o 0.
On o off.
Kaya tila namin upang magkaroon ng isang kaso ng sulok dito, kung saan lahat ng
biglaang, ako sinasabi "kung (42)". Ito ay hindi isang Boolean halaga.
Kaya kung ano ang computer gawin, bagaman, ay mahalagang equates
anumang bagay na hindi 0 kahulugan upang maging totoo.
1.
On.
Ito ay lahat ng pagtakbo katumbas.
Tanging ang halaga 0, o ang keyword maling, bibigyan namin
ay makakita, ay talagang hindi.
Kaya "kung (42)" ay aktwal na totoo, dahil ito ay non-zero.
Kaya mas tumpak na dito, Boolean halaga ay talagang hindi kaya
mas tama o mali, ngunit para sa
kaso, kung ay 0 o non-zero.
Kaya hindi totoo o hindi maling.
At na nagbibigay-daan sa amin upang sumaklaw sa lahat ng higit pa
posibilidad sa parenthetical expression.
Kaya kailangan namin upang, napaka mabuti, sabihin ito -
kung (n == 42).
Nang simple dahil kailangan namin upang tukuyin ang isang test ng pagkakapantay-pantay,
hindi isang pagtatalaga ng isang halaga.
>> Ano pa ay nagkakahalaga ng noting dito?
Mga kulot tirante ay talagang hindi kinakailangan.
Ko na ginagawa sa kanila lamang ng lisa-picky dito.
Ngunit kapag mayroon kang isang kondisyon na lamang ay may isang linya ng
code, bilang isang kaginhawahan, programmer ay hindi kailangang gamitin
ang kulot tirante.
Ito suffices lamang i-indent, para sa Aesthetic dahilan, at
pagkatapos ay isulat ang iyong linya ng code.
Lamang kapag nais mong magsulat ng dalawang linya ng code -
Halimbawa, iba pa printf ("Bye!"). Kung gusto mong gawin
na, ito ay nasira.
Maaari mong i-indent ang lahat ng gusto mo, ngunit ang katotohanan na mayroon kang
-type ng dalawang linya ng code nang hindi gumagamit ng mga kulot tirante
nangangahulugan na programa na ito ay hindi tatakbo nang tama o maaari
kahit hindi makatipon tama.
Kaya sa ngayon, upang maging matapat, tingin ko ang pinakamahusay na ugali ay lamang
gamitin ang kulot tirante, at makikita mo na gumagawa ng mga ito
sobrang malinaw kung ano ang nangyayari.
>> Gayundin, bilang isang bukod - lalo na kung ikaw ay kabilang sa mga na gumagamit
ng mga inirekumendang libro o mapagkukunan online -
Napagtanto na may ito paniwala ng estilo sa
programming.
At ang ilang mga tao ay aktwal na ginusto upang ilagay ang kulot suhay
sa paglipas dito sa isang linya.
Ang ilang mga tao ginusto upang gawin ang mga bagay sa katawa-tawa,
bang ilagay ang mga ito dito.
Walang maling sagot pagdating sa
estilo, ngunit ito ay mali.
Ngunit ang ilang mga tao na gawin ito.
[Tawa]
David J. MALAN: Kaya banggitin ko ito ngayon, kailangan lang dahil bilang
mong basahin sa mga bagay sa mga libro o online, ikaw ay upang makakuha ng
iba't-ibang mga mensahe mula sa iba't ibang mga guro at
iba't-ibang mga may-akda.
At lamang Napagtanto na, pagtakbo, sila
pangkalahatang katumbas, ngunit maging pare-pareho.
Kaya sa kasong ito, makikita namin ilagay sa pamantayan sa kulot
tirante lining dito sa kaliwa.
>> Ayos lang.
Kaya sabihin magpatuloy ngayon at patakbuhin ito, at makita kung ano ang mangyayari
sa programang ito.
Gawing nonswitch.
Pagkatapos patakbuhin ang nonswitch.
Bigyan mo ako ng isang integer sa pagitan ng 0 at - kaya na hindi nauugnay
ito, ngunit lamang ako pagpunta sa mang sabihin ng 42.
At pinili ko ang tamang sagot.
Na rin ngayon, sabihin aktwal na tumagal ito sa ibang direksyon.
Ito ay lumiliko out ang ilang iba pang mga syntax na namin
maaaring gamitin sa isang programa.
Narito ang isang bagong piraso ng syntax na halos pareho sa pagtakbo,
ngunit lamang introduces ng isa pang paraan ng pagpapahayag ng ating sarili.
Kaya ito ay kung ano ang tinatawag na isang "lumipat statement." At
Tumatakbo ang switch statement bilang mga sumusunod.
Ito ay tumatagal, sa mga panaklong, ang isang halaga na nais mong
"Lumipat".
Nais mong upang kumilos naiiba batay sa halaga.
Kaya, ang ibig sabihin nito ay lumipat sa ang halaga ng n.
At kung ano ang ibig sabihin nito?
Well, kung ang n ay 1 o 2 o 3, sige at i-print ang "Ikaw
kinuha ang isang malaking bilang "at pagkatapos ay masira.
Ang dahilan para sa pahinga na paraan C gumagana bilang
lalong madaling nahahanap nito sa isang kaso na tumutugma, nagsisimula execute
lahat ng code sa ibaba nito.
Kaya kung mayroon akong isang linya ng code, tulad ng ginagawa ko dito sa linya 27,
ay makakakuha pinaandar.
Kung nagdagdag ako ng isa pang linya dito, maipo-pinaandar.
Linya ng isa pang dito, maipo-pinaandar.
Ang programa lamang hinto execute kung ano ang sa ilalim ng
naaangkop na pahayag kaso kapag ako ay tahasang
sabihin ang "masira." Kaya mali.
Karapatan, sa kasong ito, bilang isang resulta.
Kaso 4 o 5 o 6, katulad, ay pagpunta
upang i-print ang isang mensahe.
Sa kasong ito, medium numero.
Masira.
Kaso 7, 8, 9, 10, ito upang i-print out "Pinili mo ang isang malaking
numero. "Hatiin.
At pagkatapos ay may literal ng keyword na tinatawag na "default"
na epektibo tulad ng "pang tao" bumuo.
Kaya bagong syntax, ngunit intellectually,
wala sa lahat ng mga bagong dito.
Ito ay tulad ng sa simula.
Kung, tao kung, sa ibang tao kung, uri ng bloke.
>> Kaya, na lumipat na bersyon ng programang ito.
Ngunit mapansin na ginawa namin ito na may mga numero dito.
Hayaan akong buksan up ng isang pangalawang bersyon, lamang upang ipakita
isang bagay ng kaunti pa kongkreto.
Kaya dito mayroon kaming grado sa halip.
Lumiliko out maaari mong gamitin ang mga switch hindi lang sa integer, ngunit sa
character.
Hindi sa lahat ng mga uri ng data, ngunit hindi bababa sa sa character.
Kaya dito, maaari naming gawin ang isang bagay tulad ng kung ang halaga ng C na
ang user na nai-type sa, sa ika-19 linya, sa pamamagitan ng paggamit ng GetChar function na,
ay kabisera A o lowercase ng, sabihin bigyang-kahulugan ito bilang isang grado,
at sabihin nila pinili ng isang mahusay na grado.
At pababa sa kahabaan ng switch statement, mayroon kaming iba pang
kaso para sa "B" s at "C" s, at iba pa.
Ngunit ipaalam sa ngayon isalin ang isa pang bagay.
At muli, ang uri ng lumilipad sa pamamagitan ng
ilan sa mga halimbawa.
Subalit talagang upang maaari naming ilapat ang mga ito, ngayon -
o talagang, lamang isalin ang mga ito ngayon -
sa C.
>> Kaya hayaan mo akong magpatuloy at gawin ito.
Ako pagpunta upang buksan ang isang bagong file.
At ako pupunta gawin isama .
At pagkatapos ay ako pagpunta sa gawin int pangunahing (walang bisa).
Hayaan akong i-save ang file bilang isang loop.c.
Lamang ng isang halimbawa.
At ako pagpunta sa magpatuloy at gawin ang mga sumusunod.
Gusto kong magsulat ng pagod sa programa.
Kaya 10.
Natin gawin ito.
9.
Ayos lang.
Sa lalong madaling simulan mo ang paggawa nito sa programming, ikaw
marahil paggawa ng isang bagay mali.
Ngunit magsisimula kami doon pa rin.
Oops.
Na aktwal na mali.
7.
6.
5.
4.
Walang pagpunta sa mangyayari kapag makuha namin sa 0.
3.
2.
1.
Okay.
0.
Tanggalin.
>> Ayos lang.
Kaya bumalik ang 0.
Kaya Ang program na ito ay malinaw naman pagpunta sa gawin kung ano ang mas
sabi ni ito tediously pagpunta sa gawin.
Ito ay upang i-print ang lahat ng mga
halaga, mula sa itaas hanggang sa ibaba.
Kaya ipaalam sa akin gumawa ng loop.
At pagkatapos - Whoops.
Gawing loop.
Ako ay sa maling direktoryo.
At ngayon hayaan mo akong magpatakbo ng loop.
Enter.
Yehey.
Napakabuti.
Nice, mahaba programa.
>> Lahat ng karapatan, ngunit ngayon sabihin gawin ito mas mahusay na.
Tulad sa simula, kapag nagsimula ka gamit ang isang looping
bumuo, sa halip ng pagkopya at pag-paste ng lahat ng
piraso puzzle, hayaan mo akong ipakilala ito bagay.
Kaya sa C, may mga iba't-ibang looping constructs,
isa kung saan ganito ang hitsura.
A "para sa" loop ay may tatlong bagay, na pinaghiwalay ng dalawang semicolons.
At pagkatapos, sa loob ng katawan ng loop, kaya na magsalita - ang
mga bagay-bagay sa loob ng kulot tirante -
maaari naming gawin ang isang bagay muli at muli.
Kaya kung ano ang mayroon akong dito sa screen, ito ay
literal isang komento.
Ang / / ay nangangahulugang dito ay isang komento.
Na ito ay hindi code.
Ito lamang ang Ingles na paglalarawan, sa akin, ang mga tao.
>> Kaya initializations, kundisyon, at mga update.
Well, sabihin makita kung paano ito gumagana.
Ito ay nagbibigay-daan sa akin upang muling isulat ang programang ito tulad ng sumusunod.
Para sa -
kaya dito ay ang aking loop -
int i -
dito ay isang variable na tinatawag na "i" -
nakakakuha ng nasimulan sa 10.
Kaya ang aking Pinasimulan.
Gusto kong gawin ito loop kaya mahaba bilang "i" ay mas malaki kaysa sa o
patas sa 0.
At sa bawat pag-ulit ng loop na ito, gusto kong
upang gawin i -.
Kaya nakita namin + + sa Lunes.
- Ng kabaligtaran.
Ito decrements ang halaga ng 1.
Inside ng loop na ito, gusto kong sa aktwal na gawin ang isang bagay.
Kaya ako pagpunta sa sabihin na ang isang bagay tulad ng printf.
Hindi ko nais na sabihin 10 ngayon, dahil ito ay malinaw naman lamang
pagpunta sa i-print ang parehong halaga.
Ano ang gusto kong i-print sa halip, marahil?
Oo.
Kaya "i." Kaya% d, i.
>> Kaya ako pagpunta sa nakawin ang isa ng mga ideya mula sa mas maaga -
ito pagpapalit para sa mga code ng format -
at pagkatapos ay down na dito, sa ibaba, makikita ko bumalik 0, lang
para sa mabuting panukala.
Ngunit ngayon, mayroon akong higit pa maikli at malinaw programa.
Lamang ng ilang linya, at hindi ilang 10 o 11 na linya.
Hayaan akong pumunta sa aking prompt pababa dito.
Gumawang muli loop.
Muling palabas ng pelikula loop.
At lumalabas na ito ay ang parehong.
Ngayon, ang programa ay hindi mas kawili-wiling.
Ngunit ngayon ang maaari kong i-type ang isang bagay tulad nito.
Ko maaaring baguhin ito sa 100.
Ko mag-recompile ang aking programa.
At pagkatapos ay maaari kong muling patakbuhin ang aking programa.
At ngayon ito napupunta sa napakabilis na sa computer na ngayon.
Ngunit mayroong Mayroon akong -
at aktwal na, ang aking scrollback buffer hindi
kahit pumunta na malayo.
Doon kami.
Kaya mayroon kaming ang lahat ng 100.
Ngunit madali upang gumawa ng mga pagkakamali dito.
Kung ano ang nangyayari ang inaasahang pag-uugali kung ako
sinasadyang gawin iyon?
Kaya ito nararamdaman tulad ng walang katapusan.
Kaya sabihin makita kung ang computer behaves.
>> Kaya hayaan mo akong magpatuloy at gumawa ng loop.
At hayaan mo akong magpatakbo ng loop.
Kaya sabihin bumalik na sa sandali lamang.
Ipapaalam namin na run.
Dahil kung ano ang dapat naming bilangin hanggang sa, Nagnais ng pinakamababang?
Marahil hindi bababa sa 2 bilyong, kung mayroon namin na maraming bit, at
kami ay gumagamit ng mga positibong halaga.
Kaya sabihin tumalon pabalik dito.
Bukod sa mga ganitong uri ng mga loop, mayroon kaming kung ano ay tinatawag na habang
loop. Kaya, tulad ng sa simula, nagkaroon ka nang Tuluyan
bloke, at nagkaroon ka ng mga bloke Ulitin.
Katulad nito, sa C, mo lamang iba pang mga paraan
ng pagpapahayag ng iyong sarili.
Kaya mayroon kang ang paniwala na ito ng isang habang loop na nagpapahintulot sa iyo na
ipahayag ang iyong sarili sa isang maliit na naiiba.
At pagkatapos ay mayroon kang isang bagay na tinatawag do-habang loop,
kung saan ay nagpapatakbo ng bahagyang naiiba rin.
At kami na manunudyo mga bukod sa paglipas ng panahon.
>> Ngunit sabihin tingnan sa huling isa dito.
Kung pumunta kami sa -
tumatakbo pa rin.
Medyo walang katapusan.
Kaya hayaan mo akong pumunta sa positibong, at nagpapakita kung paano maaari naming aktwal
mamamahala sa user input ng kaunti mas epektibo.
Ito ay isang medyo maikling programa.
At dito mayroon kami, sa pangunahing, isang int n deklarasyon.
Kaya bigyan ako ng isang variable na tinatawag n. Ngayon, sinasabi ko literal
"Gawin." At pagkatapos Mayroon akong bukas kulot
suhay, malapit kulot suhay.
At pagkatapos ay mapansin, karapatan pagkatapos na ito, sabi habang n
ay mas mababa sa 1.
Kaya mapapansin na ang mga linya na ito -
19-24 -
sumulat ng sama-sama sa isang Do-habang loop.
At muli, bagong syntax, hindi isang bagong ideya.
Ito ay isa lamang paraan ng looping, syntactically.
Kaya ano ang gagawin?
Gawin ang mga sumusunod habang n ay mas mababa sa 1.
Kaya kung ano ang gusto kong gawin?
Hinihiling ko na ba ninyo akong bigyan ng isang positibong integer.
Pagkatapos ko aktwal na subukan upang makakuha ng isang integer mula sa user.
Ngunit sa mga tuntunin ng pagkakasunud-sunod ng mga pagpapatakbo dito, dahil ang
habang ang kundisyon ay down na dito, pagkatapos ay ako pagpunta upang suriin, ay n
mas mababa sa 1?
Kaya ipagpalagay na ang gumagamit -
matapos na demanded sa ganitong paraan -
uri sa ang halaga 0.
Ang kondisyon na ito ay totoo o hindi?
Well, aktwal na ito ay totoo.
Dahil ang n ay 0, at 0 ay mas mababa sa 1.
Kaya kung ano ang na magpahiwatig?
Gawin itong muli.
Isang beses lamang kondisyon na sinusuri sa False.
Kung type ko sa 42.
Well hindi, 42 ay hindi mas mababa sa 1.
Samakatuwid loop na ito ay tapos na e-execute.
At kaya sa puntong iyon, ang programa ay sabihin, salamat sa
ang 42, sa kasong ito.
Ngayon na mayroon kang ganitong paraan ng pagpapahayag ng iyong sarili -
Hindi namin ay dapat na maghintay para sa upang matapos.
Ito ay pagpunta sa tumagal ng ilang oras.
Upang patuloy sa susunod na oras, marahil.
>> Ngunit ngayon, mayroon kang kakayahan upang sana upang maunawaan ang isang
bit ng geek katatawanan.
Paumanhin.
Ito ay hindi kinatawan ng katatawanan sa computer agham
mundo, ngunit ito ay nakatutuwa.
[LAUGHS] sabihin katapusan sa na tandaan.
At kami ay nakikita mo sa Lunes.
[Palakpakan]