ࡱ>  ARbjbj .GH]R R 8-4a|9&N !tP"<8888888A;=d8"ZN ""8g8((("8("8((6^z8a%̏J#v788097G>`&zG>,z8G>z80""("""""88("""9""""G>"""""""""R [: Variables and Data Representation You will recall that a computer program is a set of instructions that tell a computer how to transform a given set of input into a specific output. Any program, procedural, event driven or object oriented has the same three components: input, processing and output. Data must be received via a keyboard, a mouse, a disk drive or some other input device and then stored and manipulated in the computers memory. Variables A variable is an area in memory where a particular piece of data is stored. Imagine that the computers memory is a set of mailboxes designed to store a single piece of data. Each mailbox represents a variable. This analogy is frequently used to explain the concept of a variable to beginning programmers. I think its a little simplistic but Each variable has a name, physical size and data type: name The word programmers use to refer to the piece of data. In our mailbox analogy, this is the name on the mailbox. size The number of bits set aside or allocated for the storage of the piece of data. The amount of memory in a computer is fixed and addresses are numbered numerically. Consequently, each variable is allocated a fixed amount of space when the programmer declares his/her intention to use it. Remember that each mailbox stores exactly 1 piece of data. That means that we could use mailbox storage space more efficiently if we had: tiny postcard-size mailboxes, small letter-size mailboxes, medium magazine-size mailboxes and large package-size mailboxes. data type The kind of data that the variable can contain. The computer can store all kinds of different data: characters, sets of characters or strings, whole numbers or integers, real numbers or floating point numbers, true or false values or booleans to name a few. Postcards and only postcards get stored in our tiny mailboxes. Postcards cannot be stored in small, medium or large mailboxes. A letter cannot be shoved into tiny mailboxes even if it is tiny and might fit. Variables are stored in the computers memory. Memory is composed of digital electronic circuits. Each circuit has 2 states on and off. That means that storing data in a variable involves encoding or representing that data in a series of circuits that can be either on or off. No matter what the data type of the variable is, the only way to store the data is by combining the ons and offs in some understandable way. As you might imagine, the encoding schemes can be pretty complex. Several problems can arise for programmers that are a direct result of the way in each type of data is represented in memory. Representing Unsigned Integers It is relatively easy to understand how whole numbers or integers are represented in the computers digital electronic memory. Restricting the discussion to positive numbers or unsigned numbers makes it even easier. Lets start there. Remember that the circuits that make up memory have exactly 2 states on and off. We could use a 0 to represent off and a 1 to represent on. You may even have noticed that the power switch on one of your electronic devices at home is labeled with 0 and 1 rather than the word power or on/off. The set of digits 1001 means that there are 4 circuits and that the first one is one, the next 2 are off and the last one is on. Seems easy enough. Right? 1001 is an example of a binary or base 2 number. Each binary digit or bit can have one of 2 values, 0 or 1. The binary number 1001 is equivalent to 9. It gets its value from the sum of the positional values of each bit. The right most position has a value of 1 or 20 . The next position to the right has a value of 2 or 21. The position to the right of that has a value of 4 or 22 and so on. The decimal number system works exactly the same way, but you probably dont remember talking about it in 2nd or 3rd grade math! 100110 = (1 * 1) + (0 * 10) + (0 * 100) + (1 * 1000) 10012 = (1 * 1) + (0 * 2) + (0 * 4) + (1 * 8) = 910 The chart below shows the value of each position in an 8 bit binary number as well as several numbers represented in decimal and binary notation. Value of Each Position2726252423222120In Base 2 Exponential Notation1286432168421In Decimal NotationBinary ExamplesDecimal Equivalent11000111128 + 64 + 4 + 2 + 1 = 1990001010116 + 4 + 1 = 2110101000128 + 32 + 8 = 168 Now Its Your Turn Convert each of the following decimal integers into its 8 bit binary equivalent. 5 = ? 13 = ? 27 = ? 31 =? 63 = ? Convert each of the following unsigned binary integers into its decimal equivalent. 00010011 = ? 00111100 = ? 00001111 = ? 01111111 = ? 01010101 = ?r Remember our discussion of variables? I said that each variable had a size or a specific number of circuits that are assigned to store that data. Assume that I have a variable that has been allocated 8 circuits or 8 bits in memory. The largest unsigned binary number that can be represented in 8 bits is 11111111 or 255. That means that a programmer cant try to put 256 in that variable. It just plain wont fit! Some of you will, no doubt, want to know what happens if you try to do it anyway. 256 will overflow the 8 bits allocated to the variable. Has your computer ever displayed an error message containing the word overflow? Some programming languages arent user friendly enough to display an error message and cause the program to terminate. C++, for example, will do its best to try to shove 256 in an 8 bit variable if a programmer tells it to. Displaying the value of the variable on the screen will produce very unexpected results. In order to understand why the number on the screen is negative, you need to understand the representation of signed integers and binary addition. Representing Signed Integers  1 + -1 should equal 0, right? The 8 bit binary representation of 1 should be the binary number that produces 000000000 when added to 00000001. This problem is a little difficult to solve without knowing how to add binary numbers. 12 + 12 doesnt equal 2 because 2 isnt a binary digit. But 102 is the same thing as 210. You write a 0 in the right most position, carry the 1 into the next place to the left and then add that column of number. 0 + 0 + the 1 that you carried in the previous step is 1. 1 is a valid binary digit so you write the 1 in the 2nd column from the right and repeat the process. As luck would have it, all of the other binary digits are 0 and 0 + 0 is still 0, even in binary addition! The examples below illustrate 11 + 7 = 18, 23 + 37 = 60 and 1 + -1 = 0 respectively.  Now Its Your Turn Add each of the following pairs of 8 bit binary numbers. 00010101 + 00001101 = ? 00111110 + 00101001 = ? 00011111 + 00000001 = ? 01010101 + 00111111 = ? 00000001 + 11111111 = ? -110 is represented as 111111112. The left most bit is referred to as the sign bit. The binary representation of a negative number has a 1 in the sign bit. Positive numbers have a 0 in the sign bit. Because one bit of the 8 bits is used to record the sign of the number, only 7 bits can be used to store the value of the number. That means that the largest positive number that can be stored in an 8 bit variable is 01111111 and the smallest negative number that can be stored in the same variable is 10000000. 011111112 is 127 but what decimal number is represented by 10000000? You might guess that 100000002 is 0 but you would be wrong. Perhaps you werent tempted to make that assumption because you already noticed that 1 is not 100000012. The notation used for representing negative integers is called 2s complement. To convert 1 to its binary representation using 2s complement: Convert the absolute value of 1 to its binary representation Flip each of the bits in the number from step 1 to the opposite binary digit. Complement means opposite. Add 1 to the result from step 2. The result from step 3 is the 2s complement representation of 1. This process isnt intuitive but with practice you can become adept at representing negative numbers using 2s complement. It is important to remember that 2s complement representation allows the computer to add positive and negative integers correctly. Its not pretty but it works! Now Its Your Turn Convert each of the following decimal integers into its 8 bit signed binary equivalent. -3 = ? -18 = ? -25 = ? You can use a very similar process to determine the absolute value of a binary number that you know is negative. You know that 100000002 is the smallest negative number that can be represented in 8 bits but dont know what its decimal equivalent is. To determine the absolute value of the smallest negative number that can be represented in 8 bits: Start with the binary representation of the negative number. Flip each of the bits. Add 1. The result is the binary representation of the absolute value of the original number. In this case its 128. 128 is the decimal equivalent of the original signed binary number. It may seem curious that the range of signed integers that can be represented in 8 bits is 128 through + 127. Doesnt 128 through +128 seems more reasonable? After all, shouldnt there be an equal number of positive and negative integers? Ah, but youre forgetting that 0, which is a positive number, doesnt have a complement. The 128 positive numbers that can be represented in 8 bits are 0 through 127. The 128 negative numbers that can be represented are 1 through 128. Now Its Your Turn Convert each of the following signed binary numbers into its decimal equivalent. 11001000 = ? 10111101 = ? 11111110 = I started this discussion by wondering out loud about what would happen when you tried to put a number that is too large into a variable. The illustration starts with the binary representation of 127, the largest positive number that can be represented in an 8 bit signed integer, and adds 1. The resulting binary number looks OK, until you recall that the left most bit is the sign bit. Representing a bigger number causes the value to overflow into the sign bit. Some programming languages display an error message when an overflow occurs. Other programming languages, most notably C and C++, interpret the pattern of bits that result as an 8 bit signed integer and use 128 for the value in the variable with no error or warning. This behavior can result in some very strange output! Many programming languages have a variety of data types that can be used to store integers of different sizes to deal with the overflow problem. Java has 4 integer data types: an 8 bit byte, a 16 bit short, a 32 bit integer and a 64 bit long. As a programmer, it is your responsibility to know the range of values that can be stored in each integer data type and how your programs will respond when you exceed this range. Knowing something about the underlying representation of integer data makes this easier to understand. Representing Integers in Hexadecimal Notation A 64 bit string of 1s and 0s is a very unwieldy number. For that reason, hexadecimal notation, or hex, is often used rather than binary notation when representing large integers. When Windows displays the general protection fault error message, for example, the problem address is displayed in hex. Hexadecimal numbers use base 16. That means that 16 possible digits are used and each place value is a power of 16. 0 through 9 are used for the first 10 digits. A through F are used for digits with the value of 1010 through 1510 respectively. Hex is a great shorthand notation for binary because 4 binary digits can be represented in 1 hex digit. A 16 bit address can be represented in 4 hex digits and a 64 bit Java long integer can be represented in 16 hex digits. The chart below illustrates these concepts and several examples. Value of Each Position163162161160In Base 16 Exponential Notation4096256161In Decimal NotationHex/Binary ExamplesDecimal Equivalent07A3(7*256) + (10*16) + 3 = 195500000111101000110FC1(15*256) + (12 * 16) + 1 = 403300001111110000011B4D(1*4096) + (11*256) + (4*16) + 13 = 69890001101101001101 Now Its Your Turn Convert each of the following signed binary numbers into its hexadecimal equivalent. 01011101 = ? 01110111 = ? Convert each of the following hexadecimal numbers into its binary equivalent. 19 = ? 89 = ? A6 = ? 23 = ? 51 = ? CB = ? Representing Real Numbers The standard for representing real numbers or as programming geeks would say, floating point numbers was established by the International Electronic and Electrical Engineering organization or IEEE. It is much too complicated for most normal people to understand, and therefore, Ill point out the just key features. Those of you who are engineers can get the rest of the story from the IEEE web site! Like integers, floating point numbers have a sign and a value that have to be represented. Unlike integers, the location of the decimal point also has to be stored. That means that the representation has to have 3 distinct parts. In illustration of a 32 bit real number is given below. Sign (1 bit)Exponent (8 bits)Mantissa (23 bits)Sign * Mantissa * 2 Exponent000001010000000000000000000110101*26*210 = 26*1024 = 26624011110110000000000000000000110101*26*2-10 = 26*(1/1024) = 26 * 0.0009765625 = 0.025390625 Notice that the exponent is used with a base of 2 rather than a base of 10 as in scientific notation. That means that the exponent portion has an impact on both the position of the decimal point and the precision of the number. Because a finite number of digits can be used for the exponent and the exponent impacts the precision of the number, there is a limit on the precision of any real number represented using this notation. And that means that some real numbers cannot be represented exactly! Actually, the fact that real numbers cannot be represented exactly in memory is due to the nature of real numbers and digital electronic circuits rather than the IEEE notation itself. The real numbers are a continuous number system and graphing the set of real numbers produces a solid line. Between every pair of numbers there is always another real number. Computers, however, are discrete machines. Each circuit is on or off and cannot be something in between. It is impossible to make a discrete system behave exactly like a continuous system and one of the consequences for computers and real numbers is that real numbers must be approximations. What does that mean for you as a programmer? A user may enter a real number such as 3.001 as input to a program. That same data may be displayed on the screen later as 3.0009985 or 3.0010012. Both of these numbers are very close approximations of 3.001 but they arent exactly the number the user entered. The program may then use that data in several calculations and all of the results of those calculations will be off a little. Lots of computer users have a similar experience when summing a column of numbers that are the result of complex calculations in a spreadsheet. Round off errors are a fact of life in calculations involving real numbers in any computer program. A programmer can minimize those errors by using a data type that represents real numbers with more precision. Representing Character Data A similar kind of coding scheme must be used to represent character data so that the a that the user enters at the keyboard can be stored in the digital circuits in memory. The ASCII character set assigns a numeric value to each of the printable characters on a typical keyboard used in the US along with useful non-printing characters. It allows computers to store character data digitally, to compare characters, and therefore, to sort data alphabetically as well. The chart below lists a subset of the ASCII character set and the decimal value given to each of those characters. B, for example, has an ASCII value of 66 and is represented as the 8 bit unsigned binary number 01000010 or 42 hex. ~ has an ASCII value of 126 and is represented as the 8 bit unsigned binary number 01111110 or 7E hex. Please note that A and a are different characters and have different ASCII values. In fact, all of the upper case letters precede all of the lower case letters in the ASCII character set. Computers will sort a set of word beginning with an upper case letter before a set of word that begin with a lower case letter. Aardvark and Bat will most likely sort before apple in a computer program. This behavior is distressing for many computer users but makes perfect sense once you are familiar with the ASCII character set. Some programming languages represent character data using other character sets. The Unicode character set was developed because the ASCII character set was insufficient for representing all of the symbols used in international languages. Each Unicode character is represented by 16 bits rather than 8 bits, but the concept is exactly the same. The characters that are part of the ASCII character set have the same values in the Unicode character set. A Subset of the ASCII Character Set CharDecimal Value CharDecimal Value CharDecimal Value CharDecimal ValueSpace32957R82k107!33:58S83l10834;59T84m109#35<60U85n110$36=61V86o111%37>62W87p112&38?63X88q11339@64Y89r114(40A65Z90s115)41B66[91t116*42C67\92u117+43D68]93v11844E69^94w119-45F70_95x120.46G7196y121/47H72a97z122048I73b98{123149J74c99|124250K75d100}125351L76e101~126452M77f102553N78g103654O79h104755P80i105856Q81j106 Now Its Your Turn Convert each of the following characters into the binary equivalent of its ASCII value. Q = ? q = ? + = ? 0 = ? 1 = ? Convert each of the binary representations of any ASCII value to its equivalent character. 01100011 = ? 01000011 = ? 00110010 = ? 00110011 = ? Now that you understand how data is stored in variables in memory and some of the programming implications of the representation of data, we can begin to talk about the process of creating procedural programming. Author: Mari Good Revised: Brian Bird 1/7/10     Orientation to Programming Variables and Data Representation    PAGE 9 01111111 + 00000001 10000000 10000000 01111111 01111111 + 00000001 10000000 00000001 11111110 11111110 + 00000001 11111111 0001011101111 + 0001010111111 0001110101110 00101110111111 + 00111010111011 00111111111010 1010101010101011 + 1111111111111111 1010101010101010 000000101 + 000000101 000000110 00000001 + ???????? 00000000  2BQWp|FH35:<NPijlmoprsuvxy{|~  5 7 %!'!""""# #4#<#$$Q%R%%%&)&m&n&))4*5*jh?1CJUmHnHu h?1CJ h?1H* h?1H*h?15>*\h?15>*\aJh?1P"# * + b g  _mn89I & Fgd?1 & Fgd?1IJNOfghknxoo $$Ifa$xkd$$Ifl4006$c+ t*0634 laf4$If$If nqtwz}$IfFfr$IfFf $If $$Ifa$}}}}}}}}wr}}Ff$If $$Ifa$xkdf$$Ifl4006$c+ t*0634 laf4  "$&(*:;=?ACEGIK^_`at & F ^gd?1 & Fgd?1 Ff Ff $If $$Ifa$;HUcp~!!""" & Fgd?1h^h & F ^gd?1" "!"""#"7"p"""""""%%m&&'9':'|'}'(((<^< & Fgd?1 & F ^gd?1 & Fgd?1  !() ))))~*****I+++r-s------- & F ^gd?1 & F hh^hgd?1  & Fgd?1 & F ^gd?1 & Fgd?15*--00111111 22G3R33333f5h5s5u56666666677m99::;!<)<+<T<W<<<??J@R@DDJEOE"J)JKKKKK L LL#Lh?1CJmH sH  h?1CJ h?1CJ h?1H*mH sH h?1mH sH  h?1aJ h?1CJ h?1H* h?1H*hbh?15>*\aJjh?1CJUmHnHuh?1?-11-3.3]3^344556666$If$If6666666}}}}w $If $$Ifa$xkd$$Ifl400$X t*0634 laf46666777MDDDD>$If $$Ifa$kdx$$Ifl4r0d $8888 t*0634 laf477,7?7MGG$Ifkd@$$Ifl4r0d $8888 t*0634 laf4?7@7B7D7F7H7e7}}}}w$If $$Ifa$xkd$$Ifl400$X t*0634 laf4e7f7k7p7u7z7{7MDDDD>$If $$Ifa$kd$$Ifl4r0d $8888 t*0634 laf4{7|7~77777MDDDD>$If $$Ifa$kdz$$Ifl4r0d $8888 t*0634 laf47777777MDDDD>$If $$Ifa$kdB$$Ifl4r0d $8888 t*0634 laf47777777MDDDD>$If $$Ifa$kd $$Ifl4r0d $8888 t*0634 laf47777788MDDDD>$If $$Ifa$kd$$Ifl4r0d $8888 t*0634 laf48888m8MKI8 & F hh^hgd?1 kd$$Ifl4r0d $8888 t*0634 laf4m8{888888889999::;;;;;;< < $$Ifa$ & F ^gd?1 & F hh^hgd?1 & F ^gd?1 <*<+<-<6<N<i<ZTTTT$Ifkdb$$Ifl\0*$ $  t*0634 la $$Ifa$i<j<l<u<<<c]]]]$Ifkd2$$Ifl\0*$ $  t*0634 la<<<>>XAYAxDyDDDcaaaaaaa_akd$$Ifl\0*$ $  t*0634 la DoFpFGIIKKKKKKKKKK $$Ifa$ekd$$Ifl40`%% t*0634 laf4$IfKKKKKKKKKL L$If $$Ifa$ L Lkdf$$Iflִ0V )L `%o t*06    34 la LLLLLLLL#L $$Ifa$#L$Lkd$$Iflִ0V )L `%o t*06    34 la#L$L9L:LOLPLaLeLfL{L|LLLLLLLLLLLLLLLLMMM+M,MAMBMIMWMXMdMmMnMMMMMMMMMMMMMNNNN&NPPPGPHPJPKPMPNPPPQPSPPPPPPj9h?10JU h?1aJjv8h?1Uh; wjh; wUhhbh?1 h?1CJh?1CJmH sH h?1mH sH H$L&L)L+L.L0L3L5L9L $$Ifa$9L:Lkd$$Iflִ0V )L `%o t*06    34 la:L*CJ h?1B*CJ H*OJQJphh?1>*CJ OJQJh?1B*H*OJQJphh?1CJ H*OJQJh?1CJ OJQJ hb>*hb h?1>*h; wh?1hR0JmHnHujh?10JU h?10J4$Q0QR?R@RAR$a$$<^<a$wQxQyQzQ{Q|Q~QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQؾؾh?1H*OJQJ h?1CJ h?1>*CJ h?1>*CJ OJQJh?1CJ H*OJQJh?1h?1B*H*OJQJphh?1B*CJ H*OJQJphh?1CJ OJQJBQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRR R RRRRRR%R/R0R5R=R@RARhh?1CJ H*OJQJh?1h?1CJ OJQJ h?1CJ h?1>*CJ h?1B*CJ H*OJQJphh?1>*CJ OJQJh?1B*H*OJQJph6,1h/ =!"#$% $$If!vh55g#v#vg:V l4 t*065c5+34f4$$If!v h55h5h5h5h5h5h5h5 g#v#vh#v g:V l t*0655@5 +34kd$$Ifl 0_/ g6$@@@@@@@+ t*06$$$$34 la$$If!v h55h5h5h5h5h5h5h5 g#v#vh#v g:V l t*0655@5 +34kd$$Ifl 0_/ g6$@@@@@@@+ t*06$$$$34 la$$If!vh55g#v#vg:V l4 t*065c5+34f4$$If!v h55h5h5h5h5h5h5h5 g#v#vh#v g:V l4 t*0655@5 +34f4kd$$Ifl4 0_/ g6$@@@@@@@+ t*06$$$$34 laf4$$If!v h55h5h5h5h5h5h5h5 g#v#vh#v g:V l4 t*0655@5 +34f4kd $$Ifl4 0_/ g6$@@@@@@@+ t*06$$$$34 laf4$$If!v h55h5h5h5h5h5h5h5 g#v#vh#v g:V l4 t*0655@5 +34f4kd $$Ifl4 0_/ g6$@@@@@@@+ t*06$$$$34 laf4$$If!vh55#v#v:V l4 t*065X534f4$$If!vh5t5`5`5`5#vt#v`#v:V l4 t*0658534f4$$If!vh5t5`5`5`5#vt#v`#v:V l4 t*0658534f4$$If!vh55#v#v:V l4 t*065X534f4$$If!vh5t5`5`5`5#vt#v`#v:V l4 t*0658534f4$$If!vh5t5`5`5`5#vt#v`#v:V l4 t*0658534f4$$If!vh5t5`5`5`5#vt#v`#v:V l4 t*0658534f4$$If!vh5t5`5`5`5#vt#v`#v:V l4 t*0658534f4$$If!vh5t5`5`5`5#vt#v`#v:V l4 t*0658534f4$$If!vh5t5`5`5`5#vt#v`#v:V l4 t*0658534f4$$If!vh555 5#v#v#v #v:V l t*06555 534$$If!vh555 5#v#v#v #v:V l t*06555 534$$If!vh555 5#v#v#v #v:V l t*06555 534$$If!vh50&#v0&:V l4 t*065%34f4&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534&$$If!vh55555555#v#v#v#v#v#v#v#v:V l t*065o555555534Dd$<V  3 C"$((Dd$<V  3 C"$((^ 666666666vvvvvvvvv666666>6666666666666666666666666666666666666666666666666hH6666666666666666666666666666666666666666666666666666666666666666662 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~_HmH nH sH tH @`@ NormalCJ_HaJmH sH tH L@L  Heading 1$@&5CJKHOJQJaJF@F  Heading 2$@&56OJQJaJ>@>  Heading 3$$@&a$CJ$B@B  Heading 8$$@&a$CJaJ< @<  Heading 9 $@&CJaJDA`D Default Paragraph FontVi@V 0 Table Normal :V 44 la (k ( 0No List RYR  Document Map-D M OJQJ^J4@4 Header  !4 @4 Footer  !.)@!.  Page Number424 vocab 5>*\aJJ0QBJ  List Bullet & F hh]hN/aRN List$ h^ha$@CJOJQJ6Bb6  Body TextCJaJ9r  List Bullet 5C & FdD&#$&d(dPRCJOJQJaJPK![Content_Types].xmlj0Eжr(΢Iw},-j4 wP-t#bΙ{UTU^hd}㨫)*1P' ^W0)T9<l#$yi};~@(Hu* Dנz/0ǰ $ X3aZ,D0j~3߶b~i>3\`?/[G\!-Rk.sԻ..a濭?PK!֧6 _rels/.relsj0 }Q%v/C/}(h"O = C?hv=Ʌ%[xp{۵_Pѣ<1H0ORBdJE4b$q_6LR7`0̞O,En7Lib/SeеPK!kytheme/theme/themeManager.xml M @}w7c(EbˮCAǠҟ7՛K Y, e.|,H,lxɴIsQ}#Ր ֵ+!,^$j=GW)E+& 8PK!Ptheme/theme/theme1.xmlYOo6w toc'vuر-MniP@I}úama[إ4:lЯGRX^6؊>$ !)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f W+Ն7`g ȘJj|h(KD- dXiJ؇(x$( :;˹! I_TS 1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ x}rxwr:\TZaG*y8IjbRc|XŻǿI u3KGnD1NIBs RuK>V.EL+M2#'fi ~V vl{u8zH *:(W☕ ~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4 =3ڗP 1Pm \\9Mؓ2aD];Yt\[x]}Wr|]g- eW )6-rCSj id DЇAΜIqbJ#x꺃 6k#ASh&ʌt(Q%p%m&]caSl=X\P1Mh9MVdDAaVB[݈fJíP|8 քAV^f Hn- "d>znNJ ة>b&2vKyϼD:,AGm\nziÙ.uχYC6OMf3or$5NHT[XF64T,ќM0E)`#5XY`פ;%1U٥m;R>QD DcpU'&LE/pm%]8firS4d 7y\`JnίI R3U~7+׸#m qBiDi*L69mY&iHE=(K&N!V.KeLDĕ{D vEꦚdeNƟe(MN9ߜR6&3(a/DUz<{ˊYȳV)9Z[4^n5!J?Q3eBoCM m<.vpIYfZY_p[=al-Y}Nc͙ŋ4vfavl'SA8|*u{-ߟ0%M07%<ҍPK! ѐ'theme/theme/_rels/themeManager.xml.relsM 0wooӺ&݈Э5 6?$Q ,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-![Content_Types].xmlPK-!֧6 +_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!Ptheme/theme/theme1.xmlPK-! ѐ' theme/theme/_rels/themeManager.xml.relsPK] &eNvAJ&eNvAJ NN\\\_5*#LPwQQAR*3H{}~In"(-667?7e7{77778m8 <i<<DK L L#L$L9L:LOLPLeLfL{L|LLLLLLLLLLLLMMM+M,MAMBMWMXMmMnMMMMMMMMMMMMMNNNN&N(NRP$QAR+,-./012456789:;<=>?@ABCDEFGIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz|PWY_!48@ (  n  3 C"? h  3 3"? h  3 3"? h  3 3"? n  3 C"? h  3 3"? h  3 3"? h  3 3"? B S  ?m4"%AJUX$PQ4) TX%t? X`tKX t# P#P$P _Toc467213064 _Toc492209705 _Toc467213065 _Toc492209706 _Toc467213066 _Toc492209707 _Toc467213067 _Toc492209708 _Toc492209709 _Toc467213068 _Toc492209710 _Toc467213069 _Toc492209711 _Toc467213070_ ` .+11y<y<CBJ !!~ ~ [+11<<CBJ q u { 34 4444!4)4 F FGHGHIHIHJHJHLHMHOHPHRHSHHHBJ / 1 7 EIeiDGQT^alo$(Zc(,SU ! !!!!!w%{%%%%%o'r'>-A- 0 0v0y000000000000001??@@,F0FFFFFFFFFGG$G'G1G4G>GAG,HFHGHGHIHIHJHJHLHMHOHPHRHSHHHHHHH0I;IBJ3333333333333333333333333333333333333333333333333333333334"4"5"5"~"~"G+G+R+R+kDlD6E7EEEGGGG*G*G-G.G7G7G:G;GHHHFHGHIHJHJHLHMHOHPHRHSHHHHHHHHHHIII I I IIIIIII'I'I-I.I3I3I9I:IAIAIFIGIHIIIIIJIJI|I}I}I~I~IIIIIIIIIIIJJJJJ=J>J>JBJr5޸Wxb@<BcdH.QL8GD>\VRaC_fq @aH h  ^ `.h^`.hL^`L.h| | ^| `.hLL^L`.hL^`L.h^`.h^`.hL^`L.h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L. ^`OJQJo( ^`OJQJo(o pp^p`OJQJo( @ @ ^@ `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ^`OJQJo(o PP^P`OJQJo(hh^h`.^`.pLp^p`L.@ @ ^@ `.^`.L^`L.^`.^`.PLP^P`L. hh^h`OJQJo(^`o(.^`.pLp^p`L.@ @ ^@ `.^`.L^`L.^`.^`.PLP^P`L. hh^h`OJQJo(h^`.h^`.hpLp^p`L.h@ @ ^@ `.h^`.hL^`L.h^`.h^`.hPLP^P`L.b@<r5 @aaC_QLcdHW>\                  -R                 La                 ; wR2b?1GHIH@AJx@Unknown G* Times New Roman5Symbol3. * ArialA1Courier (W1)5. *aTahoma9Garamond?= * Courier New;WingdingsA BCambria Math"1h::: ~= $ ~= $!x0d#H#H 2QHX $P22!xxGetting Started Mari GoodBirdB,        Oh+'0|   , 8 D P\dltGetting Started Mari Good Normal.dotmBirdB4Microsoft Office Word@d@ ̏@~?ˏ@ ̏  ~=՜.+,0 hp  CIT Dept, LCC$#H Getting Started Title  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry FЁ%̏Data 91Tables>WordDocument.SummaryInformation(DocumentSummaryInformation8CompObjy  F'Microsoft Office Word 97-2003 Document MSWordDocWord.Document.89q