>> [Muusika mängib]
>> ANDI PENG: See on CS50 ja tere nädalal kaks punkti.
See on tegelikult samas nädalal kaks meie class-- tegelikult,
Esimesel nädalal oleme olnud osa.
Käetõstmisega, kui palju sa kõik tuli super osa eelmisel nädalal?
OK, see on OK.
See on OK.
Kui paljud teist vaatasin super osa eelmisel nädalal?
OKEI.
Ja kutid tegid trahvi probleemse seatud üks?
Nii et ma lähen seda võtma, et meil on kamp tõesti intelligentne lapsed
Selle klassi ja asju saab trahvi.
OKEI.
Nii first--
>> Esiteks, me lihtsalt läheb korraks minna üle päevakorda täna.
Me räägime muidugi logistika.
Palju siis ilmselt on küsimusi
kuidas asjad töötavad selles muidugi.
Me neile vastata.
Me läheme lühidalt minna üle silmuseid korral
mõni kutid vastamata super osa.
Me räägime ASCII kaardistamine.
Me räägime massiivid, funktsioone, käsurea argumente.
Ja lõpuks, mida kutid ilmselt kõik tõesti tahan olla siin, et õppida,
on oma pset2.
Me peame mõne kena trikke ja nõuanded, kuidas seda teha.
>> OKEI.
Ka teiseks, meil on palju kommi siin.
Igaüks, kes tahab kommi, lihtsalt tulla siia.
Haara mõned.
Mul on hunnik.
Meil on ton kontoris.
Ma tõesti ei taha süüa kommi kogu päeva.
Te peaks sööma kõik kommid, sest ma tõin ta siin kutid.
Just süüa kommi.
Seal saad kommi iga osa.
>> Nii esimene, kes ma olen?
Minu nimi on Andi Peng.
Ma olen pea TA CS50 siin Yale'i.
Ja lisaks et ma ka olla--
kui keegi oleks like-- oma jooksvate sõber, oma õla najal nutta.
Kui õhtul oma pset maksetähtaega, sa ei tea, mis toimub,
tabas mind.
Me kaastunnet koos, jne.
Lihtsalt tean, et ma olen siin nagu ressurss teile eesliinil
aidata kutid nuputada, kuidas lahendada probleeme CS50 ja kaugemalgi.
>> Minu email on andi.peng@yale.edu.
Ma ka saata individuaalne kirjuta oma telefoninumbri see
nii, et kõik ei ole kohta Internetis saab näha minu telefoninumber.
Julgelt helistage mulle igal ajal.
Tõsiselt, mu telefon on tavaliselt seotud minu käest.
Ma ei pruugi vastata paari minutit.
Ma ei pruugi vastata paari tunni jooksul.
Aga ma ei saa teile garanteerida, kui Teile e-maili mulle, kui sa helistad mulle,
teksti mulle, ma vastan 24 tunni jooksul.
Sageli ma vastata enne et kuna ma saan aru,
et igaüks sai mõned probleemid, ja sa tahad oma vastused
tuleb vastata väga kiiresti.
>> Kui te helistate mulle 30 minutit enne
et tükk, mis on tingitud neljapäev night-- olla nagu, Andi, aita mind,
Ma ei ole started-- ma annan Teile, et õlg nutta.
Aga see võib olla aega mõelda kuidas seda teha, et järgmine kord.
OKEI.
Oops.
Kuidas ma tagasi minna?
Seal me läheme.
>> Nii see muidugi on meil ton toetuste kõigile.
Lisaks lihtsalt sektsioonid siin, mis sul
Iga nädal saad veeta 90 Imeline minuti minuga,
meil on ka tööaega.
Kui paljud kutid on juba olnud tööaega abi?
Hea.
See on tõesti hea näha, sest me on töötajad üle 45 ajutised ja
koolitatud selle käigus, et siin aidates kutid oma psets.
>> Esmaspäeviti nad toimuvad Teal klassis 17 Hill House siin
Yale'i.
Teisipäeviti ja neljapäeviti, nad toimuvad Commons.
8:00-11:00 päris palju igal nädalapäeval.
Tule, tule välja.
Iga probleem ei problem-- lihtsalt tulevad sisse,
ja siis me aitame teil välja, et.
>> Teiseks, lisaks tööaega ja lõigud, meil on ka lühikesed püksid.
Kas keegi on kunagi näinud paar kohta lühikesed püksid või trajektooridega videos
veebilehel?
OKEI.
Nii nad tõesti kasulik.
Meie armas Harvard tootmine tiimide seal peal, et kooli
kuni põhja, nad on filmitud ja toodetud Nende uskumatu läbikäiguks videod.
>> Nad võtan teid samm-sammult läbi kuidas edasi minna probleemi lahendamiseks.
Sageli, kui sa oled segaduses lihtne mõiste, ainsuses mõiste,
heita, sest meil on arvatavasti Lühikese seda kusagil meie kodulehel.
Ja see on tavaliselt suurepärane vahend otsida, kui sa oled esimene
kaotas selle kohta, kuidas probleem.
>> Kolmandaks on meil ka study50 ja reference50.
Nii õppima 50 kohta Kodulehel on vaid link.
See on, ma arvan, study.cs50.net või midagi sellist.
Google'ist.
Meil on palju slaide valmis.
Meil on palju lühikesi pükse ja walkthroughs-- asjad kõik kompileeritud
väga kena ja puhas kutid kõik sirvida, näe mõisted
et sa oled segaduses.
Vist oleks kaetud seal on study50.
>> Reference50-- sarnased.
Meil on palju erinevaid märkmeid kergesti kättesaadav teie käsutuses.
Ja lõpuks, meil on, mida on nimetatakse CS50 Arutle,
foorum, kus, kui õhtul sa teed teie probleemidele, ütleme,
teil on küsimus.
Logi sisse, et CS50 Arutle.
Postita oma küsimus.
Ja siis üks hundreds-- ehk thousands-- eakaaslastega
võttes selles klassis Internetti sisse.
Ja äkki keegi saab Teie vastus enne TA saab.
See on sisuliselt lihtsalt Interneti-foorumis, et me kõik
kasutada, et arutada meie probleeme.
See on lahe.
>> OKEI.
Nii probleem seab.
Oleme umbes õige paks probleem seatud kaks.
Paljud meist on juba võitlesid läbi probleemi seatud üks.
Teame juba, et võib-olla ootab viimase öö teha oma pset
ei ole kõige targem tegu on CS50.
>> Nõuandeid ja näpunäiteid peamiselt Edu on lugeda kogu spec.
Kui paljud teist on juba loe spec pset 2?
OKEI.
See on kindel summa.
Ma tean, et kutid on ilmselt tunnustatud tänaseks on näitajad on tõesti pikk.
Nad on tõesti väga pikk.
>> See on tõesti raske lugeda iga rida Selle hoolikalt sõna-sõnalt.
Sa tahad lihtsalt koorima, kus ta ütleb teile midagi.
Võin garanteerida teile, ei tee seda.
Kui sa seda teha, sa oled ilmselt kavatse lasta kusagil
kus ta ütleb teile kuidas alustada probleem
või ta ütleb teile, mida nimi Teie probleem või ta ütleb teile,
see on tõenäoliselt parim viis algust teha oma probleemiga.
Ja siis sa kaduma.
>> Kui proovite lugeda spec keskel,
palju olulisem information--, et sa ei ole
ilmselt võimeline tõesti ligipääsu.
Nii et loe kogu spec.
Püüdke lugeda kogu spec Enne tulevad osas
sest siis, kui me rääkida pset,
me kõik saame aimu kohta, mis toimub.
>> Teiseks, see on kontseptsioon et ma tahaks viide
palju vältel poolaastal.
Aga sisuliselt vastavad meie poolel, eks?
Me, kui teie TA ja Jason kui muidugi manager ja Scaz oma professor
ja David oma professor ja kõik Teisest armas ajutise töötaja selle kursuse,
assistendid selles course-- Me teeme oma parima,
tagada, et teil on seatud kuni see õnnestub muidugi.
Me hoidke osa.
Me ametist tundi.
Me vastame teie telefoni kõned, vastame teie e-kirju,
teha kõike saame teha Veenduge, et teie küsimused on vastatud.
>> Kuid meid aidata ka.
Tutvu meie poolel.
Kui sa tuled tööaega ei mindud punktist, ei
Nähes loenguid, millel ei ole Idee, mis toimub, on nagu, mind aidata.
Ma lähen nagu, noh, ma vabandan.
See võib olla aeg laenata et õlg nutta,
sest ma ei ole kindel mida ma saan teha, et aidata teil
kui sa ei püüa vähemalt abi ise natuke alguses.
Tutvu meie poolel.
Tead, palun tulge valmis vastama ja saada
valmis osalema materjali.
See teeb asjad nii palju lihtsam kõigile osapooltele.
Jah, see on päris palju see.
>> Hindamisviis.
Nii ainekava, see on päris põhjalikku selle kohta, kuidas me hinne.
Aga sisuliselt jaotus Selles on 50% oma hinne
saab psets, mille on armas, sest see on
kuhu kulutada suur enamuse oma kursuse aega.
Viktoriinid 40%, ja teie Lõplik projekt on 10%.
Seal on kaks viktoriinid kogu Kursuse semestri.
Ma arvan, et ajad ja kuupäevad on nimetatud ka ainekava.
>> Nii, et me liigitamise oma psets
on see, et meil on sisuliselt neli väärtused, et anname igale palgaastmele.
Meil on väärtus ulatus, õigsust, disaini ja stiili.
Nii nagu te näete, et on selline meie arvutamise valem psets.
Kolm anname kõige kaalu õigsust,
sest ilmselt oma treener Tuleks testitakse juhtudel
et me tahame seda testida.
>> Te kõik on check50 teie käsutuses.
See on väga kasulik funktsioon et kutid saavad kõik
laadige kood meie serverid kus me kontrollime seda sinu jaoks.
Ja sa oled näinud neid kurba nägu, smiley nägu.
Nad on tõesti väga abivalmis.
Palun ärge olla õpilase et meeldib üritab
hardcode kõik vastused neile.
Olen kindlasti näinud pset, kus keegi nägi kõik väärtused check50
ja nad lihtsalt kõva kodeeritud in-- kui see number, välja printida see number.
Kui see number, välja printida, et number.
Ära tee seda.
>> Kuigi tehniliselt check50 on õige,
teed lahendada Probleem ei ole õige.
Nii lihtsalt kasutada check50 säästlikult.
Aga ka veenduda, et teil mõista, kuidas see toimib,
programmi toimimise Lisaks check50,
sest me ei saa katsetada igat võimalik puhul check50.
Me testime mõned neist.
>> Disain on sisuliselt kuidas hästi kavandatud on oma kood?
Kui te olete kopida mitu koodiread palju, palju kordi.
Võib-olla sa ei ole päris parima disaini oma koodi.
Ehk on aeg lisada, et loop.
Sisuliselt on see siin on lihtsalt kõik umbes üritavad teha oma kood,
üritan kirjutada oma koodi nii tõhusalt kui võimalik, et teie programm töötab
nii kiiresti kui võimalik.
>> Lõpuks on meil stiilis.
Nii stiil on omamoodi meelevaldne, subjektiivne mõiste.
Ma tean, et me ametlikult on stiil 50 juhend CS50,
kus ta ütleb teile, oh, sa peaks olema ruumi siin.
Sa peaksid liiki vormi koodi sel viisil.
Sa peaksid nimetama asju nii.
>> Ma tõesti ei hooli, per se, kuidas valid stiilis oma kood,
just nii kaua, kui teil püsida järjepidev.
Näiteks, kui soovid jäta ruumi pärast nelja
Enne oma nelja silmuse, just seda, et iga kord.
Ärge sellist teha.
Ära tee seda muul ajal.
Kui soovite, et hoida lokkis traksid ruumi teatud viisil,
lihtsalt alati see nii.
Ärge sellist teha seda kusagil Siin ja kusagil pole.
Kui me liigitamine, see on tõesti raske
kui ma ei tea, kuidas sa vormindamist koodi
asjad on hull ja kohatu.
Kui sa lihtsalt hoida seda järjekindlalt, et see on palju lihtsam minu jaoks, sest suurem
saaks lugeda oma koodi.
See on palju lihtsam kui õpilane et oleks võimalik vaadata läbi oma koodi
ja vaata, mis sul viga on see kaldkriips, miks seal on küsimusi.
Stiil on üks lihtsamaid asju kutid teha, et saada täis skoori.
Sisuliselt, kui sa just huvita, kui maksad viie minuti tähelepanu
oma koodi iga nädal, siis tuleb saada täis stiili punktid.
>> Lõpuks on meil, mida nimetatakse koefitsiendi ulatus.
Scope-- Ma tean, et see on suur Sõna, eriti selles klassis.
Aga ulatus, kõik, mis vahenditega on see, et sa oled püüdnud
psets parima teie võimet.
Kui lülitate kolmes oma neli probleemi
ja ei püüagi Viimane, oled ilmselt
kavatse kaotada mõned punktid ulatus.
>> Isegi kui sa lihtsalt alustada probleemi, teha oma parima, et kõndige läbi.
Isegi kui see ei tööta, lülitage see sisse, sest see näitab ja tõestab
meile, et sa üritad, et proovisid probleemi seatud
parima oma võimete.
Ja siis saame anda teile täis punkte ulatus.
>> Ulatus on väga oluline ka siis, kui me rääkida madalaim pset skoor langus.
Nii üle käigus semester, teiega on üheksa psets.
Ja me tegelikult kukkumine madalaim tulemus välja need üheksa,
kuid ainult siis, kui teil on täies ulatuses punktid.
>> Nii et kui teil pöörduda mittetäieliku pset, Kahjuks ei saa me tilk, et üks,
sest teie ulatus punktid ei lõpetanud.
Nii et isegi kui teil on kohutav nädal kus sa oled suremas ja sa oled haige
või teie koer sureb, teie kass sureb, ja sa ülekoormatud kodutöö,
lihtsalt püüdke pset.
Kas see parim teie võimet.
Kui see ei tööta, see ei loe.
Lihtsalt lülita see sisse.
Vähemalt saame anda sa punkte pingutust.
>> A jõupingutusi selles klassis.
Vähemalt väikseim punktisumma tilga vaeva.
Nii et jah.
See on päris palju see.
Kas kellelgi on küsimusi, palju sellest, kuidas me hinne klassis?
Või mõni neist?
Kõiki neid nii far-- sektsioonid, tööaega?
Cool.
OKEI.
>> Nii et see on teema, mis ei ole keegi tõesti meeldib rääkida.
Ma tõesti ei meeldi sellest rääkida.
Te ei taha kuulda mind rääkida.
Aga kahjuks me kõik on sellest rääkida.
David veetis 20 minutit loengu räägi sellest.
Ja see on teema akadeemilise aususe.
>> Nii et me kõik siin on ilmselt kirjutatud essee millalgi meie Yale karjääri.
Me oleme ilmselt saanud rääkida, kus me oleme öeldi, et ei Plagioida meie essee,
sest, et töö ei ole meie.
Computer Science, meil sama liiki mõiste.
Kõik tööd, et te esitate, kõik kirjutatud koodi
peaks olema kood, et olete kirjutanud.
Kui ei ole koodi, mis sa oled kopeeritud kusagilt mujalt.
Ei tohiks olla kood, mis olete googled ja plopped sisse
ja sa tõesti ei tea, kas see toimib.
Sa selline on tunne mida ta teeb, kuid tegelikult mitte.
Kui kahtled, sisuliselt, see on lihtsalt mõistlik.
Meie õppekava on meil terve nimekiri asjadest
näeme mõistlikuks versus ole mõistlik.
>> Näiteks mõistlik on sinu ja su sõber
arutada, milline on parim viis minna umbes loogiliselt probleemi lahendamiseks.
See on üsna mõistlik.
Mis ei oleks mõistlik on, kui sa poisid tulid kokku, kirjutada sama kood,
ja lahkus sama koodi.
See ei ole mõistlik.
Sama asi, millist essee.
Kui soovite, et arutada su sõber, hei,
see on see, mida ma tahan kirjutada.
Need on sammud ma tahan võta sellest kirjutada, suur.
See on imeline.
Pane üksteisega koostööd.
Kui te poisid alustada kirjalikult sama asi,
pöörduda sama essee, mis on vähem OK.
Nii et kui kahtled, lihtsalt ei tee seda.
>> Siin on CS50, meil on skriptid et run automatiseerida testida
mitte ainult õigsuse koodi, vaid ka unikaalsust oma koodi.
Nii et palun ärge pange meid seisukoha võttes viidata oma asja EXCOMM.
Palun lihtsalt kõigile, olgem lihtsalt muuta see suurepärane kogemus.
Igaüks õpib paremini, me kõik oleme õnnelikumad,
ja me kõik oleme loodud õnnestub see muidugi.
Midagi, mis on väga ainulaadne selle klassi
et ma arvan, et igaüks peaks tõesti pöörata tähelepanu, et meil on
mida nimetatakse kahetsust § meie õppekava.
Nii et sisuliselt 72 tunni jooksul, kui sa usud sa oled teinud midagi
sa ei ole päris kindel ei asjakohane, siis tulevad meile.
Lubame teile, et 72 tunni jooksul me käsitleda juhtumit ise
viitamata suurem asutuse administratsioon.
>> Nii et kui sa tuled minu juurde ja öelda, Andi, hei, Mul on väga kahju,
aga ma arvan, et seal on paar rida minu kood eile õhtul, et ma mingi googled,
maha tuli Stack Overflow, kopeerida ja kleepida,
ja ma olen tõesti kahju sellest, andke teada.
Palun ärge lihtsalt lase tal mädanema ja loodan, et ma kinni püüda.
Me püüda seda.
Just minu juurde tulla.
Tahaksin teada 72 tunni jooksul.
Me nuputada lahendus.
Ja me lubame, et me ei osuta ülikooli asutused sisuliselt.
Nii et see on teie endi huvides lihtsalt olla aus kõigiga
seotud muidugi.
>> OKEI.
OKEI.
Nüüd, kiiresti enne Ma liikuda, kas keegi
on küsimusi logistika kuidas kursused me läheme sõitma,
kuidas lõigud ei kavatse joosta, ükskõik mis?
OKEI.
Jah.
>> Sihtrühm: [kuuldamatu]?
ANDI PENG: Jah.
Nii quizzes-- kui paljud teist on esmaspäeva / kolmapäev osa?
Kui paljud teist on teisipäeval / neljapäev?
OK, nii et see on kindel split siin.
Nii nii, et võtame see Yale'i on, et me
on plaanis teha kaks eraldi quizzes-- üks iga section-- et
võetakse ajal klassis.
Ma arvan, et see oktoobril oktoobri lõpus, midagi sellist, nagu nädal üks
Viktoriini.
Jah, nii lihtsalt tulla klassi.
Selle esmaspäeval või kolmapäeval siis võtan viktoriini.
Selle teisipäev või neljapäev, saate teha teistsuguse viktoriin.
Aga samast materjalist kaetakse.
Jah.
Hea küsimus.
Jah.
>> Sihtrühm: Kus me minge vaadake meie klassid?
>> ANDI PENG: Jah.
Nii ma siis välja saatma e-mail iganes igal nädalal
kui viktoriinid on graded-- või sorry, kui psets liigitatakse.
Psets tavaliselt välja poolt keskpäeval või reedel.
Nii et ma luban, et ma teen seda proovida saada neid sulle tagasi
lõunaks järgmisel reedel.
>> Kui ma hinne pset, ma saadan välja märguande klass raamat
mis ütleb teile oma skoori saab vaadata online.
Nii õige sel nädalal, kui ma lõpetada liigitamise eelmisel nädalal psets,
kutid saada e-mail teate räägin teile,
hey see on koht, kus sa minna, et vaadata oma hindeid.
Ja näed iga jaotus oma klassid.
Sa näed kommentaare.
Oh, kiire asi ka.
Kommentaar sektsiooni suur Raamat on koht, kus ma ilmselt
veedavad suurema osa oma ajast mune.
Nii et üks asi, mis on tõesti oluline, kui
kutid vaatad Sinu klassid teie psets
ei otsi ainult füüsilisel tulemus
kuid võtab samuti aega tõesti lugeda minu kommentaare.
>> Sageli, mis annab teile tagasisidet kuidas sa oma probleemi lahendamisel.
Kui teil on vaja teha midagi veidi parem,
konstruktiivne kriitika on tavaliselt Parim toodud need kommentaarid lõik.
Nii et palun, palun, ma lähen veeta aega kirjutate kommentaare.
Palun, ma tõesti hindan seda kui te poisid oleks lugeda neid kommentaare.
OKEI.
Cool.
>> Hästi.
Nii et me ei kavatse hakata rääkima ja lihtsalt vaatab kiiresti
mõned materjal nädal null lihtsalt nii et me oleme
paremal lehel algavad sel nädalal probleemid.
Nii et samas silmus on üks Kõigi kolme silmuseid
Arutasime varem selles klassis.
>> Aega loop sisuliselt on kirjutatud süntaks
kus sel ajal, kui teatud tingimus, Selleks korduvalt, eks?
Mõtle selle graafilise siin.
Sa lähed alata Teatud hetkel oma koodi.
Sa lähed siseneda loop seisukorras kui-- Ma ei sead ühendit väljakirjutada x on väiksem kui üks.
>> Kui see on tõsi, sa lähed täita loop keha.
Ja sa lähed hoida teed et jälle, jälle,
üle ja over-- mistõttu on loop-- kuni teie seisund muutub
vale.
Nii et sel viisil, mõneks ajaks loop on üks lihtsamaid viise
kirjutada mingit tingimusel, et peab kordama üle ja üle ja üle.
Lihtsalt olla ettevaatlik, kui sa oled kirjalikult mingit loop
et teil on exit tingimus samuti update kõik,
on nii, et teie loop ei ole lihtsalt sõidetakse ja üle lõpmatult.
Igal juhul, sa lähed et soovite veenduda
et siis muutub teatud osa oma koodi või lõpus silmuse
lihtsalt veenduda, et teil on võimalus on liikuda seisukorras
mis sa tahad, et rahuldada lõpuni.
Kas see mõtet kõigile?
Me lihtsalt ei taha olla haaratud selle spiraali, kus
me minna ringi ja ringi ja ei ole nii, et murda loop.
Ja iga loop sisuliselt on lahenduseks oleks.
OKEI.
>> Teiseks, paljud teist Teie Mario psets
Tõenäoliselt oli tööle Seda ahelat.
Seda nimetatakse do samas loop.
Esiteks saab keegi mulle öelda, Mis vahe on do
samas loop ja samas loop on?
Jah.
>> Sihtrühm: Do samas loop jookseb esimene [kuuldamatu].
>> ANDI PENG: Jah, täpselt.
Nii do samas silmus teeb seda alati olenemata on sees do, sulgudes
seal ja kas see tingimus Enne kontrollimist the-- kahju,
kas see kood enne kontrollimine seisukorras.
Ja see on eriti oluline meile Siit selles klassis, sest enamik korda
me tahame seda küsib kasutaja jaoks mingi sisend.
Ja siis, sõltuvalt sisend nad annavad meile
siis saame hinnata, oh, teha peame kallutada neid uuesti?
>> Nii Mario, kui kasutaja saatis sulle negatiivne kõrgust, näiteks
sa lähed esmalt kiire ja mida iganes on sees.
Siis sa lähed, et kontrollida samal ajal.
Sa tead, on negatiivne 1, on see, et positiivne arv?
Kui see ei ole, ma lähen tagasi ja korrake do ja korrake
ja korrata ja korrata, kuni nad Lõpuks annab sulle mitmeid, mis sulle meeldib,
et me kõik kasutavad meie koodi.
See on päris oluline sisuliselt iga kasutaja sisend.
Võin garanteerida teile korda pset, kus
Palume sisestada mingit koodi, me oleme
Tõenäoliselt annan teile proovikivi, kus me oleme
annan sulle midagi halba, mis on kavatsen proovida murda koodi.
>> Kui me püüame palun-sisend täisarv, siis võib lihtsalt teile string
ja kuidas te hakkama.
Kui me palume teil võtta tööle vanusest, me võime teile negatiivne number
kuidas te hakkama.
Lihtsalt veenduge, et poisid on testimine juhtumeid, kus sa ei saa parim
sisend, ütleme lihtsalt.
Ja teha, kui silmus on sageli parim
kuidas kujundada oma koodi nii et ta vastab nimetatud kohaldamisalasse.
OKEI.
>> OKEI.
Nii et see on tõenäoliselt kõige keeruline loop kolmest
et me vaatasime siiani.
Ja tundub väga hirmutav alguses.
Aga ma garanteerin teile, kui te poisid saama, kuidas kasutada silmus,
see on üks kõige kasulikum asju, kõige kasulikud vahendid oma arsenal
edasiliikumise selles klassis.
>> Nii näiteks Scratch, meil oli see väga lihtne blokeerida
et just ütlesid korrata teatud laused teatud arv kordi.
Muide, SAJ-- see on Scaz Andi Jason.
Me sageli kirjutama meie e-kirju SAJ.
Kui me ütleme SAJ, ei tohi segi.
See on lihtsalt meie.
>> Nii Scratch, suutsime olla plokk, mis ütles, korrata Ma armastan SAJ!
10 korda.
Väga lihtne.
Loogika, et on väga, väga lihtne, eks?
Tahan kõigepealt läbida esimesel aega ja vaata, et teist korda
ja vaata, et kolmandat korda, jne ja nii edasi, kuni jõuad 10.
>> Ja kuidas me kujutaks, et kood on lihtsalt läbi lihtsa silmus.
Nii, sa lähed, et kuulutada Teie muutuva Siit võivad sel juhul
kusjuures int.
Me läheme nime i.
Me läheme selle vormindamiseks 0.
Ja seiskumise väljaanne on saab olema i on väiksem kui 10.
Ja uuendus saab olema i ++.
>> Ja kontuuris, siis läheb täita kuni lõpuks see
ainulaadset lõppu condition-- kus Juhul, see läheb katki silmus.
Seal peaks olema kraami, mida poisid on igasugu näinud
ja tuli teha oma probleemi seatud üks.
Kas kellelgi on mingeid küsimusi osas ette silmad kohe?
OKEI.
Hea.
>> OKEI.
Nii neile, kes on loe pset spec sel nädalal
tean, et me ei kavatse on tööle midagi, mida nimetatakse ASCII ja ASCII tabelis.
Taavet loengus läks lühidalt kuidas arvutid essentially-- kõike
kodeeritakse arvuti binaarne, on ühtede ja nullide.
Ja nii, et arvutid suudavad salvestada erinevaid väärtusi lisaks
et ühtede ja nullide on läbi kaardistamine need numbrid esindama teisi numbrit
või sisuliselt muid sümboleid.
>> Nii Sellisel juhul teeb ASCII table-- kõik see
on kaart tähemärki või sümbolit, et numbrid.
Nii lähtekoodi faili Sinu computer-- ta näeb,
hey, hunnik nulle ja need, ühtede ja nullide, ühtede ja nullide.
See, mida hoitakse Tegelik mälu arvuti.
>> Aga kui meie, inimesed tahavad arvutiga suhelda,
me want-- öelda, näiteks, kui ma tahan suur- A,
Ma vajan viis ütlen arvuti, oh,
kui ma kirjutada suur- A, ma mõtlen Selle esinduse binaarne.
>> Ja nii, kuidas me seda teeme on viskas suvaline asi, mida nimetatakse ASCII tabel,
kus meie, inimesed, nagu programmeerijad, mõni aeg tagasi,
meil meelevaldselt otsustatud, et me ei kavatse määrata nende arvu
väärtused need märgid.
>> Nii kutid google seda online.
Ma arvan, et seal on link sellele oma pset-- lihtsalt ASCII kaardilaud ASCII
tabelis.
See lihtsalt tähendab binaarne numbrid tähemärki.
Ja see saab olema väga kasulik teie probleem komplekt
kui soovite arvutada midagi või kui te
soovite kuvada teatud tegelased või täisarvud
või manipuleerida teatud tegelased.
See saab olema väga oluline, et te kõik
tea, kuidas navigeerida ASCII tabelis.
>> Nii näiteks suurtäheliseks esindab mitmeid 65.
Ja väiketähti esindab 97.
Seega on oluline teada, et Erinevus nende kahe vahel väärtused
on 32.
Sageli, kui teil on vaja teisendada ühelt teisele, vahe on 32.
Ja ärge muretsege, kui sa oled lahke segaduses selle alguses.
Me läheme üle, kuidas me oleks kasutavad seda tegeliku koodi.
>> OKEI.
Nii neile, sülearvutid välja, julgelt tõmba ASCII tabel,
sest need ilmselt nõuavad kutid viide
Mis tegelased on.
OKEI.
>> Nii on teada, et teatud tegelased map teatud numbrid,
kui ma jooksma alles esimene rida, et code-- printf a,
väiketähed a, miinus suur- A. Kas keegi
on vist sellest, mida oleks väljatrükk ekraani kohe?
>> Nii esiteks, mida ei väiketähed esindavad?
Mis number on see, et kodeeritud ASCII tabelis.
Vabandust?
>> Sihtrühm: 97?
>> ANDI PENG: 97, suur.
Ja mis on suur- A
>> Sihtrühm: 65.
>> ANDI PENG: Mis on 97 miinus 65?
>> Sihtrühm: 32.
ANDI PENG: OK.
Mis te poisid arvavad läheb juhtub, kui ma sisend, et koodirida
minu arvutis?
>> Sihtrühm: [kuuldamatu].
ANDI PENG: Sorry, rääkida.
Ära muretse.
See on väga turvaline keskkond, miinus kaamera.
Me kõik läheb mina-- ei muretse.
Lihtsalt me ​​kõik teeskle, nagu see on lihtsalt meie jahutamine selles ruumis.
Ära muretse.
No küsimus on liiga loll.
No vastus on loll vastus.
Ma ilmselt läheb eksida käigus oma õpetuse.
Tõsiselt, poisid, lihtsalt lobiseda välja.
Ole kindel ise, kas tead?
Mis see oli?
Kes ütles, et viimase vastuse?
OKEI.
Karju, et kena ja selge.
>> Sihtrühm: 32?
>> ANDI PENG: 32.
OK, olgem käivitada koodi ja vaata, kas see, mis juhtub.
OKEI.
Nii nagu te poisid saavad liiki vaata, tüüpiline märke Olen
luua siin, kuidas me tööd mingit programmi meie arvuti.
Meil on meie peamine ülesanne meie peamine ülesanne.
Ma lihtsalt kopeerida ja kleebi see rida koodi.
Samuti ole ettevaatlik, kui poisid on kopeerige kood.
Mõnikord teatavad ettevõtjad ei kleebi enam korrektselt.
Sel juhul on minus märk oli tegelikult kriips.
Ja nii arvuti ei korja see üles.
Nii et ma pidin minema tagasi füüsiliselt korrake seda.
Lihtsalt olla ettevaatlik kutid teevad seda.
>> OKEI.
Me läheme sõitma seda siin.
Nii et me läheme cd meie section2.
Olen seda nimetanud programmi asciimath.
Seega pidage meeles, kui me kasutada mistahes Programm tahame esimene kompileerida
töötab läbi meie make.
Ja siis me tahame tegelikult töötavad programmi tehes dot-kaldkriipsuga.
Nii et me läheme ./asciimath.
>> Õigus, seal me läheme.
Ja me näeme 32.
Hästi tehtud.
Sa väärid tükk kristalliseerunud.
Candy teile.
Vabandust.
Hästi.
OKEI.
Nii saame minna tagasi oma näites siin.
Aah, no.
Aah.
OKEI.
Ma lihtsalt hoida seda niimoodi.
OKEI.
Nii nagu te poisid ei vaata, mida me teha saame palju väga huvitavaid asju,
palju väga lahedaid asju palju väga keerulised asjad, mis hõlmab
ASCII märke ja numbreid.
Kui sa saad maha liinile viis, see on palju jälgida mööda.
Me ei lähe läbi osa.
Julgelt, kui saad, Motivatsioon välja paberkandjal
Esimene mida tuleb juhtub siis, kui sisestad selline jada väärtustega.
Näiteks, et viimane rida, on meil · Z- mis kujutab endast teatud number--
a-- mis kujutab endast ka Teatud number-- pluss 1 modulos 26
pluss väiketähed a.
>> Kui kutid hoida lugemisel Läbi nende
võib näha mustrit tulla kuidas me manipuleerides koodi.
Ma väga, väga soovitan Pärast punkti teid kõiki
poisid minna ja sisend need kõik arvuti
ja näha, millist numbrid tulevad välja
ja arutlusi läbi, miks need on juhtub, sest teie psets
see saab olema väga oluline sa aru
miks teatud asju juhtub.
Kõik need slaidid on võrgus.
Nii ei ole muret, püüdes füüsiliselt kopeerida märkmeid.
Kõik online.
See osa ise on online.
Kõik minu lähtekoodi, et Ma töötab on online.
Jah.
Kas sul on veel küsimus?
Sihtrühm: Mis on modulos?
ANDI PENG: OK.
Nii moodul on operaator, kes läheb päris oluline oma poisid on pset
siin.
Nii nii, et operaatorid C ja programmeerimine töö
on see, et teil on, mida nimetatakse division symbol ja moodul sümbol,
mis on nagu protsenti märk.
>> Nii C, kui sa täisarv jagatuna täisarv kaldkriipsuga,
C on kalduvus tahavad kärpida välja kõik peale koma,
sest täisarv tahab teisendada täisarv.
Ta ei kavatse taha olla kahekordne hunnik kümnendkohtade kõik pärast seda.
>> Nii et kui ma teen 3 jagatuna 2, siis läheb katkestas 0,5 ja lihtsalt annab sulle 1.
Nii et midagi olla väga ettevaatlik, kui sa oled
teed mingit matemaatikat programmeerimine, on see, et numbrid saate
pruugi olla numbrid mis sa mõtlesid,
mistõttu ümardamine oma viimase pset on nii oluline.
>> Moodul annab teile ülejäänu.
Nii näiteks, kui ma tegin 3 moodul 2-- nii 3 protsenti märk 2--
see annaks sulle ülejäänud seda.
Nii 3 jagatuna 2 on 1,5.
See on 1 ülejäänud 1.
See annaks sulle 1, mis on ülejäänud osa selle.
>> Nii et kui te poisid liiguvad läbi ASCII tabel,
moodul lõpetad midagi, mis on väga oluline,
ja me arutada, et hiljem.
>> OKEI.
Nii et kui miski on ilus, päris uus ja üsna ainulaadne
et me oleme arutanud sel nädalal on mõiste, mida massiivi on.
Nii massiiv on esimene tüüpi andmestruktuuri
et me ei kavatse tekib selles klassis.
Kõik andmestruktuur on mingi suvaline
sõna otseses mõttes asjad struktuur et me programmeerijad on loonud,
et me panime meie koodi See võib sisaldada muid tükke koodi.
>> Nii selles mõttes, mis on array-- ma arvan et kui faili kapis,
kus, kui avate erinevat riiulid faili kapis,
pääsete erinevaid asju.
Mälu, massiiv on lihtsalt teeme sama asi arvutis.
Sul võib olla erinev blocks-- me helista neile indices-- massiivi.
See on nagu plokk, riiul mälu
et oleme loonud teie arvuti, et saate sisestada
teatud asjad erinevates kohtades.
>> Nii array, siis alati specify--
sul määrata tunnistamise massiivi järgmises vormingus.
Sa lähed esimese määrata andmetüüp
et soovid luua massiivi.
Kui ma tahan array täisarvud, Ma kavatsen panna int seal.
Kui ma tahan massiivi stringe, Ma panen stringid seal,
nimi oma valikut ja seejärel sa lähed on nurksulgudes.
Ja sees nurksulgudes, sa oled läheb on suurus oma valikut.
>> Midagi, mis on tõesti oluline meeles pidada, luues massiivid on
et kui loote massiivi, et suurus ei muutu.
Nii et kui sa tead, et just nüüd sul on massiivi suurus 10,
sa tead, et ma lähen on 10 lahtrit jooksul või 10 indeksid selle massiiv,
ja see ei saa kunagi laiendada või vähendada
Ükskõik mida, ja et seal on praegu vaid 10 plokki ruumi
eraldatud oma mälu, mida saab salvestada kuni 10 asjad, mida sa pannud.
>> Nii et sel viisil, hulga andmete tüübi, andmestruktuuri mis on üle massiivi
on väga erinev mõned teised jagame saab katab hiljem seda muidugi.
Jah.
Näiteks kui sa tahad luua massiivi suurus 3, et
sisalduvate parameetrite integer-- oh, sorry, on temperature--
ja temperatuuri, ning Loomulikult on täisarv.
>> Nii et me looks int, mis on andmete tüüpi, mida me tahame hoida.
Me läheme nimetame seda temperatuuri huvides nomenklatuuri nime
midagi, mida me kõik aru.
Ja me ei kavatse on nurksulgudes.
Ja me tahame kolm numbrit.
Nii et me läheme panna kolme sees on.
>> Midagi, mis on tõesti oluline meeles pidada,
on see, et massiivid on null indekseeritud.
Kõik see tähendab, et sa Alustame indeks 0,
ja sa eel läbi suurus massiivi miinus 1.
Nii näiteks siin, me on massiivi suurus 3.
See saab olla võimalik hoidke kolm väärtust.
Aga numbrid themselves-- et number, massiiv, et indeks,
massiivi, on 0 kuni 2.
Nii poisid, tõesti, tõesti ettevaatlik sa lähed läbi oma püstitatud probleemi
ja luua mingit valikut, sest palju kordi on
tõesti lihtne unustada.
Ma tegelikult ei ole indeks 3, et ma praegu lihtsalt
on indeks 2.
Ja kui sa püüad juurdepääsu kolmanda indeks,
see saab olema, mida on nimetatakse null terminaator.
Ta ei kavatse tegelikult olemas massiiv.
Ja arvuti on ei meeldi, et.
Nii et ole ettevaatlik, kui sa juurdepääsu asjad lihtsalt
tagada, et sa mäletad et massiivid on null-indekseeritud.
>> OKEI.
Nii et esimene näide on lihtsalt üks võimalus luua massiivi.
Teine näide mul allpool on lihtsalt eraldi teed
loomise, mis on samu andmeid struktuuri, et oleme lihtsalt sisestatud.
Nii et selle asemel füüsiliselt töötab läbi ja luues temperatuur 0
võrdub iganes, temperatuur 1 võrdub iganes, temperatuur 2 võrdsete
mida iganes, ma võiks tegelikult lihtsalt otse luua see kõik ühele joonele
arvesse temperatuuri nurksulgudes võrdne.
>> Ja teate Sel juhul ei ole vaja täpsustada, kui suur on teie massiiv on,
sest arvuti läheb läbida ja näed, et seal on
kolm elementi need looksulg.
Ja see läheb tea, OK, Mul on vaja massiivi suurus 3.
Sa ei kavatse vaja input see järgmiselt.
>> Ja ka, jah, niimoodi.
Kas kellelgi on küsimusi selle kohta, kuidas me teeme massiivid
või kuidas struktuuri massiivi töötab?
Jah.
>> Sihtrühm: [kuuldamatu]?
ANDI PENG: Jah, täpselt.
Nii et kui sa olid kuulutada ja initsialiseerida massiivi järgmist meetodit,
mis on teine ​​viis, sa võid jätta need.
Ja arvuti automaatselt teab, et see
peab lugema, kui palju elemente on neis looksulg eraldatud
komadega.
>> Nii et siin nad näevad 65, 87, 30.
Nii arvuti teab, oh, seal on kolm täisarvu.
Ma tean, et luua massiivi nimi temperatuur kolme elemente.
Hea küsimus.
Jah.
>> Sihtrühm: Kas pole võimalik luua massiivi eri tüüpi andmeid
mida võiks sinna sisestatakse?
Näiteks täisarve [kuuldamatu]?
ANDI PENG: eesmärgil Selle klassi, ei, just nüüd.
Kui loote andmeid struktureerida nagu massiivi,
sa räägid arvuti, hei, ma vajan sind
eraldada nii palju mälu minu kõvaketas,
Iga rakk olles teatud bittide arv.
>> Pea meeles, me õppisime nädal null, et erinevate andmete
tüüpidel on erineva suurusega?
Nii näiteks string on erineva suuruse
ruumi kui char, mis on erineva suuruse ruumi
täisarvu.
Ja kui sa ei määra ja sa segada ja sobitada, milliseid muutujaid
sul on, arvuti saab olema väga segaduses.
Ja ta ei kavatse teada kui palju mälu teile.
Nii eesmärgil õigus Nüüd saab kasutada ainult
tunda üht tüüpi massiivi.
Hea küsimus.
OKEI.
>> Nii loomulikult Teine küsimus on meil
on ka nüüd, et oleme loonud massiivi ja me panime kõik need asjad
massiivi, kuidas me läheb pääse ta?
Nii tüüpiline struktuur, mida me alati juurdepääsu massiivi on meie armas silmus.
Ma luban teile, poisid, et me oleme näha palju see mehe siin.
>> Sisuliselt millal soovite sisestada väärtused massiivi
või soovite neid kasutada, siis Parim viis seda teha on silmus,
sest jaoks silmus, siis tea, mitu korda sa oled
lähed tahan joosta massiiv, sest sa oled stop väljaanne, eks?
Ja iga kord, kui sa jooksed läbi, pääsete
teist massiivi element.
>> Ja ka see on üks põhjus, miks tavaliselt hakkame meie jaoks silmuseid on 0 väärtusega,
sest kui sisenete massiivid, pääsete null indeks.
Ja nii see paralleele väga kenasti.
Te võib-olla tahtis kirjutada int i võrdub 1.
i on väiksem või võrdne 3.
>> Aga see ei tööta päris nii ka siin, sest sa ainult
on elemendid 0, 1 ja 2.
Ja nii, kui sa olid hakata Teie i at elemendi 1, 2 ja 3,
sa lähed lõpuks töötab välja piire oma rida,
ja halvad asjad hakkavad juhtuma.
>> Nii et ma loodan, et te nägite Segue miks varasemas klassidesse
me õpetasime kutid, kuidas juhtida ja vormindab silmus nii, et me olime.
See on sellepärast, nüüd me oleme transitioned massiivid,
näed, miks 0 laenab ise väga kenasti juurdepääsuga.
>> Nii, kuidas me seda teeme on selle-- ma olen lihtsalt lasta välja trükkida siin huvides
lasta välja trükkida.
Aga mul on kohatäide, koma.
Ja tegelik ligipääsemiseks osa toimub.
Nimi massiivi kutsuti temperatuuri.
Nii et see on temperatuur ja i-nda elemendi massiivist.
>> Nii nagu silmus jookseb läbi, see saab alguse 0.
See saab välja trükkida 0. indeks seda valikut.
Siis läheb printida välja esimene element.
Siis läheb printida välja teine.
Ja siis me murrame.
Kas kõik selge kuidas see toimub?
Hea.
>> Hästi.
Nii et siin on meil võimalus öeldes, kui me ei taha
raskesti kood in-- mind programmeerija.
Ma ei taha tegelikult füüsiliselt panna iga üksiku elemendi
Selle massiivi.
Kui ma tahtsin asemel on kasutaja sisend väärtusi,
Mis on parim viis seda teha?
>> Noh, siin ma olen loodud see armas funktsiooni,
kus ma võin tunnistada massiivi.
Nii int scores-- olgem lihtsalt öelda, et me tahame teha
massiivi, mis toimus klassid kõigi 18 Õpilaste siin selles osas.
Ma arvan, et meil on natuke rohkem kui 18 lapsed täna.
Aga näiteks pärast, olgem lihtsalt eeldada, meil oli 18.
Ma looks massiivi nimi hinded tüübist int, sest hinded muidugi
on numbrid.
Ja ma lähen 18 nurksulgudes,
sest see, kuidas paljud õpilased ma soovite, et oleks võimalik salvestada hulgaliselt.
>> Ja kuidas ma asustada massiiv on, et ma
kestab see läbi silmus, ning Muidugi, kus 0 on minu 0. indeks.
Ja siis 18 on minu peatusteta väljaanne, sest seal on
18 massiivi elementide.
Ja siis ma lähen tegema printf, Enter skooriks student-- JANKUTUSTA jutt.
>> Kas keegi mulle öelda, miks siin ma olen trükkimine i pluss 1 ja eks?
See on selline trikk küsimus, tegelikult mitte.
See ei ole tegelikult füüsiliselt mõjuta töötavat koodi.
Jah.
>> Sihtrühm: [kuuldamatu] 0?
ANDI PENG: Jah, täpselt.
See on natuke ebamugav öelda, hei, sa oled 0. õpilane selles klassis.
See on natuke imelik.
Nii meil, kui inimestel ei ole tõesti mõelda, kuidas arvutid mõtlema.
Nii et kuigi on arvuti, see hoidmiseks väärtused
on 0-nda indeks, kui me oleme inimesed, me tõesti ei
meeldib viidata end nulli.
Nii et kui ma lihtsalt printida, et Ma lähen välja printida ja lisada
1 lihtsalt selguse huvides.
Nii et kui ma printida, ma lähen võimalik printida õpilased 1.-18.
See tegelikult ei mõjuta jooksvad kood
kuidagi, kuidas printida.
>> Kuid ole ettevaatlik, kui sa oled tegelikult juurdepääsu massiivi.
Kui näed hinded i, märkate siin ma olen tegelikult
juurdepääsu 0. indeks ja mitte 1 pluss 0-- või 1 + 1,
sel juhul indeks nii et see on tegelikult selge.
Kas igaüks omamoodi OK kuidas see töötab läbi
ja iga indeks ma olen pannes väärtuse massiivi
ja luua massiivi 18 numbrid et kasutaja saab sisestada?
OKEI.
Cool.
>> OKEI.
Nüüd liiguvad midagi, mis on päris asjakohased selle osaline komplekt samuti.
Ma tean loengus, David-- kahju, et sul oli küsimus?
>> Sihtrühm: Kas sa pildile?
>> ANDI PENG: Jah, nii ma proovisin.
Aga ma ei tea.
Mingil põhjusel see versiooni PowerPoint
ei ole tegelikult töötab hästi ekraani.
Nii et me lihtsalt läheb hoida seda niimoodi.
Kõik need laetakse üles online.
Vabandame, poisid.
Jah.
OKEI.
>> Nii saame ka stringid.
Nii et kui te poisid tegelikult notice-- ma tean Rob läks üle seda, et loeng
et ta did-- string on tegelikult lihtsalt massiivi tähemärki
kui sa mõtled seda, eks?
String on nimi või lause või sõna, eks?
>> Kui ma oleksin luua string nimega Andi-- lihtsalt minu nimi, A-N-D-I.
Sa mõtle, et vaid üks muutuja.
Aga tegelikult, see on jaotatud arvesse ainult array tähemärki.
Nii see sai iseloomu Salvestatud massiivi väärtuse.
See ju iseloomu n salvestatud teine ​​indeks ja nii edasi ja nii edasi.
>> Nii nii, me tegelikult on selline
on esitatud struktuuri Koht meie stringid.
Nii et siin, kui ma oleksin sisestada Sõna "süüa" - nii string sõna võrdub
saada string.
Kui ma oleksin sisestada sõna "sööma", et on füüsiliselt nii, et minu arvuti
salvestab et string minu mälu.
>> Ja kui ma tahtsin joosta, et ja print et out-- nii osadeks i
võrdub nulliga, pea meeles, loengus, me kaetud midagi, mida nimetatakse strlen,
või stringi pikkusena.
Sest ma tegelikult ei tea, kui suur massiiv on
mis tahes kasutaja inputting--
>> Näiteks olen sisestanud Sõna "süüa," ja ma tean
see on kolm tähemärki, eks?
Nii et ma võiks panna kolme seal ja kõik saab trahvi.
Aga kui teie kasutaja sisend midagi see on erinev arv väärtusi,
sa lähed, ei saa tõesti tean, et kui sa programmi koodi.
>> Nii et kuidas me hakkama test juhtudel nagu see, et meil on midagi
nimetatakse strlen, mis on vaid funktsiooni mis ütleb teile, kui kaua string on.
Nii strlen sõna.
Minu sõna on süüa.
n võrdub strlen sõna.
Kas keegi mulle öelda, mida see väärtus tegelikult on seal?
Mida n esindavad õigus Nüüd on selles näites, kui mul oleks süüa?
>> Sihtrühm: 3.
>> ANDI PENG: 3, täpselt.
Nii meil on int i võrdub null, n on 3, sisuliselt.
Ja ma ei kavatse joosta kuni see on vähem kui 3i ++.
Ja see läheb sisuliselt minna läbi ja teha sama asja.
See saab välja trükkida Iga hinna ja teile
E-A-T. See on lihtsalt mis tähistab teistmoodi kirjutamist.
See saab olema väga kasulik.
Jah.
Sihtrühm: Mis kasu pannes n võrdub strlen sõna sees, et
for loop [kuuldamatu]?
ANDI PENG: Jah.
Nii et kui ma oleksin mina-- öelda, näiteks, kui ma seda teha ja siis
do-- oop--, et minu kood oleks tegelikult teed nagu sama asi.
Kuid see, kuidas David selgitas see ajal loeng, kui keegi teile poisid
mäleta, et nagu Inimestel nagu programmeerijatele,
me tõesti püüame programmeerida meie koodi nii, et meie arvuti on
töötada võimalikult väike, nii et meie kood on väga tõhus.
>> Nii et kui mul oli see olemas, mida juhtuks läbi minu jaoks silmus
on see, et ma esimesel kuulutada muutuja nimega i saab olema 0.
Ma lähen, et kontrollida, oh, Mis on strlen sõna?
Oh, strlen on 3.
Nii on mul vähem kui kolm?
Jah see on.
Ma lähen jooksma.
>> Ja siis teine ​​kord tagasi umbes silmus, ma lähen juurdekasvu i.
i saab olema üks.
Ja ma ei kavatse vaadata, oh, Aga mis on strlen sõna?
Oh, see on kolm.
Ja kas see tunduda selline raiskamine, Iga kord, kui sa jooksed läbi silmuse,
tuleb talitluse kontrollimise, kuigi strlen sõna
tegelikult kunagi muutub?
>> Nii et see on ekstra võimu arvuti.
Kui hakkad rääkima asjadest mis on miljardeid ja miljardeid
ja miljardeid kohad pikk, kujutada arvutis
võttes füüsiliselt läbima ja vaadake kõik, et iga kord.
Sellepärast, et teha lihtsalt et tõhususe huvides
meil on kombeks lihtsalt seda, sest see, kuidas me oleme ainult
kutsutakse funktsioon kui alguses,
ja et iga kord, kui ta läbib see läheb
Väärtuse salvestamiseks 3 seal, et sa seda ei tee
pead pidevalt kontrollima iga kord.
Jah.
>> Sihtrühm: Vabandust.
Just [kuuldamatu].
Kas sa int n võrdub strlen ja panna et eespool välisküljele jaoks silmus
samuti?
ANDI PENG: Jah.
Sa võid seda teha, absoluutselt.
Põhjus on meil seda siin sest tee jaoks silmus tööd
on, et seda nimetatakse kohaliku muutuja selles mõttes,
et kõik, mida sa oled luues sees jaoks silmus
eksisteerib ainult seestpoolt jaoks silmus.
>> Nii muutuja i ainult olemas nendes sulgudes.
Ja siin muutujate n ka eksisteerib vaid need sulgudes.
Nii et kui sa olid kasutada strlen kohta Sõna mitu korda allapoole,
absoluutselt parim viis seda teha oleks kuulutada see üles tippu
nii et sa ei pea seda tegema kord.
Jah.
Sihtrühm: Miks teil on Uus liin pärast protsenti
nägi, kui sa tahad panna kõik tähed kõrval eraldi?
>> ANDI PENG: Oh, ma tahtsin prindi neid kõiki igal real.
See ei ole tähtis.
Jah, see on vormingu.
See on hea küsimus, kuigi.
Jah, kui ma tahtsin printida see kõik vaid üks rida,
Ma ei oleks kriips.
OKEI.
Igaüks hea?
OKEI.
Cool.
>> Nii et ma arvan, et ma olen rääkinud piisavalt.
Te käik joosta koodi ja ütle mulle, mis on valesti siin.
Kus viga?
Nii et nagu näete, ma olen kuulutanud uue massiivi tüüpi string nimega klass.
Ja ma olen sisestanud Sam, Jess, ja Kim ta.
Ja ma üritades välja printida kõik elemendid massiivi.
Kas keegi mulle öelda, miks see läheb mulle probleeme?
Ma annan sulle poisid 10 sekundit mõtlema.
>> OKEI.
Jah?
>> Sihtrühm: Kas vasakul center võrdub 3 või [kuuldamatu]?
ANDI PENG: Right.
Nii mitu korda on see tegelikult läbiks see loop?
>> Sihtrühm: Neli.
>> ANDI PENG: Täpselt.
See saab läbi neli korda.
See saab joosta 0, 1, 2 ja 3,
sest nende element on i on väiksem või võrdne 3.
Ta ei kavatse lõpetada, kui see on 2.
See saab hoida läheb kuni see tabab 3.
Ja nagu me teame, on ainult kolm elemendid meie tegelik massiivi.
>> Kui me püüame pääseda neljas element või indeks 3,
sa lähed lüüa kusagil mälu, mida ei ole olemas.
Seda nimetatakse null terminaator.
Midagi läheb sinna.
Arvuti ei lähe väga rahul olete.
Jah.
Kas kellelgi on küsimusi miks see juhtus?
See on ühine ala, et vältida.
Jah.
>> Sihtrühm: Kas mitte esimene lükake ka string 2?
ANDI PENG: Ei
Nii sisuliselt kui sa üritad massiivi,
et sulg õigus seal, et number-- kõik
see ütleb teile, kuidas palju elemente olen.
See ei ole tegelikult räägib mulle indeksid midagi.
Nii et kui ma tean, et ma tahan kirjutada koos kolme kohta
kolm füüsilist kohti hoidke iganes ma tahan hoida.
Nii et miks number kolm on olemas.
Siiski, kui ma tahtsin tegelikult seda kasutada,
kui ma tahtsin öelda, printf klassi sulg number, siis
sa lähed tegelikult panna füüsilise indeks seal.
Jah, hea küsimus.
>> Sihtrühm: Nii on füüsiline indeks peaks olema [kuuldamatu]?
ANDI PENG: mul on kahju.
Kas te räägite natuke?
>> Sihtrühm: Nii on füüsiline indeks [Kuuldamatu] iga kastid?
[Kuuldamatu]?
>> ANDI PENG: Jah.
Nii et ma lähen tagasi siinsamas.
Mõtle siin.
Meil on hulgaliselt suurus 3.
Seal on kolm kohtades, nagu, füüsilise kohatäitjaid siin.
Aga nad nimeks 0, 1 ja 2.
Nii et kui ma tahtsin neid kasutada, nii, et ma neid kasutada
on printf iganes ma tahtsin siin.
Sa oleks printida välja nime see,
sest siis arvuti teab, oh, ma pean otsima
Selles massiivi jaoks 0. indeks.
Jah.
Aga suurust see ei muuda.
Suurus on 3, sõltumata kuidas sa märgistama.
OKEI.
Igaüks hea?
Sihtrühm: Nii et iga kord, kui ma [kuuldamatu]?
ANDI PENG: OK.
Nii et kui me tõesti ei saada sinna kohe käigus.
Aga tean, et string-- nagu ma enne ütlesin, string on sisuliselt
array tähemärki.
Nii et kui ma luua massiivi stringid, ma selline
on hulgaliselt massiivi märke, eks?
>> Nii et sel juhul, sest ma on massiivi stringe,
kui sa olid sisend tõesti pikk sõna, et ikka kulub ainult üks ruum,
sest see on üks string.
Aga kui sa olid mõelda tegelased, et massiiv,
siis see asumist palju märke kui ükskõik milline Teisisõnu
on.
Pole tõesti oluline just nüüd.
Aga see on lihtsalt üldiselt kuidas see töötab.
>> OKEI.
Nii et see on midagi, mida ma lasen sul palju jooksul semestri.
Ma pean puhkuse mu häält.
Te peate stimuleerida ise.
Palju siis ilmselt on magama kohe.
Ma sisestanud juhuslik probleeme kus me klassina või sa
koos partneriga kõrval sa lähed veeta paar minutit arutada
kuidas me läheks umbes lahendamisel või luua programmi, nagu seda.
>> Nii kohe, me tahame luua program--
me ei kavatse seda kutsuda upper.c-- mis teisendab
väiketähti sõna ülemise klassi string-- suur-, vabandust.
Sõna stringid, sorry, on sünonüümid.
Ma lähen neid muuta tähendab sama asja.
>> Jah.
Võtke paar minutit.
See ei pea olema mistahes keeles.
Lihtsalt pseudokoodi koodi või loogiliselt, kuidas me oleks isegi
minema umbes teeb selline probleem.
Jah.
>> [SIDE CONVERSATION]
>> Olen ka märganud, et kutid can-- Ma nagu näha juba programmi.
Ma arvan, et minu puudumine saatejuht režiim on probleem.
Aga see on ok.
>> [SIDE CONVERSATION]
Jah, palun, poisid.
Tule saada kommi.
>> Sihtrühm: Jah!
>> [SIDE CONVERSATION]
ANDI PENG: Ka yeah, Ma hakkan viskamine kommi
inimestele, kes ei vastata küsimustele.
Nii et sa peaksid kõik vastata küsimustele.
Või ma arvan inimesed ei vastata küsimustele.
Jah, teistpidi.
>> [SIDE CONVERSATION]
Sihtrühm: [kuuldamatu]
>> ANDI PENG: Jah.
Jah.
>> [SIDE CONVERSATION]
>> Olgu, poisid.
Võtame näiteks, 10 sekundit.
>> [SIDE CONVERSATION]
>> OK, poisid.
Nii et enne kui hakkame üritab tegelikult füüsiliselt kirjutada koodi,
hea harjumus arendada, et tahame esimene selline põhjus
välja loogiliselt, kuidas me seda teha.
Sa tahad teha kindel, Enne füüsiliselt
alustada üritab koodi Mario, et te teete
Veenduge, et teil on oma pseudokoodi.
See võtab teid läbi mida teil on vaja luua nii
et kui sa füüsiliselt kirjuta oma programmi hiljem
sa suudaksid paremini püüda vigu oma koodi ja asju.
>> Nii et me läheme lihtsalt alustada by-- inglise keeles pseudokoodi,
Kas keegi taha anda minu üldine selgitus
kuidas me minna seda teed?
Jah.
>> Sihtrühm: [kuuldamatu].
ANDI PENG: Muidugi, ei muretse.
Sihtrühm: Kas sa küsid seda või küsi keegi saada string 1-- yeah, string,
ja siis--
>> ANDI PENG: Jah, nii see on hea algus.
Ma hakkan kirjutama, sorry, kui sa räägid.
So--
>> Sihtrühm: --the väiketähed numbrid on suuremad, eks?
Või väiketähti on suur hulk?
ANDI PENG: Täpselt.
Sihtrühm: Siis me lahutama 32, olenemata [kuuldamatu].
>> ANDI PENG: Hea.
Nii me sellist on üldises mõttes kuidas töötada selle probleemi kohta.
Teades, et me oleme omamoodi õppinud füüsilise nii, et stringid
salvestatakse mällu, mida sa juba
tean, et sa lähed, et ilmselt on vaja kirjutada oma koodi
et liikuda string?
>> Sihtrühm: For loop.
ANDI PENG: A loop, täpselt.
Hea.
Nii me sellist on üldine pseudokoodi allahinnatud
sellist annab sa märgib selle kohta, kuidas
oleks liikuda probleemi lahendamisel.
Nüüd, kui sul on selline, siis võib viidata see alles
millal sa üritad tegelikult kirjutada oma koodi.
Nii saame tegelikult minna siin.
Ja mul on funktsioon nimega upper.c-- seal on-- lihtsalt tühi blankett
kohe, et kutid ei kavatse aidake mind välja nuputada, kuidas kirjutada
see rida code-- ei koodirida.
See oleks mitu rida koodi.
>> Kui alustada mingit Tühjade pset, mis on
esimene asi, mida ma vaja meeles pidada teha?
>> Sihtrühm: [kuuldamatu].
>> ANDI PENG: Hea Yep.
Kaasa.
stdio.h.
Sageli on see üks kõige lihtne vigu inimesed
teeb, kui nad on kirjalikult, et nad tulen
unustage lisada tähtis raamatukogu nad vajavad.
Nii et kui see on tööaega ja sa oled nagu, Ma ei tea, miks minu kood ei tööta.
Kas oskate öelda, miks see ei tööta?
Me läheme öelda sa # include?
Sa peaksid # include see.
OKEI.
>> Nii on meil standard I / O siin.
Kas see on ainult raamatukogu me läheme siit vaja?
Mida me saame teha?
Vabandust.
Keegi lihtsalt karjuda välja?
>> Sihtrühm: [kuuldamatu].
ANDI PENG: Seal sa lähed.
OKEI.
Ja kuidas ma minna alustades mingit funktsiooni, mingit põhiülesanne
meie programm?
Int peamine.
OKEI.
Mida ma sinna sisse panna siin?
Mis on esimene asi, mida sa teha tahad?
Kui me tahame saada string kasutaja,
mida me tahame olla teha seda esimest rida?
Vabandame, kutid lihtsalt tunnen tasuta rääkida ja valju.
Just hüüda iganes.
>> Sihtrühm: Küsi kasutaja?
ANDI PENG: Kuidas me seda teeme?
Ask-- olen ma kavatsen kirjutada "paluda kasutajal"?
>> Sihtrühm: printf.
>> ANDI PENG: OK.
Printf.
Mida ma tahan printf?
>> Sihtrühm: Type midagi.
>> ANDI PENG: niimoodi?
Poisid, teeselda nagu ma olen arvuti.
Füüsiliselt mulle igal sammul et mul on vaja kirjutada siin?
Kas ma teen midagi valesti?
Kui mul on kirjutatud midagi?
>> Sihtrühm: Sa pead hinnapakkumisi.
>> ANDI PENG: mul on vaja hinnapakkumisi?
OKEI.
>> Sihtrühm: Ja siis uus liin.
Semikooloniga.
ANDI PENG: semikoolon?
OKEI.
Väga hea.
>> Sihtrühm: Ja äkki täpsustada et sa tahad seda väiketähtedega?
>> ANDI PENG: Hea.
Te naerate mind unustades panna semikooloniga.
Ma garanteerin teile kuskil käigus selles klassis,
siis unustage panna semikooloniga ning see
viib teid kolm tundi aru miks teie kood ei tööta.
See juhtus meile kõigile.
Tõenäoliselt juhtuda.
Olge hea harjumus kasutada semikoolonit.
OKEI.
>> Sihtrühm: Kas soovid teha längkriipsu aastal?
>> ANDI PENG: Muidugi.
Kas sa tahad teha längkriipsu aastal?
>> Sihtrühm: Jah.
>> ANDI PENG: Hea.
OKEI.
Mida teha edasi?
>> Sihtrühm: siia string.
ANDI PENG: Get string.
Mida ma kirjutada?
Keegi?
>> Sihtrühm: String s.
>> ANDI PENG: String s.
Sihtrühm: getString.
ANDI PENG: Keegi, võite mulle öelda, kus
Selle funktsiooni getString on pärit?
>> Sihtrühm: string.
>> ANDI PENG: string?
Sa arvad, et see on string?
>> Sihtrühm: [kuuldamatu].
>> ANDI PENG: Seal sa lähed.
See on CS50.h.
Kui sa oled alati segaduses, kus raamatukogu fail või päisefailist on,
google sõna otseses mõttes string, ja ma ütlen sulle
Mis on kõik funktsioonid mis on string.
OKEI.
>> Nüüd, et olen loonud string Ja ma olen kiire kasutajal seda,
Olen hoidnud seda muutuvat nimeks s, mida ma pean nüüd tegema?
>> Sihtrühm: Kontrolli, kas see on väiketähtedega.
ANDI PENG: Vabandust?
Sihtrühm: Kontrolli, kas see on väiketähtedega.
ANDI PENG: Olgu, teeme seda.
Kuidas ma seda teen?
Tegelikult eesmärgil klassi kohe,
me lihtsalt läheb eeldada, et kõik
et me panus on juba väiketähed.
Kui sa tahad, et kontrollida, siis oleks lihtsalt lisada tingimisi avalduse
et kontrollida, et jooksis läbi iga massiivi element
ja kontrollida, kas see on vahel teatud väärtusi.
Ma unustan, mida arv väärtuste väiketähed on.
Võite vaadata seda üles ASCII tabelis.
Aga jah, see on tõesti hea koht.
Aga just nüüd, me lihtsalt läheb eeldada, et kõik stringid me sisend
on väiketähtedega.
OKEI.
>> Niisiis, kuidas ma saan minna Selle probleemi saab edasi?
Sihtrühm: For loop.
ANDI PENG: For loop?
OKEI.
Ütle mulle, mida kirjutad.
>> Sihtrühm: For int i võrdub 0.
>> ANDI PENG: OK.
>> Sihtrühm: Oh, tegelikult, siis teha komaga ja teha n võrdub strlen.
>> ANDI PENG: Nii tähtsam et ma arvan, et ta märkas siin
on see, et me ei pea ütlema int n teist korda tegime seda.
Lihtsalt tean, et on ette loop kui sa kuulutatakse,
sa tegelikult ei vaja int kohta teist korda sa muutuv.
Võite öelda n strlen.
>> Sihtrühm: S.
>> ANDI PENG: s.
OKEI.
>> Sihtrühm: Siis semikooloniga.
>> ANDI PENG: Muidugi.
>> Sihtrühm: Ja siis [kuuldamatu] n.
Siis i ++.
>> ANDI PENG: Hea.
Hästi.
Mida me tahame sees Selle jaoks silmus nüüd?
Pea meeles, kui me ei kavatse joosta string ja jookseb läbi massiivi,
tahame vaadata asju ta.
Mida me vajame?
See on omamoodi keeruline osa nüüd.
Igaüks on vist?
>> OKEI.
Nii esimene, kui me isegi juurde?
Kuidas me isegi esimene kontroll või ligi element massiivi?
Kuidas me seda teeme?
Mis on märke, mida me kasutame seda teha?
Mis nimi see massiivi nimetatakse?
Seda nimetatakse s, eks?
>> Pea meeles, et ükskõik string on alati massiivi.
Nii s sulg i, eks?
Sest see on praegune väärtus või indeksi väärtus me kontrollida.
Ja me ei kavatse seada, et võrdse mina-- tahame väiketähti väärtus, eks?
Soovime keerata, et lower-- sorry, me tahame suur-.
Me tahame keerata väiketähed väärtuse suurtähtede.
Ja nii like-- Vabandust, mis on Sinu nimi?
>> Sihtrühm: Heidi.
>> ANDI PENG: Vabandust?
>> Sihtrühm: Heidi.
>> ANDI PENG: Heidi.
Nagu Heidi ütles Esialgu me ilmselt
läheb vaja the-- me oleme ilmselt läheb lahutama
32, olenemata charc see on õige?
Kuna kohta ASCII Tabelis on erinevus
vahel väiketäht ja suurtähega on 32.
Nii et kui me teeme seda, me oleme ilmselt lähed tahan lahutada 32, eks?
>> Nii et me teeme s i.
Kas igaüks aru, miks ma seda tegin?
Sest just nüüd, meie massiiv, me kontrollida 0. indeks, eks?
Ja 0. indeks string, mis on esimene märk.
Ja see märk me läheme eeldada, et see on väiketähed.
Kui me tahame, et oleks suur- me lahutame 32 oma väärtusest,
sest meie ASCII tabel, see on, kuidas me seda saada
järgmisele vastab väärtus, mis muudab ta suur-.
Kas igaüks aru?
Jah.
>> Sihtrühm: Kas te saaksite ka ei väiketähed minus--
>> ANDI PENG: Jah, nii see on tegelikult väga hea.
Ma lähen tagasi tulla, et Küsimus pärast me seda teeme.
Jah.
Ja siis, kui ma tahan näha, mis toimub,
Ma ilmselt läheb soovite printida, eks?
Keegi öelge mulle, mida Kuidas printida siin.
>> Sihtrühm: printf protsenti c kurakriips [kuuldamatu].
See on väärtus [kuuldamatu] s i.
>> ANDI PENG: s i, vabandust?
Sihtrühm: [kuuldamatu].
ANDI PENG: Ma ei tea.
Mida sa arvad?
>> Sihtrühm: Noh, ma wouldn't-- Ma arvan, et ma ei bring--
Ma võtaks selle välja sees, sest [kuuldamatu].
ANDI PENG: Oh, sa oleks pidanud seda tegema?
Sihtrühm: Jah.
ANDI PENG: Jätame selle, kuidas see on, ja ma seletan, miks hiljem.
Pea meeles, et isegi kui on koht, omanik,
sa tahad panna sulgudesse ümber.
Hästi.
Nii et see peaks olema kindel funktsioon siin.
Laseme ta ja vaata, kas see kogub.
Tee ülemine.
Uh-oh.
See ei näe hea välja.
Miks see nii on?
Nagu iga viga, sa tahad minna tagasi alustage esimene,
sest tavaliselt üks viga põhjused palju muid vigu pärast seda.
Siin näeme upper.c: 18: 25, mis ütleb, mulle see programm nimega upper.c,
real 18, viga kaudselt kuulutatakse raamatukogu funktsioonid strlen tüüpi
unassigned-- blah, ma ei tea mis toimub pärast seda.
>> Kõik see räägib mulle kohe on et midagi läheb on strlen.
Ja arvuti segi, sest See on nagu, ma ei tea, mida strlen on?
Mida see ilmselt ütlen sulle sa oled kadunud?
>> Sihtrühm: Sa oled kadunud [kuuldamatu].
>> ANDI PENG: Sul on õigus.
Täpselt.
Nii et see on koht, kus see on oluline tagada
et iga funktsiooni saate kasutada oma kood on lasknud õige päise kaudu
esitama raamatukogu, või siis sa lähed, et saada palju vigu
ja oma koodi ei kavatse teada, mis toimub.
Nii et me läheme lisada string siin.
>> Nüüd, kui me püüame koostada ülemine.
Koostage õigesti.
Laseme selle programmi.
Nii kirjuta midagi väiketähed.
Mis te poisid tahavad kirjutada?
Hüüab midagi.
Olgu, Charly lihtsalt kõndis.
Me kirjutada Charly nime.
>> Charly väiketähtedega.
Ja loodetavasti loodetavasti on see hüüdmas välja ja sülitama
Charly suure algustähega.
Jei!
ei igaüks aru, kuidas Käisin umbes lahendada seda?
Nii, et ma ei saa manipuleerida kasutades täisarvu
lahendada midagi, mis Ma tahan teha stringid,
sest tegelased ja täisarvu viitamisele samamoodi, sest
ASCII kaardistamine.
>> Nii et jätkake punktist, kui ma tahtsin panna siin, mitte 32
suur- miinusmärk väiketähed õiglane nagu et mis toimivad sama hästi,
sest see on lihtsalt lihtsalt Nende kahe vahe väärtused.
Kui ma tahan teha seda again-- Charly.
Oh ei.
Ma arvan, et me läksime vales suunas, jah?
>> Sihtrühm: [kuuldamatu] väiketähed a.
>> ANDI PENG: Seal sa lähed.
Yep.
Ja välja sülitab Charly.
Nii et ole ettevaatlik sa lahutades väärtused
meeles pidada, millest üks on suurem kui teine.
Näiteks siin ma unustasin et väiketähed a on tegelikult
suurem kui suur- A. Nii et kui ma püüdis lahutada neid muul viisil
ümber, sain negatiivse 32.
Ja minu arvuti oli nagu, Ma ei tea, mis see on.
See on tõenäosus lihtsalt mingi suvaline väärtus, mis ei ole väga hea.
Ja nii veenduge, et olete lahutades õige pikkusega
leida soovitud täht.
OKEI.
Kas keegi segaduses, kuidas me käis kirjutamise funktsioon?
OKEI.
Seega tegelikult funktsioon juba olemas raamatukogu nimetatakse ctype.h.
Raamatukogu kutsus ctype.h.
See funktsioon tegelikult on juba kirjutatud teile.
Seda nimetatakse ülemiste.
>> Ja nii otstarbel Selle pset, sa lähed
leida, et sa tõesti tahad kasutada palju funktsioone sisalduvate
jooksul ctype raamatukogu.
Ülem, alandada, on ülemine, on lower-- need on kõik funktsioonid
et siis saab kasutada väga, väga kiiresti oma koodi
ei täpselt, mida see teeb.
Me kirjutasime, kuidas teisendada string suurtäheks.
Aga see on tegelikult koodi et keegi teine ​​on kirjutanud
ja millele pääseb ligi via teist funktsiooni.
Jah?
>> Sihtrühm: Nii et sa lihtsalt kopeerida A seal ja teha seda iga kirja?
>> ANDI PENG: Jah, sest ma ei ole hooli väärtusi.
Ma lihtsalt huvita, et erinevus nende vahel on 32, eks?
Erinevus väiketähed b ja suur- B on ka 32.
Ja vahest c ja suur- C on alati 32.
>> Ma lihtsalt hoolivad Erinevus nende kahe vahel,
sest kõik kirjad Samasugust skeemi, eks?
Kui mul on vahe vahelise üks neist,
Ma tean, mida vahe vahelise kõik neist on.
Hea küsimus.
Jah.
Igaüks hea?
OKEI.
Oop.
>> OKEI.
Nii teine ​​mõiste, mis on saab olema väga kasulik, kui teil
edasi arendada koodi on seda ideed
loomise funktsioone või võtmiseks.
Nii kohe, me kõik oleme võtnud algebra.
Algebra, siis on õpetanud, et on olemas see imeline asi nimega funktsiooni
masin, kus, kui sa sisend üks omamoodi number,
see jookseb läbi selle imelise funktsiooni ja välja hüppab erineva väljundi, eks?
In kood, sama asi juhtub aastal mingit funktsiooni.
>> Nii et ma võiks füüsiliselt kirjutada minu keha minu koodi
peamine väide, et tegelikult teeb olenemata keha kood teeb.
Aga väljaspool seda, ma ei saa ka kirjuta palju erinevaid funktsioone
et teha palju erinevaid asju.
Näiteks oleme juba hakkasin kasutama mõned neist.
Printf-- et on funktsiooni, et keegi teine
on juba kirjutatud, et me nimetame meie koodi.
Et upper-- sel juhul, upper-- on teine ​​funktsioon
oleme kirjutanud, et me võib helistada meie koodi.
Ja nii ma arvan miks meil on isegi funktsioone?
Miks me lihtsalt ei sulpsti see kõik sama rida koodi?
See on lihtne kõigile.
>> Noh, põhjendusi, et on, esiteks, organisatsiooni.
See on tõesti tüütu läheb läbi kellegi koodi
ja üks funktsioon, nagu printf.
Kui te poisid tegelikult teadis, mida funktsiooni printf kaasnevad kirjutada,
see on nagu 1000 rida koodi.
>> Kui iga kord kui ma tahtsin to printf midagi,
Ma pidin kirjutama 1000 rida koodi, See oleks väga tüütu lugeda,
õige?
See on põhjus, miks me oleme lihtsalt loodud abstraktne funktsiooni
et meil on juba keegi teine ​​on kirjutanud kusagil mujal.
Ja iga kord, kui meil on vaja seda kasutada Meie koodi, me lihtsalt pean ütlema printf.
Ja see on võimalik kasutada funktsiooni keegi on kirjutatud meie koodi.
See muudab lihtsamaks organisatsiooniliselt lugeda koodi.
>> Teiseks, see on lihtsustamine.
See lihtsustab samme meil võtta, et lahendada meie probleem.
Printf, funktsioone nagu printf, funktsioone nagu ülemiste
on kõik asjad, mis võimaldavad meil lihtsustavad meie koodi alla nii see on lihtsam.
Ja viimane asi on taaskasutada.
>> Nii et meil on funktsioon nimega printf
et meil on võimalik helistada palju erinevaid ajad ja võimaldab tal olla korduvalt.
Kui ma kirjutada printf, Ma ainult seda kirjutada üks kord.
See eksisteerib ainult selles ühes kohas.
Kui ma tahtsin seda uuesti teha, oleksin pea kopeeri ja kleebi see kõik
minu teine ​​rida koodi.
Sellepärast, kui me loome funktsiooni mis eksisteerib väljaspool meie peamine,
saame lihtsalt kutsuda seda ja seda kasutada, kui
vajame nii, et see on palju lihtsam meie jaoks programme kirjutada.
>> Nii nii, et me oleks tegelikult kirjutada funktsioon on väga sarnased, eks?
See on selline esimene Näiteks kus me tulen
vaata funktsioon võtma stiil teistsugune kui meie int main void.
Sel juhul, kui tahtsin kirjutada funktsiooni nimetatakse q, eks?
>> Ja int väärtus siin on kõik mulle öelda,
Mida ma tahan seda toimida naasta mind?
Kui ma tahan kuubik täisarv, Ma tahan, et sisestada.
Need on parameetrid.
Ma lähen sisestab väärtus tüüpi int.
Ja ma lähen tagasi teist tüüpi väärtuse int.
Ja siin, nagu sa näete, kõik teen
on cubing iganes minu panus on nagu mu väljund ja selle tagasi.
>> Nii et kõik see funktsioon teeb on võtab mingi täisarv.
See korrutab ise kaks korda nii, et see kuubikud mõju.
Ja siis ta naaseb mida iganes, et väljund on.
Nii et sel juhul on kaks rida kood, mis meil oli kirjutada extra.
Aga kui me tahame helistada peale seda mitu korda,
see on palju lihtsam kirjutada, et üks line siin see on kuubik kui
läbima mitu korda.
>> Nii nii, et sisuliselt mingit vormindamise mingit funktsiooni
läheb olemas on, nagu siin.
Nii et meil on funktsiooni nimi.
Sel juhul nimetatakse seda kuup.
Ja me nime kuubik, sest see on lihtne meeles pidada.
Saate nimi on ruudu ja see võib tegelikult kuubis,.
Ei ole oluline.
Just nimi, mis sa oled määrates oma funktsiooni.
>> See siin, int, on tüüp parameeter, mida vaja.
Mida see funktsioon vaja, et see töötaks?
Noh, ta vajab sisendina.
Ma nimeks sisend.
Saate nimi see, mida sa tahad.
Aga mul on vaja midagi tüüpi int.
See saab tegelikult teostada kõik, mis on sees siin,
kere funktsiooni.
Ja siis tüübi tagastamise siin, see int--
kõik see räägib mulle on et see funktsioon on
läheb tagasi mind int.
Nii see läheb võtma int, ja see läheb teile tagasi int.
Kas igaüks aru, kuidas vormingu selline töötab?
Cool.
>> OKEI.
Nii et ärge mures, kui tundub veidi abstraktne kohe.
See on midagi, mida me räägime.
Me sukelduda sügavamale hiljem muidugi.
Nii, et mingit kõrgemat võtmiseks need asjad töö
seisneb selles, et mälu, in arvuti, kõik
hoitakse seda tüüpi korstna, ma ütlen.
>> Nii seal tipus.
Ma ei tea, kas sa poisid on näha, et hästi.
Ma püüan suumida.
Siin üleval, me on füüsilise teksti
mida arvuti on interpreting-- kõik nullid ja need, mis
eksisteerivad meie arvuti.
Ja siis on meil vormindatud andmed ja deinitsialiseerimine andmed,
mida me nimetame globaalseid muutujaid.
Nii muutujad, mis on olemas kõigis programmides
ja kogu teie, Sisuliselt koodi.
Ära muretse, kui teiega on selline ebaselge seda.
See ei ole tegelikult küsimus kohe.
>> Ja siis on meil mida on nimetatakse hunnik virna.
Mõtle virna sõna otseses mõttes nagu nagu virna asju,
virna erinevate asju, mida lükatakse peal
üksteisest mis talletavad erinevate muutujad ja süntaksi Koodi.
Ja siis siin väga põhjas, meil keskkonnamuutujateta
mida te täidesaatva jooksul lihtsalt su väike rida koodi.
>> Ja me lihtsalt läheb suurendamiseks in tegelik stack osa.
Nii siin, kui me olime suurendamiseks aastal just selles valdkonnas korstna,
see on see, mida ta näeb.
Ja see on tegelikult päris oluline kui poisid räägivad funktsioone,
sest teate, et mälu arvuti
salvestab muutujad ja funktsioonid
ja parameetreid nii oma funktsiooni ja teie põhimuutujana
erinevates kohtades.
>> Nii kohe, peamine on tegelik funktsioon
et sa täidesaatva koodi.
Olete oma salvestatud parameetrite siin ja tema kohalikud muutujad hoitakse siin.
Kohalik muutuja vaid mis tahes muutuja et on olemas ainult selle funktsiooni.
Ja peale seda, siis on see Eraldi funktsioon nimega kuup.
Sul on see parameetrid samuti need kohalikega.
>> Ja põhjus saate vaata siin on see, et mida
juhtub, kui kuubi omastab kasu oma põhifunktsiooni
on see, et tegelikult on see kopeerimine, et üle.
Nii et kui ma tahtsin kuubik 2 ja tagastab 8, et 2
tegelikult sisestatud parameetrina ja see on
kopeerida üle nii, et teil on see olemasolevate kahes erinevas kohas mälus.
Ja sa pead olema väga ettevaatlik mäleta mille üks nendest
sa oled tegelikult manipuleerides.
Ja näide sellest, mis juhtus et oleks väga, väga halb
olemas siinsamas.
>> Nii siin, olen saanud, teoreetiliselt Programmi siinsamas, põhiülesanne
et ma tunnistamise int x võrdub 1.
Ma kuulutatakse teise int y võrdub 2.
Ja siis mul hakkab see läbi selle funktsiooni
nimetatakse swap, kus ma eeldan, et see vahetades kaks väärtust.
Ja siis ma lähen prindi neid välja, eks?
Seda ma tahan seda programmi teha.
>> Nii saab tule alla ja võtab pilk.
Nii et kui ma tegelikult kirjutada eri funktsioon, nagu näete,
meil põhiülesanne siin.
Ja siis on meil teine ​​funktsioon siin.
Void swap.
Kehtiv tähendab lihtsalt, et see on ei kavatse tagasi midagi.
Funktsiooni nimi on nimetatakse swap, ja see on
läheb tarbimist kahe muutuja, int a ja int b, oma [kuuldamatu] funktsiooni.
>> Nii et sisuliselt on siin, et me oleme associated x ja y sellesse funktsiooni.
Ja kui me luua see-- nii et me tahame
luua ajutine väärtus, eks?
Me läheme määrata, et a.
Ja siis läheb nüüd võrdne b.
Ja b läheb tagasi kus temp väärtus oli,
mis on, sest kui tahad vahetada asju,
sa ei saa lihtsalt meeldib vahetada neid.
>> Sa pead hoidma ühe välja siin nii, et see mäletab
mis see on, sest kui sa vahetada üks, siis unusta
mida see algne väärtus oli, eks?
Nii teoreetiliselt, see programm peaks töötama, eks?
Kui ma tahtsin vahetada kaks, nad peaksid vahetama.
Nii saab käivitada ja vaata, kas see toimib.
>> Nii nagu te poisid ei vaata, x kunagi oli 1 ja y kunagi oli 2.
Ja kui ma seda välja printida, x on endiselt 1 ja y on 2.
Hmm, see programm ei tundu olevat töötab nii, et ma tahan seda teha.
Kas keegi taha võtta tulistas aim, miks see juhtus?
See on seotud sellega, kuidas et erinevad asjad
ladustatakse eri kohtades mälu.
>> OKEI.
Nii kutid ei pea muretsema liiga palju seda kohe.
Aga tean, et kuubik kohaliku näitajateks olid a ja b,
sest siin meie ülesanne, oleme kuulutanud ja b
kui muutujaid, mis eksisteerivad jooksul kuubik, et funktsioon.
Aga nagu näete, parameetrid, see võtab ka ladustati siin.
Aga me ei olnud tegelikult tagasi midagi.
Me ei tegelikult muutumas x ja y.
Me lihtsalt muutuvas a ja b.
>> Meil oli kopeeritud x ja y sisse midagi, mida nimetatakse a ja b.
Aga me tegelikult kunagi manipuleeritud x ja y ise.
Kas te näe kuidas see toimub?
Kas me oleme lihtsalt kopeerida seda üle, kuid me ei ole tegelikult hoida
lugu sellest, kus nad olid mälu.
>> Ja nii nüüd arvuti otsib, oh, ma olen
käivitada see asi läbi see armas funktsiooni.
Aga x ja y on endiselt x ja y.
Midagi juhtus neid asjaolu tõttu
et need parameetrid ja kohalikud muutujad
hoitakse teist paigutama mälu.
Ja see on kõrgema taseme mõiste, et me tulen
ilmuvad hiljem muidugi.
Aga tean, et see on probleem, mis võib juhtuda
ja et me nuputada, kuidas selle kohta, kuidas käsitleda seda hiljem muidugi.
OKEI.
Hästi.
Nii viimase kontseptsiooni me oleme tõesti, et katta
mis saab olema kasulik jaoks pset sel nädalal
on nn käsurea argumente.
Nii Rob loengul läks läbi Selline lühidalt, kuidas need töötavad.
Sisuliselt teada, et kui olete kirjalikult
nagu põhifunktsiooni, kui me kirjutas funktsioone enne minevikus,
meil oli int main void.
Ja põhjus oli meil void seal oli, sest meie programmid ei
vaja sisendväärtused joosta, eks?
Kui ma jooksin Mario, ma ei pea tegelikult lihtsalt kirjuta midagi
kui ma jooksin Mario.
Ma võiks kiire kasutajal hiljem.
Aga see ei ole alati nii.
>> Näiteks selles nädala probleem seab,
sa lähed küsitakse, et Lisaks töötab oma programmi,
sa lähed tahan sisend Teatud asjad otse kui
käivitada oma programmi.
Nii, kuidas me seda nimetatakse käsurea argument, mis
on nagu argument saate sisestada otse
kui sa üritad käivitada oma programmi.
>> Nii et tähistada seda, see on üsna keeruline välimusega,
aga see on tõesti ei ole, et raske. Nii int main--
see on lihtsalt oma põhifunktsiooni.
Into Argc komaga string argv sulgudes.
Nii et kõik, mis ütleb, et see int argc-- kõik, mis ütleb,
on see, et need on mitmeid argumendid arvuti oodata.
>> Nii et üks asi, mis on tõesti oluline jälgida
on füüsiline oma programmi nime loeb üks nendest argumentidest.
Nii et kui ma tahtnud minu programmi joosta pluss üks käsurea
argument, ma olen tegelikult läheb on kaks.
Argc on tegelikult saab olema kaks.
Ja siis string argv bracket-- kõik, mis teeb,
see annab mulle massiivi stringe, mis on
läheb lihtsalt kuvada ja salvestada mida kõik need käsurea argumendid.
>> Nii näiteks, kui ma tahtnud seda Programm, ./copy inFile outfile, eks?
See on lihtsalt tüüpiline Linux käsk.
Mis tegelikult on Argc?
Mitu käsurea argumente on seal tegelikult on?
Kõik see teeb on teha koopia infile nime ühe faili
ja see koopiad see teise faili, eks?
See on kõik see teeb.
Nagu näete, ma teen seda ühel real ilma tegelikult vajavad programmi.
>> Mis on meie Argc sel juhul?
Mitu argumendid meil on?
Sihtrühm: Kolm?
ANDI PENG: Meil ​​on kolm, täpselt.
Nii et see on väga intuitiivne lihtsalt arvan, et see on lihtsalt
infile ja outfile.
Aga tean, et füüsilise nimi Programm näed moodustab ühe.
Nii et sel juhul Argc on tegelikult kolm.
Kuidas, mida on argv 0?
Pidage meeles, et kõik käsureaargumentidena
hoiti massiivi stringe.
Nii et kui ma püüan sellele juurde, mida oleks argv sulg 0 anna mulle?
>> Sihtrühm: [kuuldamatu].
ANDI PENG: Täpselt.
See annaks mulle dot kaldkriips koopia, sest see on
0. element, Esimene osa minu rida.
Aga argv 1?
>> Sihtrühm: inFile.
ANDI PENG: inFile, täpselt.
Aga argv 2?
Sihtrühm: outFile.
ANDI PENG: outFile.
See on natuke keeruline nüüd.
Mis te poisid arvavad argv 3 läheb andis mulle
kui ma proovisin printida, et välja?
>> Sihtrühm: [kuuldamatu]?
>> ANDI PENG: Kas teil on käsi püsti?
Jah.
>> Sihtrühm: alternatiiv.
>> ANDI PENG: Täpselt.
Seega pidage meeles loengus, et me on lõpus rassi midagi
nimetatakse null terminaator?
Me võtame arvesse seda ka edasi klassis.
Aga tean, et märke, kuidas arvuti
teab, et see on lõpp massiiv on, et see
paneb midagi, mida nimetatakse null terminaator või kriips null.
>> Nii et kui sa püüad pääseda argv 3, sa lähed tabanud see kriips 0.
See on isegi rohkem konksuga küsimus.
Aga argv 4?
Nii et see on minevikus null terminaator Varem piire meie massiivi.
Mis sa arvad läheb juhtuda, kui me püüame seda teha?
>> Sihtrühm: [kuuldamatu]?
ANDI PENG: Vabandust?
Ütle, et natuke kõvemini?
>> Sihtrühm: [kuuldamatu].
ANDI PENG: Jah.
See on nimi ala saate tõenäoliselt saada.
Aga tean, et argv 4-- mis võimaldab teil juurdepääsu
kohti arvuti mälu, et sa tõesti
ei tohiks olla liigutav, sest kohe tead, mis argv on.
Sa tead, et see on massiivi suurus 3 mis on dot koopia, infile ja outfile.
>> Kui te proovida minna nii kaugele, et et sa oled mööda null terminaator
arvuti on ilmselt salvestatud midagi argv 4.
Ja sa tõesti ei tohiks olla võimaldada juurdepääsu argv 4,
sest sa oled faili kapis ja sa oled ainult
lubatud juurdepääs nendele kolmele riiulid.
Aga kui te üritate jõuda palju kaugemale riiulile, kus teil on lubatud,
sa lähed alustada jama muid asju arvuti mällu.
See saab olema tõesti halb.
Nii lihtsalt tean seda.
Ole väga ettevaatlik, et sa ei ole lihtsalt juhuslikult alustada
juurdepääsu elemendid massiivi et ei olnud, mida sa tahtsid luua.
Yep.
>> OKEI.
Nii et me teeme teise terminal näiteks siin.
OKEI.
Nii Rob kiiresti loengu teisel päeval läks
läbi selle näiteks siis, kui ta oli int main int Argc string argv
sulgudes, mis ütleb mulle, et ma olen läheb on käsurea argumente.
>> Ta on, kui Argc võrdub võrdub 2-- mäletan,
võrdub võrdsete võrdlemine.
Kui see võrdub 2, siis ma olen trükkimineku hello,
olenemata esimene massiivi element on.
Else print, tere.
Mis see läheb juhtuda sisuliselt?
Kas keegi lihtsalt seletada Inglise, mida see programm teeb?
Jah.
>> Sihtrühm: Kui keegi kirjutada käsk ja ütles oma ees- ja perekonnanimi,
see ei ole lihtsalt printida Esimene ja öelda, hello,
Mis iganes on Sinu esimene nimi on.
>> ANDI PENG: OK, lähme käivitada.
Nii näiteks, kui ma oleksin teha Selle faili teha hello mina-- hello
mina-- mida sa tahad, et sisend?
>> Sihtrühm: Ees- ja perekonnanimi.
>> ANDI PENG: Ees- ja perekonnanimi?
Spaces?
>> Sihtrühm: Jah.
>> ANDI PENG: Kas keegi ütleks mulle kohe, mis on Argc?
Just seal?
Oih, vabandust.
Lubage mul tagasi minna.
Mitu käsurea argumente are-- kutid tõesti ei näe.
Aga ma püüan suumida.
Ma üritan.
Jah, seal on kolm, eks?
See dot kaldkriipsuga hello, see on Andi, ja see on Peng.
>> Mida te poisid arvate, et see Programm läheb välja trükkida?
Oh.
Oi vabandust.
Vale nime.
See prindib, tere.
Kas keegi tahtma selgitada miks see juhtub?
Jah?
>> Sihtrühm: [kuuldamatu].
ANDI PENG: Täpselt.
Nii et siin on tingimuslik tähendab, et kui Argc võrdub võrdub 2.
Nii ainult juhul, et seal on kaks käsurea argumente.
Siis ma lähen printida, tere, mis see on.
Aga muidu, ma lähen prindi lihtsalt, tere.
Nii ei keegi taha mulle näiteks
kuidas ma saaks tegelikult saada see printimiseks väärtus argv 1?
>> Mida ma pean sisend siin?
Ainult üks asi, eks?
Kuna dot tere juba loeb esimene argument.
Mul on ainult üks.
Nii dot hello kui ma lihtsalt ei Andi.
Tere, Andi.
Kas kõik mõistavad miks see juhtub?
Jah.
>> Sihtrühm: Nii vaheline ruum käsk LINE on see [kuuldamatu]?
ANDI PENG: Ei
Nii et ruumi käsurea argument, x, rääkige oma arvuti
et see on algus uus string.
Nii string argv siin-- see kauplustes kõik oma käsud line argumendid
ridades.
Ja nii ruumi käsurea argument-- kõik, mis teeb, on sulle öelda,
see on lõpus üks string ja see on aeg edasi liikuda teisele.
>> Jah.
See on päris oluline Sinu pset, sest sa oled
läheb testime neid.
Nii kas keegi on Küsimuste selle?
OK, lahe.
Jah?
>> Sihtrühm: Nii põhjus soovid pane täisarv argument calc asemel
on [kuuldamatu] oleks, kui soovite kirjuta täiendavat teavet
[Kuuldamatu]?
>> ANDI PENG: Jah, täpselt.
Mõned programmid teil vaja sisestada käsurea argument
et see möödub ja kasutab seda.
Jah.
Sihtrühm: Mis siis, kui [kuuldamatu]?
>> ANDI PENG: Noh, mida ma pean muuta, siis minu programm?
>> Sihtrühm: Just 3.
>> ANDI PENG: Miks on see, et juhtub, sa arvad?
>> Sihtrühm: Kuna [kuuldamatu].
>> Sihtrühm: Sa pead muuda see 2 [kuuldamatu].
>> Sihtrühm: 1 ja 2.
ANDI PENG: 1 ja 2, täpselt.
Nii et sel juhul sa ilmselt tahad olla kaks printf statements--
mis trükitakse argv 1 ja üks, mis trükitud argv 2.
Siin.
Ma ei saa tegelikult teha, et reaalne kiire.
Palun.
Oh.
Mitte päris, mida sa tahtsid.
Aga kui te poisid jändama vormingu, siis tulevad välja.
Jah.
Cool.
Ma tean, et me oleme natuke vähe aega.
Aga ma olen lihtsalt kavatse kiiresti kulutada paari minuti läbimas helpful--
Sihtrühm: Sul on kaks minutit.
ANDI PENG: Mul on kaks minutit?
Aitäh.
Natuke kiiret pset näpunäiteid.
Nii see pset, ma väga soovitada, nagu ma ütlesin, igaüks lugeda spec.
Sul kirjalikult kolme programs-- üks nimetatakse initials.c, üks nn caesar.c,
üks nn vigenere.c.
Mõned olulised näpunäited, et kutid tõesti
hoida mind-- nii on see funktsioon
nimetatakse atoi-- nagu mulle meeldib öelda, trois.
Selge, kas see on tegelikult, kuidas sa seda ütled.
Aga kõik see teeb, see on sisestanud.
See teisendab stringi int.
Nii kujutab ASCII i täisarv.
See on lihtsalt konverteeriva ASCII väärtused täisarve.
Seega pidage meeles argv, massiiv, et kauplustes kõik oma käske ritta arguments--
ta salvestab neid kõiki stringe.
Ja kui sa tahad, et oleks võimalik on üks neist saanud täisarv,
sa lähed on kasutada seda väärtust siin.
>> Moodul, nagu me käsitlesime varem klassis täna
võimaldab teil olema Ülejäänud iganes on.
Nii et kui meil on tõesti suur hulk Caesar,
Mis siis, kui meil on lõpuks string Vigenere?
Kuidas sul läheb, et oleks võimalik saada, et ümbritsev?
Kui ma tabanud z ja ma tahan see tagasi minna,
kuidas ma kavatsen saada et ümbritsev?
Tõenäoliselt soovid kasutada moodul seal kuskil.
>> Teiseks, sirvida ringi teegi. ctype.h.
See on uus raamatukogu on meil.
Leiad palju tõesti kasulik functions-- isupper, islower,
toupper, tolower, isalpha, jne.
Kõik funktsioonid on väga kasulik kui sa üritad aru saada,
on see märk väiketähti kirja?
Kuidas muuta see stringi suur-?
Kõik need asjad on väga, väga kasulik oma pset.
OKEI.
>> Lahtiolekuajad täna on 8.00 11:00 Teal klassiruumis homme
samuti kolmapäeval ja neljapäeval õhtul.
Lahtiolekuajad on commons.
Väga soovitan teil poisid kõik alustada kohe,
sest sa ei taha olla, et poiss, kes neljapäeva õhtul on probleeme
esitades oma pset ja nagu, ma ei tea, mida teha.
Hakkasin, ma lõpetasin ma esitanud.
Proovige anda endale ruumi, sest koodi probleeme esineb alati.
Sa tahad teha kindel, et sa annad ise
palju aega, et oleks võimalik lõpetada psets.
Cool.
Ma logelema siin.
>> Sihtrühm: Kas see online juba?
ANDI PENG: Ma ei tea, kas see on Internetis juba olemas, kuid see saab olema.
Ma logelema siin, kui keegi on küsimusi juba.
Tänan, et tulid.