>> SPEAKER 1: Nu labi.
Laipni lūdzam atpakaļ.
Tas ir CS50 Divas nedēļas, un mēs esam līdz šim bijis, izmantojot funkcijas, bet
lielākoties ņem tos par pašsaprotamu.
Mēs esam izmantojuši printf kura blakusparādība drukāšanas
lietas uz ekrāna.
Mēs esam izmantojuši get-int, get peldēt.
>> Bet ko tad, ja jūs tiešām vēlaties, lai izveidotu savas funkcijas, jo daži no
Jūs, iespējams, jau ir sākuši darīt Problēma iestatīt vienu, lai gan
nav obligāti nepieciešama?
Nu, iesim uz priekšu un pārskatīt ka problēma, vienkārši lūdzot lietotājam,
savu vārdu un poligrāfijas kaut ko par ekrāns, bet mēģināt faktors dažus
no vienveidības, ka mēs esam redzams mūsu kodu līdz šim.
Tātad, ar to es domāju sekojošo.
>> Es iešu uz priekšu un izveidot jauna programma, tikai zvanīt
tas hello.c kā parasti.
Es iešu uz priekšu un dot sevi ietver standarta io.h augšpusē.
Es esmu gatavojas arī sniegt sevi preemptively CS50 bibliotēka, lai
Man nav get kliedza uz sastādītājs.
Un tagad es iešu uz priekšu un atzīt int, galvenais, par spēkā neesošu.
>> Un tad šeit, tas ir, ja es gribu sākt izmantot ārpakalpojumus funkcionalitāti
dažas citas funkcijas, ka es pats esmu gatavojas rakstīt, bet tas nav
Pašlaik pastāv.
Piemēram, pieņemsim, ka es gribēju uzrakstīt funkciju, kas ļauj man, lai
izdrukāt Sveiki, komats, un Tad daži lietotāja vārdu.
Nevis turpināt to darīt printf sveiki,% s, vai tas nebūtu jauki, ja
tur bija tikai sauc funkciju nevis printf bet atšifrējums?
>> Tātad, citiem vārdiem sakot, es gribu, lai varētu Uzrakstiet programmu, kas dara nedaudz
kaut kas līdzīgs šim.
Pirmkārt, es esmu gatavojas teikt printf savu nosaukums, tādējādi pamudinot lietotājam
iedodiet man viņa vai viņas vārdu, un tad es esmu gatavojas izmantot pazīstamus String s, lai
atzīt virkni.
Dodiet man mainīgo tipa virknes, to sauc s, un uzglabāt ka
rezultātā izsaucēja saņemt virkni.
Bet tagad nedēļām agrāk, es būtu nedaudz tediously darīts sveiki,% s / n.
>> Un citiem vārdiem sakot, mēs esam redzējuši šo piemērs ķekars reizes, un tas ir
triviāls piemērs, jo tur ir tikai viens līnija kodu, lai tas tiešām nav
liels galā, lai saglabātu rakstīt vēlreiz.
Bet pieņemsim, ka šī līnija koda faktiski ir kļuvušas par apgrūtinājumu, un
tas nav viena līnija kods, bet tas ir 10 rindas kods pāris nedēļas no šī brīža,
un jūs vienkārši noguris kopēšanas un ielīmēšanas vai
pārrakstīšana šo pašu kodu.
Vai tas nebūtu jauki, nevis darīt printf sveiki,% s un tā tālāk,
vai tas nebūtu jauki, ja tur bija tikai funkciju sauc atšifrējums, ka
aizņem arguments -
citiem vārdiem sakot, ir nepieciešams ieguldījums -
un pēc tam semikolu.
Tātad, kas darbojas, ne tas ir jauki, ja tas pastāv?
Tad es nebūtu jāuztraucas par kas printf ir, ko% s un visi no
šie sarežģījumi, kas ir nav tik interesanti.
Tie ir noderīgi.
>> Tātad atšifrējums, diemžēl, nebija izgudroja dažas 40 plus gadus atpakaļ.
Neviens doma rakstīt to.
Bet tas ir skaistums, kam programmēšanas valoda, tāpat kā
Scratch jūs varat definēt pielāgotus blokus, lai C, un lielākā daļa jebkuru valodu, jūs varat
definēt savu funkcionalitāti, var Jums noteikt savas funkcijas.
Tātad, pat ja mēs maģistrālo automātiski par brīvu, mēs varam paziņot
mūsu pašu funkciju.
>> Tāpēc es esmu gatavojas veikt dažas vietas uz augšu šeit up top, un es esmu gatavojas pasludināt manu
pašu funkciju, kas ir skatīsies mazliet dīvaini sākumā, bet mēs nāksim
atpakaļ uz šo pirms ilgi.
Es esmu gatavojas teikt par spēkā neesošu, tādējādi norādot šo funkciju nav
kaut ko, ir blakus efekts, bet tas neatgriežas kaut ko ar mani
pašā veidā, ka iegūt int vai saņemt virkni pati.
Un es esmu gatavojas sniegt šo funkciju nosaukt par drukas vārdu, un es esmu gatavojas
norāda, ka šis puisis ir gatavojas veikt stīgu, un es esmu dodas uz zvanu, ka
virkne vārdu.
Es varētu saukt kaut ko es gribu, bet es vēlas mans kods ir self-dokumentēšanai.
Citiem vārdiem sakot, ja viens no jums bija atvērt šo failu, un lasīt to, jūs varētu
veida secināt no nosaukuma, kas ieeja kādu lomu tas ir paredzēts, lai spēlētu.
>> Un tagad tālāk, ka es esmu gatavojas, lai atvērtu cirtaini lencēm un slēgtas cirtaini lencēm,
un tāpēc paziņojums Esmu sekoja pats zīmējums uz līnijām, pa septiņiem, četri
Esmu bijis pēc labu nedēļu plus Tagad starp, teiksim, līnijām deviņiem un
14, kas veido galveno.
Citiem vārdiem sakot, izdrukāt nosaukumu ir cita funkcija.
Tagad, kompilators nav gatavojas zināt , lai izsauktu šo lietu automātiski
jo es burtiski tikko izgudroja to, bet tas zinās vēl zvanīt galvenā
automātiski, un pēc tam, protams, jo līnija 13, es aicinu savu funkciju.
Un tāpēc es esmu paziņojis, ka funkcija līdzi pirms galvenajām četrām līniju,
tas ir gatavojas mācīt kompilators ko citēju, likt pēdiņas beigās, "atšifrējums"
nozīmē un kas tai būtu jādara.
Tāpēc es esmu veida dodot tai jaunu pasūtījuma bloķēt kontekstā, teiksim, Scratch.
>> Tātad šeit, es varu nodot, ka ļoti bieži vai regulāru modeli kodu, es glabāt
rakstiski klasē, printf % S sveiki,% s / n ", -
Ko es gribu, lai šeit?
S?
Tāpēc es gribu, lai vārdu šajā kontekstā.
Tātad paziņojums mazliet auglīgs šeit.
Tā kā es esmu deklarējot savu funkciju un man ir nedaudz patvaļīgi sauc
tā atšifrējums, un tāpēc, ka es esmu norādīts iekavās, ka tas
funkcija aizņem vienu argumentu, tips kas ir virkne - tāpēc tas ir vārds
vai frāze, vai kaut kas tamlīdzīgs - un Es esmu aicinot šis arguments nosaukumu, kas
ir vienīgais mainīgais, kas ir kas jomu, tā sakot, ir vārds.
>> S pastāv tikai starp divām ko cirtaini bikšturi, protams?
Nu tiešām, tāpat kā 10 līnijas cauri 14, tāpēc tāpat kā pirmdien, nevar izmantot
S, bet to, ko es varu darīt, ir nodot S uz drukas nosaukumu.
Drukāt nosaukums tikai tā notiek, lai arī tā alias, sinonīmu, segvārdu,
nosaucot to nosaukumu, un tagad izmantojot to šajā rindā.
Tātad, tagad ļaujiet man saglabāt to, attālinātu.
>> Ļaujiet man iet uz priekšu un veikt sveiki.
Izskatās labi.
Nav izspļaut kļūdas. . / Sveiki Enter.
Kas ir mans vārds?
Deivids.
Un sveiki Dāvids.
Tāpēc ne viss, kas aizraujošs, bet tikai domāju, ka tagad.
Jums tagad ir, ka pati sastāvdaļa kā mēs to darījām nulles līdz
padarīt mūsu pašu funkciju.
>> Bet tur ir no gotcha bit.
Pieņemsim, ka man nav īsti domājis tas cauri, un es tiešām bez
nedomājot par to rakstīja kas darbojas uz leju šeit.
Jūtas pilnīgi pamatota.
Jo nulles nepastāv jēdziens no atrašanās vietas jūsu skriptus.
Jūs varētu likt vienu uz augšu šeit, viena šeit, viens šeit, un tas varētu sākt
izskatīties mazliet netīrs, ja jums nav noteikt to, glīti, bet tas nav
vienalga, kur fiziski skripti bija uz ekrāna.
Diemžēl C - un tas ir pretēji valodas, piemēram, Java un Python
un citiem, ka jūs varētu būt pazīstami ar - diemžēl C, lai dara
nozīmes, jo skatīties, kas ir notiks tagad.
>> Noklusējuma funkcija, kas notiek izpildīt, protams, galvenais.
Galvenais gatavojas aicināt drukas vārdu līnija astoņi, bet diemžēl,
kompilators nav pat zināt, ka drukas nosaukumu pastāv, līdz tas kļūst 11 līnijas,
kas diemžēl ir būs pārāk vēlu.
Tātad, pieņemsim do veikt sveiki.
Un tagad nopelt, divas kļūdas radīts.
Tātad, tagad ļaujiet man ritiniet līdz ļoti pirmkārt, mums vienmēr vajadzētu darīt, un
ievēroju, ka tas kliedza uz mani, "Netieši deklarācija funkcijas
print vārdu. "
>> Tāpēc mēs esam redzējuši šo ziņojumu iepriekš, netieši deklarācija funkcijas.
Kad mēs esam redzējuši šāda veida kļūda?
Kad es neietvēra bibliotēka.
Ja es aizmirsu cs50.h, un es varētu saņemt kliedza, lai iegūtu virkni vai iegūt int.
Bet šajā gadījumā, šī funkcija print vārds nav bibliotēkā, vai ne?
Tas ir burtiski šajā failā, tāpēc kas ir patiešām problēma?
>> Nu diemžēl C, tas jūs aizvedīs tik neticami burtiski, ka, ja jūs
gribu funkciju sauc atšifrējums, lai pastāv, jums ir vai nu jāīsteno
, kas darbojas pie ļoti top jūsu kodu, tāpēc, ka tas ir pieejams, lai samazinātu
funkcijas, bet atklāti sakot, tas kļūst apliets ļoti ātri.
Personīgi, man patīk liekot galveno vispirms jo tad tas ir ļoti skaidrs, ko šis
Programma dara pēc pirmā acu uzmetiena.
Un plus, jūs varat nokļūt dīvaini stūrī gadījumi, kur, ja x vēlas, lai izsauktu
y bet y varētu aicināt x, jūs vienkārši fiziski faktiski nevar likt vienā
virs otra.
>> Bet izrādās C, mēs varam atrisināt ļoti vienkārši.
Es esmu gatavojas nodot mazliet vietas šeit, un es esmu tikai gatavojas
preemptively, kaut arī nedaudz lieki, gatavojas mācīt
kompilators, kas pastāv funkcija sauc par drukas vārdu, tas aizņem virkni,
un es esmu dodas uz zvanu tā nosaukums semikolu.
>> Tātad šis tagad četru līniju, ko mēs neesmu redzējis, ir deklarācija
par funkciju drukas vārdu, bet tas ir tikai sola, ka šī funkcija būs
beidzot definēt, galu galā jāīsteno.
Tas tagad es varu atstāt tikai tāpēc, ka Tagad tas ir definīcija,
īstenošanu, sava veida pēdējo jūdzi par šīs direktīvas īstenošanu
konkrēto funkciju.
Tātad, godīgi sakot, tas ir muļķīgi, tas ir kaitinošas, bet tas ir ceļš C ir, un tas ir
jo tas aizņem jums ļoti burtiski un, kā dators atklāti būtu,
tikai tieši to, ko jums pateikt to darīt, un tā, ka pasūtījumi ir svarīgi.
>> Tātad, paturiet to prātā un atkal sākt paziņojums atkārtošanos modeļiem.
Izredzes ir jums būs, ja jums nav jau sāk saskarties ziņas
piemēram, tas, ka pēc pirmā acu uzmetiena šķiet, pilnīgi mistisks, bet, ja jūs sākat
meklēt šos atslēgas vārdus, piemēram, "Netieši deklarācija," pieminēts
funkcija šajā gadījumā - un godīgi sakot, jūs dažreiz pat saņemt nedaudz zaļa
burkānu simbols, kas stāsta jums, kur jautājums droši vien ir -
Jūs varat sākt strādāt savu ceļu caur vēl neredzētas kļūdu ziņojumi.
Visus jautājumus, rakstot savu funkciju šādā veidā?
>> Darīsim kaut ko, kas ir nedaudz vairāk pārliecinoša.
Nevis vienkārši darīt kaut ko, kas ir blakusparādība drukāšanu, ļaujiet man iet
priekšu un saglabāt jauno failu, un mēs nosaukt šo positive.c, pat ja tas ir
būs nedaudz atšķirīgs pret pēdējā laikā.
Un šoreiz, es vēlos vēlreiz īstenot pēdējā reize ir positive.C piemērs, kas
ir spēkā lietotājiem, lai sniegtu man pozitīvs skaitlis.
Bet man nācās izmantot iegūtu int pēdējo reizi.
Vai nav tā bijis jauki, ja tur bija funkciju sauc saņemt pozitīvu int
ka es varētu uzticēt šo gabals funkcionalitāti?
Tātad atšķirība šeit ir, mēs ņemšu īstenot saņemt pozitīvu int, bet atšķirībā
atšifrējums, kas bija blakus efekts - tas neatgriezās kaut ko, man patīk
numurs vai string -
saņemt pozitīvu int ir, protams, dodas uz atgriešanās, cerams, pozitīvu int.
>> Tātad, pieņemsim to izdarītu.
Iekļaut cs50.h, Iekļaut standarta io.h.
Int main spēkā neesošu.
Un tagad šeit, es esmu gatavojas iet uz priekšu un teiksim int, sauc to n, ir vienāds
saņemt pozitīvu int.
Un tāpat kā iegūt int jau eksistē jo darbinieki uzrakstīju to, es esmu gatavojas
par tādu brīdi, ka iegūt pozitīva int pastāv, un tagad es esmu gatavojas
iet uz priekšu un saka printf, paldies par% i / n ", n.
>> Tāpēc tagad, ja es apkopo šo programmu, kas notiks manā terminālī
logs apakšā ekrāna?
Es esmu gatavojas, lai, iespējams, iegūtu, ka pati kļūda kā iepriekš.
Tātad, pieņemsim mēģināt šo.
Padarīt pozitīvi.
Un atkal, netieši deklarācija par funkciju, saņemt pozitīvu int.
Tātad, mēs varam atrisināt šo pāris veidos.
Es esmu gatavojas saglabāt vienkāršu un vienkārši manu deklarāciju šeit un saņemt
pozitīva int.
Man vajag tā saukto parakstu.
Paraksts vienkārši atsaucas uz estētikas
Pirmajā rindā programmas.
Tātad, ko vajadzētu saņemt pozitīvu int atgriešanās?
>> Tātad int.
Es domāju ideāli, tas atgriezīsies kaut kā pozitīva int, bet
nepastāv.
Mēs esam nav redzējis, ka starp mūsu datiem veidiem, tāpēc mums ir tikt galā ar
Tas, ka mums ir ļoti maz datu tipi strādāt.
Bet mēs varam atgriezties int un tikai ticu, ka tas ir pozitīvs.
Tas būs saukt saņemt pozitīvu int.
>> Un tagad kā par saviem argumentiem?
Vai tas veikt jebkādu ievadi?
Vai tas ir nepieciešams, kādu ieguldījumu?
Tātad tas nav nepieciešams zināt iepriekš neko.
Saņemt virkne nav, iegūt int nav.
Printf nav - tai ir jābūt dažas ievade pagājis tajā - un tā atšifrējums
vajag kādu ieguldījumu, bet saņemt pozitīva int nav.
Tāpēc es esmu gatavojas nepārprotami pateikt kompilatoru spēkā neesošu.
Void ir trūkums kaut kas cits.
Tātad, par spēkā neesošu nozīmē nekas iet iekšā Šo iekavās, semikols.
>> Un tagad apakšā manā failā - un atkal, es esmu vienkārši ir sava veida anālais
Šeit liekot galveno augšpusē, kas ir laba prakse, jo šādā veidā,
jebkurā laikā jūs vai kāds cits atver failu, to
funkcionalitāte ir tiesības tur.
Jūs varat nirt no kvadrātveida vienu.
Tāpēc tagad es esmu gatavojas dublēt šo, saņemt pozitīvu int par spēkā neesošu, bet es neesmu
gatavojas hit semikolu tagad.
Es esmu gatavojas atvērt cirtaini bikšturi, un tagad man ir nepieciešams aizņemties
dažas idejas no pirmdienas.
>> Tātad, kā jūs atceraties, mēs kaut ko patīk darīt šādas darbības, kamēr
kaut kas ir patiess.
Un ko man darīt?
Es tomēr kaut ko līdzīgu dot man pozitīvs vesels skaitlis,
Mazliet ātri.
Es varētu izmantot jebkuru vārdu es gribu.
Un tad es ko?
Int n vienāds nokļūt int, nav argumenti, lai to.
>> Un paziņojums starpību.
Kad jūs zvanu funkciju, ja lietojat funkcija, jums nav likts tukšumā.
Jūs darīt tikai, ka, deklarējot funkcija, mācību kompilators to
tam vajadzētu sagaidīt.
Tātad jums nav nepieciešams, lai anulēta tur sevi.
>> Un tagad kāds bija mans stāvoklis?
Nu, n ir nav vienāds ar pozitīvu, bet tas ir tikai pseido-kodu.
Tātad, kā es varu izteikt tas tīrākā?
Tā mazāks par vai vienāds ar nulli.
Tātad vēlreiz, ievērosiet, jūs varat darīt, mazāks par vai vienāds ar.
Pat ja tas ir divas atsevišķas simbolus, jūs varat darīt to par
klaviatūras kā tādu.
>> Bet tur ir vēl kļūda, kas Es ieskrūvē up pēdējo reizi too.
Man ir atzīt -
tieši tā.
Man ir atzīt n ārpus no cilpas.
Tāpēc man ir nepieciešams, lai n šeit, un es nedomāju, vēlas atkārtoti paziņot to šeit
citādi man jaunu mainīgo.
Es tikai gribu, lai piešķirtu vērtību šeit.
>> Un tagad es neesmu gluži izdarīt šeit.
Ļaujiet man iegūt priekšā sevi un izlikties, es esmu darīts.
Lai pozitīvi, un tagad tur ir jauna kļūda.
Kontrole sasniedz beigu nav spēkā neesošu funkciju.
Tātad jaunā kļūdas ziņojumu, bet, ja jūs veida gada ķircināt izņemot katra vārdiem, tā
iespējams, mājieni par to, kas ir nepareizi.
>> Control.
Kontrole nozīmē tikai ar rīkojumu darbības programmā.
Dators ir kontrolēt situāciju un kaut kas nogāja greizi.
Tātad, tas sasniedz beigām , kas nav anulēts funkcija.
Kāda funkcija ir tas acīmredzot atsaucoties uz?
Kāda funkcija ir ne-par spēkā neesošu?
Lai iegūtu pozitīvu int, un nedaudz neskaidri, ka labi,
tas ir sava veida neesošu.
Tā ir specifikāciju spēkā neesošu attiecībā uz tās argumenti, bet tā produkcija ir gatavojas
būt tipa n.
Tātad pa kreisi vārds ir tā sauktās atgriešanās tips.
Iekšpusē vārds šeit ir ar nulles vai vairāk argumentus
ka funkcija tiek.
>> Tātad, kas man ir jādara?
Šajā brīdī manā kodu, līnija 21, kur mirgo ātri tagad ir, es
ir pozitīva int iekšpusē mainīgā sauc n.
Kā es varu dot to atpakaļ uz main?
Burtiski.
Atgriezties n semikolu.
>> Tik vienkārši, kā Colton atgriezās gabals papīrs ar atbildi uz mani, krītot
ka gabals papīra maz melns kaste uz galda, kas darīt, ka
kods, jūs burtiski vienkārši uzrakstīt, atgriezties n, un tas ir it kā Colton bija
nododot man kaut ko fizisku atpakaļ.
Šajā gadījumā, kas notiek, ir iegūt pozitīva int gatavojas atdot atpakaļ
kas ir iespējams pozitīvs skaitlis kam?
Ja tas, ka cenas galu galā?
Kas nonāk šajā mainīgo, n, un tad mēs turpinātu ar deviņiem līniju.
>> Tātad, citiem vārdiem sakot, lai no operācijas, šī programma sāk
izpildes, un kompilators saprot, ak, jūs vēlaties bibliotēku?
Ļaujiet man iet paķert kāds ir iekšā, ka.
Ak, jūs vēlaties standarta IO bibliotēka?
Ļaujiet man iet paķert kāds ir iekšā, ka.
Ko kompilators pateikt sev kad tas hits līniju četri?
Ak, jūs solīja īstenot funkciju sauc saņemt pozitīvu, bet
mēs saņemam atpakaļ, ka vēlāk, kaut kas pa šo līniju.
>> Int galvenais spēkā neesošu tikai nozīmē, lūk, iekšām manā programmā.
Līnija septiņi ir tikai cirtaini lencēm.
Līnija astoņi saka pa kreisi, sniedz me 32 biti uz skaitlim, to sauc n.
Labajā pusē, tas ir sakot, saņemt pozitīvu int.
Tagad pieņemsim pauzes, ka stāsts, jo tagad Man nav saglabāt pārvietojas manu kursoru uz leju.
Mans kursors tagad iet uz leju šeit, jo tagad saņemt pozitīvu int izpilda.
Int n ir deklarēta.
Veiciet šādas darbības.
Printf dod man vesels pozitīvs skaitlis.
>> Saņemiet int no lietotāja, uzglabāt to n, un varbūt darīt atkal un atkal.
Tas cilpa nozīmē, ka šis kodekss varētu izpildīt uz augšu un uz leju, piemēram, tas atkal
un atkal, bet tad, kad lietotājs beidzot sadarbojas un dod man pozitīvs
int, es hit līnija 21, kurā brīdī numurs tiek nodota atpakaļ, un kura viens
man uzsvērt tagad?
Nine.
Kontroli, tā sakot, atgriežas rindā deviņi.
Tas ir līnija, kas tagad atbild.
>> Tātad tas, kas noticis visu šoreiz zem motora pārsega, bet
kad mēs esam, ko izmanto funkcijas, piemēram, printf vai pat saņemt virkni, ka kāds cits
rakstīja par jums, kontrole tika nodota off, lai kāds cits kods līnija
ar auklu līniju.
Tas ir vienkārši, mēs nevarētu redzēt to, un mēs nevarēju īsti attēlot to šajā
programmu, jo tas ir dažās citās failu uz cietā diska
nezinot mums.
Tātad, pieņemsim patiesībā apkopo un palaist šo tagad.
>> Padarīt pozitīvi.
Aizpildi, tas ir progress.
. / Pozitīva.
Dodiet man vesels pozitīvs skaitlis.
Būsim grūti.
Negatīvs 1.
Nulle.
Pieņemsim arī tā 50.
Paldies par 50, un tā kontrole tagad ir atgriezies.
Kādi jautājumi, tad par to?
Yeah?
>> [Dzirdams].
>> Vēlreiz saku.
Ak, labs jautājums.
Tātad, jūs ievērosiet, paralēles, kas Es esmu veida griešanas stūrī uz.
12 rindā, es saku, ir iespēja saņemt pozitīvu int atgriež int, bet tajā pašā
loģika, tagad loģiski, ka sešas līnijas, es saku, ka galvenie atgriežas
int, bet to, kas ir, mēs nekad bija kāds no mūsu programmas?
Mums nekad nav bijis pieminēts šī atslēgas vārds atgriešanās.
>> Tātad izrādās, ka uz C, vismaz versija par to, ka mēs izmantojam
veikts 1999.gadā, tehniski, tas ir notiek automātiski.
Anytime jums īstenot programmu, un jūs īstenotu funkciju sauc galvenais,
ka funkcija atgriezīs nulli noklusējuma, ja jums nav teikt savādāk,
un nulle ir tikai konvencija.
Pasaule atgriež nulli tādējādi , kas norāda, ka viss ir labi,
faktiski atstājot mūs ar četrus miljardus iespējamās lietas, kas varētu iet
nepareizi tā, ka tad, ja mēs atgriezties vienu, ka varētu liecināt kodu, kas nozīmē, ka šis
lieta nogāja greizi.
Mēs varētu atgriezties divas, kas nozīmē, šī cita lieta nogāja greizi.
Mēs varētu atgriezties četrus miljardus, kas nozīmē, ka šis Otra lieta, kas nogāja greizi.
>> Un, ja jūs tagad domājat par savu PC vai Mac, jūs varētu atcerēties, ka
reizēm jūs saņemsiet mistisks kļūdu ziņojumus no programmatūras, ka jūs esat
izmantojot, un dažreiz tas ir cilvēka draudzīgs apraksts, bet tur ir
bieži kods vai numurs uz ekrāna?
Ja tas nenāk prātā, tikai saglabātu acu, kas par to.
Tas ir parasti, ko šie kodi ir domāta.
Viņi iekļauts Microsoft Word un citas programmas, tā, ka, ja jūs failu
bug ziņojums ar uzņēmumu, jūs varat pastāstiet viņiem, ak, es saņēmu kļūdas numurs 45.
Un daži programmētājs atpakaļ uzņēmumā var izskatīties, ka līdz ar viņa vai viņas
kodu un teikt, ak, tas ir tāpēc, ka es šī kļūda, un tas ir iemesls, kāpēc lietotāju
dabūju šo ziņu.
>> Bet atklāti sakot, tas ir tikai nedaudz novērš uzmanību un nedaudz garlaicīgs, lai
secina, ka, vismaz mūsu pirmās pāris programmas, tāpēc mēs esam
ir izlaižot to.
Bet visu šo laiku ik vienu no jūsu funkcijas galvenais ir slepeni bija tas
līnija pievienoti automātiski jums, kompilatoru, tikai pēc vienošanās
ietaupīt laiku.
>> [Dzirdams].
>> Jums nav nepieciešams iekļaut to galvenais.
Tas ir jauki.
Jums nepieciešams iekļaut, ja Jums bija īstenojot funkciju, kā šis.
Pretējā gadījumā funkcija dzīvoklis kas tas nedarbosies.
Bet galvenais, tas nav nepieciešams.
Pēc nedēļas vai divām, mēs sāksim saņemt vērā, ka ieradums, kad mēs vēlamies, lai sāktu
nozīmētu kļūdas.
Tiešām labs jautājums.
>> Tik ātri verbālo pārtraukums pieminēt, ka šo piektdien, mums nebūs, kam pusdienas
per se, bet mēs būsim ņemot vakariņas ar daži no studentiem un darbiniekiem.
Ja vēlaties pievienoties mums, jūtas brīvi iet uz cs50.net/rsvp.
06:00 šo piektdien.
Kosmoss ir, kā vienmēr, ir ierobežoti, bet mēs turpināt darīt šo par gandrīz
katru nedēļu ja telpa iztek šonedēļ.
>> Tātad cliffhanger, ka mēs left off par Pirmdiena bija, ka stīgas faktiski var
jāindeksē uz, kas vienkārši nozīmē, ka jūs var saņemt pie pirmās rakstzīmes,
Otrais burts, trešā zīme un tā tālāk, jo jūs varat
efektīvi domā par virkni, piemēram, sveiki, kā arī šajā gadījumā pieci
burti iekšpusē kastes.
Un jūs varat saņemt pie katra no tiem kastes ar ko sintakses vai mēs
ieviest pirmdien?
Šie kvadrātiekavas uz tastatūras.
Ka tikai nozīmēja iet uz nulles vietu.
>> Mēs sākt skaitīšanu no nulles, tāpēc kronšteins nulle nozīmē h, kronšteins viens
nozīmē e, un tā tālāk.
Un tā visu laiku, kad mēs esam bijuši izmantojot virknes un ierakstot "sveiki"
un "pasaules", un citas lietas par ekrāns, tas ir glabāti
kastēs, kā šis.
Un veikt minējums.
Kāda katra kaste pārstāv fiziski iekšpusē datora?
>> [Dzirdams].
>> Žēl?
>> Blondīne.
>> Tātad raksturs, protams, gadījumā, ja stīgas, un raksturs ir tikai
astoņi biti vai viens baits.
Tātad, jūs, iespējams, ir vismaz neskaidri iepazinušies ar to, ka jūsu
datoram ir atmiņas.
Tā ir divu veidu atmiņas vismaz.
Viens no tiem ir cietā diska, kur jums saglabāt sīkumi pastāvīgi, un tas ir
parasti ir liels, lai jūs varētu būt filmas un mūziku, un tā tālāk.
>> Tad jums ir cita veida atmiņas sauc RAM, R-A-M, Random Access
Atmiņa, un tas ir veids, atmiņas kas tiek izmantota, kad jūsu dators ir
rādīt bet, ja jūs zaudējat varu vai jūsu baterija nomirst, viss, kas glabājas
RAM pazūd, ja jūs zaudējat jauda vispār, jo tas nav
noturīgas.
Jums parasti ir, šajās dienās, GIG no tā, divi koncerti, varbūt vairāk.
Un RAM otrādi ir, ka tas ir daudz daudz, daudz ātrāk nekā cietais disks
vai pat SSD diskdziņi šajās dienās, bet tas parasti ir dārgāka tāpēc
Jums ir mazāk par to.
>> Tātad šodienas saruna tiešām attiecas RAM, šāda veida atmiņas, kas
eksistē tikai tad, kad tur ir spēks tiek ievadīti datorā.
Tātad, ja jūs tipa in H-E-L-L-O, Enter tastatūra, H notiek vienā
baits RAM, E iet vēl RAM baitu, kā tas ir
pārējā vārda.
Tātad, atcerēties to, ko mēs varējām darīt pēdējo reizi bija šī.
Ļaujiet man iet uz priekšu un atvērt failu ka mēs sauc string.c, un atcerēties
ka tas izskatījās nedaudz kaut kas līdzīgs šim.
Ļaujiet man faktiski roll atpakaļ un mainīt tas ir tieši tas izskatījās,
virknes garums s.
>> Tā izskatās pēc programmas šeit.
Mēs ietver CS50 bibliotēku, lai ka mēs varam izmantot saņemt virkni.
Mēs arī standarta io.h lai mēs varētu izmantot printf.
Kāpēc mēs arī string.h?
Tas bija jauns pirmdien.
Tāpēc mēs vēlējāmies virknes garumu.
Str leng.
Cilvēki nolēma gadus atpakaļ, pieņemsim tikai būt īss.
Tā vietā, nosaucot to par "virknes garums," sauksim to "str leng", un ļaujiet
pasaules skaitlis, ka,, un tā tas ir ko mēs piekļūt ar string.h.
>> Tas ir pazīstams.
Tas ir pazīstams.
Tas ir nedaudz jauns.
22 rindā - un mēs būsim atpakaļ uz šo, bet tagad zinu -
un jūs tikai zināt, tas no tā, lasīt dokumentāciju vai ja
Jūs zināja, C jau -
get virkne dažreiz var screw up.
Ja lietotājs ir patiešām sacīkstes vai nevēlas sadarboties, un viņš vai viņa vienkārši
nav rakstīt kaut ko pie klaviatūras vai veidi tik daudz pie klaviatūras, ka
tas nomāc datora atmiņu, teorētiski, iegūt stīgu varētu atgriezties
kaut kas nav rakstzīmju virkne.
Tas varētu atgriezties īpašu sauc vērtību NULL visos vākiem, N-U-L-l, un tas ir,
tikai tā saukto sargs vērtību.
Tā ir īpaša vērtība, kas nozīmē kaut kas slikts ir noticis šajā gadījumā.
Tas ir, ja nav virknes.
>> Tāpēc null es esmu pārbaudot vienkārši tā, ka, garš stāsts īss, str leng un
citas funkcijas, kas nāk ar C, ja viņi gaida virkne, bet jūs nodot tos
trūkums virknes, ja jums iet viņiem nulle, datoru vai programmu
būs tikai crash tieši.
Tā tiks pakārts.
Tas būs uzmest dažas kļūdas paziņojumu.
Sliktas lietas notiks.
Tātad, pat ja tas vēl nav labi definētas -
tas būs daudz lietderīgāk nedēļā vai divi - 22 līnija, tas ir tikai
piemērs sevis aizsargu kļūdu pārbaudi tikai gadījumā, ja vienu reizi no
miljons kaut kas noiet greizi, pie Vismaz mana programma nav crash.
>> Tātad, ja s nav vienāds ar kaut ko sliktu, Man ir šis cilpas, un tas bija
kur mums bija, ka citi jauns gabals sintaksi.
Man ir cilpa atkārtojot no nulle uz augšu ar garumu s.
Un tad šeit, es biju drukāšanas out s kronšteins i, bet kāpēc es izmantot% c visi no
pēkšņi nevis% s pat lai gan s ir virkne?
Tas ir raksturs, vai ne?
S ir virkne, bet s kronšteins kaut kas, s kronšteins i kur i ir nulle
vai viens vai divi, kas ir individuāls rakstzīmju virknē, un tāpēc
ka printf ir jābūt informētam, ka tas ir patiešām raksturs gaidīt.
>> Un tad atceros, ko darīja Programma patiesībā darīt?
>> Iespiests to, kolonnās.
>> Jā, tieši tā.
Tas tikko iespiests vārdus, ko es rakstīt kolonna, vienu simbolu katrā rindā.
Tātad, pieņemsim redzēt to vēlreiz.
Tātad, lai virkni.
Sast OK. . / String.
Let me tipa H-E-L-L-O, Enter, un tiešām man to, katrā rindiņā vienu.
>> Tātad, ļaujiet man darīt vienu optimizāciju šeit.
Ja jūs domājat par to, it īpaši, ja Jūs esat ieprogrammēts agrāk, tur ir
varbūt neefektivitāte 24 rindā.
Citiem vārdiem sakot, tas ne vienmēr labākais dizains.
Vienkāršs, vismaz reizi tevi atcerēties, kas str leng ir, bet tas ir
darīt kaut ko mēms iespējami.
Kas varētu būt?
>> [Dzirdams].
>> Tieši tā.
Tas ir arī pārbaudes par garumu s katru reizi, pat ja
H-E-L-L-O ir vienmēr notiek ir piecas rakstzīmes.
Katru reizi, izmantojot šīs cilpas, pieci nemainās.
Es varētu būt palielināšanai i, bet ko ir garums no s uz katru
atkārtojuma šīs cilpas?
Tas ir piecas, tas ir pieci, tas ir pieci, un bet es tomēr lūdzot šo
jautājums atkal un atkal un atkal.
Tagad godīgi sakot, dators ir tik nopelt ātrs, neviens gatavojas paziņojums
starpība šajā gadījumā, bet šie veidi Nabadzīgo dizains lēmumus var
sākt pievienot uz augšu, ja kompilators pats nemēģina noteikt šo par jums, kas
tas parasti nebūtu, pie vismaz iekārtā.
>> Tāpēc es esmu gatavojas darīt to.
Es esmu gatavojas pievienot komatu pēc mans pirmais mainīgais, i.
Es esmu gatavojas sniegt sev citu mainīgs, aicinot to n, tikai ar
konvenciju par numuriem, un tad es esmu gatavojas piešķirt n vērtību virknes
garums no s.
Un tad es esmu gatavojas mainīt mans stāvoklis ir tas, ko?
Es esmu gatavojas mainīt savu stāvokli līdz kamēr i ir mazāks nekā n.
>> Tāpēc tagad, cik reizes es esmu pārbaudot garumu s?
Vienu reizi, bet tas ir OK, lai pārbaudītu, i pret n atkal un atkal, jo tagad tiem
vērtības nav reāli mainās.
Tagad, lai tagad, tikai zinu, ka jebkurā laikā jūs zvanu funkciju, tur ir mazliet
pieskaitāmās izmaksas, kas nav pietiekami, lai atturētu jūs tiešām no kādreiz, izmantojot funkcijas, bet
protams, ja tur ir koda līnija patīk, ka - un līnijas saņems
interesantāks pirms ilgi - ja tur ir iespēja domāt, ja es
ierakstiet šo kodu, cik reizes, tas izpilda?
Jūs sākat redzēt laika gaitā ir veiktspēju jūsu programmas var
patiešām mainās.
>> Patiesībā, viens no problēmas nosaka mēs esam darīts gadu iepriekš saistīta
īsteno, kā jūs varētu atsaukt no nedēļa nulle, pareizrakstības pārbaudītājs, bet
pareizrakstības pārbaudītājs, kas ir paredzēti, lai atbalstītu no 150000 vārdnīca plus
vārdi, ka mēs sniedz jums puiši.
Jums būtu rakstīt kodu, kas slodzes šie vārdi uz RAM, tāpēc uz
kastes, piemēram, mēs redzējām uz ekrāna brīdi atpakaļ, un pēc tam tik ātri, kā jūs
iespējams, jums ir nepieciešams, lai varētu atbildēt jautājums par formu, tas ir vārds
kļūdaini?
Vai šis vārds nepareizi?
>> Un kaut ko līdzīgu, ka tas, ko mēs esam darīts gadu iepriekš, ir pārvērtuši to,
kaut arī opt-in brīvprātīgās konkurss par veidu, ar kuru
studentiem, kuri izmanto mazāk RAM un mazāk laiks, mazāk CPU cikli, galu galā
burbuļo uz augšu mazliet vadītājs valdes vai rangu, ka mēs likts uz
Kurss mājaslapa kā mēs esam darīts gadu iepriekš.
Tātad vēlreiz, pilnīgi obligāta, bet tas runā ar dizaina iespējām
kas ir priekšā, kad mēs sākam ēkas atop daži no tiem
pamatelementiem.
>> Tātad, ļaujiet man iet atpakaļ uz šo diagramma tikai mirklis un atklāt maz
kaut ko vairāk.
Tas tiešām ir stīgu, un mēs esam veikuši priekšrocība dažiem bibliotēku,
standarta io.h, kas ir -
>> Printf.
>> Printf, cita starpā.
cs50.h, kas ir iegūt int un saņemt virkni un tā tālāk, string.h, kas
bija str Leng.
Bet izrādās, tur ir vēl viens.
Atklāti sakot, tur ir daudz un daudz galvenē failus, kas atzīt funkcijas
bibliotēkām, bet tas ctype.h ir faktiski būs nedaudz
izdevīgi, jo es esmu gatavojas iet uz priekšu un īstenot vienu
citu programmu šeit.
>> Ļaujiet man iet uz priekšu un atvērt kaut ko Es rakstīja sauc iepriekš
capitalize.c, un pieņemsim Paskaties, kā tas darbojas.
Ievērojiet, ka es esmu, izmantojot šajā versijā par to, trīs pazīstami failus.
Ievērojiet, ka 18 rindā, es esmu iegūt teksta rindiņu.
Paziņojuma 21 rindā, es esmu apgalvojot, ka šādu kodu gatavojas
kapitalizēt s, kāds lietotājs ievadījis in, un kā es daru, ka?
Nu, es esmu ņemot -
mācība, kas gūta pēdējo reizi -
Es esmu paziņojot, i un n un atkārtojot pār virknē rakstzīmes.
Un tad kāds ir šis bloks kods ar 27 24 līnija
darot lajs izteiksmē?
>> Mazo burtu atpakaļ.
>> Tieši tā.
Ja s kronšteins i - tā, ja i-th raksturs s, kas ir specifisks
char virknē, ir lielāks nekā vai vienāds ar mazo un -
atgādināt, ka dubultā aizvieto & zīmes neizsaka un -
un tas pats raksturs, s kronšteins i, ir mazāks par vai vienāds ar mazo z,
tas nozīmē, ka tas ir vai b vai c vai dot, dot, dot, vai z, kas nozīmē,
tas ir mazie.
Ko es gribu darīt šādā gadījumā?
Nu, es varu darīt nedaudz cryptically, bet
pieņemsim ķircināt to intervālu.
>> Es esmu dodas uz zvanu printf, drukā% c jo es gribu, lai to izdrukātu šo
rakstura uz ekrāna.
Es esmu tam gatavojas veikt s kronšteins Es, i-th raksturs s, un pēc tam, kāpēc
es daru šo maz triks šeit, mazo mīnus kapitāla A?
Kas ir tas, ka gatavojas sniegt me, vispārīgi runājot?
>> [Dzirdams].
>> Tieši tā.
Man nav īsti atcerēties -
tas bija 65 kapitāla A. Man nav īsti atceries, ko mazie ir,
bet vienalga.
Datoru zina.
Tātad, sakot, mazajiem mīnuss kapitālu, tas ir dīvaini, lai būtu
atņemot vienu char no cita, bet kādi ir simboli zem motora pārsega?
Viņi vienkārši numuri.
Tātad, neatkarīgi šie skaitļi ir, ļaujiet datoram atcerēties
nevis man cilvēku.
>> Tātad mazajiem mīnusa kapitālu ir gatavojas sniegt man atšķirību.
Tas notiek, ir 32, un kas būtu gadījumā mazo b un kapitāla B
un tā tālāk.
Tas paliek nemainīgs, par laimi.
Tāpēc es esmu būtībā sakot, veikt mazo burtu, atņemt off, ka
standarta atšķirība, un ka Efektīvi izmaiņu s kronšteins i no
mazo līdz, protams, lielie burti, bez mana tiešām, kam jādomā
par to, vai atceries, kādi bija tie, skaitļi, mēs runājām par to, kad astoņu
brīvprātīgie nāca uz skatuves?
Tagad tikmēr, kas cits, ja tas nav mazo burtu, kā noteikts
līdz 24 līnija, vienkārši izdrukāt to ārā.
Es tikai gribu pieskarties rakstzīmes, kas bija
faktiski sākotnēji mazie.
>> Tātad, pieņemsim redzēt.
Padarīt kapitalizēt.
Sastādītāja, OK.
. / Kapitalizēt.
Un man ierakstīt H-E-L-L-O ar mazajiem burtiem, Enter.
Un paziņojums, ka tas tiek pārvērsts uz lielajiem burtiem.
Ļaujiet man darīt to atkal ar citu vārdu.
Kā par D-A-V-I-D ar pirmo D kapitalizētas kā vārds parasti ir?
Enter.
Pamanāt, ka tas joprojām ir pareiza.
Tas tikai izvadīt, ka pirmā D nemainīgs via ka cits būvēt.
>> Tātad, paturiet prātā, tad, Pāris lietas šeit.
Viens, ja jūs kādreiz vēlaties pārbaudīt divus apstākļi vienu reizi, jūs varat, un tos
kopā kā prognozējām.
Jūs varat salīdzināt rakstzīmes šādā veidā un efektīvi ārstēt rakstzīmes kā
numurus, bet atklāti sakot, tas ir tik nopelt mistisks es nekad atcerēties
Kā nākt klajā ar to no nulles bez pamatojuma caur to diezgan
mazliet laika.
>> Vai nav tā bijis jauki, ja kāds tur rakstīja funkciju sauc, ir
samazināt, kas varētu atbildēt man patiess vai viltus, šis raksturs ir mazie?
Nu par laimi, kurš rakstīja ctype.h darīja tieši tā.
Ļaujiet man iet šeit un pievienot ctype par c veidiem, un tagad ļaujiet man iet uz leju šeit un
pārrakstīt šo līniju šādi.
>> Tātad, ja to sauc ir zemāks, es apgalvot, s kronšteins i, tad es esmu gatavojas, lai izdzēstu
šīs divas līnijas kopā.
Tāpēc tagad kāds cits, es esmu cerot, rakstīja sauc funkcija ir zemāks, un tas
Izrādās, viņi darīja, un viņi deklarē tā iekšpusē ctype.h.
Un tagad es esmu gatavojas atstāt līniju 27 viens pats, es esmu gatavojas atstāt līniju 31
vien, bet paziņojums, cik daudz es esmu pastiprināja manu kodu.
Tas tagad ir tīrāks.
Tas ir tik grūti skatīties cauri jo tagad funkciju, turklāt ir
tik brīnišķīgi nosaukts tā vienkārši dara to, ko tā saka.
>> Tāpēc tagad es esmu gatavojas, lai saglabātu to.
Es esmu gatavojas, lai tālinātu.
Un tāpat kā Scratch jūs varētu būt Booleans, Būla vērtības patiess vai
nepatiesa, tas ir tieši tas, kas ir zemākas efektīvi peļņu.
Ļaujiet man recompile.
Ļaujiet man atkārtoti palaist.
Un tagad pamēģināsim vēlreiz, H-E-L-L-O, Enter.
Tas ir diezgan laba.
Un mēģiniet vēlreiz, lai pārliecinātos, es nav screw kaut augšu.
Tas ir kapitalizētas kā labi.
>> Bet tas nav pietiekami labs, jo Otra lieta, ka es esmu nekad gatavojas
atceraties, ja vien es strādāju ar to patiešām Uzmanīgi uz, teiksim, papīrs ir
tas damn līniju.
Vai tas nebūtu jauki, ja tur bija funkcija aicināti augšējo?
Nu izrādās, ka tas ir ctype.h kā labi.
Es iešu uz priekšu un tips -
ļaujiet man sniegt šo līniju atpakaļ.
Tā vietā, lai to šeit, ļaujiet man iet uz priekšu un teikt, aizvietot% c ar
rezultāts aicinot šo funkciju, lai augšējā uz i-raksturu s.
Un tagad pamanāt, ka tas kļūst mazliet balstīts.
Man ir izsekot, cik daudz iekavas es esmu atvērt un aizvērt.
>> Tāpēc tagad tas ir pat tīrāks.
Tagad šī programma kļūst labāk, un labāk izstrādāti varbūt tāpēc, ka tas ir
daudz, daudz vieglāk uztveramu, bet tas nav pieņemsim labot.
Padarīt kapitalizēt.
. / Kapitalizēt.
H-E-L-L-O. Pieņemsim palaist to no jauna, D-A-V-I-D. Labi, tāpēc mēs esam vēl
diezgan laba forma.
>> Bet tagad ar augšējo.
Es ierosinu, ka tur ir vēl viens izsmalcinātība mēs varētu darīt, kas būtu
ļoti jauki, ka patiešām varētu pastiprināt up šo kodu un tiešām dod mums piecas
no pieciem projektēšanas, piemēram.
Kāda būtu jauki, lai atbrīvoties no?
Nu, paskaties, cik sasodīti garu šo bloku kods ir vienkārši darīt kaut ko vienkāršu.
>> Tagad kā malā, kā jūs varētu būt redzams super sadaļā šo pagājušo
nedēļas nogalē, jums nav obligāti nepieciešams cirtaini bikšturi, kad jūs vienkārši ir viens
līnija kods, lai gan mēs ierosinājām turot tos tā, ka tas padara daudz
vairāk skaidrs, tāpat kā nulles, ir U-veida bloki, kas ir iekšpusē filiāles.
Bet tas nebūtu jauki, ja ar augšējo, ievadot savu ieguldījumu, pārvērta to par
lielajiem burtiem, ja tā nav, un kas būtu būt brīnišķīgs pretējā gadījumā, ja
tas jau lielos?
Just iet caur un atstāt to atsevišķi.
>> Tāpēc varbūt tas, ka.
Es varētu izmēģināt un tikai ceru, ka ka tā, bet ļaujiet man
ieviest viena cita lieta.
Tā vietā, izmantojot šo iebūvētu termināli logu uz leju šeit atgādināt, ka
Šis laukums melnā icon ļauj jums lielāks termināļa logu, ka es varu pilns
ekrāns, ja es gribu?
Tātad izrādās, ka viņi veida savādi nosaukts, bet tur ir šie sauc lietas
cilvēks lapas, rokas lapas, īstermiņa Vīrietis, un es varu piekļūt šos ar
rakstīt man -
Ko es gribu tipam?
Cilvēks uz augšējo.
>> Un tagad paziņojums, ja pastāv darboties iekšpusē no datora, kas
Šajā gadījumā ierīce, kas ir tikai operētājsistēmas Linux, tas notiek
lai dotu man nedaudz mistisks kopumu produkciju, bet jūs atradīsiet, ka laika gaitā
tas vienmēr ir formatēts diezgan daudz paši, lai jūs sākat, lai pierastu pie tā.
Paziņojums augšā uz augšējo, un acīmredzot ir tas pats dokumentācija
lai samazināt.
Kurš rakstīja tas bija griešana dažas stūriem un nodot to visu uz vienas lapas.
Šīs lietas "mērķis ir dzīve ir, lai pārvērstu
vēstule augšējā vai mazajiem burtiem.
>> Ievērojiet, ka zem Anotācija, man lapa māca man to failu man ir
, lai iekļautu izmantot šo lietu.
Tas dod man parakstus par šiem funkcijas, gan no tām, pat
ja mēs tagad tikai rūp vienu.
Te tagad aprakstu.
Lai augšējā pārvērš vēstuli c lielajiem burtiem, ja iespējams.
>> Joprojām nav tik pamācošs, bet ļaujiet man tagad izskatās zem atgriešanās vērtību, lieta
kas ir nodotas atpakaļ.
Tā atpakaļ vērtība ir tā, ka no konvertētas burtu vai c, ja
konversija nebija iespējams.
Kas ir c?
>> Oriģināls raksturs.
>> Oriģināls raksturs, un mēs zinām, ka ar, atkal, iet uz augšu līdz
konspekts, un kurš rakstīja šo funkcija, tikko nolēma, ka ieejas
līdz līdz augšējo un apakšējā ir tikai patvaļīgi būs saukt c.
Tie varētu būt to sauca lielākā daļa kaut ko viņi vēlas, bet viņi tur to
vienkārši, kā c.
Tāpēc es esmu apspriešanās ar man lapu.
Šis teikums pārliecina mani, ka tad, ja tas nav mazo burtu, tas ir
gatavojas tikai dod man atpakaļ C, kas ir ideāls, kas nozīmē, es varu atbrīvoties no
mans cits stāvoklis.
>> Tātad, ļaujiet man iet atpakaļ uz gedit, un Tagad ļaujiet man vienkārši darīt to.
Es esmu gatavojas kopēt manu printf paziņojumu.
Es iešu uz priekšu un pa labi iekšā cilpa drukāt, ka ārā, un saņemt
atbrīvoties no, tagad šo visu, ja konstrukcija.
Nebija slikta ideja, un tas bija ļoti ļoti pareizs un atbilst
viss, ko mēs esam sludināja, bet vienkārši nav nepieciešams.
Tiklīdz tu saproti, kādu bibliotēka funkcija pastāv, ka kāds cits
rakstīja, vai varbūt jūs rakstījāt citur failu, jūs varat to izmantot un patiešām
sāk pastiprināt kodu.
>> Un kad es saku lietas, piemēram, labu stilu, Fakts, ka šī persona saukta
darbojas uz augšējo, vai iepriekš ir zemāks ir lieliski noderīgi, jo
viņi ir ļoti aprakstošs.
Jūs negribētu, lai izsauktu funkciju x un y un z, kas ir
daudz, daudz mazāk nozīme.
Visus jautājumus par šo sēriju uzlabojumu?
>> Tātad pietiek pateikt vienu takeaways ir pat kā savu problēmu
komplekts - varbūt problēma komplekts vienu, bet protams P noteikti divi un tālāk, pat
kad viņi pareizi ne vienmēr nozīmē, ka tie ir ideāli vienkārši
bet vai īpaši labi izstrādāta.
Tas ir cits ass sākt domāt par.
Tātad tas bija virkne iekšpusē jūsu datora atmiņā, bet, ja jums ir
viss bars no burtiem, piemēram, H-E-L-L-O iekšpusē RAM, un pieņemsim,
ka jūs savā programmā zvanu saņemt virkni vairākas reizes, piemēram, ka jūs
zvaniet saņemt virkni vienu reizi, tad jūs zvaniet saņemt virkni vēlreiz.
Nu, kas notiek, notiek laika gaitā?
>> Citiem vārdiem sakot, ja jums ir līnija kods, lai gan no konteksta, piemēram,
string s izpaužas -
pieņemsim to izdarītu.
String nosaukums ir vienāds saņemt virkni.
Tātad pieņemsim, ka koda līnija ir domāta pieprasīt no lietotāja par viņa vai viņas vārdu.
Šis nākamais līnija kods ir domāts lūgt lietotāju par viņa vai viņas skolā, un
Šis nākamais līnija, un tā tālāk.
Pieņemsim, ka mēs turpinām jautā citam lietotājam un
vēl un vēl virkne.
Viņi gatavojas palikt atmiņā tajā pašā laikā.
Viens nav gatavojas clobber otru.
Skola nav pārrakstīt otru.
Bet kur viņi visi galu galā atmiņā?
>> Nu, ja mēs sāktu izdarīt uz ekrāna, ko mēs varam izmantot šo lietu
Šeit, piemēram, tāfeles, ja šī melnā taisnstūris ir mana datora
atmiņa, es esmu gatavojas patvaļīgi sāktu sadalot to uz augšu maz kvadrātu,
katrs no kuriem ir vienu baitu atmiņas.
Atklāti sakot, ja jums ir gigabaitu RAM šajās dienās, jums ir miljards baitu
atmiņas jūsu datorā, lai miljards šo kvadrātu.
Tātad pietiek pateikt, tas nav īsti mērogā.
>> Bet mēs varētu saglabāt zīmēšanas visi šie protams, nav mēroga kvadrātu, un tas
kolektīvi pārstāv mana datora atmiņu.
Tagad mēs tikai to dot, dot, dot.
Tātad, citiem vārdiem sakot, ja es tagad liks lietotājs ar get auklu, lai dotu man
string, kas notiek?
Ja lietotājs veidu "sveiki", kas beidzas up in H-E-L-L-O. Bet pieņemsim,
lietotājs, tad veidi -
patiesībā, man nevajadzēja darīt sveiki, jo mēs esam jautā
viņiem par to nosaukumiem.
Tāpēc iesim atpakaļ, ja es varētu darīt.
>> Tātad, ja es tipa D-A-V-I-D uz manu vārdu, bet atgādināt, ka otrajā rindā
kods ir saņemt virkni atkal lai saņemtu savu skolu.
Kur ir šis vārds, ka lietotājs veidi, kas iet tālāk?
Nu, varbūt tas gatavojas iedziļināties H-A-R-V-A-R-D. Tātad, pat ja es esmu
sagatavots kā divām rindām, tas ir tikai viss ķekars baiti jūsu
Datora RAM.
Tur ir problēma tagad, jo tagad, ja es esmu izmantojot RAM tas ir ļoti saprātīgs
bet sava veida naiva veidā, ko jūs varat acīmredzot nav atšķirt?
Ja viena sākas un kur viens beidzas, labi?
Viņi veida saplūdušas kopā.
>> Tātad izrādās, datoru nedara.
Ļaujiet man patiesībā ritināt atpakaļ laikā ar dažas rakstzīmes, un tā vietā, Harvard
notiek tūlīt pēc lietotāja vārda, lietotājs faktiski izpaužas, aiz
ainas, īpašs raksturs iekļauts ar
Datoru viņam vai viņai.
/ 0, citādi pazīstams kā nul rakstura kaitinoši sauc par N-U-L, nav
N-U-L-L, bet jūs rakstīt to kā / 0.
Tas ir tikai visas nulles bitu, ir marķieris starp pirmo vārdu, ka lietotāja
drukāti un otrais.
>> Tātad Harvard faktiski tagad nonāks kā šo rakstzīmju secību
un viens vairāk / 0.
Tātad, citiem vārdiem sakot, ar kuru tie kontrolputni vērtības, astoņi blakus nulle
biti, tagad varat sākt, lai atšķirtu vienu rakstzīmi no cita.
Tātad, visu šo laiku, kas bija "sveiki" ir faktiski "sveiki" ar / 0, un
Tajā pašā laikā, varētu ļoti labi būt diezgan nedaudz vairāk RAM
iekšpusē no datora.
>> Ļaujiet man darīt viena cita lieta tagad.
Izrādās, ka visiem šiem kvadrātiem mēs esam zīmēšanas, tie ir, jā,
stīgas, bet plašākā nozīmē, šīs lietas ir masīvi.
Masīvs ir tikai rieciens atmiņas kas ir atpakaļ atpakaļ atpakaļ uz muguras,
un jūs parasti izmantot masīvu veidā Šīs kvadrātiekavas notācija.
Tātad, mēs ejam, lai redzētu šos diezgan daudz laika gaitā, bet ļaujiet man iet uz priekšu un
atvērt, sauksim to vecumu.
Un paziņojums, ko mēs varam darīt ar šie paši triku, nedaudz
nedaudz vairāk sintakse šeit.
>> Tātad šīs programmas 17 rindā - faktiski, ļaujiet man palaist programmu vispirms
lai mēs varētu redzēt, ko šī lieta nav.
Ļaujiet man zvanu veikt vecumu, lai apkopo šo programmu.
. / Vecumu.
Cik daudzi cilvēki ir telpā?
To sauc par trīs.
Vecums no pirmās personas?
18, 19, 20 un.
Un tagad nedaudz smieklīgi, es tikai ir veikuši programmu, kas AGES tiem
trīs cilvēki.
>> Tātad tur ir skaidri iespēja kādu fun aritmētisko šeit.
Par laimi, matemātika ir pareiza.
18 devās uz 19, 19 gāja līdz 20 un tā tālāk.
Bet kas īsti domāts, lai būtu ilustratīvu šeit ir, kā mēs uzglabāt
šo triju cilvēku vecumu.
Ļaujiet man tuvinātu to, kas ir notiek šeit.
>> Tātad, pirmkārt, šie pirmie dažas rindiņas būtu iegūt diezgan pazīstams.
Es esmu tikai pamudinot lietotājam, lai cilvēku skaits telpā.
Tad es esmu, izmantojot saņemt int un darīt, bet, lai darīt atkal un atkal un atkal.
Mēs esam redzējuši šo rakstu pirms, bet līnija 27 ir jauna un samērā
noderīgi, un kļūs arvien noderīgs.
Ievērojiet, ka to, kas ir atšķirīgs 27 rindā ir tā, ka es, šķiet, deklarējot
int sauc par vecumu, bet jāgaida.
Tas ir ne tikai int vecumu.
Tur ir šīs kvadrātiekavas, iekšpusē no kuriem ir n.
>> Tātad kronšteins n šajā sakarā nav iekšpusē printf paziņojumu šeit, bet
Šajā vienīgā līnijā 27, šī līnija ir sakot, dod man n Ints, no kuriem katrs
ir int tipa.
Tātad tas ir spainis, tā sakot, no, Šajā gadījumā, trīs veseli skaitļi atpakaļ uz
atpakaļ atpakaļ, lai es efektīvi ir trīs mainīgos.
Alternatīva, lai būtu skaidrs, būtu šāds.
>> Ja es gribēju pirmo studenta vecuma, es varētu darīt.
Ja es gribēju otrais students ir vecumā es varētu darīt.
Ja es gribēju trešo studenta vecuma, es varētu darīt.
Un nedod Dievs, mums ir nepieciešama ikviena vecums šajā telpā -
Es domāju, tas ir heck par daudz kopiju, paste atkal un atkal un atkal.
Un plus, kad es apkopo šo programmu, ja cits students staigā pa ārā
no šīm durvīm, tagad mans numurs mainīgo lielumu ir nepareizs.
>> Tātad, kas ir jauka par masīva ir Tiklīdz jūs sākat sajūta sevi
kopējot un ielīmējot, izredzes ir, ka tas nav labākā pieeja.
Masīvs ir dinamisks iespējams.
Es nezinu iepriekš, cik daudz cilvēku būs telpā,
bet es zinu, man ir nepieciešams n no viņiem, un es ņemšu izdomāt n, kad pienāks laiks.
Šī koda līnija tagad nozīmē, dod man rieciens atmiņas, kas izskatās šādi
kur kastīšu skaits uz ekrāna ir pilnībā atkarīga no n, ka
lietotājs drukāti collas
>> Tāpēc tagad šīs programmas pārējais ir faktiski ir diezgan līdzīgs tam, ko mēs
vienkārši darīja ar burtiem.
Paziņojums, man ir cilpa sākot no 30 līnijas.
Tāpēc uzreiz pēc man masīvs, es atkārtot no y ir vienāds ar nulli uz līdz pat n.
Man vienkārši ir šī pamācošs printf ziņa vienkārši sakot, man vecuma
no personas #% i, tā numurs viens, numur divi, skaits ir trīs.
Un kāpēc man darīt?
Atklāti sakot, cilvēki dod priekšroku skaitīt no viena uz augšu tā datorzinātnieku,
nullei uz augšu.
datorzinātnieku nav gatavojas izmantot šāda veida programmas, tāpēc mēs esam
gatavojas tikai sākt skaitīšanu pie viena kā normāliem cilvēkiem.
>> Un tagad 33 rindā, paziņojums nedaudz atšķirīga gabals sintaksi.
I-vecums šajā mainīgo tipa masīvs ir gatavojas iegūt int.
Un tagad visbeidzot, tas ir tikai aritmētika leju šeit.
Es nolēmu atsevišķā cilpu, varētu pieprasīt kādu laiku iet, un tagad tas
atsevišķa cilpa, šīs līnijas izpildīt.
>> Gadā no tagad, cilvēks i būs i gadus vecs, bet paziņojums, tas nav
mainīgo i.
Tas tagad ir% i par int.
Un paziņojums par pirmo viettura, es iespraudiet i plus 1, tāpēc mēs paļaujamies, piemēram,
normāls cilvēks.
Un pēc tam, lai, ko veido to vecumu, par i gadus vecs, es AGES skavu
i - un kāpēc es daru plus vienu šeit?
Viņi vienkārši vecumā.
Tā ir mana stulba izvēle programmu.
Viņi vienkārši vecumā vienu gadu.
Es varētu rakstīt jebkuru numuru, kas Es tiešām gribu tur.
>> Tātad, kas patiesībā visu atbilstība šeit?
Nu, ļaujiet man patiesībā ritināt atpakaļ nekā šeit, un uzzīmēt zīmējumu
par to, kas ir priekšā.
Ko mēs darīt ar mūsu nākamais Problēma Set Divi ir niekošanās
pasaules kriptogrāfiju.
Tātad tas ir rakstzīmju virkne, tā secība vairākiem simboliem, un kādi
tas saka?
Tas nav tiešsaistes versijā no slaidiem.
>> Tāpēc es apgalvo, ka tas ir vienāds ar to, stulba reklāma no daudziem gadiem
atpakaļ, ka tiešām var atcerēties viens no tā izcelsmes.
Tātad šis ir piemērs šifrēšanas vai kriptogrāfija.
Izrādās, ka, ja jūs vēlaties, lai faktiski sūtīt informāciju vai daļu
Informācija ar kādu stingrāk kā ziņu, piemēram, jūs varat
motokross burtus.
Bet parasti, vārdi ir nav scrambled nejauši.
Viņi permutēts kaut kādā veidā vai mainīti kaut kādā veidā, lai - Hmm.
Tas ir jautri spoileris uz nākamo reizi.
>> Tātad jūs varat kartes, kas ir acīmredzami O B. Paziņojumu, ka līniju līdz
kapitalizācijas gudrs.
Acīmredzot r kļūst e.
Acīmredzot F-H-E-R kļūst S-U-R-E. Tā izrādās, tur ir kartēšanu, un
Šajā gadījumā tur ir diezgan stulba kartēšanas ja kāds ir izpētījuši to ārā?
Tas ir kaut kas ko sauc 13 puve, Pagriezt 13.
Tas ir stulbākais šifrēšanas mehānismus, jo tas burtiski tikko
papildina 13 uz katru no burtiem, stulba tādā nozīmē, ka, ja jūs vienkārši
ir mazliet brīva laika uz rokas un zīmuli, vai arī jūs vienkārši domājat, ka tas
caur jūsu galvas, jūs varētu mēģināt visi iespējamie papildinājumi - viens, divi,
trīs, dot, dot, dot, 25 vienkārši pagriezt visu alfabētu, un
galu galā, jūs izrēķināt ko šis ziņojums.
Tātad, ja jūs kaut kas līdzīgs šim grade skolas iet ziņojumus saviem
labākais draugs, ja jūsu grade skolas Skolotājs vienkārši izlasīt
ziņu un brutālu spiesti risinājumu, Jums varētu būt gotten
atbildi ar to.
>> Tagad, protams, reālajā pasaulē, kriptogrāfija ir sarežģītāka.
Tas ir teksta fragments no datorsistēma, kas ir lietotājvārdus un
paroles, jo gandrīz visi mūsējie dara, un tas ir tas, kas jūsu paroles varētu
izskatās, ja uzglabā uz cietā braukt bet šifrētā veidā.
Tas ir ne tikai rotācija no burtiem, Ir B un B ir C. Tas ir
daudz sarežģītākas, bet tā izmanto to, kas parasti sauc par slepeno atslēgu
kriptogrāfija.
Šis attēls stāsta šādiem stāsts ar dažiem ikonas.
>> Kreisajā pusē, mums ir, ko mēs saucam teksta.
Pasaulē kriptogrāfija, vienkāršā teksts ir tikai sākotnējais ziņojums
uzrakstīts angļu vai franču valodā vai nevienā valodā.
Ja jūs vēlaties, lai šifrētu, mēs caurlaide tā gleznieciski ar piekaramo atslēgu, lai
daži veida algoritmu, dažas funkcijas vai programmu, ka kāds rakstīja
ka scrambles burtiem cerams vairāk complicatedly nekā tikai pievienojot 13
uz katru no tiem.
>> Ko jūs saņemsiet no šī procesa vidū tur sauc cyphertext.
Tātad sava veida sexy vārda.
Tas tikai nozīmē, ka tas ir šifrēts versija teksta.
Un tikai tad, ja jums ir, ka pats noslēpums, 13 vai mīnus 13, jūs varētu
atšifrētu ziņojumu, piemēram, ka.
>> Tātad problēma noteikti divi, starp lietām jūs darīt, ja šajā Hacker
Izdevums, jums būs rakstīt kodu kreka šīs paroles, norādītas
kādi tie bija, un kā viņi šifrēta, lai gan mēs jums mazliet
gada vadlīnijas gar ceļu.
Jo standarta versiju, mēs ieviest pāris cipariem, šifrēšana
mehānismi, viens sauc Cēzara, viena sauc Vigenere, ka joprojām
rotācijas šifrēšana, kad kļūst kaut kas, B kļūst par kaut ko, bet
jums ir darīt to programmiski jo tur patiešām ir noslēpums
iesaistīts atslēga, kas parasti ir skaitlis vai atslēgvārdu, ka tikai
Nosūtītājs un no tiem saņēmējs ziņas vajadzētu saprast.
>> Tagad, tas patiesībā ir inkarnācijām reālajā pasaulē.
Tas, piemēram, ir maz bārenis Annie noslēpums dekodera gredzenu, un jūs
var faktiski īstenot šos rotācijas šifrēšana -
Kļūst par kaut ko, B kļūst kaut kas - ar pāris riteņiem,
viens no ārpuses, viens no iekšpuses tāds, ka, ja jūs pagriezt riteni vai
gredzenu, jūs faktiski var sarindot burti ar dažādiem burtiem,
iegūt slepeno kodu.
Un tā kā cliffhanger uz šodienu, to, ko es domāju, es gribētu darīt, ir mazliet
atavisms, ka, ja jūs ieslēdzat televizoru 24.decembrī, jūs varat skatīties
Filma reklāmu nauseum par 24 stundas pēc kārtas.
Bet šodien, es ņemšu atveriet to šeit! un dod mums tikai divas minūtes
pedagoģiski būtisks Ziemassvētku stāsts ar nelielu puisis nosaukts Ralphie.
>> [VIDEO PLAYBACK]
>> -Vai tas būtu zināms visiem un dažādi, ka Ralfs Parker tiek iecelts
loceklis Little Orphan Annie noslēpums aplis, un ir tiesības uz visiem
apbalvojumus un ieguvumi kas notiek ar to.
>> -Parakstīts, Little Orphan Annija.
Parakstu, Pierre Andre ar tinti.
Apbalvojumus un ieguvumi jau vecumā no deviņiem.
>> [Kliegšana uz radio]
>> Come on, let s get par ar to.
Man nevajag visu, kas jazz par kontrabandistiem un pirāti.
>> -Klausieties rīt nakts noslēdzot piedzīvojumu melna
pirātu kuģis.
Tagad ir pienācis laiks, lai Annie Secret Ziņa par jums biedriem
par slepeno apļa.
Atcerieties, ka bērni.
Tikai biedri Annie Secret Circle var atšifrēt Annie slepeno ziņu.
Atcerieties, Annie ir atkarīgs no jums.
Nosakiet savu pins līdz B2.
Šeit ir ziņa.
12, 11, 2 -
>> -Es savā pirmajā slepenā sanāksmē.
>> -25, 14, 11, 18, 16 -
>> -Pierre bija liels balss šovakar.
Es varētu pateikt, ka šovakar vēstījumu bija ļoti svarīga.
>> -3, 25.
Tas ir vēstījums no Annie pati.
Atcerieties, nesaki nevienam.
>> -90 Sekundes vēlāk, es esmu tikai telpā mājā, kur zēns no deviņiem
varētu sēdēt privātumu un atšifrēt.
Aha, B. Es devos uz nākamo.
E. Pirmais vārds ir "būt." S. Tas nāk vieglāk tagad.
U. 25.
Tas ir R.
>> -Nāc, Ralphie.
I gotta iet.
>> -I'll būt tiesības uz leju, Ma.
Gee sīkšana.
>> -T. O. Noteikti.
Noteikti ko?
Kāds bija Little Bārenis Annie cenšas pateikt?
Noteikti ko?
>> -Ralphie, Randy ir ieguvuši iet.
Vai jūs, lūdzu, nākt ārā?
>> -Nu labi, Ma.
Es būšu out.
>> -Es biju kļūst tuvāk tagad.
Spriedze bija briesmīga.
Kas tas bija?
No planētas liktenis var karājas līdzsvarā.
>> -Ralphie, Randy s gotta go.
>> -I'll būt tiesības, kas paredzēti kliedz skaļi.
>> -Gandrīz tur.
Mani pirksti lidoja.
Mans prāts bija tērauda lamatas.
Katru poru vibrāciju.
Tas bija gandrīz skaidrs.
Jā, jā, jā, jā, jā.
>> -Noteikti dzert Ovaltine.
Ovaltine?
Apaļīgs tirdzniecības?
Dēls kuce.
>> [END VIDEO PLAYBACK]
>> SPEAKER 1: Tas ir CS50, un ka Būs Problēma noteikti divi.
Tiekamies nākamnedēļ.
>> SPEAKER 2: At nākamo CS50, tas notiek.
>> SPEAKER 1: Tik viens jautājums mums nav paskatījās līdz šim ir
ka funkcija norādes.
Tagad, funkcija rādītājs ir tikai adresi publisko
funkcija, bet līdzīgi -
dēls -