Initial commit after migrating repo and assuring the product launches
This commit is contained in:
@ -0,0 +1,191 @@
|
||||
<?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>
|
Reference in New Issue
Block a user