[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. Gawin itong muli. 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]