220 likes | 333 Vues
This guide provides an overview of essential concepts in Visual Basic Programming, focusing on data types, constants, variables, and their scope. Topics include declarations, assignments, and type conversions, with detailed explanations of frequently used data types such as Integer, String, Boolean, and Date. The material covers both named and intrinsic constants, variable scope at project, module, and local levels, and best practices for declaring and naming variables. It emphasizes the importance of explicit declarations, the benefits of using 'Option Strict', and how structured coding improves program quality.
E N D
IS437: Spring 2006Instructor: Dr. Boris Jukic Data Types, Constants, Variables, Scope, Conversion
Learning Objectives • data types • - variables and constants • - scope & lifetime • - declaration (option explicit, option strict) • assignment • - numeric • - string • - date • some useful functions & controls • - type conversion
Frequently-used data types • integer • short 2 bytes -32,768 to +32,767 • integer 4 bytes about +/- 2 billion • long 8 bytes a very large integer number • real • decimal 16 bytes 0 to 28 digits of accuracy • single 4 bytes 38 to 45 digits of accuracy • double 8 bytes 308 to 324 digits of accuracy • Boolean 2 bytes true or false • string 2 bytes for each character up to 2 billion Unicode characters • date 8 bytes • object 4 bytes
Constants • Named constants: (programmer defined) • e.g., const pi as single = 3.1415 • const taxRate as single =0.07 • Intrinsic constants: (system provided) • e.g., Color.White • Color.Blue • Color.Red • Color.Yellow • Color.Green • ...
Structure of a VB Application solution Project (s) Form(s) Controls
Scope of variables & constants project level variables: variables declared using the Public declaration Public z as integer Public const k as integer = 15 module-level (form): variables declared using the Private declaration private y as integer private const j as integer = 5 local (sub): variables declared using the Dim declaration dim i as integer const m as short = 8 block (within a loop) For i = 0 to 3 dim k as integer … Next i
Lifetime of Variables • local: only alive during the execution of a procedure or a block of code • For temporary results/values • - form-level: alive as long as the form remains loaded (typically the whole lifetime of a project) • (namespace) project : project • If values are to be preserved after the project itself is not active • External data depositories
Declaration of Variables & Constants • “option explicit on” as default to enforce • declaration • Why is declaration a good idea? • - e.g., dim monument as integer • rebates = 345678 • …. • rebtaes = rebates+ 75 • ‘the error will be detected if declaration is mandatory • …. • local declaration • - e.g., Private Sub command1_click(…) … • dim x as integer • dim y • const MARKUP as single = 0.14 • … • End sub
Declaration of Variables & Constants • form-level declaration • where? In a declaration section of the form • private x, y, z as integer • private const rstmsg as string = “Please Reset all Values” • project-level declaration • where? It is good practice to declare them all in a single module. (show in class) • public x as integer • publicconst COMP_NAME as string = “First Trust and Bank” • publicconst MAX_BONUS as decimal = 11500
Project (s) - declare public var. & constants - utility procedures such as sort, etc. Form(s) code module Controls Structure of a VB Application solution
Choosing the variable scope • Choose the variable and constant scope as narrow as possible • minimizes computational needs of the code • Makes code more modular, divided into useful, independent components
Recommended Naming Conventions • prefix • integer • integer int • long lng • real • decimal dec • single sng • double dbl • Boolean bln • string str • date dat ScopePrefix project g module (form) m local none For example: gstrCustomerName
Assignment (numeric) • operators • + addition • - subtraction • * multiplication • / division • ^ exponentiation • \ integer division 5 \ 2 = 2 • mod modulus 5 mod 2 = 1 • e.g., a = (5 * 4) / 2
Assignment (string variable) • empty string • - e.g., dim x as string • x = ““ • text1.text = x • assign one string to another • - e.g., text2.text = text1.text • string concatenation using “&” • - e.g., dim firstname, lastname as string • firstname = “John” • lastname = “Smith” • label1.text = firstname & “ “ & lastname • concatenate with itself • - e.g., dim name as string • name = “Roberts” • name = name & “ Rogers” John Smith
Assignment (Date) • e.g., dim date1, date2 as Date • date2 = #3-6-98 2:15# • date2 = #March 6, 1998 2:15 pm# • date2 = #14:15# • date1 = “1/20/97” with option strict off • date1 = “2:12 am” with option strict off
Option Strict • “Option Strict Off” is the default setting. • Change the setting by typing “Option Strict On” at the top of the code window. • With “Option Strict On”, the system strictly enforces data type checking. • Data conversion from “wider” to “narrower” data type is not allowed • Conversion between string and numeric types is not allowed • This prevent many hard to find bugs and execution errors
Option Strict • With “Option Strict Off”, it is okay to write: Dim s as string, i as single s = “34” i = s / 2 • With “Option Strict On”, the code above will generate an error message: Option Strict On disallows implicit conversion from string to single.
Widening & narrowing Widening: store a variable value into another variable with greater precision or magnitude Narrowing: the reverse Dim i as integer Dim j as long i = 35 j = i Widening
Narrowing (Option Strict Off) Dim i As Integer ‘4-bytes Dim j As Long ‘8-bytes j = 3000000000 i = j The above code will generate a runtime exception, but not a warning in design time.
Data type conversion functions Function Convert its argument to Dim x as integer Dim s as string x = 5 s = CStr(x) CStr string CInt integer CLng long CSng single CDbl double CDec decimal CDate date … s = “5” Dim d as date Dim s as string s = “01/15/2003” d = CDate(s) d = #01/15/2002#