5/12/2012

Structured Programming Using C++ Lecture 12 : Data aggregation & Structures

Dr. Amal Khalifa

Lecture Contents: Structures



  

Structure types Structures as function arguments Initializing structures

2

Dr. Amal Khalifa - Spring 2012

Dr. Amal Khalifa, 2012

1

5/12/2012



aggregate data type : collection (grouping)of data  array: collection of values of same type  Structure: collection of values of different types

3

Dr. Amal Khalifa, 2012

Structure Types 

Must first "define" struct 





Prior to declaring any variables Define struct globally (typically)

No memory is allocated  

Just a "placeholder" for what our struct will "look like“ Treated as a single item

6-4

Dr. Amal Khalifa - Spring 2012

2

5/12/2012

Structure data type

5

Dr. Amal Khalifa, 2012

Structure data Types

Type definition

6

Dr. Amal Khalifa - Spring 2012

Variable declaration

Member access

Dr. Amal Khalifa, 2012

3

5/12/2012

Type definition : Syntax struct CDAccountV1 Name of new "type" { double balance;  member names double interestRate; int term; };

7

Dr. Amal Khalifa, 2012

Structure Variable declaration 

Variable declaration: CDAccountV1 account;   

Just like declaring simple types Variable account now of type CDAccountV1 It contains "member values" 

Each of the struct "parts"

8

Dr. Amal Khalifa - Spring 2012

Dr. Amal Khalifa, 2012

4

5/12/2012

Accessing Structure Members 

Dot Operator to access members   



account.balance account.interestRate account.term

Called "member variables"  

The "parts" of the structure variable Different structs can have same name member variables 

No conflicts

6-9

Example: Structure Definition (1 of 3)

6-10

Dr. Amal Khalifa - Spring 2012

5

5/12/2012

Example: A Structure Definition (2 of 3)

6-11

Example: A Structure Definition (3 of 3)

6-12

Dr. Amal Khalifa - Spring 2012

6

5/12/2012

Programming Pitfall 

Semicolon after structure definition 

; MUST exist: struct WeatherData { double temperature; double windVelocity; };  REQUIRED semicolon!



Required since you "can" declare structure variables in this location

6-13

Initializing Structures 

Can initialize at declaration 



Example: struct Date { int month; int day; int year; }; Date dueDate = {12, 31, 2003}; Declaration provides initial data to all three member variables

6-14

Dr. Amal Khalifa - Spring 2012

7

5/12/2012

Structure Assignments 

Given structure named Date



Declare two structure variables: Date d1, d2; 

Both are variables of "struct type Date"



Simple assignments are legal: d1= d2; 

Simply copies each member variable from d1 into member variables from d2

6-15

Structures as Function Arguments 

Passed like any simple data type   



Pass-by-value Pass-by-reference Or combination

Can also be returned by function  

Return-type is structure type Return statement in function definition sends structure variable back to caller

6-16

Dr. Amal Khalifa - Spring 2012

8

5/12/2012

.

Example: 2D point Structure

Define a C++ structure for a 2D point. Each point is described by an (x, y) coordinate. Define the needed functions to : Read a point coordinates Display point data Translate a point along x-axis or y-axis Compute the distance between two points using the following formula:

( x2  x1 )2  ( y2  y1 )2

17

Dr. Amal Khalifa, 2012

Array of structures 

Student Structure

struct student { char id_num[5]; char name[10]; char gender; int age; };

18

Dr. Amal Khalifa - Spring 2012

Dr. Amal Khalifa, 2012

9

5/12/2012

Example: Array of Students // an array structure of student information #include using namespace std; struct student { char id[6]; char name[50]; char gender; int age; };

// student id number, max. 5 digits // student name, max 49 characters // student gender Male or Female // student age

void main() { // declaring array of 10 element of structure type // and some of the element also are arrays student stud[10];

19

Dr. Amal Khalifa, 2012

Example: Array of Students int i = 0; cout<<"Keying in student data and then display\n"; cout<<"---------------------------------------\n"; cout<<"Enter student data\n"; for(i=0; i<2; i++) { // storing data of the first two students cout<<"\nID number (4 digit number) student #"<>stud[i].id; cout<<"First name student #"<>stud[i].name; cout<<"Gender (M or F) student #"<>stud[i].gender; cout<<"Age student #"<>stud[i].age; }

20

Dr. Amal Khalifa - Spring 2012

Dr. Amal Khalifa, 2012

10

5/12/2012

Example: Array of Students cout<<"\n----------Display the data---------\n"; cout<<"You can see that the data storage\n"; cout<<"has been reserved for the structure!\n"; cout<<"------------------------------------\n"; for(i=0; i<2; i++) { // displaying the stored data of the first two students cout<<"\nID number student # "<
21

Dr. Amal Khalifa, 2012

Structures & pointers  

Dynamic allocation of structure variables Example: student thatStudent, *studPointer; studPointer = new student; studPointer->age = 19; studPointer->gender = ‘M’; *(studPointer).age = 20;

22

Dr. Amal Khalifa - Spring 2012

Dr. Amal Khalifa, 2012

11

5/12/2012

Structures & pointers Dynamic array of structures  Example: student FBStudents[10], *studArr; studArr = new student[10]; studPointer[0].age = 19; studPointer[0].gender = ‘M’; studPointer[1].age = 21; studPointer[1].gender = ‘F’; 

23

Dr. Amal Khalifa, 2012

That’s all for today !! Thanks…..

24

Dr. Amal Khalifa - Spring 2012

Dr. Amal Khalifa, 2012

12

Lecture Contents

May 12, 2012 - 3. Structure data type. Dr. Amal Khalifa, 2012. 5. Structure data Types. Dr. Amal Khalifa, 2012. 6. Type definition. Variable declaration. Member access ... 7 struct CDAccountV1 ←Name of new "type". { double balance;. ← member names double interestRate; int term;. }; Structure Variable declaration.

527KB Sizes 5 Downloads 374 Views

Recommend Documents

No documents