Software Lesson - PowerPoint PPT Presentation

About This Presentation
Title:

Software Lesson

Description:

Software Lesson – PowerPoint PPT presentation

Number of Views:60
Avg rating:3.0/5.0
Slides: 62
Provided by: henryn4
Category:

less

Transcript and Presenter's Notes

Title: Software Lesson


1
Software Outline
  1. Software Outline
  2. What is Software?
  3. What is a Program?
  4. What are Instructions?
  5. What is a Programming Language?
  6. What is Source Code? What is a Source File?
  7. What is an Operating System?
  8. Operating System Examples
  9. A Simple C Program
  10. Anatomy of a Simple C Program
  11. Block Delimiters
  12. What Is a Comment? 1
  13. What Is a Comment? 2
  14. Are Comments Necessary?
  15. hello_world.c with Comments
  16. hello_world.c without Comments
  17. Flowchart for hello_world.c
  18. A Less Simple C Program 1
  19. A Less Simple C Program 2
  1. Programming Languages
  2. Natural Languages vs Programming Languages
  3. Programming Language Hierarchy
  4. High Level Languages
  5. Assembly Languages
  6. Machine Languages
  7. Converting Between Languages
  8. Compiler
  9. Interpreter
  10. Assembler
  11. Our Old Friend hello_world.c
  12. Compiler Details
  13. Compiler Details (contd)
  14. Elements of a Compiler 1
  15. Elements of a Compiler 2
  16. Phases of Compiling
  17. Compiling a C Statement
  18. Assembly Code for hello_world.c 1
  19. Assembly Code for hello_world.c 2

2
What is Software?
  • Software, for our purposes, is just a word
    meaning programs.

3
What is a Program?
  • A program is a collection of data on RAM, disk,
    etc and a sequence of actions on those data.
  • The actions in a program are known as
    instructions.

4
What are Data?
  • In computing, data are values stored in
    storage locations RAM, disk, etc.

5
What are Instructions?
  • The actions in a program are known as
    instructions.
  • Examples
  • Arithmetic/Logical calculation e.g., add,
    subtract, multiply, divide, square root, cosine,
    etc.
  • Memory operations load from or store into RAM
  • I/O read from or write to secondary storage
  • Branch jump to an instruction that is out of
    sequence
  • Repetition
  • Allocation of resources
  • and many more.

6
What is a Programming Language?
  • A programming language is a well-defined set of
    rules for specifying a programs collection of
    data and sequence of instructions.
  • Examples C, C, Fortran 90, Java, Basic, HTML,
    Perl, Haskell, Prolog, Pascal, Unix shell, SAS,
    Pentium4 assembly language, etc.

7
What is Source Code? What is a Source File?
  • Source code is a sequence of instructions,
    written in a human-readable programming language,
    that constitutes a program, or a piece of a
    program.
  • An example is shown on page 10.
  • A source file is a file of source code.

8
What is an Operating System?
  • An operating system is a program that manages
    interactions between
  • users and hardware
  • users and software
  • hardware and software
  • ... and so much more.

9
Operating System Examples
  • MS Windows/MS-DOS
  • MacOS
  • PalmOS
  • Unix
  • Linux (portable)
  • FreeBSD (portable, underlies MacOS X)
  • Solaris (Sun Microsystems)
  • AIX (IBM)
  • IRIX (SGI)
  • Tru64 (Hewlett-Packard)
  • HP-UX (Hewlett-Packard)
  • Unicos (Cray)

10
A Simple C Program
  • /

  • Program hello_world
  • Author Henry Neeman (hneeman_at_ou.edu)
  • Course CS 1313 010 Spring 2006
  • Lab Sec 012 Fridays 1030am
  • Description Prints the sentence
  • "Hello, world!" to standard output.

  • /
  • include ltstdio.hgt
  • int main ()
  • / main /
  • /
  • Execution Section (body)

