[Powered by Google Translate] [Həftə 2, davamı]
[David J. Malan, Harvard Universiteti]
[Bu CS50 edir. - CS50.TV]
Bütün hüquqlar. Bu CS50, bu həftə 2 sonu.
Siz, bu dəfə ətrafında sabah ac olmaq düşünüyorsanız
biz kiçik bir qrup sabah, cümə axşamı, 1:15 pm kimi çağırmaq olacaq bilirik.
Siz RSVP istəyirsinizsə bu URL burada var.
Space məhdud, belə şəklində bu doldurun zaman doldurdu əgər bağışla edin.
Maraq ola bilər ki, başqa bir URL, baxmayaraq ki, bu.
Yalnız bir ay haqqında, kurs mövcud olacaq
bütün daha geniş edX vasitəsilə hansı vasitəsilə İnternet insanlar birlikdə izləmək olacaq
əslində, çox fəal ərzində məşğul.
Onlar müzakirə CS50 Aracı və CS50 istifadə olacaq
və biz artıq bu dövr istifadə edilmişdir ki, müxtəlif proqram araçları ən.
Və biz bu il bir təcrübə kimi etmək istədiyiniz təşəbbüslərin bir
biz tərcümə edə bilərsiniz necə çox içerik görmək olur
digər danışıq və yazılı dilə.
Bu layihədə iştirak maraq ola bilər Belə ki, əgər
biz əlbəttə nin mühazirələr İngilis transkriptleri və Altyazı təmin edəcək qovuşdurmağımız
və şort və seminarlar və bölmə və kimi,
siz sərbəst danışmaq və ya, sərbəst bir başqa dildə yazmaq əgər
Siz video bir və ya daha çox götürmək vasitəsi biz bu layihədə siz cəlb etmək istiyorum
Siz çox yaxşı bilirsiniz bir dil onları tərcümə.
>> Siz interface hissi vermək üçün, bu web-based istifadəçi interfeysi var
biz əsasən bu kimi bir UI yaradacaq istifadə lazımdır ki,.
Bu, mənim bəzi Halloween əvvəl tədris olunmuşdur
və bu zaman ştamplara yanında qara var sağ tərəfində,
siz ki, gün mənim ağız çıxdı ki, müxtəlif şeylər görürsünüz
və sonra aşağıda bəzi digər dilinə tərcümə edə bilərsiniz
harita bu halda, arasında dəqiq, ingilis və, İspan deyirlər.
Belə ki, əslində bir çox istifadəçi dostu aracıdır.
Siz klaviatura qısa yolları ilə çox asanlıqla sürətli irəli geri bilər.
Bu sınaq iştirak və istiyorum Beləliklə, əgər Sizin sözləri görüldü və oxumaq
orada insanlar potensial minlərlə iştirak etmək üçün pulsuz hiss edin.
Bazar ertəsi olan kitten haqqında bir söz.
Biz bir çox qorxudan mesajı göndərdik deyə, ofis saat təklif kimi, dərk etmək
bölmələr gəlir kimi və, əlbəttə dizayn çox çox
tələbələr problem dəstləri ilə əməkdaşlıq və iş söhbət etmək
və birlikdə problemləri, həqiqətən xətti yalnız aşağı gəlir,
daha, siz sonda təqdim işi öz olmalıdır.
Və olduqca vicdanla, ofis saat Bu, tamamilə normal deyil
tamamilə sizə gələn bir dostu ilə söhbət etmək, hətta gözlənilən oldu.
>> , O, bir mövzu ilə mübarizə və sizin kimi danışırsınızsa
"Oh, yaxşı, məni mən yazdığı kodu bəzi xəttinin bir fikir verək, ki," Gözəl
ki, olur, və öyrənmə prosesi ilə, mən hesab edirəm ki, çox əlverişli edir.
Rəhbəri çox çox saniyə burada növ əyilmiş artıq zaman harada xətti keçərək olur ki,
və ya, həqiqətən, dəqiqə yalnız dostunuz üçün bir Açma imkanı olduğu
və əlbəttə şey, e-poçt və Dropbox və analoji vasitəsilə mübadiləsi almaq zaman
çox xətt var.
Belə ki, bütün vasitələrlə rahat hiss və dostları ilə söhbət təşviq hiss
və psets və daha çox haqqında və yalnız sinif yoldaşları siz nəhayət təqdim nə bilirik
həqiqətən yaradılması və başqasının məhsulu olmalıdır.
Pset2 üçün etki alanı xüsusi problemləri və belə bir,
gec sabah gecə çıxmaq olacaq, Kriptoqrafiya dünyaya dalış etmək
ki, informasiya şifreleyerek və ya Scrambling sənətidir
və bu son nəticədə təhlükəsizlik dünyasına aiddir.
İndi bizim üçün ən təhlükəsizlik ədalətli dünyəvi mexanizmlərinin formasında gəlir.
Bizim bütün istifadəçi adı və parol var
və hamımız çox güman ki, çox pis adı və parol var.
>> Parolu çox saytlarda eyni olduqda, o, yəqin ki, yaxşı fikir deyil
biz semestr sonuna doğru müzakirə edəcəyik kimi.
Heç bir zarafat - - Parolu yapışqan qeyd yazılır Əgər monitor,
çox mütləq ən yaxşı dizayn lakin olduqca ümumi bir fenomen deyil.
Və siz parol şifrelemek üçün Kriptoqrafiya istifadə edirsinizsə,
onlar xüsusilə həssasdırlar.
Bir gizli Word sənəd malik ağıllı super olan olduğunuz hesab əgər
yerdə sabit ki, parol bütün var
lakin heç bir də çox təhlükəsiz mexanizmi deyil ki, baxmaq olacaq ki, bir qovluq var.
Və nə pset2 təqdim edəcək Kriptoqrafiya bu sənəti
parol kimi şeylər bütün daha təhlükəsiz edir ki, informasiya və Scrambling.
Burada kontekstində ki, etibarsız data ilə
bu şifrelemek və dırmaşma imkan gəlir.
Və bu, məsələn, şifrəli mesaj nümunəsidir.
Bu, həqiqətən, İngilis bir şey deyir, lakin aydın tam aydın deyil.
Və biz burada bu gizli mesaj hansı ayrı tease üçün bu gün tam dairə gəlmək lazımdır.
İngilis dili ifadələr ola bilər kimi Lakin kompüter real dünyada, hər şeyi hətta baxmaq yoxdur.
Məsələn, bu bir standart Linux və ya Mac və ya UNIX kompüter tapa bilərsiniz nə
bir zaman parol fayl deyilən sonra fayl bir idi.
>> Hal-hazırda başqa yerlərə köçüb oldu.
Bir sistemi doğru yerdə baxmaq Lakin, istifadəçi adınızı yalnız görürsünüz
və ya sistem digər insanların, lakin siz onların parol şifreli versiyası görürsünüz.
Həqiqətən, orada söz crypt, aşağıdakı məhsulları şifrelenir ki,
və bu zahirən təsadüfi məktublar və simvol və nömrələr seriyası və s
yalnız adətən bəzi gizli bilerek şifresi çözülen bilər -
gizli bir söz, gizli sayı -
və, həqiqətən, Kriptoqrafiya nəticədə sonunda aşağı sənəti bir növ etibar
və başqasına deyil ki, bir şey bilmədən.
Beləliklə, biz bu gün bir az daha ətraflı araşdırmaq lazımdır və pset gəlmək.
İndi pass / uğursuzluqla bir söz.
Siz bəzi pset1 ki, Aracı daxil dived xüsusilə kimi
və özünüz üçün bir çox yeni dünya, həyata ki, frustrations və qarışıqlıq
və yalnız texniki çətinliklər olduqca gözlənilir ki,
xüsusilə yalnız bu qədər yeni var olduğu ilk pset ilə,
yalnız ls və cd ilə tanış və bütün bu gizli əmrləri
və yeni mühit və faktiki material və özü proqramlaşdırma ayrı deyil.
Belə bir dəstək strukturu kimi mövcud olan ofis saat əlbəttə var ki, çox bilirik.
>> Bölmə bu gələn bazar günü başlayacaq.
Amma ən əsası, bu sizin üçün dünya deyil, yalnız hiss edirsinizsə,
həqiqətən yalnız vaxt deyil bilirik.
Və bu, uğursuz / a sinif pass alaraq mənə il əvvəl bu imkan yox idi
vicdanla, mən hətta sinif ayaq qoymuşuq ki, heç vaxt.
Və siz, qədər bu qədər dəyişmək demək, kurs beşinci Bazar ertəsi bilər
İndi kənarında etdiyiniz əgər, ümumiyyətlə həyata ki, daha çox baş bəzi digər sulara,
əlbəttə yalnız keçmək / uğursuz dəyişən hesab edirsiniz.
Yenə şeyi alaraq Harvard burada, həqiqətən, bu mədəniyyət yoxdur keçmək / uğursuz
hər kəs, həqiqətən, nail olmaq və ya overachieve istəyir ildən
lakin səmimi, bu həyata bir şey çalışırıq gözəl yoldur
, olduqca gözəl sizə tanış ola bilər, və əksər hallarda bunu başa lazımdır ki,
Sizin sürpriz bəlkə də çox.
Və daha konkret olaraq, mən nə adətən uğursuz / keçmək nə düşünürsünüz
siz pset0 ilə təcrübəli ola bilər xüsusən,
bəzi pset daxil 10 saat, 15 saat, 25 saat qoymaq əgər
və yalnız divar qarşı baş tarpıltı edirik və gecə gec super əldə edir
ancaq yol pset 90% qəbul etdik və yalnız, bir şey anlamaq bilməz
həqiqətən bu kimi bir sinif kənarında off edir uğursuz / keçmək,
siz məsud, Okay, mən mükəmməl deyil bilirik ", deyə növ edə bilərsiniz
amma bu mənim ass off işləmişdir ki, "bu, başa Ü ilə olduqca xoşbəxt oldum
və keçid üçün ümidlərini / bilməyəcəyik.
Belə ki, nəzərə ki, saxlamaq yoxdur. Bütün hüquqlar.
>> Harvard Universiteti Wi-Fi istifadə üçün mübarizə edən sizin Belə ki,
ətrafında üzən bir CS50 SSID, Wi-Fi əlaqə var bilirəm ki,
sizin üçün daha yaxşı şans ola biləcəyini söylədi.
Bu bir az ironik ki, bu qoşulma cəhd etmək istəyirsinizsə, bunun üçün parol
və heç bir yaxşı bize - - daha sürətlə üçün 12345, bütün yolu 8 üçün
8 5 daha təhlükəsiz edir.
Siz Wi-Fi parol lazımdır Belə ki, kabelsiz burada CS50 üçün 12345678 əlaqə
Siz hələ aralıq keçid məsələlər varsa və CS50 üzrə poçt, müzakirə
və biz bu yer üçün bilirik ki, səlahiyyətləri imkan olacaq. Bütün hüquqlar.
Xüsusilə hər şeyi Apple fan oğlanlar ya qızlar olan sizin üçün belə bir sürətli teaser.
Mən geri bir neçə il qədər qazılmış, burada iUnlock.c bu faylı idi
yalnız cür daha konkret və daha mürəkkəb etmək
biz yazılı olduğunuz daha əsas C proqramlarının bəzi.
Mən iUnlock.c, bu fayl açdı. Bu gün üçün mühazirələr səhifə mövcud deyil.
Sol tərəfində sizə funksiyaları uzun bir siyahısını görmək.
Belə ki, bu yazan fellow yalnız əsas daha çox funksiyaları bir çox qədər yazdı.
O, burada kitabxana bütün dəstə istifadə və biz vasitəsilə scrolling başlamaq əgər,
nə bu əslində orijinal iPhone üçün çox birinci, inanıram, crack edir.
>> Orijinal iPhone jailbreak istəyəndə olan AT & T untether deməkdir
və əslində, bu, xüsusi proqram və Apple nəfər bunu istəmədiyini şeyə
kimsə, onlar software flaws istismar bilər dəqiq necə anlamaq üçün vaxt
beləliklə Apple proqram səhvlər, bugs, və anadan olub iUnlock.c -
ki, sizin kompüter üzrə tərtib edilmiş və bir iPhone üzərində yüklü əgər
ki, USB kabel, demək vasitəsilə kompüter bağlı idi
bu sizin iPhone inzibati və ya kök güzəştlər verəcək
və olduqca çox istədiyiniz nə bildirin.
Və bu maraqlı pişik və siçan oyun oldu
Apple və xüsusilə dünyanın qalan onlar arasında, bir çox şirkətlər kimi,
yalnız onlar niyyətində nə ilə edə bilərsiniz, belə ki, onların məhsulları aşağı kilidləmək üçün çalışırıq.
Ancaq bu kimi insanlar və aşağı səviyyəli ətraflı anlayışı sayəsində -
və bu halda C proqramlaşdırma - və tanış yapıları bir çox
biz oynamağa başlamışdır etdik ki, siz həqiqətən hardware Leverage edə bilərlər
qaydada Siz uyğun və bəzi korporativ şəxs mütləq baxın.
Belə ki, məsələn, mən bütün bu nə heç bir fikrim yoxdur
lakin GetVersion, olduqca sadə səslənir
və bu bu şəxs yazırdı ki, bir funksiyası var kimi görünür.
Bu arqument kimi tam bir növ edir, bir şey geri deyil
lakin burada loop üçün və əgər vəziyyət, vəziyyəti fasilə əgər ilə loop görünür
biz aşağı diyirləyin əgər birtəhər, version nömrələrinə aiddir
Bu açar sözlər, bir çox yeni olacaq, baxmayaraq.
Və biz görməmişəm və heç görmək bilər burada funksiyaları bütün çox var
dövr ərzində.
>> Günün sonunda, biz indiyədək ilə oynayan olduğunuz eyni qaydalar və məntiq edir.
Belə ki, bu, sizin iPhone 3s ya 4s və ya tezliklə 5s bu gün çat çox köhnə
lakin bütün çox biz daxil dived etdik ki, bu dünyada əldə ki, bilirik.
Bir az daha sadə misal nəzər salaq:
Bu, yalnız bəzi sintaksis ilə isidilmiş almaq üçün və həmçinin bəzi digər növü
biz danışdı sonra, lakin həqiqətən C. görməmişik ki,
Bu positive1.c adlı bir fayl və üst şərh başına
bu, yalnız istifadəçi bir müsbət nömrəsi tələb edir.
Belə ki, istifadəçi interaktiv proqramlar üçün gözəl bir do-isə loop, bir misal var
Əgər bir şey etmək üçün istifadəçi demək lazımdır,
və onlar onlara fəğan və ya giriş rədd əməkdaşlıq yoxsa.
Point halda: Mən 24 vasitəsilə xətləri 19 etmək gedirəm
uzun kimi istifadəçi mənə müsbət sayı verilmiş deyil.
Line 18-də burada Bu detal, niyə mən bu bütün looping tikintisi yuxarıda n bəyan etməyib
kimi sağ line 22 Növbəti Mən, həqiqətən, n almaq üçün qayğı yerləşir qarşı? Bəli.
[Tələbə] Sayt. >> Bəli, daxilində belə bu məsələ.
Və layman nin baxımından əhatə dairəsi nə aid deyil?
Bəli. >> [Işitilemez tələbə cavab] >> siz Qaraçuxurlu bir az danışmaq olarmı?
[Tələbə] Siz dəyişən edə bilərsiniz harada. >> Mükəmməldir.
Müəyyən bir dəyişən daxil edə bilərsiniz.
Və ümumiyyətlə, thumb qayda belə uzaq olduğunu bir dəyişən daxilində
siz gördüm ki, ən son qıvrım aşırma ilə müəyyən edilir.
>> Mən line 22-n elan səhv etdi Əgər bu halda ki, xətt iş olardı.
Mən int almaq olardı və mən line 22 dəyişən n onu qoymaq olardı
lakin kodu xətt indi söhbət alıram nə heç bir fikrim yoxdur ki? >> [Tələbə] 25.
[Malan] 25, və bu halda bu qıvrım aşırma kənara çıxır, çünki həmçinin 24 çıxır.
Belə ki, çox asanlıqla sadəcə dəyişən bildirərək bir az bir narahatlıq və bit lakin həll
funksiyası özü xaricində.
Biz bir addım irəli getmək bilər later gün görürsünüz
və hətta bir az tənbəl əldə edə bilər.
Bu ümumi tövsiyə etmək deyil, hətta tənbəl ala bilər
və belə bir loop daxilində bir funksiyası daxilində deyil danışmaq, dünyada dəyişən qoymaq
Mən line 15-də burada olduğu kimi ancaq fayl özlüyündə, funksiyaları bütün kənar siz yazdıq.
Bu, ümumiyyətlə, sonra qaşqabağını töküb üzünü, lakin bu, bəzən digər problemlərin həllini həyata olunur
biz nəhayət görəcəksiniz kimi.
Belə ki, indi biz bu kimi tərk edəcəyik, lakin biz bu yenidən bilər görmek edək
yalnız fərqli özümüzü bir az ifadə başlamaq.
Bu proqram yalnız aydın olmaq, positive1 edir.
Mənə burada davam və mənim terminal pəncərə daxil edin positive1 etmək edək.
Tamam tərtib edir. Mən daxil edib positive1 çalıştırmak üçün gedirəm.
Mənə bir müsbət tam vermək tələb edir. Mən -1 demək lazımdır. Bu iş yox idi.
0, 99. Bu iş görünür.
Bəlkə ən ciddi test, lakin ən azı gözəl bir ağlı başında olma çek var
biz doğru yolda olduğunuzu.
>> Beləliklə, mənə irəli getmək və bu versiya 2 açmanıza icazə verir
və artıq müxtəlif nədir?
Eyni şey həyata keçirir, lakin nə aydın fərqli bu dəfə kimi atladığı var?
Yaşıl Bu bool. Bu yaşıl, bir veri növü olan bool kimi tanınan bu söz qeyd olunur.
Bu C. bütün versiyasını üçün inşa gəlmək deyil
Siz xüsusi kitabxana daxil etmək lazımdır.
Biz bool çıxış var ki, bizim halda, mən CS50 kitabxana daxildir.
Amma line 18, biz şükür adlanan burada bir Boolean dəyəri görünür.
Mən bu bir şey deyilir ola bilər, ancaq şükür adlanan
yalnız növ bəzi semantik mənasını çatdırmaq.
Belə ki, ilkin line 18-də, mən yəqin minnətdar deyiləm
şükür ki, Boolean dəyər line 18 yalan üçün başlatılmış çünki.
Və sonra mən 23 vasitəsilə xətləri 21 burada etdik nə görünür
Mən cür mənim məntiq yenidən etdik edir.
Heç bir funksional müxtəlif Belə ki, int istifadəçi təmin təqdirdə, lakin line 22 indi yoxlamaq
0 çoxdur, mən sadəcə doğru təşəkkür dəyəri dəyişir.
Və mən ona görə edirsiniz? Line 25 Çünki, yəqin mən vəziyyəti yoxlamaq üçün gedirəm.
Şükür yalan isə bu loop edin.
Mən version 1 alternativ kimi bu təklif
o bəlkə ən azı bir az daha asan var, çünki bir az daha İngilis əsaslandırılmış deyil.
Şükür yalan isə şükür deyilik ya isə Belə ki, aşağıdakı.
Və bu dəfə də mən yəqin istifadəçi tipli nə yadda vecimə deyil
bildiriş çünki heç dəyişən n, belə ki, həqiqətən, bir az ağ yalan var.
>> Biz onun altına almaq bir Funksional, proqram bir az fərqli
Mən n nə xatırlayaraq deyiləm çünki.
Amma burada nümayiş etdirmək istəyirdi çox ki, biz GetInt gördüm baxmayaraq
və bir də sağ tərəfdən istifadə olunur GetString indiyədək Bürc bərabərdir
biz ciddi lazım deyil ki, dəyəri, texniki, unutmayın ki.
Əgər yalnız dəyəri saxlamaq üçün qayğı yoxdur hər hansı səbəbdən,
yalnız, biz sadəcə GetInt kimi yaza görə, dəyəri yoxlamaq istəyirəm
açıq paren, yaxın paren.
Deyirdik olduğunuz kimi funksiyası, bir dəyər geri gedir.
Bu int geri vermək olacaq.
Və belə əqli, bu baş hesab
Mən 99 yazın zaman GetInt, sayı 99 qaytarır
və belə konseptual, mənim kodu əslində bu kimi olsa var.
99 0-dən həqiqətən böyük Belə ki, onda şükür doğru olur,
İndi təşəkkür edirəm çünki sonra line 25 ooh həyata keçirir, biz Bitirdiğinizde
və line 26, biz sadəcə, "müsbət tam üçün təşəkkür edirik!" demək
bu baş nə.
İndi belə danışmaq, burada kiçik sintaktik şəkər nə edək.
Biz positive3 bu üçüncü və son variant Bu xətt 25 təmizləmək əgər in nəzər salaq.
>> Indi nə kodu xətt yalnız fark? >> [Tələbə] 25. >> [Malan] Bəli, 25.
Və biz, həqiqətən, yalnız hələ bu oyun görməmişəm etdik, ancaq, bazar ertəsi günü ünlem gördünüz
olan nə bildirir? >> [Tələbə] deyil. >> Deyil və ya inkar.
Belə bir Boolean dəyəri almaq və onun dəyəri çevirmek.
True yalan olur, yalan gerçək olur.
Bu Odur ki, mən təklif edirəm, kodu yazmaq, hətta bir az daha asan bir yoldur
Mən hələ yalan təşəkkür başlamaq, çünki Mən hələ, aşağıdakıları edin
Vaxt gələndə mən doğru təşəkkür müəyyən
indi siz həqiqətən yalnız şifahi sağ bu kodu tərcümə edə bilərsiniz
isə (şükür!); bang və ya ünlem deyil, anlayışı işarə çünki
belə şükür deyil isə.
Belə ki, yenə biz özlüyündə hər hansı yeni anlayışlar təqdim edilməmişdir.
Biz Scratch ilə ifa zaman geri Booleans danışdı
lakin biz yalnız bir çox müxtəlif yollarla kodu yazılı başlaya bilərsiniz indi həyata keçiririk.
Belə ki, xüsusilə pset1 siz, bəzi proqram yazmaq yol anlamaq üçün mübarizə növ əgər
həllər hər hansı bir sayı ola bilər, çünki odds sizə uğurlar istəyirik var
sizə ola bilər.
Məsələn, bu proqramları daha sadə üçün yalnız 3. Bütün hüquqlar.
İndi bazar ertəsi biz geri dəyərləri ilə bu qeyd sol xatırlayıram.
Belə ki, ilk dəfə biz yalnız əsas yoxdur ki, bir proqram yazıb;
bu da burada yazmışdır ki, onun öz xüsusi funksiyası var.
Belə ki, xətt 31 34 vasitəsilə bir kub funksiyasını həyata etdik.
Bu kompleks deyil. Bu, yalnız var a * a * bu halda.
Amma nə bu barədə mühüm bir şəklində daxil alaraq edirəm ki,
və mən * a * bir formasında çıxış qaytarılması alıram.
Belə ki, indi imkanı var, daha mən prinf tək ilə istifadə kimi,
kub funksiyası zəng bu funksiya zəng etmək üçün.
>> Və kub funksiya bəzi daxil edir, və kub funksiya bəzi çıxış qaytarır.
Əksinə, printf yalnız bir şey idi.
Bir kənara kimi, bir dəyər qayıtmaq deyil, baxmayaraq ki, biz qayğı ki, bir şey geri vermədi;
yalnız ümumiyyətlə bilməz.
Printf yalnız bir şey idi. Bu ekran çap bir yan təsiri var idi.
Burada əksinə olaraq, biz, həqiqətən, bir şey qaytarır olan kub funksiyası var.
Belə ki, bu ilə tanış olanlar üçün bu, olduqca sadə bir fikirdir.
Lakin giriş keçən və nəticələr geri alınması bu ideya ilə az tanış olanlar üçün
nin yalnız bir şey super sadə edək.
Rahat hər kəs qısa səhnəyə gəlir?
Siz yaxşı bir kamera ilə rahat olmalıdır. Evet? Okay.
Sizin adınız nədir? >> [Tələbə] Ken. >> Ken. Bütün hüquqlar. Ken qədər gəlib.
Ken burada növ bir funksiyası olacaq.
Nin irəli getmək və bunu edək. Bir az xülya almaq edək.
Siz cavab gözəl. Mərkəzi mərhələ xoş gəlmisiniz. Bütün hüquqlar.
Nin bura düyməsini basın edək. Bütün hüquqlar.
Belə ki, burada müasir bir Kara Tahta var
və nə mən, misal üçün, əsas funksiyası
və mən əlimdə bir iPad yoxdur.
>> Bəli, mən deyə bilmərəm - Mən, həqiqətən, necə xatırlamıram.
Mən, həqiqətən, yaxşı yazı yoxdur
və belə buna görə də mən sizə, mənim üçün ekranda bir şey çap etmək istəyirəm.
Mən əsas proqram olan edirəm, sizə bu demək üçün gedirəm
mənim toyuq danışıq onu yazılı və sonra giriş keçərək.
Bu həyata olsa Belə axmaq, funksiyaları anlayışı və funksiyası zəng
və bu funksiyanı həqiqətən sonunda aşağı qaytarılması.
Mən əsas deyiləm, mən sadəcə, ekranda printf, quote-dırnağı bağlamaq bir şey yazılı
Mən bu proqram çalışan edirəm, və kimi printf adlı olur
bir mübahisə və ya ikiqat quotes arasında bəzən bir parametr edir.
Burada ki, mübahisə edir. Mən Ken üçün keçən alıram.
O illərdə bir sıra əvvəl yazılı bir qara qutu deyil
ki, yəqin yalnız ekranda şeyi çap bilir.
Belə ki, həyata.
Bu pis deyil. Çox yaxşı.
Belə ki, indi Ken icra edilir. Mənə bir şey geri əl ehtiyac varmı?
Biz belə uzaq gördüm deyil.
Yenə printf həqiqətən bir sıra qayıtmaq deyil, ancaq indi ki, ignore olacaq
biz istifadə heç etdik çünki. Belə ki Ken üçün ki.
Və indi əsas yenə proqram nəzarət edir
kodu ki, xətti, printf, icra edilir, çünki.
Və biz digər xətləri var hər hansı yerinə, bizim yol haqqında gedin.
Belə ki, indi-nin bir az fərqli Məsələn edək.
Bu dəfə burada ilk ekran sil edək və bu dəfə biz bu cubing funksiyası edəcəyik
amma bu dəfə mən bir çıxış dəyər gözləyirik.
>> Belə nin irəli getmək və bunu bildirin.
İndi x x kub olur deyir ki kodu xətti var.
Kodu xətti, geri, bu kimi görünür: x = kub (x);
Belə ki, necə bu iş gedir? Nin irəli getmək və daha bir ağ verim.
Mən indi x dəyəri yazmaq gedirəm
vaxt bu an olur ki, bu sadə saxlamaq üçün isə demək 2 edək.
Mən kağız parçası mənim dəyər x olan 2 dəyəri haqqında yazıblar.
Mən Ken üçün əl. >> Mən yalnız cavab yazmaq? >> Bəli, yalnız cavab yazmaq imkan verir.
Okay. İndi mənə bir şey qayıtmaq üçün var. Mükəmməldir. Segue Nice.
Belə ki, indi o, bu halda 8 dəyəri mənə geri əlləri və mən nə etməliyəm?
Əslində - bu doğru isə görək. Mən bu ilə gedirəm?
İndi bu dəyəri almaq və həqiqətən yaddaşında həmin bit onu saxlamaq üçün gedirəm.
Amma burada mübarizə cür Ben bilərsiniz.
Ü Mən, həqiqətən, x dəyəri yazmaq, çünki mən bir az qarışıq deyiləm
nə mən yalnız etdik fiziki tərəfdən Ken dəyəri 2 ki, kağız parçası, çünki
hansı x, və həqiqətən ki, nə dəqiq deyil.
Belə ki, siz funksiyası zəng zaman mübahisə keçmək çıxır ki,
salam kimi, dünya və ya, 2 kimi bir dəlil keçmək
ümumiyyətlə, bu arqument surəti keçən edirik.
Və mən, burada 2 saylı aşağı yazmış və Ken onu kimi
Mən hələ bir yerdə dəyəri 2 surəti var ki, demək lazımdır
həqiqətən, indi dəyəri 8 geri kazanılmış etdik ki, mən RAM geri getmək lazımdır, çünki
Mən bir sayı 2 olduğu və faktiki 8 yazın.
Belə ki, görmə, sanki, bu dəyər surəti keçən bu anlayışı xatırlayıram.
>> Bu halda 8 kimi bir dəyəri - - Ken onun şey geri bir şey mənə əllərini verir
Mən onun ətrafında saxlamaq istəyirsinizsə, və sonra ki, dəyəri bir şey var.
Belə ki, bütün bu uzun əvvəl bütün çox tanış olmaq geri gələcək.
Burada bu demo üçün çox Ken təşəkkür edirik. [Alqış]
Çox yaxşı.
Nəticədə biz burada bunu etdik ki, zəng funksiyası bəzi aid necə edək.
Mənə irəli getmək və burada cubing Məsələn bizə geri gətirmək edək.
Qeyd edək ki, biz, həqiqətən, bu da alaraq başlamaq istəyirəm ki, əgər
biz sayı x burada qəbul olunur ki, faktı nəzərə etmək olacaq
faktiki fəaliyyət qəbul edilir nə fərqlidir.
Belə ki, təkrar surəti bu keçid yalnız bir anda çox ilgili olmaq niyyətindədir.
Nin çox sağ hələ işləmir ki, bir şey nəzər salaq.
Mən irəli getmək və təbiət ilə flawed olan üçüncü arabası Məsələn, açıq gedirəm
və buggy3 adlanır və bir dəyişdirmə funksiyasını həyata keçirir oldu.
Burada x və y özbaşına, müvafiq olaraq, 1 və 2-başlatılmış bir əsas funksiyası var.
Biz GetInt istifadə edə bilər, ancaq yalnız bir sadə həyata lazımdır
belə ki, 1 və 2 kimi ağır kodlu var.
Xətləri 21 və 22, biz yəqin x və y, line 1 çap.
Sonra line 23, mən, nöqtə, nöqtə, nöqtə bu dəyərləri dəyişdirmə edirəm iddia edirlər.
Mən yəqin uyğun bir funksiyası 2 arqumentlər edir ki, 24 adlanan svop çağırırıq.
Funksiyaları 2 dəlilləri almaq üçün tamamilə legit edir. Biz printf artıq bunu gördük.
>> Belə ki, svop yəqin x və y edir, onun adı təklif kimi
Mən bu 2 dəyərləri dəyişdirmək olacaq ki, ümid edirəm.
Beləliklə mən 25 "değiştirilecek!" Xətti üzrə iddia və mən x və y surətini çıxarmaq
onlar həqiqətən değiştirilecek olduğunuz ehtimalı altında.
Amma əslində bu proqram run əgər - Mənə bir terminal pəncərə açmaq bildirin
Mənə buggy3 edək - Adı təklif kimi, bu yaxşı başa niyyətində deyil
Mən daxil edin x 1 fark hit zaman, y, 2, çünki
və hələ Proqramın sonunda, onlar, faktiki olaraq, hələ də eynidir.
Belə ki, yalnız indi Ken ilə, nə həqiqətən neler nümayiş əsaslanır?
Bu mübadilə funksiyası daxil dive edək. Bu qısa super deyil. Yalnız uzun kodu bir neçə xətləri var.
Lakin Ken ilə burada bildirib sadə hekayə əsasında fundamental problem var?
Niyə svop sınıq olunur?
[Tələbə] Siz surəti deyil, dəyişən üçün saxlanılması edirik.
Exactly. Biz dəyişən, bir surəti özü saxlanılması edirik.
Başqa sözlə, svop yəqin 2 arqumentlər bir int, edir
və özbaşına bir və b deyirlər
və burada müvafiq olaraq 1 və 2 olan x və y, qəbul etdik
amma sözün x keçən deyiləm, mən, sanki y keçən deyiləm
Mən x surəti və y surəti keçən alıram.
Demək olar ki, sanki siz sitemizi və swap yapıştırılmalıdır oldu
siz həqiqətən manipulyasiya etmək istədiyiniz dəyərlər.
O halda, mən proqram start line icra edərkən 35 sonra 36, ​​var əgər
Mən hekayə bu nöqtədə, line 37 almaq zaman nə dəyəri var?
Hekayə Bu nöqtədə, line 37, bu nöqtədə bir dəyəri nədir? >> [Tələbə] 1.
[Malan] x ilk arqument kimi qəbul edilib, çünki yalnız sağ, 1 olmalıdır
və bu funksiya yalnız özbaşına ilk arqument bir zəng.
Eynilə ikinci dəlil Y və yalnız özbaşına ikinci dəlil b zəng edir.
>> Bu dichotomy həqiqətən kifayət qədər sadəcə izah olunur. Bu barədə düşünün.
Bizə Yox, printf yazan adam görüşüb
belə şübhəsiz ki, o bizim dəyişənlərin 30 il sonra deyilən olacaq nə heç bir fikir var.
Belə ki, siz yazıyoruz funksiyaları dəyişənlərin dediyimiz arasında bir fərq olmalıdır var
və sizə zəng və ya istifadə etdiyiniz funksiyaları dəyişənlərin adlandırdıqları.
Belə ki, başqa sözlə, mən, x və y kimi dəyişənlərin yazılı
başqası mübadilə funksiyası yazılı idi, lakin, o, şübhəsiz ki, bilmirəm ki,
mənim dəyişənlərin adlı olacaq nə
belə ki, adları bu ikilik niyə bu bilirik.
Texniki, mən təsadüf bunu edə bilər
lakin onlar hələ nüsxə kimi qəbul olunacaq.
Bu yalnız bir təmiz təsadüf olardı estetik əgər svop yazırdı ki, şəxs
eyni adlar istifadə etmişlər.
Belə ki, hekayə bu nöqtədə, line 37, bir 1, b 2, indi mən onları dəyişdirmək davam.
İlk növbədə, mənə, həqiqətən, çox sadəcə bunu bildirin.
Mən kodu həmin 3 xətt nə etdiklərinizi bilmirəm.
Mənə yalnız bu edək: b = a; a = b; edilir.
Niyə bu məntiqi, broken deyil?
Bu hüququ intuitiv şey növü var?
Bir olur bir olur b və b Belə
ancaq problem line 37 həyata kimi, bir və b dəyəri nə ki?
Siz clobbered çünki 1, eyni, belə danışmaq, bir bərabər b değiştirdik.
Belə ki, bir dəfə line 37 edam ki, böyük, indi sayı 1 2 nüsxəsi var
bu funksiya daxilində, siz line 38 demək belə sonra bir = b,
yalnız 1 1 təyin etdiyiniz çünki cür berbat edirik.
Siz tipli haqqında qayğı dəyəri itirilmiş etdik.
Belə ki, bu orijinal versiya, mən nə görürsünüz.
Mən əvəzinə bu kimi baxdı kodu üçüncü xətt idi.
Mən müvəqqəti dəyişən bəyan edir.
>> Tmp müvəqqəti dəyişən üçün bir çox ümumi adı və bir int var
Mən surəti etmək istədiyiniz nə uyğun çünki.
Line 37 yerinə belə bir dəfə mən, tmp bir daxili surəti saxlamaq
bir dəyəri var - tez ağlı başında olma çek - 1, b dəyəri 2
və tmp dəyəri də 1-dir.
Belə ki, indi mən line 38 icra.
Line 38 həyata sonra, bir b dəyəri edir. Və b 2 idi, belə bir artıq 2-dir.
Belə ki, hekayə bu nöqtədə, 2 deyil, b 2 və tmp 1
İndi məntiqi, biz b içinə yalnız Plop tmp dəyəri bilər və biz tamamlayın.
Belə ki, problem həll etdik.
Təəssüf ki, bu formada, bu proqram çalıştırdığınızda, əslində hansı dəyərlər dəyişdirmək deyil.
Amma niyə aydın olacaq?
Mən yalnız bir an əvvəl məntiqi problem müəyyən
Bu proqram run olsa yenə, x və y dəyişməz qalır
proqramın icrası sonunda.
[Işitilemez tələbə comment] >> Biz bir şey geri deyil, doğrudur ki.
Çünki bu günə qədər bir problem bir qədər burada var həyata Amma çevrilir
biz qayıdacaqlar olduğunuz tək şey bir şeydir və bu, C. bir məhdudiyyət deyil
I növ burada stuck Ben halda olan yalnız, həqiqətən, bir dəyər ola bilər
Mən x yeni dəyər qayıtmaq və ya ola bilər, çünki, y yeni dəyər qayıtmaq bilər
amma mən də geri istəyirəm.
Belə ki, sadə həll burada deyil qaytarılması.
Ancaq problem əsaslı nə edir? Biz həqiqətən nə değiştirilecek var?
[Tələbə] a və b. >> Bir və b.
Amma və b biz yalnız bu iş bütün etdim deməkdir x və y, surəti var
biz yalnız mübadilə funksiyası və bu dəyişənlərin bütün 3 söhbət 3 dəqiqə sərf
və ki, təcrid mükəmməl düzgün, böyük
lakin bir və b-nin əhatə dairəsi yalnız burada bu xətlər edir.
>> Belə ki, yalnız, loop üçün kimi i, loop üçün daxilində tam bəyan əgər
eyni, siz yazdıq bir funksiya bir və b daxili elan edirsinizsə,
onlar funksiyası yalnız etibarlı daxili istəyirik, hansı tezliklə svop icra edilir kimi deməkdir
və biz line 25 line 24 getmək, x və y bütün dəyişdirilə deyil.
Siz yalnız dəyişənlərin surətləri dəyişdirmə zaman bütün çox sərf.
Belə ki, bu həll, həqiqətən, qeyri-aydındır ki çevrilir.
Biz yalnız 1 dəyər ola bilər, çünki dəyərlər qayıtmaq üçün kifayət deyil
və mən, həqiqətən, eyni zamanda x və y həm dəyişdirmək istəyirsiniz
biz bu qayıtmaq üçün olacaq.
Amma indi, bu məsələ əsaslı bir və b nüsxələr var ki, əldə bilirik
və onlar öz daxilində var.
Nin bir şəkildə bu həll edək.
Ki, bu dördüncü variantı buggy4 deyək, mənə, həqiqətən, burada geri hərəkət edək və açmaq.
Bu barədə?
Bu biz bunu həll bir zərbə almaq əvvəl baxmaq oxşar lakin sadə məsələ deyil.
Bu proqram artım adlanır və bu, yəqin line 18-1-ə x tam initializes olunur.
Mən x 1 iddia edirlər, mən sonra "Incrementing ..." iddia
, Mən sonra artım zəng, lakin sonra xətləri 22 və 23, mən bu incremented edilmişdir iddia
2, ehtimalla - - Mən x o nə İndi iddia ancaq bu proqram arabası deyil.
Problemi nədir?
Bəli. >> [Işitilemez tələbə cavab] >> Exactly.
Belə x line 18-də təbii ki, elan olunub.
Yəni əsas nin qıvrım aşırma daxilində deyil.
Belə ki, burada sadə cavab x burada var isə ki,
bu xətt 32 mövcud deyil, bu proqram həqiqətən belə tərtib belə.
Mən bu kodu tərtib cəhd zaman compiler mənə fəğan edir
bəzi bəyan identifikatoru və ya bu barədə bir şey haqqında. Əslində isə edək.
Bu buggy4 olun. Yoxdur deyil.
Line 32 elan olunmamış identifikator 'x' istifadə.
Və həqiqətən, bu faydalıdır ki nin bu gün burada daha aydın olsun
ofis saat və evdə.
>> Bu cryptically yazılı bir az olduğunu görürük.
Amma cingilti var ki buggy4.c deyərək, bizə yelled: 32:5, həqiqətən faydalıdır.
Bu səhv xarakter mövqe 5 line 32 deməkdir.
Belə ki, 1, 2, 3, 4, 5. Problem yerləşir ki, əslində, var.
Və həmçinin, çox, ofis saat evdə unutmayın, burada xoşbəxt deyiləm.
Mən bir səhv var. Düzeltmek üçün nisbətən asan olacaq.
Amma böyük səhv tam bir bütün ekran almaq,
daha bottommost bir yalnız topmost bir simptomatik ola bilər bilirik.
Belə ki, həmişə üst aşağı sizin hataları aşağı təqib
yalnız bir papatya zəncirvari təsiri ola bilər, çünki
ki, siz həqiqətən nə çox yol daha problemləri təklif edir.
Mənim qol x arttırmayı əgər Belə ki, necə biz bu düzeltmek olar? >> [Tələbə] x qlobal olun.
OK, belə ki, biz x qlobal edə bilərsiniz.
, Gəlin Mən əvvəllər xəbərdarlığını qısa almaq, lakin heck, biz yalnız bir sürətli fix lazımdır
belə ki, yalnız qədər burada int x deyək. Bu x qlobal edir.
Belə ki, indi əsas, bu çıxış və artırılması üçün daxil edib var
və Mənə davam və indi bu tərtib edək.
Buggy4 olun, daxil edin. İndi tərtib görünür.
Nin buggy4 run edək. Və həqiqətən iş görünür.
Bu, mən kimi, mən demək kimi nə ki, bu şeyi biridir
Mən burada etdiyiniz kimi, çünki ümumiyyətlə,
proqramlar bu çox maraqlı və çox uzun almaq üçün gedir,
və həyat problemləri üçün həll yalnız fayl üst bütün dəyişənlər qoymaq, əgər
çox tez proqramları idarə etmək üçün horrifically çətin almaq yoxdur.
Bu yeni dəyişən adları qədər düşünmək sertleşir
o, nə etdiyini nə dəyişən anlamaq üçün sertleşir
və belə ümumi, bu yaxşı bir çözüm deyil.
Belə ki, daha bu nə edək.
Biz burada qlobal dəyişən istifadə etmək istəmirik.
>> Mən x arttırmayı istəyirəm, mən açıq-aydın ola bilər -
biz yalnız bu çünki günün sonunda, bu silly hekayə növ -
amma operator haqqında bilmədiyini və ya əsas özünü dəyişdirmək üçün icazə, bu,
necə başqa mən bu dəfə kub üçün buraya Ken həyata bilər, lakin arttırmayı?
Mən burada bu şey dəyişə bilərəm? Bəli.
[Tələbə] x ilə Pass və sonra geri [işitilemez] >> OK, yaxşı.
Belə ki, niyə mən, x keçmək və sonra daha çox geri deyil
niyə yalnız x + 1 qayıtmaq yoxdur yoxdur.
Bir neçə çox şey burada dəyişdirmək lazımdır. Mən doğru yolda oldum.
Mən nə çimdik üçün lazımdır? Başqası. Bəli.
[Işitilemez tələbə cavab]
O ləğv deyil, çünki artım qaytarılması növü dəyişdirmək lazımdır.
Ləğv vasitəsilə heç bir şey geri, lakin aydın indi bu edilir
bu ehtiyacları dəyişdirmək üçün - >> [tələbə] int.
Mən, həqiqətən, dönən deyiləm nə uyğun olmalıdır Int.
İndi başqa bir şey burada hələ arabası deyil. Bəli.
[Işitilemez tələbə cavab] >> [Malan] Mən x arttırmayı lazımdır?
[Işitilemez tələbə cavab] >> [Malan] Ah, mən x keçmək lazımdır.
Mən burada bunu etmək lazımdır. >> [Işitilemez tələbə comment]
[Malan] Belə ki, prototip, burada bu qədər dəyişiklik var.
Bu int olmaq var Belə ki, bu olmaq var -
hmm, mən, həqiqətən, burada bir səhv aşağı var. Ilk bu düzeltmek edək.
Bu əslində nə olmalıdır? Bu int bir şey var.
Sizin dəyişənlərin x bütün zəng başlamaq əgər, səmimi x, lakin bilər
hansı olan daha az aydın olacaq.
>> Belə ki, yalnız özbaşına mənim köməkçi funksiyaları üçün müxtəlif adlandırma qurultayının seçmək bildirin
Mən yazıyoruz funksiyaları. Biz bir zəng edəcəyik, ya da zəng edə bilər -
Gəlin daha aydın olmaq üçün zəng.
Beləliklə mən sıra plus 1, nə qayıtmaq üçün
və indi burada və burada başqa bir şey 1 başqa şey dəyişdirmək lazımdır.
Mən ilk 21 dəyişdirmək üçün nə var? >> [Işitilemez tələbə cavab]
[Malan] Mən x onu təyin etmək lazımdır. Mən yalnız (x) artım zəng edə bilməz.
Mən sol tərəfində x dəyəri dəyişən cavab xatırlamaq lazımdır.
Və x artıq olsa sol və sağ ki, tamamilə Gözəl
sağ tərəfdən ilk edam olur, çünki sonra sol şey daxil plopped olur -
Bu halda x.
Və sonra nəhayət, indi asan fix edir.
Bu yalnız int sayı, aşağıda nə Down uyğun olmalıdır.
Belə ki, həqiqətən axmaq funksiyası dəyişikliklər bütün dəstə
lakin biz getdikcə etmək lazımdır ki şeyi nümayəndəsi.
Belə buggy4 edir. Mən haradasa qıfıllar etdik.
Aman Allah. 6-line proqram beş səhvlər.
Belə ki, xarakteri, xətti, 18 yanlış nə 5 var?
Mən bu int elan var.
Bakalým. Digər səhvlər bütün dəstə var.
Aman Allah - 19, 18, 21 - yenidən, lakin, yalnız burada, Control L ekran sil bildirin
və cingilti təkrar.
Belə ki, 5 problem həqiqətən yalnız 1-dir.
Belə ki, indi daxil edin nin buggy4 run imkan verir. Whew, x doğru incremented edilmişdir.
Bütün hüquqlar. Ədəd arttırmayı haqqında suallarınız var mı? Bəli.
[Işitilemez tələbə sual] >> Yaxşı sual.
Mən yalnız sayı x dəyişə bilərsiniz və proqram dərhal bilirik ki, necə?
>> Yenə bu abstraksiya kimi düşünün.
Mən əsas deyiləm və Ken səmimi, artım əgər Beləliklə, mən Ken onun iPad çağırır nə qayğı yoxdur.
O bu işlevselliği onun həyata keçirilməsi ilə nə var ki, bir şey çağırır nə qayğı yoxdur.
Bu, əsas haqqında qayğı yoxdur icra detal.
Və sadəcə funksiyası daxilində ardıcıl dəyişdirilməsi - nömrə burada və burada sayı -
Mən derleyeceğiz kimi uzun edər.
Sizcə, bu cür kimi var sürücü lisenziya sizin, bizim çox
hətta bir avtomobil idarə olsanız, kim və ya idarə ediblər
Bizi ən çox avtomobil başlıq altında necə heç bir fikrim yoxdur.
Siz başlıq, bizim ən açmaq əgər sözün, - özüm daxil -
həqiqətən biz aradığınız nə verməyəcəyik
İndi bu hüququ kimi məhsulları ilə hiss edə bilər kimi növ.
Amma biz, həqiqətən, avtomobil necə qayğı yoxdur
biz qayğı yoxdur, nə avtomobil daxilində çubuqlar və porşenlər və kabellər bütün
həqiqətən edirik.
Siz piston bu halda burada etməz dediyimiz kimi bir şey idi. Eyni fikir.
Bəli. >> [Işitilemez tələbə sual]
Dəyişən XA an daha istifadə əvvəl varsa,
Əgər proqramçı, hər yerdə onları dəyişdirmək lazımdır.
Yoxsa sözün Fayl Menyu etmək, sonra dəyişdirin tap bilər - belə bir şey -
lakin bu dəyişikliklər özünüz etmək üçün gedir.
Siz ardıcıl olmalıdır. >> [Tələbə] neçə dəyişənlərin varsa [işitilemez]
Burada kimi xüsusi qaydada, bu halda başqa nömrə int? >> [Tələbə] Correct.
[Malan] Bəli. Siz funksiyası zəng zaman Sifariş məsələləri.
>> Mən bir şey vergül şey burada artım zəng idi əgər
birbaşa mapping var.
Bu adlı hər hansı ilk dəyişən, buraya ilk dəlil surəti edilir.
Bağışlayın. Bu mötərizə olmamalıdır.
Ikinci ilə ikinci dəlil xətləri up. Sifariş Belə ki, bəli, məsələləri. Bütün hüquqlar.
Bağışlayın. Mən orada almaq üçün uzun bir yol etmişdir. Digər suallar? Bütün hüquqlar.
Belə ki, biz, həqiqətən, burada neler bir şəkil rəngləməyin bilər nin görək
başlıq altında, belə danışmaq.
Bu kompüter yaddaş təmsil bilər ki, bir düzbucaqlı edir.
Yaddaş işləri və ya RAM işləri necə heç bir fikrim yoxdur, hətta,
ən azı bu gün bu dəstələri var daşımır.
Siz bu megabayt var, siz bu gigabayt var
və biz byte yalnız nə olduğunu həftə 0 bilirsinizmi? >> [Tələbə] 8 bit.
8 bit, sağ? Belə ki, 8 zeroes və 1.
Kompüter RAM bir konsert, RAM 2 gigs bu gün var, əgər
bir yaddaş milyard və ya 2 milyard bayt və ya təxminən 8 milyard və ya 16 milyard bit var
kompüter daxilində.
Kiçik Wooly Willy Məsələn fərqli olaraq, adətən artıq maqnit hissəciklərinin deyil.
Getdikcə - noutbuk ən azı - bu bərk dövlət sürücü, SSDs var
yalnız heç bir hərəkət edən hissələri var. Bu, bütün elektron var. Bu, bütün elektrik-based edir.
Belə ki, yalnız var ki, yaddaş 1 və ya 2 giqabayt təmsil edən kimi bu düzbucaqlı edirəm.
>> Belə ki, yaddaş yığın edir.
Növ off parçalanmış kompüter elminin dünya edib
yaddaş chunks müxtəlif şeyə.
Bu kompüter RAM əgər Məsələn, kimi, var düzbucaqlı təklif
o, Konvensiyanın, sizin RAM üst, belə danışmaq çıxır ki,
mətn seqment deyilən nə adətən edir.
Bu siz tərtib ki 0s və 1s var.
Biz a.out nə olan başlıq altında nəzərdən etdik Belə ki
Bütün bu 0s və 1s, bir proqram çalıştırdığınızda,
o 0s və 1s, RAM deyilən bir şey sabit sürücü instantly
və RAM onlar üst qoymaq edirik.
Bu arada, siz başqa şeylər var: data uninitialize, data başlamaq.
Yaddaş Həmin 2 swaths siz tez-tez istifadə olmayan qlobal dəyişənlər, baxın
Əgər lakin bəzən onlar da orada son.
Mühit değişkenleri, biz çox vaxt sərf edəcək, sonra bəzi digər məhsulları var
lakin sonra 2 mühüm şeyi ki, semestr ərzində geri gələcək
yığın və yığın.
Bir proqram çalışan Belə ki, kompüter yaddaş ən qorunur
bir şey üçün yığını adlanır və bir yığın çağırıb.
Biz bu gün yığın haqqında danışmaq fikrində deyilik, ancaq yığını danışacaqlar.
Yığını Mather evində yemekhane yemək qablar əyani qədər hoqqa çıxarmaq deməkdir
və ya yemekhane heyəti hər gün təmiz yerləşir Siz nə yerdə,
onlar qədər mərtəbə onları yığın
və eyni, yaddaş, bir yığın bir şey qoyaraq bu fikri var
bir yığın bir şey qoyaraq, bir yığın bir şey qoymuşdur.
Və biz bu nə deməkdir?
>> Bu şəkil yalnız aşağı yarım, bilgisayarınızın RAM, üzrə zoom edək
aşağıdakı təklif.
Bu çıxır ki, siz a.out ya salam kimi bir proqram çalıştırdığınızda -
- Bu proqram yazdıq ki, nə
yenə həmin 0s və 1s, uzun-müddətli saxlama olan sabit olan yüklənir
siz RAM instantly ştepseldən, çəkmək hətta orada qalır.
RAM, sabit sürücüler daha sürətli - bu sabit diskler dən kiçik var -
siz onlara etdiyiniz zaman proqramları yaşadığı lakin bu.
Beləliklə, siz ikiqat Mac və ya PC bir proqram basın, bu RAM daxil sabit sürücü yüklü edir.
Bu RAM, yol üst 0s və 1s go, yükləndiyi kimi tez
adlandırılan mətn seqment, lakin sonra tez proqram həqiqətən başlayır kimi çalışan,
əsas funksiyası adlanır və əsas, biz gördük kimi, tez-tez yerli dəyişənlər var
və ints və strings və chars və bu kimi var.
Belə ki, sizin yazılı ki, proqram və ya ikiqat tıklayan ki, proqram əgər
bəzi dəyişənlər əsas daxilində istifadə
onlar danışmaq, yaddaşlı sizin yığını altında son.
Daha konkret, bu həqiqətən nə deməkdir?
Bu o deməkdir ki, sizin kompüter sayı RAM bayt gedirdi əgər,
Bu byte sayı 0 ola bilər ki, görürsünüz, bu byte sayı 1, 2, 3, 4, 5, 6, ola bilər
2 milyard bütün yolu var başında bütün yol olacaq.
Belə ki, başqa sözlə, biz bytes baxımından RAM və ya yaddaş haqqında danışmaq zaman,
yalnız ki, kimsə yaddaş bu chunks hər sayı nə qərar qəbul edib deməkdir.
Belə ki, bir int üçün 32 bit lazımdır və ya bir char üçün 8 bit lazım,
onlar yaddaşında yerləşir başa edirsiniz?
>> Konseptual yalnız yığını adlanan bu şey altındakı son.
Əsas funksiyası çağırır Lakin nə indi maraqlı deyil -
foo adlı funksiyası, yalnız bir ixtiyari adı Güman -
yaddaş bu yığını altında nə olar əsas deyil;
foo artıq yaddaş əsas üst qoyulur.
Foo konseptual əsas bu yuxarıda cür başa hər hansı yerli dəyişənlər belə.
Foo bar adlı başqa bir funksiyası çağırır, bu dəyişənlərin burada son.
Bar burada başqa bir şey, burada çağırır edin.
Belə ki, nə bir proqram çalışan haqqında maraqlı siz funksiyaları zəng kimi ki
və bu funksiyaları funksiyaları zəng və bu funksiyaları funksiyaları zəng kimi,
yaddaş funksiyaları bu yığını qurmaq.
Və yalnız bir funksiyası yekunları dəfə siz yaddaş geri alınması başlamaq yoxdur.
Belə ki, bir kompüter proqramı yaddaş tökülmək üçün asan yollarından biri
qayıtmaq heç funksiyaları yazmaq üçün.
Belə ki, məsələn, in bir qəsdən arabası proqramı ilə qədər nümayiş bildirin.
Mənə davam və # daxil olar ki,
int əsas (void)
və Mən (2> 1), hansı yəqin ki, heç bizə dəyişməyəcək isə nə gedirəm
və mənə indi davam və printf bunu bildirin.
Əslində, az görmə maraqlı olacaq. Bunu edək.
Üçün int i = 0; i> 0 - bu səhv edək - i + +.
Və burada printf deyil bildirin. Nin mən vəz nə təcrübə edək.
, Gəlin, burada etibarsız xor metodu var və biz int i demək lazımdır
və sonra mən printf demək gedirəm - yox, qoy bu daha maraqlı edir.
Nin əslində bütün bir şey çap çıxartmasın. Xor: (i) yalnız bunu edək.
Bütün hüquqlar. Çünki nə bu arabası var?
Proqram həqiqətən maraq bir şey deyil, çünki getmək kimi mən bu qədər qəbul edirəm.
>> Amma bu məqsəd deyil.
Məqsədi əsas funksiyası nə, yəqin edir bir proqram yazmaq olar?
Özü edin. Və həqiqətən, biz loop ehtiyac yoxdur.
Gəlin belə yalnız belə həqiqətən fundamental səhv qaçırmaq üçün bu sadələşdirmək.
Main zənglər xor bəzi xor oxumaq,
sonra mən axmaq bir şey etdi və mən xor zəng xor idi
Başqa kimsə bəlkə həyata gedən fərz, çünki
və bu hələ tərtib etmək niyyətində deyil. Mən nə üçün lazımdır?
Mən prototip lazımdır, unutmayın.
Mən (int i) burada etibarsız xor qədər lazımdır;
Burada enmək Əgər indi - həqiqətən də böyük pəncərə istifadə edək.
Nin davam və xor etmək edək.
Elan edilməmiş identifikator i istifadə edin.
Oh, bu axmaq idi. Biz mübahisə lazım deyil. Yalnız bunu edək.
Düşünürəm ki, biz bu yolla başladı arzulayıram. Bu yazmaq daha asan proqram olardı.
Yoxdur. İndi, mənim terminal pəncərə üzərində getmək cingilti təkrar və burada biz gedək.
Bu həqiqətən sürətli idi.
Ne həqiqətən yalnız baxmayaraq, oldu?
Biz görə bilərsiniz Yaxşı, indi çap line əlavə edəcəyik.
Mənə ("Mən burada oldum") printf deyək - no dəyişənlərin. Biz kimi tərk edəcəyik.
Məni təkrar edək. Mənə xor təkrar edək.
Və ... gəlib. Davam edin.
Bir kənara kimi, niyə hələ qəzaya deyil?
Seqmentləşdirilməsi, günah əvvəl super sürətli oldu.
[Işitilemez tələbə cavab] >> Exactly. Belə ki, hüququ, çap zaman alır?
Bu, yalnız kompüter hissəsi daha çox iş görür.
Və bu: Segmentasyon günah.
>> Belə ki, sürətli proqramları run necə görürsünüz.
Bir şey, super sürətli çap deyilik edin.
Nə baş Lakin biz hələ də bu seqmentasiya günah var?
Siz kompüter yaddaş müəyyən necə haqqında düşünüyorsanız,
Bu əsas olur, lakin burada yalnız bu xor zəng edək və bu xor zəng edək.
Mən sağ mənim estetik əgər İndi, bu, yalnız xor, xor, xor, demək gedir
xor, xor, xor, xor, elan nauseum və nəhayət, baş neler olub?
Böyük şəkil, sanki, bu deyil, nə yalnız konseptual olur?
Yığını taşmaları yığın.
Və ya pis, yalnız mətn seqment daxil olmaqla, hər şey, dağıtmaq
proqram təmsil edən 0s və 1s olan.
Bir sözlə, bu yalnız super, super pis.
Sizin proqram nəzarət həyata spiraled etmişdir.
Siz nəzərdə çox yol daha çox yaddaş istifadə edirsinizsə
bütün çünki bu halda bir axmaq səhv,
və ya bu halda bir çox qəsdən həyata funksiyası özü zəng.
İndi bütün bu pis deyil.
Düzgün istifadə zaman özləri zəng funksiyaları həqiqətən böyük güc var.
Mən düzgün burada istifadə etməmişlər.
Belə ki, bütün bu pis deyil, amma həqiqətən dayandırmaq heç vaxt ki özümü zəng
Bu proqram burada bir əsas zəiflik deyil.
Beləliklə, biz bütün bu ilə gedir? Həqiqətən nə olub?
Biz bu nümunələrdə edirdilər kimi mən artım funksiyası zəng zaman,
Mən içəri keçir ki 1 kimi dəyəri
Mən sayı 1 surəti keçmək, aşağıdakı olur.
Bu artım Məsələn daxil edək, burada artıq bu oğlan.
Burada həqiqətən neler var.
Mən artım zəng və mən burada neler, pictorially, x keçmək zaman bu.
>> Burada saxlanılan 1 dəyəri var və mən həqiqətən artım zəng edin,
indi xor adlanır - iPad burada mənə off atma olunur.
Gəlin bu artım zəng və biz bu növbəti funksiyası olacaq nə bilmirəm.
Beləliklə, nə həqiqətən baş əsas haradasa burada mən yaddaş yığın var
ki, 1 saylı saxlanılması edilir.
Mən artım zəng zaman, mən yaddaş bir yığın kullanıyorum
amma indi 1 surəti var.
Hesab edirəm ki, dəyəri arttırmayı, bu, 2 olur
lakin sonra nə artım yekunları kimi olur?
Bu yaddaş yalnız əməliyyat sistemi geri təhvil olur
sizə etdiyiniz bütün xeyirli heç bir şey deməkdir.
Ilk əsas olan ki, 1 həqiqətən orada qalır.
Beləliklə, biz bu gedir?
Bu yaddaş siz bayt bu geri-to-geri ardıcıllıqla ki çıxır
Siz məhsulları qoya bilər, və biz artıq bir şey gördüm ki, çevrilir ki,
geri geri geri şeyi geri qoyaraq ehtiva edir.
Həftə 1 və indi həftə 2 əsaslanan string nədir?
Bu yalnız simvol toplusu var.
Belə ki, siz yaddaş nömrələri bilər kimi çıxır
eyni yaddaş simvol bilər.
Və bir dəfə biz geri geri geri geri yaddaş qoyulması simvol başlamaq
o çıxır loop və ya bir müddət loop üçün kimi şeylər sadə istifadə edərək,
biz bir string-də simvol üzərində soldan sağa təkrarlamaq bilər
və tamamilə fərqli simvol onları masaj başlamaq -
a b ola bilər, b c ola bilər -
nəticə etibarilə, biz, həqiqətən, anlamlı bir İngilis dili hökm edə bilər ki,
və bir dəfə həmin məktubların bir hər çevirmək
bizim kompüter yaddaş ilə gəzinti ilə həqiqətən şifrelemek üçün sağ qaldı.
Belə nin burada beş dəqiqəlik fasilə etmək qoy,
və biz geri gələndə, biz informasiya Scrambling bu prosesi başlamaq lazımdır.
>> Bütün hüquqlar.
Biz bir kripto daxil dalış və bu şeyi serialların deyilən əvvəl
Mən, həqiqətən cür ilişikli kimi hiss edirəm, çünki mənə suallarınız üçün fasilə imkan
o bəzi mövzuları. Biz əgər İndi nin düzeltmek bildirin.
Biz yalnız geri dəyərlər haqqında söhbət, biz dəlilləri haqqında söhbət
və biz gələcək həftə qayıda bilərsiniz ki, bu anlayışı haqqında söhbət
belə danışmaq, bu dizilir qablar bütün dəstə kimi yaddaş görüntülerken,
belə qədər aşağı, ki yığını qoymaq olur ki, hər bir tray
Hal-hazırda adlanan ki, bir funksiya təmsil edir.
Hər hansı sual?
Mənə burada bir sual edək.
Mənə bizim əvvəllər Q & A. bəzi əvvəl nə üçün bu geri asanlaşdırmaq edək
Increment açıq mötərizə, int var ki, mötərizə bağlanıb -
int sayı nə təmsil edir?
[Tələbə] Bir arqument. >> Bir arqument. Okay. Amma bir dəlil var?
[Işitilemez tələbə cavab] >> ki, nə var? Daxil keçir ki >> [tələbə] Something
OK, belə Daxil keçmək Və daha çox, ümumiyyətlə, yalnız giriş ki, bir şey.
Siz həyatda bir funksiyası və funksiyasının məqsədi yazılı Əgər
bir şey siz istifadə bir az fərqli hər zaman etmək
sonra həqiqətən baş üçün yeganə yol girişi ilə təmin etmək görünür ki,
ki, daxil olan hər dəfə fərqli bir şey edə bilərsiniz, belə ki.
>> Belə bir funksiya daxil edir zaman iki şey müəyyən etmək lazımdır.
Siz daxil vermək istədiyiniz adı daxil etmək lazımdır
sırf öz rahatlığı üçün ona müraciət edə bilərsiniz, belə ki,
Mən line 32 burada olduğu kimi özünüzü, yazılı ki, funksiyası.
Amma siz də C bir proqramlaşdırma dilidir onun növü müəyyən etmək lazımdır
ki, yalnız, bir dəyişən istəyirsinizsə, siz nə data type kompüter demək olmalıdır
ki, böyük hissəsində bu dəyişən üçün ayrılması neçə bit bilir
6 ola bilər, çünki - Bağışlayın, 6 olmayacaq.
16 ola bilər, o, 8 ola bilər, o, hətta 64, 32 ola bilər
lakin kompüter bilməlidir.
İndi, sol tərəfində int əksinə, nə təmsil?
[Işitilemez tələbə cavab] >> ki, nə var? Funksiyası >> [tələbə] yazın.
Bu funksiyanı növü və daha dəqiq desək, onun çıxış növü. Sağ.
Belə ki, parantez şey isə onun giriş, istənilən halda, təmsil
sol şey onun çıxış edir.
Və bu halda, artım yəqin bir int qaytarır,
və belə int bu funksiya qaytarılması növüdür.
Nə qayıtmaq deməkdir?
Sanki, sonra söz qaytarma istifadə və qaytarılması nə əgər
söz hüququ bir tam deyil,
sonra ki, söz nə ilə həqiqətən uyğundur.
Hello, dünya - - Siz belə bir şey yoxdur ki, bir string çünki.
>> Aydındır ki, bu tam deyil.
Belə ki, qısa, yükü bizə həqiqətən, proqramçı, xüsusi olmaq
biz qaytarılması ne və kimi sonra həqiqətən qaytarılması haqqında gedin.
Burada kontekstində artıq kompüter yaddaş bir gigabyte, 2 gigabayt olduğunu -
nə - bu daha çox bəlkə, bəlkə az deyil,
lakin kompüter müxtəlif bölmələr olan kimi görür.
Bir şey qalır, başqa bir şey var gedir
müxtəlif məhsulları ortada gedir və bu gün biz yalnız hekayə izah başlamaq
ancaq bu vaxt qayıda bilərsiniz.
İndi, biz, həqiqətən qayğı yaddaş yalnız parça mətn seqment deyil
yalnız 0s və 1s ki cingilti təmsil çünki outputted etmişdir.
Siz a.out kimi klaviatura bir funksiyanı çalıştırın Belə ki
və ya ikiqat, Mac OS və ya Windows bir icon basın
proqram sabit sürücü RAM yükləndiyi
və belə danışmaq, bilgisayarınızın RAM üst plopped edir.
Bu arada, proqram başlayır kimi çalışan və əsas deyilən olur
proqram, siz yazırdı ya proqram Microsoft və ya Apple yazdı
onun yerli dəyişənlərin hər kompüter yaddaş altında aşağı orada son.
Amma özü dəyişənlərin və ya dəlillər var ki, əsas zəngləri başqa funksiyası, onlar yuxarıda son.
Ki, funksiyası bir şey çağırır varsa, onlar yuxarıda, yuxarıda, yuxarıda son.
>> Və yalnız bir funksiyası icra edilir qablar və yığını, belə ki, danışmaq üçün deyil,
aşağı və aşağı almaq üçün başlamaq.
Bu, sonra bir nutshell, siz kub zəng nə zaman izah edir nə
siz artım və ya zəng, siz dəyəri surəti keçən edirik.
Və nə pictorially deməkdir siz sözün sayı 1 yazıyoruz ki,
yaddaş bir hissəsi, dəyişən ki, artım halda 1 2
və ya sonra bir kub halda 8 və səfərdə olan yaddaş atma
kimi tezliklə artım və ya kub funksiyası yekunları kimi. Sual.
[Tələbə] Harada qlobal dəyişənlər saxlanılır?
Qlobal dəyişənlər, hazırda başlatılmış məlumatın və ya uninitialized data deyirlər nə saxlanılır
bir qlobal dəyişən və dərhal bir dəyəri təyin əgər fərq olan
işarəsi bərabərdir, bu, orada üst başa
yalnız int x demək əgər, heç bir dəyəri, bu RAM qədər aşağı başa
sadəcə qaydaları ilə.
Digər suallar? Bütün hüquqlar.
Biz daha güclü almaq kimi bu şəkil geri gələcək
biz kompüter ilə nə ilə,
lakin indi, in Kriptoqrafiya üçün qısa bir giriş var bildirin
Dünyanın problemlərin bütün həll deyil ki, kriptoqrafiya bir xüsusi növü
lakin bəziləri həll etmir.
Burada Bu halda, biz gizli-key Kriptoqrafiya deyilən bir şey var.
Secret-key şifreleme, adı təklif kimi, gizli onun təhlükəsizlik gəlir.
>> Siz grade məktəb geri idi və əgər Məsələn, bir az gizli sevgi məktubu keçən edilmişdir
Siz tamaşaçı ilə qeyd keçmək istəyirdi əgər oğlan və ya qız siz də sarsıdıcı idi,
yəqin English belə bir qeydi yazın və ya hər ana dili deyil.
Əksinə, siz şifrelemek bilər və ya sadəcə bu gün onlara mətn mesajı göndər.
Amma əslində sinif ərzində onlara qeyd keçmək bilər.
Və elə təhlükəsiz bunu ki, sizin dost və müəllim
siz yazıyoruz nə bilmirəm, bir olduqca sadə alqoritmi ilə gəlmək bilər
siz ola bilər gənc olsa da, yalnız sözləri dırmaşma üçün.
Belə ki, əvəzinə yazılı sizə, b yazmaq bilər
əvəzinə b sizə, c yazmaq bilər
əvəzinə c siz s d, yazmaq və bilər.
Və ya bir çox inkişaf etmiş tərcümə ilə gəlmək bilər
müxtəlif məktublar məktubları.
Amma tutmaq bu qeyd gönderiyorsanız kimə oğlan və ya qız
ehtiyaclarını nə, açıq-aydın olan bir şey bilmək? >> [Tələbə] Siz gönderiyorsanız nə.
Sizin gizli bir və b və c və d's arasında birdən nə kimi edir.
Yalnız bir olan b, b c getmək üçün məktublar hər 1 əlavə olunur?
Ki, daha mürəkkəb mı?
>> Belə ki, sizin və əzmək, bu gizli məlumat lazımdır
amma burada bir catch-22 növü var.
Bu ilk dəfə Əgər, sinif bu sevgi məktubu gönderiyorsanız
necə ki, oğlan və ya qız gizli hətta nə olacaq?
Belə ki, gizli açar kripto, dünyanın problemləri bütün həll etmir
və əlaqələr biz semestr sonuna doğru geri gəlmək lazımdır ki, burada actually var.
Eynilə bizim ən, Amazon.com da, məsələn, çalışır ki, kimsə bilmirəm
və hələ bizim çox güman ki, Amazon.com 'stuff almışdır
və bu e-ticarət əməliyyatları təhlükəsiz olduğunu güman tədris etdik.
URL yəqin ki, https, haradasa bəlkə bir silly az asma kilit simgesini var deyir
kredit kartı məlumat təmin Kriptoqrafiya bir növ var
Siz və Amazon.com arasında.
Kriptoqrafiya cəlb əgər hələ bir gizli bilmədən
və hələ Amazon-da hər kəs bilmirəm və mən, əlbəttə, gizli hər cür təşkil etdik
Amazon-da kimsə ilə, necə bunu mənim kompüter və ya browser edir?
Kriptoqrafiya digər növ ki, problem həll ki, tamamilə yoxdur həyata çevirir.
Amma bu gün üçün, biz sadə bir diqqət lazımdır
bəzi gizli bilmək əvvəlcədən təşkil edə bilər
+1 və ya bir və b arasında bəzi Xəritəçəkmə kimi.
Və Kriptoqrafiya prosesi ümumilikdə bu daxildir.
Siz sol burada təsvir bir düz mətn, var,
siz Şifreleme alqoritm və ya prosedur bir növ vasitəsilə run -
bəlkə yalnız var bir b olur, b c olur -
və sonra ciphertext ilə son.
Eyni zamanda, bir dəfə sizin əzmək, bu gizli qeyd etmişdir
o sonra decrypt ümumiyyətlə tərəfindən alqoritm geri var
düz mətn geri almaq üçün belə kimi.
Bu fiziki incarnations var.
>> Məsələn, bu, bir az gizli decoder ring edir
və bu iki zənglər burada olduğunu mənada bir ring edir.
Bu şey xaricində periferiyasında, Z vasitəsilə məktublar A, var
onlar təsadüfi qaydada edirik, baxmayaraq ki,
və daxili, bəzi nömrələr həqiqətən var
bu ring ilə cür daxilində xarici çevirmək deyil bilər ki,
hərflərlə nömrələri sıralamaq üçün.
A Christmas Story adlı film, siz ki, az Ralphie görürsünüz
Little Yetim Annie gizli mesaj ona nə anlamaq üçün istəkli idi
bir taxıl qutusuna rəqəmli mesaj şəklində, mən hesab edirəm ki, ünsiyyət edilmişdir
və siz dənli qutusuna gələn bütün kiçik kartlar toplamaq idi
siz onlara mail idi, siz gizli decoder ring geri almaq idi
nəhayət Xəritəçəkmə məktublar və nömrələr arasında nə həyata rəqəm bilər ki,
və ya məktublar və məktublar.
Biz bu kimi şeylər həyata və ya təmsil haqqında necə kompüter getmək olar?
Biz bir az daha elastik özümüzü ifadə bir yol lazımdır
bizim dəyişənlərin indiyədək imkan çox.
Biz chars etdik, ints etdik, biz üzüb gedirdi və ikiqat və bir neçə digər etdik
lakin bu, həqiqətən, bizə hər şeyi ifadə etməyə imkan vermir ki, yaddaş fərdi ədəd var
sözlər və cümlələr və ifadələr kimi.
Həqiqətən, biz belə şeylər strings aradıktan
ancaq bu həqiqətən CS50 kitabxana yalnız bir sadələşdirilməsi ki, söz
biz geri soymaq istəyən etdiyiniz.
Və burada bunu başlamaq edək.
Mənə irəli getmək və bir fayl açmaq edək -
Bu faylları bütün mövcuddur, həmişəki kimi, online - qondarma array.c
strings olmayan bir problem həll lakin burada bir şəkil boyalar üçün
necə ki, biz bir sıra deyilən bir şey istifadə edə bilərsiniz.
>> Bir sıra məlumat növüdür.
Bu çox kiçik məlumat növləri, bu daxilində var ki, növ dəyişən bir növü var
geri geri geri geri.
Biz sizin viktorina orta verir ki, bir az proqram yazmaq istədim Belə ki, məsələn, əgər
2 sınavlar var ki, 50 kimi bir kurs üçün,
siz çox asanlıqla hətta keçən həftə maddi bəzi əsasında bu proqram yazmaq bilər
GetInt və dəyişənlərin bir neçə istifadə edərək: int quiz1, int quiz2.
Və bu, olduqca sadə var.
Bu kodu max 20 xətləri bir proqram həyata keçirmək, bəlkə 10 var
2 viktorina puanları üçün istifadəçi soruşur və onların orta hesablayır ki,
, onları birlikdə əlavə 2-ayırıcı və sonra nəticələri çap edir.
Biz yəqin ki, dəqiqə bir sıra sonra olduqca asan indi bunu edə bilər.
Ancaq problem 50 3 viktorina və ya 4 olduğunu güman edir.
Siz sınavlar həftəlik ki, bir sinif üçün eyni proqramı istifadə etmək istədiyini düşünək.
Həftəlik viktorina bir sinfi haqqında düşünün.
Bir semestr 16 və ya həftə varsa, indi 16 dəyişənlər var:
int quiz1, int quiz2, int quiz3, int quiz4.
Bu redundancy görmeye başlamaq kimi, bu, çıxarmaq və kodu sovuşdurmaq
bu daha yaxşı bir yol idi arzu etmək başlamaq lazımdır.
Və təşəkkürlə, çünki serialların var. Belə ki, bunu edək.
Birincisi, mənə biz bu günə qədər istifadə etdiyiniz bir çox sadə şey təqdim edək
lakin kodu bəzən onu görəcəksiniz.
>> Bu adətən daimi adlı budur.
Belə ki, bu dəyər dəyişir ki, heç mənada sabit deyil.
Daimi oluştururken insan konvensiya
yalnız belə həqiqətən kodu çıxır ki, bütün hərflərlə istifadə
və C istifadə edən xüsusi söz # müəyyən edilir.
Beləliklə, biz # sonra, sonra, siz daimi adı üçün istifadə etmək istədiyiniz söz boşluq müəyyən demək
və sonra daimi dəyəri.
Bu bir dəyişən bir şey təyin fərqli edək.
Imzalamaq bərabərdir yoxdur, heç nöqtəli vergül var.
Bu, ümumiyyətlə preprocessor direktiv kimi tanınan nə edir
başqa bir vaxt, lakin daha çox.
İndi, bu sınavlar adlı dəyişməz dəyər yaradır
olan faktiki rəqəmli dəyəri 2-dir.
Belə ki, hər yerdə bu fayl ərzində sınavlar, sınavlar, sınavlar bax
yalnız 2 saylı var.
İndi əsas götürsək, necə bu işlər görək.
İlk bir az sirli görünür, ancaq bu həftə 1-dən bütün məhsulları var.
Siniflər üçün istifadəçi soruşun. Biz bu etməliyəm?
Line 22 - Bu, həqiqətən, sulu hissəsi - Mən bir float elan
lakin yalnız bir float. Mən deyil, üzən-point dəyərləri bir sıra elan edirəm.
Bu dəyişən burada nəzərdə tutulan kimi, notları adlı olacaq
lakin yeni sintaksis və yalnız parça sonra bu kvadratşəkilli mötərizələri var.
Mən float notları və sonra açıq bracket və sonra bir sıra bildirib etdik ki -
bu yalnız biz bunu kimi bir daimi Əgər bildiriş -
Bu o deməkdir ki, "Hey kompüter, me 2 üzüb gedirdi verir və in kollektiv onlara notları zəng edək."
>> Bu kimi bir çox yorucu proses fərqli edir: float grade1;
grade2 üzmək və s.
Belə ki, bir sıra bizə bu ideya həyata keçirmək imkan verir, lakin çox az messily,
biz, demək əvəzinə 16 həftəlik dövr üçün 16 kodu 1 xətt yazmaq olar ki, belə bir şəkildə.
Mən ağır-kodu 2 istəmədi, çünki siz məntiqi indi bu barədə düşünmək, əgər
3 CS50 dəyişikliklər əvəzinə viktorina gələn il güman
və burada 2 saylı idi, mən, burada 2 saylı idi
Burada 2, burada sayı sayı 2 idi.
Bu qıymaq çox yorucu və çox asan olur
və təsadüfən 3 1 dəyər dəyişdirmək və 2 sıra digər dəyər miss.
Belə ki, bu üz əvəzinə mücərrəd gedir və bu daimi ki, istifadə edirəm
onun adı təklif kimi, heç vaxt dəyişikliklər.
İndi biz müxtəlif olub olursa olsun, bu il və ya sonrakı viktorina
Mən yalnız üst burada bir yerdə bu qədər dəyişiklik var.
Belə ki bütün sabit deyil.
Eyni zamanda, yeni konseptual xüsusiyyət bir sıra edir.
Belə ki, kvadratşəkilli mötərizələri mənə bu çox üzüb gedirdi vermək və mənə kollektiv burada notları zəng imkan verir.
Belə ki, indi mən gedirəm nə edək.
Burada line 24 loop üçün bir başlanğıcdır.
>> Bu, həqiqətən, heç bir şey xülya deyil. Bu yalnız sınavlar istifadə əvəzinə ağır kodlu nömrəsi var.
Amma keçən həftə oradan intellektual fərqli bir şey yoxdur.
Bu ("% d #% d Quiz:") belə printf, yalnız printf edir
Mən yalnız mənə 2 sayı 1 viktorina və sonra 2 2 vermək çap etmək istəyirəm, çünki.
Belə ki, bu sırf estetik şeydir.
Lakin maraqlı hissəsi indi line 27 edir.
Üzən-point dəyəri iki placeholders biri doldurmaq üçün,
daha kvadrat mötərizə istifadə edin.
Loop üçün bu yəqin, i nə dəyər bərabər başlamışdır çünki bu halda, mən i kullanıyorum?
[Tələbə] 0. >> [Malan] 0.
Beləliklə, bu loop ilk iteration haqqında, mən kodu bu yazdı baxmayaraq kimi,
Mən kodu bu yazdı sanki lakin bu loop ikinci iteration, bu deyil.
Adı təklif kimi, çünki Amma dəyişən kullanıyorum ki, mükəmməl
ki, hər iteration qiyməti müxtəlif olub
belə bir zamanda bu serialın bir yerində doldurulması alıram.
Bu array necə görünür?
Mən burada ekranda super sadə düzbucaqlı çəkdi səbəbi əvvəl bu səbəbdən idi.
Bir sıra yalnız yaddaş bir yığın sonra yaddaş yığın edir
yaddaş bir yığın sonra və s.
Mənim array burada bu halda ölçüsü 2 Beləliklə, bütün mən bunu olunacaq
mənim viktorina puanları yazaraq burada istəyirəm - Bu bir 100 var və mən bu barədə bir 99 var -
Mən yalnız kompüter xahiş etdik, çünki bu yaddaş da istifadə edilə bilər
ölçüsü 2 bir sıra üçün.
Həmin meydanların hüququ hələ də var?
Yalnız 2 üzüb gedirdi üçün xahiş edirik, hətta Siz hələ RAM 2 gigabaytlık var.
Belə ki, diziler arxasında ideyası kompüter yalnız yaddaş bir yığın edir ki,
və sonra geri geri geri geri kiçik parçalara apportions.
Və bütün bir sıra edir.
>> Bu şeylər qoya bilər olan yaddaş içərisində bir bitişik yığın edir.
Bu sonra yalnız bir darıxdırıcı hesab etmək olar.
Burada aşağı diyirləyin, mən sonra serialın üzərində təkrarlamaq yerləşir, bu.
Mən array dəyərlər bütün toplama ilə gəlib
və sonra mən həqiqətən sınavlar bölünür məbləği bunu burada dəyirmi funksiyası istifadə edin.
Amma mənə indi kifayət hesab növ kimi mənim əl dalğa bildirin.
Amma mənim üçün edir ki, bütün nəticədə orta hesablanması edir.
Belə ki, ilk viktorina plus ikinci viktorina 2 bölünür və sonra bir int kimi onu çap.
String1 adlı müxtəlif nümunə Amma edək indi keçid
olan analoji şəkil lakin istifadə strings PAINTS.
Mənə davam və yalnız bir an üçün bu sadələşdirmək edək.
Indi üçün abzas bağışla.
Bu nümunə line 19 Notice, mən istifadəçi bir string almaq.
Amma növbəti xətləri 22 irəli edirəm nə görürsünüz.
Mən, həqiqətən, i qədər iterating edirəm - bu, yeni bir oyun deyil - strlen, simli uzunluğu.
Bu, bir string keçmək əgər, C ilə gəlir ki, bir funksiyası var
o string nə qədər çox simvol size deyir. Vəssalam.
Və əvəzinə string uzunluğu strlen var ki, daha yığcam yalnız çünki.
Otuz il əvvəl, insanlar kimi müfəssəl şəkildə mümkün kimi şeylər yazmaq xoşuma gəldi
biz burada Konvensiyanın saxlanılır etdik.
i + + yalnız hər iteration i arttırmayı deməkdir.
İndi həqiqətən maraqlı olan bu bildiriş.
Line 24, mən demək, "Kompüter, mənə 8 bit bir xarakter vermək, və c çağırırıq."
Amma bu sağ söyləyərək nə edir?
English ki, nə təmsil edir?
[Tələbə] serialın ilk character.
Exactly. Mənə array ilk karakter verin.
Və ya, ümumiyyətlə, mənə array ildə İTH xarakter verir.
İndi vacibdir həyata kompüter elm kimi,
biz, həqiqətən, 0-dan hesablanmasını edirik.
>> Siz bunu başlamaq üçün indi qərarı yoxdur.
İndi kompüter gözləntilərinə uyğun davranmaq və 0-dan saymaq lazımdır
[0], çünki bir simli ilk karakter olacaq
[1] ikinci olacaq, [2], üçüncü və s olacaq.
Belə ki, bu proqram, mən bunu tərtib, bu yenidən string1, belə string1 etmək,
və indi mən terminal pəncərə string1 run etdik.
Bu giriş üçün gözləmə ki, mən, David yazın edin gedirəm
bildiriş Mən yapýyorum nə çünki indi bütün müxtəlif xətləri üzrə David görüntüler.
Mən bir zaman bir xarakteri çap edirəm.
Biz bu gün açıqlamaq deyil, lakin mən burada bu çek bir an əvvəl silindi.
Bu istifadəçi doğru çalışmadığı halda çıxır ki, çəkişmə, və ya sadəcə səhv,
həqiqətən bəzi uzunluğu string verə bilmirlər bilər.
Klaviatura üzrə yanlış düyməsini basın varsa, heç bir string edəsiniz
siz zərərli edirsinizsə və ya, bir esse bir gigabyte yetmeyecek yapışdırıb üçün cəhd edə bilərsiniz
kompüter yaddaş tükenirse, bu simli doldurmaq və,
biz NULL adlı bu xüsusi dəyər geri almaq olacaq ki, çevrilir.
Belə ki, indi üçün, yalnız NULL adlı bu xüsusi dəyər olduğunu bilmək
ki, biz başqa şeylər arasında, yaddaş olduğunuzda yoxlamaq üçün imkan verir.
Amma indi string2 açmaq varsa, burada bir fərq görürük.
String2 burada bir fərq edək.
String2 ilə loop üçün bu bir az fərqlidir.
>> Biz o başqa vaxt danışmaq olar ki, mənə NULLs silmək edək.
Nə loop üçün bu vaxt müxtəlif var?
Mən əvvəlki Məsələn geri bilərsiniz.
Version 2 deyil, belə ki, bu versiyası 1. 1, 2.
1, 2.
Burada strlen zəng edir?
Bu loop üçün ilk hissəsi var.
Mən bu yapýyorum nə üçün hər hansı bir fikir? Bəli.
[Tələbə] Beləliklə, siz funksiyası hər zaman zəng etməyin.
[Malan] biz funksiyası hər zaman zəng etməyin So. Exactly.
Onlar super sadə olduğunu loops üçün olan Xatırladaq
Bir növ bu başlatma, vəziyyəti və yeniləmə deyil.
Bu problem vəziyyəti loop hər iteration baş ki.
Və burada bu nümunə, nə bu mənim vəziyyətdə olması haqqında pis?
[Tələbə] Siz strlen zəng edirik.
[Malan] Siz təkrar yenidən strlen zəng və edirik.
Lakin bir dəfə mən David çap etdik ki, simli uzunluğu 5
və loop hər iteration haqqında dəyişmək niyyətində deyil
simli hələ D-a-v-i d. çünki
Belə ki, bu getdikcə daha mühüm fikir olmaq nə bir ipucu edir
yalnız kompüter lazımsız iş etməyən bir dizayn qərar kimi tanınır.
>> Kimi standart redaksiyada pset2, pset2 bir sneak preview
həqiqətən ciphers bəzi nömrəsi həyata sizə qarşı gedir,
siz həm şifrelemek edə bilərsiniz, belə ki, şifreleme alqoritmlər bir sıra
və daha bir Ralphie kimi decrypt gizli mesaj kontormerinin.
Pset2 və hacker nəşr, biz bir az irəli getmək olacaq.
Biz faktiki kompüter sisteminin bir fayl təslim olacaq
ki, istifadəçi adı və faktiki şifrelenmiş parol bütün dəstə şey
və hacker nəşr üçün problem o parol crack olacaq
və həqiqətən o parol yaratmaq üçün istifadə nə Kriptoqrafiya və ya nə gizli anlamaq.
Və biz burada C yeni bir xüsusiyyət istifadə edərək, bu nə olacaq
Mən sizə əmr-line dəlilləri kimi tanınan bir demo vermək lazımdır ki,.
Siz bəzi bölməsində və ya dərslik görmüşəm bilər ki, həyata çevirir
əsas həmişə parantez etibarsız olması deyil.
Bu, iki dəlilləri ilə, əsas da bu kimi yazılı bilər çıxır ki,
argc sözlərin sayı yerləşir argc və argv,
Siz command line proqram adı sonra yazın ki,
və argv faktiki sözləri.
Orada kvadrat mötərizə təklif kimi, argv yəqin bir sıra edir.
Bu yaddaş bir string sonra simli sonra simli olacaq.
>> Belə ki, bu kimi bir şey nə biz pset 2 başlayaraq edə olacaq edir.
Düşünürəm ki, biz bazar ertəsi qayıda və run lazımdır nümunə olan argv1, etsəniz
hələ heç bir şey görünmür fark.
Bu, yalnız öz adını görüntüler.
Amma bu proqram yəqin iterates ki, güle güle sinif bildiriş demək əgər
tezliklə ilə çap olunmuşdur ki, sözlər hər artıq.
Biz istifadəçi sətirinə yazdığınız ki, sözləri əldə edəcək vasitələri
əsas (argc, argv) int üçün int əsas (void) Bu həftə sonu başlayan əsas dəyişdirilməsi ilə
və beləliklə komanda-line arguments anadan olacaq.
Və bir dəfə bu da həqiqətən inkişaf etmiş almaq, həqiqətən trippy proqramları yazmaq edə bilərsiniz
kimi yuxarıda və kənara burada bu,
funksionallığı bəzi biz indiyədək görülən deyil, bütün çox güclü etdik.
>> Beləliklə, biz ekranda bu bu tərk edəcəyik, biz bazar ertəsi görəcəksiniz.
>> [CS50.TV]