Friday, 30 September 2022

Bharat College C Programming 1st Unit

 

Program Concept: Rapid technological advances in computer hardware have heightened the desire by business to purchase computers. Once a computer is purchased, a company must either develop or purchase the software to process the input data and produce the desired information. A problem will never be presented to a computer if it is not realized that the problem is a candidate for a computer solution. Therefore, in the beginning, there is an uneasy feeling that something needs attention. For example, a manager may be concerned that sales are dropping or that the cost of maintaining an inventory of parts is rising. A natural tendency is to have a computer to solve the problem. But what is the problem? Can a computer actually help solve it? Framing the exact problem for the computer to solve, is an important step in presenting a job to the computer. It is a must to be aware of what the problem actually is.

               Coding is mostly confused with software development. Coding is writing programs in a language that is comprehensible to a computer. In fact, coding is usually a small part of software development. Although, very little quantitative research has occurred, a few studies have shown that less than one-fifth of the programming time is spent in coding: the rest is spent is program designing, tests and other stages of software development. Software development can be divided into several stages.

  1. Problem Definition
  2. Program Design
  3. Coding
  4. Debugging
  5. Testing
  6. Documentation
  7. Maintenance
  8. Extension and Redesign

Algorithms: The term algorithm may be formally defined as a sequence of instruction designed in such a way that if the instructions are executed in the specified sequence, the desired results will be obtained. The instructions should be precise and unambiguous and the result should be obtained after a finite number of executional steps. The latter condition actually states that an algorithm must terminate and should not repeat one or more instructions infinitely. In other words, the algorithms represent the logic of the processing to be performed. However, in order to qualify as an algorithm, a sequence of instructions must posses the following characteristics:

1.     Each and every instruction should be precise and unambiguous.

2.     Each instruction should be such that it can be performed in a finite time.

3.     One or more instructions should not be repeated infinitely. This ensures that the algorithm will ultimately terminate.

4.     After performing the instructions, that is after the algorithm terminates, the desired results must be obtained.

For Example –> There are 50 students in a class who appeared in their final examination their mark sheets have been given to you. Write an algorithm to calculate and print the total number of students who passed in first division.

Algorithm:

            Step 1:Initialize TOTAL FIRST DIVISION and TOTAL MARK SHEETS CHECKED to zero.

            Step 2: Take the mark sheet of the next student.

            Step 3: Check the division column of the mark sheet to see if it is I: if no, go to step 5.

            Step 4: Add 1 to TOTAL FIRST DIVISION.

            Step 5: Add 1 to TOTAL MARKSHEETS CHECKED.

            Step 6: Is TOTAL MARKSHEETS CHECKED=50: if no, go to step 2.

            Step 7: Print TOTAL FIRST DIVISION.

            Step 8: Stop

 

It must be clear to the reader’s form this example that even for very simple problems, the development of algorithms is not so simple as it might initially appear and requires some thinking. It may also be noted form the given example that in order to solve a given, each and every instructions must be strictly carried out in a particular sequence. It is this fact, which a beginner to problem solving by computers finds difficult to appreciate.

            There are various ways in which an algorithm can be expressed. When an algorithm is expressed in a programming language, it becomes a program. Thus, any program is an algorithm although the reverse is not true. Besides represented as programs, algorithms are often expressed in the form of flowcharts.

 

Flow Charts: The development of programs involves a series of steps which are known as program development process cycle. Students, as well as professional programmers or designers, sometimes jump immediately into coding before performing through problem analysis. The programs that result from this haste often contain clerical and logic errors. Debugging, to eliminate these errors, can cost considerable programming and machine time. And, in the process of debugging, the programmer inevitably has to analyze the problem in order to discover what went wrong. The following steps come under problem analysis:

  1. Define the problem
  2. Define all variables and reduce them to quantitative terms
  3. Reduce the problem to specifies
  4. Establish relationships

After the programmer has analyzed and defined a problem, its solution must be planned. A sequence of steps that will input and manipulate the data and produce the desired output is designed. This series of steps is the algorithm. An algorithm must express the steps in the solution in a way that will be suitable for computer processing.

            Flowcharts have become more and more specialized as the areas using them became better defined. A form of charting we all recognize is the diagram of electrical circuits. In the same way, the data processing industry has developed its own set of special symbols for use in picturing the activities in the processing of data. The first flowchart is attributed to John Von Neumann in 1945. A flowchart is simply a method of assisting the programmer to lay out in visual, two-dimensional format, the ideas as to how to organize the sequence of steps or events necessary to solve a problem with a computer. In other words, flowcharts are symbolic diagrams of operating sequence, data flow, control flow and processing logic in information processing. The charts are read in the same manner that we learned to read a page, from the upper left-hand corner of a page, left to right and top to bottom. The symbols used are simple and easy to learn. Flowcharts have many purposes. They:

  1. Provide Communication
  2. Provide an overview
  3. Aid in algorithm development and experimentation
  4. Check program logic
  5. Facilitate coding
  6. Provide program revision
  7. Provide program documentation

 

Symbols: Flowcharts are composed of symbols of different sizes and shapes. These symbols have specific meaning and functions in a flowchart. The American National Standard Institute(Groups) the symbols into three categories: basic symbols, specialized symbols, and additional symbols. Flowcharts may be drawn using only the basic and additional symbols. Flowcharts may be drawn using only tha basic and additional symbols. The specialized symbols are more precise and specific versions of basic symbols. They give more information since they describe functions in more exact detail than do basic symbols.

Basic Symbols

 

 

 


1.     Input/ Output Symbol: A parallelogram is used to represent an input or output operation. It shows the points in a program where data is made available to a system or where it is output. For example, Read number, Read file on magnetic tape, Print report.

 

 

 

 

 

2.     Process Symbol: A rectangle indicates that a change in the form or value of data will occur, or that an operating or process is to be performed. The process symbol is used to show mathematical calculations, moving data from one location to another, table look-ups and logic operations. For example, Calculate sales tax, find square root, compare two values, copy data from record to another location.

 

 

Flow-line: A Straight line between two boxes shows the path of logic flow in a program. It shows the order in which operations are performed and therefore, indicates the points at which different data has been calculated or processed. An arrowhead on the line shows the directions of flow. Unless indicated otherwise, it is assumed that data flows from top to bottom, and from left to right.

 

 

                                        Annotation, Comment Symbol: An open-ended box connected to the chart by a          

Broken line is used for descriptive comments, annotation, remarks or    explanatory notes related to the flowchart.

 

 

 

 


Decision Symbol: A diamond shows that a conditional branch has been reached. It indicates that this is a decision point in the program flow and that the program is to select one of several pathways, depending on the condition specified.  

 

 

 

