0% found this document useful (0 votes)
49 views

ENERGY 211 / CME 211: September 24, 2008

This document discusses the evolution of programming languages from assembly to modern languages like C++. It begins with FORTRAN and ALGOL being created to improve on assembly. C was derived from B and BCPL to allow for systems programming. C++ was then developed by Stroustrup to add object-oriented capabilities to C while maintaining efficiency. The document also outlines the tools and processes used for C++ development, including compilers, linkers, libraries, makefiles, and IDEs. It provides examples of simple C++ programs and compiling/linking steps.

Uploaded by

danty
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views

ENERGY 211 / CME 211: September 24, 2008

This document discusses the evolution of programming languages from assembly to modern languages like C++. It begins with FORTRAN and ALGOL being created to improve on assembly. C was derived from B and BCPL to allow for systems programming. C++ was then developed by Stroustrup to add object-oriented capabilities to C while maintaining efficiency. The document also outlines the tools and processes used for C++ development, including compilers, linkers, libraries, makefiles, and IDEs. It provides examples of simple C++ programs and compiling/linking steps.

Uploaded by

danty
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 47

ENERGY 211 / CME 211

Lecture 2
September 24, 2008

1
Evolution
• In the beginning, we all used assembly
• That was too tedious, so a very crude
compiler for FORTRAN was built
• FORTRAN was still too painful to work
with, so ALGOL 60 was created
• ALGOL 60 merged with COBOL to form
CPL, for both science and business
2
Evolution, cont’d
• CPL was too large and complex, so it
was simplified to obtain BCPL
• BCPL was stripped down even more for
systems programming, leading to B
• B was stripped down too much for more
advanced operating systems, so it was
enhanced to create C

3
From C to C++
• Bjarne Stroustrup wanted a language
that was efficient, like C, AND suitable
for development of large applications,
like SIMULA
• He enhanced C with SIMULA-like
features to create “C with classes”
• Rick Mascitti first used the name C++
• First commercial release in 1985
4
Design Considerations
• There is no lower-level language
between C++ and machine language
(can write assembly in C++, but few do)
• For backward compatibility, any valid C
program is a valid C++ program
• Unlike other languages, C++ supports
multiple programming paradigms, such
as procedural, object-oriented, generic,
functional, etc.
5
From the Text you Type to the
Program you Run
• As with other languages, you type your
source code into source files, using the
editor of your choice
• A C++ compiler translates the source
code into object code, after checking for
errors
• A linker combines your object code with
other object code from existing libraries
to create an executable file
6
Tools Needed for Projects
• Projects will be submitted electronically
and graded on the elaine workstations
• Must have ssh client to connect
• Must be able to edit files in UNIX/Linux
(with vi or emacs, for example), or
transfer them using SecureFX
• Must be able to use GNU C++ compiler
• Visit computing.stanford.edu for
needed software
7
Essential Software Link

8
Link to Download Page

9
Download SecureCRT

10
Launch SecureCRT

11
Create New Session

12
New Session Wizard

13
New Session Wizard, cont’d

14
New Session Wizard, cont’d

15
Connect to Elaine

16
Use SUNet Password

17
Connected!

18
Getting Started in Linux

19
Launching the vi editor

20
VERY Basic vi Usage
• Type i to enter insert mode
• Use ESC key to exit insert mode
• Commands (when not in insert mode):
– h: left, l: right, j: down, k: up
– x: delete character at cursor
• Colon takes you to command prompt.
There, use w to save, and q to exit
• Resource for learning vi:
– http://www.infobound.com/vi.html
21
Typing in your program

22
Saving…

23
…saved!

24
Exiting vi

25
Creating Executables in Linux
• The c++ command invokes the GNU C+
+ compiler on given source files,
indicated by .cpp extension
• By default, it will also invoke the linker to
create an executable
– Use –c option to only create an object file
which has .o extension
• By default, executable is called a.out
– Use –o option to specify another name
– Can be run from the command prompt
26
Compiling and Executing

27
Dissecting hello.cpp
// #include is a preprocessor directive that
// specifies a header file to be included in the
// program (in this case, iostream)
#include <iostream>

