CPS120: Introduction to Computer Science
Download
Report
Transcript CPS120: Introduction to Computer Science
CPS120: Introduction to
Computer Science
Compiling Your First Program
Compilers
An
engine that works on your behalf to process
instructions and allow you to deal with various
basic rules of the language
The
compiler’s job is to make sure you follow the
rules, to require that you provide enough information
that the compiler can translate you instructions into
languages the components can understand
Compilers Available
Products
range from freeware compilers to work
environments designed for commercial application
development
Borland
C++ compiler
CodeWarrior
IBM Visual Age C++
Microsoft Visual C++
GNU freeware
DJGPP freeware ( www.delorie.com/djgpp/ )
Compilation Process
1.
2.
3.
4.
5.
Get the set of instructions from you (source file)
Review the instructions to see if they violate the rules
(syntax) of the language
If all the rules are obeyed, create a working file in the
language of the computer (machine language)
Attach to the working file full instructions for any
shortcuts you may have used (linkage)
Assemble a final file in machine language
(executable)
Source Code
The set
of instruction that you will develop on
your own for processing by the compiler
Executable Files
A machine-language executable file created
when the compilation process is complete
All
that is needed to run the program
Not human-readable
Has the extension .EXE
Stored in binary form
Copies
Known
may be distributed (portable)
as an application
Compiling and Debugging
Executable code will
not be created until you
correct all of the syntax errors in your source
code
Then the fun (with logic errors) begins
Creating Source Code Files
Actually Compiling a Program
Creating Source Code
Programmers spend
most of their time with
source code files
Need to be comfortable with an editor that creates
text files
Don’t use a word processor
Using the Visual Studio Editor
Save often because there is
no autosave in
Visual C++
The editor will do matching of delimiters and
intelligent indentation
Using C++
Actually Compiling a Program
C++ Usages & Conventions
C++
is absolutely case sensitive
For
Instance: A is 97 in ASCII and a is 65
Remember: in ASCII {, [, and ( are not equivalent
No
keywords in ANSI standard are even partially
uppercase
‘While’
is not a keyword, ‘while’ is
Comments
Document
what is happening, why it is happening and
other issues
Commentary is ignored by the compiler
C++ has inline, block and documentary comments
Inline
comments are within line of code
Use
Block
the // symbols
comments are long comments delimited with /* and */
Scope Delimiters
A symbol or
pair of symbols used to define a
region or area which is considered a locale
In programming, many structures need to have
their scope defined because they should not
affect the entire program
In
C++, the symbols ‘{‘ and ‘}’ are used
Literals
Literals
are system commands and other pieces
of information that the compiler doesn’t
understand, and therefore, takes your word for
them
In C++, literals are enclosed in straight double
quotes " " which is the shift of the apostrophe
Columns and White Space
Modern
programming languages are free form with
delimiters instead of columns to determine the end of
instructions
The
; (semi-colon) is the delimiter used in C++
Use
tabs, indents, and blank lines in any manner that
makes code easier to understand
Many
programming instructions become subordinate to
other instructions due to scope and other restrictions.
Formatting code to reflect this makes it easier to read
Variables
Variables or
identifiers are used to hold
information
Usually
mixed case with the first letters small and the
rest starting with a capital
e.g. theWeight
Color Coding in Visual C++ Editor
Comments
are green and are ignored by the
compiler
All ANSI keywords are coded in blue
Other code is in plain black
Compiler
in black
keywords like cin and cout are also shown
Setting Up a Visual C++ Workspace
Left-click START
In the program section, select Visual Studio or Visual
C++ (depending on what is installed)
Left click on the Visual C++ icon to load the
environment
Create a new work area by choosing FILE/NEW
Choose FILES tab
Click on the C++ Source File to reach the editor
1.
2.
3.
4.
5.
6.
i.
Add a filename and directory before continuing
e.g. c:/cppFun/myFirstCpp
Setting Up a Visual C++ Workspace
7.
8.
9.
10.
11.
12.
13.
14.
Create the directory with START / EXPLORE
Double-click the drive letter
Choose FILE, NEW FOLDER
Left click on FOLDER
Change new folder to cppFUN
Close Explorer with the X
Back in Visual C++, type myFirstCpp in the file box
Click OK and get back to the main edit screen
Setting Up a Visual C++ Workspace
15.
16.
Enter the source code
After entering the program, FILE then SAVE
Why Create New Subdirectories?
You
should always use subdirectories to store
your files. Visual C++ creates quite a few work
files when it generates the executable file for you
source code, and they will be easy to dispose of if
you keep everything together in one convenient
place.
Running the Program
1.
2.
Press the REBUILD ALL button. It has two
arrows in a box
Press the RUN button. It is a red exclamation
point
Disk Space Issues
Text files are
insignificant in terms of space
However, at least six other files are created
every time something is compiled
Some of these are significantly larger
You
can delete anything but the file with the .cpp
suffix; everything else can be recreated
You probably also want the .exe file
An Introduction to Debugging
CPS120
Introduction to Computer Science
Lecture 5
Compiling and Debugging
Executable code will
not be created until you
correct all of the syntax errors in your source
code
Syntax and Logic Errors
A syntax error is simply the violation of the rules
of a language; misuse of structure and form in
programming or a violation of the compiler’s
rules. These errors are detected by the compiler
Also know as 'fatal compilation errors'
A logic error is a mistake that complies with the
rules of the compiler that causes the program to
generate incorrect output
Linker Errors
Not all syntax errors are detectable by the
compiler
These errors do not become apparent until files are
put together to create an executable
These errors are not linked to a specific line of code
Look for the name of the variable and see what lines of
code it occurs on using EDIT and FIND
> LNIK2001: unresolved external
> LNK1120: unresolved externals
Debugging
Debugging
is the process of locating and fixing or
bypassing bugs (errors) in computer program code
or the engineering of a hardware device.
To debug a program or hardware device is to start
with a problem, isolate the source of the problem,
and then fix it.
Debugging Objective
1.
Find the line(s) containing the syntax error(s) using
the compiler's chosen line and error messages as
a starting point
Debugging is an Art
Compilers often miss reporting an actual error and
report on subsequent lines which are effected by error
but may be completely correct
After encountering a real syntax error, compilers often
generate many incorrect syntax error messages
Different compilers produce different errors and
warnings for the same errors in the same program
Debugging Steps
1.
2.
3.
Proofread before compiling
Compile
Correct all the obvious errors
>
>
>
>
Start at the beginning of the list of errors and warnings
A single syntax error may cause the compiler to believe numerous
other syntax errors are occurring
Look at the error lines and if you see the error, fix it. Otherwise, leave
it for later. It may vanish when you fix something else
Don’t worry if more errors appear. Some errors mask other errors
Debugging Steps
4.
5.
6.
7.
8.
Recompile when you have fixed what you
recognize
Repeat 3 & 4 until no further errors are obvious
Attempt to solve the remaining errors in a topdown fashion
Solve whatever errors you can without spending
long periods of time on any given error
Recompile whenever you feel you don’t see any
further solutions
Debugging Aids
1.
In the Visual C++ (and other GUI-based compilers)
double-clicking on an error message move the cursor
to the line where the compiler detected the error
2.
3.
This may not be the actual line where the error occurred –
don’t trust the compiler on lines
Work from the beginning of the program, because in
most compilers, the errors are detected from the
beginning to end, sequentially
Some errors are so severe, they stop the compiler
from continuing so more errors may appear after you
successfully fix one or more
A Debugging Mindset
Assume your syntax is wrong. Look it up!
If you are 100% sure a line is correct, then
search for a syntax error in the lines ABOVE that
line
Add working comments as you change things
Start with the immediately previous line and work
backward
Never make a change you can’t explain
Sample Debugging Comment
cuot << "This is a line of code"<< endl;
/*************Debug*************
Error is undeclared identifier
1. Checked syntax for endl
2. Check syntax for screen output
-- cuot is misspelled
*/
Warnings
Actions that may represent problems but do not
cause the compiler to flag an error
Don’t ignore warnings
Most common warning is a ‘typecasting’ warning
Indicates that the conversion of one type of a number was
moved to a number (variable) of a different type without
inclusion of a typecasting operation
> E.G. – Moving a float to an integer variable
Disk Space Issues
If the floppy is full or becomes full during the
compilation process, the compile will fail with an
error message such as:
fatal error C1033: cannot open program database
A very cryptic message like this can result
If you are not able to view all of the intermediate
files created in a compile, suspect a space error