Rules for making Flow Chart: Before beginning with the description of the flowchart symbols and exercises, there are some basic rules that must be kept in mind:

  1. Use the symbols as they are designed to be used
  2. Be consistent in the use of symbols
  3. Be sure that your meaning is clear, both in the way you draw the flowchart and in the entries you make within the symbols
  4. Enter and leave the symbols in the same manner
  5. Use the annotation symbol when beginning a procedure
  6. Recognize the three levels of symbols

a.      Basic symbols are used throughout the charting conventions

b.     Specialized input/output symbols are most often used in system flowcharts

c.      Specialized process symbols are most often used in program flowcharts.

Types of Flowchart: The systems designer and programmer often uses three different types of flowcharts in developing algorithms. They are:

a.      System flowcharts

b.     Modular Program flowcharts

c.      Detail program flowcharts or application flowcharts

System Flowchart: System flowcharts play a vital role in system analysis. They illustrate graphically the elements and characteristics of a system and express its structure and relationship in terms of flowchart symbols. This chart describes the sequence of major processing operations, both manual and computer, data flow and the files to be used in processing and the flow of processing control. System flowcharts are used by system analysts for analyzing or designing systems. During the problem recognition stage they illustrate data flow and relationships in the existing system. During the system design stage, they allow the analyst to conveniently with alternate data flow plans. They provide graphic records to serve as guides during implementation of a modified or newly designed business system.

            During the evaluation stage of system analysis, system flowcharts reflect the changes and alternations made. They again provide an opportunity for testing alternatives and possible variations. The implemented, working system will be documented in a system flowchart that is carefully drawn, accurate and comprehensive.

Modular Program Flowchart: Modular program flowcharts are designed primarily to illustrate algorithms for developing and writing a specific computer program. In structured or modular programs, the sequence of instructions that performs each procedure or operation is written as an independent unit or module. This module is capable of performing that procedure in other programs as well. Specific details on how a given operation is to be done are not included. Only the relationship and sequence of processes are illustrated. This type of flowchart, sometimes referred to as block diagrams, is advantages because it allows the programmer to concentrate on designing the major flow of logic in the program and temporarily ignore the computer level details. One may experiment with alternate algorithms without a great expenditure of time or effort. Modular flowcharts are excellent for communicating the major thread of logic followed in a program

            This flowchart differs from the systems flowchart in that the systems flowchart indicates the hardware, identifies the files, and shows the general flow of data; whereas the modular program flowchart defines the logical steps involved in the input, output and processing of information.

Detail Program Flowchart: Detail program flowcharts are the most comprehensive and element charts used by the programmers. Each symbol represents an executable step suitable for coding as an instruction in a computer language. The detailed steps shown in a detail program flowchart may very slightly when coding in different languages. This is because each language may perform an operation in a slightly different manner or at a different level of sophistication. The major steps in the program logic followed will usually be the same for all languages. In the detail program flowchart, each detail, minute step, or operation is shown in its correct sequence, reduced to its simplest components.

Advantage:

  1. Clarify the program logic
  2. Before coding begins, the flowchart assists the programmer in determining the type of logic control to be used in a program
  3. Serve as documentation
  4. Serve as a guide for program coding or program writing
  5. The flowchart is a pictorial representation that may be useful to the business person or user who wishes to examine some facet of the logic used in the program
  6. Ensure that all the possible conditions are accounted for
  7. Help to detect deficiencies in the problem statement

 Disadvantage:

  1. Program flowcharts are cumbersome for the programmer to write. As a result, many programmers do not write the chart until after the program has been completed, which, of course, defeats one of its main purposes
  2. It is sometimes difficult for a business person or user to understand the logic depicted in a flowchart
  3. Flowcharts are no longer completely standardized tools. The newer structured programming techniques have necessitated changes in the traditional format of a flowchart.

Techniques of Problem Solving-Programming Techniques:

Top Down: The top down approach towards program design starts with the specification of the function to be performed by a program and then breaks  it down into progressively subsidiary functions. The division of the function progresses with increasing levels of details. Each function at each level is ultimately realized in the form of a module.  In this approach, the calling module is always designed before the called module. At the time of designing a module, the broad functions to be performed by its immediate subordinate modules are assumed. The details of how a subordinate module can perform the specified functions are not considered until the subordinate module is taken up for design. Thus, the top-down approaches represents  a successive refinement of functions and this process of refinement is continued until the lowest modules can be designed without further analysis.

 

The top-down structure can be viewed as a tree structure as shown in figure.

 

 

 

 

 

 

 

 

 

 

 

 

 


Each box in this figure is a module. The topmost module denoted by 1 represents the program which can be called the main-line module or main-control module. In this case, the main-control module is divided into three subordinate modules denoted by 2, 3 and 4. The modules 2 and 4 require further divisions and in this process, the terminal modules are 5, 6, 7 and 8. The functions of these terminal modules are assumed to be simple enough to be easily programmed in the source language.                                                                                                                                                                                                     

Bottom Up: The bottom up approach is the reverse of the top-down one. The process starts with identification of a set of module which are either available or to be constructed. An attempt is made to combine the lower level modules to form modules of a high level. This process of combining modules is continued until the program is realized. The basic drawback of the bottom-up approach is the assumption that the lowest level modules can be completely specified beforehand, which in reality is seldom possible. Thus, in the bottom-up approach, quite often it is found that the final program obtained by combining the predetermined lowest level modules does not meet all the requirements of the desired program.

            No attempt is made here to compare the advantages and disadvantages of the two approaches. However, program development through top-down approach is widely accepted to be better than the bottom-up approach. The top-down approach has the following advantages:

  1. It imitates the human tendency to solve a problem by outlining the broad concepts first and then subsequently going into the details.
  2. The details of a module can be worked out with no change of the previously outlined concepts regarding its functions.
  3. The programmer never loses sight of the assumptions made at the previous levels. The development of module can take place in parallel.

These advantage suggests that if the top-down approach is taken for program design, the programs can be developed easily and quickly, committing a minimum of errors.

Modular: Modular programming is a programming strategy where a program is divided into a number of identifiable partitions or modules. Thus, a module in itself is a proper program structure. It has one entry and one exit, reads naturally from top to bottom, and may consist of any of the three basic program structures(SEQUENCE, IFTHEN ELSE, DOWHILE). The module is referenced by a name which should be as descriptive as possible. In COBOL that name is a paragraph or section name. A module should not exceed one page in length so that it is easily read. Finally, each module is executed by reference to it from another part of the program, usually through the PERFORM verb.

            The advantage of modular programming depends on how effectively the modules are designed. Each module must be designed to accomplish a distinct function. This gives the program a rather high modification potential. For example, in a pay-roll program there may be a module that calculates the dearness allowance from the basic pay using certain rules. If these rules get changed at a later date, the modification will be limited to the said module and/or to its subordinate modules, if any. It has been seen that it is easier to replace a module by a modified one than to make corrections in one particular part of a conventional program without upsetting the function of the other parts.

            Begin Main Program Module Instruction 1

            .

            .

            .

            Instruction M

            PERFORM Module A

            PERFORM Module B

            .

            .

            .

            Instruction N

            End Main Program Module

            Begin Module A

            Instruction 1

            PERFORM Module X

            Instruction 2

            .

            .

            .

            Instruction N

            End Module A

            Begin Module B

            Instruction 1

            .

            .

            .

            .

            Instruction N

            End Module B

            Begin Module X

            Instruction 1

            .

            .

            .

            Instruction N

            End Module X

