>> [Mūzikas atskaņošanas]
>> DAVID Malan: Nu labi.
Laipni lūdzam atpakaļ.
Tas ir CS50, un tas ir Week One, Turpinājums.
Tātad viens no iemesliem, kāpēc mēs esam garām ap tehnoloģijām, piemēram,
Google Stikls ir, ka tie nāk ar kaut kas pazīstams kā API,
Application Programming Interface.
Un ko tas nozīmē, ka ar tiesības failus un ar tiesībām
dokumentāciju, jūs faktiski var rakstīt Programmatūra pat ierīcēm, piemēram, šo.
>> Un tā, kas mums ir prātā pret semestri gals ir, ja projekts
iesaistot, piemēram, Google Glass varētu apelācija, mēs redzēsim, ko mēs varam darīt
noteikumi hooking jums uz augšu ar kādu Aizdotai aparatūras, kā arī
publiski pieejamu API, lai jūs varētu faktiski sākt veidot programmatūru
, kas darbojas tajā pašā Google Glass.
>> Vēl viena ierīce, kas mēs esam spēlē ar par vēlu, ka mēs domājam, varētu būt
jautri semestra beigās ir tas maz lieta šeit.
To sauc lēciens Motion, un ko jūs esat par to, lai redzētu, ir tehniski
reklāma ierīces, bet tas tas runā, ko tas īpaši
Ierīce ir spējīga.
Un tā arī nāk ar API, izmantojot ko jūs varat rakstīt programmatūru, lai
kontrolēt savu datoru tādā veidā, ļoti patīk šī vienas minūtes filmu šeit.
>> [VIDEO PLAYBACK]
>> [END VIDEO PLAYBACK]
>> Tāpēc tieši tagad, šī ierīce notiek jāīsteno kā maz USB
savienotājs, ka jūs varat kontaktdakšu jūsu dators, bet es nebūtu pārsteigts
ja pirms ilgi mums ir šāda veida tehnoloģijas nākamo grupu datoriem
un Mac, lai jūs varētu, protams, mijiedarboties ar to
veidā, piemēram, ka.
Patiesībā, ko es domāju, ka es gribētu darīt, arī ir Man velk uz augšu mazliet demonstrāciju
programmu, kas nāk ar šo programmatūru.
Tāpēc es esmu likts maz sensoru priekšā manu klēpjdators.
>> Un, kā jūs varat redzēt, tas jau saprot ka manas rokas ir tur
to kontrolē.
Un viss šis pieteikums nav ir swimmingly maz lietas, kā šis.
Bet jūs varat redzēt, ka, protams, Man ir pieci pirksti tur.
Ja mēs varam iegūt to darīt visus 10, Jūs varat iedomāties, veikls klavieres
pieteikums vai tamlīdzīgi.
Tātad, ja jūs vēlaties nākt klajā pēc klases šodien un spēlēt ar to, kā
labi, jūs esat laipni aicināti.
Tātad vairāk par to uz semestra beigām.
>> Tātad pāris administratīvās paziņojumi.
Viens, do sadaļu, piektdienu pusdienlaikā pie cs60.net/section.
Šis URL ir par kursu ir mājas lapā, kā arī.
Pa to laiku, lai gan, supersections būs debija šo svētdien.
Supersections ir vienu reizi lieta, jo tas aizņem mums kādu laiku, lai strādātu
, kurš ir, kurā sadaļā un kur.
>> Tātad šo nāk svētdiena, tur būs viens sadaļā tiem mazāk apmierināti,
viena sadaļa tiem, ērtāku.
Un tiem no jums kaut kur starpā ir laipni aicināti doties uz
viena vai abas, vai ne.
Abi šie tiks filmētas.
Tie būs lielākā auditorija, nekā daļa, kas parasti būtu iekšā
Bet mērķis šeit ir, lai aprīkot jūs ar daži ar problēmu komfortu iestatīt vienu,
ar C, ar CS50 ierīces, šā nedēļas nogalē, pat pirms jūs uzzināt savu
formāla sekcijām.
Tātad tu sastapsi savu TF, un jūsu mazāku grupa no sectionmates in par
nedēļas laikā.
>> Darba laiks, tikmēr, ir iet tālāk.
Vai izmantot no tiem šovakar vai rītvakar, ja vēlaties.
Problēma komplekts 0 ir saistīts piektdien.
Šī ir diena vēlāk nekā regulāri ieplānotais ceturtdien.
Bet ar problēmu kopumu 1, jūs redzēsiet ka tas ietver daži warm-up
vingrinājumi, ar kuru tu pats varat paplašināt savu
Ceturtdiena termiņu līdz piektdienai.
Problēma komplekts 1, tikmēr būs debija par kursu mājas lapā tas nāk
Piektdiena, ja jūs vēlaties, lai čokurošanās klajā ar tā kā es reiz vēlu
Piektdienas vakarā savā istabā.
>> Tātad cs50.net/appliance ir vieta, kur Jūs varat saņemt CS50 ierīci
ka mēs sākām izmantot pirmdien.
Mēs to izmantot nedaudz vairāk šodien.
Bet esiet droši, ka problēma noteikti 1 specifikācija būs staigāt jums caur
precīzi soļi jums , lai iegūtu, ka izveidota un darbojas.
Tāpēc nav jāuztraucas par darot, ka pirms PSET 1, ja jūs nevēlaties.
>> Labi.
Tāpēc mēs skatījāmies pirmdien pie pirmkodu, bet saistībā ar jaunu
programmēšanas valoda, proti, C un C, atšķirībā no nulles, nav grafiskā.
Tas nav puzzle gabalus.
Tas ir vairāk angliski, piemēram, sintakse.
Un tur ir soļi pāris faktiski rakstot un darbojas
programma C, jo bez avota kods, kā šis, jums ir nepieciešams kaut
sauc kompilatoru.
Un lajs izteiksmē, ko tas kompilators darīt mums?
Jā.
>> STUDENTU: Tā pārvērš kodu kas jums rakstīt 0s un 1s.
>> DAVID Malan: Labi.
Tātad, tas pārvērš kodu, kas mēs rakstām, lai 0s un 1s.
Tas pārveido tā saukto pirmkodu objekts kods, kura gan izskatās
mazliet kaut kas līdzīgs šim.
Un tas ir jūsu CPU, smadzenes iekšpusē dators, ka sakarā ar
cilvēki, kas izveidoja šos datorus, zināt, kādi ir šie secības
no 0s un 1s nozīmē.
>> Varbūt tas nozīmē izdrukāt.
Varbūt tas nozīmē papildus.
Varbūt tas nozīmē atņemšanu.
Varbūt tas nozīmē parādīt grafikas.
Ir iepriekš modeļi bitiem ka pasaule ir nolēmusi nozīmēt
dažas lietas.
Bet lielākā daļa šajā kursā, mēs darbu augstākā līmenī, un
mēs uzskatām par pašsaprotamu, ka pastāv lietas, piemēram kompilatoru, kas var
padara mūsu pirmkoda funkciju tādā veidā mēs plānojam.
>> Tāpēc programmā mēs rakstījām pirmo reizi pagājušajā nedēļā un tad sāka ostu, tāpēc, lai
sakot, C pagājušā Pirmdiena, bija šī.
Kad zaļo karogu uzklikšķināt, sasveicināties.
Tas bija, protams, rakstīts nulles.
Un es apgalvoja, ka ekvivalents programma C izskatījās nedaudz
kaut kas līdzīgs šim.
>> Tātad, ko es domāju, ka mēs gribētu darīt vispirms, ir, pieņemsim kaitināt izņemot to, kas izskatās, sākumā
skatienu, protams, jo diezgan mistiskā sintakse, bet jūs sākat pamanīt
modeļiem diezgan ātri.
Ko mēs arī darīt šodien, ir sniegt Jūs ar garīgās modeli dažiem
kanonisko, daži standarta konstrukcijas programmēšanā.
Un tad mēs tiešām saņemtu mūsu rokās netīrs ar dažiem piemēriem, kā arī.
>> Tātad tiem no jums ērtāk, saprast, ka šonedēļ, un tad nākamajā
nedēļā, var ļoti labi būt mazliet pārskatīšanu.
Bet, jo īpaši, ja hakeris valodā Problēmas komplekts 1 nodziest
Protams Mājas piektdien, es domāju, Jūs atradīsiet, ka pat, kā jūs aizpildīt
dažas sagataves, nākamo nedēļu vai divas, jūs sākat, lai iegūtu arvien vairāk
apstrīdēt un sastopas jaunas un jaunāku lietas.
>> Tātad, pieņemsim kaitināt šo programmu intervālu dažas rindiņas laikā.
Tajā pašā augšā, mēs esam to, kas ir tehniski sauc
apstrādātāju direktīva.
Tas ir tikai līnija kods, kas saka: iekļaut faila saturu,
saukts par standarta I / N, standarta ieejas - vai, piedodiet, standarta I / O, standarta
ieejas / izejas,. h, iekšpusē manas programmas.
>> Tātad, citiem vārdiem sakot, ja es to rakstīju Programma ar vienkāršu teksta redaktoru, piemēram,
gedit, vienkāršāku ekvivalents kaut kas, piemēram, Microsoft Word, ka
norādījums, # ietvert stdio.h, ir tikai gatavojas pateikt kompilators, paķert
saturu šīs citas lietas, stdio.h, un ielīmēt tos tieši šeit.
>> Tagad, kāpēc es aprūpi?
Ko mēs apgalvojam ir iekšā šo failu sauc stdio.h, kas tiek glabāti
kaut kur uz manu cieto disku, vai šajā gadījumā, kaut kur CS50 ierīces?
Kāds cits likt to tur par mani.
Bet to, kas ir tā?
>> Jā, tāpēc tas ir deklarācija funkciju sauc printf.
Tātad printf atgādina funkcija, kas displeji vārdi un burti un
numurus uz ekrāna manu cenu.
Bet man nav rakstīt to.
CS50 nav rakstīt to.
Kāds gadus atpakaļ uzrakstīju, un tie būtībā deva mums recepti par to
failā ar nosaukumu stdio.h.
Tā, ka pirmā līnija tikai dod man piekļūt funkcijām, ka kāds cits
rakstīja gadiem, vidū , kas ir printf.
>> Tagad, nākamais rindā es esmu gatavojas vilnis Mani roku pie, vismaz līdz brīdim, kad nākamajā nedēļā.
Bet tagad zinu, ka int galvenais (spēkā neesošs) ir būtībā ir ekvivalents šīs
dzeltena puzzle gabals, kad zaļo karogu uzklikšķināt.
Pasaule, gadus atpakaļ, nolēma, ka gadījumā, ja jūs esat rakstiski programmu
valoda sauc par C, sākat jūsu programma ar līniju
kas izskatās tāpat.
Tikai aptuveni nedēļas laikā, tas būs padarīt sajūtu, kas int ir, kas par spēkā neesošu ir.
Bet tagad, tikai domā par to kā šo dzelteno puzzle gabals.
>> Tagad nākamais, mums ir cirtaini lencēm seko cita cieši cirtaini lencēm,
tā runāt.
Un mēs redzēsim šos visā programmas C, kā arī
JavaScript un PHP.
Un šie tikai rezumēju saistītās rindas kodu.
Atvērta cirtaini lencēm būtībā saka, šeit nāk daži kodu.
Un slēgta cirtaini lencēm, kas ir leņķveida citā virzienā, tikai
nozīmē, ka ir tas, lai attiecīgo kodu.
>> Tātad sulīgs līnija šajā vispirms Programma ir pēdējais, printf,
kotēšana likt pēdiņas beigās, sveiki pasaule.
Un es sauc lieta starp citātus, ko pēdējo reizi?
Tātad, tas ir virkne.
Un virkne ir tikai techie termins secību
rakstzīmes, vārds, frāze.
Pat vienu burtu varētu divkārt kotētas.
Bet tas ir secība nulles vai vairākas rakstzīmes.
>> Slīpsvītra-n, lai gan, izskatās mazliet dīvaini.
Bet tas vienkārši nozīmē kaut ko vienkārši ar datoru.
Kas ir Reversā slīpsvītra-n?
Jaunā līnija.
Tātad tas ir tikai īpaša secība zīmes, ka pasaule ir nolēmusi
nozīmē likt rindiņas pārtraukumu labi tur, jo kompilators faktiski nokļūt
sajaukt, parasti, ja jums ir ļoti saprotams, bet nepareizi, vienkārši
sākt hitting Enter likt jaunas līnijas jūsu kodu.
Jums ir nepieciešams, lai būtu nedaudz vairāk skaidri ar slīpsvītru-n.
>> Un mēs redzēsim tur ir dažas citas tādas modeļu speciālās rakstzīmes.
Piemēram, ja jūs vēlaties, lai ļautu jūsu prātā klīst uz stūra gadījumā
pieņemsim, ka es gribēju drukāt dubultā quote uz ekrāna
kādu iemeslu dēļ, kas, šķiet, būt nedaudz problemātiski, labi?
Jo, ja man dubultu citējot vidū "Hello, world," lai kāda
Iemesls, kāpēc tas šķiet potenciāli problemātiska?
Tas saplīst virkni.
>> Kompilators ir tikai programma.
Kā kompilators programma ir tikai gatavojas lai lasītu savu kodu augšas uz apakšu,
kreisās uz labo pusi.
Un, ja redz trīs dubultās pēdiņas vietā divi, tas nav gatavojas zināt
ja tu domā, ka lieta, pa kreisi vajadzētu būt virkne, vai lieta, lai
labi, vai viss.
Tas ir neskaidrs, un lai to, kas tipisks kompilators varētu darīt, ir tikai ķēms,
un sniegt jums dažas kļūdas paziņojumu, un jums tikt galā ar šo problēmu.
>> Tātad, ņemot vērā, ka slīpsvītra-n ir jauns līnija, kādi būtu jūsu instinkti tagad
sākt, ja jūs vēlētos, lai iekļautu kaut anomālu kā dubultā
quote iekšpusē šo citādi kotēto stīgu?
Slīpsvītra-double quote.
Un tā mēs redzam veida modeli too.
>> Ja jūs vēlaties darīt kaut ko nedaudz dīvaini, jūs atradīsiet, ka
risinājumi bieži vien seko modelis, un slīpsvītru
apzīmē evakuācijas secību.
Un tas tikai nozīmē kaut ko īpašu ka mums ir nepieciešams, lai pārstāvētu
citādā veidā.
Attiecībā uz to, kā jūs pārstāvēt slīpsvītru, labi, mēs
nāk atpakaļ uz to.
Bet atbilde, arī faktiski mazliet acīmredzama.
>> Tātad, pieņemsim tagad ieviest kādu citu programmēšanas konstrukcijas
ka jūs redzēju nulles.
Jūs esat droši vien par pašsaprotamu jau ir, ja jūs esat jau ienira
problēma noteikts 0.
Bet pieņemsim tagad ieviest sintakse C par šiem citādi diezgan intuitīvi
idejas, vismaz daži no tiem.
>> Tātad šis nosacījums jēdziens vai filiāle, lai gan agrāk mums
pārstāv to ar kodu, kas izskatījās piemēram, tas par kreisi Scratch -
ja x ir mazāks nekā y, tad tā teikt -
vietā tagad C - ļaujiet man trīt kas par Vienkāršākajā gadījumā -
mēs esam tikai gatavojas teikt, ja, atveriet iekavas, kaut kas ir patiess -
Būla izteiksme ir gatavojas iet kur es teicu stāvokli -
aizvērt iekavas, tad to, kas ir iekšpusē no tiem cirtaini lencēm.
>> Tātad arī šeit, cirtaini bikšturi ir veida, piemēram Scratch s
U-veida puzzle gabalus.
Vai to, kas ir iekšā šo cirtaini lencēm.
Šajā gadījumā, slash slash.
Un paziņojums, tas ir uz priekšu slash, nevis slīpsvītru.
Slīpsvītra, slīpsvītra, par tiem, kas esam ieprogrammēts
pirms, vienkārši nozīmē -
tas ir tikai komentārs.
Comment ir ne līnija koda, per se.
Tā ir līnija angļu valodā, ka jūs, cilvēku, ir rakstīts uz sevi
varbūt atgādināt jums kaut ko darīt, lai izskaidrot sevi, lai izskaidrotu
kāds cits, kas jūsu kods dara.
Tas ir tikai aprakstošs komentārs.
>> Tagad, protams, mēs varam būt divvirzienu dakša uz ceļa, tikai darot to,
trīsceļu dakša uz ceļa darot tas, un, ja jūs turpināt šo
modelis, jums var būt četru veidu, piecu way, sešu ceļu dakšas ceļu, ja
jums ir nepieciešams, lai apstrādātu, protams, ka daudzi apstākļi.
Un tad paziņojums paralēlismu šeit -
ja (nosacījums), cits ja (nosacījums), , un tikai viens, kas ir nedaudz
dīvaini ir pēdējais, kas ir tikai, ka cits.
Bet atkal, tas ir identisks, konceptuāli, to, ko mēs esam darījuši
jau, kaut sintakse būs ņem mazliet kļūst izmantoti, lai.
>> Tagad, šajā piemērā, ir daži citi dīvaini sintakse.
Mēs redzam printf atkal atvērtu iekavu, un tuvu iekavas.
Un iekšpusē ir kotētas virkne.
Iekavas, saistībā gada printf, doties pa kreisi
un labi, ko?
Ko mēs aprakstīt, ka citēts stīgu plašākā mērogā?
>> Tātad, tas ir arguments.
Jebkurā laikā jums ir funkcija, piemēram, printf, un pēc tam atvērtu paren un
cieša paren un kaut iekšpusē tas, vai tas ir string, vai
vesels skaitlis, vai kaut kas cits, lieta starp tiem iekavas tiek saukta
arguments.
>> Un arguments tikai ietekmē Funkcija uzvedība.
Šajā gadījumā, tas ir diezgan skaidrs, kā.
x <y ir tas, kas tiek pieņemts, tā sakot, kā argumentu.
Un printf gatavojas drukāt tieši tā.
Jo, protams, persona gadiem kas īsteno printf nebija ne jausmas
ko mēs cilvēka pēcteči bija gatavojas izmantot printf par.
Tātad, tāpēc argumenti pastāv, ietekmēt uzvedību pēc tam, kad funkcija ir
ir rakstīts.
>> Tagad, Būla izteiksme.
Mēs esam redzējuši šos agrāk nulles.
Izrādās C varat arī "vai" tos kopā, lai runāt.
Divas vertikālas joslas nozīmē, ka šis bloks koda, tas to izdarītu, būs
izpildīt, ja pirmais nosacījums ir patiess vai otrais nosacījums ir patiess.
Un, pat ja jūs nevarēsiet ir darījuši to nulles, jūs varētu patiešām
darīt to nulles, un jūs varat arī izteikt sevi savādāk -
ja pirmais stāvoklis un otrais nosacījums ir patiess, tad to, kas ir
iekšpusē cirtaini lencēm.
>> Un, tāpat kā malā, iemesls, tas ir dubultā zīme & un dubultā
vertikāla josla, mēs redzēsim vēlāk ka viena vertikāla josla un
viena zīme & faktiski ir atšķirīgas jēgu C. Tātad tagad,
ka dublēšanās simbolu ir tīša.
>> Tātad, pieņemsim ieviest īsi, šo citu mazliet sintaksi.
Tas nav gluži pārnest uz Scratch, bet es apgalvot, ka es varu
īstenotu jēdzienu, ja cits, ja cits, ja cits, ja cits paziņojums, izmantojot
kaut ko sauc slēdzis paziņojumu.
Un vienīgais iemesls, tas ir patiešām eksistē ir tikai sniegt jums, programmētājs,
Nedaudz atšķirīgs veids, kā atrisināt dažas problēma, pat ja loģiski tas
nedod jums nekādas jaunas spējas.
>> Ar to es domāju.
Kad jūs sakāt slēdzi, un tad telpu, un tad pāris iekavās iekšpusē
no kuriem iet izteiksme -
un tas varētu būt nedaudz nav skaidrs sākumā, bet tas nav arguments,
tehniski, jo slēdzis ir ne funkcija.
Tātad tagad, tikai pieņemt, ka mēs izmantojam iekavas dažādās vietās
dažādu iemeslu dēļ.
>> Tātad, ieslēdziet vārda nozīmē, es varu likts mainīga iekšpusē no tiem
iekavas, kur ir teikts izteiksmi.
Un tad, ja tas mainīgais -
pieņemsim, ka tā sauc x, un tas ir tikai skaitlis -
Es varu uzskaitīt manā slaidā šeit kaut kas līdzīgs šim.
Ja x ir mans mainīgs, un es vēlas kaut ko darīt, ja x
ir vienāds ar 1, es varu darīt.
>> Ja es tā vietā vēlaties kaut ko darīt ja x ir 2, es varu darīt.
Else, ja es gribu darīt kaut ko citu pilnīgi, es varu būt noklusējuma lietu
tādā gadījumā man tas cita lieta.
Tātad šajā ziņā, tas ir līdzvērtīgs ja X ir vienāds ar 1, cits ja cits,
bet es pieminu tagad tikai tāpēc, ka mēs redzēsim to vēlreiz.
Bet tagad, tikai zinu, ka tā pastāv.
>> Labi.
Tātad šie pēdējo pāris ir nedaudz vairāk kompleksa pēc pirmā acu uzmetiena, bet tie
kaut kas diezgan vienkārši.
Cilpa ar C ir rieciens kodu, kas vienkārši kaut ko dara atkal un
atkal un atkal.
Un tikai kaitinošas lieta par to, tas ir, ka tas ir nedaudz mistisks
izteikt sevi šajā cikliska modelis, bet pasaule standartizēts
šādā veidā.
>> Kad jūs izmantot, lai cilpa, jūs esat ieguvuši pāris iekavās vēlreiz.
Un paziņojums divus semikoliem tur.
Šie divi semikoliem atsevišķas trīs dažādas izteiksmes iekšpusē
iekavas.
Viens no tiem ir ts initializations.
Viens no tiem ir tā sauktais stāvoklī.
Un viens ir ts atjauninājumi.
>> Paskatījās abstrakti, tas ir pilnīgi nav skaidrs, tāpēc aplūkosim
par konkrētu piemēru.
Jo nulles mums bija atkārtot bloku.
Un šis bloks sacīja atkārtot 10 reizes, teiksim "Sveiki, pasaule." Ļaujiet man prasītu
tagad, un mēs būsim atpakaļ uz šo, un arī tas, saņems vairāk pazīstams ar
jums pirms ilgi, ekvivalents C kodekss varētu teikt, ka šo -
par pārskatu un atstarpi, pāris iekavas, paziņojums semikoliem, kas
tur, kas atdala trīs atšķirīgas lietas, inicializācijas, ka
nosacījums, un atjaunota.
>> Un veikt uzminēt, ko Pirmais ir dara.
Int i = 0.
Neapstrādātu lajs izteiksmē, kas ir ka dara mums, droši vien?
Tātad yeah.
Tā ir atzīta par mainīgo sauc i, un tas dod tai, kāda vērtība?
0.
Tātad, tas ir radīt sauc mainīgo i, uzglabājot vērtību 0 tajā.
Tas ir tā sauktais inicializācijas.
>> Labi, tagad es apgalvoja pirms ka vidējā lieta, i
<10, ir nosacījums.
Tātad, ko dara?
Nu, ko lai cilpa dara, kad programma ar cilpa tiek palaista, ir
katru reizi, kad dators darbojas, izmantojot šī cilpa, no augšas uz leju, no augšas uz
apakšas, tāpat kā jums, puiši darīja, kad skaitīšanas sevi un sēžot,
atkal un atkal un atkal, dators ir iet
lai pārbaudītu šo nosacījumu.
Un, ja i ir mazāks par 10, tas būs darīt to vēlreiz.
Ja i ir mazāks par 10, tas būs darīt to vēlreiz.
Ja i ir mazāks nekā desmit, tas būs darīt to vēlreiz.
Tāpēc, ka, šķiet, liecina, ka cerams, i mainās.
Pretējā gadījumā mēs ir bezgalīga cilpa.
Un tiešām, man mainās, jo pēdējā lieta, pēc semikolu tur
ir nedaudz mistisks sintaksi i + +.
Bet tie no jums, kas esat izdarījuši pirms, tas tikai nozīmē,
gluži vienkārši, ko?
>> STUDENTIEM: [interposing Voices].
>> DAVID Malan: Pievienot 1 līdz i.
Pieauguma i.
Tātad, mēs redzējām Scratch puzzle gabals, kas, patiesībā.
Tas nav izskatās es + +, bet tas tikai līdzekļiem, gluži vienkārši, pieauguma
vērtība i par 1 katru reizi, kad jūs darīt.
Tātad burtiski, jūs sākat ar inicializēšana I līdz 0.
Pēc tam pārbaudiet savu stāvokli.
0 ir mazāk nekā 10?
Jā.
Mēs ejam caur cilpu.
>> Nākamā lieta, es varu pieprasīt datora gatavojas darīt, ir tas, kas notiek
līdz pieauguma i.
Tā i ir tagad 1.
Tā pārbauda stāvokli.
Ir 1 mazāk nekā 10?
Protams.
Tātad, tas atkal.
Tad tas soli i + + līdz 2.
Ir par 2 mazāk nekā 10?
Jā.
Un atkal un atkal un atkal.
Un galu galā, jo plus-plussing, mēs to i ir vienāds 10.
Ir 10 mazāk nekā 10?
Nu, protams, nav.
Un tas ir punkts, kurā lai cilpa vienkārši apstājas.
Un, ja jums ir vairāk kodu ekrāns uz leju zemāk, dators
ieņēmumus, lai palaistu šo kodu vietā.
>> Tātad vēlreiz, pat ja tas notiek, lai izskatīties un justies mazliet dīvaini pie
Pirmais, protams, tiem no jums, kas nekad nav ieprogrammēts, pirms tas
burtiski samazina konceptuāli to, kas ir citādi ļoti
vienkārši puzzle gabals nulles.
>> Labi, es apsolīju, ka gribētu būt citi analogi ar nulles.
Tur tas ir viens too.
Un mēs redzējām šo īsi pēdējo reizi.
Bet atcerieties, ka uz visiem laikiem bloķē nulles?
Tas vienkārši nav kaut kas uz visiem laikiem?
Man apgalvoja, ka jūs varētu īstenot šī šādā veidā.
Un jūs faktiski var īstenot šo ar ķekars dažādos veidos.
>> Bet, kamēr cilpa ir tikai atšķirīgs Veids, C izteikt sevi.
Beigās, dienā, jūs nevar darīt kaut kas ar kamēr cilpa, kas jums
nevar ar par cilpu.
, Lai tie ir beigās diena funkcionāli tas pats.
Bet tas ļauj jums izteikt sevi nedaudz savādāk
šādā veidā.
>> Ar kamēr cilpa, tas ir to, kas ir iekavas, kas ir pārbaudīti atkal un
atkal un atkal.
Un, tiklīdz šī izteiksme ir nepatiesa, tad cilpa apstājas izpildes,
un datoru ieņēmumus palaist neatkarīgi citu kodu jums
ir jūsu failā.
>> Bet kas ir interesanti šeit ka es burtiski drukāti taisnība.
Un taisnība ir veids Būla vērtības, patiess vai nepatiess vērtību.
Tātad varētu taisnība kādreiz kļūt false, ja es esmu burtiski
grūti kodē to manā programmā?
Līdz ar to nav.
Tas ir mazliet dīvaini, ka I did this.
Bet taisnība ir taisnība.
Nav plus plussing.
Nav mainīgie šeit izmantošanu.
Tāpēc, ka man grūti kodē, bet taisnība, šis cilpa vienmēr notiek, lai novērtētu
atkal un atkal un atkal.
>> Tik cik reizes ir sveiki pasaulē gatavojas drukāt uz ekrāna?
Uz visiem laikiem.
Bezgalīgi daudz reižu, līdz baterija nomirst vai kādu citu ārējo
notikums notiek.
Tātad tas ir iespējams, nav labākā programma rakstīt, jo, ja lietotājs
nekad nevar atmest savu programmu, tas ir iespējams, nav tas, ko gribējāt.
>> Bet dažreiz, programmas būtu ir bezgalīga cilpa.
Piemēram, ja jūsu dators ir pulkstenis uz to, tas, protams, būtu
jauki, ja jūsu pulksteni tas saglabātu atjaunināšanu pats uz visiem laikiem, lai gan reiz
otrajā vai reizi minūti vai kaut kā tā.
Tātad, pat bezgalīgas cilpas darīt ir sava vieta.
>> Labi.
Visbeidzot, šo vienu.
Un tas viens ir mazliet atšķirīgs funkcionāli, un mēs atgriezties
tas iespējams, 1 PSET.
Bet tur ir vēl viens no cilpas veids aicināja darīt, kamēr cilpa.
Un vienīgā atšķirība šeit starp darīt, kamēr cilpa, un, teiksim, kamēr cilpa,
ir, ka stāvoklis tiek pārbaudīts ne Pirms jūs izpildīt kodu, bet pēc
jūs izpildīt kodu.
Tik augšā uz brīdi cilpa, bet darīt, kamēr
pārbauda tā apakšā.
>> Un tas tikai nozīmē, ka, kamēr cilpa parasti izpildīt vairākas reizes
vai mazāk reizes vairāk nekā iepriekšējā kamēr cilpa?
Potenciāli vairākas reizes, jo do kamēr cilpa ir skaidri saprotams to izdarītu,
tikai pēc tam, kas norāda, vai pārbaudīt ja nosacījums iekšpusē no
iekavas ir taisnība.
>> Tātad mēs redzam atkal iespējams, 1 PSET.
Ja jūs kādreiz vēlaties darīt kaut ko Vismaz vienu reizi un tad varbūt dažas vairāk
reizes, tas ir labs būvēt, lai izmantotu.
Bet, kamēr cilpa, savukārt, pārbaudiet tās stāvokli pirmās.
Un tas ir tas, lai cilpas C, do , bet, lai gan, un uz cilpas.
Un atkal, tie map diezgan labi atpakaļ līdz Scratch, izņemot šo vienu nav
gluži tāds pats analogs nulles.
>> Nu, kā par, tagad, mainīgie?
Tātad, tas ir, kā es paziņoja mainīgais sintaktiski citu dienu.
Man bija int, kas man apgalvoja ir vesels skaitlis.
Man tad bija mainīga sauc skaitītājs, un pēc tam semikolu.
Tātad, kas ir šis kods dara līnijas?
Tas ir gluži vienkārši paziņojot mainīgs -
tas ir, lūdzot datoru, dod man daļu atmiņas, dod man kādu biti - in
kuru es varu saglabāt to, ko?
Int.
Un semikolu tikai nozīmē, beigas līniju kodu.
>> Tagad, otrajā rindā ir iespējams diezgan guessable.
Kas ir counter = 0; dara?
Tas piešķirot 0, lai cīnītos.
Un tā tas ir cita lieta tas ir mazliet kaitinošas
salīdzinot ar, teiksim, algebra.
Tā kā algebra, vienādības zīme nozīmē, vienāds, šeit C, vienlīdzīgu
zīme nozīmē uzdevumu.
Tātad, tas nozīmē īstenot to, ko ir par tiesībām par to, kas ir pa kreisi.
Un mēs redzēt citu simbolu, ir vienāds vienāds, kad mēs vēlamies, lai faktiski pārbaudīt
kvalitātes, diezgan kaitinoši.
>> Bet tas ir maz neefektīva.
Tas ir sava veida kaitinošas, ka man ir atzīt mainīgo un
tad arī tā vērtību.
Tātad C faktiski mums ļauj vienkāršot šo un vienkārši darīt to visu uzreiz.
Jūs varat deklarēt mainīgo kreisajā pusē.
Jūs joprojām varat darīt uzdevumu par tiesības, liekot šo vienādības zīmi ar
vidū.
Tātad, beigās, dienā, šie divi ir līdzvērtīga, bet tas viens, atklāti sakot,
ir iespējams, labāk ieradums, lai nokļūt tikai tāpēc, ka tas ir nedaudz mazāk
kods, tas ir mazliet vieglāk lasīt, un tas tikai pastiprina
savu kodu, lai runāt.
>> Visus jautājumus, kas līdz šim par cilpas, par mainīgajiem lielumiem, par nosacījumiem, par
Booleans vai nu tehniski vai konceptuāli?
Labi.
Tāpēc tagad šis nākamais izpaužas nedaudz vairāk interesants.
Un šis ir piemērs, man pagājušajā laiks, kas tikko izplānots nulles piemēru
pār C.
>> Tātad funkcija.
In lajs izteiksmē, kas ir funkcija?
Got, lai būtu drosmīgāki ar savu atbildi.
Kas ir funkcija?
>> STUDENTU: Vai kaut ko.
>> DAVID Malan: Kas tas tāds?
>> STUDENTU: Vai kaut ko.
>> DAVID Malan: Vai kaut ko.
Labi.
Mēs sāksim tur.
Tātad funkcija dara kaut ko.
Tātad, tas ir gabals kods, kas ir galvenokārt īsteno citur ka
patiešām dara kaut ko.
Tagad, kas ir interesanti par funkciju ir tā, ka tas var veikt ievadi,
un tas var radīt produkciju.
Un pieņemsim faktiski veikt apskatīt šo.
>> Tātad, cilvēks aiz aizkara bija apzināta pirms brīža.
Šeit mums ir tabula.
Bet pieņemsim, ka tas patiesībā ir liela kaste.
Tātad šī ir tā sauktā melnā kaste.
Un vispār, dizaina, jo dators zinātne, melnās kastes vienkārši atsaukties uz
gabali funkcionalitāti, ka kāds ir īstenota, un jums nav
vienmēr zina, vai vienalga, kā tas ir īstenoti zem motora pārsega.
Jūs vienkārši vienalga, ka šī melnā kaste, ko mēs tagad sāktu zvanīt
funkcija, kaut ko dara.
>> Tātad, piemēram, ja šī melnā kaste par posms šeit ir printf,
funkcija, es zinu no iepriekšējiem piemēriem ka printf ņem vienu vai vairāk
argumentus, un no tiem, pirmās argumenti ir virkne, piemēram,
"Sveiki, pasaule." Nu, ja es esmu cilvēks rakstīšanas programmu, un es gribu
, lai izmantotu printf, es, piemēram, var veikt kādu tukšu papīra šeit un
melnu marķieri un rakstīt par to -
Es kļūdaini "pasaule" -
H-E-L-L-O.
>> Tāpēc es ņemšu manu melno marķieri, un es ņemšu rakstīt, tik liels un salasāmi, kā es varu par
šis gabals no papīra, "hello, world," Un tagad es apgalvo, tas ir mans arguments.
Tas ir virkne pārstāvēta ar gabals balta papīra.
Un mans ieguldījums tagad funkcijai printf būs šo.
Tāpēc es aicinu printf, iet šis arguments kā ieguldījumu to.
>> Un tagad, es nezinu, kā persona, kas rakstīja printf to darīja gadus atpakaļ, bet
Es zinu, no tās dokumentāciju, kas tās mērķis dzīvē ir izdrukāt to, ko es
sniegt to kā ieguldījumu.
Un tā, lai gan tas īstenošana ir nezinot mani
zem motora pārsega, tagad Es redzēt, oh, tas tiek darīts.
Tas ir iespiests kaut uz ekrāna.
Un tagad kontrolē programmas, ja bija vairāk koda rindiņas, būtu
tagad atgriezās pie manis.
Un tā tas, ka Colton -
svētī viņa sirdi, slēpjas šeit saskaņā galda priekšā jums visiem -
ir apzināta, jo es nezinu un man vienalga, cik printf ir
īstenoti.
Es tikai zinu, atkal, no tās dokumentāciju, ko tā dara un kā es
esmu vajadzēja izmantot.
>> Tagad atceros, ka printf varētu saņemt mazliet sarežģītākas.
Atgādināsim, ka mēs esam tikai runā par ekvivalents Scratch s say bloks.
Bet es arī darīju šo pēdējo reizi.
Es gribēju, lai mana hello izskats programmu nedaudz dinamiskāku un ne tikai grūti
kods kaut ko līdzīgu "pasaules", un noteikti nav grūti kods kaut
patvaļīgi, piemēram, D-A-V-I-D programmā.
Es gribēju jautāt lietotājam par viņa vai viņas vārdu, un pēc tam kaut ko darīt ar
ka virkne ka tie sniedz.
>> Tātad tur ir kaut nedaudz atšķiras šeit. printf, pirms brīža,
bija, protams, kaut ko darīt, bet tas neatgriezās neko man.
Labi?
Colton nav roku man neko atpakaļ, nav papīra.
Tur bija tikai blakusparādība.
Mana nodrošinot "Hello, World", kā arguments Colton izraisīja
blakusparādība vārdu, daži vārdi, parādās uz ekrāna.
>> getstring, lai gan, ir maz atšķirīgs. getstring ir arī
darboties, bet tas atgriež kādu vērtību.
Tas nav vienkārši ir estētisko blakusparādība.
Tas faktiski dod man, personai zvanot vai izmantojot funkciju,
kaut ko atpakaļ.
Tātad, šajā gadījumā, ir getstring sauc ar getstring open
paren, close paren.
Vai getstring Tādēļ, ņemot vērā kādi argumenti vai ieejas?
Nē, tas, šķiet, nav.
Tās mērķis dzīvē ir tikai, lai iegūtu virkni.
Tai ir ne vairāk detaļu, nekā.
Tātad, ļaujiet man iet uz priekšu un izlikties, ka, Arī šī melnā kaste nav printf,
bet getstring, un ļaujiet man, persona Rakstot šo programmu, zvaniet vai izmantojiet
getstring, tikai rakstot G-E-T-S-T-R-I-N-G, atvērta paren, close
paren, getstring.
>> Tagad, man nav ne jausmas, cik CS50 darbinieki īstenoti getstring, bet es zinu, ka
ja man jāgaida pietiekami ilgi, tas darīs savu lieta, zem motora pārsega, varbūt izmantojot
daži mainīgie, varbūt izmantojot dažus apstākļiem, varbūt izmantojot dažus cilpas,
varbūt izmantojot dažas funkcijas, varbūt izmantojot -
tikai mēģina kabīne - varbūt izmantojot dažas citas programmēšanas funkcijas.
Bet, ja man jāgaida pietiekami ilgi - patiesībā, ar datoru, tas notiek
super ātri -
ja man jāgaida pietiekami ilgi, šī funkcija getstring gatavojas saņemt virkni
no lietotāja, kurš ir iespējams rakstāt tas, kas par savu klaviatūru, un
Pēc tam, kad jūs getstring tiek darīts kļūst šīs īpašības no lietotāja
un uzglabājot tos virkni, kas funkcija, getstring, nāksies
gatavs man kādu izejas, kas es esmu dodas, lai ielādētu veidā
cesiju operators.
>> Un, ja es eju, protams, uz izejas šeit, Obosi ir dāsni
piedalījās, nezinot to iepriekš, rakstot savu vārdu uz tā
mainīgais, kas pārstāv virkne.
Tagad uzdevums operators nozīmē, pat tad, lai gan tas varētu justies mazliet
lieks, man tiešām ir nepieciešams lai padarītu savu kopiju šo.
Jo uz kreisās rokas side - Vai!! -
ievēroju, ka man būtībā ir virkne nosaukt kreisajā pusē.
Tāpēc es esmu arī gatavojas darīt mana kopija par to.
Un tas ir mazliet baltu meli, jo mēs redzēsim pēc nedēļas vai divām s
laiks, ka stīgas ir faktiski nav ko viņi, šķiet, ir.
>> Bet tagad, šeit ir atgriešanās vērtību.
Te ir mana kopija, to pēc izmantojot piešķiršanas operatoru.
Un tagad, ko es vēlos darīt tālāk?
Mēs tagad ir otrais no divām līnijām kodu.
Tāpēc es tagad vēlos, lai izsauktu printf.
Izliecies, ka šobrīd melna kaste ir atkal atpakaļ, lai to
printf un nav getstring.
>> Printf šoreiz gatavojas ņem cik argumentus?
Līdz ar to izskatās, tas ir tāpat kā divi.
Ir divi komati, kas tur, bet viens no tiem komatiem, tas ir
iekšpusē pēdiņām.
Tātad, pirmais arguments ir burtiski būs šo.
H-E-L-L-O, komats, procenti s, slīpsvītra-n.
Un tagad es esmu sniedzot ne viens arguments, bet divi argumenti pret printf.
>> Un kas ir printf vajadzēja darīt ar šīs divas ieejas, kad es nodot tos
kā argumentus?
Tas ir paredzēts veikt otro tiem, ko es sauc vārdu, tāpēc
Otrais papīra es izrakstīja pirms brīža sauc vārdu.
Tas notiek, lai kontaktdakšu vērtības iekšpusē Šī mainīgā iekļaušana vietturī
% S, tā ka, atkal, jo tikai brīdi laiks, mēs redzēsim blakusparādība
kas sauc printf, kuru tagad mēs redzēt ne "Hello, World", bet "hello,
Obosi. "
>> Tik liels kārta aplausi abiem mūsu brīvprātīgie, no kuriem tikai viens zināja
tas varētu būt noticis.
Labi.
Tātad, varbūt, vienkārši, kā tas bija, protams, ja jūs jau esat iepazinušies
ar, piemēram, cerams, jūs nekad aizmirst, ka īpaši vizuālā, kā
funkcijas darbojas.
>> Tātad, tur ir vairāk nekā tikai getstring.
Iekšpusē CS50 bibliotēkas, tur vesels bars no funkcijām, kuras visas
tiek kapitalizētas tikai, lai būtu skaidrs, ka mēs rakstījām šīs funkcijas.
Raksturīgi, C, gandrīz katru otro funkciju jūs izmantojat ir mazie.
Bet mēs apzināti izmantot lielos burtus tikai, lai būtu skaidrs, ka šos
ir mācību riteņi veidu, kuram mēs izmantot tikai dažas nedēļas, kas
vienkāršotu procesu, kā iegūt informāciju no lietotāja.
>> CS50 bibliotēka nedara neko ka jūs paši nevarētu izdarīt,
tikai izmantojot C kodu oldschool mācību grāmata.
Bet, atkal, mēs tos izmantot kā mācību riteņi veidu, lai tikai pāris
nedēļas, lai mēs varētu atbrīvoties no sarežģītība, ka jūs drīz saprast
sevi kaut ko darīt, kā salīdzinoši vienkārša kā iegūt
ieguldījumu lietotājam.
>> Tāpēc zinu, ka jums ir piekļuve līdz getchar, GetDouble -
dubultosies.
What's - un tad GetFloat.
Kas ir peldēt?
Sāksim tur.
>> STUDENTU: [nedzirdama].
>> DAVID Malan: Jā.
Tas ir skaitlis ar komatu.
Tātad, tā kā int ir vesels skaitlis, kas ir tikai ar 0 līdz 9,
daži atkārtojumu skaits pantu, pludiņš ir kaut kas
ar komatu.
Un dubultā, tikmēr, ir arī numurs ar komatu, bet vairāk
skaitļi aiz komata punktu, iespējami.
>> Tātad mēs saņemam atpakaļ uz šo pirms ilgi.
Bet parasti, katrs no šiem tipiem dati, katrs no šiem mainīgajiem veidiem
ka, piemēram, mūsu bibliotēkā var atgriezties jūs, izmantot dažādus skaitu biti
uzglabāt informāciju.
Raksturīgi, Char, kas vienkārši nozīmē, vienu rakstzīmi, izmanto 8 biti.
Un tas tiešām atbilst mūsu baits brīvprātīgajiem pagājušajā nedēļā, kas
pienāca un bija viens ASCII rakstzīmju laikā.
Tātad Char ir 8 biti.
>> Float notiek, ir 32 biti, parasti.
Un dubultā, kā jūs varētu uzminēt, ir faktiski 64 biti, kas ir tikai vairāk,
kas nozīmē, ka jūs varat būt lielāks numuriem vai vairāk precizitāte.
Bet atkal, vairāk par to citā laikā.
GetLongLong, tikmēr, lai gan stulbi nosaukts, ir tiešām tikai
vesels skaitlis, kas ir divreiz tik lielas, divreiz garš, iespējams, kā regulāru
skaitlis, 64 biti, nevis 32.
Un GetString mēs esam izmantojuši.
>> Bet izrādās, jo CS50 bibliotēkā, kas tiek īstenota, kā mēs redzēsim, kas
forma abiem failiem, no kuriem viens sauc cs50.h, ir divi citi
datu tipi tajā.
Booleans nepastāv C. Jūs varat simulēt tos, izmantojot tikai 0s un 1s
visu savu programmu.
Bet mēs arī CS50 bibliotēkā ir radījušas simboli "true" un "viltus"
pārstāvēt 1 un 0, lai jums nav ir grūti kodu kaut ko
burtiski, piemēram, 1 un 0.
Bet mēs redzēsim tos atkal.
>> String, arī neeksistē.
Un tas ir iemesls, kāpēc es teicu, tas ir mazliet balta meliem tagad.
Bet mēs pīlings atpakaļ, ka kārta pirms ilgi.
Bet tagad, virkne ir rakstzīmju secība.
>> Tikmēr C, jums patiešām ir dažādi datu tipi.
Paziņojums tie ir mazie burti.
Tātad funkcijas redzējāt pirms brīža ir funkcijas, raksta CS50 minētā
atgriezīsies pie jums vērtību, kas ietilpst vienā no šīm kategorijām.
>> Pāris apkrāptu loksnes tikai augu sēklas šeit. printf nav tikai
veikt% s kā vietturi.
Tas aizņem% d cipariem aiz skaitļu, vai% es varētu strādāt labi.
% F ir peldošs punktu vērtības. % C ir par char, ja jūs vēlaties, lai vienkārši plug vienu
raksturs uz formatētas string tāpat kā mēs esam darījuši, jūs varat izmantot% c.
>> Un tad, nedaudz kaitinoši,% LLD ir ilgu, ilgu aiz skaitlim,
kas vienkārši nozīmē, ja jums ir nepieciešams patiešām liels skaits un jūs izmantojat kaut ko
sauc ilgi ilgi, ko mēs būsim atpakaļ tādā PSET, jūs varat izmantot% LLD, lai
pateikt printf, pievienojiet tiešām liels skaitlis šeit kā otro vai
kādu citu argumentu.
>> Un visbeidzot, es apsolīja, ka tur ir dažas citas aizbēgt
sekvences, kas printf atbalsta.
Mēs esam redzējuši slīpsvītru-n.
Slīpsvītra-r jūs varat redzēt.
Tas ir sava veida vecās skolas lieta.
Ja esat kādreiz izmanto reālu rakstāmmašīnas gadiem atpakaļ, un jūs velk uz pedāļa
kas ne tikai griež riteni pārvietot lineup, tā arī ierosināja
Visa lieta visu ceļu atpakaļ pār pa kreisi, labi, slīpsvītra-r tikko
būtībā pārceļas kursoru atpakaļ uz sākuma līnijas
nepārvietojot to uz leju.
Bet atkal, vairāk par, ka, iespējams, nākotnē.
>> Slīpsvītra-citēju, slīpsvītra-double quote, slīpsvītra-slīpsvītru ir
risinājums, lai tiny maz mīkla Man norādīja uz agrāk.
Un slīpsvītra-0 ir faktiski diezgan interesants.
Bet mēs būsim atpakaļ ka pirms ilgi.
>> Tātad, ļaujiet man iet, tagad, CS50 ierīces, un pieņemsim faktiski darīt
ātri uzsildīt ar vienu no piemēriem mēs to jau, un pēc tam pāriet uz
kaut nedaudz sarežģītāka.
Tātad, ja es atvērtu savu programmu sauc gedit -
tas ir mans grafisko redaktoru.
Un es varu darīt, ka -
ļaujiet man aizvērtu šo logu tur -
veidā šo ikonu uz leju šeit, gedit, kas apakšējā kreisajā
stūra blakus izvēlnē.
>> Es iešu uz priekšu un iepriekš, un saglabājiet šo piemēru uz, teiksim, John
Hārvardas Universitātes mapi.
John Hārvardas Universitātes mape ir tikai viņa mājās direktoriju, kur visi viņa failus dzīvo
pēc noklusējuma.
Un es esmu gatavojas, lai saglabātu to kā failu ar nosaukumu sveiki-0.c.
Un es esmu izvēlējies šo vārdu tikai tāpēc līnijas līdz ar parauga kodu par
Protams Mājas un YouTube video tiešsaistē.
>> Tāpēc tagad es esmu gatavojas sākt uzrakstīt savu pirmo programmu.
Ļaujiet man tuvinātu uz salasāmību.
Un es iešu uz priekšu un saka, int Galvenais spēkā neesošu, kas ir tieši tāpat
dzeltena puzzle gabals, kas uzsāk programmu.
Man ir gotten ieradumos vairāk gadu atverot manu cirtaini lencēm, tad
slēdz arī to un tad dodas atpakaļ uz kur es gribu, lai manu kodu, vienkārši
jo tas palīdz man saglabāt visu līdzsvarots, jo īpaši manā
Programma izpaužas ilgi.
>> Un tagad, šeit, es esmu gatavojas iet uz priekšu un teikt, printf, citējot likt pēdiņas beigās,
sveiki pasaule, slīpsvītra-n, netālu citēju, aizvērt iekavas, semikols.
Tāpēc es esmu tikai atkārtot visu, ko mēs esam lietojis par pašsaprotamu līdz šim.
Tagad es esmu gatavojas, lai tālinātu.
>> Un šī termināla logu uz leju šeit, kādi man atļauts to darīt šajā melnā
un baltas logu?
Ko es varu izmantot to?
Tātad, tas ir, ja es palaist komandu un kur es varu apkopot lietas.
Un es esmu gatavojas, lai saglabātu tā vienkārši.
Es esmu gatavojas izmantot programmu sauc Make, kas ir ne
tehniski kompilatoru.
Kompilators ir sauc šķindēt, taču mēs būsim atpakaļ, ka
nedēļu vai divas ir laiks.
>> Tagad, es esmu tikai gatavojas rakstīt darīt sveiki-0, bet tiem no jums, kuri bija
Salīdzinot jūsu prātos, ko es tikko drukāti, ko es būtu drukāti var
jau zinu, ka es to darīju kaut kas nepareizi šeit.
Tagad tur ir skaidri dažas kļūdas.
Pirms es pat apskatīt to, ko viņi ir, jebkura domas par to, ko es izdarīju nepareizi?
>> STUDENTIEM: [interposing Voices].
>> DAVID Malan: Jā.
Es esmu trūkst bibliotēkas header failu.
Jebkurš no šiem. H failu sauc galvenes failus, un viņi kopā
pieder pie lietas, ko sauc bibliotēkām.
Bibliotēkas ir tikai gabalos kodu ka citi cilvēki rakstīja.
Tātad standarta [? i?] bibliotēka ir failu kolekcija, kas satur kodu
ka citi cilvēki rakstīja.
>> Tāpēc es esmu trūkst to.
Tātad, kāpēc es saņemu kļūdu?
Nu, ļaujiet man ritiniet atpakaļ uz augšu mans termināļa logu šeit.
Un diemžēl, C, kā arī daudz programmēšanas valodas, jo īpaši
ja tas viss ir jauns, lai jums, kļūda ziņas ir precīzas, bet viņi arī
diezgan noslēpumains.
Un kļūdas šeit, sarkanā krāsā, ir "Netieši atzīstot bibliotēkas funkciju
printf ar tipu ", un tad tas scrolls uz nākamo rindiņu, "int const char *,
... "Tas vienkārši kļūst patiešām milzīgs ātri.
>> Bet ko jums vajadzētu sākt darīt, ja, atkal jauns, lai tas viss ir tikai
sāk meklēt atslēgvārdiem.
Protams, es varētu nesaprast pusi no vārdiem es esmu redzēt tikai yet.
Jums būs, lai gan, jo nedēļas laikā.
Bet es redzu printf.
Un tas jāsāk, pirms ilgi, līdz jog savu atmiņu, visi labi, printf.
Kaut kas ir nepareizi ar printf.
Vai es izskaidrot nepareizi?
Nē, tas nav izskatās - oh.
Es nevaru to izmantot, ja es mācu kompilators, ka tā pastāv.
Un tā, atkal, iet ar saviem instinktiem, pat ja jums nav faktiski saprast
faktiskie kļūdu ziņojumi.
>> Un tiešām, risinājums šeit ir tikai ietver to augšpusē faila
piemēram, ka, resaving manu failu ar Control-S vai izvēlnē Fails.
Un, ja es tagad iet atpakaļ uz leju šeit, Es esmu gatavojas, lai notīrītu to.
Control-L ir tikai jauks veids , lai notīrītu ekrānu.
Un tad es esmu gatavojas rakstīt "veikt sveiki 0 "Enter, un tagad joprojām redzu
mistisks secība simboliem, bet mēs atgriezīsimies pie tā.
Tas ko Padarīt dara jums.
Tas automatizējot procesu, ņemot diezgan kaitinošas komandu, iesaistot
Šķindēt, faktisko kompilatoru.
Bet fakts, ka es saņēmu bez kļūdām nozīmē ka šī lieta būtu jāstrādā.
>> Tāpēc es esmu tagad gatavojas darīt - ļaujiet man tuvinātu atkal -
./hello-0 Enter, un, protams, es redzu "Sveiki, pasaule." Tātad, pieņemsim tagad palielinātu
šī kādreiz tik nedaudz vienkārši atkārtot soļi, mēs vēlējāmies.
Es esmu gatavojas pārdēvēt to ar Saglabāt kā, lai hello1.c.
Un tagad es esmu gatavojas deklarēt mainīgo sauc vārdu, lai virknes nosaukums,
un es esmu gatavojas īstenot to vērtība quote-likt pēdiņas beigās
D-A-V-I-D close-quote semikols.
Un tagad es esmu gatavojas aizstāt "pasaule" ar ko vietturis virkni?
% S.
>> Un tagad, cik argumenti būtu printf izmantot šo laiku?
Tātad divi.
Tad es eju ārpus pēdiņām.
Es tipa "name" pēc komata.
Bet es esmu darījis kaut ko cits nepareizi šoreiz.
Bet pieņemsim, ka man nav saprast, ka vēl nav.
Ļaujiet man iet šeit.
>> Un paziņojums, arī es saņemu nedaudz garlaicīgi, ierakstot "padara sveiki 0" visu
laiks, "darīt", un tas viss.
Tātad, izrādās, ir Linus varat bieži hit augšu bultiņu uz jūsu
tastatūru, un jūs faktiski var ritināt izmantojot visas komandas, kas es esmu
izpildīts iepriekšējais tikai tagad.
Tātad, ja es daru to, Up, Up, tur ir padarīt sveiki 0.
Es negribu to.
Es tikai gribu mainīt, ka, lai sveiki 1 šoreiz, Enter.
Galu galā, kas būs ietaupīt laiku.
>> Labi.
Diemžēl, tur ir kļūda.
Tātad, ļaujiet man ritiniet uz augšu.
Tas izskatās tāpat kā es tiešām butchered šo programmu.
Es domāju, mans dievs, tas ir divas rindiņas kodu, un tās 10 rindas kļūdas.
Bet apskatīt top viena pirmā.
Izmantot nedeklarētu identifikators virknes.
Vai es domāju standarta i n?
Nē man nebija.
Es nozīmēja virkni.
>> Bet kur ir virkne mainīgais tipa paziņoja, dd mēs sakām?
Tātad tas, kas CS50 bibliotēkas.
Tātad, tas nav pietiekami, jo tie vispirms pāris nedēļas, tikai lai izmantotu
kādi C dod mums.
Es esmu arī gatavojas iet uz augšu šeit, un es varētu nodot to virs vai zem, bet es ņemšu
tikai glabāt to alfabēta lai saglabātu lietas sakārtotu.
Es esmu gatavojas iekļaut cs50.h, , kas ir iepriekš uzstādīta uz
jūs uz CS50 ierīces.
Un tas ir open source, tāpēc pat cilvēki internetā var izmantot to par viņu
savus datorus.
Bet tas nāk ar CS50 ierīci.
>> Tātad, tagad ļaujiet man iet atpakaļ un recompile tas padara sveiki 1.
Damn it.
Vēl viens kļūda.
Ļaujiet man ritiniet līdz pirmās, gan.
Šis viena ir nedaudz sarežģītāka.
Multi-raksturs raksturs nemainīgs.
Tas nav palīdzēt man.
Bet paziņojums, šķindēt ir vismaz nedaudz bit pienācīgu, saskaņā ar kuru ar nedaudz
zaļā caret simbols, tas ir saprotams, Šeit ir vieta, kur es ieskrūvē augšu.
Kāpēc tas ir norādot, ar, ka maz zaļā bulta, vienotajam citātu nākamo
uz manu vārdu?
>> Tātad šī ir viena no lietām, jums tikai pierast, it īpaši, ja jūs esat bijis
programmēšanas Python, vai JavaScript, vai citas valodas, ja tas detalizēti
nav svarīgi.
C, tas nav jautājums.
Ja jūs deklarējat virkni, kas ir secību 0 vai vairāk burtiem,
Jums tiešām ir jāizmanto dubultās pēdiņas.
Tāpēc man tiešām ir nepieciešams, lai mainītu šo atpakaļ atvērt cenas piedāvājumu, slēgt cenas piedāvājumu, ar
pēdiņas.
Single citātus darīt ir sava vieta, bet tikai tad, kad jūs izmantojat indivīdam
simboli, bet vairāk par šo citā laikā.
Tagad, pēdiņas ir nepieciešams.
>> Tāpēc tagad, ļaujiet man iet atpakaļ uz manu terminālu logu, padara sveiki 1.
Un kurš ir pārliecināts?
Vai šī programma tagad gatavojas sastādīt pareizi?
Labi.
Tātad, trīs no mums domā to.
Labi.
Enter.
Un tas tiešām izdarīja.
Tāpēc tur nav kļūdas šajā laikā, pat tad, lai gan šī programma ir gotten mazliet
sarežģītāka.
Ja man tagad darīt dot slash Sveiki 1, Enter, tas gatavojas teikt "sveiki, Dāvids."
>> Bet pieņemsim do trešā atkārtojuma no šī, kur
Programma ir patiesi dinamisks.
Ļaujiet man iet uz priekšu un mainīt failu nosaukumu, tikai atbilstību
failus, jums ir pieejams jums pēc tam internetā.
Enter.
Un tagad es esmu gatavojas iet un nav uzglabāt "David" grūti kodēti šeit.
Ko es varētu darīt, lai ļoti vienkārši uzlabot šo programmu?
>> Es varētu saukt getstring.
Tas varētu būt mazliet nav skaidrs, kāda ir gatavojas notikt, tāpēc es esmu gatavojas
faktiski pievienot vēl vienu rindiņu, printf, un teikt vārdu, resnās zarnas, netālu cenas piedāvājumu, vienkārši
lai sniegtu lietotājam ātri uz ekrāna.
Un tagad es esmu gatavojas iet šeit, un es esmu gatavojas izmantot savu tastatūras īsceļu.
Es esmu gatavojas iet uz augšu, uz augšu, un mainīt sveiki 1 līdz 2 hello, Enter.
Un par laimi, es esmu gūt panākumus.
>> Un tagad es esmu gatavojas iet uz augšu lai dot slīpsvītra Sveiki un
mainīt, ka līdz 2, Enter.
Un tagad mana programma -
Es tuvinātu - kļūst nedaudz skaistāka.
Nosaukums būs, teiksim Rob šoreiz, Enter, sveiki, Rob.
Mēs varam darīt to vēlreiz.
Vārds, Lauren, Enter.
Vārds, Jāzeps, Enter.
Vārds, pamēģināsim būt grūti, Enter.
Eh.
Tas nav īsti kļūda.
Tātad, tas ir tikai nedaudz neglīts.
Tātad, varbūt mēs varētu atrisināt šo nākotnē, ne tagad.
>> Bet kā jūs instinktīvi iet par risinot
ka īpaša problēma?
Tā tikai izskatās muļķīgi.
Kā jūs izvairītos no lietas meklē stulba?
Lai mēs varētu darīt, OK, es dzirdēju pāris lietas, stāvokli un cilpas.
Mēs varētu izmantot vienu, nosacījums, lai pārbaudītu kas ir virknes garums
lietotājs deva mums?
Un, ja tas ir 0, tas ir tikai citēt likt pēdiņas beigās, viņi vienkārši hit Enter, tad
varbūt man vajadzētu kliegt uz viņiem un ātri tos atkal.
Bet kā ātri viņiem atkal?
Nu, es arī dzirdēju, cilpu, un es varētu darīt atkal un atkal, un atkal
pamudinot lietotājam par to pašu.
>> Nu, pieņemsim darīt vienu citu piemēru izmantojot dažādas
funkcija, kas CS50 bibliotēkā.
Ļaujiet man slēgt šo failu.
Ļaujiet man izveidot jaunu.
Un es aicinu to adder.c, tikai tāpēc, ka tas ir viegli darīt vienkāršu aritmētiku,
pat ja tas būs pilnīgi underwhelming ar to, ko jūs varētu darīt,
ar jebkuru mūsdienu datoru.
>> Bet ļaujiet man iet uz priekšu tagad -
Es uzzināju, mana mācība, pēdējo reizi - arī cs50.h, ietver stdio.h, int
Galvenais spēkā neesošu, kas tagad, es ņemšu tikai uzņemties uz aklu ticību, bet mēs pieņemam
kas sapratīs, ko tas nozīmē, ka pirms ilgi.
Un es esmu gatavojas teikt kaut ko piemēram, "man int."
>> Un tagad, kā es varu iegūt int?
Es gribu, lai galu galā deklarēt mainīgo sauc par int tipa x un
uzglabāt tajā vesels skaitlis no lietotāja.
Tā, ka bija kumoss.
Bet, ja kāds vēlas ierosināt, kā es varu paziņot, veselu sauc x?
Int x.
>> Tātad, tas tiešām ir tik vienkārši.
Dodiet man int.
To sauc par x.
Tagad es izmantot piešķiršanas operatoru.
Un kā es varu uzglabāt no atstāja vērtību lietotājs?
Es nevēlos, lai izsauktu getstring, protams, bet getint.
Jebkuri argumenti?
Nē.
Tātad, tas ir atvērts paren, netālu paren nekavējoties, un pēc tam
semikols beidzas līniju.
>> Tagad ļaujiet man darīt atkal.
Dodiet man vēl int.
Šoreiz es darīšu int, pieņemsim to sauc par y, ir vienāds getint.
Un tagad ļaujiet man darīt kaut ko super-vienkāršu piemēram, daži math.
Tā printf,% d summa ir vietturis int.
Un% d, periods, slīpsvītra-n.
>> Labi.
Tāpēc, ka tas nav reāli math.
Bet, ja es gribu pateikt summu par šo vērtība plus šī vērtība ir vienāda ar to
citu vērtību, cik argumenti par Kopējais man būtu dot printf,
galu galā?
Tātad četriem, labi?
Šī virkne un pēc tam trīs vērtības.
Tātad x ir pirmais es gribu būt pieslēgts vispirms% d.
y būs nākamais.
>> Un tagad es veida gribu teikt z, bet z neeksistē.
Bet tas nav liels darījumu.
Tāpēc, ko jūs darītu instinktīvi, it īpaši, ja jums bija
grafikus kalkulators, ko jūs rakstīt?
Kā par x plus y?
Tātad, tas nav faktiskā mainīgs.
Tas ir tikai summa divu citi mainīgie lielumi.
Un tas ir pilnīgi likumīgi.
C, protams, saprot vienkārši aritmētika kā šis.
>> Semikols, saglabājiet.
Tagad ļaujiet man iet uz leju šeit un rakstiet veikt papildu vērtību, Enter.
Nav kļūda, tā ka ir progress pārāk.
Ierakstiet papildinātājs.
Un vēl viens tastatūras īsceļu, ja jūs sākat garlaikoties
ar visām komandām -
ja jūs sākat rakstīt komandu, piemēram, dot slīpsvītra reklāmu, un tas ir, ja jūsu
garlaicība kicks in, jūs parasti var hit Tab ir dators pabeigt
atpūsties ar frāzi, lai jūs, ja tas nav neskaidrs, kas būtu jānāk pēc reklāmas.
>> Tātad, ļaujiet man iet uz priekšu tagad un jūs noklikšķiniet uz Enter.
Dodiet man int, 1, 2, un par laimi, tas ir 3.
Bet kā vienmēr, testēšanas programmas nevajadzētu samazināt līdz
tikai mēģina to vienu reizi.
Ļaujiet man mēģināt stūra lietu, piemēram, negatīva 1, dod man 1, un ka viens
pārbauda, ​​kā labi.
Un es, iespējams, vēlas darīt dažas vairāk rūpīga testēšana, bet es esmu diezgan
apmierināti ar to, kur tas ir pie.
>> Nu, tagad pamēģināsim citu programmu ka šī laika izmanto
mazliet cita sintaksi.
Ļaujiet man izveidot jaunu failu.
Es aicinu šo conditions0.c rindā klajā ar kādu paraugu kodu tiešsaistē.
Un ļaujiet man iet uz priekšu un darīt ietver cs50.h, ietver
stdio.h, galvenajā spēkā neesošu -
Labi.
Tur mēs ejam.
Mums ir mūsu standarta tekstveidnes.
>> Un šoreiz es esmu gatavojas teikt printf, "Es gribētu int, lūdzu," vienkārši
padara ātru maz draudzīgāku.
Un tagad es vēlos saņemt int no lietotāja.
Es esmu gatavojas nosaukt n šoreiz, tāpat jo n izklausās numuru.
getint, un tagad, ko darīt Es gribu darīt ar to?
Nu, ja n ir - un es ņemšu tuvinātu -
ja n ir lielāks par 0, es gribu rīkojieties šādi -
printf "Tu paņēma pozitīvu skaitli." Else, es esmu gatavojas rakstīt printf "Tu
palielinājies negatīvs
numurs "Labi..
Tātad šī programma, lai gan es to izdarīju ātri, izskatās labi sintaktiski.
Ļaujiet man mēģināt šo.
Padarīt stāvoklī 0.
, Šķiet, darbojas.
Stāvoklis 0, ievadiet.
Let 's dod tai int 50.
Es pacēlu pozitīvu skaitli.
Pamēģināsim vēlreiz.
Stāvoklis 0.
Negatīvs 50.
Es pacēlu negatīvu skaitli.
>> Bet tagad, ļaujiet man izvēlēties, ko mēs turpinām zvanot stūra gadījumā, kas ir vairāk
interesants gadījums, ka jūs domājat var dot jums dažas problēmas, 0.
Tagad, es esmu diezgan pārliecināts, ka tas ir viens no šie stūra gadījumus, kad nulle ir
ne pozitīvu, ne negatīvu, tāpēc mans programma, lai gan sintaktiski
labot - tas apkopo, tas darbojas - nav loģiski pareizs.
Tātad, kas ir vienkārši noteikt šeit, ja es gribu lai noteiktu, ja es gribu, lai rīkotos n
ir vienāds ar 0 atsevišķi?
>> Tātad, ja n ir vienāds ar 0, tad es gribu teikt kaut ko līdzīgu printf "Tu noplūktiem 0."
Ļaujiet man mēģināt to tagad.
Ļaujiet man atgriezties šeit, notīriet mana loga, un pārkompilācija.
Hm.
Viena kļūda radīt.
Bet es jūs vēlaties, lai pārbaudītu ja n ir vienāds ar 0.
>> Tātad vēlreiz, cita stulba lieta pierast, vienādības zīme ir
cesiju operators.
Tātad, tas ir faktiski kļūda, ka, tehniski, pat ja kompilators
aizsargā mani no sevis, mēs gribētu tehniski kopējot 0 uz n, kas
nav tas, ko es gribu.
Es gribu, lai pārbaudītu vienlīdzību ar vienāds vienāds.
Un tā, ka tagad varētu būt mans labāks risinājums.
>> Ļaujiet man faktiski atkārtoti saglabāt to kā, teiksim, conditions1, lai būtu jauna un uzlabota.
Tāpēc tagad, ja es kompilējiet to, tas būtu apstākļi -
whoops - padarīt conditions1 dot slash conditions1, Enter, "es gribētu int,
lūdzu. "Es iešu priekšu un rakstīt 50.
Tas joprojām ir labs.
Negatīvs 50, joprojām ir labs.
0, un tas, protams, atklāti ka es noplūktiem 0.
>> Tātad, ko vēl es varu tagad darīt ar šo?
Nu, mēs noteikti varam darīt vairāk sarežģītas lietas.
Bet ko es gribētu ierosināt, ka mēs beigās šo piezīmi šeit.
Ja mēs uzvilkt, jūs redzēsiet, iespējams, mīļākie karikatūra no jums
līdz mūsdienām jūs varētu nekad nav saprotams.
Un tas ir par kvalitāti, smiekli Jums vajadzētu saņemt ar CS jokiem.
Tātad, tas ir apmēram labi.
>> Bet vēl pārliecinoši, es domāju, ka man dod mums mazliet teaser pirmdien.
Tāpēc mēs esam sākuši izmantot veselus skaitļus.
Mēs esam minēts pludiņiem.
Mēs esam pat minēts dubultspēlē, kas, atkal, jums numuri
pēc cipariem aiz komata.
>> Bet izrādās, ka pludiņi un divvietīgi, un, tiešām, datori,
būtībā, nevar izteikt dažas vērtības precīzi.
Mēs zinām no matemātikas klasēs, ka jūs varat būt jebkurš skaits numuriem pēc
komatu.
Un jūs pat varat ievietot vertikālu joslu teikt tie iet uz visiem laikiem.
>> Diemžēl, jūs nevarat īsti darīt, ka ar datoru.
Un tā stūra gadījumi rodas.
Piemēram, pieņemsim, ka jūs esat kaut ko finanšu.
Jūs darāt matemātiku ar procentiem, un
ar dolāriem un centiem.
Un tie centi nav vienmēr rindā.
Nu, izrādās, ka frakcijas pennies var sākt pievienot uz augšu, kad
modelēta ar datorsistēmu tādā veidā, ka gudrs
cilvēki var izmantot.
>> Un tiem no jums, kas nav redzējuši, es gribētu vēlētos sniegt jums 30 sekunžu teaser par
brīnišķīga filma pazīstama kā biroja telpas, kas krāsu attēlu
problēma, mēs risināt Pirmā lieta pirmdien.
Ja mēs varētu palielināt skaļumu mazliet, es dodu jums 30
sekundes biroja telpas.
>> [VIDEO PLAYBACK]
>> -Es domāju, jūs, jums nav guvusi augšu, un jūs saņemsiet, lai saglabātu savu darbu.
>> -Patiesībā, es esmu tiek veicināta.
>> -Es varētu ieprogrammēt vīrusu, kas gribētu noārdīt šo vietu off liels laiks.
>> -Nu, kā tas darbojas?
>> -Katru reizi, kad tur ir bankas operācijas ja procenti tiek aprēķināta, un tur
Ir tūkstošiem diena, dators beidzas klajā ar šiem centam frakcijām.
>> -Bet es neesmu gatavojas darīt kaut ko nelikumīgu.
>> -Nelegālā?
Samir, tas ir Amerikā.
>> -Mums ir zvēru pie Dieva.
>> -Ja neviens nezina par šo bet mums, labi?
Nav ģimenes locekļi, nav draudzenes, neviens.
>> -Protams.
>> -Saskaņotais.
>> -Don 't worry, cilvēks.
Es nav pateikt kāds, vai nu.
>> [END VIDEO PLAYBACK]
>> DAVID Malan: Tātad tas, tad ir CS50, tas bija biroja telpas, un tas būs viss
jēgas pirmdien.
Redzēt jūs tam.
>> Teicējs: Nākamajā CS50, Rob pielāgojas ir off
Harvard maltīti plānu.