article

Beginners C++ - Lesson 1

Email
Submitted on: 1/1/2015 6:57:00 AM
By: Found on the World Wide Web (from psc cd)  
Level: Beginner
User Rating: By 22 Users
Compatibility: C++ (general)
Views: 971
 
     Welcome fellow programmers!! This is part one of the course which will show you the basics of programming C++ from scratch using the any platform. If you already know how to use the C++ already, you might want to read later lessons when available. So, lets begin. Found at http://pa.pulze.com/

 
				

Instructor:   Paul C. Benedict, Jr. (PCC PaulB)
Keyword:    Online Classroom
Resources: PC Development Forum

 

Color coded text:

    black            New things to Remember
    blue             C++ keywords (do, while)
    green           C++ preprocessor directives (#include, #define)


Section 1.1

Welcome fellow programmers!!  This is part one of the course which will show you the basics of programming C++ from scratch using the any platform.  If you already know how to use the C++ already, you might want to read later lessons when available. So, lets begin.

Being developed by mathematicians, C++ is naturally a math-oriented programming language.  It should be very natural since we have all done math to some extent.  The only difficult part is learning the syntax of the C++ language.  Syntax is the use of the language, just like all spoken languages have.  To write a program that works, you must have correct syntax or it will not run.

What the programmer, that's you, write is what is called source code.  Its the source of your program which turns into code, what you run.  What makes this transition is called the "compiler".  The compiler is a program which turns your source into code.  This program is automatically part of programs such as Borland C++ and Microsoft Visual C++.  On a side note, do not get confused with "C++" and "Visual C++" - C++ is a programming language, and Visual C++ is a product which compiles C++.  I get alot of questions about this, so I figured I would clear this up now.

Now lets go more in-depth into making a program.  There are four steps:

    1. Write out your source code (in a .CPP file)
    2. Compile your program
    3. Link your program
    4. Run your program

We have already discussed steps 1 and 2.  Step 3, linking your program is new to us.  You see, there are many programs out there that are already written for you, which means you don't have to write them.  After the compiler compiles your program, it links your program to other pre-written programs, and creates an executable file (.EXE).  This executable file is what is used to run the program.

Now a .cpp file is just like any other text file.  You can write this in notepad if you would, but usually you would use the product's Integrated Development Environment (IDE).  This IDE is "integrated" because it incorporates a text editor, the compiler, the linker, help files, and tools.


 

Section 1.2

In this lesson, we are here to learn the syntax of the C++ language to allow us to delve deeper into the depths of C++ Windows programming in the next lesson.  The most fundamental part of a language are types, variables, and expressions.  The first statement we are going to learn is the assignment expression:

    variable = expression;

For example:

    x = 3 + 5;

This allows us to assign a value of 3 + 5, which is 8 to the variable x.  An expression which is always on the right-side gets evaluated by the compiler and is assigned to a variable on the left.  Please note that expressions can only be on the right side, otherwise the compiler will yell at you "Hey you, what's going on?"  :-)

The = means assign the value of the right to the left hand side.  Remember that you need a variable on the left hand side of the =, not an expression.  The compiler evaluates the expression on the right hand side, deduces what you mean, and assigns it to the left hand side.  In our example, the compiler evaluates the expression on the right side of the = to mean 8 and assigns it to the variable x on the left side.

The entire line of our example, x = 3 + 5; is called a statement.  If you are a BASIC programmer, you know that you must put everything on one line.  In C and C++, your statement can span multiple lines.  If we wanted, we could write our statement to look like this:

    x = 3
    +
    5
    ;

To the compiler, this makes absolutely no difference.  It sees the statement as the same as if you wrote it on one line (which made it much more readable to us humans) :-)  Please note that for every statement you write, it is ended in a semi-colon ;.  This is very critical, otherwise the compiler will keep on looking at this as one expression and it will look like complete junk to it.  Forgetting the semi-colon is bad syntax, and therefore you are not speaking the language correctly.

It is always required that you declare the type of the variable.  This is because so the compiler knows how much memory to set aside for your variable.  If you do not specify a type, it will automatically be an int.


 

Section 1.3

Now we are going to learn how to do assignments full with variables.  The first thing we must understand about variables are what they are and how to use them in a program.  A variable is a location in your computer's memory where you can save and retrieve information. The type of data can be anything you want.  The most common data we will be using are integers, floating point numbers, characters, and strings.

Integers are numbers like -1, 2, 0, 3456.  Any number that can represented on a number line (remember math?) :-)

Floating point numbers are fractional numbers: 1.0, 3.4, 0.72984, 10E-10.  The reason it is called floating point is because the decimal point can move around through addition.  For instance, .01 * .01 = .0001

Characters are a single letter, number, or symbol.  For instance, 'A', 'B', '3', '@'.  Characters are represented in single quotation marks.

Strings are a collection of characters.  For instance, "How may I help you?",  "This string is filled with junk at the end 232312312312",  "(*&^%".  Strings are denoted by double quotation marks.

