Week 02 Tutorial Sample Answers

Tutorial Overview:

Part 1: Variables and constants (5 mins)

Objectives: Understand how to declare and initialise variables and understand the different data types. Understand how and when to use constants.

In this short activity we will recap the parts of a variables and how to declare, initialise and print variables working off of the starter code below:

// part1_variables
//
// This program was written by YOUR-NAME (ZID),
// on [DATE]
//
// This program calculates the area of a circle

#include <stdio.h>

int main(void) {
	// 1. Declare the variables
	
    // 2. Initalise the variables
    
    // 3. Calculate the area of the circle
    
	// 4. Print the result

	return 0;
}

In this activity we will write a short program that takes input from the user to calculate the area of a circle. In this activity we will recap the parts of variables, how to declare, initalise and print variables and also revise when to use constants.

Activity instructions:

While completing the program ask yourself:

  1. What are the three data types they have learnt so far?
    • int, char and double.
  2. How do we declare a variable?
    • In the form data_type variable_name;
  3. How do we initialise variables?
    • variable_name = value;
  4. How do we print the value of variables?
    • We can print out values using the printf(...) function in the C standard input/output library. We can use this library and the fun tions available in it by adding #include <stdio.h> at the top of our program.

Note:

  1. First complete the program with the value of Pi not extracted to a constant, i.e. area = radius * 3.14159
  2. Note that that since Pi is a magic number and the value of it will never change we should declare it as a constant at the top of our program.

Solution below:

// part1_variables
//
// This program was written by Sofia De Bellis (z5418801)
// on January 2024
//
// This program calculates the area of a circle

#include <stdio.h>

#define PI 3.14159

int main(void) {
	// Declaring the variable
	double radius;
	printf("Please enter the radius of your circle: ");
	
	// Initalising the variable with user input
	scanf("%lf", &radius);

	// Calculating the area
	double area = (radius * radius) * PI;

	printf("The area of the circle with a radius of %lf is %lf\n", 
			radius, area);
	return 0;
}

Part 2: Calculating Values in Programs (5 mins)

Objectives: Understand the different types of operators, and how to use them.

In this short section, we will review what tools we have for doing mathematics in our programs. This section will be completed quickly, to make sure we have time for the rest of the tutorial.

Activity Setup:

Split into groups.

Setup whiteboard space and write down the operators. The full list you should get is shown below:

Type of Operator Opterators
Arithmetic + - / %
Logic && || !
Comparison < > <= >= != ==

If you think an operator is not on this list: Don't include it, but feel free to quickly discuss.

Some common culprits are


Activity instructions:
  1. Assign each group a type of operator (Arithmetic | Logic | Comparison).
  2. Give groups 60 seconds to recall as many operators of that type as possible.
  3. Go around each group in turn, and let them tell you one operator they found that isn't on the board yet.
  4. Ask yourself to compare what % does, vs. /.

Part 3: Weird Data Types and Arithmetic (10 mins)

In this short section, we will review how you can store values in programs.

These are short arithmetic expressions we will use during this tutorial:

Remember that there are three 'types' of storage we have seen so far in this course -- double, int and char. Remind that how an integer divided by an integer is an integer, and a char plus an integer can be a char. Split your class into groups and assign one of the following to each group. Ask them to tell you both what the 'mathematical' or 'sensible' answer is (if there is one), and what the 'C' answer is.

Part 4: Diagramming (15 mins)

Objectives: Understand Flowcharts, and how to use them to break down a problem.

In this section, we'll work on diagramming a small program.

Flow Charts:

We'll start by discussing the following flowchart:

a diagram

Using this diagram, explain how we can convert the flowchart to C-like pseudocode:
Print "Do you like puns?"
scan input
if yes:
	print "Do you like computers more than books?"
	scan input
	if yes:
		print "You will be glas to C this pun, then."
	else:
		print "I hope the police book you fro saying that"
else:
	print "That's pUnfortunate."

Part 5: Practical Programming Exercise (rest of tutorial)

Objectives: Understand if statements, scanning and constants.

In this activity, you'll be writing a program to determine whether someone is tall enough to ride a roller coaster. It should:

  1. Scan in the users height.
  2. If the height is 0 or less, it should print an error message,
  3. If the height is below the minimum height, it should print a message telling the user they are not tall enough to ride,
  4. If the hight is above the minimum but below the ride alone threshold, it should print a message telling the user they can ride with an adult,
  5. If the height is or is above the ride alone threshold, it should print a message telling the user they can ride.

For the purposes of this activity the minimum height to ride if 100cm and the minimum height to ride alone is 160cm.

// part5_roller_coaster
//
// This program was written by YOUR-NAME, ZID
// on [DATE]
//
// This program:
// 1. Scans in the users height.
//
// 2. If the height is 0 or less, 
//    it should print an error message
//
// 3. If the height is below the minimum height, 
//    it should print a message telling the user they are not tall enough to ride
// 
// 4. If the height is above the minimum but below the ride alone threshold,
//    it should print a message telling the user they can ride with an adult
//
// 5. If the height is or is above the ride alone threshold, 
//    it should print a message telling the user they can ride.

#include <stdio.h>

int main(void) {
	
	return 0;
}

Activity instructions

First solution below:

// part5_roller_coaster
//
// This program was written by Sofia De Bellis (z5418801)
// on January 2024
//
// This program:
// 1. Scans in the users height.
//
// 2. If the height is 0 or less, 
//    it should print an error message
//
// 3. If the height is below the minimum height, 
//    it should print a message telling the user they are not tall enough to ride
// 
// 4. If the height is above the minimum but below the ride alone threshold,
//    it should print a message telling the user they can ride with an adult
//
// 5. If the height is or is above the ride alone threshold, 
//    it should print a message telling the user they can ride.

#include <stdio.h>

#define MINIMUM_HEIGHT 100
#define RIDE_ALONE_HEIGHT 160

int main(void) {
	printf("Please enter your height: ");
	double height;
	scanf("%lf", &height);

	if (height <= 0) {
		printf("Invalid height!\n");
	} else if (height < MINIMUM_HEIGHT) {
		printf("Sorry, you are not tall enough to ride :<\n");
	} else if (height < RIDE_ALONE_HEIGHT && height >= MINIMUM_HEIGHT) {
		printf("Yay! You are tall enough to ride. But only with an adult!\n");
	} else {
		printf("Congratulations! You are tall enough to ride alone!\n");
	}

	return 0;
}

Improved solution below:

// part5_roller_coaster_improved
//
// This program was written by Sofia De Bellis (z5418801)
// on February 2024
//
// This program:
// 1. Scans in the users height.
//
// 2. If the height is 0 or less, 
//    it should print an error message
//
// 3. If the height is below the minimum height, 
//    it should print a message telling the user they are not tall enough to ride
// 
// 4. If the height is above the minimum but below the ride alone threshold,
//    it should print a message telling the user they can ride with an adult
//
// 5. If the height is or is above the ride alone threshold, 
//    it should print a message telling the user they can ride.

#include <stdio.h>

#define MINIMUM_HEIGHT 100
#define RIDE_ALONE_HEIGHT 160

int main(void) {
	printf("Please enter your height: ");
	double height;
	scanf("%lf", &height);

	if (height <= 0) {
		printf("Invalid height!\n");
	} else if (height < MINIMUM_HEIGHT) {
		printf("Sorry, you are not tall enough to ride :<\n");
	} else if (height < RIDE_ALONE_HEIGHT) {
		printf("Yay! You are tall enough to ride. But only with an adult!\n");
	} else {
		printf("Congratulations! You are tall enough to ride alone!\n");
	}

	return 0;
}