Title: Lecture 2 Introduction to C Programming
1Lecture 2Introduction to C Programming
- Arne Kutzner
- Hanyang University / Seoul Korea
2This week
- You will learn
- From the first Computers to the C Programming
Languages - Von Neumann Architecture
- The Idea of binary computing
- Origins of Programming Languages
- About Flowcharts and Algorithms
3Von Neumanns Computer Architecture
- Foundations of modern Computers and their
Programming
4Computers until the second world war and before
- The earliest computing machines had fixed
programs. - The earliest computers were not so much
"programmed" as they were "designed". - "Reprogramming", when it was possible at all, was
a laborious process, starting with flow charts
and paper notes, followed by detailed engineering
designs, and then the often arduous process of
physically rewiring and rebuilding the machine.
5Examples of fixed program computers
- Colossus Mark I (Dec. 1943) / Colossus Mark II
(June 1944)
Purpose Message Decoding during World War 2
(was used to help decipher teleprinter messages
which had been encrypted using the Lorenz SZ40/42
machine (Enigma))
INFO in the Web http//en.wikipedia.org/wiki/Colo
ssus_computer
6Von Neumann Architecture (proposed 1945)
Memory
Control Unit
Arithmetic Logic Unit
Accumulator
Input
Output
7Von Neumann Architecture (2)
- The Control Unit understands instructions like
e.g. copy data from the memory to the accumulator
gt Instruction Set Architecture - The Arithmetic Logic Unit performs arithmetic
operations and Boolean operations. - The Memory stores data and Program (Series of
control unit instructions - The Input takes data in form of an data stream
from some medium - The Output receives data in form of data stream
and delivers them to some output medium
8Von Neumann Architecture (3)
- Von Neumanns approach was revolutionary
becauseHe created an instruction set
architecture and detailed the computation as the
execution of a series of instructions (the
program) stored in the memory. - Program and data share the memory !!
- Highly flexible computer design
9Structure of Memory
Addresses
Memory Cells
- Ordered sequence of storage locations called
memory cells. - Each memory cell is identified by a unique address
43
0000
87
0001
06
0002
00
0003
12
0004
00
0005
Content of a memory cell
10Instruction representation
- Instruction are encoded using sequences of bits
- Example PDP-11(single operand instructions)
INFO in the Web http//en.wikipedia.org/wiki/PDP-
11
16 bit 2 byte
10 bit
3 bit
3 bit
11Computer nowadays?
- Almost all modern computer have still a Von
Neumann Architecture
CPU
12How to program von Neumann computer ?
13Assembler Code
- Sequence of processor instructions in human
readable text-form this is called Assembler
Code - Example for PDP-11 Assembler Code
.TITLE HELLO WORLD .MCALL
.TTYOUT,.EXIT HELLO MOV MSG,R1 STARTING
ADDRESS OF STRING1 MOVB (R1),R0 FETCH
NEXT CHARACTER BEQ DONE IF ZERO,
EXIT LOOP .TTYOUT OTHERWISE
PRINT IT BR 1 REPEAT
LOOPDONE .EXIT MSG .ASCIZ /Hello,
world!/ .END HELLO
This PDP-11 Assembler Code prints Hello World
14Assembler and Programming Languages
- Assembler was the first form of some primitive
(low-level) programming language - DefinitionA programming language is a set of
rules that provides a way of telling a computer
what operations to perform.
15Disadvantages of Assembler Code
- Low level of abstraction
- Code is processor (vendor)-specificTherefore
Non portable - The code is unstructured
- Difficult to read
- Risk of spaghetti-structure
- Time intensive to learn and to program
16High-level Programming Languages
- The wish for some programming medium that is more
abstract than assembler lead to the development
of High-level Programming Languages - DefinitionA high-level programming language is
a programming language that, in comparison to
low-level programming languages, may be more
abstract, easier to use, or more portable across
platforms.
17Early high-level programming languages
- FortranFor programming in the scientific area
(number crunching) - CobolFor programming of business applications
(e.g. banking applications) - LispDevelopment originally motivated be
research in the Artificial Intelligence area
18Fortran Code Example
c2345678901234567890123456789012345678901234567890
1234567890123456789012 PROGRAM spherec This
program determines the surface area and volume of
a sphere, given c its radius.c Variable
declarations REAL rad, area, volume, pic
Definition of variablesc rad radius, area
surface area, volume volume of the spherec
Assign a value to the variable pi. pi
3.141593c Input the value of the radius and
echo the inputted value. PRINT , 'Enter the
radius of the sphere. ' READ , rad PRINT ,
rad, ' is the value of the radius. 'c Compute
the surface area and volume of the sphere. area
4.0 pi rad2 volume (4.0/3.0) pi
rad3c Print the values of the radius (given
in cm), the surface area (sq cm),c and the
volume (cubic cm). PRINT ,'In a sphere of
radius', rad, ' , the surface area is',
area, ' and its volume is', volume, '.
' STOP END
19COBOL Code Example
SET SOURCEFORMAT"FREE"IDENTIFICATION
DIVISION.PROGRAM-ID. Multiplier.AUTHOR.
Michael Coughlan. Example program using ACCEPT,
DISPLAY and MULTIPLY to get two single digit
numbers from the user and multiply them
together DATA DIVISION. WORKING-STORAGE
SECTION.01 Num1
PIC 9 VALUE ZEROS.01 Num2
PIC 9 VALUE ZEROS.01 Result
PIC 99 VALUE ZEROS. PROCEDURE
DIVISION. DISPLAY "Enter first number (1
digit) " WITH NO ADVANCING. ACCEPT Num1.
DISPLAY "Enter second number (1 digit) " WITH
NO ADVANCING. ACCEPT Num2. MULTIPLY Num1
BY Num2 GIVING Result. DISPLAY "Result is
", Result. STOP RUN.
20Programming Languages
21Why was C created ?
- The origin of C is closely tied to the
development of the Unix operating system - Originally Unix was implemented in Assembler for
the PDP-7 (1970) - 1973 Unix was rewritten for the PDP-11
architecture using the newly developed C
Programming Language - An older language B was unsuitable for this
purpose due to some language design lacks
22Characteristics of C
- Primitive but fast
- Quite low-level compared to e.g. Java
- Some people say More or less like assembler but
independent of any specific instruction set - Strange and quite cryptic syntax
- Difficult to grasp
23The Idea of Binary Computing
- Binary Number, Hexadecimal Number and the
encoding of characters
24Binary Numbers
- A sequence of 1s and 0s can be interpreted as a
decimal numbere.g. 101 122 021 120 5 - These type of number (0 and 1 represented) is
called Binary Number
258 bits 1 Byte
- Todays computer architectures are based on a 8
bits ( 1 Byte) approach. - E.g. one memory cell has nowadays 1 Byte
7
6
5
4
3
2
1
0
1
0
1
0
1
1
0
0
172
26Hexadecimal Numbers (1)
- Counting on the foundation of 16 digits (0 F)
- Reasonable in the context of the decomposition of
binary number into blocks of 4 bits
27Hexadecimal Numbers (2)
16 bit
8 bit (1 Byte)
8 bit (1 Byte)
binary
hex
decimal
28Exercise
- What is the number 01000111 in decimal notation?
- What is the number 156 in hexadecimal notation?
29Characters and Numbers
- Using a Code Table numbers can be mapped to
characters of some alphabet.Example (part of the
ASCII table)
30Sequences of Characters (Strings)
- Text is represented as a sequence of characters
(numbers) - Such sequences are called Strings
- Example
The Text "Hello" as sequence of characters
(numbers)
31Algorithms and Flowcharts
- Binary Number, Hexadecimal Number and the
encoding of characters
32Algorithms - Introduction
- In order to solve some problem, we need some
description how to solve it.E.g. Cooking some
eggsHow to cook eggs? - Put some water into a pot
- Heat the water until it cooks
- Put the eggs into the water
- Wait 3 Minutes
- Take the eggs out of the pot and cool them under
floating water - Such a description of a problem solution is
called an Algorithm
33Algorithms described as Flowcharts
START
Our Cook-eggs-Algorithm as Flowchart
No
Water in pot ?
put water into pot
Yes
Wait 3 Minutes
Heat water
Take eggs out of pot
Water cooking ?
No
Cool the eggs
Yes
END
34Flowchart Atoms
Statement
- Statement Some operation as e.g. put the eggs
into water
put water into pot
35Flowchart Atoms (cont.)
No
Condition
Yes
- Condition Some yes/no question (condition).
Depending on the answer Yes (True) or No (False)
we go different ways.
36Combined Flowchart Constructs
Yes
No
Condition
if side
else side
Statement
Statement
Statement
Statement
- If/else alternative Construct where select on
of two alternative sequences of statements,
depending on the result of the condition
37Combined Flowchart Constructs (cont.)
- If/else example (Here we do nothing on one side,
but this is ok)
No
Water in pot ?
put water into pot
Yes
38Combined Flowchart Constructs (cont.)
Statement 1
Statement n
Question
- Loop Special construct with a Condition where
one alternative of the Condition creates a
circular flow
39Combined Flowchart Constructs (cont.)
Heat water
Water not cooking ?
YES
40Algorithmic Description
- Solutions for all realistic Problems can be
algorithmically described by combing the
introduced elements - Statements
- If/else alternatives
- Loops
41Variables
- Variables are named containers that store some
type of data, e.g. a number.Example
Variable x
Value of x
x
0
read x from user input
user input is 93
x
93
User input is typically something typed on the
keyboard
42Variables in Flowcharts
- Example Calculation of the maximum of two
numbers
read x from user input
read y from user input
Yes
No
x gt y
set max to x
set max to y
print max on output
43Exercise
- Take a piece of paper and draw a flowchart that
- reads the value of three variables x and y and z
- calculates the minimum of the three variables
read before