Hallo, en welkom terug. In deze lezing wil ik het hebben over constante snaren.
We weten dat letterlijke tekenreeksen of een tekenreeksconstante tussen dubbele aanhalingstekens staan.
Maar hoe zit het met de variabele zelf. Hoe zorg je ervoor dat de
variabele die waarde nooit kan veranderen?
Dit wordt een constante genoemd. Dus een constante string
is soms nodig in je programma waar
je niet wilt dat je waarden van je variabelen ooit veranderen.
Dus als we bijvoorbeeld een omtrek van een berekening maken,
doen we 3. 14159 keer de diameter.
3. 14159 is een constante. Het verandert nooit.
Het vertegenwoordigt pi.
Het zou dus heel fijn zijn als we in plaats van dat magische getal
een variabele zouden kunnen gebruiken en ervoor zorgen dat die variabele nooit verandert.
Er zijn dus goede redenen
om een symbolische constante te gebruiken in plaats van telkens het getal in te typen.
Ten eerste zegt een naam veel meer dan een getal.
Schuld is gelijk aan 0. 015 keer huiswaarde is
veel minder betekenisvol dan verschuldigd is gelijk aan belastingtarief maal waarde.
We willen dus variabelenamen hebben die getallen
vertegenwoordigen die nooit veranderen.
Als je een lang programma doorleest,
is de betekenis van de tweede visieversie een stuk duidelijker.
Het is een stuk eenvoudiger om naar die code te kijken en die 0 te begrijpen. 015 staat voor het belastingtarief.
Stel dat je een constante op verschillende plaatsen hebt gebruikt
en het wordt nodig om de waarde
ervan te veranderen, dan zou je die waarde overal in het programma moeten gaan
wijzigen in plaats van alleen op één plek te veranderen waar je die constante definieert.
Ik heb hier eerder over gesproken toen ik de term magische getallen gebruikte.
Daar wordt hier naar verwezen.
Telkens wanneer je een getal ziet dat in een programma wordt gebruikt, wordt het niet in
een variabele opgeslagen. Het is meestal het beste om dat getal aan te maken en in een constante te zetten.
Want als je het dan meerdere keren gebruikt en die
variabele verandert, hoef je het maar één
keer te veranderen. Je hoeft het niet overal te veranderen waar je het gebruikt.
Dus vermijd magische getallen, gebruik constanten.
Een manier waarop u een constante in c kunt definiëren, is
om de preprocessor-richtlijn te definiëren.
Met deze preprocessor-richtlijn kun je constanten definiëren, en ik
heb het in een paar programma's gebruikt. Ik probeer het nu uit te leggen.
Dus als je een belastingtarief wilde doen en het was
een constante, dan zou je kunnen zeggen: definiëren met het hekje ervoor.
We weten dat het een preprocessor-richtlijn is vanwege het hekje, en dan
zouden we de naam zeggen en dan de waarde.
Wanneer uw programma is gecompileerd, wordt de waarde 0. 015 wordt overal vervangen
waar u het belastingtarief hebt gebruikt, net als een
variabele, maar het is eigenlijk geen variabele.
U kunt daar geen andere waarden aan toekennen.
Als het een variabele was, zou je er gegevens
aan kunnen toewijzen, maar in dit geval niet omdat het een preprocessor is.
Dus de preprocessor-richtlijn zegt dat je geen gegevens kunt toewijzen en
je specificeert dat met de definitie.
Let dus op de syntaxis hiervoor. U hebt het hekje gevolgd door een gedefinieerd trefwoord.
En daarna heb je je naam.
We gebruiken geen toewijzingsoperatoren.
We hebben alleen onze naam en dan de spatie en dan de waarde.
Dus om een waarde aan die definitie toe te kennen, heb je alleen een spatie nodig.
Er staat geen puntkomma aan het einde. Het is geen verklaring. Het is heel specifiek.
Dus wat hier gebeurt, is dat er vervanging van de compileertijd
plaatsvindt voor deze preprocessors. De preprocessor wordt uitgevoerd voordat de compiler het onthoudt.
Preprocessor gaat draaien en deze gedefinieerde carry-roots zullen zien. En dan overal waar het een belastingtarief ziet,
het gaat gewoon 0 invullen. 015 voor de compiler.
Gedefinieerde uitspraken kunnen overal in het programma voorkomen.
Er bestaat niet zoiets als een lokale definitie. Als je eenmaal een definitie hebt, kan
iedereen die gebruiken.
Nu is de beste praktijk of conventie om de gedefinieerde instructies
aan het begin van het programma of
in een include-bestand te plaatsen als u in meer
dan één bronbestand wilt delen, maar u hoeft dat niet te doen.
Omdat het op de preprocessor
draait, heeft het geen bereik, geen lokaal of globaal.
Je kunt het gewoon overal neerzetten. En overal in het programma kun je het
zien, zelfs als het wordt gebruikt voordat het is gedefinieerd.
Gedefinieerde instructies zijn ook erg goed omdat ze je programma's draagbaarder maken.
Soms kun je een gedefinieerde instructie gebruiken en deze relateren aan een bepaalde computer waarop je draait
wanneer het programma draait, en het zal diezelfde waarde krijgen.
De gedefinieerde instructie kan ook worden gebruikt voor tekens en tekenreeksconstanten, niet alleen
voor getallen dus. Als we zoiets zouden willen doen, volkomen terecht.
U plaatst de afzonderlijke tekens gewoon in een enkel aanhalingsteken.
En als je echt een hele letterlijke string wilt plaatsen, plaats
je het gewoon tussen dubbele aanhalingstekens. En dat is wat deze oeps doet.
Een andere manier om constanten te creëren en te zien,
is een recenter mechanisme. C90 heeft in feite een andere
manier toegevoegd, namelijk de constante modifier.
U kunt het constante sleutelwoord gebruiken om een declaratie voor een variabele om te zetten in een declaratie voor een constante.
En hierdoor kun je die variabele nooit meer veranderen. Dus je hoeft alleen maar const te zeggen
en dan de naam van het gegevenstype en dan de naam van de variabele.
En wat dit in dit voorbeeld doet, maakt van maanden nu een symbolische constante voor 12.
We noemen het geen variabele omdat een variabele kan
veranderen, daarom heet het variabel.
Je hebt constanten of variabelen
en constant in maanden is geen variabele, verandert niet.
Constant maakt van maanden een alleen-lezen waarde.
U kunt maanden weergeven en gebruiken in berekeningen. U kunt de waarde van maanden niet wijzigen.
Constanten zijn dus belangrijk als u niet wilt dat gegevens veranderen,
en ze kunnen ook magische getallen vervangen.
Const is een nieuwere benadering en is flexibeler dan het gebruik van definiëren.
Hiermee kunt u een type declareren.
Het heeft ook betere controle over welke delen
van een programma de constante kunnen gebruiken.
Je zou dus constant moeten gebruiken wanneer je maar kunt, maar je zult zien
dat veel programma's de definitie gebruiken omdat dit het eerste mechanisme was.
Er is ook een derde manier waarop je een constante kunt maken, en
dat is door de enum te gebruiken. Vergeet niet dat we het over opsommingen hadden.
Enums zijn een manier om uw eigen type
variabele te maken en er zijn alleen bepaalde gegevens aan gekoppeld. U kunt de waarde van enums niet wijzigen.
Zodra u een opsomming definieert, moet deze die waarden hebben.
Het kan verschillende waarden hebben, maar het is
nog steeds een soort manier om een symbolische constante te creëren, geen volledige manier, maar een soort manier.
Met const kun je ook een tekenreeks initialiseren en deze als een constante declareren, dat
is een goede manier om standaardberichten te verwerken.
Dus als je zegt dat const char-bericht gelijk is aan het einde van de wereld is
nabij, zal dat het bericht als een constante declareren en is het beschermd tegen
ooit expliciet worden gewijzigd in je programma. Elke poging om het bericht te wijzigen door een
str-kopie uit te voeren, resulteert in een foutmelding van de compiler.
En nu kunt u dit gebruiken voor een standaardbericht dat in verschillende
delen van het programma als uitvoer kan worden weergegeven.
De techniek voor het definiëren van standaardberichten is vooral handig als ze op
veel plaatsen worden gebruikt, zoals ik al zei.
Voorkomt onbedoelde wijziging van dergelijke constanten in andere delen van het programma,
net als magische getallen.
Dus constanten die u in uw programma
wilt gebruiken, twee manieren om ze in wezen te gebruiken, met behulp
van de definitie en met behulp van het constante trefwoord.
Gelieve hier aandacht aan te besteden.
Je ziet het misschien in enkele toekomstige voorbeelden.
Dank u.