apcs lab 4

Post on 07-Jan-2016

60 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

APCS LAB 4. Parameters, apvectors, structs. # includes //function declarations(with brief comment) //function definitions (with preconditions and postconditions). int main(). A C++ program. void function1(). int function2(). # includes //function declarations int a,b; - PowerPoint PPT Presentation

TRANSCRIPT

1

Lab 4

Westfield High School

APCS LAB 4

APCS LAB 4

Parameters, apvectors,

structs

2

Lab 4

Westfield High School

A C++ program# includes //function declarations(with brief comment)

//function definitions (with preconditions and postconditions)

int main()

void function1()

int function2()

3

Lab 4

Westfield High School

# includes //function declarations int a,b;//function definitions

int main()

void function1()

int function2(int b)int a,c;

int a, c, d;

int a,d,e;

global ‘a’ not accessible here

global variables - accessibleeverywhere (almost)

global ‘a’ not accessible here

global ‘a’,’b’ not accessiblehere

4

Lab 4

Westfield High School

# includes //function declarationsint a,b;//function definitionsint main()

void function1()

int function2(int b)int a,c;

int a, c, d;

int a,d,e;

How do I refer to the global ‘a’ ?

Why do some functions haveempty parameter lists?

How do I return more than one value?

5

Lab 4

Westfield High School

functions with no argumentsfunctions with no arguments

void menu()

{

cout << “directions appear here” <<endl;

}

6

Lab 4

Westfield High School

function overloadingfunction overloading

int max(int a, int b)

{

if (a > b)

return(a);

else

return(b);

}

double max(double a, double b)

{

if (a > b)

return(a);

else

return(b);

}

7

Lab 4

Westfield High School

Call-by-reference parameters‘remembering’ more than one valueCall-by-reference parameters‘remembering’ more than one value

void swap(int &a, int &b)

{

int temp;

temp = a;

a = b;

b = temp;

}(pg 39)

int max(int a, int b)

{

if (a > b )

return(a);

else

return(b);

}

8

Lab 4

Westfield High School

#include <iostream.h>

int a=1,

b=2;

void dog (int a,int &b);

int main()

{

cout <<a<<" "<<b<<" "<<endl;

dog(a,b);

cout <<a<<" "<<b<<" "<<endl;

return(0);

}

void dog(int a,int &b)

{

a = 5;

b = 6;

cout <<a<<" "<<b<<" "<<endl;

}

9

Lab 4

Westfield High School

precondition: what is needed for the function to do its intended task ?

postcondition : what is returned if precondition is satisfied?

10

Lab 4

Westfield High School

apvectorsapvectors

Quick Reference in Appendix A member functions

• length()• resize()

const reference parameters instead of call by value

11

Lab 4

Westfield High School

n2

SORTSn2

SORTS

BUBBLE SELECTION INSERTION

12

Lab 4

Westfield High School

LAB 4 ASSIGNMENTLAB 4 ASSIGNMENT

Sorts (#1)• sortall.cpp, the client program (written)• sorts.h, the function declarations (written)• sorts.cpp, the implementation (YOU MUST

WRITE)

13

Lab 4

Westfield High School

STRUCTSSTRUCTS

14

Lab 4

Westfield High School

STRUCTSSTRUCTS

Structs are like simplified classes By default, all data and functions are public. A struct generally has

• no member functions• only data• no private stuff

15

Lab 4

Westfield High School

An ExampleAn Example

structemployType

{apstring fname;

apstring lname;

bool creditRisk;

int age;

double income;

}

16

Lab 4

Westfield High School

USEUSE

employType faculty;

faculty.fname = “sue”;

faculty.lname = “smith”;

faculty.creditRisk = false;

faculty.age = 21;

faculty.income = 38000.00;

17

Lab 4

Westfield High School

Why use structs???Why use structs???

structures data keeps information about 1 employee in one

place can manipulate employee (or a list of

employees) easily

18

Lab 4

Westfield High School

another example...another example...

struct studentnode

{

int id;

apstring first;

apstring last;

apvector<int> grades;

bool sports;

};

19

Lab 4

Westfield High School

int main()

{

apvector <studentnode> apcs(10);

int num;

int count=0;

apstring s;

ifstream instream ("f:\\trees\\studinfo.txt");

if (instream.fail())

cout <<"failed"<<endl;

else

{

cout<<"\tStudent ID#"<<"\t";

cout <<"Student Name"<<"\t"<<"GPA"<<endl;

out<<"\t==========="<<"\t============”

<<"\t==="<<endl;

111annsmith3.5222joejones3.24333amyjohnson2.86

20

Lab 4

Westfield High School

while (instream>>num )

{

apcs[count].id = num;

instream>>apcs[count].first;

instream>>apcs[count].last;

instream>>apcs[count].gpa;

apcs[count].sports = false;

cout<<setiosflags(ios::showpoint|ios::fixed);

cout<<setprecision(1);

cout<<"\t"<<setw(8)<<apcs[count].id;

cout<<"\t"<<apcs[count].first" ;cout "<<apcs[count].last<<"\

t"<<apcs[count].gpa<<endl;

cout<<endl;

count++;

}

} return(0);

}

