Lecture 2 Introduction to C Programming Arne Kutzner Hanyang University / Seoul Korea.
-
Upload
brent-dalton -
Category
Documents
-
view
225 -
download
1
Transcript of Lecture 2 Introduction to C Programming Arne Kutzner Hanyang University / Seoul Korea.
Introduction to C Programming L2.2
This 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
Introduction to C Programming L2.4
Computers 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.
Introduction to C Programming L2.5
Examples of “fixed program computers”
• Colossus Mark I (Dec. 1943) / Colossus Mark II (June 1944)
INFO in the Web: http://en.wikipedia.org/wiki/Colossus_computer
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))
Introduction to C Programming L2.6
Von Neumann Architecture (proposed 1945)
Memory
Control UnitArithmetic Logic
Unit
Accumulator
Input Output
Introduction to C Programming L2.7
Von Neumann Architecture (2)
• The Control Unit “understands” instructions like e.g. copy data from the memory to the accumulator => 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
Introduction to C Programming L2.8
Von Neumann Architecture (3)
• Von Neumann’s approach was revolutionary because:He 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
Introduction to C Programming L2.9
Structure of Memory
• Ordered sequence of storage locations called memory cells.
• Each memory cell is identified by a unique address
43
87
06
00
12
0000
0001
0002
0003
0004
000005
Addresses Memory Cells
Content of a memory cell
Introduction to C Programming L2.10
Instruction representation
• Instruction are encoded using sequences of bits
• Example PDP-11(single operand instructions):
15
6 5 3 2 0
OP-Code Mode Register
3 bit3 bit10 bit16 bit = 2 byte
INFO in the Web: http://en.wikipedia.org/wiki/PDP-11
Introduction to C Programming L2.11
Computer nowadays?• Almost all modern computer have still a
Von Neumann Architecture
Main Memory
Input Output
CPU
Introduction to C Programming L2.13
Assembler 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”
Introduction to C Programming L2.14
Assembler and Programming Languages
• Assembler was the first form of some primitive (low-level) programming language
• Definition:A programming language is a set of rules that provides a way of telling a computer what operations to perform.
Introduction to C Programming L2.15
Disadvantages of Assembler Code
• Low level of abstraction– Code is processor (vendor)-specific
Therefore: Non portable
• The code is unstructured– Difficult to read– Risk of “spaghetti-structure”
• Time intensive to learn and to program
Introduction to C Programming L2.16
High-level Programming Languages
• The wish for some programming medium that is more abstract than assembler lead to the development of High-level Programming Languages
• Definition:A 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.
Introduction to C Programming L2.17
Early high-level programming languages
• Fortran:For programming in the scientific area (number crunching)
• Cobol:For programming of business applications (e.g. banking applications)
• Lisp:Development originally motivated be research in the Artificial Intelligence area
Introduction to C Programming L2.18
Fortran Code Examplec23456789012345678901234567890123456789012345678901234567890123456789012
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 *, radPRINT *, rad, ' is the value of the radius. '
c Compute the surface area and volume of the sphere.area = 4.0 * pi * rad**2volume = (4.0/3.0) * pi * rad**3
c 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, '. '
STOPEND
Introduction to C Programming L2.19
COBOL 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.
Introduction to C Programming L2.21
Why 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
Introduction to C Programming L2.22
Characteristics 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
Introduction to C Programming L2.24
Binary Numbers
• A sequence of 1s and 0s can be interpreted as a decimal numbere.g. 101 = 1*22 +0*21 +1*20 = 5
• These type of number (0 and 1 represented) is called Binary Number
Introduction to C Programming L2.25
8 bits = 1 Byte
• Todays computer architectures are based on a 8 bits (= 1 Byte) approach.– E.g. one memory cell has nowadays 1 Byte
1 0 1 0 1 1 0 0 = 172
7 6 5 4 3 2 1 0
Introduction to C Programming L2.26
Hexadecimal 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
decimal binary hex
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
Introduction to C Programming L2.27
Hexadecimal Numbers (2)
• Example:
0 1 1 0 1 1 1 0 1 1 1 0 0 1 1 1
6 E E 7
28391
binary
hex
decimal
8 bit (1 Byte) 8 bit (1 Byte)
16 bit
Introduction to C Programming L2.28
Exercise
• What is the number 01000111 in decimal notation?
• What is the number 156 in hexadecimal notation?
Introduction to C Programming L2.29
Characters and Numbers
• Using a Code Table numbers can be mapped to characters of some alphabet.Example (part of the ASCII table):
Character Code (decimal)
‘A’ 65
‘B’ 66
‘C’ 67
‘D’ 68
Introduction to C Programming L2.30
Sequences of Characters (Strings)
• Text is represented as a sequence of characters (numbers)
• Such sequences are called Strings
• Example:
H E L L O
72 69 76 76 79The Text "Hello" as sequence of characters (numbers)
Introduction to C Programming L2.32
Algorithms - Introduction
• In order to solve some problem, we need some description how to solve it.E.g. Cooking some eggs:How to cook eggs?1. Put some water into a pot2. Heat the water until it cooks3. Put the eggs into the water4. Wait 3 Minutes 5. Take the eggs out of the pot and cool them under floating
water
• Such a description of a problem solution is called an Algorithm
Introduction to C Programming L2.33
Algorithms described as Flowcharts
put water into pot
Heat water
Water cooking ?
Wait 3 Minutes
No
Yes
Water in pot ?
Yes
No
Take eggs out of pot
Cool the eggs
START
END
Our “Cook-eggs”-Algorithm as Flowchart:
Introduction to C Programming L2.34
Flowchart Atoms
• Statement – Some operation as e.g. “put the eggs into water”
put water into pot
Statement
Introduction to C Programming L2.35
Flowchart Atoms (cont.)
• Condition: Some yes/no question (condition). Depending on the answer Yes (True) or No (False) we go different ways.
ConditionNo
Yes
Introduction to C Programming L2.36
Combined Flowchart Constructs
• If/else – alternative: Construct where select on of two alternative sequences of statements, depending on the result of the condition
ConditionYes No
Statement
Statement
Statement
Statement
if side else side
Introduction to C Programming L2.37
Combined Flowchart Constructs (cont.)
• If/else example: (Here we do nothing on one side, but this is ok)
put water into pot
Water in pot ?
Yes
No
Introduction to C Programming L2.38
Combined Flowchart Constructs (cont.)
• Loop: Special construct with a Condition where one alternative of the Condition creates a circular flow
Statement n
Question
Statement 1
Introduction to C Programming L2.39
Combined Flowchart Constructs (cont.)
• Loop Example:
Heat water
Water not cooking ?YES
Introduction to C Programming L2.40
Algorithmic Description
• Solutions for all realistic Problems can be algorithmically described by combing the introduced elements:
–Statements
–If/else alternatives
–Loops
Introduction to C Programming L2.41
Variables
• Variables are named containers that store some type of data, e.g. a number.Example:
read x from user input
x 0
user input is 93
x 93
Variable x Value of x
User input is typically something typed on the keyboard
Introduction to C Programming L2.42
Variables in Flowcharts
• Example: Calculation of the maximum of two numbers:
read x from user input
read y from user input
x > y
set max to xset max to y
print max on output
YesNo