11
Anatomy of a Simple C Program
  • /

  • Program hello_world
  • Author Henry Neeman (hneeman_at_ou.edu)
  • Course CS 1313 010 Spring 2006
  • Lab Sec 012 Fridays 1030am
  • Description Prints the sentence
  • "Hello, world!" to standard output.

  • /
  • include ltstdio.hgt
  • int main ()
  • / main /
  • /
  • Execution Section (body)

Comment block
Preprocessor directive
Main function header
Block open
Execution section (also known as the program body)
Block close
12
Block Delimiters
  • The open curly brace, also known as the left
    brace,
  • acts as the start of a block and is known as the
  • block open.
  • The close curly brace, also known as the right
    brace,
  • acts as the end of a block and is known as the
  • block close.
  • The block open and block close are said to
    delimit the block they indicate where the block
    begins and where the block ends.
  • Delimit indicate where something begins and ends.

13
What Is a Comment? 1
  • A comment is a piece of text in a source file
    that
  • tells human beings (e.g., programmers) something
    useful about the program, but
  • is ignored by the compiler, so it has absolutely
    no affect on how the program runs.
  • In C, the start of a comment is indicated by
  • /
  • and the end of a comment is indicated by
  • /
  • All text appearing between these comment
    delimiters are part of the comment, and therefore
    are ignored by the compiler.

14
What Is a Comment? 2
  • A comment is a piece of text in a source file
    that
  • tells human beings (e.g., programmers) something
    useful about the program, but
  • is ignored by the compiler, so it has absolutely
    no affect on how the program runs.
  • In C, the start of a comment is indicated by
  • /
  • and the end of a comment is indicated by
  • /
  • A comment can use multiple lines of text. The
    delimiters do not have to be on the same line.

15
Are Comments Necessary?
  • Comments are ignored by the compiler, so strictly
    speaking they arent needed to compile and run.
  • But, if you dont put them into one of your
    CS1313 programming projects, YOU MAY LOSE A FULL
    LETTER GRADE OR MORE on that project.
  • Why?
  • Comments tell human beings useful things about
    your program.
  • They help programmers including you, a month
    later when youve forgotten everything about your
    program to understand your program.
  • They also tell graders that you know what the
    heck youre doing.

16
hello_world.c with Comments
  • /

  • Program hello_world
  • Author Henry Neeman (hneeman_at_ou.edu)
  • Course CS 1313 010 Sprint 2006
  • Lab Sec 012 Fridays 1030am
  • Description Prints the sentence
  • "Hello, world!" to standard output.

  • /
  • include ltstdio.hgt
  • int main ()
  • / main /
  • /
  • Execution Section (body)

17
hello_world.c without Comments
  • include ltstdio.hgt
  • int main ()
  • printf("Hello, world!\n")

18
Flowchart for hello_world.c
An oval denotes either the start or the end of
the program, or a halt operation within the
program (which well learn about later). A
parallelogram denotes either an input operation
or an output operation. An arrow denotes the
flow of the program.
  • int main ()
  • printf("Hello, world!\n")

References http//www.wiley.co.uk/college/busin/i
cmis/oakman/outline/chap05/slides/symbols.htm http
//www.ncits.org/tc home/k5htm/f2.htmflowchart
symbol
19
Outputting, Compiling and Running a C Program
  • cat hello_world.c
  • /

  • Program hello_world
  • Author Henry Neeman (hneeman_at_ou.edu)
  • Course CS 1313 010 Fall 2005
  • Lab Sec 011 Fridays 930am
  • Description Prints the sentence
  • "Hello, world!" to standard output.

  • /
  • include ltstdio.hgt
  • int main ()
  • / main /
  • /
  • Execution Section (body)

20
Anatomy of Outputting, Compiling and Running
Unix command to output to the screen
  • cat hello_world.c
  • /

  • Program hello_world
  • Author Henry Neeman (hneeman_at_ou.edu)
  • Course CS 1313 010 Fall 2005
  • Lab Sec 011 Fridays 930am
  • Description Prints the sentence
  • "Hello, world!" to standard output.

  • /
  • include ltstdio.hgt
  • int main ()
  • / main /
  • /
  • Execution Section (body)

