Download presentation
Presentation is loading. Please wait.
Published byBrent Dalton Modified over 9 years ago
1
Lecture 2 Introduction to C Programming Arne Kutzner Hanyang University / Seoul Korea
2
Introduction to C ProgrammingL2.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
3
Von Neumann’s Computer Architecture Foundations of modern Computers and their Programming
4
Introduction to C ProgrammingL2.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.
5
Introduction to C ProgrammingL2.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_computerhttp://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))
6
Introduction to C ProgrammingL2.6 Von Neumann Architecture (proposed 1945) Memory Control Unit Arithmetic Logic Unit Accumulator InputOutput
7
Introduction to C ProgrammingL2.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
8
Introduction to C ProgrammingL2.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
9
Introduction to C ProgrammingL2.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 00 0005 AddressesMemory Cells Content of a memory cell
10
Introduction to C ProgrammingL2.10 Instruction representation Instruction are encoded using sequences of bits Example PDP-11(single operand instructions): 1515 65320 OP-CodeModeRegister 3 bit 10 bit 16 bit = 2 byte INFO in the Web: http://en.wikipedia.org/wiki/PDP-11http://en.wikipedia.org/wiki/PDP-11
11
Introduction to C ProgrammingL2.11 Computer nowadays? Almost all modern computer have still a Von Neumann Architecture Main Memory InputOutput CPU
12
How to program “von Neumann” computer ?
13
Introduction to C ProgrammingL2.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 STRING 1$: MOVB (R1)+,R0 ;FETCH NEXT CHARACTER BEQ DONE ;IF ZERO, EXIT LOOP.TTYOUT ;OTHERWISE PRINT IT BR 1$ ;REPEAT LOOP DONE:.EXIT MSG:.ASCIZ /Hello, world!/.END HELLO This PDP-11 Assembler Code prints “Hello World”
14
Introduction to C ProgrammingL2.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.
15
Introduction to C ProgrammingL2.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
16
Introduction to C ProgrammingL2.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.
17
Introduction to C ProgrammingL2.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
18
Introduction to C ProgrammingL2.18 Fortran Code Example c23456789012345678901234567890123456789012345678901234567890123456789012 PROGRAM sphere c This program determines the surface area and volume of a sphere, given c its radius. c Variable declarations REAL rad, area, volume, pi c Definition of variables crad = radius, area = surface area, volume = volume of the sphere c Assign a value to the variable pi. pi = 3.141593 c 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 * rad**2 volume = (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, '. ' STOP END
19
Introduction to C ProgrammingL2.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.
20
Introduction to C ProgrammingL2.20 Programming Languages
21
Introduction to C ProgrammingL2.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
22
Introduction to C ProgrammingL2.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
23
The Idea of Binary Computing Binary Number, Hexadecimal Number and the encoding of characters
24
Introduction to C ProgrammingL2.24 Binary Numbers A sequence of 1s and 0s can be interpreted as a decimal number e.g. 101 = 1*2 2 +0*2 1 +1*2 0 = 5 These type of number (0 and 1 represented) is called Binary Number
25
Introduction to C ProgrammingL2.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 10101100 = 172 76543210
26
Introduction to C ProgrammingL2.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 decimalbinaryhex 000000 100011 200102 300113 401004 501015 601106 701117 810008 910019 101010A 111011B 121100C 131101D 141110E 151111F
27
Introduction to C ProgrammingL2.27 Hexadecimal Numbers (2) Example: 0110111011100111 6EE7 28391 binary hex decimal 8 bit (1 Byte) 16 bit
28
Introduction to C ProgrammingL2.28 Exercise What is the number 01000111 in decimal notation? What is the number 156 in hexadecimal notation?
29
Introduction to C ProgrammingL2.29 Characters and Numbers Using a Code Table numbers can be mapped to characters of some alphabet. Example (part of the ASCII table): CharacterCode (decimal) ‘A’65 ‘B’66 ‘C’67 ‘D’68
30
Introduction to C ProgrammingL2.30 Sequences of Characters (Strings) Text is represented as a sequence of characters (numbers) Such sequences are called Strings Example: HELLO 726976 79 The Text "Hello" as sequence of characters (numbers)
31
Algorithms and Flowcharts Binary Number, Hexadecimal Number and the encoding of characters
32
Introduction to C ProgrammingL2.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 pot 2.Heat the water until it cooks 3.Put the eggs into the water 4.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
33
Introduction to C ProgrammingL2.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:
34
Introduction to C ProgrammingL2.34 Flowchart Atoms Statement – Some operation as e.g. “put the eggs into water” put water into pot Statement
35
Introduction to C ProgrammingL2.35 Flowchart Atoms (cont.) Condition: Some yes/no question (condition). Depending on the answer Yes (True) or No (False) we go different ways. Condition No Yes
36
Introduction to C ProgrammingL2.36 Combined Flowchart Constructs If/else – alternative: Construct where select on of two alternative sequences of statements, depending on the result of the condition Condition YesNo Statement if sideelse side
37
Introduction to C ProgrammingL2.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
38
Introduction to C ProgrammingL2.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
39
Introduction to C ProgrammingL2.39 Combined Flowchart Constructs (cont.) Loop Example: Heat water Water not cooking ? YES
40
Introduction to C ProgrammingL2.40 Algorithmic Description Solutions for all realistic Problems can be algorithmically described by combing the introduced elements: –Statements –If/else alternatives –Loops
41
Introduction to C ProgrammingL2.41 Variables Variables are named containers that store some type of data, e.g. a number. Example: read x from user input x0 user input is 93 x93 Variable xValue of x User input is typically something typed on the keyboard
42
Introduction to C ProgrammingL2.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
43
Introduction to C ProgrammingL2.43 Exercise Take a piece of paper and draw a flowchart that: 1.reads the value of three variables x and y and z 2.calculates the minimum of the three variables read before
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.