Lab 1: Your First Program

Part 0: Lab Ground Rules

Part 1: The Computing Environment

Login: Ubuntu

Your Unix Account

Part 2: Editor and project

Choose your editor

We will be using the Unix environment to create, compile&link and execute C++ programs. First, you must choose a text editor to create your first C++ program. Sounds easy, right? Wrong! Your choice of text editor will mark you for life. Choose wisely!
Real Programmers

Header files and project

Our C++ program (source code) will be entered as a file. This is the actual file that you will type using the editor. Other files will be used along with your source code to enable the execution of your program. For example, another type of file that may make up your project is a "header" file, or "include" file. An "include" file allows you to use additional source code that you or others have written. They comprise a library of helpful tools -- for example, they can provide input/output capabilities, standard math functions (like cosine, or finding the square-root), among others. In fact, they are often called standard library files. You reference a "header" file by "including" it into your source file. You will include a library file today that provides basic input and output services for your program (details to follow).

The complete collection of files needed to run our program is termed a project. So, a project is the collection of files that make up the program (or application) that you are developing.

Part 3: Step-by-step instructions to creating the "HELLO WORLD" program

  1. Directory setup.

  2. Edit the source code

    Open your preferred text editor. For example, if you use vi, in your terminal window type

    emacs main.cpp &
    or if you use vim,
    gvim main.cpp & 

    Explore emacs Explore vim
    Try and learn a bit about emacs using the below references: Try and learn a bit about Vim using the below references:

    Now use your text editor to copy in the following source code into the main.cpp file:
    #include <iostream>
    using namespace std;
    
    int main() {
      cout << "Hello World!" << endl;
      return 0;
    }
    
    When finished, save your file.

  3. Compile (and link).

    If you want the programs you write to actually do something then you must compile them (turn source code into machine language). Converting high-level C++ source code into machine language is very complex, but compiler vendors solve this problem for you. To compile your program, first make sure that you have a terminal open from before, whose current directory is where you saved main.cpp. Once you are there, compile by typing into the terminal

     g++ main.cpp -o m012345

    If your program compiled successfully, you should not see any output from g++ (you will just see the prompt, waiting for the next command) and there should be a new file in your working directory called m012345. (If you omit the "-o m012345", which we will often do, then a file with default name of "a.out" is created.) The new file is the "executable file" for your program.

    If you do see any text output from g++, then get assistance from the instructor. If there are errors, they will be listed in the output. Tips for deciphering error messages are given at the end of this tutorial.

    Note: technically, the single command you issued actually "compiled" and "linked" your program. We'll talk much later about this, but in short "linking" (amongst other things) takes your code and combines it with other code provided elsewhere to do standard things like input and output (this is referenced by the #include <iostream> line in your code). Often, we'll informally call this whole process "compiling."

  4. Run!

    Once you successfully compiled and linked your program (no errors), then you are ready to execute your program. In your current working directory, you will see a new file called m012345 (or whatever you have named it). That is your program. To execute a file, type the file's name preceded by a "dot slash" (literally, "./") and hit the enter key.

    screenshot
    Note: the "dot slash" is telling the computer to look for the program (m012345) in the current directory (indicated by the "dot"). In some cases you can get away with not including this, because your computer is set up to automatically look for commands in the current directory (amongst other places), but including the "dot slash" is safer because it will always work.

  5. Program Output:

    Your program will output to the same terminal from where it was executed, as seen above.

    Now, let's view the executable file you just executed. Type

    ls -l
    to list details of the contents of your current working directory. There is a file named main.cpp – it is your source code file. Note the size of the file (95 byes in our example). The file called m012345 is your program's executable file, which is combined with all of the other necessary machine code to run your program. Note the size (7782 bytes in our example)!! The increase in size is due to the code that was “included” or linked into your program.

    screenshot

Part 4: Let's do it all over again!

You just accomplished quite a bit; you typed in a C++ program, compiled it and executed it. It is important that you understand all the steps involved, and that you are comfortable using a text editor and the terminal.

Repeat Part 3 of this lab all over again, with these changes:

add.cppsample run
// (Your name and alpha)
// This program adds two numbers

#include <iostream>
using namespace std;

int main() {
  int number1, number2, sum;
  number1 = 12;
  number2 = 13;
  sum = number1 + number2;
  cout << "The sum of these two integers is "
            << sum << endl;
  return 0;
}
~/$ ./add
The sum of these two integers is 25

Compile your program giving the executable the name add, and run it, making sure it prints out the right answer! Fix it if it doesn't!

Show your instructor when you finish this part.

Part 5: The "error" of your ways

When you make certain kinds of common mistakes (syntax errors), the compiler won't be able to understand your program and will issue error statements in the terminal window. Each error message includes a number, which represents the line number of the error. Go to that line number to see where the problem is. Every syntax error must be corrected before a program will compile. Sometimes it is clear what's wrong, and other times you may have a hard time figuring out how to correct a syntax error. You will improve as you see enough errors to associate the messages with the syntax error. Here are a few simple rules and hints:

Experience and practice help a lot here. So for each of the below, purposefully make the syntax error in your current program and try to compile to see what the error message is. Correct the error before introducing the next error into your program (e.g., only add ONE ERROR at a time). Go slowly and pay attention, this will save you time later!

Part 6: More on Linux

You'll spend the rest of your time learning more about Linux and the more powerful editors emacs/vi. First review the Unix command summary. Then, open a terminal and practice entering all of the "Usage Examples" (from the "Unix command summary" page) to see what each command does (the commands need to be done in order). Use "ls" frequently to see what effect the commands are having. Once you're comfortable with either vim or emacs, try to modify the program lab01.cpp below (keep this filename!) so that it's output matches what's shown exactly!
lab01.cpp required output
#include <iostream>
using namespace std;
                     
int main() {
   cout << "Hello World!" << endl;
   cout << "This is a 1!" << endl;

   return 0;
}
Hello World!
Hello Solar System!
Hello Galaxy!
Hello Universe!
Hello ... ?
This is a 1!
This is a 2!
This is a 3!
This is a 4!
This is a 5!

Important: Your focus is on using the editor to make these changes as efficiently as possible! In other words, of course you can do it, I want you to concentrate on doing it smart! It's almost a puzzle to use as few keystrokes as possible.

Show your instructor when you finish this part.

Part 7: Submit this lab01.cpp to the submission system

Step 1: Install the submit script to your virtual machine or student (class) workstations:

You only need to do the following once for your Virtual Machine, and once for your class workstation (by installing this file on one class workstation it will be available on all workstations for your use.)
  1. Log on to http://submit.cs.usna.edu, returning to this lab page after loggin in
  2. Make a directory called bin in your home directory. This can be done as: mkdir ~/bin
  3. Click on "Download Personalized Submission Script", saving the file to the bin directory under your home directory
  4. Open a terminal give the command:
    chmod 700 ~/bin/submit

Step 2: Submit the program

In the same directory as the lab01.cpp file, give the following command:
~/bin/submit -c=SI204 -p=Lab01 lab01.cpp
The resulting output should include "The submission may be reviewed online at" followed by a URL. Copy that URL and paste it into your browser. The resulting page should tell you how you did. If you did not get the output 100% correct, the page should give you an indication of what's wrong with your output. Keep fixing your program and resubmitting until it works perfectly.

Part 8: Finishing Up

You should now be comfortable with being able to generate source code, compile it, execute the program, and correct basic syntax errors -- all in Linux. Let's clean up so you can get to your next class.