Unix command to compile
Unix command to run
Program output
21
A Less Simple C Program 1
  • /
  • Program my_add
  • Author Henry Neeman (hneeman_at_ou.edu)
  • Course CS 1313 010 Fall 2005
  • Lab Sec 011 Fridays 930am
  • Description Input two integers, compute
  • their sum and output the result.
  • /
  • include ltstdio.hgt
  • int main ()
  • / main /
  • /
  • Declaration Section

Continued on the next slide.
22
A Less Simple C Program 2
  • /
  • Execution Section
  • Greeting Subsection
  • Tell the user what the program does.
  • /
  • printf("Ill add a pair of integers.\n")
  • /
  • Input subsection
  • Prompt the user to input the addend
    augend.
  • /

Continued on the next slide.
23
A Less Simple C Program 3
  • /
  • Calculation Subsection
  • Calculate the sum.
  • /
  • sum addend augend
  • /
  • Output Subsection
  • Output the sum.
  • /
  • printf("The sum of d and d is d.\n",
  • addend, augend, sum)
  • return program_success_code
  • / main /

24
A Less Simple C Program Compile Run
  • gcc -o my_add my_add.c
  • my_add
  • Ill add a pair of integers.
  • What two integers do you want to add?
  • 5 7
  • The sum of 5 and 7 is 12.
  • my_add
  • Ill add a pair of integers.
  • What two integers do you want to add?
  • 1593
  • 09832
  • The sum of 1593 and 9832 is 11425.

25
Flowchart for my_add.c
A rectangle denotes an operation other than I/O
or branching (e.g., calculation).
26
Languages
  • What is a language?
  • Kinds of languages
  • Natural languages
  • Programming languages (also known as Formal
    languages)
  • Converting between programming languages
  • Compilers
  • Interpreters
  • Assemblers

27
What Are the Ingredients of a Language?
  • Symbols a set of words and punctuation (in
    computing, words and punctuation are together
    known as tokens)
  • Grammar (also known as syntax) a set of rules
    for putting tokens together to get valid
    statements
  • Semantics a set of rules for interpreting the
    meaning of a valid statement

28
Kinds of Languages
  • Natural languages used in human communication
  • Programming languages (also known as formal
    languages) used by computers (among others)

29
Natural Languages 1
  • Examples English, Chinese, Swahili, Navajo,
    Quechua, Maori
  • Typically can be described by formal rules
    (grammar), but often are not rigidly governed by
    these rules in everyday use
  • Any noun can be verbed.
  • I might could get me one o them there
    computers.

30
Natural Languages 2
  • Can mix words from different languages and even
    syntax (elements of grammar) from different
    languages in a single sentence
  • Hey, amigo, is it all right by you if I kibbitz
    your parcheesi game while we watch your anime?

31
Natural Languages 3
  • Can be ambiguous
  • When did he say she was going?
  • could be interpreted as
  • State the time at which he said, She was going.
  • According to him, at what time was she going?

32
Natural Languages 4
  • Plenty of flexibility regarding correctness
    e.g., aint, split infinitives, ending a
    sentence with a preposition
  • That is something up with which I will not put.

33
Programming Languages
  • Examples C, Java, HTML, Haskell, Prolog, SAS
  • Also known as formal languages
  • Completely described and rigidly governed by
    formal rules
  • Cannot mix the words of multiple languages, or
    the syntax of multiple languages, in the same
    program
  • Cannot be ambiguous
  • Words and syntax must be EXACTLY correct in every
    way

34
Natural Languages vs Programming Languages
PROPERTY NATL PROG
Completely described and rigidly governed by formal rules N Y
CAN mix the words of multiple languages, or the syntax of multiple languages, in the same program Y N
CAN be ambiguous Y N
Words and syntax must be EXACTLY correct in every way N Y
35
Programming Language Hierarchy
  • High Level Languages
  • Assembly Languages
  • Machine Languages

