1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Yorumla] [Viktorina 0] 2 00:00:03,000 --> 00:00:05,000 >> [Lexi Ross, Tommy MacWilliam, Lucas Freitas Cozef Ong] [Harvard Universiteti] 3 00:00:05,000 --> 00:00:08,000 >> [Bu CS50 edir.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Hey, hər kəs. 5 00:00:10,000 --> 00:00:15,000 Bu çərşənbə cərəyan edən Quiz 0, üçün icmal sessiya xoş gəlmisiniz. 6 00:00:15,000 --> 00:00:19,000 Biz bu axşam nə olacaq nə, mən, 3 digər TFS ilə Ben 7 00:00:19,000 --> 00:00:24,000 və birlikdə biz indiyə qədər gedişində etdik nə nəzərdən keçmək olacaq. 8 00:00:24,000 --> 00:00:27,000 Bu 100% hərtərəfli olacaq deyil, ancaq daha yaxşı bir fikir verəcəkdir 9 00:00:27,000 --> 00:00:31,000 Əgər siz artıq aşağı nə və nə də çərşənbə əvvəl öyrənmək lazımdır. 10 00:00:31,000 --> 00:00:34,000 Biz birlikdə olacaq kimi, sualları ilə əl qaldırmaq çekinmeyin 11 00:00:34,000 --> 00:00:38,000 lakin biz də vaxt bir az olacaq unutmayın son 12 00:00:38,000 --> 00:00:41,000 biz ümumi suallar etmək ehtiyat üçün bir neçə dəqiqə vasitəsilə almaq, 13 00:00:41,000 --> 00:00:47,000 belə fikir ki, saxlamaq, və biz Həftə 0 başında olacaq. 14 00:00:47,000 --> 00:00:50,000 >> Biz əvvəl [0 Review Quiz!] [Kateqoriya 0] [Lexi Ross] Lakin edək haqqında danışmaq ki, 15 00:00:50,000 --> 00:00:53,000 Yarışmanın məntiqi. 16 00:00:53,000 --> 00:00:55,000 >> [Logistics] [Viktorina mühazirə əvəzinə Çərşənbə 10/10 yer tutur] 17 00:00:55,000 --> 00:00:57,000 >> [(Ətraflı məlumat üçün http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf baxın)] Bu Çərşənbə, Oktyabr 10 edir. 18 00:00:57,000 --> 00:01:00,000 >> Yəni bu Çərşənbə, və burada bu URL getmək əgər, 19 00:01:00,000 --> 00:01:03,000 da bir keçid CS50.net-orada 's erişilebilir it- 20 00:01:03,000 --> 00:01:06,000 siz əsasında getmək harada məlumat görə bilərsiniz 21 00:01:06,000 --> 00:01:10,000 Son adı və ya məktəb mənsubiyyətinə, habelə 22 00:01:10,000 --> 00:01:14,000 bu barədə dəqiq viktorina almaq olacaq ki, əhatə və suallar növləri nə deyir. 23 00:01:14,000 --> 00:01:19,000 Siz də bölməsində viktorina üçün gözden geçirmek üçün bir şans lazımdır ki, unutmayın, 24 00:01:19,000 --> 00:01:21,000 sizin TFS, bəzi praktiki problemləri üzərində gedən edilməlidir 25 00:01:21,000 --> 00:01:29,000 və siz hələ də viktorina üçün öyrənmək lazımdır görmək üçün yaxşı bir şans var. 26 00:01:29,000 --> 00:01:32,000 Bits 'n' Bytes ilə başında edək. 27 00:01:32,000 --> 00:01:35,000 Bir az bir 0 və ya 1-dir saxla 28 00:01:35,000 --> 00:01:38,000 və byte o bit 8 toplusudur. 29 00:01:38,000 --> 00:01:42,000 Burada bit bu kolleksiya baxaq. 30 00:01:42,000 --> 00:01:44,000 Biz orada nə qədər çox bit həyata rəqəm lazımdır. 31 00:01:44,000 --> 00:01:48,000 Biz saymaq harada onlardan 8, səkkiz 0 və ya 1 ədəd yalnız var. 32 00:01:48,000 --> 00:01:51,000 Və ildən 8 bit, 1 byte ki, var 33 00:01:51,000 --> 00:01:53,000 və in hexadecimal onu çevirmək bildirin. 34 00:01:53,000 --> 00:01:58,000 Hexadecimal bazası 16, və çevirmək üçün olduqca asan 35 00:01:58,000 --> 00:02:01,000 ikili bir sıra hexadecimal bir sıra ki, budur. 36 00:02:01,000 --> 00:02:04,000 Biz bütün biz, 4 qrup baxmaq deyil 37 00:02:04,000 --> 00:02:07,000 və biz müvafiq hexadecimal rəqəmli onları çevirmək. 38 00:02:07,000 --> 00:02:11,000 Biz 0011, 4 sağ ən qrupu ilə başlayın. 39 00:02:11,000 --> 00:02:16,000 Ki, birlikdə 3 edir ki, 1 və bir 2 olacaq. 40 00:02:16,000 --> 00:02:19,000 Və sonra 4 digər blok baxaq. 41 00:02:19,000 --> 00:02:24,000 1101. Bu bir 1, 4 və birini 8 olacaq. 42 00:02:24,000 --> 00:02:28,000 Birlikdə D. edir, 13 olacaq 43 00:02:28,000 --> 00:02:32,000 Və biz hexadecimal biz yalnız 9 0 getmirlər unutmayın lazımdır. 44 00:02:32,000 --> 00:02:36,000 Biz, belə ki, 9 sonra, F vasitəsilə A 10 uyğun 0 getmək, 45 00:02:36,000 --> 00:02:40,000 F 15 olduğu 11 B, Et Cetera. 46 00:02:40,000 --> 00:02:44,000 Burada 13-a D 47 00:02:44,000 --> 00:02:49,000 belə ki, biz bütün biz əslində decimal çevirmək 48 00:02:49,000 --> 00:02:52,000 2 bir güc kimi hər mövqe tutun. 49 00:02:52,000 --> 00:02:58,000 Bu 1, 2 biri sıfır 4s, sıfır 8, bir 16, Et Cetera var 50 00:02:58,000 --> 00:03:03,000 və sizin baş hesablamaq üçün bir az sərt, lakin biz növbəti slayd getmək əgər 51 00:03:03,000 --> 00:03:05,000 biz cavab görə bilərsiniz. 52 00:03:05,000 --> 00:03:09,000 >> Əsasən biz sol geri sağ daxilində olacaq 53 00:03:09,000 --> 00:03:14,000 və biz 2 müvafiq güc ilə hər rəqəmli vurulması edirik. 54 00:03:14,000 --> 00:03:19,000 Və unutmayın hexadecimal biz əvvəlində 0x ilə bu nömrələri adlanır 55 00:03:19,000 --> 00:03:23,000 biz bir decimal sayı ilə çaşdırmaq deyil. 56 00:03:23,000 --> 00:03:29,000 Davam, bu, bir ASCII Cədvəl edir 57 00:03:29,000 --> 00:03:35,000 və biz ASCII istifadə simvol ədədi dəyərlər xəritəsi edir. 58 00:03:35,000 --> 00:03:39,000 Bu Kriptoqrafiya pset xatırlayıram, biz ASCII Cədvəl geniş istifadə 59 00:03:39,000 --> 00:03:43,000 Kriptoqrafiya müxtəlif metodlardan istifadə üçün, 60 00:03:43,000 --> 00:03:47,000 müxtəlif məktublar çevirmək üçün Sezar və Vigenère parol, 61 00:03:47,000 --> 00:03:52,000 istifadəçi tərəfindən verilmiş əsas görə simli edir. 62 00:03:52,000 --> 00:03:56,000 Nin ASCII riyaziyyat bir az nəzər salaq. 63 00:03:56,000 --> 00:04:02,000 Q ki, karakter formasında, 'P' da + 1 Axtarıram, 64 00:04:02,000 --> 00:04:07,000 və '5 '≠ 5 unutmayın. 65 00:04:07,000 --> 00:04:10,000 Və necə məhz biz o 2 formaları arasında çevirmək istəyirsiniz? 66 00:04:10,000 --> 00:04:13,000 Bu, həqiqətən çox çətin deyil. 67 00:04:13,000 --> 00:04:16,000 5 almaq üçün biz '0 çıxmaq ' 68 00:04:16,000 --> 00:04:20,000 çünki '0 arasında 5 yerlər var "və '5 '. 69 00:04:20,000 --> 00:04:23,000 Biz yalnız 0 əlavə digər yolla getmək üçün, 70 00:04:23,000 --> 00:04:25,000 belə ki, müntəzəm hesab kimi növ var. 71 00:04:25,000 --> 00:04:29,000 Yalnız bir şey ətrafında quotes var zaman bir xarakteri olduğunu unutmayın 72 00:04:29,000 --> 00:04:37,000 və beləliklə ASCII masa bir dəyər uyğundur. 73 00:04:37,000 --> 00:04:40,000 Daha ümumi kompüter mövzular hərəkət. 74 00:04:40,000 --> 00:04:43,000 Biz proqramlaşdırma istifadə üçün alqoritm və necə öyrəndim 75 00:04:43,000 --> 00:04:45,000 alqoritmlər həyata keçirmək. 76 00:04:45,000 --> 00:04:48,000 Alqoritmlərin Bəzi nümunələri kimi həqiqətən sadə bir şey var 77 00:04:48,000 --> 00:04:51,000 bir sıra hətta və ya tək olub yoxlanılması. 78 00:04:51,000 --> 00:04:54,000 Bunun üçün biz 2 sayı mod və nəticə 0 olub olmadığını kontrol unutmayın. 79 00:04:54,000 --> 00:04:57,000 Əgər varsa, o da var. Əgər, o, tək deyil. 80 00:04:57,000 --> 00:04:59,000 Və həqiqətən, əsas alqoritm bir misal var. 81 00:04:59,000 --> 00:05:02,000 >> Bir daha cəlb biri bir az ikili axtarış edir 82 00:05:02,000 --> 00:05:05,000 olan biz nəzərdən iclasında sonra artıq getmək lazımdır. 83 00:05:05,000 --> 00:05:09,000 Və proqramlaşdırma biz bir alqoritm görülməsi üçün istifadə müddəti 84 00:05:09,000 --> 00:05:15,000 və kompüter kod dönüştürmek oxuya bilərsiniz. 85 00:05:15,000 --> 00:05:20,000 Proqramlaşdırma 2 nümunələr, Not edir 86 00:05:20,000 --> 00:05:22,000 olan biz Həftə 0 nə edir. 87 00:05:22,000 --> 00:05:25,000 Biz əslində kodunu yazın yoxdur olsa da, həyata bir yol 88 00:05:25,000 --> 00:05:29,000 nömrələri 1-10 çap olan bu alqoritm, 89 00:05:29,000 --> 00:05:32,000 və burada biz C proqramlaşdırma dili eyni. 90 00:05:32,000 --> 00:05:41,000 Bu yalnız müxtəlif dillərdə və ya sintaksis yazılı funksional ekvivalent edir. 91 00:05:41,000 --> 00:05:44,000 Biz sonra, boolean ifadələrin haqqında öyrəndim 92 00:05:44,000 --> 00:05:48,000 və boolean, doğru və ya yalan ya ki, bir dəyər 93 00:05:48,000 --> 00:05:51,000 və burada oftentimes boolean ifadələrin 94 00:05:51,000 --> 00:05:55,000 əgər (x ≤ 5), şərait daxilində getmək, 95 00:05:55,000 --> 00:06:00,000 yaxşı, biz artıq bu şərtlə ki, doğru üçün qiymətləndirmək üçün gedir x = 5, belə müəyyən edilmişdir. 96 00:06:00,000 --> 00:06:03,000 Doğru varsa, hər hansı kodu şəraiti altında 97 00:06:03,000 --> 00:06:08,000 kompüter tərəfindən qiymətləndirilməlidir edir ki, cərgə çap olacaq 98 00:06:08,000 --> 00:06:12,000 standart çıxış və uzunmüddətli vəziyyətinə 99 00:06:12,000 --> 00:06:16,000 əgər hesabat mötərizə içərisində nə aiddir. 100 00:06:16,000 --> 00:06:20,000 Bütün operatorların saxla. 101 00:06:20,000 --> 00:06:26,000 | Biz çalışdığınız zaman birləşdirmək üçün 2 və ya daha çox şərait, | bu && və saxla 102 00:06:26,000 --> 00:06:30,000 == Deyil = 2 şeyi bərabər olub yoxlamaq. 103 00:06:30,000 --> 00:06:36,000 == Bir boolean operator isə = tapşırıq üçün olduğunu unutmayın. 104 00:06:36,000 --> 00:06:41,000 ≤, ≥ və sonra son 2 özünü izahlı edir. 105 00:06:41,000 --> 00:06:45,000 Burada boolean məntiq ümumi icmalı. 106 00:06:45,000 --> 00:06:48,000 Və boolean ifadələr, loops da vacibdir 107 00:06:48,000 --> 00:06:50,000 olan biz artıq getmək lazımdır. 108 00:06:50,000 --> 00:06:56,000 Biz isə, üçün, CS50 günə qədər loops haqqında 3 növ öyrəndim və zamanı yoxdur. 109 00:06:56,000 --> 00:06:59,000 Və bilmək vacibdir ki, ən məqsədləri üçün isə 110 00:06:59,000 --> 00:07:02,000 biz, həqiqətən, ümumiyyətlə loop hər hansı bir növü istifadə edə bilərsiniz 111 00:07:02,000 --> 00:07:06,000 məqsədləri və ya ümumi nümunələri müəyyən növləri var 112 00:07:06,000 --> 00:07:09,000 xüsusilə bu loops bir zəng proqramlaşdırma 113 00:07:09,000 --> 00:07:13,000 onu ən səmərəli və ya şəkildə kod üçün zərif. 114 00:07:13,000 --> 00:07:18,000 Nin bu loops hər tez-tez istifadə etmək üçün çalışır nə üzərində getmək edək. 115 00:07:18,000 --> 00:07:21,000 >> Bir loop üçün biz ümumiyyətlə artıq biz təkrarlamaq istəyirəm neçə dəfə bilirik. 116 00:07:21,000 --> 00:07:24,000 Yəni şəraitində qoymaq budur. 117 00:07:24,000 --> 00:07:28,000 Üçün i = 0, i <10, misal üçün. 118 00:07:28,000 --> 00:07:31,000 Biz artıq biz bir 10 dəfə etmək istəyirəm ki, bilirik. 119 00:07:31,000 --> 00:07:34,000 İndi isə loop üçün, ümumiyyətlə, biz mütləq deyil 120 00:07:34,000 --> 00:07:36,000 biz loop almaq istəyirsinizsə neçə dəfə bilirik. 121 00:07:36,000 --> 00:07:39,000 Amma biz onu istəyirəm ki, vəziyyət bir növ bilmirəm 122 00:07:39,000 --> 00:07:41,000 həmişə doğru və ya həmişə saxta ola bilər. 123 00:07:41,000 --> 00:07:44,000 Məsələn, isə müəyyən edilir. 124 00:07:44,000 --> 00:07:46,000 Gəlin boolean dəyişən olduğunu deyirlər. 125 00:07:46,000 --> 00:07:48,000 Ki, doğru olsa biz kodu qiymətləndirmək istəyirəm, 126 00:07:48,000 --> 00:07:52,000 bir az daha genişlənən, loop üçün daha ümumi bir az bit, 127 00:07:52,000 --> 00:07:55,000 lakin loop üçün heç də bir müddət loop çevrilmişdir bilər. 128 00:07:55,000 --> 00:08:00,000 Nəhayət, nə isə dərhal anlamaq üçün trickiest ola bilər loops, 129 00:08:00,000 --> 00:08:04,000 biz ilk kodu qiymətləndirmək üçün istədiyiniz zaman tez-tez istifadə olunur 130 00:08:04,000 --> 00:08:06,000 ilk əvvəl biz vəziyyəti yoxlamaq. 131 00:08:06,000 --> 00:08:09,000 Bir üçün ümumi istifadə halda nə isə loop 132 00:08:09,000 --> 00:08:12,000 Kullanıcı daxil olmaq üçün istədiyiniz zaman, və siz istifadəçi soruşmaq istəyirəm bilirik 133 00:08:12,000 --> 00:08:15,000 giriş üçün ən azı bir dəfə, lakin onlar yaxşı giriş vermir əgər dərhal 134 00:08:15,000 --> 00:08:18,000 Əgər onlar sizə yaxşı giriş vermək qədər onlara xahiş saxlamaq istəyirik. 135 00:08:18,000 --> 00:08:21,000 Isə loop bir ən ümumi istifadə, bunu var 136 00:08:21,000 --> 00:08:23,000 və-nin bu loops faktiki strukturu baxaq. 137 00:08:23,000 --> 00:08:27,000 Onlar adətən həmişə bu nümunələri riayət edirlər. 138 00:08:27,000 --> 00:08:30,000 >> Daxili üçün loop siz 3 komponentləri vardır: 139 00:08:30,000 --> 00:08:35,000 başlatma, adətən bir şey kimi int i əks olduğu = 0, 140 00:08:35,000 --> 00:08:40,000 biz bu vəziyyət hələ malikdir kimi uzun kimi loop üçün run demək istədiyiniz vəziyyəti, 141 00:08:40,000 --> 00:08:44,000 biz arttırmayı necə olan i nəhayət sonra <10 və yeniləmə kimi 142 00:08:44,000 --> 00:08:47,000 loop hər nöqtədə counter dəyişən. 143 00:08:47,000 --> 00:08:50,000 Orada görmək üçün ümumi şey, yalnız i + + edir 144 00:08:50,000 --> 00:08:52,000 1-hər zaman i arttırmayı deməkdir. 145 00:08:52,000 --> 00:08:55,000 Siz həmçinin, i + = 2 kimi bir şey edə 146 00:08:55,000 --> 00:08:58,000 hansı i sizə loop keçmək hər dəfə 2 əlavə deməkdir. 147 00:08:58,000 --> 00:09:03,000 Və sonra bunu yalnız həqiqətən loop hissəsi kimi çalışır ki, hər hansı bir kodu aiddir. 148 00:09:03,000 --> 00:09:09,000 Və bir müddət loop üçün, bu dəfə biz, həqiqətən, loop kənarda başlatma var 149 00:09:09,000 --> 00:09:12,000 belə misal üçün, biz yalnız təsvir loop eyni tipli etmək çalışdığınız demək bildirin. 150 00:09:12,000 --> 00:09:16,000 Biz int i = 0 loop başlayır əvvəl deyərdim. 151 00:09:16,000 --> 00:09:20,000 I <10 bu isə sonra biz, demək olar 152 00:09:20,000 --> 00:09:22,000 əvvəl kodu belə eyni məhəllə, 153 00:09:22,000 --> 00:09:26,000 və bu zaman məsələn kodu yeniləmə hissəsi, i + +, 154 00:09:26,000 --> 00:09:29,000 əslində loop daxilində gedir. 155 00:09:29,000 --> 00:09:33,000 Və nəhayət, bir, bu isə loop oxşar isə etmək, 156 00:09:33,000 --> 00:09:36,000 lakin biz kodu dəfə qiymətləndirmək unutmayın var 157 00:09:36,000 --> 00:09:40,000 vəziyyəti yoxlanılır əvvəl, belə ki, daha çox əhəmiyyət kəsb edir 158 00:09:40,000 --> 00:09:44,000 siz alt üst üçün baxmaq. əgər 159 00:09:44,000 --> 00:09:49,000 Bir bile isə vəziyyət baxmaq əvvəl loop kodu qiymətləndirir isə etmək, 160 00:09:49,000 --> 00:09:55,000 bir müddət loop isə, ilk yoxlayır. 161 00:09:55,000 --> 00:09:59,000 Hesabatları və dəyişənlər. 162 00:09:59,000 --> 00:10:04,000 Yeni bir dəyişən yaratmaq istədiyiniz zaman biz ilk başlamaq istəyirəm. 163 00:10:04,000 --> 00:10:07,000 >> Məsələn, int bar, dəyişən bar initializes 164 00:10:07,000 --> 00:10:10,000 lakin indi bar dəyəri nə ki, bir dəyər vermir? 165 00:10:10,000 --> 00:10:12,000 Biz bilmirik. 166 00:10:12,000 --> 00:10:14,000 Bu, əvvəllər orada yaddaşında saxlanılır ki, bəzi zibil dəyər ola bilər 167 00:10:14,000 --> 00:10:16,000 və biz dəyişən istifadə etmək istəmirik 168 00:10:16,000 --> 00:10:19,000 biz, həqiqətən, bir dəyər verir, qədər 169 00:10:19,000 --> 00:10:21,000 biz burada bəyan edir. 170 00:10:21,000 --> 00:10:24,000 Sonra aşağıdakı 42 olmaq başlamaq. 171 00:10:24,000 --> 00:10:28,000 İndi, əlbəttə, biz bu xətt üzrə int bar = 42 edilə bilər bilirik. 172 00:10:28,000 --> 00:10:30,000 Lakin, davam edir ki, bir çox addımlar təmizləmək üçün 173 00:10:30,000 --> 00:10:34,000 bəyannamə və başlatma burada ayrı-ayrı olur. 174 00:10:34,000 --> 00:10:38,000 Bu, növbəti bir, int baz = bar + 1 bir addım olur, və 175 00:10:38,000 --> 00:10:44,000 bu kodu blokunun sonunda aşağıda bu bəyanat ki, əlavələr baz, 176 00:10:44,000 --> 00:10:48,000 biz baz dəyəri çap idi əgər 44 olardı 177 00:10:48,000 --> 00:10:52,000 biz bəyan və 1> bar olmaq üçün başlamaq çünki 178 00:10:52,000 --> 00:10:58,000 və sonra biz bir daha arttırmayı də + +. 179 00:10:58,000 --> 00:11:02,000 Biz bu olduqca qısa keçdi, ancaq bir ümumi var yaxşı 180 00:11:02,000 --> 00:11:04,000 mövzuları və hadisələri nə dərk. 181 00:11:04,000 --> 00:11:06,000 Biz əsasən, Not bu idi 182 00:11:06,000 --> 00:11:09,000 belə ki, kodu birdən ardıcıllığı kimi mövzuları hesab edə bilər 183 00:11:09,000 --> 00:11:11,000 eyni zamanda çalışır. 184 00:11:11,000 --> 00:11:14,000 Aktuallığı, bu, yəqin ki, eyni zamanda çalışan deyil 185 00:11:14,000 --> 00:11:17,000 lakin növ abstractly ki şəkildə hesab edə bilər. 186 00:11:17,000 --> 00:11:20,000 >> Not Məsələn, biz çox sprites idi. 187 00:11:20,000 --> 00:11:22,000 Bu eyni zamanda müxtəlif kodu icra edilə bilər. 188 00:11:22,000 --> 00:11:26,000 Başqa bir şey söylədiyini isə bir gəzinti edilə bilər 189 00:11:26,000 --> 00:11:29,000 ekran müxtəlif hissəsi. 190 00:11:29,000 --> 00:11:34,000 Hadisələr məntiq həyata ayıran başqa bir yolu 191 00:11:34,000 --> 00:11:37,000 kodunuzu müxtəlif elementləri arasında, 192 00:11:37,000 --> 00:11:40,000 və Scratch biz Yayım istifadə hadisələr simülasyonu edə 193 00:11:40,000 --> 00:11:43,000 Mən əldə zaman və ki, mən eşitmək deyil, həqiqətən var 194 00:11:43,000 --> 00:11:47,000 lakin mahiyyətcə informasiya ötürmək üçün bir yol var 195 00:11:47,000 --> 00:11:49,000 bir sprite başqa. 196 00:11:49,000 --> 00:11:52,000 Məsələn, siz, oyun üzərində ötürmək bilərsiniz 197 00:11:52,000 --> 00:11:56,000 və başqa sprite üzərində oyun qəbul edərkən, 198 00:11:56,000 --> 00:11:58,000 o müəyyən bir şəkildə cavab verir. 199 00:11:58,000 --> 00:12:03,000 Bu proqramlaşdırma anlamaq üçün əhəmiyyətli model deyil. 200 00:12:03,000 --> 00:12:07,000 Yalnız əsas Həftə 0 artıq getmək, nə biz bu günə qədər üzərində getdi sonra, 201 00:12:07,000 --> 00:12:10,000 bu sadə C proqram baxaq. 202 00:12:10,000 --> 00:12:14,000 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. 203 00:12:14,000 --> 00:12:20,000 Biz üst cs50.h və stdio.h 2 mövzu faylları o cümlədən edirik. 204 00:12:20,000 --> 00:12:23,000 Biz sonra 100 olmaq üçün daimi adlı limit müəyyən edirik. 205 00:12:23,000 --> 00:12:26,000 Biz sonra bizim əsas funksiyası həyata edirik. 206 00:12:26,000 --> 00:12:29,000 Biz burada command line arguments istifadə etməyin ildən biz etibarsız qoymaq lazımdır 207 00:12:29,000 --> 00:12:32,000 əsas üçün arqumentlər kimi. 208 00:12:32,000 --> 00:12:38,000 Biz əsas yuxarıda int görürük. Qaytarılması növü var ki, buradan altındakı 0 qaytarın. 209 00:12:38,000 --> 00:12:41,000 Və biz int almaq CS50 kitabxana funksiyası istifadə etdiyiniz 210 00:12:41,000 --> 00:12:45,000 giriş üçün istifadəçi xahiş və bu dəyişən x onu saxlamaq üçün, 211 00:12:45,000 --> 00:12:51,000 biz yuxarıda x elan və biz x = GetInt ilə başlamaq. 212 00:12:51,000 --> 00:12:53,000 >> Biz istifadəçi bizə yaxşı giriş verdi kontrol edin. 213 00:12:53,000 --> 00:12:59,000 Bu ≥ LIMIT varsa biz 1-bir səhv baş kodu qayıtmaq və bir səhv baş beledir çap etmək istəyirəm. 214 00:12:59,000 --> 00:13:02,000 Və nəhayət, istifadəçi bizə verdiyi əgər yaxşı giriş 215 00:13:02,000 --> 00:13:08,000 biz sayı vaziyeti və nəticə çap olacaq. 216 00:13:08,000 --> 00:13:11,000 Sadəcə əmin olun ki, o hit ev bütün 217 00:13:11,000 --> 00:13:17,000 Burada kodu müxtəlif hissələrinin yazıları bilərsiniz. 218 00:13:17,000 --> 00:13:19,000 Mən daimi, mövzu faylları qeyd edib. 219 00:13:19,000 --> 00:13:21,000 Oh, int x. Yerli dəyişən var unutmayın ki, əmin olun. 220 00:13:21,000 --> 00:13:24,000 Biz haqqında danışmaq lazımdır ki, qlobal dəyişən bu Təzadlar 221 00:13:24,000 --> 00:13:27,000 bir az sonra nəzərdən iclasında, 222 00:13:27,000 --> 00:13:30,000 və biz printf kitabxana funksiyası zəng 223 00:13:30,000 --> 00:13:34,000 biz stdio.h header fayl daxil deyil əgər 224 00:13:34,000 --> 00:13:37,000 biz printf zəng edə bilməz. 225 00:13:37,000 --> 00:13:42,000 Mən burada kəsilmiş oldu ki arrow% d işarə edir 226 00:13:42,000 --> 00:13:45,000 printf bir format string olan. 227 00:13:45,000 --> 00:13:52,000 Bu sayı,% d bu dəyişən çap edir. 228 00:13:52,000 --> 00:13:58,000 Və Həftə 0 deyil. 229 00:13:58,000 --> 00:14:06,000 İndi Lucas davam edir. 230 00:14:06,000 --> 00:14:08,000 Hey, uşaqlar. My name Lucas edir. 231 00:14:08,000 --> 00:14:10,000 Mən, universitet, Mather ən yaxşı ev bir sophomore deyiləm 232 00:14:10,000 --> 00:14:14,000 və mən həftə 1 və 2,1 haqqında bir az danışmaq üçün gedirəm. 233 00:14:14,000 --> 00:14:16,000 [1 Hafta və 2.1!] [Lucas Freitas] 234 00:14:16,000 --> 00:14:19,000 Biz sıfırdan C üçün kodu tərcümə başladı Lexi deyən kimi 235 00:14:19,000 --> 00:14:23,000 biz qeyd edir ki, hər biri yalnız bilər ki, 236 00:14:23,000 --> 00:14:26,000 Sizin kodu yazmaq və artıq yaşıl bayraq istifadə edərək axır. 237 00:14:26,000 --> 00:14:30,000 Əslində, siz C proqram etmək üçün bəzi addımlar istifadə etmək 238 00:14:30,000 --> 00:14:33,000 bir faylı olur. 239 00:14:33,000 --> 00:14:36,000 Əsasən hansı bir proqram yazı etdiyiniz zaman siz ki, 240 00:14:36,000 --> 00:14:40,000 Əgər bir compiler anlamaq olar ki, bir dil sizin fikir tərcümə 241 00:14:40,000 --> 00:14:44,000 C bir proqram yazıyoruz belə zaman 242 00:14:44,000 --> 00:14:47,000 nə edirik həqiqətən, sizin compiler anlamaq üçün gedir ki, bir şey yazır, 243 00:14:47,000 --> 00:14:50,000 və sonra compiler kod tərcümə edir 244 00:14:50,000 --> 00:14:53,000 kompüter anlamaq ki, bir şey daxil. 245 00:14:53,000 --> 00:14:55,000 >> Və şey, kompüter həqiqətən çox lal edir. 246 00:14:55,000 --> 00:14:57,000 Sizin kompüter yalnız 0s və 1s anlaya 247 00:14:57,000 --> 00:15:01,000 belə əslində ilk kompüter insanlar adətən proqramlaşdırılmış 248 00:15:01,000 --> 00:15:04,000 artıq 0s və 1s, lakin istifadə edərək, Allah təşəkkür edirəm. 249 00:15:04,000 --> 00:15:07,000 Biz 0s və 1s üçün ardıcıllığı yadda yoxdur 250 00:15:07,000 --> 00:15:10,000 loop və ya bir müddət loop və s. üçün üçün. 251 00:15:10,000 --> 00:15:13,000 Biz bir compiler var görə. 252 00:15:13,000 --> 00:15:17,000 Nə compiler edir ki, əsasən C kodu tərcümə edir 253 00:15:17,000 --> 00:15:21,000 bizim halda, kompüter anlamaq bir dil, 254 00:15:21,000 --> 00:15:25,000 olan obyekt kodunu və biz istifadə etdiyiniz compiler edir 255 00:15:25,000 --> 00:15:30,000 zınqıltı adlanır, belə ki, bu, həqiqətən, cingilti üçün rəmzidir. 256 00:15:30,000 --> 00:15:33,000 Siz proqram zaman, siz 2 şeyə var. 257 00:15:33,000 --> 00:15:37,000 Birincisi, sizin proqram tərtib etmək, və sonra sizin proqram run olacaq. 258 00:15:37,000 --> 00:15:41,000 Bunu variantları bir çox proqram tərtib etmək. 259 00:15:41,000 --> 00:15:44,000 Ilk bir cingilti program.c etmək 260 00:15:44,000 --> 00:15:47,000 olan proqram, proqramın adıdır. 261 00:15:47,000 --> 00:15:51,000 Bu halda onlar yalnız deyərək edirik görürük "Hey, mənim proqram tərtib edir." 262 00:15:51,000 --> 00:15:56,000 Siz və ya bir şey "Mən proqramı üçün bu adı mənə" deyərək deyilik. 263 00:15:56,000 --> 00:15:58,000 >> İkinci seçim proqram bir ad verir. 264 00:15:58,000 --> 00:16:02,000 Sonra cingilti-o və siz istədiyiniz adı demək olar 265 00:16:02,000 --> 00:16:06,000 yürütülebilir fayl kimi və sonra program.c adına edilir. 266 00:16:06,000 --> 00:16:11,000 Və həmçinin proqram etmək üçün, və ilk 2 hallarda görmək olar 267 00:16:11,000 --> 00:16:15,000 Mən. C qoymaq və üçüncü mən yalnız proqramları var? 268 00:16:15,000 --> 00:16:18,000 Bəli, həqiqətən qoymaq lazımdır. C siz istifadə zaman. 269 00:16:18,000 --> 00:16:22,000 Əks halda compiler həqiqətən sizə fəğan edir. 270 00:16:22,000 --> 00:16:24,000 Uşaqlar xatırlayıram varsa da, mən bilmirəm 271 00:16:24,000 --> 00:16:29,000 lakin biz də istifadə-lcs50 ya-lm dəfə çox. 272 00:16:29,000 --> 00:16:31,000 Bu keçid adlanır. 273 00:16:31,000 --> 00:16:35,000 Bu, sadəcə, siz orada bu kitabxana istifadə edəcək compiler deyir 274 00:16:35,000 --> 00:16:39,000 siz cs50.h istifadə etmək istəyirsinizsə əgər həqiqətən yazın var 275 00:16:39,000 --> 00:16:43,000 zınqıltı program.c-lcs50. 276 00:16:43,000 --> 00:16:45,000 Siz bunu deyil varsa, compiler bilmək niyyətində deyil 277 00:16:45,000 --> 00:16:50,000 siz cs50.h. bu funksiyaları istifadə etdiyiniz 278 00:16:50,000 --> 00:16:52,000 Və siz 2 variantları proqram çalıştırmak üçün istədiyiniz zaman. 279 00:16:52,000 --> 00:16:57,000 Siz cingilti program.c Əgər sizin proqram üçün bir ad vermədi. 280 00:16:57,000 --> 00:17:01,000 Siz. / A.out istifadə edərək, run var. 281 00:17:01,000 --> 00:17:06,000 A.out siz bir ad vermək yoxsa cingilti proqram verir ki, standart ad. 282 00:17:06,000 --> 00:17:11,000 Sizin proqram üçün bir ad verdi Əks təqdirdə siz. / Proqram nə olacaq, 283 00:17:11,000 --> 00:17:15,000 siz proqram adı etmək Əgər, həmçinin bir proqram olacaq ki, 284 00:17:15,000 --> 00:17:23,000 artıq c fayl eyni adı proqramlaşdırılmış edir. 285 00:17:23,000 --> 00:17:26,000 Sonra data növləri və data danışdı. 286 00:17:26,000 --> 00:17:31,000 >> Əsasən data növləri istifadə etdikləri kiçik qutu eyni şey 287 00:17:31,000 --> 00:17:35,000 dəyərlər saxlamaq üçün, belə ki, data növləri yalnız Pokémons kimi əslində. 288 00:17:35,000 --> 00:17:39,000 Onlar bütün ölçü və növ olur. 289 00:17:39,000 --> 00:17:43,000 Ki, analogiya anlamlı əgər mən bilmirəm. 290 00:17:43,000 --> 00:17:46,000 Bu data ölçüsü əslində maşın memarlıq asılıdır. 291 00:17:46,000 --> 00:17:49,000 Burada göstərmək gidiyorum olan məlumatların ölçüləri 292 00:17:49,000 --> 00:17:53,000 bizim cihaz halda olan bir 32-bit maşın üçün faktiki 293 00:17:53,000 --> 00:17:56,000 lakin həqiqətən, sizin Mac və ya Windows də kodlaşdırma əgər 294 00:17:56,000 --> 00:17:59,000 yəqin ki, bir 64-bit maşın var olacaq 295 00:17:59,000 --> 00:18:03,000 Mən gedirəm ki, data ölçüləri burada göstərmək unutmayın 296 00:18:03,000 --> 00:18:06,000 32-bit maşın üçün. 297 00:18:06,000 --> 00:18:08,000 Gördük ki, birinci, bir int idi 298 00:18:08,000 --> 00:18:10,000 olan olduqca sadə deyil. 299 00:18:10,000 --> 00:18:13,000 Siz tam saxlamaq üçün int istifadə edin. 300 00:18:13,000 --> 00:18:16,000 Biz, həmçinin, karakter ki, char gördüm. 301 00:18:16,000 --> 00:18:20,000 Bir məktub və ya bir az simvol istifadə etmək istəyirsinizsə, siz yəqin ki, char istifadə olacaq. 302 00:18:20,000 --> 00:18:26,000 A char Lexi bildirib kimi 8 bit, deməkdir 1 byte var. 303 00:18:26,000 --> 00:18:31,000 Əsasən biz 256 olan bir ASCII Cədvəl var 304 00:18:31,000 --> 00:18:34,000 0s və 1s mümkün birləşməsi, 305 00:18:34,000 --> 00:18:37,000 və sonra bir char yazın zaman tərcümə olacaq 306 00:18:37,000 --> 00:18:44,000 karakter giriş siz Lexi kimi ASCII masa var ki, bir sıra söylədi. 307 00:18:44,000 --> 00:18:48,000 Biz həmçinin decimal nömrələri saxlamaq üçün istifadə edən float var. 308 00:18:48,000 --> 00:18:53,000 Siz 3.14 seçmək istəyirsinizsə, misal üçün, bir float istifadə etmək olacaq 309 00:18:53,000 --> 00:18:55,000 və ya daha dəqiq bir cüt. 310 00:18:55,000 --> 00:18:57,000 A float 4 bayt var. 311 00:18:57,000 --> 00:19:01,000 A ikiqat 8 bayt var, belə ki, yalnız fərq dəqiq deyil. 312 00:19:01,000 --> 00:19:04,000 Biz də tam ədədlər üçün istifadə olunur ki, uzun var 313 00:19:04,000 --> 00:19:09,000 və bir int və uzun eyni ölçüdə bir 32-bit maşın üçün bilərsiniz 314 00:19:09,000 --> 00:19:13,000 belə ki, həqiqətən bir 32-bit maşın uzun istifadə etmək məntiqli deyil. 315 00:19:13,000 --> 00:19:17,000 >> Mac və 64-bit maşın kullanıyorsanız Lakin, həqiqətən, uzun, ölçüsü 8 malikdir 316 00:19:17,000 --> 00:19:19,000 belə ki, həqiqətən memarlıq asılıdır. 317 00:19:19,000 --> 00:19:22,000 32-bit maşın üçün həqiqətən uzun istifadə etmək məntiqli deyil. 318 00:19:22,000 --> 00:19:25,000 Və sonra uzun uzun, digər tərəfdən, 8 bayt var 319 00:19:25,000 --> 00:19:30,000 bir daha tam etmək istəyirsinizsə buna çox yaxşıdır. 320 00:19:30,000 --> 00:19:34,000 Və, nəhayət, biz, həqiqətən, char * olan, simli var 321 00:19:34,000 --> 00:19:37,000 bir char bir göstəricisidir. 322 00:19:37,000 --> 00:19:40,000 Bu simli ölçüsü kimi olacaq edirəm ki, çox asandır 323 00:19:40,000 --> 00:19:42,000 siz var simvolların sayı 324 00:19:42,000 --> 00:19:45,000 lakin əslində char * özü 325 00:19:45,000 --> 00:19:49,000 4 bayt olan char, bir pointer də ölçüsü var. 326 00:19:49,000 --> 00:19:52,000 Bir char * həcmi 4 bayt edir. 327 00:19:52,000 --> 00:19:56,000 Bir kiçik söz və ya bir məktub və ya bir şey varsa, fərqi yoxdur. 328 00:19:56,000 --> 00:19:58,000 O, 4 bayt olacaq. 329 00:19:58,000 --> 00:20:01,000 Biz həmçinin tökmə haqqında bir az öyrəndim 330 00:20:01,000 --> 00:20:04,000 varsa siz görə bilərsiniz kimi, misal üçün, proqram deyir ki, 331 00:20:04,000 --> 00:20:08,000 int x = 3 və sonra printf ("% d" x / 2) 332 00:20:08,000 --> 00:20:12,000 uşaqlar bu ekranda çap neler bilirik? 333 00:20:12,000 --> 00:20:14,000 >> Biri? >> [Tələbələr] 2. 334 00:20:14,000 --> 00:20:16,000 1. >> 1, evet. 335 00:20:16,000 --> 00:20:20,000 3/2 nə zaman o, 1.5 olacaq 336 00:20:20,000 --> 00:20:24,000 biz tam istifadə etdiyiniz ildən lakin decimal hissəsi ignore olacaq 337 00:20:24,000 --> 00:20:26,000 və 1 var olacaq. 338 00:20:26,000 --> 00:20:29,000 Siz ki, misal üçün, nə baş istəmirsinizsə 339 00:20:29,000 --> 00:20:33,000 bir float elan olunur y = x. 340 00:20:33,000 --> 00:20:40,000 Sonra 3 olmaq üçün istifadə ki, x indi y ildə 3.000 olacaq. 341 00:20:40,000 --> 00:20:44,000 Və sonra y / 2 çap edə bilərsiniz. 342 00:20:44,000 --> 00:20:50,000 Əslində, mən bir 2 olmalıdır. orada. 343 00:20:50,000 --> 00:20:55,000 Bu, 3.00/2.00 nə olacaq 344 00:20:55,000 --> 00:20:58,000 və 1,5 almaq olacaq. 345 00:20:58,000 --> 00:21:06,000 Və biz yalnız decimal hissəsində 2 ədəd decimal soruşmaq üçün bu .2 f var. 346 00:21:06,000 --> 00:21:12,000 Siz .3 f varsa faktiki 1.500 var olacaq. 347 00:21:12,000 --> 00:21:16,000 O varsa 2 1.50 olacaq. 348 00:21:16,000 --> 00:21:18,000 Biz də burada bu vəziyyət var. 349 00:21:18,000 --> 00:21:22,000 Siz float Əgər x = 3.14 və sonra printf x 350 00:21:22,000 --> 00:21:24,000 siz 3.14 almaq olacaq. 351 00:21:24,000 --> 00:21:29,000 Və əgər x x = olan int, 352 00:21:29,000 --> 00:21:34,000 bir int kimi x müalicə deməkdir və indi x çap hansı 353 00:21:34,000 --> 00:21:36,000 siz 3.00 malik olacaq. 354 00:21:36,000 --> 00:21:38,000 Bu mənada edirmi? 355 00:21:38,000 --> 00:21:41,000 Ilk bir tam kimi x müalicə edirik Çünki, belə ki, siz decimal hissəsi məhəl edirik 356 00:21:41,000 --> 00:21:45,000 və sonra x çap edirik. 357 00:21:45,000 --> 00:21:47,000 Və nəhayət, siz də bunu edə bilərsiniz 358 00:21:47,000 --> 00:21:52,000 int x = 65, və sonra bir char c = x bəyan 359 00:21:52,000 --> 00:21:56,000 siz c çap əgər, sonra həqiqətən almaq olacaq 360 00:21:56,000 --> 00:21:59,000 A, burada belə əsasən nə edirik 361 00:21:59,000 --> 00:22:02,000 , karakter daxil tam tərcümə olunur 362 00:22:02,000 --> 00:22:05,000 yalnız kimi ASCII Cədvəl edir. 363 00:22:05,000 --> 00:22:08,000 Biz həmçinin riyaziyyat operatorları danışdı. 364 00:22:08,000 --> 00:22:14,000 Onların çoxu olduqca sadə, belə +, -, *, /, 365 00:22:14,000 --> 00:22:20,000 və həmçinin 2 ədəd bölgüsü qalan olan mod haqqında danışdı. 366 00:22:20,000 --> 00:22:23,000 Məsələn, 10% 3, varsa, 367 00:22:23,000 --> 00:22:27,000 3 10 bölmək deməkdir və qalan nədir? 368 00:22:27,000 --> 00:22:30,000 Bu 1 olacaq, belə ki, proqramları bir çox üçün həqiqətən çox faydalıdır. 369 00:22:30,000 --> 00:22:38,000 Vigenère və Caesar üçün Mən sizə uşaqlar bütün mod istifadə olduqca əminəm. 370 00:22:38,000 --> 00:22:43,000 * Və / birləşən zaman riyaziyyat operatorlar haqqında, çox ehtiyatlı olun. 371 00:22:43,000 --> 00:22:48,000 >> Əgər məsələn, (3/2) * 2 nə almaq üçün gedir? 372 00:22:48,000 --> 00:22:50,000 [Tələbələr] 2. 373 00:22:50,000 --> 00:22:54,000 Bəli, 2, 3/2, çünki 1.5 olacaq, 374 00:22:54,000 --> 00:22:57,000 ancaq 2 integers arasında əməliyyatlar edirik bəri 375 00:22:57,000 --> 00:22:59,000 həqiqətən, yalnız 1-hesab olacaq 376 00:22:59,000 --> 00:23:03,000 və sonra 1 * 2 2 olacaq, belə ki, çox, çox ehtiyatlı olun 377 00:23:03,000 --> 00:23:07,000 integers ilə hesab edərkən, çünki 378 00:23:07,000 --> 00:23:12,000 siz bu halda ki, 2 = 3 əldə edə bilər. 379 00:23:12,000 --> 00:23:14,000 Həmçinin üstün çox ehtiyatlı olun. 380 00:23:14,000 --> 00:23:21,000 Siz adətən siz yapýyorsun nə əmin olmaq parantez istifadə etməlidir. 381 00:23:21,000 --> 00:23:27,000 Bəzi faydalı qısa yolları, əlbəttə, bir i + + və ya i + = 1 382 00:23:27,000 --> 00:23:30,000 və ya istifadə + =. 383 00:23:30,000 --> 00:23:34,000 Bu i = i + 1 etməklə eyni şeydir. 384 00:23:34,000 --> 00:23:39,000 Siz həmçinin i edə bilərsiniz - və ya i - = 1, 385 00:23:39,000 --> 00:23:42,000 ki, i = i -1 eyni şey 386 00:23:42,000 --> 00:23:46,000 bir şey uşaqlar ən azı, loops üçün bir çox istifadə edir. 387 00:23:46,000 --> 00:23:52,000 Həmçinin, * üçün, * = və əgər, misal üçün istifadə əgər, 388 00:23:52,000 --> 00:23:57,000 i * = 2 i = i * 2 deyərək eyni şey, 389 00:23:57,000 --> 00:23:59,000 və şöbə üçün eyni şey. 390 00:23:59,000 --> 00:24:08,000 Siz i / = 2 Əgər bu i = i / 2 eyni şey. 391 00:24:08,000 --> 00:24:10,000 >> İndi funksiyaları haqqında. 392 00:24:10,000 --> 00:24:13,000 Siz uşaqlar funksiyaları kodu saxlamaq üçün çox yaxşı bir strategiya olduğu öyrənildi 393 00:24:13,000 --> 00:24:16,000 Əgər proqramlaşdırma etdiyiniz zaman, belə ki, həmin tapşırıq yerinə istəyirsinizsə 394 00:24:16,000 --> 00:24:20,000 kodu təkrar, yəqin ki, bir funksiyasından istifadə etmək istəyirəm 395 00:24:20,000 --> 00:24:25,000 yalnız belə yenə üzərində kodu seçin və yapışdırıb yoxdur. 396 00:24:25,000 --> 00:24:28,000 Əslində, əsas funksiyası, və mən bir funksiyası format olanda 397 00:24:28,000 --> 00:24:32,000 ki, olduqca aydın görmək olacaq. 398 00:24:32,000 --> 00:24:35,000 Biz, həmçinin, bəzi kitabxana funksiyalarının istifadə 399 00:24:35,000 --> 00:24:39,000 Məsələn, printf ki, CS50 kitabxana olan GetIn, 400 00:24:39,000 --> 00:24:43,000 və toupper kimi digər funksiyaları. 401 00:24:43,000 --> 00:24:46,000 Bu funksiyaları bütün həqiqətən, digər kitabxanalarda həyata keçirilir 402 00:24:46,000 --> 00:24:49,000 və siz proqram əvvəlində o hörük faylları qoymaq zaman 403 00:24:49,000 --> 00:24:53,000 Siz mənə funksiyaları üçün kodu verin bilər deyərək edirik 404 00:24:53,000 --> 00:24:57,000 mən özüm onların həyata keçirilməsi üçün yoxdur? 405 00:24:57,000 --> 00:25:00,000 Və siz də proqramlaşdırma başlamaq zaman, öz funksiyaları yaza bilərsiniz 406 00:25:00,000 --> 00:25:04,000 siz kitabxana sizə lazım olan bütün funksiyaları yoxdur bilirik. 407 00:25:04,000 --> 00:25:10,000 Son pset üçün, misal üçün, biz, scramble çəkmək və axtarış yazdı 408 00:25:10,000 --> 00:25:13,000 və funksiyaları yazmaq etmək üçün çox vacibdir 409 00:25:13,000 --> 00:25:17,000 onlar faydalıdır və biz onları proqramlaşdırma bütün vaxt istifadə, çünki, 410 00:25:17,000 --> 00:25:19,000 və kodu bir çox saxlayır. 411 00:25:19,000 --> 00:25:21,000 Bir funksiyasının format bu biridir. 412 00:25:21,000 --> 00:25:24,000 Biz əvvəlində qayıtması növü var. Qaytarılması növü nədir? 413 00:25:24,000 --> 00:25:27,000 Bu funksiya geri gedir zaman yalnız var. 414 00:25:27,000 --> 00:25:29,000 Siz faktöryel məsələn bir funksiyası, varsa 415 00:25:29,000 --> 00:25:31,000 ki, bir tam bir faktöryel hesablamaq gedir 416 00:25:31,000 --> 00:25:34,000 Yəqin ki, bu da bir tam geri olacaq. 417 00:25:34,000 --> 00:25:37,000 Sonra geri növü int olacaq. 418 00:25:37,000 --> 00:25:41,000 Printf həqiqətən bir dönüş növü boşluq var 419 00:25:41,000 --> 00:25:43,000 bir şey qaytarılması deyilik, çünki. 420 00:25:43,000 --> 00:25:45,000 Siz yalnız ekran şeyi çap edirik 421 00:25:45,000 --> 00:25:48,000 və sonra funksiyanı çıxdıqda. 422 00:25:48,000 --> 00:25:51,000 Sonra, siz seçə bilərsiniz ki, funksiyası adı var. 423 00:25:51,000 --> 00:25:55,000 Xyz kimi bir ad seçin yoxdur kimi Siz, bir az ağlabatan olmalıdır 424 00:25:55,000 --> 00:25:58,000 və ya x2f kimi. 425 00:25:58,000 --> 00:26:02,000 Anlamlı bir ad etmək üçün cəhd edin. 426 00:26:02,000 --> 00:26:04,000 >> Məsələn, faktöryel varsa, faktöryel deyirlər. 427 00:26:04,000 --> 00:26:08,000 Bir şey cəlb edir bir funksiya varsa, bu çəkmək adı. 428 00:26:08,000 --> 00:26:11,000 Və sonra biz də dəlillər adlanan parametrləri, var, 429 00:26:11,000 --> 00:26:14,000 Sizin funksiyası ehtiyacı resursları kimi olan var 430 00:26:14,000 --> 00:26:17,000 kodunuzu onun vəzifəsi yerinə yetirmək. 431 00:26:17,000 --> 00:26:20,000 Bir sıra faktöryel hesablamaq istəyirsinizsə 432 00:26:20,000 --> 00:26:23,000 yəqin ki, bir faktöryel hesablanması üçün bir sıra lazımdır. 433 00:26:23,000 --> 00:26:27,000 Siz olacaq ki, arqumentlərdən biri sayını özü edir. 434 00:26:27,000 --> 00:26:31,000 Və sonra bir şey və sonunda dəyəri geri olacaq 435 00:26:31,000 --> 00:26:35,000 bir boşluq funksiyası var halda. 436 00:26:35,000 --> 00:26:37,000 Nin bir örnek görmek edək. 437 00:26:37,000 --> 00:26:40,000 Mən integers bir sıra bütün nömrələri yekunlaşdırır bir funksiya yazmaq istəyirsinizsə 438 00:26:40,000 --> 00:26:43,000 ilk növbədə, qaytarılması növü int olacaq 439 00:26:43,000 --> 00:26:46,000 Mən integers bir sıra var. 440 00:26:46,000 --> 00:26:51,000 Və sonra mən sumArray kimi funksiyası adı gedirəm 441 00:26:51,000 --> 00:26:54,000 sonra, int nums üçün array özü almaq olacaq 442 00:26:54,000 --> 00:26:58,000 və sonra mən vurmaq üçün nə qədər nömrələri bilirik belə serialın uzunluğu. 443 00:26:58,000 --> 00:27:02,000 Sonra 0 misal üçün dəyişən deyilən məbləğ, başlamaq üçün 444 00:27:02,000 --> 00:27:08,000 Mən array bir element görmək hər dəfə cəmi əlavə olunmalıdır, mən loop üçün etdi. 445 00:27:08,000 --> 00:27:15,000 Lexi dediyi kimi, siz int i = 0, i 00:27:20,000 Və array hər element üçün mən məbləğ + = nums [i] etdi 447 00:27:20,000 --> 00:27:24,000 və sonra məbləği geri, belə ki, çox sadə, və kodu bir çox saxlayır 448 00:27:24,000 --> 00:27:28,000 Bu funksiya dəfə çox istifadə edirsinizsə. 449 00:27:28,000 --> 00:27:32,000 Sonra şərait nəzər etdi. 450 00:27:32,000 --> 00:27:38,000 Biz başqa, əgər, və başqa varsa. 451 00:27:38,000 --> 00:27:42,000 Arasında fərq nə edək. 452 00:27:42,000 --> 00:27:45,000 Bu 2 kodları bir göz atın. Onların arasında fərq nədir? 453 00:27:45,000 --> 00:27:49,000 Ilk bir əsasən etmişdir kodları siz demək istəyirəm 454 00:27:49,000 --> 00:27:51,000 , və ya 0 - bir sıra +, əgər. 455 00:27:51,000 --> 00:27:55,000 Ilk bir o> 0 varsa onda müsbət var deyir. 456 00:27:55,000 --> 00:28:00,000 O 0 = varsa onda 0, ve <0 varsa onda mənfi var. 457 00:28:00,000 --> 00:28:04,000 >> Başqa, əgər başqa, əgər biri edir. 458 00:28:04,000 --> 00:28:07,000 Arasında fərq bu həqiqətən gedir ki, 459 00:28:07,000 --> 00:28:13,000 yoxlamaq əgər> 0, <0 və ya = 0 üç dəfə, 460 00:28:13,000 --> 00:28:17,000 siz 2 saylı varsa, məsələn, buraya gəlmişəm və demək olacaq 461 00:28:17,000 --> 00:28:21,000 bu yes demək olacaq (x> 0) əgər, və mən müsbət çap. 462 00:28:21,000 --> 00:28:25,000 Amma> 0 ki, bilirik və 0 və ya <0 olacaq deyil, baxmayaraq 463 00:28:25,000 --> 00:28:29,000 Mən hələ 0 etməyə gedirəm, o, <0 olur 464 00:28:29,000 --> 00:28:33,000 Mən, həqiqətən, Mən olmadığını ifs daxilində gedirəm 465 00:28:33,000 --> 00:28:38,000 Mən artıq bu şərtlərdən hər hansı təmin etmək niyyətində deyil ki, bilirik, çünki. 466 00:28:38,000 --> 00:28:41,000 Mən bəyanat başqa, əgər başqa, əgər istifadə edə bilərsiniz. 467 00:28:41,000 --> 00:28:45,000 X = 0 I müsbət çap əgər əsasən deyir. 468 00:28:45,000 --> 00:28:48,000 O deyil, mən də bu test gedirəm. 469 00:28:48,000 --> 00:28:51,000 2 varsa mən bunu gidiyorum deyil. 470 00:28:51,000 --> 00:28:54,000 Mən x = 2 olsa əsasən deyərdim 471 00:28:54,000 --> 00:28:57,000 (x> 0) halda, bəli, bu çap. 472 00:28:57,000 --> 00:29:00,000 İndi o> 0 ki, bilirik ki, bu, ilk əgər razı 473 00:29:00,000 --> 00:29:02,000 Mən hətta bu kodu run niyyətində deyiləm. 474 00:29:02,000 --> 00:29:09,000 Bu istifadə əgər kodu 3 dəfə daha sürətli, həqiqətən, daha sürətli uzanır. 475 00:29:09,000 --> 00:29:11,000 Biz həmçinin və ya öyrənildi. 476 00:29:11,000 --> 00:29:15,000 Mən Lexi artıq onlara danışdı çünki bu yolu getmək niyyətində deyiləm. 477 00:29:15,000 --> 00:29:17,000 | Operator | Bu, yalnız && və var. 478 00:29:17,000 --> 00:29:21,000 >> Mən demək lazımdır yalnız 3 şərait zaman ehtiyatlı edir. 479 00:29:21,000 --> 00:29:24,000 Çox confusing çünki bir vəziyyət zaman mötərizə istifadə edin 480 00:29:24,000 --> 00:29:27,000 və başqa bir və ya başqa biri. 481 00:29:27,000 --> 00:29:30,000 Yalnız şərait mənada əmin olmaq parantez istifadə edin 482 00:29:30,000 --> 00:29:34,000 Bu halda, misal üçün, siz təsəvvür edə bilərsiniz ki 483 00:29:34,000 --> 00:29:38,000 Birinci vəziyyəti və bir və ya bir başqa ola bilər 484 00:29:38,000 --> 00:29:41,000 və ya 2 birləşdirilmiş şərtləri və 485 00:29:41,000 --> 00:29:45,000 və ya üçüncü, belə ki, yalnız ehtiyatlı olun. 486 00:29:45,000 --> 00:29:48,000 Və, nəhayət, biz açarları haqqında danışdıq. 487 00:29:48,000 --> 00:29:53,000 Bir dəyişən zaman bir keçid çox faydalıdır. 488 00:29:53,000 --> 00:29:55,000 Gəlin siz n kimi bir dəyişən var ki, 489 00:29:55,000 --> 00:29:59,000 ki, 0, 1, 2 və ya ola bilər, və bu halda hər bir 490 00:29:59,000 --> 00:30:01,000 bir tapşırıq yerinə yetirmək üçün olacaq. 491 00:30:01,000 --> 00:30:04,000 Siz dəyişən keçid demək olar ki, bu onu göstərir ki, 492 00:30:04,000 --> 00:30:08,000 dəyəri, sonra value1 kimi mən bunu gidiyorum edir 493 00:30:08,000 --> 00:30:12,000 və sonra qırmaq, hansı mən digər hallarda hər hansı baxmaq gitmiyorum deməkdir 494 00:30:12,000 --> 00:30:15,000 biz artıq bu halda razı çünki 495 00:30:15,000 --> 00:30:20,000 və sonra value2 və s və mən də bir-u mənim keçid ola bilər. 496 00:30:20,000 --> 00:30:24,000 Mən olduğu hallarda hər hansı qane etmir əgər o deməkdir ki, 497 00:30:24,000 --> 00:30:29,000 Mən başqa bir şey gedirəm, lakin isteğe var. 498 00:30:29,000 --> 00:30:36,000 Mənim üçün bütün var. İndi Tommy var olsun. 499 00:30:36,000 --> 00:30:41,000 Bütün hüquqlar, bu həftə 3-ish olacaq. 500 00:30:41,000 --> 00:30:45,000 Bu, biz Et Cetera kripto, əhatə dairəsi, diziler, əhatə olacaq bəzi mövzuları var. 501 00:30:45,000 --> 00:30:49,000 Kripto yalnız tez söz. Biz bu ev çəkic etmək fikrində deyilik. 502 00:30:49,000 --> 00:30:52,000 >> Biz pset 2-də bu, ancaq viktorina üçün siz fərq bilirik əmin olun 503 00:30:52,000 --> 00:30:54,000 olan Sezar parol və Vigenère parol arasında, 504 00:30:54,000 --> 00:30:57,000 o ciphers iş həm və nə şifrelemek kimi necə 505 00:30:57,000 --> 00:30:59,000 o 2 ciphers istifadə və decrypt mətn. 506 00:30:59,000 --> 00:31:03,000 Unutmayın, Sezar parol sadəcə, həmin məbləğ hər bir xarakteri qaytarır 507 00:31:03,000 --> 00:31:06,000 əlifba hərflərin sayı siz mod əmin edir. 508 00:31:06,000 --> 00:31:09,000 Və Vigenère parol, digər tərəfdən, hər bir xarakteri qaytarır 509 00:31:09,000 --> 00:31:12,000 müxtəlif məbləği, belə ki, daha çox dedi-dən çox 510 00:31:12,000 --> 00:31:15,000 3 Vigenère hər xarakter qayıdacaqdır hər bir xarakter dönüşümlü 511 00:31:15,000 --> 00:31:17,000 bir söz asılı olaraq müxtəlif məbləği 512 00:31:17,000 --> 00:31:20,000 söz hər bir məktub bəzi fərqli məbləğ təmsil yerləşir 513 00:31:20,000 --> 00:31:26,000 tərəfindən aydın mətn dönüşümlü. 514 00:31:26,000 --> 00:31:28,000 Dəyişən həcmi barədə ilk müzakirəsi edək. 515 00:31:28,000 --> 00:31:30,000 Dəyişənlərin 2 müxtəlif növü var. 516 00:31:30,000 --> 00:31:33,000 Biz yerli dəyişənlər var və bu müəyyən edir 517 00:31:33,000 --> 00:31:36,000 kənarda əsas və ya hər hansı funksiyası və ya blok kənarda, 518 00:31:36,000 --> 00:31:39,000 və bu proqram hər hansı əlçatan olacaq. 519 00:31:39,000 --> 00:31:41,000 Bir funksiyası var və funksiyası isə loop deyil 520 00:31:41,000 --> 00:31:44,000 böyük qlobal dəyişən hər yerdə erişilebilir. 521 00:31:44,000 --> 00:31:48,000 Yerli dəyişən, digər tərəfdən, bu, müəyyən yer scoped edir. 522 00:31:48,000 --> 00:31:53,000 >> Burada bir funksiyası varsa, məsələn, biz bu funksiya g var 523 00:31:53,000 --> 00:31:56,000 və g daxilində y çağırıb burada bir dəyişən var 524 00:31:56,000 --> 00:31:58,000 və bu yerli dəyişən deməkdir. 525 00:31:58,000 --> 00:32:00,000 Bu dəyişən y adlanır baxmayaraq, 526 00:32:00,000 --> 00:32:03,000 və bu dəyişən bu 2 funksiyaları Y adlanır 527 00:32:03,000 --> 00:32:06,000 bir-birinin yerli dəyişənlər nə heç bir fikrim yoxdur. 528 00:32:06,000 --> 00:32:10,000 Digər tərəfdən, qədər burada biz int x = 5 demək 529 00:32:10,000 --> 00:32:12,000 və bu heç bir funksiyası kənarda deyil. 530 00:32:12,000 --> 00:32:16,000 Bu əsas kənarda deyil, bu qlobal dəyişir. 531 00:32:16,000 --> 00:32:20,000 Və ya x + + - Mən x deyəndə ki, bu 2 funksiyaları ki, daxili deməkdir 532 00:32:20,000 --> 00:32:26,000 Mən bu y və bu y müxtəlif dəyişənlər var vasitəsi eyni x daxil oldum. 533 00:32:26,000 --> 00:32:30,000 Qlobal dəyişən və yerli dəyişən arasında fərq var. 534 00:32:30,000 --> 00:32:33,000 Bildiyimə dizayn narahatdır kimi, bəzən yəqin ki, daha yaxşı bir fikirdir 535 00:32:33,000 --> 00:32:37,000 siz bəlkə bilər zaman dəyişənlərin yerli saxlamaq 536 00:32:37,000 --> 00:32:39,000 olan bəri qlobal dəyişənlər bir dəstə həqiqətən confusing əldə edə bilərsiniz. 537 00:32:39,000 --> 00:32:42,000 Siz funksiyaları bir dəstə varsa, bütün eyni şey dəyişmək 538 00:32:42,000 --> 00:32:45,000 bu funksiya təsadüfən bu qlobal düzəliş nə əgər siz unutmaq bilər 539 00:32:45,000 --> 00:32:47,000 və bu digər funksiyası, bu barədə bilmir 540 00:32:47,000 --> 00:32:50,000 daha çox kodunu və bu olduqca şaşırtıcı əldə edir. 541 00:32:50,000 --> 00:32:53,000 Siz bəlkə bilər zaman dəyişənlərin yerli saxlanması 542 00:32:53,000 --> 00:32:56,000 yalnız yaxşı dizayn edir. 543 00:32:56,000 --> 00:33:00,000 Diziler, unutmayın, sadəcə eyni tipli elementlərin siyahıları var. 544 00:33:00,000 --> 00:33:04,000 CI daxilində hello, 1, 2.0 kimi bir siyahı ola bilməz. 545 00:33:04,000 --> 00:33:06,000 Biz yalnız bunu edə bilərsiniz. 546 00:33:06,000 --> 00:33:11,000 >> Biz C bir sıra bəyan zaman bütün öğeleri eyni tipli olmalıdır. 547 00:33:11,000 --> 00:33:14,000 Burada 3 integers bir sıra var. 548 00:33:14,000 --> 00:33:18,000 Burada serialın uzunluğu var, amma yalnız bu sintaksis onu bəyan edirəm əgər 549 00:33:18,000 --> 00:33:21,000 Mən bütün öğeleri mən texniki bu 3 ehtiyac yoxdur hansı daxil yerləşir. 550 00:33:21,000 --> 00:33:25,000 Bu compiler serialın olmalıdır necə böyük anlamaq üçün kifayət qədər ağıllı deyil. 551 00:33:25,000 --> 00:33:28,000 İndi bir sıra dəyəri almaq və ya qurmaq üçün istədiyiniz zaman 552 00:33:28,000 --> 00:33:30,000 bu buna sintaksis edir. 553 00:33:30,000 --> 00:33:33,000 , Xatırlayıram, çünki bu, həqiqətən, serialın ikinci element dəyişdirmək edəcək, 554 00:33:33,000 --> 00:33:36,000 sayı 1 deyil, 0 başlayır. 555 00:33:36,000 --> 00:33:42,000 Hesab edirəm ki, dəyəri oxumaq istəyirsinizsə mən kimi bir şey demək olar int x = array [1]. 556 00:33:42,000 --> 00:33:44,000 Hesab edirəm ki, dəyəri müəyyən etmək istəyirsinizsə və ya, kimi, mən burada yapýyorum 557 00:33:44,000 --> 00:33:47,000 Mən array [1] demək olar = 4. 558 00:33:47,000 --> 00:33:50,000 Onların indeksi elementləri daxil o zaman 559 00:33:50,000 --> 00:33:52,000 və ya öz mövqeyini və ya onlar array var, 560 00:33:52,000 --> 00:33:57,000 və siyahı 0 başlayır. 561 00:33:57,000 --> 00:34:00,000 Biz, həmçinin, seriallarda və seriallarda ola bilər 562 00:34:00,000 --> 00:34:03,000 və bu çox ölçülü array adlanır. 563 00:34:03,000 --> 00:34:05,000 Biz çox ölçülü array zaman 564 00:34:05,000 --> 00:34:07,000 biz satır ve sütun kimi bir şey ola bilər o deməkdir ki, 565 00:34:07,000 --> 00:34:11,000 və bu görselleştirilmesi və ya bu barədə düşüncə yalnız bir yoludur. 566 00:34:11,000 --> 00:34:14,000 Mən çox ölçülü array zaman ki ehtiyacı başlamaq gedirəm deməkdir 567 00:34:14,000 --> 00:34:17,000 çox 1 index çünki bir grid var əgər 568 00:34:17,000 --> 00:34:19,000 yalnız siz olduğunuz sıra deyərək bizə bir sıra deyil. 569 00:34:19,000 --> 00:34:22,000 Bu, həqiqətən, yalnız bizə nömrələri siyahısını təqdim edəcək. 570 00:34:22,000 --> 00:34:25,000 Gəlin burada bu array var deyirlər. 571 00:34:25,000 --> 00:34:30,000 Mən grid deyilən bir sıra var və mən, bu 2 satır və 3 sütun dedi alıram 572 00:34:30,000 --> 00:34:32,000 və bu o görselleştirilmesi bir yoldur. 573 00:34:32,000 --> 00:34:37,000 Mən [1] olan element almaq istəyirəm deyəndə [2] 574 00:34:37,000 --> 00:34:41,000 bu satır ilk və sonra sütunlar, çünki o deməkdir ki, 575 00:34:41,000 --> 00:34:44,000 Mən 1 dedi ildən 1 Satırı atlamak üçün gedirəm. 576 00:34:44,000 --> 00:34:49,000 >> Sonra sütun 2 buraya gəlib gedirəm, mən dəyəri 6 almaq üçün gedirəm. 577 00:34:49,000 --> 00:34:51,000 Mənada etmək? 578 00:34:51,000 --> 00:34:55,000 Multi-ölçülü Diziler, unutmayın, texniki serialların yalnız bir sıra var. 579 00:34:55,000 --> 00:34:57,000 Biz seriallarda və seriallarda və seriallarda ola bilər. 580 00:34:57,000 --> 00:35:00,000 Biz davam edə bilər, lakin düşünmək həqiqətən bir yolu 581 00:35:00,000 --> 00:35:03,000 Bu müəyyən edilir və neler necə görüntüləmək üçün 582 00:35:03,000 --> 00:35:09,000 bu kimi bir grid. 583 00:35:09,000 --> 00:35:12,000 Biz funksiyaları serialların keçmək zaman, onlar hərəkət olacaq 584 00:35:12,000 --> 00:35:16,000 biz funksiyaları müntəzəm dəyişənlərin keçmək zaman çox fərqli bir az 585 00:35:16,000 --> 00:35:18,000 bir int və ya float keçən kimi. 586 00:35:18,000 --> 00:35:21,000 Biz int və ya char və ya digər məlumatları heç bir növ keçmək zaman 587 00:35:21,000 --> 00:35:24,000 biz yalnız funksiyası düzəliş əgər nəzər etdi 588 00:35:24,000 --> 00:35:28,000 dəyişiklik qədər təbliğ etmək niyyətində deyil ki, dəyişən dəyəri 589 00:35:28,000 --> 00:35:32,000 zəng funksiyası. 590 00:35:32,000 --> 00:35:35,000 Bir sıra ilə, digər tərəfdən, bu baş verəcək. 591 00:35:35,000 --> 00:35:39,000 Mən bəzi funksiyası bir sıra keçmək və funksiyası, elementləri bəzi dəyişikliklər varsa, 592 00:35:39,000 --> 00:35:43,000 Mən bunu adlanan funksiya qədər geri gələndə 593 00:35:43,000 --> 00:35:47,000 mənim array indi müxtəlif olacaq və üçün lüğət edir 594 00:35:47,000 --> 00:35:50,000 biz sonra görəcəksiniz kimi seriallarda, arayış qəbul edilir. 595 00:35:50,000 --> 00:35:53,000 Bu necə göstəricilərinə iş olduğu bu əsas məlumat növləri, bağlı 596 00:35:53,000 --> 00:35:55,000 digər tərəfdən, dəyəri qəbul olunur. 597 00:35:55,000 --> 00:35:59,000 >> Biz dəyişən surəti edilməsi və sonra surəti keçən kimi hesab edə bilər. 598 00:35:59,000 --> 00:36:01,000 Bu dəyişən ilə nə əhəmiyyətli deyil. 599 00:36:01,000 --> 00:36:06,000 Zəng funksiyası dəyişdirilə ki, xəbərdar olmayacaq. 600 00:36:06,000 --> 00:36:10,000 Diziler bununla bağlı müxtəlif yalnız bir az var. 601 00:36:10,000 --> 00:36:13,000 Biz yalnız gördüm Məsələn, əsas sadəcə bir funksiyası 602 00:36:13,000 --> 00:36:15,000 ki, 2 mübahisələrdə bilər. 603 00:36:15,000 --> 00:36:20,000 Əsas funksiyası ilk dəlil, argc, ya dəlilləri sayı 604 00:36:20,000 --> 00:36:23,000 və ikinci arqument argv adlanır 605 00:36:23,000 --> 00:36:27,000 və o bu arqumentləri faktiki dəyərlərdir. 606 00:36:27,000 --> 00:36:30,000 Gəlin, mən this.c adlı proqram var demək 607 00:36:30,000 --> 00:36:34,000 və mən bu etmək demək, mən command line bu çalıştırmak üçün gedirəm. 608 00:36:34,000 --> 00:36:38,000 İndi proqram bəzi dəlilləri keçmək, bu deyilən 609 00:36:38,000 --> 00:36:42,000 Mən bir şey kimi demək olar. / Bu cs 50. 610 00:36:42,000 --> 00:36:45,000 Bu terminal hər gün David bunu təsəvvür edir. 611 00:36:45,000 --> 00:36:48,000 Proqram Amma indi əsas funksiyası daxilində 612 00:36:48,000 --> 00:36:52,000 bu dəyərləri var, belə argc 4. 613 00:36:52,000 --> 00:36:56,000 Həqiqətən biz yalnız cs 50 keçən edirik, çünki bir az çaşdırıcı ola bilər. 614 00:36:56,000 --> 00:36:58,000 Bu yalnız 3 var. 615 00:36:58,000 --> 00:37:02,000 Amma unutmayın ki argv ilk element və ya ilk dəlil 616 00:37:02,000 --> 00:37:05,000 funksiyası özü adı. 617 00:37:05,000 --> 00:37:07,190 Belə ki, biz burada 4 şeylər var deməkdir 618 00:37:07,190 --> 00:37:10,530 və ilk element. / Bu olacaq. 619 00:37:10,530 --> 00:37:12,970 Bu simli kimi təmsil olunacaq. 620 00:37:12,970 --> 00:37:18,590 Sonra qalan elementləri biz proqramı adına çap edir. 621 00:37:18,590 --> 00:37:22,720 So kənara yalnız kimi, biz yəqin ki, pset 2 gördüm kimi, 622 00:37:22,720 --> 00:37:28,780 simli 50 tam 50 ≠ ki, xatırlayıram. 623 00:37:28,780 --> 00:37:32,520 Beləliklə, biz kimi bir şey deyə bilmərəm "int x = argv 3. 624 00:37:32,520 --> 00:37:36,470 >> Bu simli Ona görə ki, yalnız hissi etmək niyyətində deyil və bu, bir tamsayı edir. 625 00:37:36,470 --> 00:37:38,510 Siz 2 arasında çevirmək istəyirəm əgər, unutmayın, biz olacaq 626 00:37:38,510 --> 00:37:40,810 atoi adlanan bu sehrli funksiyası var. 627 00:37:40,810 --> 00:37:46,270 Bu simli edir və simli daxilində təmsil tam qaytarır. 628 00:37:46,270 --> 00:37:48,360 Belə ki, viktorina etmək üçün asan bir səhv var 629 00:37:48,360 --> 00:37:51,590 bu avtomatik olaraq düzgün növü olacaq düşünür. 630 00:37:51,590 --> 00:37:53,860 Amma yalnız bu həmişə strings olacaq bilirik ki, 631 00:37:53,860 --> 00:38:00,920 simli yalnız bir tam və ya bir simvol və ya bir float şey belə. 632 00:38:00,920 --> 00:38:03,380 Belə ki, indi vaxt çalışan haqqında danışmaq edək. 633 00:38:03,380 --> 00:38:06,700 Biz bütün bu crazy şeyi ki, bütün bu alqoritmlərin zaman, 634 00:38:06,700 --> 00:38:11,580 ki, sual həqiqətən faydalı olur "onlar nə qədər alır?" 635 00:38:11,580 --> 00:38:15,500 Biz asimptotik notation deyilən bir şey ilə təmsil edir. 636 00:38:15,500 --> 00:38:18,430 Yaxşı, biz bizim alqoritm vermək deyək - bu o deməkdir ki, 637 00:38:18,430 --> 00:38:20,840 həqiqətən, həqiqətən, həqiqətən, böyük girdi. 638 00:38:20,840 --> 00:38:23,840 Biz sual soruşmaq istəyirəm, "nə qədər onu gedir? 639 00:38:23,840 --> 00:38:26,370 Neçə addım run üçün alqoritm keçiriləcək 640 00:38:26,370 --> 00:38:29,980 giriş həcmi funksiyası kimi? " 641 00:38:29,980 --> 00:38:33,080 Beləliklə, biz İş Vaxtı təsvir edə bilərsiniz ilk yol böyük O. ilə 642 00:38:33,080 --> 00:38:35,380 Bu bizim ən pis halda davam zamanı. 643 00:38:35,380 --> 00:38:38,590 Biz array sort istəyirəm əgər, və biz alqoritm bir sıra vermək 644 00:38:38,590 --> 00:38:41,000 it artan qaydada olmalıdır ki, azalan deyil 645 00:38:41,000 --> 00:38:43,130 ki, ən pis halda olacaq. 646 00:38:43,130 --> 00:38:49,800 Bu, bizim alqoritmi olacaq zaman maksimum uzunluğu bağlı bizim üst edir. 647 00:38:49,800 --> 00:38:54,740 Digər tərəfdən, bu Ω ən yaxşı halda süresi təsvir edir. 648 00:38:54,740 --> 00:38:58,210 Biz bir çeşidlənməsi alqoritm üçün artıq sıralanır array vermək əgər, 649 00:38:58,210 --> 00:39:00,940 bu düzmək üçün nə qədər olacaq? 650 00:39:00,940 --> 00:39:06,610 Bu, o zaman running bir aşağı bound təsvir edir. 651 00:39:06,610 --> 00:39:10,980 Belə ki, burada bəzi ümumi running dəfə təsvir yalnız bir söz var. 652 00:39:10,980 --> 00:39:13,120 Bu sıralama artan sıralama var. 653 00:39:13,120 --> 00:39:16,060 Biz sürətli çalışan zaman sabit adlanır. 654 00:39:16,060 --> 00:39:19,800 >> Bizim alqoritm vermək neçə elementləri olursa olsun, o deməkdir ki, 655 00:39:19,800 --> 00:39:22,280 bizim array bu çeşidlənməsi, nə qədər böyük olursa olsun 656 00:39:22,280 --> 00:39:26,510 və ya biz array etdiyini etdiyiniz nə etdiyini həmişə eyni miqdarda olacaq. 657 00:39:26,510 --> 00:39:30,270 Belə ki, yalnız bir sabit olan, 1 ilə təmsil edə bilər. 658 00:39:30,270 --> 00:39:32,410 Biz də logarithmic run zaman baxdı. 659 00:39:32,410 --> 00:39:34,800 Belə ikili axtarış kimi bir şey, logarithmic edir 660 00:39:34,800 --> 00:39:37,140 biz yarım hər vaxt problem kəsmək yerləşir 661 00:39:37,140 --> 00:39:40,970 və sonra şeylər orada ali almaq. 662 00:39:40,970 --> 00:39:43,580 Və heç bir faktöryel alqoritm bir O yazılı edirsinizsə, 663 00:39:43,580 --> 00:39:47,850 yəqin ki, sizin gün iş kimi hesab edilməlidir. 664 00:39:47,850 --> 00:39:53,910 Yayınlanmasını dəfə müqayisə zaman nəzərə bunlar saxlamaq vacibdir. 665 00:39:53,910 --> 00:39:57,760 Mən O (n) ki, alqoritm və başqası varsa 666 00:39:57,760 --> 00:40:03,590 O bir alqoritm (2n) Bu həqiqətən asimptotik bərabər olmuşdur. 667 00:40:03,590 --> 00:40:06,590 We eleventy milyard kimi böyük bir sayı n təsəvvür əgər: 668 00:40:06,590 --> 00:40:13,090 biz eleventy milyard kimi bir şey + 3 eleventy milyard müqayisə etdiyiniz zaman, 669 00:40:13,090 --> 00:40:17,640 birdən that +3 həqiqətən artıq bir böyük fərq etmir. 670 00:40:17,640 --> 00:40:20,980 Biz bu şeylər ekvivalent olması nəzərə başlamaq olacaq görə. 671 00:40:20,980 --> 00:40:24,220 Burada bu sabitləri kimi şeylər ki, orada 2 x Bu,, ya 3 əlavə 672 00:40:24,220 --> 00:40:27,180 bunlar yalnız sabitləri və bu qədər düşməsi davam edir. 673 00:40:27,180 --> 00:40:32,480 These run dəfə bütün 3 onlar O (n) etdiyiniz deyərək eyni niyə Belə ki var. 674 00:40:32,480 --> 00:40:37,490 Biz 2 digər run dəfə Benzer şekilde, O (n ³ + 2n ²), biz əlavə edə bilərsiniz deyək 675 00:40:37,490 --> 00:40:42,070 Sonra + n + 7, və biz yalnız O ki, bir run zaman (n ³) var. 676 00:40:42,070 --> 00:40:46,290 bu eyni deyil - bu, çünki yenə bu eyni şey var. 677 00:40:46,290 --> 00:40:49,840 Bunlar eyni şeylər, sorry. Belə ki, bu eyni, çünki 678 00:40:49,840 --> 00:40:53,090 this n ³ this 2n ² üstünlük təşkil edir. 679 00:40:53,090 --> 00:40:59,130 >> We O (n ³) və O kimi dəfə run əgər nədir eyni şey deyil (n ²) 680 00:40:59,130 --> 00:41:02,820 this n ³ this n ² çox böyük deyil. 681 00:41:02,820 --> 00:41:05,470 We eksponent varsa Belə ki, birdən-birə bu məsələ başlayır 682 00:41:05,470 --> 00:41:08,280 Burada qədər kimi deyil, biz yalnız, amillər ilə məşğul olduğunuz zaman 683 00:41:08,280 --> 00:41:12,810 o, yalnız çıxmaq edir, çünki məsələ gedən deyil. 684 00:41:12,810 --> 00:41:16,760 Biz bu günə qədər gördüm alqoritmlər bir nəzər salaq 685 00:41:16,760 --> 00:41:19,260 və onların run zaman haqqında danışmaq. 686 00:41:19,260 --> 00:41:23,850 Siyahısına bir sıra axtarır ilk yolu, gördük ki, xətti axtarış idi. 687 00:41:23,850 --> 00:41:26,950 Və xətti axtarış həyata super sadə deyil. 688 00:41:26,950 --> 00:41:30,490 Biz yalnız bir siyahısı var və biz siyahıda hər bir element baxmaq olacaq 689 00:41:30,490 --> 00:41:34,260 biz sayı tapmaq qədər arıyorsanız. 690 00:41:34,260 --> 00:41:38,370 Belə ki, deməkdir ki, ən pis halda, bu O (n). 691 00:41:38,370 --> 00:41:40,860 Element əgər Və burada ən pis halda ola bilər 692 00:41:40,860 --> 00:41:45,710 son element, sonra xətti istifadə edərək, hər bir element baxmaq 693 00:41:45,710 --> 00:41:50,180 biz bu siyahıda həqiqətən olduğunu bilmək üçün son bir almaq qədər. 694 00:41:50,180 --> 00:41:52,910 Biz yalnız yarıya qədər vermək və deyə bilmərəm, "Bu orada yəqin ki, yoxdur." 695 00:41:52,910 --> 00:41:55,980 Xətti axtarış ilə biz bütün şey baxmaq var. 696 00:41:55,980 --> 00:41:59,090 Ən yaxşı halda süresi, digər tərəfdən, daimidir 697 00:41:59,090 --> 00:42:04,200 ən yaxşı halda biz aradığınız element yalnız siyahıda birinci çünki. 698 00:42:04,200 --> 00:42:08,930 Belə ki, bizi düz 1 addım siyahısına necə böyük olursa olsun etmək olacaq 699 00:42:08,930 --> 00:42:12,140 biz ilk element üçün hər zaman arıyorsanız. 700 00:42:12,140 --> 00:42:15,390 >> Beləliklə, siz axtarış zaman, unutmayın, bu, bizim siyahı sıralanır tələb etmir. 701 00:42:15,390 --> 00:42:19,430 Biz sadəcə hər bir element üzərində baxmaq olacaq və bu, həqiqətən vacib deyil, çünki 702 00:42:19,430 --> 00:42:23,560 nə üçün bu elementləri daxil edir 703 00:42:23,560 --> 00:42:28,110 Daha ağıllı axtarış alqoritm ikili axtarış kimi bir şeydir. 704 00:42:28,110 --> 00:42:31,500 Siz olacaq zaman Unutmayın, ikili axtarış təzahürüdür 705 00:42:31,500 --> 00:42:34,320 siyahısı orta axtarır saxlamaq. 706 00:42:34,320 --> 00:42:38,000 Biz ortasında arıyorsanız, çünki, biz siyahısına çeşidlənir tələb 707 00:42:38,000 --> 00:42:40,580 və ya başqa orta biz bilmirik, biz artıq baxmaq 708 00:42:40,580 --> 00:42:44,480 tapmaq üçün bütün siyahısı, və sonra o nöqtədə biz yalnız vaxt israf edirik. 709 00:42:44,480 --> 00:42:48,480 Biz sıralanır siyahısı var və biz orta tapmaq Belə ki, biz orta müqayisə etmək olacaq 710 00:42:48,480 --> 00:42:51,590 element biz arıyorsanız. 711 00:42:51,590 --> 00:42:54,640 Bu çox yüksək varsa, onda biz sağ yarım unuda bilər 712 00:42:54,640 --> 00:42:57,810 biz bilirik ki bizim element artıq çox yüksək olduqda 713 00:42:57,810 --> 00:43:01,080 və bu element hüququ hər şeyi hətta yüksəkdir, 714 00:43:01,080 --> 00:43:02,760 sonra biz artıq orada baxmaq lazım deyil. 715 00:43:02,760 --> 00:43:05,430 Harada digər tərəfdən, bizim element çox aşağı olduqda, 716 00:43:05,430 --> 00:43:08,700 Biz bu element solunda hər şey də çox aşağı olduğunu 717 00:43:08,700 --> 00:43:11,390 belə ki, həqiqətən də orada baxmaq məntiqli deyil. 718 00:43:11,390 --> 00:43:15,760 Bu yolla, siyahısının orta hər addım və biz baxmaq hər zaman, 719 00:43:15,760 --> 00:43:19,060 birdən-birə biz bilirik çünki biz yarısında bizim problem kəsilmiş olacaq 720 00:43:19,060 --> 00:43:23,040 biz aradığınız bir ola bilməz ədəd bütöv bir dəstə. 721 00:43:23,040 --> 00:43:26,950 >> Pseudocode bu, bu kimi bir şey görünür 722 00:43:26,950 --> 00:43:30,990 və çünki, yarım hər bir vaxtında siyahısı kəsici edirik 723 00:43:30,990 --> 00:43:34,920 logarithmic to xətti bizim ən pis halda run zaman atlamalar. 724 00:43:34,920 --> 00:43:39,260 So birdən-birə biz giriş siyahısı bir element tapmaq üçün addımlar. 725 00:43:39,260 --> 00:43:42,460 Ən yaxşı halda süresi baxmayaraq, hələ də daimidir 726 00:43:42,460 --> 00:43:45,180 indi, çünki yalnız biz aradığınız element olduğunu deyək 727 00:43:45,180 --> 00:43:48,380 orijinal siyahısı həmişə dəqiq orta. 728 00:43:48,380 --> 00:43:52,080 Belə ki, biz istəyirik kimi böyük kimi siyahı inkişaf edə bilər, ancaq aradığınız element orta olmadığı halda 729 00:43:52,080 --> 00:43:54,910 sonra bizə yalnız 1 addım olacaq. 730 00:43:54,910 --> 00:44:00,920 We O (Giriş n) və Ω (1) və ya daimi etdiyiniz nə ki. 731 00:44:00,920 --> 00:44:04,510 Nin həqiqətən bu siyahıda ikili axtarış edək. 732 00:44:04,510 --> 00:44:08,020 Elə biz element 164 aradığınız ki, bildirin. 733 00:44:08,020 --> 00:44:11,650 Biz gedirik ilk şey bu siyahıda olan orta tapmaq edir. 734 00:44:11,650 --> 00:44:15,060 Bu, sadəcə, belə ki, orta bu 2 ədəd arasında azalmağa davam edir ki, baş 735 00:44:15,060 --> 00:44:18,960 Beləliklə, orta 2 ədəd arasında düşür, hər dəfə yalnız özbaşına deyək 736 00:44:18,960 --> 00:44:21,150 nin yalnız qədər ətrafında bildirin. 737 00:44:21,150 --> 00:44:24,330 Biz yalnız biz bu yolu hər bir addım əmin etmək lazımdır. 738 00:44:24,330 --> 00:44:29,040 Beləliklə, biz qədər ətrafında olacaq və biz 161 listemize ortasında demək olacaq. 739 00:44:29,040 --> 00:44:34,640 So 161 <164, və 161 sola hər element 740 00:44:34,640 --> 00:44:39,120 də <164, belə ki, biz bunu bütün bizə kömək etmək niyyətində deyil bilirik ki, 741 00:44:39,120 --> 00:44:42,690 orada ola bilməz aradığınız element çünki burada axtarır başlamaq üçün. 742 00:44:42,690 --> 00:44:47,060 Bəs biz nə edə bilər, biz yalnız siyahı ki, bütün sol yarım unuda bilər 743 00:44:47,060 --> 00:44:51,700 və indi yalnız 161 irəli hüququndan hesab edir. 744 00:44:51,700 --> 00:44:54,050 >> So, yenə bu orta edir; nin yalnız qədər ətrafında bildirin. 745 00:44:54,050 --> 00:44:56,260 İndi 175 çox böyük. 746 00:44:56,260 --> 00:44:59,180 Belə ki, o, bizim burada və ya burada axtarır yardım etmək niyyətində deyil bilirik 747 00:44:59,180 --> 00:45:06,610 biz yalnız tullamaq olar, və nəticədə biz 164 hit olacaq. 748 00:45:06,610 --> 00:45:10,560 Binar axtarış hər hansı suallar? 749 00:45:10,560 --> 00:45:14,180 Gəlin bir artıq sıralaması siyahısını axtarış dən hərəkət 750 00:45:14,180 --> 00:45:17,660 həqiqətən hər hansı bir sırada nömrələri siyahısı alaraq 751 00:45:17,660 --> 00:45:20,960 və qaydada artan ki, siyahı edilməsi. 752 00:45:20,960 --> 00:45:24,060 Biz baxdı ilk alqoritm bubble sırala adlanırdı. 753 00:45:24,060 --> 00:45:27,300 Bu biz gördüm alqoritmləri sadə olacaq. 754 00:45:27,300 --> 00:45:32,970 Bubble növ siyahı daxilində hər 2 elementləri yer həyata zaman deyir ki, 755 00:45:32,970 --> 00:45:36,500 yüksək sayı aşağı sıra sol var, yəni 756 00:45:36,500 --> 00:45:40,190 ki, siyahı olacaq deməkdir, çünki biz, onları dəyişdirmək olacaq 757 00:45:40,190 --> 00:45:42,860 Əvvəl daha "daha çox sıralanır." 758 00:45:42,860 --> 00:45:45,180 Və biz yalnız təkrar yenə bu proses davam edəcək və edirik 759 00:45:45,180 --> 00:45:52,100 nəticədə elementləri onların doğru yeri bubble cür bir sorted siyahısı var qədər. 760 00:45:52,100 --> 00:45:57,230 >> Bunun İş Vaxtı O olacaq (n ²). Niyə? 761 00:45:57,230 --> 00:46:00,370 Yaxşı, ən pis halda, çünki biz hər element etmək niyyətində və edirik 762 00:46:00,370 --> 00:46:04,570 biz siyahıda hər element üçün müqayisə başa olacaq. 763 00:46:04,570 --> 00:46:08,030 Amma ən yaxşı halda, biz artıq sıralanır siyahısı var, bubble sırala nin 764 00:46:08,030 --> 00:46:12,230 yalnız bir dəfə keçmək demək gedir "Xeyr. Mən heç svopları etmədiyini, mən bitirdim." 765 00:46:12,230 --> 00:46:17,410 Beləliklə, biz Ω (n) bir ən yaxşı halda süresi var. 766 00:46:17,410 --> 00:46:20,680 Üzrə siyahısı bubble sırala run edək. 767 00:46:20,680 --> 00:46:23,560 Və ya ilk-nin yalnız həqiqətən tez bir pseudocode baxaq. 768 00:46:23,560 --> 00:46:28,160 Biz loop hər iteration ildə izlemek istəyirsiniz istəyirəm 769 00:46:28,160 --> 00:46:32,190 biz hər hansı elementləri dəyişdirilə və ya takip edin. 770 00:46:32,190 --> 00:46:37,610 Ki, səbəbi Belə ki, biz hər hansı elementləri değiştirilecek heç zaman dayandırmaq olacaq. 771 00:46:37,610 --> 00:46:41,980 Bizim loop əvvəlində bir şey değiştirilecek deyil, biz yalan olduğunu demək lazımdır. 772 00:46:41,980 --> 00:46:47,170 İndi biz siyahı ilə getmək və i element i + 1 element müqayisə etmək olacaq 773 00:46:47,170 --> 00:46:50,310 və bu böyük sayda kiçik sayda sol olduğu halda, 774 00:46:50,310 --> 00:46:52,310 sonra biz yalnız onları dəyişdirmək olacaq. 775 00:46:52,310 --> 00:46:54,490 >> Və sonra biz bir element değiştirilecek unutmayın olacaq. 776 00:46:54,490 --> 00:46:58,900 Yəni siyahısını ən azı 1 dəfə daha getmək lazımdır o deməkdir ki, 777 00:46:58,900 --> 00:47:02,160 bütün siyahı artıq çeşidlənir zaman dayandı olan şərtdir, çünki 778 00:47:02,160 --> 00:47:04,890 biz hər hansı svopları qəbul etməyib deməkdir. 779 00:47:04,890 --> 00:47:09,960 Bizim vəziyyəti aşağı burada niyə belə ki, "bəzi elementləri değiştirilecek edilmişdir isə. 780 00:47:09,960 --> 00:47:13,720 Belə ki, indi yalnız bu siyahı çalışan baxaq. 781 00:47:13,720 --> 00:47:16,640 Mən siyahısını 5,0,1,6,4 var. 782 00:47:16,640 --> 00:47:19,850 Bubble sort sol bütün yol başlamaq üçün gedir və bu, müqayisə olacaq 783 00:47:19,850 --> 00:47:24,700 i elementləri, belə element 1 olan 0 i + 1. 784 00:47:24,700 --> 00:47:29,020 Bu, yaxşı 5> 0 demək olacaq, amma indi 5 sol edir 785 00:47:29,020 --> 00:47:32,500 mən 5 və 0 dəyişdirmək lazımdır. 786 00:47:32,500 --> 00:47:35,470 Mən onları dəyişdirmək zaman, birdən-birə mən bu müxtəlif siyahısını almaq. 787 00:47:35,470 --> 00:47:38,260 İndi 5> 1, belə ki, biz onları dəyişdirmək olacaq. 788 00:47:38,260 --> 00:47:42,160 5> 6 deyil, belə ki, biz burada heç bir şey etmək lazım deyil. 789 00:47:42,160 --> 00:47:46,690 Lakin 6> 4, biz dəyişdirmək lazımdır. 790 00:47:46,690 --> 00:47:49,740 Yenə nəticədə tapmaq üçün bütün siyahısını run lazımdır 791 00:47:49,740 --> 00:47:52,330 these üçün həyata ki, biz onları dəyişdirmək, 792 00:47:52,330 --> 00:47:57,120 və bu baxımdan biz siyahısını 1 dəfə daha run lazımdır 793 00:47:57,120 --> 00:48:05,390 hər şey onun üçün var, və bu baxımdan bubble sırala başa əmin etmək. 794 00:48:05,390 --> 00:48:10,720 Bəzi elementləri alaraq və onların çeşidlənməsi üçün müxtəlif alqoritm seçim sortudur. 795 00:48:10,720 --> 00:48:15,740 Seleksiya sort arxasında ideyası biz siyahısı sıralanır hissəsi qurmaq olacaq ki, 796 00:48:15,740 --> 00:48:18,150 Bir zamanda 1 element. 797 00:48:18,150 --> 00:48:23,170 >> Və biz bunu olacaq yol siyahısı sol seqmentin yaradılması edir. 798 00:48:23,170 --> 00:48:27,510 Və əsasən, hər - hər bir addım, biz yazmayıblar kiçik element etmək olacaq 799 00:48:27,510 --> 00:48:32,310 hələ sıralanır deyil və biz sıralanır seqment daxil hərəkət olacaq. 800 00:48:32,310 --> 00:48:35,850 Deməkdir ki, biz davamlı minimum çeşidlənməmiş element tapmaq lazımdır 801 00:48:35,850 --> 00:48:40,720 və sonra minimum element almaq və nə ilə mübadilə 802 00:48:40,720 --> 00:48:45,090 tərk-ən element sıralanır deyil. 803 00:48:45,090 --> 00:48:50,890 Bunun İş Vaxtı O olacaq (n ²), çünki ən pis halda 804 00:48:50,890 --> 00:48:55,070 biz hər element üçün hər bir element müqayisə etmək lazımdır. 805 00:48:55,070 --> 00:48:59,250 Biz siyahısına sol yarısında başlamaq, biz lazımdır ki, olduğunuz Çünki 806 00:48:59,250 --> 00:49:02,970 kiçik element tapmaq üçün bütün sağ seqment keçmək. 807 00:49:02,970 --> 00:49:05,430 Və sonra yenə biz bütün sağ seqment üzərində getmək və lazım 808 00:49:05,430 --> 00:49:08,210 yenidən və üzərində üzərində üzərində davam. 809 00:49:08,210 --> 00:49:11,350 That n ² olacaq. We loop üçün başqa bir loop daxilində bir ehtiyac olacaq 810 00:49:11,350 --> 00:49:13,350 olan n ² göstərir. 811 00:49:13,350 --> 00:49:16,530 Ən yaxşı halda düşüncə, biz bu artıq sıralaması siyahısını təqdim deyək; 812 00:49:16,530 --> 00:49:19,270 biz həqiqətən n ² daha yaxşı yoxdur. 813 00:49:19,270 --> 00:49:21,730 Seleksiya sort ki, bilmədən heç bir yol var, çünki 814 00:49:21,730 --> 00:49:25,540 minimum element yalnız mən axtarır üçün baş biridir. 815 00:49:25,540 --> 00:49:28,970 Bu hələ əslində minimum əmin etmək lazımdır. 816 00:49:28,970 --> 00:49:31,670 >> Bu alqoritm istifadə edərək, minimum və əmin etmək üçün yeganə yol, 817 00:49:31,670 --> 00:49:34,640 again hər bir element baxmaq edir. 818 00:49:34,640 --> 00:49:38,420 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ə, 819 00:49:38,420 --> 00:49:42,720 bu hələ sıralanır olmayan bir siyahısını vermək daha yaxşı etmək niyyətində deyil. 820 00:49:42,720 --> 00:49:46,320 Bu halda olur, əgər gəlmişkən, bir şey O (bir şey) ki, 821 00:49:46,320 --> 00:49:50,640 və bir şey omega, biz yalnız daha müfəssəl şəkildə it şey θ ki, demək bilər. 822 00:49:50,640 --> 00:49:52,760 Siz ki, yalnız nə deməkdir ki, hər yerdə ortaya görmək əgər. 823 00:49:52,760 --> 00:49:57,580 >> Bir şey n teta Əgər ², o, həm də böyük O (n ²) və Ω (n ²) təşkil edir. 824 00:49:57,580 --> 00:49:59,790 Ən yaxşı halda və ən pis halda Belə ki, o, fərq etməz 825 00:49:59,790 --> 00:50:04,400 alqoritmi eyni şey hər vaxt gedir. 826 00:50:04,400 --> 00:50:06,610 Belə ki, bu seçim cür pseudocode kimi baxmaq mümkün deyil. 827 00:50:06,610 --> 00:50:10,630 We əsasən mən siyahı üzərində təkrarlamaq istəyirəm ki, demək olacaq 828 00:50:10,630 --> 00:50:15,180 sağ və loop hər iteration da soldan, mən hərəkət gedirəm 829 00:50:15,180 --> 00:50:19,780 siyahısını bu sıralanır hissəsi daxil minimum element. 830 00:50:19,780 --> 00:50:23,260 Və bir dəfə mən bir şey hərəkət, mən daha element baxmaq lazımdır heç vaxt. 831 00:50:23,260 --> 00:50:28,600 Tezliklə Mən siyahısını sol seqment üçün bir element dəyişdirmək kimi, sıralanır, çünki 832 00:50:28,600 --> 00:50:32,600 biz minimum istifadə üçün artan hər şeyi edirik, çünki. 833 00:50:32,600 --> 00:50:38,740 Beləliklə, biz tamam we mövqe i də istəyirik, və biz bütün öğeleri baxmaq lazımdır, dedi 834 00:50:38,740 --> 00:50:42,260 minimum tapmaq üçün i sağa. 835 00:50:42,260 --> 00:50:46,150 Belə ki, biz siyahısına sonuna i + 1 baxmaq istəyirəm deməkdir. 836 00:50:46,150 --> 00:50:51,610 İndi biz hazırda da aradığınız ki, element, bu günə qədər bizim minimum az olduqda 837 00:50:51,610 --> 00:50:54,190 unutmayın, biz yalnız olmaq üçün minimum off başlayaraq edirik ki, 838 00:50:54,190 --> 00:50:57,020 hər hansı element biz hazırda olduğunuz, mən minimum olduğunu güman lazımdır. 839 00:50:57,020 --> 00:51:00,270 Hesab edirəm ki, daha kiçik olan bir element tapmaq, onda mən, tamam, demək gedirəm 840 00:51:00,270 --> 00:51:02,700 yaxşı, yeni minimum tapmışdır. 841 00:51:02,700 --> 00:51:06,080 Hesab edirəm ki, minimum olduğu yadda gedirəm. 842 00:51:06,080 --> 00:51:09,560 >> Beləliklə, bir dəfə mən ki, sağ çeşidlənməmiş seqment vasitəsilə getdi sonra 843 00:51:09,560 --> 00:51:16,690 Mən mövqe i ki element ilə minimum element dəyişdirmək gedirəm deyə bilərəm. 844 00:51:16,690 --> 00:51:21,100 Bu mənim siyahısı yaratmaq olacaq, soldan sağa siyahısı mənim sıralanır hissəsi, 845 00:51:21,100 --> 00:51:25,190 və biz heç bu hissəsi var bir daha bir element baxmaq lazım deyil. 846 00:51:25,190 --> 00:51:27,930 Sonra biz bu değiştirilecek etdik. 847 00:51:27,930 --> 00:51:30,260 Belə ki, bu siyahıda seçim sort run bildirin. 848 00:51:30,260 --> 00:51:38,220 Burada mavi element i olacaq və qırmızı element minimum element olacaq. 849 00:51:38,220 --> 00:51:41,570 Mən 5-belə ki, siyahı sol bütün yol başlayır. 850 00:51:41,570 --> 00:51:44,610 İndi biz minimum çeşidlənməmiş element tapmaq lazımdır. 851 00:51:44,610 --> 00:51:49,480 Belə ki, 0 <5, belə ki, 0 Yeni minimum olduğunu söyləyirlər. 852 00:51:49,480 --> 00:51:53,820 >> Biz, 0 kiçik olduğunu tanıya bilər baxmayaraq, çünki mən orada dayandırmaq bilməz 853 00:51:53,820 --> 00:51:59,390 əmin etmək siyahısı hər element vasitəsilə run lazımdır. 854 00:51:59,390 --> 00:52:01,760 , 6 böyükdür böyükdür 1 Belə ki, 4 böyükdür. 855 00:52:01,760 --> 00:52:05,850 Bu elementlərin bütün baxaraq sonra, mən 0 kiçik is müəyyən etdik ki, deməkdir. 856 00:52:05,850 --> 00:52:09,800 Mən 5 və 0 dəyişdirmək üçün gedirəm. 857 00:52:09,800 --> 00:52:15,480 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, 858 00:52:15,480 --> 00:52:19,380 bir dəfə mən bu değiştirilecek etdik, çünki Mən bunu sıralanır etdik və tamamlayın. 859 00:52:19,380 --> 00:52:22,730 İndi yalnız belə, mavi element daha 5 ki, baş 860 00:52:22,730 --> 00:52:26,030 və biz 1 müəyyənləşdirmək üçün 1 baxmaq üçün 6 və 4 ehtiyac 861 00:52:26,030 --> 00:52:31,520 kiçik minimum element, belə ki, biz 1 və 5 dəyişdirmək lazımdır. 862 00:52:31,520 --> 00:52:36,890 Yenə baxmaq lazımdır - 6 və 4 5 müqayisə 863 00:52:36,890 --> 00:52:39,830 və biz 4 və 5 dəyişdirmək gedən və nəhayət, müqayisə edirik 864 00:52:39,830 --> 00:52:45,740 o 2 ədəd və biz sıralanır siyahısını almaq qədər onlara dəyişdirmək. 865 00:52:45,740 --> 00:52:49,730 Seleksiya sort hər hansı suallar? 866 00:52:49,730 --> 00:52:56,420 Okay. Nin burada son mövzu hərəkət edək ki, recursion edir. 867 00:52:56,420 --> 00:52:59,810 >> Recursion, unutmayın, bu, həqiqətən meta şey olduğu bir funksiyası 868 00:52:59,810 --> 00:53:02,740 dəfələrlə özü çağırır. 869 00:53:02,740 --> 00:53:05,620 So bir nöqtədə, bizim fuction dəfələrlə özü zəng edərkən, 870 00:53:05,620 --> 00:53:10,100 biz özümüz zəng dayandırmaq olan bir nöqtə olmalıdır lazımdır. 871 00:53:10,100 --> 00:53:13,670 Biz nə yoxdur, onda biz yalnız əbədi bunu davam edirik, çünki 872 00:53:13,670 --> 00:53:16,660 və bizim proqram yalnız ləğv etmək niyyətində deyil. 873 00:53:16,660 --> 00:53:19,200 Biz bu vəziyyəti əsasında işə çağırırıq. 874 00:53:19,200 --> 00:53:22,570 Və baza halda, əksinə daha bir funksiyası zəng deyil, deyir 875 00:53:22,570 --> 00:53:25,330 Mən yalnız bəzi dəyəri qayıtmaq üçün gedirəm. 876 00:53:25,330 --> 00:53:28,080 Biz dəyər geri sonra Beləliklə, biz özümüzü zəng durdurduk 877 00:53:28,080 --> 00:53:32,550 və biz bu günə qədər etdiyiniz zənglərin qalan da ola bilər. 878 00:53:32,550 --> 00:53:36,050 Əsas işi əks recursive haldır. 879 00:53:36,050 --> 00:53:39,050 Bu biz da hazırda olduğunuz funksiyası başqa bir zəng etmək üçün istədiyiniz zaman 880 00:53:39,050 --> 00:53:44,690 Biz yəqin ki, həmişə, baxmayaraq ki, müxtəlif arqumentlər istifadə etmək istəyirik. 881 00:53:44,690 --> 00:53:48,940 >> Biz f adlı bir funksiyası var, f yalnız 1 arqument take adlı Belə ki, əgər 882 00:53:48,940 --> 00:53:52,010 və biz yalnız f (1), f (1), f (1) zəng edin və yalnız belə olur 883 00:53:52,010 --> 00:53:56,510 arqumenti 1 recursive işə düşür, biz hələ dayandırmaq niyyətində heç edirik. 884 00:53:56,510 --> 00:54:01,620 Biz baza halda belə, biz nəhayət ki, baza halda hit olacaq əmin etmək lazımdır. 885 00:54:01,620 --> 00:54:04,250 Biz yalnız bu recursive halda qalaraq saxlamaq yoxdur. 886 00:54:04,250 --> 00:54:09,870 Ümumiyyətlə, biz özümüz zəng zaman, biz yəqin ki, müxtəlif mübahisə hər zaman olacaq. 887 00:54:09,870 --> 00:54:12,700 Burada həqiqətən sadə recursive funksiyası var. 888 00:54:12,700 --> 00:54:15,090 Belə ki, bu bir sıra faktöryel hesablamaq edəcək. 889 00:54:15,090 --> 00:54:17,790 Up bizim əsas işi var burada Əvvələ. 890 00:54:17,790 --> 00:54:22,330 N ≤ 1, yenə faktöryel zəng etmək fikrində deyilik ki halda. 891 00:54:22,330 --> 00:54:26,490 We dayandırmaq olacaq; biz yalnız bəzi dəyəri geri olacaq. 892 00:54:26,490 --> 00:54:30,170 Bu doğru deyil, onda biz recursive halda hit olacaq. 893 00:54:30,170 --> 00:54:33,550 Çox faydalı olardı, çünki biz yalnız, faktöryel (n) zəng deyilik ki, burada edək. 894 00:54:33,550 --> 00:54:36,810 Başqa bir şey faktöryel zəng olacaq. 895 00:54:36,810 --> 00:54:40,850 >> Və belə ki, biz bir faktöryel (5) və ya bir şey pass nəhayət, əgər bilərsiniz 896 00:54:40,850 --> 00:54:45,900 we faktöryel (4) və s. zəng olacaq, və nəticədə biz bu baza halda hit olacaq. 897 00:54:45,900 --> 00:54:51,730 Belə ki, bu yaxşı görünür. Biz, həqiqətən, bu çalıştırdığınızda nə olur bax edək. 898 00:54:51,730 --> 00:54:57,840 Bu yığını, və qoy əsas mübahisə (4) ilə bu funksiya zəng edir ki. 899 00:54:57,840 --> 00:55:02,200 So bir faktöryel görür və = 4, faktöryel özü zəng edəcək. 900 00:55:02,200 --> 00:55:05,010 İndi birdən-birə, biz (3) faktöryel var. 901 00:55:05,010 --> 00:55:10,780 Belə ki, bu funksiyaları sonda biz baza halda hit qədər artan saxlamaq niyyətindəyik. 902 00:55:10,780 --> 00:55:17,830 Bu nöqtədə, bu qaytarılması dəyəri qaytarılması (NX bu qaytarılması dəyəri) ki, 903 00:55:17,830 --> 00:55:21,290 Bu qaytarılması dəyəri bu NX qaytarılması dəyəri. 904 00:55:21,290 --> 00:55:23,290 Nəhayət, biz bir sıra hit üçün lazımdır. 905 00:55:23,290 --> 00:55:26,560 Burada başında, biz geri 1 deyirlər. 906 00:55:26,560 --> 00:55:30,650 Bir dəfə biz sayı qayıtmaq o deməkdir ki, biz yığını off Bu POP bilər. 907 00:55:30,650 --> 00:55:36,570 Beləliklə, bu faktöryel (1) edilir. 908 00:55:36,570 --> 00:55:41,190 Zaman 1 qaytarır, bu faktöryel (1) qaytarır, 1 bu getiri. 909 00:55:41,190 --> 00:55:46,910 Bu qaytarılması dəyəri, unutmayın, bu qaytarılması dəyəri NX idi. 910 00:55:46,910 --> 00:55:50,720 So qəflətən, bu oğlan I 2 qayıtmaq istəyirəm ki, bilir. 911 00:55:50,720 --> 00:55:55,910 >> Belə ki, saxla dəyəri burada qaytarılması dəyəri NX qədər geri. 912 00:55:55,910 --> 00:56:01,160 Belə ki, indi zaman 3 x 2 demək olar, və nəhayət, burada demək olar 913 00:56:01,160 --> 00:56:04,010 Bu yalnız 4 x 3 x 2 olacaq. 914 00:56:04,010 --> 00:56:09,570 Bu gəlirlər sonra, əsas bir tam daxilində aşağı almaq. 915 00:56:09,570 --> 00:56:15,460 Recursion hər hansı suallar? 916 00:56:15,460 --> 00:56:17,090 Bütün hüquqlar. So suallar üçün daha çox vaxt, sonunda var 917 00:56:17,090 --> 00:56:23,360 lakin indi Cozef qalan mövzuları əhatə edəcək. 918 00:56:23,360 --> 00:56:25,590 >> [Joseph Ong] Bütün hüququ. Belə ki, indi biz recursions danışdı etdik ki, 919 00:56:25,590 --> 00:56:27,840 nin növ birləşməsi nə haqqında bir az danışmaq edək. 920 00:56:27,840 --> 00:56:31,740 Birleştirme sort əsasən nömrələri siyahısı çeşidlənməsi bir yoldur. 921 00:56:31,740 --> 00:56:36,430 Və birleştirir sort ilə deyil, necə bir siyahısı var və biz bunu is 922 00:56:36,430 --> 00:56:39,120 biz 2 yarıya indirir bu split edək deyirlər. 923 00:56:39,120 --> 00:56:42,750 Biz ilk, sol yarısı daha sort daxil run lazımdır 924 00:56:42,750 --> 00:56:45,040 sonra biz, sağ yarısında sort daxil run lazımdır 925 00:56:45,040 --> 00:56:50,240 və indi bizim ayrılır ki, 2 yarıya indirir verir, indi biz birlikdə o yarıya indirir birləşdirmək olacaq. 926 00:56:50,240 --> 00:56:55,010 Bu misal Məgər bir az çətindir, belə ki, biz ərizə ilə getmək və baş nə görürsünüz. 927 00:56:55,010 --> 00:56:59,590 Belə ki, bu siyahı, biz 2 yarıya indirir daxil parçalanması başlanır. 928 00:56:59,590 --> 00:57:02,300 Biz ilk sol yarısında sort daxil axır. 929 00:57:02,300 --> 00:57:06,660 Belə ki, sol yarım, və indi biz bu siyahı vasitəsilə çalıştırmak 930 00:57:06,660 --> 00:57:09,800 olan biz, yenə baxmaq sonra birləşmə cür keçdi və olur 931 00:57:09,800 --> 00:57:13,270 Bu siyahıda sol tərəfində və biz bunun üzərində sort daxil axır. 932 00:57:13,270 --> 00:57:15,880 İndi biz, 2 ədəd bir siyahısı üçün aşağı almaq 933 00:57:15,880 --> 00:57:19,010 və indi sol yarısı yalnız 1 element uzun və biz deyil 934 00:57:19,010 --> 00:57:23,380 yarım içinə yalnız 1 element olduğunu siyahısı split, biz yalnız bir dəfə 50 var, demək, 935 00:57:23,380 --> 00:57:26,400 olan yalnız 1 element, o, artıq sıralaması edir. 936 00:57:26,400 --> 00:57:29,860 >> Biz ilə tamamlayın sonra, biz əlimizdən bilərsiniz 937 00:57:29,860 --> 00:57:32,230 Bu siyahıda hüququ yarısı üçün hərəkət, 938 00:57:32,230 --> 00:57:36,480 və 3 də indi bu siyahı həm də yarıya indirir sıralanır ki, sıralanır, və 939 00:57:36,480 --> 00:57:39,080 biz geri birlikdə bu nömrələr qoşula bilər. 940 00:57:39,080 --> 00:57:45,320 Belə ki, 50 və 3 baxmaq; 3 50 daha kiçik, belə ki, birinci gedir və sonra 50 girer 941 00:57:45,320 --> 00:57:49,340 İndi ki, həyata, biz onu sağ yarım ki, siyahısı və sort qədər geri. 942 00:57:49,340 --> 00:57:52,440 42 öz sayı, belə ki, artıq sıralaması edir. 943 00:57:52,440 --> 00:57:57,850 Belə ki, indi biz ilk qoymaq olur ki, 2 və 3 42 daha kiçik these et 944 00:57:57,850 --> 00:58:02,340 İndi 42-ci qoymaq olur, 50 da qoymaq olur 945 00:58:02,340 --> 00:58:07,220 İndi sıralanır ki, biz, üst geri 1337 və 15 bütün yol getmək. 946 00:58:07,220 --> 00:58:14,560 Bəli, biz bu siyahı sol yarım baxmaq; 1337 özü belə bu 15 ilə sıralanır və eyni oldu. 947 00:58:14,560 --> 00:58:19,020 Belə ki, indi biz orijinal siyahı, 15 <1337, sort bu 2 ədəd birləşdirmək 948 00:58:19,020 --> 00:58:23,060 belə ki, ilk gedir, sonra 1337 da gedir 949 00:58:23,060 --> 00:58:26,640 İndi biz üst qədər orijinal siyahı həm də yarıya indirir sıralanır. 950 00:58:26,640 --> 00:58:30,440 Və biz bütün bu birləşdirmək edir. 951 00:58:30,440 --> 00:58:36,890 Biz bu siyahının ilk 2 ədəd, 3 <15 baxmaq, belə ki, birinci sort array gider. 952 00:58:36,890 --> 00:58:44,460 15 <42, belə ki, İndi daxil gedir 42 <1337, o da gedir 953 00:58:44,460 --> 00:58:51,010 50 <1337, bunu da gedir və biz yalnız bu siyahıda 2 ədəd çıxardım ki, görürsünüz. 954 00:58:51,010 --> 00:58:53,640 Belə ki, yalnız 2-siyahıları arasında alternativ deyilik. 955 00:58:53,640 --> 00:58:56,050 Biz yalnız əvvəlində arıyorsanız, biz element qəbul etdiyiniz 956 00:58:56,050 --> 00:59:00,270 kiçik və sonra array onu qoyulması edir. 957 00:59:00,270 --> 00:59:04,080 İndi biz bütün yarıya indirir birləşdi etdik və tamamlayın. 958 00:59:04,080 --> 00:59:07,780 >> Haqqında suallarınız sort daxil? Bəli? 959 00:59:07,780 --> 00:59:14,190 [Tələbə] müxtəlif qruplara bölünmə varsa, niyə yalnız bir dəfə split yoxdur 960 00:59:14,190 --> 00:59:19,970 və bir qrup, 3 və 2 var? [Sual anlaşılmaz istirahət] 961 00:59:19,970 --> 00:59:24,940 Səbəbi - belə bir sual deyil, biz onları sonra niyə yalnız ilk addım onlara daxil ola bilmirəm? 962 00:59:24,940 --> 00:59:29,530 Bunu edə səbəbi, hər iki tərəfin sol ən elementləri da başlayacaq 963 00:59:29,530 --> 00:59:33,040 və sonra kiçik bir almaq və qoymaq ki BUNLARI BİLİYORMUSUNUZ ki, 964 00:59:33,040 --> 00:59:35,290 fərdi siyahıları sıralanır sifariş var. 965 00:59:35,290 --> 00:59:37,290 Mən də yarıya indirir və sol ən elementləri ilə arıyorum Beləliklə, əgər, 966 00:59:37,290 --> 00:59:40,490 Mən həmin siyahıların ən kiçik elementləri olmaq olacaq bilirik. 967 00:59:40,490 --> 00:59:43,930 Mən bu böyük siyahısı kiçik element ləkələr onları bilər. 968 00:59:43,930 --> 00:59:47,810 Digər tərəfdən, mən orada ikinci səviyyədə olan 2 siyahıları baxsaq, 969 00:59:47,810 --> 00:59:51,640 50, 3, 42, 1337, 15, həmin sıralanır deyil. 970 00:59:51,640 --> 00:59:55,770 Mən 50 və 1337 baxmaq əgər, ilk mənim siyahısına 50 qoymaq üçün gedirəm. 971 00:59:55,770 --> 01:00:00,130 Amma həqiqətən 3 hamısı yerinə ən kiçik element çünki, hiss etmir. 972 01:00:00,130 --> 01:00:04,390 Biz bunu birləşən addım edə bilərsiniz yeganə səbəbi bizim siyahıları artıq sıralanır çünki edir. 973 01:00:04,390 --> 01:00:07,010 Biz altındakı bütün yolu aşağı almaq niyə hansı 974 01:00:07,010 --> 01:00:09,800 biz yalnız bir sıra zaman ki, bir sıra çünki 975 01:00:09,800 --> 01:00:14,120 və özü artıq bir sorted siyahısı. 976 01:00:14,120 --> 01:00:19,360 >> Hər hansı sual? No? 977 01:00:19,360 --> 01:00:24,260 Mürəkkəbliyi? Bəli, hər addımda son nömrələri olduğunu görə bilərsiniz 978 01:00:24,260 --> 01:00:27,590 və biz, yarım günlük n dəfə siyahısı bölmək olar 979 01:00:27,590 --> 01:00:31,700 biz bu n x log n mürəkkəblik almaq yerləşir olan. 980 01:00:31,700 --> 01:00:34,940 Və birləşmə sort üçün ən yaxşı halda n log n görürsünüz və bu, məhz belə olur 981 01:00:34,940 --> 01:00:39,340 ən pis halda, və ya orada Ω da n n daxil edir. 982 01:00:39,340 --> 01:00:42,480 Unutmayın şey. 983 01:00:42,480 --> 01:00:45,750 Hərəkət isə bir super əsas fayl I / O. getmək bildirin 984 01:00:45,750 --> 01:00:48,830 Siz Scramble baxdı varsa, biz sistemi bir növ idi görəcəksiniz 985 01:00:48,830 --> 01:00:51,270 Əgər siz kodu vasitəsilə oxumaq əgər bir günlük faylı yazmaq bilər. 986 01:00:51,270 --> 01:00:53,730 Sizə bunu necə görmək edək. 987 01:00:53,730 --> 01:00:57,450 Bəli, biz fprintf var, siz, yalnız printf hesab edə bilər ki, 988 01:00:57,450 --> 01:01:01,720 ancaq əvvəlində f səbəbdən əvəzinə fayl çap və. 989 01:01:01,720 --> 01:01:07,570 Qədər burada kodu bu cür, sizin Scramble görüldü ola bilər nə yoxdur ki, 990 01:01:07,570 --> 01:01:12,310 bu nömrələr nə cərgə cərgə həyata 2-ölçülü array çap keçir. 991 01:01:12,310 --> 01:01:17,850 Bu halda, printf sizin terminal üçün çap və ya hissəsinin standart çıxış adlandırdıqları. 992 01:01:17,850 --> 01:01:22,170 >> Və indi, bu halda, biz nə üçün bütün, fprintf ilə printf əvəz is 993 01:01:22,170 --> 01:01:26,770 sizə çap etmək üçün istədiyiniz fayl demək, bu halda yalnız fayl üçün çap 994 01:01:26,770 --> 01:01:32,230 yerine terminal onu çap. 995 01:01:32,230 --> 01:01:36,500 Yaxşı, o sual begs: Biz hüququ, fayl bu cür alıram? 996 01:01:36,500 --> 01:01:39,840 Biz bu fprintf fuction daxil keçdi ancaq haradan gəldiyi yox idi. 997 01:01:39,840 --> 01:01:43,980 Yaxşı, erkən kodu, nə idi, burada kodu bu yığın idi 998 01:01:43,980 --> 01:01:48,340 əsasən açıq fayl log.txt çağırır deyir ki, edir. 999 01:01:48,340 --> 01:01:53,220 Ki, sonra biz nə biz fayl həqiqətən uğurla açılır əmin etmək lazımdır. 1000 01:01:53,220 --> 01:01:57,070 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. 1001 01:01:57,070 --> 01:01:59,790 Siz fayl hər hansı əməliyyatları əvvəl Belə ki, həmişə vacibdir 1002 01:01:59,790 --> 01:02:03,300 ki, fayl uğurla açıldı olmadığını kontrol edin. 1003 01:02:03,300 --> 01:02:09,330 Yaxşı bir ki, fopen bir dəlil ki, yaxşı, biz bir çox yollarla bir fayl aça bilər. 1004 01:02:09,330 --> 01:02:13,510 Biz nə edə bilər, biz, bu çıxışları əgər artıq fayl yalnış deməkdir ki, w keçə bilər 1005 01:02:13,510 --> 01:02:18,070 Biz onlar əvəzinə əsas of fayl sonuna əlavə olan bir bir keçə bilər 1006 01:02:18,070 --> 01:02:22,730 və ya biz deməkdir ki, r daxil edə bilərsiniz, in fayl oxumaq-yalnız açıq bildirin. 1007 01:02:22,730 --> 01:02:24,890 Proqram, fayl hər hansı bir dəyişiklik etməyə çalışır əgər 1008 01:02:24,890 --> 01:02:30,140 onlara fəğan və onlara bunu imkan verməyin. 1009 01:02:30,140 --> 01:02:33,320 Nəhayət, bir dəfə biz bu əməliyyatları edərkən görülən, fayl ilə tamamlayın 1010 01:02:33,320 --> 01:02:35,860 biz fayl yaxın əmin etmək lazımdır. 1011 01:02:35,860 --> 01:02:38,830 Və proqram sonunda, daha onlara keçmək gedir 1012 01:02:38,830 --> 01:02:42,120 siz açıldı və yalnız yaxın bu faylı ki. 1013 01:02:42,120 --> 01:02:44,650 Belə ki, bu sizi əmin etmək lazımdır ki, mühüm bir şeydir. 1014 01:02:44,650 --> 01:02:47,180 Belə bir fayl aça bilər unutmayın, sonra, fayl yazmaq olar 1015 01:02:47,180 --> 01:02:51,270 fayl əməliyyatları, lakin sonra siz sonunda faylı bağlamaq lazımdır. 1016 01:02:51,270 --> 01:02:53,270 >> Əsas fayl Hər hansı bir sualınız I / O? Bəli? 1017 01:02:53,270 --> 01:02:58,050 [Tələbə sual, anlaşılmaz] 1018 01:02:58,050 --> 01:03:02,480 Burada. Sualına, bu log.txt fayl yerləşir görünür edir? 1019 01:03:02,480 --> 01:03:07,890 Yalnız log.txt vermək əgər Bəli, bu proqram eyni kataloq yaradır. 1020 01:03:07,890 --> 01:03:10,500 So you're əgər - >> [Tələbə sual, anlaşılmaz] 1021 01:03:10,500 --> 01:03:18,830 Bəli. Eyni qovluqda və ya eyni kataloq, siz zəng kimi. 1022 01:03:18,830 --> 01:03:21,400 İndi yaddaş yığını və yığın. 1023 01:03:21,400 --> 01:03:23,400 Belə ki, kompüter müəyyən yaddaş necə? 1024 01:03:23,400 --> 01:03:26,270 Yaxşı, burada bu blok növ as yaddaş təsəvvür edə bilərsiniz. 1025 01:03:26,270 --> 01:03:30,260 Və yaddaş biz orada vurulmuş yığın və orada olan yığını deyilən nə var. 1026 01:03:30,260 --> 01:03:34,480 Və yığın aşağı artır və yığını yuxarı artır. 1027 01:03:34,480 --> 01:03:38,620 Tommy qeyd etdiyim kimi - oh, yaxşı, və biz ikinci almaq lazımdır ki, bu digər 4 seqmentləri var - 1028 01:03:38,620 --> 01:03:42,890 Tommy əvvəllər dediyi kimi, onun funksiyaları özləri zəng və bir-birinə zəng necə? 1029 01:03:42,890 --> 01:03:44,930 Onlar yığını çərçivəsində bu cür qurmaq. 1030 01:03:44,930 --> 01:03:47,360 Bəli, əsas zəngləri foo, foo yığını qoymaq olur əgər. 1031 01:03:47,360 --> 01:03:52,430 Foo çağırır bar, bar nin yığını qoymaq almaq və sonra stack qoymaq olur. 1032 01:03:52,430 --> 01:03:57,040 Onlar qayıtmaq kimi, onlar hər yığını off atılan almaq. 1033 01:03:57,040 --> 01:04:00,140 Bu yerlərin hər yaddaş nə keçirilməsi edirsiniz? 1034 01:04:00,140 --> 01:04:03,110 Yaxşı, mətn seqmenti olan top, proqram özü edir. 1035 01:04:03,110 --> 01:04:06,390 Maşın kodu Belə ki, var ki, bir dəfə sizin proqram tərtib edir. 1036 01:04:06,390 --> 01:04:08,520 Sonrakı, hər hansı qlobal dəyişənlər başlatılmış. 1037 01:04:08,520 --> 01:04:12,660 >> Belə ki, proqram qlobal dəyişənlər var, və bir = 5, kimi demək 1038 01:04:12,660 --> 01:04:15,260 seqment qoymaq və doğru olduğunu altında olur ki, 1039 01:04:15,260 --> 01:04:18,990 Siz, bir int hər hansı uninitialized qlobal data var 1040 01:04:18,990 --> 01:04:20,990 ancaq bir şey bərabər demək deyil. 1041 01:04:20,990 --> 01:04:23,870 Bu qlobal dəyişənlər var, onlar əsas kənarda olduğunuz bilirik. 1042 01:04:23,870 --> 01:04:28,560 Beləliklə, bu elan amma başlatılmadı hər hansı qlobal dəyişənlər deməkdir. 1043 01:04:28,560 --> 01:04:32,310 Belə ki, yığın-yığın, nə var? Yaddaş biz bir az bit almaq bilərsiniz malloc istifadə ayrılıb. 1044 01:04:32,310 --> 01:04:35,990 Və nəhayət, yığını ilə hər hansı yerli dəyişənlər var 1045 01:04:35,990 --> 01:04:39,950 və hər hansı funksiyaları, onların parametrlərinin hər hansı zəng edə bilər. 1046 01:04:39,950 --> 01:04:43,720 Son şey, həqiqətən, ətraf dəyişənlər nə bilmək yoxdur 1047 01:04:43,720 --> 01:04:46,700 ancaq proqram run zaman bağlı bir şey kimi var 1048 01:04:46,700 --> 01:04:49,550 Bu proqram qaçmış şəxsin adınız. 1049 01:04:49,550 --> 01:04:51,550 Və bu alt növ olacaq. 1050 01:04:51,550 --> 01:04:54,540 Hexadecimal dəyərlərin olan yaddaş ünvanları, baxımından, 1051 01:04:54,540 --> 01:04:58,170 0 ilə üst əvvəlində dəyərlər və onlar aşağı bütün yolu aşağı gedin. 1052 01:04:58,170 --> 01:05:00,440 Bu halda, siz 32-bit sistemi istəyirsinizsə, 1053 01:05:00,440 --> 01:05:05,390 altındakı ünvan ki, 32 bit, çünki, af sonra 0x olacaq 1054 01:05:05,390 --> 01:05:10,890 8 bayt və bu halda 8 bayt 8 hexadecimal rəqəm uyğundur. 1055 01:05:10,890 --> 01:05:20,110 Belə ki, aşağı burada, kimi, 0xffffff var olacaq, və orada 0 malik olacaq. 1056 01:05:20,110 --> 01:05:23,660 Belə ki, nə göstəricilər var? Əgər bəziləri əvvəl bölməsində bu əhatə ola bilər. 1057 01:05:23,660 --> 01:05:26,660 lakin biz mühazirə üzərində getmək idi, bir pointer yalnız bir veri növü belə 1058 01:05:26,660 --> 01:05:34,030 əvəzinə 50 kimi dəyər bir növ, bu yaddaş bəzi yeri ünvan depolayan mağazalar. 1059 01:05:34,030 --> 01:05:36,020 Ki, yaddaş kimi [anlaşılmaz]. 1060 01:05:36,020 --> 01:05:41,120 Belə ki, bu halda, biz nə, biz, bir tam və ya int * bir göstərici var 1061 01:05:41,120 --> 01:05:46,210 və 0xDEADBEEF bu hexadecimal ünvan var. 1062 01:05:46,210 --> 01:05:50,880 >> Belə ki, nə biz yaddaş bəzi yeri bu göstərici xal, indi ki, 1063 01:05:50,880 --> 01:05:56,020 və yalnız bir ki, dəyəri 50 bu yaddaş yeri var. 1064 01:05:56,020 --> 01:06:01,810 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. 1065 01:06:01,810 --> 01:06:06,020 Amma, məsələn, 64-bit sistem üzrə göstəricilər 64 bit var. 1066 01:06:06,020 --> 01:06:08,040 Belə ki, siz unutmayın lazımdır bir şey var. 1067 01:06:08,040 --> 01:06:12,310 Belə ki, son-bit sistem, bir göstərici son bit uzun. 1068 01:06:12,310 --> 01:06:17,320 Pointers əlavə şeylər olmadan cür həzm çətindir 1069 01:06:17,320 --> 01:06:20,300 belə dinamik yaddaş ayrılması misal ilə gedək. 1070 01:06:20,300 --> 01:06:25,130 Nə dinamik yaddaş ayrılması sizin üçün, və ya biz malloc dediyimiz 1071 01:06:25,130 --> 01:06:29,280 siz set xaricində data bir növ ayrılması imkan verir. 1072 01:06:29,280 --> 01:06:31,830 Beləliklə, bu data cür proqramın müddəti daha baqidir. 1073 01:06:31,830 --> 01:06:36,430 Bildiyiniz kimi, çünki bir funksiyası daxilində x və funksiyası yekunları elan əgər, 1074 01:06:36,430 --> 01:06:40,910 artıq x saxlanılır ki, data girmə imkanı vardır. 1075 01:06:40,910 --> 01:06:44,420 Nə göstəricilərinə bizə bildirin bizə yaddaş və ya mağaza dəyərlər saxlaya qoy edir 1076 01:06:44,420 --> 01:06:46,840 yəni yaddaş müxtəlif seqmenti ki, yığın-yığın. 1077 01:06:46,840 --> 01:06:49,340 İndi bir biz uzun bir göstərici kimi, funksiyaları həyata qayıtmaq 1078 01:06:49,340 --> 01:06:54,960 yaddaş ki, yeri, sonra biz nə edə biz orada dəyərlər baxmaq bilər. 1079 01:06:54,960 --> 01:06:58,020 Nin Məsələn baxaq: Bu daha yaddaş layout edir. 1080 01:06:58,020 --> 01:07:00,050 Və biz əsas, bu funksiya var. 1081 01:07:00,050 --> 01:07:06,870 Ne edir edir - tamam, belə sadə, sağ - int x = 5, yalnız əsas yığını bir dəyişən var. 1082 01:07:06,870 --> 01:07:12,450 >> Digər tərəfdən, indi biz funksiyası giveMeThreeInts tutan bir pointer bəyan edir. 1083 01:07:12,450 --> 01:07:16,800 Və indi biz bu funksiya daxil və biz bunun üçün yeni bir yığın çərçivəsində yaradır. 1084 01:07:16,800 --> 01:07:20,440 Lakin, bu yığını çərçivəsində, biz int * temp elan 1085 01:07:20,440 --> 01:07:23,210 olan bizim üçün mallocs 3 integers edir. 1086 01:07:23,210 --> 01:07:25,880 Belə ki, int ölçüsü, bu int nə qədər bytes bizə 1087 01:07:25,880 --> 01:07:29,620 və malloc bizə verir ki, yığın yer çox bytes. 1088 01:07:29,620 --> 01:07:32,890 Belə ki, bu halda, biz, 3 integers üçün kifayət qədər yer yaratmışdır 1089 01:07:32,890 --> 01:07:36,830 və yığın mən ali onu tərtib etdik nə ki, orada bir yoldur. 1090 01:07:36,830 --> 01:07:42,900 Biz Bitirdiğinizde sonra, biz burada qayıtmaq, yalnız 3 ints geri lazımdır, 1091 01:07:42,900 --> 01:07:47,000 və bu yaddaş olduğu artıq bu halda, ünvan qaytarır. 1092 01:07:47,000 --> 01:07:51,250 Və biz göstərici = keçid seçin və orada biz yalnız başqa göstərici var. 1093 01:07:51,250 --> 01:07:54,550 Amma nə funksiyası yekunları burada dizilir və yox edir. 1094 01:07:54,550 --> 01:07:59,250 Belə temp yox, ancaq hələ harada ünvan saxlamaq 1095 01:07:59,250 --> 01:08:01,850 o 3 integers elektrik daxilində var. 1096 01:08:01,850 --> 01:08:06,180 Belə ki, bu dəsti-ci ildə, göstəricilər də dizilir çərçivəsində üçün yerli scoped var 1097 01:08:06,180 --> 01:08:09,860 lakin onlar istinad üçün yaddaş yığın edir. 1098 01:08:09,860 --> 01:08:12,190 >> Bu mənada edirmi? 1099 01:08:12,190 --> 01:08:14,960 [Tələbə] Tekrar bilərmi? >> [Joseph] Bəli. 1100 01:08:14,960 --> 01:08:20,270 Mən yalnız bir az getmək əgər Belə ki, temp ayrılan bax 1101 01:08:20,270 --> 01:08:23,500 var yığın bəzi yaddaş. 1102 01:08:23,500 --> 01:08:28,680 Belə ki, bu funksiya, giveMeThreeInts yekunları, burada bu yığını yox gedir zaman. 1103 01:08:28,680 --> 01:08:35,819 Və bu halda dəyişənlərin hər hansı, dizilir çərçivəsində ayrılıb ki, bu göstərici ilə. 1104 01:08:35,819 --> 01:08:39,649 Biz temp geri yana yox olacaq, lakin 1105 01:08:39,649 --> 01:08:46,330 və biz = temp, pointer indi temp kimi yeri eyni yaddaş qeyd olacaq göstərici seçin. 1106 01:08:46,330 --> 01:08:50,370 Belə ki, indi biz temp ki, yerli pointer, itirmək baxmayaraq 1107 01:08:50,370 --> 01:08:59,109 biz hələ ki, dəyişən göstərici daxilində işarə nə xatirəsinə ünvan saxlayırlar. 1108 01:08:59,109 --> 01:09:03,740 Suallar? Siz bölməsində artıq getdi əgər bir confusing mövzu cür ola bilər. 1109 01:09:03,740 --> 01:09:09,240 Biz, sizin TF mütləq üzərində getmək edəcək və əlbəttə ki, biz suallara cavab 1110 01:09:09,240 --> 01:09:11,500 Bu nəzərdən sessiyasının sonunda. 1111 01:09:11,500 --> 01:09:14,220 Lakin bu kompleks mövzu sort və mən göstərmək üçün gedir ki, misal 1112 01:09:14,220 --> 01:09:18,790 ki göstəricilərinə həqiqətən nə aydınlaşdırmaq yardım edəcək. 1113 01:09:18,790 --> 01:09:22,500 >> Bu halda, göstəricilər serialların bərabər 1114 01:09:22,500 --> 01:09:25,229 Mən yalnız bir int dizi eyni şey kimi bu göstərici istifadə edə bilərsiniz. 1115 01:09:25,229 --> 01:09:29,840 Mən, 0 daxil indeksasiyası və 1 üçün ilk tam dəyişən alıram 1116 01:09:29,840 --> 01:09:39,689 2-İkinci tam dəyişdirilməsi, və 3-cü tam 3. 1117 01:09:39,689 --> 01:09:44,210 Göstəricilər üzrə daha çox. Yaxşı, Binky xatırlayıram. 1118 01:09:44,210 --> 01:09:48,319 Bu halda, biz bir pointer ayrılan sonra, və ya biz bir pointer elan 1119 01:09:48,319 --> 01:09:52,760 lakin ilk, yalnız bir göstərici elan zaman, hər yerdə yaddaş işarə deyil. 1120 01:09:52,760 --> 01:09:54,930 Bu daxilində yalnız zibil dəyərlər var. 1121 01:09:54,930 --> 01:09:56,470 Mən bu göstərici işarə yerləşir heç bir fikrim yoxdur. 1122 01:09:56,470 --> 01:10:01,630 Bu yalnız 0 və 1-in ilkin bəyan edildiyi ilə dolu olan bir ünvan var. 1123 01:10:01,630 --> 01:10:04,810 Mən bu barədə malloc zəng qədər mən bu ilə bir şey edə bilməz 1124 01:10:04,810 --> 01:10:08,390 və sonra mənə daxili dəyərlər qoymaq bilərsiniz yığın bir az yer verir. 1125 01:10:08,390 --> 01:10:11,980 Sonra yenidən, bu yaddaş içində nə bilmirəm. 1126 01:10:11,980 --> 01:10:16,780 Mən nə üçün ilk şey sisteminin kifayət qədər yaddaş olub kontrol edir 1127 01:10:16,780 --> 01:10:20,850 Mənə bu kontrol yapýyorum nə olan ilk yeri, 1 tam geri vermək. 1128 01:10:20,850 --> 01:10:25,020 Pointer null varsa, ki, kifayət qədər yer və ya başqa bir səhv baş olmadığını bildirir 1129 01:10:25,020 --> 01:10:26,320 mən mənim proqram həyata çıxmaq lazımdır. 1130 01:10:26,320 --> 01:10:29,400  Bu uğur əgər Lakin, indi pointer istifadə edə bilərsiniz 1131 01:10:29,400 --> 01:10:35,020 və nə * göstərici yoxdur ünvanı harada aşağıdakı 1132 01:10:35,020 --> 01:10:38,480 yerləşir ki, dəyər və bu, 1-bərabər müəyyən etmək. 1133 01:10:38,480 --> 01:10:41,850 Yaddaş mövcud Belə ki burada, biz kontrol edirik. 1134 01:10:41,850 --> 01:10:45,380 >> Siz mövcud bilirik sonra, onu qoya bilər 1135 01:10:45,380 --> 01:10:50,460 nə dəyəri siz onu qoymaq istəyirik, bu halda 1-ci. 1136 01:10:50,460 --> 01:10:53,060 Biz bu tamamlayın sonra, bu göstərici azad etmək lazımdır 1137 01:10:53,060 --> 01:10:57,160 biz sistemi, ilk növbədə istədi ki, yaddaş geri almaq lazımdır, çünki. 1138 01:10:57,160 --> 01:10:59,690 Çünki kompüter biz bu Bitirdiğinizde bilmir. 1139 01:10:59,690 --> 01:11:02,510 Bu halda biz aydın şəkildə onu izah edirik, tamam, biz yaddaş ilə tamamlayın. 1140 01:11:02,510 --> 01:11:10,780 Bəzi digər proses ehtiyacı varsa, bir sıra digər proqram lazımdır, irəli getmək və onu çekinmeyin. 1141 01:11:10,780 --> 01:11:15,110 Biz də edə bilərsiniz Biz yalnız müəyyən yerli dəyişənlərin ünvan almaq olar. 1142 01:11:15,110 --> 01:11:19,080 Belə ki, int x əsas və dizilir çərçivəsində daxilində deyil. 1143 01:11:19,080 --> 01:11:23,060 Və biz bu işareti istifadə edildikdə, bu və operator, nə yox edir 1144 01:11:23,060 --> 01:11:27,310 bu x edir, x yaddaşında yalnız bəzi məlumatlar, ancaq bir ünvan var. 1145 01:11:27,310 --> 01:11:33,790 Bu yerdə tesis edir. Bu nə zəng & x ki, bunu bu, bizi x ünvan verir. 1146 01:11:33,790 --> 01:11:38,430 Beləliklə, biz x yaddaşında olduğu üçün göstərici baxımından edirik. 1147 01:11:38,430 --> 01:11:41,710 İndi biz yalnız * kimi bir şey x, biz 5 geri almaq olacaq yoxdur. 1148 01:11:41,710 --> 01:11:43,820 Ulduz bu dereferencing adlanır. 1149 01:11:43,820 --> 01:11:46,640 Siz ünvan edin və orada saxlanılan bu dəyəri almaq. 1150 01:11:51,000 --> 01:11:53,310 >> Hər hansı sual? Bəli? 1151 01:11:53,310 --> 01:11:56,500 Siz 3 guşəli şey deyilsə [Tələbə], hələ də tərtib etmir? 1152 01:11:56,500 --> 01:11:59,490 Bəli. Siz 3-pointer şey deyilsə, o, hələ də tərtib olacaq 1153 01:11:59,490 --> 01:12:02,720 amma ikinci nə sizə göstərmək və etmədən olacaq 1154 01:12:02,720 --> 01:12:04,860 ki, bir yaddaş sızıntısı zəng budur. Siz sistem verən deyilik 1155 01:12:04,860 --> 01:12:07,850 onun yaddaş geri, bir sonra proqram toplamaq niyyətindədir isə 1156 01:12:07,850 --> 01:12:10,940 istifadə deyil, və başqa heç bir şey üçün istifadə edə bilərsiniz yaddaş ki. 1157 01:12:10,940 --> 01:12:15,750 Əgər sizin kompüter 1,5 milyon kilobayttan ilə Firefox gördüm varsa, 1158 01:12:15,750 --> 01:12:17,840 vəzifəsi meneceri ki, neler var. 1159 01:12:17,840 --> 01:12:20,760 Siz onlar idarə deyilik ki, proqram bir yaddaş sızıntısı var. 1160 01:12:23,080 --> 01:12:26,240 Belə ki, necə göstərici hesab işləyir? 1161 01:12:26,240 --> 01:12:29,480 Yaxşı, göstərici hesab bir sıra daxil kimi endeksleme növ edir. 1162 01:12:29,480 --> 01:12:36,370 Bu halda, bir göstərici var, nə mən, mən ilk element üçün göstərici baxımından olun 1163 01:12:36,370 --> 01:12:42,100 Mən ayrılmış etdiyiniz 3 integers bu serialın. 1164 01:12:42,100 --> 01:12:46,670 Belə ki, indi mən nə, star pointer yalnız siyahıda ilk element dəyişir. 1165 01:12:46,670 --> 01:12:49,140 Burada Star göstərici +1 xal. 1166 01:12:49,140 --> 01:12:53,140 Belə göstərici burada bitdi, göstərici +1 burada bitdi, pointer +2 burada bitdi. 1167 01:12:53,140 --> 01:12:56,610 >> Belə ki, yalnız 1 əlavə bu array boyunca hərəkət kimi eyni şeydir. 1168 01:12:56,610 --> 01:12:59,880 Biz nə, biz göstərici +1 nə zaman, buraya ünvanı almaq 1169 01:12:59,880 --> 01:13:04,180 və burada dəyəri almaq üçün, bütün ifadə bir ulduz qoymaq 1170 01:13:04,180 --> 01:13:05,990 bu dereference üçün. 1171 01:13:05,990 --> 01:13:09,940 Belə ki, bu halda, mən, 1 bu serialın ilk yeri müəyyən alıram 1172 01:13:09,940 --> 01:13:13,970 2 ikinci yer və 3-cü yer. 1173 01:13:13,970 --> 01:13:18,180 Sonra nə buraya edirəm, mən bizim göstərici +1 çap edirəm ki, 1174 01:13:18,180 --> 01:13:19,970 olan yalnız mənə 2 verir. 1175 01:13:19,970 --> 01:13:23,650 İndi göstərici incrementing edirəm, belə göstərici göstərici +1 bərabərdir 1176 01:13:23,650 --> 01:13:26,780 hansı irəli hərəkət edir. 1177 01:13:26,780 --> 01:13:30,810 Və indi mən göstərici +1 çap əgər göstərici +1, vaxt: 3 1178 01:13:30,810 --> 01:13:33,990 Bu halda, 3 çap edir. 1179 01:13:33,990 --> 01:13:36,560 Və pulsuz bir şey, mən verən göstərici üçün 1180 01:13:36,560 --> 01:13:40,540 Mən malloc geri alan serialın əvvəlində işarə edilməlidir. 1181 01:13:40,540 --> 01:13:43,430 Mən burada 3 Zəng idi Belə ki, bu halda, bu, düzgün olmazdı 1182 01:13:43,430 --> 01:13:45,070 bu array ortasında çünki. 1183 01:13:45,070 --> 01:13:48,820 Mən orijinal yeri almaq üçün çıxmaq üçün 1184 01:13:48,820 --> 01:13:50,420 Mən onu azad əvvəl ilkin ilk spot. 1185 01:13:56,300 --> 01:13:58,450 Belə ki, burada bir daha cəlb misal var. 1186 01:13:58,450 --> 01:14:03,360 Bu halda, biz bir xarakter sıra 7 simvol ayrılması edirik. 1187 01:14:03,360 --> 01:14:06,480 >> Bu halda biz edirik, nə biz onlara ilk 6 üzərində loop edirik ki, 1188 01:14:06,480 --> 01:14:09,900 və biz Z. onlara müəyyən edirik 1189 01:14:09,900 --> 01:14:13,350 Belə ki, int i = 0, i> 6, i + +, 1190 01:14:13,350 --> 01:14:16,220 Belə ki, pointer + i yalnız bu halda, bizə 1191 01:14:16,220 --> 01:14:20,860 pointer göstərici +1, pointer +2, pointer +3 və s və s loop. 1192 01:14:20,860 --> 01:14:24,040 Nə etmək olur ki, bu dəyər almaq üçün, dereferences ki ünvan olur ki, 1193 01:14:24,040 --> 01:14:27,440 bir Z. və dəyişikliklər dəyər 1194 01:14:27,440 --> 01:14:30,350 Sonra sonunda sağ, bu simli deyil saxla? 1195 01:14:30,350 --> 01:14:33,560 Bütün strings olan null xitam xarakteri ilə bitirmək lazımdır. 1196 01:14:33,560 --> 01:14:38,620 Belə ki, nə mən göstərici 6 I daxil olan null terminator xarakter qoymaq deyil 1197 01:14:38,620 --> 01:14:43,980 İndi mən əsasən burada yapýyorum nə bir string üçün printf hüququ həyata keçirir? 1198 01:14:43,980 --> 01:14:46,190 >> Belə ki, zaman printf indi bir simli sonunda əldə edir nedir? 1199 01:14:46,190 --> 01:14:48,230 Bu null xitam xarakter xit zaman. 1200 01:14:48,230 --> 01:14:52,030 Belə ki, bu halda, bu serialın əvvəlinə mənim orijinal göstərici xal. 1201 01:14:52,030 --> 01:14:56,410 Mən ilk xarakter çap. Mən artıq hərəkət. 1202 01:14:56,410 --> 01:14:58,420 Hesab edirəm ki, karakter çap. Mən artıq hərəkət. 1203 01:14:58,420 --> 01:15:02,180 Və mən sonunda çatana qədər bunu edin. 1204 01:15:02,180 --> 01:15:07,750 İndi isə end * göstərici olacaq dereference bu və null xitam xarakter geri almaq. 1205 01:15:07,750 --> 01:15:11,780 Və mənim isə loop ki, dəyəri null xitam xarakterli deyil, yalnız çalışır. 1206 01:15:11,780 --> 01:15:13,770 Belə ki, indi bu loop həyata çıxmaq. 1207 01:15:18,780 --> 01:15:21,180 Və mən, bu göstərici ilə 6 çıxmaq əgər 1208 01:15:21,180 --> 01:15:22,860 Mən geri əvvəlinə bütün yolu gedin. 1209 01:15:22,860 --> 01:15:27,880 Mən onu azad etmək üçün əvvəlinə getmək çünki Unutmayın, mən bunu edirəm. 1210 01:15:27,880 --> 01:15:30,270 >> Belə ki, mən bir çox idi. Hər hansı bir sualınız varmı? 1211 01:15:30,270 --> 01:15:31,870 Xahiş edirik, bəli? 1212 01:15:31,870 --> 01:15:36,610 [Tələbə sual anlaşılmaz] 1213 01:15:36,610 --> 01:15:38,190 Siz Qaraçuxurlu demək olarmı? Bağışlayın. 1214 01:15:38,190 --> 01:15:44,140 [Tələbə] siz göstərici azad sağ əvvəl son slayd-də, 1215 01:15:44,140 --> 01:15:47,300 burada faktiki göstərici dəyəri dəyişən idi? 1216 01:15:47,300 --> 01:15:50,370 [Joseph] Belə ki, burada. >> [Tələbə] Oh, tamam. 1217 01:15:50,370 --> 01:15:51,890 [Joseph] Belə ki, mən sağ, bir pointer minus minus var, 1218 01:15:51,890 --> 01:15:54,140 ki, mən onu azad sonra geri bir şey hərəkət və 1219 01:15:54,140 --> 01:15:57,000 Bu göstərici serialın əvvəlində qeyd etmək lazımdır, çünki. 1220 01:15:57,000 --> 01:16:00,420 Əgər xətt sonra dayandığına [Tələbə] Amma lazım deyil ki. 1221 01:16:00,420 --> 01:16:03,130 Mən bu sonra dayandırılıb əgər [Joseph] Belə ki, bu, yaddaş sızıntısı hesab olunacaq 1222 01:16:03,130 --> 01:16:04,810 Mən pulsuz run çünki. 1223 01:16:04,810 --> 01:16:11,290 [Tələbə] I [anlaşılmaz] Siz göstərici +1 [anlaşılmaz] olduğu ilk üç xətləri sonra. 1224 01:16:11,290 --> 01:16:13,140 [Joseph] Ah-ha. Belə ki, orada sual var? 1225 01:16:13,140 --> 01:16:14,780 Bağışlayın. Xeyr, yoxdur. Xahiş edirik, gedin, gedin. 1226 01:16:14,780 --> 01:16:16,870 [Tələbə] Belə ki, göstəricilər dəyəri dəyişən deyilik. 1227 01:16:16,870 --> 01:16:19,130 Siz göstərici mənfi mənfi nə var olmazdı. 1228 01:16:19,130 --> 01:16:19,730 [Joseph] Bəli, dəqiq. 1229 01:16:19,730 --> 01:16:21,890 Belə ki, mən göstərici +1 və pointer +2 nə zaman, 1230 01:16:21,890 --> 01:16:24,410 Mən göstərici məşğul deyiləm göstərici +1 bərabərdir. 1231 01:16:24,410 --> 01:16:27,260 Belə ki, pointer yalnız serialın əvvəlində işarə edilir. 1232 01:16:27,260 --> 01:16:31,460 , Mən plus nə zaman yalnız bir plus bu göstərici içərisində geri dəyəri müəyyən 1233 01:16:31,460 --> 01:16:33,550 faktiki yanaşı bu hərəkət. 1234 01:16:36,860 --> 01:16:37,780 Bütün hüquqlar. 1235 01:16:40,550 --> 01:16:42,030 Ətraflı suallar? 1236 01:16:44,680 --> 01:16:47,790 >> Bu böyük növ əgər Yenə, bu sessiya əhatə olunacaq. 1237 01:16:47,790 --> 01:16:50,710 Bunu tədris fellow soruş, biz sonunda suallara cavab verə bilərsiniz. 1238 01:16:53,510 --> 01:16:56,600 Və adətən biz bu mənfi şey kimi deyil. 1239 01:16:56,600 --> 01:16:59,760 Bu mənə sıra ofset sonra nə qədər track saxlanılması tələb edir. 1240 01:16:59,760 --> 01:17:04,520 Belə ki, ümumiyyətlə, bu göstərici hesab işləri necə izah etmək üçün kifayətdir. 1241 01:17:04,520 --> 01:17:07,970 Amma biz adətən etmək istəyirəm ki, biz göstərici bir kopyasını yaratmaq istəyirəm ki, 1242 01:17:07,970 --> 01:17:11,640 biz simli ətrafında hərəkət etdiyiniz zaman, daha sonra biz surəti istifadə edəcəyik. 1243 01:17:11,640 --> 01:17:14,660 Belə ki, bu halda surəti, bütün simli çap üçün istifadə 1244 01:17:14,660 --> 01:17:19,040 amma biz göstərici mənfi 6 kimi var və ya biz bu hərəkət nə qədər takip yoxdur 1245 01:17:19,040 --> 01:17:22,700 biz orijinal point hələ siyahısının başında işarə olduğunu yalnız 1246 01:17:22,700 --> 01:17:25,340 və biz dəyişdirilə ki, bütün bu surəti idi. 1247 01:17:25,340 --> 01:17:28,250 Belə ki, ümumiyyətlə, orijinal göstərici surəti dəyişdirmək. 1248 01:17:28,250 --> 01:17:32,350 Kimi və düzmək üçün cəhd etməyin - nüsxədə mehrab don't. 1249 01:17:32,350 --> 01:17:35,290 Orijinal yalnız nüsxə dəyişdirmək üçün çalışırıq. 1250 01:17:41,540 --> 01:17:44,870 Biz printf daxil simli keçmək zaman Belə ki, qeyd 1251 01:17:44,870 --> 01:17:48,990 Siz, biz bütün digər dereferences ilə olduğu kimi qarşısında bir ulduz qoymaq hüququ yoxdur? 1252 01:17:48,990 --> 01:17:54,180 Siz bütün simli% s gözləyir çap Belə ki, bir ünvanı 1253 01:17:54,180 --> 01:17:57,610 və bu halda bir göstərici və ya simvol bir sıra kimi bu halda. 1254 01:17:57,610 --> 01:18:00,330 >> Uchun, char * s, və seriallarda eyni şey var. 1255 01:18:00,330 --> 01:18:03,690 Pointer simvol və xarakter Diziler eyni şey var. 1256 01:18:03,690 --> 01:18:05,720 Beləliklə, biz bütün pointer qəbul edilir. 1257 01:18:05,720 --> 01:18:08,150 Biz * göstərici və ya bu kimi bir şey kimi keçmək yoxdur. 1258 01:18:13,110 --> 01:18:14,930 Belə ki, seriallarda və göstəricilər eyni şey var. 1259 01:18:14,930 --> 01:18:19,160 X kimi bir şey yapýyorsun zaman burada bir sıra üçün [y] 1260 01:18:19,160 --> 01:18:21,960 nə başlıq altında yapýyor deyirdik edir, tamam, bir xarakter array var 1261 01:18:21,960 --> 01:18:23,690 belə bir göstərici var. 1262 01:18:23,690 --> 01:18:26,510 Və x, eyni şey 1263 01:18:26,510 --> 01:18:28,650 və buna nə, o, x ilə y əlavə edir 1264 01:18:28,650 --> 01:18:31,820 çox yaddaş irəli hərəkət kimi eyni şey olan. 1265 01:18:31,820 --> 01:18:34,930 İndi x + y, bizə ünvan bir növ verir 1266 01:18:34,930 --> 01:18:37,570 və biz ünvan dereference və ya arrow edin 1267 01:18:37,570 --> 01:18:41,640 Ü yaddaş ki, yeri və biz yaddaş ki, yeri dəyəri almaq üçün. 1268 01:18:41,640 --> 01:18:43,720 Belə ki, belə bu iki tam eyni şey var. 1269 01:18:43,720 --> 01:18:45,840 Bu yalnız bir sintaktik şəkər var. 1270 01:18:45,840 --> 01:18:48,090 Onlar eyni şey. Onlar bir-biri üçün yalnız müxtəlif syntactics istəyirik. 1271 01:18:51,500 --> 01:18:57,590 >> Belə ki, göstəricilər ilə yanlış nə edə bilərsiniz? Bir çox kimi. Okay. Belə ki, pis şeylər. 1272 01:18:57,590 --> 01:19:02,410 Sizin malloc zəng null, sağ qaytarır, əgər nə edə bilər bəzi pis şeylər yoxlanılması deyil? 1273 01:19:02,410 --> 01:19:06,560 Bu halda, mənə vermək sistem xahiş edirəm - ki sayı nə qədərdir? 1274 01:19:06,560 --> 01:19:11,200 Bir tam həcmi 4 bayt çünki, 2 milyard dəfə 4 kimi. 1275 01:19:11,200 --> 01:19:13,810 Mən 8 milyard bayt kimi üçün xahiş edirəm. 1276 01:19:13,810 --> 01:19:17,270 Əlbəttə, mənim kompüter mənə çox yaddaş geri vermək etmək niyyətində deyil. 1277 01:19:17,270 --> 01:19:20,960 Bu null olduqda və biz orada dereference üçün cəhd zaman, yoxlamaq etmədi - 1278 01:19:20,960 --> 01:19:24,270 o olacaq Ü üçün ok edin - biz yaddaş yoxdur. 1279 01:19:24,270 --> 01:19:27,150 Bu bir null göstərici dereferencing zəng edir. 1280 01:19:27,150 --> 01:19:29,710 Bu mahiyyətcə siz segfault səbəb olur. 1281 01:19:29,710 --> 01:19:31,790 Bu segfault bilər yollarından biridir. 1282 01:19:34,090 --> 01:19:38,090 Bunu başqa pis şeylər - də oh. 1283 01:19:38,090 --> 01:19:40,650 Bu null göstərici dereferencing edilib. Okay. 1284 01:19:40,650 --> 01:19:45,160 Digər pis şeylər - yaxşı, yalnız orada bir çek qoymaq düzeltmek üçün 1285 01:19:45,160 --> 01:19:46,980 ki pointer null olub yoxlayır 1286 01:19:46,980 --> 01:19:51,000 ki malloc bir null göstərici qaytarır olur və proqram həyata çıxmaq. 1287 01:19:55,110 --> 01:19:59,850 Bu xkcd komik var. İnsanlar indi başa düşürəm. Növ. 1288 01:20:06,120 --> 01:20:09,350 >> Belə ki, yaddaş. Mən bu artıq getdi. 1289 01:20:09,350 --> 01:20:12,000 Biz bir döngü malloc zəng, ancaq malloc zəng hər zaman edirik 1290 01:20:12,000 --> 01:20:14,370 biz, bu göstərici işarə yerləşir izini itirmək etdiyiniz 1291 01:20:14,370 --> 01:20:15,750 biz bu clobbering etdiyiniz çünki. 1292 01:20:15,750 --> 01:20:18,410 Belə ki, malloc üçün ilkin zəng məni burada yaddaş üzərində verir. 1293 01:20:18,410 --> 01:20:19,990 Bu mənim göstərici göstəricilər. 1294 01:20:19,990 --> 01:20:23,020 İndi o azad deyil, belə ki, indi mən yenə malloc çağırırıq. 1295 01:20:23,020 --> 01:20:26,070 İndi burada göstərir. İndi mənim yaddaş burada işarə edir. 1296 01:20:26,070 --> 01:20:27,640 Burada toxunan. Burada toxunan. 1297 01:20:27,640 --> 01:20:31,820 Amma burada ayrılan bütün yaddaş ünvanları itirib etdik. 1298 01:20:31,820 --> 01:20:35,100 Və indi artıq onlara heç bir istinad yoxdur. 1299 01:20:35,100 --> 01:20:37,230 Beləliklə, mən bu loop kənarda onları azad edə bilməz. 1300 01:20:37,230 --> 01:20:39,390 Belə ki, bu kimi bir şey düzeltmek üçün 1301 01:20:39,390 --> 01:20:42,250 pulsuz yaddaş unutmayın və siz bu yaddaş sızıntısı almaq, 1302 01:20:42,250 --> 01:20:45,810 Siz ilə tamamlayın dəfə bu loop daxilində yaddaş azad var. 1303 01:20:45,810 --> 01:20:51,400 Bəli, bu nə edir. Mən sizin çox bu nifrət bilirik. 1304 01:20:51,400 --> 01:20:55,270 Amma indi - yay! Siz 44,000 kilobayttan kimi almaq. 1305 01:20:55,270 --> 01:20:57,110 Belə ki, siz loop sonunda azad 1306 01:20:57,110 --> 01:20:59,770 və yalnız yaddaş hər zaman azad olacaq. 1307 01:20:59,770 --> 01:21:03,620 Əsasən, proqram artıq bir yaddaş sızıntısı mövcut deyil. 1308 01:21:03,620 --> 01:21:08,150 >> İndi siz bunu edə bilər başqa bir şey iki dəfə xahiş etdik ki, bəzi yaddaş azad edir. 1309 01:21:08,150 --> 01:21:11,060 Bu halda, siz malloc bir şey, onun dəyəri dəyişir. 1310 01:21:11,060 --> 01:21:13,140 Siz həyata bildirib dəfə çünki Siz pulsuz. 1311 01:21:13,140 --> 01:21:14,940 Amma sonra biz daha azad. 1312 01:21:14,940 --> 01:21:16,730 Bu olduqca pis bir şeydir. 1313 01:21:16,730 --> 01:21:18,820 Bu, ilkin segfault gedən deyil 1314 01:21:18,820 --> 01:21:23,350 lakin sonra bu ikiqat bu corrupts sizin yığın strukturu azad olunur nə isə, 1315 01:21:23,350 --> 01:21:27,200 siz CS61 kimi bir sinif etmək seçerseniz və bu barədə bir az daha çox öyrənmək lazımdır. 1316 01:21:27,200 --> 01:21:30,000 Amma əhəmiyyətli bir sonra kompüterinizi qarışıq almaq üçün gedir isə 1317 01:21:30,000 --> 01:21:33,010 - yerləşir və harada saxlanılır nə yaddaş locations var haqqında 1318 01:21:33,010 --> 01:21:34,800 Ü data yaddaşında saxlanılır. 1319 01:21:34,800 --> 01:21:38,080 Və belə bir göstərici azad iki dəfə bunu istəmirəm ki, pis bir şey deyil. 1320 01:21:38,080 --> 01:21:41,600 >> Yanlış getmək bilər ki, başqa şeylər sizeof istifadə olunur. 1321 01:21:41,600 --> 01:21:44,460 Belə ki, bu halda, 8 bayt malloc 1322 01:21:44,460 --> 01:21:46,700 və sağ iki integers eyni şey var? 1323 01:21:46,700 --> 01:21:49,580 Belə ki, bu, gözəl təhlükəsiz, lakin? 1324 01:21:49,580 --> 01:21:52,160 Yaxşı, Lucas, müxtəlif mimarilerde danışdıq kimi 1325 01:21:52,160 --> 01:21:54,220 integers müxtəlif uzunluqlu var. 1326 01:21:54,220 --> 01:21:57,970 Belə ki, istifadə etdiyiniz cihaz haqqında, integers haqqında 4 bayt var 1327 01:21:57,970 --> 01:22:02,370 lakin bəzi digər sistem onlar 8 bayt ola bilər və ya onlar 16 bayt ola bilər. 1328 01:22:02,370 --> 01:22:05,680 Belə ki, mən yalnız burada bu rəqəm istifadə əgər, 1329 01:22:05,680 --> 01:22:07,310 Bu proqram cihaz haqqında iş bilər 1330 01:22:07,310 --> 01:22:10,360 lakin bəzi digər sistem kifayət qədər yaddaş ayrılması gedən deyil. 1331 01:22:10,360 --> 01:22:14,020 Bu halda, bu sizeof operator üçün istifadə edir. 1332 01:22:14,020 --> 01:22:16,880 Nə edir, biz zəng zaman sizeof (int) 1333 01:22:16,880 --> 01:22:21,910  bu, bizim proqram çalışan sistem bir tam ölçüdə verir. 1334 01:22:21,910 --> 01:22:25,490 Belə ki, bu halda, sizeof (int), Aracın kimi bir şey, 4 qayıdacaq 1335 01:22:25,490 --> 01:22:29,980 və indi 8 olan bu iradə 4 * 2, 1336 01:22:29,980 --> 01:22:32,330 olan yalnız iki integers üçün zəruri kosmik məbləği. 1337 01:22:32,330 --> 01:22:36,710 Fərqli bir sistem də, bir int 16 bayt və ya 8 bayt kimi, əgər 1338 01:22:36,710 --> 01:22:39,380 yalnız bu məbləğ saxlamaq üçün kifayət qədər bytes geri olacaq. 1339 01:22:41,830 --> 01:22:45,310 >> Və nəhayət, structs. 1340 01:22:45,310 --> 01:22:48,340 Belə ki, yaddaşında bir sudoku board saxlamaq istəyirdi, biz bunu edə bilər? 1341 01:22:48,340 --> 01:22:51,570 Siz ilk şey üçün bir dəyişən kimi hesab bilər 1342 01:22:51,570 --> 01:22:53,820 ikinci şey üçün bir dəyişən, üçüncü şey üçün bir dəyişən, 1343 01:22:53,820 --> 01:22:56,420 pis, doğru - dördüncü şey üçün bir dəyişən? 1344 01:22:56,420 --> 01:23:00,750 Belə ki, bu üst edə bilər bir irəliləyiş 9 x 9 array etməkdir. 1345 01:23:00,750 --> 01:23:04,480 Bu gözəl, lakin siz sudoku heyəti ilə başqa şeylər birləşmək istədiyini əgər 1346 01:23:04,480 --> 01:23:06,490 , şura çətinlik nə kimi 1347 01:23:06,490 --> 01:23:11,740 və ya, məsələn, nə üçün hesab və ya nə qədər zaman bu board həll qəbul olub? 1348 01:23:11,740 --> 01:23:14,970 Yaxşı, nə edə bilər bir struct yaratmaq bilər. 1349 01:23:14,970 --> 01:23:18,910 Mən əsasən dedi alıram, mən burada artıq bu strukturun müəyyən edirəm ki, 1350 01:23:18,910 --> 01:23:23,230 və mən x 9 9 bir board ibarət olan bir sudoku board müəyyən edirəm. 1351 01:23:23,230 --> 01:23:26,650 >> Və bunun səviyyəsi adı göstəricilərinə malikdir nə. 1352 01:23:26,650 --> 01:23:30,730 Bu da mən indi am yerləşir koordinatları olan x və y var. 1353 01:23:30,730 --> 01:23:35,980 Bu da zaman [anlaşılmaz] sərf edib və bu, mən indiyə qədər inputted etdiyiniz hərəkət sayı var. 1354 01:23:35,980 --> 01:23:40,010 Və bu halda, yalnız bir strukturu data bütöv bir dəstə gruplandırmak bilər 1355 01:23:40,010 --> 01:23:42,790 əvəzinə müxtəlif dəyişənlərin kimi ətrafında uçan kimi olan 1356 01:23:42,790 --> 01:23:44,540 Mən, həqiqətən, track saxlamaq bilməz. 1357 01:23:44,540 --> 01:23:49,720 Bu bizə bu struct daxilində fərqli şeylər sened növ yalnız gözəl sintaksis var imkan verir. 1358 01:23:49,720 --> 01:23:53,430 Mən board.board nə yalnız ola bilər, mən geri sudoku board almaq. 1359 01:23:53,430 --> 01:23:56,320 Board.level, mən nə qədər sərt almaq. 1360 01:23:56,320 --> 01:24:00,540 Board.x və board.y mənə board ola bilər harada koordinatları verir. 1361 01:24:00,540 --> 01:24:04,730 Və mən, biz struct sahələri zəng nə daxil oldum. 1362 01:24:04,730 --> 01:24:08,840 Bu ki, bir növü olan sudokuBoard, müəyyən edir. 1363 01:24:08,840 --> 01:24:14,800 Və indi biz buradayıq. Mən növü sudokuBoard və "board" adlı dəyişən var. 1364 01:24:14,800 --> 01:24:18,820 Və indi mən burada artıq bu quruluş edir ki, bütün sahələrində əldə edə bilərsiniz. 1365 01:24:20,830 --> 01:24:22,450 >> Structs suallarınız? Bəli? 1366 01:24:22,450 --> 01:24:25,890 Int x, y üçün [Tələbə], bir xətt, həm də elan? >> [Joseph] Ah-ha. 1367 01:24:25,890 --> 01:24:27,400 [Tələbə] Belə ki, yalnız onlara bütün bunu edə bilər? 1368 01:24:27,400 --> 01:24:31,200 X kimi, y vergül dəfə ümumi? 1369 01:24:31,200 --> 01:24:34,460 [Joseph] Bəli, siz mütləq eyni xətt üzərində x və y qoyulan səbəbi, lakin bilər - 1370 01:24:34,460 --> 01:24:36,330 biz yalnız eyni xətt üzrə bu edə bilərsiniz niyə və sual? 1371 01:24:36,330 --> 01:24:38,600 Niyə biz yalnız eyni xətt üzrə bütün bunlar qoymaq deyil 1372 01:24:38,600 --> 01:24:42,090 x və y-birinə bağlı, 1373 01:24:42,090 --> 01:24:44,780 və bu, bir mənada, yalnız stylistically daha doğru 1374 01:24:44,780 --> 01:24:46,600 eyni xətt üzrə iki şeyi qruplaşdırılması, çünki 1375 01:24:46,600 --> 01:24:49,340 ki kimi sort eyni şey aiddir. 1376 01:24:49,340 --> 01:24:51,440 Mən yalnız başqa bu split. Bu yalnız bir stil şey. 1377 01:24:51,440 --> 01:24:53,720 Bu funksional heç bir fərq edir. 1378 01:24:58,150 --> 01:24:59,270 Structs hər hansı digər suallar? 1379 01:25:03,030 --> 01:25:06,620 Siz struct ilə Pokédex müəyyən edə bilərsiniz. 1380 01:25:06,620 --> 01:25:11,720 A Pokemon bir sıra və bir məktub, bir sahibi bir növü var. 1381 01:25:11,720 --> 01:25:16,990 Əgər Pokemon bir sıra varsa, sonra sağ, bir Pokédex etmək olar? 1382 01:25:16,990 --> 01:25:20,810 OK, sərin. Belə ki, structs haqqında suallar. Bu structs əlaqəsi. 1383 01:25:20,810 --> 01:25:25,270 >> Nəhayət, gdb. Gdb nə imkan vermir? Bu proqram debug imkan verir. 1384 01:25:25,270 --> 01:25:27,650 Siz gdb istifadə əgər, mən qısa seyr tövsiyə edərdi 1385 01:25:27,650 --> 01:25:31,250 və yalnız gdb nə üzərində gedən, necə, siz onu istifadə edə bilər necə, bu iş 1386 01:25:31,250 --> 01:25:32,900 və bir proqram bu test. 1387 01:25:32,900 --> 01:25:37,400 Və gdb nə imkan verir nə fasilə [anlaşılmaz] qədər proqram imkan verir ki, 1388 01:25:37,400 --> 01:25:38,920 və praktiki xətti. 1389 01:25:38,920 --> 01:25:42,600 Məsələn, mən, mənim proqram xətti 3 kimi duraklatabilirsiniz icra istəyirəm 1390 01:25:42,600 --> 01:25:46,010 və mən line 3 Ben isə mən var ki, bütün dəyərlər çap edə bilərsiniz. 1391 01:25:46,010 --> 01:25:49,710 Bir xətt duraklatarak kimi və biz dediyimiz 1392 01:25:49,710 --> 01:25:52,350 biz ki, bu xətt bir breakpoint qoyulması zəng edir 1393 01:25:52,350 --> 01:25:55,920 və biz o zaman proqramı dövlət dəyişənlərin çap edə bilərsiniz. 1394 01:25:55,920 --> 01:25:58,990 >> Biz sonra proqram line-by-line vasitəsilə orada addım bilər. 1395 01:25:58,990 --> 01:26:03,200 Və sonra biz zaman yığın dövlət baxmaq olar. 1396 01:26:03,200 --> 01:26:08,600 Və gdb, nə biz, biz C fayl cingilti zəng ki, istifadə etmək üçün 1397 01:26:08,600 --> 01:26:11,290 lakin biz bu-ggdb bayrağı keçməlidirlər. 1398 01:26:11,290 --> 01:26:15,850 Və bir dəfə biz yalnız yaranan çıxış fayl gdb çalışan ilə tamamlayın. 1399 01:26:15,850 --> 01:26:18,810 Və belə ki, bu kimi mətn bəzi kimi kütləvi almaq 1400 01:26:18,810 --> 01:26:21,990 lakin siz həqiqətən bütün əvvəlində əmrləri yazın olunur. 1401 01:26:21,990 --> 01:26:24,250 Fasilə əsas əsas bir breakpoint qoyur. 1402 01:26:24,250 --> 01:26:28,470 Siyahısı 400 line 400 ətrafında kodu xətləri siyahıları. 1403 01:26:28,470 --> 01:26:31,410 Və bu halda yalnız, oh, ətrafında baxmaq və demək olar 1404 01:26:31,410 --> 01:26:34,360 Mən bu xətt olan line 397 bir breakpoint, təyin etmək istədiyiniz 1405 01:26:34,360 --> 01:26:37,170 və sonra proqramı addım daxil çalışır və pozmaq olacaq. 1406 01:26:37,170 --> 01:26:41,120 Orada fasilə olacaq və siz, məsələn, aşağı və ya yüksək dəyər çap edə bilərsiniz. 1407 01:26:41,120 --> 01:26:46,410 Və siz bilmək lazımdır əmrləri bir dəstə var 1408 01:26:46,410 --> 01:26:48,660 və bu Slideshow, saytında qədər davam edəcək 1409 01:26:48,660 --> 01:26:54,000 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. 1410 01:26:54,000 --> 01:27:00,650 >> Cool. Bu Quiz Review 0 idi, və hər hansı bir sualınız varsa, biz ətrafında qalmaq lazımdır. 1411 01:27:00,650 --> 01:27:03,850 Bütün hüquqlar. 1412 01:27:03,850 --> 01:27:09,030 >>  [Alqış] 1413 01:27:09,030 --> 01:27:13,000 >> [CS50.TV]