CMIS 102 Hands-On Lab
// Week 5
Overview:
This hands-on lab allows you to follow and experiment with the critical steps of developing a program including the program description, analysis, test plan, design (using pseudocode visualization), and implementation with C code. The example provided uses sequential, repetition statements and nested repetition statements.
Program Description:
This program will calculate the average of 3 exams for 5 students. The program will ask the user to enter 5 student names. For each of the students, the program will ask for 3 exam scores. The average exam score for each student will be calculated and printed.
Analysis:
I will use sequential and repetition programming statements.
I will define one String to store student name: StudentName.
I will define three Float numbers: Examvalue, Sum, Avg to store exam values the sum of the exams and the average of the exams.
The sum will be calculated by this formula:
Sum = Sum + Examvalue
For example, if the first value entered was 80.0 and second was 90.0 and the third exam was 100.0:
sum = sum + Examvalue = 0.0 + 80.0
sum = 80.0 + 90.0 = 170.0
sum = 170.0 + 100.0 = 270.0
Avg is then calculated as:
Avg = sum/3.0
For example 270.0/3.0 = 90.0
A nested repetition loop can be used to loop through each of the 5 students and each of the 3 exams:
For (students=0; students <5; students++)
For (exams=0;exams<3;exams++)
End For
End For
Sum values will need to be reset for each student to ensure only one student data is used for calculations each time.
Test Plan:
To verify this program is working properly the input values could be used for testing:
Test Case
Input
Expected Output
1
Studentname=Chris
Examvalue1=80.0
Examvalue2=90.0
Examvalue3=100.0
Studentname=John
Examvalue1=70.0
Examvalue2=90.0
Examvalue3=80.0
Studentname=Sally
Examvalue1=100.0
Examvalue2=100.0
Examvalue3=100.0
Studentname=Pat
Examvalue1=50.0
Eexamvalue2=70.0
Examvalue3=60.0
Studentname=Sam
Examvalue1=90.0
Examvalue2=95.0
Examvalue3=100.0
Average for Chris is 90.0
Average for John is 80.0
Average for Sally is 100.0
Average for Pat is 60.0
Average for Sam is 95.0
Pseudocode:
// This program will calculate the average of 3 exams for 5 students
// Declare variables
Declare StudentName as String
Declare ExamValue, Sum, Avg as Float
// Loop through 5 Students
For (students=0; students <5 ; students++)
// reset Sum to 0
Set Sum =0.0
Print “Enter Student Name”
Input StudentName
// Nested Loop for Exams
For (exams=0; exams < 3; exams++)
Print “Enter exam grade: n”
Input ExamValue
Set Sum = Sum + ExamValue
End For
Set Avg = Sum/3.0
Print “Average for “ + StudentName + “ is “ + Avg
End For
Flow Chart:
C Code
The following is the C Code that will compile in execute in the online compilers.
// C code
// This program will calculate the average of 3 exams for 5 students.
// Developer: Faculty CMIS102
// Date: Jan 31, 2014
#include <stdio.h>
int main ()
{
/* variable definition: */
char StudentName[100];
float ExamValue, Sum, Avg;
int students,exams;
// Loop through 5 Students
for (students=0; students <5 ; students++)
{
// reset Sum to 0
Sum =0.0;
printf(“Enter Student Name n”);
scanf(“%s”, StudentName);
// Nested Loop for Exams
for (exams=0; exams < 3; exams++)
{
printf (“Enter exam grade: n”);
scanf(“%f”, &ExamValue);
Sum = Sum + ExamValue;
}
Avg = Sum/3.0;
printf( “Average for %s is %fn”,StudentName,Avg);
}
return 0;
}
Setting up the code and the input parameters in ideone.com:
Note the Student and ExamValues for this run were:
John: 90.0 80.0 100.0
Jim: 80.0 70.0 90.0
Joe: 70.0 100.0 100.0
Sally: 100.0 95.0 91.0
Sam: 30.0 54.0 68.0
You can change these values to any valid integer values to match your test cases.
Results from running the programming at ideone.com:
Learning Exercises for you to try:
- What would you change in the design and the code if you wanted to input 10 students and 5 exams?
- What is the line of code doing?
char StudentName[100];
(Hint: We haven’t covered arrays, but a String can be thought of as an array of characters) ?
- What would happen if you moved the Set Sum = 0.0 from inside the for loop to right after the declaration. For example:
// Declare variables
Declare StudentName as String
Declare ExamValue, Sum, Avg as Float
// Initialize Sum
Set Sum = 0.0;