Structured: A method in which programs are written according to specifically defined forms; that is, only certain kinds of program logic are allowed, although the forms involved may be nested within one another to handle complex situations. Structured programming often refers to methods in which sections of a program always have a single entry and a single exit. Thus, this step consists of preparing documents that will guide the actual coding of the program. Programmers can also prepare a structural chart that shows the hierarchical relationship between program modules. Pseudo code can be used to explain in more detail what each module does.

            Structured programming offers a number of benefits to its users. In this programming, each step is independent of the other steps, hence, allowing separate checks at each step. Each step may be verified by checking the elaboration stage by stage and an error may, therefore, be detected in a systematic manner. At any one time, only a small amount of information has to be remembered and manipulated and the structure evolved is suitable for a rigorous proof of the correctness of the entire algorithm.

            The software designer can, of course, use a combination of techniques. Flowcharting, top-down   design, structured programming and modular programming are not mutually exclusive. The tools used in this step are unimportant. The designer should remember that the real task is to produce a working program, not to follow the tenets of any particular design method. The important aspect is to plan the flow of the program, with a tool that is less rigid than a program language. This allows changes to be made in a more time-efficient manner. This step is considered complete when a clean compile walkthrough has been held and the program design has been approved.

Programming Logic

 Simple: A computer program is a series of instructions to the computer. The computer understands a language known as the machine language. The compiler translates instructions written in any high level language into the machine language. Such a translated version is known as the object module of a source program. The source program can be written in any language, such as FORTRAN, COBOL, BASIC, or C, and can be compiled by the appropriate compiler to produce the object module. A source program in a language consists of a series of instructions, known as statements. They are written such that they obey certain rules, known as the grammar of the language.

Branching: A computer program consists of a series of instructions which are executed by the compiler one by one in a sequential manner. However, sometimes the command to be executed by the compiler, depends upon some data or some intermediate result produced during the program execution. For example, imagine a shop keeper giving a discount of 10% to it’s customer who purchase goods worth Rs 500 or more. The net amount payable by the customer is determined by subtracting the discount from the purchase price. Such as evaluation is done within a computer program in the following manner.

Step 1.             Read the purchase price

Step 2.             If the purchase price>500 go to step 4 else go to step 3

Step 3.             Discount= 0 go to step 5

Step 4.             Discount= 10% of purchase price

Step 5.             Net amount payable= purchase price-discount

Step 6.             Display the net amount

Here discount cannot be evaluated by following a series of instructions in a sequential manner. The command to be executed by the complier depends upon whether the purchase price is more than 500. If it is, discount is set to 10% of the purchase price and it is otherwise set to 0. Such a situation in programming is known as branching. The compiler comes to a decision point where the decision is taken regarding the next statement to be executed. The situation is better explained with the help of what is known as a flow diagram.  

Looping: In computer programming, a loop is a sequence of instruction s that is continually repeated until a certain condition is reached. Typically, a certain process is done, such as getting an item of data and changing it, and then some condition is checked such as whether a counter has reached a prescribed number. If it hasn't, the next instruction in the sequence is an instruction to return to the first instruction in the sequence and repeat the sequence. If the condition has been reached, the next instruction "falls through" to the next sequential instruction or branches outside the loop. A loop is a fundamental programming idea that is commonly used in writing programs.

          In other words, a loop is used to execute a group of instruction or a block of code multiple times, without writing it repeatedly. The block of code is executed based on a certain condition. Loops are the control structure of a program. Using loops in computer programs simplifies rather optimizes the process of coding.

          The structure of a loop can be virtually divided into two parts, namely the control statement, and the body. The control statement of a loop comprises the conditions that have to be met for the execution of the body of the loop. For every iteration of the loop, the condition in the control statement have to be true. The body of a loop comprises the block of code or the sequence of logical statements that are to be executed multiple times. When a loop in written within another loop, the control structure is termed as a nested loop. Therefore when you use a loop in program, you will not have to write the block of code, over and over again in it. The block of code will be executed as many times as the control statement will hold true and the loop will be terminated when the condition in the control statement become false. If the condition are not clearly defined in the control statement, the loop will keep on executing. Such loops are termed as infinite loops. If no terminate condition is provided in the control statement of a loop, then it automatically becomes an infinite loop.

          There are basically two types of loop in most computer programming languages, namely, entry controlled loops and exit controlled loops.

Entry Controlled Loops:- In an entry controlled loops, the control statement is written right at the beginning of the loop. This type of loop is also called a pre-checking loop. The conditions in the control statements are checked at first, and only if the conditions are true, the body of the loop is executed. If the condition turns out to be false, the lines of code in the body of the loop will not be executed.

Exit Controlled Loops:- in an exit controlled loop, that is, the control statement is written at the end of the loop structure. The lines of codes in the body of the loop are executed once before the condition is checked. Hence, this type of loop is also called a post checking loop.

          FOR loop is an entry controlled loop, that is, the control statements are written at the beginning of the loop structure, whereas, Do-While loop is an exit controlled loop, that is, the control statement are written at the end of the loop structure.

Recursion: Recursion is the process of repeating items in a self-similar way. For instance, when the surfaces of two mirrors are exactly parallel with each other, the nested images that occur are a form of infinite recursion. The term has a variety of meanings specific to a variety of disciplines ranging from linguistics to logic. The most common application of recursion is in mathematics and computer science, in which it refers to a method of defining functions in which the function being defined is applied within its own definition. Specifically, this defines an infinite number of instances (function values), using a finite expression that for some instances may refer to other instances, but in such a way that no loop or infinite chain of references can occur. The term is also used more generally to describe a process of repeating objects in a self-similar way.

Recursion is the process a procedure goes through when one of the steps of the procedure involves invoking the procedure itself. A procedure that goes through recursion is said to be 'recursive'.

To understand recursion, one must recognize the distinction between a procedure and the running of a procedure. A procedure is a set of steps based on a set of rules. The running of a procedure involves actually following the rules and performing the steps. An analogy: a procedure is like a written recipe; running a procedure is like actually preparing the meal.

