ROB Bowden: Sveiki, es esmu Rob Bowden, un parunāsim par quiz0.
>> Tātad, pirmais jautājums.
Tas ir jautājums, par kuru jums nepieciešams kodu skaitu
127 bināro spuldzes.
Ja jūs vēlētos, jūs varētu darīt regulāri pārveidi
no bi-- vai no komata bināro.
Bet tas ir iespējams, gatavojas aizņemt daudz laika.
Es domāju, jūs varētu izdomāt, ka, OK, 1 ir tur, 2 ir tur,
4 ir tur, 8 ir tur.
Vieglāk veids, 127 128 mīnus viens.
Ka visvairāk pa kreisi spuldze ir 128-bit.
Tātad 127 ir patiešām vienkārši visu citu spuldzes,
jo tas ir visvairāk pa kreisi spuldze mīnus 1.
Tas ir tas, par šo jautājumu.
>> Jautājums viens.
Tātad ar 3 bitiem jūs varat pārstāv 8 atšķirīgas vērtības.
Kāpēc tad ir 7 lielākais nav negatīvs decimāls skaitlis jūs varat pārstāvēt?
Nu, ja mēs varam tikai pārstāv 8 atšķirīgas vērtības,
Tad ko mēs gribam būt pārstāvot ir 0 līdz 7.
0 aizņem vienu no vērtībām.
>> Jautājums divi.
Ar n biti, cik atšķirīgi vērtības var jūs pārstāvat?
Tātad, ar n biti, jums ir 2 iespējamās vērtības katram bit.
Tātad mums ir 2 iespējamās vērtības pirmais bit, 2 iespējamās vērtības
uz otro, 2 iespējams, par trešdaļu.
Un tā ka ir 2 reizes 2 reizes 2, un galu galā atbilde ir 2 līdz n.
>> Jautājums trīs.
Kas ir 0x50 binārā?
Tāpēc atcerieties, ka heksadecimālo ir ļoti vienkārši pāriet uz bināro.
Tātad šeit, mēs vienkārši nepieciešams, lai apskatīt 5 un 0 patstāvīgi.
Tātad, kas ir 5 binārā?
0101, tas ir 1 bit un 4 bitu.
Kas 0 binārā?
Nav grūts.
0000.
Tik vienkārši salikt tos kopā, un tas ir pilns numurs bināro.
01010000.
Un, ja jūs vēlaties, jūs varētu pacelšanās kreisās malas nulle.
Tas ir nozīmes.
>> Tātad alternatīvi, kas ir 0x50 decimālā?
Ja jūs vēlētos, jūs could-- ja jūs esat ērtāk ar bināro,
jūs varētu pieņemt, ka bināro atbildi un pārvērst kas stājas aiz komata.
Vai arī mēs varētu tikai atcerēties ka heksadecimālo.
Tā, ka 0 ir ar 0-th vietā, un 5 ir 16. līdz pirmajā vietā.
Tātad šeit, mums ir 5 reizes 16 līdz Pirmais, plus 0 reizes 16 līdz nullei,
ir 80.
Un, ja jūs paskatījās nosaukums uz jautājumu,
tas bija CS 80, kas bija sava veida mājienu uz atbilde uz šo problēmu.
>> Jautājums pieci.
Mums ir šī Scratch skripts, kas ir atkārtojot 4 reizes zemesriekstu sviestu želejas.
Tātad, kā mēs tagad kods, C?
Nu, mums ir here-- daļa treknrakstā ir tikai daļa jums bija īstenot.
Tātad mums ir 4 cilpas, kas ir looping 4 reizes, printf-ing zemesriekstu sviestu želejas,
ar jaunu līniju, kā problēma pieprasa.
>> Jautājums seši, vēl Scratch problēma.
Mēs redzam, ka mēs esam uz visiem laikiem cilpu.
Mēs sakot mainīgā i un tad palielināšanai i ar 1.
Tagad mēs vēlamies darīt, ka C. Ir vairāki veidi, kā mēs varētu būt izdarījusi.
Šeit mēs gadījās kodu mūžīgi cilpa kā brītiņa (patiess).
Tāpēc mēs paziņojam mainīgā i, tikai tāpat mums bija mainīga i Scratch.
Deklarē mainīgo i, un uz visiem laikiem kamēr (patiess), mēs sakām, ka mainīgo i.
Tātad printf% i-- vai jūs varētu esat izmantojis% d.
Mēs sakām, ka mainīgo, un Tad pieauguma to, i ++.
>> Jautājums septiņi.
Tagad mēs vēlamies darīt kaut kas ļoti līdzīgs Mario dot c no problēmas iestatīt vienu.
Mēs vēlamies, lai drukātu šos hashtags, mēs vēlamies, lai izdrukātu piecas
ar trīs taisnstūra šo hashes.
Tātad, kā mēs gatavojamies darīt?
Nu, mēs jums viss ķekars kodu, un jūs vienkārši
jāaizpilda drukas režģa funkciju.
>> Tātad, ko tas PrintGrid izskatās?
Nu tu esi garām platums un augstums.
Tāpēc mums ir ārējā 4 cilpa, kas ir looping
visas no rindas šis režģis, ka mēs vēlamies, lai izdrukātu.
Tad mums ir savstarpēji ligzdotu 4 cilpu, tas ir drukāšana katrā kolonnā.
Tātad katrā rindā, mēs drukāt katra kolonna, viena hash.
Tad beigās rindas mēs drukāt Viena jauna līnija, lai pārietu uz nākamo rindu.
Un tas ir tas, lai visā tīklā.
>> Jautājums astoņi.
Funkcija, piemēram, PrintGrid esot ir blakus efekts, bet ne peļņu
vērtība.
Izskaidrot atšķirību.
Tāpēc tas balstās uz jūs atcerēties kāda blakusparādība ir.
Nu, atgriešanās value-- mēs zinām PrintGrid nav
ir atgriešanās vērtību, jo tieši šeit tā saka par spēkā neesošu.
Lai kaut kas atgriež spēkā neesošu nav īsti atgriezties neko.
Tātad, kas ir blakus efekts?
Nu, blakusparādība ir kaut kas veida saglabājas
pēc funkciju galiem kas bija ne tikai atgriezies,
un tas bija ne tikai no ieguldījumiem.
>> Tā, piemēram, mēs varētu mainīt globālo mainīgo.
Tas būtu blakusparādība.
Šajā konkrētajā gadījumā, ļoti svarīgi blakusparādība
drukā uz ekrāna.
Tātad tas ir blakusparādība ka PrintGrid ir.
Mēs drukāt šīs lietas uz ekrāna.
Un jūs varat iedomāties ka kā blakusparādība,
jo tas ir kaut kas pastāv arī pēc šī funkcija beidzas.
Tas ir kaut kas ārpus Šīs funkcijas, kas galu galā
tiek mainīts, saturs no ekrāna.
>> Jautājums deviņi.
Apsveriet programmu zemāk, uz kuru līniju numuri
ir pievienotas labad diskusijas.
Tātad šajā programmā, mēs esam tikai zvanot GetString, tā glabāšanu
šo mainīgo lielumu s, un pēc tam drukājot šo mainīgo s.
OK.
Tātad, paskaidrojiet, kāpēc līnija viens ir klāt.
#include CS50 dot h.
Kāpēc mums ir nepieciešams #include CS50 dot h?
Nu mēs aicinām GetString funkciju,
un GetString ir definēts ar CS50 bibliotēkā.
Tātad, ja mums nebūtu #include CS50 dot h,
mēs varētu iegūt, ka netieši deklarāciju no GetString funkciju kļūdu
no kompilatoru.
Tāpēc mums ir nepieciešams, lai iekļautu library-- mums ir nepieciešams iekļaut header failu,
vai arī kompilators nebūs atzīt, ka GetString pastāv.
>> Paskaidrojiet, kāpēc līnija divi ir klāt.
Tātad standarta io dot h.
Tas ir tieši tas pats kā iepriekšējo problēmu,
izņemot nevis nodarbojas ar GetString, mēs runājam par printf.
Tātad, ja mēs neteica mums vajag ietvert standarta io dot h,
tad mēs nespētu izmantot printf funkciju,
jo kompilators nezinu par to.
>> Why-- kāda ir nozīme par neesošu rindā četrās?
Tātad šeit mums ir int galvenais (spēkā neesošs).
Tas ir tikai saprotams, ka mēs nesaņemat nekādas komandrindu
argumenti par galveno.
Atcerieties, ka mēs varētu teikt int Galvenās int argc stīgu argv iekavās.
Tātad, šeit mēs vienkārši sakām neesošu teikt mēs ignorē komandrindas argumentus.
>> Izskaidrot, attiecībā uz atmiņu, tieši kādi GetString saskaņā seši atgriežas.
GetString atgriežas bloku atmiņa, masīvs rakstzīmes.
Tas tiešām atgriežas rādītāju uz pirmo rakstzīmi.
Atcerieties, ka virkne ir char zvaigzne.
Tātad, s ir pointers uz pirmo raksturs jebkādā virkne ir
ka lietotājs ievada pēc klaviatūru.
Un, ka atmiņa notiek, ir malloced, tā, ka atmiņa ir kaudzē.
>> Jautājums 13.
Apsveriet zemāk programmu.
Tātad visa šī programma dara ir printf-ing 1 dalīts ar 10.
Tātad, kad tie ir apkopoti un izpildīts, šī programma
izejas 0.0, lai gan 1 dalīts ar 10 ir 0,1.
Tātad, kāpēc tas ir 0.0?
Nu, tas ir tāpēc, no skaitlim sadalīšanu.
Tātad, 1 ir vesels skaitlis, 10 ir vesels skaitlis.
Tātad 1 dalīts ar 10, viss uztver kā veselus skaitļus,
un C, kad mēs veselu sadalījumu, mēs saīsināt jebkuru komata.
Tātad 1 dalīts ar 10, ir 0, un tad mēs cenšamies
drukāt, ka apgrozāmos, tāpēc nulle drukāta kā apgrozāmos līdzekļus, ir 0,0.
Un tas ir iemesls, kāpēc mēs 0,0.
>> Apsveriet zemāk programmu.
Tagad mēs esam drukāšanas 0.1.
Līdz ar to nav vesels skaitlis dalīšana, mēs esam tikai drukāšanas 0,1,
bet mēs esam drukāšana 28 zīmēm aiz komata.
Un mēs iegūtu šo 0,1000, vesels bars nullēm, 5 5 5, blah blah blah.
Tātad jautājums ir, kāpēc to dara drukāt, ka, tā vietā, lai tieši 0.1?
>> Tātad iemesls šeit tagad peldošā komata neprecizitātes.
Atcerieties, ka pludiņš ir tikai 32 biti.
Tātad, mēs varam tikai pārstāvēt ierobežots skaits Peldošo punktu vērtības ar tiem 32
biti.
Nu tur ir galu galā bezgalīgi daudzi peldošā komata vērtības,
un tur ir bezgala daudz peldošas Point vērtības starp 0 un 1,
un mēs, protams, varētu pārstāvēt vēl vairāk vērtības, nekā.
Tātad mums ir, lai upurus, lai varēs pārstāvēt lielāko daļu vērtības.
>> Tātad vērtība, piemēram, 0,1, acīmredzot mēs nevaram apstiprināt, ka tieši tā.
Tā vietā, kas pārstāv 0,1 mēs darām labākais, ko mēs varam pārstāvēt šo 0.100000 5 5
5.
Un tas ir diezgan tuvu, bet par daudz pieteikumu
Jums nav jāuztraucas par peldošā komata neprecizitātes,
jo mēs vienkārši nevaram pārstāvēt visi peldošs punktus precīzi.
>> 15. jautājums.
Apsveriet zemāk kodu.
Mēs esam tikai drukājot 1 plus 1.
Tāpēc nav triks šeit.
1 plus 1 novērtē līdz 2, un tad mēs esam drukāšanas to.
Tas tikai drukā 2.
>> 16. jautājums.
Tagad mēs esam drukāšanas raksturu 1 plus 1 raksturs.
Tātad, kāpēc tas nav izdrukāt to pašu?
Nu raksturs 1 plus raksturs 1, raksturs 1 ir ASCII vērtību 49.
Tātad, tas ir patiešām saka, 49 plus 49, un galu galā tas notiek, lai drukātu 98.
Tātad tas nav drukāt 2.
>> 17. jautājums.
Pabeigt īstenošanu no nepāra zem tā,
ka funkcija atgriež taisnība, ja n ir nepāra un false, ja n ir vēl.
Tas ir lielisks mērķis par mod operatoram.
Tāpēc mēs mūsu argumentu n, ja n mod 2 ir vienāds ar 1, labi
tas nozīmē, ka n sadalīts ar 2 bija atlikumu.
Ja n dalīts ar 2 bija atlikumu, kas nozīmē, ka n ir nepāra, lai mēs atgrieztos taisnība.
Vēl mums atgriezties viltus.
Jūs arī varēja izdarīt n mod 2 ir vienāds nulle, return false, citādi atgriezties true.
>> Apsveriet rekursīvo funkciju zemāk.
Tātad, ja n ir mazāks par vai vienāds ar 1, atgriezties 1,
cits atgriešanās n reizes f n mīnus 1.
Tātad, kas ir šī funkcija?
Nu, tas ir tikai factorial funkcija.
Tas ir labi pārstāvēta kā n faktoriāliem.
>> Tātad 19. jautājums tagad, mēs vēlamies šo rekursīvas funkcijas.
Mēs vēlamies, lai būtu iteratīvs.
Tātad, kā mēs to darām?
Nu personālam risinājums, un atkal tur
vairāki veidi, kā jūs varētu izdarīt ka, sākam ar šo int produktu
ir vienāds ar 1.
Un visu šo cilpas, mēs ejam
kas reizinot produktu galu galā galu galā ar pilnu faktoriāliem.
Tātad int i ir vienāds ar 2, i ir mazāks par vai vienāds ar n, i ++.
>> Jums varētu būt jautājums, kāpēc man ir vienāds ar 2.
Nu, atcerieties, ka šeit mums ir pārliecinieties, ka mūsu bāze lieta ir pareiza.
Tātad, ja n ir mazāks par vai vienāds 1, mēs esam tikai atgriešanās 1.
Tātad vairāk nekā šeit, mēs sākam pie i ir vienāds ar 2.
Nu, ja es būtu 1, tad the-- vai ja n ir 1, tad par cilpu
nevarētu izpildīt vispār.
Un tāpēc mēs būtu vienkārši atgriešanās ierīce, kas ir 1.
Tāpat, ja n ir kaut ko mazāk nekā 1--
ja tas būtu 0, negatīva 1, whatever-- mēs gribētu vēl atgriezīšos 1,
kas ir tieši tas, ko rekursīvs versiju dara.
>> Tagad, ja n ir lielāks par 1, tad mēs ejam
darīt vismaz vienu atkārtojuma šīs cilpas.
Tātad pieņemsim, ka n ir 5, tad mēs esam darīsim produktu reizes vienāds 2.
Tāpēc tagad produkts ir 2.
Tagad mēs gatavojamies darīt produktu reizes vienāds 3.
Tagad tas ir 6.
Produkta reizes vienāds 4, tagad tas ir 24.
Produkta reizes vienāds 5, tagad tas ir 120.
Tātad galu galā, mēs esam atpakaļ 120, kas ir pareizi 5. faktori.
>> 20. jautājums.
Tas ir viens, kur jums ir jāaizpilda Šajā tabulā ar kādu konkrētu algoritmu,
kaut kas, ko mēs esam redzējuši, ka der šos algoritmiskās palaist
reizes šīs asimptotiskās palaist reizes.
Tātad, kas ir algoritms, kas ir omega 1, bet liels O n?
Tātad tur varētu būt bezgalīgi daudzas atbildes šeit.
Viens, ka mēs esam redzējuši, iespējams, lielākā daļa bieži vien ir tikai lineārs meklēšanu.
>> Tātad labākajā gadījumā scenārijs, postenis mēs esam
meklē ir sākums saraksta
un tā omega 1 soļiem, Pirmā lieta, mēs pārbaudām,
mēs vienkārši uzreiz atdod ka mēs atradām objektu.
Sliktākajā scenārija gadījumā, punkts ir beigās,
vai prece nav sarakstā vispār.
Tāpēc mums ir jāmeklē visu sarakstu, visi n
elementi, un tāpēc tas ir o n.
>> Tāpēc tagad tas ir kaut kas, kas ir gan omega n log n, un lielais O n log n.
Nu visatbilstošākās lieta mēs esam redzējuši šeit ir apvienot veida.
Tātad apvienot kārtot, atcerieties, galu galā Theta
n log n, kur teta definēts ja abi omega un liels O ir vienādi.
Gan n log n.
>> Kas ir kaut kas, kas ir omega no N, O un N brusas?
Nu, atkal tur vairākas iespējamās atbildes.
Šeit mēs gadās teikt burbulis veida.
Ievietošanas kārtošanas arī šeit strādāt.
Atcerieties, ka burbulis šķirot ir, ka optimizāciju kur,
ja Jums ir iespēja saņemt izmantojot visu sarakstu
bez nepieciešamības to darīt jebkādi mijmaiņas līgumi, tad labi,
mēs varam nekavējoties atgriezties, ka saraksts tika sakārtoti, lai sāktu ar.
Tātad labākajā gadījumā, tas ir tikai omega n.
Ja tas nav tikai labi sakārtoti sarakstu, lai sāktu ar,
tad mums ir O n brusas mijmaiņas darījumus.
Un visbeidzot, mums ir izvēles veida par n brusas, gan omega un lielo O.
>> Jautājums 21.
Kas ir skaitlis pārplūdes?
Nu atkal, līdzīgi kā iepriekš, mums ir tikai finitely daudz biti
pārstāvēt vesels skaitlis, tāpēc varbūt 32 bitiem.
Pieņemsim, ka mums ir parakstīts skaitlim.
Tad galu galā augstāko pozitīvs skaitlis, mēs varam pārstāvēt
ir 2 līdz 31 mīnus 1.
Tātad, kas notiek, ja mēs cenšamies Tad pieauguma šo skaitli?
Nu, mēs ejam, lai aiziet no 2 līdz 31 mīnus 1, visu ceļu uz leju, lai negatīvu 2
līdz 31.
Tāpēc šis skaitlis ir pārplūdes ja jūs pastāvīgi palielināšanai,
un galu galā jūs nevarat rodas kāds augstāks un tas tikai
wraps visu ceļu atpakaļ ap negatīvu vērtību.
>> Kas par bufera pārpildes?
Tāpēc buferis overflow-- atceries, ko buferis ir.
Tas ir tikai rieciens atmiņas.
Kaut ko līdzīgu masīvu ir buferis.
Tātad bufera pārpildes ir tad, kad jūs mēģināt piekļūt atmiņas
pēc projekta beigām šī masīva.
Tātad, ja jums ir masīva izmēru 5 un jums
mēģināt piekļūt masīva kronšteinu 5 vai kronšteinu 6 vai kronšteins 7,
vai kaut kas ārpus beigas, vai pat kaut kas
below-- masīvs kronšteins negatīvs 1-- visi no tiem ir bufera pārpilde.
Jūs esat pieskaras atmiņu sliktos veidos.
>> 23. jautājums.
Tātad šo vienu jums īstenot strlen.
Un mēs jums pateiks, ka jūs varat pieņemu s nebūs spēkā,
tāpēc jums nav darīt jebkuru čeku null.
Un tur ir vairāki veidi jūs varētu būt izdarījusi.
Šeit mēs tikai veikt vienkārša.
Sākam ar skaitītāju, n. n ir skaitot, cik rakstzīmes tur ir.
Tātad, mēs sākas ar 0, un pēc tam mēs atkārtot pār visu sarakstu.
>> Ir s kronšteins 0 vienāds ar null terminatoru raksturs?
Atcerieties, mēs meklējam null terminators raksturs
lai noteiktu, cik ilgi mūsu virkne ir.
Ka gatavojas izbeigt kādu būtisku stīgu.
Tāpēc ir s kronšteins 0 vienāds uz nulles terminators?
Ja tā nav, tad mēs ejam apskatīt u grupā 1, u grupā 2.
Mēs turpinām iet, kamēr mēs atrast null terminatoru.
Kad mēs esam noskaidrojuši to, tad n satur kopējais garums no virknes,
un mēs varam vienkārši atgriezties to.
>> 24. jautājums.
Tātad tas ir viens, kur jūs ir veikt tirdzniecību off.
Tātad viena lieta ir labs vienā veids, bet kādā veidā tas ir slikti?
Tātad šeit, apvienot kārtot mēdz ātrāk nekā burbulis veida.
Ņemot that-- teica, labi, ka Ir vairākas atbildes šeit.
Bet galvenais ir tas, ka burbulis veida ir omega n par šķirotiem sarakstā.
>> Atcerieties, ka tabulu mēs vienkārši redzēja agrāk.
Tātad burbulis sakārto omega no n, labākais scenārijs
tas ir spējīgs tikai iet pa sarakstu vienreiz, noteikt
hey šī lieta jau ir šķirots un atgriešanās.
Apvienot kārtot, vienalga ko jūs darāt, ir omega n log n.
Tātad šķirotajiem sarakstā, burbuli kārtošanas notiek, lai būtu ātrāk.
>> Tagad to, ko par saistīta sarakstus?
Tātad saistīts saraksts var augt un sarauties fit tik daudz elementu, cik nepieciešams.
Ņemot teica that-- tik parasti tiešs salīdzinājums
būs saistīta uzskaitīt ar masīvu.
Tātad, pat ja bloki var viegli augt un sarauties
fit tik daudz elementu cik nepieciešams, saistīts saraksts
salīdzinot ar array-- AN masīvs ir brīva piekļuve.
Mēs varam indekss jebkurā īpaši masīva elements.
>> Tātad saistītajā sarakstā, mēs nevaram vienkārši iet uz piekto elementu,
mums ir, lai šķērsotu no paša sākuma kamēr mēs ar piekto elementu.
Un kas notiek, lai novērstu mūs no darīt kaut ko līdzīgu bināro meklēšanu.
Runājot par bināro meklēšanu, bināro meklēšanu mēdz būt ātrāk nekā lineāra meklēšanu.
Ņemot teica that-- Tātad, viens no iespējamajiem lieta
ir tas, ka jūs nevarat darīt binārā meklēt saistīti sarakstos
jūs varat darīt tikai to bloki.
Bet, iespējams, vēl svarīgāk, Jūs nevarat darīt bināro meklēšanu
par masīvu, kas nav sakārtots.
Sākumā jums var būt nepieciešams, lai kārtotu masīvs, un tikai tad var
jūs bināro meklēšanu.
Tātad, ja jūsu lieta nav sakārtots, lai sāktu ar,
tad lineārā meklēšana varētu būt ātrāka.
>> Jautājums 27.
Tāpēc uzskatu programmu zemāk, kas būs nākamajā slide.
Un tas ir viens, kur mēs esam gatavojas vēlaties, lai skaidri norādīt
vērtības dažādiem mainīgajiem.
Tātad, pieņemsim apskatīt to.
>> Tik līnija vienu.
Mums ir int x ir vienāds ar 1.
Tas ir vienīgais, kas ir noticis.
Tātad vienā rindā, mēs redzam mūsu tabula, ka y, a, b, un TMP visi
blacked.
Tātad, kas ir x?
Nu mēs vienkārši iestatīt tā, vienāds ar 1.
Un tad rindā divi, labi, mēs redzam, ka y ir iestatīts uz 2,
un tabula ir jau jāaizpilda mums.
Tātad, x ir 1 un Y ir 2.
>> Tagad, trīs līnijas, mēs esam tagad iekšpusē mijmaiņas funkciju.
Ko mums iet apmainīt?
Mēs nodots aizvieto & zīmes x par , un zīme & y b.
Kur problēma agrāk noteikts, ka adrese x
ir 0x10, un adrese Y ir 0x14.
Tātad, a un b ir vienāds ar 0x10 un 0x14, attiecīgi.
>> Tagad rindā trīs, kādi ir x un y?
Nu, nekas nav mainījies par x un y šajā brīdī.
Pat ja viņi iekšā galvenais kaudze rāmi,
tie joprojām ir tas pats vērtības viņi darīja agrāk.
Mums nav labojusi nevienu atmiņu.
Tātad, x ir 1, y ir 2.
Labi.
Tāpēc tagad mēs teicām int tmp vienāds ar zvaigzni.
Tātad rindā četri, viss ir tāds pats, izņemot TMP.
Mēs neesam mainījuši nekādas vērtības neko, izņemot TMP.
Mēs veidojam tmp vienāds ar zvaigzni.
Kas ir zvaigzne?
Nu, a punkti x, So zvaigzne būs vienāda X, kas ir 1.
Tātad viss ir kopēts uz leju, un TPP ir iestatīts uz 1.
>> Tagad nākamais rindā.
Star vienāds zvaigzne b.
Tātad, līnija five-- labi atkal, viss ir tāds pats, izņemot neatkarīgi Star ir.
Kas ir zvaigzne?
Nu, mēs tikko teica zvaigzne ir x.
Tāpēc mēs esam mainās x uz vienlīdzīgu zvaigžņu b.
Kas ir zvaigzne b? y. b norāda uz y.
Tātad zvaigzne b ir y.
Tāpēc mēs esam nosakot x vienāds ar y, un viss pārējais ir tas pats.
Tā mēs redzam, nākamajā rindā, ka x ir tagad 2, un pārējie ir vienkārši kopēti uz leju.
>> Tagad nākamajā rindā, zvaigzne b vienāds tmp.
Nu, mēs tikko teica zvaigzne b ir y, tāpēc mēs esam nosakot y vienāds ar TMP.
Viss pārējais ir tas pats, tāpēc viss tiek kopēti uz leju.
Mēs nosakot y vienāds ar TPP, kas ir viens, un viss pārējais ir tas pats.
>> Tagad beidzot, septiņi līnija.
Mēs esam atpakaļ uz galveno funkciju.
Mēs esam pēc swap ir pabeigta.
Mēs esam zaudējuši, B un tmp, bet galu galā mēs
nemainām nekādas vērtības par kaut ko šajā brīdī,
mēs vienkārši kopēt X un Y leju.
Un ir redzams, ka x un y ir tagad 2 un 1 1 vietā un 2.
Mijmaiņas ir veiksmīgi izpildīts.
>> Jautājums 28.
Pieņemsim, ka jūs sastopaties kļūdas paziņojumus
Turpmāk darba laikā nākamgad kā CA vai TF.
Padomu, kā noteikt katrai no šīm kļūdām.
Tātad undefined atsauce uz GetString.
Kāpēc jūs varētu redzēt šo?
Nu, ja students izmanto GetString to kodu,
tie ir pareizi hash iekļauti CS50 dot h iekļaut CS50 bibliotēka.
>> Nu, ko tie nepieciešams noteikt šo kļūdu?
Viņiem ir nepieciešams darīt mestos lcs50 pie komandrindas kad viņi apkopojot.
Tātad, ja viņi neietu šķindēt domuzīme lcs50, viņi
nav nāksies faktisko kods, kas īsteno GetString.
>> 29. jautājums.
Netieši atzīstot bibliotēkas funkciju strlen.
Nu tagad, tie nav darīts pareizu hash ietver.
Šajā konkrētajā gadījumā, header fails viņiem ir nepieciešams iekļaut, ir virkne dot h,
ieskaitot stīgu dot h, tagad student-- tagad kompilators
piekļūt deklarācijas strlen,
un tā zina, ka jūsu kodu izmanto strlen pareizi.
>> 30. jautājums.
Vairāk procenti konvertēšanu nekā datu argumentiem.
Tātad, kas tas ir?
Labi atceros, ka šie procenti signs-- kā viņi attiecas uz printf.
Tātad printf mēs varētu percent-- mēs varētu drukāt kaut ko
līdzīgi procentiem i slīpsvītru n.
Vai mēs varētu drukāt, piemēram, procentiem i, telpa, procenti i, telpa, procenti i.
Tātad, katrs no tiem procenti pazīmes, mums ir nepieciešams
iziet mainīgo beigās printf.
>> Tātad, ja mēs sakām Printf paren procenti i slīpsvītru n tuvu paren,
labi, mēs sakām, ka mēs esam gatavojas drukāt vesels skaitlis,
bet tad mēs neietu printf skaitlis faktiski drukāt.
Tāpēc šeit vairāk procentiem pārrēķini par datu argumentiem?
Tas ir saprotams, ka mums ir viss ķekars procentiem,
un mums nav pietiekami daudz mainīgie faktiski aizpildīt šajos procentos.
>> Un tad noteikti, lai jautājumu 31, galīgi zaudējis 40 baiti vienā blokos.
Tātad tas ir Valgrind kļūda.
Tas ir saprotams, ka kaut kur savu kodu,
Jums ir sadalījumu, kas ir 40 baitu liels, lai jūs malloced 40 baiti,
un jūs nekad atbrīvoja to.
Visticamāk jums ir nepieciešams atrast kādu atmiņas noplūde,
un atrast, kur jums ir nepieciešams, lai atbrīvot šo bloku atmiņas.
>> Un 32. jautājums, nederīgs rakstīt izmēru 4.
Atkal tas ir Valgrind kļūda.
Tas nav jādara ar atmiņu noplūdes tagad.
Tas ir, lielākā daļa likely-- es domāju, tas ir daži nederīgs atmiņas tiesību kārtošanas.
Un, visticamāk, tas ir daži veida bufera pārpildes.
Kur jums ir masīvs, varbūt skaitlis masīvs, un pieņemsim
saka, ka tas ir par izmēru 5, un jums mēģināt pieskarties masīvu kronšteinu 5.
Tātad, ja jūs mēģināt rakstīt, ka vērtība, tas nav gabals atmiņas
ka jūs faktiski ir pieejama, un tāpēc jūs gatavojas saņemt šo kļūdu,
sakot nederīgs rakstīt izmēru 4.
Valgrind gatavojas atzīt tu esi mēģina pieskarties atmiņu nevietā.
>> Un tas arī viss par quiz0.
Es esmu Rob Bowden, un tas ir CS50.