[VIDEO rishikim] Triumfi -Një i matematik dhe aftësi mekanike është ky i ri automatik i madh Llogaritësi në Universitetin e Harvardit. Problemet e ndërlikuar në matematikë vënë me makinë në formë të koduar në kasetë zgjidhen me saktësi në një minutë pjesë të kohës e kërkuar për llogaritjen e njeriut. Projektuar për të përshpejtuar të gjitha format e hulumtimet matematikore dhe shkencore, truri gjigant mekanike do të punojnë për Shtetet e Bashkuara të marinës deri në fund të luftës. [END rishikim] DAVID J. Malan: Kjo është CS50. E kaluara ishte një magjike vend, por në qoftë se ju keni ndonjëherë veten se çfarë kjo pajisje është në Harvard Shkenca Center, ajo është me të vërtetë pjesë e Harvard Mark I, dhe kjo është në shfaqje atje tani për vitet e fundit shumë. Dhe çfarë ju do të shihni ngulitur në grup problemit një është një vështrim prapa skenave në atë që bëri që pajisja, dhe bën, nga Profesor Harry Lewis, i cili është në departamenti shkenca kompjuterike këtu. Pra, më shumë se në vetëm pak. Por sot ne fillojmë të tranzicionit nga java e fundit të kësaj, dhe ne do të sjellë përmendim i një fotografi këtu kjo është në fakt mjaft i njohur. Does anyone know çfarë kjo këtu është në ekran? Të paktën sipas mitit. Po. Audienca: Virusi i parë. DAVID J. Malan: Pra, ajo ishte me sa duket bug i parë i vërtetë në një kompjuter. Tani në realitet bug fjala, për një gabim në një program, ka qenë me ne për disa kohë në botën fizike, dhe kjo është një nga të parë herë të dokumentuara ku dikush në fakt këputur një molë madhe nga Mark Kompjuter II, e vënë atë në binder, dhe pastaj regjistruar atë si bug e parë të njohur që kanë qenë në fakt gjetur fizikisht. Pra, në këtë mënyrë u futur që në dije e sotme. Çdo gjë nga e fundit javë është në dispozicion online. Në burime të veçanta që ju mund të jo domosdoshmërisht vini re, sidomos nëse vijnë këtu në person. Pra, një nga miqtë e mësimdhënies çdo Vitin e bën një grup kanonik të shënimeve, kështu që ju nuk duhet të mbani kokën poshtë, duke u përpjekur që shkruajshe ndonjë gjë më kjo mund të ndodhë këtu në klasë. Pra, të kuptojnë se ata ashtu-quajtur [? Scribd?] Shënime janë online, sigurisht slides dhe kodi burim që ne i përdorim në klasë. Ne bëjmë transkriptet tekst të plotë në dispozicion si edhe. Pra, nëse ju kujtohet turbull disa afat, dhe dëshironi të shikoni atë deri pak më lehtë, të kuptojnë se të gjithë e që është në internet kërkueshme. Si dhe walkthroughs si. Në të vërtetë, sot ne fillojmë të shikojmë në një nivel më të ulët gjuhë programimi, së shpejti do të jetë i njohur për ne si C, dhe kjo është shumë e lehtë për lloj të marrë humbur pas vetëm disa momente kohë, dhe pastaj lloj çudi se si ne fakt mori për disa më shumë shembull komplekse nga më të thjeshtat. Dhe kështu të kuptojë që ne do qershi marr gjatë klasës disa nga shembujt përfaqësuese, por të kuptojë se shumë më shumë është edhe në dispozicion online kështu që ju mund të punoni nëpërmjet saj në ritmin tuaj, megjithatë ju jeni më të rehatshme. Por, ne e kemi lënë jashtë me Programet që ishin vetëm kjo. Kështu që unë klikoni flamurin e gjelbër, dhe çfarë e bën këtë program të bëjë? Thotë: hello, bota. Kjo e bën cat them përshëndetje në botën e tij të vogël në anën e sipërm të majtë e ndërfaqes së përdoruesit Gërvishtëse së. Por, kemi filluar për të futur disa Terminologjia javën e kaluar. Dhe kështu, gjëra të tilla si kjo që quhet çfarë? Çfarë mund të jetë term i përgjithshëm për këtë? Po. Nje metode ose nje njoftim. Sigurisht, kjo është një veprim. Bëni këtë. Dhe ende nuk kishte forma të tjera për të zeroja, përveç këtyre të ashtu-quajtur Deklarata, ata ishin gjithashtu gjëra të tilla si kjo, të cilën ne e quajtur çfarë? Po. Pra, një lak. Dhe në këtë rast, kjo gjë përsërit, natyrisht, 10 herë. Ka një bllok përgjithmonë. Ka disa të tjerë. Dhe sot ne jemi duke shkuar për të parë se si të përkthyer kjo në një botë më moderne, në qoftë se ju do, edhe pse kjo është do të paraqiten në shikim të parë të jetë shumë më misterioze. Por ata ishin me të vërtetë sythe. Dhe pastaj ne kemi gjëra të tilla si kjo, e cila kishte këtë formë, dhe në thelb pyetje. Dhe ne të referuara këto si çfarë? Audienca: shprehje Boolean. DAVID J. Malan: Po. Shprehje Boolean. Diçka që është ose e vërtetë ose false, po ose jo, një ose zero, megjithatë ju dëshironi për të parë botën. Por ne i quajtur ato Boolean shprehje, dhe ne plug ato në kushte, ose degët. Dhe në botën e Zeroja, gjithçka bukur ngërthen në aspektin e formës së saj, nëse kjo ka kuptim logjik për ta bërë këtë, por ju nuk keni për të ndaluar në vetëm bërë një gjë të kushtëzuar, ju mund të ketë një proverbiale pirun në rrugë dhe të bëjë as këtë apo atë nëse gjendja është e vërtetë apo jo. Dhe pastaj, si ju do të shihni, në qoftë se ju nuk e keni tashmë, Ju edhe mund të folesë këto blloqe. Pra Scratch rritet për të mbushur forma që ju mund të dëshironi të futur në të, kështu që ju mund të vërtetë të shprehin më ndonjë logjikë që ju mund të dëshironi të bëni. Tani disa fjalë të shpalljes për të dy këtu dhe New Haven. Pra tërthor fillon sot. URL për këtë është në Sigurisht e Faqja e internetit, për ata të panjohur. Seksionet do të jetë një mundësi për të marrë së bashku në një mjedis shumë më intime se [? Sanders?] E lejon, me 10 deri në 20 shokët e klasës me një mësim shokët në këngë të ndryshme, dhe ritme të ndryshme, nëse kështu zgjedhin. Në të vërtetë ofron kurs seksione të ndryshme për ata më pak të rehatshme, më shumë të rehatshme, dhe diku në mes, dhe roli i gishtit këtu, është nuk ka asnjë përkufizim formal, por në qoftë se ju jeni më pak të rehatshme, ju lloj i dini atë. Ju jeni pak Intrepid rreth Ideja e shkelën këmbë, ndoshta, prapa në klasë, ose duke treguar deri në një midis seksion. Nëse ju keni qenë të programimit që ju ishin gjashtë vjeç, më të rehatshme, ndoshta për ju. Dhe në qoftë se kjo është lloj i një hedh-up, kjo është pikërisht ajo që në mes është menduar të jetë. Tani, në ndërkohë, për një klasë të kësaj madhësie, ai na merr shumë kohë për të seksionit të gjithë, kështu që ne kemi ashtu-quajtur, seksione super, që vjen kjo fundjavë dhe fillim të javës së ardhshme, kështu që të marrë një sy në faqen e internetit të kursit për ata që janë sigurisht të gjerë, dhe gjithashtu filmuar për ata të cilët nuk mund të bëjnë ato. Dhe seksione vetë do të fillojë në javën e tre të CS50 indeksit zero. Problemi vendosur 0 është tashmë në faqen e internetit të kursit. Dhe të kuptojë se ju keni nëntë ditë vonesë këtë semestër. Pra, kjo është një përmirësim prej fundit vit, kur kemi pasur pesë ditë me vonesë. Pra, nëse ju jeni të pyesin, ne kemi nëntë grupe me probleme. Ju keni nëntë ditë me vonesë, secila prej të cilave ju mund të kaloni vetëm një të tillë në javë me radhë. Që efektivisht bën të gjitha problemi vendos shkak premte, por qëllimi është për të vënë pak bit e presionit psikologjik për ju të përpiqen për të marrë gjërat në të enjten sepse si ju së shpejti do të zbuloni, për mirë apo për keq, shumica çdo gjë në botë software përfundon duke marrë shumë më tepër se ju parashikojnë. Kështu që e konsiderojnë atë një lloj e mundësi për të ndihmuar veten për të synuar të enjten, por marrin ngushëllim në se, po, çdo gjë është për shkak e premte. Dhe nëse ju t'ia paraqesë ato në E enjte, kjo është e mrekullueshme. Nuk ka asnjë pikë bonus ose shtesë kredi për përmbushjen e këtij afati. Është menduar të jetë vetëm një shtrat. Dhe orarit të punës, të dyja këtu dhe në New Haven, në person, në qoftë se ju dëshironi të të takohet me ndonjë nga kurset tona mësimdhënies Fellows dhe CAS për ndihmë. Dakord. Deri tani, le ta bëjë këtë më reale. Dhe për një moment ajo do të fillojë për të marrë një pak më të errët, por shumë shpejt të premten dhe javën e ardhshme ne do të jetë në gjendje të bëjë shumë më shumë se ne mund të deri më tani në Scratch. Pra, ne kemi prezantuar kod fundit javë, megjithëse pictoral. Ajo ishte copa mister. Dhe ne formalizuar se është diçka që quhet kod burim, por do të dukej si? E pra, ajo dukej pak diçka si kjo. Dhe, në fakt, vetëm për të lloj të vë në lojë ku mund të shkojmë me këtë. Unë jam duke shkuar për të shkuar përpara dhe hapur një dritare këtu, dhe unë jam vetëm duke shkuar për të zgjedhur New File. Dhe unë jam duke shkuar për të shpëtuar këtë fotografi si diçka si përshëndetje dot c. Më shumë në atë zgjedhjen e fjalë në një moment të vetëm. Dhe kjo është se si dikush mund të shkoni në lidhje me të shkruarit e një programi. Përfshini I standarde / dot O h, int main i pavlefshëm, dhe pastaj të hapur mbajtëse kaçurrel, i afërt mbajtëse kaçurrel, printf përshëndetje presje botë, backslash n, pikëpresje, Save, bërë. OK. Unë kam shkruar ime e parë program, por ajo do të jenë tepër të underwhelmed sepse kur unë në fakt të drejtuar këtë program, natyrisht, duke shkruar herën e parë të bëjë hello, dhe pastaj dot çaj hello, dhe ne do të kalojnë nëpër këtë në më shumë hollësi në një moment, kjo është e gjitha ajo ka. A nuk pop hapur ndonjë dritare. Ajo nuk ka të bëjë asgjë veçanërisht dashuroj. Gjithë kjo nuk është ajo që kam thënë atë për të bëjnë, por si nuk kemi marrë në atë? Dhe si nuk kemi të ndërtuar mbi atë? E pra, le të prezantoj disa koncepte të ndryshme këtu. Pra, një, ne jemi gati për të filluar duke përdorur një program të quajtur një përpilues. Një përpilues ekziston për Mac OS, Windows, Linux, çdo numër i sistemeve operative, dhe ne së shpejti do të prezantoj të mjedis që ne do të jetë duke përdorur, por një përpilues është vetëm një gjeneral afat për një copë software që merr kodin burim dhe prodhon kod objekt prej saj. Me fjalë të tjera, në qoftë se ju kanë si input burim tuaj Kodi, diçka si ajo që unë sapo shtypur, ajo në fund të fundit prodhon kod objekt. Dhe kodi objekti është me të vërtetë vetëm një mënyrë e sofistikuar për të thënë ajo nxjerr zero-së dhe dikujt. Me fjalë të tjera, burim Kodi, edhe pse kjo është do të shikojmë një misterioze të vogël, dhe më pak miqësore se Scratch në shikim të parë, kjo është të paktën diçka që ne njerëzit mund të kuptojnë. Ai lloj i duket dhe tingëllon si Anglisht edhe pse kjo është shumë e ngjeshur. Ndërsa programimin në zero-së dhe dikujt, si paraardhësit tanë kishin për të bërë, disa vite më parë, nuk ishte një Sfida veçanërisht fun. E megjithatë, kjo është ajo që kompjuter ende kupton. Pra përpilues na merr nga kod burim të kundërshtojë kod. Është si duke hapur një skedë me të përpilues, dhe kur ju ruani atë, ju merrni ato zero dhe ato. Pra, ne do të shohim se si për të bërë që në një moment të vetëm. Por tani le të përpiqemi për të siguruar një urë në mes të javës së kaluar dhe kjo, në mënyrë që ashtu si ne të merrni varur deri mbi gjëra të tilla si kllapa gjarpërushe, dhe pikpresje, dhe kllapa, dhe të gjitha këto intelektualisht interesante aspekte të programimit, që shumë kuptohet udhëtim njerëzit ngritën herët, kuptojnë se të gjitha idetë sot, janë të njëjta si fundit. Pra të fundit, ne pamë këtë shembull këtu, program Hello World. E pra, duke filluar nga sot, në qoftë se ne duam për të zbatuar të njëjtin program, ajo do të shikojmë një pak diçka si kjo. Dhe ne do të shpjegojë para se të gjatë çfarë int, dhe kryesor, dhe i pavlefshëm, dhe të gjithë që është, por të paktën unë shoh këtu tashmë të njohur Hello World. Ndërkohë, gjëra të tilla si funksion, Say Hello, është shumë thjesht do të jetë një deklaratë shumë e thjeshtë si kjo. Printf përshëndetje botë, me disa citon, me një backslash, me një pikëpresje, por më shumë se për të ardhur. Unazore, ndërkohë, kjo është një lak që, natyrisht, thotë përshëndetje botën përgjithmonë, dhe kjo do të shikoni një pak weirder se në të fundit, por në qoftë se unë them diçka si, ndërsa e vërtetë, unë pastaj mund të shtypura jashtë botë Hello përsëri dhe përsëri dhe përsëri dhe përsëri. Dhe pastaj si ju mund të lloj të fillojnë të konkludoj këtu, kjo konventë e përdorimit formatimin e teksteve kaçurrel është lloj e si përqafuar Linja e prerë e kodit atje. Linja printf i kodit shumë si copë e verdhë mister lart. Pra, ne nuk jemi duke shkuar për të thënë përgjithmonë, ne jemi duke shkuar për të thënë, ndërsa e vërtetë, por ne do të shohim se pse kjo është në vetëm pak. Ndërkohë, në qoftë se ne kemi një lak si kjo, ku ju përsëris diçka të fundme herë numri, edhe ky është do të marrë pak duke u përdorur për të, por ajo do të thonë se për int I merr zero, unë më pak se 10, i ++, dhe pastaj printf përsëri. Por nuk do të jetë modele. Dhe për ata prej jush të njohur me AP Shkencave Kompjuterike, ose Java, ose ndonjë numër të gjuhëve të tjera, pothuajse të gjitha këto ndërton deri më tani duhet të duken më së shumti e njohur. Pra ndryshueshme. Kështu që këtu është një fragment i thjeshtë Scratch se vendos një ndryshore të quajtur në kundërshtim me zero, dhe pastaj përgjithmonë thotë se kundër, dhe atëherë ajo ndryshon counter nga një. Pra, ajo fillon me zero, dhe pastaj një, dy, tre. E pra, si mund të vendosë se në kjo gjuhë e re në mënyrë të ngjashme një të vogël? Int counter barabartë zero, ndërsa e vërtetë, e cila është se të njëjtën ide nga më parë për të bërë diçka përgjithmonë, dhe unë jam vetëm do të printf. Dhe tani ajo është duke marrë pak e çuditshme, për qind unë, por më shumë se për të ardhur, por këto ide janë të njëjtë. Ne vetëm tani duhet të përmbahet Sintaksa që kompjuteri është do të kërkojë prej nesh. Shprehje Boolean, diçka si sx më pak se y, x ose më pak se y, dhe y pak se Z. Ajo do të shikojmë një diçka të vogël si kjo, me kllapa vetëm si në matematikë për masë të mirë për të vetëm të sigurojë që rendi i operacioneve është si ne synojmë. Dhe tani, kushtet. Pra, nëse x pak se y, thonë se x është më pak sesa y, përndryshe nëse x është më e madhe se y, të thënë x është më e madhe se y, ndryshe logjike, x duhet të jenë të barabartë me y. Kështu që ju mund të zbatojë diçka si kjo në Scratch, ose ju mund të zbatojë ajo në këtë sintaksë. Dhe përsëri, formatimin e teksteve kaçurrel janë lloj i duke na dhënë të njëjtën formë si mister copë, por sintaksa, tani, është ndoshta duke filluar për të ndjekur disa modele. Pra, çfarë e bën këtë na jep këtu? Pra, ne jemi kthyer pastaj në programin tonë kryesore. Le të në fakt, tani, bëjë diçka me të. Pra, në këtë e parë Linja ne shohim mprehtë përfshijnë, I standarde / O, dot h, dhe pastaj disa kënd i çuditshëm kllapa poshtë se. int main i pavlefshëm, dhe pastaj printf botë përshëndetje. Pra, vetëm të marrë një hap. Dikush që kurrë nuk ka programuar më parë, të paktën shpjegojnë një nga këto rreshta. Përdorimi ndoshta disa prej zhargonin e javës së kaluar. Çfarë është printf, për shembull? Po. Audienca: [padëgjueshme] DAVID J. Malan: Po. Kjo është një funksion, ose një deklaratë, nga terminologjia e javës së kaluar. Dhe kjo është një veprim që është duke bërë diçka. Tani ky funksion, ose këtë deklaratë, nuk ajo duket për të marrë një lloj të dhëna? Dhe në atë kuptim e bën atë duket për të marrë të dhëna, nëse është kështu? Input, çfarë dua të them me këtë? Po. Audienca: [padëgjueshme] DAVID J. Malan: Po. Pra Scratch nga disa pjesë mister ku ju mund parametrize atë. Ju mund të tregoni përsëritje bllokojnë sa herë të përsëritur, kështu që ishte një kontribut i llojet, dhe ashtu si Scratch kishte një placeholder të vogël të bardhë për numrin që ju do të shkruani në, kështu që nuk kemi përdorur në këtë kllapa botërore text për të na dhënë atë formë rrethore në të cilën ne mund të plug dhëna tonë. Në fund të fundit, dhjetëra vjet më parë kur kjo gjuhë, e quajtur C, u shpik askush parashikuar kjo është një prej nesh, këto disa vite më vonë, ne do të duan një funksion që thotë përshëndetje. E drejtë? Ajo do të jetë mirë në qoftë se ka pasur një copë mister, apo një fjalë kyçe, që është quajtur hello, që fjalë për fjalë vetëm thotë përshëndetje. Por ne nuk kemi nevojë që. Ne mund të kemi diçka shumë më të ulët nivel, si një të shtypura të përgjithshme komandë, që merr të dhëna, dhe printime çfarëdo që duam. Pra, vini re tani model që do të fillojnë të dalin. Paren Open, paren afër është me sa duket përqafimit të dhëna, dhe pastaj unë shoh dyfish citon në të dyja anët. Nuk ka ende backslash pazakontë n, por shpresojmë se tani ju mund të fillojnë për të kujtoj të paktën që printf është duke marrë në një formë të dhëna. Jo si përdorues miqësore si Zeroja, por kjo është vetëm si të paturit e mbyllën në disa vlera atje. Në rregull, tani le të vërtetë të bëjë diçka me këtë. Kështu që disa prej jush mund të dini nga duke pasur shopped klasës para, bisedoi me shokët, që për shumë vite kemi përdorur diçka të quajtur pajisja CS50. Kjo ishte një term që përshkruan një teknologji quajtur makinë virtuale, e cila është një copë software që tuaj Paraardhësit do shkarko off Faqja e internetit Kursi për të lira. Ata gjithashtu do të shkarkoni një pjesë e lirë e software quajtur një hypervisor, diçka që quhet si VMware, ose VirtualBox, ose ndonjë numër e mjete të tjera, dhe në Mac ose PC e tyre ose çfarëdo kompjuteri që kishin vitin e kaluar dhe në vitet e kaluara, ata do të klikoni dy herë një ikonë për të drejtuar këtë softuer quajtur hypervisor. Dhe pastaj brenda atij programi ata do të hapë pajisjen CS50. Dhe efekti ishte që nëse një paraardhësi i juaji ishte duke ecur Mac OS ose Windows, ai ose ajo më pas kishte një dritare të re në e tyre ekran duke mjedisin CS50-së. Pra, një makinë virtuale ju lejon të drejtuar një sistemit operativ brenda tjetrit, dhe kjo është pikërisht ajo që ne e bëmë. Në pjesën më të rrjedhën ne përdorin një sistem operativ të quajtur Linux, konkretisht Ubuntu Linux, dhe kjo është një mënyrë shumë e mirë në vitet e fundit të duke u siguruar që të gjithë në kursin vetëm kishin të njëjtin mjedis. Dhe ju mund të përdorni çdo lloj kompjuter që ju në të vërtetë dëshironi. Në mesin e dobësi, edhe pse, po të ishte si dy gigabajt për ta shkarkuar këtë gjë. Ajo nuk ka domosdoshmërisht të punojë super edhe në njerëzit Kompjuter që të cilëve ndoshta vetëm kishte një koncert apo më shumë RAM, apo jo shumë gigahertz të shpejtësisë CPU, dhe kështu që këtë vit, për këtë dhe arsye të tjera, kemi qenë në tranzicion në këtë mjedis. I ashtuquajturi IDE CS50, e cila është bazuar në softuer me kod të hapur, dhe një platformë të mbështetur që një kompani e quajtur Cloud9 mbështet në Evropë, që na lejon të kemi në thelb se mjedisi saktë njëjtë si në vitet e fundit, por në të ashtuquajturin re. Pra, çfarë është cloud? Ju keni klikuar ndoshta ikonë e saj në Mac apo PC. Çfarë është cloud? Po? Një louder pak. Po. Kjo është vetëm një bandë e kompjuterëve gjetkë që të dhënat dyqan dhe të kandidojë software dhe si. Pra, kjo është me të vërtetë vetëm për të fjalës de jure i përshkruar [? rentabile?] kompjutera që jetojnë në vende të tjera. Se ju, vetë, jo domosdoshmërisht vet. Pra, kur të dhënat tuaja, ose juaj programe, janë në një re, kjo thjesht do të thotë se është në dikë kompjutera tjetër gjetiu, dhe jo, ka shumë të ngjarë, në tuaj laptop fizik apo desktop. Dhe kështu kjo është ajo që CS50 IDE tani është. Tani e tutje ju do të shkoni në një të caktuar URL që do të prezantoj për të, në problemin e caktuar 1, më vonë këtë javë, që do të më pas, pas logging in, ju jap këtë mjedis. Dhe shumë si Scratch kishte një disa panele të ndryshme të përfshira, kështu që ka IDE CS50 kanë pikërisht këtë. Në anën e sipërm të majtë këtu, ju jeni do të shohim një shfletues njohur file. Pra, ndonjë fotografi që ju vënë në këtë mjedis janë vetëm do të jetë e shënuar atje. Dosjet dhe dosjet. Në krye të drejtë këtu, ju jeni duke shkuar për të parë një vend ku ju në fakt mund të shkruani kodin tuaj. Fillimisht në C, më vonë në Termi në PHP dhe JavaScript, dhe, ndoshta për finale projekte, Ruby ose Java ose Python ose ndonjë numër të gjuhëve janë mbështetur në këtë mjedis. Kjo nuk është e lidhur fare për CS50 specifike. Dhe pastaj në këndin e poshtëm këtu, sidomos për ata më të rehatshme, ju keni diçka quajtur një dritare terminali. Dhe kjo dritare terminali lejon ju për të ekzekutuar ndonjë komandë që ju duan në këtë mjedis cloud. Kjo ju lejon të instaloni ndonjë softuer shtesë që ju doni sepse ju keni ashtuquajtura rrënjë, ose administratori privilegjet. Pra, me fjalë të tjera, edhe pse kjo është pritur në fund të fundit në një re, dhe edhe pse ne kemi thjeshtuar atë në një farë mase By default, fjalë për fjalë duke futur, në sajë të Dan Armendariz, dhe Dino, dhe Dan Bradley në ekipin CS50 e gjatë kaluar shumë muaj, një më pak të rehatshme Mënyra që fsheh një shumë e distractions fillimisht konfuze. Çdo gjë ekziston në përfaqësojnë një sistem tipik kompjuterik që ju mund të përdorni në botën reale. Pra, çfarë e bën këtë të gjithë do të thotë, dhe çfarë mund të bëjë në fakt me të? Le të vërtetë të marrë një vështrim në një program. Kështu që unë jam duke shkuar për të hapur Mjedisi aktual këtu, e cila është vetëm Chrome ynë shfletues, e cila mund të jetë Firefox, mund të jetë Internet Explorer, ose ndonjë shfletues tjetër si. Është e shfaq e plotë këtu për momentin. Dhe unë dëshiroj që në fakt vë në lojë pavarësisht se çfarë ky program ishte. Pra, le të marrin një vështrim, nga zooming në dorë krye, në atë që kam bërë, dhe si kam marrë këtu. Kështu që këtu është ato e saktë të njëjtën gjë e kodit. Pra, kjo është deklarata, siç u përmend më herët. Funksioni që thotë përshëndetje. Formatimin e teksteve kaçurrel, në Linja katër dhe gjashtë linjës, me sa duket lloj i zarf që vija që të lidhen me thelbin e programit tim. Pra me të vërtetë, kjo fjalen kryesore, kjo është deri atje në vijën tre, ju mund të mendoni se si ekuivalenti e që kur flamuri gjelbër klikuar, bllokuar në Scratch. Pra, kjo është e gjitha ne kemi këtu, është kur flamuri gjelbër klikuar, të shtypura, ose të themi, Hello World. Por le të marrin me mend, tani, në çfarë së pari këtë linjë, më misterioze, është. Sharp përfshijnë, i hapur angled parantezë, unë standarde / O dot h, mbyllur kllapa kënddrejtë. Ç'farë është se ndoshta duke bërë, veçanërisht në qoftë se ju keni programuar para se në ndonjë gjuhë tjetër. Po? Audienca: [padëgjueshme] DAVID J. Malan: Po. Pikërisht. Pra, kjo është duke i dhënë juve akses në një bibliotekë, kështu që të flasin, e funksioneve. Dhe një bibliotekë e funksioneve është funksionet që dikush tjetër shkroi, ose kohët e fundit apo kohë më parë, kështu që ju nuk duhet të reinvent timon. Për shembull, ne nuk e bëjmë duhet të dinë se, në vitin 2015, se si të shkruani kodin që i vë një karakter në ekran e mia. Dikush tjetër e ka realizuar artistikisht se me funksionin printf kështu që unë mund të lloj të abstrakt larg nga ajo, apo shtresa në krye të tij ose të saj Kodi, dhe tani vetëm të marrë për të dhënë se çdo program unë shkruaj mund të shtypura diçka në ekran. Pra, kjo linja e parë atje në një hap përfshin të ashtuquajturin fotografi header për bibliotekën standarde. Pra shikoni, gjuhën në që ne jemi tani duke punuar kishte një bibliotekë standarde me shumë funksione. Printf është një prej tyre, dhe që vija e parë e kodit do të thotë më jep akses në ato funksione, kështu që unë nuk duhet të reinvent timon atë. Tani le të shkojmë në dritaren e poshtme dhe të bëjë pikërisht atë që kam bërë më parë. Një moment më parë, kur isha whizzing përmes kodit, shtypni atë për herë të parë, Unë shumë shpejt shtypur, të bëjë përshëndetje. Çfarë ishte se mbi të gjitha do të ju me mend? Çfarë po bëj? Po? S'ka gjë Është në rregull. Po. Audienca: Hartimi atë. DAVID J. Malan: Po. Ajo ishte vetëm hartimin atë. E drejtë? Edhe në qoftë se kjo është plotësisht e panjohur për ju, kjo është goxha e anglisht si. Sigurisht nuk është zero dhe ato, kështu që unë ende duhet për të drejtuar atë nëpërmjet se e ashtuquajtura program, një përpilues, që po ndodh për të marrë atë si input dhe për të prodhuar prodhimit. Dhe të paktën, tani për tani, në ky mjedis Linux, por kjo nuk është parakusht, kjo është vetëm ku ne do të fillojmë, ju zakonisht ndërveprojnë me sistemet kompjuterike si kjo nga një të ashtuquajtur command line. Pra, me një keq shpejtë dhe tastierë tuaj, dhe jo aq shumë miun tuaj, dhe jo aq shumë dritaret dhe ikonat dhe menutë, në vend çdo gjë është tekstuale. Dhe, edhe pse kjo ndihet, në fillim shikim, ndoshta, si një hap prapa, kjo është në fakt një shumë më të mënyrë të fuqishme dhe ekspresive për të kontrolluar një kompjuter sidomos si ju, veten, të bëhet më shumë të rehatshme nga pak. Ajo do të ju lejojnë të bëni një shumë më shumë gjëra se sa vetëm atë Microsoft ose Apple ju lejon të bëni me sistemi i tyre grafike operativ. Kështu që kur unë hit Enter, tani, asgjë nuk ndodh në këtë kohë sepse me sa duket përshëndetje program është deri në datën. Dhe çfarë ishte urdhërimi Unë u zhvillua pas kësaj? Dot çaj HELLO, dhe përshëndetje botën. Tani le të marrin një hap të mbështetur për vetëm një moment. Ajo rezulton se bëjnë përshëndetje është vetëm një mënyrë të thjeshtuar të hartimin e një programi. Le të vetëm të prezantoj një pjesë e zhargon, por më pas të shkojë larg nga ai, pasi ajo nuk është e të gjitha që interesante për qëllime të sotme. Përpiluesit ne jemi duke shkuar për të filluar përdorimin e quhet tingëllimë, për gjuhën C. Dhe kjo është një program që është drejtuar vetëm si ne e bëmë në rreshtin e komandave atje. Dhe kështu që në qoftë se unë dua të të hartojë një program që unë kanë shkruar në një file të quajtur përshëndetje dot c, Unë fjalë për fjalë vetëm lloji Hello tingëllimë c të hyjë. Funny gjë është, për arsye historike, në qoftë se unë nuk do të specifikojë emri i programit që unë dua të prodhimit, në qoftë se unë nuk e bëj specifikoni një emër file për ato zero dhe ato, një shumë e çuditshme vjet konventë është adoptuar më parë ku ajo ndjehet lloj i një përgjigje e mirë në atë kohë, dhe le të vetëm në mënyrë arbitrare e quajnë programi i parë ne përpilojë një njollë jashtë. Një vjen për herë të parë në alfabetin. Jashtë, kjo është prodhimi. Pra, ne do të thërrasë programin by default një pikë jashtë. Dhe kjo është në rregull, sepse në qoftë se unë dua të të drejtuar programin në këtë tekst bazë mjedis, Unë vetëm lloji dot çaj një pikë jashtë hyjë. Dhe kjo do të kandidojë tamam si më parë. Pra, le të shohim se e vërtetë shpejt. Pra, nëse unë kthehem në tim kod burim në CS50 IDE, dhe unë në vend të bërë këtë, tingëllimë përshëndetje ahur c hyjë, njoftimi asgjë nuk duket të ndodhë, por pothuajse gjithmonë në ky mjedis Linux, kur asgjë e keqe nuk duket të ndodhë, që do të thotë diçka e mirë ka ndodhur në fakt. Nëse ju nuk e shihni një gabim Mesazhi, gjithçka është ndoshta mirë. Dhe me të vërtetë, në qoftë se unë tani bëj dot çaj një pikë të jashtë hyjë, unë kam drejtuar njëjtin programin tim. Unë ende kam programin Hello nga më herët sepse në të vërtetë, kjo është do të jetë aq shumë nicer vetëm tipit të bëjë në vend të kujtuar këto yshtje e komandat, por le të shohim se si ne mund të përmirësuar me këtë, megjithatë. Pra, kjo është komanda të përpilojë kodin. Kjo është komanda për të drejtuar Kodi me përpilimin pas kësaj. Si mund të specifikoni një emër file? E pra, le të vetëm të prezantoj një më shumë pjesë e zhargon. Kur ju jeni në këtë Mjedisi teksti bazë, ju jeni do të duan të specifikojë gjëra quajtur argumente command line. E cila është vetëm një mënyrë e sofistikuar për të thënë: fjalë të tjera në ftim që shkulje sjelljen e çfarëdo Programi ju xhironi. Pra, në mënyrë të veçantë programi unë jam drejtimin, duke shtypur emrin tingëllimë, është programi i quajtur tingëllimë. Pra, kjo është ose shkolla e vjetër ekuivalent i klikuar dy herë në Microsoft Word ose ikonë e disa programit. Unë jam në vend të vetëm shtypni emrin e saj, por në këtë version të komandës, Unë atëherë kam dash o hapësirë përshëndetje hapësirë ​​përshëndetje dot c. Pra, edhe në qoftë se ju kurrë nuk kam luajtur në këtë botë para, vetëm të marrë me mend se çfarë ka dash o përshëndetje bëj? Ose çfarë do të them tingëllimë për të bërë? Po. Audienca: [padëgjueshme] DAVID J. Malan: Po. Ajo thjesht vendos prodhimin e file të jetë përshëndetje në vend të sillier një dot jashtë. Dhe, me të vërtetë, le të provoni këtë. Pra, nëse unë tani bëj, për herë të parë le ta bëjmë këtë, r M përshëndetje. Kjo është hequr. Dhe kjo do të thotë Hiq skedar i rregullt hello, i cili është e panevojshme misterioz, por ajo vetëm do të thotë nuk ju duan të fshini fotografi, dhe unë lloji Y për Po. Dhe njoftim, në qoftë se ju po glancing në krye u largua, ai u zhduk prej deri atje. Më lejoni tani të bëjë dash o tingëllimë, dhe Unë jam duke shkuar për të shkuar përpara dhe të bëjë hello, në të gjitha shkronja kapitale, përshëndetje dot c. Tani, në qoftë se unë bëj dot plagë Përshëndetje, çfarë do të presim? Ndoshta është rasti të ndjeshme. Ndoshta kjo nuk është. Le të shohim. Asnjë skedar të tilla apo directory. Dhe ne mund të lloj të mashtrojnë nga vetëm duke kërkuar në krye të majtë. Çfarë nuk kam qartë shpëtuar programin si? Të gjitha kapele përshëndetje. Pra me të vërtetë, kjo është duke shkuar për të bërë një ndryshim. Deri tani përshëndetje bota është kthyer. Tani kjo është e gjitha mirë dhe të mirë, dhe të gjithë shumë mendje-numbing, në lloj të merrni bogged poshtë në këto detaje, por të kuptuarit e tyre është e mirë. Shtypja nga këto gjithnjë yshtje gjata nuk do të jetë veçanërisht fun, kështu që njerëzit në botë shpikur një program tjetër, disa vite më parë, e quajtur bëjnë, se mjaft thjesht ju lejon të tipit make, Emri i programit ju doni të bëni, dhe të bëjë është i zgjuar në se ajo do të duket në dosje aktual, aka directory, dhe në qoftë se ju keni një fotografi quajtur përshëndetje dot c, se është dosja ajo do të përpilojë për ju në një program të quajtur përshëndetje. Kështu që kjo është një mënyrë shumë më të thjeshtë të duke bërë komandat më të fshehta që ne e bëmë më herët. Dhe e kemi para-konfiguruar CS50 IDE të dini se ajo duhet të bëjë o dash dhe një numër të flamuj të tjerë, apo argumentet command line, se ne do të shohim para se të gjatë. Por tani le të bëjë në fakt diçka më interesante. Vetëm shtypni jashtë botë Hello gjithë koha nuk është e gjitha që bindëse. Pra më lejoni të shkoj përpara dhe të ndryshojë ky program dhe të thonë, përshëndetje David. Tani unë jam duke shkuar për të shkuar poshtë këtu. Unë jam duke shkuar për të shkuar përpara dhe të bëjë të bëjë përshëndetje. Dhe përsëri tani ju jeni duke parë bëjnë po tregon ju më të gjatë sekuenca e komandave që është bërë sepse kemi para-konfiguruar atë në këtë mënyrë, por ne nuk duhet të shqetësohen për tani çfarë është bërë tjetër se ajo është hartimin dot çaj Hello, hello world. Çfarë është e gabuar? Po. Audienca: [padëgjueshme] DAVID J. Malan: Po. Pra, gabim noobie. Unë këtë njoftim është super delikate, por yll këtu, në tab, thjesht do të thotë që ju nuk e keni ruajtur atë, dhe shfletues dhe programe të tjera bëj këtë ndonjëherë. Pra, s kontrollin ose komandën s duhet të ruani atë. Tani më lejoni të shkoj përpara dhe ri-drejtuar programin. Recompiled. E drejtë, kështu që është një proces shumë-hap. Asnjëra prej të cilave është veçanërisht e ndërlikuar, por çdo herë që ne të ndryshojë skedarin, ne kemi nevojë për të ndryshuar rezultuar zero dhe ato, dhe dot plagë përshëndetje. Wow. Pra, kjo është shumë e underwhelming që ne vetëm të shtypura jashtë këtë. Le të bëjë gjëra pak më dinamike, tani. E pra kjo rezulton, se si Zeroja, C mbështet variablave. Dhe kjo rezulton në qoftë se ju doni të ketë një ndryshore që ruan, jo një numër si ne zakonisht bëri me Scratch, por si një fjalë, ose një frazë, ose një emër, ju mund të specifikoni një ndryshore të jetë e tipit string. Pra, ne do të shohim më shumë prej këto në një moment të vetëm, por kjo rezulton se C, dhe një shumë prej gjuhëve si ai, kemi lloje shumë të veçanta të variablave. Kjo nuk është vetëm si algjebër, ku ju merrni një x, një y, dhe z dhe ata janë vetëm gjithmonë numra, në një gjuhë programimi ju mund të ruajë numrat, ju mund të ruajë karaktere individuale, ju mund të ruani tërë fjalët, ju mund të të ruajtur imazhe tërë, e tërë fotografi të shëndoshë, dhe si. Pra, ne duhet të specifikojë se çfarë lloji i variablit tonë është. Dhe nga konventa unë jam duke shkuar për të thirrur tim s ndryshueshme vetëm për shkak se ajo është e ngjeshur, dhe s qëndron për vargun. Dhe atëherë unë jam duke shkuar për të ruajtur brenda kësaj variable, ashtu si me Scratch kur unë përdorin bllok caktuar, Unë jam duke shkuar për të përdorur Operatori detyrë në C, e cila bukur mjaft është i barabartë nënshkruajë, por shenja të barabartë e bën këtë. Ajo lëviz diçka nga e drejta në anën e majtë të shprehjes. Pra, atë që kam bërë, të jetë i qartë në Linja pesë, po unë kam shpallur një ndryshore. Unë e kam thënë kompjuterin, më jep mua kujtesës për një ndryshore, e quajti atë s, dhe e di paraprakisht se unë jam duke shkuar të vënë një varg në të. Dhe një varg është vetëm një sekuenca e karaktereve. Kjo është një fjalë, ose një frazë, ose paragrafi, por kjo është një sekuencë e karaktereve. Kjo nuk është numra. Çfarë string jam unë do të jetë duke vënë në atë variabël? E pra, me sa duket të japin kuotën mbyll thonjëzat, "Hana". Tani vini re modelin që është në zhvillim. Ka një shprehje e majtë. Ka një shprehje djathtë, të ndara me shenjë të barabartë. Dhe vetëm të marrë me mend, në qoftë se të panjohura megjithatë, me atë që po bën pikëpresje. Çfarë është ajo me sa duket bën për ne? Po? Audienca: [padëgjueshme] DAVID J. Malan: Po. Është vetëm ndërprerjen e linjës. E drejtë? Kompjuterët duan të jenë të hapur tha, fjalë për fjalë, çfarë të bëni. Ashtu si gjalpë badiava dhe shembull sanduiç pelte, në qoftë se ju nuk e specifikoni pikërisht atë që keni ndërmend, ajo mund të lihet për gjykim apo gabimi. Pikëpresje do të thotë, kjo është ajo për këtë komandë. Është qenë super të saktë, dhe kjo është një gjë shumë e lehtë për të lënë jashtë. Kështu që tani ky program nuk duket të të sillen ndryshe gjersa I bërë atë më dinamike. Pra, në vend se vështirë mund të mi emri, më lejoni të vënë një vlerë placeholder. Dhe kjo rezulton se, dhe unë e di këtë nga që ka lexuar dokumentacionin, dhe përdorur funksionin për vite, që printf është projektuar të jetë dinamike. Ju nuk keni për të ditur paraprakisht çfarë fjalë ju doni të vënë në të. Ju në vend të kësaj mund të ketë një placeholder, si për qind s, e cila do të them të kompjuter, vendos një varg këtu. Cili varg duam të vënë atje? Will rezulton se midis këtyre kllapa, të cilat Mos harroni, caktoj kufijtë të dhëna në një funksion, në qoftë se ju keni nda me presje listë të gjërave këtu, ne fakt kalojë në shumëfish inputeve te një funksion. Pra, ashtu si disa Scratch blloqe, ju nuk mund të kanë luajtur me ta për projektet tuaja ende apo në të gjitha, disa blloqe Scratch kanë dy inpute. Dy kuti të bardha ju mund të shkruani numra ose fjalë në. Pra, për të nuk kanë funksione të tilla si C printf që mund të marrin dy inpute. Dhe përsëri, kjo presje i ndan ato. Pra në gjuhën angleze, përsëri edhe në qoftë se ju kurrë nuk kam programuar më parë, nga kjo logjikë printf është një funksion, merr dy inpute, njëra prej të cilave është një placeholder, çfarë do të shpresojnë printf do të bëjë me këtë të dhëna? Ajo do të thonë hello Ana, me shpresë. Pra, për të bërë këtë ne kemi nevojë për të shpëtuar atë. Unë jam duke shkuar për të zoom jashtë. Unë jam duke shkuar për të shkuar mbrapa poshtë këtu dhe të thonë, të bëjë përshëndetje të hyjë. Oh. Diçka është e gabuar, dhe në fakt kjo është mjaft e madhe. Unë kam gjashtë rreshta të kodit dhe si 12 linjave të gabimeve. Pra, shikojmë përpara për këtë. Pra, çfarë po ndodh këtu? Pra, më të mirë rregull e pranoj këtu, sidomos kur ju jeni duke filluar nga jashtë, A nuk merrni hutuar nga gjëra në fund. Në fakt, unë shumë me qëllim përshkohet vetëm deri sepse shumë shpesh, një kompjuter është jo të gjithë që të ndritshme e një pajisje. Ajo do të merrni hutuar. Nëse ajo e sheh një gjë që ajo nuk e kupton, ajo mund gabim tjetër rreshta të kodit si të pasakta, edhe pse ata janë të përkryer gjobë. Kështu që ju gjithmonë dëshironi të punoni Top poshtë përmes gabimeve. Dhe pa dyshim kjo është super errët në këtë moment. Gabim, përdorimin e pashpallur string identifikues. A e kam të thotë standarde në? Jo, unë do të thotë string. Dhe kjo është vënë në, ndoshta kjo është një typo. Lloj si, spell-checking në një mënyrë shumë geeky, por arsyeja këtu, dhe ju do të dini këtë vetëm me praktikë, është se ajo rezulton se string nuk ekziston në C. Në fakt, C është një gjuhë të veçantë të vjetër, dhe kjo është nivel shumë i ulët, dhe kjo nuk ka shumë karakteristika që ju mund të keni rritur me nëse ju keni, në fakt, të programuar në Java, si disa prej jush kanë, por ju mund të mësoni atë gjëra të reja. Dhe me të vërtetë, ne kemi bërë këtë CS50, edhe pse deri në fund të semestrit, të gjitha këto rrotave të trajnimit do të janë marrë jashtë, atë që ne bëjmë në këto parë disa javë fillimisht është ne gjithashtu kemi ju përfshijnë CS50 dot h. E cila është një skedar header. Më shumë se në të ardhmen. Kjo është një fotografi që përmban funksione të që kemi shkruar për ju. Dhe në mesin e këtyre funksioneve është funksionet për marrjen e të dhëna nga ana e përdoruesit, si vargjet, dhe numra, dhe numrat reale, dhe më shumë. Por ajo ka edhe një shkurtesat pak. Ajo përcakton një Boolean si një lloj të të dhënave. C nuk ka vërtetë apo e rreme. Por ne mund t'i jepte nocionin e vërtetë apo e rreme me anë të kësaj biblioteke. Dhe ajo gjithashtu nuk ka një varg ndërtuar në deri sa ne të përfshijë këtë linjë. Pra, kjo linjë e kodit tregon përpiluesit, hej, tingëllimë, shikoni në këtë skedë për një tërësi bandë e kodit që CS50 ka shkruar që dikush duke përdorur këtë fotografi mund të marrë për të mirëqenë Karakteristika ata kanë shtuar. Kështu që tani më lejoni të shkoj përpara dhe të qartë në ekran, dhe në qoftë se kurioz unë jam vetëm duke thënë kontroll l çdo herë për të pastruar në ekran, ose ju mund të shtypni qartë. Unë jam vetëm duke shkuar për të shkuar përpara dhe tani lloj bëjnë hello, dhe gjithçka është mirë. Ende një prodhim misterioze, por kjo nuk është një mesazh i gabuar. Tani në qoftë se unë bëj dot çaj hello, dhe si një mënjanë, dot Slash është i panjohur për shumicën. Kjo thjesht do të thotë, dot mjete dosjen aktuale. Pra, nëse ju keni përdorur ndonjëherë DOS, ose Linux, apo Unix ju mund të keni bërë diçka si cd dot dot, ku Dot Dot thotë të shkojnë prapa në herë, ose shkoni prapa, ose më lart në directory tuaj. Dot thjesht do të thotë të shikojmë në dosjen aktuale. Unë dua përshëndetje, e cila është e drejtë këtu. Dhe me të vërtetë, tani ai thotë përshëndetje Hannah. Dhe në qoftë se kam ndryshuar atë përsëri për Maria, përpiluar ajo do të bëjë hello, dot plagë përshëndetje, programi mban në ndryshim. Por kjo është ende një program goxha budalla. Nëse unë dua për të transportuar këtë program, apo të japë atë për një mik, ose të japë atë për Maria apo Hannah për këtë çështje, kjo është në rregull. Unë mund ta rregulloje atë për të dy prej tyre, por ajo kurrë nuk do të jenë të dinamike. Ata nuk mund të ndryshojë atë pasi ajo është hartuar poshtë në ato zero dhe ato. Pra, ajo që ne e bëmë diçka më të zgjuar? Çfarë nëse, në vend të hard-coding në programin e emrit këtij personi, Çfarë ndodh nëse ne vetëm të marrë string në kërkesë? Pra, me fjalë të tjera, më lejoni të bëj këtë. Unë jam duke shkuar për të përpiluar këtë program. Dhe më lejoni të zoom në në fund tani. Bëni përshëndetje dot plagë përshëndetje. Tani asgjë nuk po ndodh. Mund të marrim një vullnetar të shpejtë për të bërë diçka të ndodhë? Eja up. Si e keni emrin? PANCHO: Pancho. DAVID J. Malan: Pacho? Eja up. Pasi ju merrni deri këtu, kjo është do të jetë shumë underwhelming, por kjo është më interesante se mua shtypur atë. Nëse ju doni të shkoni përpara dhe lloji juaj emri, kam bërë këtë program vetëm për ty. Vetëm shkruani emrin tuaj. Enter. Wonderful. Të gjithë të drejtë, ju faleminderit shumë. PANCHO: Faleminderit shumë. DAVID J. Malan: OK. [Duartrokitje] Kjo ishte shumë i sjellshëm. Këtu ju Go. Çfarë bëjmë ne? Pra, ne më në fund, të paktën, bëri ky program dinamik. Tani është ende sigurisht nga të projektimit underwhelming, por ne fund kemi aftësinë tani për të shkruar kodin më parë, shumë si autorët e printf, dhe pastaj dinamike të përshtatur të bazuar në të dhëna që janë dorëzuar, ose nga programues, ose nga njeriu i cili është në fakt bashkëveprojmë me programin. Pra, le të vërtetë të përpiqet tani për të bërë një konstruktet disa të tjera dhe të shohim nëse ne nuk mund të bëjë programet vetë më të sofistikuara. Pra, le të shkojnë përpara dhe në vend të shkrim këtë një nga zeroja, Unë jam duke shkuar për të shkuar në e sotme kod burim, dhe e gjithë kjo është në dispozicion në Sigurisht e faqen e internetit, dhe ju mund të drag and drop atë në mjedisin tuaj vijnë të premten një herë problemin set 1 ju jep udhëzime, ose ju mund të bëjë atë në rreshtin e komandave si mirë, por më shumë për të ardhur në p vendosur 1. Le të shohim se çfarë është në këtë program quajtur këtu, adder dot c. Tani unë e kam komentuar tashmë ajo, por çfarë ka të re? Në shikim të parë, çfarë linjë i kodit është absolutisht e re? Ndoshta jo krejtësisht panjohura tani. Audienca: [padëgjueshme] DAVID J. Malan: Yeah, kështu int x është e barabartë me të n. Ne kurrë nuk kemi parë ndonjë të këtij para, por int është ndoshta simbol për çfarë lloj të ndryshueshme, [? nga?] një numër të plotë. Pra, int për numër të plotë. Kjo është vetëm duke qenë më ngjeshur. x është vetëm arbitrare. x dhe y dhe z janë akoma shumë e arsyeshme për numrat, por në përgjithësi ne do të përdorim fjalë dikur Programet tona të merrni më komplekse. Get int, natyrisht, shumë si string get, është ndoshta do të merrni një int nga përdoruesit, dhe pastaj ne jemi duke shkuar në bëjë të njëjtën gjë me y. Dhe me sa duket, edhe pse kjo linjë e fundit, 24, duket më komplekse, ajo do të thotë shumën e këtij dhe kjo është kjo gjë tjetër. Dhe për qind njoftim i ndoshta tregon se çfarë? Çfarë roli ka qind Unë me sa duket shërbejnë? Kjo është vetëm placeholders. E drejtë? Përqindja s ishte për varg, për qind i është për numër të plotë. Nuk do të jetë për qind f për lundrues vlerë pikë, e cila është vetëm një numër me një pikë dhjetore. Me fjalë të tjera, një numër i vërtetë. Pra, le të vërtetë të hartojnë këtë program të vërtetë të shpejtë dhe të bëjnë kuçedër. Uh. Mundësi e mirë. Pra vini re këtu, gjithë këtë kohë përdoruesit e mia emër për këtë llogari është jharvard. Unë jam në CS50 IDE, aka IDE50. Dhe tani në ngjyrë blu këtu, është një përmendje, por nga mjedisi, e ku jam unë. Dhe në fakt, në qoftë se unë zoom deri në krye këtu, vini re se unë kam një IDE50 dhe unë shoh këtë fjalë, në qoftë se ju lloj i kthejnë kokën në anën, workspace. Në një fjalë, fakti se Unë jam duke parë Workspace Tilde slash do të thotë se në këtë tekst Mjedisi i bazuar komandë, Unë jam në tekst ekuivalentin e ky grafik dosje këtu. Kështu që, kur unë bëj dot plagë adder, është thënë se nuk di të frenojë për të bërë synuar kuçedër ndalesë. Unë nuk e di se çka do të thotë, por kjo është e keqe për disa arsye. Asnjë file apo directory e tillë është edhe më i qartë. Ku është ajo atëherë? Bazuar në ku unë klikuar për të hapur dosjen herët. Ku mund të jetë ai? Kjo është ndoshta në burim një w, për të mërkurën, dhe unë mund të shoh atë, me të vërtetë, në qoftë se unë të hapur se deri. Nuk është nepërkë dot c, por në ky mjedis tekst me bazë, përsëri, unë duhet të jetë super i qartë. Nëse unë dua të ndryshojë directories në burim një e mërkurë, unë duhet të shkruani, Hapësira cd një burim E mërkurë hyjnë dhe tani Ndryshimet e mia shpejtë për më jepni një sinjal vizuale që Unë jam, me të vërtetë, në vende të tjera në mjedisin tim, por tani unë mund të bëni adder, me sa duket për të punuar, dot çaj nëpërkë, më jepni një numër të plotë. Një. Dy. Shuma e një dhe dy është tre. Por në qoftë se unë nuk do të bashkëpunojnë, le të shohim se çfarë të merrni int bën. Më jepni një numër të plotë. Jo. Rigjykuar. OK. Gjobë. 50. 50. Dakord. Pra, ajo më në fund bashkëpunon. Dhe kjo është një nga më të funksionalitetin që këto funksione mund të ketë ndërtuar në për ju. Pra, brenda zbatimit i merrni int, çfarë programimit ndërtuar nga java e fundit është ndoshta në atje për të detyruar këtë sjellje të revizionit, rigjykuar, rigjykuar? Po, nuk ka ndoshta një lloj lak. Ajo do të duken sintaksore ndryshe nga blloqet e para së, por kjo është me të vërtetë çfarë është brenda file. Dhe në një kohë disa javë ne do të në fakt duken në bibliotekë CS50 si për atë që është brenda, por ka një lak imponuar pikërisht këtë. Le të luajë një budalla pak lojë këtu me këtë skedë. Gjendja zero dot c. Ne jemi vetëm duke shkuar për të në përgjithësi fillojë numërimi në zero. Dhe unë mbaj Scroll kaluarën disa gjëra në krye. Në blu këtu, demarkuar me të gjitha e këtyre yjeve dhe godet, ata prej jush që programit para, çfarë është ajo? Pse nuk kemi mbajtur skipping mbi të? Çfarë? Audienca: Kjo është një koment. DAVID J. Malan: Po. Është vetëm një koment. Kjo është një koment për njerëzit për të lexuar, që në rastin tonë, na tregon se çfarë emrin e file është, i cili shkroi atë, dhe atë që bën, kështu që ju nuk keni për të lexuar përmes kodit të dini se çfarë kjo skedë është mbi të gjitha. Është vetëm një përshkrim, por funksionalisht është e parëndësishme. Dhe unë mund edhe të fshini atë nga Dosja ime dhe nuk ka asnjë ndikim. Linjat lëng janë këto së pari dy këtu, tani. pavlefshëm int kryesor është ekuivalente e kur tona flamurin e gjelbër klikuar, kështu që ne jemi duke shkuar për të lënë që të jetë për sot, dhe ne do të kthehen, përfundimisht, si për atë int dhe i pavlefshëm janë, por tani, vini re atë që unë kam bërë edhe këtu, ju gjithashtu mund të, në qoftë se ju keni një në përputhje komentoni, nëse keni një mendim ju dëshironi të ndani për një linjë të veçantë të kodit, konventë në C është për të bërë plagë çaj, dhe pastaj disa fjalë ngjeshur, jo një fjali të plotë, përgjithësisht jo një paragraf, që vetëm shpjegon për ju, ose juaj TF, ose lexuesit apo kolegët e tjerë, Çfarë është duke bërë kodin tuaj. Pra, në vend se duhet të shikoni në këtë dhe të konkludoj nga linjat nëntë dhe 10, çfarë është kjo duke bërë, në përputhje tetë Unë vetëm të japë një koment për kërkojë nga shfrytëzuesi për një numër të plotë, atëherë unë nuk duhet të mendoj shumë e vështirë për çfarë linjat e nëntë dhe 10 janë. Unë vetëm e di se kjo është ajo kolektivisht ata po bëjnë. Si? E pra, këtu është të shpejtë. Ja marrjen e int. Dhe në bazë të mëparshme sjellje, ajo duket si get int është mjaft i zgjuar për të siguruar që njerëzore bashkëpunon dhe i jep atë nje numer i plote. Por tani ne e shohim këtë. Dhe kjo është e ngjashme me Scratch. Unë jam duke pretenduar se unë jam analizuar kontributin e përdoruesit, por disi të pasaktë. Dhe kjo me sa duket në C është se si ne shprehim një rast tjetër, një degë, një pirun në rrugë, por unë thonë disi të pasaktë. Çfarë është bug në këtë program? Rreth mbështetur më tej? Po. Audienca: [padëgjueshme] zero. DAVID J. Malan: Po. Pra, nëse unë lloji në zero, le të konsiderojmë pikërisht se rasti rasti, apo qoshe, nëse ju do. Pra, nëse unë lloji në zero, të cilat i blloqe do të duket të rrëmbyer atë? If apo tjetër? Tjetër, dhe kjo do të thotë, ju kap një numër negativ. Dhe me të vërtetë, zero nuk është menduar të jetë pozitiv ose negativ, dhe kështu që do të jetë gabimisht. Kjo do të jetë një bug. Pra, si mund ta fix this? Dikush që nuk ka programuar më parë? A ju want-- Audienca: [padëgjueshme] DAVID J. Malan: retracting? Audienca: [padëgjueshme] DAVID J. Malan: Oh, ju keni? Dikush që nuk ka programuar më parë. Dëshironi të provoni dorën tuaj në kjo, në këmisha e kuqe? Eja up. Oh yeah, eja lart, në qoftë se ju nuk do mend. Pra, kurrë nuk ka programuar para, çfarë është emri juaj? Lauren: Lauren. DAVID J. Malan: Lauren, të gjithë të drejtë. Pra, të rregulluar këtë bug për ne. Ju nuk keni parë C, me sa duket, dhe ndoshta asnjë gjuhë tjetër. Pra, të rregulluar këtë program për ne. Nice to meet ya. Nuk ka presion. Lauren: Po. DAVID J. Malan: Por, përsëri, në qoftë se kjo rrezikoj shkon sipas planit, takeaway këtu do të të jetë, vetëm një herë, për të filluar në njoftim modelet dhe konkludoj nga sintaksë ekzistuese si tjetër ju mund të shprehë veten, nuk ka pun me qëllim, në mënyrë që për të kapur disa skenar shtesë. Pra, ne jemi duke thënë tjetër në qoftë se. printf, mirë. Dhe vini re me CS50 IDE, dhe IDE frankly-- qëndron për Integruar Zhvillimi Mjedisit. Kjo është vetëm një mënyrë e sofistikuar për të thënë një program që ju ndihmon të programit. Ai e bën përdorues miqësore gjëra të tilla si kur ju shkruani një kllapa, ajo automatikisht ju jep të tjera. Supozimi është se ju jeni përfundimisht do të duan të tipit që, dhe ajo gjithashtu e bën atë me citate. Kështu që unë doja linjë 23. 99% e rrugës atje. Dikush duan të bie në me një tip? Kam dëgjuar pikëpresje nga publiku. Të mirë. Kështu që kompleton atë. Dhe tani, unë vetëm duhet pak tmerr me linjë 21. Si duam të shprehim kjo? Çfarë pyetje duam për të kërkuar, mendoni ju? Pra, më parë ne ngremë pyetjen: nëse n është më i madh se zero, e bëjnë këtë. Tjetër, të bëjë atë. Pra, ne duhet të zgjidhni një pyetje të pyesni këtu. Audienca: [padëgjueshme] DAVID J. Malan: Mirë. Pra, nëse n është e barabartë me zero. Shkëlqyer. Pra, le të ndalemi këtu. Thank you so much për braving këtë. Më lejoni t'ju jap një pak të merituar top stresi, ndoshta aty. Pra, ne jemi pothuajse atje. Në fakt, Lauren, në qoftë se ju nuk e bëni Mendja, më lejoni të bëj një shkulje këtu, vetëm që të jenë në përputhje edhe me ajo që pamë në Scratch, çfarë nuk dua të bëj me linjat 21 dhe 24, vetëm bazuar përsëri se si ne e bëmë këtë në Scratch, ndoshta? Audienca: Leviz atë. DAVID J. Malan: Yeah, lëvizin atë lart. Pra, kushti tjetër, i treti, apo katërt, apo të pestë, apo degë përfundimtar, duhet me të vërtetë të vijnë më pas, dhe kjo është vetëm nga konventa, vetëm për shkak se në qoftë se ju do. Kështu që unë kam nevojë për të bërë këtë shkulje. Dhe unë duhet të vënë My mbajtëse kaçurrel përsëri këtu. Dhe tani, ky program do të përpilojë. Ne jemi kaq afër, por ka një bug shumë, shumë delikate. Le të shohim se çfarë ndodh. Së pari, më lejoni të shkoj përpara dhe të zoom jashtë. Unë jam duke shkuar për të shkuar përpara dhe shkruani bëjnë kusht zero. Oh, kam gënjyer. Tani është përpilues në fakt goxha i zgjuar. Dhe unë nuk e kuptojnë të vërtetë është mesazh gabimi. Duke përdorur rezultatin e një detyre si kusht pa kllapa, është me sa duket e keqe. Por çfarë do të thotë? E pra përsëri, duke kërkuar për modele në kodin që kemi parë më parë, ajo që është linja e 17 të vërtetë duke bërë, edhe pse Lauren destinuara pak ndryshe? Po. Audienca: [padëgjueshme] DAVID J. Malan: Po. Pra mos harroni shenjën e barazimit, me sa duket siç e kemi përdorur atë më parë, nuk është e barabartë. Detyrë e saj, nga e djathta në të majtë. Pra, të vijë 17 në këtë moment është një kusht, dhe kjo është ekzekutimin kodin brenda kllapave, por kur se kodi ekzekuton, çfarë po ndodh me vlerën e zero? Çfarë po ndodh me vlerën e n? Bëhet zero. Pra, nëse n po bëhet zero, dhe përsëri, si në javën e kaluar, ne përgjithësi themi se zero është i rremë dhe njëra është e vërtetë, ose po është një dhe nuk është zero. Aq e vërtetë dhe të rreme, një dhe 0. Nëse n si i linjës 17 ka qenë duke pasur parasysh vlerën 0, është zero e vërtetë? Jo. Nga përkufizimi, zero është e rreme. Kjo është konventa ne jemi do të kapem për të lëvizur përpara. Pra, do linjat 18, 19, dhe 20 zbatohen kurrë tani, logjikisht? Ato nuk mund. Pra, ne ngremë pyetjen por jo mjaft saktësisht, dhe ju nuk do të dinë këtë nëse ju keni parë atë, zgjidhje në C është kur ju doni të shprehin barazia, ju thoni barabartë barabartë. Pra shenjë të barabartë është përdorur tashmë me detyrë, nga e djathta në të majtë. Është e barabartë me të barabartë do të thotë është e barabartë. Dhe në qoftë se jeni të vërtetë dëshironi mendjen tuaj të jetë vendosur, në JavaScript dhe PHP, ka është e barabartë me të barabartë të barabartë, të cilat do të thotë diçka tjetër krejt, por ne do të merrni për të që para se të gjatë. Pra, kjo është një fix thjeshtë, por të kuptojë super të lehtë për të bërë këtë gabim, dhe pastaj pyes veten dhe lufta për minuta, nëse jo një orë, pse është kodi im nuk ekzekutimin si kam ndërmend? Kjo është për shkak se ju nuk e tregoni kjo pikërisht atë që ju thotë. Kështu që ishte pothuajse të përsosur, dhe ajo ishte e madhe që ne stumbled nëpër këto dy Vogël gjëra sepse tani në qoftë se ne të rregulluar ato, dhe unë do të bëjë kusht zero dot çaj kusht zero, Unë do të doja një numër të plotë, ju lutem. Le të shohim. Jo. Ajo do të detyrojë mua për të bërë atë. Pra, 42. I kap një numër pozitiv. Deri tani si mund të provojë ky program i saktë? Nëse ju jeni një matematikan, ju nuk mund të me të vërtetë të provuar kjo nga gjykimi dhe gabim, e drejtë? Ju nuk mund vetëm dëshmi nga shembull, por të paktën si një programues ne nuk jemi do të përpiqen për të provuar për tani se kjo është në fakt i saktë, por unë duhet ndoshta testuar disa raste përfaqësuese. Unë kam testuar 42. Unë mund të provuar 43. Unë mund të provuar 44. Testi 45. E drejtë? Por unë mund të bëjë këtë një kohë vërtet të gjatë. Çfarë do të jetë disa më shumë raste interesante për të provoni? Audienca: [padëgjueshme] zero. DAVID J. Malan: Pra, zero. Sigurisht. Dhe të mirë, ne kemi marrë atë në këtë kohë, në sajë të kodit të ri lauren. Çfarë është një tjetër rast i mirë për të provoni? Audienca: një Negativ. DAVID J. Malan: një Negativ, dhe ndoshta diçka pak më të mëdha, kështu që ndoshta negative 42, por në përgjithësi, kur testimi programet tuaja duke shkuar përpara, ju jeni do të doni të mendoni për veten, si ajo që janë rastet themelore ndryshme. Dhe unë guxoj të them një rast negativ, një rast pozitiv, dhe një rast zero shumë e shumë raunde këto jashtë. Le të shikojmë në një variant të kësaj pse. Kushtet e një. Kjo është një zgjidhje e drejtë këtu, kështu që ju do të shihni dy dhe në internet, në qoftë se ju ecni nëpër walkthroughs, do të në përgjithësi ardhura këto hap pas hapi deri sa ne marrë saktësisht qasjen e duhur. Po në qoftë se ne të kërkuar për të pyetur dy pyetje në të njëjtën kohë? Më lejoni të hapur këtë vend. Jo-switch, për arsye ne do të shohim një tjetër kohë. Çfarë ka të re sintaksore këtu? Unë jam duke luajtur një lojë ku kompjuteri është thënë mua, jepni një numër të plotë ndërmjet një dhe 10, dhe atëherë unë jam duke gjykuar kontributin e përdoruesit. Në anglisht, në bazë të kodin ju shihni këtu në ngjyrë blu, çfarë është ky program duke bërë? Audienca: [padëgjueshme] kap një numër i madh apo i vogël. DAVID J. Malan: Po. Kjo është vetëm gjykimin nëse I kap një të madh, apo të mesme, ose numër i vogël i bazuar në një shumë përkufizim arbitrar e vogla, të mesme, dhe të mëdha këtu, por njoftim Sintaksa që është e re është kjo. Nuk ka më pak se ose e barabartë me int nënshkruajë ose më e madhe se ose e barabartë me nënshkruajë, ku njëri është mbi tjetrën, që ju mund të shprehin në si Microsoft Word. Pra, në një gjuhë programimi ju në mënyrë tipike vetëm të bëjë dy karaktere, njëri pas tjetrit. Dhe çfarë e bën këtë me siguri përfaqësojnë, simbol të ampersand. Audienca: [padëgjueshme] DAVID J. Malan: Po. Kjo thjesht do të thotë dhe për shkak të rezulton se autorët e C përdorur një simbol të vetëm, që ju mund të mendoni do të jetë e përkryer për nocionin e dhe, është përdorur tashmë, simbol kështu simbol fakt kap rastin ne fakt duan. Pra, tani le të pengohen të gjithë dy gjëra. Më lejoni të shkoj përpara dhe të hapur një të tillë. Diçka që është pak shqetësuese. Pasaktësitë dot c. Më lejoni të prezantoj dy gjëra këtu. Një, njoftim se ne mund të bëjmë math, si vetëm si më parë kur ne e bëmë plus nga dy numra, x dhe y. Çfarë është ky program me sa duket duke bërë? Unë nuk kam komentuar atë ende, dhe unë e kam futur për qind f, por unë shpejt thënë më parë f qind do të thotë pika pluskuese vlera, e cila është një numër reale. Diçka me një decimal të pikë, e cila nuk është një numër të plotë. Çfarë mendoni ky program është duke u përpjekur për të treguar mua në ekran? Po? Audienca: Rezultati i një mbi 10. DAVID J. Malan: Po. Çfarë është rezultat i një të ndarë me 10. E drejtë, sepse të gjithë ju kanë ndoshta rritur duke e ditur se njëri mbi 10 është ajo? Po, kjo është vetëm 1/10 apo 0.1. E drejtë? Pra, le të shohim se çfarë kjo në fakt është. Pra më lejoni të shkoj përpara dhe për të shpëtuar këtë. Më lejoni të shkoj këtu poshtë. Bëni pasaktësi dot plagë pasaktësi, dhe njoftim, gjithashtu, në një mjedis Linux, ju nuk e bëni duhet të shkruani jashtë pasaktësi dhe të marrin gjatë gjithë ditës. Ajo në përgjithësi, në qoftë se ju goditi Tab, ajo do të përfundojë mendimin tuaj për ju, bazuar në fjalët që janë në dispozicion në dosjen aktuale. OK. Pra, keni qenë të drejtë. Një ndarë nga 10 është, në fakt, 0.1. Por unë jam pak kurioz. Dhe kjo rezulton printf mbështet disa karakteristika ku ju mund të specifikoni më shumë se numri parazgjedhur i pikave dhjetore. Pra, nëse unë dua të shoh 10 decimal pikë unë mund të bëni për qind, për simbolin placeholder, dot 10 për, më jep 10 pikë dhjetore, dhe pastaj ende pikë lundrues vlera, dhe, si një mënjanë, çfarë është kjo backslash n me sa duket do të vazhdojmë të përdorim? Ajo rezulton se kjo është një Simbol për një linjë të re. Kjo është mënyrë shumë e qartë për të thënë në kompjuter, lëvizur kursorin për të ardhshëm Linja pasi ju jeni bërë. Dhe ne do të shohim se çfarë ndodh kur ne nuk e bëjmë atë. Më lejoni të bëj përpiluar pasaktësi. Tani dot çaj pasaktësi. OK. Ende e drejtë. Një ndarë nga 10. Tani unë jam duke marrë një pak kurioz, pse. Çka nëse unë shoh 20 decimal vë në dukje, të përpiluar, përsëritje, dhe si një mënjanë për shpejtësi, ju gjithashtu mund të përdorni up tuaj dhe poshtë shigjeta për të lëvizni nëpër historinë tuaj, kështu që ju nuk keni për të mbajtur retyping këto komanda, të hyjë. Huh. Unë nuk e kam mësuar që në klasën e shkollës. Të gjithë të drejtë, kështu që le të më shih si 29 vende jashtë. Ndoshta kjo është vetëm një pikë për shans. Ndoshta kompjuteri im është duke vepruar pazakontë. Kjo nuk është një gjë, e drejtë? Është bërë diçka deterministically. Pra, të bëjë pasaktësi. OK, kjo është messed up. Pra, çfarë po ndodh? Pra, me sa duket tuaj Mësuesi ka qenë i shtrirë për ju të gjithë këtë kohë për arsye që ne do të shohim para se të gjatë. Por le të përfundojë me një program tjetër. Kjo është një programe pak dikush ka shkruar disa vite më parë, dhe kjo është në fakt pjesë e një konkursi. Askush në fakt shkruan kodin si kjo, dhe në qoftë se ju bëni, kjo është stilistikisht një problem. Por njerëzit e bëjnë këtë për të drejtat e bragging. Për të shkruar më konfuze kërkim program që megjithatë ka diçka interesante. Dhe vini re mendova që ne do të lënë në sot, para se Colton na luan këtu, është për të drejtuar këtë program, i cili, edhe në vetëm duke përdorur C në këtë bazuar text- Mjedisi, na jep këtë. Dammit. [Qeshura] Stand by. [Padëgjueshme] c dash l m. Ju jeni duke shkuar për të parë magjike yshtje se ne do të shohim para se të gjatë. [Padëgjueshme] Të gjithë të drejtë. Dhe tani ju mund edhe bëjë gjëra të tilla si kjo. Kjo ishte. Për CS50 ne, do të shihni të premten. [Muzika] [Duartrokitje]