36
High Level Languages
  • Human-readable
  • Most are standardized, so they can be used on
    just about any kind of computer.
  • Examples C, Fortran 90, Java, HTML, Haskell, SAS
  • Typically they are designed for a particular kind
    of application for example
  • C for operating system design
  • Fortran 90 for scientific engineering
    applications
  • Java for web applets and embedded systems
  • HTML for hypertext (webpages)
  • SAS for statistics
  • But often, their uses in real life are broader
    their original purpose.

37
Assembly Languages
  • Human-readable
  • Specific to a particular CPU family for example
  • Intel Pentium4/AMD Athlon XP (PC)
  • Motorola PowerPC G5 (Macintosh)
  • Intel Itanium2 (servers)
  • So, for example, a program in Pentium4 assembly
    language cannot be directly run on a G5 machine.
  • Set of simple commands for example
  • Load a value from a location in main memory
  • Add two numbers
  • Branch to an instruction out of sequence

38
Machine Languages
  • Not human-readable, except with immense effort
  • Binary code that the CPU family understands
    directly
  • Binary representation of the CPU familys
    assembly language

39
Converting Between Languages
  • Compilers, interpreters and assemblers are
    programs that convert programs that people can
    read into actions that computers can perform.

40
Compiler
  • Converts a human-readable high level language
    source code of a program into a machine language
    executable program
  • Converts an entire source code all at once
  • Must be completed before executing the program
  • Examples Fortran 90, C, C, Pascal

41
Interpreter
  • Converts a human-readable high level language
    source code into actions that are immediately
    performed
  • Converts and executes one statement at a time
  • Conversion and execution alternate
  • Examples Perl, HTML, SAS, Mathematica, Unix
    shell (interactive system within Unix)

42
Assembler
  • Converts a human-readable CPU-specific assembly
    code into CPU-specific machine language
  • Like a compiler, but for a low level assembly
    language instead of for a high level language

43
Our Old Friend hello_world.c
  • cat hello_world.c
  • /

  • Program hello_world
  • Author Henry Neeman (hneeman_at_ou.edu)
  • Course CS 1313 010 Fall 2005
  • Lab Sec 011 Fridays 930am
  • Description Prints the sentence
  • "Hello, world!" to standard output.

  • /
  • include ltstdio.hgt
  • int main ()
  • / main /
  • /
  • Execution Section (body)

44
Compiler Details
45
Compiler Details (contd)
46
Elements of a Compiler 1
  • Lexical Analyzer identifies programs word
    elements
  • Comments (ignored by compiler)
  • Keywords (e.g., int, while)
  • Constants (e.g., 5, 0.725, "Hello, world!")
  • User-defined Identifiers (e.g., addend)
  • Operators for example
  • Arithmetic - /
  • Relational ! lt lt gt gt
  • Logical !

47
Elements of a Compiler 2
  • Parser determines the programs grammar
  • Semantic Analyzer determines what the program
    does
  • Intermediate Code Generator expresses, as an
    assembly-like program, what the program does
  • Optimizer makes code more efficient (faster)
  • Assembly Code Generator produces the final
    assembly code that represents what the program
    does

48
Phases of Compiling
  • Compiler
  • Assembler turns assembly code into machine code
  • Linker/loader turns machine code into an
    executable file
  • Both the assembler and the linker/loader are
    invoked automatically by the compiler, so you
    dont have to worry about them.

49
Compiling a C Statement
50
Assembly Code for hello_world.c 1
  • On Pentium4 Using gcc
  • pushl ebp
  • movl esp, ebp
  • subl 8, esp
  • subl 12, esp
  • pushl .LC0
  • call printf
  • addl 16, esp
  • leave
  • ret
  • On IBM POWER4 Using gcc
  • mflr 0
  • stw 31,-4(1)
  • stw 0,8(1)
  • stwu 1,-64(1)
  • mr 31,1
  • lwz 3,LC..1(2)
  • bl .printf
  • nop
  • lwz 1,0(1)
  • lwz 0,8(1)
  • mtlr 0
  • lwz 31,-4(1)
  • blr

