>> [MUSIC PLAYING]
>> DAVID J. MALAN: Bütün hüququ.
Bu CS50 və bu Həftə 2 başlanğıc.
Və ki, artıq geri olacaq həftə son bir neçə,
biz kompüter təqdim etdik elm və, öz növbəsində, proqramlaşdırma.
>> Və biz yolu ilə hekayə başladı Scratch ki, qrafik dil
MİT-in Media Lab.
Və sonra ən son, Keçən həftə biz etdi
bir higher-- a təqdim aşağı səviyyəli dil tanınan
C, sırf mətn bir şey kimi.
Və həqiqətən, son dəfə biz ki, daxilində tədqiq
anlayışlar bir sıra.
>> Bu, geri, çox idi ilk proqramı baxdı.
Bu proqram, sadəcə, "Hello, dünya." Çap
Amma çox var zahiri sehrli olur.
Bu # daxildir var bu bucaq mötərizədə ilə.
int var.
(Void) var.
parantez, qıvrım aşırma var, yarı colons, və çox daha çox.
>> Və belə ki, geri biz Not təqdim
Biz ideal, keçmiş oldu ki, ki sintaksis, həqiqətən deyil stuff
bütün intellektual maraqlı, lakin erkən
Tamamilə bir az çətin deyil fikrinizi ətrafında kesmek.
Və həqiqətən, ən ümumi bir erkən bir proqramlaşdırma sinif şeyi,
xüsusilə az rahat, ilə incidir almaq üçün
və müəyyən sintaktik tərəfindən takıldım səhvlər, məntiqi səhvlər qeyd etmək deyil.
Və belə ki, bizim hədəflərimizdən arasında Bu gün, həqiqətən, iradə
bir ilə təchiz etmək necə problem həll üsulları
yaxşı problemləri özləri həll etmək ayıklama şəklində.
Və siz də geri ki, lazımdır biz təqdim mühit
son dəfə CS50 IDE adlanırdı.
Bu web-based proqram ki, Siz bulud proqram imkan verir,
bütün tutarken, belə ki, danışmaq üçün biz yenə bu gün bir araya faylları.
Və biz geri Burada bu mövzu yenidən,
Onların arasında funksiyaları və loops, və dəyişənlərin və Boolean ifadələr,
və şərtləri.
Və biz, həqiqətən, bir neçə Not dünyanın tərcümə
C. dünya
>> Amma fundamental tikinti blokları, belə ki, danışmaq
həqiqətən hələ də eyni ötən həftə idi.
Əslində, biz, həqiqətən, yalnız idi müxtəlif puzzle parça, siz olacaq.
Əvəzində ki bənövşəyi blok saxlamaq, biz əvəzinə
ki, printf etdi C bu funksiya ki
Əgər bir şey çap imkan verir və ekranda format.
Biz CS50 təqdim Library, harada
Sizin ixtiyarınızdadır get_char indi var, və get_int və get_string,
və bir neçə digər funksiyaları kimi yaxşı, hansı vasitəsilə daxil əldə edə bilərsiniz
istifadəçi öz klaviatura.
Və biz də, hər şeyi bir nəzər etdi these- bool və char kimi,
və ikiqat, float, int, long_long string.
Və C. hətta digər məlumat növləri var
>> Siz bəyan Başqa sözlə, dəyişən bir dəyər saxlamaq üçün,
və ya bir funksiyası həyata zaman bəzi dəyər qaytarır,
Siz nə daxil edə bilərsiniz edir dəyər növü.
bir string kimi, deyil simvol ardıcıllıqla?
bir tam kimi, bir sıra mı?
Bu üzən Point dəyəri, və ya kimi?
Belə ki, C, Not fərqli olaraq, biz, həqiqətən, məlumatların nə cür müəyyən başladı
biz qaytarılması və ya istifadə.
>> Ancaq əlbəttə, biz də qaçdı kompüter bəzi fundamental məhdudiyyətlər.
Və xüsusilə, bu dil C, geri
biz bir nəzər etdi ki, tam daşqın, reallıq
Yalnız bir var ki, əgər yaddaş məhdud məbləği
və ya xüsusi bir sonlu sayı bit, yalnız belə yüksək saymaq olar.
Və belə ki, biz burada bu nümunə baxdı vasitəsi bir təyyarə bir counter,
həqiqətən, kifayət qədər uzun əgər olardı çalışan daşqın və bir proqram ilə nəticələnəcək
faktiki fiziki potensial səhv.
>> Biz də üzən baxdı point qeyri-dəqiqlik, reallıq
yalnız məhdud sayda bit, 32 və ya 64 olsun,
Siz yalnız çox nömrələri daxil edə bilərsiniz bir bu kəsir, sonra sonra siz
qeyri-dəqiq almaq üçün başlayır.
məsələn, bir üçüncü So Burada dünya, insan dünyada,
biz yalnız sonsuz sayı bilirik bu kəsir sonra 3s.
Amma kompüter mütləq bilməz nömrələri sonsuz sayı təmsil
Yalnız imkan əgər bəzi informasiya məhdud məbləği.
>> Belə ki, yalnız biz təchiz etdi baxımından böyük enerji ilə
Siz özünüzü ifadə edə bilər necə proqramlaşdırma baxımından bir klaviatura,
biz də məhdud nə Siz, həqiqətən, bunu edə bilərsiniz.
And olsun ki, bugs və səhvlər edə bilərsiniz məsələlər bu cür yaranır.
Həqiqətən, mövzular arasında bu gün ayıklama kimi mövzular olacaq
və həqiqətən başlıq altında axtarır hər şeyi təqdim edilmişdir necə son həftə
həqiqətən həyata keçirilir daha yaxşı ki,
anlamaq, həm də imkanları və C. kimi bir dil məhdudiyyətlər
>> Və əslində, biz qat geri soymaq lazımdır data strukturu sadə,
bir sıra deyilən bir şey olan Scratch bir zəng etmək olur "siyahısı".
Bu bir az var Bu kontekstdə müxtəlif.
Və sonra biz də bir təqdim edəcəyik Bizim domain xüsusi problemlərin ilk
CS50, dünya Kriptoqrafiya, Scrambling sənəti
və ya belə məlumatlar ciphering Siz gizli mesajları göndərə bilərsiniz ki,
və gizli mesaj deşifre iki nəfər, A və B. arasında
>> Belə ki, biz keçid əvvəl yeni dünyaya,
Bəzi ilə təchiz edək texnika ilə siz aradan qaldırmaq olar
və ya ən azı bir azaltmaq frustrations
Siz yəqin ki, rast ki, Təkcə son həftə ərzində.
Əslində, irəlidə sizin bəzi such-- olunur C. və bahis ilk problemlər var
Siz mənim kimi değilseniz, first time bir proqram yazın üçün cəhd edin,
Siz məntiqi düşünmək, hətta proqramı olduqca sadədir
çox yaxşı bir divar hit, və ola bilər compiler əməkdaşlıq etmək niyyətində deyil.
Etmək və ya cingilti niyyətində deyil həqiqətən, sizin teklif etmək üçün.
>> Və nə ola bilər?
Bəli, nin bir nəzər salaq bəlkə də, bir sadə proqram.
Mən irəli getmək və bu saxlamaq üçün gedirəm qəsdən buggy0.c adlı bir fayl,
Mən bunu bilirəm, çünki əvvəlcədən flawed bilər.
Amma bu həyata bilər birinci və ya ikinci və ya üçüncü proqram
Mən, həqiqətən, özüm qəbul edirəm.
Mən irəli getmək üçün gedirəm və , Int əsas (void) yazın.
Və sonra mənim qıvrım aşırma daxilində, salam, vücuda ( "Çox tanış
backslash n ") - və yarı kolon.
>> Mən fayl xilas etdik.
İndi aşağı getmək üçün gedirəm Mənim terminal pəncərə
və növü etmək buggy0, çünki, yenə fayl adı bu gün buggy0.c edir.
Mən daxil edin buggy0 etmək yazın.
>> Və oh, hay Allah, son dəfə xatırlayıram heç bir səhv ki, yaxşı bir şey deyil.
Belə ki, heç bir çıxış yaxşı bir şey deyil.
Amma burada aydın var səhvlər bəzi nömrəsi.
>> çıxdı ilk xətt So buggy0 etmək yazaraq sonra, geri,
Cingilti nin kifayət qədər verbose çıxış edir.
başlıq altında, CS50 IDE yapılandırılmış
bütün dəstə istifadə etmək bu compiler ilə variantları
belə ki, yoxdur ki, onlar haqqında düşünmək.
Və bütün ki, ilk xətt var Cingilti ilə başlayır deməkdir.
>> Amma bundan sonra problemlər onların görünüşü etmək başlayır.
line 3 xarakter Buggy0.c 5, böyük, qırmızı səhv var.
ki, nədir?
Dolayısı kitabxana funksiyası elan növü int (const char * ilə printf,
...) [-Werror].
Mən çox tez demək çox gizli olur.
Və əlbəttə ki, ilk nəzər, biz ki
Siz anlamaq üçün gözləmək ki, mesaj bütövlükdə.
dərslər və belə bir bu gün gedir üçün
qeyd etmək cəhd ola nümunələri, və ya oxşar şeylər,
səhvlər ola bilər Keçmişdə qarşılaşdı.
Belə ki, yalnız ayrı tease edək tanış bu sözlər.
böyük, qırmızı səhv aydın bir şey simvolik yanlış olan.
>> dolayısı elan kitabxana funksiyası printf.
Mən başa düşmürəm, hətta nə dolayısı kitabxana funksiyası elan
vasitələri, şübhəsiz ki, problem birtəhər printf aiddir.
Və məsələnin mənbə elan ilə bağlıdır.
>> bir funksiyası elan ilk dəfə qeyd.
Və biz ötən həftə terminologiya istifadə bir funksiyasının prototip elan,
ya üst bir xətt ilə sizin öz fayl və ya qondarma header fayl.
Və nə fayl biz demək idi Keçən həftə printf quote ki,
dırnağı bağlamaq elan?
nə fayl onun prototip deyil?
>> Belə ki, siz ilk şey Mən xatırlayıram tipli, demək olar ki, hər bir proqram son sýrada
və təsadüfən bir an əvvəl başladı özüm yazaraq bu burada idi
hash # daxildir <stio-- üçün Giriş / Çıxış dot h Həqiqətən,
Mən indi bu fayl saxlamaq əgər, Mən gedirəm irəli getmək və ekran sil,
Siz yazaraq edə bilər ki, Clear və ya, Control L aça bilər
yalnız terminal pəncərə sil yalnız bir clutter aradan qaldırılması üçün.
>> Mən irəli getmək üçün gedirəm və yenidən type buggy0 daxil edin.
Və voiture, mən hələ ki, görəcəksiniz Cingilti uzun komanda,
lakin heç bir səhv baş beledir bu dəfə var.
And olsun ki, mən ./buggy0 əgər, yalnız son dəfə kimi,
harada dot Bu o deməkdir directory, Slash yalnız deməkdir
burada proqramın adı gəlir və Proqramın o ad, buggy0 edir
"Hello, dünya." Enter
>> İndi, necə ola bilər Bu həll gleaned
olmadan mütləq kimi bir çox sözlər tanınması
Mən kimi, əlbəttə, olan bu uzun illər görülən?
Bəli, ilk problem başına həyata set, biz bir komanda təqdim
CS50 öz işçiləri olduğunu adlı help50 yazdı.
Şübhəsiz ki, C dəqiqləşdirilməsi edir problem bu necə istifadə etmək kimi qurmaq.
>> Amma mahiyyətcə help50 edir bir proqram CS50 heyəti
ki, imkan verir ki, yazdı Siz çalıştırmak üçün bir komanda və ya bir proqram run
və başa düşmürəm, əgər onun çıxış, help50 onun çıxış keçmək
olan proqram qeyd Kursun heyəti yazırdı ki,
Sizin proqramın çıxış baxacağıq xətti ilə line, xarakteri ilə xarakter.
Və biz əgər, işçi heyəti, tanımaq Siz qarşılaşdıqda səhv mesaj,
biz bəzi təhrik üçün çalışacağıq bəzi məsləhətlər ilə ritorik suallar,
bir TF və ya CA və ya özüm kimi çox ofis saat şəxs olardı.
>> Əgər deyilsə So help50 baxmaq mütləq bir problem tanımaq.
Amma bu etibar yoxdur bir qoltuqağacı kimi çox.
Əlbəttə anlamaq üçün cəhd onun çıxış və sonra öyrənmək
belə ki, yalnız bir dəfə və ya iki dəfə sizin nə etdiklərinizi Heç bir xüsusi səhv help50 run
mesaj.
Bundan sonra, siz olmalıdır özünüzü təchiz
Bu, həqiqətən nə anlamaq üçün.
>> Burada digər bir edək.
Mənə başqa davam edək fayl biz bu buggy1.c zəng edəcəyik.
Bu fayl Mən deliberately-- gedir
lakin mən deyil ki, iddia Mən nə səhv başa düşürük.
>> Mən irəli getmək və şeylərdir gedirəm # daxildir, mən var-ci ildən
bir an əvvəl mənim dərs öyrəndim.
Int əsas (void), əvvəlki kimi.
Və sonra burada mən gedirəm string s etmək - get_string.
Və son dəfə xatırlayıram ki, Bu vasitə, hey, kompüter,
Mənə bir dəyişən vermək bu s zəng və ki, dəyişən bir string növü etmək
mən bu bir və ya daha çox söz saxlaya bilərsiniz.
>> Və sonra sağ tərəfdən bərabər işarəsi yan
bir olan get_string edir CS50 Kitabxana funksiyası
ki, dəqiq ki, yoxdur.
O bir funksiyası və olur sağ əlləri sol.
Belə ki, bu bərabər işarəsi demək deyil Biz riyaziyyat hesab edə bilər kimi "bərabərdir".
Bu sağdan sola tapşırıq deməkdir.
Belə ki, bu, gələn string almaq deməkdir istifadəçi s daxilində saxlamaq və.
>> İndi istifadə edək.
Mənə bir ikinci kimi və irəli gedək line, mənə irəli getmək və "salam" deyək -
deyil "dünya", lakin "Salam,% s ki, bizim tutucu, vergül s,
ki, bizim dəyişən, və sonra yarı kolon.
Mən çox qıymaq olmasaydı burada, bu doğru kod kimi görünür.
>> Və mənim instinktlərdən indi tərtib edilir.
Fayl buggy1.c adlanır.
Mən daxil edin buggy1 etmək gedirəm.
Və darn-it yoxdur, əgər əvvəl daha çox səhvlər.
Mən daha çox var, demək səhv messages olardı
Bu proqram faktiki xətləri daha görünür.
>> Amma paket burada var Siz overwhelmed etdiyiniz hətta əgər
iki və ya üç və ya daha daha dörd səhv messages,
çox həmişə diqqət həmin mesajların ilk.
top-ən biri baxaraq, ola geri kimi lazımdır scrolling.
Belə ki, burada mən markası buggy1 yazılmış.
İşdə gözlənilən kimi cingilti çıxış edir.
>> Və burada ilk qırmızı səhv var.
Bəyan identifikator istifadə simli, mən standart demək idi?
Belə ki, standart edir həqiqətən başqa bir şey.
Bu istifadəçi aiddir klaviatura, mahiyyətcə.
>> Amma mən demək nə deyil.
Mən simli nəzərdə və mən get_string idi.
Belə ki, nə mən Bu vaxt unuttum?
Bu vaxt əskik var?
Mən # daxildir ki, mən printf etmək imkanı var.
>> Amma nə yoxdur yalnız hələ çıxış?
Bəli, yalnız son dəfə kimi, Mən compiler demək lazımdır
bu funksiyaları nə cingilti.
Get_string gəlmir C. Və xüsusilə, onu
gəlmək deyil Fayl header.
Əvəzinə gəlir bir şey heyəti yazdı
hansı fərqli bir fayl ad lakin tutarlı adına.
>> Belə ki, sadəcə bir xətt ki, əlavə son dəfə kod geri çağırılması
Cingilti çalışır ki, gedir alt mənim code üst baxmaq,
soldan sağa.
Bu qeyd olacaq oh, siz istəyirəm.
Mənə getmək və tapsın Bu server hər yerdə,
mahiyyətcə, surəti və yapışdırıb, Öz fayl üst daxil
belə hekayə bu nöqtədə ki, line 1 proqramın qalan
, Həqiqətən, funksiyaları hər hansı bir istifadə edə bilərsiniz Orada onların arasında get_string.
Mən ignore gedirəm o səhvlər qalan
Çünki, həqiqətən, yalnız şübhəli birinci həqiqətən mattered.
Mən irəli və təkrar getmək üçün gedirəm mənim fayl qənaət sonra buggy1 etmək.
Və voiture, bu çalışması etdi.
Mən ./buggy1 və əgər, yazın Məsələn, Zamyla, mən indi, salam olacaq
Zamyla, yerinə hello, dünya.
>> Yaxşı.
Belə ki, burada takeaways sonra ki, bir qədər bilərsiniz kimi glean üçün cəhd edin
tək səhv mesaj, axtarır tanınan sözlər bəzi.
ki qadağa başına help50 istifadə problem dəqiqləşdirilməsi seçin.
Amma qadağa da həmişə baxmaq top səhv yalnız ən azı
ilkin görmək nə məlumat Bu, həqiqətən verir bilər.
Amma bu var çıxır hətta daha çox funksionallıq inşa
CS50 Kitabxana kömək etmək dövr erkən siz
və erkən proqramlaşdırma yanlış gedir nə anlamaq.
Belə ki, burada bir nümunə edək.
Mən olan bu buggy2 zəng etmək üçün gedirəm, daha həyata flawed olacaq
dizayn qapısı olan.
>> Mən irəli getmək üçün gedirəm və # daxildir yoxdur.
Və sonra mən int əsas (void) gedirəm.
Və sonra mən loop üçün gedirəm.
For (_ 0 int.
i daha az və ya 10 bərabərdir.
i ++ və sonra qıvrım aşırma, mən gedirəm Burada yalnız bir hashtag simvolu çap
və yeni xətt xarakter.
>> bu mənim niyyəti So proqram olduqca sadəcə
10 dəfə təkrarlamaq və hər iteration
ki, loop hər dəfə dövrü ilə,
Bir hashtag çap, bir hashtag, bir hashtag.
One başına line Çünki orada yeni xətt var.
Və Xatırladaq ki ötən həftə başına loop,
və daha çox almaq lazımdır sintaksis ilə tanış
təcrübə ilə istifadə edərək long-- əvvəl mənə verir
dəyişən i adlanır və bu 0 edir.
>> Bu I əlavələr 1 hər iteration.
Belə ki, i 3 2 1 gedir.
Və sonra bu vəziyyətdə yarı colons arasında orta
etmək üçün hər iteration yoxlanılır olur biz daxilində hələ də əmin olun.
Mən 10 dəfə təkrarlamaq istəyirəm ki, mən var sort çox daxilən yalnız
mənim yuxarı bound kimi 10 qoydu.
>> Və hələ, bu çalıştırdığınızda, sonra etmək ilə tərtib buggy2--
və OK tərtib etmir.
Mən bir yoxdur syntax error bu dəfə.
mənə indi davam edək və daxil edin buggy2 axır.
İndi diyirləyin.
Və mənə artırmaq edək pəncərə ölçüsü.
>> Mən görünür 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11.
Belə ki, hətta baxmayaraq ki, 11 hashtags var Mən aydın bu loop daxilində 10 qoydu.
İndi bəzi dərhal görə bilərsiniz səhv, çünki, həqiqətən, bu nə
etmək çox çətin səhv deyil.
Amma bu, çox çox var çox erkən etdi.
>> Mən qeyd etmək istəyirəm, baxmayaraq ki, , Necə bu anlamaq bilər ki?
Bəli, bu çıxır ki, CS50 Kitabxana gəlir
yalnız get_string və get_int ilə get_float və digər funksiyaları və.
O, həmçinin xüsusi funksiyası ilə gəlir adlı eprintf, və ya, səhv printf.
Və bunu etmək üçün yalnız mövcuddur Bu sizin üçün bir az daha asan
yalnız kodu ayıklama zaman ekranda bir səhv baş beledir çap
Bu haradan gəldiyi və bilirik.
>> Belə ki, məsələn, bir şey bilər Bu funksiya şeylərdir ilə burada
eprintf, və sonra irəli getmək üçün gedirəm və i i, backslash n indi% deyirlər.
Mən dəyəri plug gedirəm.
Və üst qədər, bu, çünki , CS50 Kitabxana edir
Mən irəli getmək üçün gedirəm və daxil
mən bu funksiya etmək imkanı var.
Amma hesab edək nə line 9 bunu nəzərdə tutulur.
Mən nəhayət bu silmək üçün gedirəm.
Bu heç bir əlaqəsi yoxdur Mənim mühüm məqsədi ilə.
Amma eprintf, səhv printf, yalnız nəzərdə tutulur Mənə bir diaqnostik məlumat vermək.
Mən proqram çalıştırdığınızda, Mən istəyirəm müvəqqəti ekranda görmək
həmçinin yalnız anlamaq nə baş verir.
>> Və həqiqətən, hər Burada xəttinin 9 iteration
Mən görmək istəyirəm, dəyəri nədir?
i dəyəri nədir?
Və ümid edirəm ki, mən yalnız olmalıdır ki, mesaj, həmçinin, 10 dəfə bax.
>> Mənə irəli getmək və mənim proqram compile,
Mən heç bir vaxt var kimi Mən bir dəyişiklik. ./buggy2.
Və now-- OK.
daha gedən bir çox var.
Mənə qədər diyirləyin bildirin daha böyük pəncərə.
>> Və siz hər görəcəksiniz hashtags hələ çap olunur.
Lakin arasında onların hər indi bu aşağıdakı diaqnostik çıxış biçimlendirilmiş.
burada proqramın adı buggy2 edir.
fayl adı buggy2.c edir.
line sayı olan çap bu xətt 9.
Və o sol olan bu deyil Mən gözləyirəm hata beledir.
>> Bu ki, haqqında gözəl nə var indi mütləq saymaq yoxdur
başımda mənim proqram nə.
Mən görə bilərsiniz i 0 ilk iteration,
sonra 1, sonra 2, sonra 3, 4, onda 5, sonra 6, sonra 7, sonra 8, sonra 9, sonra
10.
Belə ki, bir dəqiqə gözləyin.
Burada nə olub?
Mən hələ hesablanması görünür kimi 10-ə qədər nəzərdə tutulmuşdur.
>> Amma harada başladı?
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
Belə 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- 11 barmaq
problemin göstəricisidir.
Mən saydım görünür səhv mənim loop.
10 tekrarlamalar getmək əvəzinə, Mən 0 baþlýyorum
Mən 10 vasitəsilə bitən alıram.
Lakin, kompüter kimi, Mən 0 hesablanması baþlýyorum
Mən hesablanması olmalıdır , lakin 10 vasitəsilə.
>> Və fix, mən nəhayət Burada həyata, iki şeyi biridir.
Mən çox sadəcə deyə bilər az 10 qədər saymaq.
Belə 0, 1, 2, 3, 4, 5, 6, 7, 8, , Həqiqətən, doğru 9,
hətta bir az yanlış səslənir baxmayaraq.
Yoxsa mən nə edə bilər çox və ya bərabər daha az 9, belə uzun mən 0 başlamaq kimi.
Yoxsa həqiqətən kimi deyil əgər, siz 10 vasitəsilə saymaq lakin 1-də başlaya bilərsiniz.
Ancaq yenə də, bu, yalnız ki, ümumi deyil.
proqramlaşdırma olsa da Scratch-- çox deyil
lakin proqramlaşdırma C və digər dillərdə,
JavaScript və kimi Python və başqaları bu
yalnız çox ümumi ikili bizim müzakirə
yalnız hesablanması başlamaq üçün 0 siz ən aşağı sayı.
Yaxşı.
Belə ki, eprintf var.
Və yenə, indi fiqurlu etdik ki, mən problem və mən 0 geri gedirəm
az 10 vasitəsilə gedirəm getmək və eprintf silmək üçün.
>> Mən bu olmamalıdır mənim kodu gəmi və ya kodu təqdim
və ya başqa hər kəs üçün göstərir.
Bu, həqiqətən, yalnız nəzərdə müvəqqəti istifadə ediləcək.
Amma indi bu müəyyən etdik eləcə də xüsusi problem.
>> Yaxşı, burada daha bir nümunə edək Mən aşağıdakı qızışdırmaq gedirəm ki.
Mən irəli getmək üçün gedirəm və # daxildir. $ 50
Mən irəli getmək üçün gedirəm və # daxildir.
>> Mən saxlamaq üçün gedirəm buggy3.c bu faylı.
Mən irəli getmək üçün gedirəm və int əsas (void) bəyan edir.
Və sonra daxili orada Mən i int gedirəm _ -
Mən bir proqram həyata keçirmək istədiklərini bir get_negative_int ilə.
Bu hələ mövcud olan bir funksiyası deyil.
Belə ki, biz həyata olacaq yalnız bir anda.
Amma biz nə görmək olacaq ilk pass arabası var.
Mən kazanılmış sonra istifadəçi bir int,
Mən yalnız% i çap gedirəm mənfi tam, backslash n, vergül, i.
Başqa sözlə, mən nə üçün bu proqramı istəyirəm
bir mənfi int almaq ki, istifadəçi və sonra çap
ki, belə bir mənfi int edir.
>> İndi bu funksiyanı həyata keçirmək lazımdır.
Belə ki, sonra mənim fayl, mən getmək üçün gedirəm irəli və adlı funksiyası elan
get_negative_int (void) - və biz edəcəyik ki, xətt yenidən nə deməkdir geri gəlir
bir an int n; do-- do aşağıdakı kimidir printf n :.
, Get_int - Və sonra mən n gedirəm bu isə n 0 daha çox yoxdur.
Və sonra n qayıtmaq ;.
>> Belə ki, gedən bir çox var etmədik olan bu ancaq
ən azı qısa, keçən həftə oldu.
Belə ki, burada xətt 10 Mən bəyan etdik get_negative_int adlı funksiyası,
və mən, (void) gətirdik parantez, səbəbi bu olan
giriş daşımır.
Mən bir şey keçən deyiləm Bu funksiya üçün.
Mən geri bir şey alıram.
>> Mən nə ümid edirəm geri almaq bir tam deyil.
heç bir məlumat növü var C negative_int çağırıb.
Bu, yalnız int var, belə ki, gedir əmin etmək bizə olmaq
ki, həqiqətən dəyər qaytarılmır yalnız int edir
həm də mənfi.
>> line 12-də mən bir dəyişən elan edirəm n və növü int edilməsi çağırıb.
Və sonra line 13 18 vasitəsilə Mən bir şey bunu bir şey doğru edir.
Mən irəli və çap gedirəm n, kolon, sonra boşluq,
istifadəçi üçün tez kimi.
>> Mən get_int zəng edirəm və Onun sözdə geri dəyər saxlanılması
dəyişən n.
Amma bunu saxlamaq üçün gedirəm Bu isə n 0 daha böyükdür.
Başqa sözlə, istifadəçi mənə verir int və sayı 0 daha çox,
bundan dolayı, müsbət, mən gedirəm yalnız istifadəçi reprompting saxlamaq,
onları məcbur, reprompting saxlamaq əməkdaşlıq və mənə mənfi int verir.
>> Və n həqiqətən negative-- dəfə Nəhayət növləri -50 istifadəçi Güman
onda bu isə loop artıq həqiqətdir -50 0 daha böyük deyil, çünki.
Belə ki, çıxmaq loop məntiqi və n qayıtmaq.
>> Amma digər bir var şey var.
Mən sadəcə bunu edə bilərsiniz çıxarmaq və yapıştırma ilə
fayl üst kodu bir xətt.
Mən cingilti öyrətmək lazımdır və ya cingilti söz,
açıq Mən ki, həqiqətən getmək və həyata keçirilməsi
bu funksiya get_negative_int.
Bu, yalnız fayl aşağı ola bilər.
Yenə Xatırladaq ki cingilti , Alt üst şeyi oxuyur
sağ, belə ki, siz bilməzsiniz Cingilti bir funksiyası zəng
mövcud olacaq bilmir.
>> İndi təəssüf ki, bu proqram, kimi bəzi qeyd ola bilər,
artıq arabası deyil.
Mənə davam və buggy3 edək.
Mənim problem indi deyil, belə ki, tərtib bir syntax error bir mətn səhv kimi,
Bu, həqiqətən bir məntiqi olacaq Mən qəsdən var səhv
imkanı kimi qəbul neler vasitəsilə addım.
>> Mən irəli getmək üçün gedirəm indi və buggy3 axır.
Mən getmək üçün gedirəm irəli və əməkdaşlıq edirik.
Mən 1 nömrəli vermək gedirəm.
Bu, belə ki, bunu etmədi yenidən mənə isteyen var.
>> Necə haqqında 2?
3?
50?
o heç biri işləyir.
Necə -50 haqqında?
Və proqram iş görünür.
>> mənə bir daha cəhd edək.
Mənə -1 cəhd edək, iş görünür.
Mənə -2 cəhd edək, iş görünür.
Mənə 0 cəhd edək.
Huh ki, düzgün deyil.
İndi biz burada bir az xırdaçı olan edirik.
Amma bu halda 0 ki, həqiqətən, var müsbət, nə də mənfi qiymətləndirilir.
Və mənim proqram faktdır ki, 0 mənfi tam olduğunu söyləyən
ki, texniki doğru deyil.
>> İndi niyə bu edir?
Bəli, bu, açıq-aydın ola bilər.
Və həqiqətən, proqram kifayət qədər sadə üçün nəzərdə
belə ki, biz araşdırmaq üçün bir şey var.
>> Amma üçüncü ayıklama təqdim edək texnika burada debug50 çağırıb.
Belə ki, bu bir proqramdır biz yalnız yaratdıq ki,
Bu il deyilən debug50 ki, siz imkan verir
daxili deyirlər nə istifadə CS50 IDE qrafik ayıklama.
Və ayıklama yalnız bir proqramdır ki, ümumiyyətlə proqram run imkan verir
lakin addım xətti ilə addım-addım xətti ilə xətti ilə, poking, duraklatarak
ətrafında dəyişənlərin baxaraq ki, proqram yalnız siz keçmiş zərbə deyil
və tez bir şey çap və ya bir şey çap.
Bu, sizə imkan verir insan sürət, bu qarşılıqlı.
>> Və bunu, siz sadəcə aşağıdakı.
kodu tərtib sonra, Mən artıq idi, buggy3,
Siz irəli getmək və debug50 ./buggy axır.
Belə ki, çox help50 run var kimi help50 və sonra komanda,
debug50 siz debug50 run və sonra komanda adı.
>> İndi mənim ekranda nə seyr, xüsusilə sağ tərəfində.
Mən Run bütün hit zaman qəfil bu sağ panel
ekranda açılır.
Və gedən bir çox var ilk baxışdan da.
Amma çox yoxdur hələ narahat çox.
>> Bu mənə hər şeyi göstərir ki, mənim proqramı daxilində gedən
İndi bu via düymələri top sonra up
mənim kodu gezinmek üçün mənə imkan nəticədə addım-addım-addım.
Amma hələ.
nə edək.
mənim terminal pəncərə At Mən n istenir olan alıram.
Mən irəli getmək üçün gedirəm və -1 Bu dəfə və növü əməkdaşlıq edirik.
Və olsa bir az cryptically -1 gözlənildiyi kimi mənfi tam edir.
>> Və sonra uşaq ayrıldığı status 0 GDBserver mövcud.
GDB, GNU Debugger, adı əsas proqram
Bu ayıklama həyata keçirir.
Lakin bütün bu, həqiqətən, ayıklama deməkdir mənim proqram çıxmaq çünki getdi
və bütün yaxşı idi.
Mən, həqiqətən, mənim proqram debug istəyirsinizsə, Mən preemptively debug50 demək lazımdır
harada başlamaq istəyirəm Mənim kod vasitəsilə gücləndirməklə?
>> Və bəlkə də ən sadə yolu Aşağıdakı kimi ki etmək.
Mən artıq hover varsa Burada redaktoru nov,
belə ki, həqiqətən yalnız burada kenar çubuğunda, line sayı sol,
Mən yalnız basın fark etsəniz bir dəfə, mən bir az qırmızı dot qoydu.
Və kiçik qırmızı dot, bir stop işarəsi kimi, hey, o deməkdir ki,
debug50 mənim kodu fasilə icra orada mən bu proqram çalıştırdığınızda.
>> Belə ki, nə edək.
Mənə davam və mənim proqram run edək yenidən debug50 ./buggy3 ilə daxil edin.
İndi, bildiriş, bir şey müxtəlif oldu.
Mən istenir olan deyiləm hələ mənim terminal pəncərə
bir şey üçün, çünki mən deyil Mənim proqramı hələ kazanılmış.
line 8 Qeyd edək ki, İndi qeyd olunur,
və bir az arrow da var sol kəlam, burada durduruldu.
indeksi, xəttin Bu xətt 8, hələ icra olunmayıb.
>> Mən baxmaq əgər, maraqlı nə var sağ tərəfində burada,
i yerli olduğunu qeyd mənada yerli dəyişən,
ki, cari funksiyası daxilində var.
Və onun dəyəri, yəqin ismarıcları, və sort rahat 0.
Amma 0 yazın etməyib.
Yalnız olmaq olur onun hazırda default dəyəri.
>> Mənə irəli getmək və indi bunu bildirin.
Mənə davam və getmək edək burada top, mən
irəli getmək üçün gedən və Bu ilk icon basın olan
üzərində addım keçmək yoxdur deməkdir amma kodu bu xətti üzərində addım,
yol boyunca onu həyata.
>> İndi, qeyd mənim tez yalnız dəyişib.
Niyə ki?
Mən debug50 bildirib etdik, kodu bu xətt axır.
kodu bu xətt nə edir?
bir int mənə baxın.
TAMAM.
Mənə əməkdaşlıq edək.
Mənə indi irəli getmək və -1 növü daxil edin edək.
İndi nə dəyişdi görürsünüz.
sağ tərəfində, Yerli dəyişən i
olan -1 indi göstərilir.
Və bu növü int hələ də var.
>> Və bildiriş də mənim qondarma yığını zəng harada fasilə idi?
Biz daha çox danışmaq lazımdır gələcəkdə bu.
Amma zəng yığını yalnız istinad nə funksiyaları hərəkət hazırda.
Hal-hazırda yalnız əsas var.
Və indi yalnız yerli dəyişən 1 dəyərində i var.
>> Mən nəhayət bu xətti üzərində addım zaman Burada sağ üst eyni icon ilə,
-1 Mənfi tam deyil.
İndi ki, buruq brace artıq duraklatarak oldu.
nin onun şey edək.
Hesab edirəm ki, xətti, və voiture üzərində addım.
>> Belə ki, bütün dəhşətli , Maarifləndirici hələ
lakin mənə fasilə imkan vermədi və məntiqi vasitəsilə düşünmək
Bu proqram nə edir.
Amma səhv hal deyildi.
aşağıdakı Bunu yenidən edək.
>> Hesab edirəm ki, breakpoint tərk gedirəm qırmızı dot uyğun 8.
Mən debug50 təkrar gedirəm.
Avtomatik olaraq burada durdurulmuş oldu.
Amma bu dəfə yerinə bu xətti üzərində gücləndirməklə,
Mənə həqiqətən daxilində gedək get_negative_int və anlamaq,
niyə cari cavab olaraq 0 qəbul edir?
>> Belə ki, əvəzinə üzərində addım tıklayarak.
Mən irəli getmək üçün gedirəm və addım basın.
Və line 8 olduğunu fark İndi birdən-birə indi qeyd
line 17 olur.
>> İndi, bu ayıklama ki, deyil xətləri 14 və 15 və 16 atlandı edib.
Bu, yalnız bir şey yoxdur ki, orada göstərmək üçün.
Bu yalnız dəyişənlərin elan olunur, və sonra söz var nə var
və sonra açıq buruq brace.
ki, yalnız funksional xətt şirəli, həqiqətən, burada bu, 17.
biz sizin harada ki avtomatik durdurulmuş.
>> Belə ki, printf ( "n.is:") ;, belə hələ baş verməyib.
Belə ki, irəli getmək və gəl basın bildirin.
İndi mənim tez, həqiqətən, dəyişib ( "n edir:").
İndi fikrində deyiləm, get_int daxil gücləndirməklə narahat,
funksiyası idi, çünki Kitabxana CS50 tərəfindən.
Bu ehtimalla doğru deyil.
>> Mən irəli getmək üçün gedirəm və sort verilməsi ilə əməkdaşlıq
bir int, lakin mənfi int.
Mənə davam və 0 hit imkan.
İndi burada olur Mən aşağı almaq zaman 21 sıralamaq?
Mən bir daha iterated etdik.
Hesab edirəm ki, loop yapışdırılmalıdır görünür deyil.
Başqa sözlə, bu sarı bar ətrafında davam etməyib
və ətrafında və ətrafında.
>> İndi ki, niyə?
Yaxşı, n, indi nə n?
Mən yerli baxmaq olar ayıklama dəyişənlər.
n 0.
Bütün sağ, mənim vəziyyət nə idi?
>> 20-- line 20 də ki, 0 0 daha böyükdür.
Bu doğru deyil.
0 0 daha böyükdür.
Və mən bu çıxdı.
>> Və belə ki, niyə xətt var 21 Mən, həqiqətən, davam,
Mən hətta 0 qayıtmaq üçün gedirəm Mən 0 rədd olmalıdır baxmayaraq
kimi həqiqətən mənfi olmayan.
Belə ki, indi, mən, həqiqətən, belə deyil ayıklama qayğı.
Bu, mən ehtiyac yoxdur Got gedir nə daha çox bilmək.
>> Mən irəli getmək üçün gedirəm və Yalnız Play düyməsinə basın,
və bu son up bildirin.
İndi ki, həyata sonra mənim bug line 20 yəqin edir.
Bu mənim məntiqi səhv var.
>> Və mən istəyirəm bu dəyişdirmək üçün nə etmək?
problem deyiləm ki, əgər 0 tutmaq, yalnız bir məntiqi səhv var.
n isə deyə bilərəm və ya daha çox 0 bərabərdir,
təkrar istifadəçi isteyen saxlamaq.
>> Belə ki, daha sadə səhv, bəlkə Siz məni görəndə belə aydın
yalnız bir neçə dəqiqə əvvəl yazın.
Amma burada paket var debug 50 ilə,
və ayıklama ilə proqram ümumiyyətlə,
Bu yeni aşkar güc var baxmaq, öz kodu ilə gəzmək
ki, sağ panel vasitəsilə nə Sizin dəyişənlərin dəyərlərdir.
Belə ki, mütləq deyil bir şey istifadə etmək lazımdır
kimi bu dəyərlər çap eprintf.
Siz, həqiqətən, onlara görə bilərsiniz vizual ekran.
>> İndi bu kənarda, bu, qeyd dəyər ki, başqa texnika var ki,
həqiqətən super ümumi.
Və niyə bu kiçik wonder bilər Burada oğlan səhnədə oturan edilmişdir.
Belə ki, bu texnika, ümumiyyətlə, var rezin ördək ayıklama kimi tanınan,
həqiqətən, yalnız bir deyil əslində vəsiyyət
tez-tez proqramçılar kod yazılı,
onlar mütləq deyilik başqaları ilə əməkdaşlıq,
və ya paylaşılan mühitdə iş.
>> Onlar evdə növ istəyirik.
Bəlkə gecə gec.
Onlar rəqəm çalışdığınız Onların kodu bəzi səhv edir.
Onlar yalnız görən deyilik.
>> Və heç bir roommate var.
heç bir TF yoxdur.
ətrafında CA yoxdur.
onların n bütün Bu kiçik rezin aziz edir.
>> Və rezin ördək ayıklama yalnız bu dəvət edir
kimi silly şey hesab Bir real varlıq kimi bu
və həqiqətən, sizin kod vasitəsilə gəzmək şifahi bu cansız obyekt üçün.
Belə ki, məsələn, əgər Bu mənim nümunə burada
ki, əvvəllər geri problem, bu idi
Mən kodu bu ilk line silmək əgər, Mən irəli getmək və yenidən arabası 0 etmək,
Mən bu idi ki, xatırlayıram Burada səhv messages.
Belə ki, I baxmayaraq gülünc burada fikir, , Açıq bunu anda hiss
ki, səhv edir.
>> OK, belə ki, mənim problem var ki, dolayısı kitabxana funksiyası elan etdi.
Və kitabxana funksiyası printf edir.
OK Declare-- elan prototipləri xatırladır.
>> Mən, həqiqətən, lazımdır deməkdir əvvəlcədən compiler demək nə
funksiyası kimi görünür.
Bir dəqiqə gözlə.
Mən standart io.h. yox idi
Çox sağ olun.
>> Siz of-- Belə ki, yalnız bu proses əslində bir ördək üçün ehtiyac yoxdur.
Amma gəzinti bu fikri Öz kod vasitəsilə özünüz
belə ki, hətta eşitmək özünüzü, belə ki,
Öz hərəkətsizliyi həyata çıxışında, ümumiyyətlə fikirdir.
>> Və bəlkə də daha məntiqi, belə ki, bir, lakin daha çox cəlb ilə qədər
misal biz yalnız arabası 3.C etdi Siz vasitəsilə özünüz gəzmək bilər
göstərildiyi kimi.
Belə ki, bütün sağ, rezin aziz, DDB, siz olacaq.
Burada mənim əsas funksiyası var, Mən mənfi int almaq zəng edirəm.
>> Mən qaytarılması dəyəri alıram.
Mən sol tərəfində saxlanılması alıram dəyişən line 8 i çağırıb.
OK, lakin gözləmək necə etdi ki, dəyəri almaq?
Mənə line 12 funksiyası baxaq.
>> line 12, biz mənfi int almaq lazımdır.
Hər hansı bir giriş almaq deyil, OK, bir int qayıtmaq yoxdur.
Mən line 14 dəyişən n bəyan.
Bu tam saxlamaq olacaq.
Mən istəyirəm nə.
>> n imkan is-- isə belə aşağıdakıları Mənə fix Mən artıq nə geri.
n daha çox isə So 0, OK, n çap.
Və sonra int n saxlanılır almaq çağırırıq.
n 0 onda yoxlamaq n deyilik orada deyil.
Belə ki, daha, siz deyil faktiki ördək lazımdır.
Amma özünüzü ilə gəzinti intellektual həyata kimi code
tez-tez sizə kömək edəcək , Neler həyata
yalnız bir şey bunu fərqli olaraq bu kimi ekranda ixtiyarınızdadır,
və özünüz vasitəsilə söhbət deyil vicdanla deyil ki,
təxminən effektiv texnika kimi.
Belə ki, orada siz var ki, bir müxtəlif üsulları sayı
həqiqətən kodu ayıklama üçün və günah tapmaq olan
Sizin Toolbar alətləri olmalıdır Əgər gecə gec deyilik ki,
xüsusilə, siz yemək etdiyiniz zalları, və ya ofis saat,
qarşı baş tarpıltı divar, bir problemi həll etməyə çalışırıq.
proqram tools var ki, həyata.
rezin ördək alətlər var.
Və bütün heyəti var bir tərəfdən, borc gözləyir dəstəkləyir.
>> problem Belə ki, indi, bir söz dəstləri, və biz sizə ümid edirik nə
Onlardan almaq və necə biz qiymətləndirən haqqında getmək.
kurs proqramı Per, CS50 problem dəstləri
Belə ki, dörd əsas baltalar qiymətləndirilir daxilində danışmaq, düzgün, dizayn,
və stil.
Və daxilində yalnız nə qədər aiddir parça off bitten var?
Necə bir problem çox çalışmışıq?
səy hansı səviyyədə Siz özünü var?
>> Düzgün, kimi proqram çalışır Bu CS50 dəqiqləşdirilməsi üzrə ehtimal
Siz müəyyən giriş təmin zaman və ya müəyyən nəticələr geri gəlir?
Design onların əksəriyyəti subyektiv deyil.
Və bir ki, edəcək öyrənmək üçün uzun almaq
və uzun olan, dərs bu günə qədər sonunda aşağı kimi,
Sizin code necə yazılır?
>> Bu, sadəcə doğru çap bir şey var çıxış və ya sağ dəyərlər qayıtmaq.
Amma kimi bunu səmərəli mümkün kimi?
Siz bölmək edirlər və fəth, və ya ikili
biz tezliklə etdik ki, görürsünüz kimi axtarış iki həftə əvvəl telefon kitab ilə?
həll etmək üçün daha yaxşı yollar var Hal-hazırda burada daha problem?
Bu daha yaxşı dizayn üçün bir imkan var.
>> Və sonra necə style-- yaraşıqlı kodunuzu edir?
Mən olduqca deyiləm ki, görəcəksiniz mənim kodu indenting haqqında xüsusi,
və əmin mənim dəyişənlərin edilməsi əsaslı adlandırılır. n,
qısa müddət, bir yaxşı ad sayı, bir hesablanması tam üçün i,
bir simli üçün s.
Və biz artıq ola bilər dəyişən adları stil.
Style necə yaxşı Sizin indeksi görünür?
Və necə oxunaqlı edir?
>> Və zaman keçdikcə, nə Taş və TFS kurs edəcəyik
ki, təmin edir keyfiyyətli rəy cür
Daha yaxşı almaq ki, o müxtəlif aspektləri edir.
Və biz necə baxımından Bu baltalar hər qiymətləndirmək
Bu çox az ilə adətən var buketler sizə ki, ümumiyyətlə,
Siz yapýyorsun necə bir mənada almaq.
Və həqiqətən, bir hesab almaq əgər o axes-- düzgün dizayn hər hansı bir
və stil especially-- ki sayı ümumiyyətlə 1 və 5 arasında olacaq.
Və sözün siz alıyorsanız semestrin əvvəlində 3-nin,
bu çox gözəl bir şey.
Bu hələ var deməkdir yaxşılaşdırılması üçün otaq,
Siz üçün ümid olan ilk dəfə bir sinif alaraq.
tavan bəzi bit ümid var hansı siz nail olmaq istəyən edirik.
Və 3 əldə erkən ədəd,
əgər bir 2 və 4-nin, , Həqiqətən, yaxşı bir şey deyil.
Bu, yaxşı daxilində var yaxşı gözləntiləri ərzində.
>> mind yarış əgər gözləyin Bir dəqiqə, üç beş həyata.
Bu, həqiqətən 10 6 həyata var.
60% var.
Bir F. var Allahım,
>> Bu deyil.
Bu, əslində, deyil.
Əksinə, onu yaxşılaşdırmaq üçün bir fürsət var dövr ərzində.
Və bəzi alıyorsanız Poors, bu imkanı var
ofis saat istifadə etmək üçün, əlbəttə bölmələr və digər resursları.
>> Best, həqiqətən, bir fürsətdir Siz var yalnız nə qədər fəxr
dövr ərzində gəlir.
Belə ki, həyata yoxdur, bir şey varsa, başqa, üç yaxşıdır.
Və zamanla inkişaf üçün otaq imkan verir.
>> o baltalar necə kimi ölçülmüş, real sen
almaq üçün çox vaxt sərf etmək niyyətindədir iş şeyi doğru tək bildirin.
Və düzgün çalışır kimi, ən ağırlıqlı ola
üç bu multiplikativ amil.
Design də vacibdir, lakin Siz mütləq deyil ki, bir şey
o saat bütün sərf hər şeyi yalnız iş almaq üçün çalışırıq.
>> Və belə ölçülmüş var daha yüngül bir az.
Və sonra style azı ağırlıqlı.
Hətta az olsa əsaslı əhəmiyyətli,
Bu yalnız, bəlkə də, asan şey, sağ etmək
nümunələr biz imitasiya mühazirə və bölməsində etmək,
gözəl şeyi indented və şərh,
və s asan arasında şeyi və sağ olsun.
kimi Belə ki, həyata o xal var ki,
ki, tutmaq üçün nisbətən asandır.
>> İndi bir sözü akademik dürüstlük şeylərdir.
Əlbəttə başına So proqramı, görəcəksiniz
Əlbəttə ki, bir Bu ətrafında dili bit.
Və əlbəttə məsələ edir olduqca ciddi akademik dürüstlük.
>> Biz ayrı-seçkilik var, yaxşı və ya pis üçün,
yolladığını hər il daha intizam üçün tələbələr
ən hər hansı başqa Əlbəttə, mən bilirəm ki,.
Bu mütləq deyil Əslində göstəricisi
CS tələbələr, ya CS50 tələbələr, ki bir az sinif yoldaşları daha vicdanlı.
Amma reallıq ki, bu dünya, elektron, biz yalnız
texnoloji var Bu aşkar deməkdir.
>> Bu, bizim üçün vacibdir sinif daxilində ədalət
biz bu aşkar və qaldırmaq məsələ biz şeyləri görəndə.
Və yalnız bir şəkil çəkmək və həqiqətən Bu sink kimi bir şey kömək etmək üçün,
bu nömrələr Son 10 il ərzində tələbələr
bəzi cəlb edilmişdir ki, akademik dürüstlük belə məsələləri,
bəzi 32 tələbələri ilə payız 2015-dən olan
alırıq ki, demək deyil məsələ çox ciddi.
Və nəticədə, bu nömrələri bəstələmək, ən son, 3%, 4% və ya
sinif.
>> tələbə super əksəriyyəti üçün So Bu xətləri aydın görünür.
Amma bu saxlamaq yoxdur xüsusilə gec, ağla
gecə ilə mübarizə zaman Bir problem set bəzi həll
mexanizmlər var ki, özünüzü daha yaxşı almaq üçün
Siz daha dəstəkləyə bilər belə ki, saat, düşünürəm.
biz qəbul etdiyiniz zaman bilirik tələbə təqdim, biz keçmək
Bu il hər təqdim müqayisə hər təqdim ötən ilin,
2007-ci ildən hər təqdim qarşı və eləcə də baxaraq, çünki
indeksi, online ambarları Forum, iş sites.
Və biz bu qeyd, həqiqətən naminə, bütün
tam açıqlanması, əgər başqası, online tapa bilərsiniz
əlbəttə, belə ki, biz əlbəttə bilərsiniz.
Lakin, həqiqətən, ruh Əlbəttə sonunda aşağı bir
proqramı bu bənddə.
Bu, həqiqətən, yalnız ağlabatan olun.
>> Biz əgər ki hazırlanması yalnız bir az daha dil ilə,
həyata ki, bütün mahiyyəti Bu kurs təqdim iş
Öz olmalıdır.
Amma ərzində əlbəttə var imkanları, və təşviqi,
dönüş və pedaqoji dəyər özümü others--, TFS, CAS,
sinif Tas, və s dəstək, tək dostlar
və roommates tədqiq edən əvvəl CS və proqramlaşdırma.
Və belə ki, bir ehtiyat var.
Və thumb ümumi qayda kömək şeylərdir xahiş zaman,
Əgər başqaları üçün kod göstərə bilər, lakin onların keçirmək bilər.
Belə ki, ofis saat etdiyiniz hətta əgər, və ya D zalında, və ya başqa yerdə olan
bəzi parça set iş, bir dost, yanaşı iş olan
at, tamamilə gözəl gün iş sonunda
nəticədə hər məxsusdur Siz müvafiq olaraq, və
bir səy ola son layihə olduğu üçün istisna olmaqla,
Bu icazə və təşviq edir.
>> əgər ki, həyata bir şey ilə mübarizə
və sizin dost yalnız baş verir onda bu daha yaxşı olmaq üçün,
və ya daha ki, problem daha yaxşı, və ya uzaq irəlidə sizin bir az,
onu açmaq üçün tamamilə ağlabatan deyil və sizin dost üçün, hey, demək
Burada mənim kodu baxaraq ağla yoxdur, mənim məsələ nə spot köməkçi?
Və ümid edirəm ki, in pedaqoji dəyər maraq
ki, dost yalnız deyil , Oh, bunu, demək, əksinə
nə xəttində itkin 6, və ya kimi bir şey?
Amma həlli deyil yanında dost
oh, yaxşı, burada mənə çəkmək edək demək bu qədər, və mənim həll göstərir.
Belə ki, xəttidir.
Siz kodu göstərmək başqaları, ancaq bilməz
Digər mövzu onların keçirmək Kursun proqramı məhdudiyyətlər.
>> Belə ki, nəzərə bu saxlamaq yoxdur təəssüf bənddə deyilən
həmçinin kurs proqramı, ki, bəzi aktı törətmək əgər
ağlabatan deyil, onu gətirmək Kursun rəhbərlərinin nəzərinə
72 saat ərzində, əlbəttə yerli sanksiyalar tətbiq edə bilər ki,
qeyri-qənaətbəxş daxil ola bilər və ya təqdim iş üçün uğursuz grade.
Amma əlbəttə müraciət edəcək daha intizam üçün fərqi,
təkrar aktlarının hallar istisna olmaqla.
Başqa sözlə, əgər bəzi etmək axmaq, xüsusilə gecə, qərar
ki, növbəti səhər və ya iki gün sonra siz ayılmaq və həyata,
Mən nə düşünür?
Siz çıxış var CS50 nə ki, problem təyinat üçün
və ki, bu qədər malik biz ortasında görüşmək və məşğul olacaq
həm də bu məsələ ilə təhsil və sizin üçün qiymətli,
lakin bir şəkildə hələ cəza.
İndi, bu kənar çıxarmaq.
>> [Video playback]
>> [MUSIC PLAYING]
>> [END playback]
DAVID J. MALAN: Bütün sağ, biz geri.
İndi biz bir baxmaq bizim real dünya domenlərin ilk
CS50, Kriptoqrafiya incəsənət, göndərilməsi və qəbul incəsənət
gizli mesajlar, şifrelenmiş messages Siz,
siz ki, əgər yalnız deşifr edilə bilər göndərən var ki, bəzi əsas tərkib hissəsi
həmçinin.
biz almaq lazımdır Belə ki, bu motivasiya a, burada bu şey baxmaq
olan bir nümunəsidir gizli decoder ring ki,
anlamaq üçün istifadə edilə bilər gizli mesaj əslində nə.
Əslində, geri Bu sinif məktəb gün
Əgər gizli mesaj göndərdi əgər bir dost və ya sinif bir sökməyin,
Siz fikir ola bilər Siz ağıllı olan edildi
kağız dəyişən sizin parça ilə, kimi A B və B C və C D,
və sairə.
Amma həqiqətən Şifreleme edildi informasiya, hətta
bir az mənasız idi, yox idi ağır müəllim həyata keçirmək üçün,
yaxşı, yalnız dəyişdirmək əgər A və C B B,
Siz, həqiqətən, anlamaq mesaj nə idi,
ancaq məlumat ciphering idi.
>> Siz yalnız bunu sadəcə, çox Ralphie kimi burada
oynayan məşhur film olduqca çox ad nauseum hər qış.
[Video playback]
ki, bütün məlum olun Ralph Parker bununla deyil
Little üzvü təyin Yetim Annie Secret Circle
bütün fərqlənmə hüququna malikdir və faydaları ona baş.
>> Imzalanmışdır, Little Yetim Annie, əks-imzalanmış mürəkkəblə, Pierre Andre.
Onur və faydaları, Artıq doqquz yaşında.
>> [Qışqırır]
on-gəlir.
Bunun ilə əldə edək.
Mən bütün caz ehtiyac yoxdur kaçakçılarına və quldurları haqqında.
>> Üçün sabah gecə dinlə yekun macəra
qara pirat gəmi.
İndi bunun üçün vaxt Annie gizli mesaj
Secret Circle siz üzvləri üçün.
, Uşaq yalnız üzvləri saxla Annie Secret Circle
Annie gizli mesaj deşifre bilər.
>> Unutmayın, Annie siz asılı olaraq.
B2 üçün sancaqlar seçin.
Burada mesaj.
12, 11--
>> -Mən, Mənim ilk gizli görüş edirəm.
>> -14, 11, 18, 16.
>> -Pierre Böyük səs gecə idi.
Hesab edirəm ki, axşam deyə bilər Mesaj həqiqətən əhəmiyyətli idi.
>> -3, 25, bir mesaj var Annie özü edir.
hər kəs demək deyil, unutmayın.
>> -90 Saniyə sonra, mən yalnız deyiləm evdə otaq olduğu doqquz bir oğlan
gizlilik və deşifre oturmaq bilər.
Aha, B!
Mən növbəti, E. getdi
>> ilk söz ola bilərsiniz.
S, indi daha asan gəlirdi, U, 25--
>> -Oh, Mən getmək gerek, Ralphie gəlib!
>> sağ aşağı ola bəsimdi, Ma!
Gee Whiz!
>> -T, O, nə əmin olun to-- əmin ola bilərmi?
Little Yetim nə idi Annie demək çalışır?
nə əmin olun?
>> -Ralphie, Andy üçün var , Siz çıxmaq edin getmək?
>> -Bütün Sağ, Ma!
Mən doğru olacaq!
>> -Mən Yaxın artıq əldə edilib.
gərginlik dəhşətli idi.
Bu nə idi?
Planetin taleyi balansında asmaq bilər.
>> -Ralphie!
Andy Gotta Go!
>> yüksək səslə ağlayan üçün, doğru olmaq bəsimdi!
>> orada -Demək olar ki, mənim barmaqlarını, fikrimi uçdu bir polad tələ idi, hər pore vibrasiyaya.
Bu Bəli, bəli, bəli, demək olar ki, aydın idi.
>> Sizin Ovaltine içmək üçün əmin olun.
Ovaltine?
A crummy kommersiya?
şərəfsiz.
[END playback]
DAVID J. MALAN: OK, belə ki, ki, çox uzun bir yol idi
Kriptoqrafiya tətbiqi, həmçinin Ovaltine.
Əslində, bu köhnə reklam olan Burada niyə Ovaltine belə yaxşı?
Bu yetişmiş bir qatılaşdırılmış hasilatı deyil arpa səməni, təmiz kremli inək südü,
və xüsusi birlikdə kakao hazırlanmış təbii phosphatides və vitaminlər.
O, daha sonra ilə möhkəmləndirilib olunur əlavə vitamin B və D, yum.
Və hələ, yəqin, onu əldə edə bilərsiniz Amazon, biz burada etdi.
>> Amma motivasiya burada idi Xüsusilə, Kriptoqrafiya təqdim
məlum Kriptoqrafiya növü gizli əsas Kriptoqrafiya kimi.
Və adı, bütün təklif kimi gizli açar kripto sisteminin təhlükəsizlik,
Bir metodologiya siz əgər yalnız Scrambling üçün
iki adam arasında informasiya ki, yalnız göndərən və yalnız alıcı
gizli əsas olan bəzi dəyəri bilirik, bəzi gizli söz, bəzi gizli nömrə ki,
həm şifrelemek imkan verir və məlumat decrypt.
Və Kriptoqrafiya, həqiqətən, yalnız bu həftə 0 edir.
>> Bu giriş var bir problem var İngilis faktiki mesajı kimi
və ya hər hansı dil ki, sinif kimsə göndərmək istədiyiniz
və ya İnternet vasitəsilə.
gedir, bəzi çıxış var Pişmiş mesaj olmaq ki,
Alıcı almaq istəyirəm.
Və hətta əgər kimsə orta, çox qəbul
Siz onları istəmirəm mütləq decrypt edə bilər,
Bu daxili çünki black box, və ya alqoritm,
bir mexanizm addım bəzi addımdır ki daxil görülməsi üçün təlimat,
və onu konvertasiya inşallah təhlükəsiz şəkildə çıxış.
>> Və əslində, orada bəzi bu dünyada söz kimi edir.
Plain text sözü var kompüter alim olardı
giriş təsvir etmək üçün istifadə İngilis kimi mesaj,
və ya hər hansı faktiki dili bəzi digər insan göndərmək istəyirəm.
Və sonra ciphertext scramble deyil enciphered və ya şifreli,
onun versiyası.
>> Amma burada başqa bir tərkib hissəsi var.
başqa bir giriş üçün var gizli əsas Kriptoqrafiya.
Və əsas özü, ki, ümumiyyətlə, var
biz görəcəksiniz kimi, bir sıra və ya məktub, ya söz, nə
əslində alqoritm gözləyir.
>> Və necə məlumat decrypt edirsiniz?
Necə unscramble edirsiniz?
Yaxşı, yalnız geri nəticələr və giriş.
>> Başqa sözlə, kimsə dəfə şifrelenmiş mesaj alır
o sadəcə var eyni əsas bilmək.
Onlar ciphertext aldıq.
Və bu iki sayede ilə kripto sistemi giriş,
alqoritm, bu qara qutu, Orijinal düz metin gəlməlidir.
Və belə ki, çox yüksək səviyyədə var Kriptoqrafiya həqiqətən nə görünüşü
bütün haqqında.
>> Belə ki, orada almaq imkan verir.
Indi altında baxaq bir şey başlıq
üçün verilən biz qəbul etdik Keçdiyimiz həftə və bu sessiya
simli burada.
Günün sonunda string simvol yalnız bir ardıcıllıqla deyil.
>> Bu salam dünya, və ya ola bilər salam Zamyla, və ya hər hansı.
Amma nə deməkdir simvol bir ardıcıllıqla ola bilərmi?
Əslində, CS50 kitabxana verir Bizə string adlı data növü.
>> Amma heç həqiqətən var C. bir string kimi şey
Bu, həqiqətən yalnız bir ardıcıllıqla deyil xarakter, xarakter, xarakter,
xarakteri, geri, üçün, geri geri daxilində geri, geri
kompüter yaddaş, və ya RAM.
Biz ki, daxil dərin baxmaq lazımdır gələcək biz yaddaş özü baxdığınızda
istifadə və və cəlb olunur təhlükələr.
>> Amma string Zamyla hesab edək.
Belə ki, yalnız adı Burada insan, Zamyla,
ki, bir ardıcıllıqla deyil simvol, Z-A-M-Y-L-A.
İndi güman edək ki, ZAMYLA adı kompüter daxilində saxlanılır olunur
proqram.
>> Bəli, biz olmalıdır ki, səbəb dayanır bu simvol baxmaq edə
fərdi.
Mən yalnız bir az çəkmək üçün gedirəm Burada Zamyla adı ətrafında qutusu.
Və C olduğu zaman ki, bəlkə Zamyla-- və kimi, simli var
ki, simli geri gəldi get string kimi bir funksiyası,
Siz, həqiqətən, manipulyasiya edə bilər xarakteri ilə xarakter.
>> İndi bu ilgili deyil söhbət əl, çünki
Kriptoqrafiya dəyişmək istəyirsinizsə D A B və B C və C,
və s, siz lazımdır fərdi simvol baxmaq
simli.
Siz dəyişdirmək lazımdır başqa bir şey, A Z
başqa bir şey, M başqa, və s bir şey.
Və belə ki, biz bir yol lazımdır, program, belə ki,
C danışmaq dəyişdirmək etmək və fərdi məktublar baxmaq.
aşağıdakı Və biz bunu edə bilərsiniz.
>> Mənə geri CS50 IDE baş gedək.
Və mənə irəli gedək və yeni bir fayl yaratmaq
Mən bu dəfə string0 zəng lazımdır ki, ilk misal kimi, c nöqtə.
Mən irəli getmək üçün gedirəm aşağıdakı kimi və qızışdırmaq.
>> Belə ki cs50.h daxildir, və sonra standart io.h daxildir,
Mən demək olar ki, həmişə gedirəm ən azı, mənim proqramları istifadə etmək
ilkin.
əsas etibarsız int və sonra burada Ben strings edəcəyimiz string almaq olur.
Və sonra mən gedirəm irəli getmək və bunu.
Mən irəli getmək istəyirəm və bir ağlı başında olma çek kimi,
demək, salam, faiz s, yarı kolon, simli 0 edir.
oh Uh, mən burada nə idi?
Oh, mən onu yerləşdirin etməyib.
Belə dərs olduğu öyrənildi qəsdən deyildi.
>> Belə ki, səhv, daha faiz data dəlilləri çox dönüşüm.
Və bu, harada line 7-- OK, belə ki, mən,
dırnağı bağlamaq quote, ki Mənim string printf.
Mən faiz işarəsi var.
Amma ikinci dəlil itkin alıram.
>> Mən vergül s, itkin alıram olan Mən əvvəlki nümunələri var idi.
Belə ki, yaxşı bir fürsət düzeltmek üçün bir daha səhv, təsadüfən.
İndi mənə run edək ZAMYLA in string0, növü.
Zamyla salam, OK.
>> Beləliklə, biz proqram bu cür etdik İndi bir neçə müxtəlif dəfə.
Amma bir şey edək bu dəfə fərqli bir az.
Bunun əvəzinə, yalnız Zamyla nin çap printf ilə bütün adı,
xarakteri ilə bu xarakter edək.
>> Mən loop üçün istifadə gedirəm.
Mən özüm verəcəyəm hesablanması dəyişən, i çağırıb.
Mən ki, iterating saxlamaq üçün gedirəm i s uzunluğu azdır kimi uzun.
>> Bu çıxır, biz etmədik bu son vaxt,
ki, c ilə gəlir funksiyası Stirling çağırıb.
Geri günü, və ümumiyyətlə hələ funksiyaları həyata keçirərkən,
insanlar tez-tez çox seçəcək səs qısa adları belə
Siz baxmayaraq, istədiyiniz nə kimi bir neçə sait və ya məktublar bir itkin.
Belə ki, Stirling edir bir funksiyası adı ki,
arasında mübahisə edir bir string olmalıdır parantez.
Və yalnız bir tam qaytarır, ki, simli uzunluğu.
>> xətti 7-də loop üçün bu So gedir i 0 bərabərdir hesablanması başlamaq üçün.
Bu arttırmayı olacaq hər iteration i
1, biz bir neçə dəfə bunu etdik kimi.
Amma bu, yalnız nə olacaq nöqtəyə qədər bu qədər
i uzunluğu zaman simli özü.
>> Belə ki, bu, son nəticədə, bir yoldur simvol üzərində iterating
simli kimi ediləndir.
Mən deyil çap gedirəm bütün simli, lakin faiz c,
bir xarakter yeni xətt izlədi.
Və sonra mən gedirəm irəli getmək və mən lazım
Mən çap etmək istəyirəm demək s İTH xarakter.
>> i göstərir dəyişən Belə ki simli, indeksi
siz onu, mən etmək lazımdır Mənə s İTH xarakter vermək, deyirlər.
Və c bunu bir yolu var kvadrat mötərizədə ilə bu.
Siz sadəcə adını demək bu halda s simli.
Sonra siz kvadrat mötərizə istifadə adətən yalnız qayıt və ya daxil yuxarıda
klaviatura düyməsini basın.
Və sonra index qoymaq Siz çap etmək istəyirəm xarakter.
Belə ki, index bir olacaq saysız 0 və ya 1 və ya 2 və ya 3, və ya dot,
dot, bəzi digər sayı nöqtə.
>> Və biz olacaq ki, təmin , Sağ sayı ola Çünki
0 hesablanması başlamaq.
Və Mənim cari olaraq, ilk xarakter simli Konvensiyanın 0 edir.
Və ikinci xarakter bracket 1.
Və üçüncü xarakter bracket 2.
Və siz də getmək istəmirəm uzaq, lakin biz deyilik, çünki
yalnız qədər arttırmayı olacaq simli uzunluğu bərabərdir.
Və hansı nöqtədə, loop üçün bu dayanacaq.
>> Mənə irəli getmək və bu xilas edək proqram, və run simli 0 olun.
Amma qarışdırmışlar.
Dolayısı kitabxana funksiyası elan növü kimi Stirling və indi such--,
Bu tanış səslənir.
Amma bu printf deyil.
Və bu string almaq deyil.
>> Mən qıymaq etməyib Eyni şəkildə bu dəfə.
Amma aşağı burada bir az aşağı qeyd daha header string.h daxil,
aydın təmin Stirling üçün bəyannamə.
Yəni əslində orada bir ipucu var.
>> Həqiqətən çıxır başqa header file var
biz istifadə etdik ki, sinif hələ, amma
Mövcud arasında Sizə, string.h çağırıb.
Və fayl, string.h Stirling elan edir.
Mənə irəli getmək və simli etmək, bu saxlamaq
0- gözəl, heç bir səhv messages bu dəfə.
>> ./string0 Zamyla və Mən Enter haqqında Ben
olan nöqtə GetString gedir string qayıtmaq, s qoyun.
loop üçün təkrarlamaq gedir Sonra bir-bir S simvol üzərində,
çünki onlara satır başına bir çap Mən sonunda backslash n idi.
Belə ki, backslash buraxmaq bilər n, sonra yalnız bütün ZAMYLA çap
eyni xətt, səmərəli reimplementing
bütün faydalı deyil printf.
Amma bu halda, mən bunu etdik.
Mən, həqiqətən, bir çap etdik Bir anda xarakter satıra bir
belə ki, biz, həqiqətən, təsir edir.
>> Amma burada bir şey qeyd etmək lazımdır.
Və biz geri gəlmək lazımdır gələcək həftə bu.
Bu çıxır ki, Kodu potensial arabası var.
>> Bu get simli çıxır və həyat bəzi digər funksiyaları
mütləq həmişə deyil Siz bekliyorsanız nə qayıtmaq.
Son sinif bilirik almaq ki, bu zaman
string bir simli qayıtmaq üçün nəzərdə tutulur.
Amma nə cür həyata istifadəçi əgər Uzun söz və ya paraqraf, və ya inşa
Yalnız kifayət qədər var ki, kompüter yaddaş onu uyğun.
>> Like, nə bir şey gedir əgər başlıq altında yanlış?
Bu tez-tez baş bilər ancaq bu dəfə ola bilər
Bir müddət, çox nadir hallarda.
Və belə ki, get simli çıxır və bu kimi funksiyaları mütləq bunu
həmişə strings qayıtmaq.
Onlar bir neçə səhv dəyər qayıtmaq bilər, Bəzi sentinel dəyər ki, danışmaq
ki, göstərir bir şey yanlış keçmişdir.
Və yalnız bu bilirik ki İndi sinif öyrəndim edərək,
və ya daha çox sənədləri oxumaq etmişlər.
Bu get simli çıxır null adlı bir dəyər ola bilər.
Null ki, biz lazımdır xüsusi dəyəri gələcək həftə geri gəlir.
Amma indi üçün, yalnız mən istəyirəm ki, bilirik irəliləyir həqiqətən düzgün olmaq
get string istifadə edərək, mən yalnız zəng deyil,
və kor-koranə onun qaytarılması dəyəri istifadə, bir string ki, inanan.
>> Mən ilk demək lazımdır hey, yalnız bir dəqiqə gözləyin
s bərabər deyil, əgər davam null, burada null, yenə
yalnız bəzi xüsusi dəyəri.
Və yalnız xüsusi dəyəri var siz get simli üçün narahat lazımdır.
string ya gedir alın bir simli və ya null qayıtmaq üçün.
>> Bu nida point işarəsi bərabərdir bəlkə math sinif bilirik bilər
Siz bərabər işarəsi cəlb bilər ki, onun vasitəsilə bir xətt bərabər göstərir.
Bu, ümumiyyətlə, bir xarakter deyil sizin klaviatura edəbilərsiniz.
Və ən proqramlaşdırma dilləri, bərabər deyil demək istəyirəm ki,
Bir nida point istifadə başqa Bang kimi tanınır.
Belə ki, bang bərabərdir demək olan Biz məntiqi bərabərdir deməkdir.
Bu daha yoxdur, yalnız kimi daha, və ya bərabər və ya az
və ya bərabər klavyenizdeki əsas ki, bir simvol bütün yoxdur.
Belə ki, niyə son nümunələri, Siz açıq bracket idi, və sonra
bərabər işarəsi, nə etmək , Daha çox və ya daha az, deyirlər.
>> Belə ki, paket, burada nə var?
Bu artıq bir yoldur sadəcə Bu sintaksis tətbiqi, bu xüsusiyyət,
fərdi üzərində iterating simli simvol.
Və yalnız o kvadrat kimi Mötərizədə, onlara almaq üçün imkan verir
həmin kvadrat mötərizə hesab növ bu əsas işarə
dizayn, vasitəsi hər simli daxilində xarakter
cür altında haradasa kutulu edir kompüter yaddaşında başlıq.
>> Amma bu bir variant edək.
Bu çıxır ki, proqram doğru deyil.
CS50 baltalar başına So qiymətləndirilməsi üçün indeksi, indi doğru deyil.
Xüsusilə indi yoxlanılması alıram null, bu proqram qəza heç vaxt.
Mən yalnız təcrübə bilirik.
Amma başqa heç bir şey yoxdur Biz, həqiqətən, burada yanlış getmək bilər.
Amma bu çox yaxşı dizayn deyil çünki əsasları geri gedək.
>> Birincisi, principles-- loop üçün nə edir?
loop üçün üç şey yoxdur.
Bəzi initializes dəyəri siz onu soruşsan.
Bu vəziyyəti yoxlayır.
Və sonra sonra hər iteration, hər dövrü sonra,
bəzi əlavələr Burada dəyəri, və ya dəyərlər.
>> Belə ki, nə deməkdir?
Biz i 0 başlamaq.
Biz yoxlamaq və əmin i az Z-A-M-Y-L-A S uzunluğu,
belə az 6 olan.
Və həqiqətən, 0-dən az 6 kimi.
>> Biz Zamyla adı olan Z çap.
Sonra 0 1 i arttırmayı.
Biz sonra 1 az yoxlamaq s uzunluğu daha?
s uzunluğu 6.
Bəli, elədir.
>> Beləliklə, biz Zamyla adı, ZA bir çap.
Biz 2, 1, 0-dan i arttırmayı.
Biz sonra 2 az yoxlamaq ZAMYLA adı uzunluğu.
6 SO 2-dən az 6.
Bəli, bu artıq M çap imkan ZAMYLA adı üçüncü xarakter.
>> əsas burada hər ki, Hekayə iteration, mən yoxlanılması alıram,
i Zamyla uzunluğu azdır?
Amma tutmaq ki, Stirling əmlak deyil.
proqramlaşdırılmış olan sizin o Java və ya digər dillərdə əvvəl
bir simli uzunluğu bilirik bilər əmlak, yalnız bəzi yalnız dəyəri oxuyun.
>> Bu halda C, bu, əgər sözün bir funksiyası
sayını hesablamaq hər dəfə Zamyla simvol
biz funksiyası zəng.
Hər dəfə istifadə üçün kompüter xahiş Stirling, bu Zamyla nəzər alaraq
deyərək Z-A-M-Y-L-A, 6.
Və 6 qaytarır.
Siz zəng növbəti dəfə loop üçün daxili ki,
Bu Zamyla baxmaq olacaq yenə Z-A-M-Y-L-A, 6 deyirlər.
Və 6 geri olacaq.
Belə ki, bu dizayn haqqında axmaq var?
>> Neden code deyil 5 5 həyata edir İndi dizayn, belə danışmaq?
Bəli, mən xahiş edirəm bir lazımsız sual.
Mən lazım çox daha çox iş edirəm.
>> Belə ki, baxmayaraq ki, Cavab Mən, doğru
kompüter xahiş, nə yenə Zamyla uzunluğu,
və yenidən və yenidən və yenidən?
Və cavab heç dəyişdirmək niyyətindədir.
O, həmişə 6 olacaq.
>> bu daha Belə ki, bir yaxşı həll Bu növbəti versiyası olacaq.
Mənə davam edək və qoyun string1.c adlı ayrı-ayrı fayl,
yalnız ayrı-ayrı saxlamaq.
Və bir çıxır loop, siz həqiqətən bilərsiniz
Eyni anda birdən çox dəyişənlərin elan.
>> Mən saxlamaq və 0 müəyyən etmək üçün gedirəm.
Amma mən də gedirəm Bir vergül əlavə və demək,
Mənə onun n adlı dəyişən vermək dəyəri s simli uzunluğu bərabərdir.
İndi, mənim vəziyyəti edin belə uzun i n az deyil.
>> Belə ki, bu şəkildə, məntiqi günün sonunda eyni.
Amma xatırlayaraq edirəm Bu halda dəyər 6.
ZAMYLA adı uzunluğu nədir?
Mən n onu qoyulması alıram.
>> Və mən hələ yoxlanılması alıram vəziyyəti hər zaman.
0 6 azdır?
1 6 azdır?
s 2 6 az və deyilmi?
>> Amma kompüter xahiş deyiləm yenidən və yenidən, nə
ZAMYLA adı uzunluğu?
ZAMYLA adı uzunluğu nədir?
Bu Zamyla adı uzunluğu nədir?
Mən sözün xatırlayaraq edirəm ki, birinci və yalnız bu ikinci dəyişən n cavab.
Belə ki, bu, indi yalnız olacaq doğru, həm də yaxşı dizayn.
>> İndi nə stil haqqında?
Mən dəyişənlərin adına etdik olduqca yaxşı, mən deyərdim.
Onlar indi super qısa istəyirik.
Və tamamilə gözəl var.
>> Siz yalnız bir varsa bir proqramda string,
Siz həmçinin simli üçün s zəng edə bilər.
Yalnız bir dəyişən varsa bir proqram hesablanması üçün,
Siz həmçinin mən zəng edə bilər.
Bir uzunluğu varsa, n eləcə də super ümumi.
Amma mən kodu hər hansı bir şərh yoxdur.
>> Mən reader-- məlumat etdik ki, mənim TF və ya TA olsun,
və ya sadəcə ehtimal olunur nə colleague-- Bu proqram üzrə davam.
Və yaxşı stil almaq üçün, Mən istəyirəm nə
şeylərdir bir şeydir kimi giriş üçün istifadəçi xahiş edirik.
Və mən yenidən yazmaq bilər yollar bu hər hansı bir sayı.
>> Əmin olun almaq s-- əmin string bir simli döndü.
Və sonra buradan və bu bəlkə ən əhəmiyyətli comment-- təkrarlamaq
bir anda s bir simvol üzərində.
Mən hər hansı bir istifadə edə bilər İngilis dili seçimi
Burada hər təsvir etmək kodu bu chunks.
>> Mən qoymaq deyil ki, görürsünüz kod hər xətti şərh,
həqiqətən, yalnız maraqlı olanlar, olanları ki,
bir mənası var ki, mən bilər kimsə super aydın etmək istəyirəm
mənim kodu oxu.
Və niyə almaq zəng string giriş üçün istifadəçi xahiş?
Hətta ki, bir mütləq deyil bütün təsviri.
Amma bir hekayə demək kömək edir, çünki hekayə ikinci xətt, əmin olun ki,
almaq string bir simli döndü.
>> Və hekayə üçüncü xətt, s bir simvol üzərində təkrarlamaq
anında.
İndi yalnız yaxşı tədbir üçün, Mən irəli getmək və əlavə etmək üçün gedirəm
daha bir comment ki, yalnız s print i-ci xarakter deyir.
İndi nə görmüşük Günün sonunda?
>> Mən bəzi English əlavə şərh şəklində sözləri.
çizgi çizgi simvolu hey, o deməkdir ki, Bu, insan üçün kompüter,
sizin üçün, kompüter.
Belə ki, onlar məntiqi rədd edirik.
Onlar yalnız istəyirik.
>> Və həqiqətən, CS50 IDE kimi göstərir boz, faydalı, lakin əsas deyil kimi
proqram.
indi nə edə nə görürsünüz.
C bilirik olsun proqramlaşdırma və ya, siz
yalnız bu geri dayana bilər proqram, və şərh üzsüz.
əmin olun giriş üçün istifadəçi soruşun string bir simli geri almaq,
s simvol üzərində təkrarlamaq bir-bir, xarakter çap
i-ci xarakter s-- siz deyil hətta kodu baxmaq lazımdır
Bu proqram nə anlamaq üçün.
Və daha yaxşı hələ, siz özünüz baxsaq bir həftə və ya iki bu proqramda,
və ya bir ay və ya bir il, çox yoxdur
kod nəzər, yadda çalışır,
nə mən bu kodu ilə çalışır?
>> Siz özünüz bildirib etdik.
Siz özünüz üçün təsvir etdik, bir həmkarım və ya TA, və ya TF ya.
Və bu artıq olacaq doğru və dizayn yaxşı,
və nəticədə stil yaxşı həmçinin.
Belə ki, nəzərə ki, saxlamaq yoxdur.
>> Belə ki, digər bir var şey burada gedirəm
ki, indi nə dəqiq deyil aşkara çıxara bilərsiniz başlıq altında olur.
Belə ki, bu xüsusiyyət var C və digər dillərdə,
adlı typecasting ki, ya dolayısı
və ya açıq-aydın siz çevirmək imkan verir Bir data növü.
Biz məşğul olduğunuz strings ilə qədər bu gün.
>> Və strings simvol.
Amma həftə geri 0, simvol nə var?
Characters yalnız bir abstraksiya var nömrələri decimal nömrələri üst,
və decimal nömrələri həqiqətən yalnız bir var ikili ədəd üst abstraksiya,
biz bunu müəyyən edilmiş.
>> Belə ki, simvol nömrələri var.
Və nömrələri simvol, yalnız məzmunundan asılı olaraq.
Və bu daxili çıxır kompüter proqramı,
Siz baxmaq istəyirəm necə daxil edə bilərsiniz proqram daxilində bit?
>> keçirdik həftə 0 Recall yalnız bu kodu Ascii,
nömrələri mapping məktublar.
Və biz kapital A 65 olduğunu ifadə edərək,.
Capital B s 66 və.
>> Və bildiriş biz mahiyyətcə on chars var Burada top satır, C onlara zəng kimi,
simvol və sonra ikinci sırada ints.
Və bu çevirə bilərsiniz çıxır sorunsuz adətən iki arasında.
Və biz bunu istəyirsinizsə, Bu qəsdən, biz
həll etmək istəyirəm bilər bu kimi bir şey.
>> Biz çevirmək edə bilərsiniz yuxarı halda aşağı
halda, və ya yuxarı halda aşağı halda.
Və var çıxır Burada həqiqətən bir model
biz yalnız bir anda əhatə edə bilər.
Amma bir ilk baxaq açıq bunu nümunə.
>> Mən CS50 IDE geri getmək üçün gedirəm.
Mən yaratmaq gedirəm Fayl Ascii 0.c. adlı
Mən irəli getmək və əlavə etmək üçün gedirəm mənim üst standart io.h, int əsas etibarsız
mənim funksiyası üst.
Və sonra mən yalnız gedirəm i bərabərdir olan loop üçün aşağıdakıları edin,
nin, 65 deyək.
>> Və sonra mən daha az olacaq əlifbası 65, plus 26 məktublar.
Mən kompüter imkan olacaq orada mənim üçün riyaziyyat yoxdur.
Və sonra bu loop daxilində, nə mən çap gedirəm?
>> % C backslash% təşkil edir.
İndi iki dəyərlər plug istəyirəm.
Mən müvəqqəti sual gətirdik sual dəvət var olur.
>> Mən irəli 65-dən təkrarlamaq istəyirəm əlifbası 26 məktublar üçün,
hər iteration çap ki, xarakter ayrılmaz ekvivalent.
Başqa sözlə, Mən istəyirəm 26 ədəd çap təkrarlamaq
Ascii karakter nə məktub, müvafiq nömrə is-- nə
həqiqətən, yalnız yeniden ki slide chart.
Belə ki, bu sual işarələri nə olmalıdır?
>> Bəli, bu ikinci çıxır ki, bir yalnız dəyişən i olmalıdır.
Mən bir sıra kimi görmək istəyirik.
Və orta arqument burada, mən kompüter deyə bilərsiniz
ki, tam müalicə i bir xarakter kimi, belə ki,
faiz C. üçün burada əvəz etmək
>> Başqa sözlə, əgər mən insan proqramçı, bilirik
bu yalnız nömrələri Günün sonunda.
Mən 65 olmalıdır bilirik ki, bir xarakter xəritəsi.
Bu açıq tökmə ilə, bir mötərizə ilə,
istədiyiniz data növü adı çevirmək, və qapalı mötərizə,
Siz deyə bilərsiniz kompüter, hey, kompüter,
bir char bu tam çevirmək.
>> Mən bu çalıştırdığınızda proqram tərtib sonra,
Mən ASCII 0 etmək get-- nə edək.
Bu Darn, mən yanlış burada nə idi?
Bəyan identifikator istifadə bütün qəsdən, doğru deyil,
Amma görək, əgər biz bilməz bu yolu səbəbi.
>> Belə ki line mən əldə etməyib five-- çox uzaq up screwing əvvəl.
Hər şey yaxşıdır.
Belə ki, line 5 bərabərdir 65-- görürəm.
Belə ki, bəzi fərqli olaraq, C unutmayın ki Əvvəl proqramlaşdırma varsa languages
təcrübə, var kompüter demək,
Not fərqli olaraq, nə dəyişən növü deyil.
>> Mən burada əsas söz unuttum.
line beş, mən istifadə açılmış etdik.
Amma C bildirib yoxdur nə data type edir.
Mən burada getmək üçün gedirəm və ah, bu tam etmək demək.
>> İndi irəli getmək və compile gedirəm.
Ki, müəyyən.
Daxil ./ascii0, bu cür sərin var.
Yalnız super sürətli , Kompüter bu sualı
daha slayd onu axtarır daha Bu, 65, satır başına bir çap
B I-ci ildən aldadan 66, bütün yol , Məktublar z bu 26 dəfə təkrar etdi
olan 90 edir.
Və əslində, bir az daha ağıllı olardı
Mənim üçün ola etibar kompüter 26 əlavə edin.
Mən həyata bilər var 90, həmçinin belə uzun
Mən iki dəfə eyni səhvi yoxdur.
Mən vasitəsilə getmək istəyirəm z deyil, yalnız y vasitəsilə.
>> Belə ki, bir açıq cast var.
Bu çıxır ki, belə lazım deyil.
Mənə irəli getmək və bu təkrar edək compiler və təkrar Ascii 0.
Bu C olduqca ağıllı çıxır ki.
>> Və printf, xüsusilə, olduqca ağıllı deyil.
Yalnız iki dəfə bir i keçmək varsa həm placeholders üçün printf
, Həyata keçirəcək oh, mən tanıyıram Mənə bir bir sıra integer-- verdi,
65 və ya 90, ya hər hansı kimi.
Amma məni istəyirəm ki, görəcəksiniz bir xarakter kimi ki sayı format.
Və printf dolayısı tökmə bilər the həmçinin sizin üçün bir char int.
Belə ki, bütün bir problem deyil.
>> Amma bu ekvivalentliyinin qeyd biz, həqiqətən, eləcə də bunu edə bilərsiniz.
Mənə davam və bir edək şeylərdir Ascii 1.c. digər version
Və əvəzinə üzərində iterating integers, həqiqətən, sizin fikrinizi zərbə ola bilər
simvol üzərində iterating edir.
bir char c kapital olur, mən irəli getmək və bunu istəyirəm,
belə uzun C az və ya bərabər kimi kapital Z. Və hər iteration
Mən, C arttırmayı istəyirəm İndi burada mənim printf line
demək, faiz C faiz i yenə vergül C.
>> Və indi mən digər istiqamətdə getmək bilər, aydın xarakter çəkiliş
bir tam.
Belə ki, daha, niyə bu nə olardı?
Bu düzmək üçün bir az qəribə simvol baxımından saymaq.
>> Amma nə anlamaq əgər başlıq altında gedir,
heç bir sehrli həqiqətən var.
Siz yalnız hey, kompüter verir, deyərək edirik Mənə növü char C adlı dəyişən.
kapital A. onu başlamaq və tək quotes məsələni qeyd.
>> C simvol üçün geri Keçən həftə, siz tək quotes istifadə edin.
strings üçün sözlər üçün, ifadələr, siz ikiqat quotes istifadə edin.
OK, kompüter, belə ki, bunu saxlamaq xarakter kimi uzun azdır
və ya z bərabər.
Mən Ascii masa bilirik ki, bütün Bu Ascii kodları bitişik var.
>> heç bir boşluqlar var.
Belə ki, yalnız A-dan Z vasitəsilə var Bir sıra hər tərəfindən ayrılır.
Və sonra mən arttırmayı bilər bir char, Mən, həqiqətən, istəyirsinizsə.
Günün sonunda, yalnız bir sıra.
Mən bu bilirik.
Mən yalnız 1 əlavə etmək üçün ehtimal edə bilərsiniz.
>> Və sonra bu dəfə mən c çap və sonra ayrılmaz ekvivalent.
Mən hətta açıq tökmə ehtiyac yoxdur.
Mən printf və imkan bilər kompüter rəqəm şeyi,
belə ki, indi əgər , Ascii1./ascii1 etmək
Mən də eyni şey almaq.
>> Useless proqram, heç bir olsa da həqiqətən proqram yazmaq gedir
anlamaq üçün, nə idi A xəritələr sayı, və ya B, və ya Z?
Siz yalnız Google gedir, və ya edirik online axtarmaq və ya onu axtarmaq
slayd, və ya belə.
Belə ki, bu, həqiqətən faydalı almaq deyil?
>> Yaxşı ki, danışan slide var qeyd
Böyük Harf arasında burada faktiki model və kiçik təsadüfi deyildi.
ki, kapital A 65 Qeyd.
Kiçik bir 97 edir.
Və nə qədər uzaq bir aşağı halda?
>> Belə ki, 65 neçə addımlar üz 97 edir?
Belə ki, 97 minus 65 32.
Belə ki, paytaxt 65 edir.
Siz ki, 32 əlavə etsəniz, Bir kiçik almaq.
Və equivalently, siz 32 çıxmaq əgər, Siz paytaxtı geri almaq A-- B eyni
az c az b, böyük C.
>> Bu boşluqlar Bütün ayrı 32 edir.
İndi bu bizə imkan görünür Microsoft Word kimi bir şey,
və ya Google Docs, harada edir hər şeyi seçin və sonra demək olar,
kiçik bütün dəyişdirmək, və ya yuxarı halda bütün dəyişdirmək,
və ya yalnız ilk sözü dəyişdirmək yuxarı halda bir cümlə.
Biz, həqiqətən, bir şey edə bilərsiniz özümüz kimi.
>> Mənə davam edək və bir fayl saxlamaq Burada 0.c. kapitallaşdırmaq adlı
Və irəli getmək və bir proqram qızışdırmaq imkan ki, tam olaraq belə ki, yoxdur.
Belə ki, CS50 kitabxana daxildir.
Və standart I / O daxildir.
>> Mən bu tezliklə bilirik.
Mən onu qoymaq gedirəm artıq, string.h,
mən etmək imkanı var Stirling kimi şeylər,
və sonra həmişə olduğu kimi, əsas boşluq int.
Və sonra mən irəli getmək üçün gedirəm və strings nə simli almaq olur,
yalnız istifadəçi bir string almaq üçün.
Və sonra mən gedirəm ağlı başında olma çek yoxdur.
string bərabər null deyil varsa, o, davam etmək üçün təhlükəsiz.
Və mən nə istəyirsiniz?
Mən 0 bərabərdir təkrarlamaq gedirəm və n s string uzunluğu qədər.
>> Mən belə uzun kimi bunu gedirəm i i plus plus n az, və.
İndiyə qədər, Mən, həqiqətən, yalnız deyiləm əvvəl fikir borc.
İndi filialı təqdim gedirəm.
>> Belə ki Scratch, geri edirəm Biz yol o çəngəllər idi
və son həftə C. Mən gedirəm Bu demək s i-ci xarakter
daha böyük və ya işi aşağı bərabər,
and-- Not sözün ki Və lakin C siz işareti demək
ampersand-- və s i-ci xarakter Daha az və ya hal z aşağı bərabərdir
maraqlı bir şey edək.
nin əslində bir çap edək heç bir newline xarakter
ki, simli xarakter, simli i-ci character.
>> Amma irəli gedək və ondan 32 çıxmaq.
Else əgər xarakter biz aradığınız ki, simli
az a arasında deyil və kiçik z, davam
və yalnız dəyişməz onu çap.
Belə ki, biz təqdim etdik bu mötərizəyə notation
Bizim strings almaq üçün simli i-ci character.
>> Mən kimi, bir şərti məntiq əlavə etdik Keçən həftə həftə biri olan Scratch
Mən yalnız mənim fundamental istifadə edirəm nə anlayışı
başlıq altında olur.
s i-ci karakter bir və ya daha çox bərabər?
Kimi, bu, 97, və ya 98 və ya 99, və s?
>> Lakin bu da daha az və ya bərabərdir kiçik z dəyəri?
Və əgər, bu xətt nə deməkdir?
14, bu növ bütün fikir bakterioloji,
məktub kapitallaşdırmaq sadəcə, ondan 32 subtracting
Bu halda, mən bilirəm, çünki başına Mənim ədəd təmsil olunur necə chart.
Belə ki, irəli getmək və bu run edək, 0.c kapitallaşdırmaq tərtib sonra,
və run 0 kapitallaşdırmaq.
>> kimi bir şey yazın edək bütün kiçik Zamyla daxil edin.
İndi biz bütün böyük olan ZAMYLA var.
bütün kiçik Rob yazın edək.
bütün kiçik Jason cəhd edək.
Və biz əldə saxlamaq məcbur kapitallaşma.
kiçik bir səhv var ki, mən cür təxmin etməyib.
Yeni tez up başa çatır edək onların adları eyni xətt üzərində,
olan bir az messy hiss edir.
>> Mən burada getmək üçün gedir və alıram həqiqətən, bu Proqramın sonunda
bir newline xarakter çap.
Bu hamısıdır.
printf ilə, siz ehtiyac yoxdur dəyişənlərin və ya format kodu keçir.
Siz sözün yalnız çap edə bilərsiniz bir newline kimi bir şey.
>> Belə ki, irəli getmək və edək , Zamyla onu təkrar, təkrar 0 kapitallaşdırmaq.
İndi bir az gözəlləşir var.
İndi, mənim tez öz yeni xətt edir.
Belə ki, bütün gözəl və yaxşı.
Belə ki, yaxşı bir misal var.
Amma belə mütləq deyil ağır Kodu 32 lazımdır.
Siz nə bilirik?
Mən heç yoxdur demək bilər fərq nə xatırlayıram.
>> Amma bilirik ki, əgər mən bir aşağı halda məktub var
Mən mahiyyətcə off çıxmaq istəyirəm nə məsafə az arasında
bir və böyük A, çünki mən güman əgər digər məktublar bütün, eyni
ki, iş aparılır almaq lazımdır.
Amma bunu daha çox, siz nə bilirik?
hələ də başqa yol yoxdur.
>> Mən əgər ki, 1.c-- kapitallaşdırmaq varsa ayrı fayla qoymaq.
aşağıdakı kimi içində, 2.ci kapitallaşdırmaq yoxdur bildirin.
Mən, həqiqətən, burada bu təmizləmək üçün gedirəm.
Və əvəzinə hətta olan bilmək və ya bu aşağı səviyyədə qayğı
həyata keçirilməsi detalları, mən əvəzinə deyiləm Yalnız bir xarakter çap olacaq,
quote dırnağı bağlamaq, faiz C, və sonra başqa bir funksiyası zəng ki,
ki, mübahisə edir mövcuddur bu kimi bir xarakter var.
>> Bu var, C çıxır başqa funksiyası zəng
Yuxarı olan, öz adı təklif bir xarakter alır
və onun yuxarı halda üçün edir ekvivalent və sonra qaytarır
belə ki, printf orada plug bilər.
Və mən, baxmayaraq ki, bunu başqa bir fayl təqdim etmək lazımdır.
başqa bir fayl var onu çevrilir Yalnız sinif bilirik ki,
bir dərslik və ya online və ya arayış adlı C type.h.
>> Mən mövzu arasında əlavə Belə ki faylları və indi yenidən tərtib Bu proqram,
capitalize2 daxil edin ./capitalize2.
nin bütün ZAMYLA yazın edək kiçik, hələ də eyni işləyir.
Amma nə bilirik?
Bu yuxarı çıxır ki, bəzi digər funksionallıq var.
>> Və mənə bu təqdim edək sort yöndəmsiz, burada əmr
adlı, lakin dərslik man.
Bu ən Linux kompüter çıxır biz Linux əməliyyat burada istifadə olunur
bir komanda var system-- deyir adlı adam,
hey, kompüter, mənə vermək kompüter manual.
Siz nə istəyirsiniz ki, dərslik axtarmaq?
>> Mən funksiyası baxmaq istəyirəm yuxarı çağırdı daxil edin.
Və bu bir az sirli var bəzən oxumaq.
Amma biz istəyirik bildiriş Linux proqramçı-nin manual.
Və bütün mətn var.
Və var ki, qeyd Burada funksiyası adı.
Bu adlı bir əmisi var çıxır əks edir ki, aşağı.
Və referat altında bildiriş, bu istifadə etmək , Belə danışmaq, man səhifə fəaliyyət
mənə I izah edir c type.h. daxil etmək lazımdır
Mən təcrübə ki, bilirdi.
>> Burada mənə iki göstərən funksiyası üçün prototipləri,
belə ki, mən heç bu istifadə etmək istəyirsinizsə Mən giriş kimi almaq nə bilirik,
Onlar çıxış kimi qayıtmaq nə.
Və sonra mən oxumaq təsviri, görürəm
daha ətraflı funksiyası nə.
Amma daha əhəmiyyətlisi, əgər Mən geri dəyərinin altında baxmaq
geri dəyəri deyir konvertasiya məktub ki,
və ya C, orijinal giriş, əgər dönüşüm mümkün deyildi.
>> Başqa sözlə, yuxarı çalışacağıq yuxarı halda məktub çevirmək.
Və əgər, onu geri olacaq.
Amma bəzi reason-- üçün əgər bəlkə artıq yuxarı halda,
Bəlkə də bu nida nöqtə var və ya digər punctuation--
yalnız olacaq Orijinal C qayıtmaq
Mən kodu edə bilərsiniz deməkdir belə daha yaxşı nəzərdə tutulmuşdur.
>> Mən bütün ehtiyac yoxdur kodu bu darn xətləri.
Mən var xətləri Bütün yalnız qeyd edə bilərsiniz
Yalnız bir sadə dağıldı şeylərdir printf faiz line,
yuxarı S bracket I c.
Və bu olacaq yaxşı dizayn nümunəsidir.
>> Niyə 7 və ya 8 xətləri həyata kodu, mən yalnız nə idi
yerine dağılması zaman, silinmiş ki, məntiq və qərar qəbuletmə bütün
İndi bir xətt, 13 ki, bir kitabxana əsaslanır funksiyası
C ilə gəlir funksiyası, lakin Siz etmək istəyirəm dəqiq nə.
Və səmimi, hətta əgər Bu C gəlmədi,
Siz kimi, özünüz həyata bilər biz mənfi int almaq, gördüm
həm də müsbət int ötən həftə almaq.
>> Bu kod artıq çox daha oxunaqlı edir.
Və həqiqətən, biz fırladın əgər, nə qədər çox yığcam baxmaq
mənim proqram bu versiyası.
Bu, indi bir az top ağır Bütün bu daxildir.
indi daimi alıram, çünki Lakin ki, OK proqramçılar çiyinlərində
Məndən əvvəl.
Və kim idi həqiqətən yuxarı həyata
çox kimi, mənə lütf etdi kim həyata Stirling həqiqətən
bir müddət əvvəl mənə lütf etdi.
Və indi biz bir var yaxşı dizayn proqramı
ki, eyni məntiq həyata keçirir.
>> Stirling danışan, qoy Mənə irəli getmək və bunu.
Mənə davam və xilas edək stirling.c bu faylı.
Və bu çıxır, biz geri soymaq bilər olduqca sadəcə indi başqa bir qat.
Mən irəli və qamçı getmək üçün gedirəm əsas bir proqram
Burada sadəcə-tətbiq yenidən ki, string uzunluğu aşağıdakı.
Belə ki, burada bir kod line olduğunu Mənə istifadəçi bir string alır.
Biz təkrar bu istifadə edin.
Mənə özümü adlı dəyişən verək bir sıra mağazalar növü int n.
>> Və mənə irəli getmək və Aşağıdakı məntiq yoxdur.
s n-ci xarakter baxmayaraq bərabər backslash 0, davam
və n arttırmayı.
Və sonra printf faiz i n çap.
Hesab edirəm ki, bu proqram burada iddia string uzunluğu zəng olmadan,
bir simli uzunluğu tutulur.
>> Və sehrli tamamilə line 8 encapsulated
Burada yeni sintaksis kimi görünür nə ilə, tək quotes bu backslash 0.
Amma niyə ki?
Yaxşı, oldu nə hesab Bütün bu vaxt gedir.
>> Mən unutmaq əvvəl kimi bir kənara, həyata də ki, insan pages əlavə
ki, tipik ilə gəlib CS50 IDE kimi Linux sistemi,
həyata ki, kurs heyəti, həmçinin
bir web versiyası etdi adlanan bu eyni fikrin
var reference.cs50.net, həmin insan bütün pages,
eyni bütün sənədlərin, eləcə də
imkan verir ki, üst bir az qutusu Əgər kifayət qədər bütün çevirmək
az rahat daxil gizli dil rejimi, biz, müəllim heyəti,
keçmişdir və asanlaşdırmaq üçün cəhd şeyi saxlamaq üçün dil bəzi
ideyaları diqqət, və texniki bəzi.
Belə ki, unutmayın, reference.cs50.net eləcə də digər resurs kimi.
>> Amma niyə string uzunluğu iş yoxdur Mən bir an əvvəl təklif yol?
Burada Zamyla adı yenidən var.
Və burada Zamyla adı var Mən bunu saxlamaq kimi, kutulu,
Bu olan bir şəkil çəkmək üçün, həqiqətən, simvol yalnız bir sequence.
Amma Zamyla yoxdur bir proqramda təcrid.
>> yazmaq və bir proqram çalıştırdığınızda, Siz Mac və ya PC istifadə etdiyiniz
yaddaş, və ya RAM kimi belə danışmaq.
Və siz hesab edə bilər olan kimi kompüter
yaddaş gigabayt bu gün çox.
Və konsert, milyardlarla deməkdir bayt belə milyardlarla.
>> Amma vaxt geri bildirin.
Və biz istifadə edirik Güman həqiqətən köhnə kompüter ki,
yalnız yaddaş 32 bayt var.
Mən ola bilər, mənim kompüter ekranında, aşağıdakı kimi sadəcə bu cəlb edir.
>> Mən sadəcə demək olar mənim kompüter bu yaddaş bütün var.
Və bu halda, yaddaş stick kimi Siz son dəfə bizim şəkil xatırlayıram.
Mən yalnız bölmək əgər kifayət qədər dəfə bu
Mən 32 bayt var ki, iddia Ekranda yaddaş.
>> İndi, əslində, mən yalnız Burada bu ekranda günə qədər cəlb edir.
Mən irəli getmək üçün gedirəm və yalnız Konvensiyanın,
kimi mənim kompüter yaddaş çəkmək grid, yalnız kimi bir düz xətt.
Xüsusilə, indi ki, iddia Bu grid, bu 8 4 grid,
yalnız bütün 32 bayt təmsil mənim Mac mövcud yaddaş,
və ya PC mövcuddur.
Onlar wrapping edirik on iki xətləri, yalnız
Bu ekranda daha uyğun çünki.
Amma bu ilk byte edir.
Bu ikinci byte edir.
Bu üçüncü byte edir.
>> Bu 32-ci byte edir.
Və ya, bir kompüter kimi hesab edirəm ki, əgər alim, bu byte 0, 1, 2, 3, 31.
Belə ki, əgər 31 0 var Siz 0 hesablanması başlamaq.
>> Biz bir proqram istifadə Belə ki zənglər string almaq,
və biz insan bir string almaq Mən Zamyla adlı idi kimi Z-A-M-Y-L-A,
necə dünya yoxdur ilə kompüter saxlamaq track olan byte ki,
yaddaş hansı yığın, hansı string məxsusdur?
Başqa sözlə, biz davam əgər kompüter başqa bir ad yazın,
bu Andi kimi, zəng string ikinci dəfə almaq,
A-N-D-I başa var kompüter yaddaş həmçinin.
Bəs necə?
>> Bəli, bu altında çıxır strings saxlanılması zaman başlıq nə C yoxdur
insan növləri, və ya ki, Bu, bəzi digər mənbədən
Onların sonu ilə delineates xüsusi xarakter backslash
yalnız bir xüsusi bir yoldur 0 bir sıra 80 bit etdi.
>> Belə ki, A-- bu rəqəm 97 geri edir.
8 bit Belə ki, bəzi model bu sayı 97 təmsil edir.
Bu backslash 0 sözün sayı 0, a.k.a. nul, N-U-L, əvvəllər fərqli olaraq,
N-U-L-L, biz danışdıq.
Amma indi üçün, yalnız bu bilirik ki, backslash 0 sıra yalnız 80 bit edir.
>> Və yalnız bu xətt var sol heç bir şey deyir qum
bir simli və ya bir veri növü məxsusdur.
sağ və bir şey başqa bir şey məxsusdur.
Andi adı, eyni zamanda, olan yalnız vizual
digər xətti üzərində kesmek olur, lakin, yalnız bir estetik detal var
eyni nul xitam verilir.
>> Bu, A-N-D-I simvol bir simli edir plus beşinci gizli xarakter
yalnız ayırır bütün 0 bit, həmçinin Andi adı sonu.
Və biz zəng əgər simli üçüncü dəfə almaq kompüter kimi bir string almaq
Maria, M-A-R-I-A, eyni Maria nin adı nul backslash 0 xitam.
>> Bu əsaslı fərqlidir necə bir kompüter adətən ki
bir tam və ya float və ya digər mağaza hələ data növləri, geri, çünki,
tam adətən 32 bit və ya 4 bayt, və ya bəlkə hətta 64 bit,
və ya səkkiz bytes.
Lakin kompüter çox Primitives bir proqramlaşdırma dili
sabit sıra var hood-- altında bayt
bəlkə 1, bəlkə 2, bəlkə 4, bəlkə 8.
>> Amma strings, dizayn, bir var simvol dinamik nömrəsi.
Siz qədər əvvəlcədən bilmirəm Z-A-M-Y-L-A insan növləri,
və ya M-A-R-I-A, və ya A-N-D-I. Siz bilmirəm neçə dəfə istifadəçi hit gedir
klaviatura.
Buna görə də, necə bilmirəm əvvəlcədən çox simvol
Sizə lazım olacaq.
>> Və C yalnız cür kimi yaradır başlıq altında gizli hier
simli sonunda.
yaddaş Z-A-M-Y-L-A saxlanılması sonra, Bu da yalnız ekvivalent qoyur
bir müddət.
Cümlənin sonunda Bu, belə ki, 80 bit qoyur
harada yadda Zamyla başlayır və bitir.
>> Belə ki, əlaqə nə var, Sonra bu proqram?
burada Bu proqram, Stirling, bir mexanizm sadəcə
simli almaq üçün istifadəçi, line 6.
Line 7, mən bir dəyişən elan n adlanır və bu 0 bərabər seçin.
>> Və sonra line 8, mən sadəcə xahiş sual, n-ci xarakter nə isə
bərabər bütün 0 bits-- başqa sözlə, deyil
bərabər bu xüsusi xarakteri, backslash 0, hansı
yalnız xüsusi nul xarakter idi irəli getmək və yalnız n arttırmayı.
>> Və bunu saxlamaq və saxlamaq bunu və bunu saxlamaq.
Və belə olsa biz Mən istifadə etdiyiniz keçmiş,
mükəmməl gözəl semantically n istifadə etmək,
Yalnız çalışdığınız əgər qəsdən bu dəfə saymaq,
və yalnız n zəng etmək istəyirəm.
Belə ki, bu, yalnız sual saxlayır, bütün 0s s n-ci karakter?
Əgər növbəti baxmaq baxmaq, , Növbəti baxmaq növbəti baxmaq,
növbəti baxmaq.
>> Amma tezliklə backslash 0 görmək kimi, 11-- bu loop line 9 dayanır.
Siz isə loop çıxmaq dəyişən n daxilində tərk
bütün ümumi sayı Gördüyün simli simvol,
bununla onu çap.
Belə ki, bu cəhd edək.
>> olmadan, mənə irəli gedək və Stirling funksiyası istifadə edərək,
lakin yalnız öz homegrown versiyasından istifadə Burada Stirling adlı Mənə davam edək
bir şey və run Stirling, növü Mən əvvəlcədən bilmək ZAMYLA kimi
altı simvol edir.
Bu işləri əgər in nəzər salaq.
Həqiqətən, o, altı var.
nin Rob ilə cəhd edək, üç simvol, üç simvol, eləcə də və s.
Belə ki, gedir ki, bütün var başlıq altında.
Və əlaqələri qeyd, sonra ilk həftə
sinif, biz danışdıq harada abstraksiya kimi bir şey,
hansı fikir yalnız bu layering, və ya mürəkkəbliyi, baza prinsipləri üst.
Burada biz növ aradığınız Stirling başlıq altında,
belə anlamaq üçün, danışmaq, necə həyata olardı?
>> Və biz bunu özümüz yenidən həyata bilər.
Amma biz bir daha olacaq üçün Stirling yenidən həyata keçirir.
Biz yalnız olacaq üçün Stirling istifadə
həqiqətən bir strings uzunluğu almaq üçün.
>> Amma heç bir sehrli var başlıq altında.
Bilirsiniz, əgər altında olduğunu başlıq, bir string
simvol yalnız bir ardıcıllıqla deyil.
Və simvol ki, ardıcıllıqla bütün sayca edilə bilər
bracket 0, bracket ilə 1, bracket 2, və siz
simli sonunda bilirik ki xüsusi xarakter, siz anlamaq olar
bir çox şey etmək necə proqram, çünki bu boils
oxu və yaddaş yazır.
Bu dəyişən və axtarır, yaddaş, və ya şeyi hərəkət
ətrafında yaddaş, çap şeylər s ekran, və.
>> Belə ki, indi bu newfound istifadə edək həqiqətən strings nə anlaşma
başlıq altında və başqa bir qat geri soymaq
indiyə qədər biz sizin qədər ki, tamamilə məhəl edilmişdir.
Xüsusilə, hər hansı bir zamanda biz bir proqram həyata etdik,
Biz kodu bu xətt etdik üst əsas elan.
Və biz int əsas etibarsız müəyyən etdik.
>> Və parantez daxilində etibarsız bütün bu vaxt söyləyərək edilmişdir ki, əsas
özü heç bir dəlilləri daşımır.
əsas olduğunu istənilən giriş istifadəçi almaq üçün gedir
bəzi digər gəlir var mexanizm kimi get int,
və ya float almaq, və ya simli almaq, və ya digər fəaliyyət göstərir.
Amma bu çıxır ki, bir proqram yazmaq zaman,
Siz, həqiqətən, daxil edə bilərsiniz Bu proqram edilir ki,
insan giriş almaq command line özü.
>> Başqa sözlə, baxmayaraq ki, biz indiyə qədər salam hello yalnız çalışan edilmişdir
və ya oxşar proqramları, bütün Biz istifadə etdiyiniz digər proqramlar,
Biz özümüz yazmaq deyil ki, var, görünür, qəbul edilmişdir
command line dəlilləri etmək kimi şeylər.
Siz olun kimi bir şey demək, və sonra ikinci söz.
Və ya cingilti, sonra cingilti, və demək ikinci söz, bir fayl adı.
>> kimi bilər, və ya hətta RM ya CP görüldü və ya artıq istifadə
aradan qaldırılması və ya faylları kopyalamak üçün.
o bütün deyilən almaq command line dəlilləri
terminal tez əlavə sözlər.
Amma indiyə qədər biz özümüz idi yoxdur
daxil alaraq bu lüks istifadəçi o həqiqətən çalışır
command line proqram özü.
>> Amma biz yenidən elan edə bilərsiniz əsas olan kimi irəli deyil hərəkət
parantez ləğv, Lakin bu iki dəlilləri
ilk tam Əvəzində, ikinci bir şey
biz zəng olacaq yeni bir şey bir sıra, ruhu oxşar bir şey
Biz siyahısı Not gördüm nə, lakin strings bir sıra, biz tezliklə görəcəksiniz kimi.
Amma bu görək Məsələn yolu, biz əvvəl
o deməkdir ki, dəqiq nə fərqlənir.
>> Mən CS50 IDE getmək əgər Belə ki, burada, mən qabaqda getdi sonra
adlı bir fayl elan Aşağıdakı şablon argv0.c.
Və yalnız bir şey qeyd bu günə qədər müxtəlif var
Mən int etibarsız dəyişib etdik ki, argc string yaxın, açıq bracket argv
mötərizə.
Və var, indi qeyd o Mötərizədə daxilində heç bir şey.
>> heç bir nömrə var.
Və heç bir i var və ya n, və ya hər hansı digər məktub.
Mən istifadə edirəm İndi kvadrat mötərizədə,
səbəblərə görə biz gəlmək lazımdır geri yalnız bir anda.
>> İndi mən gedirəm bu.
argc bərabərdir varsa bərabərdir 2-- ki, bərabərdir geri
müqayisə bərabərlik operator bərabərlik üçün sol və sağ.
Bu tapşırıq deyil deyil operator,
surəti deməkdir vahid bərabər işarəsi, sağdan bəzi dəyəri sol.
>> argc bərabərdir 2 bərabərdir, mən istəyirəm demək, printf, salam, faiz, yeni xətt,
və sonra in-- plug və burada yeni səbəblərdən trick-- argv bracket 1,
biz geri bir anda gəlmək lazımdır ki.
argc deyil, əgər Else 2 bərabər, siz nə bilirik?
adi, çap kimi, yalnız irəli gedək və heç bir əvəz ilə salam dünya.
>> Belə ki, görünür ki, argc olan əgər , Dəlil sayı tərəfdardır 2 bərabərdir
Mən çap gedirəm salam bir şey və ya digər.
Əks halda, ismarıcları, mən salam dünya çap gedir.
Belə ki, bu nə deməkdir?
>> Yaxşı, mənə irəli getmək və xilas edək Bu fayl, sonra argv0 edə bilərəm,
və sonra ./argv0 daxil edin.
Və bu dünya salam deyir.
İndi ki, niyə?
>> Bəli, bu zaman çıxır command line bir proqram run,
nə biz lazımdır doldurulması olunur ümumiyyətlə dəlil vektor zəng.
avtomatik olaraq digər sözlə, kompüter, əməliyyat sistemi,
proqram əl gedir özü sözləri bütün siyahısı
insan da yazdığınız halda tez, siz
proqramçı etmək istəyirəm ki, informasiya ilə bir şey.
Və bu halda, yalnız söz Mən tez-da çap etdik ./argv0 edir.
>> Və belə arqumentlər sayı ki, mənim proqram qəbul olunur yalnız biridir.
Başqa sözlə, arqument başqa argc kimi tanınan saymaq
burada bir tam kimi, yalnız biridir.
One, əlbəttə, iki bərabər deyil.
Və bu hello, dünya çap edir.
>> Amma mənə bu yerdə götürək.
Mənə deyirlər argv0 edək.
Və sonra necə Maria haqqında?
Və sonra Enter düyməsini basın.
>> Və magically burada nə görürsünüz.
İndi əvəzinə salam dünya, mən Bu proqramın davranış dəyişib
get deyil daxil alaraq string və ya digər funksiyası,
lakin, görünür, mənim komanda özü, mən ilk tipli nə.
Mən yenidən bu oyunu oynaya bilər məsələn, Stelios onu dəyişir.
>> İndi mən hələ bir ad oldu.
Və burada mən Andi demək bilər.
Mən Zamyla deyə bilər.
Və biz bütün gün uzun bu oyunu oynaya bilər yalnız müxtəlif dəyərlər sayede,
belə uzun Mən dəqiq təmin tez iki sözlər,
argc, mənim dəlil saymaq ki, belə, 2.
>> Mən ad daxil takıldığından ki görürsünüzmü printf, burada bu vəziyyəti başına?
Beləliklə, biz indi görünür ifadəli qabiliyyəti
başqa mexanizmi daxil alaraq, sözdə command line,
daha gözləmək olan daha istifadəçi proqram çalışır qədər,
və sonra ona təklif get string kimi bir şey istifadə edərək.
>> Belə ki, bu nədir?
Argc, yenə yalnız bir tam deyil, words-- dəlilləri sayı
ki, təmin istifadəçi tez, terminal pəncərə,
Proqramın adı, o cümlədən.
Belə ki, bizim ./argv0 səmərəli edir Proqramın adı,
və ya necə proqramı.
>> Bu söz kimi sayar.
Belə ki, argc 1 olardı.
Amma Stelios yazmaq, və ya Andi və ya Zamyla və ya Maria,
ki, dəlil sayı iki deməkdir.
Və indi keçdi iki söz var.
>> Və bildiriş, biz bu məntiq davam edə bilərsiniz.
Mən, həqiqətən, demək ZAMYLA Chan kimi bir şey,
tam adı, bununla keçən cəmi üç dəlilləri,
indi default yenidən deyir, , Əlbəttə, 3 2 bərabər deyil, çünki.
>> Və bu şəkildə, mən var argv bu yeni dəlil vasitəsilə giriş
biz texniki ola bilər ki, biz istədiyiniz bir şey zəng.
Lakin Konvensiya tərəfindən, bu müvafiq olaraq argv və argc.
Argv, dəlil vektor, növ bir proqramlaşdırma üçün sinonimi olan
C xüsusiyyət bir sıra çağırıb.
>> Bir sıra Oxşar dəyərlərin siyahısı geri geri, geri, geri.
Başqa sözlə, əgər bir burada var RAM, növbəti bir, onun yanında hüququ
və sağ yanında.
Onlar bütün yer üzərində deyilik.
Və sonuncu ssenari, hər şeyi bütün yaddaşında yer üzərində,
həqiqətən güclü xüsusiyyət ola bilər.
zaman Amma biz geri gəlmək lazımdır meraklısı data strukturları haqqında danışmaq.
İndi, bir sıra yalnız bir deyil bitişik yaddaş yığın,
Onun elementləri hər geri geri, geri, geri,
və ümumiyyətlə eyni tipli.
>> Belə ki, bir olan, haqqında düşünmək əgər an əvvəl bir string nədir?
Yaxşı, bir string, Zamyla kimi, Z-A-M-Y-L-A, texniki edir
yalnız bir sıra.
Bu simvol bir sıra var.
>> Və belə ki, biz, həqiqətən, bu kimi cəlb əgər mən , Yaddaş yığın kimi, əvvəllər etdi
bu ki, hər çıxır simvol bir byte alır.
Və sonra xüsusi var sentinel xarakteri, backslash 0,
və ya bütün səkkiz 0 bit ki, ki, simli sonunda ayırır.
Belə ki, bir string, bu çevrilir out, dırnağı bağlamaq simli sitat
chara-- yalnız bir sıra edir faktiki data type olan char.
>> İndi argv, meanwhile-- geri proqram getmək bildirin.
biz söz görmək olsa da argv, string burada bir simli özü deyil.
Argv, dəlil vektor, strings bir sıra edir.
>> Siz bir sıra ola bilər ki, kimi simvol, siz yüksək səviyyədə ola bilər,
strings-- bir sıra belə ki, məsələn, Mən bir an əvvəl yazdığınız zaman ./argv0
argv0, kosmik Z-A-M-Y-L-A, I iddia etdi argv, pseudocode ./argv0 iki strings var idi
və Z-A-M-Y-L-A. ilə Başqa sözlə, argc 2 idi.
Niyə ki?
>> Yaxşı, səmərəli, nə olacaq olan bu strings hər ki
, Əlbəttə, simvol bir sıra edir əvvəlki kimi, hər kimin simvol
bir byte tutur.
Və faktiki 0 çaşdırmaq deyil 0 ilə proqramın adı,
olan bütün 80 bit deməkdir.
Və Zamyla, eyni zamanda, hələ də simvol bir sıra.
>> günün sonunda Belə ki, həqiqətən başlıq altında bu kimi görünür.
Amma necə əsas xarakteri ilə, argv işləri, məni bütün bu kesmek üçün imkan verir
, Siz, böyük array qədər biz bir az artıq sadələşdirmək ki, əgər
şəkil kimi deyil görünür kifayət qədər klikləyin çəkmək,
Bu array yalnız ölçüsü 2 ilk bir simli var olan element,
ikinci element hansı bir simli var.
Və öz növbəsində, əgər cür hər zoom
o strings, nə siz başlıq altında görmək
hər string yalnız ki, simvol bir sıra.
>> İndi, yalnız strings kimi, biz əldə edə bildik
simli i-ci xarakter ki, kvadrat mötərizə notation istifadə edərək.
Eynilə, seriallarda ilə ümumiyyətlə, biz
almaq üçün kvadrat mötərizə notation istifadə bir sıra strings hər hansı bir sayı?
Məsələn, mənə imkan irəli getmək və bunu.
>> Mənə davam və argv1.c yaratmaq edək, olan bir az fərqli bu dəfə.
Əvəzində argc2 üçün yoxlanılması, Mən əvəzinə bunu gedirəm.
Mən 0 almaq int, mən az argc daha mən plus plus,
və sonra, bu daxilində çap faiz s, yeni xətt, sonra
argv bracket i.
>> başqa sözlə Belə ki, mən ilə məşğul deyiləm Hal-hazırda fərdi simvol.
Argv, bu boş kvadrat ilə nəzərdə kimi adı argv sağ üçün aşırma,
strings bir sıra edir argv deməkdir.
Və argc yalnız bir int edir.
>> burada Bu xətt, 6, set deyərək i 0 bərabər.
Qədər bütün yol Count lakin argc, o cümlədən.
Və sonra hər iteration, bir simli çap.
Nə string?
>> argv i-ci string.
Mən əvvəl halbuki So kvadrat bracket istifadə
notation Ith almaq üçün İndi simli xarakter
Mən kvadrat mötərizə notation istifadə edirəm bir sıra İTH simli almaq üçün.
Belə ki, bir qat cür Yuxarıda konseptual.
>> Və bu barədə səliqəli nə İndi proqram, mən argv1 tərtib əgər,
və sonra ./argv1 etmək, və sonra yazın foo bar Baz kimi bir şey,
üç default sözləri olan var kompüter alim hər zaman üçün çatır
o bir tutucu sözləri lazımdır, və Enter, bu sözlər hər
Proqramın adı, o cümlədən hansı Ilk yerdə argv var
başa bir-bir çap olunur.
Və mən bu dəyişdirmək və demək əgər argv1 ZAMYLA Chan kimi bir şey,
biz bu hər üç almaq argv0 sözləri,
argv1, argv2, bu, çünki hal argc, sayı, 3.
>> Amma nə səliqəli siz anlamaq əgər ki argv, strings yalnız bir sıra edir
və bir string başa düşürük ki, simvol bir sıra edir,
biz, həqiqətən, növ istifadə edə bilərsiniz kvadrat mötərizə notation neçə dəfə
simli seçin və sonra seçin simli ərzində bir xarakter,
belə dərin kimi dalış.
Bu, məsələn, mənə gedək irəli və bu argv2.c çağırırıq.
Bu misalda, mənə irəli gedək və i 0 almaq int üçün aşağıdakıları edin yoxdur,
i, argc azdır i plus plus, əvvəl kimi.
Belə ki, indi bu digər words-- və Kifayət qədər mürəkkəb olur.
Sonra demək gedirəm argv strings üzərində təkrarlamaq,
özümə bir comment kimi.
Və sonra mən gedirəm Loop üçün iç içə yəqin ki, siz
həyata, və ya hesab Not bunu, harada
Mən deyiləm int demək gedirəm yenidən i istifadə etmək niyyətində deyil,
Mən kölgə istəmirəm, çünki, və ya sort mövcud i yazmaq.
>> Çünki, əvəzinə, j demək gedirəm ki, mən sonra dəyişən mənim go var
Mən yalnız çalışıram sadə ədəd saymaq.
j olur For 0- və həmçinin, n, gedir , Argv bracket i sərt uzunluğu almaq
belə uzun j m-dən az olduğu kimi, j plus plus, aşağıdakı.
Və burada maraqlı hissəsi.
>> bir xarakter və yeni xətt çap, argv bracket i, bracket j sayede.
OK, belə ki, mənə burada bir şərh əlavə edək.
simvol üzərində təkrarlamaq cari simli,
i-ci simli çap j-ci character.
Belə ki, indi, bu nəzər salaq bu şərh nə deməkdir.
>> strings üzərində təkrarlamaq argv-- neçə
strings bir sıra olan, argv var?
Argc çox, mən iterating alıram Mən argc qədər 0 bərabər.
Eyni zamanda, neçə simvol argv i-ci simli var?
>> Yaxşı ki, cavab almaq üçün, Mən string uzunluğu zəng
Cari string I qayğı argv bracket i olan haqqında.
Mən müvəqqəti olduğunu saxlamaq üçün gedirəm dəyəri n, yalnız caching məqsədləri üçün,
səmərəliliyi üçün xatırlayıram.
Və sonra mən 0 j başlamaq gedirəm j az n kimi belə uzun davam,
və hər iteration artım J.
>> Və sonra burada, başına line 12 mənim comment,
Bir xarakter çap, yeni bir xətt izlədi
xüsusi argv bracket i me i-ci simli verir
argv-- belə ki, ilk sözü, ikinci söz, üçüncü söz, nə.
Və sonra j dərin dalış və olur mənə sözün j-ci character.
Belə ki, faktiki olaraq, siz müalicə edə bilər argv bir çox ölçülü kimi,
iki ölçülü, array kimi, vasitəsi görünür hər sözü cür
fikrinizi nin bu kimi göz, ​​və hər bir xarakter
cür tərtib olunur bir sütun ki, kömək edir.
>> Əslində, biz zaman sataşmaq gələcək həftə bu ayrı,
bir az olacaq daha çox inkişaf etmiş.
Amma həqiqətən bilərsiniz İndi ki, hesab edirəm ki,
yalnız bu iki ölçülü kimi bu array, vasitəsi bir səviyyədə
strings deyil.
Və sonra dərin, siz dalış əgər fərdi simvol əldə edə bilərsiniz
Burada bu notation istifadə edərək, orada.
>> Belə ki, xalis təsiri nədir?
Mənə davam edək argv2-- darn etmək.
Mən burada bir səhv etdi.
dolayısı elan kitabxana funksiyası Stirling.
Belə ki, bütün bu vaxt, bu bəlkə uyğun
biz sort başa etdiyiniz məhz biz başladı.
>> Mən dolayısı elan, berbat kitabxana funksiyası Stirling.
OK, bir dəqiqə gözləyin.
Mən xüsusilə, unutmayın ki, çünki burada var.
Mən string.h daxil etmək lazımdır Proqramın bu versiyası.
>> Mənə davam və daxil edək string.h ki, saxlamaq, davam
və argv2 compile.
İndi, burada daxil edin argv2 etmək, getmək.
Və bu bir az baxmayaraq ilk baxışda sirli,
həqiqətən, fark nə dot argv2 çap edir.
>> Amma sonra bəzi sözləri yazın əgər tez, argv2 ZAMYLA Chan kimi,
Həmçinin, bir az daxil edin ilk baxışda sirli.
Amma biz geri fırladın əgər, ./argv2 Z-A-M-Y-L-A C-H-A-N.
Belə ki, biz hər sözü üzərində iterated etdik.
Və öz növbəsində, biz artıq iterated etdik Bir sözlə ərzində hər character.
>> İndi bu bütün sonra, var ki, həyata
bir başqa detal biz cür oldum Bu bütün zaman məhəl.
Biz yalnız ayrı teased nə Əsas giriş ola bilər?
Nə Main nin çıxış haqqında?
>> Bu zaman bütün, biz oldum yalnız çıxarmaq və sovuşdurmaq
Əsas qarşısında söz int, Siz online ola bilər, baxmayaraq ki,
bəzən səhv eski versiyasını C və derleyiciler, onlar, etibarsız deyirlər ki,
və ya heç bir şey.
Lakin, həqiqətən, üçün versiya C biz istifadə edirik ki,
C 11, və ya 2011-ci il, həyata ki, int olmalıdır.
Və ya olmalıdır etibarsız və ya argc və argv.
>> Amma niyə int əsas?
Bu, həqiqətən nə qayıdır?
Bəli, bu, bu zaman bütün çıxır heç bir zaman bir proqram Main yazdıq
həmişə bir şey qayıdır.
Amma belə gizli bunu edilmişdir.
>> Bu bir şey bir int line 5 təklif edir.
Amma nə int?
Bəli, bu var proqramlaşdırma konvensiya,
vasitəsi heç bir şey var, əgər yanlış getdi və bütün yaxşı,
ümumiyyətlə proqramları və funksiyaları return-- qədər counterintuitively--
0.
0 ümumiyyətlə bütün yaxşı bildirir.
Siz hesab So olsa da çox kontekstlərdə kimi yalan ki,
bu, həqiqətən, ümumiyyətlə yaxşı bir şey deməkdir
>> Eyni zamanda, bir proqram 1 qaytarır əgər, və ya mənfi 1, və ya 5 və ya mənfi 42,
və ya hər hansı qeyri-0 dəyəri, ki, ümumiyyətlə bildirir
ki, bir şey yanlış keçmişdir.
Əslində, öz Mac və ya PC, Siz, həqiqətən, görmüşəm bilər
bir səhv baş beledir, vasitəsi onu bir şey və ya digər səhv deyir
Kodu mənfi 42, və ya hata kodu kimi 23 və ya bir şey.
Ki sayı ümumiyyətlə yalnız Qeyd proqramçı, və ya şirkət
ki proqram etdi nə yanlış və nə getdi
onlar vasitəsilə baxmaq olar ki, onların sənədləri və ya indeksi,
və anlamaq nə səhv həqiqətən deməkdir.
Bu, ümumiyyətlə deyil bizə faydalı son istifadəçilər.
>> Amma əsas yekunları 0, bütün yaxşı zaman.
Və müəyyən yoxsa qayıtmalıdırlar əsas nə
yalnız avtomatik olaraq Sizin üçün 0 qayıtmaq.
Amma bir şey qaytarılması Başqa həqiqətən faydalıdır.
>> bu son proqram, mənə imkan irəli getmək və bu exit.c zəng
və bu gün son təqdim bir səhv kod kimi tanınan mövzular.
Mənə davam və daxil edək bizim tanış faylları top, int əsas yoxdur.
Və bu zaman, ən int argc edək string argv, və mötərizədə ilə
Bu array var ki, demək.
Və sonra mənə yalnız bir ağlı başında olma çek edək.
Bu dəfə argc deyil, əgər 2 bərabər, sonra nə bilirik?
Unut onu.
Mən ki, gedirəm, hey, istifadəçi, Siz command line dəlil itkin
backslash n.
>> Və sonra bu.
Mən çıxmaq üçün istəyirəm.
Mən preemptively gedirəm və vaxtından əvvəl həqiqətən, geri
1 nömrəli başqa bir şey.
ilk dəyəri go ola bilər səhv 1.
Siz səhv bəzi digər varsa baş verə bilər vəziyyət,
Siz geri 2 demək və ya 3 qayıtmaq və ya ola bilər bəlkə hətta mənfi 1 və ya mənfi 2.
>> Bu yalnız exit kodları ki, ümumiyyətlə,
yalnız proqramçı üçün faydalı, və ya proqram göndərmə şirkəti.
Lakin bu ki, 0 vacibdir nə.
Belə ki, bu proqramda əgər, Mən istəyirəm zəmanət ki, bu proqram yalnız
istifadəçi mənə verir işləyir iki bir dəlil sayı ilə,
Proqramın adı və bir sıra digər söz, mən aşağıdakı kimi tələb edə bilər
printf söyləyərək ilə istifadəçi fəğan, command line arqument itkin,
1 qayıtmaq.
Yalnız dərhal olacaq proqram çıxmaq.
>> argc bərabər Yalnız 2 biz aşağı olacaq burada, mən demək gedirəm hansı nöqtədə,
salam faiz s, backslash n, argv1.
Başqa sözlə, mən argv 0 sonra niyyətində deyil,
olan proqramın yalnız adı.
Mən vergül, salam çap etmək istəyirəm insan tipli ikinci söz.
Və bu halda üzrə line 13, bütün yaxşı.
>> Mən argc 2 bilirik ki, məntiqi bu proqram.
Mən irəli getmək və 0 qayıtmaq üçün gedirəm.
Bir kənara kimi, unutmayın ki, Bu həmçinin Not doğrudur.
>> Məntiqi, mən bunu edə bilər bu xətləri içine
Burada bu başqa bənddə kodu.
Amma növ var lazımsız mənim kodu indenting.
Mən super etmək istəyirəm aydın nə olursa olsun ki,
Mənim cari olaraq, salam bir şey çap olacaq
istifadəçi əməkdaşlıq kimi uzun.
>> Belə ki, istifadə etmək çox ümumi var bir vəziyyət, yalnız bir halda,
bir səhv tutmaq üçün vəziyyət, və sonra exit.
Və sonra, belə uzun bütün yaxşı, başqa bir var,
ancaq kod kənarda, bu, çünki
Bu ekvivalent xüsusi halda, məntiqi.
Mən yalnız, 0 qaytarılması alıram açıq-aydın bütün yaxşı demek.
>> Mən qaytarılması 0 çıxarılmışdır varsa, bu ki avtomatik mənim üçün ehtimal etmək.
Amma indi qaytarılması edirəm ki, ən azı bu halda bir
Mən yaxşı tədbir üçün, gedirəm və aydınlıq, bu halda 0 qayıtmaq.
Belə ki, indi mənə irəli getmək və çıxış edək, olan yalnız tərk üçün mükəmməl Segue edir.
>> Amma çıxış etmək və mənə gedək irəli və ./exit etmək, daxil edin.
Və proqramı mənə yelled command line dəlil yoxdur.
OK, mənə əməkdaşlıq edək.
>> Mənə əvəzinə ./exit edək David, daxil edin.
İndi salam David, deyir.
Və adətən bu görmək olmaz.
>> Amma var çıxır ki, həqiqətən görmək üçün Linux xüsusi yol
nə çıxış kodu ilə bir proqram çıxıldı.
Bəzən qrafik ilə Mac OS və ya Windows kimi dünya,
Yalnız bu rəqəmlər bir çox səhv mesaj ekranda açılır
və proqramçı siz ki sayı göstərir.
Amma biz nə səhv görmək istəyirsinizsə Mesaj biz bunu burada edə bilər,
belə ./exit daxil edin, çap command line dəlil yoxdur.
>> İndi echo $ ?, Əgər olan axtarır ridiculously sirli.
Amma $?
sehrli sehr edir deyir ki, hey, kompüter,
mənə nə əvvəlki Proqramın çıxış kodu idi.
Mən Enter düyməsini basın.
ki, çünki mən 1 görmək nə qayıtmaq üçün mənim əsas funksiyası bildirib.
>> Eyni zamanda, mən David ./exit əgər, və mən salam Davudu görmək, Enter düyməsini basın.
İndi echo $ nə varsa ?, Mən 0 salam görürük.
Və bu həqiqətən olacaq dəyərli məlumat ola
ayıklama kontekstində deyil, belə ki, Siz insan, qayğı ki, çox.
Amma ayıklama və digər proqramları bu dövr istifadə edəcəyik
tez-tez sayı baxacağıq, bu cür üz gizli baxmayaraq
Siz bunun üçün baxmaq halda müəyyən bir proqramın və ya
icra doğru və ya yanlış idi.
>> Və belə ki, bizə gətirir Bu, günün sonunda.
Biz baxaraq bu gün başladı ayıklama və kurs öz növbəsində
özü və daha çox maraqlı, texniki başlıq altında
nə strings davam edən var verilən həftə biz yalnız aldı
və əlbəttə ki, onları aldı üçün Not verilib.
>> Biz sonra biz əldə edə bilərsiniz necə baxdı simli fərdi simvol,
və sonra yenidən yüksək səviyyədə etdi well-- necə baxır, hər şeyi baxmaq
biz fərdi almaq istəyirsinizsə strukturu kimi bir siyahıda elementlər,
biz çox strings ilə edə bilməz?
Və biz command line dəlilləri ilə edə bilərsiniz.
Amma burada yalnız qutuları bu şəkil bu ümumi fikir nümayiş edir
bir sıra və ya bir siyahısı, və ya vektor.
Və asılı olaraq kontekstində, bu sözləri bütün
az fərqli şeylər deməkdir.
Belə ki, C, biz yalnız olacaq bir sıra haqqında danışmaq.
Və bir sıra bir yığın edir yaddaş, onlardan hər var
elementləri, geri, bitişik olan geri, geri, geri.
>> Və bu elementlər, ümumiyyətlə, var Eyni data növü, xarakteri,
xarakter, xarakter, xarakter, və ya simli, simli, simli, simli, və ya int,
bu nə int, int, biz mağaza çalışırıq.
Lakin günün sonunda, bu nə konseptual kimi görünür.
Siz qəbul etdiyiniz kompüter yaddaş və ya RAM.
Və onu həyata oyma edirik eyni ölçülü qutuları, bütün bunlar
üçün, geri, geri geri bu şəkildə geri.
>> Və haqqında gözəl nə var Bu fikir, və fakt
bu şəkildə mənaları ifadə edə bilər ki, Bizim data strukturları ilk ilə
sinif, biz başlaya bilərsiniz deməkdir kodu ilə problemləri həll etmək
həftə 0 belə daxilən gəldi.
Siz telefon geri olacaq kitab misal, harada
Biz uçurum istifadə fəth və ya bir ikili axtarış alqoritm,
Bütövlükdə vasitəsilə elemek üçün adları və nömrələri dəstə.
Amma biz, geri güman ki, telefon kitab artıq sıralanır edilmişdir
başqası artıq idi ki, yazaraq adları siyahısı verilir fiqurlu
və onlara alphabetize necə nömrələri.
İndi ki, C biz də imkanı var
Şeyi yox qoymaq fiziki bir telefon kitab
lakin faktiki olaraq kompüter nin yaddaş, biz mümkün gələn həftə olacaq
ilk şeylərdir yenidən təqdim etmək bir serialın bizim data strukturları
amma daha əhəmiyyətlisi, faktiki kompüter elm alqoritmlər həyata
kodu, olan biz bilərsiniz oxşar strukturlarında data,
və sonra manipulyasiya başlamaq və həqiqətən bu problemləri həll etmək,
ki, üst qurmaq, nəticədə, C proqramları,
Python, JavaScript, SQL verilənlər bazası querying?
>> Və biz bu bütün görürsünüz interlock müxtəlif fikir.
Amma indi ki, geri biz bu gün təqdim domain
bu şey burada idi, və Kriptoqrafiya dünya.
Və növbəti problemləri özünüz arasında həll Kriptoqrafiya sənət olacaq,
Scrambling və de-Scrambling informasiya və ciphering
və mətn deciphering, və nəticədə fərz
İndi bilirik ki, nə başlıq altında
ki, görmək və ya qəbul etdiyiniz zaman Bu kimi bir mesaj, siz
özünüz oxumaq olar.
Bütün bu və daha çox növbəti dəfə.
>> [Video playback]
>> -Mover Yalnız gəldi.
Mən səfər getmək üçün gedirəm onun kollec professor.
Bəli.
Salam.
Bu sənsən.
Gözləmək!
David.
Mən yalnız anlamağa çalışıram başınıza nə.
Bir şey kömək edə bilər edin.
Siz onun kollec idi roommate, siz deyil?
Onu zaman var idi o CS50 layihə başa?
>> [MUSIC PLAYING]
>> -Bu CS50 idi.
>> Mən bu yer sevgi.
>> up yeyin.
Biz biznes olacaq.
>> [END playback]