Programming Language 2 (Eee) : Lab Manual

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

PROGRAMMING

LANGUAGE 2 [EEE]

LAB MANUAL

Faculty: Lab Manual # 1


M. Arifur Rahman
Table of Contents
I. 1.0 Introducing C++ .................................................................................................. 3
II. 1.1 An Example C++ Program .................................................................................. 3
III. 1.2 Very Simple Input, Output and Assignment ...................................................... 6
IV. 1.3 Simple Flow of Control ........................................................................................ 7
V. 2.0 Exercises .............................................................................................................. 9
Question 1 ............................................................................................................................................................. 9
Question 2 ............................................................................................................................................................. 9
Question 3 ............................................................................................................................................................. 9
1.0 Introducing C++

Programming is a core activity in the process of performing tasks or solving problems with the aid of a computer.
An idealized picture is:

[problem or task specification] - COMPUTER - [solution or completed task]

Unfortunately things are not (yet) that simple. In particular, the "specification" cannot be given to the computer
using natural language. Moreover, it cannot (yet) just be a description of the problem or task, but has to contain
information about how the problem is to be solved or the task is to be executed. Hence we need programming
languages.

There are many different programming languages, and many ways to classify them. For example, high-level
programming languages are languages whose syntax is relatively close to natural language, whereas the syntax of
low-level languages includes many technical references to the nuts and bolts (0's and 1's, etc.) of the computer.
Declarative languages (as opposed to imperative or procedural languages) enable the programmer to minimize his
or her account of how the computer is to solve a problem or produce a particular output. Object-oriented
languages reflect a particular way of thinking about problems and tasks in terms of identifying and describing the
behavior of the relevant "objects". Smalltalk is an example of a pure object-oriented language. C++ includes
facilities for object-oriented programming, as well as for more conventional procedural programming.

Proponents of different languages and styles of languages sometimes make extravagant claims. For example, it is
sometimes claimed that (well written) object-oriented programs reflect the way in which humans think about
solving problems.

1.1 An Example C++ Program

Here is an example of a complete C++ program:

// The C++ compiler ignores comments which start with


// double slashes like this, up to the end of the line.

/* Comments can also be written starting with a slash followed by a star,


and ending with a star followed by a slash. As you can see, comments
written in this way can span more than one line. */

/* Programs should ALWAYS include plenty of comments! */

/* Author: Syed Ishteaque Ahmed


Program last changed: 25th May 2015 */

/* This program prompts the user for the current year, the user's current
age, and another year. It then calculates the age that the user was or
will be in the second year entered. */
#include <iostream>

using namespace std;

int main()
{ int year_now, age_now, another_year, another_age;

cout << "Enter the current year then press RETURN.\n"; cin
>> year_now;

cout << "Enter your current age in years.\n"; cin


>> age_now;

cout << "Enter the year for which you wish to know your age.\n";
cin >> another_year;
another_age = another_year (year_now
age_now);

if (another_age >= 0)
{ cout << "Your age in " << another_year << ": ";
cout << another_age << "\n";
} else
{ cout << "You weren't even born in ";
cout << another_year << "!\n";
}

return 0;
}

Program 1.1.1: Basic Input/Output


Program 1.1.1 illustrates several general features of all C++ programs. It begins (after the comment lines) with the
statement

#include <iostream>

This statement is called an include directive. It tells the compiler and the linker that the program will need to be
linked to a library of routines that handle input from the keyboard and output to the screen (specifically the cin
and cout statements that appear later). The header file iostream contains basic information about this library.

After the include directive is the line:

using namespace std;

This statement is called a using directive. The latest versions of the C++ standard divide names (e.g. cin and
cout) into sub collections of names called namespaces. This particular using directive says the program will be
using names that have a meaning defined for them in the std namespace (in this case the iostream header
defines meanings for cout and cin in the std namespace).
Some older C++ compilers do not support namespaces. In this case you can use the older form of the include
directive (that does not require a using directive, and places all names in a single global namespace):

#include <iostream.h>

Some of the legacy code you encounter in industry may be written using this older style for headers. Because the
program is short, it is easily packaged up into a single list of program statements and commands. After the
include and using directives, the basic structure of the program is:

