Introduction Programming with C CSCI 112, Spring 2015 Patrick - - PowerPoint PPT Presentation

introduction
SMART_READER_LITE
LIVE PREVIEW

Introduction Programming with C CSCI 112, Spring 2015 Patrick - - PowerPoint PPT Presentation

Introduction Programming with C CSCI 112, Spring 2015 Patrick Donnelly Montana State University Introduction What is Computer Programming? Programming with C (CSCI 112) Spring 2015 2 / 15 Introduction What is Computer Programming?


slide-1
SLIDE 1

Introduction

Programming with C

CSCI 112, Spring 2015

Patrick Donnelly

Montana State University

slide-2
SLIDE 2

Introduction

What is Computer Programming?

Programming with C (CSCI 112) Spring 2015 2 / 15

slide-3
SLIDE 3

Introduction

What is Computer Programming?

  • problem-solving or “puzzle solving”

Programming with C (CSCI 112) Spring 2015 2 / 15

slide-4
SLIDE 4

Introduction

What is Computer Programming?

  • problem-solving or “puzzle solving”
  • translation of a problem to an executable computer program

Programming with C (CSCI 112) Spring 2015 2 / 15

slide-5
SLIDE 5

Introduction

What is Computer Programming?

  • problem-solving or “puzzle solving”
  • translation of a problem to an executable computer program
  • designing, writing, testing, debugging, and maintaining the

source code of computer program

Programming with C (CSCI 112) Spring 2015 2 / 15

slide-6
SLIDE 6

Introduction

What is Computer Programming?

  • problem-solving or “puzzle solving”
  • translation of a problem to an executable computer program
  • designing, writing, testing, debugging, and maintaining the

source code of computer program

  • combination of high-level design and low-level implementation

details

Programming with C (CSCI 112) Spring 2015 2 / 15

slide-7
SLIDE 7

Stages of Problem Solving

Goal: use a computer to solve a problem Typical stages of building a solution:

1 Specify the problem 2 Analyze the problem 3 Design an algorithm to solve the problem 4 Implement the algorithm (write the program) 5 Test and verify the completed program 6 Maintain and update the program

Programming with C (CSCI 112) Spring 2015 3 / 15

slide-8
SLIDE 8

Low Level vs High Level Languages

High Level Languages

  • Uses algebraic expressions and symbols from natural languages.
  • These languages are human-friendly and farther from machine

language.

  • Examples: C, Java, Python

Assembly Language

  • Uses mnemonic codes to represent machine language instructions.
  • This is a low-level language, very close to machine language.

Machine Language

  • A collection of 0’s and 1’s that can be interpretted by the processor.
  • There is a different machine language for every processor family.

Programming with C (CSCI 112) Spring 2015 4 / 15

slide-9
SLIDE 9

Code Examples

C Code Assembly Code Machine Code (Hex Representation)

Programming with C (CSCI 112) Spring 2015 5 / 15

slide-10
SLIDE 10

Review: Bits and Bytes

BIT

  • Name comes from BInary digiT.
  • It is either a 0 or a 1.

Byte

  • A collection of bits big enough to represent a single character.
  • Typically bytes consist of 8 bits.

Example

10110101 11010010 10010100 10100110 11010010 10100110 A B C D B D

Programming with C (CSCI 112) Spring 2015 6 / 15

slide-11
SLIDE 11

Review: Memory Cells

There are many different types of memory available in a computer system. Regardless

  • f the type, we can view the memory as an

array of addressable cells.

  • A memory cell is an individual storage

space in memory.

  • The address of a memory cell can be

thought of as an index into this memory array.

  • The contents of a memory cell is the

data stored at that location.

Programming with C (CSCI 112) Spring 2015 7 / 15

slide-12
SLIDE 12

Review: Memory Cells

Every memory cell always has content.

  • The content of a cell can either be a

program instruction or data.

  • We as programmers are required to

correctly interpret memory cell contents.

Example Cell Contents

  • 285
  • -29.6
  • 0.02
  • T
  • $
  • MOV

Programming with C (CSCI 112) Spring 2015 8 / 15

slide-13
SLIDE 13

C Language

Designed by: Dennis Richie Appeared in: 1972 Bell Labs Paradigm: imperative Extension: .c, .h Influenced by: ALGOL, Assembly, PL/I, FORTRAN Features: powerful set of operators poor type checking fast run time performance useful for lower-level systems programming unchecked access to computer memory Domains: designed as a systems language used in many application areas Contributions: syntax influence is pervasive

Programming with C (CSCI 112) Spring 2015 9 / 15

slide-14
SLIDE 14

C gcd Function

int gcd_iter(int u, int v) { int t; while (v) { t = u; u = v; v = t % v; } return u < 0 ? -u : u; /* abs(u) */ }

Programming with C (CSCI 112) Spring 2015 10 / 15

slide-15
SLIDE 15

The C Programming Language

Features

  • Low-level access to computer memory via machine addresses.
  • Low-level (bit-wise) programming available.
  • Good compilers for all platforms.
  • Libraries provided by American National Standards Institute (ANSI).

Implications

  • The resulting machine code is compact, efficient, and natively run.
  • Programs can be extremely fast, and as a result is the most

commonly used language for writing system software.

  • C places a lot of trust in, and provides freedom to, programmers.
  • C does not protect you from yourself, so be careful!

Programming with C (CSCI 112) Spring 2015 11 / 15

slide-16
SLIDE 16

What C Does Not Do

  • No Objects (but they are in C++)
  • No native support for multithreading and networking

(although there are popular libraries for these).

  • No standard libraries for graphics and other (now common)

programming needs.

  • Limited error detection.
  • No garbage collector.
  • No bounds checking of arrays and allocated memory segments.
  • No standards for exception handling.

Programming with C (CSCI 112) Spring 2015 12 / 15

slide-17
SLIDE 17

Compiling

Compilation: The process of translating the source code (high-level) into executable code (machine-level). Source File: A file containing the program code. A compiler turns the Source File into an Object File. Object File: A file containing machine language instructions. A linker turns the Object File into an Executable File. Executable File: This is the binary file readable by the machine. This is what is typically referred to as the “program”.

Programming with C (CSCI 112) Spring 2015 13 / 15

slide-18
SLIDE 18

The Compiler

Integrated Development Environment (IDE)

  • IDE’s allow you to edit code and compile in the same environment.
  • Editing/debugging features to make programming easier.
  • Commercial IDEs like Visual Studio and Borland can be expensive.
  • There are open source projects like Eclipse and Netbeans that

usually work quite well.

  • We will not use an IDE for this course.

The GCC Compiler

  • We will be using the GCC command line tool for this course.
  • GCC is a free and extremely powerful C compiler.
  • It has been optimized for years and is quite simple to use.

Programming with C (CSCI 112) Spring 2015 14 / 15

slide-19
SLIDE 19

Programming with C (CSCI 112) Spring 2015 15 / 15