Recursion is related to, but not the same as, a reference within the specification of a procedure to the execution of some other procedure. For instance, a recipe might refer to cooking vegetables, which is another procedure that in turn requires heating water, and so forth. However, a recursive procedure is where (at least) one of its steps calls for a new instance of the very same procedure, like a sourdough recipe calling for some dough left over from the last time the same recipe was made. This of course immediately creates the possibility of an endless loop; recursion can only be properly used in a definition if the step in question is skipped in certain cases so that the procedure can complete, like a sourdough recipe that also tells you how to get some starter dough in case you've never made it before. Even if properly defined, a recursive procedure is not easy for humans to perform, as it requires distinguishing the new from the old (partially executed) invocation of the procedure; this requires some administration of how far various simultaneous instances of the procedures have progressed. For this reason recursive definitions are very rare in everyday situations. An example could be the following procedure to find a way through a maze. Proceed forward until reaching either an exit or a branching point (a dead end is considered a branching point with 0 branches). If the point reached is an exit, terminate. Otherwise try each branch in turn, using the procedure recursively; if every trial fails by reaching only dead ends, return on the path that led to this branching point and report failure. Whether this actually defines a terminating procedure depends on the nature of the maze: it must not allow loops. In any case, executing the procedure requires carefully recording all currently explored branching points, and which of their branches have already been exhaustively tried.

 

Cohesion & Coupling:

In computer programming, cohesion refers to the degree to which the elements of a module belong together. Thus, it is a measure of how strongly related each piece of functionality expressed by the source code of a software module is.

Cohesion is an ordinal type of measurement and is usually described as “high cohesion” or “low cohesion”. Modules with high cohesion tend to be preferable because high cohesion is associated with several desirable traits of software including robustness, reliability, reusability, and understandability whereas low cohesion is associated with undesirable traits such as being difficult to maintain, difficult to test, difficult to reuse, and even difficult to understand.[citation needed]

Cohesion is often contrasted with coupling, a different concept. High cohesion often correlates with loose coupling, and vice versa.[citation needed] The software quality metrics of coupling and cohesion were invented by Larry Constantine in the late 1960s as part of Structured Design, based on characteristics of “good” programming practices that reduced maintenance and modification costs. Structured Design, including cohesion and coupling

In software engineering, coupling or dependency is the degree to which each program module relies on each one of the other modules.

Coupling is usually contrasted with cohesion. Low coupling often correlates with high cohesion, and vice versa. Low coupling is often a sign of a well-structured computer system and a good design, and when combined with high cohesion, supports the general goals of high readability and maintainability

Testing: This stage is the validation of the program. Testing ensures that the program performs correctly the required tasks. Program testing and program debugging are closely related. Testing is essentially a later stage of debugging in which the program is validated by trying it on a suitable set of test cases. Some of the test cases will certainly be the ones used in debugging – the all-zeros case, the various special cases, and other obvious cases that must be checked. However, program testing is more than a simple matter of exercising the program a few times. Exhaustive testing of all possible cases is the best alternative, but this process is usually impractical. Formal validation methods exist, but are only applicable to very simple programs. Thus, program testing requires a choice of test cases. The situation is further complicated by the fact that many microcomputer programs depend on realtime inputs that are difficult to control or simulate; the microprocessor must interact in a precise manner with a large and complex system. Several tools are available to help with this task. Among the rules that can ais in program testing are the following:

  1. Make the test plan part of the program design—testing should be one of the factors in the problem definition, program design and coding stages.
  2. Check all trivial and special cases—Often the simplest can lead to the most annoying and mysterious errors.
  3. Select test data on a random basis—Doing so will eliminate any inadvertent bias caused by the programmer selecting test data. Random number tables are widely available, and most computers have random number generators.
  4. Plan and document software testing just like hardware testing—Obviously testing can never prove that no errors exist; therefore, good software design, like good hardware design, is an essential part of the testing process.
  5. Use the maximum and minimum values of all variables as test data—Extreme values are often the source of special errors.
  6. Use statistical methods in planning and evaluating complex tasks—Methods are available for selecting data and evaluating the significance of results. Optimization of techniques may suggest good choices for system parameters and efficient sets of test data.

 Debugging: This stage is the discovery and correction of programming errors. Few programs run correctly the first time, so debugging is an important and time-consuming stage of software development. Programming theorists often refer to program debugging and testing as verification and validation respectively. Verification ensures that the program does what the programmer intends to do. Validation ensures that the program produces the correct results for a set of test data. There is no clear demarcation line between these stages. The debugging of microprocessor programs is generally quite difficult because of the inability to observe register contents directly, the primitive debugging aids, the close interaction between hardware and software, the frequent dependence of programs on precise timing, and the difficulty of obtaining adequate data for real-time applications. The tools that can be used to debug programs with brief descriptions are given below.

  1. Simulators: A simulator is a computer program that simulates the execution of programs on another computer.
  2. Logic analyzers: A logic analyzer is a test instrument that is the digital bus-oriented version of the oscilloscope. It detects the states of digital signals during each clock cycle and stores them in the memory. It then displays the information on a CRT, much as an oscilloscope does.
  3. Breakpoints: A breakpoint is a place in a program at which execution can be halted, in order to examine the current contents of registers, memory locations and I/O ports.
  4. Trace routines: A trace is a program that prints information concerning the status of the processor at specified intervals. Most simulator programs and some microcomputer development systems have trace facilities.
  5. Memory dumps: A memory dumps is a listing of the current contents of a section of the memory. Most simulator programs, microcomputer development systems and monitors can produce memory dumps.
  6. Software interrupts: The software interrupt or trap instruction is frequently used for debugging purposes. The instruction usually saves the current value of the program counter and then branches to a specified memory location. That memory location can be the starting point of a debugging program that lists or displays status information-breakpoint may be inserted with trap instructions.

Monday, 19 September 2022

Bharat College CF 3rd Unit

 

Computer Fundamentals

Unit-III

Software: - A computer can not do anything on its own .It must be instructed to do a desired job. Hence, it is necessary to specify a sequence of instructions that a computer must perform to solve a problem. Such a sequence of instructions written in a language that can be understood by a computer is called a computer program. It is the program that controls the activity of processing by the computer and the computer perform precisely what the program wants it to do. When a computer is using a particular program, we say it is running or execution that program. The term software refers to the set of computer program, procedures ,and associated documents (flowcharts, manuals ,etc) that describe the programs and how they are to be precise ,software means a collection of program whose objective is to enhance the capabilities of the hardware .

A software package is a group of programs that solve a specific type of job .For example, a word-processing package may contain program for text editing, text formatting, A graphics, spelling checking, etc. Thus a multipurpose computer system has several software packages one each for every type of job it can perform.

Relationship between Hardware and Software:-In order for a computer to produce useful output, the hardware and software must work together. Nothing useful can be done with the computer hardware on its own and software cannot be utilized without supporting hardware.

To take on analogy, a cassettes player and the cassettes purchased form market are hardware. However, the songs recorded on the cassettes are its software .To listen to a particular song, first of all that song has to be recorded on one of the cassettes, which should then be mounted on the cassette player and played. Similarly, to get a particular job done by a computer, the relevant software should be loaded in the hardware before processing starts. The following important points regarding the relationship between hardware and software are brought out by this analogy.

1. Both hardware and software are necessary for a computer to do useful job. Both are complementary to each other.

