Presentation is loading. Please wait.

Presentation is loading. Please wait.

 Introduction to Computer Science COMP 51 – Fall 2012 – Section 2 Structures.

Similar presentations


Presentation on theme: " Introduction to Computer Science COMP 51 – Fall 2012 – Section 2 Structures."— Presentation transcript:

1  Introduction to Computer Science COMP 51 – Fall 2012 – Section 2 Structures

2 Business  Exam 2 next week (Review on Wed)  Office hours will be next Thurs instead of Tues  Project 5 – Part A  Will discuss briefly on Monday  Due Monday, Nov 26 th  Also on Monday, you will complete Lab 8 (which we will start today). I will be in class until noon (at which time I have to leave for a meeting) 2

3  Structures 3

4  Prior knowledge – Arrays  Collection of multiple values of the same type  New concept – Structures  Collection of multiple values of different types  Treated as a single item, like arrays  Several key differences  Structure elements are accessed by name, not by index number  Must first define structure prior to declaring any variables 4

5 Why Structures?  The pieces of data are related in some way  Easier to keep them together (all in one place)  Easier to move them around all at once!  Examples  Certificate of Deposit at a bank  Account balance, interest rate, term length  Time of day  Hour, minute, second  Student information record  First name, last name, student ID number, cell phone, home phone, campus phone, etc… 5

6 New Keyword: struct  The keyword struct is used to create a new structure  Each item (member) inside the structure has a name, just like a variable  Two (or more) names to keep track of now  The name of the structure type  The name(s) of elements inside the structure 6

7 Define Structure Type  Define struct globally (typically)  Example for certificate of deposit account  Name of structure?  CDAccount  Name of members in the structure?  balance, InterestRate, term struct CDAccount { double balance; double interestRate; int term; }; 7

8 Declare Structure Variable  Step 1: Define structure type (previous slide)  Compiler then knows what a “CDAccount” is  Step 2: Declare a variable with this new structure type  Just like declaring an int, float, char, …  Variable account of type CDAccount  It contains “member variables” CDAccount account; 8

9 Accessing Structure Members  Individual elements are called “member variables”  Different structure types can have same member variable names without conflict  New operator to access members:.  Use to read or write a member variable 9 account.balance account.interestRate account.term A period! “dot”

10 Structures as Function Arguments  Passed like any simple data type  Pass-by-value or Pass-by-reference  Neat trick: Easily pass multiple data items to a function!  Can also be returned by function  Return type is structure type  Neat trick: Easily return multiple data items from a function! 10

11 Example Program 11 #include using namespace std; // Structure for certificate of deposit struct CDAccount { double balance; double interestRate; int term; }; CDAccount openAccount(void); void printAccount(CDAccount account); Function returning a struct Function taking a struct

12 Example Program 12 int main(void) { CDAccount account; account = openAccount(); printAccount(account); return 0; } Declare a new instance of the CDAccount structure called “account”

13 Example Program 13 CDAccount openAccount(void) { CDAccount account; cout << "Enter account balance: $"; cin >> account.balance; cout << "Enter account interest rate in %: "; cin >> account.interestRate; cout << "Enter number of months until maturity: "; cin >> account.term; return account; } Returns the variable account, which is a structure of type CDAccount and contains 3 member variables (balance, interestRate, and term)

14 Example Program 14 void printAccount(CDAccount account) { double rateFraction, interestEarned, endBalance; rateFraction = account.interestRate/100.0; interestEarned = account.balance* (rateFraction*(account.term/12.0)); endBalance = interestEarned + account.balance; cout << "When your CD matures in " << account.term << " months, it will have a balance of $" << endBalance << endl; }

15 Example Output 15 Enter account balance: $100.00 Enter account interest rate in %: 10.0 Enter number of months until maturity: 6 When your CD matures in 6 months, it will have a balance of $105

16 Pitfall – Required Semicolon!  Semicolon after structure definition is required!  struct WeatherData { double temperature; double windVelocity; };  semicolon!  Required since you can declare structure variables in this location 16

17 Pitfall – Initialization  Member variables cannot be initialized in the declaration  The structure definition only defines the types, names and order of members  struct WeatherData { double temperature = 32.0; double windVelocity = 10; }; This is not allowed 17

18 Uniqueness of Names  Different structures may use the same member variables names without confusion  Names within a structure still have to be unique, however 18 struct CDAccount { double balance; double interestRate; int term; }; struct CheckingAccount { double balance; double interestRate; };

19 Structure Assignments  An entire structure can be copied in a single statement (in contrast to arrays, which must be element by element)  Declare two structure variables  CDAccount account1; CDAccount account2; // Set data in account1 account2 = account1;  Simply copies each member variable from apples into member variables from oranges  Can’t do anything else, however   No comparisons (==, >, <, etc.)  At least not without extra programming work… 19

20 Arrays of Structures  An array of 10,000 CD account structures  CDAccount accounts[10000];  Accessing an element of the structure in the array  cout << “Account #10 balance is $” << accounts[10].balance << endl;  Structures can have elements that are arrays, too 20

21  Lab 8: Structures Exercise 21

22 Lab 8  You’re going to create a program to store information about a team of fencers at a tournament.  Create a Fencer structure to store the first name, weapon and scores from 2 bouts for each fencer. There are three possible weapons: “foil”, “epee” and “saber”. The scores for a bout are integers between 0 and 15. 22

23 Lab 8  Create an array of 5 Fencers. This array should be declared in main(). You will pass it to functions that use it. (Remember that arrays are always passed by reference to functions).  Create a function to prompt the user for information about each fencer and fill it into the array  getTeam(Fencer team[], int teamSize);  Create a function to print out the name, weapon and highest score of each fencer on the team.  printTeam(Fencer team[], int teamSize); 23

24 Lab 8  Create a function to ask the user to select a weapon and then print out the names of all the fencers who use that particular weapon.  weaponChoice(Fencer team[], int teamSize);  Call these three functions in sequence inside main(). 24

25 Lab 8 25 Sample input and output

26 Questions? ? ? ? 26


Download ppt " Introduction to Computer Science COMP 51 – Fall 2012 – Section 2 Structures."

Similar presentations


Ads by Google