ITEC 320: Homework 1

Due Date: 11:59:59 p.m. Tuesday 9/5/2017

Submit Command: submit itec320-01 homework_one.adb

Last modified:

  1. 2017 Aug 30 12:56:57 PM: Removed draft, added second sample run (and fixed typo in first), removed style section, prettified code

In class last Friday we came up with this list of steps for the assignment.

This program will help you learn how to

Your program should produce output similar to the following.

Sample Run 1:

rucs@/home/nokie> ./homework_one
My name: Joe
Hours: 30
GPA: 3.500
Grade Points: 105.00
Points above 2.0: 45.00

Sample Run 2:

rucs@/home/nokie> ./homework_one
My name: Jack Spratt
Hours: 40
GPA: 1.500
Grade Points: 60.00
Points below 2.0: 20.00

Program to Modify: Modify the program below so that it reflects you.

-- File: homework_one.adb
-- Name: 
-- Date: 

-- Purpose: Calculate points surplus or deficit
--          based on hours taken and GPA

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Float_Text_IO; use Ada.Float_Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

procedure homework_one is

   -- Personal data
   name: constant String := "Joe";            -- Student name

   hours_attempted: constant Natural := 30;   -- Hours taken
   gpa: constant Float := 3.5;                -- Current GPA

   earned_points: Float;             -- Points actually attained

   -- Requirements
   Required_GPA: constant := 2.0;     -- GPA required to graduate
   required_points: Float;            -- Points needed to graduate

   -- Points calculations
   surplus, deficit: Float;           -- Points above or below required

   -- Calculation
   earned_points := Float(hours_attempted) * gpa;
   required_points := Required_GPA * Float(hours_attempted);

   -- Calculate both even though one will not be needed
   surplus := earned_points - required_points; 
   deficit := required_points - earned_points;

   -- Output
   put_line("Name: " & name);
   put_line("Hours:" & hours_attempted'img);

   put("GPA: ");
   put(item => gpa, fore => 1, aft => 3, exp => 0);

   put("Grade Points: ");
   put(earned_points, 1, 2, 0);

   -- Surplus or deficit
   if earned_points > Required_GPA then
      put("Points above 2.0: ");
      put(surplus, fore => 1, aft => 2, exp => 0);
      put("Points below 2.0: ");
      put(deficit, fore => 1, aft => 2, exp => 0);
   end if;

end homework_one;
Input and output specifications:

Creating your adb file: Your data file can be created with any editor, but don't use an editor (such as wordpad) that stores characters using 16 rather than 8 bits. Also don't use an editor that creates an RTF (ie rich text) file. If you use AdaGIDE or GPS, then this will not be a problem.

Compilers: The Ada compiler gnat and the Ada IDE's AdaGide and GPS are installed on department machines. AdaGide is easier to use, but GPS has more features. You can also use the gnat compiler using the command line with a local shell or by using a terminal window (eg putty) to login to a local Linux machine called rucs. To use putty from off campus you must first be running a VPN session.

You may also want to install these tools on your personal machine. The site has a installers for gnat and gps for a variety of platforms. AdaGIDE is available from Make sure that you install gnat before installing adagide. An Eclipse plugin is available from the Adacore site. Another source for gnat is

More instructions on compilers is available here and here.

Submission: Use the submit command to turn your program in for grading. You do not need to submit any data files. You may submit as many times as you like, but only the last submission is kept because submit wipes out any earlier submissions of the same name. Since only the last submission is kept, if the last one is late, then your assignment is late and will thus receive a late penalty. Also remember that you must be on rucs for submit to work. To submit your work for grading do the following:

   submit itec320-01 homework_one.adb

Late Penalty: Not sure about this yet.