2. The same hardware can be loaded with different software to make a computer system perform different types of just as different songs can be played using the same cassette player.

3. Except for upgrades (like increasing the main memory and hard disk capacities, or adding speakers, modems, etc) hardware is normally a one-time expense whereas software is a continuing expense. Just as we buy new cassettes for the newly released songs or for songs whose cassettes we do not have, similarly one busy new software to be run on the same hardware as and when need arises or funds become available.

Types of Software:- A wide variety of computer software is available today. Although the range of software available is vast and varied, most software can be divided in to two major categories;

  1. System software, and
  2. Application software

These two types of software along with a few examples of each type are described below.

System Software: - System software is a set of one or more programs designed to control the operation and extend the processing capability of a computer system. In general, a computer’s system software perform one or more of the following functions;

1.supports the development of other application software.

2.supports the execution of other application software.

3.monitors the effective use of various hardware resources such as CPU, memory, peripherals, etc.

4.communicates with and controls the operation of peripheral devices such as printer, disk, tape etc.

Thus system software makes the operation of a computer system more effective and efficient .it helps the hardware components work together and provides support for the development and execution of application soft ware (program). The programs included in a system software package are called system programs and the programmers who prepare system software are referred to as system programmers.

System software offers several advantages and conveniences to application programmers and computer users in general. Good system software allows application packages to be run on the computer with less time and effort. Without system software, application packages could not be run on the computer system. Thus system software is an indispensable part of a total computer system. A computer without some kind of system soft ware would be very ineffective and most likely impossible to operate. The production of system software is a complex task that requires extensive knowledge and considerable specialized training in computer science. System programmers are highly trained computer professionals. Because of its technical complexity, system software are normally developed and distributed by the computer manufacturers .The customer who buys or leases a computer system would usually receive, in addition to the hardware, some software needed for the effective operation of his/her computer.

Some of the most commonly known types of system software are operation system, programming language translators, utility programs, Assemblers, Compliers , Interpreter and performance monitoring software and communication software. They are briefly described below.

Language Translators: - Language translators are system software that transform the instructions prepared by programmers using convenient programming languages into a from that can be interpreted and executed by a computer system. Along with every programming language developed, a language translator was also developed, which accepted the programs written in a programming language and executed them by transforming them into a form suitable for execution. Depending on the programming language used, language translators are divided into three major categories: Assemblers, Compilers and Interpreter.

Assemblers:-  Compared to all the types of programming languages, assembly language is closest to the machine code. The assembly language program must be translated into machine code by a separate program called an assembler. The assembler program recognizes the character strings that make up the symbolic names of the various machine operations and substitutes the required machine code for each instruction. In short, an assembler converts the assembly codes into machine codes, making the assembly program ready for execution.

Compliers:- A compiler is a type of language translator that translates a program code into machine language. The programs written in any programming language needs to be converted to binary form. Therefore, in order to execute the programs, a programmer needs to compile the written programs. As a system program, a compiler translates source code into object code.  For examples: Borland C++ compiler and Microsoft VC++ compiler

Interpreters:- An interpreter is another type of language translator, which analyses and executes the source code in line-by-line manner, without looking at the entire program. In other words, an interpreter translates a statement in a program and executes the statements immediately, that is, before translating the next source language statement. The advantage of interpreters is that they can execute a program suddenly. Compilers  requires some time before an executable program is made because it looks at the whole source code. However, programs produced by compilers run much faster than the same programs executed by the interpreter. For examples: GW-BASIC Interpreter and LISP Interpreter

Operating Systems;- Every computer has an operating system software that takes care of the effective and efficient utilization of all the hardware and soft ware components of the computer system . It is responsible for performing basic tasks such as recognizing input from the keyboard, sending output to the display screen, keeping tracks of files and directories on the hard disk, and controlling peripheral device such as printers and modems. In addition, the operating system ensures that different programs executing at the same time do not interfere with each other. 

Function of Operating System:- The main function provided by most operating system of today are as follows:

  1. Process Management:- A process is a program in execution. During execution, a process needs certain resources such as CPU time, memory space, files and I/O devices. At a particular instance of time, a computer system normally consists of a collection of processes. The process management module of an operating system takes care of the creation and deletion of processes, scheduling of various system resources to the different processes requesting them, and providing mechanism for synchronization and communication among processes.
  2. Memory Management:- To execute a program, it must be loaded, together with the data it accesses, in the main memory. To improve CPU utilization and to provide better response time to its users, a computer system normally keeps several programs in main memory. The memory management module of an operating system takes care of the allocation and de-allocation of memory space to the various programs in need of this resource.
  3. File Management:- All computer systems are used for storage, retrieval and sharing of information. A computer normally stores such information in units called files. Processes can read information from files and can create new files for storing newly generated information. Information stored in files is made persistent by storing them on a secondary storage media such as a magnetic disks. The file management module of an operating system takes care of file-related activities such as organization, storing, retrieval, naming, sharing and protection of files.
  4. Device Management:- A computer system normally consists of several I/O devices such as terminal, printer, disk and tape. The device management module of an operating system takes care of controlling all the computer’s I/O devices. It keeps track of I/O requests from processes, issues commands to the I/O devices, and ensures correct data transmission to/from an I.O device. It also provides an interface between the devices and the rest of the system that is simple and easy to use.
  5. Security:- Computer system often store large amounts of information, some of which is highly sensitive and valuable to their users. Users can trust the system and rely on it only if the various resources and information of a computer system are protected against destruction and unauthorized access.
  6. Command Interpretation:- A user communicates with the operating system, for using the various system resources, via a set of commands provided by the operating system. The operating system also provides a simple language, known as command language or job control language(JCL), using which a user can put several commands together from the commands set to describe the resource requirements of the job. The command interpretation module of an operating system takes care of interpreting user commands, supplied individually or in the form of command language, and directing the system resources to handle the request.

Types of Operating System:- The operating system has evolved immensely (hugely) from its primitive (ancient)  days to the present digital era.

Batch:-This type of operating system was one of the first to evolve. Batch processing operating system allowed only one program to run at a time. These kinds of operating system can still be found on some mainframe computers running batches of jobs. Batch processing operating system works on a series of programs that are held in a queue. The operating system is responsible for scheduling the jobs according to priority and the resources required. For example: this operating system would be best suited for a company wishing to automate their payrolls. List of employees will be entered, their monthly salary will be calculated, and corresponding pay slips would be printed. Batch processing is useful for this purpose since these procedures are repeated for every employee each month.

Multiprogramming:- Multiprogramming refers to the situation in which a single CPU divides its time between more than one job. It is term given to a system that may have several processes in "states of execution" at the same time. Multiprogramming increases CPU utilization by organizing jobs when CPU becomes less idle, waiting for input, output or data transfer operations to be completed.  More is the number of programs competing for resources, better will be resource utilization. In this manner multiprogramming increases the over all performance of the system.

 

