Institute of Computer Science
  1. Courses
  2. 2017/18 spring
  3. Object-Oriented Programming (Narva College) (P2NC.01.083)
ET
Log in

Object-Oriented Programming (Narva College) 2017/18 spring

  • Home
  • Materials
  • Java Glossary
  • Source Example
  • Cheat sheet (S1-S6)
  • Grading
  • Links

Before session 2

Conditional execution

Watch the video:

Slides in English and in Russian

Textbook in English

Test

Go to Moodle and take the second test about the video lecture. You can get up to 2 points for the test. You are not limited in time while taking the test. You can spend as much time as you need. You can answer the questions several times. You can take the test several times. The score of the last attempt is credited.

Exercises

This week we are into if-else and try-except. In real world, the programs are developed by mixing these constructions (and others that we have not learned yet). For example, you can write a program that asks an input, checks if the input value is valid and then depending on the input chooses what to output.

Example 1

age_as_string = raw_input("How old are you? ")
try:
    age = int(age_as_string)
except:
    age = -1

if age < 1:
    print "This is not a valid age"
elif age < 18:
    print "In Estonia, you are considered as a minor"
elif age < 100:
    print "You are an adult"
else:
    print "Wow, you need a lot of birthday candles!"

Example 2

try:
    x = int(raw_input('Enter first number: '))
    y = int(raw_input('Enter second number: '))
    if x == y:
        print 'Numbers are equal'
    else:
        if x < y:
            print x, 'is less than', y
        else:
            print x, 'is greater than', y
except:
    print 'Please enter a number'

Exercise 1. Students

Write a program to solve the following problem. At the beginning of the school year, the program manager has to split the students between the practical sessions. The manager wishes to divide the students between the classes as equally as possible. Write a program that asks the manager for the number of class rooms and for the number of students. The program should then output the number of students in each class room.

Test your program with the following inputs:

 number of students: 100, number of rooms: 20
 number of students: 105, number of rooms: 10
 number of students: 1050, number of rooms: 45

Add a comment: why were these inputs chosen?

Some examples of the program output are shown below:

 Enter number of students: 103
 Enter number of rooms: 15
 You will need to place 7 students in 13 classes.
 You will need to place 2 students in 6 classes.


 Enter number of students: 80
 Enter number of rooms: 4
 You will need to place 20 students in 4 classes.


Hints:

  • Calculate how many students would be equally divided between the rooms (for example, if you have 11 students and 3 rooms, then each room can equally fit 3 students).
  • Calculate how many rooms have to take an extra student in addition to the previously calculated number of students (for example, if you have 11 students and 3 rooms, 2 rooms have to take an extra student).

Remember:

  1. When you apply the division operator (/) to integers, the answer is also an integer (a whole number without the decimal part). For example, 7 / 2 = 3.
  2. The modulus operator (%) returns the remainder of the the division. For example, 7 % 2 = 1 because 2 fits into 7 only 3 times (2 + 2 + 2), and the remainder is 1.

You can use both of these operators in your solution.

One more hint (an example with 103 students and 15 rooms):

  • Divide the number of students by the number of rooms: 103 / 15, the answer is 6. Hence, at least 6 students have to be in each room.
  • Find the remainder of the same division. The remainder of 103 % 15 is 13. Hence, in 13 rooms there are 6 + 1 = 7 students.
  • Find the number of other rooms: number of rooms - previously found number of rooms, 15 - 13 is 2. Hence, in 2 rooms there are 6 students.

Exercise 2. Number of days in months

Write a program that asks the user to enter the number of the month. The program outputs the number of days in that month. Also make sure if the user inputs anything ridiculous, the program gives some feedback about it. Use try-except.

If you can (and it is not very difficult at all) also try to check against the leap year. In that case, you also have to ask the user for the year. If you can’t do it, don’t worry, do it without the check against the leap year, but we strongly encourage you to try!

How to check for leap years: Leap year is a year that is divisible by 4 and is not divisible by 100 or when it is divisible by 400.
This description might be helpful when trying to program it:
1. If the year is not exactly divisible by 4 then it is a common year.
2. If it is divisible by 4, we have to check if it is divisible by 100. If it is not, then it is a leap year.
3. If it is divisible by 100 (and 4) then it is a leap year only if it is also divisible by 400. Otherwise it is not.
The other opportunity to determine whether a year is a leap year:
1. If the year is evenly divisible by 4, go to step 2. Otherwise, print out that February has 28 days (the year is not a leap year).
2. If the year is evenly divisible by 100, go to step 3. Otherwise, print out that February has 29 days (the year is a leap year).
3. If the year is evenly divisible by 400, print out that February has 29 days (the year is a leap year). Otherwise, print out that February has 28 days (the year is not a leap year).

Test your program with different inputs and make sure it works for them. For example: -100, 0, 1, 2, 5, 9, 10, 12, 13, 100, blabla

Here are some examples of the program output.

 Enter a number of the month: blabla
 Please enter a number


 Enter a number of the month: 0
 The number of the month must be in the range 1-12


 Enter a number of the month: 12
 That month has 31 days in it.


 Enter a number of the month: 4
 That month has 30 days in it.


In case of number 2 (February), the program might also check against the leap year, but this is optional:

 Enter a number of the month: 2
 Enter a year: 2015
 That month has 28 days in it (a common year).


 Enter a number of the month: 2
 Enter a year: 2000
 That month has 29 days in it (a leap year).


 Enter a number of the month: 2
 Enter a year: 2100
 That month has 28 days in it (common year).


 Enter a number of the month: 2
 Enter a year: 2016
 That month has 29 days in it (a leap year).


Go to Moodle and put your solutions into Homework 2.

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment