430 likes | 571 Views
Lecture 2 Introduction to C Programming. Arne Kutzner Hanyang University / Seoul Korea. 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
E N D
Lecture 2Introduction to C Programming Arne Kutzner Hanyang University / Seoul Korea
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
Von Neumann’s Computer Architecture Foundations of modern Computers and their Programming
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
Examples 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/Colossus_computer Introduction to C Programming
Von Neumann Architecture (proposed 1945) Memory Control Unit Arithmetic Logic Unit Accumulator Input Output Introduction to C Programming
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
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
Structure of Memory Addresses Memory Cells • Ordered sequence of storage locations called memory cells. • Each memory cell is identified by a unique address 0000 43 0001 87 0002 06 0003 00 0004 12 0005 00 Content of a memory cell Introduction to C Programming
Instruction 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 Introduction to C Programming
Main Memory Input Output Computer nowadays? • Almost all modern computer have still a Von Neumann Architecture CPU Introduction to C Programming
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
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
Disadvantages 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 Introduction to C Programming
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
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
Fortran Code Example c23456789012345678901234567890123456789012345678901234567890123456789012 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 * rad**2 volume = (4.0/3.0) * pi * rad**3c 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 Introduction to C Programming
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
Programming Languages Introduction to C Programming
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
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
The Idea of Binary Computing Binary Number, Hexadecimal Number and the encoding of characters
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
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 7 6 5 4 3 2 1 0 1 0 1 0 1 1 0 0 = 172 Introduction to C Programming
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 Introduction to C Programming
Hexadecimal Numbers (2) 16 bit • Example: 8 bit (1 Byte) 8 bit (1 Byte) binary hex decimal Introduction to C Programming
Exercise • What is the number 01000111 in decimal notation? • What is the number 156 in hexadecimal notation? Introduction to C Programming
Characters and Numbers • Using a Code Table numbers can be mapped to characters of some alphabet.Example (part of the ASCII table): Introduction to C Programming
Sequences 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) Introduction to C Programming
Algorithms and Flowcharts Binary Number, Hexadecimal Number and the encoding of characters
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? • 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 Introduction to C Programming
Algorithms 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 Introduction to C Programming
Flowchart Atoms • Statement – Some operation as e.g. “put the eggs into water” Statement put water into pot Introduction to C Programming
Flowchart Atoms (cont.) • Condition: Some yes/no question (condition). Depending on the answer Yes (True) or No (False) we go different ways. No Condition Yes Introduction to C Programming
Combined Flowchart Constructs Yes No Condition if side else side • If/else – alternative: Construct where select on of two alternative sequences of statements, depending on the result of the condition Statement Statement Statement Statement Introduction to C Programming
Combined 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 Introduction to C Programming
Combined Flowchart Constructs (cont.) Statement 1 • Loop: Special construct with a Condition where one alternative of the Condition creates a circular flow Statement n Question Introduction to C Programming
Combined Flowchart Constructs (cont.) • Loop Example: Heat water Water not cooking ? YES Introduction to C Programming
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
Variables • 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 Introduction to C Programming
Variables in Flowcharts • Example: Calculation of the maximum of two numbers: read x from user input read y from user input No Yes x > y set max to y set max to x print max on output Introduction to C Programming
Exercise • 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 Introduction to C Programming