220 likes | 340 Views
IS437: Fall 2004 Instructor: 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
E N D
IS437: Fall 2004Instructor: 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#