[Powered by Google Translate] DAVID J. Malan: Në rregull, kjo është CS50 dhe ky është fund të javës 1, kështu që kartat e studimit janë në dhe numri i përgjithshëm i shokët e klasës që ju e keni këtë vit është 745. Dhe ne jemi të pushtuar në mënyrë që të ketë kaq shumë prej jush gjatë këtë semestër, por edhe pse ky kurs është aq i madh, të kuptojë se kjo është këto gjëra si dreka e premte, si orarit të punës, 15-personi seksione, dhe kështu me radhë që janë të destinuara të vërtetë për të krijuar këtë më intime mjedisit. Pra, edhe pse ne mund të mblidhen një herë ose dy herë në javë, këtu në Sanders, e di se shumë nga përvoja juaj në këtë kurs do të jetë shumë duart-në në së bashku me shokët e klasës tuaj dhe stafit mësimor. Pra, këtu ne do të shkojmë, Fall 2012. Pra, kujtojmë se koha e kaluar ne përfundoi në një notë të pasaktësi, duke folur në lidhje me përfaqësimin e numrave. Dhe ne shikoi në një prej dështimeve që ndodhur, në bota reale, kur ai erdhi për keqkuptim si kompjutera punë. E pra, sot ne do të rishqyrtojnë një tjetër një nga ato ide, si dhe vazhdojmë diskutimin tonë të klientit CS50 dhe C dhe çfarë do të thotë me të vërtetë të programit. Por së pari, vetëm një çift i njoftimeve shakullimë. Seksione fillojnë kjo diel, dhe javë parë është gjithmonë një pak e një fillim të shpejtë, sepse ne sapo mori në format tuaja seksion. Ne jemi duke bërë të njëjtën gjë, tani, me miqtë mësimore, tani se ata e dinë oraret e tyre, kështu që ne jemi duke synuar, duke Shtunën në mëngjes, për të ndjekur deri me ju me seksionin tuaj Caktimi dhe TF. Kuptojnë se ata do të fillojnë ditën e nesërme, e diel ose hëna apo e marta. Dhe pastaj ne do të pranohen ndryshimet seksion si ato të lindin në ditët që do të vijnë. Orari i punës, ndërkohë, janë, përsëri, sonte, 8:00 në 11, në Annenberg, si edhe natën nesër. Edhe pse problemi grupe janë në përgjithësi për shkak të enjteve në mesditë, ju duhet të kuptojë deri në pesë ditë me vonesë për të shpenzuar, prandaj disponueshmërinë e orarit të punës të enjten, nëse ju të holla në një nga ato ditë dhe në fund, në këtë mënyrë, të paraqesë diçka të premten. Më lejoni të sugjeroj se Scratch është në mesin e më shumë argëtim, ndër më të ulëta grupe kyçe problem. Dhe unë do të rri në fund të këtyre ditëve, strategjikisht, vetëm për më vonë në semestrin kur jeta fillon të marrë në mënyrë me midterms dhe klasave të tjera. Set 1 Problem, ndërkohë, do të jetë postuar në kursin e website të premten, pasi do të jetë në këmbë e kursit të përmes video, që do të filmohet në 02:30 të premten dhe pastaj të postuar në internet nga dita e ardhshme. Pra, ne përfundoi të hënën. Unë dua të - në fakt, një shënim këtu. Sepse klasat - Sanders, sepse nuk bën pikërisht të japë vetë të rastit Q & A mbrapa dhe me radhë tmerrësisht të mirë, ne jemi do të provoni diçka pak më të re të këtij viti, ku në qoftë se ju nuk jeni të rehatshëm duke ngritur dorën tuaj apo ju vetëm vend nuk do të ngrejë dorën tuaj në një dhomë si kjo, ne do të kemi disa nga miqtë e mësimdhënies dhe CAS-it ruajtja cs50.net/discuss gjatë ligjëratës. Pra, nëse ju keni ndonjë pyetje, sepse unë kam qenë plotësisht i paqartë në lidhje me diçka ose ju jeni kurioz rreth disa temë, provoni postimi atë atje. Tag atë me një etiketë të ligjëratës, dhe ne do të bëjmë më të mirën sot dhe javën e ardhshme - we'll provoni këtë jashtë - për fushën e IT ose elektronike, online, ose në qoftë se ai ndjehet si ne duhet me të vërtetë trajtuar atë masë, një nga Fellows mësimore ose AK do të ngrejë dorën e tyre dhe të kërkojë anonime në emër tuaj. Pra, ne do të japim këtë një provoni dhe shikoni se sa mirë punon kjo. Por, me të gjitha mjetet, të vazhdojë të ngrejë duart si ju dëshironi. Pra, është koha e fundit që zbuloi se 10% ose një e dhjeta nuk është, në fakt, 0.1, si ju ishin mësuar shumë vite më parë. Është në fakt, një vlerë si kjo. Por kjo nuk është tërësisht e vërtetë, apo jo? Ne vetëm kemi këtë kufizim në kompjuter ku, në qoftë se ju kanë vetëm një sasi e fundme e kujtesës, RAM, ose më shumë posaçërisht bit, mirë, ka vetëm një numër i kufizuar gjëra që ju mund të përfaqësojnë. Për shembull, në qoftë se ne kemi numrin zero, dhe ne duam të përfaqësojnë në binar, përdorur tetë bit, ku një pak, përsëri, është një zero ose një një, ne might paraqesin atë si 00.000.000. Dhe kjo është një fjalëshumë pak panevojshme. Ashtu si në sistemin decimal në botën reale, Në përgjithësi, në qoftë se ju doni të shkruani numrin 123, ne njerëzit ndoshta nuk shkruaj edhe pse 00000123, funksionalisht, që është numri i saktë njëjtë. Ne vetëm rënie zero kryesore, në mënyrë që të flasin. Në binar, ne mund të bëjmë të njëjtën gjë. Binary dhe zero, zero dhe binar është vetëm zero. Ju duhet vetëm një grimë të vetme. Por përsëri, njësia më e zakonshme e masës në botë e informatikë është bytes, tetë BITS. Vetëm për shkak se një pak, mjaft të padobishme. Tetë BITS, jo tmerrësisht e dobishme, por të paktën kjo është më shumë dobishme se një njësi të vetme të masës. Pra, me tetë BITS, ne do të zakonisht përfaqësojnë binar. Pra, këtu kemi numrat zero, një, dy, dhe pastaj, si Nate bëri në video tonë mërkurën e kaluar, ne mund të vazhdojmë numëruar deri në shtatë, të tetë. Dhe pastaj, nëse ne përdorim bit gjithnjë e më shumë, ne mund të llogarisë deri në pafundësi. Por në qoftë se ju keni vetëm një numër i caktuar i këtyre bit, siç është rasti në çdo sistem kompjuterik, apo edhe raketave sistemit, edhe, në të vërtetë ju keni vetëm një Shuma e fundme e saktësi. Pra, nëse ju doni të përfaqësojnë numrin si 0,1, mirë, kompjuter ka për të zgjedhë dhe të zgjedhin. Dhe në qoftë se ajo ka vetëm një numër i caktuar të numrave që mund përfaqësojnë, kjo mund të vijë afër 0.1 për ju, por kjo nuk mund të domosdoshmërisht të ju jap pikërisht vlerën që ju dëshironi. Dhe kjo është vetëm një nga sfidat e kompjuterëve, nën kapuç, fatmirësisht. Si ne shkojmë më larg në semestrin, këto nivel më të ulët detaje të bëhet shumë më pak interesante, por sigurisht Zbatimi i këtyre ideve mund të ketë disa botën reale shumë degëzime. Njëra është një argëtim pak. Sa prej jush e kanë parë të mahnitshme Office Space film? Nëse ju nuk e keni, se është jozyrtare tuaj Detyrat e shtëpisë për javën. Por në Office Space, se miqtë në këtë film marrin Avantazhi i kësaj ideje pikërisht, por ata në fakt vodhi atë nga një tjetër film që ju mund të keni parë, edhe vite para. Pra më lejoni t'ju jap disa sekonda e këtij rimorkio nga ky film mahnitshme dhe kjo është shumë e shkollë përkatëse. [Luan MOVIE] Në fakt unë jam duke u promovuar. Unë mund të programit një virus që do të shqyej se vend jashtë kohë të mëdha. E pra, si e bën këtë punë? Sa herë që ka një transaksioni bankar, ku interesi është llogaritur, nuk janë mijëra në ditë, kompjuter përfundon me këto fraksionet e një qind. Por unë nuk jam duke shkuar për të bërë diçka të paligjshme. Paligjshme? Samir, kjo është Amerika. Ju duhet të betohen për Zotin. Nëse askush nuk e di në lidhje me këtë, por ne, të gjithë të drejtë? Asnjë anëtarët e familjes, nuk ka girlfriends, askush. [E padëgjueshme]. Mos u bëni merak, njeriu, unë nuk do të tregoj askujt as. [MOVIE FUND] Të gjithë të drejtë, kështu që ndoshta kam gjetur këtë film më të mirë se shumica njerëzit këtu, por në çdo rast, virusi që ata ishin duke u përpjekur për të krijuar - dhe në filma, në çdo kohë ata do të thërrasë diçka një virus, kjo nuk është në përgjithësi në fakt një virus. Kjo është vetëm një program që dikush shkroi për të bërë diçka. Dhe në këtë rast, djemtë ishin duke u përpjekur për të shkruar një program që mori avantazhin e quajtur kompaninë e tyre të Innotech Sistemi informatikë, ku kompjuterat, gjithashtu, edhe kur fjala për para, nuk mund domosdoshmërisht paraqesin para saktësisht. Pra, edhe pse ju mund të keni 0,10 $ në llogarinë tuaj bankare, 0.10, mirë, kompjuteri mund të vërtetë mendoj se ju keni kjo cent shumë në llogarinë tuaj bankare. Dhe kështu që ajo që këta njerëz ishin të aspirojnë për të bërë - dhe ata vodhi idenë, ajo rezulton nga Superman III, ku Richard Pryor bëri të njëjtën gjë - ata ishin në thelb programe shkrim që aspirojnë për të marrë të gjitha të zvarritës numra, të gjithë e vogël,, fraksionet e vogël e vogël pennies dhe vjedhur ato jashtë në mënyrë që njerëzit vetëm mendim, oh, kjo është vetëm 0,10 $ atje, por të gjithë ata që Numrat zvarritës përfundimisht të shtoni deri. Pra, një ide të mrekullueshme dhe kjo backfired hilariously në atë film veçanti. Por në botën e vërtetë, gjithashtu, ka shumë më tepër në lidhje Implikimet e këtyre llojet e gjërave. Dhe një nga arsyet të zhyten në fushën e kompjuterit shkenca është, përsëri, zbatueshmëria e tij të mos inxhinieri shkenca vetëm, por vetëm për fusha të tjera si. Pra, kjo është një vështrim pak lighthearted se çfarë mund të shkojnë keq, por ajo është gjithashtu mjaft e hapjes sy, unë mendoj se, kur është fjala për kuptuar saktësisht se si i gjithëpranishëm teknologjive si kompjutera dhe programimi apo këto ditë, në formën e software. Pra, ky klip tjetër është vetëm rreth gjashtë minuta, vazhdon ku ne u ndërpre për herë të fundit, por na lejon të shohim pak më në thellësi në një nga këto çështje të tillë. Më lejoni të kaloni përpara për të ku ne u ndërpre, që është e drejtë këtu. Dhe ne kemi pjesën e dytë të dy, për rreth gjashtë minuta këtu. [PLAY MOVIE] Rrënuar teknologji moderne raketash. Në vitin 1991, me fillimin e Luftës së parë të Gjirit, të Patriot raketave përjetuar një lloj të ngjashëm të konvertimit numri problem. Dhe si rezultat, 20 njerëz, 20 ushtarë amerikanë, janë vrarë dhe rreth 100 të tjerë u plagosën, kur Patriot, e cila ishte menduar për të mbrojtur kundër Scuds hyrëse, dështuar të zjarrit një raketë. Kur Iraku pushtoi Kuvajtin dhe Amerika filloi një shkretëtirë Stuhia në vitin 1991 e hershme, raketa Patriot bateritë ishin vendosur për të mbrojtur Arabinë Saudite dhe Izraeli, nga Irakut Raketa Skud sulmet. Patriot është një medium-varg amerikane tokë-ajër të sistemit, prodhuar nga kompania Raytheon. Madhësia e interceptorëve Patriot vetë, është në lidhje afërsisht 20 metra e gjatë dhe peshon rreth £ 2000. Dhe ajo mbart një kokë rakete prej rreth - Unë mendoj se është afërsisht £ 150. Dhe mbushjen vetvete është një eksploziv i lartë i cili ka fragmente rreth tij. Shtresë e jashtme e mbushje është projektuar për të vepruar si buckshot. Raketat janë kryer katër për enë dhe janë transportohen nga një rimorkio gjysmë. Anti-raketë Patriot sistemi shkon prapa të paktën në 20 vjet tani. Ajo ishte projektuar fillimisht si një raketë e mbrojtjes ajrore të xhiruar poshtë aeroplanë të armikut, në Luftën e parë të Gjirit. Kur se lufta erdhi së bashku, Ushtria donte të përdorin atë për të xhiruar poshtë Scuds jo, aeroplanë. Forcat Ajrore Irakut nuk ishte aq shumë e një problemi, por ushtria ishte i shqetësuar në lidhje me Scuds. Dhe kështu ata u përpoqën për të përmirësuar Patriot. Intercepting një raketë armik udhëtojnë në Mach 5 ishte duke shkuar për të sfiduese mjaftueshme. Por kur Patriot u nxituan në shërbim, ushtria nuk ishte në dijeni të një modifikim të Irakut që e bëri e tyre Scuds gati e pamundur për të goditur. Çfarë ka ndodhur është Scuds që ishin vijnë në ishin të paqëndrueshme. Ata ishin luhatja. Arsyeja për këtë ishte se irakianët, në mënyrë që të merrni 600 kilometra jashtë e një rakete me rreze 300 km, mori pesha nga mbushje përparme dhe bërë mbushjen lehta. Deri tani Patriot është duke u përpjekur për të ardhur në Skud, dhe shumica e koha, shumica dërrmuese e kohës, kjo do të vetëm fluturojnë nga Skud. Pasi operatorët e sistemit Patriot realizuar Patriot humbur objektivin e saj, ata shpërthyen në kokë rakete Patriot. Për të shmangur viktimat e mundshme, ajo u lejua të bjerë në tokë. Kjo ishte ajo që shumica e njerëzve e panë, si fireballs mëdha në qiell, dhe keqkuptuar si interceptimin e raketave Skud. Edhe pse, në qiellin e natës, patriotë duket të jetë Scuds shkatërruar me sukses, në Dhahran, nuk mund të ketë gabim në lidhje me punën e saj. Atje, sistemi i radarëve Patriot i humbur gjurmët e një Skud në hyrje dhe kurrë nuk filloi për shkak tek një krisje software. Ai ishte i pari që izraelitët zbuluar se më sistemi ishte në, aq më i madh mospërputhja kohë u bë, për shkak të një orë ngulitur në kompjuterin e sistemit. Rreth dy javë para tragjedisë në Dhahran, The Izraelitët raportuar në Departamentin e Mbrojtjes se Sistemi ishte duke humbur kohë. Pas rreth tetë orë në punë, kanë vërejtur se Sistemi është duke u bërë dukshëm më pak i saktë. Departamenti i Mbrojtjes u përgjigj duke i thënë të gjitha the Patriot bateritë që të mos largohen nga sistemet për një kohë të gjatë. Ata kurrë nuk tha se çfarë është një kohë të gjatë ishte - 8 orë, 10 orë, 1,000 orë. Askush nuk e dinte. Bateria Patriot vendosur në kazermat në Dhahran dhe ora meta e saj të brendshme kishin qenë në më shumë se 100 orë në nata e 25 shkurt. Është koha për të gjurmuar një saktësi prej rreth një të dhjetën e një të dytë. Tani një e dhjeta e dytë është një numër interesante sepse ajo nuk mund të shprehet në binar, saktësisht, që do të thotë ajo nuk mund të shprehet saktësisht në ndonjë kompjuteri modern dixhital. Është e vështirë të besohet. Por përdorin këtë si një shembull. Le të marrë numrin një të tretën. Një e treta nuk mund të shprehet në decimal, pikërisht. Një e treta e 0,333 vazhduar për pafundësi. Nuk ka asnjë mënyrë për të bërë këtë me saktësi absolute në decimal. Kjo është saktësisht të njëjtin lloj problemi që ka ndodhur në Patriot. Sa më gjatë që sistemi u, më keq gabim kohë u bë. Pas 100 orësh operacion, gabim në atë kohë ishte vetëm Rreth një e treta e një të dytë. Por në drejtim të synimeve të dhënësit të një raketë udhëtonte në Mach 5, kjo ka rezultuar në një gabim ndjekja e mbi 600 metra. Ajo do të jetë një gabim fatal për ushtarët në Dhahran. Çfarë ka ndodhur është një nisjen Skud u zbulua nga paralajmërimin e hershëm satelitë dhe ata e dinin se Skud u vijnë në e tyre Drejtimi i përgjithshëm. Ata nuk e dinë se ku ai po vinte. Ajo tani ishte deri në komponentin e radarëve Patriot sistemit, mbrojtjen Dhahran, për të gjetur dhe për të mbajtur gjurmët e raketave në hyrje armikut. Radari ishte shumë i zgjuar. Ju në fakt do të ndjekur qëndrimin e Skud dhe pastaj parashikojnë ku ajo ndoshta do të jetë hera e ardhshëm radar dërguar një impuls jashtë. Kjo u quajt porta e varg. Pastaj, sapo vendos Patriot kohë të mjaftueshme ka kaluar për të shkuar mbështetur dhe kontrolloni vendin tjetër për këtë zbuluara objekt, ajo shkon prapa. Pra, kur ai u kthye në vendin e gabuar, atëherë nuk sheh kundërshtojnë, dhe ajo vendos se nuk kishte asnjë objekt. Kjo ishte një zbulimi të rreme dhe bie pista. The Skud në hyrje zhdukur nga ekrani i radarit. Dhe sekonda më vonë, ajo u përplas në kazermë. The Skud 28 të vrarë dhe ishte i fundit gjuajtur gjatë i pari Luftës së Gjirit. Tragjikisht, software updated arriti në Dhahran nesërmen. Dhe metë software ishte fiksuar, duke mbyllur një kapitull në historia e trazuar e raketave Patriot. Patriot është në fakt një akronim për "Ndjekja Array faza Ndërpres të synuar. " Të gjithë të drejtë, kështu që një rezultat shumë më të pikëlluar se nuk mjaft kuptuar këtë botë. Dhe takeaway, me të vërtetë, nga filmi është se zgjidhja u ristartoni sistemin mbrojtës nga raketat tuaj çdo herë në një kohë. Dhe kështu përsëri, një prej qëllimeve të këtij kursi, sigurisht në një shkallë më të përulur se këtyre kërkesave, është që të Sytë e të gjithëve me të vërtetë hapura për të pikërisht si ju shkoni në lidhje me Makinat bërë bëni atë që ju doni ta bëni dhe si ju shkoni për të bërë që të saktë, ndërsa gjatë rrugës duke e bërë atë mirë, elegante, dhe kështu me radhë. Dhe kështu sot, le të zhyten në një pak më shumë për këtë, por kështu që ne nuk do të shkojnë shumë shpejt, sidomos për ata më pak rehatshme, por edhe kështu që ne mund të mbajë interesin e ato më të rehatshme, le të vetëm të shpejt të fillojë me pak e radhitje e disa prej këtyre ideve. Dhe përsëri, pyesni larg, si në personin ose në internet, nëse ju keni Pyetjet kështu që ne mund të mbajë të gjithë në të njëjtën faqe. Pra CS50 Appliance, hap të shpejtë mbrapa, është çka, me fjalët tuaja? Është në rregull nëse ju nuk kanë idenë se çfarë ato fjalë mund të jetë ende. [E padëgjueshme] Mirë, kështu që një ndërfaqe universale për - që ne të gjithë mund të ndajnë. Absolutisht. Pra, ne mund të, për shembull, ju them për të shkuar në disa internetit, shkarkoni këtë softuer për Mac OS. Shkarko këtë softuer për Windows, konfiguroni në në këtë mënyrë dhe se. Por realiteti është atëherë ne të kandidojë në të panumërta teknike mbështetur çështje. Dhe gjithashtu këto ditë, shumë nga ajo që është duke u bërë krah server, në botën e informatikes, sidomos kur është fjala për web zhvillim dhe aplikimet web bazuar, është në të vërtetë mjaft shpesh bëhet në Unix ose Linux kompjutera, në krahasim me Macs PC apo Windows. Pra, midis upsides, pastaj, duke përdorur këtë gjë të quajtur CS50 Appliance është që ne do të kemi të gjithë të njëjtin ambient. Pra, të gjithë e në të njëjtën faqe pa marrë parasysh se çfarë hardware që ju erdhi në kampus me të, por gjithashtu do të dabbling pikërisht mjedisi njëjta që ju do të jetë duke përdorur drejt Fundi semestrit si edhe për web zhvillim, si dhe në ardhmen për aplikimet botës reale të tyre. Pra më konkretisht, Appliance CS50 është një pjesë e lirë e software që ju lejon të kandidojë një sistem tjetër operativ, Linux, në këtë rast, në kompjuterin tuaj, në një dritare. Tani ju nuk mund të shkarkoni aplikim. Keni nevojë për një program me të cilin do të luajë apo të drejtuar pajisjen. Dhe kjo pjesë e software është i njohur përgjithësisht si një hypervisor. Hypervisors vijnë në formën e produkteve si VMware, Box Virtual, Paralele. Të gjitha llojet e kompanive të bëjë software, dy të lirë dhe komerciale, njësoj. Çfarë ju do të shihni në Set 1 Problem janë udhëzime se si të të marrë software të lirë me të cilin do të drejtuar Appliance CS50. Dhe një herë ju bëni, ju do të keni në një dritare në Mac apo PC tuaj, një mjedis desktop që duket mjaft si kjo, ku ajo ka një gjë e Fillimit menu-si në fund majtë qoshe. Ajo ka një dosje në shtëpi, apo directory shtëpi, në të majtë të lartë atje, një plehra mund, dhe kështu me radhë. Pra, ne do të vë në lojë përveç detajet e nevojshme si ne do të shkojmë. Por tani le të fillojë të zhyten në C. Pra C është kjo gjuhë programimi, të ngjashme në frymë të Zeroja, por shumë më pak grafike, por për ironi, tani më të fuqishme sapo ju të merrni tru me të. Pra në C, kemi shkruar programe duke shkruar kodin burim, i cili është kjo Anglisht-si sintaksë, të ngjashme me çorape Demonstrata që ne e bëmë herën e fundit që ju lejon të shprehin veten mjaft saktësisht, nëse arcanely, tek kompjuter. Pra, çfarë lloji të programeve të produktit keni vërtetë nevojë për të shkruar programe në një gjuhë si C, të bazuar në tonë Biseda të hënën? [E padëgjueshme] OK, ju vetëm duhet një editor teksti. Ju nuk keni nevojë për ndonjë softuer të veçantë në vetvete për të shkruar programe. Ju duhet vetëm një editor teksti si Notepad-in, në Windows, TextEdit në Mac, ose diçka të quajtur gedit, në të botës e Linux, të cilat ne do të përdorim këtu. Dhe kjo është ajo, për të shkruar programet. Por shkrim është vetëm gjysma e ekuacionit. Atëherë ju duhet të drejtuar ata. Por në mënyrë që të drejtuar programet - ju nuk mund të kandidojë kodin burim. Ju në vend të kësaj duhet të bëni atë për të parë? Po. DAVID J. Malan: Ju duhet të përpiloni atë. Dhe, dikush tjetër, hartimin e kodit burimor të thotë - [E padëgjueshme] DAVID J. Malan: Pikërisht. Përkthimin atë në zero dhe ato. Sepse të gjithë ne, këto ditë, kanë kompjuterë që kanë CPUs, pothuajse të gjithë që janë bërë nga një kompani e quajtur Intel, dhe Intel Brenda, do të thotë se kjo brenda truri i juaj kompjuter, i njohur si CPU. Dhe një nga gjërat që bën që truri është, ai e di si për të kuptuar modelet e zero dhe ato. Ai e di se çfarë modeli i përfaqëson bit shtesë, çfarë model përfaqëson ZBRITJET, çfarë modeli i bit përfaqësojnë shtypjen, dhe krijimin e një tingull zanor. Pra me pak fjalë, CPU, së bashku me sistemin operativ, cila është një pjesë e software që shkon në majë të CPU, mënyrë që të flasin. Së bashku, këto dy copa e di se si për të drejtuar programet që ne njerëzit shkruajnë. Pra, nëse unë shkoj në Appliance CS50 këtu, kam nevojë për të hapur deri një editor teksti dhe unë mund të hyni në këtë në disa mënyra. Unë mund të shkoni në Menu, Programim, dhe pastaj unë mund të zgjidhni - Jo, jo se menu. Unë mund të shkoj në Accessories / gedit këtu për të hapur editor teksti pak e mia. Ose më thjesht, unë mund të klikoni këtë ikonë të vogël në fund qoshe majtë. Dhe tani kam marrë këtë mjedis këtu. Kjo është goxha e kujton një editor teksti të thjeshtë, me vetëm një ose dy dallime. Në krye, ku kursori është keq tani, ky është vendi ku Unë mund të filloni të shkruani kodin tim. Në fund është kjo gjë quhet dritare terminali. Dhe çfarë llojet e gjërave mund të bëj unë në këtë ashtu-quajtur dritare terminali? [E padëgjueshme] Mirë, kështu që unë do të kandidojë komandat. Dhe disa nga komandat ne u të hënën ishin pak fshehta në fillim, por për ls listë, cd per directory ndryshimit, rm, për të hequr. Pra, kjo është lloj i një mënyrë e vjetër-shkollën e lundrimit tuaj kompjuter, duke përdorur vetëm tastierën tuaj dhe komandat tekstuale, dhe jo, në përgjithësi, duke përdorur një mouse. Por ne do të shohim, para se të gjatë, ky fakt na jep një pak më shumë pushtet dhe saktësi pak më shumë me të cilin do të shprehin veten. Dhe pastaj mbi këtu në të majtë, ne jemi vetëm duke shkuar për të parë, si ne të fillojnë software shkrim, një përmbledhje pak Programi që ne kemi shkruar në të majtë të lartë. Por ne do të shohim që përsëri para se të gjatë. Pra, le të bëjë diçka mjaft të thjeshtë këtu. Më lejoni së pari të shkojnë përpara dhe shkoni tek File, Save, dhe unë jam vetëm do të klikoni mbi jharvard këtu, gjatë në të majtë, dhe jharvard është, përsëri, emër për dosjen time në shtëpi, im fotografi personale, mua, tani po John Harvardit, si të gjithë ju shpejti do të jetë John Harvard në këtë mjedis. Ai e mori këtë directory shtëpi, Dokumentet e mia dhe kështu me radhë, që unë dua të të shpëtuar, tani, këtë fotografi in Kështu që unë jam duke shkuar për të thirrur atë hello.c. Atëherë unë jam duke shkuar për të shkuar përpara dhe klikoni Save, dhe tani ajo që unë kam këtu është një tab quajtur hello.c, aq shumë si një lloj tjetër të redaktorit. Kështu që tani më lejoni të shkoj përpara dhe të filloni të shkruani një program. int main (void). Dhe atëherë unë vetëm e bëri për herë të fundit, printf për shtyp formatuar, ("Hello, World!" );. Pothuajse i plotë. Por unë jam humbur një çift të dhënat. Çfarë është zhdukur nga ky program që unë me të vërtetë nevojë për ajo që në fakt hartojnë? Po. [E padëgjueshme]? DAVID J. Malan: Yeah, kështu që unë duhet të përfshijë standarde I / O bibliotekë. Pra, kjo duhet të shkojë më lart kryesor, kështu që unë jam vetëm do të të bëjë hapësirë ​​për atë atje. Dhe unë jam duke shkuar për të bërë # include . Dhe vini re kllapa angled atje. Dhe si një mënjanë, gedit është një përdorues pak miqësore, në qoftë se nganjëherë pak konfuze, në atë që përpiqet për të ndihmuar tuaj Sytë njoftim se çfarë linja me çfarë. Pra, fakti që kursori im është e drejtë tjetër për këtë angled kllapa, vëreni se si është theksuar kënddrejtë tjera kllapa plus këtë. Dhe kjo është vetëm për të tërhequr vëmendjen time për faktin se unë kanë simetri. Dhe simetri në programimin e në përgjithësi është një gjë e mirë. Në mënyrë të ngjashme, në qoftë se unë të lëvizur kursorin e mia deri në fund, vini re se si formatimin e teksteve kaçurrel vijë deri për të treguar se, po, unë kam një e hapur dhe një mbyllur, mënyrë që të flasin. Të gjithë të drejtë, dhe unë mund të bëjë një gjë tjetër. Kjo nuk është e domosdoshme, por praktikë e mirë, për të thënë 0 kthehen. Dhe 0 kthimin e bën atë për ne këtu? Ose të thotë çfarë? [E padëgjueshme] DAVID J. Malan: Por asgjë nuk është e gabuar. Dhe sinqerisht kjo është e vështirë për shumë të shkojnë keq në një këtë program të shkurtër. Kështu që unë jam vetëm duke u super të qartë se të gjitha është mirë. Unë, njeriu, kur kam drejtuar këtë program, do të ndoshta kurrë shihni se 0. Në përgjithësi, këto shifra që janë duke u kthyer nga kryesore vetëm pasme kokat e tyre tek njerëzit kur diçka shkon keq. Dhe ju merrni një pop up pak gabim sistemit thënë, një, dy, tre, apo çfarëdo numri ishte se u kthye në të vërtetë. Pra, çdo gjë tjetër të keqe me këtë? [E padëgjueshme] DAVID J. Malan: Pra, kjo nuk është aq shumë një gabim funksionale por një estetike. Unë ndoshta duhet të vënë në një karakter newline atje në fund të këtij vargut në mënyrë që ne të vërtetë të lëvizur kursorin në linjë tjetër, dhe programi i vetëm duket pak prettier. Kështu që tani më lejoni të shkoj poshtë në dritaren time terminal dhe zoom in mbrapa Dhe kjo gjë këtu, ajo që quhet shpejtë. Është vetëm kujtuar mua që unë jam, jharvard @ aplikim, ku aplikim është emri i kompjuterit unë jam në. Në kllapa është kjo tildë, simbol squiggle, e cila përfaqëson çfarë? Audienca: Faqja directory. DAVID J. Malan: Faqja directory. Pra, kjo është vetëm një simbol stenografi për të thënë ju jeni në dosjen tuaj personale, ku të gjitha dosjet tuaja të shkojnë by default. Deri tani, në këtu, unë mund të shtypni ls për listën. Dhe e vetmja gjë që unë shoh këtu në këtë moment është hello.c. Dhe kjo është e mirë, sepse unë vetëm shkroi këtë. Pra më lejoni të shkoj përpara dhe të bëni përshëndetje. Dhe vini re unë nuk jam bërë shtypur hello.c. Në vend të kësaj, unë jam vetëm shtypni emrin e file bazë, hello. Dhe të bëjë, siç e pamë hënën, thjesht do të tregoj se unë dua . fotografi c. Deri tani unë kam shtypur bërë hello. Tani unë shoh këtë komandë mjaft të gjatë dhe do të vazhdojë shohim këtë përsëri dhe përsëri. Por të jetë i qartë, tingëllimë, fjalë që sapo u shfaq, kjo është përpilues aktuale. Të bëjë është vetëm një dobi e ndërtuar. Kjo është vetëm një program shumë përdorues miqësore që kursen mua, në afatgjatë, nga detyrimi për të tipit më tepër të lodhshme gjatë komandat si se një. Kështu që ju mund të kandidojë tingëllimë dorë. Ju mund të shkruani të gjithë se me dorë. Vetëm merr shumë e lodhshme. Dhe kështu bëjnë është vetëm një program që thjeshton jetën tonë dhe shkon komandat më komplekse për ne. Të gjithë të drejtë, kështu që tani se çfarë fotografi duhet të ketë në directory tim aktual? Jo vetëm hello.c, por edhe përshëndetje. Pra, nëse unë dua të drejtuar hello, kujtojmë se them dot plagë, ku thotë dot shkoni në dosjen aktuale, kudo që janë, dhe pastaj të drejtuar programin e quajtur hello, dhe në të vërtetë, tani, Kam botë Hello. Të gjithë të drejtë, ndonjë pyetje në workflow ose Sintaksa e ajo që ne vetëm e bëri? Të gjithë të drejtë, kështu që le të marrin gjërat një nivel përsëri. Pra, kjo ishte underwhelming të vetëm të shkruaj një program që vetëm ndonjëherë thotë hello, bota. Pra, ne kemi ndryshuar atë, të hënën, për të thënë, hello, David. Kjo është pak më shumë personale, por vetëm sa e vështirë koduar si Versioni i parë. Pra, jo të gjithë që imponues. Por ekziston, në C, sigurisht përveç funksioneve shtypura, funksionet që ju lejojnë të merrni të dhëna të përdoruesit. Dhe mënyra se si e bëri këtë, ditë të tjera, ishte si më poshtë. Para se unë në fakt të shtypura nga diçka, kam parë mori diçka nga përdoruesit. Pra më lejoni të bëjë këtë përsëri. String s, ku s është vetëm një emër i arbitrare, këtu, për një string, e barabartë getString. Pra, çfarë është getString? Ajo padyshim merr një varg, bazuar në emrin e saj. Por çfarë është ajo, më teknikisht? Kjo është një funksion. Pra, kjo është një funksion që nuk ka ardhur me C në vetvete. CS50 Stafi shkroi këtë. Dhe në mënyrë që të përdorni këtë, ju nuk mund të përfshijnë vetëm stdio.h, Ju gjithashtu duhet të përfshijë çfarë? Po. Pra cs50.h, e cila është vetëm një skedar kemi shkruar disa vite më parë. Ne instaluar atë në aplikim për ju së bashku të gjitha dosjet standarde. Dhe kështu në këto javët e para e klasës, ne do të përdorim kjo vetëm për të lehtësuar procesin e bërë shumë themelore gjëra si të dhëna marrjen përdoruesit. Sepse si ne do të shohim në disa javë, duke marrë të dhëna përdoruesi në një Gjuha C si është në të vërtetë e habitshme komplekse, veçanërisht për shkak se ju nuk e dini paraprakisht, zakonisht, si gjëra shumë përdorues do të shkruani in Dhe kur ju nuk e dini se sa të dhëna të presin, ju nuk e bëni e di se sa memorie të ndajë. Dhe në qoftë se ju në të vërtetë keni një përdorues i cili është duke u përpjekur pavolitshëm të kollitem në sistemin tuaj, të rrëzimit kompjuterin tuaj, edhe, përgjithësi metoda e parë e sulmit është, ashtu siç kam bërë në E hënë, shtypni një rend të gjatë të tërë shkronja të rastit, hit Enter, dhe shikoni se çfarë prishet. Sepse në përgjithësi, në qoftë se një program prishet, që aludon në një krisje të sigurisë, potencialisht. Kjo sigurisht aludon në ju, programues, duke bërë një gabim, por më shumë të rrezikshme, ju mund të keni bërë një sigurisë të lidhura me gabim, dhe në përgjithësi ne do të shohim se kjo është se si makina janë komprometuar në këtë ditë, të dyja në botën e internetit dhe programeve në command line, si kjo. Dakord. Pra string s barabartë getString. Pra, më konkretisht tani, çfarë do të vijë 6 bëjmë këtu? Pra, funksioni në të djathtë merr varg, merr sa argumente? Rregull. Pra askush. Një mendje e shëndoshë pak kontrolloni. Një argument, përsëri, është vetëm një input për një funksion për të ndryshuar sjellja e saj e parazgjedhur në një farë mënyre. Por në këtë rast, unë nuk dua të ndryshojnë Sjellja e getString. Unë vetëm të kërkuar për të marrë një varg. Pra, kam vënë asgjë në kllapa, dhe pastaj kam vënë një pikëpresje demarking fundin e vijës së kodit. Tani, është e barabartë me shenjë nuk do të thotë të barabartë, në vetvete. Kjo do të thotë detyrë, që do të thotë të vënë çdo gjë merr outputted në brendësi të drejtën e çdo gjë që është në të majtë. Pra, në të majtë, të themi se ne kemi deklaruar një string quajtur s. Dhe më konkretisht, ne kemi ndarë memorie brenda të cilat ne do të vënë copa që përfaqëson një sekuencë të karaktere. Por për sot, ne kemi ndarë ose deklaruar një varg. Dakord. Deri tani sapo kam bërë këtë, unë dua të plug në vlerën e nuk është, vlera e Davidit. Pra, kjo është e gabuar pse? Pra, kjo është vetëm fjalë për fjalë hard-coded s. Është për të thënë "Hello, s", i cili nuk është ajo që unë dua. Kështu që unë mund ta bëjë këtë. Shenja për qind është një placeholder, por tani kam nevojë për të kalojnë në printoni një argument të dytë. Kujtojnë se argumentet për funksionet janë të ndara nga presje, kështu presje tjetër këtu kam vënë pas kësaj letër s. Dhe në këtë kontekst tani, s është e ndryshueshme, dhe printf, pas marrjes këto dy inpute - string në të majtë dhe s ndryshueshme emrin në të djathtë - ajo do të plug të fundit në ish për ne, dhe vetëm të shtypura nga një varg bukur bukur që përmban çfarëdo qoftë ajo është që ne të shtypen in Pra, le të provoni këtë. Do të shkojnë përpara dhe zoom jashtë, përsëri në dritaren time terminal. Zoom në në fund këtu. Rivendos bëni përshëndetje. Tingëllimë duket të ketë qenë përsëritje. Unë jam duke shkuar për të tipit. / Hello, Enter. Asgjë nuk duket të jetë ndodh ende, por kjo është në këtë shpejtë që unë mund të shtypni diçka si Nate, Enter, dhe tani ne kemi Hello, Nate. Dhe unë mund të bëjë atë përsëri me Rob, dhe kështu me radhë. Kështu që shpresojmë se tani ky program po sillet si kam ndërmend. Tani, jo të gjitha që përdorues miqësore. Kam asnjë ide se çfarë është duke pritur për mua. Pra, ne me siguri mund të pastruar këtë deri pak. Më lejoni të shkojë mbrapa deri këtu, dhe në vend të vetëm dhe zhytjen në kërkuar e përdoruesit për një varg, më lejoni t'ju them në mënyrë eksplicite Përdorues atë që unë jam duke pritur. Pra printf ("Shkruani një varg:" ); Kështu që nuk ka variabla këtu. Ka shenja për qind. Vetëm fraza anglisht thjeshtë. Më lejoni tani të shkojnë në fund këtu dhe ribërjen programin tim. Por asgjë nuk duket të ketë ndryshuar. Pse? Unë duhet të përpiluar atë. Pra gabim e lehtë për të bërë. Por ju duhet jo vetëm të ruajtur kartelën por recompile programin. Dhe kështu, nëse unë të ri-drejtuar bëjë hello, tani tingëllimë shkon. Tani unë mund të kandidojë. / Hello. Dhe tani shoh "Futni një varg:". Rregull. Tani ajo është një pak më shumë përdorues-miqësor. Nate, Enter, hello, Nate. E pra, le të provoni këtë përsëri dhe të fillojnë të mendojnë për raste qoshe. Pra, ashtu si në Scratch, ju jeni të inkurajuar ose janë duke u inkurajuar në spekulim për lloj të mendoni se çka mund të shkojnë keq në qoftë se ju nuk parashikojnë çdo gjë përdorues mund të bëjë. Mete, prandaj, mund të pasojnë. Kështu hyjnë në një varg - çfarë është një rast qoshe këtu? Çfarë është një skenar që unë, programues, nuk mund të ketë parashikuar? Po. Rregull. Pra, çfarë nëse unë të shkruani në një numër si ky? Dakord. Pra, ai ende punon. Gramatically nuk ka kuptim. Por të paktën programi punon. Çfarë është një rast tjetër qoshe? Diçka që unë nuk pres. Po? Rregull. Pra, ne mund të bëjmë diçka si një numër të vërtetë, të vërtetë e madhe. Pra, le ta bëjmë këtë këtu. Më lejoni të zoom jashtë për një sekondë, më lejoni të theksoj. Nuk mund të kopjoni dhe ngjisni këtu poshtë. Dakord. Kështu që unë nuk mund të kopjoni dhe ngjisni këtë dritare terminali, kështu që ne do të vetëm simulojnë atë. Më lejoni të zoom jashtë, do të përfundojë. Unë nuk jam duke shkuar për të bërë këtë për një kohë të gjatë, sepse ajo nuk do të të vërtetë thyer në këtë program. Por ajo mund të. Enter. Por ai nuk e bëri. Dakord. Por kjo është një rast i vërtetë qoshe. Dhe arsyeja e vetme që sillen si duhet, në mënyrë që të flasin, sepse CS50 getString funksioni është në të vërtetë projektuar nën kapuç, siç do të shohim në disa javë, automatikisht të ndajë RAM më shumë, gjithnjë e më shumë kujtim nga sistemi operativ, kur ajo realizon, wow, ju keni shtypur të vërtetë në diçka mjaft të gjatë. Tani, kjo është pak e një gënjeshtër të bardhë. Nëse ne fakt ndaluar për një kohë mjaft dhe unë shtypur në diçka si 5 miliardë karaktereve në tastierë këtu, apo goditur me të vërtetë copy-paste mjaft, ne mjaft ndoshta mund të shkaktojë programin për të rrëzuar. Vetëm pak më e vështirë për të simuluar se me një fundme Sasinë e kohës. Çfarë është një tjetër rast këndi ne mund të provoni? Po? Po. Pra, pse nuk kemi përgjigje asgjë? Pra, ne në fakt duhet të marrë disa masa, sepse përndryshe Programi do të rrinë atje keq gjatë gjithë ditës. Por në qoftë se unë vetëm hit Enter - OK, tani, ende duket e gabuar. A nuk e rrëzimit, por ndoshta ka tani një mundësi për të të fillojë zbatimin e një programi më rigoroz që aktualisht kontrollon. Dhe nëse vargu, fjalia, fjala që unë shtypur në ka gjatësi 0, mirë, ndoshta unë duhet të çirrem në user, ose thoni atij apo të saj për të hyrë në një varg sërish, në mënyrë që ne fakt ajo që duket si sjellje korrekte dhe të mos vetëm mbikëqyrje të plotë nga ana ime. Pyetje në shpinë? Numri dhjetor. Pra, ne mund të përpiqemi që, too. 1,10000005. Duket si kjo do të punojnë vetëm të vërtetë në rregull. Dhe që në fakt pritet. Edhe pse ne mund të keni shtypur atë numër atje, ose një Numri më i madh më herët, e kuptojnë se kur ne jemi duke shtypur përdorues input dhe ne jemi duke përdorur funksionin getString, nuk marrë parasysh nëse ajo që unë jam duke shtypur duket si një numër. Kujtojnë se në bazë të ASCII, çdo gjë në tuaj Tastierë ka një vlerë numerike që mund të jetë plotësisht në një karakter, një char. Pra, në këtë rast, edhe pse unë mund të shtypni një numër, kompjuteri do të mendoj për të, kështu që të flasin, si një varg - diçka që duket si një numër, por është jo të vërtetë një numër. Por kjo është në fakt një Segue përsosur, sepse tani ne mund në fakt kalimi në programet shkrim se përdorin të dhëna të tjera lloje. Pra, përveç përdorimit të chars, ose më mirë, përveç duke përdorur vargjet, kuptojnë se ne kemi të dhëna të tjera lloje në C si dhe në gjuhë të tjera. Një char, siç sugjeron emri, është vetëm një karakter të vetme. Një noton është një vlerë lundrues pikë, dhe kjo është vetëm një tekë mënyrë për të thënë një numër të vërtetë - diçka që ka një decimal të pikë në atë me disa numra të majtë dhe / apo të djathtë. Një int është një numër i plotë, e cila është vetëm një numër si 123. Dhe tani më interesant janë gjëra të tilla si dyfishin. Çfarë të themi një të dyfishtë ishte hera e fundit? Kjo është 64, e drejtë. Pra, ndërsa zakonisht një noton është 32-bit - kështu që kjo kohë të gjatë në kujtesë, ai përdor 32 zero dhe ato të përfaqësojnë vlerat - një dyfishtë është fjalë për fjalë dy herë se, e cila do të thotë që ju mund ta përfaqësojnë numra të mëdha, ose ju mund të përfaqësojnë numrat më të sakta. Kështu që ju mund të ketë më shumë numra pas presjes dhjetore, por si shokët e tha në video, edhe diçka e thjeshtë konceptualisht si 1/3 nuk mund të përfaqësohet pikërisht nga një kompjuter, sepse përfundimisht ju drejtuar nga copa dhe prandaj ju mund ta bëni vetëm .33333333 herë kaq shumë, në cilën pikë ju vetëm duhet të them unë jam nga përfaqësimit hapësirë, unë kam për të vetëm e quajti atë një ditë dhe përfaqësojnë atë disi imprecisely pëlqen këtë. Dhe një kohë të gjatë - Emri budalla, por kjo është për shkak se ka një lloj të dhënave njohur si një gjatë në C e cila rastësisht është shpesh 32 bit, ashtu si një int është 32 bit, por një kohë të gjatë është zakonisht 64 bit. Pra, kjo thjesht do të thotë që ju mund të përfaqësojnë të mëdha Numrat se kjo. Dakord. Pra, në qoftë se ne të vërtetë duan të fillojnë përfaqësojnë gjëra, ne mund të kenë nevojë më shumë lloje të sofistikuara, dhe kjo është arsyeja pse ne kemi string. Pra, në bibliotekë CS50, që file i quajtur cs50.h, ne kemi vërtetë është deklaruar një lloj të dhënave, kështu që të flasin, të quajtur string, por varg nuk ka të vërtetë ekziston. Kjo është, përsëri, një prej këtyre shtresave ne do të zhvishem përsëri në një javë ose dy dhe hedhin atë larg, dhe në fakt shikoni nën kapuç në atë që në fakt është një varg, dhe se si është përfaqësuar. Ne jemi gjithashtu do të shikojmë në vlerat Boolean. Pra, çfarë ishte një bool në kontekstin e Scratch? Është e vërtetë apo e rreme. Pra, kjo është vetëm një vlerë që është e vërtetë apo e rreme, ose jashtë, 1 ose 0, megjithatë ju dëshironi për të parë botën. Pra në C, në sajë të bibliotekës CS50, e cila nga ana përfshin një bibliotekë nën kapuç, ne kemi qasje në një lloj të dhënave që është quajtur bool, e cila do të fjalë të na lejojë që të caktojë vlerat e vërtetë apo e rreme të gjërat në një program. Pra, le të shkojnë përpara këtu dhe shkruani një program i vogël që bën diçka që përfshin numra në vend. Pra më lejoni të shkoj përsëri në Appliance CS50, më lër të shkoj përpara dhe të të krijojë një skedar të ri të quajtur këtu - le të them vetëm diçka e thjeshtë, si math.c. Dakord. Dhe tani të shkojnë deri në krye të programit tim, unë jam do të bëjë zakonisht - # Include , në mënyrë që unë mund të përdorni printf, int main (void) - ne do të kthehen në, përfundimisht, çfarë do të thotë int këtu, se çfarë do të thotë pavlefshëm këtu, por tani për tani, vetëm e di se ju duhet për të filluar programe si kjo. Tani unë jam duke shkuar për të shkuar përpara dhe të thonë diçka pak ndryshme - printf ("Jepni një numër:" );. Atëherë unë jam duke shkuar për të bërë int n = GetInt, sepse ajo Rezulton GetInt është një tjetër funksion në bibliotekë CS50 përveç getString. Dhe tani unë jam duke shkuar për të bërë diçka stupid, si "falë për të d%, "për integer decimal, dhe pastaj n presje, dhe pastaj kthehen 0. Pra, përsëri, kthehet 0 ka asgjë të bëjë me numrin e unë jam kërkuar e përdoruesit për të. Vetëm tregon në fund që të gjithë, me sa duket, është e mirë. Pra më lejoni të shkoj poshtë në dritaren time terminal këtu. Më lejoni të bëjë matematikë shkruani, shkruani. Dhe diçka është e gabuar. Bëjë matematikë nuk keni punuar. Këtu është i pari i mesazheve tona gabimit. Pse? Një fshehtë pak, por - Po. Pra cs50.h. Pra, përsëri, sidomos në fillim, ju do të shkruani tuaj të parë Programi për pset 1 në seksione, në orarit të punës, dhe sinqerisht, ajo do të jetë e madhe ndonjëherë se çfarë këto gjëra në të vërtetë janë thënë. Por ju do të kuptojë shumë shpejt ata fillojnë të bien në kova ku kjo do të thotë se ju kam lënë jashtë një i # përfshin në majë të dosjes. Dhe tingëllimë, përpilues, është informuar për këtë nga thënë, në vend fancifully, deklarata e nënkuptuar GetInt funksion është i pavlefshëm. Dakord. Pra, çfarë do të thotë kjo? Kjo thjesht do të thotë që ju keni deklaruar në mënyrë implicite GetInt ndjenja që ju nuk e kanë deklaruar në mënyrë eksplicite atë. Të deklarojë shprehimisht int, ju duhet për të mësuar Tingëllimë se ajo ekziston. Dhe zgjidhje shumë e thjeshtë për këtë është për të mësuar atë nga duke përfshirë edhe këtë skedë tjetër, cs50.h, në të lartë të dosjen tuaj. Sepse fjalë për fjalë, çfarë e bën # include është ajo tregon tingëllimë shumë e shumë për të shkuar të gjetur dosjen e quajtur cs50.h, kopje, ngjitur automatikisht në krye të programit tim për mua, dhe pastaj konvertohet kodin burim për zero dhe ato. Por që padyshim do të jetë shumë e lodhshme qoftë se ne njerëzit kishin për të shkuar kopjimi dhe pasting këto fotografi të mëdha gjatë gjithë kohës, kështu # përfshijë vetëm bën të gjitha ato që automatikisht pa muddying kodin tim me bibliotekën e dikujt tjetër. Dhe një bibliotekë është vetëm një tjetër dosje që përmban funksione dhe gjëra të tjera që dikush tjetër ka shkruar, se ne jemi leveraging për të mirën tonë. Dakord. Le të provoni përsëri. Të bëjë matematikë. Enter. Mirë. Kështu që duket se kanë punuar. Pra më lejoni tani të drejtuar matematikë;. / Math. Shkruani jep mua një numër, 123. Faleminderit për 123. Tani le të provoni një tjetër rast qoshe. Një varg është shumë bujare, sepse një string mund të jetë çdo gjë. Mund të duket si numra, duken si karaktere, duken si fjalë. Por një int është një int. Kështu që tani, nëse unë jam përdoruesi i vështirë, dhe është thënë: "Më jep edhe mua një numër, "çka nëse unë të përpiqet të bëjë diçka si 0,1? E pra, kjo është një numër, dhe kjo është në përputhje me gramatika kam përdorur këtu, por nën kapuç, unë jam i Kursi përdorur GetInt funksion. Pra, le të shohim se çfarë ndodh. Shkruani, rigjykuar. Dakord. Më lejoni të jetë e vështirë dhe goditi vetëm Shkruani përsëri. Shkruani, Enter. Deri tani duket se GetInt është pak më fuqishëm se getString. Ne, stafi, zbatohet në mënyrë të tillë që në qoftë se ne njoftim ju nuk na kanë dhënë një int - dhe një int është një numër decimal zero përmbajnë, ato, dy, katër këmbë, five, sixes, Sevens, tetë, ose numër nëntë. Dhe kjo është ajo. Asnjë pikë dhjetore, ka karaktere, nuk ka shenja pikësimi. Duket se ne duhet të bashkëpunojmë. Pra më lejoni të provoni katër, pesë, gjashtë, dhe që merr mua përmes. Pra me të vërtetë, për të anal këtu, unë ndoshta duhet të thonë "Më jep edhe mua një numër të plotë "në mënyrë që të përcjellë të përdoruesit pikërisht ajo që kam ndërmend. Tani le të mendojmë për nën kapuç. Ne nuk jemi duke shkuar për të parë se si po zbatohet cs50.h sot, se biblioteka. Por në qoftë se ajo mban duke thënë rigjykuar, rigjykuar, rigjykuar, çfarë programimi ndërtojnë jam unë duket përdorur nën kapuç në zbatojnë atë? Pra, vetëm një lak, e drejtë? Një nga idetë më të thjeshtë që ne pamë në Scratch. Gjithmone ndërtimin, Përsërit ndërtojnë. Me sa duket, në këtë program, nën kapuç, edhe pse është e shkruar në C dhe jo zeroja, ajo është bërë diçka që quhet ekuivalente përgjithmonë në qoftë se përdoruesi nuk ka shtypur në një numër të plotë, të themi rigjykuar, rigjykuar, rigjykuar, rigjykuar, kështu që pastaj në fund, kur ne do të marrë një numër të plotë, atëherë ju thyer nga ky lak. Pra, çfarë funksione të tjera mund të përdorim këtu në bibliotekën CS50 s? Mirë, lloj nga ato të dukshme, të paktën bazuar në lloje të të dhënave që ne tani e dimë ekzistojnë. Ne zbatuar getString, GetInt, por në të gjithë javëve të para të mandatit, ju gjithashtu mund të përdorni dhe GetFloat GetDouble dhe GetLongLong në mënyrë që të merrni pikërisht lloje të të dhënave që ju dëshironi. Sepse detaj kyç këtu është se ndryshe nga disa gjuhë, si Python dhe Ruby, ku ju nuk domosdoshmërisht duhet të deklaruar llojin e të dhënave të një variable - ju nuk keni për të të treguar në kompjuter se çfarë lloj të gjëra ju do të jeni për të vënë në variabli - në C, ju duhet të jetë ndonjëherë në mënyrë të saktë. Pra, nëse ju doni një ndryshore të quajtur n, një copë e magazinimit se në këtë rast ndodh të jetë 32 bit nga Konventa, ju duhet të them se këto bit kompjuter janë duke shkuar për të ruajtur një numër - nuk është një karakter, jo një varg, nuk noton. Dhe kjo adreson çështje ne mënyrë efektive u zhvillua në javën e kaluar. Në qoftë se ne jemi duke përdorur zero dhe ato numrat për të përfaqësuar jo vetëm Numrat por si dhe BS dhe Cs, si në botë është një kompjuter do të dinë se ky model i vërtetë bit paraqet numrin 65, në krahasim me përfaqësojnë letër Një, e cila coincidentally, sipas ASCII, kujtojnë, ishte ekuivalente me 65? Pra, këto lloje të të dhënave të sigurojë kontekstin në kompjuter, kështu që se ajo e di nëse këto copa duhet të interpretohet si një int ose si një varg. Çfarëdo pyetjeje, atëherë, në këtë? Po? DAVID J. Malan: Pyetje e mirë. Nëse marrim nga stdio.h, ne ruani skedarin - më lejoni të shkoj poshtë në dritaren e terminalit dhe të drejtuar, të bëjë matematikë zoom në dhe të hyjë - tani kam marrë një gabim tjetër, sepse unë jam pa dyshim deklaruar atë që funksionojnë tani? Printf. Deri tani unë kam krijuar një problem të ri, të cilit zgjidhja është në thelb të njëjtën gjë. Unë kam nevojë për të vënë atë përsëri. Audienca: [padëgjueshme] DAVID J. Malan: Oh. Pra, nëse unë të marrë jashtë - Mirë, po. Pra, nëse unë heq përfshirjen e standardit I / O bibliotekës deri këtu, dhe pastaj ju jeni duke thënë, nëse unë të shpëtoj printf, të merrni shpëtoj printf? Po. Kjo duhet të punojë, sepse unë nuk jam më duke përdorur ndonjë - uh. A Unë vetëm gënjeshtër? Oh, në rregull. Kjo nuk do të punojë për shkak të një gabimi të ri që sapo futur. Dhe kjo është një pak më shumë vetë-shpjeguese. Çfarë është problemi? N papërdorura ndryshueshme. Pra, ky gabim është rezultat i ynë ka konfiguruar aplikim të jetë veçanërisht pedant, me të vërtetë çirrem në ju për çdo gabim të mundshëm, edhe në qoftë se kjo është një lloj i një organizatë jo-fatale gabim si kjo - është me të vërtetë të tillë një i madh merren se kam ndarë një int, të vënë një numër në të, dhe pastaj vetëm nuk bëri asgjë me të? Pra funksionalisht, nr. Kjo nuk do të thyejnë këtë program. Kjo është vetëm lloj i trashë, e drejtë? Nuk ka asnjë vlerë për të ka kërkuar atij numri, të ruhet atë në një variabël, në qoftë se ju nuk do të jeni për të bërë asgjë me atë, nëse shtypura apo ruani atë. Pra, në këtë rast, është pranuar tingëllimë sa më shumë, dhe kjo është thënë n papërdorura ndryshueshme. Pra, ne mund të rregullojmë këtë në qoftë se ne të vërtetë duan. Por përsëri, kjo nuk është duke programuar mirë tani. Kështu që unë vetëm mund ta bëjë këtë - të shkojnë poshtë këtu, më lejoni të qartë në ekran, të bëjë matematikë. Që punon. Tani unë mund të drejtuar programin tim të matematikës, merr input - mirë, se ishte e keqe. Merr të dhëna, dhe kjo është e gjitha e bën atë, në këtë rast. Pra në fakt, le të përpiqemi një rast tjetër që ne qoshe nuk mendoj se e parë. Në këtë rast - këtu, le të kthehemi në atë që është një pak më shumë përdorues-miqësor. Më lejoni të kthehem këtu dhe të drejtuar make matematikë përsëri. Uh, çfarë nuk kam bërë gabim? Got për të rrokulliset përsëri më tej. Rregull. Tani ne jemi kthyer në gjendjen origjinale, ku të gjithë është shpresë mirë. Dhe tani, nëse unë të drejtuar matematikë, 123 duket për të punuar. Por kjo nuk është me të vërtetë një dëshmi efektive, të them vetëm rregull, që punon. 789, që punon. Koha për të paraqitur. Sepse nuk ka raste të tjera qoshe këtu. Një varg nuk ka të vërtetë të na japë shumë probleme nga shtypja në një tërësi shumë të karaktereve. Por çfarë nëse unë lloji në këtë? Goditur numrin 1 një tërësi shumë më shumë, gjithë këtu - të gjithë të drejtë, ai është duke marrë një mërzitshëm pak, kështu që unë jam duke shkuar për të ndalet këtu, dhe unë jam duke shkuar për të goditur Enter. Çfarë dreqin ka ndodhur vetëm? Kështu që kjo në fakt mund të shpjegohet. Pra, e bëri atë të marrë atë si binar? Një mendim i mirë, por jo, nuk është fakti se ai e mori atë si binar, sepse në të vërtetë, kjo ishte vetëm një lloj i rastësi. Ne mund ta bëjë këtë përsëri. Kështu që nuk ka 2 në sistemin binar, kjo është ndoshta e mjaftueshme anyway. Enter. Kështu që nuk ishte problem. Çfarë tjetër? Saktësisht. Pra, mendoni përsëri në atë që një int fakt është. Kjo është 32 bit të cilat janë interpretuar kolektive si një numër. Nëse ju keni 32 bit, do të thotë se secili prej bit mund të jetë një 0 ose një. 1, 0 ose një 1 Pra, kjo do të thotë se ka dy mundësi për këtë pak, dy mundësi për këtë, dy mundësi për këtë bit - kështu që është 2 herë 2 herë - kështu që është 2 në fuqinë 32 është numri i përgjithshëm i permutations e zero dhe ato në qoftë se ju keni 32 placeholders, zero ose ato, në frontin e ju. Pra, nëse unë kam 2 në 32, matematikisht, që është ajo? Pra, kjo është një shumë. Kjo është 4 miliardë, të japë ose të marrë. Dhe 4 miliardë nuk duket të jetë ajo që është shtypur këtu. Në fakt, kjo duket më afër 2 miliardë. Por kjo nuk është një rastësi. Fakti që kompjuteri ka keqinterpretuar numrin tim të madh, Sekuenca im i madh nga ato dhe pastaj rendin tim të madh të twos, si rreth 2 miliardë, është shpjeguar se si? Ka një kapak në int. Ka një siguri një vlerë maksimale që ju mund të përfaqësojnë. Por kjo është zakonisht 4 miliardë, e drejtë? Nëse 2 të 32 është afërsisht 4 miliardë, që duket si që është numri më i madh. Pra, jo një tjetër, por një mendim të mirë. Numrat negative. Pra, nëse ju keni 4 miliard gjëra mundshme që ju mund përfaqësojnë me këto permutations të ndryshme të 32 0s dhe 1s, mirë, ajo qëndron për arsye se ne njerëzit mund të dëshironi të përfaqësojnë jo vetëm integers pozitiv por integers negative. Dhe vërtet, kjo është supozimi se C bën. Pra, me 32 bit, ju mund të përfaqësojnë përafërsisht negative 2 miliardë të gjithë rrugën deri në 2 miliardë pozitive. Dhe kështu në këtë rast, ajo që ne jemi me të vërtetë shohim është vetëm ekstremi periferik i kapaciteteve të integer tonë, dhe ne kemi, kështu që për të folur, mbush një numër të plotë. Ne kemi provuar për të mbushur bit më shumë në atë se në fakt mund të përshtaten. Pra, rezultati përfundimtar është se ne thelb kemi krejt 1 bit. Ne kemi kthyer të gjitha bit tona në, ne kemi provuar për të përfaqësuar numri më i madh të jetë e mundur, por kjo nuk është e qartë gati mjaft e madhe për të përfaqësuar dy gjëra që unë kam shtypur vetëm in Po? Audienca: [padëgjueshme] DAVID J. Malan: Pyetje e mirë. Pse nuk mund të kemi vetëm përfaqëson se negative nënshkruajnë vetëm si një karakter? Pra, ne mund absolutisht, dhe ne mund të pastaj të shpëtuar një grimë shtesë. Por ju jeni ende do të duhet të përfaqësojë atë dash, dhe që do të ju kushtojë të paktën diçka, duket pak. Pra, po, ne mund të kemi 32 bit përdoren për numrin tonë, por tani ne kemi nevojë për një tjetër pak përdoret për dash tonë simbol, shenjë minus. Deri tani ne kemi 33 bit vlerat, të cilat ne mund të bëjmë, por është e jo vetëm mënyrën se si ajo është bërë. Ne kemi bërë një gjykim years thirrje më parë, 32 bit është lloj i njësia e matjes këtu. Pra, ne jemi duke shkuar për të përdorur një nga ato copa në mënyrë efektive për të paraqesin negativitet, dhe 31 bit të përfaqësojnë numrin. Pyetje të tjera? Dakord. Kjo është një shumë. Pse nuk shkojmë përpara dhe të marrë pesë-minutësh pushim tonë këtu? Dakord. Pra, përsëri, për të mos overemphasize aplikimet matematikore e programimit, le të vetëm nxirre jashtë këtë një shembull para se të shkojë në konstruktet e tjera, vetëm për shkak se ajo do të ilustruar disa pika të përbashkëta pengues në disa nga bazat kur është fjala për programet e shkruar. Në këtë rast, duke bërë shprehje aritmetike që kanë disa Rëndësia interesante për sintaksë. Pra, kjo është vetëm një formulë me të cilën ne mund të konvertohet Temperaturat nga Fahrenheit për gradë Celsius. Nëse ju nuk kujtohet, kjo është vetëm formula. Pra, nëse ne të vihet në prizë Fahrenheit vlerë prej 32 gradë, që është ngrirjes, që do të jetë 32 minus 32 është 0, dhe në të vërtetë, 0 në Celsius është gjithashtu ngrirjes. Pra, mendje e shëndoshë të shpejtë shikoni atje - kjo është formula e njohur. Më lejoni të shkoj mbi të pajisjes, edhe pse, dhe të fillojnë të shkruar një program të quajtur, si, f2c, "Fahrenheit të Celsius dot c ". Dhe deri në fillim këtu, unë jam duke shkuar për të nisem me # përfshijnë stdio.h, dhe unë jam duke shkuar për të bërë kryesore int (i pavlefshëm), dhe përsëri, ne do të kthehet në të ardhmen se çfarë do të thotë int atje dhe se çfarë do të thotë pavlefshme atje. Dhe tani më lejoni të shkoj përpara dhe të zbatojë një program që thelb e bën këtë konvertim për ne. Pra printf, le të themi, temperatura në gradë Fahrenheit. Dhe pastaj më lejoni të shkoj përpara dhe të marrë vlera nga përdoruesi. Çfarë lloj i vlerës duhet të marrë nga përdoruesi, nëse unë dua ata të më jepni një temperaturë në Fahrenheit? Po? Çfarë do të propozojë? Po. Pra noton ndihet mjaft i arsyeshëm. Ne kemi, përsëri, vetëm disa opsione që ne kemi parë deri tani. Ne kemi gjëra të tilla si char, float, int dyfishtë,, kohë të gjatë, bool, string. Pra nga këto, noton ndihet mjaft i arsyeshëm. Ne mund të përdorim një të drejtë, të dyfishtë, sepse në qoftë se ne të vërtetë duan të përfaqësojnë temperaturës së njeriut - 98,60000 - ne mund të përdorim 64 bit për të bërë këtë, por ajo ndjehet si overkill për temperaturën. Pra, le të shkojnë vetëm me noton. Tani kam nevojë për një ndryshore. Vetëm për të mbajtur gjërat e thjeshta, unë jam duke shkuar për të thirrur atë f, por unë mund të saktë ashtu siç e quajnë atë temperatura, por as është e mirë. Pra noton f = GetFloat. Sa më shpejt që unë tani kam vendosur për të përdorur GetFloat, edhe pse, unë nevojë për të bërë një korrigjim. Po. Pra, ne duhet të përfshijë # , përndryshe përpiluesit është do të çirrem në ne. Tani që unë kam një noton, më lejoni të shkoj përpara dhe të bëjë konvertimit. Pra, së pari, më lejoni të merrni në zakonin e këtu komentuar kodin tim. Pra, përsëri, një koment është vetëm një simbol të njeriut që është nuk është pjesë e programit në vetvete, por një, ju ndihmon kuptuar se çfarë keni bërë mëngjes, ose tjetër muaj, ajo ndihmon shokët tuaj Mësimi kuptoni se çfarë keni bërë ose çfarë keni menduar për të bërë, kështu që është e Praktika përgjithësisht shumë mirë. Çdo disa rreshta të kodit, të shkruar një koment për veten ose kolegu juaj. Kështu që këtu, unë jam duke shkuar për të thënë, "Pyetni përdorues për temperaturë." Nuk duhet të jetë një fjali e plotë, vetëm një frazë të shkurtër. Por ideja komentuar në C është se secili prej tuaj Komentet duhet të fuqizojë ty - ose, të themi, një TF ose një koleg - të cek programin tuaj dhe e di saktësisht se çfarë e bën atë, duke mos aq shumë duke lexuar kodin, por duke lexuar komentet, të cilat duhet të jetë i ngjeshur dhe i qartë. Të gjithë të drejtë, kështu që tani më lejoni të shkoj përpara dhe të thonë, "Convert Fahrenheit për gradë Celsius. "Kështu që unë jam duke shkuar për të shkuar përpara dhe të bëjë, le të themi, noton c. Ne do të vazhdojmë Celsius si një vlerë lundrues pikë. Dhe më lejoni të marrë një goditje me thikë në këtë. Formula është, përsëri, deri këtu. Siç 5/9 herë F minus 32. Pra, le ta bëjmë këtë. Pra 5 ndarë nga 9, minus - uh, unë messed it up tashmë. Herë. Pra 5/9 herë F minus 32. Pra F minus 32, pikëpresje. Dhe tani, këtu poshtë, unë jam duke shkuar për të shkuar përpara dhe thonë, të shtypura rezultat. Dhe kjo pjesë e lehtë. Printf. Si mund të shkoj në lidhje me shtypjen e kësaj? E pra, unë mund të them "Ky numër në Celsius është% f \ n", vetëm për disa estetikë. Dhe atëherë çfarë vlera dua të vihet në prizë këtu si të printf Argumenti i dytë? Rregull. Pra, vetëm c. Pra, ne do të fillojmë me këtë dhe pastaj të kthehen vetëm 0. Përsëri, kjo nuk ka të bëjë me matematikë. Kjo thjesht do të thotë të gjitha është e mirë. Tani, kjo është e saktë, ky program? Dakord. Kështu që unë kam bërë disa gabime. Edhe nëse ju nuk kanë idenë se çfarë programimi është, ju mund të lloj e mbrapa konkludoj në klasën e shkollës çfarë gabimet këtu mund të jetë. Çfarë është një e parë? Audienca: [padëgjueshme] DAVID J. Malan: Po. Pra, ne jemi të humbur kllapa. Ajo ishte e qëllimshme që kam bërë në kllapa ide kryesore rrëshqitje këtu, sepse nuk ka në fakt ky nocion e rendit e operacioneve, ose përparësi, ku operacionet e caktuara - shumëzimit - kanë të detyrueshme të lartë, kanë përparësi të lartë, se sa gjëra të si mbledhjen ose zbritjen. Pra, ne kemi bërë këtë për vite me rradhë vetëm për të bërë të qartë pikërisht çfarë operacioni matematik duhet të bëhet së pari. Kështu që unë ndoshta duhet të imitojnë pikërisht këtë. Përndryshe, kompjuteri është me sa duket do të përpiqemi të bëjmë diçka si përçaj 5 nga 9, pastaj shumohen F, pastaj të zbriten 32 nga të gjithë gjë. E cila nuk është, në fakt, ajo që ne duam të bëjmë. Pra, le të kllapa. Le të shtoni kllapa e mia këtu, kllapa këtu. Le të vënë mbi këtë këtu. Ja, unë vetëm vënë re një tjetër gabim kam bërë përgjatë rrugës. Po? Audienca: [padëgjueshme] DAVID J. Malan: Ah. Mirë. Pra, ne në fakt kemi të njëjtin numër të plotë Çështja e ndarjes nga para. I saktë se, le të shohim se çfarë është simptomë. Por ne do të kemi për të korrigjuar një Gabimi tjetër këtu. Po? Audienca: [padëgjueshme] DAVID J. Malan: Po. Pra, kam bërë gabim budalla, por tepër të rëndësishme. Kompjuteri nuk do të vetëm të kthehet një sy qorr dhe le mua përdorin F kapitalit, kur unë vërtetë është deklaruar variabël si një f vogla këtu, në përputhje 8. Kështu që kam nevojë për të korrigjuar në linjë kapitalizimit 11 tim, që një Momenti më parë ishte një F kryeqyteti gabimisht. Po në lidhje këtu? Kjo duhet të jetë të vogla, si dhe? Ajo duhet të jetë, por kjo është një rastësi. Kjo f% ka të bëjë asgjë me ndryshore. Pra, vetëm të jetë super e qartë këtu, më lejoni të shkoj përpara dhe të riemërtoni këtë, shkurtimisht, "temperaturën". Më lejoni të riemërtoni kjo "temperaturë". Mos më lër të riemërtoni këtë. Sepse, përsëri, f% globalisht do të thotë, "vlera lundrues pikë." Ka asgjë të bëjë me ndryshore tim. Por "temperatura" në të gjithë vendin është vetëm pak gojor, kështu që unë jam duke shkuar për të shkuar përsëri në Fjala ime s "F". Tani, më lejoni të shkoj përpara deri në dritaren time këtu. Bëni f2c - që ishte, përsëri, emri arbitrare unë dha tek kjo skedë. Duket se kanë hartuar. Më lejoni të drejtuar f2c. Enter. Temperatura në gradë Fahrenheit - le të bëjë një e lehtë. 32. OK, korrigjuar. Por, nëse unë tani bëj 212 për valë - damn. Dakord. Pra, nuk është e qartë saktë, nëse TF juaj përpiqet të paktën dy vlerat. Pra, çfarë është problemi këtu? E pra, ju tashmë e vënë gishtin tuaj në atë çështje është. Por pse është se çështja? Deri këtu, kur unë jam duke bërë matematikë e 5 ndarë nga 9. Pra konceptualisht, që është krejtësisht e saktë. Tërësisht në përputhje me formulën e. Por kompjuterat vetëm që pikërisht atë që ju tregoni atyre për të bërë. Dhe ajo që ne jemi në mënyrë efektive duke u thënë kompjuterin këtu është ndani me 5 nga 9 numër i plotë numër i plotë dhe jepni rezultatin. Problemi është se, edhe pse, kur ju bëni ndarje duke përdorur të dhënat lloje, prodhimi është i njëjtë dhënave lloji si inputeve. Dhe kështu që nëse të dy inputet janë dy ints, prodhimi është duke shkuar të jetë një int. Dhe kështu 5 ndarë nga 9 është diçka pikë. Por ajo që është numër i plotë më të afërt të vinte në diçka? Pra, është e vërtetë 0. Pra, siç kemi diskutuar të hënën, gjithçka pas decimal Pika merr cunguar. Ajo thjesht merr hedhur larg. Pra, kjo është një gabim i plotë, për shkak se si edhe unë mund vetëm shumohen gjithçka nga 0 këtu. Tani, unë mund ta rregullojmë këtë në disa mënyra. Unë mund ta bëjë këtë. 5.0 ndarë nga 9,0. Teknikisht, unë as nuk duhet ta bëjnë këtë. Ai e bën të mjaftojë për të vetëm të bëjë një nga numrat një noton - ose të dyfishtë - duke vendosur pikën decimal këtu. Sepse ajo që ndodh tani është kur ju ndani një numër të plotë nga a noton, ose një të dyfishtë, kompjuteri do të kuptojnë oh, një nga ata që është më e saktë. Më lejoni të gaboj në anën e duke ju dhënë më shumë saktësi se ju qëllim. Pra, kjo do të konvertohet në rezultat - ajo do të kthejë rezultatin si një vlerë lundrues pikë si. Kështu që do të punojë. Kjo do të punojë. Dhe ka një mekanizëm tjetër që ne do të shohim në hollësi të madhe javën e ardhshme. Ju mund të vërtetë, si programues, tregoni kompjuterin që në fakt të trajtuar një lloj të të dhënave si edhe pse kjo ishte një tjetër. Kështu që unë në fakt mund të bëjë këtë. Në kllapa, unë mund të them diçka si (noton), hapur prindërve, prindërve afër. Dhe kjo është ajo që quhet "hedh". Përsëri, më shumë në këtë javën e ardhshme. Por kjo është vetëm mënyrë programatike për të thënë kompjuter, vërtet unë e di 9 është një numër të plotë apo të gjatë. Unë e di se nuk është një vlerë lundrues pikë. Por trajtojnë atë si të tillë gjithsesi. Pra, për të hedhur një lloj të dhënave do të thotë për të kthyer nga njëri në tjetrin. Sinqerisht, kjo është vetëm pak e shëmtuar, kështu që unë do të propozojë që të shkojmë Kthehu në sugjerimin origjinal të vetëm konvertimin e këto gjëra për vlerat lundrues pikë dorë. Sepse tani kjo është vetëm super e qartë se çfarë po ndodh, dhe kjo nuk është e gjitha që vëmendjen. Pra, le të kthehemi tani në dritaren time terminal. Bëni f2c. Më lejoni të shkojnë përpara dhe për të drejtuar këtë. Dhe, si një mënjanë, ju mërzitem shtypur këto komanda përsëri dhe përsëri, e kuptojnë se kompjuterët, si Linux ketu, kanë tendencë të jetë goxha i zgjuar. Dhe në qoftë se unë goditi Up, ne mund të shkoni nëpër historinë time të tërë të komandat, lart dhe poshtë. Pra, në këtë rast këtu, unë mund të shkoni vetëm për të kandiduar bërë f2c. Unë jam duke u yelled at, sepse unë vetëm e bëri atë një të dytë më parë. Kjo është tashmë deri në datën. Deri tani unë mund të kandidojë f2c përsëri. Le të përpiqemi 32 Fahrenheit. Tani le të përpiqemi 212 Fahrenheit. Uh. Duket për të punuar. Tani, kjo është e mirë, por ajo ndihet pak arbitrare që Unë jam duke treguar gjashtë numra pas pikë dhjetore. Drejtë? Nëse ju jeni personi i motit në TV, ju jeni lloj i një Doofus në qoftë se ju jeni duke e lexuar temperaturën në kjo shkallë e saktësisë. Pra, le të thjeshtojë këtë. Pra, le të vërtetë të shkojnë deri këtu, për të printf im. Dhe vërtet, unë dua të noton. Por tani unë dua të specifikojë saktësi. Dhe unë jam do të jetë një ngjeshur pak. Unë jam duke shkuar për të thënë, ma jep një pikë pas vendin dhjetore. Pra, në vend se të them f%, unë jam duke shkuar për të thonë% .1 f. Dhe kjo thjesht do të thotë të më jepni një pozicion pas presjes dhjetore. Dakord. Le të provoni këtë përsëri. Më lejoni të ri-drejtuar atë pas përpilimit. Dhe tani unë lloji në 32, dhe kam marrë përsëri një vlera më e ngjeshur. Dhe unë mund të shkruani, tani, 212, dhe për të marrë përsëri një ngjeshur më shumë vlera si. Dhe nuk ka gjëra të tjera që ju mund të bëni me printf. Ju në fakt mund të specifikoni se sa e gjerë numër duhet të jetë. Në qoftë se ju dëshironi të keni mbushje në të, kështu që ju mund të drejtë-align ose majtë-align gjithë numrat tuaj ose përpiqen për gjëra qendër. Pra, nuk janë realizuar truket pak ju mund të bëni atje. Por ata vetëm të valoj poshtë për kodet format, si ne kemi atje. Pra, për sa i përket kësaj çështjeje të përparësisë. Kjo është një tabelë shumë e mërzitshme për të shkuar nëpër methodically. Por e kuptojnë se autorët e C kanë dalë me rregulla që specifikojnë që operatorët kanë larta përparësi, më shumë pushtet detyrues, se të tjerët. Pra, ndërsa në klasën e shkollës, ne përgjithësi e dinte se ajo ishte shumëzimit dhe pjesëtimit, atëherë mbledhjes dhe të zbritjes, pastaj disa sende të tjera. Në një botë të programimit, ka një shumë të Lista më e gjërave. Dhe kjo nuk është diçka me vlerë memorizimin tani. Ju do të merrni përshtaten me klimën me të para se të gjatë. Por ashtu si në klasën e shkollës, kllapat në përgjithësi zgjidhur çështjet e përparësisë, duke i bërë super të qartë Kompjuteri dhe njerëzore ashtu çfarë është menduar. Pra, e konsiderojnë këtë vetëm fletë mashtrojnë pak atje. Por shumica e këtyre detaje ne nuk do të merrni për të për disa kohë. Dakord. Tani, le të ndërtojë dhe të lëvizin larg nga këto pak budalla shembuj matematikore. Ende përdorin bazat e njëjta, por të fillojë shprehur veten pak më shumë si Scratch. Pra, në Scratch, kemi pasur këto shprehje boolean. Dhe në anglisht, një shprehje Boolean është ajo? Vërtetë apo e rreme. Kjo është diçka që vlerëson të vërtetë apo e rreme. 1 ose 0. On ose off. Çfarëdo që ju doni të telefononi atë. Tani në Scratch, copa mister dukej si kjo. Dhe kjo është kombinimi, në fund atje, prej tre copa mister. Një lidhje - diçka që ka bosh dhe bosh. Dhe pastaj dy shprehjet Boolean në brendësi të saj. Kështu që ju mund të shprehjet fole Boolean për të marrë më shumë komplikuar shprehje boolean. Për shembull, në qoftë se ajo është e shtunë, dhe kjo është e bukur moti, atëherë shkoni jashtë. Ose diçka si kjo arbitrare. Kështu që ju mund të bashkohet me shprehje boolean për të dalë me një vlera më e madhe e vërteta, të cilit përgjigja është e bazuar në ato më të vogla. Tani, në C, fatmirësisht, kjo hartë është në fakt shumë e thjeshtë. Kllapat ndihmojë për ta bërë të qartë gjërat këtu. && Është ajo që do të thotë "dhe." Pra, kjo është se si ne jemi duke shkuar për të kthyer ato blloqe nga e para për të C. Dhe për kushtet e pamë në Scratch, në anën e majtë Ana atje, unë mund të rafte e tyre të ngjashme në C. Nëse x është më pak se y, pastaj të bëjë këtë. Tjetër në qoftë se x është më i madh se y, pastaj të bëjë këtë. Tjetër logjikisht ato duhet të jenë të barabartë, kështu thonë se ata janë të barabartë. Pra, ne tani mund të fillojnë për të ndërtuar këto gjëra deri. Pra, le të bëjmë një shembull. Më lejoni të hapur një skedë që është në faqen e internetit të kursit që Kam shkruar më parë. Kjo është quajtur nonswitch.c. Dhe ne do të shohim se pse në vetëm një moment. Pra, në këtë skedë - nonswitch.c-- së pari të kuptojnë se ka një bandë e tërë e Komentet në krye. Kjo është vetëm shpjeguar emrin e file, ajo bën, dhe kështu me radhë. Dhe kjo duket demonstron përdorimin e Bulit dhe-ing - conjoining dy shprehje. Pra, le të shohim se si punon ky program. Unë të përfshijë dosjet e mia, dy cs50.h dhe stdio.h. Nëse unë lëvizni poshtë, tani, në programin, kjo është një pak më të gjatë se ne kemi shkruar më parë, por shumë i lexueshëm. Kështu që unë së pari të shtypura të përdoruesit, on line 18, "Më jep një numër të plotë në mes të 1 dhe 10." Kështu kjo është e drejtë atje. Tani kam marrë numër i plotë. Por të kuptojë se GetInt - shumë e thjeshtë. Është vetëm do të merrni një int. Kjo do të sigurojë që ajo ka marrë një int dhe jo një varg ose një noton. Por kjo nuk do të bëjë çdo lloj të kontrollit të kufijve. Kjo nuk do të filtruar numrat të jetë në mes të një varg të caktuar. Pra, ne kemi për të zbatuar atë veten. Pra, ashtu si në Scratch, ku unë mund të bëjë një lidhje të dy shprehjet, unë mund të bëjë që në C si më poshtë. Nëse n është më e madhe se ose e barabartë me 1, dhe n është më pak se dhe ose e barabartë me 3, unë jam duke shkuar për shumë dekret arbitrare që Numri i të jetë një numër i vogël. Vetëm për hir të një deklarate. Tjetër në qoftë se n është në mes 4 dhe 6, print "Ju kap një medium Numri ". Else nëse n është ndërmjet 7 dhe 10, print" Ju kap një Numri i madh ". Else print" Ju vini një numër të pavlefshme. " Sepse logjikisht, që vijon në qoftë se ne kemi rraskapitur gamën tonë. Pra, kjo nuk është realizuar fare se si kemi shkruar më e madhe se, ose barabartë në një klasë matematikë. Drejtë? Ju zakonisht tërheqë atë si kjo, me vijë nën atë. Por nuk ka asnjë të tillë kyç në tastierën time. Pra, simbol në C për të shprehur e madhe se, ose është e barabartë me dy karaktere, dhe simbol për më pak se ose e barabartë me dy karaktere është si. Dakord. Pra, nëse unë të drejtuar këtë program, ju ndoshta mund të me mend se çfarë është e do të bëjë. Nëse unë të shkojnë përpara dhe të bëjë nonswitch, Enter. Dhe pastaj të drejtuar nonswitch. Më jepni një numër midis 1 dhe 10. Unë jam duke shkuar për të dhënë atë 11. I kap një numër të pavlefshme. Më lejoni të provoni numrin 3. I kap një numër të vogël. Pra mjaft i thjeshtë atje. Çka nëse unë dua të ndryshojë sjelljen e këtij programi dhe të bëjë diçka pak të ndryshme në vend? Më lejoni të shkoj përpara dhe të thonë se kjo. Më lejoni të shpëtoj të gjithë këtë. Dhe më lejoni të them në qoftë se (n == 42). Dhe atëherë unë jam duke shkuar për të shkuar përpara dhe të them të shtypura "kap je ti përgjigje të drejtë. "Else ne jemi duke shkuar për të shkuar përpara dhe të thonë, printf ("Ju kap Përgjigja e gabuar ");. Mirë. Vetëm për shkak se. Tani, disa pika që ne mund të bëjë këtu. Një, unë nuk shkruani simbol që ju do të mendoni se është më e arsyeshme. Kur unë dua të shikoni barazi, rezulton nga ju nuk e përdorni shenjë të barabartë. Ju në vend që të përdorni shenjën e barabartë të barabartë. Dhe pse mund që të jetë, vetëm intuitive? Po. Audienca: [padëgjueshme] DAVID J. Malan: Correct. Shenjë të barabartë është përdorur tashmë për detyrë. Dikush nuk ka të vërtetë mendoj se kjo përmes. Dhe kështu tani, kur është fjala për testimin e barazisë, ne duhet të të jetë më i qartë, dhe thonë barabartë barabartë. Një gabim shumë i zakonshëm është që të bëjë këtë. Dhe, në qoftë se në orët zyrë apo diku tjetër javë ose në dy javëve të ardhshme ju bëni diçka si kjo dhe pastaj luftojnë me të për 10, 20 minuta duke u përpjekur të kuptoj se çfarë është bug mallkuar, të kuptojë se ju jeni një nga ata njerëz që kanë bërë këtë gabim. Pra, super të lehtë për të bërë. Por tani qëllimi është për të shmangur këtë gabim. Kjo mund të vlerësojë, sepse ajo që është kjo me të vërtetë duke thënë? Nëse merr n 42. Kështu që njerëzit përdorin folje, me gojë, për të shprehur Nocioni i detyrës është "merr". Pra, nëse merr n 42. Kështu që do të thotë të caktojë 42 në n. Tani unë kam një shprehje Boolean në kllapa, brenda kësaj gjendje, vlera e të cilave është 42. Drejtë? Sepse në qoftë se ju vlerësoni atë nga jashtë brenda, gjithsej Përgjigjja, tani, është 42. Pra, nëse ju pyeta pyetjen, "në qoftë se (42)," çfarë është që me të vërtetë duke thënë? E pra, shprehje Boolean mund të jetë e vërtetë apo e rreme. 1 ose 0. On ose off. Pra, ne duket të ketë një rast qoshe këtu, ku të gjithë një papritur, unë jam duke thënë se "në qoftë se (42)". Kjo nuk është një vlerë Boolean. Pra, çfarë të bëjë kompjuterat, megjithatë, është ajo në thelb barazon çdo gjë që nuk është 0 interpretohet që të jetë e vërtetë. 1. Në. Ata janë të gjithë ekuivalente funksionalisht. Vetëm vlera 0, ose fjalen rreme, si ne do të përfundimisht të parë, në fakt është e rreme. Pra, "në qoftë se (42)" në fakt do të jetë e vërtetë, sepse është jo-zero. Pra, për të qenë më të saktë këtu, një vlerë Boolean nuk është me të vërtetë kështu shumë e vërtetë apo e rreme, por për këtë rast, nëse është 0 ose jo-zero. Pra false ose jo të rreme. Dhe kjo na lejon të përfshijë të gjitha më shumë Mundësitë në shprehjen kllapa. Pra, ne kemi nevojë për të, ndonjëherë kaq kujdes, thonë se kjo - në qoftë se (n == 42). Thjesht sepse ne kemi nevojë për të specifikoni një test të barazisë, jo një caktimi i një vlerë. Çfarë tjetër Vlen të përmendet këtu? Këto formatimin e teksteve kaçurrel nuk janë të vërtetë e nevojshme. Unë kam qenë bërë ata vetëm të jenë lajthi-picky këtu. Por kur ju keni një gjendje që vetëm ka një linjë të Kodi, si një lehtësi, programuesit nuk kanë nevojë të përdorin formatimin e teksteve kaçurrel. Kjo mjafton për të vetëm porosit, për arsye estetike, dhe pastaj shkruani linjë tuaj të kodit. Vetëm kur ju dëshironi të shkruani dy rreshta të kodit - për shembull, tjetër printf ("Mirupafshim!"). Nëse ju doni të bëni se, kjo është e thyer. Ju mund të porosit të gjithë ju duan, por fakti që ju keni shtypur dy rreshta të kodit pa përdorimin e formatimin e teksteve kaçurrel do të thotë se ky program nuk do të kandidojë saktë, ose mund të jo edhe përpilojnë saktë. Kështu që tani për tani, të jem i sinqertë, unë mendoj se është vetëm zakon të mirë përdorni formatimin e teksteve kaçurrel, dhe ju do të gjeni se ata bëjnë super e qartë se çfarë po ndodh. Gjithashtu, si një mënjanë - veçanërisht nëse ju jeni në mesin e atyre që përdorin librat e rekomanduara apo burime online - të kuptojë se nuk ka ky nocion e stilit në programimit. Dhe disa njerëz preferojnë të vërtetë për të vënë në mbajtëse kaçurrel mbi këtu në një linjë. Disa njerëz preferojnë të bëjnë gjëra qesharake, si ata vënë këtu. Nuk ka përgjigje të gabuar kur është fjala për stil, por kjo është e gabuar. Por disa njerëz bëjnë atë. [Qeshura] DAVID J. Malan: Kështu që unë përmend këtë tani, thjesht sepse si keni lexuar deri në gjërat në libra apo online, ju jeni do të merrni mesazhe të ndryshme nga mësuesit e ndryshme dhe autorë të ndryshëm. Dhe vetëm të kuptojë se, funksionalisht, ata janë në përgjithësi e barabartë, por të jenë në përputhje. Pra, në këtë rast, ne do të standardizohet në kacurrela formatimin e teksteve rreshtuar këtu në të majtë. Dakord. Pra, le të shkojnë përpara dhe për të drejtuar këtë tani, dhe shikoni se çfarë ndodh me këtë program. Bëni nonswitch. Pastaj të drejtuar nonswitch. Më jepni një numër të plotë në mes 0 dhe - kështu që nuk është e rëndësishme më, por unë jam vetëm duke shkuar për të thonë në mënyrë arbitrare 42. Dhe unë kap përgjigjen e duhur. E pra tani, le të vërtetë të marrë këtë në një drejtim tjetër. Ajo rezulton se ka disa sintaksë tjetër ne mund të përdorni në një program. Këtu është një copë e re e sintaksës që është funksionalisht i njëjtë, por vetëm prezanton një tjetër mënyrë për të shprehur veten. Pra, kjo është ajo që quhet një "deklaratë switch". Dhe një Deklarata kaloni vepron si më poshtë. Ajo merr, në kllapa, një vlerë që ju dëshironi për të "Kaloni" në. Ju dëshironi që të sillen ndryshe në bazë të vlerës së saj. Pra, kjo do të thotë kaloni në vlerën e n. Dhe çfarë do të thotë kjo? Pra, nëse n është 1 ose 2 ose 3, shkojnë përpara dhe printuar nga "You kap një numër të madh "dhe pastaj pushim. Arsyeja për pushim është se mënyra C punon është si shpejt që gjen një rast që përputhet, ajo fillon ekzekutimin e të gjithë kodin e mëposhtëm saj. Pra, nëse unë kam një linjë të kodit, siç po bëj unë këtu on line 27, ai merr ekzekutuar. Nëse unë shtoni një tjetër linjë këtu, ajo merr ekzekutuar. Një tjetër linjë këtu, ajo merr ekzekutuar. Program vetëm ndalon ekzekutimin çfarë është më poshtë Deklarata e zbatueshme rasti kur unë në mënyrë eksplicite thonë "pushim". Në mënyrë të gabuar. Të drejtë, në këtë rast, si rezultat i kësaj. 4 rasti ose 5 ose 6, në mënyrë të ngjashme, po shkon për të shkruar një mesazh. Në këtë rast, numri mesme. Pushim. Rasti 7, 8, 9, 10, ajo do të shtypura nga "ju kap një i madh Numri i. "Pushim. Dhe pastaj nuk ka fjalë për fjalë një fjalen quajtur "prezgjedhur" që është në mënyrë efektive si "tjetër" të ndërtuar. Pra Sintaksa e re, por intelektualisht, asgjë të gjithë këtu të re. Është vetëm si Scratch. Nëse, tjetër në qoftë se, në qoftë se tjetër, lloj i bllokut. Pra, kjo është versioni i kaloi i këtij programi. Por vini re se ne e bëmë atë me numra këtu. Më lejoni të hapë një version të dytë, vetëm për të treguar diçka pak më konkrete. Pra, këtu kemi nota vend. Rezulton nga ju mund të përdorni çelsin jo vetëm në integers, por në karaktere. Jo në të gjitha llojet e të dhënave, por të paktën në karaktere. Kështu që këtu, ne mund të bëjmë diçka si në qoftë se vlera e C që përdoruesit shtypur në, në përputhje 19, duke përdorur funksionin GetChar, është kryeqyteti A ose me të vogla a, le të interpretuar atë si një gradë, dhe thonë se ata morën një notë të shkëlqyer. Dhe poshtë së bashku deklaratë kaloni, a kemi të tjera raste për "B" s dhe "C" s, dhe kështu me radhë. Por tani le të rrumbullakët një gjë tjetër. Dhe përsëri, lloj fluturuar përmes disa nga këto shembuj. Por është e vërtetë në mënyrë që ne mund të aplikojnë ato, tani - apo me të vërtetë, vetëm përkthejnë ato tani - për C. Pra më lejoni të shkoj përpara dhe të bëjë këtë. Unë jam duke shkuar për të hapur një skedë të re. Dhe unë jam duke shkuar për të bërë përfshijë . Dhe atëherë unë jam duke shkuar për të bërë int kryesor (i pavlefshëm). Më lejoni të ruaj këtë foto si një loop.c. Ashtu si një shembull. Dhe unë jam duke shkuar për të shkuar përpara dhe të bëjë në vijim. Unë dua të shkruaj një program shumë të lodhshme. Pra 10. Le ta bëjmë këtë. 9. Dakord. Sa më shpejt që ju të fillojnë të bëjnë këtë në programimin, ju jeni ndoshta duke bërë diçka të gabuar. Por ne do të fillojë atje anyway. Oops. Kjo është në fakt e gabuar. 7. 6. 5. 4. Asgjë nuk do të ndodhë kur ne të merrni për të 0. 3. 2. 1. Rregull. 0. Fshini. Dakord. Pra, kthehet 0. Pra, ky program është padyshim do të bëjë atë që shumë tediously thotë se ajo do të bëjë. Ajo do të shtypur të gjithë ata vlerat, nga maja e deri në fund. Pra më lejoni të bëjë të bërë lak. Dhe pastaj - uh. Bëni lak. Unë kam qenë në directory gabuar. Dhe tani më lejoni të kandidojë lak. Enter. Woohoo. Very nice. Bukur, programi gjatë. Të gjithë të drejtë, por tani le ta bëjmë këtë më mirë. Ashtu si në Scratch, kur ju keni filluar duke përdorur një looping ndërtimin, në vend të vetëm kopjimi dhe pasting të gjithë copa mister, më lejoni të prezantoj këtë gjë. Pra në C, ka konstruktet ndryshme looping, njëra prej të cilave duket si ky. Një "për" loop ka tre gjëra, ndarë nga dy pika. Dhe pastaj, në brendësi të trupit të lak, kështu që të flasin - brenda sende të formatimin e teksteve kaçurrel - ne mund të bëjmë diçka përsëri dhe përsëri. Pra, ajo që unë kam këtu në ekran, kjo është fjalë për fjalë vetëm një koment. / / Do të thotë këtu vjen një koment. Kjo nuk është kodi. Kjo është vetëm përshkrim angleze, për mua, njeriut. Initializations Pra, kushtet, dhe përditësime. E pra, le të shohim se si punon kjo. Kjo lejon mua që të ndryshonin këtë program si më poshtë. Për - kështu që këtu vjen lak time - int - këtu vjen një ndryshore të quajtur "i" - merr nisur në 10. Kështu që nuk është initialization ime. Unë dua të bëj këtë lak për aq kohë sa "i" është më i madh sesa ose e barabartë me 0. Dhe në çdo përsëritje të këtij loop, unë dua të bëjë i -. Pra, ne pamë + + hënën. - Është kundërta. Ajo decrements vlerën nga 1. Brenda këtij loop, unë dua të bëjë në fakt diçka. Kështu që unë jam duke shkuar për të thonë diçka si printf. Unë nuk dua të them 10 tani, sepse kjo padyshim është vetëm duke shkuar për të shkruar të njëjtën vlerë. Çfarë unë dua të shtypura në vend, ndoshta? Po. Pra, "i." Kështu% d, i. Kështu që unë jam duke shkuar për të vjedhur një nga ato ide nga më parë - ky zëvendësim për kodet format - dhe pastaj këtu poshtë, në fund, unë do të kthehen 0, vetëm për masë të mirë. Por tani, unë kam një program më të ngjeshur. Është vetëm disa rreshta, dhe jo rreth 10 ose 11 rreshta. Lermë të shkoj të shpejtë time këtu poshtë. Loop xhirim. Përsëritje lak. Dhe kjo duket të jetë e njëjtë. Tani, programi nuk është më interesante. Por tani unë mund të shtypni diçka si kjo. Unë mund të ndryshojë këtë në 100. Unë pastaj mund recompile programin tim. Dhe atëherë unë mund të ri-drejtuar programin tim. Dhe tani ajo shkon super-fast në kompjuterët e sotëm. Por nuk kam - dhe në fakt, tampon im rrëshqitje nuk madje shkojnë aq larg. Nuk shkojmë. Pra, nuk kemi të gjithë 100. Por është e lehtë për të bërë gabime këtu. Çfarë do të jetë sjellja e pritshme në qoftë se unë aksidentalisht bëjë këtë? Pra, ai ndjehet si pafund. Pra, le të shohim nëse kompjuteri sillet. Pra më lejoni të shkoj përpara dhe të bëjë lak. Dhe më lejoni të kandidojë lak. Pra, le të vijë përsëri në se në një moment të vetëm. Ne do të le që të kandidojë. Sepse çfarë duhet të llogariten deri në, minimalisht? Ndoshta të paktën 2 miliardë, në qoftë se ne kemi bit shumë, dhe ne jemi duke përdorur vlerat pozitive. Pra, le të hidhen përsëri këtu. Përveç këtyre llojeve të sythe, ne kemi atë që janë quajtur, ndërsa sythe. Pra, ashtu si në Scratch, keni pasur Forever blloqe, dhe ju kishin blloqe të përsëritur. Në mënyrë të ngjashme, në C, ju vetëm duhet mënyra të tjera për të shprehur veten. Pra, ju e keni këtë idenë e një lak, ndërsa që ju lejon të shprehin veten pak ndryshe. Dhe atëherë ju keni diçka të quajtur një lak për ta bërë, ndërsa, e cila vepron pak më ndryshe si. Dhe ne do të vë në lojë përveç këtyre kalimin e kohës. Por le të marrë një sy në këtë të fundit këtu. Nëse ne do të shkojmë në - ende running. Kjo është goxha e pafund. Pra më lejoni të shkoj në pozitive, dhe të tregojnë se si ne mund të vërtetë qeverisur dhëna përdoruesi pak më efikase. Është një program mjaft të shkurtër. Dhe këtu ne kemi, në kryesore, një int n deklaratë. Pra, më jepni një ndryshore të quajtur n. Tani, unë them fjalë për fjalë "Bëjnë." Dhe pastaj kam hapur kaçurrel Braçe, shtrëngoj ngushtë kaçurrel. Dhe pastaj vini re, menjëherë pas kësaj, ajo thotë se ndërsa n është më pak se 1. Pra, vini re se këto rreshta - 19-24 - kompozojnë kolektivisht një lak për ta bërë kohë. Dhe përsëri, sintaksë e re, nuk është një ide e re. Kjo është vetëm një tjetër mënyrë për të looping, syntactically. Pra, çfarë do të bëni këtë? Të bëjë në vijim, ndërsa n është më pak se 1. Pra, çfarë unë dua të bëj? Unë të kërkojë që ju të jepni një numër i plotë pozitiv. Pastaj unë në fakt përpiqen për të marrë një numër të plotë nga ana e përdoruesit. Por në aspektin e rendit të operacioneve këtu, sepse ndërsa gjendja është këtu poshtë, unë jam duke shkuar për të kontrolluar atëherë, është n më pak se 1? Pra, mendoj se përdoruesit - pasi u kërkuar në këtë mënyrë - Llojet në 0 vlerë. Ky kusht do të jetë e vërtetë apo e rreme? E pra, kjo është në fakt do të jetë e vërtetë. Sepse n është 0, dhe 0 është më pak se 1. Pra, çfarë do të thotë kjo? Bëjë atë përsëri. Bëjë atë përsëri. Bëjë atë përsëri. Vetëm një herë se gjendja e vlerëson të rreme. Nëse unë lloji në 42. E pra jo, 42 është jo më pak se 1. Prandaj ky loop është bërë ekzekutimin. Dhe kështu në këtë pikë, programi do të thonë, faleminderit për 42, në këtë rast. Tani që ju e keni këtë mënyrë për të shprehur veten - Ne nuk duhet të presim që kjo të përfundojë. Ajo do të marrë disa kohë. Për të vazhduar herën tjetër, ndoshta. Por tani, ju keni mundësinë për të shpresojmë për të kuptuar një bit e humorit geek. Apologies. Kjo nuk është përfaqësues i humorit në shkencën kompjuterike botë, por është e bukur. Fundi [Qesh] Le në këtë shënim. Dhe ne do të shohim ju në hënën. [Duartrokitje]