Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lecture 2 Introduction to C Programming Arne Kutzner Hanyang University / Seoul Korea.

Similar presentations


Presentation on theme: "Lecture 2 Introduction to C Programming Arne Kutzner Hanyang University / Seoul Korea."— Presentation transcript:

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


Download ppt "Lecture 2 Introduction to C Programming Arne Kutzner Hanyang University / Seoul Korea."

Similar presentations


Ads by Google