260 likes | 497 Views
Variables and Conditionals. Hal Helms halhelms.com. What we'll cover. Basics of variables Types of variables (strings, arrays, etc.) Scopes of variables (session, application, etc.) Conditionals (working with boolean variables). Basics. Variables are name/value pairs
E N D
Variables and Conditionals Hal Helms halhelms.com
What we'll cover • Basics of variables • Types of variables (strings, arrays, etc.) • Scopes of variables (session, application, etc.) • Conditionals (working with boolean variables)
Basics • Variables are name/value pairs • Variables permit our programs to work with values that can't be known at design time or that may change from their original value • customerName • yourStreetAddress • currentUser
Basics • Variables give context and constraint to values • The value "42" is meaningless apart from a context, usually provided by variable name (e.g. meaningOfLife) • Data typing constrains variables to hold meaningful values • isNumeric() returns a boolean value • randRange() returns an integer value
Strong data typing • Some languages employ strong typing, requiring the programmer to declare a variable's data type prior to using it • String myName; • int myAge; • Company myEmployer; • Examples • Java • C#
Weak data typing • Other languages use weak typing, in which the language implicitly determines the data type of a variable • Examples • Smalltalk • ColdFusion • Weakly typed languages are not untyped languages!
Data typing • Different data types hold different types of values • string • int • structure • Car "Visualize whirled peas" 1024 name "Hal Helms" ACMmember true numberOfChildren 1
ColdFusion data types • string • numeric • query • list (string) • structure • array • object • boolean • date • GUID • UUID
Complex variable type: query • query • series of 1 or more rows with column or field values for each row id price description 100 29.99 Widget 200 75.00 Framus, left-handed products • addressable • products.price — refers to current row • products.price[2] — specifies row
Complex variable type: structure • structure • collection of name/value pairs grouped around a central idea or item teacher Hal Helms Ben Edwards maxStudents 10 isActive true javaClass • addressable • javaClass.maxStudents • javaClass['maxStudents']
Complex variable type: 1-d array • one-dimensional array • collection of ordered values • resembles a single row of a spreadsheet [1] [2] [3] Ben Edwards Hal Helms Sean Corfield onedee • addressable • onedee[2]
Complex variable type: 2-d array • two-dimensional array • collection of ordered values • resembles multiple rows of a spreadsheet [1] [2] [3] [1] 72 68 84 69 62 69 [2] • addressable • twodee[1][3] twodee
Complex variable type: object • Objects are fundamentally different from all other data types in that they encapsulate both data and behavior • Objects allow us to create scale models of the world under consideration • Car • getMake(): string • addGas(gallons): void • accelerate(): void
Quiz time! • For each of the following,explain which data type you'd use and why • final test scores for all students • collection of Student objects • lyrics to "Memories" (thank heavens for garbage collection!) • number of students in a class • information from LDAP server • composer's date born, date died, nationality, typical genre • an hourly employee
Understanding scopes • A variable typically has a lifespan and a scope • lifespan: how long the system keeps a reference to a variable • scope: location from which variable is visible • In ColdFusion, a variable's scope and lifespan are bound together in a single attribute, scope, which is prefixed to the variable name
Quiz time! • For each of the following,explain which scope you'd use and why • global "constants" such as datasource name • query meant to be created and used on same page • a CFC, currentUser, that encapsulates data and behavior for the currently logged in user • a cookie crumb array • a userID meant to identify the user between visits • a custom tag "reaching into" the base template to read or set a variable on that page
Conditionals • All conditionals involve carrying out some instructions based on whether an expression evaluates to true
<cfif> <cfif form.betNumber EQ winningNumber> <cflocation url="index.cfm?fuseaction=home.winner" /> </cfif>
<cfelse> <cfif form.betNumber EQ winningNumber> <cflocation url="index.cfm?fuseaction=home.winner" /> <cfelse> <cflocation url="index.cfm?fuseaction=home.loser" /> </cfif>
<cfelseif> <cfif form.betNumber EQ winningNumber> <cflocation url="index.cfm?fuseaction=home.winner" /> <cfelseif form.betNumber LT 0> <cflocation url="index.cfm?fuseaction=home.cheater" /> <cfelse> <cflocation url="index.cfm?fuseaction=home.loser" /> </cfif>
iif() <cfset randomBoolean = iif(RandRange(0,1), true, false) />
switch/case <cfswitch expression="#attributes.fuseaction#"> <cfcase value="home"> <cfinclude template="dspHome.cfm" /> </cfcase> <cfdefaultcase> <cfinclude template="qryMenuItems.cfm" /> <cfinclude template="dspMenu.cfm" /> </cfdefaultcase> </cfswitch>
Conclusion • Variables are the basis of all programs • Data typing, although mostly hidden in ColdFusion, is very important—particularly in OO languages • Do experiment with "complex" data types; you'll find they make your code easier to write and maintain • Conditionals allow us to execute commands based on the result of some run time boolean value