Sie sind auf Seite 1von 34

Introduction to computers and programming

ITE101 Problem Solving Using C

What is a Computer?
Computer
Device capable of performing computations and making logical decisions Computers process data under the control of sets of instructions called computer programs

Hardware
Various devices comprising a computer Keyboard, screen, mouse, disks, memory, CDROM, and processing units

Software
Programs that run on a computer

Computer Organization
Six logical units in every computer:
Input unit
Obtains information from input devices (keyboard, mouse)

Output unit
Outputs information (to screen, to printer, to control other devices)

Memory unit
Rapid access, low capacity, stores input information

Arithmetic and logic unit (ALU)


Performs arithmetic calculations and logic decisions

Central processing unit (CPU)


Supervises and coordinates the various components of the computer

Secondary storage unit


Cheap, long-term, high-capacity storage Stores inactive programs

Computer Architecture

A Computer Consists of
a central processing unit (CPU) consists of an arithmetic/logic unit (ALU) where math and logic operations are performed, a control unit which directs most operations by providing timing and control signals, and registers that provide short-term data storage and management facilities. a memory unit that stores instructions and data, and input (e.g. keyboard, mouse, microphone, disk drive, etc.) and output (e.g. monitor, status indicator lights, speakers, disk drive, etc.) units that are used to transmit data into and out of the computer.

ALU
A : The type of operation that the ALU needs to perform is determined by signals from the control unit . B: The data can come either from the input unit, or C: from the memory unit. D: Results of the operation can either be transferred back to the memory unit or E: directly to the output unit .

The memory unit - or random access memory (RAM) stores instructions and/or data. Memory is divided into an array of "boxes" each containing a byte of information.
A byte consists of 8 bits. A bit (binary digit) is either 0 (OFF) or 1 (ON). The memory unit also serves as a storage for intermediate and final results of arithmetic operations.

F : Control signal (a read or a write operation). G : A location in memory H : Input to memory data lines when the control signal J is enabled. I : Memory to the output unit when the control signal L is enabled.

Control Unit
contains logic and timing circuits that generate the appropriate signals necessary to execute each instruction in a program. It fetches an instruction from memory by sending an address (G) and a read command (F) to the memory unit. The instruction word(s) stored at the memory location specified by the address is then transferred to the control unit (K). After decoding this instruction, the control unit transmits the appropriate signals to the other units in order to execute the specified operation. This sequence of fetch and execute is repeated by the control unit until the computer is either powered off or reset.

Common Softwares
Operating System Compilers Assemblers Interpreters

What Is an Operating System?


An interface between the hardware and the user. Provides an easy and efficient use of the system resources.

Evolution of Operating Systems


Single_user Batch processing
Do only one job or task at a time

Early Operating systems


Manage transitions between jobs (minimizing transition time between jobs) Increased throughput
Amount of work computers process

Multiprogramming
Computer resources are shared by many jobs or tasks (users still waited a long time for their output)

Timesharing (access computers via terminals)


Computer runs a small portion of one users job then moves on to service the next user

Programming Language : Definition


A vocabulary and set of grammatical rules for instructing a computer to perform specific tasks.

Evolution of Programming languages


First Generation : Machine languages
Strings of numbers giving machine specific instructions Example:
+1300042774 +1400593419 +1200274027

Second Generation : Assembly languages


English-like abbreviations representing elementary computer operations (translated via assemblers)
Example: LOAD BASEPAY ADD OVERPAY STORE GROSSPAY

Third Generation : High-level languages


Codes similar to everyday English Use mathematical notations (translated via compilers) Example: grossPay = basePay + overTimePay

PL hierarchy

What does the computer understand?


Computer only understands machine language instructions.

Assembler
Instructions written in assembly language must be translated to machine language instructions :
Assembler does this

One to one translation : One AL instruction is mapped to one ML instruction. AL instructions are CPU specific.

Compiler
Instructions written in high-level language also must be translated to machine language instructions :
Compiler does this

Generally one to many translation : One HL instruction is mapped to many ML instruction. HL instructions are not CPU specific but compiler is.

Translation from HLL to ML