Multiprocessing:- Multiprocessing refers to simultaneous execution of two or more processes by a multiple, processor computer system. Additional processors are added to the system to enhance
the throughput. The additional processor can be an Input-Output Processor (IOP) or
a CPU. Generally, multiprocessing system is defined by a system having more than one CPU.

Programming Languages:- A computer, being an electronic device, cannot understand instructions if provided in a general language. Therefore, a special language is used to provide instructions to a computer system. This language is known as computer programming language. It consists of a set of symbols and characters, words and grammar rules that permit the user to construct instructions in the format that can be understood and acted upon by the computer system. A major goal of computer scientists is to develop computer system which can accept instructions in normal human language – known as Natural Language Processor.

Generations of Programming Languages:-

The term 'generation' of computer languages is used to categorize the generic enhancements in various computer languages. It shows the step-by-step evolution of programming languages. Each generation indicates significant progress towards making computers easier to use. Computer languages by generation are classified as follows:

     First Generation (late 1940s)

        e.g. machine language

     Second Generation (early 1950s)

        e.g. assembly language

     Third Generation (late 1950s through 1970s)

        e.g. high level language

     Fourth Generation (late 1970 onwords)

        includes a whole range of query languages and other tools.

Classification of Programming Languages

Computer programming languages can be classified into two major categories:

     Low Level

     High Level

Low Level Languages

The languages which use only primitive operations of the computer are known as low level languages. In these languages, programs are written by means of the memory and registers available on the computer. As we all know that the architecture of computer differs from one machine to another, so for each type of computer there is a separate low level programming language. In the other words, Programs written in one low level language of one machine can't be ported on any other machine due to architectural changes. Because of this, low level languages are known as machine dependent languages. Examples are Machine Language and Assembly Language.

Machine Language:- In machine language programs, the computation is based on binary numbers. All the instructions including operations, registers, data and memory locations are given in there binary equivalent.

The machine directly understands this language by virtue of its circuitry design so these programs are directly executable on the computer without any translations This makes the program execution very fast. Machine languages are also known as first generation languages. A typical low level instruction consists essentially of two parts:

u      An Operation Part        :              Specifies operation to be performed by the
                                                       computer, also known as Opcode.

u      An Address Part            :              Specifies location of the data on which operation
                                                       is to be performed.

Writing programs in machine language is a tedious task since it is very difficult
for humans to remember binary codes of all the operations. The number of bits in
the operation part determines the number of possible unique instructions that can
be framed for a computer to execute. The number of bits in the address part determines the number of directly addressable, unique storage locations in internal memory of the computer.

Advantages

Machine language makes most efficient use of computer system resources like storage, registers, etc. The instructions of a machine language program are directly executable so there is no need of translators. Machine language instructions can be used to manipulate the individual bits in a computer system with a very high execution speed due to direct manipulation of memory and registers.

Drawbacks

Machine languages are machine dependent and, therefore, programs are not portable from one computer to the other. Programming in machine language usually results in poor programmer productivity. Machine languages require programmers to control the use of each register in the computer's Arithmetic Logic Unit and computer storage locations must be addressed directly, not symbolically. Machine language requires a high level of programming skill which increases programmer training costs. Programs written in machine language are more error prone and difficult to debug because it is very difficult to remember all binary equivalent of register, opcode, memory locations, etc. Program size is comparatively very big due to non-use of reusable codes and use of very basic operations to do a complex computation.

Assembly Language:- Assembly languages are also known as second generation languages. These languages substitute alphabetic or numeric symbols for the binary codes of machine language. That is, we can use mnemonics for all opcodes, registers and for the memory locations which provide us the more readable form of the program. These languages also provide us with a facility to write reusable code in the form of macros. Macros has two parts, one is macro name and the other is macro body which contains the line of instructions. A macro can be called at any point of the program by its name to use the instructions given in the macro repetitively.

These languages require a translator known as 'Assembler' for translating the program code written in assembly language to machine language. Because computer can interpret only the machine code instructions, once the translation is completed the program can be executed. A typical assembly language instruction consists of four components:

u      A name or label field

u      An operation code (Opcode)

u      An operand

u      A comment field (separated by ; (semicolon) from the executable part of the instruction).

A name or label field is optional. It is used to mark a place in a program to which computer control can be transferred. An operation code specifies to the control unit what processing tasks to perform and the operand field identifies the location of data item in primary memory. The comment field enables a programmer to write relevant notes and thereby improve the program documentation. This field is optional. In assembly language, symbols are used rather than absolute addresses, to represent memory locations, e.g. hexadecimal value can be used to represent the memory location of the data in a statement. For example, 2AH for hexadecimal where 2A represents some memory location. Similarly BX and CX can be used to represent B register and C register of the computer's ALU respectively. Mnemonics are used for operation code, i.e. short abbreviations that help programmers remember what the codes represent.

Advantages

Assembly languages provide optimal use of computer resources like registers and memory because of direct use of these resources within the programs. Assembly language is easier to use than machine language because there is no need to remember or calculate the binary equivalents for opcode and registers. An assembler is useful for detecting programming errors. Assembly language encourages modular programming which provides the facility of reusable code, using macro.

Drawbacks

Assembly language programs are not directly executable due to the need of translation. Also, these languages are machine dependent and, therefore, not portable from one machine to another. Programming in assembly language requires a high level of programming skills and knowledge of computer architecture of the particular machine.

High Level Language:- All high level languages are procedure-oriented languages and are intended to be machine independent. Programs are written in statements akin to English language, a great advancement over mnemonics of assembly language. That is, the high level languages use natural language like structures. These languages require translators (compilers and interpreters) for translating high level language programs into machine language programs for execution. The programs written in a high level  language can be ported on any computer, that is why known they are known as machine independent. The early high level languages come in third generation of languages, e.g. COBOL, FORTRAN, PASCAL, BASIC, APL, etc.

These languages enable the programmer to write instructions using English words and familiar mathematical symbols which makes it easier for programmers to concentrate on the logic of problem-solving rather than technical details of the computer. It makes the programs more readable too. Once coded, programs are easier to understand and modify. However, procedure-oriented languages still have some disadvantages compared to machine and assembly languages. (1) Programs execute more slowly. (2) The languages use computer resources efficiently.

4GL:- Fourth generation languages (4GLs) are a class of software designed to simplify the task of developing a new application by making the user interface similar to natural languages. These are very easy to use languages. Some 4GLs are designed to improve the productivity of programming professionals while others are designed to be used directly by the end user.

4GLs are designed more for specification of what tasks to be accomplished as  compared to third generation procedural languages which focus on how to solve a problem. These languages are developed for the purpose of making database management more efficient and is also known as database management systems. Database Management System (DBMS) is a concept to construct, organize and manipulate a large set of data in a best possible way.

Example:

u      Suppose personal details of  all employees are stored in a file called Employee Master File. It is required to display all the information about a particular employee, say, David.

