ENERGY 211 / CME 211 - PowerPoint PPT Presentation

About This Presentation
Title:

ENERGY 211 / CME 211

Description:

Neither hello.cpp nor hellomain.cpp is a complete program, so we use c to ... OBJ= hello.o hellomain.o # Rule for building executable from object files ... – PowerPoint PPT presentation

Number of Views:107
Avg rating:3.0/5.0
Slides: 48
Provided by: lamb8
Learn more at: https://web.stanford.edu
Category:
Tags: cme | energy | hello

less

Transcript and Presenter's Notes

Title: ENERGY 211 / CME 211


1
ENERGY 211 / CME 211
  • Lecture 2
  • September 24, 2008

2
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

3
Evolution, contd
  • 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

4
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

5
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.

6
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

7
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

8
Essential Software Link
9
Link to Download Page
10
Download SecureCRT
11
Launch SecureCRT
12
Create New Session
13
New Session Wizard
14
New Session Wizard, contd
15
New Session Wizard, contd
16
Connect to Elaine
17
Use SUNet Password
18
Connected!
19
Getting Started in Linux
20
Launching the vi editor
21
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

22
Typing in your program
23
Saving
24
saved!
25
Exiting vi
26
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

27
Compiling and Executing
28
Dissecting hello.cpp
  • // include is a preprocessor directive that
  • // specifies a header file to be included in the
  • // program (in this case, iostream)
  • include ltiostreamgt
  • // 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()
  • // stdcout denotes the standard output
  • // device, which is normally the screen. The
  • // ltlt operator, in this case, is used to
  • // write data to this device.
  • stdcout ltlt "Hello world!" ltlt stdendl

29
Delegating (or Modularity!)
hello.cpp (subroutine)
  • include ltiostreamgt
  • void say_hello() // void means does not return
    a value
  • stdcout ltlt "Hello world!" ltlt stdendl

hellomain.cpp (main program)
void say_hello() // external functions must be
declared int main() say_hello() // main
passes the buck to say_hello
30
Compiling Multiple Files
  • Neither hello.cpp nor hellomain.cpp is a complete
    program, so we use c to compile only, and not
    link
  • bramble06/demo211gt c -c hello.cpp
  • bramble06/demo211gt c -c hellomain.cpp
  • The previous commands created object (.o) files,
    which are now linked to create the executable
    program hello
  • bramble06/demo211gt 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/demo211gt 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/demo211gt ./hello
  • Hello world!
  • bramble06/demo211gt

31
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

32
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

33
Sample Makefile
  • All object files that must be linked into final
    executable
  • OBJ hello.o hellomain.o
  • Rule for building executable from object files
  • _at_ is shorthand for the target of the rule
  • hello OBJ
  • c -o _at_ OBJ
  • Rule for compiling individual sources files
    into object files
  • lt is shorthand for the first prerequisite
  • OBJ .o .cpp
  • c -c lt
  • Rule to clean up all output files
  • clean
  • rm -f hello OBJ

34
Using make
  • With the Makefile, building executable is easy!
  • bramble06/demo211gt make
  • c -c hello.cpp
  • c -c hellomain.cpp
  • c -o hello hello.o hellomain.o
  • Reset hello.cpps modified time to force
    recompile
  • bramble06/demo211gt touch hello.cpp
  • Note that only hello.cpp is recompiled
  • bramble06/demo211gt make
  • c -c hello.cpp
  • c -o hello hello.o hellomain.o
  • This removes all output files
  • bramble06/demo211gt make clean
  • rm -f hello hello.o hellomain.o

35
Alternative Approaches
  • Can edit source files on your computer, and
    transfer using SecureFX (available on Essential
    Software page), or Fetch if youre 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

36
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

37
Launching MDS
38
Creating a New Project
39
MDS Project View
40
Adding a New Source File
41
Typing in Your Code
42
Building the Executable
43
The Build Process
44
Executing in MDS
45
Execution of Console App
46
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

47
Next Time
  • Learning some fundamentals of C
  • Program Structure
  • Simple Variables
  • Literals
  • Types
  • Basic Exception Handling
Write a Comment
User Comments (0)
About PowerShow.com