191 lines
9.7 KiB
HTML
191 lines
9.7 KiB
HTML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||
<html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" MadCap:lastBlockDepth="6" MadCap:lastHeight="94" MadCap:lastWidth="853" MadCap:disableMasterStylesheet="true" MadCap:tocPath="PBASIC Language Reference" MadCap:InPreviewMode="false" MadCap:PreloadImages="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" lang="en-us" xml:lang="en-us" MadCap:PathToHelpSystem="../../../" MadCap:HelpSystemFileName="Default.xml" MadCap:SearchType="Stem">
|
||
<head><title>Constants</title>
|
||
<link href="../../SkinSupport/MadCap.css" rel="stylesheet" />
|
||
<link href="../../Resources/Stylesheets/BSE_Help.css" rel="stylesheet" />
|
||
<script src="../../SkinSupport/MadCapAll.js" type="text/javascript">
|
||
</script>
|
||
</head>
|
||
<body>
|
||
<div class="MCBreadcrumbsBox_0"><span class="MCBreadcrumbsPrefix">You are here: </span><a class="MCBreadcrumbsLink" href="AlphaRef.htm">PBASIC Language Reference</a><span class="MCBreadcrumbsDivider"> > </span><span class="MCBreadcrumbs">Constants</span>
|
||
</div>
|
||
<h1>Constants</h1>
|
||
<div class="ImagePlusCaption">
|
||
<div class="Col2">
|
||
<p>
|
||
<img src="../../graphics/pgm_icon1.gif" border="0" alt="BS1 icon" title="BS1 icon" />
|
||
<img src="../../graphics/pgm_icon2.gif" border="0" alt="BS2 icon" title="BS2 icon" />
|
||
<img src="../../graphics/pgm_icon2e.gif" border="0" alt="BS2e icon" title="BS2e icon" />
|
||
<img src="../../graphics/pgm_icon2sx.gif" border="0" alt="BS2sx icon" title="BS2sx icon" />
|
||
<img src="../../graphics/pgm_icon2p.gif" border="0" alt="BS2p icon" title="BS2p icon" />
|
||
<img src="../../graphics/pgm_icon2pe.gif" border="0" alt="BS2pe icon" title="BS2pe icon" />
|
||
<img src="../../graphics/pgm_icon2px.gif" border="0" alt="BS2px icon" title="BS2px icon" />
|
||
</p>
|
||
</div>
|
||
<p style="text-align: right;"> </p>
|
||
<p> </p>
|
||
</div>
|
||
<p class="clear"> </p>
|
||
<p> </p>
|
||
<p class="PlainText">Suppose you’re working on a program called "Three Cheers" that flashes LEDs,
|
||
makes hooting sounds, and activates a motor that crashes cymbals together, all in
|
||
sets of three. A portion of your PBASIC program might contain something like:</p>
|
||
<p>
|
||
<img align="absmiddle" src="../../graphics/stamp_all.gif" border="0" alt="" />
|
||
</p><pre class="BScode" xml:space="preserve">
|
||
FOR counter = 1 TO 3
|
||
GOSUB Make_Cheers
|
||
NEXT
|
||
|
||
FOR counter = 1 TO 3
|
||
GOSUB Blink_LEDs
|
||
NEXT
|
||
|
||
FOR counter = 1 TO 3
|
||
GOSUB Crash_Cymbals
|
||
NEXT
|
||
</pre>
|
||
<p class="PlainText">The numbers 1 and 3 in the code above are called constants. They are constants
|
||
because, while the program is running, nothing can happen to change those numbers.
|
||
This distinguishes constants from variables, which can change while the program
|
||
is running.</p>
|
||
<p class="PlainText">PBASIC allows you to use several numbering systems. By default, it assumes that
|
||
numbers are in decimal (base 10), our everyday system of numbers. But you can also
|
||
use binary and hexadecimal (hex) numbers by identifying them with prefixes. And
|
||
PBASIC will automatically convert quoted text into the corresponding ASCII code(s).
|
||
For example:</p>
|
||
<table cellpadding="0" cellspacing="0" border="0">
|
||
<tr>
|
||
<td width="60">99</td>
|
||
<td>decimal</td>
|
||
</tr>
|
||
<tr>
|
||
<td>%1010</td>
|
||
<td>binary</td>
|
||
</tr>
|
||
<tr>
|
||
<td>$FE</td>
|
||
<td>hex</td>
|
||
</tr>
|
||
<tr>
|
||
<td>"A"</td>
|
||
<td>ASCII code for A (65)</td>
|
||
</tr>
|
||
</table>
|
||
<p> </p>
|
||
<p class="PlainText">You can assign names to constants in a similar fashion to how variables are
|
||
declared. On a BS1, it is identical to variable declarations and on the other
|
||
BASIC Stamp modelss you use the <span class="keyword_in_text">CON</span> directive. Here is the syntax:</p>
|
||
<p>
|
||
<img align="absmiddle" src="../../graphics/bs1_inline.gif" border="0" alt="" />
|
||
</p><pre class="BScode" xml:space="preserve">
|
||
SYMBOL Name = ConstantValue
|
||
</pre>
|
||
<p>
|
||
<img align="absmiddle" src="../../graphics/bs2all_inline.gif" border="0" alt="" />
|
||
</p><pre class="BScode" xml:space="preserve">
|
||
Name CON ConstantValue
|
||
</pre>
|
||
<p class="PlainText">Once created, named constants may be used in place of the numbers they
|
||
represent. For example:</p>
|
||
<p>
|
||
<img align="absmiddle" src="../../graphics/bs1_inline.gif" border="0" alt="" />
|
||
</p><pre class="BScode" xml:space="preserve">
|
||
SYMBOL Cheers = 3
|
||
|
||
SYMBOL idx = B2
|
||
|
||
Main:
|
||
FOR idx = 1 TO Cheers
|
||
GOSUB Make_Cheers
|
||
NEXT
|
||
</pre>
|
||
<p>
|
||
<img align="absmiddle" src="../../graphics/bs2all_inline.gif" border="0" alt="" />
|
||
</p><pre class="BScode" xml:space="preserve">
|
||
Cheers CON 3
|
||
|
||
idx VAR Nib
|
||
|
||
Main:
|
||
FOR idx = 1 TO Cheers
|
||
GOSUB Make_Cheers
|
||
NEXT
|
||
</pre>
|
||
<p class="PlainText">That code would work exactly the same as the previous <span class="keyword_in_text">FOR...NEXT</span> loops. The
|
||
editor software would substitute the number 3 for the constant named Cheers
|
||
throughout your program. Like variable names, labels and instructions, constant
|
||
names are not case sensitive; CHEERS, and ChEErs would all be processed as
|
||
identical to Cheers.</p>
|
||
<p class="PlainText">Refer to the <a href="ElementsStyle.htm" target="" title="" alt="" class="MCXref_0">Elements of PBASIC Style</a> for
|
||
suggested guidelines on naming constant values.</p>
|
||
<p class="PlainText">Using named constants does not increase the amount of code downloaded to the
|
||
BASIC Stamp, and it often improves the clarity of the program. Weeks after a
|
||
program is written, you may not remember what a particular number was supposed to
|
||
represent—using a name may jog your memory (or simplify the detective work needed
|
||
to figure it out).</p>
|
||
<p class="PlainText">Named constants also have another benefit. Suppose the "Three Cheers" program
|
||
had to be upgraded to "Five Cheers." In the original example you would have to
|
||
change all of the 3s to 5s. Search and replace would help, but you might
|
||
accidentally change some 3s that weren't numbers of cheers, too. However, if you
|
||
made smart use of a named constant, all you would have to do is change 3 to 5 in
|
||
one place, the constant's declaration:</p>
|
||
<p>
|
||
<img align="absmiddle" src="../../graphics/bs1_inline.gif" border="0" alt="" />
|
||
</p><pre class="BScode" xml:space="preserve">
|
||
SYMBOL Cheers = 5
|
||
</pre>
|
||
<p>
|
||
<img align="absmiddle" src="../../graphics/bs2all_inline.gif" border="0" alt="" />
|
||
</p><pre class="BScode" xml:space="preserve">
|
||
Cheers CON 5
|
||
</pre>
|
||
<p class="PlainText">Now, assuming that you used the constant cheers wherever your program needed
|
||
'the number of cheers,' your upgrade would be done.</p>
|
||
<p>
|
||
<img align="absmiddle" src="../../graphics/bs2all_inline.gif" border="0" alt="" />
|
||
</p>
|
||
<p class="PlainText">On the BS2-family you can take this idea a step further by defining constants
|
||
with expressions; groups of math and/or logic operations that the editor software
|
||
solves (evaluates) at compile time (the time right after you start the download
|
||
and before the BASIC Stamp starts running your program). For example, suppose the
|
||
"Cheers" program also controls a pump to fill glasses with champagne. Perhaps the
|
||
number of glasses to fill is always twice the number of cheers, minus 1 (another
|
||
constant):</p><pre class="BScode" xml:space="preserve">
|
||
Cheers CON 5 ' # of cheers
|
||
Glasses CON Cheers * 2 - 1 ' # of glasses
|
||
</pre>
|
||
<p class="PlainText">As you can see, one constant can be defined in terms of another. That is, the
|
||
number glasses depends on the number cheers.</p>
|
||
<div class="Col2">
|
||
<div class="MasterFoot">
|
||
<p MadCap:conditions="BSEconditions.BSEWebHelp (Primary)-INCLUDE"><a href="../../HomeTopics/HomePage.htm">Go to Welcome page</a>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="Col2">
|
||
<div class="MasterFoot">
|
||
<p style="text-align: right;"><span class="ContactInfoProjectName">BASIC Stamp Help</span> <![CDATA[ ]]><span class="ContactInfoVersion#">Version 2.5.4</span> <![CDATA[ ]]></p>
|
||
<p style="text-align: right;">Copyright © <span class="ContactInfoCompanyName">Parallax Inc.</span></p>
|
||
<p style="text-align: right;"><span class="SystemShortDate">8/8/2012</span>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<script type="text/javascript">/* <![CDATA[ */
|
||
|
||
var _gaq = _gaq || [];
|
||
_gaq.push(['_setAccount', 'UA-285614-1']);
|
||
_gaq.push(['_trackPageview']);
|
||
|
||
(function() {
|
||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||
})();
|
||
|
||
/* ]]> */</script>
|
||
<script type="text/javascript" src="../../SkinSupport/MadCapBodyEnd.js">
|
||
</script>
|
||
</body>
|
||
</html> |