int main() {

First statement;

...

...

Last statement;

return 0;

All C++ programs have this basic "top-level" structure. Notice that each statement in the body of the program
ends with a semicolon. In a well-designed large program, many of these statements will include references or calls
to subprograms, listed after the main program or in a separate file. These subprograms have roughly the same
outline structure as the program here, but there is always exactly one such structure called main. When at the end
of the main program, the line

return 0;

means "return the value 0 to the computer's operating system to signal that the program has completed
successfully". More generally, return statements signal that the particular subprogram has finished, and return a
value, along with the flow of control, to the program level above. More about this later.

The example program uses four variables:

year_now, age_now, another_year and another_age

Program variables are not like variables in mathematics. They are more like symbolic names for "pockets of
computer memory" which can be used to store different values at different times during the program execution.
These variables are first introduced in our program in the variable declaration
int year_now, age_now, another_year, another_age;

which signals to the compiler that it should set aside enough memory to store four variables of type "int" (integer)
during the rest of the program execution. Hence variables should always be declared before being used in a
program. Indeed, it is considered good style and practice to declare all the variables to be used in a program or
subprogram at the beginning. Variables can be one of several different types in C++, and we will discuss variables
and types at some length later.

1.2 Very Simple Input, Output and Assignment

After we have compiled the program above, we can run it. The result will be something like

Enter current year then press RETURN.


1996
Enter your current age in years.
36
Enter the year for which you wish to know your age.
2011
Your age in 2011: 51

The first, third, fifth and seventh lines above are produced on the screen by the program. In general, the program
statement

cout << Expression1 << Expression2 << ... << ExpressionN;

will produce the screen output

Expression1Expression2...ExpressionN

The series of statements

cout << Expression1; cout


<< Expression2;
... ...
cout << ExpressionN;

will produce an identical output. If spaces or new lines are needed between the output expressions, these have to
be included explicitly, with a " " or a "\n" respectively. The expression endl can also be used to output a new
line, and in many cases is preferable to using "\n" since it has the side effect of flushing the output buffer (output
is often stored internally and printed in chunks when sufficient output has been accumulated; using endl forces
all output to appear on the screen immediately).
The numbers in bold in the example screen output above have been typed in by the user. In this particular program
run, the program statement

cin >> year_now;

has resulted in the variable year_now being assigned the value 2001 at the point when the user pressed ENTER
after typing in "2001". Programs can also include assignment statements, a simple example of which is the
statement

another_age = another_year (year_now age_now);

Hence the symbol = means "is assigned the value of". ("Equals" is represented in C++ as ==.)

1.3 Simple Flow of Control

The last few lines of our example program (other than "return 0") are:

if (another_age >= 0)
{ cout << "Your age in " << another_year << ": ";
cout << another_age << "\n";
} else
{ cout << "You weren't even born in ";
cout << another_year << "!\n";
}

The "if ... else ..." branching mechanism is a familiar construct in many procedural programming languages. In
C++, it is simply called an if statement, and the general syntax is

if (condition)
{
Statement1; ...
...
StatementN;
} else
{
StatementN+1; ...
...
StatementN+M;
}

The "else" part of an "if statement" may be omitted, and furthermore, if there is just one Statement after the "if
(condition)", it may be simply written as

if (condition)
Statement;
It is quite common to find "if statements" strung together in programs, as follows:

... ... if (total_test_score < 50) cout << "You are a failure.
You must study much harder.\n";
else if (total_test_score < 65) cout << "You have just
scraped through the test.\n";
else if (total_test_score < 80) cout <<
"You have done quite well.\n";
else if (total_test_score < 95) cout << "Your score
is excellent. Well done.\n";
else { cout << "You
cheated!\n";
total_test_score = 0;
}
...
...

This program fragment has quite a complicated logical structure, but we can confirm that it is legal in C++ by
referring to the syntax diagram for "if statements". In such diagrams, the terms enclosed in ovals or circles refer
to program components that literally appear in programs.

Terms enclosed in boxes refer to program components that require further definition, perhaps with another syntax
diagram. A collection of such diagrams can serve as a formal definition of a programming language's syntax
(although they do not help distinguish between good and bad programming style!).

Below is the syntax diagram for an "if statement". It is best understood in conjunction with the syntax diagram
for a "statement". In particular, notice that the diagram doesn't explicitly include the ";" or "{}" delimiters, since
these are built into the definition (syntax diagram) of "statement".

Figure 1 Syntax diagram for an If Statement

The C++ compiler accepts the program fragment in our example by counting all of the bold text in

... ... if (total_test_score < 50) cout << "You are a failure.
You must study much harder.\n";
else if (total_test_score < 65) cout << "You have just
scraped through the test.\n";
else if (total_test_score < 80) cout <<
"You have done quite well.\n";
else if (total_test_score < 95) cout << "Your score
is excellent. Well done.\n";
else { cout << "You
cheated!\n";
total_test_score = 0;
}
...
...

as the single statement which must follow the first else.

2.0 Exercises

Question 1
Create a directory (folder) called "AgeCalculator". Inside this directory, create a program file called
"AgeCalculator.cpp", save the file, compile it, and run it. Compare your screen output with the example output in
theclecture notes. Briefly experiment in improving and changing the output format.

Question 2
Alter Program 1.1.1 so that if "another_age" works out to be more than 150, the screen output is:

Sorry, but you'll probably be dead by [year]!

Test the program with various different inputs from the keyboard.

Question 3
Alter your program from question 2 so that it deals with months as well as years, and produces output such as the
following:

Enter the current year then press RETURN.


1996
Enter the current month (a number from 1 to 12).
10
Enter your current age in years.
36
Enter the month in which you were born (a number from 1 to
12).
5
Enter the year for which you wish to know your age.
2001
Enter the month in this year.
6
Your age in 6/2001: 41 years and 1 month.

The program should cope with singulars and plurals properly in the output, e.g. "1 month" but "2 months".

Hints: you will have to introduce extra variables in the variable declaration, and may find the following arithmetical
operations useful:

Symbol Operation Example Value

+ Addition 3+5 8

- Subtraction 43 ‐ 25 18

* Multiplication 4*7 28

/ Division 9/2 4

% Modulus 20 % 6 2

(Notice that when the division sign "/" is used with two integers, it returns an integer.) You may also want to use
the following comparison operators:

Symbol Meaning Example Value

< less than 3<5 TRUE

<= less than or equal to 43 <= 25 FALSE


> greater than 4>7 FALSE

greater than or
>= 9 >= 2 TRUE
equal to

== equal to 20 == 6 FALSE

!= not equal to 20 != 6 TRUE

You might also like