Interpreter
An interpreter translates high-level instructions into an intermediate form, which it then executes. In contrast, a compiler translates high-level instructions directly into machine language. Compiled programs generally run faster than interpreted programs. The advantage of an interpreter, however, is that it does not need to go through the compilation stage during which machine instructions are generated. This process can be time-consuming if the program is long. The interpreter, on the other hand, can immediately execute high-level programs. For this reason, interpreters are sometimes used during the development of a program, when a programmer wants to add small sections at a time and test them quickly.

Different types of High-level PL


Weakly typed/strongly typed Structured And many other types

Typed Languages
Type information was added to programs to improve efficiency.
For ex. An integer addition is performed more efficiently than floating point addition. Hence it is more advantageous to declare the value/variable as integer whenever it is possible.

Weakly Typed/Strongly Typed Language


A strongly-typed programming language is one in which each type of data (such as integer, character, hexadecimal, packed decimal, and so forth) is predefined as part of the programming language and all constants or variables defined for a given program must be described with one of the data types. Certain operations may be allowable only with certain data types. The language compiler enforces the data typing and use compliance.

Strongly Typed Language contd..


Different definitions are given for a language to be strongly typed and if that condition is not defined by a particular language it is said to weakly typed in that context.

For example..
1. A language is strongly typed if it contains compile-time checks for type constraint violations. If all checking is deferred to run time, it is weakly typed. 2. A language is strongly typed if it contains compile- or run-time checks for type constraint violations. If no checking is done, it is weakly typed. 3. A language is strongly typed if conversions between different types are forbidden. If such conversions are allowed, it is weakly typed.

More Examples..
4. A language is strongly typed if conversions between different types must be indicated explicitly. If implicit conversions are performed, it is weakly typed. 5. A language is strongly typed if there is no language-level way to disable or evade the type system. If there are C-style casts or other type-evasive mechanisms, it is weakly typed.

Where does C fit in?


For example, under definitions 3,4 and 5 the C language is weakly typed; with definitions 1 and 2 it is open for further debate since C does perform type checks for compound types but not for scalar or array types.

Typed Languages contd..


An advantage of strong data typing is that it imposes a rigorous set of rules on a programmer and thus guarantees a certain consistency of results. A disadvantage is that it prevents the programmer from inventing a data type not anticipated by the developers of the programming language and it limits how "creative" one can be in using a given data type.

Structured Programming
Structured programming
Disciplined approach to writing programs Clear, easy to test and debug and easy to modify

Structured programming is hard and takes time to master

Structured Programming contd..


A technique for organizing and coding computer programs in which a hierarchy of modules is used, each having a single entry and a single exit point, and in which control is passed downward through the structure without unconditional branches to higher levels of the structure. Three types of control flow are used: sequential, test, and iteration

Structured programming
Only the following code structures are used to write programs: 1.Sequence of sequentially executed statements. 2.Conditional execution of statements (i.e., "if" statements). 3.Looping. 4.Structured SubRoutine calls.

Structure Programming contd..


In particular, the following language usage is forbidden: "GoTo" statements. "break" or "continue" out of the middle of loops. Multiple exit points to a function/procedure/subroutine (i.e., multiple "return" statements). Multiple entry points to a function/procedure/subroutine.

Structured Programming contd..


Structured Programming is generally a nonissue when doing ModularProgramming or ObjectOrientedProgramming as it's assumed that individual methods are structured.

Structured VS unstructured Languages


Structured languages, such as Pascal, Ada and dBASE, force the programmer to write a structured program. Unstructured languages such as FORTRAN, COBOL and BASIC require discipline on the part of the programmer to write a structured program.

Structured VS unstructured Languages


Unstructured languages define control flow largely in terms of a GOTO command that transfers execution to a label in code. Structured programming languages provide constructs (often called "if-then-else", "switch", "unless", "while", "until", and "for") for creating a variety of loops and conditional branches of execution, although they may also provide a GOTO to reduce excessive nesting of cascades of "if" structures, especially for handling exceptional conditions. Strictly speaking, in a structured programming language, any code structure should have only one entry point and one point of exit; many languages such as C allow multiple paths to a structure's exit (such as "continue", "break", and "return"), which can bring both advantages and disadvantages in readability.

Das könnte Ihnen auch gefallen