Logistics
- Roll
- Questions?, comments? wonderings?
Unit I
Hopefully, you created the project for the Unit I practice. Do you have any questions or issues with the assignment? [ Addresss any responses ]
Unit II Overview
Unit II introduces the common data and operation parts of programming. The data parts are literals, variables, and form element properties. They will mostly be numeric or text string (and some Boolean—True & False). The operations for numbers include addition, subtraction, multiplication, division, exponentiation, & modulus determination. The main operation for strings is concatenation (putting strings together to make another string).
Unit II also addresses the basic actions of programming—input, output, and process (typically using the assignment statement).
Once you become familiar with data, operations, and the three basic actions programming is just a manner of putting them together appropriately. A key idea is the concept of variables. Please review my background information on variables to provide a good understanding of variables from a computer science perspective.
I've noted before that the goal of computer programs is to produce some needed information or to oversee some activity. Our goal is in this program is to oversee the activity of producing a number of bits of information.
Actions
There are essentially three actions that computers can do. The can accept input (typically from some user), produce output (again, often to a user), or they can manipulate data (often input from the user).
Data input
Input from the user in Visual Basic is accepted through the use of an InputBox()
in our code. We indicate what we wish the user to enter, e.g., InputBox("Name?")
and the inputbox function shows a pop-up window requesting the information which allows the user to type in the desired information.
Alternatively, we can get input through the use of form controls, mostly the text box control. The user types something in a textbox and we write code that gets a copy of what was typed in the textbox.
Just getting the input doesn't accomplish much, we need to do something with it. That is addressed below.
Data manipulation (assignment statement)
Manipulating or process of data typically happens via the assignment statement. An assignment statement has the following form:
memoryLocation = expression
The assignment statement is basically two actions. First the computer has to determine the value for the expression which can be any "legal" combination of literals, variables, and operations on (pairs of) variables and functions. Once the value is determined the second action can occur—it is copied into/stored in the memoryLocation for later use.
We typically do not read the assignment statement using the word "equals". Rather we use "becomes" or "takes the value of" or other similar word/phrase. An example shows why. We will often use code similar to count = count + 1
. Clearly count
cannot be "equal to" count + 1
. I may forget and use "equals" sometimes but it is really important that you know, understand, and think correctly about the action of the assignment statement. It is "the" most fundamental action in programming.
One difficulty in thinking about assignment statements is the fact that variables can appear on both sides of the assignment operator (the equal sign). When we see a variable on the right-hand side of the equal sign, we should think of it as a value. When we see a variable on the left-hand side of the equal sign, we should think of it as a storage location. For example in the statement above (count = count + 1
) we should interpret count on the right side as telling the computer to find the location called count and place its value here. And, for count on the left side as telling the computer, once you have determined a value, put a copy of it in the location called count.
I think of variables as being names on scratch paper that I either go look at to see what value is there (variable to the right of the equal sign) or a place where I erase or cross out the value that is there and place a new value (variable to the left of the equal sign). (I suspect that may be a little confusing.) Any questions/wonderings?
Output
The third kind of action is output. In Visual Basic, output typically occurs through the use of a message box (a pop up window) or by placing information in some control on a form (e.g., in a text box). For both these approaches the output will be a "string". The string value to be reported/output can be stored in a string variable or constructed as part of the output action. If the value is stored in a variable, an assignment statement (discussed above) will be used. If the value is constructed as part of the output action, it will be constructed following the rules used in making assignments (discussed below).
Output via a message box is similar to using the input box. You just indicate the value and ask the message box object to show it, i.e.,
MessageBox.show(stringVariable)
If you wish to construct the output value it will appear as something like
MessageBox.show("This string will be displayed in the message box")
or
MessageBox.show("The correct answer is " & answer.ToString)
The "stringVariable" shown in the first chunk of code would require constructing the value before asking the message box to show it. Constructing string values can be much more involved than shown here but would be essentially the same whether you do it before assigning the value to a variable or by just including the construction as the output occurs.
Output via a text box is much the same as the assignment, i.e.,
txtVariable.Text = stringVariable
If you wish to construct the output value it will appear as something like one of the following.
txtVariable.Text = "This string will be displayed in the message box"
or
txtVariable.Text = "The correct answer is " & answer.ToString
Variables and Expressions
Variables will be defined by the programmer (typically) with a Dim
statement which will provide the name of variable and the kind of data that it can store. Properties belong to the form or form element and they are defined by the language. You can identify them by looking at the property list of a form or a control. A common property that can receive a value is the .Text
property of text boxes and other controls. Expressions are combinations of literals, variables, functions, control properties, and operators. The declaration and assignment statements below illustrate these ideas.
Remember, your job is to understand this stuff and to ask questions when you don't understand. Questions? Wonderings? Comments?
Dim intVal As Integer 'declare a variable to store whole numbers Dim fracVal As Double 'declare a variable to store a number with a fractional part Dim strVal As String 'declare a variable to store letters, digits, & special characters 'literals as the expression intVal = 1 fracVal = 1.5 strVal = "1" 'literals and operators intVal = 10 - 2 * 5 ' 0 is stored intVal = 10 / 5 + 2 ' 4 is stored Do you know why? intVal = 10 / (5 + 2) ' 1 is stored Do you know why? intVal = 10 ^ (1/2) ' 3 is stored Do you know why? intVal = 10 Mod 3 ' 1 is stored Do you know why? strVal = "two" + "2" ' two2 is stored Do you know why?
The computer has rules for the order in which the operators are applied:
- parentheses first
- exponentiation next
- multiplication and division next
- modulus next
- addition and subtraction next
If you have a unary minus or plus in an expression (e.g., -5 + 7
) it will get applied before any of the other operations. You will need to be sure you understand how expressions get evaluated.
Variables could occur in any of the places we had literals in the examples above. A similar thing happens. The values stored in the variables are looked up and placed where the variable name occurs. Then the expression is evaluated as if the values were literals.
Questions? Wonderings? Comments?
Input data and assignment
There are essentially two ways to accept input (get data from the user). They can type data into a text box or they can enter data via an InputBox()
. Both are shown below.
- Text box data input
When a user types something in a text box, they change the value of the box's Text property. Your code will need to get a copy of that value. The following code stores/saves a "string" or text value from a text box named
txtInput1
.Dim strVal as String strVal = txtInput1.Text
VB will automatically attempt to convert whatever is in the text box to a number when you assign the
.Text
value to a numeric variable. I prefer (but sometimes forget) to use theVal()
function to explicitly make the change and remind me of what is happening. The following code stores/saves/copies a fractional numeric value typed into a text box. (I'm assuming the same text box.)Dim fracVal as Double fracVal = Val(txtInput1.Text)
The following code stores/saves/copies an integer numeric value typed into a text box. (I'm assuming the same text box.) Note: the value is rounded when it is converted.
Dim intVal as Integer intVal = Val(txtInput1.Text)
- InputBox data input
You have probably seen input boxes before. The following code stores/saves a "string" or text value provided via a VB input box. The text in the quotes indicates the value being asked for.
Dim name as String name = InputBox("Enter your name")
When the box shows up on the screen you type something and hit the button and the data gets stored in the variable.
If you wanted to get numeric input the code would look something like the following:
Dim number as Integer number = Val(InputBox("Enter your name"))
Questions? Wonderings? Comments?
Functions
You are probably familiar with function from your use of calculators. For instance, most calculators have a square root function. Many have other functions. Calculator functions perform set of calculations to determine a value and then return that value. VB has a lot of functions. (You can look them up if you want.) I think the practice exercises (and your project) will use many of the following (but perhaps not many others).
Functions return values. When you see a function name you should think of it as a value. You will need to understand what that value is and what part the parameters used in the function call (inside the parentheses) play in determining that value.
Rnd()
Generates a "pseudo random" number in the range [0...1). The value generated will be >= 0 and < 1. Usually, you will have to perform some arithmetic manipulation of the value to get a useful number. What tasks might we do using the
Rnd()
function? Questions? Wonderings? Comments?Fix()
Returns the value with any fractional part removed.
Fix(5.2)
produces 5 andFix(-5.2)
produces -5. For what tasks might theFix()
function be useful? Questions? Wonderings? Comments?Ceiling()
Returns the next greater integer, e.g.,
Ceiling(7.1)
produces 8. What tasks might we do using theCeiling()
function? Questions? Wonderings? Comments?Floor()
Returns the next smaller integer, e.g.,
Floor(7.999)
produces 7. For what tasks might theFloor()
function be useful? Questions? Wonderings? Comments?Math.PI
Returns the value used by the computer for the number pi. When might we use the
PI
constant? Questions? Wonderings? Comments?Length
(actually a property, not a function, but used similarly to string functions)Provides the number of items in a thing. Strings have a length—the number of characters contained in the string. A key idea with length is that it tells the number of things but not the end position (at least not directly). For examples, the string "Hello there!" contains 12 characters. The first character is "H" and it occurs in position 0 of the string. If were were to try to get the character in position 12 character of that string, we would have an error. Keep in mind that the 1st character is in position 0 and the last character is in position
Length - 1
. What tasks might we do with theLength
property? (FYI, the is also a length functionLen(_)
.) Questions? Wonderings? Comments?Substring(_,_)
Produces/returns a copy of a portion of a string. For example,
("Hello World!").Substring(3, 6)
returnslo Wor
. The copying begins in location 3 (remember, the first location is numbered 0) and includes 6 characters. For what tasks might theSubstring()
function be useful? Questions? Wonderings? Comments?Be aware that
Substring(_)
can be used with only one parameter. In this case the parameter indicates the starting position of the copy operation and the string is copied from that starting position to the end of the string.IndexOf(_)
Examines a string to see if it contains the indicated value. For example,
("Hello World!").IndexOf("W")
returns6
, the starting location of the string "W".("Hello World!").IndexOf("lo")
would return3
, the "starting" location of the string "lo".("Hello World!").IndexOf("H")
would return0
.("Hello World!").IndexOf("wo")
would return-1
. Upper/lower case matters and if the target string is not found, the function returns -1. For what tasks might theIndexOf()
function be useful? Questions? Wonderings? Comments?
Next Time
- work on Unit II learning activity
- Unit I Comp.Demo
- Questions? Wonderings? Comments?