>> [MUSIC SPILLE]
>> DOUG LLOYD: Hei, så la oss snakke om operatører i C.
Så har vi allerede sett en, faktisk, lik oppdraget operatør.
Det tillater oss å bare sette en verdi i en variabel.
Det er oppdraget operatør, enkelt likhetstegn.
For å kunne manipulere og arbeid med verdier og variabler i C,
Vi har en rekke operatører til rådighet som vi kan bruke.
La oss ta en titt på noen av de vanligste
starter med aritmetiske operatører.
Som du kanskje forventer, kan vi gjøre Ganske grunnleggende matematiske operasjoner i C.
Vi kan legge til, trekke fra, multiplisere og divide tall ved hjelp pluss, minus, stjerne,
and slash, henholdsvis.
Her er et par linjer av kode der gjør vi det.
Så har vi int x er lik y pluss 1.
La oss anta at et sted opp over denne linjen med kode
vi hadde sagt int y lik 10.
Hva er verdien av x etter at jeg utføre denne første linje med kode?
Sa du 11?
Du hadde rett.
Hvorfor det?
Vel, y var 10.
Noen jeg sier int x tilsvarer 10 pluss 1.
10 pluss en er 11.
Så blir verdien 11 lagret i variabelen x.
Ikke så ille, ikke sant?
>> Hva med denne neste linje koden? x er lik x ganger 5.
Vel, før vi henrettet denne linjen med kode, x var 11.
Derfor, hva som er verdien av x etter denne linjen med kode?
Ta et sekund.
Så, x er lik x ganger 5.
x var 11.
Så, x tilsvarer 11 ganger 5.
Eller 55.
Så hvis du sa 55, ville du ha rett.
>> Nå kan det være litt forvirrende, men med måten oppdraget virker i C
er verdien på høyre blir tildelt verdien på venstre side.
Så, først vurdere vi x ganger 5.
Så, er 11 ganger 5 55.
Og da vi lagre denne verdien i x.
De 11 som var der før er nå overskrevet.
Så x verdi er nå 55.
Forhåpentligvis det er ganske grei.
>> Det er en annen operatør som du har sannsynligvis ikke nødvendigvis hørt
kalte dette, men du har sikkert jobbet med i det siste
hvis du husker dine dager lang divisjon vei tilbake i grunnskolen.
Den kalles modulus operatør.
Hva modulus gjør er det gir deg resten
når du deler to tallene sammen.
Så, hvis jeg sier 13 dividert 4, hva er resten?
Og at verdien vil bli beregnet ved modulus operatør.
>> Så har jeg en linje med kode her, tilsvarer int m 13 mod 4.
Og jeg sier her i en kommentar at m verdi er nå en.
Hvorfor sier jeg det?
Vel, gjør den lange divisjon ut i hode, hvis du bære over med meg for en andre.
Så, jeg har 4 delt på 13.
4 går inn i 13-tre ganger med en rest av en.
Så, i utgangspunktet, hele modulus operatør gjør
er det forteller deg når du dividere, får du resten.
Du tenker kanskje at det faktisk ikke en veldig nyttig ting,
men du vil bli overrasket, faktisk, av hvor ofte at modulus
Operatøren kan komme godt med.
>> Det er et par problemer vi vil gjøre CS50 at håndtere det.
Det er også bra for å gjøre ting som tilfeldig tall.
Så, for eksempel hvis du har noen gang hørt om en tilfeldig-tall-generator,
som kommer til å gi deg et tall fra 0 til noen store antall.
Men kanskje du bare virkelig trenger et tall fra 0 til 20.
Hvis du bruker modulus operatør på det gigantiske tall som
blir generert av random number generator,
du kommer til å ta det stor verdi det er, dele det med 20,
og få resten.
Resten kan bare være en verdi fra 0 til 19.
Så bruker du modulus operatør å ta dette store antall
og spikke det ned til noe litt mer meningsfylt.
Jeg er ganske sikker på at du vil være i stand til å bruke begge disse
på et tidspunkt i fremtiden i CS50.
>> Så, C gir oss også en måte å bruke en aritmetisk
operatør til en enkelt variabel i litt mer stenografi måte.
Så, i forrige slide, vi så x er lik x ganger 5.
Som fungerte.
x ganger fem deretter blir lagret tilbake i x.
Det er en kortere vei til å gjøre det, tenkte, og det er de syntaks x ganger lik fem.
Det er det samme ting som si x er lik x ganger 5.
Det er bare en litt kortere vei til å gjøre det.
Og når du ser noen distribusjon kode eller du
se noen eksempelkode som gjør ting som dette,
bare være kjent med hva syntaksen betyr.
Du absolutt ikke trenger å bruke det, men hvis du gjør det,
det kan gjøre koden ser litt stiligere.
Og vet at du også kan bruke noen av de ulike aktørene vi har allerede
sett før istedenfor ganger.
Du kan si x pluss er lik 5, minus lik 5, ganger, dele, og mod.
Alle de arbeid.
>> Det er også noe det er så vanlig i C
at vi har besluttet å avgrense den ytterligere.
Økes en variabel ved en eller minske en variabel ved en
er en så vanlig thing-- spesielt når vi snakker om looper litt senere
on-- at vi har besluttet i stedet for si noe sånt x pluss lik 1,
eller x er lik x pluss 1, har vi selv kort ga den til x pluss pluss.
Så, x er lik x pluss en, x pluss lik 1, og x pluss pluss alle gjør det samme.
De alle tilvekst x etter en.
Men det økes og minske etter en
er så vanlig at vi har pluss pluss og minus minus
som tillater oss å stenografi det ytterligere.
>> Så, la oss skifte gir for andre og snakke om boolske uttrykk.
Alt som er også slags faller inn den generelle kategorien av operatører.
Men boolske uttrykk, i motsetning til aritmetiske operatører,
brukes for å sammenligne verdier.
Så, igjen, alle boolske uttrykk i C evaluere til en av to mulige verdier,
husker.
Sant eller usant.
Det er bare to verdier som Boolsk variabel kan ta på.
Vi kan bruke resultatene av en boolsk uttrykk
på mange måter i programmering.
Faktisk, vil du være å gjøre dette ganske mye.
>> For eksempel kan vi bestemme, vel, hvis noen betingelse er sann,
kanskje jeg skal ta dette armen ned koden min.
En betinget, så å si.
Vi vil lære om de snart også.
Eller kanskje så lenge dette er sant, jeg vil ha
fortsette å gjøre dette om og om igjen og om igjen.
En løkke.
I begge tilfeller, vet at vi bruker en boolsk uttrykk, en sann eller usann,
å avgjøre hvorvidt å ta en bestemt bane.
Noen ganger når vi jobber med boolske uttrykk,
vi vil bruke variabler av typen Bool.
Du har kanskje erklært en Bool skrevet variabel,
og du vil bruke i Boolsk uttrykk.
Men du trenger ikke alltid å gjøre.
Som det viser seg, i C, alle ikke-0 verdi er det samme som å si sant.
Hvis du hadde erklært variabel av type boolsk,
og tildelt den verdien sant, det er det samme som å erklære et heltall
og tilordne den verdien 1, 2, 3, eller en hvilken som helst verdi virkelig
hodet annet enn 0.
Fordi i C, er alle ikke-0-verdi sant.
0, på den annen side, er falsk.
Dette kan komme i hendig senere å vite,
men bare noe å huske på.
Vi trenger ikke alltid å bruke Boolske typen variabler når vi
arbeider med boolske uttrykk.
>> Det finnes to hovedtyper av boolsk uttrykk for at vi skal jobbe med.
Logiske operatører og relasjonelle operatører.
Språket er det ikke veldig viktig.
Det er egentlig bare hvordan jeg gruppere dem.
Og du vil sikkert, tror jeg, raskt skjønner hva en relasjons operatør,
på grunnlag av hva de er når vi snakke om dem i et sekund.
Men ikke bekymre deg nødvendigvis memorere begrepet logisk operator
eller relasjons operatør.
Jeg bare bruker den til gruppen dem på en logisk måte.
>> Så, la oss ta en titt på de tre logiske operatører
at vi vil se ganske bit i programmering i CS50
og i programmerings mer generelt.
Logisk AND er sant, hvis og bare hvis begge operander er sanne.
Ellers falsk.
Hvor betyr det?
Så, la oss si at jeg er på et peke i koden min hvor jeg har
to variabler, x og y.
Og jeg ønsker å bestemme om å gjøre noe i min kode
basert på hvis x er sant og y er sant.
Jeg vil bare gjøre det hvis begge er sanne,
ellers ønsker jeg ikke å gå ned den sti fordi det ikke kommer til å hjelpe meg.
Det jeg kan si er at om x & & y.
Det vil være en logisk boolsk Uttrykket sammenligne x og y
og tar en viss bane basert på hva deres verdier er.
Så, hvis x er sant og y er sant basert på denne sannheten bordet her,
først da vil vi gå ned den veien.
Hvis x, & & y.
Det er bare true-- det og er bare true hvis x er sant og y er sant.
Hvis en av dem er falske, som vi ser sannheten bordet,
da både x og y er ikke sant.
Og så er x & & y falsk.
>> Logisk OR er sann hvis og bare hvis minst en operand er sann.
Ellers falsk.
Så logisk OG nødvendig både x og y til å være sant.
Logisk OR krever x til å være sant eller y til å være sant, eller både x og y til å være sant.
Så, igjen, vi slags finne oss selv i en situasjon
hvor vi kommer til vår kode, og vi nådd et veiskille.
Og vi ønsker å gå ned en bestemt bane hvis x er sant
eller y er sant, men ikke nødvendigvis hvis begge er sanne.
Men muligens hvis begge er sanne.
Så hvis x er sant og y er sant, vil vi gå ned den veien.
x er sant.
En av dem er sant, ikke sant?
Hvis x er sant og y er sant.
Hvis x er sant, og y er falsk, en av dem er fortsatt sant.
Så, x eller y er fortsatt sant.
Hvis x er falsk, og y er sant, en av dem er fortsatt sant, ikke sant?
y er sant, i dette tilfellet.
Så, er det sant at x eller y er sant.
Bare hvis x er falsk og y er falsk vi ikke gå ned den veien,
fordi verken x eller y er sant.
Nå, hvis du leter på skjermen akkurat nå
og lurer på hva som symbol er for logisk OR,
det heter den vertikale linjen.
Og hvis du ser på tastaturet for et øyeblikk, som jeg gjør nå,
det er vanligvis rett ovenfor Enter-tasten, på de fleste tastaturer,
på samme tast som den backslash.
Det er også vanligvis rett ved siden av hakeparenteser.
I så fall kan det være en nøkkel som du har ikke skrevet veldig mye i det siste.
Men, hvis du noen gang å gjøre logiske sammenligninger,
som vi skal gjøre en mye i løpet, er det
kommer til å være nyttig for finner ut at nøkkelen og bruke den.
Så, er det vanligvis på samme tast som backslash like over Enter.
>> Den endelige logiske operatoren er IKKE.
Og IKKE er ganske grei.
Det inverterer verdien av sin operand.
Hvis x er sant, så ikke x er falsk.
Hvis x er falsk, så ikke x er sant.
Noen ganger vil du høre dette symbolet uttales som bang eller utrops
eller ikke.
Det er ganske mye alle det samme.
Hvis du hører at muntlig og du er usikker på hva det betyr,
det er bare utrops punktet, men noen ganger er det
ringte et par forskjellige ting.
All right, så som tar omsorg av logiske operatører.
Så, la oss snakke om relasjonelle operatører.
Igjen, hvis du er kjent med dette aritmetisk tilbake i grunnskolen,
Du er sikkert kjent med hvordan disse fungerer allerede.
Disse oppfører seg nøyaktig slik du forventer.
Så mindre enn det er sant, i dette eksempel, dersom x er mindre enn y.
Så, hvis x er fire, og y er 6, x er mindre enn y.
Det er sant.
Mindre enn eller lik fungerer ganske likt.
Hvis x er fire, og y er 4, så x er mindre enn eller lik y.
Bedre enn. x er større enn y.
Og større enn eller lik x er større enn eller lik y.
Hvis det er sant, så vil du passere det uttrykket,
og du vil gå ned at banen på veien.
Hvis du har en hvis x er større enn y, og X er, i virkeligheten, er større enn y,
du vil gjøre alt som er lagt den tilstanden.
>> Legg merke til at vi ikke har en enkelt tegn for mindre enn
eller lik, som du kan være kjenner fra matematiske lærebøker.
Så har vi den mindre enn symbol, etterfulgt av et likhetstegn.
Det er hvordan vi representerer mindre enn eller lik.
Og på samme måte, gjør vi det større enn eller lik.
>> De siste to relasjons operatører som er viktige
tester for likhet og ulikhet.
Så, hvis x er lik lik y, er sant hvis x og y er verdien er den samme.
Hvis x er 10 og y er 10, og deretter x er lik lik y er sant.
Hvis x er 10 og y er 11, x lik lik y er ikke sant.
Vi kan også teste for ulikhet hjelp utropstegn eller bang eller ikke,
igjen.
Hvis x ikke er lik y, hvis det er den testen vi bruker her,
vi vil være godt å gå.
Så, hvis x er ikke lik y, vil vi gå ned den veien.
>> Vær veldig forsiktig her.
Det er en veldig vanlig mistake-- og en jeg sikkert gjort ganske mye når
Jeg begynte å bli started-- uhell feil
oppdraget operatør, enkeltlikemenn, for likestilling sammenligning operatør,
doble equals.
Det vil føre til noen rare atferd i koden din,
og vanligvis vil kompilatoren advare deg om det når du prøver
og kompilere koden din, men noen ganger du kan være i stand til å snike det av.
Det er ikke nødvendigvis en god ting at du snike den med, skjønt.
Bare så hvis du gjør en ulikhet test,
hvis du sjekker om to- ulike variabler har samme verdi
innsiden av dem, sørg for å bruke tilsvarer likeverdige, og ikke enkeltlikemenn.
Og på den måten programmet vil har atferden du har tenkt.
Jeg er Doug Lloyd og dette er CS50.