[MŪZIKAS ATSKAŅOŠANA]
DAGS LOIDS: Sveiki! Parunāsim par operatoriem C.
Tātad mēs jau vienu esam redzējuši, faktiski equals ir piešķiršanas
operators.
Tas ļauj mums vienkārši ievietot vērtību mainīgajā.
Tas ir piešķiršanas operators, viena vienādības zīme.
Lai varētu manipulēt un strādāt ar vērtībām un mainīgajiem C valodā,
mūsu rīcībā ir vairāki operatori, kurus varam izmantot.
Apskatīsim dažus izplatītākos, sākot ar aritmētiskajiem operatoriem.
Kā jūs varētu gaidīt, mēs varam veikt diezgan vienkāršas matemātikas
darbības C valodā.
Mēs varam saskaitīt, atņemt, reizināt un dalīt skaitļus, izmantojot
attiecīgi plusu, mīnusu, zvaigznīti un slīpsvītru.
Šeit ir dažas koda rindiņas, kurās mēs to darām.
Tātad mums ir int x vienāds ar y plus 1.
Pieņemsim, ka kaut kur augšā virs šīs koda rindas mēs teicām, ka int
y ir vienāds ar 10.
Kāda ir x vērtība pēc šīs pirmās koda rindiņas izpildes?
Tu teici 11?
Tev bija taisnība.
Kāpēc tā?
Nu, ybija 10.
Dažos es saku, ka int x ir vienāds ar 10 plus 1.
10 plus 1 ir 11.
Tātad vērtība 11 tiek saglabāta mainīgajā x.
Nav pārāk slikti, vai ne?
Kā ar šo nākamo koda rindiņu?
x ir vienāds ar x reizināts ar 5. Pirms šīs koda rindiņas
izpildīšanas x bija 11.
Tātad kāda ir x vērtība pēc šīs koda rindas?
Pagaidi.
Tātad x ir vienāds ar x reizināts ar 5.
x bija 11.
Tātad x ir vienāds ar 11 reizināts ar 5.
Tātad ja jūs teicāt 55, jums bija taisnība.
Tagad tas var būt nedaudz mulsinoši, taču, ņemot vērā veidu, kā
piešķiršana darbojas programmā C, labajā pusē esošā vērtība tiek
piešķirta vērtībai kreisajā pusē.
Tātad vispirms mēs novērtējam x reizināts ar 5.
Tātad 11 reizināts ar 5 ir 55.
Un tad mēs šo vērtību saglabājam x.
11, kas tur bija iepriekš, tagad ir pārrakstīts.
Tātad x vērtība tagad ir 55.
Cerams, ka tas ir diezgan saprotami.
, , Ja atceraties savas pamatskolas garās dalīšanas dienas , tad jūs
noteikti pagātnē esat strādājis ar vēl vienu operatoru, kuram jūs,
iespējams, neesat dzirdējis nosaukumu.
To sauc par moduļa operatoru.
Modulis dod jums atlikušo daļu, kad Jūs kopā dalāt divus skaitļus .
Tātad ja es saku, ka 13 dala ar 4, kāds ir atlikums?
Un šo vērtību aprēķinās moduļa operators.
Tātad man šeit ir koda rinda, int m ir vienāds ar 13 mod 4.
Un es šeit komentārā saku, ka m vērtība tagad ir 1.
Kāpēc es to saku?
Labi, izdariet garo sadalījumu savā galvā, ja pacietīsiet mani uz
mirkli.
Tātad man ir 4 dalīts ar 13.
4 pāriet uz 13 trīs reizes ar atlikumu 1.
Tātad būtībā viss, ko dara moduļa operators, ir tas, ka sadalot jūs
saņemat atlikumu.
Jūs varētu domāt, ka tā patiesībā nav īpaši noderīga lieta, bet
patiesībā jūs būtu pārsteigts, cik bieži šis moduļa operators var
noderēt.
Ir dažas problēmas, kas tiks atrisinātas ar CS50.
Tas ir piemērots arī tādu darbību veikšanai kā nejauši skaitļi.
Tātad, piemēram, ja jūs kādreiz esat dzirdējis par nejaušu skaitļu
ģeneratoru, tas dos jums skaitli no 0 līdz kādam milzīgam skaitlim.
Bet varbūt jums tiešām ir nepieciešams tikai skaitlis no 0 līdz 20.
Ja šim milzīgajam skaitlim, ko ģenerē nejaušo skaitļu ģenerators,
izmantojat moduļa operatoru, jūs ņemsit visu lielo vērtību, dalīsit
to ar 20 un iegūsit atlikumu.
Atlikušais var būt tikai vērtība no 0 līdz 19.
Tātad jūs izmantojat moduļa operatoru, lai ņemtu šo milzīgo skaitli
un pārvērstu to par kaut ko jēgpilnāku.
Esmu diezgan pārliecināts, ka nākotnē CS50 varēsiet izmantot abus.
Tātad C arī sniedz mums iespēju piemērot aritmētisko operatoru vienam
mainīgajam nedaudz saīsinātākā veidā.
Tātad iepriekšējā slaidā mēs redzējām, ka x ir vienāds ar x reizināts
ar 5.
Tas strādāja.
x reizināts ar 5, pēc tam tiek glabāts atpakaļ x.
Domājams, ka ir īsāks veids, kā to izdarīt, un tas ir sintakse x
reizināts ar ir vienāds ar 5.
Tas ir tieši tas pats, ja teiktu, ka x ir vienāds ar x reizināts ar 5.
Tas ir tikai nedaudz īsāks veids, kā to izdarīt.
Un, kad redzat kādu dalīšanas kodu vai koda paraugu, kas veic šādas
darbības, vienkārši atcerieties par sintakses nozīmi.
Jums tas noteikti nav jāizmanto, taču, ja to darīsit, tas var
izveidot kodu nedaudz gludāku.
Un ziniet, ka laiku vietā varat izmantot arī jebkuru no dažādajiem
operatoriem, kurus mēs jau esam redzējuši iepriekš.
Var teikt, ka x plus ir vienāds ar 5, mīnus ir vienāds ar 5,
reizināts ar, dalīts ar un mod.
Tie visi strādā.
C valodā ir arī kaut kas tik izplatīts, ka esam nolēmuši to
pilnveidot vēl vairāk.
Mainīgā palielināšana par 1 vai mainīgā samazināšana par 1 ir tik
izplatīta lieta — it īpaši, kad nedaudz vēlāk runāsim par cilpām —,
ka esam nolēmuši tā vietā, lai teiktu, piemēram, x plus ir vienāds ar
1 vai x ir vienāds x plus 1, mēs pat esam to saīsinājuši uz x plus
plus.
Tātad x ir vienāds ar x plus 1, x plus ir vienāds ar 1, un x plus
plus visi dara to pašu.
Tie visi palielina x par 1.
Bet šī palielināšana un samazināšana par 1 ir tik izplatīta, ka mums
ir plus plus un mīnus mīnus, kas ļauj to saīsināt vēl vairāk.
Tātad pārslēgsim pārnesumus uz sekundi un runāsim par Būla izteiksmēm.
Visi, kas arī ietilpst kopējā operatoru kategorijā.
Bet Būla izteiksmes, atšķirībā no aritmētiskajiem operatoriem, tiek
izmantotas vērtību salīdzināšanai.
Tātad visas Būla izteiksmes programmā C tiek novērtētas ar vienu no
divām iespējamām vērtībām, atcerēsimies.
Patiess vai nepatiess.
Šīs ir vienīgās divas vērtības, ko var pieņemt Būla mainīgais.
Būla izteiksmes rezultātus programmēšanā varam izmantot daudzos
veidos.
Patiesībā jūs to darīsiet diezgan daudz.
Piemēram, mēs varētu izlemt, ja kāds nosacījums ir patiess, varbūt es
noņemšu šo zaru savā kodā.
Nosacījums, tā teikt.
Drīzumā arī uzzināsim par tiem.
Vai varbūt, kamēr tas ir patiess, es vēlos to darīt atkal un atkal un
atkal.
Cikls.
Abos gadījumos ņemiet vērā, ka mēs izmantojam Būla izteiksmi —
patiesu vai nepatiesu, lai izlemtu, vai izvēlēties konkrētu ceļu.
Dažreiz, strādājot ar Būla izteiksmēm, mēs izmantosim Būla tipa
mainīgos.
Iespējams, esat deklarējis Būla mainīgo, un to izmantosit savā Būla
izteiksmē.
Bet jums tas ne vienmēr ir jādara.
Kā izrādās, valodā C katra vērtība, kas nav 0, ir tāpat kā teikt
patiess.
Ja esat deklarējis Būla tipa mainīgo un piešķīris tam vērtību
patiess, tas ir tas pats, kas deklarēt veselu skaitli un piešķirt tam
vērtību 1, 2, 3 vai faktiski jebkuru vērtību, kas nav 0.
Jo C valodā, katra vērtība, kas nav 0, ir patiesa.
0, no otras puses, ir nepatiesa.
Tas var noderēt, lai uzzinātu vēlāk, taču tas ir jāpatur prātā.
Strādājot ar Būla izteiksmēm, mums ne vienmēr ir jāizmanto Būla tipa
mainīgie.
Ir divi galvenie Būla izteiksmju tipi, ar kuriem mēs strādāsim.
Loģiskie operatori un relāciju operatori.
Valoda tur nav baigi svarīga.
Tas tiešām ir tikai par to, kā es tos grupēju.
Un jūs noteikti, manuprāt, ātri sapratīsit, kas ir relāciju
operators, pamatojoties uz to, kas tie ir, kad mēs par tiem tūliņ
runāsim .
Bet neuztraucieties par to, ka noteikti jāiegaumē termins loģiskais
operators vai relāciju operators.
Es to izmantoju tikai, lai tos loģiskā veidā sagrupētu.
Tātad apskatīsim trīs loģiskos operatorus, kurus mēs redzēsim diezgan
bieži programmēšanā CS50 un programmēšanā kopumā.
Loģiskais AND ir patiess tad un tikai tad, ja abi operandi ir patiesi.
Citādi tas ir nepatiesi.
Ko tas nozīmē?
Tātad pieņemsim, ka esmu savā kodā nonācis punktā, kur man ir divi
mainīgie, x un y.
Un es vēlos izlemt, vai kaut ko darīt savā kodā, pamatojoties uz to,
vai x ir patiess un y ir patiess.
Es vēlos to darīt tikai tad, ja abi ir patiesi, pretējā gadījumā es
nevēlos iet pa šo ceļu, jo tas man nepalīdzēs.
Es varu teikt, ka if x & & y.
Tā būs loģiska Būla izteiksme, kas salīdzina x un y un izvēlas
noteiktu ceļu, pamatojoties uz to vērtībām.
Tātad ja x ir patiess un y ir patiess, pamatojoties uz šo patiesības
tabulu šeit, tikai tad mēs iesim pa šo ceļu.
If x, & & y.
Tas ir tikai patiess — un ir patiess tikai tad, ja x ir patiess un y
ir patiess.
Ja kāds no tiem ir nepatiess, kā mēs redzam patiesības tabulā, tad
gan x, gan y nav patiesi.
Un tā, x & & y ir nepatiess.
Loģiskais OR ir patiess tad un tikai tad, ja ir patiess vismaz viens
operands.
Tātad loģiskajam AND vajadzīgs, lai gan x, gan y būtu patiesi.
Loģiskais OR pieprasa, lai x būtu patiess vai y būtu patiess, vai gan
x, gan y būtu patiesi.
Tātad atkal mēs atrodamies situācijā, kad mēs ejam uz savu kodu un
esam sasnieguši ceļa sazarojumu.
Un mēs vēlamies iet pa noteiktu ceļu,kurā ja x ir patiess vai y ir
patiess, bet ne obligāti, ja abi ir patiesi.
Bet, iespējams, ja abi ir patiesi.
Tātad ja x ir patiess un y ir patiess, mēs iesim pa šo ceļu.
x ir patiess.
Viens no tiem ir patiess, vai ne?
Ja x ir patiess un y ir patiess.
Ja x ir patiess un y ir nepatiess, viens no tiem joprojām ir patiess.
Tātad x vai y joprojām ir patiess.
Ja x ir nepatiess un y ir patiess, viens no tiem joprojām ir patiess,
vai ne?
y ir patiess, šajā gadījumā.
Tātad tā ir taisnība, ka x vai y ir patiesi.
Tikai tad, ja x ir nepatiess un y ir nepatiess, mēs neejam pa šo
ceļu, jo ne x, ne y nav patiesi.
Ja šobrīd skatāties uz ekrānu un domājat, ko šis simbols nozīmē
loģiskajam OR, to sauc par vertikālo joslu.
Un, ja kādu minūti skatāties uz tastatūru, kā es to daru tagad,
lielākajā daļā tastatūru tā parasti atrodas tieši virs taustiņa
Enter, uz tā paša taustiņa, kur ir reversā slīpsvītra.
Tas parasti ir arī tieši blakus kvadrātiekavām.
Tātad iespējams, tas ir taustiņš, kuru iepriekš neesat ļoti bieži
izmantojis.
Bet, ja jūs kādreiz veicat loģiskus salīdzinājumus, ko mēs šajā kursā
darīsim daudz, būs noderīgi atrast šo taustiņu un to izmantot.
Tātad tas parasti ir uz tā paša taustiņa, kur reversās slīpsvītras
taustiņš; tieši virs Enter.
Pēdējais loģiskais operators NOT.
Un NOT ir diezgan vienkāršs.
Tas apvērš sava operanda vērtību.
Ja x ir patiess, tad x nav nepatiess.
Ja x ir nepatiess, tad x nav patiess.
Dažreiz jūs dzirdēsiet, ka šis simbols tiek izrunāts kā sprādziens,
izsaukums vai nē.
Tas ir gandrīz viens un tas pats.
Ja dzirdat to sakām un neesat pārliecināts, ko tas nozīmē, tā ir
tikai izsaukuma zīme, taču dažreiz to sauc par dažādām lietām.
Labi, tātad esam tikuši galā ar loģiskajiem operatoriem.
Tātad parunāsim par relāciju operatoriem.
Atkal, ja esat iepazinies ar šo aritmētiku jau pamatskolā, jūs,
iespējams, jau zināt, kā tā darbojas.
Tie uzvedas tieši tā, kā jūs gaidāt.
Tātad šajā piemērā mazāks par ir patiess, ja x ir mazāks par y.
Tātad ja x ir 4 un y ir 6, x ir mazāks par y.
Tas ir patiess.
Mazāks par vai vienāds ar darbojas diezgan līdzīgi.
Ja x ir 4 un y ir 4, tad x ir mazāks vai vienāds ar y.
Lielāks nekā.
x ir lielāks par y. Un lielāks vai vienāds ar, x ir lielāks vai
vienāds ar y.
Ja tas ir patiess, tad jūs nodosit šo izteiksmi un dosities pa šo
ceļu.
Ja jums ir ja x ir lielāks par y, un x patiesībā ir lielāks par y,
jūs darīsit visu, kas ir pakļauts šim nosacījumam.
Ņemiet vērā, ka mums nav nevienas rakstzīmes priekš mazāks par vai
vienāds ar, kā jūs, iespējams, jau zināt no matemātikas mācību
grāmatām.
Tātad mums ir simbols mazāks par, kam seko vienādības zīme.
Tādā veidā mēs attēlojam mazāks par vai vienāds ar.
Un līdzīgi, vai mēs to darām par lielāks par vai vienāds ar.
Pēdējie divi svarīgie relāciju operatori pārbauda vienādību un
nevienādību .
Tātad ja x ir vienāds ar vienāds ar y, ir patiess, ja x un y vērtība
ir vienāda.
Ja x ir 10 un y ir 10, tad x ir vienāds ar vienāds ar y ir patiess.
Ja x ir 10 un y ir 11, x ir vienāds ar vienāds ar y nav patiess.
Mēs varam arī pārbaudīt nevienādību, izmantojot izsaukuma zīmi vai
sprādzienu vai NOT, vēlreiz.
Ja x nav vienāds ar y, ja tas ir tests, ko mēs šeit izmantojam, mēs
būtu gatavi turpināt.
Tātad ja x nav vienāds ar y, mēs iesim pa šo ceļu.
Esiet šeit patiešām uzmanīgi.
Tā ir patiešām izplatīta kļūda, ko es noteikti pieļāvu diezgan bieži,
kad sāku darbu — nejauši sajaukt piešķiršanas operatoru - viena
vienādības zīme, ar vienādības salīdzināšanas operatoru - dubulta
vienādības zīme.
Tas radīs dīvainu uzvedību jūsu kodā, un parasti kompilators jūs par
to brīdina, kad mēģināsit kompilēt kodu, taču dažreiz jūs, iespējams,
varēsit to nepamanīt.
Tomēr tas ne vienmēr ir labi, ja tu to palaid garām.
Tieši tāpēc, ja veicat nevienādības testu, ja pārbaudāt, vai diviem
dažādiem mainīgajiem ir vienāda vērtība, noteikti izmantojiet divas
vienādības zīmes, nevis vienu.
Un tādā veidā jūsu programma darbosies tā, kā jūs paredzējāt.
Es esmu Dags Loids, un šis ir CS50.