u      To accomplish the task using procedural (third generation) language, the programmer would have to write a series of instructions as follows:

          Step 1  Get a record from the employee master file.

          Step 2  Check if the record belongs to employee name "David".

          Step 3  If the answer for step 2 is "Yes", display details.

          Step 4  Otherwise, go to step 1.

u      In 4GLs the task could be accomplished by giving a single instruction as follows:

          Display all for  employee name = "David" from employee master file.       

Many fourth generation languages either incorporate a query language or support a standard query language like SQL, which can be used to interact with the database.

e.g.:  SQL statement for the above illustration will be:

          [Select * from employee_master where emp_name = "David".]

Note       * means all the fields of record.

Advantages

u      Easy to use; little or no computer knowledge is required.

u      Machine independent.

u      Enhanced programming productivity.

u      Ease of modification and maintenance of data.

u      Good documentation.

Disadvantages

u      4GL programs are less efficient from the computer resource utilization point of view.

u      Programmers become less skilled over a period of time.

u  Security standards are difficult to enforce in 4GL environment.

Object Oriented Languages:-

Object-orientation can refer to a set of design principles, a programming style, or features of programming languages that support that style. Continuing from an earlier post on the history of programming languages, let’s next concentrate on the purpose and history of the languages that support OOP.

The purpose of object orientation is to model, in code, the objects that make up the application you’re writing and the interactions between them. As in human language, it’s impossible to describe any process without referring to the nouns that are involved. All programming languages provide some nouns, but until object-oriented languages arrived on the scene, the programmer couldn’t create his/her own nouns very easily. Programming was limited to talking about the set of nouns provided by a language: numbers, characters, channels, etc. Of course, programmers built more abstract structures around this limited set of nouns, but the code that described those abstractions was much more complex than talking about them in English. Object-oriented languages allow you to define types of objects (called classes) that are derived from, or composed of, other types. In addition to this data component, the functions (also called methods) that “belong” to the data are also grouped in the class. This has at least three benefits:

  1. Encapsulation. Functions that are internal to a class can be marked as “private”. This means that they’re hidden from any code outside the class, so their implementation can be changed without bothering any code that uses the class. Conversely, the methods that are marked “public” form a well-defined interface that should not be changed without due consideration, because client code relies on it.
  2. Inheritance. You can derive one class from another, and the new class automatically contains all of the methods and data of the original class. This is useful when some subset of your objects needs an additional capability, but you don’t want to give that capability to all of the other objects.
  3. Polymorphism. Polly who? It’s a Greek-derived term that means “many forms”. In OOP, it means that sending the same message (in most OO languages, this means calling a method by name) may evoke different responses depending on type. Polymorphism itself has more than one form. The first form is when a derived class overrides an inherited method with its own implementation, so that sending the same message (calling the same function) on two different objects yields a different behavior depending on their types. A second type of polymorphism is called “parametric polymorphism”, which means that a class provides different implementations for a method depending on the types of parameters passed to it.

Application Software: - Application software is a set of one or more programs designed to solve a specific problem or do a specific task. For example an application software for payroll processing produces pay slips as the major output and an application software for processing examination results produces mark sheets as the major output along with some other statistical reports. Similarly a program written by a scientist to solve his/her particular research problem is also an application software .the programs included in an application software package are called application programs and the programmers who prepare application software are referred to as application programmers.

There are literally millions of application software available for a wide range of applications ranging from simple applications such as word processing inventory management preparation of tax returns ,banking hospital administration ,insurance, publishing, to complex scientific and engineering applications such as weather forecasting ,space shuttle launching oil and natural gas exploration ,design of complex structures like aircrafts, ships bridges, sky rise buildings, etc. With so many applications available, it is not possible to categorize them all and to cover them here. Hence just to have a feel of what application soft ware dose, some of the most        only known application software are briefly described below.

Word Processing Software:-Word processing is a term that describes the use of computers to create ,edit ,view ,format, store, retrieve and print documents (written material such as letters, reports, books, etc).A word-processing software is an application software that enables the user to do all these on a computer system. We need to create documents is so common is every walk of life ,whether it is at work ,at school, or at home ,that word-processing soft ware is the most commonly used application software. Today’s word-processing packages normally support the following features:

Entering Text--- This feature allows you to enter text with computer’s keyboard. Every character typed on keyboard is displayed immediately on computer’s screen. Word wrap features of word-processing software determines when current line is full, and text that follows is moved automatically to next line. Hence, only time you have to press enter key is at the end of a paragraph.

Editing Text--- This feature allows you to make changes in an already entered document. While editing, you can use either insert mode or type-over mode. In insert- mode, new characters typed are inserted in the text at cursor’s position. In type-over mode, new characters typed, replace the existing characters at cursor’s position. While editing, you can also delete unwanted text. Few characters or words at cursor position are deleted normally with use of Delete key(to delete characters to the right of cursor) or Backspace key(to delete characters to the left of cursor).

Formatting Page Style---- This feature allows you to define page layout format for a document. Definition of a page layout format may include things such as:

  1. Space to be left for left, right, top, and bottom page margins.
  2. Default spacing between two lines(such as single space, double space, 1.5 space, etc.).
  3. Automatic numbering of pages with page number style and page number position.
  4. Automatic placement of header and footer labels on each page.
  5. Setting text in multiple columns on a single page. Multi-column option is used frequently in newsletter and newspaper printing.

Formatting Text---- This feature allows you to format portions of text in a document to improve its general appearance and readability. It normally includes things such as:

  1. Selection of an appropriate font----- A font is a complete set of characters with same style and size. A word-processing package comes with several standard fonts, such as Times, Helvetica, Palatino, etc. Different fonts may be applied to different portions of the same document.
  2. Selection of an appropriate font size----- Font size is measured in points. A point is 1/72 of an inch, and size refers to the distance from the top of the tallest character to the bottom of the character that extends the lowest.
  3. Selecting an appropriate font style------ Commonly used font styles are italic, bold, and underline. They are normally used to highlight individual words, phrases, or portions of text in a document.
  4. Selecting an appropriate justification----- Justification is alignment of text on left or right margins or on both margins. In case of left-justification, beginnings of lines are aligned with left margin of the page. This style is also known as ragged right because ends of lines at the right edge end wherever the last word ends. In case of right-justification, ends of lines are aligned with right margin of the page. In case of full-justification, all lines are aligned properly with both left and right margins of the page. In case of center-justification of a particular line, it is placed at the center of a line with equal spacing on both its left and right ends.
  5. Indenting text appropriately wherever desired---- Indentation is used often at the beginning of a paragraph, or to set aside some portion of text from the main text in a document, or to enter text in tabular form. Tab stops are used normally for indentation. Tab stops are pre-defined typically at every fourth or fifth character, or at every ½ inch from the left margin of a page layout.
  6. Creating numbered or bulleted list of items----- This feature allows descriptive items to be presented as a numbered or bulleted list for better comprehension and readability. Each item in the list has a separate number, or bullet or some other symbol attached to its beginning. Numbers or symbols are inserted automatically by word-processing software as soon as you press enter key.

