>> SPEAKER 1: Id-dritt.
Merħba lura.
Dan huwa Week Tnejn mill CS50, u għandna s'issa kienu jużaw funzjonijiet iżda
aktar meħuda għall mogħtija lilhom.
Imxejna użati printf li għandha l- effett sekondarju ta 'l-istampar
affarijiet fuq l-iskrin.
Imxejna użati nikseb-int, jiksbu float.
>> Imma x'jiġri jekk inti fil-fatt tixtieq li joħolqu funzjonijiet tiegħek, għaliex xi wħud minn
inti tista 'diġà bdew tagħmel għall Problem Set One, għalkemm
mhux strettament meħtieġ?
Well, ejja imorru quddiem u tirrevedi dik problema ta 'biss tistaqsi għall-utent
isem tagħhom u l-istampar xi ħaġa fuq il- iskrin, iżda jippruvaw fattur out xi
tal-komunalità li aħna ħadthom jidhru fil-kodiċi tagħna s'issa.
So I tfisser li dan li ġej.
>> Jien ser jimxi 'l quddiem u joħolqu programm ġdid, biss sejħa
dan hello.c bħas-soltu.
Jien ser jimxi 'l quddiem u jagħtu myself jinkludu io.h standard fil-quċċata.
Jien ser ukoll tagħti myself preemptively-librerija CS50 sabiex
I ma jsibux għajjat ​​fil mis-kompilatur.
U issa jien se jimxi 'l quddiem u tiddikjara int, prinċipali, bla effett.
>> U mbagħad fil hawn, din hija fejn irrid biex jibdew jesternalizzaw funzjonalità li
xi funzjoni oħra li I myself am ser jikteb imma li ma
jeżistu bħalissa.
Per eżempju, ejja ngħidu li xtaqt li jiktbu funzjoni li tippermetti lili biex
jistampa hello, comma, u imbagħad Isem xi utent.
Pjuttost milli jkomplu jagħmlu printf hello,% s, ma kienx ikun sbieħ jekk
kien hemm biss funzjoni msejħa ma printf iżda isem print?
>> Allura fi kliem ieħor, nixtieq li tkun tista ' jikteb programm li ma ftit
xi ħaġa bħal din.
L-ewwel, jien ser ngħid printf tiegħek isem, b'hekk wassal lill-utent biex
tagħti me-isem tiegħu jew tagħha, u allura jien ser tuża l-i string familjari
tiddikjara string.
Agħti me varjabbli ta 'string tip, sejħa hija s, u jaħżnu f'dak l-
riżultat ta 'sejħa tikseb sekwenza.
Imma issa fil-ġimgħat li għaddew, I jkollhom kemmxejn tediously jsir hello,% s / n.
>> U fi kliem ieħor, Rajna dan Eżempju mazz ta 'drabi, u huwa
eżempju trivjali għaliex hemm biss wieħed linja tal-kodiċi hekk huwa verament mhux
big deal biex iżommu ittajpjar fl-ġdid.
Iżda jissoponi li din il-linja tal-kodiċi attwalment kienu qed isiru piż, u
mhuwiex linja waħda tal-kodiċi iżda huwa 10 linji ta 'kodiċi ftit ġimgħat minn issa,
u int biss jkollna għajjien ta 'ikkupjar u pasta jew
retyping-istess kodiċi.
Ma Ikun sbieħ minflok tagħmel printf hello,% s u oħrajn,
ma kienx ikun sbieħ jekk kien hemm biss funzjoni msejħa isem print li
jieħu argument -
fi kliem ieħor, hija tieħu input -
u mbagħad virgola.
Allura dik il-funzjoni, se le Ikun sbieħ jekk kien jeżisti?
Imbagħad I ma jkollhomx għalfejn tinkwieta dwar dak printf huwa,% s dak u kollha ta '
dawn il-kumplessitajiet li huma mhux kollha li interessanti.
Dawn huma utli.
>> Allura isem jistampa, sfortunatament, ma kienx ivvintati xi 40 sena ilu plus.
Ħadd ma ħsibt li tikteb.
Imma dak li l-sbuħija ta 'wara lingwa ta 'programmar, bħal fil
Scratch tista 'tiddefinixxi blokki tad-dwana, sabiex fis-C u aktar kwalunkwe lingwa, tista 'inti
jiddefinixxu funzjonalità tiegħek, tista inti tiddefinixxi funzjonijiet tiegħek stess.
Allura anke jekk aħna nikseb prinċipali mill awtomatikament b'xejn, nistgħu tiddikjara
funzjonijiet tagħna stess.
>> Hekk jien ser tagħmel xi kamra up here top up, u jien ser tiddikjara tiegħi
funzjoni stess li għaddej biex tfittex ftit stramba fl-ewwel imma aħna ser jaslu
lura għal dan qabel twil.
Jien se ngħid null, u b'hekk tindika din il-funzjoni ma
xi ħaġa, għandu effett sekondarju, iżda ma ritorn xi ħaġa li lili fil-
istess mod li jiksbu int jew nikseb string innifsu ma.
U jien ser jagħti din il-funzjoni ta ' ISEM TAL-isem istampar, u jien ser
jispeċifika li dan Guy se jieħu string, u jien ser sejħa li
isem string.
I jistgħu sejħa hija xejn nixtieq, imma I tixtieq kodiċi tiegħi biex ikunu awto-dokumentazzjoni.
Fi kliem ieħor, jekk wieħed minnkom kellhom tiftaħ dan il-fajl u taqrah, inti tista '
tip ta 'jiddeduċu mill-isem ta' dik input liema rwol huwa suppost li jilagħbu.
>> U issa hawn taħt li, jien ser tiftaħ kaboċċi Brace u magħluqa Brace kaboċċi,
u għalhekk avviż stajt segwa l-istess mudell fuq erba 'linji permezz seba bħala
Stajt ġew wara għal ġimgħa tajba plus issa bejn, ngħidu aħna, linji disa u
14 li jikkomponu prinċipali.
Fi kliem ieħor, jistampa l-isem huwa funzjoni oħra.
Issa, il-kompilatur mhux se tkun taf li jitolbu dan ħaġa awtomatikament
minħabba I litteralment biss ivvintat dan, iżda se tkun taf xorta li jsejħu prinċipali
awtomatikament, u mbagħad naturalment fl linja 13, I am ssejjaħ il-funzjoni tiegħi stess.
U għaliex stajt ddikjarat dik il-funzjoni up on line erba qabel prinċipali,
dan se jgħallmu l-kompilatur dak kwotazzjoni, unquote, "isem print"
ifisser u x'għandha tagħmel.
Hekk jien tip ta jtuha custom ġdida blokk fil-kuntest ta ', ngħidu aħna, Scratch.
>> Allura fil hawn, I tista 'tpoġġi li komuni ħafna jew mudell rikorrenti ta 'kodiċi I iżommu
kitba fil-klassi, printf % S hello,% s / n ", -
dak li għandi jridu jitqiegħdu hawn?
S?
So I tixtieq li tpoġġi l-isem f'dan il-kuntest.
Allura avviż daqsxejn ta 'dikotomija hawn.
Minħabba I am tiddikjara funzjoni tiegħi stess u jien kemmxejn arbitrarju imsejjaħ
huwa jistampa l-isem, u għaliex stajt speċifikat fil-parentesi li dan
funzjoni jieħu argument wieħed, it-tip ta ' li huwa string - hekk huwa kelma
jew frażi jew xi ħaġa bħal dik - u Jien ssejjaħ dak l-isem argument, li
mod l-uniku varjabbli li fil ambitu, biex ngħidu hekk, huwa l-isem.
>> S teżisti biss bejn dak tnejn braces kaboċċi, naturalment?
Ukoll verament, bħad-linja 10 permezz 14, hekk bħad-Tnejn ma tistax tuża
S, imma dak I tista 'tagħmel huwa jgħaddi S fil isem print.
Stampa isem biss hekk jiġri li tagħtiha alias, sinonimu, laqam,
ssejjaħ dan l-isem, u issa jużawha f'dan il-linja.
Allura issa let me Ħlief dan, zoom out.
>> Let me imorru quddiem u jagħmlu bonjour.
Jidher tajjeb.
Ma bżiq out xi żbalji. . / Bonjour Ikteb.
X'hemm isem tiegħi?
David.
U bonjour David.
Allura mhux kollha li eċċitanti, iżda biss naħseb issa.
Inti issa għandhom l-istess ingredjent kif għamilna fl Scratch biex
jagħmlu funzjonijiet tagħna stess.
>> Iżda hemm daqsxejn ta 'gotcha.
Ejja ngħidu li kelli ma ħsibt dan permezz u I attwalment mingħajr
verament ħsieb dwar dan kiteb dik il-funzjoni stabbiliti hawn.
Iħoss perfettament raġonevoli.
Fil Scratch m'hemm l-ebda idea fil-post fejn skripts tiegħek.
Inti tista 'tpoġġi wieħed up hawn, wieħed up hawn, wieħed up hawn, u jista 'jibda
li tħares messy ftit jekk inti ma jistabbilixxu dan jitwettaq pulit, iżda ma
irrispettivament minn fejn fiżikament l-iskripts kienu fuq l-iskrin.
Sfortunatament C - u dan huwa kuntrarju lingwi bħal Java u Python
u oħrajn li inti jista 'jkun familjari ma '- sfortunatament C, sabiex ma
jimpurtax għax watch x'hemm jiġri issa.
>> Il-funzjoni default li għaddej li jesegwixxi huwa, ovvjament, prinċipali.
Main hija ser sejħa isem istampar fuq linja tmienja, imma sfortunatament, l-
kompilatur mhux se anki taf li l-isem istampar jeżisti sakemm jiġrilha għal-linja 11,
li sfortunatament huwa se jkun tard wisq.
Mela ejja ma jagħmlu bonjour.
U issa kkritikat, żewġ żbalji iġġenerat.
Allura issa let me iscroll sal-ħafna ewwel, kif għandna dejjem tagħmel, u
avviż li huwa yelling fil lili, "Dikjarazzjoni impliċitu tal-funzjoni
print isem. "
>> Allura aħna stajt tidher dan il-messaġġ qabel, dikjarazzjoni impliċita tal-funzjoni.
Meta ma rajna dak it-tip ta 'żball?
Meta I ma jinkludu librerija.
Jekk I nesa cs50.h u nixtieq nikseb għajjat ​​fil għal tikseb string jew tikseb int.
Iżda f'dan il-każ, dan l-istampar funzjoni isem ma jkunx librerija, id-dritt?
Huwa litteralment f'dan il-fajl, hekk x'hemm verament il-problema?
>> Ukoll sfortunatament C, din tieħdok hekk oerhört litteralment li jekk inti
tixtieq funzjoni msejħa isem print jeżistu, miegħek jew ikollhom biex jimplimentaw
dik il-funzjoni fil-quċċata ħafna tal tiegħek kodiċi b'tali mod li huwa aċċessibbli biex ibaxxu
funzjonijiet, iżda franchement, li ssir sloppy malajr ħafna.
Personalment, I simili tqegħid prinċipali ewwel għaliex allura huwa ċar ħafna liema dan
programm ma ewwel daqqa t'għajn.
U plus, inti tista 'tikseb fis rokna stramb każijiet fejn jekk x trid sejħa
y imma y tista 'sejħa x, inti biss fiżikament ma jistgħux fil-fatt imqiegħda wieħed
fuq l-oħra.
>> Iżda jirriżulta fis-C, nistgħu issolvi din ħafna sempliċement.
Jien ser tpoġġi xi ftit ta 'spazju up hawn, u jien biss ser
preemptively, għalkemm kemmxejn redundantly, ser jgħallem l-
kompilatur li teżisti funzjoni imsejħa isem istampar, hija tieħu string,
u jien ser sejħa huwa isem virgola.
>> Allura dan issa konformi erba, li aħna ma bbenefikawx qabel, hija dikjarazzjoni
ta 'isem print funzjoni, imma hija biss wegħda li din il-funzjoni se
jiġu definiti eventwalment, eventwalment jiġu implimentati.
Dan issa I tista 'tħalli biss minħabba issa dan huwa l-definizzjoni, l-
, l-implimentazzjoni tip ta 'l-aħħar mil tal-implimentazzjoni ta 'din
funzjoni partikolari.
Allura franchement huwa stupid, huwa annoying, iżda dan huwa l-mod C hija, u huwa
minħabba li tieħdok ħafna litteralment u, bħala kompjuter franchement għandhom,
biss ma eżattament dak li għandek għid li tagħmel, u sabiex tordna hija importanti.
>> Sabiex iżommu dan f'moħħhom u għal darb'oħra, jibdew avviż-rikorrenza ta 'mudelli.
Odds huma inti se, jekk inti ma jkunux diġà, jibdew jiltaqgħu messaġġi
bħal dan li ewwel daqqa t'għajn jidhru kompletament cryptic, imma jekk inti tibda
biex tfittex dawn il-kliem prinċipali bħal "Dikjarazzjoni impliċitu," isemmu ta '
funzjoni f'dan il-każ - u franchement, inti xi kultant anki jiksbu aħdar ftit
simbolu zunnarija li jgħidlek fejn inti il-kwistjoni probabbilment -
inti tista 'tibda taħdem tiegħek mod permezz għadhom messaġġi ta 'żball li ma tidhirx.
Kwalunkwe mistoqsijiet dwar il-kitba tiegħek funzjoni stess b'dan il-mod?
>> Ejja nagħmlu xi ħaġa li a ftit aktar konvinċenti.
Pjuttost milli sempliċiment tagħmel xi ħaġa li għandha effett sekondarju ta 'l-istampar, let me go
quddiem u ħlief fajl ġdid, u aħna ser sejħa dan positive.c, anki jekk huwa
ser tkun ftit differenti versus aħħar darba.
U din id-darba, nixtieq li jerġa jimplementaha eżempju positive.C aħħar darba, li
huwa seħħ il-utent biex tagħti me numru sħiħ pożittiv.
Imma I kellhom jużaw tikseb aħħar darba int.
Ma Ikun sbieħ jekk kien hemm funzjoni msejħa tikseb int pożittiv
li I jistgħu biss jesternalizzaw dan biċċa ta 'funzjonalità li?
Allura l-differenza hawnhekk hija aħna ser jimplimentaw tikseb int pożittiv, iżda għall-kuntrarju
Isem print li kellhom effett sekondarju - huwa ma reġgħux lura xi ħaġa li lili bħal
numru jew sekwenza -
nikseb int pożittiv huwa, naturalment, se ritorn, wieħed jittama, a int pożittiv.
>> Mela ejja jagħmlu dan.
Inkludi cs50.h, Inkludi standard io.h.
Int null prinċipali.
U issa fil hawn, jien ser jimxi 'l quddiem u ejja ngħidu int, sejħa hija n, ugwali
nikseb int pożittiv.
U bħad tikseb int diġà teżisti minħabba li l-persunal kiteb dan, jien ser
li wieħed jassumi għall-mument li tikseb int pożittiv jeżisti, u issa jien ser
jimxi 'l quddiem u jgħidu printf, grazzi għall-% i / n ", n.
>> Allura issa jekk I jiġbor dan il-programm, liema jiġri fil-terminal tiegħi
tieqa fil-qiegħ ta l-iskrin?
Jien ser probabbilment nikseb li istess żball bħal qabel.
Mela ejja tipprova dan.
Kun pożittiv.
U għal darb'oħra, dikjarazzjoni impliċitu tal-funzjoni, jiksbu int pożittiv.
Allura nistgħu issolvi dan ftit ta 'modi.
Jien ser jżommha sempliċi u biss tpoġġi dikjarazzjoni tiegħi up hawn u jiksbu
int pożittiv.
I bżonn l-firma hekk imsejħa.
Il-firma biss jirreferi għall-estetika tal-
ewwel linja tal-programm.
Allura dak li għandu tikseb pożittiv int ritorn?
>> Allura int.
I mean idealment, dan se jerġa 'lura xi ħaġa bħal int pożittiva, iżda li
ma teżistix.
Imxejna ma bbenefikawx li fost data tagħna tipi, hekk aħna li jittrattaw l-
fatt li għandna ftit tipi ta 'data li jaħdmu magħhom.
Iżda aħna jistgħu jirritornaw l-int u biss fiduċja li jrid ikun pożittiv.
Huwa ser jiġi msejjaħ nikseb int pożittiv.
>> U issa kif dwar argumenti tagħha?
Ma tieħu kwalunkwe input?
Ma bżonn xi input?
Allura ma għandux bżonn tkun taf fil-xejn quddiem.
Get string ma, jiksbu int ma.
Printf ma - jeħtieġ li jkollu xi input mgħoddija fis dan - u l-isem istampar
meħtieġa xi input, iżda jiksbu int pożittiv ma.
Hekk jien ser espliċitament tell-vojt kompilatur.
Null huwa n-nuqqas ta 'xi ħaġa oħra.
Allura mezzi null xejn qed jiġri ġewwa ta 'dawk parentesi, b'waqfa u virgola.
>> U issa fil-qiegħ tal-fajl tiegħi - u għal darb'oħra, jien biss qed tip ta 'anali
hawn tqegħid prinċipali fil-quċċata, li Hija prattika tajba għaliex b'dan il-mod,
ghaċ inti jew xi ħadd ieħor jiftaħ fajl tiegħek, il-
funzjonalità huwa hemm dritt.
Tista adsa minn wieħed kwadru.
Allura issa jien ser duplikat dan, tikseb null int pożittiva, imma jien ma
ser jintlaqtu u virgola issa.
Jien ser tiftaħ ċingi kaboċċi, u issa I bżonn li jissellef
xi ideat mit-Tnejn.
>> Allura kif inti recall, għamilna xi ħaġa tixtieq tagħmel dan li ġej waqt li
xi ħaġa li kien veru.
U dak li ma nagħmel?
Jien għamilt xi ħaġa simili tagħti me numru sħiħ pożittiv,
ftit ta 'pront.
I jistgħu jużaw xi kliem li nixtieq.
U mbagħad I użati dak?
Int n ugwali tikseb int, ebda argumenti lilha.
>> U avviż-differenza.
Meta inti sejħa funzjoni, meta tuża funzjoni, inti ma tpoġġi fil nulli.
Inti biss tagħmel dan meta tiddikjara li funzjoni, tagħlim tal-kompilatur dak
għandu jistenna.
Allura inti m'għandekx bżonn li tpoġġi null hemm yourself.
>> U issa dak li kien kundizzjoni tiegħi?
Ukoll, n mhuwiex ugwali għal pożittiv, iżda li biss psewdo-kodiċi.
Allura kif nista jesprimu dan aktar nadif?
Allura inqas minn jew ugwali għal żero.
Għalhekk għal darb'oħra, avviż inti tista 'tagħmel inqas minn jew ugwali għal.
Anki jekk huwa żewġ separati simboli, inti tista 'tagħmel dan fuq
tastiera tiegħek bħala tali.
>> Iżda hemm għadu bug li I invitat up aħħar darba wisq.
Irrid niddikjara -
eżattament.
I jkollha tiddikjara n barra tal-linja.
So I bżonn biex n up hawn, u jien ma tixtieq li terġa 'tiddikjara dan fil hawn
lest niġi varjabbli ġdid.
I biss jixtiequ assenjat valur fil hawn.
>> U issa jien ma pjuttost isir hawn.
Let me nikseb qabel myself u nippretendu jien jsir.
Kun pożittiv, u issa hemm żball ġdid.
Kontroll tasal fi tmiem ta ' funzjoni mhux null.
Allura messaġġ ġdid ta 'żball, imma jekk inti tip ta tease apparti kull wieħed mill-kliem, huwa
probabbilment timplika referenza għall x'hemm ħażin.
>> Kontroll.
Kontroll ifisser biss l-ordni ta 'operazzjonijiet fi programm.
Il-kompjuter huwa fil-kontroll u xi ħaġa li marret ħażin.
Għalhekk jasal fl-aħħar tal- funzjoni mhux null.
Liema funzjoni huwa apparentement jirreferu għall?
Liema funzjoni hija mhux null?
Allura nikseb int pożittivi, u ftit toħloq konfużjoni sew,
huwa tip ta 'bla effett.
Hija għandha speċifikazzjoni tal invalidu għal tagħha argumenti, iżda output tagħha se
jkun ta n tip.
Allura l-kelma fuq ix-xellug huwa l- hekk imsejħa tip ritorn.
Il-kelma fuq ġewwa hawnhekk huwa l-argumenti żero jew aktar
li l-funzjoni jieħu.
>> Mela xi do I bżonn tagħmel?
F'dan il-punt fil-kodiċi tiegħi, linja 21 fejn fil-pront Teptip issa, I
ikollhom int pożittiv ġewwa tal-varjabbli imsejħa n.
Kif nagħti lura għal main?
Litteralment.
Ritorn n virgola.
>> Hekk biss bħala Colton lura biċċa karta bi tweġiba lili billi twaqqa
dik il-biċċa tal-karta fil-sewda ftit kaxxa fuq il-mejda, li jagħmlu dan fil-
kodiċi, inti litteralment biss jiktbu, ritorn n, u huwa bħallikieku kienu Colton
għoti me xi ħaġa lura fiżika.
F'dan il-każ, dak li qed jiġri hu li tikseb int pożittiva se jagħti lura
x'hemm preżumibbilment pożittiv integer lil min?
Fejn ma dan il-valur jispiċċaw?
Li jispiċċa f'dan varjabbli, n, u allura aħna jipproċedi bil-linja disa.
>> Allura fi kliem ieħor, f'ordni ta ' operazzjonijiet, dan il-programm jibda
eżekuzzjoni, u l-kompilatur jirrealizza, oh, trid li l-librerija?
Let me go grab kwalunkwe huwa ġewwa dak.
Oh, trid li l-librerija IO standard?
Let me go grab kwalunkwe huwa ġewwa dak.
X'tagħmel l-kumpilatur jgħidu għalih innifsu meta hits linja erba?
Oh, inti wiegħed li timplimenta l- funzjoni msejħa tikseb pożittiv, iżda
aħna ser terġa 'lura għal li aktar tard, xi ħaġa f'dan is-sens.
>> Null prinċipali Int ifisser biss hawn l-imsaren tal-programm tiegħi.
Line seba huwa biss Brace kaboċċi.
Line tmienja huwa qal fuq ix-xellug, jagħtu me 32 bits għal integer, sejħa hija n.
Min-naħa tal-lemin, huwa qal tikseb int pożittiv.
Issa ejja nieqaf li l-istorja għaliex issa I ma iżommu jiċċaqilqu cursor tiegħi isfel.
Cursor tiegħi issa jinżel hawnhekk għaliex issa jiksbu int pożittiv tesegwixxi.
Int n hija ddikjarata.
Tagħmel dan li ġej.
Printf tagħti me numru sħiħ pożittiv.
>> Get int mill-utent, aħżen fid n, u forsi jagħmlu dan mill-ġdid u għal darb'oħra.
Dan loop ifisser li dan il-kodiċi jista ' jesegwixxu u 'l isfel bħal dan mill-ġdid
u għal darb'oħra, iżda meta l-utent finalment jikkoopera u tagħti me a pożittiv
int, I hit linja 21, f'liema punt l- numru huwa mgħoddi lura, u li wieħed
għandi jenfasizzaw issa?
Disa.
Kontroll, biex ngħidu hekk, prospetti għal-linja disa.
Dik hija l-linja li issa inkarigat.
>> Allura dak hu li kien jiġri kollha din id-darba taħt il-barnuża, iżda
meta konna użati funzjonijiet bħall printf jew anki jiksbu string li xi ħadd ieħor
kiteb għalik, kontroll kien qiegħed mogħtija off li xi ħadd ieħor Kodiċi linja
minn linja b'linja.
Huwa biss aħna ma setgħux jarawha u aħna ma jista 'verament juru li f'dan
programm għaliex dan huwa f'xi ieħor fajl fuq il-hard drive
unbeknownst lilna.
Mela ejja attwalment tiġbor u run dan issa.
>> Kun pożittiv.
Jikkompilaw, li progress.
. / Pożittiv.
Agħti me numru sħiħ pożittiv.
Ejja tkun diffiċli.
Negattiva 1.
Zero.
Ejja tagħtiha 50.
Grazzi għall-50, u għalhekk kontroll issa lura.
Kwalunkwe mistoqsijiet, imbagħad, fuq dan?
Yeah?
>> [Inaudible].
>> Say darb'oħra.
Oh, mistoqsija tajba.
Allura inti tista 'tinnota a parallel hawn li Jien tip ta 'qtugħ kantuniera fuq.
F'konformità 12, jien qal, jiksbu int pożittiv jirritorna int, imma minn dik l-istess
loġika, issa stands għal raġuni li fl sitt linja, jien qal li prospetti ewlenin
l int, imma dak jkollhom aħna qatt kellha fi kwalunkwe ta 'programmi tagħna?
Imxejna qatt ma kellhom referenza dan ir-ritorn kelma prinċipali.
>> Għalhekk jirriżulta li fis-C, għall-inqas il-verżjoni ta 'li aħna qed tuża
magħmula fl-1999, teknikament, dan huwa jiġri għalik awtomatikament.
Ghaċ inti jimplimentaw programm u inti timplimenta funzjoni msejħa prinċipali,
dik il-funzjoni se terġa 'lura żero billi default, jekk inti ma jgħidux mod ieħor,
u żero huwa biss konvenzjoni.
Id-dinja prospetti żero b'hekk jindika li kollox huwa tajjeb,
effettiv jħallu lilna ma erba 'biljun affarijiet possibbli li jistgħu jmorru
ħażin b'tali mod li jekk nerġgħu lura waħda, li tista ifisser kodiċi li jfisser dan
ħaġa li marret ħażin.
Aħna jista 'ritorn tnejn, li jfisser dan ħaġa oħra marret ħażin.
Aħna jista 'ritorn erba' biljun, li ifisser dan ħaġa oħra marret ħażin.
>> U jekk inti issa taħseb dwar tiegħek stess PC jew Mac, inti tista 'recall li
kultant ikollok messaġġi ta 'żball cryptic mis-software li int
użu, u xi kultant għandha dimensjoni umana deskrizzjoni friendly, iżda hemm
spiss kodiċi jew numru fuq l-iskrin?
Jekk dan ma jiġu f'moħħna, biss żżomm għajnejk out għal dan.
C'est tipikament liema dawn kodiċijiet huma jirreferu għall.
Huma qed inkluża fil Microsoft Word u programmi oħra b'tali mod li jekk inti fajl
rapport bug mal-kumpannija, inti tista ' jgħidulhom, oh, sibt numru żball 45.
U xi programmer lura fil-kumpanija tista 'tfittex li fil tiegħu jew tagħha
kodiċi u jgħidu, oh, dan għaliex I magħmula dan bug u hu għalhekk li l-utent
sibt dan il-messaġġ.
>> Iżda franchement, huwa biss ftit jfixkluh u tedious ftit li
jikkonkludu li, mill-inqas fuq tagħna programmi ftit ewwel, hekk aħna ħadthom
ġew tħalli barra dan.
Iżda dan il-ħin kull wieħed tiegħek funzjonijiet prinċipali tkun segretament kellha din
linja awtomatikament miżjud għalik mill- kompilatur, biss permezz tal-konvenzjoni li
jiffrankaw xi żmien.
>> [Inaudible].
>> Inti ma għandekx bżonn li din tiġi inkluża fil-prinċipali.
Li l-multa.
Inti ma għandekx bżonn li tkun inkluża jekk inti kienu implimentazzjoni ta 'funzjoni bħal din.
Inkella-ċatt funzjoni out ma tkunx taħdem.
Iżda fl prinċipali, mhuwiex meħtieġ.
Fil-ġimgħa jew tnejn, aħna ser jibda jkollna f'dak vizzju darba rridu nibdew
li tfisser żbalji.
Verament tajba kwistjoni.
>> Break verbali hekk malajr li wieħed isemmi li din il-ġimgħa, aħna mhux se jkun li jkollhom ikla
per se, imma aħna ser tkun li pranzu ma ' xi wħud mill-istudenti u l-persunal.
Jekk inti tixtieq li jingħaqdu magħna, tħossok liberu li tmur cs50.net/rsvp.
06:00 nhar il-Ġimgħa.
L-ispazju huwa, bħal dejjem, limitati, imma aħna ser tkompli tagħmel dawn fuq kważi
bażi ta 'kull ġimgħa jekk l-ispazju runs out din il-ġimgħa.
>> Allura l-cliffhanger li aħna jitħalla 'off fuq It-tnejn kienet li kordi tista 'attwalment
jiġu indiċjati fi, li sempliċiment ifisser li inti tista 'tikseb fl-ewwel karattru, il-
tieni karattru, it-tielet karattru u oħrajn, għaliex inti tista '
jaħsbu b'mod effettiv ta 'spag, bħal hello, bħala f'dan il-każ ħamsa
ittri ġewwa ta 'kaxxi.
U inti tista 'tikseb fuq kull wieħed minn dawk kaxxi ma 'dak sintassi ma we
jintroduċu nhar it-Tnejn?
Dawk parentesi kwadri fuq it-tastiera tiegħek.
Li maħsuba biss jmorru post żero.
>> Nibdew għadd żero, hekk bracket żero ifisser h, parentesi wieħed
ifisser e, u oħrajn.
U hekk il-ħin kollu meta aħna kont qed spag u t-tajping fil-"bonjour"
u "dinja" u affarijiet oħra fuq l-iskrin, huwa kien maħżun
fil-kaxxi bħal dan.
U tieħu raden.
Xi jfisser kull kaxxa jirrappreżentaw fiżikament ġewwa tal-kompjuter tiegħek?
>> [Inaudible].
>> Jiddispjacini?
>> Karattri.
>> Allura karattru, ċertament fil-każ ta 'kordi, u karattru huwa biss
tmien bits jew byte wieħed.
Allura inti probabilment huma inqas vagament familjari mal-fatt li tiegħek
kompjuter għandu memorja.
Din għandha żewġ tipi ta 'memorja inqas.
Wieħed huwa l-hard disk fejn tfaddal Jittieħed permanenti, u li
tipikament big sabiex inti tista 'jkollha movies u l-mużika u oħrajn.
>> Imbagħad inti għandek tip ieħor ta 'memorja imsejħa RAM, R-A-M, Random Access
Memorja, u dan huwa t-tip ta 'memorja li hija użata meta l-kompjuter tiegħek huwa
taħdem imma jekk inti jitilfu l-enerġija jew tiegħek imut batterija, xejn thats maħżuna
fil RAM tisparixxi jekk inti jitilfu l-enerġija kollox għaliex mhuwiex
persistenti.
Inti tipikament ikollhom, dawn il-ġranet, a GIG ta 'dan, żewġ gigs, forsi aktar.
U l-rasu ta 'RAM hija li huwa ferm ħafna, ħafna aktar mgħaġġla minn hard disks
jew saħansitra istat solidu drives dawn il-ġranet, iżda huwa tipikament aktar għaljin hekk
għandek inqas minnu.
>> Allura konversazzjoni lum verament tirreferi to RAM, dak it-tip ta 'memorja li
teżisti biss filwaqt li hemm poter jkunu mitmugħa fis-kompjuter tiegħek.
Allura meta inti tip H-E-L-L-O, Ikteb fuq il-keyboard, il-H sejra fid wieħed
byte ta 'RAM, il-E huwa għaddej fil- byte ieħor ta 'RAM, kif
il-bqija tal-kelma.
Allura tfakkar dak li konna kapaċi jagħmlu aħħar darba kien dan.
Let me imorru quddiem u tiftaħ il-fajl li aħna msejħa string.c, u jfakkru
li deher ftit xi ħaġa bħal din.
Let me attwalment roll lura u l-bidla li eżattament dak li dehru qishom,
tul sensiela ta 's.
>> Allura ħarsa lejn il-programm hawn.
Aħna jinkludu l-librerija CS50 hekk li nistgħu nużaw jiksbu sekwenza.
Aħna jinkludu io.h standard hekk nistgħu nużaw printf.
Għaliex ma aħna jinkludu string.h?
Dan kien ġdid nhar it-Tnejn.
Allura ridna tul string.
Str leng.
Nies iddeċieda snin ilu, ejja ikunu biss konċiż.
Minflok ta 'sejħa dan "tul string," ejja sejħa hija "str leng" u ħalli l-
figura dinja li out, u b'tali mod li dak li aħna jiksbu aċċess għal ma 'string.h.
>> Dan huwa familjari.
Dan huwa familjari.
Dan huwa ftit ġdida.
F'konformità 22 - u aħna ser terga 'lura għal dan, iżda għal issa jkunu jafu -
u inti taf biss dan milli jkollhom aqra d-dokumentazzjoni jew jekk
inti taf C diġà -
nikseb string xi kultant jista 'screw up.
Jekk l-utent huwa verament kontradittorja jew mhux kooperattiva u hu jew hi biss
ma tip xejn fil-keyboard jew tipi tant fil-keyboard li
dan ma jkunux jistgħu jlaħħqu memorja tal-kompjuter, fit-teorija, jiksbu string jista 'ritorn
xi ħaġa li ma tkunx sekwenza ta 'karattri.
Hija tista 'ritorn ta' valur speċjali msejħa NULL fil-limiti kollha, N-U-L-L, u dan huwa
biss valur sentinella hekk imsejħa.
Huwa valur speċjali li jissinifika xi ħaġa ħażina ġara f'dan il-każ.
Huwa n-nuqqas ta 'sekwenza.
>> So null jien iċċekkjar biex sempliċement sabiex, twil storja qasira, str leng u
funzjonijiet oħra li jiġu mal C, jekk huma jistennew string iżda inti tgħaddi minnhom
l-assenza ta 'spag, jekk inti tgħaddi minnhom NULL, il-kompjuter jew il-programm
se biss crash outright.
Hija se hang.
Hija se tarmi up xi messaġġ ta 'żball.
Affarijiet ħżiena se jiġri.
Allura anke jekk dan għadu mhux definiti sew -
din se tagħmel aktar sens fil-ġimgħa jew żewġ - fil-linja 22, dan huwa biss
Eżempju ta 'awto-verifika żball difensiv biss f'każ wieħed ħin ta '
xi ħaġa miljun tmur ħażin, fil inqas programm tiegħi mhux se crash.
>> Hekk jekk i ma ugwali xi ħaġa ħażina, I jkollhom din għal loop, u dan kien
fejn kellna li oħrajn biċċa ġdida ta 'sintassi.
I jkollhom għall loop iterazzjoni minn żero fuq sa l-tul ta 's.
U allura hawnhekk, I kien istampar out s bracket i, imma għaliex ma I użu% c kollha
f'daqqa minflok% s anke għalkemm i hija sekwenza?
Huwa karattru, id-dritt?
S hija sekwenza, imma xi ħaġa parentesi, s bracket i fejn i hija żero
jew waħda jew tnejn, li l-individwu karattru fis-sekwenza, u għalhekk għall-
hekk, jeħtieġ printf li jiġi infurmat li huwa tabilħaqq karattru li jistennew.
>> U mbagħad tfakkar, dak li għamlet dan programm fil-fatt jagħmlu?
>> Stampat it out fil-kolonni.
>> Yeah, eżattament.
Hija biss il-kelma stampata li I tip kolonna, karattru wieħed kull linja.
Mela ejja tara dan mill-ġdid.
Sabiex tagħmel string.
Miġbura OK. . / String.
Let me tip H-E-L-L-O, Ikteb, u tabilħaqq I ġġibu, waħda għal kull linja.
>> So let me do ottimizzazzjoni wieħed hawn.
Jekk taħseb dwar dan, speċjalment jekk inti stajt programmati qabel, hemm
forsi xi ineffiċjenza fil-linja 24.
Fi kliem ieħor, mhuwiex neċessarjament l-aħjar disinn.
Sempliċi, mill-inqas darba inti tiftakar dak str leng hija, iżda huwa
tagħmel xi ħaġa dumb potenzjalment.
Liema jista 'jkun?
>> [Inaudible].
>> Eżattament.
Huwa verifika għat-tul ta 'i kull darba waħda ukoll jekk
H-E-L-L-O huwa dejjem se li jkun ta 'ħames karattri.
Kull darba permezz ta 'dan loop, il-ħamsa mhix jinbidlu.
I jista 'jkun inkrementazzjoni i, imma dak huwa t-tul ta 'i fuq kull
iterazzjoni ta 'dan loop?
Huwa ħames, huwa ħamsa, huwa ħames, u għadhom I am madankollu tistaqsi din
mistoqsija ġdid u għal darb'oħra u għal darb'oħra.
Issa franchement, il-kompjuter huwa hekk kkritikat fast, l-ebda wieħed għaddej biex tinnota
differenza f'dan il-każ, iżda dawn it-tipi ta 'deċiżjonijiet tad-disinn fqira tista
jibdew jammontaw jekk il-kompilatur innifsu ma tipprova li jiffissaw dan għalik li
tipikament ma kienx, f'dan inqas fil-appliance.
>> Hekk jien ser jagħmlu dan.
Jien ser żżid comma wara ewwel varjabbli tiegħi, i.
Jien ser jagħti myself ieħor varjabbli, ssejjaħ dan n, biss billi
konvenzjoni għall-numri, u allura jien ser tassenja n-valur tal string
tul ta 's.
U allura jien se jibdlu kundizzjoni tiegħi li jkun dak li?
Jien se jibdlu kundizzjoni tiegħi li filwaqt li i huwa inqas minn n.
>> Allura issa, kif ħafna drabi I am iċċekkjar it-tul ta 'i?
Darba, imma huwa OK biex jiċċekkjaw i kontra n darb'oħra u għal darb'oħra minħabba li issa dawk
Valuri mhumiex attwalment jinbidlu.
Issa għal issa, biss jafu li ghaċ sejħa funzjoni, hemm daqsxejn ta '
overhead, mhux biżżejjed biex jiskoraġġixxu inti verament milli tuża funzjonijiet, iżda
ċertament meta jkun hemm linja tal-kodiċi bħal dik - u l-linji se tikseb
aktar interessanti qabel twil - fejn hemm opportunità biex jaħsbu, jekk I
tip dan il-kodiċi, kemm drabi se tesegwixxi?
Inti ser tibda tara maż-żmien il- prestazzjoni tal-programmi tiegħek jista '
tabilħaqq bidla.
>> Fil-fatt, wieħed mill-problema settijiet konna imwettaq fis-snin passat jinvolvi
implimentazzjoni, kif inti tista 'recall minn żero ġimgħa, jespliċitaw kontrollur, iżda
jespliċitaw kontrollur li, imfassla biex jappoġġjaw dizzjunarju ta '150,000 plus
kliem li aħna jagħtuk guys.
Inti għandek tikteb kodiċi li tagħbijiet dawn il-kliem fis-RAM, hekk fis
kaxxi bħal rajna fuq l-iskrin mument ilu, u mbagħad malajr kemm tista
tista ', inti jeħtieġ li tkun kapaċi twieġeb għal kwistjoni tal-formola, hija din il-kelma
misspelled?
Huwa din il-kelma misspelled?
>> U fil xi ħaġa bħal dik dak li aħna ħadthom imwettaq fis-snin passat huwa mdawwar fi,
għalkemm fuq bażi opt-in fakultattiv, a kompetizzjoni ta 'tipi, li biha l-
studenti li jużaw il-RAM inqas u inqas ħin, inqas CPU ċikli, jispiċċaw
tbaqbieq sal-quċċata ta 'ftit bord mexxej jew gradazzjoni li nitfgħu fuq
homepage il-kors kif konna imwettaq fis-snin li għaddew.
Għalhekk għal darb'oħra, totalment mhux obbligatorju, iżda dan jitkellem għall-opportunitajiet disinn
li huma qabel ladarba nibdew bini atop xi wħud minn dawn
moduli bażiċi tal-bini.
>> So let me jmorru lura għal dan dijagramma għal ftit mument u jiżvelaw ftit
xi ħaġa aktar.
Dan tabilħaqq hija sekwenza, u aħna ħadt vantaġġ minn libreriji ftit,
io.h standard li għandha -
>> Printf.
>> Printf, fost affarijiet oħra.
cs50.h, li jiksbu int u jiksbu string u oħrajn, string.h, li
kellhom str leng.
Iżda jirriżulta hemm énième.
Franchement, hemm lottijiet u lottijiet ta header fajls li jiddikjaraw funzjonijiet
għal-libreriji, iżda dan huwa ctype.h fil-fatt se jkun kemmxejn
vantaġġuża għaliex jien ser jimxi 'l quddiem u jimplimentaw waħda
programm ieħor hawnhekk.
>> Let me imorru quddiem u tiftaħ xi ħaġa I kiteb bil-quddiem imsejjaħ
capitalize.c, u ejja tagħti ħarsa lejn kif taħdem din.
Avviż li jien jużaw, f'dan il-verżjoni ta 'dan, tliet fajls familjari.
Avviż li fil-linja 18, jien jkollna linja tat-test.
Avviż bil-linja 21, jien fejn sostniet li il-kodiċi li ġej se
tikkapitalizza i, ikun x'ikun l-utent ittajpjat fi, u kif am I tagħmel dan?
Well, jien tieħu -
lezzjonijiet li tgħallmu mill-aħħar darba -
Jien tiddikjara i u n u iterazzjoni fuq il-karattri fit-sekwenza.
U allura dak li huwa din il-blokka ta ' kodiċi fil-linja 24 permezz 27
jagħmlu f'termini laymans?
>> Zghar ittra lura.
>> Eżattament.
Jekk i bracket i - hekk jekk l-i-th karattru ta 's, li huwa speċifiku
char fis-sekwenza, huwa akbar minn jew daqs zghar au -
ifakkar li ampersand doppja turi u -
u l-istess natura, s parentesi i, hija inqas minn jew ugwali għal zghar z,
dan ifisser huwa ta 'a jew b jew c jew dot, dot, dot, jew z, li jfisser
huwa zghar.
What do I trid tagħmel f'dak il-każ?
Well, I tista 'tagħmel dan kemmxejn cryptically, iżda
ejja tease dan apparti.
>> Jien ser sejħa printf, stampi% c għaliex nixtieq li Reprint dan
karattru fuq l-iskrin.
Jien imbagħad ser jieħdu s parentesi i, il- karattru i-th fil-i, u allura għaliex
am I tagħmel dan trick ftit hawn, zghar a A kapital minus?
X'inhu li ser jagħti me, ġeneralment?
>> [Inaudible].
>> Eżattament.
I ma verament tiftakar -
kien 65 għal kapital A. I ma verament tiftakar dak zghar a huwa,
iżda l-ebda kwistjoni.
Il-kompjuter jaf.
Allura billi qal, zghar nieqes kapital A, huwa stramb li jkun
tnaqqas char waħda minn oħra, iżda liema huma Chars taħtha l-hood?
Huma qed biss numri.
Sabiex ikun x'ikun dawn in-numri huma, ħalli l-kompjuter tiftakar
minflok lili il-bniedem.
>> Allura zghar kapital nieqes A huwa ser jagħti me differenza.
Dan jiġri li jkun 32, u li tkun il-każ għal b zghar u kapital B
u ibqa 'sejjer hekk.
Jibqa konsistenti, Thankfully.
Hekk jien essenzjalment tgħid, jieħdu l- zghar ittra, naqqas off li
differenza standard, u li bidliet effettivament i bracket i minn
zghar li, naturalment, uppercase, mingħajr tiegħi verament jkollhom biex jaħsbu
dwar jew ftakar, liema kienu dawk numri tkellimna dwar meta l-tmien
voluntiera ħarāu fuq il-palk?
Issa sadanittant, fir-oħra, jekk mhuwiex ittra zghar kif determinat
minn linja 24, biss print out.
I biss tixtieq li tmiss il- karattri li kienu
attwalment oriġinarjament zghar.
>> Mela ejja tara dan.
Għamla kapitalizzazzjoni.
Miġbura, OK.
. / Kapitalizzazzjoni.
U let me tip H-E-L-L-O fl lowercase, Ikteb.
U tinnota li dan jiġi konvertit fis uppercase.
Let me jagħmlu dan mill-ġdid ma kelma differenti.
Kif dwar D-A-V-I-D ma 'l-ewwel D kapitalizzat bħala isem tipikament hu?
Ikteb.
Avviż huwa għadu korretta.
Huwa biss outputted li l-ewwel D nbidlux permezz ta 'dik inkella jinbena.
>> Allura wieħed iżomm f'moħħu, allura, a koppja ta 'affarijiet hawn.
Waħda, jekk inti qatt tixtieq li jiċċekkjaw tnejn kundizzjonijiet f'daqqa, inti tista 'u minnhom
flimkien kif aħna mbassra.
Tista 'tqabbel karattri b'dan il-mod u effettivament jittrattaw tipa
numri, iżda franchement, dan huwa hekk kkritikat cryptic Jien qatt ma ser tiftakar
kif toħroġ bi dan mill-bidu mingħajr motivazzjoni minnu għal pjuttost
ftit ta 'żmien.
>> Ma Ikun sbieħ jekk xi ħadd hemmhekk kiteb funzjoni msejħa huwa
inaqqsu dak setgħux iwieġbu għalija vera jew falza, dan il-karattru huwa lowercase?
Well Thankfully, min kiteb ctype.h ma eżattament dan.
Let me go up hawn u żid ctype għall c tipi, u issa let me jinżlu hawn u
jikteb din il-linja kif ġej.
>> Mela jekk huwa msejjaħ hija aktar baxxa, nitlob, s bracket i, allura jien ser tħassar
dawn iż-żewġ linji għal kollox.
Allura issa xi ħadd ieħor, jien bit-tama, kiteb funzjoni msejħa hija aktar baxxa, u
dawriet out dawn ma u huma ddikjarati dan ġewwa tal ctype.h.
U issa jien ser jitilqu linja 27 biss, jien ser jitilqu linja 31
biss, imma avviż kemm stajt issikka d kodiċi tiegħi.
Huwa issa aktar nodfa.
Huwa inqas diffiċli biex tfittex permezz għaliex issa l-funzjoni, barra minn hekk, huwa
hekk wonderfully jismu dan biss ma dak li jgħid.
>> Allura issa jien ser jiffrankaw din.
Jien ser zoom out.
U hekk kif fil Scratch inti jista 'jkollhom Booleans, valuri Boolean vera jew
falza, dan huwa eżattament dak li huwa ibaxxu effettiv prospetti.
Let me recompile.
Let me ri-run.
U issa ejja tipprova mill-ġdid, H-E-L-L-O, Ikteb.
Li pjuttost tajba.
U tipprova mill-ġdid, kun żgur I ma screw up xi ħaġa.
Dan huwa kapitalizzat ukoll.
>> Iżda dan mhuwiex tajjeb biżżejjed minħabba li l- ħaġa oħra li jien qatt ma ser
ftakar sakemm I taħdem permezz tassew b'attenzjoni fuq, ngħidu aħna, karta hija
din il-linja kkritikat.
Ma Ikun sbieħ jekk kien hemm funzjoni msejħa biex fuq?
Ukoll jirriżulta hemmhekk huwa ctype.h ukoll.
Jien ser jimxi 'l quddiem u t-tip -
let me iġġib dik il-linja lura.
Minflok dan hawn, let me imorru quddiem u jgħidu, tissostitwixxi l-% c il-
riżultat ta 'sejħa din il-funzjoni li ta 'fuq fuq il-karattru i-th tal-i.
U issa avviż huwa jkollna ftit bbilanċjati.
I għandhom iżommu rekord ta 'kemm parentesi Stajt miftuħa u magħluqa.
>> Allura issa huwa saħansitra aktar nodfa.
Issa dan il-programm huwa jkollna aħjar u mfassla aħjar forsi għaliex dan huwa
ħafna, ħafna aktar tinqara iżda Hija l-ebda ejja jikkoreġu.
Għamla kapitalizzazzjoni.
. / Kapitalizzazzjoni.
H-E-L-L-O. Ejja run mill-ġdid, D-A-V-I-D. OK, hekk aħna qed għadhom fl
pretty forma tajba.
>> Imma issa li fuq.
Nipproponi li hemm wieħed aktar irfinar nistgħu jagħmlu li jkun
tassew sbieħ, li jista 'verament jissikkaw up dan il-kodiċi u verament tagħtina ħames
minn ħamsa għal disinn, per eżempju.
Dak li jkun sbieħ li jeħles?
Ukoll, tfittex kemm kkritikat twil f'dan il-blokk ta ' kodiċi huwa biss biex jagħmel xi ħaġa sempliċi.
>> Issa bħala twarrib, kif inti jista 'jkollok tidher fis-sezzjoni super f'dan passat
weekend, inti strettament m'għandhomx bżonn l- braces kaboċċi meta inti biss għandek wieħed
linja tal-kodiċi, anke jekk aħna propost żommhom sabiex jagħmel ħafna
aktar ċara, bħal fil U-forma Scratch tal blokki, x'hemm ġewwa tal-fergħa.
Imma ma kienx ikun sbieħ jekk l fuq, meta jingħata input tagħha, huwa mdawwar fi
uppercase jekk mhuwiex, u dak li kieku tkun isbaħ fil-każ oppost, jekk
huwa diġà uppercase?
Just għaddiha u jitilqu minnu biss.
>> Allura forsi ma dan.
I tista 'tipprova u ftit tama li ma, imma ħalluni
jintroduċu ħaġa waħda oħra.
Minflok tuża dan built-in terminali tieqa stabbiliti hawn, ifakkar li
din l-ikona iswed kwadru jagħtik tieqa terminal akbar li nista sħiħa
iskrin jekk irrid?
Għalhekk jirriżulta li dawn qed tip ta 'oddly msemmija, iżda hemm dawn l-affarijiet imsejħa
paġni bniedem, paġni manwali, il-bniedem fil-qasir, u nista 'aċċess dawn billi
ittajpjar bniedem -
liema do Irrid tip?
Man għal fuq.
>> U issa avviż jekk jeżisti jiffunzjonaw ġewwa tal-kompjuter, fil-
F'dan il-każ l-appliance, li huwa biss is-sistema operattiva Linux, li għaddej
li tagħti me sett kemmxejn cryptic ta output, imma inti ser issib matul iż-żmien li
dejjem huwa formattjati pjuttost l- istess sabiex tibda biex jidraw lilha.
Avviż fil-quċċata li fuq, u apparentement huwa l-istess dokumentazzjoni
għall tinżel.
Kull min kiteb kien qtugħ xi kantunieri u qiegħdu kollu fuq paġna waħda.
Għan Dawn l-affarijiet fil ħajja huwa li jikkonverti
ittra lill fuq jew zghar.
>> Avviż li taħt Synopsis, il-paġna bniedem hija tagħlim me dak għandi fajl
li tinkludi l-użu dan il-ħaġa.
Huwa jagħti me-firem għal dawn funzjonijiet, kemm minnhom, anke
jekk aħna dritt issa biss jimpurtahom wieħed.
Hawnhekk issa huwa deskrizzjoni.
Biex tikkonverti l-ittra ta 'fuq c li uppercase jekk possibbli.
>> Still mhux li istruttivi, iżda let me issa jfittxu taħt valur tar-ritorn, il-ħaġa
thats mogħtija lura.
Allura l-valur irritornat huwa dak tal- ittra konvertiti jew c jekk il-
konverżjoni ma kienx possibbli.
X'inhu c?
>> Il-karattru oriġinali.
>> Il-karattru oriġinali u nafu li billi, għal darb'oħra, li jmorru sal-
sinopsi, u min kiteb dan funzjoni biss iddeċieda li l-input
li l fuq u t'isfel li huwa biss arbitrarjament se jiġu msejħa c.
Huma jistgħu qalu li din xejn aktar li jridu, imma dawn żammha
sempliċi kemm c.
Allura stajt kkonsultat il-paġna bniedem.
Din is-sentenza Lászlo me li jekk huwa mhux ittra zghar, huwa
ser biss jagħtu me back c, li huwa perfetta, li jfisser I tista 'teħles minn
kundizzjoni ieħor tiegħi.
>> So let me jmorru lura għall gedit, u issa let me biss tagħmel dan.
Jien ser kopja dikjarazzjoni printf tiegħi.
Jien ser imorru quddiem u dritt ġewwa l għall-istampar loop li minn, u jiksbu
rid ta 'issa dan kollu jekk jinbena.
Ma kienx idea ħażina, u kien ferm ħafna korretta u konsistenti ma '
kollox konna preached, iżda biss mhux meħtieġ.
Hekk kif inti tirrealizza xi librerija funzjoni teżisti li xi ħadd ieħor
kiteb, jew forsi inti kiteb x'imkien ieħor il-fajl, inti tista 'tuża u verament
jibdew li jissikka l-kodiċi.
>> U meta ngħid affarijiet simili stil tajjeb, il-fatt li din il-persuna msejħa l-
jiffunzjonaw għal fuq, jew qabel, hija baxx huwa wonderfully utli għaliex
dawn qed ħafna deskrittiv.
Inti ma tkunx tixtieq li sejħa funzjonijiet tiegħek X u Y u Z, li għandhom
ħafna, ħafna inqas tifsira.
Kwalunkwe mistoqsijiet dwar dak is-serje ta 'titjib?
>> Allura huwa biżżejjed li jingħad wieħed mill- takeaways huwa saħansitra bħala problema tiegħek
set - forsi problema sett wieħed, iżda ċertament P stabbiliti żewġ u 'l quddiem, anki
meta jkunu qed korretti mhux bilfors jfissirx li dawn huma perfetti biss
jew għadhom partikolarment mfassla tajjeb.
Dik hija l-assi ieħor li tibda taħseb dwar.
Allura dan kien ġewwa sensiela ta 'tiegħek memorja tal-kompjuter, imma jekk għandek
mazz sħiħ ta 'karattri bħal H-E-L-L-O ġewwa ta 'RAM, u jissoponi
li inti fil-programm tiegħek sejħa tikseb string minn darba tali li inti
sejħa nikseb string darba, allura inti sejħa tikseb string mill-ġdid.
Ukoll, dak li għaddej biex jiġri matul iż-żmien?
>> Fi kliem ieħor, jekk għandek linja ta ' kodiċi, għalkemm barra mill-kuntest, bħall-
string s gets -
ejja tagħmel dan.
Isem String ugwali tikseb string.
Allura jissoponi li linja tal-kodiċi huwa maħsub li titlob lill-utent għall-isem tiegħu jew tagħha.
Din il-linja li jmiss ta 'kodiċi hija maħsuba biex jistaqsu l-utent għall-iskola tiegħu jew tagħha, u
din il-linja li jmiss, u oħrajn.
Ejja ngħidu li aħna iżommu tistaqsi l-utent għall-ieħor u
ieħor u ieħor string.
Huma qed tmur biex jibqgħu fil-memorja fl-istess ħin.
Wieħed mhux se clobber l-oħra.
Iskola huwa mhux jissostitwixxu l-oħra.
Iżda fejn do dawn kollha jispiċċaw fil-memorja?
>> Ukoll, jekk nibdew biex ifasslu fuq l-iskrin, li nistgħu nużaw dan il-ħaġa
hawn bħal chalkboard, jekk dan iswed rettangolu tirrappreżenta l-kompjuter tiegħi
memorja, jien ser tibda arbitrarjament jaqsmuh up fis ftit kwadri,
li kull wieħed minnhom jirrappreżenta byte wieħed ta 'memorja.
Franchement, jekk għandek gigabyte ta 'RAM dawn il-ġranet, inti għandek biljun bytes
tal-memorja fil-kompjuter tiegħek, sabiex biljun ta 'dawn kwadri.
Allura huwa biżżejjed li jingħad, dan mhuwiex verament li l-iskala.
>> Iżda nistgħu iżommu tpinġija kollha ta 'dawn kjarament mhux iskala kwadri, u din
jirrappreżenta kollettivament memorja tal-kompjuter tiegħi.
Issa aħna ser biss tagħmel dot, dot, dot.
Allura fi kliem ieħor, meta I issa pront il- utent string get li tagħti me
spag, x'jiġri?
Jekk tipi l-utent fil-"hello," li jispiċċa up fil-H E-L-L-O. Iżda jissoponi l-
utent imbagħad tipi fil -
attwalment, I ma għandu jkollu jsir bonjour għaliex aħna qed tistaqsi
minnhom għall-ismijiet tagħhom.
Mela ejja mmorru lura jekk I tista 'tagħmel dan.
>> Mela jekk jien tip D-A-V-I-D għall-isem tiegħi, iżda tfakkar li t-tieni linja ta '
kodiċi kien nikseb string mill-ġdid biex tikseb l-iskola tagħhom.
Fejn hi din il-kelma li l-utent tipi fil se jmorru jmiss?
Well, forsi huwa se jmorru fil H-A-R-V-A-R-D. Allura anke jekk stajt
mfassla bħala żewġ ringieli, dan huwa biss mazz sħiħ ta 'bytes fil tiegħek
RAM kompjuter.
Hemm problema issa għaliex issa jekk jien użu RAM f'dan raġonevoli ħafna
iżda tip ta 'mod naive, dak li jista inti ma apparentement distinzjoni?
Meta waħda jibda u fejn wieħed truf, id-dritt?
Huma qed tip ta 'ċajpir flimkien.
>> Għalhekk jirriżulta li l-kompjuter ma tagħmel dan.
Let me attwalment iscroll lura fil-ħin ta ' karattri ftit, u minflok Harvard
jmorru immedjatament wara isem l-utent, l-utent fil-fatt gets, wara
l-kwinti, karattru speċjali inserit mill-
kompjuter għall lilu jew lilha.
/ 0, magħrufa wkoll bħala l-karattru Nul annoyingly imsejħa N-U-L, ma
N-U-L-L, iżda tikteb bħala / 0.
Huwa biss kollha bits żero hija markatur fil- bejn l-ewwel kelma li l-utent
ttajpjati u t-tieni.
>> Allura Harvard attwalment issa jispiċċa kif din is-sekwenza ta 'karattri
u wieħed aktar / 0.
Allura fi kliem ieħor, billi dawn Valuri sentinella, tmienja żero kontigwi
bits, inti issa tista 'tibda biex issir distinzjoni karattru waħda minn oħra.
Allura dan il-ħin dak li kien "bonjour" huwa attwalment "bonjour" ma '/ 0, u
sadanittant, hemm tista 'tajjeb ħafna jkun pjuttost ftit aktar RAM
ġewwa tal-kompjuter.
>> Let me jagħmlu ħaġa waħda oħra issa.
Jirriżulta li kollha ta 'dawn kwadri aħna kont qed tpinġija, huma, iva,
kordi, iżda b'mod aktar ġenerali, dawn l-affarijiet huma arrays.
Firxa hija biss blokki ta 'memorja li l-lura lura lura biex lura,
u inti tipikament jużaw firxa permezz ta 'dan notazzjoni parentesi kwadri.
Allura aħna qed tmur biex tara dawn pjuttost ftit matul iż-żmien, iżda let me imorru quddiem u
jiftħu, ejja sejħa hija etajiet.
U avviż dak li nistgħu nagħmlu ma ' dawn l-istess tricks, ftit
daqsxejn aktar sintassi hawn.
>> Allura fil-linja 17 ta 'dan il-programm - attwalment, let me imexxu l-programm ewwel
hekk nistgħu naraw dak li din il-ħaġa ma.
Let me sejħa tagħmel età biex jikkompilaw dan il-programm.
Etajiet. /.
Kif ħafna nies huma fil-kamra?
Sejħa hija tlieta.
Età ta 'l-ewwel persuna?
18, 19, u 20.
U issa kemmxejn ridiculously, I biss għamlu programm li etajiet dawk
tliet persuni.
>> Allura hemm b'mod ċar opportunità għal xi aritmetika gost hawn.
Thankfully, l-matematika hija korretta.
18 marru sa 19, 19 marru sa 20 u ibqa 'sejjer hekk.
Imma dak li verament maħsub li jkun illustrattiv hawnhekk hija kif aħna qed jaħżnu
etajiet dawk it-tliet poplu.
Let me zoom fuq x'hemm jiġri hawn fuq.
>> Allura l-ewwel, dawn linji ewwel ftit għandhom tkun jkollna pretty familjari.
Jien biss ġiegħlet lill-utent għall- numru ta 'nies fil-kamra.
Imbagħad jien jużaw nikseb int u tagħmel waqt li tagħmel dan mill-ġdid u għal darb'oħra u għal darb'oħra.
Rajna li mudell qabel, iżda linja 27 huwa ġdid u attwalment pjuttost
utli, u se jsiru dejjem aktar utli.
Avviż li x'hemm differenti fil-linja 27 hija li I jidhru li tiddikjara
int imsejħa etajiet, iżda stenna.
Huwa mhux biss etajiet int.
Hemm dawn parentesi kwadri, ġewwa tagħhom hija n.
>> Allura l-bracket n f'dan il-kuntest, ma ġewwa ta 'dikjarazzjoni printf hawn imma
f'dan unika linja 27, din il-linja huwa qal, agħti lili n ints, li kull wieħed minnhom
huwa ta 'tip int.
Allura dan huwa barmil, biex ngħidu hekk, ta ', f'dan il-każ, tliet numri interi lura
lura lura hekk li I effettivament jkollha tliet varjabbli.
L-alternattiva, li tkun ċara, ikun dan.
>> Jekk jien ridt l-ewwel istudent età, I tista 'tagħmel dan.
Jekk jien ridt-tieni istudent età I tista 'tagħmel dan.
Jekk jien ridt-tielet istudent età, I tista 'tagħmel dan.
U Alla jipprojbixxu għandna bżonn kulħadd età f'din il-kamra -
I mean, dan huwa Heck ta 'lott ta' kopja, paste ġdid u għal darb'oħra u għal darb'oħra.
U plus ladarba I jiġbor dan il-programm, jekk student ieħor mixjiet fil matul out
ta 'dak il-bieb, issa numru tiegħi ta 'varjabbli hija żbaljata.
>> Allura x'hemm sbieħ dwar firxa huwa kif Hekk kif inti tibda tħossok lilek innifsek
ikkupjar u pasta, odds huma li l- mhux l-aħjar metodu.
Firxa huwa dinamiku potenzjalment.
I do not know-quddiem kemm persuni ser ikunu fil-kamra,
iżda I do know I bżonn n minnhom, u jien ser figura n meta jasal iż-żmien.
Din il-linja tal-kodiċi issa jfisser, tagħti me a blokki ta 'memorja li tidher bħal dan
fejn in-numru ta 'kaxxi fuq l-iskrin huwa kompletament dipendenti fuq n li
l-utent ittajpjat pulzieri
>> Allura issa l-bqija ta 'dan il-programm huwa attwalment pretty simili għal dak li aħna
biss għamlet b'karattri.
Avviż I jkollhom għall loop jibda fil-linja 30.
So dritt wara I nikseb il-firxa, I jtenni mill y ugwali għal żero fuq sa n.
I biss jkollhom din printf istruttivi messaġġ biss qal, agħti lili l-età
ta 'persuna #% i, hekk numru wieħed, numru tnejn, numru tlieta.
U għaliex ma nagħmel dan?
Franchement, bnedmin jippreferu li jgħoddu minn wieħed fuq up billi xjenzati tal-kompjuter,
żero fuq up.
xjenzjati tal-kompjuter mhumiex ser jużaw dan it-tip ta 'programm, hekk aħna qed
ser biss tibda tgħodd f'wieħed bħal nies normali.
>> U issa fil-linja 33, avviż-ftit biċċa differenti ta 'sintassi.
L-età i-th fil-varjant tat-tip array se tikseb int.
U issa fl-aħħarnett, din hija biss aritmetika stabbiliti hawn.
I iddeċieda fil loop separat jitolbu xi żmien jgħaddi, u issa f'dan
loop separat, dawn il-linji tesegwixxi.
>> Sena minn issa, persuna i se jkun i sena, iżda tinnota dan mhuwiex il-
varjabbli i.
Dan issa huwa% i għall int.
U avviż kif l-ewwel placeholder, I plug in i plus 1, hekk aħna għadd bħal
persuna normali.
U mbagħad għall-valur tal-età tagħhom, għal i sena, nieħu etajiet bracket
i - u għaliex am I tagħmel plus wieħed hawn?
Huma biss età.
Din l-għażla stupid tiegħi tal-programmi.
Huma biss età ta 'sena.
I tista tip fi kwalunkwe numru li I attwalment tixtieq hemmhekk.
>> Allura x'hemm attwalment kollha ta ' ir-rilevanza hawn?
Well, let me attwalment iscroll lura hawn fuq u żebgħa stampa
ta 'dak li jinsab quddiem.
Dak li aħna ser tkun qiegħda tagħmel ma 'li jmiss tagħna Problema Set Żewġ huwa dabbling fil-
dinja tal-kriptografija.
Allura dan huwa sekwenza ta 'karattri, hekk sekwenza ta 'Chars multipli, u liema
ma dan jgħidu?
Mhuwiex fil-verżjoni online tad-dijapożitivi.
>> So I jsostnu li din hija ugwali għal dan, reklam stupid minn ħafna snin
ilu li jista 'attwalment recall wieħed mill-oriġini tagħha.
Allura dan huwa eżempju ta 'encryption jew kriptografija.
Jirriżulta li jekk inti tixtieq li attwalment jibagħtu informazzjoni jew sehem
informazzjoni ma 'xi ħadd fiż-żgur, bħal messaġġ bħal dan, inti tista '
ġirja-ittri.
Imma tipikament, il-kliem huma ma scrambled saltwarjament.
Huma qed ippermutat b'xi mod jew mibdula b'xi mod hekk li - oops.
Li l-spoiler gost għall-ħin li jmiss.
>> Allura inti tista 'pjan ta' liema hija apparentement O għal B. Avviż li l-linji up
kapitalizzazzjoni-għaqli.
Apparentement r isir e.
Apparentement F-H-E-R isir S-U-R-E. Allura jirriżulta hemm immappjar, u
F'dan il-każ hemm pretty stupid immappjar jekk xi ħadd ikun dehret out?
Din hija xi ħaġa imsejħa Rot 13, Dawwar 13.
Hija l-stupidest ta 'encryption mekkaniżmi minħabba li litteralment biss
żżid 13 għal kull waħda mill-ittri, stupid fis-sens li jekk inti biss
jkollhom daqsxejn ta 'ħin liberu fuq idejk u lapes, jew inti biss taħseb li
permezz fir-ras tiegħek, inti tista 'tipprova żidiet kollha possibbli - wieħed, tnejn,
tlieta, dot, dot, dot, 25 għal ftit dawwar l-alfabett kollu, u
eventwalment, inti ser insemmu dak li dan il-messaġġ huwa.
Mela jekk inti ma xi ħaġa bħal din fil- Iskola ta 'grad tgħaddi messaġġi tiegħek
aqwa ħabib, jekk l-iskola grad tiegħek għalliem sempliċiment jaqra permezz tal-
messaġġ u brute sfurzat-soluzzjoni, inti jista 'jkollok gotten
risposta minn dak.
>> Issa naturalment, fid-dinja reali, kriptografija hija aktar sofistikata.
Dan huwa snippet ta test minn sistema tal-kompjuter li għandu usernames u
passwords, kif kważi kollha ta 'tagħna tagħmel, u dan huwa dak password tiegħek jista
tfittex bħal jekk maħżuna fuq hard tiegħek issuq iżda f'forma kriptata.
Din mhix biss rotazzjoni ta 'ittri, A hija B u B huwa C. Dan huwa
ħafna aktar sofistikati, imma hija tuża x'hemm ġeneralment magħrufa bħala sigrieti ewlenin
kriptografija.
Din l-istampa jgħidlekx li ġej istorja ma 'ikoni ftit.
>> Fuq ix-xellug, għandna dak aħna ser sejħa test sempliċi.
Fid-dinja tal-kriptografija, sempliċi test huwa biss il-messaġġ oriġinali
miktuba bl-Ingliż jew bil-Franċiż jew kwalunkwe lingwa tkun xi tkun.
Jekk inti tixtieq li kriptaġġ, aħna ser jgħaddu dan pictorially permezz ta 'katnazz, hekk
xi tip ta 'ta' l-algoritmu, xi funzjoni jew programm li xi ħadd kiteb
li scrambles-ittri nisperaw aktar complicatedly milli kieku sempliċement tiżdied 13
għal kull wieħed minnhom.
>> Dak li inti tikseb minn dak il-proċess fil- nofs hemm tissejjaħ cyphertext.
Allura tip ta 'kelma sexy.
Dan ifisser biss huwa l-encrypted verżjoni tat-test sempliċi.
U biss jekk ikollok l-istess sigriet, 13 jew minus 13, inti tista '
decrypt messaġġ bħal dik.
>> Għalhekk fl Problema Set Tnejn, fost l-affarijiet inti ser tagħmel jekk fil-Hacker
Edition, inti se jkollhom jiktbu kodiċi li xquq dawn passwords, jidhru
dak li kienu u kif dawn kienu encrypted, għalkemm nagħmlu jagħtuk daqsxejn
ta 'gwida tul it-triq.
Fil-Standard Edition, nintroduċu koppja ta 'ciphers, encryption
mekkaniżmi, wieħed imsejjaħ Caesar, wieħed imsejħa Vigenere, li għadhom
ciphers rotazzjonali meta A issir xi ħaġa, B isir xi ħaġa, iżda
għandek tagħmel dan programmatically għaliex tabilħaqq se jkun hemm sigriet
ewlieni involut li huwa tipikament numru jew keyword li biss l-
mittent u r-riċevitur ta 'dawn messaġġi għandhom jifhmu.
>> Issa, dan fil-fatt għandu incarnations fid-dinja reali.
Dan, per eżempju, huwa ftit orfni Ring decoder sigriet Annie, u inti
jistgħu fil-fatt jimplimentaw dawn ciphers rotazzjonali -
A isir xi ħaġa, B isir xi ħaġa - ma 'koppja ta' roti,
waħda fuq barra, waħda fuq ġewwa tali li jekk inti dawwar il-rota jew
-ċirku, inti tista 'attwalment line up il- ittri ma 'ittri differenti,
jkollna kodiċi sigriet.
U hekk kif il-cliffhanger għal-lum, dak li ħsibt I d tagħmel huwa daqsxejn ta '
throwback li jekk inti mbagħad fuq il-TV fuq Diċembru 24, inti tista 'tara l-
movie ad nauseum għal 24 siegħa fil-filliera.
Iżda għal-lum, jien ser tiftaħ it up here u tagħtina biss żewġ minuti ta '
Story Milied pedagoġikament relevanti bi sħabi ftit jismu Ralphie.
>> [Daqq video]
>> -Be hija magħrufa li kulħadd u varji li Ralph Parker huwa b'dan maħtur
membru tal-Orfni Little Annie sigriet ċirku u huwa intitolat għal kulħadd
l-unuri u l-benefiċċji jseħħu miegħu.
>> Iffirmat-, Little Orfni Annie.
Kontrofirmata, Pierre Andre bil-linka.
Honors u l-benefiċċji diġà fl-età ta 'disa'.
>> [Shouting FUQ RADJU]
>> Come on, ejja nikseb fuq magħha.
I m'għandhomx bżonn dak kollu li jazz dwar kuntrabandisti u l-pirati.
>> Isma 'għada bil-lejl għall- konklużjoni avventura ta l-iswed
vapur pirata.
Issa, wasal iż-żmien għall Secret Annie tal Messaġġ għalik membri
taċ-ċirku sigriet.
Ftakar, gidjien.
Il-membri tal Circle Secret Annie tal jistgħu jiddekowdja messaġġ sigriet Annie tal.
Ftakar, Annie jiddependi fuq int.
Set labar tiegħek biex B2.
Hawn hu l-messaġġ.
12, 11, 2 -
>> -I am fl-ewwel laqgħa sigrieta tiegħi.
>> -25, 14, 11, 18, 16 -
>> -Pierre kien tonight vuċi kbira.
I tista 'tgħid messaġġ li tonights kien verament importanti.
>> -3, 25.
Li messaġġ mill Annie ruħha.
Ftakar, ma tgħid xi ħadd.
>> -90 Sekondi wara, jien fil-kamra biss fid-dar fejn tifel ta 'disa'
jistgħu ipoġġu fil-privatezza u jiddekowdja.
Aha, B. I marru għall-ieħor.
E. L-ewwel kelma hija "jkun." S. Huwa kien ġejjin faċli issa.
U. 25.
Li R.
>> -Come on, Ralphie.
I gotta go.
>> I'll jkun-dritt isfel, Ma.
Whiz gee.
>> -T. O. Kun żgur li.
Kun żgur li dak li?
Liema kienet Little Orfni Annie nipprova ngħid?
Kun żgur li dak li?
>> -Ralphie, Randy s'est li jmorru.
Gaat jekk jogħġbok toħroġ?
>> -Kull dritt, Ma.
I ser tkun dritt out.
>> -I kien jkollna eqreb lejn issa.
It-tensjoni kien terribbli.
Liema kienet?
Il-destin tal-pjaneta jista ' hang fil-bilanċ.
>> -Ralphie, go gotta Randy tal.
>> I'll jkun tajjeb-out għal biki out loud.
>> Kważi-hemm.
Swaba tiegħi taru.
Mind tiegħi kienet nassa azzar.
Kull pori ivvibrat.
Kien kważi ċara.
Iva, iva, iva, iva, iva.
>> -Kun żgur li tixrob Ovaltine tiegħek.
Ovaltine?
A kummerċjali crummy?
Iben ta 'kelba.
>> [Daqq video END]
>> SPEAKER 1: Dan huwa CS50, u li se jkun Problema Set Żewġ.
Ara inti ġimgħa d-dieħla.
>> SPEAKER 2: Fil-li jmiss CS50, dan jiġri.
>> SPEAKER 1: Allura wieħed suġġett aħna ma ħares lejn s'issa huwa
dak ta 'pointers funzjoni.
Issa, funzjoni pointer huwa biss l-indirizz ta 'pubbliku
funzjoni, iżda ferm simili -
iben ta '-