111annsmith3.5222joejones3.24333amyjohnson2.86

21

Lab 4

Westfield High School

apvector of structsapvector of structs

student records employee records medical records sports statistics basketball teams...............

22

Lab 4

Westfield High School

CELTICS :::::

# fname lname position PPG

07 Kenny Anderson guard 12.1

08 Antoine Walker guard 18.7

34 Paul Pierce forward 16.5

40 Tony Battie center 10.0

05 Ron Mercer guard 17.0

23

Lab 4

Westfield High School

Celtics assignmentCeltics assignment

Read info from file celtics. fill array of structs. jersey # is not a field...it is the index of the

array element. Print team info in good format for the user.

24

Lab 4

Westfield High School

celticsceltics 0 1 2 3 4 5 6

Walter

McCarty

f

5.7

Ron

Mercer

g

17.0

Popeye

Jones

f

5.2

what does

this

look like

25

Lab 4

Westfield High School

structs with initializer listsstructs with initializer lists

Struct StudentType{StudentType(); //constructor member functionapstring last;apstring first;char initial;int class;GenderType gender;apvector<int> grades;}

26

Lab 4

Westfield High School

Using initializer listsUsing initializer lists

StudentType::StudentType()

:grades(10,-1)//grades initialized to 10 items each storing -1.

27

Lab 4

Westfield High School

Might want to look at struct3.cppMight want to look at struct3.cpp

initializer list for constructor of structstruct studentnode

{

int id;

apstring first;

apstring last;

double gpa;

bool sports;

studentnode(int num = 0, apstring f = "some first name", apstring l = "some last name", double g = 0.0, bool s = true):

id(num), first(f), last(l), gpa(g), sports(s)

{ }

};

28

Lab 4

Westfield High School

celticsceltics 0 1 2 3 4 5 6

Walter

McCarty

f

5.7

Ron

Mercer

g

17.0

Popeye

Jones

f

5.2

what

about

this?

none

none

x

0.0

29

Lab 4

Westfield High School

Celtics assignmentCeltics assignment Ask user to enter 5 jersey numbers. Inform user if team chosen if valid team (2 guards, 2

forwards, 1 center) User should be able to enter as many teams as he/she

wishes. invalid teams:

• guards<>2, center<>1,forwards<>2• player on team more than once• invalid jersey number entered

30

Lab 4

Westfield High School

After we have our apvector of celtics…

After we have our apvector of celtics…

What does a “team” look like???

31

Lab 4

Westfield High School

team ???team ???

Kenny

Anderson

g

12.1

???

apvector<playernode> ?

32

Lab 4

Westfield High School

team ???team ???

07

???

apvector<int> ?

33

Lab 4

Westfield High School

CELTICSCELTICS

Efficient check

vs

Inefficient check

34

Lab 4

Westfield High School

AquaFish revisitedAquaFish revisited

Keep a record of how many times each position in the fish tank was occupied by your fish.

• add to your aquafish private parts– apvector<int> myPositionCounts

35

Lab 4

Westfield High School

Print frequency distribution for a vector of aquafish

Print frequency distribution for a vector of aquafish

Our fish’s next experience with an apvector will be keeping a record of how many times each position in the fish tank was occupied by each of the fish in an apvector. Recall that our fish tank is represented by a number line of positions 0 to (tankSize – 1).

36

Lab 4

Westfield High School

Fish# Position Hits 0 1 2 3 4 5 6 7 8 9---------------------------------------------------------------------- 1 1 2 5 7 4 1 0 0 0 0  2 0 0 0 0 0 4 6 5 4 1  3 1 2 1 3 7 5 1 0 0 0  4 5 7 2 1 2 2 1 0 0 0  5 0 0 0 0 0 0 4 7 6 3  6 0 0 0 0 1 1 1 2 8 7  7 5 6 2 4 3 0 0 0 0 0  8 0 2 4 4 4 3 2 1 0 0

Tanksize = 10Steps in this simulation = 20Number of fish in this simulation = 8

37

Lab 4

Westfield High School

Modifications:Modifications:  Change aquafish.h and aquafish.cpp so that there is

one default constructor requiring no parameters.  Add a constant, TANKSIZE = 10 to aquafish.cpp  Add a private data field to aquaFish.h

apvector<int> myPositionCounts . This vector will hold the frequency of position hits for one aquafish.

 Add a void member function to print, in an appropriate format, the position counts of an aquafish : void PrintPositionCounts();

38

Lab 4

Westfield High School

ModificationsModifications

Add a void public member function, TankSize() that will return an Aquafish’s tanksize.

 Set mydebugging to false  Revise aquamain.cpp so that a sample run similar to

the one given will result. Notice that the constant TANKSIZE for this simulation was set to 10. There were 8 fish in the simulation (numbered 1-8). There were 20 steps in the simulation so that if you sum the elements of each fish’s positionCount vector, the result is 20.

39

Lab 4

Westfield High School

Lab 4

pages 20-38 in your labbook

MBCS pages 1-18

top related