// When a program is run, its main function is


// invoked. It returns an integer (int) value
// indicating its status (not done here, though)
int main()
{
// std::cout denotes the “standard output”
// device, which is normally the screen. The
// << operator, in this case, is used to
// write data to this device.
std::cout << "Hello world!" << std::endl;
}

28
Delegating (or: Modularity!)
hello.cpp: (subroutine)
#include <iostream>

void say_hello() // void means “does not return a value”


{
std::cout << "Hello world!" << std::endl;
}

hellomain.cpp: (main program)


void say_hello(); // external functions must be declared

int main()
{
say_hello(); // main passes the buck to say_hello
}

29
Compiling Multiple Files
Neither hello.cpp nor hellomain.cpp is a complete
program, so we use –c to compile only, and not link
bramble06:~/demo211> c++ -c hello.cpp
bramble06:~/demo211> c++ -c hellomain.cpp
The previous commands created object (.o) files, which
are now linked to create the executable program “hello”
bramble06:~/demo211> c++ -o hello hello.o hellomain.o
The ls command lists the current directory (like dir in
Windows). The a.out is from before
bramble06:~/demo211> ls
a.out hello hello.cpp hello.o hellomain.cpp
hellomain.o
The “.” is used to denote the current directory, which,
by default, is not in the search path used to locate
programs
bramble06:~/demo211> ./hello
Hello world!
bramble06:~/demo211>

30
Managing Projects with make
• Managing projects with several source
files can be tedious
• When you modify a source file, you
need to recompile that file, and re-link
• The make command recompiles any
out-of-date files automatically
• Useful for tasks such as cleaning up
unnecessary files or changing compiler
options
31
Creating Makefiles
• The make command uses a file called
Makefile to determine how to proceed
• Makefile contains rules of the form
target: prerequisites
command
where command builds target from
the prerequisites
• Can define variables for convenience
32
Sample Makefile
# All object files that must be linked into final executable
OBJ= hello.o hellomain.o

# Rule for building executable from object files


# $@ is shorthand for the target of the rule
hello: ${OBJ}
c++ -o $@ ${OBJ}

# Rule for compiling individual sources files into object files


# $< is shorthand for the first prerequisite
${OBJ}: %.o: %.cpp
c++ -c $<

# Rule to clean up all output files


clean:
rm -f hello ${OBJ}

33
Using make
With the Makefile, building executable is easy!
bramble06:~/demo211> make
c++ -c hello.cpp
c++ -c hellomain.cpp
c++ -o hello hello.o hellomain.o
Reset hello.cpp’s modified time to force
recompile
bramble06:~/demo211> touch hello.cpp
Note that only hello.cpp is recompiled
bramble06:~/demo211> make
c++ -c hello.cpp
c++ -o hello hello.o hellomain.o
This removes all output files
bramble06:~/demo211> make clean
rm -f hello hello.o hellomain.o

34
Alternative Approaches
• Can edit source files on your computer,
and transfer using SecureFX (available
on Essential Software page), or Fetch
if you’re using a Mac
• Can do all of your work in Windows
using MinGW Developer Studio
• In this case, should still compile and run
final program on elaine before
submitting
35
MinGW Developer Studio
• Abbreviated as MDS
• Available from
http://www.parinyasoft.com/
• MDS is an Integrated Development
Environment (IDE), with editing,
compiling and debugging performed
inside the studio
• Uses gcc compiler
36
Launching MDS

37
Creating a New Project

38
MDS Project View

39
Adding a New Source File

40
Typing in Your Code

41
Building the Executable

42
The Build Process

43
Executing in MDS

44
Execution of Console App

45
What About Mac Users?
• Mac OS X is built on top of FreeBSD
UNIX, so Linux discussion applies
• Can use ssh to connect to elaine
• OS X does not come with GNU
compilers
• Can obtain freely from Apple Developer
Connection by downloading xcode
package (registration required)
• Visit http://connect.apple.com
46
Next Time
Learning some fundamentals of C++
• Program Structure
• Simple Variables
• Literals
• Types
• Basic Exception Handling

47

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy