>> [MUZIKO Ludante]
>> DOUG LLOYD: Hi, do ni paroli pri operatoroj en C.
Do, ni jam vidis unu, fakte, egalas la asigno operatoro.
Ĝi permesas nin ĝuste meti valoron en variablo.
Jen la asigno operatoro, unuopaj egalsigno.
Por manipuli kaj laboro kun valoroj kaj variabloj en C,
ni havas nombro de operatoroj je nia dispono ni povas uzi.
Ni rigardu kelkaj el la komunaj
startanta kun aritmetikaj operatoroj.
Kiel vi eble atendas, ni povas fari sufiĉe bazaj matematikaj operacioj en C.
Ni povas aldoni, subtrahi, multipliki, kaj dislimo nombroj uzante plus, minus, stelo,
kaj oblikvo, respektive.
Jen kelkaj linioj de kodo en kiu ni faras tion.
Do, ni havas int x egalas y plus 1.
Supozu ke ie super ĉi tiu linio de kodo
Ni diris int y egalas 10.
Kio estas la valoro de x post mi ekzekuti ĉi unua linio de kodo?
Ĉu vi diris 11?
Vi estus prava.
Kial estas tio?
Nu, y estis 10.
Iuj mi diras int x egalas 10 plus 1.
10 plus 1 estas 11.
Do, la valoro 11 ricevas stokitaj en la variablo x.
Ne tro malbona, dekstra?
>> Kion pri tiu sekva linio de kodo? x egalas x fojoj 5.
Nu, antaŭ ni ekzekutita tiu linio de kodo, x estis 11.
Do, kio estas la valoro de x post tiu linio de kodo?
Prenu duan.
Do, x egalas x fojoj 5.
x estis 11.
Do, x egalas 11 fojojn 5.
Aŭ 55.
Do se vi diris 55, oni kredus esti prava.
>> Nun, eble iom konfuza, sed kun la maniero ke asigno laboras en C
estas la valoro sur la dekstra ricevas atribuita al la valoro sur la maldekstra.
Do, unue ni taksi x foje 5.
Do, 11 fojojn 5 ​​estas 55.
Kaj tiam ni stoki ke valoro de x.
La 11 kiu estis tie antaŭ nun anstataŭigi ĝin.
Do x valoro estas nun 55.
Espereble tiu estas sufiĉe simpla.
>> Ekzistas alia telefonisto kiu vi havas probable ne nepre aŭdis
nomis tion, sed vi havas certe laboris kun en la pasinteco
se vi memoras viajn tagojn de longa divido vojon reen en grado lernejo.
Ĝi nomiĝas la modulo operatoro.
Kio modulo faras estas ĝi donas vin la cetero
kiam vi dividas du nombroj kune.
Do, se mi diras 13 dividita per 4, kio estas la resto?
Kaj ke valoro estus kalkulita per la modulo operatoro.
>> Do, mi havas linion de kodo tie, int m egalas 13 mod 4.
Kaj mi diras ĉi tie en komenton ke m valoro estas nun 1.
Kial mi diras tion?
Nu, faru la longa divido en via kapo, se vi pacience toleru min pro sekundo.
Do, mi 4 dividite per 13.
4 iras en 13 trifoje kun resto de 1.
Do, resume, ĉiujn modulon operatoro faras
estas tio informas vin kiam vi breĉo, vi ricevas la reston.
Vi povus pensi ke fakte ne terure utila afero,
sed vi estus surprizita, fakte, per kiom ofte ke modulo
operatoro povas veni en oportuna.
>> Ekzistas kelkaj problemoj ni faros CS50 ke trakti ĝin.
Ĝi estas ankaŭ bona fari aĵoj kiel hazarda nombro.
Do, ekzemple, se vi iam aŭdis de hazarda nombra generilo,
ke tuj donos vin nombro de 0 al iu granda nombro.
Sed eble vi nur vere bezonas nombro de 0 al 20.
Se vi uzas la modulo operatoro sur tiu giganta nombro kiu
gets generita per la hazarda nombra generilo,
vi iras preni ajn grandega valoro estas, dividu per 20,
kaj akiri la reston.
La resto povas nur esti valoro de 0 al 19.
Do, vi uzas modulon operatoro preni ĉi grandega nombro
kaj Whittle ĝin en ion iom pli signifoplena.
Mi estas sufiĉe certa, ke vi estos povis uzi ambaŭ de tiuj
ĉe iu punkto en la estonteco en CS50.
>> Do, C ankaŭ donas al ni vojon apliki aritmetika
operatoro al ununura variablo en iom pli rapida maniero.
Do, en la antaŭa glitejo, ni vidis x egalas x fojoj 5.
Ke laboris.
x foje 5 tiam gets stokitaj reen en x.
Tie estas pli mallonga maniero fari ĝin, penso, Kaj ĝi estas la sintakso x tempoj egalas 5.
Ĝi estas la sama ĝusta afero kiel dirante x egalas x fojoj 5.
Estas nur iomete mallonga vojo al fari ĝin.
Kaj kiam vi vidas kelkaj dissendo kodo aŭ vi
vidu kelkaj specimenaj kodo ke faras aferojn tiel,
nur koni kion la sintakso signifas.
Vi certe ne havas por uzi ĝin, sed se vi faros,
ĝi povus fari viajn kodo aspektas iom slicker.
Kaj sciu, ke vi povas ankaŭ uzi iun el la malsamaj telefonistoj ni jam
vidis antaŭe anstataŭ fojojn.
Vi povus diri x egalas plus 5, minuso egalas 5 fojojn, breĉo, kaj mod.
Ĉiuj de tiuj laboroj.
>> Ekzistas ankaux io ke estas tiom komuna en C
ke ni decidis rafini ke eĉ plu.
Pliigante variablon per 1 aŭ decrementing variablon per 1
estas tia komuna thing-- speciale kiam ni parolas pri cikloj iom poste
on-- ke ni decidis anstataŭ dirante ion kiel x plus egalas 1,
aŭ x egalas x plus 1, Ni eĉ mallonga enmanigis ke al x plus pli.
Do, x egalas x plus 1, x plus egalas 1, kaj x plus plus ĉiuj fari la samon.
Ili ĉiuj pliigo x por 1.
Sed tio pliigante kaj decrementing per 1
estas tiel ofta, ke ni havas plus plus kaj minus minus
kiuj nin permesas stenografio ke eĉ plu.
>> Do, ni ŝanĝi dentaĵoj por dua kaj paroli pri Bulea esprimoj.
Ĉiuj kiuj estas ankaŭ speco de fali en la totala kategorio de telefonistoj.
Sed Buleaj esprimoj, kontraste aritmetiko operatoroj,
estas uzataj por kompari valorojn.
Do, denove, ĉiu Buleaj esprimoj en C taksi al unu el du eblaj valoroj,
memori.
Vera aŭ malvera.
Tio estas la sola du valoroj kiuj Bulea variablo povas alpreni.
Ni povas uzi la rezultojn de Bulea esprimo
en multaj vojoj en programado.
Fakte, vi estos farante tion sufiĉe multe.
>> Ekzemple, ni povus decidi, bone, se iu kondiĉo estas vera,
eble mi prenu ĉi disbranĉigi malsupren mia kodo.
A kondicionalo, por tiel diri.
Ni lernos pri tiuj baldaŭ ankaŭ.
Aŭ eble, tiel longe kiel tio veras, mi volas
daŭre fari ĉi denove kaj denove kaj super.
Ciklo.
En ambaŭ kazoj, scias ke ni uzas Bulea esprimo, vera aŭ falsa,
decidi ĉu aŭ ne preni apartan vojon.
Foje kiam ni laboras kun Bulea esprimoj,
ni uzos variabloj de tipo bool.
Vi eble deklaris bool tajpita ŝanĝiĝema,
kaj vi uzos en via Bulea esprimo.
Sed vi ne ĉiam devas fari.
Kiel ĝi rezultas, en C, ĉiu ne-0 valoro estas la sama kiel diri veraj.
Se vi estis deklarita variablo de tipo Boolean,
kaj atribuis la valoro vera, tio la sama kiel deklarante entjero
kaj atribuante al ĝi la valoron 1, 2, 3, aŭ vere ajna valoro
ajn alia ol 0.
Ĉar en C, ĉiu ne-0 valoro estas vera.
0, aliflanke, estas malvera.
Tio povas veni en ĉemane poste scii,
sed nur io teni en menso.
Ni ne ĉiam devas uzi Buleaj tipo variabloj kiam ni
laboras kun Bulea esprimoj.
>> Estas du ĉefaj tipoj de Bulea esprimojn ke ni devos labori kun.
Logikaj operatoroj kaj interrilata operatoroj.
La lingvo estas Ne terure grava.
Estas vere, kiom mi kolektante ilin.
Kaj vi certe, mi kredas, rapide konscii kion rilata operatoro estas,
bazita sur kio ili estas, kiam ni paroli pri ili en dua.
Sed ne maltrankviliĝu pri nepre enmemorigi la termino logika operatoro
aŭ interrilata operatoro.
Mi nur uzas ĝin por grupo ilin en logika maniero.
>> Do, ni rigardu la tri logikaj operatoroj
ke ni vidos sufiĉe bita en programado en CS50
kaj en programado pli ĝenerale.
Logika KAJ estas vera, se kaj nur se ambaŭ operandoj estas vera.
Alie falsaj.
Kie tio signifas?
Do, ni diru ke mi tute noti en mia kodo, kie mi havas
du variabloj, x kaj y.
Kaj mi volas decidi ĉu fari ion en mia kodo
bazita sur se x estas vera kaj y estas vera.
Mi nur volas fari ĝin se Ambaux estas vera,
alie mi ne volas iri malsupren ke padon ĉar ĝi ne iras por helpi min.
Kion mi povas diri estas, se x & & y.
Ke estos logika Buleaj esprimo komparante x kaj y
kaj prenante iun padon bazita sur kio iliaj valoroj.
Do, se x estas vera kaj y estas vera bazita sur ĉi vertabelo tie,
nur tiam ni iros tiun vojon.
Se x, & & y.
Ĝi estas nur true-- la kaj estas nur vera se x estas vera kaj y estas vera.
Se ĉu tiu estas falsa, kiel ni vidas la vertabelo,
tiam ambaŭ x kaj y estas ne vera.
Kaj do, x & y & estas falsaj.
>> Logika AŬ estas vera se kaj nur se almenaŭ unu argumento estas vera.
Alie falsaj.
Tiel logika KAJ postulata ambaŭ x kaj y al esti vera.
Logika AŬ postulas x al esti vera aŭ y esti veraj aŭ ambaŭ x kaj y al esti vera.
Do, denove, ni ia trovas nin en situacio
kien ni iras al nia kodo, kaj ni atingis forkon en la vojo.
Kaj ni volas malsupreniri aparta vojo se x estas vera
aŭ y estas vera, sed ne nepre se ambaŭ estas veraj.
Sed eble se ambaŭ estas veraj.
Do se x estas vera kaj y estas vera, ni iros malsupren ke vojo.
x estas vera.
Unu el ili estas vera, ĉu ne?
Se x estas vera kaj y estas vera.
Se x estas vera, kaj y estas falsa, unu el ili estas ankoraŭ veraj.
Do, x aŭ y estas ankoraŭ vera.
Se x estas falsa, kaj y estas vera, unu el ili estas ankoraŭ veraj, ĉu ne?
y estas vera, en tiu kazo.
Do, estas vere ke x aŭ y estas vera.
Nur se x estas falsa kaj y estas malvero ni ne iros tian vojon,
ĉar nek x nek y estas vera.
Nun, se vi serĉas ĉe la ekrano nun
kaj scivolante kio tiu simbolo estas por logika AŬ,
ĝi nomiĝas la vertikala stango.
Kaj se vi rigardas vian klavaron dum minuto, kiel mi faras nun,
ĝi estas kutime ĵus super la Eniga klavo, sur plej klavaroj,
en la sama ŝlosilo kiel la backslash.
Estas ankaŭ kutime dekstra apud la rektaj krampoj.
Do, eble ĝi estas kerna ke vi ne tajpita tre multe en la pasinteco.
Sed, se vi iam faras logika komparoj,
kiel ni estos faranta multe en la kurso, estas
tuj estos utila por trovi tiun klavon kaj uzi ĝin.
Do, ĝi estas kutime en la sama ŝlosilo kiel backslash ĵus super Enter.
>> La fina logika operatoro estas NE.
Kaj NE estas bela simpla.
Ĝi inverts la valoro de ĝia argumento.
Se x estas vera, tiam ne x estas falsaj.
Se x estas malvera, tiam ne x estas vera.
Foje vi aŭdos ĉi simbolo prononcata kiel bang aŭ ekkrion
aŭ ne.
Estas preskaux cxio la samo.
En kazo vi aŭdas tion parolis kaj vi ne certas, kion tio signifas,
ĝi estas nur la ekkrion punkto, sed kelkfoje ĝi estas
nomita paro malsamaj aferoj.
Bone, tiel ke ĝi zorgi de logikaj operatoroj.
Do, ni parolu pri interrilata operatoroj.
Denove, se vi estas familiara kun ĉi aritmetiko reen en grado lernejo,
vi probable familiara kun kiel tiuj aferoj jam.
Tiuj kondutas precize kiel vi atendus.
Do malpli ol ĝi estas vera, en tiu Ekzemple, se x estas malpli ol y.
Do, se x estas 4 kaj y estas 6, x estas malpli ol y.
Tio estas vera.
Malpli ol aŭ egala al funkcias sufiĉe simile.
Se x estas 4, kaj y estas 4, tiam x estas malpli ol aŭ egala al y.
Pli granda ol. x estas pli granda ol y.
Kaj pli granda ol aŭ egala al x estas pli granda ol aŭ egala al y.
Se ĝi estas vera, tiam vi preterpasonta esprimo,
kaj vi iros malsupren ke pado survoje.
Se vi havas se x estas pli granda ol y, kaj x estas, fakte, superas y,
vi faros kion ajn estas sub tiu kondiĉo.
>> Rimarku ke ni ne havas sola karaktero por malpli ol
aŭ egala al, kiel vi povus esti konanta de matematiko lernolibroj.
Do, ni havas la malpli da de simbolo, sekvita per egala signo.
Tiel estas kiel ni reprezentas malpli ol aŭ egala al.
Kaj simile, do ni faru tion cxar pli granda ol aŭ egala al.
>> La finaj du interrilata operatoroj kiuj estas gravaj
Elprovas por egaleco kaj malegaleco.
Do, se x egalas egalas y, estas vera se x kaj y valoro estas la sama.
Se x estas 10, kaj y estas 10, tiam x egalas egalas y estas vera.
Se x estas 10 kaj y estas 11 x egalas egalas y estas ne vera.
Ni povas ankaŭ provi por malegaleco uzante ekkrion punkto aŭ bang aŭ ne,
denove.
Se x estas ne egala al y, se jen la testo ni uzas ĉi tie,
ni estus bona iri.
Do, se x ne estas egala al y, ni iros malsupren ke vojo.
>> Esti vere zorgema tie.
Estas vere komuna mistake-- kaj unu mi certe faris sufiĉe multe kiam
Mi estis akiranta started-- hazarde miskompreni
la asigno operatoro, unuopaj egaluloj, por la egaleco komparo operatoro,
duoblaj egaluloj.
Ĝi gvidos al iuj strangaj konduto en via kodo,
kaj kutime la tradukilo averti vin pri ĝi kiam vi provas
kaj kompili vian kodon, sed foje vi eble povos ŝteliri ĝin.
Ĝi ne estas nepre bona afero ke vi ŝteliras ĝin, tamen.
Ĝuste tiel se vi estas faranta neegalaĵo teston,
se vi estas kontrolanta ĉu du malsamaj variabloj havas la saman valoron
interne de ili, Fari certe uzi egalas egaluloj, kaj ne ununura egalaj.
Kaj ke vojo via programo estos havi la konduton vi intencas.
Mi Doug Lloyd kaj ĉi tiu estas CS50.