>> [Speel van musiek]
>> DOUG LLOYD: Hi, so laat praat oor operateurs in C.
So, ons het reeds gesien een, in werklikheid, gelyk is aan die opdrag operateur.
Dit stel ons in staat om net sit 'n waarde in 'n veranderlike.
Dit is die opdrag operateur, enkel gelykaanteken.
Ten einde te manipuleer en werk waardes en veranderlikes in C,
Ons het 'n aantal van die operateurs tot ons beskikking wat ons kan gebruik.
Kom ons neem 'n blik op sommige van die algemene hiervan
begin met rekenkundige operateurs.
Soos jy kan verwag, kan ons doen redelik basiese wiskunde bedrywighede in C.
Ons kan voeg, aftrek, vermenigvuldig, en verdeel getalle met behulp plus, minus, ster,
en streep, onderskeidelik.
Hier is 'n paar van die reëls van die kode waarin ons dit doen.
So, ons het int x gelyk aan y plus 1.
Kom ons veronderstel dat iewers bo die lyn van die kode
Ons het gesê int y is gelyk aan 10.
Wat is die waarde van x nadat ek hierdie eerste reël van die kode uit te voer?
Het jy sê 11?
Jy wil reg.
Hoekom is dit?
Wel, y was 10.
Sommige ek sê int x gelyk aan 10 plus 1.
10 plus 1 is 11.
So, die waarde 11 kry gestoor in die veranderlike x.
Nie te sleg nie, reg?
>> Hoe hieroor volgende lyn van kode? x is gelyk aan x keer 5.
Wel, voordat ons uitgevoer hierdie lyn van die kode, x was 11.
So, wat is die waarde van x na hierdie lyn van die kode?
Neem 'n tweede.
So, x is gelyk aan x keer 5.
x was 11.
So, x is gelyk aan 11 keer 5.
Of 55.
So as jy sê 55, sou jy reg wees.
>> Nou, kan dit 'n bietjie verwarrend, maar met die manier waarop opdrag werk in C
is die waarde op die regte kry aan die waarde aan die linkerkant.
So, in die eerste evalueer ons x keer 5.
So, 11 keer 5 is 55.
En dan slaan ons dat waarde in x.
Die 11 dat daar voor is nou oorskryf.
So x se waarde is nou 55.
Hopelik is redelik eenvoudig.
>> Daar is 'n ander operateur wat jy het waarskynlik nie noodwendig gehoor
genoem, maar jy het beslis gewerk in die verlede
as jy onthou die dae van 'n lang afdeling pad terug in graad skool.
Dit is bekend as die modulus-operateur.
Wat modulus doen, is dit gee jou die res
wanneer jy verdeel twee getalle bymekaar.
So, as ek sê 13 gedeel deur 4, wat is die res?
En wat waarde sal bereken word deur die modulus-operateur.
>> So, ek het 'n reël van die kode hier, int m gelyk 13 mod 4.
En ek sê hier in 'n kommentaar waarde dat m is nou 1.
Hoekom sê ek dit?
Wel, doen die lang afdeling in jou kop, as jy met my dra vir 'n tweede.
So, ek het 4 gedeel deur 13.
4 gaan in 13 drie keer met 'n res van 1.
So, basies, al die modulus operateur doen
is dit wanneer jy vertel verdeel, kry jy die res.
Jy mag dalk dink dit is eintlik nie 'n vreeslik nuttige ding,
maar jy sal verbaas wees, eintlik, deur hoe gereeld dat modulus
operateur kan handig te pas kom.
>> Daar is 'n paar van die probleme ons sal CS50 wat handel oor dit te doen.
Dit is ook goed vir doen dinge soos ewekansige getal.
So, byvoorbeeld as jy ooit gehoor van 'n ewekansige getal generator,
wat gaan om jou te gee 'n aantal van 0 tot n paar groot aantal.
Maar miskien is jy eintlik net moet 'n aantal 0-20.
As jy die modulus operateur gebruik op daardie reuse getal wat
kry gegenereer word deur die ewekansige getal generator,
jy gaan om te doen wat groot waarde wat dit is, deel dit deur 20,
en kry die res.
Die res kan net wees 'n waarde 0-19.
So, modulus operateur gebruik jy om hierdie groot aantal neem
en Whittle dit af in iets 'n bietjie meer betekenisvol.
Ek is redelik seker jy sal in staat wees om beide van die gebruik
op 'n sekere punt in die toekoms in CS50.
>> So, C gee ons ook 'n manier om 'n rekenkundige toepassing
operateur om 'n enkele veranderlike in 'n bietjie meer snelskrif manier.
So, in die vorige skyfie, ons gesien x is gelyk aan x keer 5.
Wat gewerk het.
x keer 5 dan kry gestoor terug in x.
Daar is 'n korter manier om dit te doen, denke, en dit is die sintaksis x keer gelyk 5.
Dit is presies dieselfde ding as sê x is gelyk aan x keer 5.
Dit is net 'n bietjie korter manier om dit te doen.
En wanneer jy sien 'n paar verspreiding kode, of jy
sien 'n paar monster kode wat doen dinge soos hierdie,
net vertroud wees met wat die sintaksis beteken.
Jy is seker nie om dit te gebruik nie, maar as jy dit doen,
dit kan jou kode te maak kyk 'n bietjie beter vertoon.
En weet dat jy ook enige van kan gebruik die verskillende operateurs Ons het reeds
gesien voor in plaas van die tye.
Jy kan sê x plus gelyk aan 5, minus gelyk 5, tye, verdeel, en mod.
Al daardie werk.
>> Daar is ook iets dit is so algemeen in C
dat ons het besluit om verfyn dat selfs verder.
Die verhoog 'n veranderlike met 1 of decrementing 'n veranderlike met 1
is so 'n algemene thing-- veral wanneer ons praat oor 'n bietjie later lusse
on-- dat ons in plaas van het besluit sê iets soos x plus gelyk aan 1,
of x is gelyk aan x plus 1, selfs ons het kort oorhandig dat x plus plus.
So, x is gelyk aan x plus 1, x plus gelyk aan 1, en x plus plus al doen dieselfde ding.
Hulle het almal inkrement x deur 1.
Maar dat die verhoog en decrementing deur 1
is so algemeen dat ons plus plus en minus minus
wat ons toelaat om snelskrif dat selfs verder.
>> So, laat ons skakel ratte vir die tweede en praat oor Boolse uitdrukkings.
Alle wat ook soort van val in die algehele kategorie van operateurs.
Maar Boolse uitdrukkings, teenstelling rekenkundige operateurs,
word gebruik vir waardes te vergelyk.
So, weer, al Boolse uitdrukkings in C evalueer om een ​​van twee moontlike waardes,
onthou.
Waar of vals.
Dit is die enigste twee waardes wat Boolean veranderlike kan aanvat.
Ons kan die resultate gebruik van 'n Boole-uitdrukking
in 'n baie maniere in programmering.
In werklikheid, sal jy om dit te doen nogal 'n baie.
>> Byvoorbeeld, kan ons besluit, Wel, as sommige toestand is waar,
miskien sal ek dit neem tak af my kode.
'N voorwaardelike, om so te praat.
Ons sal leer oor die gou ook.
Of miskien, solank dit is waar, ek wil
te hou om dit te doen oor en oor en oor.
A lus.
In beide gevalle, weet dat ons gebruik 'n Boole-uitdrukking, 'n ware of vals,
om te besluit of nie om 'n bepaalde pad te neem.
Soms wanneer ons werk met Boole uitdrukkings,
ons sal gebruik veranderlikes van die tipe Bool.
Jy kan verklaar 'n Bool getik veranderlike,
en jy sal gebruik in jou Boole-uitdrukking.
Maar jy hoef nie altyd te doen het.
Soos dit blyk, in C, elke nie-0 waarde is dieselfde as om te sê waar.
As jy het verklaar veranderlike van tipe Boole,
en opgedra dit die waarde waar, dit is dieselfde as 'n heelgetal verklaar
en die toeken dit die waarde 1, 2, 3, of eintlik enige waarde
hoegenaamd behalwe 0.
Want in C, elke nie-0 waarde is waar.
0, aan die ander kant, is onwaar.
Dit kan kom in handig later om te weet,
maar net iets om in gedagte te hou.
Ons het nie altyd om te gebruik Boole tipe veranderlikes wanneer ons
besig is met Boolse uitdrukkings.
>> Daar is twee hoof tipes van Boole uitdrukkings wat ons sal werk.
Logiese operateurs en relasionele operateurs.
Die taal is daar nie vreeslik belangrik.
Dit is regtig net hoe ek hulle groepeer.
En jy sal beslis, dink ek, vinnig besef wat 'n relasionele operateur is,
gebaseer op wat hulle is wanneer ons praat oor hulle in 'n tweede.
Maar moenie bekommerd wees oor noodwendig memorisering die term logiese operateur
of relasionele operateur.
Ek is net gebruik om dit te groep hulle in 'n logiese manier.
>> So, laat ons 'n blik op die drie logiese operatore
dat ons sal sien nogal 'n bietjie in programmering in CS50
en in programmering meer algemeen.
Logiese en waar is, indien en slegs indien beide operande is waar.
Anders onwaar.
Waar beteken dit?
So, kom ons sê dat ek op 'n wys in my kode waar ek
twee veranderlikes, x en y.
En ek wil om te besluit of om iets te doen in my kode
gebaseer op as x is waar en y is waar.
Ek wil net om dit te doen as beide van hulle is waar,
anders Ek wil nie om te gaan wat pad, want dit is nie van plan om my te help.
Wat ek kan sê, is as x & & y.
Dit sal 'n logiese Boole wees uitdrukking te vergelyk x en y
en die neem van 'n sekere pad gebaseer op wat hulle waardes is.
Dus, as x is waar en y is waar gebaseer op hierdie waarheid tafel hier
slegs dan sal ons aftrek dat die pad.
As x, y & &.
Dit is net die true-- en is slegs waar as x is waar en y is waar.
Indien een vals is, soos ons sien die waarheid tafel,
dan moet die twee x en y is nie waar nie.
En so, x & & y is onwaar.
>> Logiese OF waar as en slegs indien minstens een operand is waar.
Anders onwaar.
So logiese EN vereis beide x en y om waar te wees.
Logiese OF vereis x waar of y om waar te wees of beide x en y om waar te wees.
So, weer, ons soort vind onsself in 'n situasie
waar ons gaan ons kode, en ons het 'n vurk in die pad.
En ons wil om te gaan 'n bepaalde pad as x is waar
of y is waar, maar nie noodwendig indien beide is waar.
Maar moontlik indien beide is waar.
So as x is waar en y is waar, sal ons aftrek dat die pad.
x, waar is.
Een van hulle is waar, reg?
As x is waar en y is waar.
As x is waar, en y vals is, een van hulle is nog steeds waar.
So, X of Y is steeds waar.
As x is vals en y is waar, een van hulle is nog steeds waar, reg?
y is waar, in hierdie geval.
So, dit is waar dat x of y is waar.
Slegs indien x is vals en y vals gaan ons nie neer dat die pad,
want nie x nie y waar is.
Nou, as jy op soek is op die skerm nou
en wonder wat dit simbool is vir die logiese OF,
dit genoem die vertikale bar.
En as jy kyk na jou sleutelbord vir 'n minuut, as ek nou doen,
dit is gewoonlik net bokant die Tik sleutel, op die meeste keyboards,
op dieselfde sleutel as die agteroorskuinsstreep.
Dit is ook gewoonlik reg langs die vierkante hakies.
So, kan dit 'n belangrike wees dat jy het nie baie in die verlede getik.
Maar, as jy ooit doen logiese vergelykings,
as ons 'n doen baie in die kursus, is dit
gaan nuttig te wees vind dat die sleutel en dit gebruik.
So, dit is gewoonlik op dieselfde sleutel as backslash net bokant Enter.
>> Die finale logiese operateur is NIE.
En nie is redelik eenvoudig.
Dit omkeer die waarde van sy operand.
As x is waar, dan nie x is onwaar.
As x is onwaar, dan nie x is waar.
Soms sal jy hierdie simbool hoor uitgespreek as bang of uitroepteken
of nie.
Dit is pretty much al die dieselfde ding.
In geval jy hoor dat gepraat en jy is nie seker wat dit beteken,
dit is net die uitroep punt, maar soms is dit
genoem 'n paar verskillende dinge.
Alle reg, sodat neem sorg van logiese operateurs.
So, laat ons praat oor relasionele operateurs.
Weereens, as jy vertroud is met hierdie is rekenkundige terug in graad skool,
is jy waarskynlik vertroud met hoe hierdie werk reeds.
Hierdie optree presies soos jy sou verwag.
So minder as dit waar is, in hierdie Byvoorbeeld, as x is minder as y.
So, as x 4 en y is 6, x is minder as y.
Dis waar.
Minder as of gelyk aan werk baie dieselfde.
As x is 4, en y is 4, dan x is minder as of gelyk aan y.
Groter as. x is groter as y.
En groter as of gelyk aan x groter as of gelyk aan y.
As dit waar is, dan sal jy gebeur dat uitdrukking,
en jy sal afgaan dat die pad op die pad.
As jy 'n as x groter as y, en x is, in werklikheid, is groter as y,
jy sal alles doen wat is onderhewig aan daardie toestand.
>> Let daarop dat ons nie 'n het enkele karakter vir minder as
of gelyk aan, soos jy kan wees vertroud is met van wiskunde handboeke.
So, ons het die minder as simbool, gevolg deur 'n gelyke teken.
Dit is hoe ons verteenwoordig minder as of gelyk aan.
En insgelyks, doen ons dit doen vir 'n groter as of gelyk aan.
>> Die laaste twee relasionele operateurs wat belangrik is
toets vir gelykheid en ongelykheid.
Dus, as x gelyk aan y is gelyk aan, waar is As x en y se waarde is dieselfde.
As x is 10, en y is 10, dan x gelyk aan y is gelyk aan die waarheid is.
As x is 10 en y is 11, x gelyk gelyk y is nie waar nie.
Ons kan ook toets vir die gebruik van ongelykheid uitroepteken of bang is of nie,
weer.
As x is nie gelyk aan y, as dit is die toets wat ons hier in met,
ons goed om te gaan sou wees.
Dus, as x is nie gelyk aan y, sal ons aftrek dat die pad.
>> Wees versigtig hier regtig.
Dit is 'n baie algemene mistake-- en een wat ek beslis gemaak nogal 'n baie wanneer
Ek was besig om started-- om per ongeluk verwar
die opdrag operateur, enkel gelykes, vir die vergelyking gelykheid operateur,
dubbel gelykes.
Dit sal lei tot 'n vreemde gedrag in jou kode,
en gewoonlik die samesteller sal waarsku oor dit wanneer jy probeer
en stel jou kode, maar soms jy dalk in staat wees om dit te sluip deur.
Dit is nie noodwendig 'n goeie ding dat jy dit sluip deur, al is.
Net so as jy doen 'n ongelykheid toets
as jy kontroleer of twee verskillende veranderlikes dieselfde waarde
binnekant van hulle, maak seker om te gebruik gelyk gelykes, en nie n enkele gelykes.
En dat die manier Jou program sal die gedrag wat jy van plan is.
Ek is Doug Lloyd en dit is CS50.