unit 13 - university of southern...
TRANSCRIPT
3
Editors
• "Real" developers use editors designed for writing code
– No word processors!!
• You need a text editor to write your code
– Eclipse, Sublime, MS Visual Code, Emacs, Atom, and many others
• These often have handy functions for commenting, indenting, checking matching braces ({..}) etc.
4
Compilers
• Several free and commercial compilers are available
– g++:
– clang++
– XCode
– MS Visual Studio
• Several have "integrated" editors, debuggers and other tools and thus are called IDE's (Integrated Development Environments)
5
Using the Command Line
• While GUIs are nice, we often have more control when using the command line interface (i.e. the terminal)
• Linux (the OS used by Vocareum and in CS 103, 104, etc.) has a rich set of command line utilities (Mac & Windows do to though Windows uses different names for the utilities)
• We can navigate the file system (like you would with Explorer or Finder), start programs (double-clicking an icon), and much more by simply typing commands
Terminal Icon
Linux Terminal
View
Vocareum
Terminal View
6
Software Process
Executable
Binary Image
("test")
1110 0010 0101 1001
0110 1011 0000 1100
0100 1101 0111 1111
1010 1100 0010 1011
0001 0110 0011 1000
C++ file(s)
(test.cpp)
Compiler
#include <iostream>
using namespace std;
int main()
{ int x = 5;
cout << "Hello"
<< endl;
cout << "x=" << x;
return 0;
}
g++Load &
Execute
$ subl test.cpp & $ subl test.cpp &
$ g++ –g –Wall test.cpp –o testor$ make test
$ subl test.cpp &
$ g++ –g –Wall test.cpp –o test
$ ./test
2 Compile & fix compiler
errors1 Edit & write
code3 Load & run the
executable program
Std C++ & Other
Libraries
Note: Most documentation and books use $ as a placeholder for the command line prompt.
7
g++ Options
• Most basic usage– g++ cpp_filenames
– Creates an executable a.out
• Options– -o => Specifies output executable name (other than default a.out)
– -g => Include info needed by debuggers like gdb, kdbg, etc.
– -Wall => show all warnings
• Most common usage form:– $ g++ -g -Wall hw8.cpp -o hw8
8
Listing Files (Folder Contents)
• In Mac/Linux, to view the files in a folder, just type ls (stands for list)
Executable
Source code file
9
Running the Program
• First ensure the program compiles
– $ g++ -g -Wall hw8.cpp -o hw8
• Then run the program by preceding the executable name with ./
– $ ./hw8
12
Step 1: Review your Own Code
• Rubber Duck Debugging: Reference from an anecdote from a book, "The Pragmatic Programmer", that has become popular
• Idea: Explain your code line by line to yourself or some other "object"
– Note: Commenting your codeis a way to do this
13
Step 2: Develop An Expectation
• You cannot effectively debug without an expectation of the right output
– How would you know if your code is working or not?
• Steps:
– Know your input (what inputs will you feed in)
– As you review your own code and explain it to your rubber duck, write out what you expect it to produce
14
Step 3: Print Statements / Narration
• Now that you know what to expect, the most common and easy way is to find the error is to add print statements that will "narrate" where you are and what the variable values are
• Be a detective by narrowing down where the error is– Put a print statement in each 'for', 'while', 'if'
or 'else' block…this will make sure you are getting to the expected areas of your code
– Then print variable values so you can see what data your program is producing
15
Tips
• Don't write the entire program all at once
• Write a small portion, compile and test it
– Write the code to get the input values, add some couts to print out what you got from the user, and make sure it is what you expect
– Write a single loop and test it before doing nested loops
• Once one part works, add another part and test it
16
Vocareum Exercises 1
• diff1
– Count how many consecutive values differ by 1
• atleast2
– Input numbers until we have at least 2 from the range 0-9 and >=10 but stop immediately if the user enters a negative number
• craps
– 1. The player rolls 2 dice.
– 2. If the sum of the dice is 7 or 11 the player wins their bet and the turn continues (go back to step 1).
– 3. If the sum of the dice is 2, 3, or 12 the player loses their bet, but the turn continues (go back to step 1).
– 4. If the sum is any other number (besides 2, 3, 7, 11, or 12) then that value is known as the point number and play continues.
– 5. The player rolls the dice until...• a. The sum of the dice is 7 in which case the player loses their bet and the turn ENDS
• b. The sum of the dice is the same as the point value in which case the player wins their bet and the turn continues, starting over at step 1.
18
Linux
• Based on the Unix operating system
• Developed as an open-source ("free") alternative by Linux Torvalds and several others starting in 1991
• Originally only for Intel based processors but has now been ported to other platforms (i.e. ARM processors in your phone, etc.)
• Commonly used in industry and in embedded devices
19
Using the Command Line
• While it has a GUI interface like your Mac or Windows PC much of its power lies in its rich set of utilities that are most easily run at the command line (aka command prompt or terminal)
• Here we can navigate the file system (like you would with Explorer or Finder), start programs (double-clicking an icon), and much more by simply typing commands
Terminal Icon
Linux Terminal
View
Vocareum
Terminal View
20
Navigating the File System
• A file system has – Folders (directories)
– Files
• They are organized in a hierarchy
• Everything we can do with a GUI we can do at the command line
21
Some Basic Commands
• Here are some helpful commands to use in Linux at the command promptCommand
ls List (see) all files in the current folder
pwd Present working directory shows the current folder location of the terminal
cd dirname Change directory to a new folder
cp srcfiles dest Copy file(s) to a new location
mv srcfile dest Move/rename files to a new name/location
rm srcfiles Remove files from the current folder
mkdir dirname Make directory / create a new folder
rmdir dirname Remove directory / delete a folder (must be empty first)
22
Directory Structure Ex. 1• Each circle is a directory
• Each name in the box is a file
• Starting from your home (e.g. 'mark') directory/folder…
• Use cd to change directories (folders)– cd Desktop
– cd cs102
– cd hw7
• Or go multiple folders at a time– cd Desktop/cs102/hw7
mark
Desktop
hw7
Documents
other src
hw7a.cpp
hw7b.cpp
test2.h
test2.cpp
cs102
you start here
home
/
23
Directory Structure Ex. 2• To go up a level use
– cd ..
• To go up 2 levels use – cd ../..
• Let's go one level to 'cs102'– cd ..
• Now make a directory– mkdir hw8
mark
Desktop
hw7
Documents
other src
hw7a.cpp
hw7b.cpp
test2.h
test2.cpp
home
cs102
you start here
hw8
Shortcuts:. = Current directory.. = Parent directory (up one) ~ = Home directory* = Wildcard to match filenamesUnix commands:pwd = Print current working dir
/
24
Directory Structure Ex. 3• Let's say we want to start a
new lab with a copy of our old work and just modify it. Let's copy our work
– Recall I'm in cs102 folder currently
– cp hw7/* hw8/
mark
Desktop
hw7
Documents
other src
hw7a.cpp
hw7b.cpp
test2.h
test2.cpp
cs102
you start here
hw8
home
/
hw7a.cpp
hw7b.cpp
Shortcuts:. = Current directory.. = Parent directory (up one) ~ = Home directory* = Wildcard to match filenamesUnix commands:pwd = Print current working dir
25
Directory Structure Ex. 4• Let's now go into the test
folder– cd test
• Now rename the hw7a.cpp to hw8.cpp– mv hw7a.cpp hw8.cpp
• Now delete the hw7b.cpp file– rm hw7b.cpp
• Remember, you can see all the files in a folder by typing – ls
• You can see what folder/directory you are in by typing – pwd
mark
Desktop
hw7
Documents
other src
hw7a.cpp
hw7b.cpp
test2.h
test2.cpp
cs102
you start here
hw8
home
/
hw7a.cpp
hw7b.cpp