Entering Mathematical Symbols:--- Several scientific and engineering documents often use mathematical symbols. This feature allows you to enter complex mathematical equations using mathematical symbols.

Spreadsheet Software:-A Spreadsheet software is a numeric data analysis tool that allows you to create a kind of computerized ledger .A manual ledger is a book having rows and columns that accountants use for keeping a record of financial transactions and for preparing financial statements. Accountants use the manual ledger with pencil, erasure and hand calculator to prepare financial statements. This is a tedious task and often takes a long time due to several iteration of formula calculations to come out with an acceptable and satisfactory financial statement. A spreadsheet software offers considerable ease of performing such tasks by automating all arithmetic calculations and making it much easier to change certain numeric values and immediately seeing the effect of these changes across the worksheet (ledger). With spreadsheet software in place, we are no longer confined to using pencils, erasers , and hand calculator for dealing with any task that requires numeric data analysis. Some of key features of spreadsheet packages are:

Rows and Columns----- A spreadsheet is organized in a tabular form with rows and columns. Numbers are used to identify rows, whereas letters are used to identify columns. Single letters are used to identify the first 26 columns and double letters are used for subsequent columns( A, B,….,Z; AA, AB,…..,AZ; BA, BB,……,BZ;…..). A large spreadsheet may have hundreds of rows and columns.

Cells------ The intersection of a row and a column  is called a cell. A cell is identified by its address, which is a combination of its column letter and row number(such as F4, C18). Data are stored in cells.  

Range of Cells----- Many spreadsheet operations involve a range of cells instead of a single cell. A range of cells may involve many cells and entering every individual cell address for an operation to be performed on them may be cumbersome and time taking. To take care of this problem, all spreadsheet packages allow use of following types of cell ranges:

  1. Row Range-> It is used to include a set of adjacent cells in the same row. For example, the range B5..D5 refers to the cells B5,C5 and D5.
  2. Column Range-> It is used to include a set of adjacent cells in the same column. For example, the range C5..C9 refers to the cells C5, C6, C7, C8 and C9.
  3. Block Range-> It is used to include a set of adjacent cells in a rectangular group of cells. For example, the range B5..D9 refers to the cells B5, B6, B7, B8, B9, C5, C6, C7, C8, C9, D5, D6, D7, D8 and D9.

Presentation Graphics:- A graphics software enables us to use a computer system for creating , editing , viewing , storing, retrieving and printing designs, drawings, pictures , graphs and anything else that can be drawn in the traditional manner.

A type of business software that enables users to create highly stylized images for slide shows and reports. The software includes functions for creating various types of charts and graphs and for inserting text in a variety of fonts. Most systems enable you to import data from a spreadsheet application to create the charts and graphs.

Presentation graphics is often called business graphics.

Features: A presentation program is supposed to help both: the speaker with an easier access to his ideas and the participants with visual information which complements the talk. There are many different types of presentations including professional (work-related), education, entertainment, and for general communication. Presentation programs can either supplement or replace the use of older visualaid technology, such as Pamphlets, handouts, chalkboards, flip charts, posters, slides and overhead transparencies. Text, graphics, movies, and other objects are positioned on individual pages or "slides" or "foils". The "slide" analogy is a reference to the slide projector, a device that has become somewhat obsolete due to the use of presentation software. Slides can be printed, or (more usually) displayed on-screen and navigated through at the command of the presenter. Transitions between slides can be animated in a variety of ways, as can the emergence of elements on a slide itself. Typically a presentation has many constraints and the most important being the limited time to present consistent information.

Recently a new presentation paradigm has emerged: zooming presentation programs such as Presentista and Prezi. Instead of individual slides these ZUIs (zoom user interface) are based on one infinite canvas on which all content is presented. This allows for non-linear presentations, the option to present richer detail of content, and to give a better overview and understanding of complex visual messages and relations.

Another recent development which internet based software such as Presentista, Prezi, SlideRocket, Office Web Apps or Google Docs has enabled is collaborative development of the presentation. Several people can work on the presentation at the same time revising content or reviewing the changes as they are made by others.

Many presentation programs come with pre-designed images (clip art) and/or have the ability to import graphic images. Some tools also have the ability to search and import images from Flickr or Google directly from the tool. Custom graphics can also be created in other programs such as Adobe Photoshop or Adobe Illustrator and then exported. The concept of clip art originated with the image library that came as a complement with VCN ExecuVision, beginning in 1983.

With the growth of digital photography and video, many programs that handle these types of media also include presentation functions for displaying them in a similar "slide show" format. For example, Apple's iPhoto allows groups of digital photos to be displayed in a slide show with options such as selecting transitions, choosing whether or not the show stops at the end or continues to loop, and including music to accompany the photos.

Similar to programming extensions for an operating system or web browser, "add ons" or plugins for presentation programs can be used to enhance their capabilities. For example, it would be useful to export a PowerPoint presentation as a Flash animation or PDF document. This would make delivery through removable media or sharing over the Internet easier. Since PDF files are designed to be shared regardless of platform and most web browsers already have the plugin to view Flash files, these formats would allow presentations to be more widely accessible.

Certain presentation programs also offer an interactive integrated hardware element designed to engage an audience (e.g. audience response systems) or facilitate presentations across different geographical locations (e.g. web conferencing). Other integrated hardware devices ease the job of a live presenter such as laser pointers and interactive whiteboards.

Database Managements Software:-This application software is designed to take advantage of the tremendous capability of computer system in storing organizing and selectively retrieving large volumes of data efficiently A database is a collection of related data stored and treated as a unit for information retrieval purposes.

It is important here to note the difference between data and information. Data is stored in a database whereas information is retrieved from a database. That is data is input to any data processing system and information is its output .in other, data is the raw material for a data processing system and information is the processed data.

A database concept can be best illustrated with an example. For example , a school’s student database might contain the name, sex, date of birth, current address, permanent address, parent’s occupation , marks scored in various subjects in each class already passed , and current occupation for all the students who are either currently enrolled or have already graduated from the school similarly ,an individual’s address database might contain the names , addresses, and telephone numbers of all his/her friends and business contacts. The data of one student in the student database or one person in the address database is known as a record.

A database software is a set of one or more programs that enables users to create a database , maintain it (add, delete and update its records ), organize its data in desired fashion (for example, sort its records alphabetically name-wise),and to selectively retrieve  useful information from it (for example , get the telephone number of the person named kashyap rana from the address database , or get the names of all currently enrolled students from the student database whose birthday fall today ).

Database software is widely used today by both large and small organizations to maintain employee data, customer data, assets data , accounting data, etc. Even individuals find the database software very useful for maintaining data such as list of addresses and telephone numbers of their friends and relatives, list of household goods and other valuables, list of various types of savings in different banks ,etc .