Different opcodes!
51
Assembly Code for hello_world.c 2
  • On Pentium4 Using gcc
  • (GNU compiler)
  • pushl ebp
  • movl esp, ebp
  • subl 8, esp
  • subl 12, esp
  • pushl .LC0
  • call printf
  • addl 16, esp
  • leave
  • ret
  • On Pentium4 Using icc
  • (Intel compiler)
  • pushl ebp
  • movl esp, ebp
  • subl 3, esp
  • andl -8, esp
  • addl 4, esp
  • push __STRING.0
  • call printf
  • xorl eax, eax
  • popl ecx
  • movl ebp, esp
  • popl ebp
  • ret

Different sequences of instructions!
52
Machine Code for hello_world.c
  • 10111101010100010101011110101001
  • 10111010101000010101101011101000
  • 01110101010000101011010111010001
  • 01010100101010101101010101011010
  • ...

53
How to Program in Machine Language Directly
  • Write the assembly code for the program directly
    by hand i.e., not in a high level language.
  • For each assembly language instruction, look up
    the bit pattern of the associated machine code.
  • On the computer console, flip switches to match
    the bit pattern of the machine code.
  • Press the Run button.
  • Actually, on modern computers, programming
    directly in machine language is just about
    impossible.

54
Why Not Do Everything in Machine Language?
Incredibly tedious and ridiculously error-prone!
Fun and easy! Not nearly as tedious or
error-prone!
55
Why Not Do Everything in Assembly Language?
Cant be run on any other kind of computer. May
be completely obsolete in a few years.
Portable to many kinds of computers. Will still
be useable in 20 years (legacy codes).
56
The Programming Process
Compile
Formulate Problem
Yes
Debug
Construct Algorithm
No
Choose Programming Language
Run
Yes
Write Program
No
57
What is an Algorithm?
  • An algorithm is
  • a step-by-step method
  • that is written in a natural language (e.g.,
    English) or in pseudocode (something that sort of
    looks like a programming language but isnt as
    precise), rather than in a programming language,
  • that solves a well-defined (but not necessarily
    useful) problem
  • on a well-defined set of inputs (which may be
    empty),
  • using finite resources (e.g., computing time and
    memory)
  • and that produces a well-defined set of outputs
    (which may be empty).

58
Algorithms
  • An algorithm is a language-independent way of
    expressing the method of solving a problem that
    is, an algorithm could be expressed in two
    different languages (e.g., English and Japanese)
    and still be the same algorithm.
  • A program, by contrast, is a language-dependent
    implementation of the method of solving a
    problem that is, the same set of steps expressed
    in two different programming languages would be
    two different programs, even if the two programs
    accomplished exactly the same result.
  • Many programs, but not all programs, implement
    algorithms.

59
Algorithm Example Eating a Bowl of Corn Flakes
  • Get bowl from cupboard
  • Get spoon from drawer
  • Get box of corn flakes from pantry
  • Get jug of milk from refrigerator
  • Place bowl, spoon, corn flakes and milk on table
  • Open box of corn flakes
  • Pour corn flakes from box into bowl
  • Open jug of milk
  • Pour milk from jug into bowl
  • Close jug of milk
  • Go to table
  • Pick up spoon
  • Repeat until bowl is empty of corn flakes
  • Using spoon, pick up corn flakes and milk from
    bowl
  • Put spoon with corn flakes and milk into mouth
  • Pull spoon from mouth, leaving corn flakes and
    milk
  • Repeat ...
  • Chew
  • ... until mouthful is mush
  • Swallow
  • Leave mess for housemates to clean up

60
Top-Down Design
  • Algorithms for most non-trivial problems tend to
    be fairly complicated.
  • As a result, it may be difficult to march from an
    algorithms beginning to its end in a straight
    line, because there may be too many details to
    keep in your head all at one time.
  • Instead, you can use a technique called top-down
    design start with the whole problem, then break
    it into a few pieces, then break each of those
    pieces into a few pieces, then break each of
    those pieces into a few pieces, and so on, until
    each piece is pretty small.

61
Eating Cornflakes Top Level
  • Get stuff
  • Transport stuff
  • Set up stuff
  • Eat
  • Finish
Write a Comment
User Comments (0)
About PowerShow.com