HOPARLÖR 1: Hi everyone. Biz başlamaq üçün gedir. Mən insanların hələ də davam edirəm filtreleme olmalıdır. Amma vaxt maraq da, biz belə vaxt buradan siz uşaqlar almaq, biz başlamaq olacaq. Belə ki, CS50 Quiz 0 nəzərdən salamlayıram. Həyata olmayan sizin üçün hələ, çərşənbə günü bir sual var. Woo-hoo. Siz hələ öyrənilməsi açılmış deyil və ya Bu hələ var ki, həyata deyil, keçmiş viktorina və bütün məlumat Sizin viktorina cs50.net/quizzes var. Bəzi olduqca yaxşı stuff orada var, 10 Son keçmiş sınavlar il həmçinin informasiya Bu viktorina və mövzular haqqında ki, əhatə olunacaq. Belə ki, in başlamaq bildirin. Belə ki, uşaqlar, ilk xatırlayıram bilər class Davudun gün o işıqlar idi. Belə ki, mahiyyətcə, hər şey gedir ki, bir kompüter başlıq altında ikili edilir. Binary səslənir nə deməkdir kimi, 0 və 1-in. Bu iki dəyərlər var ki, təmsil oluna bilər. Belə ki, yalnız bölməsində birinci gün kimi David bir işıq açıq zaman ampul, bizim kompüter təmsil, və ya 1 anlayır 0 kimi ikili və 1-nin, və ya off. Binary əsasları. Hər yer təmsil olunur bazasında iki. Beləliklə, siz üçün 0 2 əlavə 1 bütün yol qədər 2 üçün. Sizin ikili nə hesablamaq üçün decimal, yalnız bu tənlik edin növü şey. Siz həmin yerlərdə hər hansı bir 1 varsa, siz çoxaltmaq nə Bu var bazası, onu əlavə və Siz decimal almaq. Belə ki, bu saymaq necə ikili 5. Sadəcə biz nə etdiklərinizi kimi Son slide, bu necə edərdi 5 ilə 1 etdirir. Eynilə, yalnız əlavə edə bilərsiniz kimi və decimal çıxmaq və ya 10 əsas, və ya həqiqətən heç bir əsas, əlavə edə bilərsiniz və ikili çıxmaq. Zaman gözləmək dəqiq nə Bu böyük bərabərdir əgər, iki up əlavə 1-dən, bir 1, 0 etmək keçirmək, və yalnız əlavə yol yoxdur kimi müntəzəm gözləmək olardı decimal və ya hər hansı digər baza. Cool. Mən hər şey əvvəlki kimi Belə ki, bizim kompüter başlıq altında gedir 0 və 1-in və ya ikili edilir. Beləliklə, biz ifadə necə, məsələn, məktublar, və ya nömrələri, və ya simvol? Və cavab ASCII edir. ASCII simvol arasında mapping edir biz adətən görmək ki, A, B kimi ingilis dili, C, vurğulamaq, tire, və kimi bir şey. Və bir ASCII dəyəri xəritələr. Bir ASCII dəyəri yalnız bir sıra ki, Sizin kompüter tərəfindən başa düşülə bilər. Və əlavə edə bilərsiniz kimi və nömrələri ilə toplama işlemi, siz edə bilərsiniz ASCII dəyərləri ilə onları. , Bu nümunə belə nə Bu çap edəcək? Bəli, belə ki, yalnız A space B space C space D. Mənim siçan getmək idi? Siz 65 bir int müəyyən edə bilərsiniz edək. Və istifadə ki, çap zaman faiz C, bir kimi şərh edəcəyik xarakteri və A. çap edəcək Eynilə, siz elan edə bilər bir char kimi. Və siz faiz istifadə edərək, çap zaman C, kimi ki, şərh lazımdır faiz D. Və bir əlavə edə bilərsiniz kimi sayı, simvol əlavə edə bilərsiniz Bu halda ASCII dəyərləri. Hamı üçün bir az göstərici. 5, bir string kimi, deyil həqiqətən 5 bərabərdir. Belə ki, necə çevirmək bilər bu tam 5 string 5? Hər hansı bir fikir? Bəli. Beləliklə, biz bir string kimi 5 varsa, biz 0 çıxmaq bilər. Və bizə 5 verəcəyik. Və eyni, biz kimi 5 varsa tam, simli 0 ki, əlavə. Və bizə simli 5 verir. Cool. İndi, bir harada mühazirə geri geri biz alqoritmlər danışdıq. Belə ki, biz, həqiqətən, bir kompüter istəyirik necə maraqlı şeylər etmək? Siz yalnız əlavə və subtracting, bilirik nömrələri və çap şeyi deyil ki, maraqlı. Adətən, biz bizim kompüter istəyirik alqoritm bir növ həyata keçirir. Bir az daha kompleks bir şey yalnız sadə hesab çox. Bir alqoritm addım set yalnız bir addımdır yerinə yetirmək üçün necə üçün təlimatlar müəyyən task-- bir resept kimi. Siz ilk günü xatırlayıram bilər David bizə otaq saymaq olduğu sinif insanların və necə bir çox insanlar otaqda idi. Siz hesablanması üçün istifadə edilə bilər bir-bir. 1, 2, 3, 4. Bu halda, xətti alqoritm. Amma David üçün bir alqoritm təqdim Siz oda insanlar saymaq hər kəs dayanır, siz sizin demək başqa şəxsə sayı, əlavə sıra, bir şəxs aşağı oturur. Və ki, deyirəm. Ki, alqoritm bir növü var. Biz necə səmərəli an analiz edə bilərsiniz Bu vaxt çalıştırmak üzrə alqoritm əsaslanır. Amma biz bir az danışmaq lazımdır sonra haqqında daha çox. Belə ki, bütün alqoritmlər həmçinin pseudocode yazılı. Pseudocode kimi bir İngilis syntax təmsil etmək üçün istifadə bir proqramlaşdırma dili. Məsələn, bir istifadəçi istədik, xahiş mənim sevimli nömrəni tahmin, biz kimi pseudocode ola bilər. Bir istifadəçi tapmaq alın. Tahmin doğru deyil, onlara onlar doğru danışırsınızsa, başqa onlara Onlar doğru deyilik. Və pseudocode asanlıqla bir yoldur bir fikir və ya bir alqoritm təmsil. Belə ki, indi biz, həqiqətən, yazmaq istəyirəm bilər Bu dil, kompüter anlayış bilər. Belə ki, biz pseudocode yazmaq bilər və mənbə kodu daxil şərh. İndiyə qədər, mənbə kodu riayət etməlidirlər müəyyən sintaksis bir proqramlaşdırma dili. Və bu günə qədər, CS50, biz əsasən c istifadə edilmişdir. Belə ki, bu c mənbə kodu ola bilər. Sonra əlbəttə, siz gecə gəlib digər proqramlaşdırma ilə əlaqə PHP kimi languages. Və ya hətta, sizə digər dərsləri almaq əgər Java, Python, və ya hətta OCML edə bilər. Amma bizim c proqram dilində, bu biz üçün mənbə kodu yazmaq necə pseudocode alqoritm ki Mən yalnız əvvəllər təsvir. Belə ki, necə həqiqətən, sizin kompüter yoxdur ki? Mən yalnız, həqiqətən, əvvəl dediyim kimi adet sıfır və olanları başa düşür. Belə ki, necə bu mənbədən əldə edir ola bilər ki, bir şey code başa? Bəli, biz bir şey var bir compiler çağırıb. Siz ən geri geri varsa sizin psets, siz proqram bir növ idi bir dot c fayl yazılı. Və sonra markası yazın olardı. Belə ki, nə etmək edir? Siz tərtib etmək yazın bilərsiniz proqram someone-- çünki kim p set yazdı; yəqin ki, David-- bir fayl yaradılmışdır. Və çalıştırmak üçün bilmək deyir sizin compiler adlı cingilti ki, iradə sonra etiraz mənbə kodu tərtib adet sıfır və olanları olan kodu, Sizin kompüter anlayır ki. Amma sonra bir az, biz gedəcək derleyiciler haqqında daha ətraflı. Belə ki, geri pset 0, oxlar bəli, Bir sual var? Auditoriya: [Işitilemez]? HOPARLÖR 1: Bəli. Mən, həqiqətən, onlar hesab online olmalıdır. Bəli. Auditoriya: Bu [Işitilemez] kimi mi? HOPARLÖR 1: deyil. The cs50.net/quizzes var. Auditoriya: Slash sınavlar, 2013 doğramaq 0 doğramaq, və yalnız vasitəsilə basın sınavlar 2013 və viktorina 0, bölmə slaydlar nəzərdən. HOPARLÖR 1: Bəli, belə uşaqlar istəyirsinizsə onu qoparmaq və ona baxmaq sizin öz kompüter ki, çox gözəl var. Daha demək. Auditoriya: [işitilemez]. HOPARLÖR 1: Bəli, [Işitilemez] Bu dummy dəyişir. Bəli, Oh? Auditoriya: [Işitilemez]? HOPARLÖR 1: Xeyr, tətillər imtahan deyil. Üzr istəyirik, idi onun sual idi imtahan çəkir. Və bu deyil. Belə ki, pset 0, uşaqlar bütün olmalıdır danışıq istifadə edərək bir şey həyata. Və biz bəzi əsas proqramlaşdırma öyrənildi danışıq istifadə bloklar. Belə ki, bəzi nəzər salaq Bu bloklar ki, bir proqram təşkil edir. İlk Boolean ifadə edir. Boolean ifadələr olanlardır və Ki, 0 və ya bir şey iki mümkün dəyərlər. Bu halda, doğru və ya yalan, və ya off, və bəli və ya xeyr. Çox sadə, sadə bir misal, bir Boolean istifadə edir ki proqram Burada ifadə up. Belə ki, Boolean ifadələr üçün faydalı ola bilər, biz Boolean operatorları var. Bu istifadə edilə bilər ki operatorları müəyyən dəyərləri müqayisə etmək. Belə ki, biz və ya bərabər daha az daha çox və ya daha çox bərabər və ya bərabər və daha az daha çox və ya daha. Lakin bu operatorları çox faydalı deyil biz onları birləşdirə bilər halda şərtlər. Belə ki, uşaqlar sıfırdan xatırlayıram bilər və s ki, biz müəyyən şərait var idi. Onlar çəngəllər kimi, mahiyyətcə var Sizin proqram məntiq asılı olaraq icra bir vəziyyət görüşüb. Biz idi ki, şərait belə bir Bu kurs çox dəfə istifadə edir başqa, əgər, və başqa şərtlər, əgər. Burada necə bir misal var Siz istifadə edə bilər. Hər kəs arasında fərq bilir yalnız hesabatlarının əgər bütün istifadə əgər başqa ayələrdə aşağı yol, əgər və başqa birləşdirilmiş? Bəli? Auditoriya: [işitilemez]. HOPARLÖR 1: Exactly. Mən olsaydı, bu bütün yol aşağı yol, hətta bu vəziyyət yekunları əgər doğru, hələ davam edəcək növbəti iki sınaq. Halbuki, bir başqa əgər, bir başqa ilə Şərhdə, bir doğru qayıtdıqda əgər, digərləri test deyil. Ki, Hər hansı bir sualınız? Cool. Belə ki, bir başqa bir if-else istifadə Bilirsiniz, əgər şərhdə yalnız bilərsiniz Bu hallarda biri. X az 0 əgər Beləliklə, biz bu bilirik, mütləq olacaq deyil 0-dən çox. Next, bir bina blok öyrəndik ki, loops var. Biz loops üç növü var. Loops üçün, loops, və loops isə yoxdur. Və ümumiyyətlə, zaman oturub bir şey yazmaq, siz qərar var istifadə etmək istədiyiniz üç olan. Belə ki, necə biz bir karar verirsiniz? Biz bilirik ki, əgər Biz, ümumiyyətlə, loop üçün istifadə neçə dəfə biz təkrarlamaq istəyirəm bir və ya neçə dəfə biz bir tapşırıq yerinə yetirmək istəyirəm. Biz bəzi lazımdır, əgər biz loops istifadə vəziyyəti davam saxlamaq üçün doğru olmalıdır. Və biz çox oxşar nə isə istifadə isə, lakin biz kodu çalıştırmak üçün istədiyiniz ən azı bir dəfə. Bu do nə bunu edərkən, iradə həmişə ən azı bir dəfə axır. Halbuki müddət ilə, bütün əgər run bilər şərt qane etmir. Ki, Hər hansı bir sualınız? Loop üçün belə quruluşu. Siz uşaqlar bütün bu gördük. Siz başlamaq. Siz vəziyyət bir növ var. Belə ki, məsələn, biz başlamaq bilər kimi i 0 bərabərdir. i az 10 edir. Və i ++. Biz etdik ki, çox sadə biridir. Bir müddət loop üçün, eyni, siz başlatma bir növ var, vəziyyəti bir növ, və yeniləmə bir növ. Beləliklə, biz də loop üçün bizim həyata keçirə bilər bir müddət loop kimi istifadə. Və eyni do isə loop ilə, biz bəzi başlatma ola bilər, bir şey icra yeniləmə, və sonra vəziyyəti yoxlamaq. Belə ki, indi funksiyaları. Biz hər şeyi birlikdə qoymaq. Biz bəzi yazmaq istəyirəm bilər funksiyası cür. Ümumi funksiyası güc artıq gördük əsas deyil. Main bir funksiyası var. Bu bir dönüş növü int var. Bu əsas funksiyası adı var. Və bu dəlilləri, argc və argv var. Belə ki, əsas yalnız bir funksiyası var. Istifadə edə bilər, digər funksiyaları printf printf bir funksiyası edir GetInt, toupper. Lakin bu olmuşdur nə bizim üçün həyata kitabxana bir növ. Sizlərin o cümlədən Xatırlayırsınızsa, Bu CS50.h kitabxana və ya standart I / O kitabxana. Bəli, sual? Auditoriya: c yalnız xas əsas varmı? Yalnız cür [Işitilemez] mu? HOPARLÖR 1: sual Əsas əgər c xasdır. Və bəli, bütün funksiyaları əsas funksiyası var. Bu cür kompüter üçün lazımdır harada başlamaq üçün bilmək kodu çalışan. Auditoriya: Belə ki, olmaz [Işitilemez]? HOPARLÖR 1: No. Hər hansı digər suallar? Cool. Bir funksiyası istifadə edə bilərsiniz kimi sizin üçün yazılı, siz də edə bilərsiniz öz funksiyasını yazmaq. Bu ki, kimsə bilər bir funksiyası həcmini hesablamaq üçün yazılmış məsələn bir q, və. Bir dönüş növü bu halda, burada var int, funksiyası adı q və bizim parametrlərin siyahısı. Və siz məlumat yazmaq lazımdır ki, qeyd Siz istədiyiniz parametri növü istifadə və ya funksiyası deyil başqa nə cür bilmək parametri I qəbul edilməlidir. Belə ki, bu halda, biz istəyirik bizim giriş kimi bir tamsayı. Belə ki, niyə biz funksiyaları istifadə etmək istəyirsiniz? İlk növbədə, təşkilat üçün böyük. Onlar daxil kodu up qırmaq kömək daha chunks təşkil etmək asan oxumaq. Sadələşdirilməsi. Bu dizayn üçün yaxşıdır. Siz kodu bir parça oxu etdiyiniz zaman və əsas funksiyası, həqiqətən həqiqətən uzun, daha ola bilər neler haqqında səbəb. Belə ki, funksiyaları daxil qırmaq əgər, Bu oxumaq üçün asan ola bilər. Və təkrar-imkanı. Siz kodu bir yığın varsa olmaqla ki, adlı və ya birdən çox dəfə run, əvəzinə kodunu 10 dəfə yeniden əsas funksiyası, siz bilər yeniden istəyirəm. Və sonra hər zaman istifadə etmək lazımdır kod parça, funksiyası zəng. Belə ki, indi biz danışıq geri xatırlayıram, biz də bir neçə konsepsiyaları haqqında danışdı olan bir Threading olunur. Mövzu çox anlayışdır kod ardıcıllığı eyni zamanda həyata. Davud olduğu gün bir geri düşünüyorsanız Sizlərin sayı off saymaq oda insanlar. Əsasən, nə gedirdi Siz uşaqlar bütün idi ayrı-ayrı mövzuları çalışır. Və bu mövzuları bir araya gəlirdilər cavab bir növ almaq. Eynilə, Not, zaman var çox sprites, güc pişik və it var. Onlar eyni zamanda olacaq öz skript çalışan. Ki, Threading bir nümunəsidir. Və digər konsepsiyası idi ki, Sıfırdan təqdim hadisələr idi. Və hadisələr zaman çox hissələri Sizin kodu bir-biri ilə ünsiyyət. Siz istifadə edərkən Not bu idi yayım nəzarət və Mən Blokları almaq. Və həmçinin, Problem Set 4 gördük eləcə də hadisələr bir az. Siz uşaqlar istifadə edə bilər Bu Gevent kitabxana. Və bir funksiyası var idi waitForClick Siz gözləyir istifadəçi basın üçün. Və klik, bu halda, olardı klik üçün hadisə və gözləmək sizin edir hadisə handler. Və həmçinin, sizin Psets çalışan və psets iş, siz ilə təmasda ola bilər bu əmrləri bəzi. Bu yazdığınız nə sizin terminal pəncərə və ya hər hansı pəncərə ki, sizin g redaktə göstərir mahiyyətcə, kompüter gedin. Belə ki, məsələn, LS siyahıları bir kataloq məzmunu. Directory yeni bir qovluq yaradır olun. CD, dəyişiklik directory. RM aradan qaldırılması, bir fayl silir və ya bəzi directory. Və sonra kataloq aradan qaldırılması bir kataloq rədd et. Auditoriya: [Işitilemez]? HOPARLÖR 1: Bəli, əmin olun. Üzr istəyirik, sual idi əgər Bu qoyaraq gəlir ki, istifadə etmək hesabatı. Bu kömək edə bilər. Siz otaq varsa, siz onu qoya bilər. Bu da kifayət qədər ümumiyyətlə yaxşı Siz onu istifadə çünki yadda saxlamaq istədiyiniz bilər yalnız Bu xatirəsi var. Sizin həyat çox asan etmək lazımdır. Mən sizin suala cavab mi? Belə ki, indi biz bir az söhbət kitabxanalar haqqında qısa. Lakin iki əsas olanları biz etdik ki, bu günə qədər kurs istifadə standart I / O və cs50. Hansı şeyi daxil edilir standart I / O kitabxana? Bəli, bu günə qədər biz printf istifadə etdik. CS50, biz GetInt istifadə etdiyiniz və GetString. Və data type string də olur Bu cs50 kitabxana elan ediləcək. Biz dərin bir az daha çox danışmaq lazımdır necə kitabxanalar iş və necə kodunuzu qalan ilə qarşılıqlı. Lakin həmin iki əsas olanlardır ki, biz indiyə qədər ilə əlaqə gəlmişəm kurs. Növləri. Bu nə qədər xatırlamaq yaxşı hər bir növü necə ya təmsil olunur çox bytes növü hər requires-- int 4 bayt; char 1 byte. Float 4 bayt edir. Ikiqat nədir? Auditoriya: [işitilemez]. HOPARLÖR 1: Bəli, belə bir float lakin ölçüsü ikiqat. Nə uzun haqqında? Auditoriya: [işitilemez]. HOPARLÖR 1: OK. Uzun nədir? Auditoriya: [işitilemez]. HOPARLÖR 1: Bəli, bir int ikiqat. Bəli. Auditoriya: [işitilemez]. HOPARLÖR 1: Long [Işitilemez]. Və sonra uzun uzun ikiqat edir. Auditoriya: heç, No. Uzun yalnız bir int edir. Bu memarlıq asılıdır əvvəl [Işitilemez] və int eyni ölçüsü var. [Işitilemez]. HOPARLÖR 1: Belə ki, uzun və bir int eynidir. Və sonra uzun uzun ikiqat int edir. Cool. Və sonra, son növü nədir? Auditoriya: Pointer. HOPARLÖR 1: Bəli, biz öyrəndik göstəricilər haqqında bir az. Və asılı olmayaraq pointer nə bu to-- işarə char ulduz ola bilər və ya int star-- həmişə bir göstərici 4 bayt var. Ki, haqqında suallar? Bəli? Auditoriya: [Işitilemez]? HOPARLÖR 1: Belə ki, uzun və int var Bu cs50 cihaz eyni. Auditoriya: Bu cihaz tamamilə əvəz. HOPARLÖR 1: Bəli. Belə ki, sonra uzun uzun ikiqat bir int edir. Auditoriya: Bu 32 bit edir? HOPARLÖR 1: 32 bit, evet. Auditoriya: Belə [Işitilemez]? HOPARLÖR 1: Bəli, bu deyil, əgər aydın, demək 32 bit götürməlidir. Auditoriya: Bu, bir şey demək olardı bir fərz kimi Aracın kimi memarlıq. 64 bit, yalnız şeylər üçün dəyişiklik longs və göstəricilər var. Onlar həm də [Işitilemez]. HOPARLÖR 1: Bəli? Auditoriya: Sual. Təcrübə viktorina biri belə ki, Bu imzasız int haqqında soruşur. Belə ki, necə müəyyən olunacaq int [Işitilemez] dan? HOPARLÖR 1: An imzasız da 4 bayt edir. Amma imzalanmış haqqında müxtəlif nədir int və imzasız int? Auditoriya: [işitilemez]. HOPARLÖR 1: Right. Bir mənfi dəyərlər təmsil edə bilər. Amma necə ki, bunu edir? Auditoriya: [işitilemez]. HOPARLÖR 1: Bəli, bu, 1 saxlayır bit işarəsi təmsil etmək. Imzalanmış bir az var ki, işarəsi təmsil edir. Və imzasız yalnız bütün müsbət deyil. Auditoriya: OK. Belə ki, ikiqat edir ki, bir float iki dəfə ölçüsü? HOPARLÖR 1: Double iki dəfə bir float ölçüsü, bəli. Auditoriya: bir göstərici yoxdur necə bir uzun uzun [Işitilemez]? HOPARLÖR 1: necə Belə ki, sual uzun uzun üçün pointer necə ki, yalnız dörd bytes zaman onun 8 bayt uzun uzun. Belə bir göstərici nə xatırlayıram, mahiyyətcə, çox baza dəyər. Auditoriya: [işitilemez]. HOPARLÖR 1: Bəli, belə bir pointer yalnız bir yaddaş yeridir. Belə ki, necə çox yer etməz ki, pointer işarə edir. Bu, yalnız izlemek üçün 4 bayt lazımdır ki, yaddaş yeri. Hər hansı digər suallar? Cool. Belə ki, son şey var standart çıxış edir. Siz tez-tez istifadə etməlidir Siz yadda bilər ki, kifayət qədər. Biz istifadə edərkən Amma bu printf, misal üçün. Və biz bu placeholders var format kodları çağırıldı. Belə ki, int üçün yüzdə c char, yüzdə i, və biz də faiz d istifadə edə bilərsiniz. Bu eyni şey. Lakin, ümumiyyətlə, CS50 biz faiz i istifadə edin. Float üçün yüzdə f. Uzun uzun üçün yüzdə ld və simli üçün yüzdə s. Eynilə, biz bir neçə istifadə etdik bu escape ardıcıllığı. Məsələn, backslash n yeni xətt üçün. Bu format etdiyiniz zaman üçün yalnız çap f üçün kodu. Bəli? Auditoriya: faiz d nədir? HOPARLÖR 1: Belə ki, sual faiz d üçün nə edir? Yüzdə d ints üçün. Yüzdə d və faiz i eynidir. Auditoriya: arasındakı fərq nədir backslash n və backslash r? HOPARLÖR 1: Belə ki, sual nə edir boşluq n arasında fərq boşluq r? Mən backslash r hesab That Auditoriya: Belə backslash r yalnız nəzərdə tutur Xəttin əvvəlində qaytarır həqiqətən yeni bir xətt davam olmadan. Belə bir backslash r çap və əgər Xəttin əvvəlində geri onda siz üzerine, daha stuff çap artıq olan məhsulları [Işitilemez]. Halbuki, n həqiqətən yeni gedir line və [Işitilemez] gedir. HOPARLÖR 1: Bəli, hər hansı digər suallar? Bütün hüquqlar. Mən onu əl gedirəm Davam edən Dan. [Alqış] DAN: Bütün righty. Mən başqa geniş söhbət olacaq ki, sinif ideyaları üçündür təxminən həftə iki nümayəndəsi və Həftə üç başlanğıc off başlayaraq yalnız bir yoludur tökmə ilə müəyyən bir növü bir dəyər kimi müalicə müxtəlif tipli dəyəri. Belə ki, biz chars ilə bunu edə bilərsiniz ints, ints üçün üzüb gedirdi və uzun longs ikiqat. Bütün bunlar yolları kimi istifadə edilə bilər bəzi rəqəmli dəyəri müalicə bəzi digər mənfi char rəqəmli dəyəri. Bəzi məsələlər bu ilə var, belə ki, Siz atıldıqları zaman gəlir, əlbəttə ki, ints üçün float kimi şeylər. Belə ki, bu bir az qəribə deyil. Biz 1.31 bir float. Biz 10,000 çoxaltmaq. Və sonra biz bir int kimi onu çap. Bu çıxış nə? 10,000 dəfə 1.31. Belə ki, 13,000 tahmin ki? Auditoriya: Mən 10,000 hesab edirəm. DAN: Mən 10,000 çarparaq alıram Mən onu tökmə alıram əvvəl. Auditoriya: Oh. Orada bir 9 olmaz və bəzi 0 ədəd? DAN: Siz bir qəribə rəqəm ola bilər. Belə ki, sağ, 1,3 dəfə 10,000. Belə ki, 13,000 var. Və bu əlavə to Auditoriya: 13,100. DAN: 13,100. , Rob edirik. Və bu əlavə weirdness-- Bu 9,9-- sadəcə bu tökmə, çünki başa aşağı olduğu yuvarlaqlaşdırma bu olmamalıdır. Bəli. Auditoriya: The tökmə olur Başqa bir şey sonra? DAN: çünki Mən ki, çap bu var əvvəl bu vurma yoxdur Bu tökmə yoxdur. Auditoriya: [işitilemez]. DAN: Mən, ilk tökmə olardı Bəli, 10,000 olan olacaq. Başqa bir şey? Cool. Belə ki, bu 13,099 edir. Niyə bu baş verir? Qeyri-dəqiqlik. Üzüb gedirdi mükəmməl deyil. Onlar yalnız bir nömrələri təmsil edə bilər əhəmiyyətli rəqəmlər müəyyən nömrəsi. Biz 8 sig əncir çap Belə ki, Bu float, biz bir növ almaq çirkin axtarır nömrəsi. Və çünki 1.31 dəqiq bilməz sadə təmsil olunacaq maşın iki səlahiyyətləri. Bu yaxın alaraq bitir belə olan qədər başa, tahmin bir az aşağı olan. Mənada etmək? OK. İndi işə fərqli bir yol var şərti hesabatları bütün bunu biz bir dəyişən haqqında qayğı. Belə ki, bu misalda, biz istəyirik istifadəçi bir tam almaq. Və sonra biz aradığınız ki, tam nə. Ehtimal ki, bu sıra bir və dörd arasında. Yəni biz üçün xahiş edirik nə var. Beləliklə, siz bir keçid yoxdur dəyişən adı. Sonra mümkün halları qurmaq Bu ola bilər qiymətləndirir. Belə bir halda, o, aşağı deyirlər. Və sonra çıxmaq qırmaq keçid şəraitində belə Siz davam deyil. Növbəti iki halda da belə halda iki və hal three-- Bu halda iki əgər yalnız aşağı düşür Bu kimi görür kodu ilk line Bu fasilə görür qədər üç halda. Belə ki, səbəb siz işi bir almaq yalnız çap aşağı, çünki mən burada bu fasilə var. I varsa, demək, bu fasiləsiz rədd Mən bu breakaway-- atdı əgər aşağı çap olardı və bundan sonra da orta çap və sonra qırmaq. Fasilələri mühüm hissəsidir belə şərtləri keçid və Onlar olmalıdır. Aydın ifadə deyil ki, heç bir halda default tərəfindən idarə olunur və keçid halda tökmə edilməlidir. Auditoriya: Belə ki, 1, 2, 3, 4 n olacaq? DAN: n ola bilər ki Dəyərlər. Bəli. Bəli? Auditoriya: Belə ki, zaman [Işitilemez] ki? DAN: Siz sonra aşağı çap olardı Bu orta çap olardı sonra qırmaq. Auditoriya: Niyə çap olardı orta əgər [Işitilemez]? DAN: bir halda altında Yəni hər şey fasilə altında düşür əvvəl. Belə bir halda çap altında olduğu kimi bu aşağıdakı çap edir. Bəli? Auditoriya: [Işitilemez]? DAN: Bu sayı yalnız bir xüsusi edir dəyəri bu dəyişən sağ, edə bilər? Ki, mənada edirmi? Bəli. Auditoriya: [Işitilemez]? DAN: Bəli, hal iki çap olardı orta və sonra qırmaq. Auditoriya: [Işitilemez]? DAN: Mən heç mi? Hansı digər data növləri Siz artıq keçid edə bilərsiniz? Auditoriya: Siz bilərsiniz hər hansı bir məlumat növləri var. Amma bu, yalnız chars dən çox şey deməkdir və ints və kimi stuff, çünki Bir göstərici keçid edirsinizsə ki, həqiqətən, mənada etmir hətta edək əgər yük keçid çünki üzən point, bunu dəqiq, siz həqiqətən olmaz hər halda bunu etmək istəyirəm. Belə ki, olduqca çox, yalnız ints və kimi chars və stuff. DAN: Siz açıq zaman Bəli, bu Bildiyiniz dəyərlər ki, mən hesab edirəm ki, ola bilər ki, keçid həqiqətən faydalıdır. Yaxşı? OK. Sayt elan üçündür, dəyişən uzanır. Mən kodu bu kiçik yığın Belə ki, Bu səhvlər dolu olardı. Və səbəbi Mən bu int elan edir i loop üçün bu çərçivəsində. Və sonra mən ki, istinad üçün çalışıram i loop daxilində ki, kənarda. Belə ki, əsasən, siz daxilində haqqında düşünmək olar bəyan ki, bir şey kimi qıvrım aşırma bir sıra daxili ilə yalnız bu qıvrım aşırma ərzində mövcuddur. Və siz cəhd və dəyişən istifadə əgər bu qıvrım aşırma xaricində, will compiler bir səhv almaq. Bəli? Auditoriya: Belə ki, bu bir iş deyil? DAN: Bu bəli, işləmir. Strings. String bir char *. Onlar eyni istəyirik. Onlar yalnız simvol göstəricilər var. Və hər hansı bir strings bitirmək lazımdır yalnız olan backslash sıfır ilə bir c konqres. Bu NULL terminator adlanır. Və null kapital N, kapital U, kapital L, kapital L-- kimi eyni deyil NULL terminator. Bu bir göstəricisidir. Bu bir xarakter. Onlar çox fərqlənir. Xatırlayıram. Bu, yəqin ki, viktorina olacaq. Mən viktorina görmədim. Bəli? Auditoriya: Belə NULL pointer, demək, deyil? DAN: Bəli. Auditoriya: [Işitilemez] edir? DAN: demək, malloc adlanır zaman almaq üçün kifayət qədər yaddaş yoxdur nə üçün xahiş edirik ölçüsü, malloc NULL qayıtmaq olacaq. Bir funksiyası zaman, əsasən var bir pointer qayıtmaq ehtimal, siz NULL çünki qarşı yoxlamaq lazımdır NULL olduqca good-- edir Bu, sort, zibil dəyəri. Bu qədər göstəricilərinə getmək kimi bir sıfır var. Zaman bir funksiyası zəng, ki, bir pointer qaytarır. Siz olmaq check istədiyiniz olacaq ki, pointer NULL deyil əmin NULL çox ümumi, çünki. Bu zibil qaytarılması sort var. Bir şey doğru getmək olmasaydı belə, yalnız əvəzinə NULL qayıtmaq. Auditoriya: [Işitilemez]? DAN: Bəli, bu var. Auditoriya: [Işitilemez]? DAN: Bu kimi Hərfbəh. Bu NULL terminator var. Bu kiçik N-U-L-L, əgər Siz yazım edirik. Auditoriya: Mən yalnız getdi geri və test. Və siz bir üzən point qoymaq üçün cəhd edin bir keçid daxil dəyəri, bu da fəğan lazımdır deyərək, bəyanat ifadə tələb tam növü. DAN: Burada getmək. Lakin Bəli, sual yenə nə idi? Auditoriya: [Işitilemez]? DAN: Belə kapital N, kapital U, kapital L, kapital L faktiki c şeydir. Bu NULL pointer və olacaq yalnız kimi müalicə. Siz heç cəhd və sehr edəcək NULL xarakteri və hər hansı bir bax Bu başqa yol. Bəli? Auditoriya: Belə max char qaytarılması və ya qeydlərdə bir şey olardı Eyni funksiyası təcəssüm [Işitilemez] kimi? Auditoriya: Belə ki, istinad edilir getchar dən char max qaytarılması və ya nə bu? Auditoriya: Bəli. Auditoriya: Bəli, ümumi belə bütün bu şeylər üçün müddət sentinel dəyərlərdir. Belə ki, GetInt dən int max qaytarılması kimi və getchar dən char max, bu əgər bütün hüququ kimi ehtimal bunlar bizə qayıdır bir şey yanlış getdi. Göstəricilər, biz yalnız var nə Bu sentinel dəyəri ki, hər kəs razılaşdırır. Və bu geri şey şeyi yanlış getmək zaman. Belə ki, char max biz istifadə etdiyiniz nə bir şey təmsil NULL və ya getchar kimi. Auditoriya: Siz GetChar test etdiyiniz əgər, yalnız NULL qoymaq olar? Ki, bir fərq edə bilər? DAN: Siz yalnız NULL kontrol bilmədi. Siz, çünki char max yoxlamaq üçün istədiyiniz funksiyası qaytarılması dəyəri bir xarakter bir pointer. Bəli? Auditoriya: Bu sual soruşur simli uzunluğu. NULL xarakter daxil edir? DAN: No. Və necə ki, simli uzunluğu həqiqətən vasitəsilə gedir, çünki dayandırmaq bilir simvol array qədər bir NULL xarakter görür. Və sonra bütün kimi sağ, mən bitirdim. Auditoriya: [Işitilemez] beş? DAN: Hello beş olardı. Yep. Belə ki, diziler davamlı yaddaş blokları. Onlar deyərək anında erişim var buruq da, serialın adını və sonra Siz getmək istədiyiniz hər hansı index aşırma, , onlar vasitəsilə sıfırdan dizine edirik 1 minus serialın uzunluğu. Onlar növü elan edirik Siz saxlanılması edirik şey array serialın adı, və sonra nə ölçüsü array. Belə ki, bu uzunluğu char array edir bu dəyərləri var ki, altı. Bəli? Auditoriya: [Işitilemez]? DAN: Bəli. Auditoriya: [Işitilemez]? DAN: Siz gedir nə varsa massivinə artıq. Belə ki, əvəzinə bu müəyyən edə bilər kimi, və demək, char, nə adı sizin array boş mötərizədə buruq bərabərdir ki, H vergül E vergül L vergül L vergül burğu O vergül NULL xarakter və buruq brace. Ki, bir bəyannamə kimi işləmək olardı. Auditoriya: [Işitilemez]? DAN: Sonra lazımdır ölçüsü artıq. Auditoriya: [Işitilemez]? DAN: Bəli. Bütün righty. Command line dəlilləri bir yoldur istifadəçi kimi daxil almaq əsas arqumentlər. Main iki dəlilləri edir. Olunur ki, dəlilləri sayı skript satırı və a boyunca keçdi string vektor və ya bir string array dəlilləri bütün. Mən demək, kimi bir funksiyası zəng 1 yer, 2 yer, üç bir dot, argc 4 olacaq. Və argv 0 bir dot olardı. Argv1 1 olardı. argv2 2. argv3 olardı olardı 3, xüsusi halda. Bəli? Auditoriya: [Işitilemez]? DAN: serialın son element Bu array uzunluğu argc, çünki plus argb biri, son element NULL pointer edir. Bu argc plus 1. Mən yalnız onu bildirib ki, halda belə 0 argv olunacaq bir nöqtə deyil. argv 1 1. argv2 3 3 2. argv edir. bir böyük olan argv 4, argc daha NULL ola bilər. Və NULL pointer var. Bəli. String, çünki ki, var bir char ulduz bir göstəricisidir. Belə ki, eyni tipli olmalıdır. Bəli? Auditoriya: iki sual. Belə bir fərq arasında nə bir növü başqa bu və GetString istifadəçi mühərriki? Və iki, ərzində saxlanılır son yaddaş? Belə ki, kimi, GetString ki [Işitilemez] olacaq? DAN: Harada saxlanılır? Saxlandığı bilmirəm. Auditoriya: Belə ki, həqiqətən, necə hansı bilmək Siz bu dəlilləri var deyirik fəaliyyət yığını saxlanılır? Belə ki, argc və argv dəlilləri əsas var və onlar yığını, və ya, həqiqətən, yalnız siz düşüncelerinizi bax yığını start. Digər hissəsi nə idi sual? Auditoriya: Belə ki, nə var [Işitilemez]? DAN: Bəli, yalnız fərqli bir yol var istifadəçi daxil almaq. Bu bir az daha səmərəli və scripts üçün handlear var çünki yalnız əsas dəlilləri keçə bilər funksiyası daha gözləmək olan daha istifadəçilər üçün hər hansı bir istifadəçi yoxdur. Auditoriya: Və Bəli, strings almaq [Işitilemez] olardı. Bu sizə lazım olan məhsulları saxlamaq olardı. DAN: Bəli? Auditoriya: [Işitilemez]? DAN: Bəli, argv 0 həmişə daxildir dot funksiyası zəng doğramaq. Bəli? Auditoriya: [Işitilemez]? DAN: Bəli, dəlilləri hər var NULL xarakter başa çünki onlar strings var. Auditoriya: [Işitilemez]? DAN: Bəli, argv argc bir NULL pointer edir. Auditoriya: [Işitilemez]? DAN: Bəli Oh. Bəli, sorry. Auditoriya: Belə [Işitilemez]? DAN: Siz var idi, əgər sual Belə ki, command line dot, 2, 1 bir nöqtə doğramaq ki command line sayı arqumentlər iki olmaq və ya üç olardı? Auditoriya: Mən bu deyil düşünürəm həqiqətən Fərq. Mən oh, siz keçə bilmədi, deyirlər hər hansı bir command line dəlilləri, Aydındır ki, siz funksiyası adlanır. Mən vocally istisna edirlər command line funksiyası Bu belə olsa dəlilləri argv daxildir. DAN: Amma bu test-- idi əgər yeah-- və də bir şey demək əgər argc 3 bərabərdir kimi, Siz təhlükəsiz daimi istəyirik. Bəli? Auditoriya: [Işitilemez]? DAN: Mən əgər əvəzinə bu zəng edirəm argc və simli argv mötərizədə lakin eyni növ saxlanılır və yalnız adlı kimi müxtəlif onlara bir şey və b, hələ işləmək olardı? Və hələ işləmək olardı, Siz izlersin olardı əvəzinə argc-- istifadə bir və b istifadə edin. Bəli? Auditoriya: [Işitilemez]? DAN: Belə ki, sual GetString edir yığın yaddaş saxlamaq niyyətindədir GetString char, çünki *. Bu, çünki yığın yaddaş mağazalar faktiki ərzində indi malloc çağırır GetString həyata keçirilməsi. OK, hərəkət. Təhlükəsizlik. Belə ki, həqiqətən təhlükəsiz, heç bir etibar bir və hər hansı bir heç bir imkan Sizin informasiya, hansı nə hər kəs öz maşın qurur öz əməliyyat sistemi, bütün onların sıfırdan proqramları, və açıq-aydın hər hansı digər maşın əlaqə yoxdur internet vasitəsilə. Belə ki, kompüter etibarsız edir. Onlar, həqiqətən, var. Biz digər insanların etibar etmək. Və təhlükəsizlik ideyası edirik ki, məbləği məhdudlaşdırmaq üçün çalışırıq sizə lazım olan inam. Və vasitələrdən biri bunu Kriptoqrafiya vasitəsilə. Kriptoqrafiya, mahiyyətcə edir biz sirləri var. Bəzən biz sirlərini keçmək lazımdır yanaşı vasitəsilə, demək, internet və ya başqa şeylər. Və biz istəmirik Bu sirlərini bilmək. Beləliklə, biz bir şəkildə bizim sirlərini şifrelemek ki, biz heç bir anlamaq bilərsiniz ümid edirik. Beləliklə, biz used-- bu class-- kurs vasitəsilə Caesar parol kimi şeylər və Həm də çox çox olan [Işitilemez] şeyi Şifreleme etibarsız yolları. Onlar anlamaq asan edirik nə onlar və sirri nə var. Real dünya daha çox istifadə edir mürəkkəb şifreleme sxemləri. Və biz daxil deyil daha çox. Ayıklama. Gdb yaxşı deyil. Mən bu qeyd gedirəm. Gdb bütün vaxt, zaman hər istifadə zaman bir problem var. Gdb faydalı əmrləri Siz bir xətt ya keçmək ki, qırmaq sayı, bir funksiyası adı, mahiyyətcə harada kodu dayandırmaq istəyirəm, və nəzarət edə bilər. Print dəyişən edir və çap ki, dəyişən ki, nə icrası point. Yanında icra hərəkət bir addım birlikdə. Və funksiyası daxilində addımlar addım icrası. Digər şeylər necə olan run Siz, həqiqətən, sizin kodu axır. Davam lazım olan bütün addımları atır növbəti fasilə nöqtəsinə almaq üçün. Və bir çox başqaları var. Onları gözləyirik. Onlar böyük istəyirik. Bəli? Auditoriya: [Işitilemez]? DAN: Bəli, ayıklama edir. Belə ki, bir ayıklama bir proqramdır ki, Siz proqram debug imkan verir. Bu hatalar üçün hesab edir ki, bir proqram deyil Siz, baxmayaraq ki, böyük olardı. Və axtarış mənim üçün son deyil. Söhbət axtarış növləri belə Bu sinif haqqında xətti axtarış var, siz hər vasitəsilə baxmaq yalnız Axtarış sahəsi element, bir bir zamanda element, nə tapmaq qədər Siz və ya çatana qədər aradığınız Axtarış sahəsi sonuna olan Siz tapa bilmədi ki, qeyd aradığınız ki, element. Və bu, ən yaxşı daimi vaxt alır olan 1 0 və pis xətti at n 0 olan zaman. Ehtiyacı olan ikili axtarış, kasıb elementləri. Siz elementləri ortasında getmək, görmək əgər aradığınız element element daha böyük və ya daha kiçik Əgər ortada istəyirik ki,. Bu böyük, siz alt ki, Axtarış sahəsi sizin edir Cari yeri, orta, və bu proses yenidən başladın. Bu kiçik, siz demək baxmaq Bəli, nə qədər var the-- ki? Auditoriya: [Işitilemez]? DAN: Bəli. Tədris edilmişdir ki, hansı hər hansı bir sort sinif test üçün ədalətli oyun. [Gülüş] DAN: Siz idi yoxdur ki, bir problem set üçün bunu, ədalətli test üçün oyun. Auditoriya: Biz artıq getmək bilər necə to-- DAN: Bu artıq getdi olunacaq. HOPARLÖR 2: faktiki kodu [Işitilemez] study.cs50.net edir. Siz təcrübə problem baxmaq belə, əgər bu birləşmə sort səhifə study.cs50.net, kodu var sort daxil həyata keçirilməsi üçün. Belə ki, həyata yoxdur özünüz axşam. Amma əmin olun deyil, anlamaq yalnız ezberlemeye. Auditoriya: [Işitilemez]? HOPARLÖR 2: Bu birləşmə sort səhifə study.cs50.net, təcrübə var Siz vasitəsilə basın ki, əgər problem problem, çox sonunda orada bir birləşməsi olan həlli, sort həyata keçirilməsi. Amma əmin olun siz bunu dərk deyil, yalnız ezberlemeye daha və ya aşağı çıxarmaq. Auditoriya: Və mükəmməl etibarlı İmtahana problem olacaq Burada kimi bir şey bir siyahısı. Bu siyahıda sonra kimi baxmaq nə Marka növ bir addım və ya durub sort və ya hər hansı. Siyahısının tam iteration. Siz ehtiyacı başa yoxdur belə, hətta Bunun üçün kodu, siz anlamaq lazımdır gedir necə bilmək kifayətdir Bu array değiştirmeyle olunacaq. DAN: Bu mənim üçün var. [Alqış] LUCAS: Hey hər kəs. My name Lucas edir. Mən bütün recursion haqqında danışmaq üçün gedirəm biz öyrəndik ki, növ və bütün göstəricilərinə az. OK? Bütün Belə ki, ilk recursion. Ki, demək nə deməkdir bir funksiyası recursive edir? Auditoriya: özünü çağırır. LUCAS: OK, Bəli, özü çağırır. Belə ki, məsələn bu şəkil kimi. Bu daxili şəkil kimi bir şəkil və s. Belə ki, məsələn, siz Dan kimi yaxşıdır bilər ki, ikili axtarış bəhs edirdi. Bir yol olan binar axtarış recursive siz etdiyiniz faktdır bir sıra tapmaq üçün çalışırıq. Belə ki, orta gedin. Orada nömrələri əgər sonra yoxlamaq sol və sağ. Və sonra sayı tapmaq əgər sol olacaq, eyni var yenidən axtarış görən kimi bir şeydir, lakin yalnız siyahıda sol. Bu səslər necə Belə ki, kimi recursive var. Sizlərin recursive var nə ki, var birləşmə sort üçün həll. OK, belə ki, burada bir misal var. Belə ki, mən seçmək istəyirəm ki, deyək 1-dən n bütün nömrələri. Mən dərk edə bilər ki, n məbləği n plus n minus 1 1 təşkil edir. Amma sonra, mən n minus 1 baxsaq plus n minus 2 plus 1, ki, eyni cəmlənməsi nömrələri kimi şey n minus 1 up. Mən bərabər məcmusudur demək olar n minus 1 n plus məbləği bərabərdir. Ki, mənada edirmi? Mən də başqa bir şey var ki ki, bu, baza halda deyilən up nömrələri məbləği sıfıra sıfır olacaq. Belə ki, tezliklə mən çox almaq kimi sıfır, mən sayılması dayandırmaq. Ki, mənada edirmi? Belə ki, burada necə bir misal var Mən həyata keçirə bilər. Mən bəzi bu funksiyası var. Ki, bir tam n edir. N əgər Belə ki, burada ilk yoxlamaq az və ya sıfıra bərabərdir. Belə ki, sıfıra az və ya bərabər, mən bizim əsas işi olan, sıfır geri. Əks halda, mən yalnız ola bilər n plus nömrələri məbləği olan n minus bir bir. Mənada etmək? OK. Belə ki, burada bu kimi görünür nə. Siz 2 bərabərdir məbləğ 2 plus 1 cəmidir. Və 1 bəzi plus 1 0 olan 0 məbləği. Mənada etmək? Biz yığını baxsaq Belə ki, proqram, bu kimi görünür nə. Birincisi, biz əsas funksiyası var. Və sonra əsas funksiyası məbləği 2 çağırıb. Və sonra məbləği 2 oh, demək gedir, məbləği 2 2 plus bir məbləğ təşkil edir. Mən yığını 1 məbləği əlavə edin. Və 1 cəmidir məbləği zəng etmək üçün gedir 0, həmçinin əlavə olacaq yığını. Və var ki, bunlar sonra hər bir üst qayıtmaq digər olanları davam əvvəl. Belə ki, məsələn, burada 0 məbləğ, ilk, 0 qayıtmaq üçün gedir. Və sonra 1 məbləğ seçin. Sonra 1 məbləği gedir 2 yekunlaşdırmaq 1 qayıtmaq. Və nəhayət, 2 məbləğ gedir əsas 3 qayıtmaq üçün. Ki, mənada edirmi? Bu necə anlamaq üçün həqiqətən vacibdir yığını iş və cəhd Bu mənada edir görmek. OK, belə ki, çeşidlənməsi. Belə ki, niyə əhəmiyyətli çeşidlənməsi ilk növbədə? Niyə biz qayğı olmalıdır? Hər kəs? Mənə misal vermək? Bəli? Auditoriya: [işitilemez]. LUCAS: OK, Bəli. Belə ki, daha səmərəli axtarış edə bilərsiniz. Bu yaxşı bir yoldur. Belə ki, məsələn, biz bir çox var şeylər, əslində, bizim yaşayır ki, sıralanır. Məsələn, lüğət. Bu, bütün üçün çox vacibdir üçün bir növ sözləri ki, biz asanlıqla əldə edə bilərsiniz. Belə ki, nə söylədiyinin var. Siz daha səmərəli axtarış edə bilərsiniz. Bu bir olardı necə ağır düşünün Bu sözləri olan lüğət təsadüfi qaydada. Siz olduqca çox, baxmaq lazımdır hər bir söz tapmaq qədər aradığınız ki, söz. Siz də Facebook istifadə edirsinizsə, zaman Siz dostları baxırıq, sen Facebook qoymaq görmək olacaq sizin yaxın dostu olanlar üst var Siz qədər danışmaq deyil ki. Siz altındakı bütün yol getmək Sizin dost siyahısı, siz görmək olacaq Siz yəqin ki, hətta çıxmayan insanlar Siz dost olduğunuzu unutmayın. Və Facebook növ, çünki necə əsasında sizin dost onlar üçün yaxın. Belə ki, data təşkil edir. Həmçinin Pokemon. Belə ki, bütün Pokemons olduğunu görəcəksiniz nömrələri var. Və asan kimi məlumat daxil yol. Auditoriya: Pokemon giriş. LUCAS: Bəli. Auditoriya: [işitilemez]. LUCAS: Yep. OK, belə ki, seçim sort. Seçim sort seçin gedir siyahısı kiçik çeşidlənməmiş dəyəri hər hər iteration vaxt. Bu cür siz ki, növ kimi Başını siz çalışdığınız zaman tərəfdən siyahısını düzmək. Əsasən, siz bütün baxmaq kiçik sayı. Siz sıralanır siyahısı qoyun. Və sonra üçün baxmaq növbəti kiçik nömrəsi. Və sonra bunu saxlamaq və s. Belə ki, seçim sort siz əsasən hər zaman kiçik seçin çeşidlənməmiş dəyəri. Sıralanır sonunda qoyun siyahısına daxildir. Və bunu saxlamaq. Belə ki, tez görək nə bu kimi görünür. Belə ki, burada sıralanır var və çeşidlənməmiş siyahısı. Siyahı sıralanır Belə ki, ilkin boş. Və sonra mən seçmək üçün gedirəm 2 Burada kiçik sayı. Mən sayı 2 almaq və mən qoymaq siyahısına qarşısında. Və sonra mən növbəti kiçik baxmaq 3 olan element. Mən sonunda qoyun sıralanır siyahısı. Və sonra mən bunu saxlamaq. I 4 tapmaq və sonunda qoyun. 5 tapmaq və sonunda qoyun. Və bu dəfə necə bütün baxmaq Mən sonu qoyun söyləyirəm əsasən, iki dəyərləri dəyişdirmə. OK? Və sonra son bir, yalnız daha bir element var. Belə ki, artıq sıralanır. OK, belə ki, durub sırala. Insertion sort siz də olacaq bir sıralanır edərək ki, bir şey və çeşidlənməmiş siyahısı. Yalnız bir şey hər zaman ki, Siz sıralanır bir element əlavə edirik siyahısı, yalnız bir element seçin ki, çeşidlənməmiş siyahısı qarşısında. Və sonra nə tapmaq olacaq mövqeyi sıralanır olmalıdır siyahısına daxildir. Bu belə nə görmək edək bu, daha anlamlı. Belə ki, ilkin, məsələn, mən çalışıram in sayı üç daxil siyahısı sıralanır hissəsi. Belə ki, siyahı bir şey yoxdur. Mən yalnız sayı 3 qoya bilər. İndi mən nömrəni 5 əlavə etmək istədiyiniz siyahısı sıralanır hissəsi. Mən sayı 5 oldu. Mən bu 3-dən böyük fark. Mən 3 sonra var ki, bilirik. Mən 3 və 5 qoydu. Sonra 2 saylı əlavə etmək istəyirəm. Mən sayı 2 həqiqətən olduğunu qeyd sonra 3 və 5 də davam. Mən, həqiqətən, bütün qoymaq lazımdır siyahının əvvəlində yol. Mən, mehriban, bütün keçmək lazımdır sıralanır siyahısına mən bilərsiniz elementləri sayı 2 otaq etmək. Sonra sayı 6 oldu. Mən bu 5 sonra olmalıdır ki, görəcəksiniz. Mən orada qoyun. Və nəhayət, mən sayı 4 oldu. Mən onu qeyd 3 və 5 arasında olacaq. Və sonra mən orada qoymaq və shift bütün digər elementləri. Mənada etmək? Bubble Sort. Belə ki, bubble sırala etdiyiniz nə əsasən gedir, biz bubble zəng do-- üçün Siz list-- keçmək sort çünki Mən yalnız göstərmək əgər həqiqətən yaxşıdır Siz bu kimi və müqayisə etmək olacaq qonşu ədəd. Və dəyişdirmək olacaq onların sıralara değilseniz sağ üçün. Belə ki, əsasən, nə gedir burada baş verir, məsələn, 8 və 6 var. Siz sıralanır sifariş bilirəm həqiqətən 6 və 5, ola? Beləliklə, siz sifariş dəyişdirmək olacaq. Sonra mən burada 8 və 4 görürük. Mən eyni şey. Mən yenə dəyişdirmək. Və nəhayət, 2 və 8. Mən də onları dəyişdirmək. Bu Bubble Sort çünki sonra deyirlər bu tekrarlamalar hər, həqiqətən, Bu siyahıda ən böyük sayı bütün alır siyahısı sonuna yol. Ki, mənada edirmi? Onu dəyişdirmə saxlayır, çünki və sağ hərəkət. OK, belə ki, bu ikinci iteration edir. Bu eyni şey olardı. Mən bir svop edəcəyik və sonra son bir. Svopları var Mən ki, və siyahısına çeşidlənir. Bubble Sort Belə ki, biz əsasən saxlamaq siyahısında keçir və dəyişdirmə şeyi mən etmədim ki, görürsünüz qədər ki, iteration bunu hər hansı svopları olan siyahısı artıq çeşidlənir deməkdir. Mənada etmək? Nin bir az danışmaq edək Vaxt çalışır. Belə ki, uşaqlar Böyük xatırlayıram O, Omega, və Theta? Bəli? OK, Big O, ilk növbədə, nədir? Auditoriya: [işitilemez]. LUCAS: Bəli, bu ən pis halda deyirlər yalnız o deməkdir ki, uzunluğu, nə qədər proqram gözləyirik run etmək üçün. Kimi, baxımından kontormerinin Təfərrüatlar Bu iki halda n. Bu elementlərin sayı ən pis halda siyahısı. Kimi, ən pis mümkün halda. Bubble Sort Belə ki, məsələn, biz n kvadrat Big O var. Niyə biz var? Niyə Bubble Big O n kvadrat Sort edir? Auditoriya: [işitilemez]. LUCAS: Bəli, belə ki, ən pis halda olacaq Mən n tekrarlamalar etmək lazımdır. Belə ki, tekrarlamalar hər gedir Sonda ən böyük element gətirmək siyahısı. Belə ki, ən pis halda mən ki ki, bir şey n dəfə etmək. Və bu dəfə hər biri üçün, mən var Mən müqayisə var, çünki n svopları edə hər iki elementləri. Bu n kvadrat nə ki, var Bu n dəfə n çünki. Sonra seçim sort də n kvadrat edir Çünki, hər iteration, mən var hər bir element baxmaq siyahıda. Və sonra, kiçik tapmaq Mən o deməkdir ki, n elementləri vasitəsilə baxmaq. Və mən ki, n dəfə var Mən bütün n elementləri seçin. Bir durub sort də n kvadrat edir ən pis ssenari olacaq, çünki , bir olmaq, daxil var n nömrələri, sağ? Mən artıq mən gedirəm bilirik ki, n tekrarlamalar var. Amma mən həmin nömrələri hər biri üçün, əgər ədəd bütün baxmaq sıralanır siyahısı və bu bütün yol qoymaq qarşısında ki, n kvadrat olacaq Bu n dəfə n yenə olacaq, çünki. Mənada etmək? Nə omega haqqında? Auditoriya: [işitilemez]. LUCAS: Bu yaxşı ssenari var. Belə ki, bir çox dəfə üçün, kimi Ən yaxşı ssenari deyil, çeşidlənməsi siyahısı artıq çeşidlənir zaman. Beləliklə, siz həqiqətən yoxdur heç bir şey. Bubble Sort ən yaxşı var n ssenari. Sizlərin niyə bilirsinizmi? Auditoriya: [işitilemez]. LUCAS: Bəli, siz takip əgər data rasionu hər hansı svopları olub və ya Siz bir şey var əgər, müəyyən kimi bir iteration əgər var idi, əgər doğru siyahısı artıq, əsasən, çeşidlənir nə baş verəcək Mən gedirəm hər iki dəyişdirmək üçün cəhd edin qonşu elementləri. Mən gedirəm svopları var. Mən yalnız hemen geri. Belə ki, mən yalnız idi o deməkdir ki, siyahısı bir dəfə keçir. Mən baxmaq, çünki Belə ki, n var n elementləri. Niyə seçim sort n kvadrat? Bəli siyahısı sorted olsa belə, üçün Seleksiya sort hər iteration, mən minimum element seçin. Belə ki, mən baxmaq üçün o deməkdir ki, çeşidlənməmiş bütün elementləri siyahısını və minimum tapmaq hər iteration üçün. Ki, mənada edirmi? Və durub qılınc, çünki n edir Mən daxil çalışıram ki, hal nömrələri və nömrələr bütün, mən onları əlavə etmək üçün cəhd edin, mən onlar ki doğru mövqe var. Mən bütün digər yoxlamaq getmək yoxdur çeşidlənməmiş siyahısı nömrələri. Bu n olacaq nə ki, var. Mənada etmək? Və teta nədir? Auditoriya: [işitilemez]. LUCAS: Nə, sorry? Yenə deyirəm. Auditoriya: [işitilemez]. LUCAS: Exactly. Belə ki, yalnız seçim edə bilərsiniz Birləşdirmə saxlanılır sort thetas var. Yalnız teta var, çünki ki Big O və Omega eyni olduqda. OK. Və nəhayət, log n sort daxil. Dan deyirdi kimi, sonra, sort Birleştirme cür eyni şəkildə kimi ki, ikili axtarış. Beləliklə, siz siyahısını almaq. Və yarısında kəsilmiş olacaq. Və sonra onları kəsmək kiçik yarıya indirir. Və sonra onlara daxil. Siz uşaqlar sağ, unutmayın ki? OK, o deyirdi kimi. OK, göstəricilər. Belə bir göstərici nədir? Auditoriya: [işitilemez]. LUCAS: bir ünvan. OK. Mən David bir dəstə göstərir ki, bilirik binky video və hər şeyi işarə bir-birinə. Amma göstəricilərinə düşünmək istəyirəm sadəcə bir ünvan kimi. Belə ki, edir ki, bir dəyişən var ünvan saxlamaq. Belə ki, yalnız bu xüsusi dəyişən ki, dörd bayt uzun. Bir şey ki, pointer Unutmayın, bizim 32-bit üçün uzun həmişə dörd bytes maşın halda belə Aracın. Və yalnız yer var içərisində bir dəyişən. OK, belə ki, əsasən, bu yaddaş var. Belə ki, yaddaş hər bir blok həqiqətən var Bu ünvanı olan etiket, slotty yaddaş. Belə ki, mən ola bilər o deməkdir ki, bir pointer işarə Bu ünvanlarını hər hansı bir. Beləliklə, biz göstəricilərinə istifadə edəcəyik səbəbi Mən yeri yadda varsa ki, müəyyən bir dəyişən bir yaddaş. Və uşaqlar unutmayın o biri ki, Mən bir funksiyası varsa hallarda idi Mən, həqiqətən, əgər istəyirəm reals svop, Mən, həqiqətən, bir göstərici göndərmək lazımdır. Dəyişən. Ki, uşaqlar yadınızdadırmı? Fərq between-- adı nədir? Dəyəri və zəng ilə zəng istinadən, sağ? Bəli, OK. Belə ki, dəyər zəng. Siz yalnız bir dəyişən göndərmək zaman Yalnız bir dəyəri göndərilməsi etdiyiniz fəaliyyət göstərir. Beləliklə, siz həqiqətən gönderiyorsanız dəyişən surəti. Və proqram az qayğı bilməz əslində eyni dəyişən əgər surəti edir. Və istinad deməkdir zəng Mən, həqiqətən, surəti göndərilməsi alıram ki, dəyişən gösterci. Belə ki, mən göndərilməsi alıram o deməkdir ki, ki, dəyişən yer. Mən yeri var hiss dəyişən, mən zəng zaman funksiyası göstəricilər ilə, mən, həqiqətən edə edirəm əsas idi ki, data dəyişir. Mənada etmək? Baxmayaraq ki, bu göstərici surəti edir pointer hələ də real ünvanı var Mən dəyişmək istədiyiniz ki, dəyişən. Mənada etmək? Belə ki, göstəricilər yaradılması. Həmişə göstərici var, saxla Bu işarə növü bir ulduz və sonra. Və sonra adını qoydu. Belə ki, zaman unutmayın ki, nə ulduz, bir göstərici kimi nə dəyişən ki, siz ki, yazın. Belə ki, burada ulduz, misal üçün, bu bir pointer və tam. Və sonra char ulduz göstərici char ulduz və s. Bəli? Auditoriya: Biz varsa n pointer x ulduz. Mən x bir pointer yaradır bilirik. Bu da tam x bəyan varmı? LUCAS: OK, belə ki, n star x deyəndə, Bir bir pointer yaratmaq deyilik dəyişən x. Siz x adlı göstərici yaradılması edirik. Auditoriya: [işitilemez]. LUCAS: I n star x deyəndə, mən hey, yaddaş, mən gedirəm deyərək Bu üç qutuları almaq. Mən ki, demək gedirəm olan x olacaq gedən bir göstərici olmalıdır. Və göstəricilər haqqında maraqlı bir şey biz ki, demək ki 32-bit maşın üçün 4 bayt. Və səbəbi, çünki 4 bayt 32-bit var. 64 bit həqiqətən var ki, və maşın göstəricilərinə ünvanları 64 bit uzun ki. Belə ki, yalnız o deməkdir ki, ölçüsü maşın URL fərqlidir. Belə ki, sened və Dereferencing. Iki operatorları var ki, Sizlərin yadda olmalıdır. İlk işareti edir. İkinci ulduz edir. Ki, ulduz və bu səhv almaq etməyin çünki, unutmayın ki star Bu halda, siz n ulduz var. Bu birlikdə bütün şey kimi. N kosmik ulduz var. Belə ki, bu növü var deməkdir. Siz ki, saxla dəyişən ulduz, sen növü haqqında danışır. Əgər yalnız ulduz və zaman dəyişən adı, o deməkdir ki, Siz göstərici dereferencing etdiyiniz Siz aradığınız o deməkdir ki, pointer, ünvanı tapmaq bu , işarə ünvana gedir, və zaman axtarır siz var. Mən sizə zaman ki, mənim tələbə bildirin star, siz hesab edirəm ki, lazımdır tərkibi kısaltmasıdır. Bir göstərici var belə, əgər siz star pointer, bunun var göstərici content. Belə ki, işarə nə getmək və daimi məzmununa baxmaq. Və işareti eyni ünvanı kimi bir şey. Mən kimi birimiz bir dəyişən var Belə ki, edək int a bərabərdir etdim ki, 3-- Mən ünvanı tapmaq istəyirsinizsə dəyişən yaddaş, yalnız edə bilərsiniz bir işareti. Belə ki, bir ünvanı var. Mənada etmək? Belə ki, burada bir misal var. Bu int b və int c yoxdur. 3 vasitə bərabərdir int Belə ki, Mən yaddaş getmək üçün gedirəm. Və mən bir slot tapmaq üçün gedirəm və burada sayı 3 qoydu. Və sonra int b 4 bərabərdir. Mən eyni şey üçün gedirəm. Yaddaş getmək və bir sıra qoymaq Qutuları biri 4. Və int 5 bərabərdir. Başqa qutusu tapmaq və bir sıra 5 qoydu. Belə ki, həyata bu xətt nə edir? n star pa işareti a bərabərdir. Belə ki, ilk növbədə, n star pa. Bu nə edir? Auditoriya: [işitilemez]. LUCAS: Bəli, belə n star pa, ilk, pa adlı göstərici bəyan edir. Və sonra dəyərini təyin edir ki, pointer bir ünvanı olmalıdır. Belə ki, bir işareti. Sonra mən star PB əgər, bir ulduz pb nədir? Oh, sorry. Bu da yoxdur. n star pb. Mən ulduz pc deməkdir. Üzüldüm. Bu eyni şey. Amma indi bir göstərici yaradılması ar yaxşı deyiləm sonra c bir pointer b və. Bəli? Auditoriya: [Işitilemez]? LUCAS: Bəli. Belə ki, yaddaş getmək və siz getmək əgər pa üçün designator ki box, Siz həqiqətən olacaq bir ünvanını görürük. OK? Bəli? Auditoriya: [Işitilemez]? LUCAS: Bəli, pointer bir ünvan. Heç vaxt unutmayacağıq. Bu ən mühüm kimi göstəricilər haqqında hissəsidir. Saxlanılması və ünvanı var bəzi dəyişən. Başqa bir şey? Hər hansı digər suallar? OK. Belə ki Pointers və Diziler. Xatırla ki, array 3 int nə zaman, əsasən, nə edirəm mən cür deyiləm , bir pointer elan. Belə ki, array cür bir göstərici kimi yaddaş xüsusi yer olan I integers üçün üç yuva ayrılıb. Ki, mənada edirmi? Mən int array 3 nə zaman, belə ki, mən nə edirəm bunu, əsasən, üç yaradılması yaddaş slots. Mən yalnız yaddaş üç yuva tapa bilərsiniz. Mən sonra, bir ulduz array, bunu əgər əsasən serialın məzmunu deməkdir, Mən getmək, mən göstərici silmək deməkdir Bu işarə ki, yerə, və mən bir nömrəli qoydu. Və sonra, mən star array plus 1 əgər, ki array bunu eyni şey var yalnız mən getmək deməkdir, bir Mötərizədə Bu işarə ki, yer. Və sonra plus 1 markalar Mənə bir mövqe keçmək. Mən, həqiqətən, bu vəzifəyə getmək və sayı iki qoydu. Və sonra, nəhayət, mən bunu array plus 2, harada getmək da serialın işarə. Və sonra mən yaddaş blokları hərəkət. Və sonra mən burada üç qoydu. Bəli? Auditoriya: Belə star array sadəcə ilk nöqtəsi etdi. Və yalnız, çünki, 1 əlavə edə bilərsiniz biz yalnız həqiqətən etdiyiniz ilk ünvanı sened. LUCAS: Bəli. Niyə biz, məsələn, sıra deyirlər 0, array 1, array 2? Mən niyə 0 etməliyəm deyirəm 1, 2, 3 əvəzinə 1, 2, 3? Səbəblərindən biri, bir kompüter proqramçılar başlamaq üçün tercih 0-dan hesablanması. Array 0 nə zaman, çünki iki deyil, Bu array etməklə eyni şey var deməkdir plus 0, mən getmək ki mövqeyi, və mən deyil hər hansı bir yaddaş blokları keçin. Mən hər hansı bir yaddaş blokları hərəkət etmir. Bəli? Auditoriya: [Işitilemez]? LUCAS: Belə ki, o nə xahiş bunu arasında fərq bu və ya malloc edir. Fərqlərdən biri ki, int array 3 yaradır yığını array. Mən malloc nə zaman, onu yığın yaradır. Ki, mənada edirmi? Belə ki, necə malloc həqiqətən işləyir? Belə ki, niyə biz hətta malloc istifadə etmək lazımdır? Rəqəmlər sizin compiler cür bütün Siz bəyan etdi ki, dəyişənlərin. O bütün kosmik yaradır yığını onların. Belə ki, dəyişənlərin bütün gedir haradasa yığın olmaq. Belə ki, burada mühit dəyişənlər edir. O dəyişənlər üçün Belə ki, əsasən, space yaddaş ayrılır dəfə tərtib. Belə ki, kompüter o deməkdir ki, bu dəyişənlərin bütün bilirik əvvəlcədən. Bu nə dəyəri bilmək lazım deyil Əgər siz onları qoymaq olacaq. Amma necə bilməlidir sizə lazım çox yaddaş. Amma indi ki, məsələn, deyək bir sıra yaratmaq və ya qəbul etdiyiniz siz alaraq etdiyiniz string istifadəçi. Siz bilmirəm nə qədər string Məsələn, olacaq. Belə ki, dəqiq necə çox bilmirəm yaddaş blokları sağ, ayrılması? Belə ki, həqiqətən mənada etmir 100 simvol qoymaq demək. Və sonra istifadəçi 150 yazır nə olur? Siz berbat olacaq. Belə ki, əsasən, necə əmin ola bilməz siz ayrılması lazım olan çox yaddaş zaman proqram tərtib edir. Siz yalnız run vaxt bilirik. Siz yığın var nə ki, var. Belə ki, yığın yaddaş gedir Siz ərzində ayrılması edirik ki, proqram çalışan müddəti. Belə ki, əsasən, siz malloc nə zaman, nə Siz yaddaş ayrılması yapýyorsun Siz etdiyiniz o deməkdir ki, uzunluğu, o anda hüququ qərar sizə yaddaş olmalıdır. Siz ayrılması etdiyiniz zaman ki, var. Ki, mənada edirmi? Belə yığını dəyişənlər var, unutmayın ki, tərtib vaxt yaradılmışdır. Və sonra yığın dəyişənlər var Siz getmək kimi yaradılmışdır ki, Məsələn malloc ilə. Auditoriya: [Işitilemez]? LUCAS: Belə GetString edir malloc zəng. Mənə malloc danışaq, və Mən GetString izah edəcəyik. Belə ki, malloc eyni şeydir yaddaş ayrılması kimi. Belə ki ayırmaq olacaq yığın yaddaş. Və bir pointer qayıtmaq olacaq harada ki, yaddaş təsis edildi. Belə ki, do-- zaman burada example-- üçün n star pointer. Və sonra pointer malloc bərabərdir inch dəfə 10 ölçüsü. Mən bir pointer yaratmaq alıram. Və sonra mən ki, pointer təyin alıram göstərici ki malloc dəyəri mənə verir. Mən soruşuram malloc ayıra bilər 10 integers üçün yer. Ki söyləyərək nə var. Və malloc mənə geri verir ki, yer gösterci. Mənada etmək? OK. Mən Və GetString əsasən, edir Siz ayıra bilər, belə ki, malloc zəng iş zamanı yaddaş. Həmişə null kontrol unutmayın malloc null qayıtmaq üçün gedir çünki Bu yaddaş ayrılması bilməz. Siz gülünc üçün xahiş ki, deyirlər yaddaş məbləği. Sizin kompüter olacaq deyil qədər ayıra. Belə ki, malloc yalnız gedir null qayıtmaq üçün. Belə ki, həmişə yoxlamaq unutmayın Siz malloc var ki pointer edir null ya deyil, əgər güc, çünki bir pointer dereferencing etmək və yan çatışmazlıqlar səbəb olur. Və nəhayət, unutmayın pulsuz yaddaş. Malloc yığın yaddaş yaradır. Və siz yaddaş azad var proqram başa əvvəl. OK, mənim üçün bütün var. Üzr istəyirik, Rob. Thanks. [Alqış] LUCAS: Hər Son suallar Rob gəlir əvvəl? No? Bəli? Auditoriya: Mən görmədim bu bir online. Siz hələ onu qəbul? LUCAS: Mən Dave hesab edirəm tezliklə yüklemek. DAVE: Bu dərc olacaq. LUCAS: Bu online olacaq. Auditoriya: Bu qədər var. LUCAS: Bu qədər var? OK. Bəli? Auditoriya: [Işitilemez]? LUCAS: Bəli, azad olmalıdır bütün yığın qoyulur ki, yaddaş. Auditoriya: [Işitilemez]? LUCAS: Bəli. Bir mədəniyyət malloc var ki, istənilən vaxt, Pulsuz mədəniyyəti olmalıdır sonra ki, dəyişən istifadə dayandırmaq. Belə ki, malloc və pulsuz həmişə birlikdə. Onların ən yaxşı dost. Bəli. Rob? Rob: Mən tez getmək lazımdır. Həmçinin video çıxarılacaq. Mən mikrofon var. OK, belə ki, həftə beş stuff. Biz ilk şey yığını deyil. Belə ki, yalnız bir yığın var unutmayın ki, aktiv funksiyası zəng başına frame. Biz ikinci görəcəksiniz. Və həmçinin həqiqətən gedir nə xatırlayıram hər yığını çərçivəsində olacaq Bizim funksiyaları yerli dəyişənlərin, keçdi ki, dəlilləri bizim bir neçə ilə yanaşı funksiyaları, digər şeylər həqiqətən, yoxdur narahat lazımdır. Belə ki, burada bir nümunə proqram, bildiriş, əsas qaytarılması printfing edir foo 4 dəyəri. foo yalnız qayıtmaq üçün gedir bar 4 vergül 6 dəyəri. Və bar bəzi yerli müəyyən edir 4 dəfə 6 bərabər dəyişən n. Və sonra n qayıtmaq. Belə ki, boyu yığını baxaq Bu proqram faktiki iteration. Belə ki, bizim yığını alt var. Yığını qədər artır ki, unutmayın. Bizim yığını altında, belə ki, biz əsas üçün yığını çərçivəsində var. Zaman proqram başlayır, əsas həmişə də olacaq bizim yığını aşağı. Və içərisində nə bizim əsas çərçivə yığın? Belə ki, heç bir yerli var baxmayaraq əsas dəyişənlər Mən əvvəl bildirib kimi Biz argc və RGV yer alaraq əsas yığını çərçivəsində daxilində. Indi gedir Belə ki, əsas funksiyası foo zəng. Və foo gedir deməkdir öz yığını çərçivəsində almaq. Belə ki, indi biz daxili istəyirik funksiyası foo. Və nə getmək lazımdır foo nin yığını çərçivəsində? Yaxşı, foo bir dəlil n var. Ki, ildən və N 4 bərabərdir nə əsas foo nin arqument kimi keçir. Belə ki, indi foo bar zəng etmək üçün gedir. Nə bar daxilində gedir onun yığını çərçivəsində? Bu altı bərabər 4 y bərabər x var. Yəni biz olacaq ki, bütün deyil bar, çünki yığını çərçivəsində Həmçinin yerli dəyişən n var. Və n biz 24 bərabər müəyyən olacaq. Belə ki, indi bar n geri gedir. Belə ki, bar üçün 24 qayıdır yığını çərçivəsində foo. Və bar indi ki, qaytarılması, çünki biz yığını çərçivəsində yaratma edirik deməkdir yığını off bar. Bar olmuşdur ki, bütün yaddaş istifadə yığını off indi. İndi, foo də gedir əsas 24 qayıtmaq üçün. Belə ki, indi ki, foo, yaddaş qayıdır ki, foo onun 'istifadə edildi yığını çərçivəsində də getdi. İndi, əsas printf zəng etmək üçün gedir. Belə printf yalnız bir funksiyası var. Biz printf zəng zaman, olacaq Bu printf üçün bir yığını çərçivəsində funksiyası zəng. Nə biz printf keçən olunur? Ki, getmək neler var onun yığını çərçivəsində. Ən azı, biz keçən edirik ki, faiz i n backslash və arqument 24. Bu yığını çərçivə var bu çox ola bilər printf bəzi istifadə etmək olur yerli dəyişənlər. Biz bilmirik. Lakin bütün printf nin gedir çərçivəsində yığın. Bu printf həyata olacaq. Sonra printf həyata. Bu qayıdacaqlar. Nəhayət, əsas edilir. Main qayıdacaqlar. Və sonra proqram edilir. Bəli? Auditoriya: Siz görürsünüzmü [Işitilemez] arqumentlər [Işitilemez] parametrləri? Rob: Belə bir incə fərq var dəlilləri və parametrləri arasında. Və həqiqətən, ümumi danışmaq, insanlar edirlər yalnız bütün zaman onları qarışdırılır. Amma parametrləri formal var şeyi adı. Belə ki, argc və argv var əsas parametrləri. Arqumentləri nə həqiqətən var o parametrləri kimi keçir. Belə ki, I 4 foo, 4 zəng zaman Mən keçən alıram dəlildir. Və daxilində parametri n, foo, dəyəri 4 qalır 4 ildən dəlil idi. Auditoriya: [Işitilemez]? Rob: n bar bir yerli dəyişir. n, hələ foo yerli deyil, foo bir parametr var. Bu yerli dəyişən deyil. Bəli? Auditoriya: [Işitilemez]? Rob: foo sadəcə zəng bar və nə bar yekunları qaytarılması. Auditoriya: [Işitilemez]? Rob: Bəli, yalnız çox görmək çərçivəsində yığın. Bəli? Auditoriya: Niyə foo adlı printf əvvəl? Rob: Niyə foo printf əvvəl adlanırdı? Mən ola bilər, belə ki, əvəzinə, bir şey int kimi x 4 foo bərabərdir və sonra x çap. Ancaq əvəzinə, funksiyası birləşdirilmiş printf mübahisəyə zəng. Amma biz, həqiqətən bilməz biz qədər printf zəng icra 4 foo nə anlamaq. Beləliklə, biz bu qiymətləndirmək olacaq. Və həyata yalnız bir dəfə gedir geri gəlmək və qiymətləndirmək. Bəli? Auditoriya: həm bar ildən [Işitilemez] dəyəri, niyə biz [Işitilemez] yoxdur? Rob: Onlar tamamilə int olmalıdır. Üzərində tutuldu deyil çox keçir. Belə ki, int bar və int olmalıdır O, həm bəri foo integers qayıdır. Onlar fikrində deyilik əgər etibarsız yalnız faktiki dəyərlər qayıtmaq üçün. Bəli? Auditoriya: Siz bir xətt olsaydı bax qaytarılması, [Işitilemez]? Rob: qaytarılması yuxarıda line? Auditoriya: Bəli. Kimi printf və [Işitilemez] əgər, iki dəfə çap olardı? Rob: foo daxilində Belə ki,? Biz burada printf olsaydı? Auditoriya: Bəli. Rob: Beləliklə, biz bir printf hüququ var Burada, bir çap olardı. Biz bir dəfə sağ foo zəng ildən Burada, onda biz printf hit olacaq. Sonra biz bar zəng edəcəyik. Və sonra foo qayıdacaqlar. Və ki, var. Biz yalnız qarşılaşa bir printf. Bəli? Auditoriya: [işitilemez] biz ilk istəyirik, çünki printf foo zəng printf zəng sonra biz keçən edirik dəlilləri. Rob: nəzəriyyə Belə ki, deyil printf foo zəng? Belə ki, heç. C gedir ki, yalnız sifarişi biz əvvəl bu şeyləri yerinə , dəlilləri bütün bir funksiyası zəng funksiyası var tamamilə qiymətləndiriləcək. Belə ki, bu tamamilə qiymətləndirilir? Bəli, yalnız bir simli var. Bu yalnız bir dəyəri var. Sonra biz tamamilə var qiymətləndirirsiniz. Bu artıq bütün, həyata bir dəfə öz arqumentlərini qiymətləndirilir. İndi biz edə bilərsiniz printf zəng. Bəli? Auditoriya: Bir sual. Bir etibarsız funksiyası varsa, olmalıdır Siz geri nöqtəli vergül var? Rob: Siz geri nöqtəli vergül deyil Bir etibarsız funksiyası var. OK. Belə ki, indi bəzi yığın stuff. Belə ki, yığın biz məşğul olacaq necə dinamik yaddaş rəhbərliyi ilə. Və bu birbaşa ilə ziddiyyət biz avtomatik zəng edən stack yaddaş idarə edilməsi. Yığını Belə ki, həqiqətən heç vaxt necə yerli dəyişənlərin ilə məşğul sövq və bütün off atdı olunur bu yığını çərçivəsində və bütün stuff. Siz bu barədə narahat yoxdur. Bu avtomatik var. Belə ki, yığın manual edir. Və [Işitilemez] Bu funksiyaları gəlir malloc və pulsuz. Belə ki, burada başqa bir proqram. Biz yapýyorsun bütün mallocing edir tam. Biz star x saxlanılması edirik. Əlbəttə ki, biz yoxlamaq üçün x null görmek üçün. Sonra biz yalnız nə müəyyən olacaq x 50 işarə edir. , Işarə nə x Print print x, və sonra pulsuz x. Belə ki, necə bu, həqiqətən baxmaq edir biz yığını və yığın baxsaq? Yəni biz yenidən başlamaq lazımdır. Əvvəlki kimi yığını alt. Sənə birbaşa yığın Unutmayın ki, yığını qarşı? Beləliklə, biz olacaq orada bizim yığın üst. Bizim yığını altında, belə ki, biz əsas üçün yığını çərçivəsində. Bu argc argv üçün yer var və biz İndi yerli dəyişən x, var olan bir int ulduz edir. Beləliklə, biz təkrarlamaq olacaq Bu proqram vasitəsilə. Biz ilk şey malloc zəng. Beləliklə, biz malloc zəng edirik. Malloc bir funksiyası var. Bu yığını çərçivəsində almaq olacaq. Biz nə malloc keçirik? Ki, daxili getmək olacaq yığını çərçivəsində. Biz 4 olan n, ölçüsü keçən edirik. Belə ki, malloc üçün qəbul edilir. Malloc nə edir? Bu, bizə yığın bəzi kosmik Polip. Beləliklə, biz yığını getmək olacaq. Və biz işğalçı olacaq Yığın 4 bayt. Belə ki, yalnız verək ixtiyari ünvanı. 0x123 Just bir iddia yığın ki, ünvanı. Belə ki, daxili həqiqətən nə ünvanı ox123 yaddaş rayon? Tullantı. Belə ki, biz heç bir şey saxlanılır deyil. Yəni, biz bunu bildiyiniz kimi bir şey ola bilər. Siz sıfır güman etməməlidir. Bu sıfır ən çox ehtimal var. Belə ki, indi malloc qaytarır. Və biz zaman malloc yekunları nə etməliyəm? Biz qaytarır nə müəyyən. Biz bərabər x müəyyən nə Bu qayıdır. Belə ki, nə qayıdır? Ki, çünki 0x123 qaytarılması yaddaş blokunun ünvanı bunun yalnız yığın ayrılmış. Belə ki, 0x123 x indi müəyyən olacaq qayıtmaq 0x123 bərabər olan pictorially, biz tez-tez faktiki olan x kimi cəlb ki blokunun işarə arrow. Amma x yalnız ünvanı saxlanılması. Belə ki, indi biz x null əgər yoxlamaq lazımdır. Bu null deyil. Biz malloc nail olduğunu iddia. Belə ki, indi star x 50 bərabərdir. Belə ki, ulduz o deməkdir xatırlayır ki ünvanına getmək. Belə ki, 0x123 Biz gedirik ki ünvanına getmək. Belə ki, orada bizi gətirir. Biz bu ünvanda nə edirsən? Biz 50 saxlanılması edirik. Belə ki, bu xətt sonra ki, nə edir kimi şeylər baxmaq üçün gedir. Belə ki, indi artıq var orada zibil up. İndi biz 50 ki bilirik ki, Xüsusilə ünvanı çünki biz seçin. OK? Belə ki, indi biz f çap olacaq. Belə ki, ilk, biz star x çap olacaq. Belə ki, ulduz x nədir? Yenə star x getməsi deməkdir x işarə edir ki, bir şey. Belə x ki 0x123 Go saxlanılması. Biz 50 almaq. Belə ki, f çap. Və bu 50 çap olacaq deməkdir. Və sonra qayıdır. Və sonra biz ikinci printf var. Biz indi yüzdə p istəyirik. Siz onu görməmişik varsa, ki, yalnız bir pointer çap necə. Belə ki, biz, yüzdə i var f, və artıq o bütün. Belə ki, faiz p, bir pointer çap. Belə ki, x bir göstəricisidir. Beləliklə, biz özü x çap olacaq əgər, biz daxili əslində nə çap edirik Belə ki, ilk 0x123 olan x, print f 50 çap edir. İkinci çap f gedir Bəli 0x123 çap? Auditoriya: siz faiz istifadə edirsiniz x bir pointer çap? Rob: Belə ki, faiz istifadə edirsiniz x bir pointer çap? Belə ki, siz ancaq yüzdə x yalnız ümumiyyətlə, kimi bəzi varsa tam və çap etmək istəyirəm bir hexadecimal kimi. Bunu necə ki, yalnız var. Halbuki, faiz d ki ondalık kimi çap. Biz faiz almaq edilmişdir ki d. i yalnız tam deyil. faiz p xüsusi edir göstəricilərinə. Belə ki, x bir göstəricisidir. Biz yüzdə p istifadə etmək istəyirik. Amma faiz x işləmək bilər. Bəli? Auditoriya: [Işitilemez]? Rob: Bəli. Bunun üçün ən azı belə dediyimiz I burada daxil etməyib. Lakin bu iki dəlilləri mütləq var Bu yığını çərçivə içərisində hər hansı bir yerli dəyişənlərin ilə yanaşı, printf istifadə etmək olur. Və sonra növbəti zəng indi printf printf daxilində yığını çərçivəsində deyil faiz p backslash n və nə x dəyəri 0x123 olan edir. Bəli? Auditoriya: [Işitilemez]? Rob: Bu bir şey çap lazımdır ki, bu kimi görünür. Auditoriya: [işitilemez]. Rob: Belə ki, ünvan formada görüntüler. Bu ünvan kimi görünür. Bəli? Auditoriya: [Işitilemez]? Rob: Niyə nədir? Auditoriya: [Işitilemez]? Rob: Niyə bu göstərici 4 bayt? Belə ki, bir dəstə var Bu qarşısında 0 nin. Belə ki, həqiqətən 0x0000000123 var. 64-bit sistemi, olacaq daha adet sıfır bütün dəstə. Bəli? Auditoriya: [işitilemez]. Rob: Belə ki, ilk printf print-- gedir Auditoriya: [işitilemez]. Rob: Bəli, çap olacaq nə x işarə edir. Star bu nə deyir şey işarə. Onu qapmaq. Belə ki, işarə nə? 50. Onu qapmaq. Yəni biz çap olacaq nə. Növbəti bir, halbuki, biz istəyirik yalnız özü x çap. F daxilində nədir? 0x123. OK. Və sonra, nəhayət, biz pulsuz var. Biz nə azad keçirik? Biz x keçən edirik. Mən, həqiqətən, göstərilir ki, vaxt Bu yığını çərçivəsində. Beləliklə, biz dəyəri keçən edirik 0x123 pulsuz. Belə ki, indi bilir pulsuz, bütün sağ, Mən yığın qədər getmək üçün var və yaddaş pulsuz. Bu artıq istifadə nə ünvanı 0x123 edir. Belə ki, pulsuz azad gedir yığın ki,. İndi bizim yığın daha boş. Biz heç bir yaddaş sızıntıları. İndi pulsuz qayıdacaqlar. Ki, x hələ 0x123 edək. Amma indi etibarlı yaddaş deyil. Biz artıq dereference x olmalıdır. Bəli? Auditoriya: 0 lazımsız qayıtmaq mı? Rob: 0 lazımsız returen mı? Bəli. Biz yalnız çünki qoymaq biz hava üçün bir dönüş biri var. Belə ki, Bəli, imkan verir, kimi qaytarılması 0 daxildir. Bəli? Auditoriya: [Işitilemez]? Rob: Belə ki, pulsuz x sonra nə olur biz göstərici dereference üçün cəhd? Bu heç bir şey yanlış gedir ki, mümkündür. Biz hələ 50 almaq lazımdır ki, bu mümkündür. Bu yaddaş ki, həmçinin, mümkündür İndi başqa bir şey üçün istifadə olunur. Belə ki, müəyyən davranış var. Və undefined şey deməkdir ola bilər. Bəli? Auditoriya: [Işitilemez]? Rob: Xeyr, belə ki, təyin əgər başqa bir şey x. Belə ki, burada, əgər biz x bərabərdir etdi malloc bir şey else-- malloc ölçüsü event-- sonra orijinal blok yaddaş azad deyil. Və biz bunu rəsmi olaraq itirmişdir. Ki, bir yaddaş sızıntısı edir. Biz bütün istinadlar itirdik yaddaş ki, blok. Beləliklə, biz heç onu azad heç bir yol var. OK, belə ki, daha sonra görülən 0 vasitələrdən qayıtmaq. Bütün hüquqlar, belə yığın daşqın. Burada fikir nədir? Belə ki, xatırlayıram, yığın aşağı gedir. Stack gedir. Belə ki, bu mühazirə nümunə idi Mən harada əsas yalnız gedir, hesab edirəm ki, davam edən bu funksiyası foo zəng üzərində recursively özü zəng etmək və təzədən. Belə çərçivəsində gedir yığın eyni işləyir. Belə ki, biz əsas ilə başlamaq olacaq alt yığını çərçivəsində kimi. Sonra əsas, foo zəng etmək niyyətində olan bir yığını çərçivəsində almaq üçün gedir. Sonra foo foo zəng etmək üçün gedir yenə hansı almaq üçün gedir başqa yığını çərçivəsində. Və sonra yenidən və yenidən və yenidən, və yenidən qədər, nəhayət, biz run yığın daxil. Belə ki, bu biz almaq necə bir yığın daşqın. Və bu nöqtədə, siz günah seg. Yoxsa həqiqətən seg əvvəl günah istədiyiniz Bu point lakin yeah. Auditoriya: əsas dump edir seg günah kimi eyni? Rob: Belə ki, seqmentasiya görəcəksiniz günah əsas tullanır. Siz core dump zaman almaq Siz günah seg. Və bu bütün bir dump kimi Cari yaddaş məzmunu belə Siz cəhd və müəyyən edə bilər ki, niyə faulted seg. Bəli? Auditoriya: [Işitilemez]? Rob: Belə bir seqmentasiya günah vasitələri bir yığın daşqın var. Belə ki, mütləq. A seqmentasiyası günah olduğunu bildirir bir şəkildə toxunan yaddaş siz olmamalıdır. Belə ki, baş bir yol, zaman biz toxunan başlamaq, daşqın yığın biz olmamalıdır ki, bir şəkildə yaddaş. Bəli? Auditoriya: [Işitilemez]? Rob: sonsuz loop daxilində Belə. Kimi, bu recursive sonsuz kimi loop və biz bir almaq stack hər zaman nizama salmaq. Amma yalnız müntəzəm daxili sonsuz one-- isə yaxşı, hətta çap edək f bir şey yoxdur. Nə olursa olsun. Biz əldə etmək fikrində deyilik başqa yığını çərçivəsində. Biz yalnız loop saxlamaq olacaq bu bir təlimat artıq. Yığını artan deyil. Hər bir recursive ki, var zəng bizə bir yığını çərçivəsində verir. Biz bir yığın daşqın almaq niyə ki. Bəli? Auditoriya: Belə ki, əgər siz almaq dedi loop isə, sonra [Işitilemez]? Rob: əgər isə loop daxilində Belə ki, bir printf var idi, hələ ki seg deyil günah. Mən şeyi çaşdırmaq istəmədi. Bu loop edirik. Siz bir yığın almaq istiyorum Bu printf üçün nizama salmaq. Sonra printf qayıtmaq istəyirəm. Sonra yenə loop ediyorum. Siz bir yığın almaq istiyorum Bu printf üçün nizama salmaq. Bu qayıtmaq istəyirəm. Single yığını çərçivəsində. Belə ki, bu sonsuz əldə deyilik yığını çərçivəsində payavurma. Auditoriya: [Işitilemez]? Rob: Bəli. Belə ki, bu yığın daşqın baş Bunların heç biri, çünki foo zənglər qaytarılması olunur. Biz geri, onda biz belə yığını çərçivəsində itirmək başlamaq. Və sonra biz daşqın dəstə deyil. Bir baza halda lazımdır ki var Sizin şəxsi funksiyaları üçün. Bəli? Auditoriya: potensial ölçüsü və mi yığın üçün eyni yığın bütün proqramları? Rob: Təxminən. Olan yığını potensial ölçüsü və bütün proqramları eyni yığın? Təxminən. Bəzi Randomizasyon var burada yığını başlayır və harada yığın başlayır. Siz bütün çox var nə varsa qlobal dəyişənlər və hər şeyi, güc bəzi kosmik götürmek Sizin yığın üçün. 64-bit sistemi, faktiki olaraq sonsuz yaddaş var. Yalnız çox var. 32 bit və 64 bit, arasında əhəmiyyətli bir fərqdir. Siz daha çox bütövlükdə çox almaq olacaq 64-bit yığın və yığın space Sistem daha çox var, çünki onlar istifadə edə bilərsiniz ki ünvanlanır. Amma fərdi sistemi, o, yığını təxminən eyni miqdarda və yığın sahəsi. Bütün hüquqlar. Belə ki, son şey tərtib edir. Belə ki, bu proses bilməlidir. Dörd böyük addımlar var. Belə ki, birinci olmalıdır yadda asan ola bilər. Pre-emal. Bu pre prefiks var. Belə ki, hər şeydən əvvəl gəlir. Yadda şey hash edir. Belə ki, hash müəyyən və hash daxildir o bütün. O bütün pre-prosessoru var direktivləri. Bu şeylər ki var pre-prosessor qayğısına qalır. Belə ki, bir pre-prosessoru nə edir? Bu, həqiqətən lal şey. Bu qadir Bütün bu bütün var surəti, və cut və paste əməliyyatları. Belə ki, hash standart I0 dot saat daxildir. Bunu ki, nədir? Bu standart I0 dot saat qənimətçilik fayl və üst onu sovuşdurmaq yerdə hash daxildir deyir standart I0 dot h. Və hər hansı bir hash biz ki, müəyyən görüldü, nə edir ki? Onun hash ki, dəyəri çıxarmaq və sovuşdurmaq müəyyən edilir ki, müəyyən Harada olursunuzsa olun dəyəri istifadə olunur. Belə ki, preprocessor yalnız həqiqətən yoxdur sadə mətn əsaslı əməliyyatları. Bu smart heç bir şey yoxdur. Belə ki, başqa hər şey daha mürəkkəb. Belə ki, indi ki, preprocessor deyil həyata, biz, həqiqətən, tərtib edir. Belə ki, tərtib nə deməkdir? Biz indi c kod olacaq toplaşmaq kodu. Bəli? Auditoriya: [Işitilemez]? Rob: Bəli, biz tutuldu. Belə ki, tərtib. Biz toplaşmaq c gedən edirik. Belə ki, bu faktiki dil dəyişiklik. Özü tərtib gedən deməkdir yüksək səviyyəli dil aşağı səviyyəli dil. Və c yüksək səviyyədə dil toplaşmaq müqayisədə. Montaj nədir? Ki, öz təlimat, olduqca çox CPU üçün. Lakin kompüter hələ yoxdur toplaşmaq anlamaq deyil. Bu, yalnız olanları və adet sıfır anlayır. Belə ki, növbəti addım, montaj edən Bu təlimat bizə gətirir CPU anlayır və həqiqətən , onları tərcümə olanları və adet sıfır. Ikili toplaşmaq C belə. Amma hələ bir yürütülebilir yoxdur. Belə ki, CS50 kitabxana hesab. Biz ikili ilə təmin GetString olan bu cs50 kitabxana, və GetInt və bütün. Amma cs50 kitabxana və özünə yürütülebilir deyil. Bu əsas funksiyası yoxdur. Bu ikili bir dəstə var istifadə edə bilərsiniz ki,. Belə ki, keçid, biz birlikdə bütün gətirir necə Bu müxtəlif ikili faylları faktiki yürütülebilir daxil. Siz yazın ki, One dot dot zərbə. Belə ki, bu fayl kimi olduğunu yazdı - nə sizin proqram That Ceaser dot c. Amma indi tərtib edilmişdir ikili aşağı. Belə ki, Ceaser dot o. Bu, bizim cs50 ikili kitabxana edir. Onlar birlikdə etdiyiniz bir yürütülebilir daxil. Bəli? Auditoriya: [Işitilemez]? Rob: Belə ki, ilk daxildir, xatırlayıram daxil həqiqətən bir deyil hash pre-prosessor addım. Amma ki, ayrı-ayrı deyil. Siz hansı funksiyaları istifadə edirsinizsə ki, sonra bir fayl kənarda, yox, bir şey keçid ehtiyac yoxdur hər şey var-ci ildən. Bildirib ki, printf bağlıdır olunur. Əgər printf istifadə əgər, ki, bir şey var ki, bağlı olmalıdır ki, yazmadım, çünki. Və əslində, printf avtomatik bağlıdır. Siz necə command line və ya siz görmək etmək yazın link olan dash l cs50, Bu cs50 kitabxana? Kimi printf, və stuff gedir avtomatik olaraq bağlıdır. Şey haqqında hər hansı digər suallar? Auditoriya: [Işitilemez]? Rob: əlaqələndirilməsi? Biz bütöv bir dəstə var müxtəlif ikili faylları. Bu canonical nümunəsidir Biz istifadə cs50 kitabxana var. Biz tərtib və sizin üçün verilmişdir Bu cs50 kitabxana üçün ikili. Siz GetString istifadə etmək istədiyiniz proqram. Beləliklə, siz getmək və GetString istifadə edin. Amma mənim ikili kodu olmadan GetString, sizin kodu tərtib edərkən aşağı, həqiqətən run edə bilərsiniz proqram GetString String çünki hələ tam müəyyən deyil. Siz mənim ikili keçid zaman yalnız bütün ki, indi GetString edir sağ, mən həqiqətən bilərsiniz GetString icra. Mənim fayl tamamlandı. Mən bu çalıştırabilirsiniz. Bəli? Auditoriya: çevirmək birləşdirən edir ikili çalıştırılabilir üçün? Digər yoxdur, belə ki, hətta kitabxana, hələ olmaz tərcümə üçün zəruri Bu [Işitilemez]? Rob: Belə ki, bir yürütülebilir ikili hələ. Bu, sadəcə bir bütün birləşən var binaries dəstə. Auditoriya: çox təşəkkür edirik. Rob: No problem. Hər hansı digər suallar? Əks halda, biz müəyyən edirik. Bütün hüquqlar. Thanks. [Alqış] Auditoriya: Sağ olun. Rob: Bəli.