Now, here is some code that shows all the types you just learned, except the string.  The string is a little bit more complicated and will be reviewed later:

    int MyNumber = 3;
    float Pi = 3.14;
    char LetterA = 'A';

What we have above is three declarations.  We declare three variables an assign values to them.  We declare the variable "MyNumber" as type "int", which means it is an integer.  We declare the variable "Pi" as type "float", which means it is a floating point number.  We also declare the variable "LetterA" as type "char", which means it is a character.

With numerical data types (like int and float), we can perform simple math operations on them:

    Addition                                    +
    Subtraction                                -
    Multiplication                             *
    Division                                     /
    Modular Division (Remainder)     %

We will not review the four simple math operations, but here is an example of the four:

    int MyNumber = 3;
    MyNumber = MyNumber + 2;
    MyNumber = MyNumber - 1;
    MyNumber = MyNumber * 3;
    MyNumber = MyNumber / 2;

In the first statement, the variable MyNumber is taken, adds 2 to it, and stores it back in MyNumber.  Right now, MyNumber now equals 5.  Then we subtract one and store back the result, multiply by three and store back the result, and then divide by 2 and store back the result.  MyNumber now contains 6.

Please note that the "=" (equal operator) does not mean "equal".  Read it as "assigns".  This assigns the value of the right side to the variable on the left side.

The Modular Division operator (or Remainder operator), returns the remainder of a division:

    int Remainder = 7 % 4;

The variable Remainder contains the value of 3 now.  How did we get that?  Because 4 goes into 7 one time with a remainder of 3.  Please note that the "%" operator always returns an integer value.


Section 1.4

Unlike pure mathematics (the kind of math we do at school), we do not have an infinite amount of memory to store some numbers.  Therefore, computer scientists came up with ways to store numbers in finite quantities.  The date type int, float, and char are all different sizes - and determining which type you use, you must set aside that number of bytes to hold it.  You can use the sizeof operator to find out how much memory (in bytes) a type or variable holds in code - example: sizeof(int).  In the three most commonly used data types we are examining, these are the values:

    sizeof(int)      = 4
    sizeof(float)    = 4
    sizeof(char)   = 1

On a side note, if you were running sizeof(int) on a 16-bit compiler (ones made before Windows 95), it would return 2.  Notice how sizeof(float) and sizeof(int) return the same size (each occupy four bytes in memory), but the memory is used much differently.  It is all dependent on the data type used.

Now, you are probably wondering, what on earth is a byte?  Well, a byte consists of eight bits of information.  As we unwrap this enigma of words, a bit is the SMALLEST piece of information that the computer can work with.  A bit can only be in the ON or OFF position, like your computer.  This on/off system is called the binary system because there are only two numbers in the system (unlike our decimal system which contains ten).  We like to represent on as a 1 and off as a 0.  And if we link a bunch of 1's and 0's together, we get a number the computer can use.  Let's see exactly how the computer does this so we can understand the use of numbers in computers better:

We want to see how the number 8 is represented in computers.  First off, 8 exists in our decimal system (power of tens) and we must represent it in the binary system (power of twos).  This is how the number 8 looks like when broken down into the power of tens:

    10^0 * 8

Above says take 10 to the power (^) of zero, which is 1 and multiply it by 8.  Hence we get the number eight.  In the binary system, this is how it would look:

    (2^3 * 1) + (2^2 * 0) + (2^1 * 0) + (2^0 * 0)

Wow!  That's alot of writing.  Let's examine what is going on:
2 to the 3rd power times 1 is eight.  We add that to 2 to the 2nd power times 0, which is zero.  We add that to 2 to the 1st power times 0, which is zero.  Finally, we add that to 2 to the 0 power times 0, which is zero.  Through all that, we get the answer of 8.

Now, if we look at the multiplication in that binary example, you can see we get 01000.  01000 equals 8 in decimal.  You might be wondering why I took it upon myself to put an extra zero in the front of the binary number.  The reason we do that is because the LEFT most side of a binary number determines if the number is positive or negative.  Remember computers can't use all the fancy math symbols we do, so we have to have some way of making a number negative - this is our way.  Since eight is a positive number, we make the left-most bit a zero.


Section 1.5

Now what the next thing we are going to learn is binary addition and subtraction.  You might be sitting there wondering why we are doing this.  The reason is because as you get more experienced in programming, most of the time you will be dealing with bits of a number, and not the number itself.  This is crucial.

Let's say we are working with a byte and wanted to add the numbers 8 and 5 together.  This is how it would be done:

 

Example 1


    00001000       = 8
    00000101       = 5nbsp; = 5    ----------------------------
    00001101       = 13

Like normal math, we add from right to left:
1.  The right-most column is 0 + 1 which equals 1
2.  Then 0 + 0 equals 0.
3.  Next 0 + 1 gives another 1.
4.  And next 1 + 0 gives another 1.

As you can see, it's pretty basic.  Now let's look at a more complex example.

 

Example 2


    00000001       =  1
    00001111       = 15
    ----------------------------
    00010000       = 16

