Introduction to Computer Programming Featuring: C language
What is computer? Computer is a device which can process data, perform computation and logical operations and gives output A computer performs the above using programs and without human intervention
History and Hardware Babbage’s analytical engine (1822) Atanasoff-Berry Computer (ABC, 1937) Human operator manipulated external wiring Electrical Numerical Integrator and Computer (ENIAC, 1946) Vacuum tubes Mark I (1944) Mechanical relay switches Electronic Delayed Storage Automatic Computer (EDSAC, 1949) Incorporated a form of memory
History and Hardware (continued)
Computer Hardware & Software Hardware – the physical devices of a computer Software – the programs or “intelligence” of the computer
Software Software – a group of programs Program – a specific set of instructions to the computer to perform a task Programmer – a person who writes a program
Computer Organization Input Unit Output Unit Memory Unit Arithmetic Logic Unit (ALU) Central Processing Unit (CPU) Secondary Storage unit
Components
Memory and data Memory unit: Area to store data and instructions Data stored as On or Off pulses
Data representation Represented by a combination of eight binary digits (1s and 0s) ASCII – American Standard Code for Information Interchange
ASCII representation From 00000000 to 11111111; each assigned to a unique character. An integer is stored in memory in its binary equivalence read as character using its ASCII character
ASCII Table
PROGRAMMING LANGUAGES
Programming Languages Computer program: data and instructions used to operate a computer and produce a specific result Programming: writing instructions in a language that the computer can respond to and that other programmers can understand Programming language: set of instructions that can be used to construct a program Source programs/Source code: Programs written in a computer language
Three General Types of Programming Languages: 1940s – Machine Languages A natural language of a computer, machine dependent the only language that can be understood and processed directly by computer 1950s – Symbolic/Assembly languages use of a series of mnemonics to represent commonly used instructions 1960s – High-Level Languages E.g. COBOL, FORTRAN, C, Java Note: Machine and assembly languages are low-level languages because they both use instructions that are directly tied to one type of computer
Machine Language Executable program: program that can operate a computer Executable programs are written with binary numbers, which is a computer’s internal language (machine language) An example of a simple machine language program containing two instructions is: 11000000000000000001000000000010 11110000000000000010000000000011 Opcode is short for operation code; tells the computer the operation to be performed
Assembly Language Assembly language: uses the substitution of word-like symbols for the opcodes, and decimal numbers and labels for memory addresses LOAD first ADD second MUL factor STORE answer
Assembly Language (continued)
Earlier high-level programming languages COBOL (Common Business Oriented Language) used primarily for business processing FORTRAN (Formula Translation) primarily perform mathematical calculations
Later High-Level Programming Languages PL/I, BASIC, Pascal, Prolog, C, Ada C++, Visual Basic HTML, Java
Writing, Editing, Compiling and Linking Programs Step1 – Write and edit programs Step2 – Compile programs Translate source file into machine language The output produced by the compiler is called an object program (machine language version of the source code) Step3 – Linking Programs - combines additional machine language code with the object program to create a final executable program
Writing, Editing, Compiling and Linking Programs
Procedural and Object-Oriented Languages Procedural language: instructions are used to create self-contained units, called procedures Procedure: accepts data as input and transforms it in some manner to produce a specific result as output Also called function or method Procedures conforming to structure guidelines are known as structured procedures
Procedural and Object-Oriented Languages (continued) Structured language: high-level procedural language (e.g., C) that enforces structured procedures Object-oriented languages: languages with object orientation such as C++, Java, Visual Basic, and C#
Procedural and Object-Oriented Languages (continued)
Structured programming A technique for organizing and coding computer programs in which a hierarchy of modules is used A disciplined approach in writing programs so that it is easier to test, debug and modify. Example: Pascal, Ada, C
History of C language Developed in the 1970s at AT&T Bell Laboratories by K. Thompson, D. Ritchie, and B. Kernighan Evolved from a language called B in the seventies at AT&T Bell labs First implemented on the UNIX operating system Written to help non-scientists develop computer programs High-level structured language Can also access the internal hardware of a computer C permits a programmer to “see into” a computer’s memory and directly alter data stored in it Standard maintained by the American National Standards Institute (ANSI) In the 1980s, Bjarne Stroustrup (working at AT&T) developed C++ C with object-oriented capabilities
The C language General purpose programming language Modern control flow and data structure Uses economy of expression Convenient and effective Useful for writing compilers and operating systems
Characteristic of C language Features structured programming Top-down: System overview -> Subsystem refined in detail Advantages of top-down programming: Separating the low level work from the higher level objects leads to a modular design. Modular design means development can be self contained. Having "skeleton" code illustrates clearly how low level modules integrate. Code is easier to follow, since it is written methodically and with purpose.
The Making of A Quality Program Readability understandable, with comments and documentations, using conventions like name of variables and indentations Modularity problems divided into sub-problems and assembled in a logical order Efficiency runs faster and smaller size of program
The Making of A Quality Program (cont.) Robustness Be able to handle all situations in a graceful manner Not to crash in unexpected situations or go to infinite loops Usability correct, meets the end-user requirement
Q & A