Tip:
Highlight text to annotate it
X
>> HOPARLÖR 1: Hi everyone.
Biz başlamaq üçün gedir.
Mən hələ də davam edirəm daxil filtreleme etmək
Amma vaxt maraq, belə ki, biz vaxt buradan uşaqlar almaq,
biz başlamaq olacaq.
CS50 Quiz 0 nəzərdən belə salamlayıram.
Həyata olmayan sizin üçün hələ, siz Çərşənbə günü bir sual var.
Woo-hoo.
>> Siz açılmış hələ təhsil və ya deyil varsa Bu hələ mövcud ki, həyata deyil,
keçmiş sınavlar və haqqında məlumat Sizin viktorina cs50.net/quizzes var.
Orada bəzi olduqca yaxşı stuff var Son 10 keçmiş sınavlar
il habelə 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 sinif Davudun gün həmin işıqlar idi.
Belə ki, mahiyyətcə, gedir ki, hər şey bir kompüter başlıq altında haqqı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ölümün ilk gün kimi David bir işıq yandırıb zaman
on təmsil ampul, və ya 1, bizim kompüter 0 və kimi binar anlayır
1-nin, və ya off.
İkili əsasları.
Hər yer təmsil olunur bazasında iki.
Beləliklə, siz üçün 0 2 əlavə Bütün yol qədər 2 1.
>> Sizin ikili nə hesablamaq üçün decimal, yalnız bu tənlik edin
şey yazın.
Siz həmin yerlərdə hər hansı bir 1 varsa, Siz nə ilə çoxaltmaq
, bu baza onu əlavə və Siz decimal almaq.
Belə ki, bu saymaq necə ikili 5.
Sadəcə biz nə etdiklərinizi kimi Son slide, bu necə ki
5 ilə 1 təmsil edir.
>> Eynilə, yalnız əlavə edə bilərsiniz kimi decimal ya baza 10 çıxmaq, və ya
əlavə edə bilərsiniz həqiqətən hər hansı bir baza, və ikili çıxmaq.
Zaman gözləmək olardı dəqiq nə Bu böyük bərabərdir əgər, iki əlavə
1-dən, bir 1, 0 etmək keçirmək və yalnız, əlavə yol etmək
kimi siz müntəzəm ilə gözləmək olardı decimal və ya hər hansı digər baza.
Cool.
>> Mən əvvəl bildirib, belə ki, kimi, hər şey bizim kompüter başlıq altında gedir
0 və 1-nin, və ya ikili edilir.
Belə ki, necə biz məsələn, ifadə yoxdur, 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, tire vurğulamaq, və
kimi bir şey.
Və bir ASCII dəyəri ki, xəritələr.
Bir ASCII dəyəri yalnız bir nömrə ki, Sizin kompüter tərəfindən başa düşülə bilər.
Və yalnız kimi əlavə edə bilər və nömrələri ilə toplama işlemi, siz edə bilərsiniz
ASCII dəyərləri ilə onları.
>> Belə ki, bu nümunə, nə Bu çap edəcək?
Bəli, belə ki, yalnız A space B space C space D. Harada mənim siçan getmək idi?
Siz 65-da 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 bəyan edə bilər bu bir char kimi.
Və siz faiz istifadə edərək, çap zaman C, kimi ki, şərh lazımdır
faiz D. Və yalnız bir əlavə edə bilərsiniz kimi sayı, siz simvol əlavə edə bilərsiniz
Bu halda ASCII dəyərlər.
>> Belə ki, hər kəs üçün bir az göstərici.
5, bir string kimi deyil həqiqətən 5 bərabərdir.
Belə ki, necə biz ç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 olar.
Və bizə 5 verəcəyik.
Və eyni, biz kimi 5 varsa tam, simli 0 əlavə edin.
Və bizə simli 5 verir.
Cool.
>> İndi, bir harada mühazirə geri geri biz alqoritmlər danışdıq.
Belə ki, necə biz, həqiqətən, kompüter istəyirsiniz maraqlı şeylər?
Siz yalnız əlavə və subtracting, bilirik nömrələri və çap şeyi deyil
ki, maraqlı.
Adətən, biz kompüter istəyirik alqoritm bir növ həyata keçirir.
Something bir az daha mürəkkəb yalnız sadə hesab daha.
>> Bir alqoritm addım set yalnız bir addımdır yerinə yetirmək üçün necə üçün təlimatlar
Müəyyən bir vəzifə -
bir resept kimi.
Siz ilk günü xatırlayıram bilər David us otaq saymaq olduğu sinif
insanlar və necə bir çox insanlar otaqda idi.
Siz hesablanması üçün istifadə edilə bilər bir-bir.
1, 2, 3, 4.
Bu halda, xətti vaxt alqoritm.
>> Amma David üçün alqoritm təqdim Siz oda insanlar saymaq
hər kəs up yerləşdiyi, demək sizin başqa şəxsə sayı, əlavə
sayı up, və bir nəfər aşağı oturur.
Və ki, deyirəm.
Ki, alqoritm bir növü var.
Biz analiz edə bilərsiniz necə səmərəli Bu vaxt run var haqqında alqoritm əsaslanır.
Amma biz bir az danışmaq lazımdır sonra bu barədə daha çox.
>> Belə ki, bütün alqoritmlər həmçinin pseudocode yazılı.
Pseudocode yalnız İngilis dili kimi təmsil etmək üçün istifadə syntax
bir proqramlaşdırma dili.
Məsələn, biz bir istifadəçi xahiş etmək istəyirdi əgər 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 dildə kompüter
anlaşma bilər.
Belə ki, biz pseudocode yazmaq bilər mənbə kodu daxil ki, şərh.
>> Bu günə qədər, mənbə kodu riayət etməlidirlər müəyyən bir sintaksis
bir proqramlaşdırma dili.
Və bu günə qədər, CS50, biz var əsasən c istifadə edilmişdir.
Belə ki, bu c üçün mənbə kodu ola bilər.
Sonra əlbəttə, siz gecə gəlib digər proqramlaşdırma ilə əlaqə
PHP kimi dil.
Və ya hətta digər siniflər, siz ə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ə
Bu pseudocode alqoritm ki, Mən yalnız əvvəllər təsvir.
>> Belə ki, necə sizin kompüter həqiqətən yoxdur başa düşürük ki?
Kimi mən yalnız, həqiqətən, əvvəl bildirib adet sıfır və olanları anlayır.
Belə ki, necə bu mənbədən almaq deyil ola bilər ki, bir şey üçün kod
başa?
Bəli, biz bir şey var bir compiler çağırıb.
>> Siz ən çox geri geri varsa psets, siz proqram bir növ idi
bir dot c fayl yazılı.
Və sonra siz yazın ki.
Belə ki, nə etmək olar?
>> Siz tərtib etmək yazın bilərsiniz proqram kimsə çünki -
kim sizin p set yazmışdır; yəqin ki, David -
bir markası fayl yaratmışdır.
Və çalıştırmak üçün bilmək deyir sizin compiler adlı cingilti ki, iradə
sonra obyekt üçün mənbə kodu tərtib adet sıfır və olanları olan kodu,
Sizin kompüter anlayır ki.
Amma bir az sonra, biz gedəcək derleyiciler haqqında dərinliyi daha çox.
>> , Bəli - Belə ki, burada, pset 0 geri Bir sual var?
>> Auditoriya: [işitilemez]?
>> HOPARLÖR 1: Bəli.
Mən hesab edirəm ki, onlar, həqiqətən, online olmalıdır.
Bəli.
>> Auditoriya: Bu [işitilemez] kimi mi?
>> HOPARLÖR 1: Bu deyil.
The cs50.net/quizzes var.
>> Auditoriya: 2013 doğramaq, sınavlar Slash 0 doğramaq, və yalnız vasitəsilə basın
viktorina 2013 viktorina 0, bölmə slaydlar gözdən keçirin.
>> HOPARLÖR 1: Bəli, belə ki, 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, onun sual, oldu imtahan tətillər.
Və bu deyil.
Belə ki, pset 0, uşaqlar bütün olmalıdır danışıq istifadə bir şey həyata keçirilir.
Və biz bəzi əsas proqramlaşdırma öyrənildi bloklar danışıq istifadə.
>> Belə ki, bəzi nəzər salaq Bu bloklar
bir proqram etmək.
İlk Boolean ifadə edir.
Boolean ifadələr olanları və 0 və ya ki, 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.
Bir sadə misal, çox sadə, bir Boolean istifadə edir ki proqram
burada ifadə up.
>> Belə Boolean ifadələr üçün faydalı ola bilər, biz Boolean operatorları var.
Bu istifadə edilə bilər ki operatoru müəyyən dəyərləri müqayisə etmək.
Belə ki, biz, az bərabər və ya daha çox və ya və ya daha çox, bərabər
bərabər və az və ya daha çox.
Lakin bu operatorlar çox faydalı deyil biz onları birləşdirə bilər halda
şərait.
>> Belə ki, uşaqlar sıfırdan xatırlayıram bilər və s edir ki, biz
şə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.
Beləliklə, biz ki, şərtlərdən biri Bu kurs bir çox dəfə istifadə edir
başqa, əgər, əgər, və başqa şərtlər.
>> Burada necə bir misal var Siz istifadə edə bilər.
Hər kəs arasında fərq bilir yalnız istifadə edərək hesabatları bütün
yol aşağı ayələri əgər, başqa, əgər, və başqa birləşdirilmiş?
Bəli?
>> Auditoriya: [işitilemez].
>> HOPARLÖR 1: Exactly.
Mən əgər bütün yolu bu, aşağı yol, hətta bu vəziyyət returns əgər
doğru, hələ davam edəcək növbəti iki test.
Bir başqa əgər, bir başqa ilə Halbuki Şə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 əgər-başqa istifadə siz ki, yalnız edə bilirəm bəyanat əgər
Bu hallarda biri.
Beləliklə, biz x 0-dən az olduqda, bu bilirəm mütləq olacaq
0 daha çox.
>> Next, bir bina blok öyrənildi biz loops edir.
Biz loops üç növü var.
Loops üçün isə loops, və loops etmək.
Və ümumiyyətlə, siz aşağı oturmaq zaman bir şey yazmaq, siz qərar var
Siz istifadə etmək istədiyiniz üç olan.
Belə ki, necə biz bir karar verirsiniz?
>> Biz bilirik, əgər biz ümumiyyətlə loop üçün istifadə biz təkrarlamaq istəyirəm neçə dəfə
bir və ya neçə dəfə vasitəsilə biz bir tapşırıq yerinə yetirmək istəyirəm.
Biz bəzi lazımdır, əgər biz isə loops istifadə yayınlanmaya davam etmək doğru olmaq şərt.
Və biz bunu istifadə edərkən çox oxşar isə, lakin biz kodu çalışır istədiyiniz
ən azı bir dəfə.
>> Belə isə, nə do edir edəcəyik həmişə ən azı bir dəfə axır.
Bu müddət ilə, halbuki, bu, bütün run bilər, əgər
vəziyyət razı deyil.
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 10-dən azdır.
Və i + +.
Biz etdik ki, çox sadə bir.
>> Bir müddət loop üçün, eyni, siz var başlatma bir növ var,
bir şəraitdə cür və yeniləmə bir növ.
Belə ki, biz üçün loop həyata bilər Bu istifadə bir müddət loop kimi.
Və eyni bir do ilə isə loop, 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ı ki, güc gördük artıq əsas deyil.
Əsas funksiyası.
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ı -
GetInt, toupper.
Lakin bu olmuşdur nə bizim üçün həyata
kitabxana bir növ.
Sizlərin o cümlədən xatırlayıram, Bu CS50.h kitabxana və ya
standart I / O kitabxana.
Bəli, sual?
>> Auditoriya: c yalnız xas əsas varmı?
Edir ki, yalnız cür [Işitilemez]?
>> HOPARLÖR 1: sual Əsas c xas əgər.
Və bəli, bütün funksiyaları əsas funksiyası var.
Bu kompüter cür lazımi var harada başlamaq üçün bilmək
kodu çalışan.
>> Auditoriya: Belə ki, olardı [Işitilemez]?
>> HOPARLÖR 1: Xeyr
Hər hansı digər suallar?
Cool.
Belə ki, yalnız kimi bir funksiyası istifadə edə bilərsiniz ki, siz də, sizin üçün edə bilərsiniz yazılı
Sizin öz funksiyasını yazmaq.
Bu funksiyası ki, kimsə bilər həcmini hesablamaq üçün yazılmış
bir q, misal üçün.
Burada bir dönüş növü bu halda, var int, bizim funksiyası adı q və bizim
parametrlərin siyahısı.
>> Və siz məlumat yazmaq lazımdır ki, qeyd istədiyiniz parametri növü
istifadə və ya başqa deyil funksiyası nə cür
parametri Mən qəbul edilməlidir.
Belə ki, bu halda, biz istəyirik Bizim giriş kimi bir tam.
Belə ki, niyə biz funksiyaları istifadə etmək istəyirsiniz?
>> İlk növbədə, təşkilat üçün böyük.
Onlar sizin kodu daxil parçalamaq kömək daha chunks təşkil etmək
daha asan oxumaq üçün.
Sadələşdirmə.
Bu dizayn üçün yaxşıdır.
Kodu bir parça oxu etdiyiniz zaman və əsas funksiyası, həqiqətən
həqiqətən uzun, bu daha ola bilər neler haqqında səbəbi.
Belə ki, bu funksiyaları daxil qırmaq əgər, Bu oxumaq üçün asan ola bilər.
Və təkrar-qabiliyyəti.
Siz olunur ki kodu bir yığın varsa 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 ki, istifadə etmək lazımdır kodu 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 konsepsiyasıdır kodu ardıcıllığı
eyni zamanda həyata.
Belə ki, gün David olduğu bir geri edirəm Sizlərin sayı off saymaq
oda insanlar.
>> Əsasən, nə gedirdi Siz uşaqlar bütün idi olunur
ayrı-ayrı mövzuları çalışır.
Və bu mövzuları bir araya gəlirdilər cavab bir növ almaq üçün.
Eynilə, Not, siz var zaman çox sprites, siz bilər
bir pişik və it var.
Onlar eyni zamanda olacaq öz skript çalışan.
Ki, Threading nümunəsidir.
>> Idi ki, digər konsepsiyası Sıfırdan təqdim hadisələri oldu.
Və hadisələr çox hissələri zaman var Sizin kodu bir-biri ilə ünsiyyət.
Siz istifadə edərkən Scratch, bu idi nəzarət və Mən yayımlanacaq
Blokları alın.
>> 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 Gözlədiyin olan
istifadəçi basın üçün.
Və klik, bu halda, olacaq hadisə və klik üçün gözləmək sizin
hadisə handler.
>> Və həmçinin, sizin psets çalışan ərzində və sizin psets iş
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 siler 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.
Əgər Bağışlayın, sual idi Bu qoyaraq gəlir ki,
istifadə etmək hesabatında.
Bu kömək edə bilər.
Siz otaq varsa, siz onu qoya bilər.
Bu da kifayət qədər yalnız ümumiyyətlə yaxşı Siz istifadə edərkən çünki xatırlamaq
istədiyiniz bilər yalnız bu xatirəsi.
Sizin həyat bir çox daha asan olacaq.
Mən sizin suala cavab mi?
>> Beləliklə, biz bir az söhbət kitabxanalar haqqında qısaca.
Amma biz oldum ki, iki əsas olanları əlbəttə bu günə qədər istifadə edərək
standart I / O və CS50.
Daxil edilir, hansı şeyi 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 ki, biz iki əsas olanlardır bu günə qədər ilə əlaqə gəlmişəm
kurs.
>> Növləri.
Bu xatırlamaq yaxşı nə qədər hər bir növü necə və ya təmsil olunur
çox növü hər tələb bayt -
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: Xeyr, 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 bir göstərici nə işarə - bir 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 Aracı eyni.
>> Auditoriya: The 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, əgər deyil aydın, demək
32 az götürməlidir.
>> Auditoriya: Bu, bir şey demək olardı fərz kimi
Aracın kimi memarlıq.
64 bit üçün, yalnız şeyi dəyişiklik longs və göstəricilər var.
Onlar həm də [işitilemez].
>> HOPARLÖR 1: Bəli?
>> Auditoriya: Sual.
Belə ki, təcrübə viktorina biri, bir imzasız int haqqında soruşur.
Belə ki, necə müəyyən olunacaq [Işitilemez] bir int?
>> HOPARLÖR 1: An imzasız da 4 bayt edir.
Amma nə bir imzalanıb haqqında fərqli 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 işarəsi təmsil bit.
İmzalanmış 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: necə bir pointer uzun uzun [Işitilemez]?
>> HOPARLÖR 1: Belə ki, sual yoxdur necə uzun uzun üçün pointer -
necə ki, yalnız dörd bytes zaman uzun uzun onun 8 bayt.
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 göstərici yalnız bir yaddaş yeridir.
Belə ki, fərqi yoxdur nə qədər yer 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.
>> Mən Belə ki, son şey standart çıxış edir.
Siz onları 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 ki, format kodları çağırıldı.
>> Belə ki, faiz c char, yüzdə i int, və biz də yüzdə d istifadə edə bilərsiniz.
Bu eyni şey.
Amma, ümumiyyətlə, CS50 biz faiz i istifadə etməyə çalışırıq.
Float üçün yüzdə f.
Uzun uzun və faiz ld simli üçün yüzdə s.
>> Eynilə, biz bir neçə istifadə etdik bu escape ardıcıllığı.
Məsələn, yeni xətt üçün backslash n.
Bu yalnız formatlama etdiyiniz zaman üçün print f üçün kodu.
Bəli?
>> Auditoriya: üçün yüzdə d nədir?
>> HOPARLÖR 1: Belə ki, sual üçün yüzdə d edir?
Yüzdə d ints üçün.
Yüzdə d və faiz i eynidir.
>> Auditoriya: arasında 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 edir ki -
>> Auditoriya: Belə backslash r yalnız nəzərdə tutur xətti əvvəlinə qaytarır
həqiqətən yeni xətt gedən olmadan.
Belə bir backslash r çap və siz əgər Xəttin əvvəlində geri
sonra daha stuff çap, siz üzerine artıq olan stuff
[Işitilemez].
Halbuki, n həqiqətən yeni bir 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 əldən gedirəm Dan kim davam edəcək.
>> [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ə üç start off başlayaraq
yalnız bir yol olan tökmə ilə kimi müəyyən bir növü bir dəyər müalicə
müxtəlif tipli dəyəri.
Beləliklə, biz chars ilə bunu edə bilərsiniz ints, ints üçün üzüb gedirdi və
ikiqat uzun longs.
>> Bütün bunlar yolları kimi istifadə edilə bilər Bəzi rəqəmli dəyər müalicə
minus bəzi digər char rəqəmli dəyəri.
Belə ki, bu, bəzi məsələlər var Siz tökmə zaman gəlir, əlbəttə ki,
ints üçün float kimi şeylər.
Belə ki, bu bir az qəribə deyil.
Biz 1.31 ki, bir float.
Biz 10,000 çoxaltmaq.
Və sonra biz int kimi çap.
Bu çıxış edir?
10,000 dəfə 1.31.
Belə 13,000 ki, tahmin?
>> 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.
Olmazdı bir 9 və bəzi 0 ədəd?
>> DAN: Siz bəzi qəribə rəqəm ola bilər.
Belə ki, sağ, bu 1,3 dəfə 10,000 var.
Belə ki, 13000 var.
Və bu əlavə qəribə -
>> Auditoriya: 13.100.
>> DAN: 13.100.
Rob təşəkkür edirəm.
Və bu əlavə weirdness -
Bu 9,9 -
sadəcə, çünki bu tökmə aşağı yuvarlaqlaşdırma başa yerləşir
bu olmamalıdır.
Bəli.
>> Auditoriya: The tökmə olur Başqa bir şey sonra?
>> Mən çap bu var Belə ki, çünki: DAN əvvəl bu çarpma yoxdur
Bu tökmə yoxdur.
>> Auditoriya: [işitilemez].
>> DAN: Mən, ilk tökmə olardı Bəli, hansı 10,000 olardı.
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, əgər Bu float, biz bir növ almaq
çirkin axtarır sayı.
Və ki 1.31 dəqiq deyil, çünki sadə ilə təmsil olunacaq
maşın iki səlahiyyətləri.
Belə ki, ən yaxın alaraq bitir up sona çatacaq olan tapmaq
bir az aşağı olan.
Mənada?
OK.
>> İndi işə fərqli bir yol var şərti hesabatları bunu bütün
biz qayğı bir dəyişir.
Belə ki, bu misal, biz istəyirik istifadəçi bir tam almaq.
Və sonra biz aradığınız nə tam deyil.
Ehtimal ki, bu sıra bir və dörd arasında.
Yəni biz üçün xahiş edirik.
>> Beləliklə, siz bir keçid etmək dəyişən adı.
Sonra mümkün hallarını qurmaq ola bilər qiymətləndirir.
Belə bir halda, o, aşağı deyirlər.
Və sonra çıxmaq qırmaq keçid vəziyyəti belə
Siz davam yoxdur.
>> Növbəti halda -
belə halda iki və hal üç -
Bu halda iki əgər bu, yalnız aşağı düşüb kodu ilk xətt kimi görür
bir fasilə görür qədər üç halda.
Beləliklə, siz halda bir almaq səbəbi yalnız print aşağı, çünki mən
burada bu fasilə var.
I, demək, bu fasilə rədd varsa - Mən bu qopan atdı əgər -
Aşağı çap olardı, və sonra ki orta çap, və sonra qırmaq.
>> Belə ki, fasilələri mühüm hissəsidir şərtləri keçid və
onlar orada olmalıdır.
Aydın ifadə deyil ki, heç bir halda default tərəfindən idarə olunur
keçid Halda və 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]?
>> DAN: Siz sonra aşağı çap olardı və Bu orta çap olardı və
sonra qırmaq olardı.
>> Auditoriya: Niyə çap olardı orta [Işitilemez] əgər?
>> DAN: bir halda altında Belə ki, hər şey fasilə altında düşür əvvəl.
Belə ki, bir halda print altında olduğu kimi bu aşağıdakı çap edir.
Bəli?
>> Auditoriya: [işitilemez]?
>> DAN: Bu sayı yalnız bir xüsusi deyil dəyər ki, bu dəyişən
sağ, edə bilər?
Ki, hissi edirmi?
Bəli.
>> Auditoriya: [işitilemez]?
>> DAN: Bəli, hal iki çap olardı sonra qırmaq orta və.
>> Auditoriya: [işitilemez]?
>> DAN: Mən heç bir mi?
Hansı digər məlumat növləri Siz artıq keçid edə bilərsiniz?
>> Auditoriya: Siz bilərsiniz bir veri növləri.
Amma bu, yalnız chars artıq bir şey deməkdir və ints və kimi stuff, çünki
Bir göstərici keçid əgər ki, həqiqətən mənada etmir,
hətta imkan-nin, yük keçid çünki üzən point, bunu
dəqiq, siz həqiqətən ki 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 Bilirsiniz ki, dəyərlər, hesab edirəm ki, ola bilər
bir keçid həqiqətən faydalı olduğunu.
Yaxşı?
OK.
>> Sayt bir elan edən üçündür dəyişən uzanır.
Belə kodu bu kiçik yığın var, bu səhvlər dolu olardı.
Və səbəb Mən bu int elan edilir loop üçün bu çərçivəsində i.
Və sonra mən istinad çalışıram ki, kənarda loop daxilində ki i.
>> 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ə ki, dəyişən cəhd və 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 simvol yalnız göstəricilər var.
Və siz hər hansı bir strings bitirmək lazımdır yalnız olan backslash sıfır ilə
bir c konvensiya.
>> 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] nə?
>> DAN: malloc zaman adlanır, demək, varsa almaq üçün kifayət qədər yaddaş yoxdur
Sizin üçün xahiş edirik hər hansı ölçüsü malloc NULL qayıdacaqlar.
Bir funksiyası var zaman ki, əsasən var Siz, bir pointer qayıtmaq üçün nəzərdə
null qarşı yoxlamaq lazımdır, çünki NULL bir olduqca yaxşı -
Bu növ, zibil dəyər var.
Bu qədər göstəricilərinə getmək kimi bir sıfır var.
>> Bir funksiyası zəng zaman, ki, bir pointer qaytarır.
Siz kontrol etmək istəyirəm olacaq ki, pointer NULL deyil ki, əmin
NULL çox ümumi, çünki.
Bu sort bir zibil qaytarılması var.
Belə ki, bir şey doğru getmək olmasaydı, yalnız əvəzinə NULL qayıtmaq.
>> Auditoriya: [işitilemez]?
>> DAN: Bəli, bu var.
>> Auditoriya: [işitilemez]?
>> DAN: Bu kimi yazım.
Bu NULL terminator var.
Bu, N-U-L-L əgər kiçik var Siz imla edirik.
>> Auditoriya: Mən yalnız getdi geri və bu test.
Və siz bir üzən nöqtə qoymaq üçün cəhd edin bir keçid daxil qiymətləndiririk, bu da fəğan lazımdır
deyərək, bəyanat ifadə tələb edir tam növü.
>> DAN: Siz gedin.
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ə.
Əgər cəhd və sehr edəcək NULL xarakter və hər hansı bir bax
Bu başqa yol.
Bəli?
>> Auditoriya: Belə max char qaytarılması və ya qeydlərdə bir şey ki bu
eyni funksiyanı təcəssüm [Işitilemez] kimi?
>> Auditoriya: Belə ki, istinad olunur qaytarılması char GetChar max, və ya
bu nə?
>> 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
, bütün hüququ kimi ehtimal əgər bunlar, bizə qayıdır
bir şey yanlış getdi.
>> Göstəricilər, biz yalnız var nə Bu sentinel dəyər 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: Belə ki, GetChar test edirsinizsə, yalnız NULL qoymaq olar?
Ki, bir fərq edə bilər?
>> DAN: Siz yalnız NULL kontrol bilmədi.
Siz char max yoxlamaq üçün istədiyiniz çünki funksiyası qaytarılması dəyəri
bir xarakter bir pointer.
Bəli?
>> Auditoriya: Bu sual soruşur simli uzunluğu üçün.
Ki, NULL xarakter daxildir?
>> DAN: Xeyr
Və həqiqətən necə string uzunluğu vasitəsilə gedir çünki dayandırmaq bilir
simvol qədər sizin array 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, sonra serialın adı və
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ü ilə elan edirik Siz saxlanılması edirik ki, şey
sonra array, serialın adı və ölçüsü serialın nə.
Belə ki, bu uzunluğu bir 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 Bu array artıq daxil.
Belə ki, əvəzinə bu müəyyən edə bilər , char, demək nə adı
array boş Mötərizədə Kıvırcık bərabərdir edir brace H vergül E vergül L vergül L vergül
O vergül NULL xarakter və buruq burğu.
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 yol var kimi istifadəçi 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.
>> I, demək, kimi bir funksiyası adlanır Belə ki, əgər 1 yer, 2 yer, üç, həyata dot
argc 4 olacaq.
Və argv 0 bir dot olardı.
Argv1 1 olardı.
argv2 2 olardı. argv3 olacaq 3, xüsusi halda.
Bəli?
>> Auditoriya: [işitilemez]?
>> DAN: array son element Bu array uzunluğu argc plus çünki
ARGB biri, son element NULL pointer edir.
Bu argc plus 1.
Belə ki, halda mən yalnız bildirib ki, 0 argv olardı bir dot edir.
argv 1 1. argv2 2. argv 3 3.
bir böyük olan argv 4, argc NULL olacaq daha.
>> Ki, 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ə ki, bir arasında fərq var Bu və bir növü başqa GetString
istifadəçi mühərriki?
Və iki, bu ərzində saxlanılır son yaddaş?
Belə kimi, GetString ki [Işitilemez] olacaq?
>> DAN: Harada saxlanılır?
Bu saxlanılır harada bilmirəm.
>> Auditoriya: Belə ki, həqiqətən, siz necə bir Siz onun dəlilləri zəng funksiyası
yığını saxlanılır?
Belə ki, argc və argv əsas arqumentlər var və həqiqətən yığını, və ya
yalnız kimi nə yuxarıda yığını start.
Digər hissəsi nə idi sual?
>> Auditoriya: [işitilemez] Belə ki, nə var?
>> DAN: Bəli, bu yalnız bir müxtəlif yolu var istifadəçi daxil almaq.
Bu bir az daha səmərəli və scripts üçün handlear var siz, çünki
yalnız sizin əsas arqumentləri keçə bilər daha gözləmək olan daha funksiyası
Əgər hər hansı bir users yoxsa istifadəçilər üçün.
>> Auditoriya: Və Bəli, strings almaq [Işitilemez] olardı.
Bu sizə lazım olan məhsulları saxlamaq olardı.
>> DAN: Evet?
>> Auditoriya: [işitilemez]?
>> DAN: Bəli, argv 0 həmişə daxildir funksiyası zəng dot çizgi.
Bəli?
>> Auditoriya: [işitilemez]?
>> DAN: Bəli, dəlilləri hər var NULL xarakter başa çatdı, çünki onlar
strings var.
>> Auditoriya: [işitilemez]?
>> DAN: Bəli, argv argc bir NULL pointer edir.
>> Auditoriya: [işitilemez]?
>> DAN: Bəli Oh.
Sorry, Bəli.
>> Auditoriya: Belə [Işitilemez]?
>> DAN: Siz əgər Belə ki, sual edir command line dot, 1, 2 bir nöqtə zərbə
ki command line sayı dəlilləri iki və ya üç olardı?
>> Auditoriya: Mən bu deyil düşünmək həqiqətən əhəmiyyətli.
Mən demək edirlər, oh, siz keçə bilmədi bir command line dəlilləri zaman,
Aydındır ki, siz funksiyası adlanır.
Mən vocally istisna edirlər command line funksiyası
bu baxmayaraq dəlilləri argv daxil.
>> DAN: Amma bu test idi, -
Bəli - və həmçinin bir şey demək əgər kimi argc, 3 bərabərdir
Siz təhlükəsiz daimi istəyirik.
Bəli?
>> Auditoriya: [işitilemez]?
>> DAN: Mən hesab edirəm ki, əgər əvəzinə bu zəng argc və simli argv mötərizədə
lakin eyni növ saxlanılır və yalnız adlı onlara kimi müxtəlif bir şey
və b, hələ işləmək olardı?
Və hələ də çalışır ki, yalnız ki -
ə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 yığın yaddaş mağazalar çünki faktiki ərzində artıq 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 olmaq, heç bir etibar bir və imkan hər hansı bir bir giriş yoxdur
Sizin informasiya, olan niyə Hər kəs öz maşın qurur,
öz əməliyyat sistemi, bütün onların açıq-aydın sıfırdan proqramları,
hər hansı digər maşın üçü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ı siz ki, məbləği ilə məhdudlaşdırmağa çalışırlar
sizə lazım olan etibar.
Və siz bunu vasitələrdən biridir Kriptoqrafiya vasitəsilə.
Kriptoqrafiya, mahiyyətcə edir biz sirləri var.
>> Bəzən biz sirləri keçmək lazımdır birlikdə internet, demək, və ya
başqa şeylər.
Və biz istəmirik Bu sirlərini bilmək.
Beləliklə, biz bir şəkildə bizim sirlərini şifrelemek biz heç bir anlamaq bilər ümid edirik ki,.
>> Beləliklə, biz istifadə -
Bu sinif kurs vasitəsilə -
Sezar parol və kimi şeylər [Işitilemez], həm də çox çox olan
şeyi Şifreleme etibarsız yolları.
Onlar nə onlar anlamaq üçün asan edirik və sirri nə var.
Real dünya daha çox istifadə edir mürəkkəb şifreleme sxemləri.
Və biz nəzərə almaq deyil daha çox.
>> Ayıklama.
Gdb yaxşı deyil.
Mən bu vurğulamaq gedirəm.
Gdb hər hər zaman istifadə Bir problem var zaman.
Gdb faydalı olan əmrləri Siz bir xətt ya keçir ki, qırmaq
sayı, bir funksiyası adı, mahiyyətcə kodunuzu siz dayandırmaq istədiyiniz,
və nəzarət edə bilər.
>> Çap dəyişən alır və yazdıran ki, dəyişən ki nə
icrası qeyd.
Next sizin icra hərəkət bir addım boyunca.
Və bir funksiyası daxilində addım addımlar icrası.
>> Digər şeylər necə olan run edir 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.
Onlara baxmaq.
Onlar böyük istəyirik.
Bəli?
>> Auditoriya: [işitilemez]?
>> DAN: Bəli, bir ayıklama edir.
Belə ki, bir ayıklama bir proqramdır ki, Siz proqram debug imkan verir.
Bu bugs üçün hesab edir ki, bir proqram deyil Siz, baxmayaraq ki, böyük olardı.
>> Və mənim üçün son axtarış edir.
Danışdıq ki, axtarış belə növləri haqqında Bu sinif xətti axtarış var
siz hər vasitəsilə baxmaq ki, axtarış məkanda, bir element
bir zamanda element, qədər nə tapmaq çatana qədər sizin üçün axtarır və ya edirik
Axtarış sahəsi sonuna olan Siz tapa bilmədi ki, nöqtə
aradığınız ki, element.
Bu, yaxşı daimi zamanda alır olan 0 1 və pis xətti at
n 0 olan zaman.
>> Binary axtarış, olan ehtiyacı kasıb elementləri.
Siz elementləri ortasında getmək, əgər baxın aradığınız element
element daha böyük və ya daha kiçik Siz ortasında istəyirik ki,.
Bu böyük, siz demək ki, alt Axtarış sahəsi sizin
cari yeri, orta, və bu proses yenidən başladın.
Bu kiçik, siz demək baxmaq ki, - Bəli, nə qədər var?
>> Auditoriya: [işitilemez]?
>> DAN: Bəli.
Hər hansı növ sort tədris edilmişdir ki, sinif test üçün ədalətli oyun.
>> [Gülüş]
>> DAN: Siz idi yoxdur ki, müəyyən bir problem üçün bunu, bu ədalətli deyil
test üçün oyun.
>> Auditoriya: Biz necə artıq getmək bilər -
>> DAN: Bu artıq getdi olunacaq.
>> HOPARLÖR 2: üçün faktiki kodu [Işitilemez] study.cs50.net edir.
Beləliklə, siz təcrübə problem baxsaq və daxil sort səhifə
study.cs50.net, kodu var merge növ həyata keçirilməsi üçün.
Belə ki, həyata yoxdur özünüz gecə.
Amma əmin Siz daha çox anlamaq yalnız ezberlemeye daha.
>> Auditoriya: [işitilemez]?
>> HOPARLÖR 2: merge sort səhifə haqqında study.cs50.net, təcrübə var
problem ki, siz vasitəsilə basın əgər problem, çox sonunda var bir
birləşməsi olan həll, sort həyata keçirilməsi.
Amma əmin onu anlamaq etmək 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ı var.
Bu siyahı sonra kimi nə baxmaq bir Marka növ addım və ya
durub sort və ya nə.
Siyahıda biri tam iteration.
Siz ehtiyacı başa yoxdur belə, hətta bunun üçün kodu, onu anlamaq lazımdır
gedir necə bilmək kifayət qədər bu array değiştirmeyle olunacaq.
>> DAN: Bu mənim üçün var.
>> [Alqış]
>> LUCAS: Hey everyone.
My name Lucas edir.
Mən bütün, recursion haqqında danışmaq üçün gedirəm biz öyrəndim ki, növ, və
bütün göstəricilərinə az.
OK?
Bütün Belə ki, ilk recursion.
Nə demək ki bir funksiyası recursive edir?
>> Auditoriya: özü çağırır.
>> LUCAS: OK, yeah, özü çağırır.
Belə ki, bu şəkil kimi, misal üçün.
Bu daxili şəkil kimi bir şəkil və s.
Belə ki, məsələn, siz ola bilər - Dan kimi ki, ikili axtarış bəhs edirdi.
Ikili axtarış olan bir yol recursive siz faktdır
bir sıra tapmaq üçün çalışırıq.
Belə ki, orta gedin.
Və sonra yoxlamaq əgər nömrələri sol və sağ.
>> Siz tapmaq Əgər sonra sayı sol olacaq, eyni var
yenidən axtarış edir kimi bir şeydir, lakin yalnız siyahıda sol.
Belə ki, bu səslər necə 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 baxsaq minus 1 plus n minus 2 plus 1, ki, eyni
nömrələri cəmlənməsi kimi şey up n minus 1.
Mən bərabər məbləğin cəmi demək olar minus 1 n plus n məbləği bərabərdir.
Ki, hissi edirmi?
>> Və mən də başqa bir şey var ki ki, olan baza halda, adlı
nömrələri up məbləği sıfıra sıfır olacaq.
Belə ki, tezliklə mən sayı almaq kimi sıfır, mən sayılması dayandırmaq.
Ki, hissi edirmi?
>> Belə ki, burada necə bir misal var Mən həyata keçirə bilər.
Mən bəzi bu funksiyası var.
Yəni tam n edir.
N əgər Belə ki, burada ilk yoxlamaq az və ya sıfıra bərabərdir.
Belə ki, mən az və ya sıfıra bərabər, əgər bizim əsas işi olan, sıfır qayıtmaq.
Əks halda, mən yalnız qayıtmaq n plus bilər nömrələri məbləği
n minus bir bir.
Mənada?
OK.
>> Belə ki, burada kimi görünür nə.
Siz 2 bərabərdir məbləğ 2 plus 1 məbləği.
Və 1, 1 üstəgəl 0 olan 0 məbləği.
Mənada?
Beləliklə, biz sizin yığını baxsaq proqram, bu kimi görünür.
>> Birincisi, biz əsas funksiyası var.
Və sonra əsas funksiyası məbləği 2 çağırıb.
Və sonra məbləği 2 demək gedir, oh, məbləği 2 2 plus bir məbləğ bərabərdir.
Mən yığını 1 məbləği əlavə edin.
Və 1 cəmidir məbləğ zəng gedir 0, həmçinin əlavə edir ki,
yığın.
Və sonra ki, bunlar hər başqa üst qayıtmaq
digər olanları davam edə bilər əvvəl.
>> Belə ki, məsələn, burada, 0 AM, ilk, 0 qayıtmaq üçün gedir.
Və sonra 1 məbləğ seçin.
Sonra 1 məbləği gedir 2 cəminə 1 qayıtmaq.
Və nəhayət, 2 məbləği gedir əsas 3 qayıtmaq üçün.
Ki, hissi edirmi?
>> Bu necə anlamaq üçün həqiqətən vacibdir yığını iş və cəhd
anlamlı əgər baxın.
OK, belə ki, çeşidlənməsi.
Belə ki, niyə əhəmiyyətli çeşidlənməsi ilk növbədə?
Niyə biz qayğı lazımdır?
Hər kəs?
Mənə bir misal verə?
Bəli?
>> Auditoriya: [işitilemez].
>> LUCAS: OK, Bəli.
Belə ki, daha səmərəli axtarış edə bilərsiniz.
Ki, bir yaxşı bir yoldur.
Belə ki, məsələn, biz bir çox şeylər, əslində, bizim həyatımızda ki,
sıralanır.
Məsələn, lüğətlər.
>> Bu üçün çox vacibdir bütün üçün bir növ söz ki, biz
asanlıqla əldə edə bilərsiniz.
Belə ki, o deyirdi ki, nə var.
Siz daha səmərəli axtarış edə bilərsiniz.
Bunu etmək olardı necə ağır düşünün bir sözləri olan lüğət
təsadüfi sifariş.
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, siz
Facebook sizin qoydu ki, görmək olacaq yaxın dostu olanları üst var
Siz ki, çox danışmaq deyil ki.
Siz bütün yol aşağı getmək əgər Sizin dost siyahısı, siz görmək olacaq
Siz yəqin ki, hətta olmayan insanlar Siz dostları olduğunuzu unutmayın.
Və ki Facebook növ, çünki Arkadaşlarınızın əsasında necə
Siz onlar üçün yaxın.
>> Belə ki, veri təşkil.
Həmçinin Pokemon.
Siz görəcəksiniz ki, bütün Pokemons nömrələri var.
Və asan kimi məlumat daxil olmaq yolu.
>> Auditoriya: Pokemon giriş.
>> LUCAS: Bəli.
>> Auditoriya: [işitilemez].
>> LUCAS: Yep.
OK, belə ki, seçim sort.
Seçim sort seçmək gedir siyahısı hər kiçik çeşidlənməmiş dəyəri
hər iteration zaman.
Bu cür siz ki sort kimi Siz çalışdığınız zaman baş
tərəfdən bir siyahısı sort.
>> Əsasən, siz bütün baxmaq edir kiçik sayı.
Siz sıralanır siyahısı qoyun.
Və sonra axtarmaq Növbəti kiçik sayı.
Və sonra bunu saxlamaq və s.
>> Belə ki, seçim sort əsasən siz kiçik hər zaman 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ı.
>> Belə ki, siyahıda sıralanır üçün, ilkin boş.
Və sonra mən seçin gedirəm 2 olan burada kiçik sayı.
Mən sayı 2 almaq və mən qoymaq Siyahıda qarşısında.
Və sonra mən növbəti kiçik axtarmaq 3 olan element.
Mən sonunda qoyun sıralanır siyahısı.
Və sonra mən bunu saxlamaq.
Mən 4 tapmaq və sonunda qoyun.
5 tap ve sonunda qoyun.
>> Və bu dəfə necə bütün baxmaq ki, Mən heç sonunda qoyun dedi alıram
ə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.
Siz də olacaq durub sırala bir sorted və olan şey
bir çeşidlənməmiş siyahısı.
Yalnız bir şey ki, hər zaman ki, Siz sıralanır bir element əlavə edirik
siyahısı, yalnız element seçin ki, Bu çeşidlənməmiş siyahısı qarşısında.
Və sonra tapmaq üçün olacaq nə Bu sıralanır olmalıdır yerləşdirilməlidir
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ına hissəsi sıralanır.
Belə ki, siyahı bir şey yoxdur.
Mən yalnız sayı 3 qoya bilər.
>> İndi nömrəni 5 əlavə etmək istədiyiniz siyahısı sıralanır hissəsi.
Mən 5 saylı baxmaq.
Mən 3 daha çox var ki, görürsünüz.
Mən 3 sonra olmalıdır ki, bilirik.
Mən 3 və 5 qoydu.
>> Sonra 2 saylı əlavə etmək istəyirəm.
Mən 2 nömrəli həqiqətən olduğunu qeyd sonra davam 3 və 5 də.
Mən həqiqətən onu qoymaq üçün bütün Bu siyahının başında yol.
Mən, cür, bütün keçmək lazımdır sıralanır siyahısına elementləri belə mən
sayı 2 otaq etmək.
>> Sonra sayı 6 oldu.
Mən 5 sonra olmalıdır ki, görürük.
Mən orada qoyun.
Və nəhayət, mən 4 nömrəli baxmaq.
Mən onu qeyd 3 və 5 arasında.
Və sonra mən orada qoymaq və shift bütün digər elementləri.
Mənada?
>> Bubble Sort.
Belə ki, bubble sırala etdiyiniz əsasən edəcəyimiz - biz bubble zəng
Siz siyahısı ilə getmək sort çünki - Mən yalnız göstərmək əgər həqiqətən yaxşıdır
Bu kimi -
və müqayisə etmək olacaq qonşu ədəd.
Və dəyişdirmək olacaq onların mövqeləri onlar değilseniz
sağ üçün.
>> Belə ki, əsasən, nə gedir baş burada, məsələn,
Siz 8 və 6 var.
Bilirsiniz sıralanır sifariş ki, həqiqətən sağ, 6 və 5 ola?
Beləliklə, siz sifariş dəyişdirmək olacaq.
Sonra 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 Sort çünki sonra Bubble deyirlər bu tekrarlamalar hər, həqiqətən,
siyahıda ən böyük sayı bütün alır siyahısı sonuna yol.
Ki, hissi edirmi?
Onu dəyişdirmə saxlayır, çünki və sağa hərəkət.
>> OK, belə ki, bu ikinci iteration edir.
Bu eyni şey olardı.
Mən bir svop edəcəyik sonra son bir.
Svopları var Mən və siyahısı çeşidlənir.
Belə ki, Bubble Sort, biz əsasən saxlamaq siyahısı 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?
>> Bir az danışmaq edək haqqında zaman çalışan.
Belə ki, uşaqlar xatırlayıram Big 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 bu o deməkdir ki, uzunluğu,
proqram gözləmək nə qədər run etmək üçün.
Like baxımından -
bu halda - n.
Bu elementlərin sayı ən pis halda edin.
Kimi, ən pis mümkün halda.
>> Belə ki, Bubble Sort, misal üçün, biz n kvadrat Big O var.
Niyə biz var?
Niyə Bubble Sort Big O n kvadrat?
>> Auditoriya: [işitilemez].
>> LUCAS: Bəli, belə ən pis halda olacaq Mən n tekrarlamalar etmək lazımdır ki,.
Belə ki, tekrarlamalar hər gedir Sonda ən böyük element gətirmək
siyahısı.
Belə ki, ən pis halda mən var ki, ki, şey n dəfə etmək.
Və bu dəfə hər biri üçün, mən var Mən müqayisə, çünki n mübadiləsi etmək
hər iki elementləri.
Bu n kvadrat nə ki, var Bu n dəfə n çünki.
>> Sonra seçim sort də n kvadrat hər iteration, mən var, çünki
hər bir element baxmaq siyahıda.
Və sonra kiçik tapmaq Mən var o deməkdir ki,
n elementləri vasitəsilə baxmaq.
Və mən ki, n dəfə nə etmək lazımdır, çünki Mən bütün n elementləri seçin.
>> Bir durub sort də n kvadrat ən pis ssenari olacaq, çünki
, bir, Mən daxil etmək ola n ədəd, sağ?
Mən artıq mən gedirəm bilirik ki, n tekrarlamalar var.
Amma əgər bu nömrələri, hər biri üçün nömrələri bütün baxmaq
sıralanır siyahısı və bu bütün yol qoymaq qarşısında ki, n kvadrat olacaq
yenə dəfə n n olunacaq, çünki.
Mənada?
Nə omega haqqında?
>> Auditoriya: [işitilemez].
>> LUCAS: Bu yaxşı ssenari var.
Belə ki dəfə bir çox kimi var çeşidlənməsi, ən yaxşı ssenari deyil
siyahısı artıq çeşidlənir zaman.
Beləliklə, siz həqiqətən yoxdur bir şey etmək.
Bubble Sort ən yaxşı var n ssenari.
Sizlərin niyə bilirsinizmi?
>> Auditoriya: [işitilemez].
>> LUCAS: Bəli, siz track saxlamaq əgər data rasionu bir svop olub-olmamasını
deyil, set kimi bir şey varsa əgər bir iteration var idi doğru əgər
siyahısı artıq çeşidlənir, əsasən, nə olacaq Mən gedirəm
hər iki dəyişdirmək üçün cəhd edin qonşu elementləri.
Mən gedirəm ki, svopları var.
Mən yalnız hemen geri.
>> Belə ki, mən yalnız idi o deməkdir ki, siyahısını bir dəfə getmək.
Mən baxmaq çünki Belə ki, n var n elementləri.
Niyə seçim sort n kvadrat?
>> Bəli, sorted siyahısı olsa belə, üçün seleksiya sort hər iteration, mən
minimum element seçin.
Belə ki, mən baxmaq üçün o deməkdir ki, Bu çeşidlənməmiş bütün elementləri
minimum siyahısı və tapmaq hər iteration üçün.
Ki, hissi edirmi?
>> Və durub qılınc çünki n Mən daxil etmək çalışıram ki, işi
nömrələri və nömrələr bütün, mən onları əlavə etmək üçün cəhd edin, görürəm ki, onlar
doğru mövqe var.
Mən bütün digər yoxlamaq getmək yoxdur Bu çeşidlənməmiş siyahısı nömrələri.
Bu n olacaq nə ki, var.
Mənada?
Və teta nədir?
>> Auditoriya: [işitilemez].
>> LUCAS: sorry, nə?
Yenə deyirəm.
>> Auditoriya: [işitilemez].
>> LUCAS: Exactly.
Beləliklə, siz bilərsiniz ki, yalnız seçim Birləşdirmə saxlanılır sort thetas var.
Yalnız teta, çünki ki, var Big O və Omega eynidir əgər.
OK.
Və nəhayət, sort log n birləşməsi.
>> Və sonra, Dan deyirdi kimi, sort Birleştirme cür ki, eyni şəkildə kimi
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 unutmayın sağ 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 və işarə şeyi videos
bir-birinə.
Amma göstəricilərinə düşünmək istəyirəm kimi sadəcə bir ünvan.
Belə ki, gedir ki, bir dəyişən var bir ünvan saxlamaq üçün.
>> Belə ki, yalnız bu xüsusi dəyişən var ki, dörd bytes uzun.
Unutmayın, bir şey ki göstəricisidir bizim 32-bit üçün uzun həmişə dörd bytes
maşın ilə halda belə cihaz.
Və bu yalnız yeri var bu bir dəyişən daxilində.
>> OK, belə ki, bu yaddaş əsasən, var.
Belə ki, yaddaş hər bir blok həqiqətən bir 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ə ki, biz göstəricilərinə istifadə edəcəyik səbəbi deyil Mən yeri yadda varsa
xüsusi dəyişən yaddaş edir.
>> Və uşaqlar xatırlayıram ki, o biri Mən bir funksiyası varsa hallarda idi
Mən, həqiqətən, istədiyiniz əgər reals üçün svop, mən, həqiqətən,
bir göstərici göndərmək lazımdır.
Dəyişən.
Bu, uşaqlar yadınızdadırmı?
Arasında fərq -
adı nədir?
Dəyəri ilə zəng və zəng istinadən, sağ?
>> Bəli, OK.
Belə ki, dəyəri zəng.
Siz yalnız bir dəyişən göndərmək zaman Siz yalnız bir dəyər göndərilməsi etdiyiniz fəaliyyət göstərir.
Beləliklə, siz həqiqətən göndərilməsi etdiyiniz dəyişən surəti.
Və proqram az qayğı bilməz haqqında, eyni dəyişən həqiqətən
surəti edir.
>> Və istinadən zəng deməkdir ki, Mən, həqiqətən, surəti göndərilməsi alıram
dəyişən gösterci.
Belə ki, I göndərilməsi alıram o deməkdir ki, dəyişən yer.
Mən yeri var hiss dəyişən, mən funksiyası zəng zaman
göstəricilər ilə, mən, həqiqətən edə edirəm əsas idi ki, data dəyişir.
Mənada?
>> Baxmayaraq, pointer, bir kopiyası pointer hələ real ünvanı malikdir
Mən dəyişmək istəyirəm ki, dəyişən.
Mənada?
>> Belə ki, göstəricilərinə yaradılması.
Göstərici həmişə var, saxla bu işarə ki növü
və sonra bir ulduz.
Və sonra adını qoydu.
Belə ki, unutmayın var zaman ki, nə ulduz, bir göstərici kimi
ki, nə dəyişən siz ki, yazın.
>> Belə ki, burada ulduz, misal üçün, bu bir pointer və tam.
Və sonra char ulduz bir göstəricisidir char ulduz və s.
Bəli?
>> Biz nə varsa Auditoriya: star x n göstərici.
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 pointer adına x 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 bəndlərdən birini almaq.
Mən demək gedirəm ki, olan x olacaq
bir pointer olacaq.
Və göstəricilər haqqında maraqlı bir şey biz ki, demək ki
32-bit maşın üçün 4 bayt.
Və üçün səbəbi 4 bayt 32-bit var.
>> Və 64 bit həqiqətən var ki, maşın göstəricilərinə ünvanları var
64 bit uzun.
Belə ki, yalnız o deməkdir ki, ölçüsü maşın ünvanlar fərqlidir.
>> Belə ki, sened və Dereferencing.
Iki operatorları var ki, Sizlərin yadda olmalıdır.
İlk işareti olunur.
İkinci ulduz edir.
Ki, ulduz və bu ilə qarışıq almaq etməyin ulduz, çünki ki, xatırlayıram
Bu halda, siz n ulduz var.
>> Bu birlikdə bütün şey kimi.
Heç bir n kosmik ulduz var.
Belə ki, bu növü var deməkdir.
Unutmayın ki, zaman var dəyişən ulduz, siz
növü haqqında söhbət.
>> Siz yalnız sonra 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 ki, ünvan üçün gedir, işarə
və zaman baxaraq Siz var.
Mən tələbələrimə deyirəm ki, zaman var ulduz, siz ki, düşünmək lazımdır
tərkibi kısaltmasıdır.
>> Belə bir göstərici var və əgər star pointer etmək, bu var
göstərici content.
Belə ki, işarə nə getmək və daimi məzmunu baxmaq.
Və işareti eyni ünvanı kimi bir şey.
>> Mən bir dəyişən bir var, əgər - kimi, edək Mən int a 3 bərabərdir etdi ki, -
Mən ünvanını tapmaq istəyirsinizsə dəyişən yaddaş, mən yalnız bunu edə bilərsiniz
bir işareti.
Belə ki, bir ünvanı var.
Mənada?
>> Belə ki, burada bir misal var.
Bu int b və int c yoxdur.
3 vasitələrdən bərabərdir int Belə ki, Mən xatirəsinə getmək üçün gedirəm.
Və mən bir slot tapmaq üçün gedirəm və burada sayı 3 qoymaq.
>> Və sonra int b 4 bərabərdir.
Mən eyni şey üçün gedirəm.
Yaddaş gedin və bir sıra qoymaq Qutuları bir 4.
Və int 5 bərabərdir.
Başqa qutu tap sayı 5 qoydu.
>> Belə ki, bu xətt nə edir? n star pa ampersand a bərabərdir.
Belə ki, ilk növbədə, n star pa.
O 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 bir və ünvanı olması göstərici.
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.
Çox təəssüf edirəm.
Bu eyni şey.
Amma indi bir göstərici yaradılması ar yaxşı deyiləm b və sonra c bir göstərici.
Bəli?
>> Auditoriya: [işitilemez]?
>> LUCAS: Bəli.
Beləliklə, siz yaddaş getmək və siz getmək əgər pa üçün designator ki box,
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.
Orada 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 bir göstərici kimi yaddaşında xüsusi yer olan I
integers üçün üç yuva ayırıb.
Ki, hissi edirmi?
>> Mən deyiləm array 3, int zaman bunu, əsasən, üç yaradılması
yaddaş slots.
Mən yalnız yaddaş üç yuva tapa bilərsiniz.
Mən əgər, sonra, bir ulduz array, belə əsasən serialın content deməkdir,
mən göstərici silmək deməkdir ki, mən getmək Bu işarə ki, yerə,
və mən bir nömrəli qoydu.
>> Və sonra, ulduz array plus 1 əgər, ki array bunu eyni şey var
mən getmək deməkdir Mötərizədə biri, Bu da işarə edir ki, yer.
Və sonra plus 1 markalar Mənə bir mövqeyi keçmək.
Mən, həqiqətən, bu mövqe getmək və sayı iki qoydu.
>> Və sonra, nəhayət, mən nə array 2 plus, hara getmək
at 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 deyərək.
Və, 1 əlavə edə bilərsiniz yalnız, çünki biz yalnız həqiqətən istəyirik
ilk ünvanı sened.
>> LUCAS: Bəli.
Niyə biz, məsələn, array deyirlər 0, array 1, array 2?
Siz 0 edirsiniz niyə, dedi alıram 1, 2, əvəzinə 1, 2, 3 3?
Səbəblərindən biri, bir, kompüter proqramçılar başlamaq üçün seçim
0-dan hesablanması.
Array 0 nə zaman çünki iki edir Bu array etməklə eyni şey
plus 0, mən getmək deməkdir ki, mövqeyi, və mən heç
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ə tələb edir bunu arasındakı fərq
Bu və ya malloc edir.
Fərqlərdən biri olduğunu int array 3 yaradır
yığını array.
Mən malloc nə zaman, yığın yaradır.
Ki, hissi 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?
Bütün rəqəmlər sizin compiler cür Siz bəyan ki, dəyişənlərin.
Və 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.
>> Belə ki, əsasən, o dəyişənlər üçün yer yaddaş ayrılır
dəfə tərtib.
Belə ki, kompüter o deməkdir ki, Bu dəyişənlərin bütün bilmək
əvvəlcədən.
Bu nə dəyəri bilmək lazım deyil Əgər siz onları qoymaq olacaq.
Amma bilmək lazımdır nə çox yaddaş lazımdır.
>> Amma indi deyək ki, məsələn, bir sıra yaratmaq və ya qəbul etdiyiniz bir
siz qəbul etdiyiniz ki, simli istifadəçi.
Siz necə bilmirəm uzun string məsələn, olacaq.
Beləliklə, siz bilmirəm dəqiq necə çox yaddaş blokları siz ayrılması, sağ?
>> Belə ki, həqiqətən üçün mənada etmir 100 simvol qoymaq demək.
Və sonra istifadəçi 150 nə yazır?
Siz berbat olacaq.
>> Belə ki, əsasən, siz necə əmin ola bilməz siz ayrılması lazımdır qədər yaddaş
Siz proqram tərtib edərkən.
Siz yalnız run zaman 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 yönəldilməsidir yaddaş edirik
uzunluğu, siz etdiyiniz o deməkdir ki, o anda doğru qərar ki,
ki, yaddaş olmalıdır.
Siz ayrılması etdiyiniz zaman ki, var.
Ki, hissi edirmi?
>> Belə yığını dəyişənlər var, xatırlayıram tərtib vaxt yaradılmışdır ki.
Və sonra yığın dəyişənlər var Siz getmək kimi yaradılmışdır ki,
malloc ilə, məsələn.
>> Auditoriya: [işitilemez]?
>> LUCAS: Belə GetString edir malloc zəng etmək üçün gedir.
Mənə malloc danışaq, və Mən GetString izah edəcəyik.
Belə ki, malloc eyni şeydir yaddaş ayrılması kimi.
Belə ki, ayrılması olacaq yığın yaddaş.
Və bu bir pointer qayıtmaq olacaq yaddaş təsis edildi yerləşir.
>> Belə ki, nə zaman -
Burada misal üçün -
n star pointer.
Və sonra pointer malloc bərabərdir inch dəfə 10 ölçüsü.
Mən bir göstərici yaradılması alıram.
Və sonra mən ki, pointer təyin alıram göstərici dəyəri malloc
mənə verirdi.
>> Siz ayıra bilər Mən malloc soruşuram 10 integers üçün yer.
Ki, söyləyərək nə var.
Və malloc Mənə bir geri verir ki, yer gösterci.
Mənada?
OK.
Mən Və GetString, əsasən, bunu bir 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 bir gülünc üçün xahiş deyək yaddaş məbləği.
Sizin kompüter olacaq deyil qədər ki ayıra.
>> Belə ki, malloc yalnız gedir null qayıtmaq üçün.
Belə ki, həmişə yoxlamaq unutmayın, əgər siz malloc var ki göstəricisidir
null ya deyil, əgər güc, çünki bir göstərici dereferencing 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.
Bağışlayın, Rob.
Thanks.
>> [Alqış]
>> LUCAS: Any Son suallar Rob gəlir əvvəl?
No?
Bəli?
>> Auditoriya: Mən görmədim online bu bir.
Siz hələ onu qəbul?
>> LUCAS: Mən Dave hesab tezliklə yüklemek.
>> DAVE: Bu olunub 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 etməlidirlər bütün yığın qoymaq ki, yaddaş.
>> Auditoriya: [işitilemez]?
>> LUCAS: Bəli.
Bir mədəniyyət malloc var ki, hər hansı bir zaman, siz pulsuz bir mədəniyyət olmalıdır
Siz ki, dəyişən istifadə dayandırmaq sonra.
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.
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
funksiyaları, bir neçə ilə yanaşı Siz, həqiqətən, yoxdur başqa şeylər
narahat lazımdır.
>> Belə ki, burada bir nümunə proqram var, bildiriş, əsas qaytarılması printfing edir
foo 4 dəyəri.
foo yalnız geri gedir bar dəyəri 4 vergül 6.
Və bar bəzi yerli təyin etmək niyyətindədir dəyişən n 4 dəfə 6 bərabər.
Və sonra n qayıtmaq.
>> Belə ki boyunca yığını baxaq Bu proqram faktiki iteration.
Belə ki, bizim yığını alt var.
Yığını qədər artır unutmayın.
Belə ki, bizim yığını altında, biz əsas üçün yığını çərçivəsində var.
Proqram başladığında, əsas həmişə at olacaq
yığını alt.
>> Və daxilində nə bizim əsas üçün çərçivə yığın?
Belə ki, heç yerli var olsa belə əsas dəyişənlər kimi I, əvvəl bildirib
biz argc və RGV yer alaraq var əsas yığını çərçivə içərisində.
Belə ki, əsas indi gedir funksiyası foo zəng.
Və foo gedir deməkdir öz yığını çərçivəsində almaq.
>> Belə ki, indi biz daxilində 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 arqumenti kimi keçir.
>> Belə ki, indi foo bar zəng etmək üçün gedir.
Nə bar içərisində 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 yığını çərçivəsində çünki bar
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 dönən yığını çərçivəsində foo.
Bar indi qaytarılması və, çünki ki, biz yığını çərçivəsində yaratma edirik deməkdir
üçün yığını off bar.
Belə ki, bütün yaddaş ki, bar olmuşdur istifadə yığını off indi.
>> İndi, foo də gedir əsas 24 qayıtmaq üçün.
Belə ki, indi ki, foo qaytarılması, yaddaş ki, foo onun istifadə edilib
yığını çərçivəsində də getdi.
İndi, əsas printf zəng etmək üçün gedir.
Belə ki, printf yalnız başqa funksiyası var.
Biz printf zəng zaman, olacaq Bu printf başqa yığını çərçivəsində
funksiyası zəng.
>> Biz nə printf keçən olunur?
Getmək üçün nə var onun yığını çərçivəsində.
Ən azı, biz keçən edirik ki, faiz i n backslash və
dəlil 24.
Bu çərçivə yığını daha çox ola bilər printf bəzi istifadə etmək olur əgər
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ər formal var şeyi adı.
>> Belə ki, argc və argv var əsas parametrləri.
Arqumentləri nə həqiqətən var Bu parametrlər kimi keçir.
Belə ki, orada 4, 4 foo zəng zaman Mən içəri keçən alıram dəlildir
Və daxilində parametr n, foo, dəyəri 4 qalır
4 ildən arqument idi.
>> Auditoriya: [işitilemez]?
>> Rob: n bar bir yerli dəyişir.
n hələ foo yerli, lakin bu foo bir parametr var.
Bu yerli dəyişən deyil.
Bəli?
>> Auditoriya: [işitilemez]?
>> Rob: foo yalnız bar zəng 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 adlanırdı printf əvvəl?
>> Rob: Niyə foo printf əvvəl adlanırdı?
Mən əvəzinə, bir şey ola bilər int kimi x 4 foo bərabərdir
və sonra x çap.
Ancaq əvəzinə, funksiyası birləşdirilmiş Bu printf mübahisəyə zəng.
>> Amma biz, həqiqətən, bilməz biz qədər printf üçün zəng icra
4 foo nə anlamaq.
Beləliklə, biz bu qiymətləndirmək olacaq.
Və yalnız bir dəfə həyata gedir geri gəlmək və bu qiymətləndirmək üçün.
Bəli?
>> Auditoriya: həm bar ildən [işitilemez]
dəyər, niyə biz [işitilemez] yoxdur?
>> Rob: Onlar tamamilə int olmalıdır.
Ki, artıq tutuldu deyil çox keçir.
Belə ki, int bar və int olmalıdır o, həm də ildən foo
integers qayıdır.
Void onlar fikrində deyilik yalnız deyil faktiki dəyərlər qayıtmaq üçün.
Bəli?
>> Auditoriya: Əgər yuxarıda xətti olsaydı qaytarılması, [işitilemez]?
>> Rob: qaytarılması yuxarıda line?
>> Auditoriya: Bəli.
Kimi printf və [işitilemez] olmasaydı, iki dəfə çap olardı?
>> Rob: Belə ki, foo daxilində?
Biz burada printf olsaydı?
>> Auditoriya: Bəli.
>> Biz printf hüququ var əgər: Rob burada, bir dəfə çap olardı.
Biz bir sağ foo zəng ildən burada, biz printf hit olacaq.
Sonra biz bar zəng edəcəyik.
Və sonra foo qayıdacaqlar.
Və bu.
Biz yalnız heç qarşılaşa dəfə printf.
Bəli?
>> Auditoriya: [işitilemez]
biz ilk istəyirik, çünki printf foo zəng printf zəng və sonra biz keçən edirik
dəlilləri.
>> Rob: Belə ki, nəzəri deyil, printf foo zəng?
Belə ki, heç.
C gedir ki, yalnız sifariş biz əvvəl bu şeyi icra
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 Bu qiymətləndirmək.
Bu bütün indi, həyata bir dəfə onun dəlilləri qiymətləndirilir.
İndi biz edə 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 bir geri nöqtəli vergül 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ə.
Bu birbaşa ilə ziddiyyət biz avtomatik zəng edən yığın
yaddaş idarə edilməsi.
>> Belə ki, yığını, həqiqətən, heç vaxt necə yerli dəyişənlərin ilə məşğul
itələdi 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ın gəlir malloc və pulsuz.
>> Belə ki, burada başqa proqram.
Biz yapýyorsun bütün mallocing edir tam.
Biz star x onu 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ə edir nə x Print print x, 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ə ki, biz olacaq bizim yığın up top.
>> Belə ki, bizim yığını alt, biz əsas üçün yığını çərçivəsində.
Bu argc, argv üçün yer var və biz İndi, yerli dəyişən x 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ə olacaq.
Biz malloc nə keçən olunur?
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 ki, yığın Ünvan.
>> Belə ki, nə ki, daxili əslində ünvanı ox123 yaddaş rayonu?
Tullantı.
Belə ki, biz buna bir şey saxlanılır deyil.
Belə ki, kimi uzaq Bildiyimiz kimi, bu bir şey ola bilər.
Siz sıfır var güman lazım deyil.
Bu çox güman ki, sıfır deyil.
>> Belə ki, indi malloc qaytarır.
Və biz zaman malloc returns 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ı oldu yaddaş blokunun ünvanı bu
yalnız yığın ayrılmış.
>> Belə ki, 0x123 x qayıtmaq indi müəyyən olacaq 0x123 bərabər olan pictorially,
x faktiki olan kimi biz tez-tez çəkmək 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 ulduz x 50 bərabərdir.
Belə ki, ulduz o deməkdir xatırlayır ünvana gedin.
Belə ki, 0x123 Biz gedirik ünvana gedin.
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ə şeylər kimi baxmaq edir.
Belə ki, indi artıq var orada zibil up.
İndi biz 50 ki, məlumdur ki, Xüsusilə ünvanı çünki
biz seçin.
OK?
Belə ki, indi biz f çap olacaq.
>> Belə ki, birinci biz ulduz x çap olacaq.
Belə ki, ulduz x nədir?
Yenə star x vasitələri getmək x işarə edir ki, bir şey.
Belə ki, 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, Bir göstərici çap necə.
Beləliklə, biz yüzdə i, faiz f, və artıq o bütün.
Belə ki, faiz p, bir pointer çap.
>> Belə ki, x bir göstəricisidir.
Biz özü x çap olacaq əgər, biz daxili əslində nə çap edirik
x, 0x123 Belə ki, ilk olan 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 üçün bəzi varsa
tam və çap etmək istəyirəm bir hexadecimal kimi.
Ki, bunu necə var.
>> Faiz d ki, halbuki decimal 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 yüzdə x işləmək bilər.
Bəli?
>> Auditoriya: [işitilemez]?
>> Rob: Bəli.
Ən azı bu zəng üçün - mən burada daxil etməyib.
Lakin bu iki dəlilləri mütləq Bu yığını çərçivə içərisində
bir yerli dəyişənlərin ilə yanaşı, printf istifadə etmək olur.
Və sonra növbəti zəng indi printf printf yığını çərçivəsində daxilində 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, bütün 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 çap gedir -
>> Auditoriya: [işitilemez].
>> Rob: Bəli, çap olacaq nə x işarə edir.
Star bu nə deyir işarə şey.
Onu qapmaq.
Belə ki, işarə nədir?
50.
Onu qapmaq.
Yəni biz çap olacaq nə.
Növbəti bir, biz istəyirik, halbuki yalnız özü x çap.
Nə f daxilində deyil?
0x123.
OK.
>> Və sonra, nəhayət, biz pulsuz var.
Nə biz 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 azad.
Belə ki, indi pulsuz, bütün sağ bilir Mən yığın qədər getmək üçün var
və pulsuz yaddaş.
Bu artıq nə istifadə edir ünvanı 0x123 edir.
>> Belə ki, pulsuz azad edir yığın ki.
İndi bizim yığın yenidən boş.
Biz heç bir yaddaş sızıntıları.
İndi pulsuz qayıdacaqlar.
X hələ 0x123 olduğunu görürük.
Amma indi etibarlı deyil yaddaş.
Biz dereference x artıq olmalıdır.
Bəli?
>> Auditoriya: 0 lazımsız qayıtmaq edir?
>> Rob: 0 lazımsız returen mı?
Bəli.
Biz yalnız orada qoymaq çünki biz hava üçün bir dönüş bir 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, əgər biz göstərici dereference üçün cəhd?
Bu heç bir şey yanlış gedir ki, mümkündür.
Bu, biz hələ 50 almaq lazımdır ki, mümkün deyil.
>> Bu yaddaş ki, həmçinin, mümkün İndi başqa bir şey üçün istifadə olunur.
Belə ki, bu, müəyyən davranış.
Və undefined bir şey deməkdir baş verə bilər.
Bəli?
>> Auditoriya: [işitilemez]?
>> Rob: Xeyr, belə ki, təyin əgər x başqa bir şey.
Belə ki, əgər sağ, burada biz x bərabərdir etdi başqa malloc bir şey -
malloc ölçüsü hadisə -
sonra orijinal blok yaddaş azad deyil.
Və biz rəsmi itirmişdir.
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, 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, yığın aşağı gedir, xatırlayıram.
Stack gedir.
Belə ki, bu, mühazirə dən nümunəsi idi, Əsas yalnız hara getdiyini hesab edirəm ki,
davam edən bu funksiya foo, zəng edin recursively üzərində özü zəng və
təkrar.
>> Belə ki, yığın çərçivəsində gedir 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 gedir yenidən, almaq niyyətində olan
başqa yığını çərçivəsində.
Və sonra yenidən və yenidən və yenidən, və yenə nəhayət, biz run qədər
yığın daxil.
Belə ki, bu biz almaq necə bir yığın daşqın.
Və bu nöqtədə, siz seg günah.
Yoxsa, həqiqətən, əvvəl seg günah istədiyiniz Bu point lakin yeah.
>> Auditoriya: əsas kötük 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 seg günah.
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 deməkdir bir yığın daşqın var.
Belə ki, mütləq.
A seqmentasiya günah olduğunu bildirir bir şəkildə toxunan yaddaş
siz olmamalıdır.
Belə ki, baş bir yol, zaman Siz daşqın yığın, biz toxunan başlamaq
biz deyil ki, bir şəkildə yaddaş.
Bəli?
>> Auditoriya: [işitilemez]?
>> Rob: Belə ki, bir sonsuz loop daxilində.
Kimi, bu bir recursive sonsuz kimi loop və biz başqa bir almaq
yığını hər zaman nizama.
Amma yalnız müntəzəm daxili bir isə sonsuz -
yaxşı, hətta f çap bildirin -
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.
Bu yığını artan deyil.
Bu fakt var ki, hər recursive zəng bizə yığını çərçivəsində verir.
Biz bir yığın daşqın almaq niyə ki.
Bəli?
>> Siz almaq dedi Belə ki, əgər Auditoriya: loop isə sonra [Işitilemez]?
>> Rob: Belə isə loop daxilində əgər bir printf siz hələ ki, var idi
seg günah deyil.
Mən şeyi çaşdırmaq istəmədi.
Bu loop olacaq.
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 olur çünki bunların heç biri
foo üçün zənglər qaytarılması olunur.
Biz geri əgər, sonra biz ki, yığını çərçivəsində itirmək başlamaq.
Və sonra biz daşqın yığın deyil.
Bir baza halda lazımdır ki var Sizin şəxsi funksiyaları üçün.
Bəli?
>> Auditoriya: potensial ölçüsü və mı üçün eyni yığın üçün yığın
bütün proqramları?
>> Rob: Təxminən.
Potensial yığını ölçüsü və bütün proqramları üçün yığın eyni?
Təxminən.
Bəzi Randomizasyon var harada yığını başlayır və
yığın başlayır.
Siz bütün çox var nə varsa qlobal dəyişənlər və hər şeyi, siz bilər
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 ki, əhəmiyyətli bir fərqdir.
>> Siz bütün çox daha çox almaq olacaq yığın və 64-bit yığın space
yalnız daha çox var sistem çünki onlar istifadə edə bilərsiniz ki, edir.
Amma fərdi sistemi, o, yığını təxminən eyni miqdarda
və yığın kosmik.
Bütün hüquqlar.
>> Belə ki, son şey tərtib edir.
Belə ki, bu prosesi bilməlidir.
Dörd böyük addımlar var.
Belə ki, ilk bir olmalıdır yadda asan ola bilər.
Pre-emal.
Bu da prefiks əvvəlcədən.
Belə ki, hər şeydən əvvəl gəlir.
>> Yadda şey hash edir.
Belə ki, hash müəyyənləşdirir və hash daxildir o bütün.
O bütün pre-prosessor var direktivləri.
Bu şeylər ki, pre-prosessor qayğı.
>> Belə ki, bir pre-prosessor nə edir?
Bu, həqiqətən lal şey var.
Nəyə qadir deyil, bütün bu bütün var surəti, və cut və paste əməliyyatları.
>> Belə ki, hash standart I0 dot saat daxildir.
Nə ki?
Bu standart I0 dot saat qənimətçilik fayl və üst onu sovuşdurmaq
Bu hash daxildir deyir yerdə standart I0 dot h.
>> Və hər hansı bir hash biz etdik ki, müəyyən görüldü, nə ki?
Onun dəyərini çıxarmaq ki, hash müəyyən kimi və sovuşdurmaq müəyyən edilir
Siz dəyəri istifadə harada.
Belə ki, preprocessor yalnız həqiqətən yoxdur sadə mətn əməliyyatları əsaslanır.
Bu smart heç bir şey yoxdur.
Belə ki, başqa hər şey daha mürəkkəbdir.
>> Belə ki, indi ki, preprocessor edir görülən, biz, həqiqətən tərtib edir.
Belə ki, nə deməkdir tərtib edir?
Biz indi c kodundan olacaq toplaşmaq kodu.
Bəli?
>> Auditoriya: [işitilemez]?
>> Rob: Bəli, biz tutdu.
Belə ki, tərtib.
Biz c birləşmək olacaq.
Belə ki, bu faktiki dil dəyişiklik.
Özünü tərtib gedən deməkdir yüksək səviyyəli dil üçün
aşağı səviyyəli dil.
>> Və c yüksək səviyyədə dil toplaşmaq müqayisədə.
Montaj nədir?
, Olduqca ki, Onun təlimat çox, sizin CPU üçün.
Lakin kompüter hələ yoxdur montaj 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 ki,
Sizin CPU həqiqətən anlayır və , onları tərcümə
olanları və adet sıfır.
>> Toplaşmaq ikili C belə.
Amma hələ bir yürütülebilir yoxdur.
Belə ki, CS50 kitabxana düşünürəm.
Biz bir ikili ilə təmin GetString olan bu CS50 kitabxana,
və GetInt və bütün.
>> Amma CS50 kitabxana -
və özü - yürütülebilir deyil.
Bu əsas funksiyası yoxdur.
Bu yalnız ikili bir dəstə var istifadə edə bilərsiniz ki,.
Belə ki, linking biz bütün birlikdə gətirmək necə bu müxtəlif ikili faylları
faktiki yürütülebilir daxil.
Siz yazın ki, bir dot bir nöqtə doğramaq.
>> Belə ki, bu ki, siz faylı kimi , yazdı - Sizin proqram nə -
Ceaser dot c.
Amma indi tərtib edilmişdir ikili aşağı.
Belə ki, Ceaser dot o.
Bu, bizim cs50 kitabxana ikili edir.
Onlar birlikdə edirik bir yürütülebilir daxil.
Bəli?
>> Auditoriya: [işitilemez]?
>> Rob: Belə ki, ilk xatırlayıram daxildir, hash əslində daxildir
pre-prosessor addım.
Amma ayrı-ayrı.
Əgər hər hansı bir funksiyaları istifadə edirsinizsə ki, , sonra bir fayl kənarda
heç bir şey keçid ehtiyac yoxdur hər şey var-ci ildən.
>> Bildirib ki, printf daxil bağlı keçirilir
Əgər printf istifadə əgər, ki, bir şey var ki, bağlı olmalıdır
ki, yazmadım, çünki.
Və əslində, printf avtomatik olaraq daxil bağlıdır
Siz necə command line və ya recommend Siz etmək yazın, siz görmək
link olan dash l cs50, CS50 kitabxana?
Printf ki, kimi stuff gedir avtomatik olaraq bağlıdır.
Bir ş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 CS50 kitabxana istifadə edən.
Biz tərtib və sizi verilmiş 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 kod olmadan Siz kodu tərtib edərkən, GetString
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 ki, indi bütün GetString var
sağ, mən, həqiqətən bilər GetString icra.
Mənim fayl tamamlandı.
Mən bu çalıştırabilirsiniz.
Bəli?
>> Auditoriya: çevirmək birləşdirən nədir çalıştırılabilir üçün ikili?
Digər yoxdur, belə ki, hətta kitabxanalar, 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 sağ olun.
>> Rob: No problem.
Hər hansı digər suallar?
Əks halda, biz müəyyən edirik.
Bütün hüquqlar.
Thanks.
>> [Alqış]
>> Auditoriya: Təşəkkür edirəm.
>> Rob: Bəli.