Hey now, this looks very different.  Let's examine what is going on.
1. When we add 1 and 1 together, we get 2 which is "10" in binary.  So what we do is bring down the zero and carry the one (just like good ol' math).
2. Next we have 0 + 1 + the carried 1.  That yields two again.  So we drop the zero and carry the one.
3. We continue this until the end.


Section 1.6

We must learn how to convert decimal into binary efficiently.  The rules are very simple:
1) Take your number and divide by 2
2) Take the remainder and write it down
3) Take the quotient and make that the number to divide for the next time
4) Repeat step 1 through 3 until the number reaches 0
5) Reverse the list of all your remainders and you have the number in binary

 

Example 3


    Convert decimal 16 to binary
    16 / 2 = 8, remainder 0
    8 / 2   = 4, remainder 0
    4 / 2   = 2, remainder 0
    2 /2    = 1, remainder 0
    1 / 2   = 0, remainder 1

Now look at the remainder list.  We have 00001.  Obviously, that is the number 1 in decimal, so like step 5 says, reverse the list and we get 10000.  Make sure you had that front zero to keep the number positive, so it is really 010000.

 

Example 4


    Convert decimal 11 to binary
    11 / 2 = 5, remainder 1
    5 / 2   = 2, remainder 1
    2 / 2   = 1, remainder 0
    1 / 2   = 0, remainder 1

Now we have 1101.  Reverse it and add the front zero to keep the number positive:  01011

 

Section 1.7

Next up is binary subtraction.  If you remember division in math, there is no such thing.  You would invert the second factor and multiply across.  4 divided by 2, is really 4 multiplied by 1/2, which equals 2.  In binary subtraction, this parallels to what we want to do.  Take the second number and invert all the bits (turning all the zeros to ones and all the ones to zeros) and then add one.  This process of inverting and adding one is called twos complement.

First to understand complementing, let's look at an example:

 

Example 5

    00000101 = 5

Here is the number five in binary.  Now to find out the complement of the number, invert all the bits which makes the number "11010" and then add one:

    11111010   = 5 inverted
    00000001   = 1
    -----------------------
    11111011   = -5

Hey now!!!  It turns out that two's complement gives us the negative version of our number, and to prove it, if we add 5 and our -5 together, we should get zero:

    11111011   = -5
    00000101   =  5
    -----------------------
    00000000   = 0

We get zero!!  If you noticed, we do not extend the number of bits when this is done.  Since we have a finite number of bits to work with and there is an overflow (an extra bit), we just discard it.  Now with this knowledge, to subtract two numbers: Take the first number and add it from the two's complement of the other number.


Section 1.8

Now we are going to look at adding, subtracting, positive, and negative numbers more in-depth.  There are two type of integers: signed and unsigned.  A signed integer means that the number can be either a negative or a positive.  An unsigned integer means that the number can only be zero or positive.  Unsigned integers are useful in absolute situations: the number of apples you have, how much a stamp costs, etc.  This is how you can specify the type:

    signed int i = -100;
    unsigned int j = 40;

Now, if you don't specify the type of integer, it is automatically a signed integer.

Now, we learned that that we used the left-most bit in determining if the number is negative or not.  This is ONLY the case when we work with signed numbers.  When the number is unsigned, the left-bit is just part of the number. In the case of the byte, these are the ranges of a byte:

    SIGNED      = -128 to 127    (uses bits 0 through 6)
    UNSIGNED = 0 to 255         (uses bits 0 through 7)

I hope you enjoyed the first of lessons in learning how to programming C++ from ground-zero.  There is alot of material to be covered, so pay attention, practice, and review.


Keywords and Terms to Remember

Assign
Binary
Bit
Byte

char

Compiler
Expression

float

Floating point
IDE

int

Linker
Modular
Signed

sizeof

Source
Statement
Type
Twos complement
Unsigned
Variable


Summary

The four steps in making a program is: writing code, compiling, linking, and then running your program.

What makes up a language is: types, variables, and expressions.

Correct syntax is needed like any other human spoken language.

int allows integer data types, float creates real numbers with fractional portions, and char stores characters.

The five main math operators are: plus, minus, multiplication, division, and modular division (remainder).

The sizeof keyword returns the number of bytes a type or variable occupies.

The binary system is used in computers to represent numbers.

Binary subtraction is the same as addition just with twos complement.


Other 18 submission(s) by this author

 


Report Bad Submission
Use this form to tell us if this entry should be deleted (i.e contains no code, is a virus, etc.).
This submission should be removed because:

Your Vote

What do you think of this article (in the Beginner category)?
(The article with your highest vote will win this month's coding contest!)
Excellent  Good  Average  Below Average  Poor (See voting log ...)
 

Other User Comments


 There are no comments on this submission.
 

Add Your Feedback
Your feedback will be posted below and an email sent to the author. Please remember that the author was kind enough to share this with you, so any criticisms must be stated politely, or they will be deleted. (For feedback not related to this particular article, please click here instead.)
 

To post feedback, first please login.