[Powered by Google Translate] [Yorumla] [Viktorina 0] [Lexi Ross, Tommy MacWilliam, Lucas Freitas Cozef Ong] [Harvard Universiteti] [Bu CS50 edir.] [CS50.TV] Hey, hər kəs. Bu çərşənbə cərəyan edən Quiz 0, üçün icmal sessiya xoş gəlmisiniz. Biz bu axşam nə olacaq nə, mən, 3 digər TFS ilə Ben və birlikdə biz indiyə qədər gedişində etdik nə nəzərdən keçmək olacaq. Bu 100% hərtərəfli olacaq deyil, ancaq daha yaxşı bir fikir verəcəkdir Əgər siz artıq aşağı nə və nə də çərşənbə əvvəl öyrənmək lazımdır. Biz birlikdə olacaq kimi, sualları ilə əl qaldırmaq çekinmeyin lakin biz də vaxt bir az olacaq unutmayın son biz ümumi suallar etmək ehtiyat üçün bir neçə dəqiqə vasitəsilə almaq, belə fikir ki, saxlamaq, və biz Həftə 0 başında olacaq. Biz əvvəl [0 Review Quiz!] [Kateqoriya 0] [Lexi Ross] Lakin edək haqqında danışmaq ki, Yarışmanın məntiqi. [Logistics] [Viktorina mühazirə əvəzinə Çərşənbə 10/10 yer tutur] [(Ətraflı məlumat üçün http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf baxın)] Bu Çərşənbə, Oktyabr 10 edir. Yəni bu Çərşənbə, və burada bu URL getmək əgər, da bir keçid CS50.net-orada 's erişilebilir it- siz əsasında getmək harada məlumat görə bilərsiniz Son adı və ya məktəb mənsubiyyətinə, habelə bu barədə dəqiq viktorina almaq olacaq ki, əhatə və suallar növləri nə deyir. Siz də bölməsində viktorina üçün gözden geçirmek üçün bir şans lazımdır ki, unutmayın, sizin TFS, bəzi praktiki problemləri üzərində gedən edilməlidir və siz hələ də viktorina üçün öyrənmək lazımdır görmək üçün yaxşı bir şans var. Bits 'n' Bytes ilə başında edək. Bir az bir 0 və ya 1-dir saxla və byte o bit 8 toplusudur. Burada bit bu kolleksiya baxaq. Biz orada nə qədər çox bit həyata rəqəm lazımdır. Biz saymaq harada onlardan 8, səkkiz 0 və ya 1 ədəd yalnız var. Və ildən 8 bit, 1 byte ki, var və in hexadecimal onu çevirmək bildirin. Hexadecimal bazası 16, və çevirmək üçün olduqca asan ikili bir sıra hexadecimal bir sıra ki, budur. Biz bütün biz, 4 qrup baxmaq deyil və biz müvafiq hexadecimal rəqəmli onları çevirmək. Biz 0011, 4 sağ ən qrupu ilə başlayın. Ki, birlikdə 3 edir ki, 1 və bir 2 olacaq. Və sonra 4 digər blok baxaq. 1101. Bu bir 1, 4 və birini 8 olacaq. Birlikdə D. edir, 13 olacaq Və biz hexadecimal biz yalnız 9 0 getmirlər unutmayın lazımdır. Biz, belə ki, 9 sonra, F vasitəsilə A 10 uyğun 0 getmək, F 15 olduğu 11 B, Et Cetera. Burada 13-a D belə ki, biz bütün biz əslində decimal çevirmək 2 bir güc kimi hər mövqe tutun. Bu 1, 2 biri sıfır 4s, sıfır 8, bir 16, Et Cetera var və sizin baş hesablamaq üçün bir az sərt, lakin biz növbəti slayd getmək əgər biz cavab görə bilərsiniz. Əsasən biz sol geri sağ daxilində olacaq və biz 2 müvafiq güc ilə hər rəqəmli vurulması edirik. Və unutmayın hexadecimal biz əvvəlində 0x ilə bu nömrələri adlanır biz bir decimal sayı ilə çaşdırmaq deyil. Davam, bu, bir ASCII Cədvəl edir və biz ASCII istifadə simvol ədədi dəyərlər xəritəsi edir. Bu Kriptoqrafiya pset xatırlayıram, biz ASCII Cədvəl geniş istifadə Kriptoqrafiya müxtəlif metodlardan istifadə üçün, müxtəlif məktublar çevirmək üçün Sezar və Vigenère parol, istifadəçi tərəfindən verilmiş əsas görə simli edir. Nin ASCII riyaziyyat bir az nəzər salaq. Q ki, karakter formasında, 'P' da + 1 Axtarıram, və '5 '≠ 5 unutmayın. Və necə məhz biz o 2 formaları arasında çevirmək istəyirsiniz? Bu, həqiqətən çox çətin deyil. 5 almaq üçün biz '0 çıxmaq ' çünki '0 arasında 5 yerlər var "və '5 '. Biz yalnız 0 əlavə digər yolla getmək üçün, belə ki, müntəzəm hesab kimi növ var. Yalnız bir şey ətrafında quotes var zaman bir xarakteri olduğunu unutmayın və beləliklə ASCII masa bir dəyər uyğundur. Daha ümumi kompüter mövzular hərəkət. Biz proqramlaşdırma istifadə üçün alqoritm və necə öyrəndim alqoritmlər həyata keçirmək. Alqoritmlərin Bəzi nümunələri kimi həqiqətən sadə bir şey var bir sıra hətta və ya tək olub yoxlanılması. Bunun üçün biz 2 sayı mod və nəticə 0 olub olmadığını kontrol unutmayın. Əgər varsa, o da var. Əgər, o, tək deyil. Və həqiqətən, əsas alqoritm bir misal var. Bir daha cəlb biri bir az ikili axtarış edir olan biz nəzərdən iclasında sonra artıq getmək lazımdır. Və proqramlaşdırma biz bir alqoritm görülməsi üçün istifadə müddəti və kompüter kod dönüştürmek oxuya bilərsiniz. Proqramlaşdırma 2 nümunələr, Not edir olan biz Həftə 0 nə edir. Biz əslində kodunu yazın yoxdur olsa da, həyata bir yol nömrələri 1-10 çap olan bu alqoritm, və burada biz C proqramlaşdırma dili eyni. Bu yalnız müxtəlif dillərdə və ya sintaksis yazılı funksional ekvivalent edir. Biz sonra, boolean ifadələrin haqqında öyrəndim və boolean, doğru və ya yalan ya ki, bir dəyər və burada oftentimes boolean ifadələrin əgər (x ≤ 5), şərait daxilində getmək, yaxşı, biz artıq bu şərtlə ki, doğru üçün qiymətləndirmək üçün gedir x = 5, belə müəyyən edilmişdir. Doğru varsa, hər hansı kodu şəraiti altında kompüter tərəfindən qiymətləndirilməlidir edir ki, cərgə çap olacaq standart çıxış və uzunmüddətli vəziyyətinə əgər hesabat mötərizə içərisində nə aiddir. Bütün operatorların saxla. | Biz çalışdığınız zaman birləşdirmək üçün 2 və ya daha çox şərait, | bu && və saxla == Deyil = 2 şeyi bərabər olub yoxlamaq. == Bir boolean operator isə = tapşırıq üçün olduğunu unutmayın. ≤, ≥ və sonra son 2 özünü izahlı edir. Burada boolean məntiq ümumi icmalı. Və boolean ifadələr, loops da vacibdir olan biz artıq getmək lazımdır. Biz isə, üçün, CS50 günə qədər loops haqqında 3 növ öyrəndim və zamanı yoxdur. Və bilmək vacibdir ki, ən məqsədləri üçün isə biz, həqiqətən, ümumiyyətlə loop hər hansı bir növü istifadə edə bilərsiniz məqsədləri və ya ümumi nümunələri müəyyən növləri var xüsusilə bu loops bir zəng proqramlaşdırma onu ən səmərəli və ya şəkildə kod üçün zərif. Nin bu loops hər tez-tez istifadə etmək üçün çalışır nə üzərində getmək edək. Bir loop üçün biz ümumiyyətlə artıq biz təkrarlamaq istəyirəm neçə dəfə bilirik. Yəni şəraitində qoymaq budur. Üçün i = 0, i <10, misal üçün. Biz artıq biz bir 10 dəfə etmək istəyirəm ki, bilirik. İndi isə loop üçün, ümumiyyətlə, biz mütləq deyil biz loop almaq istəyirsinizsə neçə dəfə bilirik. Amma biz onu istəyirəm ki, vəziyyət bir növ bilmirəm həmişə doğru və ya həmişə saxta ola bilər. Məsələn, isə müəyyən edilir. Gəlin boolean dəyişən olduğunu deyirlər. Ki, doğru olsa biz kodu qiymətləndirmək istəyirəm, bir az daha genişlənən, loop üçün daha ümumi bir az bit, lakin loop üçün heç də bir müddət loop çevrilmişdir bilər. Nəhayət, nə isə dərhal anlamaq üçün trickiest ola bilər loops, biz ilk kodu qiymətləndirmək üçün istədiyiniz zaman tez-tez istifadə olunur ilk əvvəl biz vəziyyəti yoxlamaq. Bir üçün ümumi istifadə halda nə isə loop Kullanıcı daxil olmaq üçün istədiyiniz zaman, və siz istifadəçi soruşmaq istəyirəm bilirik giriş üçün ən azı bir dəfə, lakin onlar yaxşı giriş vermir əgər dərhal Əgər onlar sizə yaxşı giriş vermək qədər onlara xahiş saxlamaq istəyirik. Isə loop bir ən ümumi istifadə, bunu var və-nin bu loops faktiki strukturu baxaq. Onlar adətən həmişə bu nümunələri riayət edirlər. Daxili üçün loop siz 3 komponentləri vardır: başlatma, adətən bir şey kimi int i əks olduğu = 0, biz bu vəziyyət hələ malikdir kimi uzun kimi loop üçün run demək istədiyiniz vəziyyəti, biz arttırmayı necə olan i nəhayət sonra <10 və yeniləmə kimi loop hər nöqtədə counter dəyişən. Orada görmək üçün ümumi şey, yalnız i + + edir 1-hər zaman i arttırmayı deməkdir. Siz həmçinin, i + = 2 kimi bir şey edə hansı i sizə loop keçmək hər dəfə 2 əlavə deməkdir. Və sonra bunu yalnız həqiqətən loop hissəsi kimi çalışır ki, hər hansı bir kodu aiddir. Və bir müddət loop üçün, bu dəfə biz, həqiqətən, loop kənarda başlatma var belə misal üçün, biz yalnız təsvir loop eyni tipli etmək çalışdığınız demək bildirin. Biz int i = 0 loop başlayır əvvəl deyərdim. I <10 bu isə sonra biz, demək olar əvvəl kodu belə eyni məhəllə, və bu zaman məsələn kodu yeniləmə hissəsi, i + +, əslində loop daxilində gedir. Və nəhayət, bir, bu isə loop oxşar isə etmək, lakin biz kodu dəfə qiymətləndirmək unutmayın var vəziyyəti yoxlanılır əvvəl, belə ki, daha çox əhəmiyyət kəsb edir siz alt üst üçün baxmaq. əgər Bir bile isə vəziyyət baxmaq əvvəl loop kodu qiymətləndirir isə etmək, bir müddət loop isə, ilk yoxlayır. Hesabatları və dəyişənlər. Yeni bir dəyişən yaratmaq istədiyiniz zaman biz ilk başlamaq istəyirəm. Məsələn, int bar, dəyişən bar initializes lakin indi bar dəyəri nə ki, bir dəyər vermir? Biz bilmirik. Bu, əvvəllər orada yaddaşında saxlanılır ki, bəzi zibil dəyər ola bilər və biz dəyişən istifadə etmək istəmirik biz, həqiqətən, bir dəyər verir, qədər biz burada bəyan edir. Sonra aşağıdakı 42 olmaq başlamaq. İndi, əlbəttə, biz bu xətt üzrə int bar = 42 edilə bilər bilirik. Lakin, davam edir ki, bir çox addımlar təmizləmək üçün bəyannamə və başlatma burada ayrı-ayrı olur. Bu, növbəti bir, int baz = bar + 1 bir addım olur, və bu kodu blokunun sonunda aşağıda bu bəyanat ki, əlavələr baz, biz baz dəyəri çap idi əgər 44 olardı biz bəyan və 1> bar olmaq üçün başlamaq çünki və sonra biz bir daha arttırmayı də + +. Biz bu olduqca qısa keçdi, ancaq bir ümumi var yaxşı mövzuları və hadisələri nə dərk. Biz əsasən, Not bu idi belə ki, kodu birdən ardıcıllığı kimi mövzuları hesab edə bilər eyni zamanda çalışır. Aktuallığı, bu, yəqin ki, eyni zamanda çalışan deyil lakin növ abstractly ki şəkildə hesab edə bilər. Not Məsələn, biz çox sprites idi. Bu eyni zamanda müxtəlif kodu icra edilə bilər. Başqa bir şey söylədiyini isə bir gəzinti edilə bilər ekran müxtəlif hissəsi. Hadisələr məntiq həyata ayıran başqa bir yolu kodunuzu müxtəlif elementləri arasında, və Scratch biz Yayım istifadə hadisələr simülasyonu edə Mən əldə zaman və ki, mən eşitmək deyil, həqiqətən var lakin mahiyyətcə informasiya ötürmək üçün bir yol var bir sprite başqa. Məsələn, siz, oyun üzərində ötürmək bilərsiniz və başqa sprite üzərində oyun qəbul edərkən, o müəyyən bir şəkildə cavab verir. Bu proqramlaşdırma anlamaq üçün əhəmiyyətli model deyil. Yalnız əsas Həftə 0 artıq getmək, nə biz bu günə qədər üzərində getdi sonra, bu sadə C proqram baxaq. Mətni burada kiçik bir az ola bilər, amma artıq həqiqətən sürətli getmək lazımdır. Biz üst cs50.h və stdio.h 2 mövzu faylları o cümlədən edirik. Biz sonra 100 olmaq üçün daimi adlı limit müəyyən edirik. Biz sonra bizim əsas funksiyası həyata edirik. Biz burada command line arguments istifadə etməyin ildən biz etibarsız qoymaq lazımdır əsas üçün arqumentlər kimi. Biz əsas yuxarıda int görürük. Qaytarılması növü var ki, buradan altındakı 0 qaytarın. Və biz int almaq CS50 kitabxana funksiyası istifadə etdiyiniz giriş üçün istifadəçi xahiş və bu dəyişən x onu saxlamaq üçün, biz yuxarıda x elan və biz x = GetInt ilə başlamaq. Biz istifadəçi bizə yaxşı giriş verdi kontrol edin. Bu ≥ LIMIT varsa biz 1-bir səhv baş kodu qayıtmaq və bir səhv baş beledir çap etmək istəyirəm. Və nəhayət, istifadəçi bizə verdiyi əgər yaxşı giriş biz sayı vaziyeti və nəticə çap olacaq. Sadəcə əmin olun ki, o hit ev bütün Burada kodu müxtəlif hissələrinin yazıları bilərsiniz. Mən daimi, mövzu faylları qeyd edib. Oh, int x. Yerli dəyişən var unutmayın ki, əmin olun. Biz haqqında danışmaq lazımdır ki, qlobal dəyişən bu Təzadlar bir az sonra nəzərdən iclasında, və biz printf kitabxana funksiyası zəng biz stdio.h header fayl daxil deyil əgər biz printf zəng edə bilməz. Mən burada kəsilmiş oldu ki arrow% d işarə edir printf bir format string olan. Bu sayı,% d bu dəyişən çap edir. Və Həftə 0 deyil. İndi Lucas davam edir. Hey, uşaqlar. My name Lucas edir. Mən, universitet, Mather ən yaxşı ev bir sophomore deyiləm və mən həftə 1 və 2,1 haqqında bir az danışmaq üçün gedirəm. [1 Hafta və 2.1!] [Lucas Freitas] Biz sıfırdan C üçün kodu tərcümə başladı Lexi deyən kimi biz qeyd edir ki, hər biri yalnız bilər ki, Sizin kodu yazmaq və artıq yaşıl bayraq istifadə edərək axır. Əslində, siz C proqram etmək üçün bəzi addımlar istifadə etmək bir faylı olur. Əsasən hansı bir proqram yazı etdiyiniz zaman siz ki, Əgər bir compiler anlamaq olar ki, bir dil sizin fikir tərcümə C bir proqram yazıyoruz belə zaman nə edirik həqiqətən, sizin compiler anlamaq üçün gedir ki, bir şey yazır, və sonra compiler kod tərcümə edir kompüter anlamaq ki, bir şey daxil. Və şey, kompüter həqiqətən çox lal edir. Sizin kompüter yalnız 0s və 1s anlaya belə əslində ilk kompüter insanlar adətən proqramlaşdırılmış artıq 0s və 1s, lakin istifadə edərək, Allah təşəkkür edirəm. Biz 0s və 1s üçün ardıcıllığı yadda yoxdur loop və ya bir müddət loop və s. üçün üçün. Biz bir compiler var görə. Nə compiler edir ki, əsasən C kodu tərcümə edir bizim halda, kompüter anlamaq bir dil, olan obyekt kodunu və biz istifadə etdiyiniz compiler edir zınqıltı adlanır, belə ki, bu, həqiqətən, cingilti üçün rəmzidir. Siz proqram zaman, siz 2 şeyə var. Birincisi, sizin proqram tərtib etmək, və sonra sizin proqram run olacaq. Bunu variantları bir çox proqram tərtib etmək. Ilk bir cingilti program.c etmək olan proqram, proqramın adıdır. Bu halda onlar yalnız deyərək edirik görürük "Hey, mənim proqram tərtib edir." Siz və ya bir şey "Mən proqramı üçün bu adı mənə" deyərək deyilik. İkinci seçim proqram bir ad verir. Sonra cingilti-o və siz istədiyiniz adı demək olar yürütülebilir fayl kimi və sonra program.c adına edilir. Və həmçinin proqram etmək üçün, və ilk 2 hallarda görmək olar Mən. C qoymaq və üçüncü mən yalnız proqramları var? Bəli, həqiqətən qoymaq lazımdır. C siz istifadə zaman. Əks halda compiler həqiqətən sizə fəğan edir. Uşaqlar xatırlayıram varsa da, mən bilmirəm lakin biz də istifadə-lcs50 ya-lm dəfə çox. Bu keçid adlanır. Bu, sadəcə, siz orada bu kitabxana istifadə edəcək compiler deyir siz cs50.h istifadə etmək istəyirsinizsə əgər həqiqətən yazın var zınqıltı program.c-lcs50. Siz bunu deyil varsa, compiler bilmək niyyətində deyil siz cs50.h. bu funksiyaları istifadə etdiyiniz Və siz 2 variantları proqram çalıştırmak üçün istədiyiniz zaman. Siz cingilti program.c Əgər sizin proqram üçün bir ad vermədi. Siz. / A.out istifadə edərək, run var. A.out siz bir ad vermək yoxsa cingilti proqram verir ki, standart ad. Sizin proqram üçün bir ad verdi Əks təqdirdə siz. / Proqram nə olacaq, siz proqram adı etmək Əgər, həmçinin bir proqram olacaq ki, artıq c fayl eyni adı proqramlaşdırılmış edir. Sonra data növləri və data danışdı. Əsasən data növləri istifadə etdikləri kiçik qutu eyni şey dəyərlər saxlamaq üçün, belə ki, data növləri yalnız Pokémons kimi əslində. Onlar bütün ölçü və növ olur. Ki, analogiya anlamlı əgər mən bilmirəm. Bu data ölçüsü əslində maşın memarlıq asılıdır. Burada göstərmək gidiyorum olan məlumatların ölçüləri bizim cihaz halda olan bir 32-bit maşın üçün faktiki lakin həqiqətən, sizin Mac və ya Windows də kodlaşdırma əgər yəqin ki, bir 64-bit maşın var olacaq Mən gedirəm ki, data ölçüləri burada göstərmək unutmayın 32-bit maşın üçün. Gördük ki, birinci, bir int idi olan olduqca sadə deyil. Siz tam saxlamaq üçün int istifadə edin. Biz, həmçinin, karakter ki, char gördüm. Bir məktub və ya bir az simvol istifadə etmək istəyirsinizsə, siz yəqin ki, char istifadə olacaq. A char Lexi bildirib kimi 8 bit, deməkdir 1 byte var. Əsasən biz 256 olan bir ASCII Cədvəl var 0s və 1s mümkün birləşməsi, və sonra bir char yazın zaman tərcümə olacaq karakter giriş siz Lexi kimi ASCII masa var ki, bir sıra söylədi. Biz həmçinin decimal nömrələri saxlamaq üçün istifadə edən float var. Siz 3.14 seçmək istəyirsinizsə, misal üçün, bir float istifadə etmək olacaq və ya daha dəqiq bir cüt. A float 4 bayt var. A ikiqat 8 bayt var, belə ki, yalnız fərq dəqiq deyil. Biz də tam ədədlər üçün istifadə olunur ki, uzun var və bir int və uzun eyni ölçüdə bir 32-bit maşın üçün bilərsiniz belə ki, həqiqətən bir 32-bit maşın uzun istifadə etmək məntiqli deyil. Mac və 64-bit maşın kullanıyorsanız Lakin, həqiqətən, uzun, ölçüsü 8 malikdir belə ki, həqiqətən memarlıq asılıdır. 32-bit maşın üçün həqiqətən uzun istifadə etmək məntiqli deyil. Və sonra uzun uzun, digər tərəfdən, 8 bayt var bir daha tam etmək istəyirsinizsə buna çox yaxşıdır. Və, nəhayət, biz, həqiqətən, char * olan, simli var bir char bir göstəricisidir. Bu simli ölçüsü kimi olacaq edirəm ki, çox asandır siz var simvolların sayı lakin əslində char * özü 4 bayt olan char, bir pointer də ölçüsü var. Bir char * həcmi 4 bayt edir. Bir kiçik söz və ya bir məktub və ya bir şey varsa, fərqi yoxdur. O, 4 bayt olacaq. Biz həmçinin tökmə haqqında bir az öyrəndim varsa siz görə bilərsiniz kimi, misal üçün, proqram deyir ki, int x = 3 və sonra printf ("% d" x / 2) uşaqlar bu ekranda çap neler bilirik? Biri? >> [Tələbələr] 2. 1. >> 1, evet. 3/2 nə zaman o, 1.5 olacaq biz tam istifadə etdiyiniz ildən lakin decimal hissəsi ignore olacaq və 1 var olacaq. Siz ki, misal üçün, nə baş istəmirsinizsə bir float elan olunur y = x. Sonra 3 olmaq üçün istifadə ki, x indi y ildə 3.000 olacaq. Və sonra y / 2 çap edə bilərsiniz. Əslində, mən bir 2 olmalıdır. orada. Bu, 3.00/2.00 nə olacaq və 1,5 almaq olacaq. Və biz yalnız decimal hissəsində 2 ədəd decimal soruşmaq üçün bu .2 f var. Siz .3 f varsa faktiki 1.500 var olacaq. O varsa 2 1.50 olacaq. Biz də burada bu vəziyyət var. Siz float Əgər x = 3.14 və sonra printf x siz 3.14 almaq olacaq. Və əgər x x = olan int, bir int kimi x müalicə deməkdir və indi x çap hansı siz 3.00 malik olacaq. Bu mənada edirmi? Ilk bir tam kimi x müalicə edirik Çünki, belə ki, siz decimal hissəsi məhəl edirik və sonra x çap edirik. Və nəhayət, siz də bunu edə bilərsiniz int x = 65, və sonra bir char c = x bəyan siz c çap əgər, sonra həqiqətən almaq olacaq A, burada belə əsasən nə edirik , karakter daxil tam tərcümə olunur yalnız kimi ASCII Cədvəl edir. Biz həmçinin riyaziyyat operatorları danışdı. Onların çoxu olduqca sadə, belə +, -, *, /, və həmçinin 2 ədəd bölgüsü qalan olan mod haqqında danışdı. Məsələn, 10% 3, varsa, 3 10 bölmək deməkdir və qalan nədir? Bu 1 olacaq, belə ki, proqramları bir çox üçün həqiqətən çox faydalıdır. Vigenère və Caesar üçün Mən sizə uşaqlar bütün mod istifadə olduqca əminəm. * Və / birləşən zaman riyaziyyat operatorlar haqqında, çox ehtiyatlı olun. Əgər məsələn, (3/2) * 2 nə almaq üçün gedir? [Tələbələr] 2. Bəli, 2, 3/2, çünki 1.5 olacaq, ancaq 2 integers arasında əməliyyatlar edirik bəri həqiqətən, yalnız 1-hesab olacaq və sonra 1 * 2 2 olacaq, belə ki, çox, çox ehtiyatlı olun integers ilə hesab edərkən, çünki siz bu halda ki, 2 = 3 əldə edə bilər. Həmçinin üstün çox ehtiyatlı olun. Siz adətən siz yapýyorsun nə əmin olmaq parantez istifadə etməlidir. Bəzi faydalı qısa yolları, əlbəttə, bir i + + və ya i + = 1 və ya istifadə + =. Bu i = i + 1 etməklə eyni şeydir. Siz həmçinin i edə bilərsiniz - və ya i - = 1, ki, i = i -1 eyni şey bir şey uşaqlar ən azı, loops üçün bir çox istifadə edir. Həmçinin, * üçün, * = və əgər, misal üçün istifadə əgər, i * = 2 i = i * 2 deyərək eyni şey, və şöbə üçün eyni şey. Siz i / = 2 Əgər bu i = i / 2 eyni şey. İndi funksiyaları haqqında. Siz uşaqlar funksiyaları kodu saxlamaq üçün çox yaxşı bir strategiya olduğu öyrənildi Əgər proqramlaşdırma etdiyiniz zaman, belə ki, həmin tapşırıq yerinə istəyirsinizsə kodu təkrar, yəqin ki, bir funksiyasından istifadə etmək istəyirəm yalnız belə yenə üzərində kodu seçin və yapışdırıb yoxdur. Əslində, əsas funksiyası, və mən bir funksiyası format olanda ki, olduqca aydın görmək olacaq. Biz, həmçinin, bəzi kitabxana funksiyalarının istifadə Məsələn, printf ki, CS50 kitabxana olan GetIn, və toupper kimi digər funksiyaları. Bu funksiyaları bütün həqiqətən, digər kitabxanalarda həyata keçirilir və siz proqram əvvəlində o hörük faylları qoymaq zaman Siz mənə funksiyaları üçün kodu verin bilər deyərək edirik mən özüm onların həyata keçirilməsi üçün yoxdur? Və siz də proqramlaşdırma başlamaq zaman, öz funksiyaları yaza bilərsiniz siz kitabxana sizə lazım olan bütün funksiyaları yoxdur bilirik. Son pset üçün, misal üçün, biz, scramble çəkmək və axtarış yazdı və funksiyaları yazmaq etmək üçün çox vacibdir onlar faydalıdır və biz onları proqramlaşdırma bütün vaxt istifadə, çünki, və kodu bir çox saxlayır. Bir funksiyasının format bu biridir. Biz əvvəlində qayıtması növü var. Qaytarılması növü nədir? Bu funksiya geri gedir zaman yalnız var. Siz faktöryel məsələn bir funksiyası, varsa ki, bir tam bir faktöryel hesablamaq gedir Yəqin ki, bu da bir tam geri olacaq. Sonra geri növü int olacaq. Printf həqiqətən bir dönüş növü boşluq var bir şey qaytarılması deyilik, çünki. Siz yalnız ekran şeyi çap edirik və sonra funksiyanı çıxdıqda. Sonra, siz seçə bilərsiniz ki, funksiyası adı var. Xyz kimi bir ad seçin yoxdur kimi Siz, bir az ağlabatan olmalıdır və ya x2f kimi. Anlamlı bir ad etmək üçün cəhd edin. Məsələn, faktöryel varsa, faktöryel deyirlər. Bir şey cəlb edir bir funksiya varsa, bu çəkmək adı. Və sonra biz də dəlillər adlanan parametrləri, var, Sizin funksiyası ehtiyacı resursları kimi olan var kodunuzu onun vəzifəsi yerinə yetirmək. Bir sıra faktöryel hesablamaq istəyirsinizsə yəqin ki, bir faktöryel hesablanması üçün bir sıra lazımdır. Siz olacaq ki, arqumentlərdən biri sayını özü edir. Və sonra bir şey və sonunda dəyəri geri olacaq bir boşluq funksiyası var halda. Nin bir örnek görmek edək. Mən integers bir sıra bütün nömrələri yekunlaşdırır bir funksiya yazmaq istəyirsinizsə ilk növbədə, qaytarılması növü int olacaq Mən integers bir sıra var. Və sonra mən sumArray kimi funksiyası adı gedirəm sonra, int nums üçün array özü almaq olacaq və sonra mən vurmaq üçün nə qədər nömrələri bilirik belə serialın uzunluğu. Sonra 0 misal üçün dəyişən deyilən məbləğ, başlamaq üçün Mən array bir element görmək hər dəfə cəmi əlavə olunmalıdır, mən loop üçün etdi. Lexi dediyi kimi, siz int i = 0, i 0 varsa onda müsbət var deyir. O 0 = varsa onda 0, ve <0 varsa onda mənfi var. Başqa, əgər başqa, əgər biri edir. Arasında fərq bu həqiqətən gedir ki, yoxlamaq əgər> 0, <0 və ya = 0 üç dəfə, siz 2 saylı varsa, məsələn, buraya gəlmişəm və demək olacaq bu yes demək olacaq (x> 0) əgər, və mən müsbət çap. Amma> 0 ki, bilirik və 0 və ya <0 olacaq deyil, baxmayaraq Mən hələ 0 etməyə gedirəm, o, <0 olur Mən, həqiqətən, Mən olmadığını ifs daxilində gedirəm Mən artıq bu şərtlərdən hər hansı təmin etmək niyyətində deyil ki, bilirik, çünki. Mən bəyanat başqa, əgər başqa, əgər istifadə edə bilərsiniz. X = 0 I müsbət çap əgər əsasən deyir. O deyil, mən də bu test gedirəm. 2 varsa mən bunu gidiyorum deyil. Mən x = 2 olsa əsasən deyərdim (x> 0) halda, bəli, bu çap. İndi o> 0 ki, bilirik ki, bu, ilk əgər razı Mən hətta bu kodu run niyyətində deyiləm. Bu istifadə əgər kodu 3 dəfə daha sürətli, həqiqətən, daha sürətli uzanır. Biz həmçinin və ya öyrənildi. Mən Lexi artıq onlara danışdı çünki bu yolu getmək niyyətində deyiləm. | Operator | Bu, yalnız && və var. Mən demək lazımdır yalnız 3 şərait zaman ehtiyatlı edir. Çox confusing çünki bir vəziyyət zaman mötərizə istifadə edin və başqa bir və ya başqa biri. Yalnız şərait mənada əmin olmaq parantez istifadə edin Bu halda, misal üçün, siz təsəvvür edə bilərsiniz ki Birinci vəziyyəti və bir və ya bir başqa ola bilər və ya 2 birləşdirilmiş şərtləri və və ya üçüncü, belə ki, yalnız ehtiyatlı olun. Və, nəhayət, biz açarları haqqında danışdıq. Bir dəyişən zaman bir keçid çox faydalıdır. Gəlin siz n kimi bir dəyişən var ki, ki, 0, 1, 2 və ya ola bilər, və bu halda hər bir bir tapşırıq yerinə yetirmək üçün olacaq. Siz dəyişən keçid demək olar ki, bu onu göstərir ki, dəyəri, sonra value1 kimi mən bunu gidiyorum edir və sonra qırmaq, hansı mən digər hallarda hər hansı baxmaq gitmiyorum deməkdir biz artıq bu halda razı çünki və sonra value2 və s və mən də bir-u mənim keçid ola bilər. Mən olduğu hallarda hər hansı qane etmir əgər o deməkdir ki, Mən başqa bir şey gedirəm, lakin isteğe var. Mənim üçün bütün var. İndi Tommy var olsun. Bütün hüquqlar, bu həftə 3-ish olacaq. Bu, biz Et Cetera kripto, əhatə dairəsi, diziler, əhatə olacaq bəzi mövzuları var. Kripto yalnız tez söz. Biz bu ev çəkic etmək fikrində deyilik. Biz pset 2-də bu, ancaq viktorina üçün siz fərq bilirik əmin olun olan Sezar parol və Vigenère parol arasında, o ciphers iş həm və nə şifrelemek kimi necə o 2 ciphers istifadə və decrypt mətn. Unutmayın, Sezar parol sadəcə, həmin məbləğ hər bir xarakteri qaytarır əlifba hərflərin sayı siz mod əmin edir. Və Vigenère parol, digər tərəfdən, hər bir xarakteri qaytarır müxtəlif məbləği, belə ki, daha çox dedi-dən çox 3 Vigenère hər xarakter qayıdacaqdır hər bir xarakter dönüşümlü bir söz asılı olaraq müxtəlif məbləği söz hər bir məktub bəzi fərqli məbləğ təmsil yerləşir tərəfindən aydın mətn dönüşümlü. Dəyişən həcmi barədə ilk müzakirəsi edək. Dəyişənlərin 2 müxtəlif növü var. Biz yerli dəyişənlər var və bu müəyyən edir kənarda əsas və ya hər hansı funksiyası və ya blok kənarda, və bu proqram hər hansı əlçatan olacaq. Bir funksiyası var və funksiyası isə loop deyil böyük qlobal dəyişən hər yerdə erişilebilir. Yerli dəyişən, digər tərəfdən, bu, müəyyən yer scoped edir. Burada bir funksiyası varsa, məsələn, biz bu funksiya g var və g daxilində y çağırıb burada bir dəyişən var və bu yerli dəyişən deməkdir. Bu dəyişən y adlanır baxmayaraq, və bu dəyişən bu 2 funksiyaları Y adlanır bir-birinin yerli dəyişənlər nə heç bir fikrim yoxdur. Digər tərəfdən, qədər burada biz int x = 5 demək və bu heç bir funksiyası kənarda deyil. Bu əsas kənarda deyil, bu qlobal dəyişir. Və ya x + + - Mən x deyəndə ki, bu 2 funksiyaları ki, daxili deməkdir Mən bu y və bu y müxtəlif dəyişənlər var vasitəsi eyni x daxil oldum. Qlobal dəyişən və yerli dəyişən arasında fərq var. Bildiyimə dizayn narahatdır kimi, bəzən yəqin ki, daha yaxşı bir fikirdir siz bəlkə bilər zaman dəyişənlərin yerli saxlamaq olan bəri qlobal dəyişənlər bir dəstə həqiqətən confusing əldə edə bilərsiniz. Siz funksiyaları bir dəstə varsa, bütün eyni şey dəyişmək bu funksiya təsadüfən bu qlobal düzəliş nə əgər siz unutmaq bilər və bu digər funksiyası, bu barədə bilmir daha çox kodunu və bu olduqca şaşırtıcı əldə edir. Siz bəlkə bilər zaman dəyişənlərin yerli saxlanması yalnız yaxşı dizayn edir. Diziler, unutmayın, sadəcə eyni tipli elementlərin siyahıları var. CI daxilində hello, 1, 2.0 kimi bir siyahı ola bilməz. Biz yalnız bunu edə bilərsiniz. Biz C bir sıra bəyan zaman bütün öğeleri eyni tipli olmalıdır. Burada 3 integers bir sıra var. Burada serialın uzunluğu var, amma yalnız bu sintaksis onu bəyan edirəm əgər Mən bütün öğeleri mən texniki bu 3 ehtiyac yoxdur hansı daxil yerləşir. Bu compiler serialın olmalıdır necə böyük anlamaq üçün kifayət qədər ağıllı deyil. İndi bir sıra dəyəri almaq və ya qurmaq üçün istədiyiniz zaman bu buna sintaksis edir. , Xatırlayıram, çünki bu, həqiqətən, serialın ikinci element dəyişdirmək edəcək, sayı 1 deyil, 0 başlayır. Hesab edirəm ki, dəyəri oxumaq istəyirsinizsə mən kimi bir şey demək olar int x = array [1]. Hesab edirəm ki, dəyəri müəyyən etmək istəyirsinizsə və ya, kimi, mən burada yapýyorum Mən array [1] demək olar = 4. Onların indeksi elementləri daxil o zaman və ya öz mövqeyini və ya onlar array var, və siyahı 0 başlayır. Biz, həmçinin, seriallarda və seriallarda ola bilər və bu çox ölçülü array adlanır. Biz çox ölçülü array zaman biz satır ve sütun kimi bir şey ola bilər o deməkdir ki, və bu görselleştirilmesi və ya bu barədə düşüncə yalnız bir yoludur. Mən çox ölçülü array zaman ki ehtiyacı başlamaq gedirəm deməkdir çox 1 index çünki bir grid var əgər yalnız siz olduğunuz sıra deyərək bizə bir sıra deyil. Bu, həqiqətən, yalnız bizə nömrələri siyahısını təqdim edəcək. Gəlin burada bu array var deyirlər. Mən grid deyilən bir sıra var və mən, bu 2 satır və 3 sütun dedi alıram və bu o görselleştirilmesi bir yoldur. Mən [1] olan element almaq istəyirəm deyəndə [2] bu satır ilk və sonra sütunlar, çünki o deməkdir ki, Mən 1 dedi ildən 1 Satırı atlamak üçün gedirəm. Sonra sütun 2 buraya gəlib gedirəm, mən dəyəri 6 almaq üçün gedirəm. Mənada etmək? Multi-ölçülü Diziler, unutmayın, texniki serialların yalnız bir sıra var. Biz seriallarda və seriallarda və seriallarda ola bilər. Biz davam edə bilər, lakin düşünmək həqiqətən bir yolu Bu müəyyən edilir və neler necə görüntüləmək üçün bu kimi bir grid. Biz funksiyaları serialların keçmək zaman, onlar hərəkət olacaq biz funksiyaları müntəzəm dəyişənlərin keçmək zaman çox fərqli bir az bir int və ya float keçən kimi. Biz int və ya char və ya digər məlumatları heç bir növ keçmək zaman biz yalnız funksiyası düzəliş əgər nəzər etdi dəyişiklik qədər təbliğ etmək niyyətində deyil ki, dəyişən dəyəri zəng funksiyası. Bir sıra ilə, digər tərəfdən, bu baş verəcək. Mən bəzi funksiyası bir sıra keçmək və funksiyası, elementləri bəzi dəyişikliklər varsa, Mən bunu adlanan funksiya qədər geri gələndə mənim array indi müxtəlif olacaq və üçün lüğət edir biz sonra görəcəksiniz kimi seriallarda, arayış qəbul edilir. Bu necə göstəricilərinə iş olduğu bu əsas məlumat növləri, bağlı digər tərəfdən, dəyəri qəbul olunur. Biz dəyişən surəti edilməsi və sonra surəti keçən kimi hesab edə bilər. Bu dəyişən ilə nə əhəmiyyətli deyil. Zəng funksiyası dəyişdirilə ki, xəbərdar olmayacaq. Diziler bununla bağlı müxtəlif yalnız bir az var. Biz yalnız gördüm Məsələn, əsas sadəcə bir funksiyası ki, 2 mübahisələrdə bilər. Əsas funksiyası ilk dəlil, argc, ya dəlilləri sayı və ikinci arqument argv adlanır və o bu arqumentləri faktiki dəyərlərdir. Gəlin, mən this.c adlı proqram var demək və mən bu etmək demək, mən command line bu çalıştırmak üçün gedirəm. İndi proqram bəzi dəlilləri keçmək, bu deyilən Mən bir şey kimi demək olar. / Bu cs 50. Bu terminal hər gün David bunu təsəvvür edir. Proqram Amma indi əsas funksiyası daxilində bu dəyərləri var, belə argc 4. Həqiqətən biz yalnız cs 50 keçən edirik, çünki bir az çaşdırıcı ola bilər. Bu yalnız 3 var. Amma unutmayın ki argv ilk element və ya ilk dəlil funksiyası özü adı. Belə ki, biz burada 4 şeylər var deməkdir və ilk element. / Bu olacaq. Bu simli kimi təmsil olunacaq. Sonra qalan elementləri biz proqramı adına çap edir. So kənara yalnız kimi, biz yəqin ki, pset 2 gördüm kimi, simli 50 tam 50 ≠ ki, xatırlayıram. Beləliklə, biz kimi bir şey deyə bilmərəm "int x = argv 3. Bu simli Ona görə ki, yalnız hissi etmək niyyətində deyil və bu, bir tamsayı edir. Siz 2 arasında çevirmək istəyirəm əgər, unutmayın, biz olacaq atoi adlanan bu sehrli funksiyası var. Bu simli edir və simli daxilində təmsil tam qaytarır. Belə ki, viktorina etmək üçün asan bir səhv var bu avtomatik olaraq düzgün növü olacaq düşünür. Amma yalnız bu həmişə strings olacaq bilirik ki, simli yalnız bir tam və ya bir simvol və ya bir float şey belə. Belə ki, indi vaxt çalışan haqqında danışmaq edək. Biz bütün bu crazy şeyi ki, bütün bu alqoritmlərin zaman, ki, sual həqiqətən faydalı olur "onlar nə qədər alır?" Biz asimptotik notation deyilən bir şey ilə təmsil edir. Yaxşı, biz bizim alqoritm vermək deyək - bu o deməkdir ki, həqiqətən, həqiqətən, həqiqətən, böyük girdi. Biz sual soruşmaq istəyirəm, "nə qədər onu gedir? Neçə addım run üçün alqoritm keçiriləcək giriş həcmi funksiyası kimi? " Beləliklə, biz İş Vaxtı təsvir edə bilərsiniz ilk yol böyük O. ilə Bu bizim ən pis halda davam zamanı. Biz array sort istəyirəm əgər, və biz alqoritm bir sıra vermək it artan qaydada olmalıdır ki, azalan deyil ki, ən pis halda olacaq. Bu, bizim alqoritmi olacaq zaman maksimum uzunluğu bağlı bizim üst edir. Digər tərəfdən, bu Ω ən yaxşı halda süresi təsvir edir. Biz bir çeşidlənməsi alqoritm üçün artıq sıralanır array vermək əgər, bu düzmək üçün nə qədər olacaq? Bu, o zaman running bir aşağı bound təsvir edir. Belə ki, burada bəzi ümumi running dəfə təsvir yalnız bir söz var. Bu sıralama artan sıralama var. Biz sürətli çalışan zaman sabit adlanır. Bizim alqoritm vermək neçə elementləri olursa olsun, o deməkdir ki, bizim array bu çeşidlənməsi, nə qədər böyük olursa olsun və ya biz array etdiyini etdiyiniz nə etdiyini həmişə eyni miqdarda olacaq. Belə ki, yalnız bir sabit olan, 1 ilə təmsil edə bilər. Biz də logarithmic run zaman baxdı. Belə ikili axtarış kimi bir şey, logarithmic edir biz yarım hər vaxt problem kəsmək yerləşir və sonra şeylər orada ali almaq. Və heç bir faktöryel alqoritm bir O yazılı edirsinizsə, yəqin ki, sizin gün iş kimi hesab edilməlidir. Yayınlanmasını dəfə müqayisə zaman nəzərə bunlar saxlamaq vacibdir. Mən O (n) ki, alqoritm və başqası varsa O bir alqoritm (2n) Bu həqiqətən asimptotik bərabər olmuşdur. We eleventy milyard kimi böyük bir sayı n təsəvvür əgər: biz eleventy milyard kimi bir şey + 3 eleventy milyard müqayisə etdiyiniz zaman, birdən that +3 həqiqətən artıq bir böyük fərq etmir. Biz bu şeylər ekvivalent olması nəzərə başlamaq olacaq görə. Burada bu sabitləri kimi şeylər ki, orada 2 x Bu,, ya 3 əlavə bunlar yalnız sabitləri və bu qədər düşməsi davam edir. These run dəfə bütün 3 onlar O (n) etdiyiniz deyərək eyni niyə Belə ki var. Biz 2 digər run dəfə Benzer şekilde, O (n ³ + 2n ²), biz əlavə edə bilərsiniz deyək Sonra + n + 7, və biz yalnız O ki, bir run zaman (n ³) var. bu eyni deyil - bu, çünki yenə bu eyni şey var. Bunlar eyni şeylər, sorry. Belə ki, bu eyni, çünki this n ³ this 2n ² üstünlük təşkil edir. We O (n ³) və O kimi dəfə run əgər nədir eyni şey deyil (n ²) this n ³ this n ² çox böyük deyil. We eksponent varsa Belə ki, birdən-birə bu məsələ başlayır Burada qədər kimi deyil, biz yalnız, amillər ilə məşğul olduğunuz zaman o, yalnız çıxmaq edir, çünki məsələ gedən deyil. Biz bu günə qədər gördüm alqoritmlər bir nəzər salaq və onların run zaman haqqında danışmaq. Siyahısına bir sıra axtarır ilk yolu, gördük ki, xətti axtarış idi. Və xətti axtarış həyata super sadə deyil. Biz yalnız bir siyahısı var və biz siyahıda hər bir element baxmaq olacaq biz sayı tapmaq qədər arıyorsanız. Belə ki, deməkdir ki, ən pis halda, bu O (n). Element əgər Və burada ən pis halda ola bilər son element, sonra xətti istifadə edərək, hər bir element baxmaq biz bu siyahıda həqiqətən olduğunu bilmək üçün son bir almaq qədər. Biz yalnız yarıya qədər vermək və deyə bilmərəm, "Bu orada yəqin ki, yoxdur." Xətti axtarış ilə biz bütün şey baxmaq var. Ən yaxşı halda süresi, digər tərəfdən, daimidir ən yaxşı halda biz aradığınız element yalnız siyahıda birinci çünki. Belə ki, bizi düz 1 addım siyahısına necə böyük olursa olsun etmək olacaq biz ilk element üçün hər zaman arıyorsanız. Beləliklə, siz axtarış zaman, unutmayın, bu, bizim siyahı sıralanır tələb etmir. Biz sadəcə hər bir element üzərində baxmaq olacaq və bu, həqiqətən vacib deyil, çünki nə üçün bu elementləri daxil edir Daha ağıllı axtarış alqoritm ikili axtarış kimi bir şeydir. Siz olacaq zaman Unutmayın, ikili axtarış təzahürüdür siyahısı orta axtarır saxlamaq. Biz ortasında arıyorsanız, çünki, biz siyahısına çeşidlənir tələb və ya başqa orta biz bilmirik, biz artıq baxmaq tapmaq üçün bütün siyahısı, və sonra o nöqtədə biz yalnız vaxt israf edirik. Biz sıralanır siyahısı var və biz orta tapmaq Belə ki, biz orta müqayisə etmək olacaq element biz arıyorsanız. Bu çox yüksək varsa, onda biz sağ yarım unuda bilər biz bilirik ki bizim element artıq çox yüksək olduqda və bu element hüququ hər şeyi hətta yüksəkdir, sonra biz artıq orada baxmaq lazım deyil. Harada digər tərəfdən, bizim element çox aşağı olduqda, Biz bu element solunda hər şey də çox aşağı olduğunu belə ki, həqiqətən də orada baxmaq məntiqli deyil. Bu yolla, siyahısının orta hər addım və biz baxmaq hər zaman, birdən-birə biz bilirik çünki biz yarısında bizim problem kəsilmiş olacaq biz aradığınız bir ola bilməz ədəd bütöv bir dəstə. Pseudocode bu, bu kimi bir şey görünür və çünki, yarım hər bir vaxtında siyahısı kəsici edirik logarithmic to xətti bizim ən pis halda run zaman atlamalar. So birdən-birə biz giriş siyahısı bir element tapmaq üçün addımlar. Ən yaxşı halda süresi baxmayaraq, hələ də daimidir indi, çünki yalnız biz aradığınız element olduğunu deyək orijinal siyahısı həmişə dəqiq orta. Belə ki, biz istəyirik kimi böyük kimi siyahı inkişaf edə bilər, ancaq aradığınız element orta olmadığı halda sonra bizə yalnız 1 addım olacaq. We O (Giriş n) və Ω (1) və ya daimi etdiyiniz nə ki. Nin həqiqətən bu siyahıda ikili axtarış edək. Elə biz element 164 aradığınız ki, bildirin. Biz gedirik ilk şey bu siyahıda olan orta tapmaq edir. Bu, sadəcə, belə ki, orta bu 2 ədəd arasında azalmağa davam edir ki, baş Beləliklə, orta 2 ədəd arasında düşür, hər dəfə yalnız özbaşına deyək nin yalnız qədər ətrafında bildirin. Biz yalnız biz bu yolu hər bir addım əmin etmək lazımdır. Beləliklə, biz qədər ətrafında olacaq və biz 161 listemize ortasında demək olacaq. So 161 <164, və 161 sola hər element də <164, belə ki, biz bunu bütün bizə kömək etmək niyyətində deyil bilirik ki, orada ola bilməz aradığınız element çünki burada axtarır başlamaq üçün. Bəs biz nə edə bilər, biz yalnız siyahı ki, bütün sol yarım unuda bilər və indi yalnız 161 irəli hüququndan hesab edir. So, yenə bu orta edir; nin yalnız qədər ətrafında bildirin. İndi 175 çox böyük. Belə ki, o, bizim burada və ya burada axtarır yardım etmək niyyətində deyil bilirik biz yalnız tullamaq olar, və nəticədə biz 164 hit olacaq. Binar axtarış hər hansı suallar? Gəlin bir artıq sıralaması siyahısını axtarış dən hərəkət həqiqətən hər hansı bir sırada nömrələri siyahısı alaraq və qaydada artan ki, siyahı edilməsi. Biz baxdı ilk alqoritm bubble sırala adlanırdı. Bu biz gördüm alqoritmləri sadə olacaq. Bubble növ siyahı daxilində hər 2 elementləri yer həyata zaman deyir ki, yüksək sayı aşağı sıra sol var, yəni ki, siyahı olacaq deməkdir, çünki biz, onları dəyişdirmək olacaq Əvvəl daha "daha çox sıralanır." Və biz yalnız təkrar yenə bu proses davam edəcək və edirik nəticədə elementləri onların doğru yeri bubble cür bir sorted siyahısı var qədər. Bunun İş Vaxtı O olacaq (n ²). Niyə? Yaxşı, ən pis halda, çünki biz hər element etmək niyyətində və edirik biz siyahıda hər element üçün müqayisə başa olacaq. Amma ən yaxşı halda, biz artıq sıralanır siyahısı var, bubble sırala nin yalnız bir dəfə keçmək demək gedir "Xeyr. Mən heç svopları etmədiyini, mən bitirdim." Beləliklə, biz Ω (n) bir ən yaxşı halda süresi var. Üzrə siyahısı bubble sırala run edək. Və ya ilk-nin yalnız həqiqətən tez bir pseudocode baxaq. Biz loop hər iteration ildə izlemek istəyirsiniz istəyirəm biz hər hansı elementləri dəyişdirilə və ya takip edin. Ki, səbəbi Belə ki, biz hər hansı elementləri değiştirilecek heç zaman dayandırmaq olacaq. Bizim loop əvvəlində bir şey değiştirilecek deyil, biz yalan olduğunu demək lazımdır. İndi biz siyahı ilə getmək və i element i + 1 element müqayisə etmək olacaq və bu böyük sayda kiçik sayda sol olduğu halda, sonra biz yalnız onları dəyişdirmək olacaq. Və sonra biz bir element değiştirilecek unutmayın olacaq. Yəni siyahısını ən azı 1 dəfə daha getmək lazımdır o deməkdir ki, bütün siyahı artıq çeşidlənir zaman dayandı olan şərtdir, çünki biz hər hansı svopları qəbul etməyib deməkdir. Bizim vəziyyəti aşağı burada niyə belə ki, "bəzi elementləri değiştirilecek edilmişdir isə. Belə ki, indi yalnız bu siyahı çalışan baxaq. Mən siyahısını 5,0,1,6,4 var. Bubble sort sol bütün yol başlamaq üçün gedir və bu, müqayisə olacaq i elementləri, belə element 1 olan 0 i + 1. Bu, yaxşı 5> 0 demək olacaq, amma indi 5 sol edir mən 5 və 0 dəyişdirmək lazımdır. Mən onları dəyişdirmək zaman, birdən-birə mən bu müxtəlif siyahısını almaq. İndi 5> 1, belə ki, biz onları dəyişdirmək olacaq. 5> 6 deyil, belə ki, biz burada heç bir şey etmək lazım deyil. Lakin 6> 4, biz dəyişdirmək lazımdır. Yenə nəticədə tapmaq üçün bütün siyahısını run lazımdır these üçün həyata ki, biz onları dəyişdirmək, və bu baxımdan biz siyahısını 1 dəfə daha run lazımdır hər şey onun üçün var, və bu baxımdan bubble sırala başa əmin etmək. Bəzi elementləri alaraq və onların çeşidlənməsi üçün müxtəlif alqoritm seçim sortudur. Seleksiya sort arxasında ideyası biz siyahısı sıralanır hissəsi qurmaq olacaq ki, Bir zamanda 1 element. Və biz bunu olacaq yol siyahısı sol seqmentin yaradılması edir. Və əsasən, hər - hər bir addım, biz yazmayıblar kiçik element etmək olacaq hələ sıralanır deyil və biz sıralanır seqment daxil hərəkət olacaq. Deməkdir ki, biz davamlı minimum çeşidlənməmiş element tapmaq lazımdır və sonra minimum element almaq və nə ilə mübadilə tərk-ən element sıralanır deyil. Bunun İş Vaxtı O olacaq (n ²), çünki ən pis halda biz hər element üçün hər bir element müqayisə etmək lazımdır. Biz siyahısına sol yarısında başlamaq, biz lazımdır ki, olduğunuz Çünki kiçik element tapmaq üçün bütün sağ seqment keçmək. Və sonra yenə biz bütün sağ seqment üzərində getmək və lazım yenidən və üzərində üzərində üzərində davam. That n ² olacaq. We loop üçün başqa bir loop daxilində bir ehtiyac olacaq olan n ² göstərir. Ən yaxşı halda düşüncə, biz bu artıq sıralaması siyahısını təqdim deyək; biz həqiqətən n ² daha yaxşı yoxdur. Seleksiya sort ki, bilmədən heç bir yol var, çünki minimum element yalnız mən axtarır üçün baş biridir. Bu hələ əslində minimum əmin etmək lazımdır. Bu alqoritm istifadə edərək, minimum və əmin etmək üçün yeganə yol, again hər bir element baxmaq edir. Ki, həqiqətən, onu vermək əgər - Siz seçim sort artıq sıralaması siyahısını təqdim edərsə, bu hələ sıralanır olmayan bir siyahısını vermək daha yaxşı etmək niyyətində deyil. Bu halda olur, əgər gəlmişkən, bir şey O (bir şey) ki, və bir şey omega, biz yalnız daha müfəssəl şəkildə it şey θ ki, demək bilər. Siz ki, yalnız nə deməkdir ki, hər yerdə ortaya görmək əgər. Bir şey n teta Əgər ², o, həm də böyük O (n ²) və Ω (n ²) təşkil edir. Ən yaxşı halda və ən pis halda Belə ki, o, fərq etməz alqoritmi eyni şey hər vaxt gedir. Belə ki, bu seçim cür pseudocode kimi baxmaq mümkün deyil. We əsasən mən siyahı üzərində təkrarlamaq istəyirəm ki, demək olacaq sağ və loop hər iteration da soldan, mən hərəkət gedirəm siyahısını bu sıralanır hissəsi daxil minimum element. Və bir dəfə mən bir şey hərəkət, mən daha element baxmaq lazımdır heç vaxt. Tezliklə Mən siyahısını sol seqment üçün bir element dəyişdirmək kimi, sıralanır, çünki biz minimum istifadə üçün artan hər şeyi edirik, çünki. Beləliklə, biz tamam we mövqe i də istəyirik, və biz bütün öğeleri baxmaq lazımdır, dedi minimum tapmaq üçün i sağa. Belə ki, biz siyahısına sonuna i + 1 baxmaq istəyirəm deməkdir. İndi biz hazırda da aradığınız ki, element, bu günə qədər bizim minimum az olduqda unutmayın, biz yalnız olmaq üçün minimum off başlayaraq edirik ki, hər hansı element biz hazırda olduğunuz, mən minimum olduğunu güman lazımdır. Hesab edirəm ki, daha kiçik olan bir element tapmaq, onda mən, tamam, demək gedirəm yaxşı, yeni minimum tapmışdır. Hesab edirəm ki, minimum olduğu yadda gedirəm. Beləliklə, bir dəfə mən ki, sağ çeşidlənməmiş seqment vasitəsilə getdi sonra Mən mövqe i ki element ilə minimum element dəyişdirmək gedirəm deyə bilərəm. Bu mənim siyahısı yaratmaq olacaq, soldan sağa siyahısı mənim sıralanır hissəsi, və biz heç bu hissəsi var bir daha bir element baxmaq lazım deyil. Sonra biz bu değiştirilecek etdik. Belə ki, bu siyahıda seçim sort run bildirin. Burada mavi element i olacaq və qırmızı element minimum element olacaq. Mən 5-belə ki, siyahı sol bütün yol başlayır. İndi biz minimum çeşidlənməmiş element tapmaq lazımdır. Belə ki, 0 <5, belə ki, 0 Yeni minimum olduğunu söyləyirlər. Biz, 0 kiçik olduğunu tanıya bilər baxmayaraq, çünki mən orada dayandırmaq bilməz əmin etmək siyahısı hər element vasitəsilə run lazımdır. , 6 böyükdür böyükdür 1 Belə ki, 4 böyükdür. Bu elementlərin bütün baxaraq sonra, mən 0 kiçik is müəyyən etdik ki, deməkdir. Mən 5 və 0 dəyişdirmək üçün gedirəm. Bir edirəm ki, dəyişdirmək, yeni bir siyahısını almaq üçün gidiyorum və mən daha 0 baxmaq lazımdır heç vaxt bilirik ki, bir dəfə mən bu değiştirilecek etdik, çünki Mən bunu sıralanır etdik və tamamlayın. İndi yalnız belə, mavi element daha 5 ki, baş və biz 1 müəyyənləşdirmək üçün 1 baxmaq üçün 6 və 4 ehtiyac kiçik minimum element, belə ki, biz 1 və 5 dəyişdirmək lazımdır. Yenə baxmaq lazımdır - 6 və 4 5 müqayisə və biz 4 və 5 dəyişdirmək gedən və nəhayət, müqayisə edirik o 2 ədəd və biz sıralanır siyahısını almaq qədər onlara dəyişdirmək. Seleksiya sort hər hansı suallar? Okay. Nin burada son mövzu hərəkət edək ki, recursion edir. Recursion, unutmayın, bu, həqiqətən meta şey olduğu bir funksiyası dəfələrlə özü çağırır. So bir nöqtədə, bizim fuction dəfələrlə özü zəng edərkən, biz özümüz zəng dayandırmaq olan bir nöqtə olmalıdır lazımdır. Biz nə yoxdur, onda biz yalnız əbədi bunu davam edirik, çünki və bizim proqram yalnız ləğv etmək niyyətində deyil. Biz bu vəziyyəti əsasında işə çağırırıq. Və baza halda, əksinə daha bir funksiyası zəng deyil, deyir Mən yalnız bəzi dəyəri qayıtmaq üçün gedirəm. Biz dəyər geri sonra Beləliklə, biz özümüzü zəng durdurduk və biz bu günə qədər etdiyiniz zənglərin qalan da ola bilər. Əsas işi əks recursive haldır. Bu biz da hazırda olduğunuz funksiyası başqa bir zəng etmək üçün istədiyiniz zaman Biz yəqin ki, həmişə, baxmayaraq ki, müxtəlif arqumentlər istifadə etmək istəyirik. Biz f adlı bir funksiyası var, f yalnız 1 arqument take adlı Belə ki, əgər və biz yalnız f (1), f (1), f (1) zəng edin və yalnız belə olur arqumenti 1 recursive işə düşür, biz hələ dayandırmaq niyyətində heç edirik. Biz baza halda belə, biz nəhayət ki, baza halda hit olacaq əmin etmək lazımdır. Biz yalnız bu recursive halda qalaraq saxlamaq yoxdur. Ümumiyyətlə, biz özümüz zəng zaman, biz yəqin ki, müxtəlif mübahisə hər zaman olacaq. Burada həqiqətən sadə recursive funksiyası var. Belə ki, bu bir sıra faktöryel hesablamaq edəcək. Up bizim əsas işi var burada Əvvələ. N ≤ 1, yenə faktöryel zəng etmək fikrində deyilik ki halda. We dayandırmaq olacaq; biz yalnız bəzi dəyəri geri olacaq. Bu doğru deyil, onda biz recursive halda hit olacaq. Çox faydalı olardı, çünki biz yalnız, faktöryel (n) zəng deyilik ki, burada edək. Başqa bir şey faktöryel zəng olacaq. Və belə ki, biz bir faktöryel (5) və ya bir şey pass nəhayət, əgər bilərsiniz we faktöryel (4) və s. zəng olacaq, və nəticədə biz bu baza halda hit olacaq. Belə ki, bu yaxşı görünür. Biz, həqiqətən, bu çalıştırdığınızda nə olur bax edək. Bu yığını, və qoy əsas mübahisə (4) ilə bu funksiya zəng edir ki. So bir faktöryel görür və = 4, faktöryel özü zəng edəcək. İndi birdən-birə, biz (3) faktöryel var. Belə ki, bu funksiyaları sonda biz baza halda hit qədər artan saxlamaq niyyətindəyik. Bu nöqtədə, bu qaytarılması dəyəri qaytarılması (NX bu qaytarılması dəyəri) ki, Bu qaytarılması dəyəri bu NX qaytarılması dəyəri. Nəhayət, biz bir sıra hit üçün lazımdır. Burada başında, biz geri 1 deyirlər. Bir dəfə biz sayı qayıtmaq o deməkdir ki, biz yığını off Bu POP bilər. Beləliklə, bu faktöryel (1) edilir. Zaman 1 qaytarır, bu faktöryel (1) qaytarır, 1 bu getiri. Bu qaytarılması dəyəri, unutmayın, bu qaytarılması dəyəri NX idi. So qəflətən, bu oğlan I 2 qayıtmaq istəyirəm ki, bilir. Belə ki, saxla dəyəri burada qaytarılması dəyəri NX qədər geri. Belə ki, indi zaman 3 x 2 demək olar, və nəhayət, burada demək olar Bu yalnız 4 x 3 x 2 olacaq. Bu gəlirlər sonra, əsas bir tam daxilində aşağı almaq. Recursion hər hansı suallar? Bütün hüquqlar. So suallar üçün daha çox vaxt, sonunda var lakin indi Cozef qalan mövzuları əhatə edəcək. [Joseph Ong] Bütün hüququ. Belə ki, indi biz recursions danışdı etdik ki, nin növ birləşməsi nə haqqında bir az danışmaq edək. Birleştirme sort əsasən nömrələri siyahısı çeşidlənməsi bir yoldur. Və birleştirir sort ilə deyil, necə bir siyahısı var və biz bunu is biz 2 yarıya indirir bu split edək deyirlər. Biz ilk, sol yarısı daha sort daxil run lazımdır sonra biz, sağ yarısında sort daxil run lazımdır və indi bizim ayrılır ki, 2 yarıya indirir verir, indi biz birlikdə o yarıya indirir birləşdirmək olacaq. Bu misal Məgər bir az çətindir, belə ki, biz ərizə ilə getmək və baş nə görürsünüz. Belə ki, bu siyahı, biz 2 yarıya indirir daxil parçalanması başlanır. Biz ilk sol yarısında sort daxil axır. Belə ki, sol yarım, və indi biz bu siyahı vasitəsilə çalıştırmak olan biz, yenə baxmaq sonra birləşmə cür keçdi və olur Bu siyahıda sol tərəfində və biz bunun üzərində sort daxil axır. İndi biz, 2 ədəd bir siyahısı üçün aşağı almaq və indi sol yarısı yalnız 1 element uzun və biz deyil yarım içinə yalnız 1 element olduğunu siyahısı split, biz yalnız bir dəfə 50 var, demək, olan yalnız 1 element, o, artıq sıralaması edir. Biz ilə tamamlayın sonra, biz əlimizdən bilərsiniz Bu siyahıda hüququ yarısı üçün hərəkət, və 3 də indi bu siyahı həm də yarıya indirir sıralanır ki, sıralanır, və biz geri birlikdə bu nömrələr qoşula bilər. Belə ki, 50 və 3 baxmaq; 3 50 daha kiçik, belə ki, birinci gedir və sonra 50 girer İndi ki, həyata, biz onu sağ yarım ki, siyahısı və sort qədər geri. 42 öz sayı, belə ki, artıq sıralaması edir. Belə ki, indi biz ilk qoymaq olur ki, 2 və 3 42 daha kiçik these et İndi 42-ci qoymaq olur, 50 da qoymaq olur İndi sıralanır ki, biz, üst geri 1337 və 15 bütün yol getmək. Bəli, biz bu siyahı sol yarım baxmaq; 1337 özü belə bu 15 ilə sıralanır və eyni oldu. Belə ki, indi biz orijinal siyahı, 15 <1337, sort bu 2 ədəd birləşdirmək belə ki, ilk gedir, sonra 1337 da gedir İndi biz üst qədər orijinal siyahı həm də yarıya indirir sıralanır. Və biz bütün bu birləşdirmək edir. Biz bu siyahının ilk 2 ədəd, 3 <15 baxmaq, belə ki, birinci sort array gider. 15 <42, belə ki, İndi daxil gedir 42 <1337, o da gedir 50 <1337, bunu da gedir və biz yalnız bu siyahıda 2 ədəd çıxardım ki, görürsünüz. Belə ki, yalnız 2-siyahıları arasında alternativ deyilik. Biz yalnız əvvəlində arıyorsanız, biz element qəbul etdiyiniz kiçik və sonra array onu qoyulması edir. İndi biz bütün yarıya indirir birləşdi etdik və tamamlayın. Haqqında suallarınız sort daxil? Bəli? [Tələbə] müxtəlif qruplara bölünmə varsa, niyə yalnız bir dəfə split yoxdur və bir qrup, 3 və 2 var? [Sual anlaşılmaz istirahət] Səbəbi - belə bir sual deyil, biz onları sonra niyə yalnız ilk addım onlara daxil ola bilmirəm? Bunu edə səbəbi, hər iki tərəfin sol ən elementləri da başlayacaq və sonra kiçik bir almaq və qoymaq ki BUNLARI BİLİYORMUSUNUZ ki, fərdi siyahıları sıralanır sifariş var. Mən də yarıya indirir və sol ən elementləri ilə arıyorum Beləliklə, əgər, Mən həmin siyahıların ən kiçik elementləri olmaq olacaq bilirik. Mən bu böyük siyahısı kiçik element ləkələr onları bilər. Digər tərəfdən, mən orada ikinci səviyyədə olan 2 siyahıları baxsaq, 50, 3, 42, 1337, 15, həmin sıralanır deyil. Mən 50 və 1337 baxmaq əgər, ilk mənim siyahısına 50 qoymaq üçün gedirəm. Amma həqiqətən 3 hamısı yerinə ən kiçik element çünki, hiss etmir. Biz bunu birləşən addım edə bilərsiniz yeganə səbəbi bizim siyahıları artıq sıralanır çünki edir. Biz altındakı bütün yolu aşağı almaq niyə hansı biz yalnız bir sıra zaman ki, bir sıra çünki və özü artıq bir sorted siyahısı. Hər hansı sual? No? Mürəkkəbliyi? Bəli, hər addımda son nömrələri olduğunu görə bilərsiniz və biz, yarım günlük n dəfə siyahısı bölmək olar biz bu n x log n mürəkkəblik almaq yerləşir olan. Və birləşmə sort üçün ən yaxşı halda n log n görürsünüz və bu, məhz belə olur ən pis halda, və ya orada Ω da n n daxil edir. Unutmayın şey. Hərəkət isə bir super əsas fayl I / O. getmək bildirin Siz Scramble baxdı varsa, biz sistemi bir növ idi görəcəksiniz Əgər siz kodu vasitəsilə oxumaq əgər bir günlük faylı yazmaq bilər. Sizə bunu necə görmək edək. Bəli, biz fprintf var, siz, yalnız printf hesab edə bilər ki, ancaq əvvəlində f səbəbdən əvəzinə fayl çap və. Qədər burada kodu bu cür, sizin Scramble görüldü ola bilər nə yoxdur ki, bu nömrələr nə cərgə cərgə həyata 2-ölçülü array çap keçir. Bu halda, printf sizin terminal üçün çap və ya hissəsinin standart çıxış adlandırdıqları. Və indi, bu halda, biz nə üçün bütün, fprintf ilə printf əvəz is sizə çap etmək üçün istədiyiniz fayl demək, bu halda yalnız fayl üçün çap yerine terminal onu çap. Yaxşı, o sual begs: Biz hüququ, fayl bu cür alıram? Biz bu fprintf fuction daxil keçdi ancaq haradan gəldiyi yox idi. Yaxşı, erkən kodu, nə idi, burada kodu bu yığın idi əsasən açıq fayl log.txt çağırır deyir ki, edir. Ki, sonra biz nə biz fayl həqiqətən uğurla açılır əmin etmək lazımdır. Belə ki, bir çox səbəblərə görə uğursuz bilər; misal üçün, bilgisayarınızda kifayət qədər yer yoxdur. Siz fayl hər hansı əməliyyatları əvvəl Belə ki, həmişə vacibdir ki, fayl uğurla açıldı olmadığını kontrol edin. Yaxşı bir ki, fopen bir dəlil ki, yaxşı, biz bir çox yollarla bir fayl aça bilər. Biz nə edə bilər, biz, bu çıxışları əgər artıq fayl yalnış deməkdir ki, w keçə bilər Biz onlar əvəzinə əsas of fayl sonuna əlavə olan bir bir keçə bilər və ya biz deməkdir ki, r daxil edə bilərsiniz, in fayl oxumaq-yalnız açıq bildirin. Proqram, fayl hər hansı bir dəyişiklik etməyə çalışır əgər onlara fəğan və onlara bunu imkan verməyin. Nəhayət, bir dəfə biz bu əməliyyatları edərkən görülən, fayl ilə tamamlayın biz fayl yaxın əmin etmək lazımdır. Və proqram sonunda, daha onlara keçmək gedir siz açıldı və yalnız yaxın bu faylı ki. Belə ki, bu sizi əmin etmək lazımdır ki, mühüm bir şeydir. Belə bir fayl aça bilər unutmayın, sonra, fayl yazmaq olar fayl əməliyyatları, lakin sonra siz sonunda faylı bağlamaq lazımdır. Əsas fayl Hər hansı bir sualınız I / O? Bəli? [Tələbə sual, anlaşılmaz] Burada. Sualına, bu log.txt fayl yerləşir görünür edir? Yalnız log.txt vermək əgər Bəli, bu proqram eyni kataloq yaradır. So you're əgər - >> [Tələbə sual, anlaşılmaz] Bəli. Eyni qovluqda və ya eyni kataloq, siz zəng kimi. İndi yaddaş yığını və yığın. Belə ki, kompüter müəyyən yaddaş necə? Yaxşı, burada bu blok növ as yaddaş təsəvvür edə bilərsiniz. Və yaddaş biz orada vurulmuş yığın və orada olan yığını deyilən nə var. Və yığın aşağı artır və yığını yuxarı artır. Tommy qeyd etdiyim kimi - oh, yaxşı, və biz ikinci almaq lazımdır ki, bu digər 4 seqmentləri var - Tommy əvvəllər dediyi kimi, onun funksiyaları özləri zəng və bir-birinə zəng necə? Onlar yığını çərçivəsində bu cür qurmaq. Bəli, əsas zəngləri foo, foo yığını qoymaq olur əgər. Foo çağırır bar, bar nin yığını qoymaq almaq və sonra stack qoymaq olur. Onlar qayıtmaq kimi, onlar hər yığını off atılan almaq. Bu yerlərin hər yaddaş nə keçirilməsi edirsiniz? Yaxşı, mətn seqmenti olan top, proqram özü edir. Maşın kodu Belə ki, var ki, bir dəfə sizin proqram tərtib edir. Sonrakı, hər hansı qlobal dəyişənlər başlatılmış. Belə ki, proqram qlobal dəyişənlər var, və bir = 5, kimi demək seqment qoymaq və doğru olduğunu altında olur ki, Siz, bir int hər hansı uninitialized qlobal data var ancaq bir şey bərabər demək deyil. Bu qlobal dəyişənlər var, onlar əsas kənarda olduğunuz bilirik. Beləliklə, bu elan amma başlatılmadı hər hansı qlobal dəyişənlər deməkdir. Belə ki, yığın-yığın, nə var? Yaddaş biz bir az bit almaq bilərsiniz malloc istifadə ayrılıb. Və nəhayət, yığını ilə hər hansı yerli dəyişənlər var və hər hansı funksiyaları, onların parametrlərinin hər hansı zəng edə bilər. Son şey, həqiqətən, ətraf dəyişənlər nə bilmək yoxdur ancaq proqram run zaman bağlı bir şey kimi var Bu proqram qaçmış şəxsin adınız. Və bu alt növ olacaq. Hexadecimal dəyərlərin olan yaddaş ünvanları, baxımından, 0 ilə üst əvvəlində dəyərlər və onlar aşağı bütün yolu aşağı gedin. Bu halda, siz 32-bit sistemi istəyirsinizsə, altındakı ünvan ki, 32 bit, çünki, af sonra 0x olacaq 8 bayt və bu halda 8 bayt 8 hexadecimal rəqəm uyğundur. Belə ki, aşağı burada, kimi, 0xffffff var olacaq, və orada 0 malik olacaq. Belə ki, nə göstəricilər var? Əgər bəziləri əvvəl bölməsində bu əhatə ola bilər. lakin biz mühazirə üzərində getmək idi, bir pointer yalnız bir veri növü belə əvəzinə 50 kimi dəyər bir növ, bu yaddaş bəzi yeri ünvan depolayan mağazalar. Ki, yaddaş kimi [anlaşılmaz]. Belə ki, bu halda, biz nə, biz, bir tam və ya int * bir göstərici var və 0xDEADBEEF bu hexadecimal ünvan var. Belə ki, nə biz yaddaş bəzi yeri bu göstərici xal, indi ki, və yalnız bir ki, dəyəri 50 bu yaddaş yeri var. Bir 32-bit sistemləri, bütün 32-bit sistemləri, göstəricilərinə 32 bit və ya 4 bayt qədər. Amma, məsələn, 64-bit sistem üzrə göstəricilər 64 bit var. Belə ki, siz unutmayın lazımdır bir şey var. Belə ki, son-bit sistem, bir göstərici son bit uzun. Pointers əlavə şeylər olmadan cür həzm çətindir belə dinamik yaddaş ayrılması misal ilə gedək. Nə dinamik yaddaş ayrılması sizin üçün, və ya biz malloc dediyimiz siz set xaricində data bir növ ayrılması imkan verir. Beləliklə, bu data cür proqramın müddəti daha baqidir. Bildiyiniz kimi, çünki bir funksiyası daxilində x və funksiyası yekunları elan əgər, artıq x saxlanılır ki, data girmə imkanı vardır. Nə göstəricilərinə bizə bildirin bizə yaddaş və ya mağaza dəyərlər saxlaya qoy edir yəni yaddaş müxtəlif seqmenti ki, yığın-yığın. İndi bir biz uzun bir göstərici kimi, funksiyaları həyata qayıtmaq yaddaş ki, yeri, sonra biz nə edə biz orada dəyərlər baxmaq bilər. Nin Məsələn baxaq: Bu daha yaddaş layout edir. Və biz əsas, bu funksiya var. Ne edir edir - tamam, belə sadə, sağ - int x = 5, yalnız əsas yığını bir dəyişən var. Digər tərəfdən, indi biz funksiyası giveMeThreeInts tutan bir pointer bəyan edir. Və indi biz bu funksiya daxil və biz bunun üçün yeni bir yığın çərçivəsində yaradır. Lakin, bu yığını çərçivəsində, biz int * temp elan olan bizim üçün mallocs 3 integers edir. Belə ki, int ölçüsü, bu int nə qədər bytes bizə və malloc bizə verir ki, yığın yer çox bytes. Belə ki, bu halda, biz, 3 integers üçün kifayət qədər yer yaratmışdır və yığın mən ali onu tərtib etdik nə ki, orada bir yoldur. Biz Bitirdiğinizde sonra, biz burada qayıtmaq, yalnız 3 ints geri lazımdır, və bu yaddaş olduğu artıq bu halda, ünvan qaytarır. Və biz göstərici = keçid seçin və orada biz yalnız başqa göstərici var. Amma nə funksiyası yekunları burada dizilir və yox edir. Belə temp yox, ancaq hələ harada ünvan saxlamaq o 3 integers elektrik daxilində var. Belə ki, bu dəsti-ci ildə, göstəricilər də dizilir çərçivəsində üçün yerli scoped var lakin onlar istinad üçün yaddaş yığın edir. Bu mənada edirmi? [Tələbə] Tekrar bilərmi? >> [Joseph] Bəli. Mən yalnız bir az getmək əgər Belə ki, temp ayrılan bax var yığın bəzi yaddaş. Belə ki, bu funksiya, giveMeThreeInts yekunları, burada bu yığını yox gedir zaman. Və bu halda dəyişənlərin hər hansı, dizilir çərçivəsində ayrılıb ki, bu göstərici ilə. Biz temp geri yana yox olacaq, lakin və biz = temp, pointer indi temp kimi yeri eyni yaddaş qeyd olacaq göstərici seçin. Belə ki, indi biz temp ki, yerli pointer, itirmək baxmayaraq biz hələ ki, dəyişən göstərici daxilində işarə nə xatirəsinə ünvan saxlayırlar. Suallar? Siz bölməsində artıq getdi əgər bir confusing mövzu cür ola bilər. Biz, sizin TF mütləq üzərində getmək edəcək və əlbəttə ki, biz suallara cavab Bu nəzərdən sessiyasının sonunda. Lakin bu kompleks mövzu sort və mən göstərmək üçün gedir ki, misal ki göstəricilərinə həqiqətən nə aydınlaşdırmaq yardım edəcək. Bu halda, göstəricilər serialların bərabər Mən yalnız bir int dizi eyni şey kimi bu göstərici istifadə edə bilərsiniz. Mən, 0 daxil indeksasiyası və 1 üçün ilk tam dəyişən alıram 2-İkinci tam dəyişdirilməsi, və 3-cü tam 3. Göstəricilər üzrə daha çox. Yaxşı, Binky xatırlayıram. Bu halda, biz bir pointer ayrılan sonra, və ya biz bir pointer elan lakin ilk, yalnız bir göstərici elan zaman, hər yerdə yaddaş işarə deyil. Bu daxilində yalnız zibil dəyərlər var. Mən bu göstərici işarə yerləşir heç bir fikrim yoxdur. Bu yalnız 0 və 1-in ilkin bəyan edildiyi ilə dolu olan bir ünvan var. Mən bu barədə malloc zəng qədər mən bu ilə bir şey edə bilməz və sonra mənə daxili dəyərlər qoymaq bilərsiniz yığın bir az yer verir. Sonra yenidən, bu yaddaş içində nə bilmirəm. Mən nə üçün ilk şey sisteminin kifayət qədər yaddaş olub kontrol edir Mənə bu kontrol yapýyorum nə olan ilk yeri, 1 tam geri vermək. Pointer null varsa, ki, kifayət qədər yer və ya başqa bir səhv baş olmadığını bildirir mən mənim proqram həyata çıxmaq lazımdır.  Bu uğur əgər Lakin, indi pointer istifadə edə bilərsiniz və nə * göstərici yoxdur ünvanı harada aşağıdakı yerləşir ki, dəyər və bu, 1-bərabər müəyyən etmək. Yaddaş mövcud Belə ki burada, biz kontrol edirik. Siz mövcud bilirik sonra, onu qoya bilər nə dəyəri siz onu qoymaq istəyirik, bu halda 1-ci. Biz bu tamamlayın sonra, bu göstərici azad etmək lazımdır biz sistemi, ilk növbədə istədi ki, yaddaş geri almaq lazımdır, çünki. Çünki kompüter biz bu Bitirdiğinizde bilmir. Bu halda biz aydın şəkildə onu izah edirik, tamam, biz yaddaş ilə tamamlayın. Bəzi digər proses ehtiyacı varsa, bir sıra digər proqram lazımdır, irəli getmək və onu çekinmeyin. Biz də edə bilərsiniz Biz yalnız müəyyən yerli dəyişənlərin ünvan almaq olar. Belə ki, int x əsas və dizilir çərçivəsində daxilində deyil. Və biz bu işareti istifadə edildikdə, bu və operator, nə yox edir bu x edir, x yaddaşında yalnız bəzi məlumatlar, ancaq bir ünvan var. Bu yerdə tesis edir. Bu nə zəng & x ki, bunu bu, bizi x ünvan verir. Beləliklə, biz x yaddaşında olduğu üçün göstərici baxımından edirik. İndi biz yalnız * kimi bir şey x, biz 5 geri almaq olacaq yoxdur. Ulduz bu dereferencing adlanır. Siz ünvan edin və orada saxlanılan bu dəyəri almaq. Hər hansı sual? Bəli? Siz 3 guşəli şey deyilsə [Tələbə], hələ də tərtib etmir? Bəli. Siz 3-pointer şey deyilsə, o, hələ də tərtib olacaq amma ikinci nə sizə göstərmək və etmədən olacaq ki, bir yaddaş sızıntısı zəng budur. Siz sistem verən deyilik onun yaddaş geri, bir sonra proqram toplamaq niyyətindədir isə istifadə deyil, və başqa heç bir şey üçün istifadə edə bilərsiniz yaddaş ki. Əgər sizin kompüter 1,5 milyon kilobayttan ilə Firefox gördüm varsa, vəzifəsi meneceri ki, neler var. Siz onlar idarə deyilik ki, proqram bir yaddaş sızıntısı var. Belə ki, necə göstərici hesab işləyir? Yaxşı, göstərici hesab bir sıra daxil kimi endeksleme növ edir. Bu halda, bir göstərici var, nə mən, mən ilk element üçün göstərici baxımından olun Mən ayrılmış etdiyiniz 3 integers bu serialın. Belə ki, indi mən nə, star pointer yalnız siyahıda ilk element dəyişir. Burada Star göstərici +1 xal. Belə göstərici burada bitdi, göstərici +1 burada bitdi, pointer +2 burada bitdi. Belə ki, yalnız 1 əlavə bu array boyunca hərəkət kimi eyni şeydir. Biz nə, biz göstərici +1 nə zaman, buraya ünvanı almaq və burada dəyəri almaq üçün, bütün ifadə bir ulduz qoymaq bu dereference üçün. Belə ki, bu halda, mən, 1 bu serialın ilk yeri müəyyən alıram 2 ikinci yer və 3-cü yer. Sonra nə buraya edirəm, mən bizim göstərici +1 çap edirəm ki, olan yalnız mənə 2 verir. İndi göstərici incrementing edirəm, belə göstərici göstərici +1 bərabərdir hansı irəli hərəkət edir. Və indi mən göstərici +1 çap əgər göstərici +1, vaxt: 3 Bu halda, 3 çap edir. Və pulsuz bir şey, mən verən göstərici üçün Mən malloc geri alan serialın əvvəlində işarə edilməlidir. Mən burada 3 Zəng idi Belə ki, bu halda, bu, düzgün olmazdı bu array ortasında çünki. Mən orijinal yeri almaq üçün çıxmaq üçün Mən onu azad əvvəl ilkin ilk spot. Belə ki, burada bir daha cəlb misal var. Bu halda, biz bir xarakter sıra 7 simvol ayrılması edirik. Bu halda biz edirik, nə biz onlara ilk 6 üzərində loop edirik ki, və biz Z. onlara müəyyən edirik Belə ki, int i = 0, i> 6, i + +, Belə ki, pointer + i yalnız bu halda, bizə pointer göstərici +1, pointer +2, pointer +3 və s və s loop. Nə etmək olur ki, bu dəyər almaq üçün, dereferences ki ünvan olur ki, bir Z. və dəyişikliklər dəyər Sonra sonunda sağ, bu simli deyil saxla? Bütün strings olan null xitam xarakteri ilə bitirmək lazımdır. Belə ki, nə mən göstərici 6 I daxil olan null terminator xarakter qoymaq deyil İndi mən əsasən burada yapýyorum nə bir string üçün printf hüququ həyata keçirir? Belə ki, zaman printf indi bir simli sonunda əldə edir nedir? Bu null xitam xarakter xit zaman. Belə ki, bu halda, bu serialın əvvəlinə mənim orijinal göstərici xal. Mən ilk xarakter çap. Mən artıq hərəkət. Hesab edirəm ki, karakter çap. Mən artıq hərəkət. Və mən sonunda çatana qədər bunu edin. İndi isə end * göstərici olacaq dereference bu və null xitam xarakter geri almaq. Və mənim isə loop ki, dəyəri null xitam xarakterli deyil, yalnız çalışır. Belə ki, indi bu loop həyata çıxmaq. Və mən, bu göstərici ilə 6 çıxmaq əgər Mən geri əvvəlinə bütün yolu gedin. Mən onu azad etmək üçün əvvəlinə getmək çünki Unutmayın, mən bunu edirəm. Belə ki, mən bir çox idi. Hər hansı bir sualınız varmı? Xahiş edirik, bəli? [Tələbə sual anlaşılmaz] Siz Qaraçuxurlu demək olarmı? Bağışlayın. [Tələbə] siz göstərici azad sağ əvvəl son slayd-də, burada faktiki göstərici dəyəri dəyişən idi? [Joseph] Belə ki, burada. >> [Tələbə] Oh, tamam. [Joseph] Belə ki, mən sağ, bir pointer minus minus var, ki, mən onu azad sonra geri bir şey hərəkət və Bu göstərici serialın əvvəlində qeyd etmək lazımdır, çünki. Əgər xətt sonra dayandığına [Tələbə] Amma lazım deyil ki. Mən bu sonra dayandırılıb əgər [Joseph] Belə ki, bu, yaddaş sızıntısı hesab olunacaq Mən pulsuz run çünki. [Tələbə] I [anlaşılmaz] Siz göstərici +1 [anlaşılmaz] olduğu ilk üç xətləri sonra. [Joseph] Ah-ha. Belə ki, orada sual var? Bağışlayın. Xeyr, yoxdur. Xahiş edirik, gedin, gedin. [Tələbə] Belə ki, göstəricilər dəyəri dəyişən deyilik. Siz göstərici mənfi mənfi nə var olmazdı. [Joseph] Bəli, dəqiq. Belə ki, mən göstərici +1 və pointer +2 nə zaman, Mən göstərici məşğul deyiləm göstərici +1 bərabərdir. Belə ki, pointer yalnız serialın əvvəlində işarə edilir. , Mən plus nə zaman yalnız bir plus bu göstərici içərisində geri dəyəri müəyyən faktiki yanaşı bu hərəkət. Bütün hüquqlar. Ətraflı suallar? Bu böyük növ əgər Yenə, bu sessiya əhatə olunacaq. Bunu tədris fellow soruş, biz sonunda suallara cavab verə bilərsiniz. Və adətən biz bu mənfi şey kimi deyil. Bu mənə sıra ofset sonra nə qədər track saxlanılması tələb edir. Belə ki, ümumiyyətlə, bu göstərici hesab işləri necə izah etmək üçün kifayətdir. Amma biz adətən etmək istəyirəm ki, biz göstərici bir kopyasını yaratmaq istəyirəm ki, biz simli ətrafında hərəkət etdiyiniz zaman, daha sonra biz surəti istifadə edəcəyik. Belə ki, bu halda surəti, bütün simli çap üçün istifadə amma biz göstərici mənfi 6 kimi var və ya biz bu hərəkət nə qədər takip yoxdur biz orijinal point hələ siyahısının başında işarə olduğunu yalnız və biz dəyişdirilə ki, bütün bu surəti idi. Belə ki, ümumiyyətlə, orijinal göstərici surəti dəyişdirmək. Kimi və düzmək üçün cəhd etməyin - nüsxədə mehrab don't. Orijinal yalnız nüsxə dəyişdirmək üçün çalışırıq. Biz printf daxil simli keçmək zaman Belə ki, qeyd Siz, biz bütün digər dereferences ilə olduğu kimi qarşısında bir ulduz qoymaq hüququ yoxdur? Siz bütün simli% s gözləyir çap Belə ki, bir ünvanı və bu halda bir göstərici və ya simvol bir sıra kimi bu halda. Uchun, char * s, və seriallarda eyni şey var. Pointer simvol və xarakter Diziler eyni şey var. Beləliklə, biz bütün pointer qəbul edilir. Biz * göstərici və ya bu kimi bir şey kimi keçmək yoxdur. Belə ki, seriallarda və göstəricilər eyni şey var. X kimi bir şey yapýyorsun zaman burada bir sıra üçün [y] nə başlıq altında yapýyor deyirdik edir, tamam, bir xarakter array var belə bir göstərici var. Və x, eyni şey və buna nə, o, x ilə y əlavə edir çox yaddaş irəli hərəkət kimi eyni şey olan. İndi x + y, bizə ünvan bir növ verir və biz ünvan dereference və ya arrow edin Ü yaddaş ki, yeri və biz yaddaş ki, yeri dəyəri almaq üçün. Belə ki, belə bu iki tam eyni şey var. Bu yalnız bir sintaktik şəkər var. Onlar eyni şey. Onlar bir-biri üçün yalnız müxtəlif syntactics istəyirik. Belə ki, göstəricilər ilə yanlış nə edə bilərsiniz? Bir çox kimi. Okay. Belə ki, pis şeylər. Sizin malloc zəng null, sağ qaytarır, əgər nə edə bilər bəzi pis şeylər yoxlanılması deyil? Bu halda, mənə vermək sistem xahiş edirəm - ki sayı nə qədərdir? Bir tam həcmi 4 bayt çünki, 2 milyard dəfə 4 kimi. Mən 8 milyard bayt kimi üçün xahiş edirəm. Əlbəttə, mənim kompüter mənə çox yaddaş geri vermək etmək niyyətində deyil. Bu null olduqda və biz orada dereference üçün cəhd zaman, yoxlamaq etmədi - o olacaq Ü üçün ok edin - biz yaddaş yoxdur. Bu bir null göstərici dereferencing zəng edir. Bu mahiyyətcə siz segfault səbəb olur. Bu segfault bilər yollarından biridir. Bunu başqa pis şeylər - də oh. Bu null göstərici dereferencing edilib. Okay. Digər pis şeylər - yaxşı, yalnız orada bir çek qoymaq düzeltmek üçün ki pointer null olub yoxlayır ki malloc bir null göstərici qaytarır olur və proqram həyata çıxmaq. Bu xkcd komik var. İnsanlar indi başa düşürəm. Növ. Belə ki, yaddaş. Mən bu artıq getdi. Biz bir döngü malloc zəng, ancaq malloc zəng hər zaman edirik biz, bu göstərici işarə yerləşir izini itirmək etdiyiniz biz bu clobbering etdiyiniz çünki. Belə ki, malloc üçün ilkin zəng məni burada yaddaş üzərində verir. Bu mənim göstərici göstəricilər. İndi o azad deyil, belə ki, indi mən yenə malloc çağırırıq. İndi burada göstərir. İndi mənim yaddaş burada işarə edir. Burada toxunan. Burada toxunan. Amma burada ayrılan bütün yaddaş ünvanları itirib etdik. Və indi artıq onlara heç bir istinad yoxdur. Beləliklə, mən bu loop kənarda onları azad edə bilməz. Belə ki, bu kimi bir şey düzeltmek üçün pulsuz yaddaş unutmayın və siz bu yaddaş sızıntısı almaq, Siz ilə tamamlayın dəfə bu loop daxilində yaddaş azad var. Bəli, bu nə edir. Mən sizin çox bu nifrət bilirik. Amma indi - yay! Siz 44,000 kilobayttan kimi almaq. Belə ki, siz loop sonunda azad və yalnız yaddaş hər zaman azad olacaq. Əsasən, proqram artıq bir yaddaş sızıntısı mövcut deyil. İndi siz bunu edə bilər başqa bir şey iki dəfə xahiş etdik ki, bəzi yaddaş azad edir. Bu halda, siz malloc bir şey, onun dəyəri dəyişir. Siz həyata bildirib dəfə çünki Siz pulsuz. Amma sonra biz daha azad. Bu olduqca pis bir şeydir. Bu, ilkin segfault gedən deyil lakin sonra bu ikiqat bu corrupts sizin yığın strukturu azad olunur nə isə, siz CS61 kimi bir sinif etmək seçerseniz və bu barədə bir az daha çox öyrənmək lazımdır. Amma əhəmiyyətli bir sonra kompüterinizi qarışıq almaq üçün gedir isə - yerləşir və harada saxlanılır nə yaddaş locations var haqqında Ü data yaddaşında saxlanılır. Və belə bir göstərici azad iki dəfə bunu istəmirəm ki, pis bir şey deyil. Yanlış getmək bilər ki, başqa şeylər sizeof istifadə olunur. Belə ki, bu halda, 8 bayt malloc və sağ iki integers eyni şey var? Belə ki, bu, gözəl təhlükəsiz, lakin? Yaxşı, Lucas, müxtəlif mimarilerde danışdıq kimi integers müxtəlif uzunluqlu var. Belə ki, istifadə etdiyiniz cihaz haqqında, integers haqqında 4 bayt var lakin bəzi digər sistem onlar 8 bayt ola bilər və ya onlar 16 bayt ola bilər. Belə ki, mən yalnız burada bu rəqəm istifadə əgər, Bu proqram cihaz haqqında iş bilər lakin bəzi digər sistem kifayət qədər yaddaş ayrılması gedən deyil. Bu halda, bu sizeof operator üçün istifadə edir. Nə edir, biz zəng zaman sizeof (int)  bu, bizim proqram çalışan sistem bir tam ölçüdə verir. Belə ki, bu halda, sizeof (int), Aracın kimi bir şey, 4 qayıdacaq və indi 8 olan bu iradə 4 * 2, olan yalnız iki integers üçün zəruri kosmik məbləği. Fərqli bir sistem də, bir int 16 bayt və ya 8 bayt kimi, əgər yalnız bu məbləğ saxlamaq üçün kifayət qədər bytes geri olacaq. Və nəhayət, structs. Belə ki, yaddaşında bir sudoku board saxlamaq istəyirdi, biz bunu edə bilər? Siz ilk şey üçün bir dəyişən kimi hesab bilər ikinci şey üçün bir dəyişən, üçüncü şey üçün bir dəyişən, pis, doğru - dördüncü şey üçün bir dəyişən? Belə ki, bu üst edə bilər bir irəliləyiş 9 x 9 array etməkdir. Bu gözəl, lakin siz sudoku heyəti ilə başqa şeylər birləşmək istədiyini əgər , şura çətinlik nə kimi və ya, məsələn, nə üçün hesab və ya nə qədər zaman bu board həll qəbul olub? Yaxşı, nə edə bilər bir struct yaratmaq bilər. Mən əsasən dedi alıram, mən burada artıq bu strukturun müəyyən edirəm ki, və mən x 9 9 bir board ibarət olan bir sudoku board müəyyən edirəm. Və bunun səviyyəsi adı göstəricilərinə malikdir nə. Bu da mən indi am yerləşir koordinatları olan x və y var. Bu da zaman [anlaşılmaz] sərf edib və bu, mən indiyə qədər inputted etdiyiniz hərəkət sayı var. Və bu halda, yalnız bir strukturu data bütöv bir dəstə gruplandırmak bilər əvəzinə müxtəlif dəyişənlərin kimi ətrafında uçan kimi olan Mən, həqiqətən, track saxlamaq bilməz. Bu bizə bu struct daxilində fərqli şeylər sened növ yalnız gözəl sintaksis var imkan verir. Mən board.board nə yalnız ola bilər, mən geri sudoku board almaq. Board.level, mən nə qədər sərt almaq. Board.x və board.y mənə board ola bilər harada koordinatları verir. Və mən, biz struct sahələri zəng nə daxil oldum. Bu ki, bir növü olan sudokuBoard, müəyyən edir. Və indi biz buradayıq. Mən növü sudokuBoard və "board" adlı dəyişən var. Və indi mən burada artıq bu quruluş edir ki, bütün sahələrində əldə edə bilərsiniz. Structs suallarınız? Bəli? Int x, y üçün [Tələbə], bir xətt, həm də elan? >> [Joseph] Ah-ha. [Tələbə] Belə ki, yalnız onlara bütün bunu edə bilər? X kimi, y vergül dəfə ümumi? [Joseph] Bəli, siz mütləq eyni xətt üzərində x və y qoyulan səbəbi, lakin bilər - biz yalnız eyni xətt üzrə bu edə bilərsiniz niyə və sual? Niyə biz yalnız eyni xətt üzrə bütün bunlar qoymaq deyil x və y-birinə bağlı, və bu, bir mənada, yalnız stylistically daha doğru eyni xətt üzrə iki şeyi qruplaşdırılması, çünki ki kimi sort eyni şey aiddir. Mən yalnız başqa bu split. Bu yalnız bir stil şey. Bu funksional heç bir fərq edir. Structs hər hansı digər suallar? Siz struct ilə Pokédex müəyyən edə bilərsiniz. A Pokemon bir sıra və bir məktub, bir sahibi bir növü var. Əgər Pokemon bir sıra varsa, sonra sağ, bir Pokédex etmək olar? OK, sərin. Belə ki, structs haqqında suallar. Bu structs əlaqəsi. Nəhayət, gdb. Gdb nə imkan vermir? Bu proqram debug imkan verir. Siz gdb istifadə əgər, mən qısa seyr tövsiyə edərdi və yalnız gdb nə üzərində gedən, necə, siz onu istifadə edə bilər necə, bu iş və bir proqram bu test. Və gdb nə imkan verir nə fasilə [anlaşılmaz] qədər proqram imkan verir ki, və praktiki xətti. Məsələn, mən, mənim proqram xətti 3 kimi duraklatabilirsiniz icra istəyirəm və mən line 3 Ben isə mən var ki, bütün dəyərlər çap edə bilərsiniz. Bir xətt duraklatarak kimi və biz dediyimiz biz ki, bu xətt bir breakpoint qoyulması zəng edir və biz o zaman proqramı dövlət dəyişənlərin çap edə bilərsiniz. Biz sonra proqram line-by-line vasitəsilə orada addım bilər. Və sonra biz zaman yığın dövlət baxmaq olar. Və gdb, nə biz, biz C fayl cingilti zəng ki, istifadə etmək üçün lakin biz bu-ggdb bayrağı keçməlidirlər. Və bir dəfə biz yalnız yaranan çıxış fayl gdb çalışan ilə tamamlayın. Və belə ki, bu kimi mətn bəzi kimi kütləvi almaq lakin siz həqiqətən bütün əvvəlində əmrləri yazın olunur. Fasilə əsas əsas bir breakpoint qoyur. Siyahısı 400 line 400 ətrafında kodu xətləri siyahıları. Və bu halda yalnız, oh, ətrafında baxmaq və demək olar Mən bu xətt olan line 397 bir breakpoint, təyin etmək istədiyiniz və sonra proqramı addım daxil çalışır və pozmaq olacaq. Orada fasilə olacaq və siz, məsələn, aşağı və ya yüksək dəyər çap edə bilərsiniz. Və siz bilmək lazımdır əmrləri bir dəstə var və bu Slideshow, saytında qədər davam edəcək yalnız bu istinad etmək istəyirəm və ya istifadə etmək vərəqələri onları qoymaq istəyirəm əgər, çekinmeyin. Cool. Bu Quiz Review 0 idi, və hər hansı bir sualınız varsa, biz ətrafında qalmaq lazımdır. Bütün hüquqlar.  [Alqış] [CS50.TV]