[Muzika] SPEAKER 1: Kjo është CS50 dhe ky është fillimi i javës së dytë. Pra, le të drejtë pikiatë në diçka që është buggy, kështu që të flasin. Pra, këtu është CS50 IDE dhe unë kam u tërhoq deri paraprakisht këtë screen-- mallkim ajo. Vigjilent spoiler. Në rregull. Unë e kam tërhequr deri këtë ekran këtu, e cila ka një program shumë të thjeshtë. Nëse ne lëvizni poshtë, më e kjo është vetëm komente, por këtu në linjat 13 përmes 17 ne kemi një program. Është e sintaksore të vlefshme, që do të thotë në qoftë se Unë përpiloj atë, ajo do të përpilojë dhe të drejtuar, por kjo është buggy. Ky program pretendon në komentet deri të lartë se ajo duhet të shtypura 10 yje, por kjo nuk ka. Dhe bazuar në përvojën tuaj, ose së shpejti do të jetë përvojë me C, mund të logjikisht dalloj pse kjo është, në fakt, buggy? Po? Audienca: Ajo shkon nga zero në 10. Kjo është 11 përsëritje. SPEAKER 1: Po. Pra, kjo po ndodh nga zero lart përmes dhe e barabarte me 10, e cila natyrisht është 11 përsëritje. Pra, ajo do të shtypura, në të vërtetë, 11 yjet. Pra, konventa shkenca kompjuterike në gjuhët programuese është, me të vërtetë, vetëm për të të fillojë numërimi në zero, por numërimin deri në, por jo përmes Vlera që ju në të vërtetë intereson. Tani, kjo është një gjë që merr pak duke u përdorur për të dhe madje Scratch, i projektuar siç është për programuesit apo jo mos kompjuter shkencëtarët dhe për fëmijët kryesisht, është projektuar që të ketë ju filloni duke numëruar në përgjithësi në një. Dhe kjo është në rregull. Ju mund absolutisht të fillojë numërimi në një nëse kjo është më e rehatshme. Dhe numërimin deri në dhe përmes 10, por ju do të kuptojë veçanërisht këtë javë dhe përtej kësaj vetëm në mënyrë të shumë gjëra në programimin marrin se 0 është parë shifror me të cilën ju numërimin, se ju jeni do të gjeni më të lehtë vetëm për të marrë në këtë zakon të filluar nga zero dhe numërimi deri në vlerën ju intereson tani nga të shkojnë. Pra, që ka fiksuar se. Ne kemi ndryshuar më pak se ose e është e barabartë për të vetëm më pak se. Le të marrin një vështrim në një shembull të dytë këtu. Pra, ky program gjithashtu pretendon në saj të komenton up lartë se ajo duhet të shtypura dhjetë yjet, por kjo nuk ka. Çfarë është bug këtu? Pra, what-- dhe të vjen keq, le të jetë i qartë. 10 yjet. Një për rresht, por kjo nuk ka. Pra, në fakt, më lejoni të shkoj përpara dhe të përpilojnë kjo për shkak se ajo është pak më pak të qartë të bazuar në këtë përshkrim. Më lejoni të shkoj në directory tonë burimor. Bëni një buggy dot plagë, një buggy. OK, unë shoh 11 yjet, të cilat është ende problematike, por ata janë edhe të gjitha në një linjë. Çfarë është problemi këtu? Po. Audienca: [padëgjueshme]. SPEAKER 1: Po. Pra, kjo është një finesë që ju mund të kujtojnë mua duke të kujtuar të shkurtër. Edhe pse çdo gjë duket mjaft, dhe është e prerë bukur, dhe kjo lloj i duket Scratch-si në atë linjë 16 dhe 17 janë, në të vërtetë, prerë në atë për lak. Kjo është jomaterial. Kompjuteri nuk e di ose shihni hapësirë ​​të bardhë. Hapësira e bardhë është vetëm për ne njerëzit, stilistikisht. Kompjuteri nuk e di kur ju keni formatimin e teksteve kaçurrel, i cili do me të vërtetë, rregulluar këtë problem. Pra, në qoftë se ne fakt shkoi në dhe vënë në mënyrë të qartë në këto formatimin e teksteve kaçurrel që do të rregullojmë këtë problem nga duke e bërë të qartë për të përpiluesit se unë në fakt duan për të ekzekutuar dy rreshta të kodit përsëri, dhe përsëri, dhe përsëri. Por çfarë është shpjegimi themelor? E drejtë? Ne nuk kemi nevojë në mënyrë rigoroze kaçurrel formatimin e teksteve gjatë gjithë kohës, edhe pse kjo është ndoshta më e mirë praktikë për të marrë në atë zakon gjithsesi edhe pse ajo shton dy karaktere në kodin tuaj. pse? Audienca: [padëgjueshme]? SPEAKER 1: Po kështu që është një tjetër zgjidhje krejt. E drejtë? Sidomos në qoftë se në shikim të parë ju nuk e bëni të vërtetë e vlerësojmë se çfarë po ndodh. E pra, me siguri ne mund të vetëm të bëjë dy gjëra në të njëjtën kohë dhe vetëm të shmangur problemin krejt. Dhe kjo është në rregull, por tani, për qëllime të sotme, çfarë është shpjegimi për bug? Pse ishin të gjithë ata yje në një rresht? Po? Audienca: Duket se në qoftë se ju keni një linjë të kodit, ju mund ta bëjë këtë pa ato. SPEAKER 1: Pikërisht. Kjo është vetëm një konventë njerëzor. Njerëzit e kuptojnë se kjo është një pak i bezdisshëm apo të lodhshme që të ketë për të vënë formatimin e teksteve kaçurrel gjithë e kohës në qoftë se të gjithë ju doni të bëni është ekzekutuar një linjë të kodit. Pra, njerëzit vendosën disa kohë më parë se kjo është në rregull. Nëse ju doni të vënë të gjitha lak tuaj në vetëm atë një rresht si kjo, kjo është në rregull me të vetme pikëpresje në fund. Por ju mund të bëni vetëm një i tillë Linja pa formatimin e teksteve kaçurrel. Pra, kur udhëzuesin stil CS50 si do të ju pikë në: ju do të shihni se në përgjithësi ajo është zakon i mirë për të marrë në këtë derisa ju jeni largim mjaft e rehatshme nga këto lloje të konventave dhe duke bërë gjë tuaj. Për sa kohë që ju jeni të vetë qëndrueshme. Dhe ne do të flasim më shumë për stil pak më vonë sot. Pra, më lejoni të hapur një program tjetër. Sigurisht, ne duhet rregulluar këtë 10 si edhe. Më lejoni të shkoj përpara dhe të shkruani një e vërtetë Programi i shpejtë se unë do të thërrasë, le të themi, loop dot C. Pra, loop dot C. Dhe në lak dot C Unë do të ketë, përfshijnë I standarde / O dot H int pavlefshme kryesore. Dhe tani le të vetëm të bëjë, në të vërtetë, një lak. Pra, 4 int unë merr zero. Unë është më pak se, të themi, 50. Unë plus, plus. Dhe pastaj në këtu le të të shkojnë përpara dhe të bëjë të shtypura F. Dhe pastaj unë dua të shtypura I dhe një linjë e re, pikëpresje. Dhe kjo duhet të shtypura të gjithë numrat nga zero deri në 50? Një kokë Disa nyje. Disa nos. Çfarë është bug tashmë? Çfarë është gabim lehtë kam bërë? Po. Audienca: [padëgjueshme]. SPEAKER 1: Po. Pra, edhe pse duket si kjo është ajo që kam ndërmend, kujtojnë se unë është edhe vetëm një karakter ASCII. Pra, në qoftë se unë them, print "I." Është fjalë për fjalë do për të shtypur I. Pra, në qoftë se unë dua të plug-in një placeholder Vlera Unë në fakt duhet ta bëni këtë dhe pastaj plug-në Vlera e I dinamike. Përndryshe unë jam vetëm duke shkuar për të merrni 50 I në ekran. Pra, më lejoni të shkoj përpara dhe bëjnë këtë lak, e drejtuar atë, dhe, në të vërtetë, ne kemi të gjithë rruga deri me 49. Dhe në qoftë se unë lëviz prapa në kohë unë shoh numri zero në fillim. E pra, çfarë nëse unë lloj vidhos deri? Çfarë po e bëra këtë? Vetëm për shkak se unë nuk jam duke menduar. Çfarë është ky program. Pasi të jeni hartuar dhe drejtuar, do të bëni logjikisht? Audienca: Asgjë. SPEAKER 1: Asgjë. Pse eshte ajo? Audienca: Unë është projektuar për zero. Pra, gjendja është e rreme. SPEAKER 1: Po, pikërisht. Të gjitha kodi është e saktë, sintaksore. Kjo do të përpilojnë, kjo Kodi do të kandidojë, por kjo nuk është do të bëjë asgjë të dobishme sepse unë nisja unë në zero. Ne atëherë kontrolloni, është më i madh se unë 50? Natyrisht, jo, kjo nuk është. Pra lak nuk ekzekuton fare. Çfarë nëse bëjmë diçka pak më shumë i pamatur? Pra, çfarë nëse ne bëjmë si int kam merr zero. Dhe tani më lejoni të përdorin ndërsa loop, i cili ishte një tjetër kusht. Dhe, ndërsa unë them, ndërsa unë është më e madhe se ose te barabarte me zero, dhe më pas në këtu I të shkojnë përpara dhe ruani skedarin, të bëjë loop. Dhe unë jam gati për të drejtuar atë. Çfarë jam unë do të shoh këtë herë me një lak, ndërsa? Po. Audienca: një lak të pafund? SPEAKER 1: një lak të pafund? Po, dhe pse? Audienca: Për shkak se ajo është gjithmonë zero. SPEAKER 1: Po. Pra, unë është nisur si zero. Sigurisht unë është gjithmonë më i madh se ose e barabartë me 0, si rezultat. Pra, unë jam vetëm duke shkuar për të shohin këtë pafundësisht. Dhe tani, kjo ka ardhur një herë ose dy herë në kokat e kursit së. Çfarë ndodh kur ju kanë një lak pafund? Audienca: Kontrolli C. SPEAKER 1: Po. Pra Kontrolli C përfundimisht do të përgjigjet. Për fat të keq, ne kemi shtypur miliona e miliona zero tashmë dhe kështu kompjuteri ka lloj i mori para meje. Pra, ajo do të injorojë mua për pak. Por nëse ju vetëm goditi kontroll C pak herë në tuaj Mac apo PC tastierë, përfundimisht duhet, të vërtetë, të përfundojë. Dhe nëse jo, ne do të ju tregojmë disa Teknikat para se të gjatë, ku ju në fakt mund të vrasin me forcë programe, ashtu si në Windows dhe Mac OS, nëse duhet të jetë. Por le të provoni diçka tjetër. Le të vërtetë të ardhura I. A kjo ende do të jetë i pafund? Më lejoni të drejtuar këtë. Dhe tani ju mund të lloj të parë se çfarë po ndodh. Kjo, gjithashtu, është një lak pafund. Por kjo është pak e një pyetje mashtrim. Është kjo do të shtypura numrat e përgjithmonë? Audienca: Jo. SPEAKER 1: Jo. Përse? Kam dëgjuar disa nos mbi këtu. Someone-- Po. Audienca: Ju nuk keni të mjaftueshme bit me të vërtetë do të mbajë. SPEAKER 1: Në rregull. Kështu që unë nuk kam mjaft bit për të do të mbajë. Pra, çfarë do të ndodhë? Është vetëm do të ndalet? Audienca: Në disa pika ajo do të mbyllet the-- SPEAKER 1: Kjo do të mbyllen lak poshtë, por pse? Çfarë do të ndodhë në shumë fundi i kufijve të saj? Po? Audienca: Ajo do të ciklit përsëri në numrat negative. SPEAKER 1: Për numrat negative, ose në qoftë se ne ishim vetëm trajtimin pozitiv, zero paktën. Pra, po, absolutisht. Kujtojnë se pamë për herë të fundit që në qoftë se ju ardhura bit tuaj një shumë herë, dhe ju atje Fore overflow kapaciteti i int tuaj apo çfarëdo lloji të dhënave është, ju jeni do të përfundojë rreth, ndoshta, dy numra negative. Ose në qoftë se ju keni të specifikoni se juaj varg duhet të jetë vetëm pozitiv, që ju mund të bëni, por ne nuk e kemi parë atë ende, ju mund të përfundojë të paktën mbrapa në zero. Edhe pse, në fakt po. Në këtë rast, negative numra, në të cilin rast lak do të përfundojë sepse unë nuk është, në fakt, më e madhe se ose e barabartë me zero nëse është negativ. Pra, për fat të keq, si gjatë do të duhet të presim? Tani për tani ne jemi deri në çfarë, 2 milionë-ish? Ne jemi si 2 miliard, ne do të duhet të presin deri sa ne mund të vërtetë shohim këtë simptomë. Por ne mund të shohim atë një pak më të shpejtë, maybe-- le të shohim nëse ne mund të ndërpresë. Eja. Edhe menutë janë duke u shfaqur ngadalë. Në rregull. Pra, ne do të kthehen në atë para se të gjatë. Kjo është një e mirë time-- mallkonte atë, puppies. Kjo është një kohë e mirë për disa njoftime. Pra, në qoftë se ju mund të dëshironi për t'u angazhuar në YHack, e cila është një ngjarje qenit sponsorizuar nga miqtë tanë në Yale. Dhe, vërtet, disa nga kursi-së NGP në Yale janë të përfshirë me këtë. YHack është një ndërkombëtar hack-a-thon organizuar nga dhe mbajtur në Yale, duke sjellë së bashku 1,500 si hakerat mendje dhe creatives gjitha bota. Nëse kjo është me interes, hidhini një sy këtu. Nëse kjo është shumë shkurtimisht mbi ekran, hidhini një sy në sllajde e sotme për URL për yhack.org. Pra, edhe disa njoftime të shpejtë. Pra, zyrtarisht seksionet do të fillojë javën e ardhshme të dy këtu dhe New Haven. Mbani në mend se ju do të marrë një email më vonë këtë fundjavë më shumë gjasa. Ajo merr një kohë të gjatë për CS50 në seksion, dhënë të gjithë njerëzve në klasë dhe të gjithë lëvizin përreth. Dhe të gjithë shokët e mësimdhënies ' oraret janë gjithashtu ende konsoliduar, por qëndrojnë tuned për një e-mail dhe nëse ka nevojë të, ju mund të ri-seksion atje pas. Study.cs50.net. Pra, edhe në qoftë se ju jeni një vijuesi konstante në seksione, të kuptojnë se pothuajse të gjithë i burimeve ne i përdorim në seksione janë në dispozicion të publikut në CS50 Të studiuar në këtë URL këtu. Pra, në qoftë se ju do të ndonjëherë të donte për të ri shqyrtim material nga seksioni, ose lexuar përpara, ose ju nuk mund të bëjë atë disa javë, të kuptojë se slides mostër, dhe problemet, dhe përkufizimet, dhe më shumë janë të gjitha atje. Orari i punës rifillojnë sot, dhe nesër, dhe të mërkurën, dhe e enjte kontrolloni sigurisht së Faqja e internetit për orarin. Dhe gjithashtu, tani nisjen sot është CS50 Diskutoni. Pra, në qoftë se dhe kur ju keni pyetje për njëri-tjetrin apo për stafin të kursit, dhe në përgjithësi janë duke punuar në disa grup problemit, e kupton se ju nuk e bëni domosdoshmërisht duhet të kthehet në njeri tjetër ju. Nëse nuk ka një atje, ju mund të të arritur deri te ne dhe shokët e klasës internet nëpërmjet CS50 Diskutoni. Pra, ky është një diskutim Bordi për kursin, dhe të kuptojë se kjo është ndoshta më të mirë vendosni të fillojë kur ju keni Pyetjet kur jashtë orarit të punës veçanërisht. Dreka do të fillojnë deri këtë javë shumë. Në Zjarri dhe Ice [Padëgjueshme] në New Haven. Hidhni një sy në Sigurisht së faqen e internetit në mënyrë që të RSVP. Vijë të parë, së pari të shërbejë për atë. Nëse ju nuk merrni në këtë javë ne do të bëjmë këto më çdo të premte gjatë afatit. OK, dhe tani një fjalë në lidhje me nota. Veçanërisht për sa kemi hyrë problemit vendosur një, e cila është jashtë kësaj jave, dhe problemi të vendosur dy dhe më pas. Si mund të shkoni në lidhje me vlerësimin grupe P dhe vlerësimin e cilësisë e saj? Pra, kjo është katër akseve që ne i përdorim në CS50, dhe ata janë këto katër këtu. Fushëveprimi, e cila kap në një numerike Baza se sa shumë e caktuar P e keni trajtuar. Është korrespondon afërsisht me përpjekje, dhe kjo është mënyra jonë për kapjen e ke tentuar gjysma e P vendosur, të gjitha të setit P. Kjo është një e lehtë për të marrë të përsosur rezultatet në qoftë se ju bëni, me të vërtetë, provoni çdo aspekt të caktuar P. Pra, mbani në mend. Saktësia është pikërisht kjo. A punën tuaj kodin si specifikimet dhe si zgjidhje të mostrës shtabet ' sugjerojnë se kodi juaj duhet, në fakt, të punojnë. Kontrolloni 50, në qoftë se ju nuk e keni takuar atë ende është në P vendosur një specifikim dhe do të në përgjithësi ju jap Po / Jo përgjigje nëse kodi juaj është e saktë. Të paktën aq sa ne jemi duke shkuar për të vlerësuar atë në bazë të testeve që ne të drejtuar në kuadër të këtij programi. Dizajni është shumë më subjektiv. Kjo është se sa mirë i shkruar është kodi juaj. Dhe kjo është diçka që ju do të merrni më të mirë në kalimin e kohës, dhe kjo është diçka që ne do të sigurojnë reagime më cilësor në. Dhe me dashje unë mund do të thotë para se të gjatë ju mund të joshet në disa P të vendosur për të bërë diçka loopingly, por që të ketë ndoshta tre, ose katër, ose pesë sythe mbivendosur parat apo duke mbivendosur sythe. Që në përgjithësi duhet të fillojë të bëjë që ju servilizëm dhe do të jetë përgjithësisht konsiderohet Dizajni i keq. Dhe ju do të fillojnë për të parë në klasë dhe nga të klasës mënyra të mira të të bërit të gjërave, mënyra e keqe e të bërit të gjërave që mund të të gjitha të jetë e saktë, por jo domosdoshmërisht projektuar mirë. Ashtu si të shkruajë një ese. Ju mund të jetë në gjendje për të vënë fjalët në një faqe që janë gramatikisht korrekte, por ese ose Teza ata janë në është vetëm plotësisht inkoherente ose unpersuasive. Dhe kështu që mund të jetë analog në Bota shkrim i dizajnit të keq apo të mirë. Dhe stil, gjithashtu, është mjaft subjektive. Por të paktën presim qëndrueshmëri. Kjo është se si mjaft është kodi juaj. Janë prerë gjërat e bukur? Janë variabla tuaj me emrin dhe / A janë të gjitha i kllapa tuaja dhe formatimin e teksteve kaçurrel një linjë si ata duhet të jenë? Ne nuk kemi një udhëzues stil CS50 si set problemi do të ju pikë në. Ata janë më të rehatshme mirëpritur të humbur nga se aq kohë sa ju jeni vetë qëndrueshme. Dhe kjo, gjithashtu, është një mësim ne do të përforcuar në seksionin. Pra, në qoftë se e gjithë kjo ishte pak shpejtë, realizojnë set P dhe seksione do të shkojnë në thellësi më shumë para se të gjatë. Por në përgjithësi ne kemi shumë pak kova për CS50. Rezultatet më të mira në përgjithësi janë në një shkallë të nga nje deri me tre, ose një deri në pesë. Ne jemi literally-- dhe unë nuk mund të them kjo e mjaftueshme në javën e parë. Tre është e mirë. Pra, edhe pse, po, tre nga e pesë normalisht, matematikisht, mund të jetë një 60 për qind ose si një minus D. Tre është, në fakt, mirë. Dhe, në fakt, ne presim shumica e studentëve në klasë të nisem termin rreth twos, dhe threes, dhe katër këmbët. Ndoshta jo aq shumë five. Jo shumë ato. Por në përgjithësi të fillojë në vend i ëmbël që në kurbën e në mënyrë që si kohë zhvillohet, ka në fakt vend për, dhe mundësitë për përparimin e sipërme. Pra, ju lutem mos barazohet me tre 60%. Është shumë më tepër abstrakte se kaq. Formula me të cilën ne llogarisim notat është peshuar si më poshtë. Korrektësia është me vlerë më. Dizajni është me vlerë më pak. Style është me vlerë më pak. Dhe kjo në përgjithësi kap sasinë e kohës që shkon në marrjen e çdo prej këtyre akseve vetëm e drejtë. Stil është super i lehtë, duhet të jetë super të shpejtë, por kjo është një zakon i lehtë për të marrë dembel rreth. Korrektësi mund të marrë ju shumicën e kohës. Chasing poshtë disa mund bug marrë atë orë shtesë apo më shumë, dhe kështu, duke shënuar në fund të fundit kap atë. Dhe kështu, tani një fjalë më serioze. Që CS50 ka të dallim, për të mirë ose për keq, për të qenë ndoshta më mirë i njohur me çështjet e akademik ndershmëri se më çdo kurs tjetër. Dhe në të vërtetë, kjo është për të njohurive të mia që ne dërgojë më shumë studentë, për fat të keq, për qëllime disiplinore çdo vit si rezultat i kësaj. Kështu që, në interes të plotë zbulimi, le të flasim shkurtimisht në lidhje me atë që ndodh në CS50, dhe çfarë ju mund të bëjë, dhe atë që ju mund të jenë të ndërgjegjshëm. Pra, këtu që nga viti 2007, kur Unë trashëguar kursin, është numri i rasteve Ad Bordit. Ad Board është disiplinor Harvardit trupit, apo tani Këshilltari Honor, për të cilat raste i referohen kur Studentët bëni diçka që sigurisht të plani mësimor i konsideron të paarsyeshme. Nuk ka asnjë model i vërtetë këtu, unë do të thoja. Ai luhatet mbi të vjet, por në përgjithësi kjo është numri i raste që janë përmendur. Numri i nxënësve që janë përfshirë? Ajo gjithashtu ndryshon. Në mënyrë tipike, vitin e kaluar për shembull, 29 studentë në Harvard ishin Ad hipi, kështu që të flasin. 29 prej tyre studentëve aktualë, Dy prej tyre studentë të mëparshme, të cilët janë duke bashkëpunuar në një farë mënyre pafat. Dhe pastaj në aspektin e përqindje, kjo është zakonisht rreth 3% i klasës që, për fat të keq, i bën këto lloje të vendimeve. Pra, vitin e kaluar ishte 3.5% e trupit të CS50 e studentëve kjo ishte Ad hipi, kështu që të flasin. Pra, çfarë e bën e gjithë kjo do të thotë? Dhe çfarë të bëjë në fakt? Pra, për zbulimin e plotë, ne absolutisht, si shkencëtarët kompjuterike, kanë mjete software në dispozicion dhe kjo është shumë e lehtë për ne, në drejtësi, shokët e klasës që të tjerë të cilët nuk janë kalimit këto rreshta për të kaluar të krahasuar çdo nënshtrim këtë vit kundër çdo Dorëzimi për tetë vitet e fundit. Software e bën këtë. Dhe në fund të fundit kjo është sytë e njeriut që vendosin nëse janë apo jo për të referuar disa rëndësi për gjykim të mëtejshëm, por software sigurisht ndihmon. Dhe kjo, sinqerisht, është arsyeja që unë mendoj ne kemi një numër të tilla të mëdha në CS50. Kjo nuk është për shkak se CS50 nxënësit apo studentët CS më shumë në përgjithësi janë më pak të ndershëm se çdo nxënësit e tjerë, kjo është vetëm ne kemi mjetet dhe teknikat me të cilën për të marrë këtë kalojë së pari. Por ne bëjmë të mbajtur një sy në të gjitha këto gjëra si dhe, përsëri, në interesat e duke njohur punën që është duke u vënë në nga shumica super të klasës. Dhe politika Kursi-së në ndershmëri akademike, edhe pse kjo është një bandë e paragrafëve të gjatë me një bandë e plumbave që janë me shpresë mjaft i lexueshëm, ajo vërtetë nuk avulloj të jenë të arsyeshme. Dhe më të mirë rregull e pranoj që ne ofrojmë deri në planin mësimor është ky, thelbi të gjithë punën që ju të paraqesë në këtë kurs duhet të jenë tuajat. Dhe me të vërtetë, në të pothuajse të gjithë ata rastet e referuara për veprim disiplinor kjo ishte për shkak të disa studentëve një fund natë zakonisht kthyer kodin e tij ose të saj mbi plotë për një shok klase, i cili më pas e miratoi atë në tërësi ose konsiderueshme te tyre. Por me të vërtetë, kjo është në rregull. Dhe me të vërtetë, në zyrën e orësh, rrëshqet e letrës ju keni qenë dorëzuar në qoftë se keni ardhur nga zyra e orë javën e kaluar inkurajon sa më shumë. Ju jeni absolutisht të mirëpritur dhe inkurajuar për të diskutuar grupe problem me shokët e klasës. Për të ndihmuar njëri-tjetrin kur pengesë. Por në përgjithësi sundimi i gishtit duhet të jetë kjo, "kur ju jeni duke kërkuar për ndihmë, ju mund të tregojnë kodin tuaj për të tjerët, por ju nuk mund të shihni të tyret. " Pra, me fjalë të tjera, në qoftë se unë jam i duke luftuar me disa grup P dhe unë jam i ulur atje në ngrënie sallë, ose në bibliotekë, ose në klasë duke u përpjekur për të gjetur ndonjë të metë, Unë me siguri mund të tregoj kodi im në ekran e mia për të personi i ulur pranë për mua, sigurisht stafi, por edhe një shok klase. Por në qoftë se zgjidhja që shok klase ime ofron është, oh, këtu vetëm të marrin një vështrim në atë Unë e bëri, që kalon vijën. Dhe unë do të guxoj të them se kjo është në përgjithësi një gjë e arsyeshme për shumicën e njerëzve për shumë të lehtë vend vijën e. Dhe kështu, shih planin mësimor për më shumë detaje. Dhe tani një nga më të Aspektet e diskutueshme e CS50 syllabus që kam menduar unë do flisni në përfundim këtu është e ashtuquajtura klauzolë keqardhje. Pra, këtu është e gjitha shtypura gjobë. Por në përgjithësi ne kemi parë gjatë 8 viteve të fundit, plus se, me të vërtetë, pothuajse të gjithë e CS50-së rastet e pandershmërisë akademike kanë qenë rezultat i vetëm i varfër vendimmarrëse natën vonë. Rezultati i stresit, rezultati të mungesës së të ngrënit, mungesa e gjumit, shumë grupe P, shumë afatet, shumë angazhime. Stresi ndërtimin në një 2:00 AM, 03:00 AM, 4:00 AM, me një afat kanosës. Shumica e studentëve në këto raste kanë bërë vetëm vendime të këqija që ata të mund shumë mirë keqardhje të nesërmen në mëngjes, nëse jo minuta më vonë, por deri vitin e kaluar nuk ka pasur valvul lirimin se këta studentë mund të në fakt të hapur që në fakt adresuar Kreu Problemi me pa frikën e të qënit booted nga kolegji krejt. Dhe, me të vërtetë, ne kemi prezantuar kjo klauzolë keqardhje vitin e kaluar, i cili thotë se në qoftë se brenda 72 orë, tre ditë, e kalimit disa linjë përshkruara në planin mësimor ju vijnë përpara për një natyrisht të kokat dhe ne do të kemi një bisedë në lidhje me të. Nuk janë ende të ketë disa rezultat, në kundërshtim me atë që është është raportuar për të kundërtën. Ka ende disa përfundime që është vepruese nga ana e kursit, përgjithësisht zeroing një grup P ose duke marrë disa veprime të tjera, por ne do të, në të vërtetë, trajtuar atë vetë dhe jo referohen të lartë ishin rezultati mund të jenë shumë më të rënda. Dhe, me të vërtetë, për të ndarë atë që ka ndodhur vitin e kaluar, në tetë vjet, dhe tani nëntë vjet, e mësimdhënies këtë kurs dhe pas ngatërresë me pullat e ndryshme, kthyer dials të ndryshme mbi të kaluarën disa vite në ndershmërinë akademike, dhe duke parë sipas të dhënave jo të dukshme ndikim, madje edhe të fjalimeve si kjo, kjo ishte duart poshtë gjëja më e mirë ne kemi prezantuar pedagogjike në tetë vjet së bashku këto rreshta në CS50. 19 studentë doli përpara sipas kësaj klauzole të vitit të kaluar. Ne patëm marrë asnjë veprim për shtatë nga ata studentë, përcaktimin se ata ishin panevojshme të shqetësuar. Ata nuk kishin, në fakt, kaluar një linjë, por ajo ishte një chat mirë që të ketë megjithatë. Ne zero 11 të rezultateve që janë dorëzuar. Dhe në një rast kemi pyetur një Studenti për të bërë një problem të caktuar. Por më bindëse, sinqerisht, me këto 19 biseda, e cila ishte mënyra më shumë se unë pritet të ketë, secili prej tyre 10 minuta për të ndoshta një orë të gjatë, solli edhe në dritë një numër çështjesh lidhur Çështjet familjare, çështjet mik, çështjet e shëndetit mendor që ne pastaj të angazhuar, me të studentit bekim, banor dekan, apo miqtë, ose ndonjë numër tjetër e burimeve mbështetëse. Kështu që kjo ishte larg nga një nga përdorimet më të mira të kohës sonë dhe një nga ndërhyrjet më të mirë. Me tha se, ajo nuk kishte të dhëna mbi normën e zbulimit pandershmërie akademike në përgjithësi. Dhe unë guxoj të them, këtë nënbashkësi e studentëve të vitit të kaluar ishte një demografike që ne parë kurrë më parë identifikuar dhe kurrë nuk e kishte lidhur me para. Dhe kështu, këto ishin Historitë e suksesit të mrekullueshme edhe pse ata u sollën në dritë në më pak se rrethana optimale. Pra, mbani këtë në mend si ju bëni, ndoshta, disa vendim të varfër veten natën vonë, se nuk ka rekurs aq e gjatë si student në atë situatë vet dhe të vijnë përpara në mënyrë që ne mund të kanë këtë lloj chat dhe të merren me të në një mënyrë që është e arsimore, dhe pastaj ne mund të vënë atë prapa nesh të nesërmen. Pra, pa zhurmë më tej, marrë më të buzë off e kësaj bisede, arsyeja puppies janë lart është vetëm për të thyer akullin për një moment. Dhe për fat të keq, ata janë të gjithë gjumë, por ajo që është dashur të ndodhë këtu ishte të gjithë është dashur për frikë dhe lloji i relaksohuni pas asaj bisede shumë të rëndë. Por me sa duket kam vënë puppies për të fjetur. Por në qoftë se ju shkoni në CS50-së puppies Slash website, ju mund të shikojnë ata të gjithë ditën e gjatë. Veçanërisht ndoshta 2:00, ose 3:00, apo 04:00 në mbrëmje për të parë një lehtësim stresit të vogël atje. Kështu që është çaj puppies. Në rregull. A nuk ishte kjo fun? NE RREGULL. Pra, përsëri në një kompjuter shkencë, në qoftë se unë mund të. Pra, kujtojnë se koha e kaluar kemi filluar jo duke kërkuar vetëm në kryesor, i cili ishte funksioni default, kur flamuri gjelbër klikuar ekuivalent, por ne gjithashtu filluar shkurtimisht shkruar disa nga vetë funksionet tona. Dhe deri më tani asnjë nga këto funksione kanë qenë veçanërisht i madh apo mishi. Ju do të merrni në ato më të mëdha Funksionet e ndoshta, P vendosur 2, P vendosur 3, patjetër P vendosur 4 dhe më tej. Tani për tani shumica e programeve tuaja, nëse jo të gjitha prej tyre, sigurisht për P set 1 mund të bëhet tërësisht në kryesore. Nëse programi juaj është vetëm pesë linjave, linjat 10, edhe 20 linjat e gjata, të përkryer arsyeshme për të shkruar atë të gjitha në kryesore dhe të mos mbi komplikojë Kodi juaj, por ajo që ne jemi duke bërë sot dhe tutje është duke u përpjekur për të edhe prezantoj disa teknika të mira të projektimit në mënyrë që sa kodi juaj merr më shumë komplikuar dhe si problemet ju doni të zgjidhur të merrni shumë dhe më interesante që ju keni, lloj, mjetet në veglave tuaja me të cilat për të hartuar zgjidhje të mira atyre. Pra, le të marrin një vështrim i shpejtë mbrapa në ky program nga java e mia të fundit, e cila ishte funksionet zero dot C. Dhe vini re se, thjesht, kjo duket si ky me dy funksionet, kryesore dhe emri shtypura. Dhe të menduarit prapa ose ndoshta xhenio sot, çfarë ishte motivimi për futjen një funksion në linjë 28 të quajtur, Emri shtypura? Ose çfarë ishte ky një shembull i në kushtet e një parimi apo takeaway, në qoftë se ju do. Disa murmurs. Çfarë? Po Zbërthimi kështu funksional është lloj i mënyrës sofistikuar për të thënë: tretem programin tuaj në pjesët e saj përbërëse dhe pastaj të përdorin ato pjesë për të mbledhur një të tërë. Pra, edhe kjo është vetëm lloji e një kafshatë tashmë, por kjo është ndoshta edhe një Shembulli më i mirë i diçkaje quajtur vetëm abstraksion. E drejtë? Abstraksion do të jetë një nga temat e përsëritur në CS50 dhe gjithashtu shkenca kompjuterike më shumë në përgjithësi nga ajo e një teknikë me të cilën ju mund të zgjidhin Problemet më efektive, sepse ju mund të shkruani zgjidhjet më shumë intuitive dhe në një mënyrë që peshore dhe është e kuptueshme nga njerëzit e tjerë. Çfarë dua të them me këtë? Pra, ndoshta ajo është shumë më i lexueshëm për të parë në një program si ky, super të shkurtër edhe pse ajo është. Kur ju shihni on line 22 se ka një funksion të quajtur, emrin shtypura. Vetëm se emri thotë atë që bën. Se funksioni me sa duket merr të dhëna në mes të kllapa e saj, dhe me sa duket bën diçka, me sa duket printon emrin. Dhe kështu, edhe pse ne absolutisht mund të ketë bërë atë që ne e bëmë një javë më parë, e cila ishte vetëm të marrë këtë linjë aktual të kodit, të hequr qafe këtë, dhe për të marrë qafe këtë të gjithë së bashku, ne lloj i përhumbur larg nocioni i shtypjes një emër. Unë nuk e kujdesit në qoftë se ju jeni duke përdorur def shtypura. Unë nuk e kujdesit në qoftë se ju keni një për qind S dhe një backslash N. Këto detaje tepër misterioze. Ajo që unë e kujdesit për si një programues është shtypje një emër. Dhe kështu, çfarë mënyrë më të mirë për të bërë këtë se duke e quajtur një funksion, emër të shtypura? Dhe kështu, kjo ishte një nga motivet për të bërë diçka si kjo. Marrja kodi më i lexueshëm, më shumë reusable, dhe gjithashtu vetë përshkrues. Tani, le të marrin një vështrim në një tjetër shembull, e cila ishte funksionon një, që kemi pasur këtu. Pra, kjo është ndoshta edhe më e bindëse, sepse, në këtë rast, Unë nuk dua të merrni vetëm një int. Unë dua të të marrë një int pozitiv. Dhe kjo rezulton për të marrë një pozitiv int ju duhet të bëni një bandë e legwork. E drejtë? Kjo nuk është thjeshtë një linjë quajnë si emri me shkronja shtypi ishte, i cili është pa dyshim më pak imponues. Për të marrë një int pozitiv, logically-- më lejoni të lëvizni përsëri poshtë për të fshehur këtë. Çfarë ju duhet të bëni? Ashtu si të gjitha mjetet ne kanë në momentin janë gjëra të tilla si def shtypura nga Standard Biblioteka dhe gjithashtu nga biblioteka CS50 ne kemi marrë Int, dhe Get noton, Get gjatë, të gjatë, të merrni String, por i vetmi, i lidhur ngushtë, tani është Get Int. Pra, në qoftë se i vetmi mjet që ju keni në kutinë tuaj mjet është Get Int, si do të shkoni në lidhje me zbatimin e kjo për të marrë int pozitiv? Audienca: Krijo një regjistër dhe kontrolloni nëse të dhëna që ata i dhanë ishte pozitiv apo jo. SPEAKER 1: Perfect. Pikërisht. Një tjetër mjet që kemi në tonë Toolbox nga një javë ose dy më parë është vetëm konstrukti looping. Dhe kështu, vërtet, në qoftë se ne përdorim një kohë lak, ose një të bërë, ndërsa lak, ose një ballë loop ne ndoshta mund të merrni larg me ndonjë nga ata në disa forma. Ne mund të zbatojë nocionin e get int pozitiv nga vetëm duke përdorur Get Int, dhe pastaj vetëm i mbajnë duke e quajtur atë përsëri dhe për të mbajtur pestering përdoruesit derisa ai ose ajo në të vërtetë Na jep atë që duam. Dhe kështu tani, kjo abstragim i procesit e gjetjes së një int pozitiv në një funksion të quajtur Get pozitive Int është pak më imponues sepse shikoni në këtë. Këto janë si 10 plus rreshta të kodit që janë të përfshirë në marrjen e një int pozitiv, dhe unë nuk e kujdesit të vërtetë se si ju bëni atë. Të gjitha unë intereson është se ju mund ta bëjë këtë, dhe kështu që unë kam fshehur të gjitha këto detaje prapa një Funksioni i quajtur Get Pozitive int se, në të vërtetë, e ka këtë të bëni ndërsa loop. Dhe shikoni javën e kaluar për sintaksë atje, por ai thjesht deklaron N, dhe ajo printon jashtë udhëzim për përdoruesit. Ai bën thirrje Get Int dhe pastaj ajo kontrollon kjo gjendje përsëri, dhe përsëri, dhe përsëri derisa përdoruesi bashkëpunon. Deri tani, disa kontrolle disa mendje e shëndoshë. Për ata që ndoshta të njohur me disa programimin, pse N shpallet, pse të krijoj N jashtë bëni ndërsa lak? Pse është ajo on line 29 dhe jo në si 33, për shembull. Audienca: Sepse kur ju shpallin atë jashtë, atë lloj e më shumë, të scope-- madhe SPEAKER 1: Mirë. Audienca: --and në qoftë se ju të deklarojë ajo brenda loop, [e padëgjueshme] sepse ajo nuk e di në lidhje me të. SPEAKER 1: Pikërisht. Në qoftë se unë mund të simplify-- kjo është një çështje e fushës. Dhe fushëveprimi i referohet kontekstit në që një variabël ekziston ose është i përdorshëm. Dhe sundimin e bukur e pranoj këtu është se në përgjithësi, kur ju të deklarojë ose të krijoni një variabël ju mund ta përdorni atë vetëm brenda i afërt përqafuar formatimin e teksteve kaçurrel. Pra, çfarë do të thotë kjo? Në qoftë se unë, në vend të kësaj, kjo prish dhe shkoj me diçka që ndihet pak më të thjeshtë. E drejtë? Linja 32 vetëm duket të pastër për mua tani. Unë jam duke bërë dy gjëra në të njëjtën një herë dhe pastaj caktimin e dora e djathtë në dorën e majtë. Problemi tani bazuar në se përcaktimi i fushëveprimit N është që mund të përdoret në linjat 31 dhe 32 në brendësi të këtij lak, por kur nga ky përkufizim nuk mund të përdoret ajo? Në përputhje çfarë? Po. Audienca: 35. SPEAKER 1: 35. Definitivisht jo 35. Dhe gjithashtu ku tjetër? Audienca: 34. SPEAKER 1: Edhe 34 është problematike sepse kjo është jashtë nga formatimin e teksteve kaçurrel. Dhe kështu në fakt, le të shohim se çfarë ndodh. E drejtë? Kjo mund të duket pak e intuitiv apo jo mund, por le të shohim se çfarë compiler ka për të thënë kur ne do të shkojmë në directory sotme burim. Bëni një funksion. Oh Zoti im. E pra, unë më në fund përfundoi që, nga rruga. Në rregull. Dhe çfarë është çështja këtu? Shumë e errët për të parë. Por këtu është ajo që unë typed-- të bëjë një funksion. Ja se çfarë të bëjë detyruar, e cila është në fakt duke përdorur tingëllimë përpilues me disa prej këtyre flamujve se ne do të shohim përsëri para se të gjatë. Dhe përsëri, gjithmonë duken në gabim e parë, për shkak se ajo mund të ketë vetëm një Cascading Efekti pakuptimtë në linjat e tjera. Pra, çfarë kjo do të thotë është se Problemi është në funksion 1.c. Ajo është në linjë 32. Dhe kjo është në kolonë, apo karakterin, 13. Pra, kur editor teksti juaj që mund të t'ju ndihmojë të identifikoni se ku çështja është. Pra, nëse unë lëvizni lart, ajo është linjë 32? Kjo është me të vërtetë kjo që është theksuar tashmë n drejtë here-- papërdorura ndryshueshme. Por kjo nuk është e papërdorur. Unë jam duke e përdorur atë. Por përpiluesit e hutuar, sepse ajo ekziston vetëm brenda këtij fushëveprimi. Dhe kështu që unë nuk mund ta përdorin atë këtu. Unë nuk mund ta përdorin atë këtu. Dhe përpiluesit, pra, nuk kujdeset as që unë jam duke u përpjekur. Kjo duket të jetë e papërdorur në kuadër të fushëveprimit të saj aktual. Pra, ne mund të zgjeruar fushën duke bërë pikërisht ajo që kemi filluar with-- int n. Dhe, edhe pse kjo nuk ka duken si elegante, ndoshta, dhe ne jemi duke marrë një linjë shtesë këtu, tani është në fushën kudo. Pra, le të provoni përsëri. Pra, të bëjë një funksion. Bukur. Dhe tani, nëse unë, nëse kam drejtuar funksionin një, le të japë atë negativ 10, negative 1, 0, 1, dhe në të vërtetë funksionon. Pra, ka një tjetër zgjidhje këtu. E di çfarë? Çka në qoftë se unë me të vërtetë jam mundje me këtë? Unë nuk e di se ku n është menduar për të shkuar. E di çfarë? Unë jam vetëm duke shkuar për të vënë atë të gjithë rrugën në krye të dosjes time këtu. Çfarë do të bëni këtë, mendoni ju? Po? Audienca: [padëgjueshme]. SPEAKER 1: Po. Kështu që unë kam bërë atë globale, kështu që të flasin. Nëse ju keni një ndryshore që është jashtë të gjitha funksionet tuaja që është e lejuar, dhe kodi duhet të hartojë, dhe n tani do të jetë i mundshëm jo vetëm në get int pozitive, por edhe në të cilën main-- është shqetësuese pak për shkak se ka tashmë një n në kryesore, kështu që më shumë në se në vetëm një moment-- por kjo do të konsiderohet si dizajn i keq. Në rregull. Nëse ju duhet të mbështetet në diçka si, oh, unë do vetëm vënë atë deri këtu sepse kodi duket të përpilojnë në përgjithësi nuk është praktikë e mirë. Përkundrazi ju doni të zgjidhni fusha e ngushtë e mundshme për variablat tuaj, që do të thotë duke shkuar me dizajn tonë fillestar, i cili është e drejtë këtu. Tani si një mënjanë, në qoftë se ju kishte një mënyrë identike me emrin ndryshueshme këtu, Mënyra se si do të trajtojë c this-- edhe pse kjo nuk do të ndodhë shumë often-- është se kjo është ende përkryer gjobë në këtu. Por ky përkufizim i n në linjë 22 do të hije atë globale. Pra, kjo do të punojnë në kuadër të kryesor, dhe ai botëror në fakt do të zbatohen kur ju jeni në merrni int pozitiv Por më shumë se Një herë tjetër, por vetëm për ata kurioz. Pra me pak fjalë, ne të rregullojmë këtë këtu. Tani le të të vë në lojë përveç dy copa të tjera para se të shohim një linjë e fundit të kodit në këtë program. Get int pozitiv. Në të majtë anën e fjala e tij është fjala int. Çfarë do që tregon mendoni ju? Deri tani ne kemi parë kryesisht i pavlefshëm. Po? Audienca: Kjo është lloji i variabël që ju jeni duke kërkuar për. SPEAKER 1: Po Është lloji i, më lejoni nuk them të ndryshueshme, por lloji i vlerës që unë jam duke kërkuar përsëri për të. Dhe me të vërtetë, kjo është intuitive këtu, me shpresë. E drejtë? Në qoftë se ju doni të merrni një int pozitiv, çfarë është ajo që ju dëshironi function-- si tonë vullnetarë nga java e fundit në dorë ju prapa një copë i letrës me një int në të? Dhe kështu që ne kemi specifikuar se ashtuquajturi lloj kthimi i këtij funksioni është marrë int pozitiv. Në qoftë se ne nuk duam që ajo të asgjë kthehen, ju thoni pavlefshme. Në qoftë se ju dëshironi që ajo të kthehet një varg, ju thoni string. Në qoftë se ju dëshironi që ajo të kthehet një noton, ju thoni noton. Por i vetmi që vlen këtu logjikisht, sepse unë jam duke përdorur të merrni int, edhe pse unë jam duke kufizuar atë për vlerat pozitive, është për t'u kthyer një int. Pra anasjelltas, çfarë do të thotë se ka një boshllëk në kllapa? Çfarë bëjnë kllapa përgjithësisht të përcaktuar? Po? Audienca: Kjo do të thotë funksionin e jo të vërtetë duke marrë atë. SPEAKER 1: Kjo do të thotë funksionin e jo të vërtetë duke marrë çfarë? Audienca: Një input. SPEAKER 1: Një input, whatsoever. Pra në të vërtetë, në qoftë se kllapë këtu ju specifikoni i pavlefshëm, që vetëm do të thotë unë nuk dua asnjë kontribut. Unë do të merren me problemin veten time. Dhe me të vërtetë, ju nuk keni për të them merrni asgjë pozitive int. Ju vetëm të them, të merrni int pozitive, dhe se Funksioni do të shkojnë jashtë dhe të bëjë gjë e saj. Por ka pasur një mashtrim të vogël unë kam qenë duke luajtur këtu këtë kohë të gjithë për t'u siguruar që ky kod harton. Vini re se int-- merrni pozitiv int void-- është në linjë 27. Por, për disa arsye në dukje të pazakontë është gjithashtu këtu on line 16. Dhe vetëm për masë të mirë unë do të përsëris kjo kështu që është krejtësisht identike. Dhe unë kam thënë prototip me pak koment njeri-line. Çfarë ndodh në qoftë se unë të fshini atë dhe tani përsëritje bëjnë funksion 1, të hyjë. Uh. Prit një minutë. Ku është tab ime? Huh? Koha e pritjes. Bëni funksionit 1. Atje shkojmë. NE RREGULL. Nuk e kishte ruajtur atë siç duhet. Kështu që, unë mendoj se ka pak bug këtu ku unë nuk jam duke parë emrin tab në këtë moment. Pra, çfarë po ndodh këtu? Deklarata e nënkuptuar e funksionit merrni int pozitiv është i pavlefshëm në C99. Pra konfuze përsëri. Pra, çfarë është kjo tregues i? E pra, ajo rezulton se C është shumë budalla. E pra, kjo është programimi gjuhës, ose më mirë përpiluesi është. Ajo vetëm e di atë që ju keni mësuar, dhe kjo është vetëm do të dini diçka në qoftë se keni mësuar më parë. Me fjalë të tjera, në kryesor në këtë moment, unë jam duke u përpjekur për të thirrur një funksion quajtur merrni int pozitiv. Por përpiluesi nuk po shkon të konstatoj se të marrë int pozitive ekziston deri linjë 26. Dhe kështu çfarë bën përpiluesit është vetëm gabime sa më shpejt që ajo merr për të vijë 17, duke thënë se deklarata e nënkuptuar i merrni int pozitive, e cila është vetëm një mënyrë e sofistikuar për të thënë, unë nuk e di se çfarë të merrni int pozitiv është ende. Gjuhë të tjera si Java dhe Python dhe Ruby mund të shikojmë përpara. C nuk ka. Dhe kështu mënyrën se si ne të rregullojmë kjo është një nga dy mënyra. Ose një, nëse problemi është se të merrni int pozitiv nuk është parë më parë, mirë, më lejoni vetëm të lëvizin atë në krye. Kjo do të rregulluar këtë problem. Por në përgjithësi, është e konsiderohet teknikë më të mirë për të vënë funksionin tuaj kryesor në shumë lartë në mënyrë që një njeri duke lexuar kodin tuaj e di se çfarë programi bën, sepse kryesor nuk është varrosur të gjithë rruga në fund apo në mes. Kjo është në krye. Kështu që nuk ndihet ideale. Dhe në të vërtetë ju mund të merrni në situata ku nëse thirrjet një funksion tjetër, i cili e quan një tjetër, ju mund të merrni në një çështje ku as mund të shkojnë mbi tjetrin, logjikisht. Kjo nuk është vetëm të jetë e mundur. Dhe kështu që mënyra për të punuar rreth kësaj është që të vetëm të marrë nënshkrimi i funksionit, kështu që të speak-- vija e parë ku është declared-- dhe vetëm kopje, ngjitur në nivel të lartë, por jo me braces-- kaçurrel vetëm me pikëpresje. Është si një aluzion të vogël të asaj që është për të ardhur. Dhe në fakt, të gjithë këtë kohë kur ne kanë parë gjëra të tilla si io.h standarde dhe cs50.h, ngjashëm, në ato dot h dosjet janë aty prototipa të tjera. Dhe ne do të shohim se para se të gjatë. Pra me pak fjalë, kur ju keni një program në një skedar me funksione të shumëfishta përveç kryesor, ju pothuajse gjithmonë duan të deklarojnë ato vetëm me anë të tyre të parë line, e ndjekur nga një pikëpresje, në krye të file. Kjo ishte një shumë të gjitha përnjëherë. Ndonje pyetje? Ndonje pyetje? Në rregull. Pra, le të lëvizë pastaj për diçka si kollë. Oh. Si i përshtatshëm. Në rregull. Kollë. Kështu që këtu është një c zbatimi i një programi ne e bëmë ditë të tjera në Scratch që shumë thjesht vetëm thotë kollë, kollë, kollë. Në rregull. Dhe dikush tha disa ditë më parë se nuk ka një mënyrë për të pastruar këtë kod deri tashmë. Në rregull? Sa më shpejt që ju jeni kopjimit dhe pasting dizajn ndoshta e keqe. Të paktën një herë ne kemi marrë për katër apo pesë ose 20 kollitet, ai ndjehet praktikë e keqe. Ne vetëm i mbajnë kopje, pasting. Çfarë është zgjidhja e qartë për pastrim këtë program up? Audienca: Loop. SPEAKER 1: Po. Kështu që përdorin një lak. Dhe ne mund të përdorni një për-lak, një kohë loop, çdo numër të qasjeve. Dhe me të vërtetë, kjo është ajo ne bëjmë në versionin e një këtu. Unë e kam rishkruar atë vend në versionin e një të cough.c të jetë kollë vetëm brenda një për-lak. Të gjithë të drejtë, por ka një mundësi tani për llojin e fillimit për të hartuar këtë një pak më shumë si mësimi mësuam një moment më parë, i cili është this-- mendoj se kam kërkuar për të krijuar një funksion të quajtur kollë, le të konsiderojmë për vetëm një moment çfarë ajo do të duken si. Pra, nëse unë dua diçka për kollë, unë vetëm nevojë për të përdorur shtypura f brenda funksionit. Dhe me të vërtetë unë jam. Dhe në fakt, e gjithë kjo kohë, në çdo kohë ju jeni shtypjen diçka për ekran, një programues do të thërrasë se një efekt anësor. Kjo nuk është më dorëzimit përsëri dikush një vlerë. Është mua duke marrë disa veprime që mund të jenë me sy të dukshme. Por kjo kollë funksion, e bën atë të kthehet çdo gjë e bazuar në vijën e parë? Jo, sepse llojit të saj kthimit është e pavlefshme, që vetëm do të thotë ajo nuk është dorëzuar më asgjë prapa. Ajo mund të jetë duke bërë diçka vizualisht, por ajo nuk është dorëzuar mua mbështetur një copë letër si javën e kaluar. A ka nevojë për ndonjë kontribut? Jo. Dhe kështu kjo është e pavlefshme edhe këtu. Pra, edhe kjo është lloj i mbi-inxhinieri këtë problem. E drejtë? Unë e kam bërë programin më shumë komplekse, linjat më të kodit, Unë nuk e kanë bërë atë ndonjë më shumë funksional, por kjo do të jetë një gur shkelën, ndoshta, për një më të gjerë Konteksti me kodin më të komplikuar. Por ajo që në lidhje me këtë? Çfarë kam done-- vetëm glancing në kjo pa shikuar në komentin në krye të asaj që kanë file-- Unë rrënjësisht bërë këtu me kollë e mia Zbatimi kjo është e ndryshme? Po, në shpinë? Audienca: Bëni atë kështu që ju mund të kanë një karakter të fikur. SPEAKER 1: Po. Pra, kjo ndjehet lloj i bukur. E drejtë? Është si duke shtuar një funksion të tuaj program apo funksion juaj, në këtë rast. Ajo ende kthen asgjë. Ajo mund të ketë një efekt vizual anësor, sepse ajo flet shtypura f. Por tani unë kam parametrized funksioni, i cili do të thotë unë kam specifikuar marrë të dhëna të tipit int dhe e quajti atë n, por unë mund të telefononi atë gjë unë dua. Në fakt, ajo mund të jetë vetëm herë të jetë edhe më i qartë. Dhe atëherë unë mund të ndryshojë vetëm këtë këtu. Por çështja është se kjo është se si unë të krijojë një funksion që merr të dhëna. Dhe në qoftë se ju kujtohet Flipping nëpërmjet ndoshta në internet në një të ecin throughs, The katërt dhe shembull i fundit kollë, ju do të vëreni këtu unë kam përgjithësuar Kodi lloj ime further-- i përhumbur ai më tej. Si Kollituni dhe teshtini, të dyja janë rreth e qark si duke thënë diçka ose duke e bërë një lloj i shëndoshë. Ruaj do të jetë korrespondues bllok Scratch. Dhe kështu që ajo që kam bërë në këtë version, të cilat ne mund vetëm shikim në, është kollë është vetëm si duke thënë, [kollë], kollë, dhe ndërkohë, teshtitjes është si duke thënë, [ACHOO]. Dhe kështu që unë kam përgjithësuar zbatimi i atyre nga tani zbatimit ky funksion gjenerik, thonë, e cila është interesante për qëllimet e sotme vetëm për shkak se ajo ende nuk ka një lloj të kthimit. Por sa inputet e bën atë të ketë? Audienca: Dy. SPEAKER 1: Dy. Dhe kështu që nëse doni të të marrë në dy argumente, vetëm ndajini me presje. Dhe në qoftë se ju doni të, atëherë quajmë këtë funksion, vini re se ju vetëm quajnë të themi, të japin kuotën, mbyll thonjëzat, për argumentin e parë, i zakonshëm n, per argumentit dytë. Pra, përsëri, ne vetëm duhet tani blloqe ndërtimi në mënyrë që ne mund të vërtetë të zbatojë disa nga vetë funksionet tona. Në rregull. Çdo pyetje mbi këto? Pra, tani le të zhvishem përsëri një shtresë Nëse është kështu. Dhe qëllimi, në fund të fundit, është problemi i vendosur javës së ardhshme do të jetë në cryptogrophy-- arti i përpiqen informacion. Dhe në mënyrë specifike, informacioni do të ju encrypt ose dekodojnë do të jetë teksti. Dhe kështu që lloj i fton pyetja sot si mirë, çfarë po ndodh nën kapuç me tekst përtej ASCII nga java zero, dhe si mund ne fakt të fillojë për të manipuluar atë? Kështu që këtu është emri Zamyla së. Dhe në tekst, që mund të jetë futur në si funksion string të merrni. Dhe duke filluar nga tani, kur ju shikoni një string si this-- Z-A-M-Y-L-A-- të fillojnë të mendojnë për atë sikur çdo nga ato personazhe është në një kuti e saj vet. Dhe me të vërtetë, në një javë apo më shumë është kohë, secili prej këtyre kutive është duke shkuar për të përfaqësuar shumë në mënyrë specifike një bllok i memory-- një pickim të kujtesës. Pra, secili nga këto letra, në fund të fundit, do të përfaqësojë 8 bit. Dhe ne fakt do të shohim se çfarë po ndodh në nën kapuç në kompjuterin tim. Por sepse nuk mjafton vetëm për të parë në Zamyla nëpërmjet këtij lente, ku secili prej këto shkronja është në kutinë e vet. Dhe mjaft bukur në C mundemi hyni në secilën prej këtyre kutive drejtpërdrejt. Pra, nëse ju doni të merrni të parë Letra e emrit të saj, super të lehtë në C. Nëse ju doni të merrni të fundit letër, super e lehtë sa edhe me një pjesë të sintaksës së re. Kështu që unë jam duke shkuar për të shkuar përpara në CS50 IDE dhe të hapë vargut zero dot C. Dhe në këtë shembull këtu, ka disa gjëra të reja në vazhdim e sipër. Pra, së pari në linjë 19, ne kemi parë këtë varg më herët, të merrni. Pra, ashtu si një kontroll të shpejtë mendje e shëndoshë, nëse dikush mund të ofrojnë deri verbalisht Shpjegimi një laik i çfarë po ndodh në linjë 19. Ashtu si vetëm përkthejnë këtë në Anglisht se nuk shokun në CS50 mund të kuptoni. Po. Audienca: Kanë përdoruesit input një string dhe ruajtur atë në një s ndryshueshme. SPEAKER 1: Mirë. Kanë të dhëna përdoruesi një varg dhe ruajtur atë në një s ndryshueshme. Kjo është e madhe. Pra, në të djathtë anë, ne e quajmë string merrni. Që kthen një vlerë se nuk e kam marrë caktuar nga e djathta në anën për të majtë anë në një ndryshore të quajtur s që është projektuar për të ruajtur një varg. Pikërisht. Deri tani vijë 22, për komenti në linjë 21, padyshim printime që string një karakter në linjë. Por si? Pra, para së gjithash, ne nisja unë në 0. Dhe pastaj si do të kemi për të fundi i emrit të Zamyla-së? E pra, në fund të vitit Emri Zamyla, unë mund të manualisht shkruani në karakterin e fundit emri i saj disi, ose numri i saj. E drejtë? Nëse kthehemi here-- Z-A-M-L-- Y-L-A-- kështu që unë mund të shkruani. Çfarë është indeksi i Letra e fundit Zamyla-së? Nëse kjo është 0-- flet si një programmer-- 0, 1, 2, 3, 4, 5, Unë heard-- kështu në të vërtetë, letrën e fundit në emër të Zamyla është i gjashti, por në qoftë se ne numërimin nga 0, ajo do të jetë numër 5. Pra, mbani në mend këtu. Ajo rezulton se ka një funksion në C quajtur strlen, dhe mbrapa në ditë dhe sot e kësaj dite ende, një shumë e programuesit zgjedhin për të sync emrat e tyre për Funksionet që të tingëllojë si fjalët ata janë duke u përpjekur për të thënë. Pra strlen është gjatësia string. Dhe kështu ajo do gjatësi varg S kthehen kur Zamyla është input? Audienca: Pesë. SPEAKER 1: Z-A-M-Y-L. Gjashtë. E drejtë? Çfarë është gjatësia e emrit të Zamyla-së? E drejtë? Dhe vetëm në realitet, gjashtë letra. E drejtë? Dhe kështu që çfarë do të thotë kjo për lak tonë? Ne jemi duke shkuar për të shkuar nga 0 deri në gjashtë, e cila do të na japë pesë përsëritjeve. Çfarë bëjmë ne në çdo përsëritje? E pra, për qind C, dikush mendoi ditë të tjera, do të thotë një placeholder për çfarë? Audienca: Char. SPEAKER 1: Vetëm një char. Pra, një character-- vetme nuk karaktere të shumta si një varg. Dhe pastaj këtu është linja e re që ne kemi marrë shtypjen nga. Dhe pastaj këtu është sintaksë të re. Nëse ju doni të shtypura nga i-th karakter në varg s, kështu që të flasin, ju thjesht mund të them emri i string S, dhe pastaj të hapur kllapa katrore, dhe pastaj mbyllur kllapa katrore, me një i e mesme. Dhe kjo është lloj i bukur në atë ai lloj i duket si një shesh ashtu si sheshet në të cilat Zamyla-së karaktere ekzistojnë në atë foto atje. Pra, nëse unë në fakt të drejtuar këtë tani, le të shohim se çfarë ndodh. Bëni string 0 dot plagë varg 0, dhe pastaj unë jam do të shkruani në emër të Zamyla së. Nuk ka të shpejtë, sepse unë nuk e bëri përdorni shtypura f, por kjo është në rregull. Unë vetëm e di se çfarë të bëjë. Dhe me të vërtetë, ajo kopje nga Emri Zamyla së, një për rresht. Tani le të jetë pak i pamatur. Le të supozojmë se unë nuk e di për strlen dhe unë i realizuar artistikisht, të gjithë të drejtë, askush nuk do të ketë një emri më i madh se si 50 karaktere. Le të shkojnë përpara dhe për të përpiluar këtë dhe përsëritje atë, dhe pastaj shkruani në Zamyla përsëri. Logjikisht, çfarë është Programi do të përpiqet për të shkruar? Z-A-M-Y-L-A pastaj si 45 bytes panjohur e kujtesës. Dhe me të vërtetë, ne do të kthehemi për këtë idenë e kujtesës. Por vetëm logjikisht, nëse Emri Zamyla është kjo e gjatë, si për foto këtu, ajo që ne jemi duke thënë është mbajtur shtypjen, të mbajtur shtypjen, të mbajtur shtypje, shtypje të mbajtur, të mbajtur shtypjen, të gjitha mënyra për karakterit 50, që kush e di se çfarë do të ndodhë. Pra, le të vërtetë të marrë një sy. Le të shkruani në Zamyla. Interesante. Ne morëm me fat. Vetëm një bandë e tërë e hapësirë ​​të bardhë. Oh. Ka një karakter i shokuar. Ajo duket si një lloj pyetjeje të pazakontë shënuar atje, por nuk është emri Zamyla së. Le të merrni të vërtetë të pamatur. Si për ne të shtypura nga 500 bllokon në panjohur? Le të shkojnë përpara dhe të bëjë këtë si dhe pastaj ri-drejtuar. Dhe le të ekran të plotë atë, sepse ne duhet të shohim më shumë hapësirë. Zamyla. Mori me fat përsëri. Dare ne të merrni më shumë të pamatur? Le të merrni më të pamatur. 50.000 karaktere. Kjo nuk është më me siguri një ide e mirë. Në rregull. Bëj varg 0. Kjo do të jetë demo ynë i fundit. Zamyla. Ugh. Ugh. NE RREGULL. Pra, kujtesa ime është me të vërtetë e zbrazët tani, e cila në fakt është lloj i përshtatshëm. Ajo që unë jam duke u përpjekur për të marrë to-- të gjithë të drejtë. Dhe tani unë jam vetëm duke shkuar për të marrë pamatur. 500,000. Make-- le në ekran të plotë atë. Enter. Zamyla. Atje shkojmë. Unë nuk kam asnjë ide se çka është, por kjo tingëllon keq. Në rregull. Dhe në fakt, së shpejti, në qoftë se ju jeni në mesin e pak fat në orarit të punës dhe në problemin e të vendosur një të tillë, ju mund shumë mirë të hasni këtë. Faji Segmentimi fakt bën kanë një kuptim të mirë-përcaktuar. Kjo do të thotë një lloj të gabimit në lidhje me një segment të kujtesës. Dhe në kushtet e laik, kjo do të thotë që ne të prekur memory-- kemi përdorur RAM në kompjuterin tim që unë nuk duhet të ketë pasur qasje në. Dhe kjo është ajo që është e të dy i fuqishëm dhe gjithashtu të rrezikshme në lidhje me C është se ju në fakt kanë qasje të papenguar në tërësinë e kujtesës programit tuaj ose bytes ose RAM, më konkretisht. Pra, edhe pse emri Zamyla-së është vetëm gjashtë karaktere i gjatë, Unë ende mund të shkoni kudo në kujtesën Dua. Dhe si një mënjanë, në qoftë se ju keni lexuar ndonjëherë disa artikullin gjatë viteve në lidhje me disa server apo ndonjë program duke u plasaritur ose hacked kjo është Avantazhi i marrë diçka quhet del nga shtrati tampon shfrytëzuar që ne do të vërtetë flasim për në disa javë, kjo është në përgjithësi duke iu referuar disi tricking një kompjuter në duke shkuar mirë përtej kufijve të kujtesës se ajo duhet të ketë, dhe gjetur diçka lëng në atë që a memory-- fjalëkalimin, ndoshta, një mënyrë i anashkaluar disa numrin serik kontrolloni, ose vetëm në përgjithësi në gjendje për mashtrim kompjuteri është ekzekutuar Kodi që nuk ishte menduar. Por le të kthehemi në realitet për vetëm një moment ku ky program ka qenë zbatuar me strlen, dhe të futur një gjë këtu. Çfarë ka të re në mesin e këtyre tre linja kryesore? Pra, string dot h. Ajo rezulton se ka kjo bibliotekë quajtur String Dot H, ose Biblioteka String, të cilit header file, kështu që të flasin, është string dot h që i jep më qasje në këtë funksion strlen. Nëse unë harroj se, përpiluesit është do të bërtas në mua në një formë. Por ju e dini se çfarë? Tani le të merrni të vërtetë nuanca. Në linjë 22, ka lloj diçka i inefficient-- projektuar keq, arguably-- në lidhje me këtë linjë të kodit. Mendoni përsëri për të si për-lak janë zbatuar dhe çfarë hapash të ndodhë përsëri dhe përsëri dhe again-- të inicializimit, kushti, kodi që merr ekzekutuar, atëherë rritje të ose ndryshimi, atëherë kushti, atëherë kodi, atëherë ndryshimi, atëherë gjendja, atëherë kodi, atëherë ndryshimi, e kështu me radhë. Pra, çfarë mund të jetë pak shqetësuese apo bërë keq këtu? Po, në ngjyrë blu. Audienca: Strlen është quajtur shumë, shumë herë. SPEAKER 1: Po. Pra strlen quhet shumë herë, por ajo që është gjatësia e emrit të Zamyla së të hera e parë që ekzekuton? Audienca: Gjashtë. SPEAKER 1: Gjashtë. E pra, ajo që është gjatësia e emrit të saj për herë të dytë kodin e ekzekuton? Audienca: Gjashtë. SPEAKER 1: Në rregull. Është ende gjashtë. E drejtë? Emri Zarla nuk ka ndryshuar, edhe në qoftë se unë jam duke kërkuar në vetëm një pjesë të letrave në emrin e saj. Dhe kështu fakti që unë jam në mënyrë efektive pyetur këtë pyetje, çfarë është gjatësia e Zamyla, çfarë është gjatësia e Zamyla, çfarë është gjatësia e Zamyla, gjashtë herë të veçanta, ose shtatë madje, është vetëm budalla, sepse kjo është e pandryshueshme kjo përgjigje. Dhe kështu atë që unë mund të vërtetë bëni është this-- në varg një Unë kam një version pak më të mirë këtu. There-- string whoops-- dy kam një version pak më mirë ku Unë bëj this-- në vend të vetëm fillimin unë në 0, unë edhe me një presje deklarojë një ndryshore të dytë të quajtur n-- Unë nuk kam për të thënë int përsëri. Unë nuk duhet, në fakt. Por unë them n. Dhe atëherë unë nisja n për strlen nga n, në mënyrë që tani sa herë ka strlen të ekzekutohet në total? Vetëm një herë. Dhe kështu kjo është ajo që ne do të thotë më herët në lidhje me dizajnin më të mirë. Në fakt dikur kodi juaj është e saktë, duke shkuar prapa dhe të menduarit përmes, Unë jam duke përdorur sa më pak kujtesës ose si disa sekonda ose milisekonda e kohës kompjuter si të jetë e mundur për të zbatuar ndonjë problem? Dhe unë jam duke shkuar për të lëvizni dhe vetëm përmend se ka kjo përmendje i null në këtë version, por ne do të kthehen në atë para se të gjatë. Sepse tani për tani, le të marrin një vështrim në ku kjo do të na udhëheqë. Pra, një, rezulton se Tani që ne kemi aftësinë për të shikojmë në karaktere të veçanta, ne mund të levave diçka nga java 0 se ishte shumë misterioze dhe lloj jointeresant në atë kohë. Por tani, dhe sidomos kur ne shkoj në kriptografi në një javë, ajo do të jetë mjaft i fuqishëm. Ajo rezulton se me disa dhënat e types-- Ints dhe gjithandej dhe chars dhe vargjet dhe tjetër things-- disa prej tyre mund të konvertohet shumë lehtë në tjetrën. Për shembull, kur kemi biseduar për ASCII disa kohë ago-- këtu është Letrat kapitale A përmes M, dot, dot, dot-- kemi thënë se ka një hartë midis këtyre shkronjave dhe numra. Dhe në fakt, është e vërtetë për shkronja Fjala si. Fjala është një 97, kryeqyteti një është 65. Dhe ka një numër në ASCII, e cila është vetëm kjo hartës sistem për të gjitha ato letra të tjera. Pra, çfarë do të thotë kjo? E pra, unë jam duke shkuar për të shkuar përpara dhe të hapur up vërtetë shpejt diçka të quajtur ASCII 0, shumica e të cilave është e komente. Dhe përsëri online ju gjithmonë mund shikim nëpër komente. Dhe të marrë një sy se çfarë kjo do të bëjë. Pra, atë e mori një funksion kryesor. Unë e kam të vështirë-koduar numrat vetëm për tani, sepse unë e di atë që unë jam duke bërë. Unë e di atë që unë dua të shoh këtu. Dhe unë e kam nisur unë në 65. Dhe unë jam duke numëruar deri përmes 26 letra gjithsej. Dhe çfarë jam unë do të printoni një rresht në një kohë në qoftë se ju mund të interpretoni kjo theksuar linjë? Çfarë merr shtypura? Po. Audienca: A do për të shtypur letër që korrespondon me hartën e Vlera letër dhe vlerë e plotë? SPEAKER 1: Pikërisht. Unë jam duke shkuar për të shkruar letër korrespondues me vlerën integer, dhe anasjelltas, si më poshtë. E pra kjo, dikush tha më herët, është vetëm një placeholder për një char. Ajo ende është. Kjo, sigurisht, është një placeholder për një jo int-- një linjë e re. Dhe tani vini re, vlera ime e parë që Unë jam në mbylljen për këtë placeholder është jo vetëm I. unë jam duke thënë: në kllapa, char unë, të cilën char në kllapa është thënë përpilues, trajtoj unë jo si ajo që është, i cili është një numër. Trajtojnë atë si një karakter vërtetë. Ndërsa vlera e dytë unë jam mbylljen in-- I-- duhet të jetë vetëm një numër. Pra, nëse unë përpilojnë këtë program-- kështu që kjo është bërë ASCII 0, dot ASCII slash 0-- unë vetëm të marrë kjo tabelë dobishëm pak se tregon mua të gjitha të jetë e mundur mappings pa pasur nevojë të mendoj se përmes ose të kuptoj atë të mi. Dhe unë jam gjithashtu shtypjen jashtë, vini re shkronja Fjala, sepse disa rreshta më vonë, unë gjithashtu të shtypur këtë hartë si dhe, e cila është vetëm për thonë se sapo ju të kuptoni çfarë po ndodh nën individualitet, mund të ju automatikisht kthyer mbrapa dhe me radhë. Dhe në fakt, në qoftë se ndonjë nga ju ndonjëherë e bëri këtë në klasën e shkollës ose dëgjuar për dikë mitologjik duke marrë një shënim dhe duke kaluar atë në e tij ose shoqja e saj në klasë, por ju fërguara shkronjat nga A si bëhet B, dhe B bëhet C, ose diçka më e komplikuar se kaq, mirë, si do ju shkoj për zbatimin e se si një fëmijë? E pra, ju vetëm lloj i di A bëhet B, B bëhet C, por matematikisht, çfarë ishte duke bërë që fëmijë? Çfarë ishit duke shtuar për çdo letër? Efektivisht, 1. Pra, kur ju të ndryshojë A në B, që është lloj i si ndryshon 65 në 66, që matematikisht do të thotë vetëm të shtoni 1. Dhe kështu që në qoftë se keni qenë për të zbatuar se pak teknikë mashtrues për mësuesin tuaj në kod, ju mund të bëjë pikërisht atë vetëm duke shtuar një letër të vetme bashku. Pra para se të gjatë, ne jemi do të shohim se si ne mund të përfitojnë nga që në fakt përleshje të vërtetë dhe Unscramble informacion. Në ndërkohë, e di se ne kemi filluar për të futur një çift biblioteka të tjera here-- vargun e një sot. Dhe një vend shumë i dobishëm shpresojmë se ju do të gjeni quhet reference.cs50.net, e cila stafi mësimdhënës kanë vënë së bashku, kështu që nëse doni të shikoni se si punon strlen, ju mund të filloni të shtypni emri i funksionit së, klikoni strlen atje, dhe pastaj një shpjegim më pak të rehatshme do të shfaqet. Ose në qoftë se ju doni zyrtarin Shpjegimi linux-bazë, ju mund të klikoni më shumë rehatshëm në krye të drejtë, dhe atë do të paraqesë të njëjtin informacion, por në terma më të ndërlikuara. Kjo është një burim i dobishëm për të vërtetë e di se çfarë bën çdo gjë. Herën tjetër ne do të hidhini një sy në Ovaltine dhe më shumë, dhe të prezantuar veten në botën e kriptografisë. Para kësaj, ne do të shohim ju më vonë këtë javë. Dhe tani, Colton Ogden. Shihemi të mërkurën. [Muzika] [Muzika] SPEAKER 1: Çfarë [Sinjal bip] je duke bërë? SPEAKER 1: unë jam hahet ëmbëlsirë tim? Si mund të hani atë? Me duart tuaja? [Muzika]