[Powered by Google Translate] [Bölmə 3] [Less Rahat]
>> [Nate Hardison] [Harvard Universiteti]
>> [Bu CS50 edir.] [CS50.TV]
>> Bütün hüquqlar, in başlamaq bildirin.
CS50 həftəsi 4 xoş gəlmisiniz.
Uşaqlar bir web browser açmaq və pset 3 açmaq varsa,
CS50 ilə dırmaşma, biz gedən başlamaq olacaq
orada suallar bölmə vasitəsilə.
Elə ötən həftə kimi, biz CS50 məkanı iş olacaq
Siz həmçinin ki, qoparmaq, bilərsiniz əgər
və irəli getmək və mən üst burada var ki, bu linki ziyarət edin.
Bu başlamaq üçün vaxt var.
Biz burada kiçik hi proqram var. Crazy Heç.
Mən bu gün sizə uşaqlar ilə istədiyiniz ilk şey biri bir neçə həlləri üzərində getmək deyil
Problem Set 1, misal həlli cür etmək
yalnız belə ki, kodu heyətinin növ yazı nə üçün bir fikir əldə edə bilərsiniz
kodu digər tələbələr növ yazılı, nə
Mən bu qəribə olduğunu bilirik, çünki siz bu nəzər
Bir problem set həll təqdim şərh almaq zaman
öz versiyası, lakin bəzən, digər insanlar bunu necə faydalıdır
xüsusilə gözəl olan isə axtarır.
Çox hissəsi üçün, mən, həqiqətən, sizin uşaqlar istehsal həllər ilə heyran olmuşdur.
, Mən hələ Problem Set 2s baxaraq açılmış, lakin onlar ilk kimi bir şey edirsinizsə
o ancaq yaxşı şeylər deməkdir.
>> Mənim düzəlişlər baxsaq, nin, Revision 1 bütün yol aşağı başlamaq bildirin
və biz Mario həll tez nəzər olacaq.
Bu qoparmaq, biz təqdim olacaq ki, bu proqramlar düzgün.
Var, bu problemlərin düzgün məsələləri deyil, əksinə,
Biz müxtəlif dizayn məsələlər haqqında bir az danışmaq istəyirəm
burada istifadə edilmişdir.
Həlli haqqında maraqlı idi ki, biri
o funt müəyyən adlanan bu yeni tikinti istifadə ki,
bəzən də bir hash müəyyən adlandırılacaq.
Mənə burada bu zoom edək.
# Müəyyən bir sizin proqram bu nömrələrə adlarını vermək imkan verir.
Mario bir piramida Bu halda, maksimum hündürlük
23 və daha çox mənim 23 qoyulması edilib kod
biz ağır coding 23 kimi istinad olardı -
əvəzinə bu ki sayı adını MAX_HEIGHT verir
belə aşağı burada mənim do-isə loop ki,
həqiqətən MAX_HEIGHT müraciət edə bilərsiniz
yerinə sayı 23 daxil qoyulması
[Tələbə] bunu üstünlüyü nədir?
Böyük bir sual var.
Bir okunabilirlik edir.
Bu # müəyyən istifadə üstünlüyü okunabilirlik edir.
Mən bu kodu oxu alıram, mən nə edə bilərsiniz.
>> Düşünürəm ki, biz test edirik ki, burada bu vəziyyətdə bilərsiniz
hündürlüyü üçün biz də müəyyən etmişik biləcək <0, olan
minimum hündürlüyü və ya min boyu olacaq.
Digər üstünlüyü Mən görmək xəttinin qalan oxuya bilərsiniz ki,
biz də, hündürlüyü maksimum hündürlüyü daha çox deyil ki, əmin kontrol edirik ki,
biz hündürlüyü maksimum hündürlüyü daha çox isə davam edirik çünki.
Digər üstünlüyü-əgər bir az kiçiltmək burada
Bu proqram run və mən, indi 23, demək, bu run əgər
yalnız kimi bütün 23 satır çap edəcək.
Amma maksimum hündürlüyü dəyişdirmək istədi deyə
və indi piramidaları maksimum hündürlüyü məhdudlaşdırmaq istəyirəm
funky idi ki, yalnız demək-man, olmalıdır.
# Daxildir , # MAX_HEIGHT müəyyən
və Gəlin biz 10 bərabər qurmaq istədiklərini deyirlər.
İndi bu nöqtədə mən idi bütün bu yer dəyişdirmək idi.
Mən 12-ci cəhd yazın, mən indi kodu derleyeceğiz olar
mənə yenidən təklif edəcək.
Bu halda, biz yalnız bir dəfə MAX_HEIGHT istifadə edirik.
Bu getmək bir əngəl ki, böyük deyil
Əgər ehtiyac varsa və loop isə bu dəyişir.
Amma eyni sehrli sayı sened olduğunuz proqramları
təkrar-təkrar bu # mexanizmi müəyyən həqiqətən lazımlı
Siz yalnız fayl bu qoymaq yerləşir adətən var onlara üst bir vaxt dəyişə çünki
və dəyişiklik faylı qalan vasitəsilə percolates.
>> Mən düşündüm ki, bu tapşırıq qeyd etmək istəyirdi digər əşyalar, həqiqətən, gözəl görünürdü
bir dəyişənlərin adlandırma idi.
Biz sıra və hündürlüyü adlandırılan adlı tam dəyişənlər var ki, burada baxın.
Məkanı, hashes, bu kodu bir az daha oxunaqlı edir
bir az daha aydın nə həqiqətən neler edir.
Bu istifadə edərək fərqli deyil, təsadüfi məktublar demək
tamamilə və ya anlamsız.
Mən qeyd edəcəyik yekun şey, loops üçün ki,
çox vaxt bu iterator dəyişənlər, siz loops üçün istifadə ki, bu sayğacları,
o k sonra standart və i və sonra j ya onlara başlamaq şərti və var
və daha çox dəyişənlər lazımdır oradan gedir,
və bu, yalnız Konvensiyanın edir.
Konvensiyaların çox var.
Bu istifadə etdiyiniz proqramlaşdırma dili asılıdır.
Lakin C, biz adətən i ilə başlayın.
Bu, demək, istifadə etmək məntiqli deyil və ya b
vəziyyətdən asılı olaraq.
Bu üçün var.
İndi Revision 2 qoparmaq, siz başqa bir Mario görürsünüz
və bu, biz yalnız gördüm ki, biri kimi
lakin bu sərin bir şey cür edir.
Biz loop üçün daxili daxili burada bu bölmədə baxsaq,
onlar bu istiqamətdə burada bəzi crazy axtarır sintaksis istifadə edirik.
Bu ternary operator adlanır.
Bu, bir xəttə qatılaşdırılmış bir halda başqa bəyanatdır.
Vəziyyəti mötərizə daxilində bu hissəsidir.
Bu söyləyərək ekvivalent var j <boyu əgər - i - 1.
Və o məzmunu bloku olardı yer nə
və sonra başqa nə məzmunu bu # var.
Bu mahiyyətcə bu dəyişən bir yer təyin edib.
Bu, blok dəyişən məzmunu bir yer verilməsi oldu
Bu vəziyyət görüşüb təqdirdə, və vəziyyəti görüşüb halda,
sonra blok, dəyişən # bu olur.
Və sonra, əlbəttə, yerinə bütün simli qədər tikinti
və sonunda hər şeyi çap bu həll bir-bir xarakter onu görüntüler.
Pretty sərin.
>> Baxmaq üçün şeyi bir neçə. Biz görməmiş üçün hərəkət edəcəyik.
Biz görməmiş baxmaq İndi, bu ilk həll
# bir qədər müəyyən bu istifadə edir.
Biz bu proqram müxtəlif ədəd hər biri üçün müəyyən bir sabit var.
Biz dollarına görə sent üçün, dörddə dimes, nickels və pennies üçün, var
və indi, aşağı diyirləyin və kodu oxumaq
biz bir standart do-isə loop çap hər şeyi edə bilərsiniz.
Bu problemin mahiyyəti şərti həyata ki,
bir tam sizə istifadəçi oxumaq ki, float çevirmək üçün lazım
dəqiq riyaziyyat etmək və bu çünki edir
üzən point nömrələri ilə, biz qısa mühazirə haqqında söhbət kimi,
bu dəqiq sayı xəttində hər bir əhəmiyyəti mümkün deyil
sonsuz çox dəyərləri hətta 3.1 3 arasında, demək, var.
Siz 3.01 və 3,001 və 3,0001 ola bilər, və siz davam edə bilərsiniz.
Pul ilə çalışırıq zaman ki, olur, siz tez-tez çevirmək istəyirik
tam format daxil, belə ki pennies və məhsullarının belə itirmək deyilik.
Və yuvarlaqlaşdırma Doing əsas idi.
Bu çözüm, bir gözəl sadə, böyük alqoritm istifadə
ki, ilk dörddə, qalan qəpik sayı decremented
sonra dimes ilə, sonra nickels tərəfindən, sonra pennies ilə,
və sikkələrin hər zaman sayına əlavə.
>> Mən kiçiltmək və Revision 4 getmək kimi biz, görəcəksiniz ki, digər həlli,
bir çox oxşar əvvəlində lakin əvəzinə istifadə div və mod idi
Burada üzərində sent sayı hesablamaq üçün.
Bu, dörddə sayı 25 bölünür sent sayı bərabərdir
biz tam bölgüsü edirik, çünki bu işləri səbəb olduğunu,
belə discarding hər hansı qalan var.
[Tələbə] biz axtarış şərh var?
Bu, həqiqətən asılıdır.
[Tələbə] Siz burada kodu dən çox şərh edirik.
Bəli, və bu fəlsəfələrinin müxtəlif bir dəstə var.
Mənim şəxsi fəlsəfə, kodu, həqiqətən, həqiqət budur ki,
kodunuzu kimi, həqiqətən, kompüter üzrə həyata nə olduğunu
və sizin kodu çox şərh kimi zəruri deyil mümkün kimi oxunaqlı olmalıdır.
Bu, riyazi çətin növü olan şeyler zaman dedi:
və ya algorithmically, bu siz ki, şərh yaxşı
kodunuzu oxumaq kim əlavə ölçüsü, əlavə qatı əlavə edin.
Bu həll yolları, tez-tez onlar daha çox yalnız şərh olunur
biz onları yaymaq etmək istəyirik və insanların onları seçin var
və olduqca asan oxumaq.
Lakin mütləq, mən bu ağır ki, razı olacaq.
[Tələbə] Lakin şübhə, ağır getmək zaman?
Şübhə, ağır getmək zaman.
Bəzi insanlar bəzən bu kimi qaytarılması 0 və ya bir şey demək olacaq.
Mən bir gülünc comment ki, düşünürəm.
Aydındır ki, nə var.
Mən demək English ehtiyac yoxdur.
Bəzən insanlar kimi şeylər yazmaq olacaq "kthxbai!"
Bu cute növü var, həm də qeyri-
ki, şərh bal və ya arasında fərq edilməsi deyil.
Bu cür şərhlər yalnız ha, ha var.
Cool.
>> Bu nöqtədə, sual 3 bölmə göstərilməyib Problem haqqında iş başlamaq edək.
Uşaqlar daha qoparmaq varsa,
ötən həftə olduğu kimi, biz bu bölməsində şort izləmək fikrində deyilik.
Biz sizin uşaqlar öz vaxt ki, bunu bildirin və suallar haqqında danışmaq lazımdır.
Amma indi bu bölmədə biz bir az daha çox vaxt sərf etmək olacaq
bu kodlaşdırma əsasları az söhbət
Keçən həftə olduğu kimi, əvəzinə, biz daha çox diqqət olacaq
nəzəriyyəsinin bir az daha, belə ki, ikili axtarış söhbət və sonra çeşidlənməsi.
Məruzəsi ilə yanaşı aşağıdakı olmuş sizin From,
kimsə məni fərq nə bir recap verə bilər
binar axtarış və xətti axtarış arasında?
Nə olub? Əmin olun.
Bu sıralaması siyahısında hər element vasitəsilə Xətti axtarış axtarış
bir-bir-bir-bir-bir,
və ikili axtarış, 2 qrupa siyahısı ayırır
sizin üçün axtarış etdiyiniz düymələri dəyər əgər çeklərin orta dəyəri daha çox və ya daha az
yalnız aşkar və daha az varsa, bu aşağı siyahısı ilə gedir
və sonra yenə ayırır, eyni funksiyası yoxdur
bütün yol aşağı o dəyəri özünə bərabər olması üçün orta tapır qədər.
Sağ.
>> Niyə biz qayğı edirsiniz?
Niyə biz xətti axtarış qarşı ikili axtarış danışmaq edirsiniz?
Bəli.
Siz problem həcmi ikiqat əgər İkili, bir çox sürətli
olduqca iki dəfə çox çox daha bir addım qalır.
Exactly.
Böyük bir cavab var.
Xətti axtarış çox, bir-bir element yoxlanılması olunur
və biz mühazirə ilk gün gördü
David onun telefon kitab Məsələn vasitəsilə getdi
və bir anda telefon kitab bir səhifə həyata yarıb
və yenidən və üzərində artıq bunu saxlanılır
ki, ona telefon kitab heç tapmaq üçün həqiqətən uzun vaxt olacaq
Əlbəttə, əgər o, əlifba çox başında kimsə axtarır.
Binar axtarış ile, bir çox daha sürətli getmək olar
və yalnız iki dəfə sürətli və ya 3 dəfə sürətli və ya 4 dəfə sürətli kimi deyil.
Ancaq problem kiçik və daha kiçik və daha sürətli daha kiçik olur.
Bu göstərmək üçün, biz nə barədə danışmağa başlaya bilərsiniz
biz ikili axtarış yazmaq zaman.
Əl-da problem olduğunu mən ədəd bir sıra var, əgər
, 1, 2, 3, 5, 7, 23, 45, 78, 12323, demək
sonra 0s bir ton və sonra 9,
biz nə həqiqətən tez anlamağa qadir olmaq istəyirəm
ədəd bu sıra.
Mən bu bir az silly və bir az göstərdi görünür bilirik
İndi çünki.
Biz bunu çox çox elementləri olmayan bir sıra var
Mən də sizə bir sual əgər anlamaq üçün və ya
23 sıra, siz olduqca tez edə bilərsiniz
yalnız bu nəzər salan və bəli və ya mənə izah edərək.
Bu halda hesab üçün analog, demək, təsəvvür edir
10.000 satırlar, 20.000 satır ilə bir Excel elektron tablo.
Əlbəttə, siz komanda F və ya nəzarət F etmək və bir şey baxa bilərsiniz.
Siz, həmçinin, filtreler və axtarış məhsulları istifadə edə bilərsiniz
ancaq xətti ilə line ki, fayl xətt vasitəsilə baxmaq əgər,
onu tapmaq üçün uzun müddət edəcək.
Yerləşir ki, çox, telefon kitab misal kimi növ var
heç bir zaman bir telefon kitab bir səhifə vasitəsilə görünür.
Adətən, onlar orta açıq yoxdur
və ya telefon kitab və lüğətlərin Ü bir çox halda
həqiqətən o, ilk məktub klavişli var
Əgər birinci məktubu flip və açmaq və orada yaşayır başlamaq.
>> Yenidən adı mənə edək. >> Sam.
Sam.
Sam bildirib kimi, o xətti axtarış prosesi, həqiqətən yavaş olacaq
əvəzinə ikili axtarış, bu işlər yol olduğunu
biz axtarış alqoritm bir iteration keçmək hər dəfə
biz, mahiyyətcə, yarısında siyahısı bölmək olacaq
iki kiçik siyahıları daxil.
Və sonra loop növbəti iteration də biz yenidən bölmək lazımdır
digər kiçik siyahıları daxil.
Gördüyünüz kimi, problem kiçik almaq və kiçik edir
biz hər bir zaman siyahısı discarding yarım saxlamaq, çünki.
Bu necə discard işləyir?
Biz kompüter, əgər yalnız bir öyüd-nəsihət, nə biz nə edirik
və biz bu siyahıda sayı 5 üçün axtarış demək idi
biz ortada bir sıra seçin ki, edir.
1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ədəd var, çünki bu siyahı ortasında
biz, 4-cü mövqe və ya 5-ci mövqedə ya nömrə seçmək istədiyiniz
və biz siyahısına ki, orta zəng ediyorum.
Orta sayı seçin.
Sam dediyi kimi ki sayı bərabər olduqda sonra, biz görmək üçün test olacaq
biz almaq istəyirəm ki sayı və ya istədiyiniz sayı.
Bərabər varsa, onda biz bunu gördük. Biz qazanmaq.
Bərabər deyil, onda hallarda bir neçə var.
İki hallarda, ya sayı biz aradığınız sayı daha çox olmalıdır edir
və ya daha az olacaq.
Daha çox varsa, biz sağa hərəkət.
Az varsa, biz sola hərəkət.
Və sonra yenə bütün prosesi təkrar
sağ yarım və ya siyahısı sol yarısı ya haqqında.
>> Bugünkü bölməsində ilk problem anlamaq üçün
necə həqiqətən C kodu bu ifadə başlaya bilərsiniz.
Biz burada pseudocode var.
Biz bunu başlamaq lazımdır nə bir yeni yer çəkmək lazımdır
daha sonra bu qeydlər var ki, bu versiya edirsiniz
biz bütün bu silin, sonra surəti və problem dəsti yapışdırıb olacaq
bizim fəzalarında bu məlumat və inşallah bu fasilə deyil.
Mükəmməldir.
Uşaqlar bütün varsa, yeni məkana bu kodu seçin və yapışdırıb
boş bir daxil.
Nin Daniel cəhd edək. Bu proqram tərtib çalıştırıyorsanız, işləyir?
No >> nə dedi var?
Bu nəzarət qeyri-etibarsız funksiyası sonuna çatır deyir.
Bəli, belə mənə çalışan edək.
Uşaqlar əvvəl bu gördünmü? Bu nə deməkdir bilirsinizmi?
Okay, bu bir az yarmaq bildirin.
Əgər dediyi kimi, sütun 1 biz bir səhv var, line 9 file.c da deyən oldu
və onu səhv xəbərdarlıq və qaytarılması növü xəbərdarlıq gələn ki, deyir.
Bir mənada edir qaytarılması növü ilə gedir kimi görünür.
Biz qeyri-etibarsız funksiyası var olan bir funksiyası var deməkdir
ki, etibarsız qayıtmaq deyil.
A etibarsız funksiyası bu kimi görünür ki biridir:
etibarsız foo (), və qaytarılması növü etibarsız çünki etibarsız var,
deməkdir ki, biz burada bir şey olsa idi,
geri 1 kimi, bunun üçün bir compiler səhv almaq istiyorum.
Lakin, qeyri-etibarsız funksiyası var.
Bu halda bizim qeyri-etibarsız funksiyası axtarış funksiyası
bu bool bir qaytarılması növü var.
Bu nəzarət qeyri-etibarsız funksiyası sonuna çatır ki var zaman,
axtarış geri yoxdur, çünki bu.
Bu tipli bool bir şey qaytarılması deyil.
>> Biz düzeltmek bilər və uşaqlar nə düşünürsünüz
axtarış ismarıcları qayıtmaq lazımdır?
Hansı axtarış-u mənim geri dəyəri olmalıdır?
Ki sonunda bilər nə edir.
Charlotte, siz var hər hansı?
Doğru və ya yalan? >> True ya yalan.
Hansı?
Asma və dartma. Bilmirəm.
Asma və dartma? Nin cəhd edək.
Niyə geri yalan deyəcəksiniz? Bu böyük intuisiya var.
[Charlotte] Mən bilmirəm.
Bu mənim olacaq, çünki Biz bu halda saxta qayıtmaq olacaq
nədənsə siyahısı boş və ya iynə əgər
biz mövcud deyil aradığınız ki.
Sonra çox sonunda, əgər biz bu funksiyası doğru əvvəllər qayıtmaq yoxdur
biz həmişə bu funksiya nope, bu sıra deyil demək ki, bilirik.
Bu ot tayası ildə deyil.
Biz tərtib run əgər İndi biz bu qədər çəkmək olar mənə bu edirsiniz it-edək.
Biz tərtib və proqram run əgər İndi qurur.
Biz az tez almaq.
Mən hit varsa 4-uh-oh.
Bu bir şey çap bilmədi. Hər şey tamam bitən kimi görünür.
Biz daxil bu doldurmaq var
Biz bir az əvvəl pseudocode olan alqoritm danışdı.
Mənə görək, bu edirsiniz
və mən yenidən ki, alqoritm qoparmaq lazımdır.
Bu oğlan təşkil edək. Xeyr.
Yoxdur deyil.
Biz bu etməliyəm?
Bu kodu off başlamaq üçün yaxşı bir strategiya ola bilər?
Siz ortada bir sıra seçin var.
Biz bir sıra ortasında bir sıra seçin edirsiniz?
Hər hansı təkliflər?
2 bölünür [Tələbə] Strlen.
Strlen 2 bölünür. Bu böyük biri.
Diziler xüsusi növ Strlen işləri.
Serialların nə cür?
String diziler, xarakter Diziler.
Bu, biz müraciət etmək istəyirəm ki, konsepsiya ki, eyni cür var
biz simvol bir sıra yoxdur, çünki biz strlen istifadə edə bilməz.
Biz ints bir sıra var.
Amma strlen bizim üçün nə edir?
Siz bizim üçün alır bilirsinizmi?
[Tələbə] Strlen bizə uzunluğu olur.
Məhz, bu, uzunluğu olur.
Strlen bizim üçün serialın uzunluğu alır.
>> Necə ki, biz ikili axtarış proqram ki alıram?
Necə bir sıra uzunluğu almaq olar?
[Tələbə] Strlen?
Siz strlen ilə düzgün biçimli C simli serialın uzunluğu əldə edə bilərsiniz.
Bu problem olsa da, biz bir string array yoxdur ki.
Biz bu kodu geri baxmaq varsa, bu tam sıra var.
Biz nə qədər uzun bilirik?
[Tələbə] orada int l və ya bir şey kimi son nöqtə üçün ekvivalent biri varmı?
Həqiqətən yoxdur həyata çevirir və belə bir şəkildə, bu
C haqqında bilmək yalnız yaxşı olan şeyi bir,
bir sıra uzunluğu almaq üçün heç bir yolu yoxdur ki,
Mən sizə bütün array olsun.
Bu strings ilə işləyir səbəbi, səbəbi strlen işləri,
bir string düzgün biçimlendirilmiş əgər çünki,
bu çox sonunda xüsusi \ 0 xarakterli olacaq.
>> Əgər düzgün biçimli string varsa da təsəvvür edə
və \ 0 xarakter var ki, sonra bütün şey işləmir.
[Tələbə] Siz \ 0 əlavə edə bilərəmmi?
Biz bu halda ola bilər.
Biz \ 0 bir növ əlavə edə
və ya sonra xarakter signifying və bir növ ki, istifadə edin.
Lakin kifayət qədər işləməyə davam deyil
olan \ 0, bir char type çünki
və burada ints var.
Biz xüsusi bir dəyəri olsaydı başqa bir şey
-1 kimi bir sıra sonunda qeyd etmək
sonra biz tam seriallarda bir -1 saxlamaq heç bilər.
Biz vurulmuş olarıq.
Bu çıxır ki, uzunluğu almaq üçün yeganə yol
C bir sıra faktiki olaraq xatırlayıram edir
siz qurmaq və sonra sıra ilə onun ətrafında keçə zaman
belə ki, mən bir iş olacaq ki, bir funksiyası var zaman
integers və ya üzüb gedirdi bir sıra və ya iki və ya nə var,
Mən də, funksiyası serialın uzunluğu vermək lazımdır
və biz axtarış funksiyası burada etdik məhz budur.
Biz burada sıra keçmək zaman biz etdik, nə baxsaq
biz də uzunluğu, ölçüsü keçir.
Bu, sadəcə, biz burada bu dəyişən çağırıb ki, baş
Bu parametr və ya mübahisə.
Bu funksiyasının arqument siyahısı və ya parametr siyahısı adlanır
və bu da dəlillər və ya parametrləri deyilir.
İnsanlar müxtəlif vaxtlarda müxtəlif terminlərdən istifadə.
Mən bəzən onlara özümü ideya.
Bu, sadəcə belə ki, burada bu dəyişən eyni adlı baş
bu # burada müəyyən etmək.
Lakin onlar eyni şey deyilik.
Kapitallaşdırılması məsələ yoxdur.
>> Burada nə baxsaq, biz bəyan
biz nömrələri adlı etdiyiniz bizim int dizi,.
Biz bunu bizim # üst qədər müəyyən etmək üçün uyğun olan ölçüsü, təqdim etdik.
8 olacaq.
Və sonra biz sonra, aşağıdakı axtarış funksiyası aşağı zəng zaman
biz istenir etdik ki, biz axtarmaq istəyirsinizsə sayı keçmək
istifadəçi kazanılmış.
Biz, serialın bu nömrələri keçmək
və sonra da serialın ölçüsü keçməlidirlər
və sonra ölçüsü 8 dəyəri saxlanılır olur
və ya bu tam dəyişən adlı ölçüsü keçdi.
Biz serialın ölçüsü var.
Biz əvvəllər söhbət nə geri İndi əgər
Mən Missy biz lazım nə serialın uzunluğu almaq ki baxımından tərbiyə edirəm
və 2 ilə bölmək ki, bizə orta verəcək.
Bakalým.
Mən kimsə bu yazmaq və onların yer saxlamaq ola bilər?
Necə Leyla haqqında?
Mən sizə bu yazmaq edə bilərəmmi?
Siz serialın uzunluğu almaq və orta aldığı ilk yaz
və yeni dəyişən bu saxlamayın.
Mən sizə bir neçə saniyə verəcəyik. Hazır edirsiniz?
[Tələbə işitilemez]
Əlbəttə, mən orta siz hesablamaq ola bilər
axtarış funksiyası daxilində ot tayası array
olan ot tayası serialın uzunluğu istifadə edərək, hansı ölçüsü dəyişir?
Burada çətin bir şey yoxdur.
[Leyla] Just ölçüsü / 2 və yalnız
Və bu, saxlamaq və üst qədər burada Save düyməsini basın
və biz onu qoparmaq lazımdır.
Mükəmməldir.
Biz də gedin. Awesome.
>> Kimi, bu tərtib edəcək?
[Leyla] Xeyr, ali olmalıdır.
[Nate] Bəli, biz nə üçün lazımdır?
[Leyla] int orta və ya bir şey kimi.
Awesome. Bəli, ki, int orta = ölçüsü nin bunu bildirin.
Bu tərtib edəcək?
Bu comment silin və bu yol həyata almaq edək.
Bu barədə nə tərtib edəcək?
Biz tam bir şey məşğul deyilik
biz bu və ya bu kimi bir şey çap lazımdır.
Bəli, dəqiq.
Biz olunmamış dəyişən almaq lazımdır.
Nə bu barədə işləmək niyyətində deyil?
Mən sizə Sam bir şey dedi edirəm. Semicolons.
Bəli, mən o semicolons itkin alıram.
Bu müddəti kurs ərzində sabit şey olacaq.
Mən edəcəyik son şey hər tərəfdən bəzi ağ kosmik qoymaq lazımdır ki,
burada bu operator, biz bunu necə adətən ki, bəri
bizim style guide görə.
Biz serialın orta var.
Bizim alqoritm geri xatırlayıram İndi əgər,
biz orta mövcut dəfə idi ki, ikinci addım nə idi?
[Tələbə] daha çox varsa [işitilemez].
Bəli, biz müqayisə bir növ var və biz burada nə müqayisə olunur?
Siz daha çox əgər bildirib. Istinad ki, cümlə bu nədir?
Ki, orta daha əgər gəlir ki, sayı, sonra array qədər getmək?
Məhz, belə ki sayı gəldiyi zaman biz-
Bu iynə, biz, iynə müqayisə edirik
və biz iynə qarşı nə müqayisə olunur?
Iynə biz aradığınız nə olduğundan.
Biz orta almaq üçün müqayisə edirik.
>> Amma kontrol bir mənası yoxdur
iynə = orta əgər?
Bu mənada edirmi?
Heç razı deyiləm mi?
Əgər nin keçir edək (iynə == orta).
[Tələbə] printf siz aşkar etməyin.
[Nate] Printf ("Biz onu aşkar \ n");
Əks-Ben burada fərqli bir şey etməklə başlamaq niyyətindəyik.
Mən bütün vaxt hesabatları əgər ətrafında aşırma qoyulması başlamaq gedirəm
yalnız çünki biz daha stuff əlavə əgər
biz derleyiciler deyil.
Bəli, Sam. Siz bir nöqtə var.
Problem orta serialın bir mövqeyi təmsil edir
ancaq serialın bu vəzifədə dəyəri təmsil əldə edə bilərsiniz.
Böyük bir nöqtə var.
Hamı Sam nə eşitmək mi?
O, orta kimi olduğunu bildirib
serialın yalnız bir mövqeyini əks, lakin sıra faktiki element deyil.
Siz indi yazılı kimi kodu barədə düşünüyorsanız,
biz aşağı burada bu array baxsaq, hansı ki, 8 elementlər vardır
orta bu funksiyası olacaq dəyəri nədir?
[Tələbə] 4.
[Nate] 4.
Biz sayı 4 axtarmaq varsa -
və biz yalnız bu kodu run və burada bir az kədərli üz qoya bilər
biz bu kodu run it-əgər biz tapmaq, çünki
kimi yüklemek, sağ İndi, bina, mənə aşağı diyirləyin bildirin
və biz sayı 4 baxsaq,
biz bunu gördük, amma biz printf bəli bu əldə etməyib.
Bir səbəbi biz doğru qaytarmayıb ki,
lakin biz həqiqətən sayı 4 almısan?
Və Sam heç deyib.
Biz nə almısan?
Biz, həqiqətən, biz aşağı burada array baxsaq olan orta, aşkar
ki, biz aradığınız ki, index 4 element olacaq
23 edir.
>> Biz, həqiqətən, orta ki element alıram
və yalnız orta özü?
[Tələbə] Biz char və ya bir şey daxil olacaq?
Yalnız həyata maraq, nə olardı ki?
Bir az daha hazırlanması edə bilərəmmi?
Siz neçə mövqe çevirmək üçün
belə etmək var bir əlaqə-Mən bu char hesab edirəm, ancaq ola bilər.
Bəli, yaxşı bir nöqtə var.
Biz chars, bu simvol, bu konvertasiya vəzifələrin bir çox məşğul olduğunuz
ilk iki problem dəstləri.
Burada, bu demək olar ki, oxşar çıxır ki,
Bu mənada edir, bir string ərzində İTH karakter daxil.
Burada orta element daxil olmaq istəyirik.
Necə ki, biz etməliyəm?
Kevin, biz necə ki, bunu hər hansı bir təklif var?
Siz ot tayası edə, açıq bracket, orta, bracket bağlanıb.
Bizə ki, yaza edə bilərəmmi?
Burada qeyd edin və biz bu qoparmaq lazımdır.
Biz bu xətti 9 arıyorsanız
və biz orta üçün iynə müqayisə etmək istəmirəm ki, həyata edirik
əvəzinə, biz iynə müqayisə etmək istəyirəm
bizim ot tayası array ərzində mövqe orta olan element üçün.
Cool.
Biz də gedin.
Bəli, olduqca yaxşı görünür, əgər (iynə == ot tayası [orta]).
Biz bunu gördük.
İndi biz bir az-up kod we'll geri run əgər
ki, tərtib, bu çalışır, indi biz 4 baxsaq
İndi biz faktiki sayı 23 əldə edirik, çünki biz onu tapa bilmədi.
Biz dəyəri 23 əldə edirik ki, bizim iynə ilə müqayisədə ne var.
Lakin yaxşı. Bu düzgün istiqamətdə bir addım var.
>> Yəni biz çalışdığınız budur.
Biz sıra vəzifələrin qarşı iynə müqayisə çalışır deyilik
deyil array faktiki elementləri qarşı.
Bizim alqoritm növbəti addım indi yenidən baxmaq varsa,
Növbəti addım nədir?
Leyla artıq qısaca qeyd.
[Tələbə] taşımak üçün hansı yolla həll sonra və ya daha çox az və əgər oldu.
[Nate] Bəli, belə necə ki, biz nə olardı?
Bu versiya edirsiniz bəzi I'll qoymaq bilər,
və sonra edəcəyik ki, bəzi xətləri qoymaq varsa.
Bəli, Charlotte. >> Mən bir sual var.
Ilk şey, çünki 1 - bu orta olmamalıdır
əslində biz aradığınız xarakter deyil ki, biz 4 qoymaq əgər, dizine 0 olub?
Bəli, digər problem ilə-
nə bəlkə baş başa gedir ki, böyük bir tutmaq var
biz hərəkət saxlamaq və əgər biz ilkin tənzimləmək deyil?
Edirəm ki, biz bunu başa bilər nə tahmin daxil olmaq üçün çalışır
serialın 8 yerdə element,
bu halda mövcud deyil.
Biz faktı mühasibat bir növ etmək istəyirəm
bəzi sıfır endeksleme var.
[Charlotte] Bağışlayın, mən orta demək - kvadrat mötərizədə 1.
Biz bunu edə bilərsiniz.
Biz yalnız bir az bu məsələyə qayıtmaq lazımdır.
Sonra biz, faktiki loop almaq üçün başlamaq
Biz həqiqətən bu oyun minir görəcəksiniz ki var.
Olan zaman, biz bunu edə bilərsiniz, ancaq siz tamamilə doğru istəyirik.
Sıfır endeksleme biz hesab etmək lazımdır ki, təsir edəcək.
Bakalým.
>> Necə ki, daha çox və daha az-?
[Tələbə] Mən daha çox və daha az hissəsi artıq necə almaq.
Mən yalnız onu ot tayası orta dən az və ya daha çox olduğunu tapmaq əgər çap nə əmin deyil.
Burada saxlaya bilərsiniz nə I've-
[Nate] Bəli, siz var nə edirsiniz, biz onu qoparmaq lazımdır əgər.
Biz də gedin.
[Tələbə] Mən bilmirdim nə üçün sual işarələri qoyulur.
[Nate] böyük görünür ki,.
Biz hələ bilmirəm, çünki Burada sual işarələri var
biz olduqca hələ nə olacaq nə.
Biz nə-oops, biz bəzi aşırma bizə bütün funky var istəyirsiniz.
Biz bu aşırma düzəltmək lazımdır.
Biz də gedin.
Və biz, bizim alqoritmi görə, nə istəyirsiniz
biz iynə tapmaq yoxsa?
Iynə biz aradığınız nə az olduğu halda deyirlər. Kevin.
Yalnız sol yarım oldu.
Sağ, belə ki, biz deyir ki, burada bir comment qoymaq lazımdır "sol yarım oldu."
Iynə orta olan ot tayası artıq olduğu halda, biz nə istəyirik?
[Tələbə] Sonra sağ yarım oldu.
Sağ yarım baxın, "sağ yarım oldu."
Deyil, çox köhnə.
OK, bu anda, hər şeyi olduqca yaxşı axtarır.
Yazılı kimi kodu ilə problem nədir?
[Tələbə] Siz yarıya indirir üçün endpoints yoxdur.
Sağ, biz yarıya indirir üçün endpoints yoxdur.
Biz də yalnız bu dəfə keçmək gedir.
Biz yalnız bir orta baxmaq olacaq.
Ya element var, və ya deyil.
Bu başa çatdırmaq üçün, biz təkrar bir növ etmək lazımdır.
Biz tapmaq qədər təkrar saxlamaq lazımdır ki,
biz aşağı daralmış və nəhayət, gördük çünki ya element var ki,
və ya orada biz hər şeyi nəzərdən etdiyiniz deyil, çünki
serialın müvafiq yarıya indirir və heç bir şey yoxdur ki, aşkar.
>> Biz bu təkrar gedən var zaman, biz istifadə edir?
[Tələbə] A loop.
Loop bir növ. Bəli.
[Tələbə] biz do-isə loop etmək və bu isə o yoxdur və ola bilər
iynə edirəm ki, ilə davam edildi əmin bərabər Ben deyil deyil.
Lakin cür analoji ki, kimi uzun bərabər dəyəri ki, istifadəçi daxil deyil kimi.
Bəli, belə nin görək, necə bu özü yazmaq bilər?
Siz üzrə do-isə loop istifadə edək bildirib.
Başlanğıc harada edir?
Sağ ölçüsü / 2 sonra [Tələbə].
[Nate] Okay, biz nə edəcəyik?
Biz sonra isə doldurmaq lazımdır.
Biz nə edəcəyik?
[Tələbə] biz əgər hissəsi bütün işçilərinin etmək istəyirsən?
[Nate] bütün bu məhsulları etməyin, böyük.
Copy və paste.
Oh, man.
Görmək Gəlin, bu işləri biz nişanı bu artıq əgər.
Gözəl.
Uşaqlar var belə Okay və biz bu edin.
Bütün hüquqlar və biz bunu edəcəyik isə-
sonra isə isə vəziyyət nə idi?
[Tələbə] iynə bərabər deyil baxmayaraq, belə ünlem kimi.
Amma hələ dəqiq əmin deyiləm.
[Nate] Bəli, bu bunu bir yoludur.
Sam, bir yorum var?
[Sam] Mən video baxdı mən yad,
Biz bunun üçün pseudocode etdi zaman mən kimi biri bir ekran etdi
max və min arasında əlaqələr var idi.
Mən bunu max min daha heç əgər daha az kimi bir şey idi.
Var.
[Sam] Yoxsa max kimi min və ya bir şey az deyil əgər kimi,
ki, hər şey axtarış etdiyiniz deməkdir çünki.
>> Bəli, belə ki, nə max və min istinad edilmişdir kimi səs edir?
Dəyişdirmək edir ki, [Sam] Dəyərlər ki integers
biz orta qoymaq yerləşir nisbətən.
Exactly.
[Sam] Bu noktada, bu [işitilemez] maksimum və min hesablamaq. Olacaq
Orta bu max və min bir fikirdir.
Ki, insanlar bir mənası varmı?
Biz necə biz bu iteration nə olacaq baxaraq başlamaq olsaydı,
Əgər biz-isə loop bir növ istifadə etmək istəyirəm ki, tamamilə haklýsýn.
Biz bu serialın spot da neler yadda Lakin hərhalda
və nə həqiqətən baş-Ben üzərində yazmaq olacaq burada
binar axtarış ilk iteration, biz var-
Əvvəldə işarə b və e-istifadə gedirəm.
Və sonra bizim serialın sonu.
Biz əvvəllərində burada 4 sağ bilirik ki,
və biz son 108 olduğunu bilirik.
Biz sayı 15 aradığınız söyləyin.
Bunu ilk dəfə kimi biz, əvvəllər gördüm
orta 16 və ya 23 olacaq
biz şeyi hesablamaq necə asılı olaraq.
Bərabər ortada ayırıcı ildən bizə bu yer verəcək
16 və 23 arasında, biz bərabər onu bölmək bilməz
və ya bölmək və əsl orta əldə.
Biz 16 baxmaq lazımdır.
Biz "biz aradığınız ki, Hey, 16> 15." Reallaşdırmaq lazımdır
Sonra serialın sol yarım baxmaq
nə edirik çıxacağıq discarding edir
Bütün bu üst hissəsi
və "OK, indi bizim son nöqtə burada olacaq." deyərək
Bizim loop növbəti iteration, indi bu array geçirdiğiniz,
səmərəli, çünki indi bu hissəsini ləğv edərək,
biz əvvəli və sonu arasında fərq olduğu üçün orta alaraq edirsinizsə,
biz orta 8 tapmaq
olan biz onda biz aradığınız sayı ilə bağlı olduğu görmək 8 test edə bilərsiniz,
15, 15 böyük olduğunu tapmaq
belə ki, siyahıda hüququ hissəsi hərəkət üçün
biz insanlar istəyirik və biz bunu edə bilərsiniz, çünki olan bilirik.
Biz onu tapa yerləşir sağ hissəsi olacaq bilirik ki,
lakin kompüter biz edəcəyik nə biz, həqiqətən, will ki, bilmir
Bu qədər getmək, indi əvvəlində və sonunda var
Eyni ləkə var, orta o nöqtədə siyahısında yalnız sayı olur belə
15, və biz bunu gördük.
Ki, bu bütün max və min notation gedir yerləşir bəzi işıq salmaq mu
anlamaq üçün serialın endpoints takip saxlanılması
şeyi daraltmak üçün necə?
>> Bu artıq 15-ə bərabər olmasa nə olardı?
Biz əvəzinə, 15 və aradığınız, bu da 16 idi?
Biz Oh, bu çox deyil ", deyə ediyorum.
Biz sol geri istəyirik. "
Və biz, sağ üçün e hərəkət istədiyiniz
da olan nöqtə ziddiyyətli olardı ki, son nöqtə var.
Bu bir daha elementləri üçün axtarış edə bilməz
indi biz son nöqtə və bizim əvvəlində point, çünki
bizim max və min, indi Çevrilmiş olunur.
Biz bütün array vasitəsilə axtarış. Biz bir şey tapa bilməz.
Yəni Okay, bu alqoritm dayandırmaq olacaq ", demək istəyirəm olan nöqtə var.
Biz bir şey aşkar olunmayıb. Biz burada deyil bilirik. "
Bu necə olacaq?
[Tələbə] tam olaraq nasıl kompüter sonunda keçid edir?
Necə sonunda əvvəl bitirmək deyil?
Sonunda əvvəl başa
çünki biz bunu hər vaxt olacaq ki, riyaziyyat.
Biz mübadilə yolu siz ilk dəfə baxsaq, biz bu mübadilə etmək deyil
biz 4 əvvəlində və sonunda olduğu
bütün 108 aşağı yol və orta, 16-da, demək -
Biz 15 aradığınız 15-əgər mən bu geri sıfırlamak üçün gedirəm,
biz 16 checked zaman nə etdi ki, bilirdi və daha çox olduğunu gördüm
və siyahıdan bütün sağ hissəsi ləğv etmək istədi
biz bunu vəsiyyət burada bu e hərəkət olduğunu gördüm.
Səmərəli, e orta əvvəl bir köçürülüb olmuşlar.
Eyni zamanda, biz alqoritmi bu iteration zaman etdi
və orta, 8 idi
biz 8 <15, biz b hərəkət etmək istəyirdi ki,
orta keçmiş biridir.
İndi, əvvəlində və sonunda bu 15 birlikdə həm var.
>> Bəzi digər dəyər deyil, 15, axtarmaq üçün baş edilmiş isterseniz
və ya bu 15 əvəzinə 16, olsaydı
biz e biz orta əvvəl bir hərəkət etmək istəyirəm ki, olardı.
İndi e b az Çevrilmiş olardı.
Biz həqiqətən bu alqoritm kodlaşdırma başa necə vasitəsilə gəzmək edək.
Biz bu orta hesablanması olsun ki, bilirik.
Biz əvvəlində və serialın sonunda izləmək istəyirəm ki da bilirik
bizim cari serialın biz anlamaq bilər
siyahısını bu sol yarısı və siyahısı sağ yarım edir. Şəhristanı
Biz başlamaq və bitirmək ya ilə bunu
və ya biz onlara min və max zəng edə bilərsiniz.
Mən bu zaman başlamaq və bitirmək istifadə edəcəyik.
Biz burada nümunə aşağı geri baxmaq biz başlamaq zaman, əgər,
bizim başlanğıcında təbii olaraq, serialın çox əvvəlinə müəyyən edilib.
Nə indeksi bu idi? Bizim nə etmək başlamaq lazımdır?
Daniel.
[Daniel] ot tayası [0].
[Nate] Bəli, biz ot tayası bərabər müəyyən edə bilər [0].
Bu problem olsa da, bu, bizim ilk element mövqeyi deyil verir ki.
Bu, bizim ilk mövqe ilk element və ya faktiki dəyəri indeksi verir.
[Tələbə] Bu .20 çevirmək olacaq?
[Nate] Bu edəcəyik-də, bu, hər hansı bir konvertasiya etmək olmaz.
Nə edəcəyik, bu başlamaq bir 4 saxlamaq olacaq
sonra başlamaq qarşı müqayisə etmək çətin olacaq
başlamaq, 4 dəyəri keçirilməsi, çünki
ki, bizim serialın başlanğıcıdır
amma sıra göstəriciləri izləmək istəyirəm
kimi dəyərlərə qarşı çıxdı.
Biz həqiqətən kimi, bir 0 istifadə edəcəyik.
Serialın-Charlotte sonuna bir az əvvəl bu gətirdi.
Biz nəzərə sıfır endeksleme almaq lazımdır edir.
>> Charlotte, serialın sonunda nə var?
Sonuna indeksi nədir?
[Charlotte] Ölçüsü - 1.
Bəli, və biz ölçüsü istifadə etməli?
Biz kapital ölçüsü və ya kiçik ölçüsü istifadə etməli?
Capital ölçüsü.
Bu halda, biz kapital ölçüsü istifadə edə bilər.
Biz bu funksiya portativ olmaq istəyirdi
və digər proqramlar bu funksiyadan istifadə
biz, həqiqətən, kiçik ölçüsü istifadə edə bilərsiniz.
Bu çox gözəl var.
1 - Amma Charlotte biz ölçüsü istəyirəm ki, tamamilə haqlıdır.
Bu point-
[Tələbə] bu böyük ölçüsü istifadə edə bilərsiniz ki, necə?
Biz böyük ölçüdə istifadə edə bilər ki, necə?
Bu # müəyyən çıxır ki, həqiqətən,
Bu mənada edir əgər başlıq altında kimi bir mətn tapmaq və dəyişin.
Siz kodu tərtib edildikdə, preprocessing mərhələsi
bu kompilyatorunun, fayl keçir
və o, hər yerdə paytaxt ölçüsü yazdıq ki, görünür,
və yalnız kimi, 8 ilə sözün mətn əvəz edir.
Bu mənada, bu, dəyişən çox fərqli.
Bu yaddaş heç bir yer deyil.
Bu sadə mətn dəyişdirmək oyun var.
Bu halda, biz ölçüsü istifadə olacaq.
Burada biz təkrar bir növ, nə istəyirsiniz
və biz do-isə loop ilə doğru yolda deyilik.
Bir vəziyyət artıq olmayan qədər, bir şey etmək istəyirəm
biz əvvəllər gördüyümüz kimi, biz gördük ki, vəziyyəti
biz sonuna istəmirəm ki, həqiqətən idi
bu başlamaq daha az olacaq.
>> Bu, bizim dayandırılması şərtdir.
Bu baş verərsə, biz kimi dayandırmaq və bəyan etmək istəyirəm "Hey, biz bir şey aşkar olunmayıb."
Bu ifadə, biz loop bir növ istifadə etmək istəyirəm.
Bu halda, bir loop üçün, bir müddət loop bir do-isə loop ola bilər?
Biz burada bir do-isə loop var.
Əgər yanaşma kimi uşaqlar varmı?
Biz fərqli bir yanaşma cəhd etməlidir düşünürsünüz?
Kevin, hər hansı bir fikir?
Biz maksimum çünki Biz isə loop ola bilər
başlanğıc zaten da min daha çox olardı.
Bəli, nə etmək lazımdır ki, heç bir başlatma var belə.
Əgər bir şey başlamaq zaman o nə-isə loops böyük
sonra burada isə test əvvəl
biz də başlayacaq və son reinitializing saxlamaq fikrində deyilik bilirik ki,
loop hər tur.
Biz onlara başlamaq istəyirəm bilirik ki, sonra bizim şərt oldu.
Bu halda, mən əslində sadə isə loop ilə gedəcəyəm.
Bu do-isə loops ədalətli seyrek istifadə çıxır.
Yerlərdə bir çox belə yoxdur öyrətmək deyil loops edir.
Onlar istifadəçi daxil idarə üçün yaxşı istəyirik, biz bu günə qədər onların bir çox gördük.
Amma normal və loops bir çox ümumi edir.
Bu şərt kimi yazılı çıxır ki,
həqiqətən bizə çox yaxşı və nə ki, deyil?
Pardon, mən sizin adı bilmirəm.
Mən Jerry edirəm. >> Bağışlayın?
Bu B-O-R-U-I var.
Oh, tamam.
Mən siyahıda siz görmürəm.
Oh, bu mənada edir, çünki-oh ki, var.
Siz nəzərdə tutulmuş bu isə loop işləməyəcək bilər niyə bir fikir var
kimi şərti ilə yazılı?
Siz onu sonra bütün məhsulları istədiyiniz kimi [Jerry] Siz demək the-?
Bəli, belə ki, biri.
Biz tamamilə doğru olan isə loop, bu məhsulları bütün qoymaq üçün ola bilər.
Bir az daha problemli olan digər şey olsa, bu vəziyyət iş deyil ki.
[Tələbə] Siz çevirmek lazımdır.
Sağ, belə ki, bu vəziyyət heç əvvəlcə biz bu barədə söhbət yolu doğru olmayacaq.
Sonuna <başlamaq qədər, bir şey etmək istəyirəm
lakin biz isə bir şey etmək istəyirəm
≤ sonunda başlayacaq.
>> Məntiqi ki, bərpa orada var.
Mən bu səhvlər hər zaman qəbul günahkar deyiləm.
[Tələbə] Nə üçün daha az və ya bərabər olmalıdır edir?
Biz var ki, işin Yadınızdadırsa, çünki
yerləşir, orada yalnız bir element idi və biz aşağı idi
və biz sıra yalnız 15 axtarır?
Və əvvəlində və sonunda eyni element idi.
Biz bu halda idarə əmin etmək istəyirəm.
Biz daha düz az idi, əgər
biz yalnız 2-element array aşağı əldə edə bilər.
Sonra biz ki element olsaydı, biz tapa heç vaxt ediyorum ki, ötən element aşağı almışdır.
Siz deyirdilər kimi İndi burada, biz tam olaraq edə bilərsiniz.
Biz bizim isə loop ortasında daxil stuff plopping başlaya bilərsiniz.
Biz orta ci Plop bilərsiniz.
Hesabatları, əgər Biz bütün bu edə bilər
onlara bu do-isə loop çıxarmaq,
ildə Plop onlara
bir az qədər şeyi təmizləmək
və mən irəli getmək və bu versiya saxlaya bilərsiniz.
Və bu nöqtədə biz olduqca yaxın əldə edirik.
Sam.
1/2 - Mən də int orta = ölçüsü var edirəm.
1/2 - bu, ölçüsü var.
Biz xətti dəyişdirmək lazımdır başqa bir şey varmı?
Bu yaxşı tutmaq idi.
>> Ölçüsü nə edir? Biz heç ölçüsü dəyişir?
Bu kimi line saxlamaq üçün, biz ölçüsünü dəyişmək lazımdır.
Biz ölçüsü biz loop üçün ətrafında getmək hər dəfə dəyişmək lazımdır.
Lakin, biz yalnız bir az əvvəl, məsələn, keçən zaman xatırlayıram
və biz 4 başlanğıcı idi
və sonunda 108-dən artıq bütün yol?
Necə orta hesablamaq idi?
Biz ölçüsü istifadə?
Yoxsa başlamaq əvəzinə son istifadə?
Bu sonu əvvəlindən arasında fərq var.
Məhz, və məhz mən Charlotte ki yazmaq lazımdır?
Yalnız son - başlayacaq.
1 - Siz nə etmək lazımdır deyil
1 sonunda daxil və artıq başlamaq edilmişdir - bu çünki.
[Nate] Böyük, siz tamamilə doğru istəyirik.
Çünki 1 - 1 - daxil edilmişdir Biz nə yoxdur
və biz son dəyişən başlamaq zaman düşür.
>> Mən bu xətt mənada var syntactically etmək lazımdır başqa bir şey varmı?
[Tələbə] Plus. >> Başlamaq Plus başlayır?
Sonda [Tələbə].
Yalnız yarım uzunluğu hesablanır, çünki.
Siz başlamaq əlavə etmək lazımdır.
[Nate] Bu bizim üçün nə hesablamaq olar?
Biz loop bu ilk iteration haqqında son barədə düşünüyorsanız,
son durum indeksi 7 olacaq.
Başlamaq mövqe 0 edir.
Unutmayın, biz aradığınız
mövqe 3 və ya 4 mövqe.
Biz bu riyaziyyat baxsaq, yalnız bir az daha hiss etmək
burada nömrələri qoymaq, biz, 7, 0 mövcut
belə 7 - 0, sonra / 2
tam bölgüsü 3 ki, edir.
Sonra sonra başlamaq geri əlavə etmək lazımdır?
Biz bu halda deyil.
Başlamaq 0 çünki ilk iteration, bu, gözəl olacaq.
Amma biz irəliləyiş kimi, biz lazım olan bütün yalnız həqiqətən etmək
sonu - başlayacaq / 2.
Var bir başqa oyun burada və məhz üstün biridir.
[Tələbə] biz parantez lazımdır?
[Nate] Məhz, biz bu parantez qoymaq yoxsa çünki ki,
sonra bu xətt əvəzinə təfsir olunacaq
(sonu) kimi - (başlayacaq / 2), biz mütləq istəməyən.
O üstün qaydaları üçün Watch out.
[Tələbə] Nə üçün son deyil + başlayır?
Niyə bu son deyil + başlayır?
[Tələbə] Nə o deyil?
Nə + olar?
Mən haklýsýn edirəm.
[Tələbə] Əgər orta Çünki?
[Nate] Axırıncı + başlamaq, siz tamamilə doğru istəyirik.
Wow, mən tamamilə goofed. Haklýsýn.
Biz minus edirdilər, biz da geri başlamaq əlavə etmək istəyirəm ki,
Bu halda, siz, biz iki orta etmək istəyirəm ki, çox sağ edirik
biz onlara çıxmaq fərqli olaraq, əlavə etmək istəyirəm.
[Tələbə] Siz son əgər O, həmçinin iş olardı - başlayacaq / 2 + başlayır.
Biz-Mən inanıram əgər edərdim.
>> Məsələn, biz başlamaq axtarır, əgər,
və biz burada artıq keçdikdə
15 edir.
İndi başlamaq mövqeyi 2 edir.
Axırıncı mövqe 7 edir.
Biz onlara çıxmaq, biz 5 almaq.
2 ki, uçurum, biz 2 almaq.
Və sonra biz 2-geri əlavə
və 4-cü mövqe bizə olur
burada olan olan orta edir.
[Tələbə] biz wrapping qayğı lazımdır?
Nə mənada biz wrapping qayğı lazımdır?
Əgər məbləğ ya arasında fərq
bunu necə asılı olaraq hətta sayı deyil.
Sonra kompüter onu 2,5 zaman olub qarışıq olur;
Siz sol və ya orta olan müəyyən etmək üçün sağa hərəkət edirsiniz?
Var.
Ki, tam bölgüsü ilə çıxır
biz heç bu üzən point nömrələri almaq yoxdur.
Biz decimal almaq heç vaxt.
Bu tamamilə ləğv edir.
Bir kompüter iki int dəyişənlərin bölmək varsa
və, bir 7, digər 2
Bir nəticə kimi 3,5 almaq deyil.
3 olacaq.
Qalan atılır olacaq, belə ki, səmərəli var yuvarlaqlaşdırma-
uşaqlar riyaziyyat ilə tanış olduqda bir dəyirmi deyil, mərtəbə,
burada tamamilə decimal imtina
və siz mahiyyətcə yaxın onu aşağı truncating edirik
yaxın bütün nömrəsinə bütün mövqe.
[Tələbə] 7 elementlər bir sıra varsa Lakin sonra problem var
sonra avtomatik olaraq yerine 4-orta 3-cü element həyata edir.
Necə ki, məşğul edirsiniz?
Bu problem, çünki biz 7 bir sıra olsa,
əvəzinə 4 3-cü seçmək olardı.
Bir az daha izah edə bilərsinizmi?
[Tələbə] Çünki sonra 4-cü element 7 elementlər varsa,
hüququ, orta olardı?
Baxmayaraq, dizine sıfır olan haqqında Sizin şərhiniz saxla.
[Tələbə] Bəli, belə mövqe 3. Yəni orta olardı.
Bəli.
Oh, tamam. Mən sizə demək nə oldu.
Biz bu bütün anlayışı istifadə almaq kimi, qəribə növü var
ondalık kurtulmanın.
Böyük bir nöqtə var.
Bu bitirmək edək.
Biz orta hesablanmış etdik.
>> Biz iynə orta dəyərinə bərabər olub olmadığını görmek üçün test edirik.
Biz onu aşkar ki, çap edirik, lakin həqiqətən, biz bu vəziyyətdə nə istəyirsiniz?
Biz gördük ki, biz zəng biz onu aşkar bildirmek istəyirəm.
Biz boolean tipli funksiyası olan bir funksiyası var.
Getmək üçün hazır ki, biz funksiyası zəng üçün siqnal yolu
biz "Hey, bu doğrudur.", deyə edilir
Biz, Kevin ki edərdiniz?
Siz baş noddede edirik. >> [Kevin] et qaytarılması doğru.
[Nate] Məhz, doğru geri.
İndi, bərabər deyil, əgər biz sol yarım baxmaq olar?
Hər hansı bir fikir?
Stella, hər hansı bir fikir?
Siz sonuna yeni vəzifəyə təyin etmək lazımdır.
Bəli.
Sonunda - Beləliklə, biz orta mövqeyi var.
Böyük.
Biz sonuna yeni vəzifəyə təyin etmək lazımdır
sol yarım baxmaq.
Bu Ü əvvəl danışdıq nə idi
Mən bu misal geri davam.
Mən burada başlamaq və sonra sonunda burada bütün yol var.
>> Biz 15 arıyorsanız Yenə və orta, 16 edir
və biz Bağışlayın, 16 böyükdür "həyata keçirir.
Biz sol yarım hərəkət etmək istəyirəm. "
Biz, sonra 15-sonuna hərəkət olacaq
və biz orta bir üz alaraq bunu
və yeni sonuna kimi yaradılması.
Biz sağ yarım baxmaq istəyirsinizsə Eyni zamanda, necə ki, biz nə olardı?
Siz bir fikir var?
[Tələbə] Siz + 1 orta başlayacaq seçin.
[Nate] Böyük.
İndi halda, biz bir şey tapa olmayan
bizim üçün qəbul qayğı almaq deyil?
Daniel, bizim üçün qayğı almaq deyil?
[Daniel] saylı
[Nate] biz bütün array vasitəsilə və biz bir şey tapmasanız,
yerləşir ki, qayğı olacaq, ya ona qayğı lazımdır?
[Daniel] Bu isə vəziyyəti.
[Nate] Bəli, isə vəziyyət tam.
Biz bir şey tapmasanız, əgər bütün array keçir qayğı olacaq.
Bu isə loop başa çatacaq.
Biz bu vəziyyəti qarşılaşdıqları heç vaxt
və biz yalan ola bilər.
Biz də bu kimi burada bu halda tərk edə bilər
bu bəyanatı doğru olunarsa, çünki
və funksiyası, qayıdacaq
və biz bu nöqtədə abort bu funksiya mahiyyətcə rəftar
biz doğru dönürlər.
Amma nə bu struktur ilə burada olur?
Bu tamamilə iş, və ya orada bəzi məntiqi qüsur var mı?
>> Orada bəzi məntiqi qüsur qurmaq oldu yolu ilə var.
Bu nə ola bilər?
[Tələbə] niyə lazımdır - və + 1s?
Bu yeni sol yarısı və sağ yarım olmaq üçün array yaradır.
[Tələbə] Amma nə olmadan bunu edə bilər - 1s və + 1s?
[Nate] Biz orta bərabər müəyyən edə bilər?
Nə haqqında problematik ola bilər?
[Tələbə] Mən artıq yoxlanılmış ki, bir dəyər kontrol edirik, çünki səmərəsiz var danışarlar.
[Nate] Məhz, belə Sam tamamilə haqlıdır.
Siz son qoydu və orta bərabər başlamaq edin
əvəzinə - 1 və reflectively + 1,
gələcəkdə müəyyən məqamda yenə orta yoxlanılması çıxacağıq.
[Tələbə] Mən kimi bir şey var idi sonra pset başlamış və
Ü Mən + 1 unuttum, və sonsuz loop yapışdırılmalıdır olmuşlar.
Sağ, bir nöqtədə, çünki siz başlamaq və bitirmək almaq üçün gedir heç etdiyiniz
həqiqətən üst-üstə üçün.
Cool.
Var daha bir məntiqi qüsur var ki, bu mütləq olmalıdır ki,
bir başqa varsa.
Nə ola bilər?
>> -Əgər siz, Kevin görmək bir başqa deyil əgər səbəbi nədir?
[Kevin] Bəli, siz son nöqtəsi dəyişən etdiyiniz çünki.
[Nate] Exactly.
Biz son nöqtə dəyişən edirik
və bu-we'll kimi yazılı əgər arasında boşluq etmək
bu halda yoxlayacaq.
Bu müvəffəqiyyətlə Bu halda, bu funksiya abort həyata olacaq.
Sonra, bu sonrakı halda kontrol
bu başarılı Əgər, bu, son nöqtə ayarlar
və sonra davam və bu halda yoxlayacaq.
Ancaq bu nöqtədə, biz yoxlanılması davam istəmirəm.
Xoşbəxtlikdən, biz, burada orta yenidən deyil
və bu halda uğur qazanmaq deyil ki, bilirik.
Amma biz mütləq başqa qoymaq istəyirik orada əgər
baxmayaraq ki, güc-bu halda
biz orta düzəliş deyilik ildən ki, fərq edə bilər?
Xeyr, çünki bu hallarda bütün deyil.
Yenə mənim pis.
Biz, hesab edirəm ki, bu başqa əgər ehtiyac yoxdur.
Biz bir cəhd və run və nə görmək verə bilər.
Tikinti, bir səhv meydana gəldi.
Mən burada bu b və e-nin tərk çünki yəqin.
Mən üst həmin qədər bir daha var?
Bu kimi baxmaq deyil.
Biz kiçiltmək qurmaq,
orada gedir, belə ki, indi biz, 15 axtarış əgər
bəli.
Mənə daxil zoom edək
15, bəli. Biz daha çalıştırabilirsiniz.
, Mənbə kodu yükleme, tikinti çalışır.
Biz, 13 kimi bir şey üçün axtarış edə bilərsiniz
və biz çap bir şey, belə ki, bu tapıntı deyil deyil bizim üçün.
Bizim siyahısına deyil, çünki O, böyük deyil.
>> Biz həyata indi.
Bu həftə üçün olacaq.
Qoşulması və sonra görmək üçün təşəkkür edirik.
>> [CS50.TV]