0 ratings0% found this document useful (0 votes) 1K views546 pagesCP Text Book
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here.
Available Formats
Download as PDF or read online on Scribd
Computer
+ Fundamental and
Programming in
. : Reema Thareja |Computer
Fundamentals and
Programming in
SECOND EDITION
Reema Thareja
Assistant Professor
Department of Computer Science
Shyama Prasad Mukherji College for Women
University of Delhi
OXFORD
UNIVERSITY PRESSOXFORD
(Oxford University Press is a department of the University of Oxford.
It farthers the University’s objective of excellence in research. scholarship,
and education by publishing worldwide. Oxford is a registered trade mark of
(Oxford University Press in the UK and in certain other countries.
Published in India by
Oxford University Press
‘YMCA Library Building. 1 Jai Singh Road, New Delhi 110001. India
© Oxford University Press 2012. 2016
The moral rights of the author)s have been asserted.
First Edition published in 2012
Second Edition published in 2016
All rights reserved, No part of this publication may be reproduced, stored in
a retrieval system, or transmitted, in any form or by any means, without the
prior permission in writing of Oxford University Press, or as expressly permitted
iy lw, by licence, or under terms agreed with the appropriate reprographics
:hts organization. Enquiries concerning reproduction outside the scope of the
"above should be sent to the Rights Department, Oxford University Press, at the
address above.
‘You must not circulate this work in any other form
and you must impose this same condition on any acquirer.
ISBN-13: 978-0-19-9463732
ISBN-10: 0-19-946373-5
‘eISBN-13 (eBook): 978-0-19.909037-2
‘e1SBN-10 (eBook): 0-19-909037-8
in Times New Roman
by Ideal Publishing Solutions, Delhi
Printed in India by Magic International (P) Ltd., Greater Noida
‘Third-party website addresses mentioned in this book are provided
by Oxford University Press in good faith and for information only.
Oxford University Press disclaims any responsibility for the material contained therein.I dedicate this book to my family
and
my uncle Mr B.L. TherajaFeatures of
RW APG
Li Steen oconputes IE imwactontac
BRS Paps T Ve relhansive:
Le Timpuransousuroenes [I eae onan Comiyietetsive Coveraae
ee es dee swear ene
Ppa Reaip ranging from basics of computer hardware and
pets te software to the basics of C programming
pp. i jay
bry ¥
Lage terres ant [drs
(odes
Keys such as Shift, Ctrl, and Alt are called modifier keys
because they are used to modi the normal function of 2
key. For example, Shift + character (lowercase) makes the
Notes and Programming Tips bolt bugsccieh ee
Notes highlight important terms and concepts,
and programming tips educate the readers about
Programming Tip:
Soutien promratmaie ers spdhen eo Wold oo
‘manipulated with
arithmetic or other
operators available in
Cboundaries,
POINTS TO REMEMBER
+ Acomputeris an electronic machine that accepts ata -~Points to Remember
and instructions and performs computations on the
Se oe ‘Summary points at the end of each chapter help
« Computers are used inallinterectve devices, such as _‘Teaders to revise all the important concepts explained
cellular telephones, GPS units, portable organizers, _in the chapter
‘ATMs, and gas pumps.
Glossary
Includes a list of key terms along with their definitions
for a quick recapitulation of important terms learned
inall chaptersthe Book
‘CASE STUDY 1: Chapters 9 and 0
CASE STUDY 2: Chapter 12
Programming Examples
About 250 C programs are included, which
demonstrate the applicability of the concepts learned
i on Answers to Objective
~ Questions
Exercises
Includes plenty of program code-related programs
at the end of relevant chapters, which require the
readers to find the output of a given code, the
functionality of a given loop, or errors in a given
program code
Case Studies
Select chapters on C include case studies that
show how C can be used to create programs
demonstrating real-life applications
ram to print Hello World, using pointer
Hinelude
int main()
C
char *ch = "Hello Korld";
printf(7Xs", ch);
return 0;
)
Output
Hello World
Objective Questions
Includes comprehensive exercises at the end of each
chapter to facilitate revision—Answers to these
questions are provided in Appendix F at the end of
the book
EXERCISESCompanion Online Resources
aan Visit india.oup.com/ores’9780199463732 to access
‘natn both teaching. and learning solutions online.
Online Resources
The following resources are available to support the
faculty and students using this text
For Faculty
+ PowerPoint presentations
* Solutions manual
* Projects
For Students
+ Multiple-choice Questions
+ Model Question Papers
* Codes of chapter-wise programming examples
step 4 Getting eared
Step 7: Flin your deals
regsteation fxm with
‘Step 2: treme qucy by
coves purer
+ BASE SEANGH + fee mate ith *
suThon inthe term
me - ranastory
ou + Upaate
* Deen ==
me Step 6 you donathave an Oxford regiter within | Step 8: Validation
> sierme + Weshal evet
Sep 3 Seco
elect Product _
Step 9: Contemation
‘Step 10 Vis sagan
om + Goto ndlcupcam
+ Sgn wth Onoe ©
‘Step 11: Vit your ensed products Step 12 Download Resources
Chek onthe ile
Select mou tye
‘owned the resoure you reaure
+ Goto *Resowees uction
= Resources fcPreface to the Second Edition
Information technology (IT) is the buzzword in the 21st century. It has revolutionized the way we think and irreversibly
changed our everyday existence. Computers form the backbone of information technology affecting all aspects of our
lives. They are not only used for general computing but also for performing tasks such as booking railway and airline
tickets, designing a building, training a player, and practicing landing of an airplane. The use of computers has become so
widespread that almost all electrical and electronic devices such as washing machines and air conditioners have a small
embedded computer within them. Even the smartphones are connected to the Intemet.
Learning computers is no longer meant only for students pursuing a career in engineering and technology, but is also
‘mandatory for students of other professions such as journalism, nursing, archaeology, and construction and management.
‘Therefore, a basic knowledge of computers helps one to be more productive and self-sufficient.
Moreover, C is considered to be the mother of all modem-day computer languages. Almost all popular cross-platform
programming languages and scripting languages, such as C++, Java, Python, Objective-C, Perl, Ruby, PHP, Lua, and
Bash, are implemented in C and borrow syntaxes and functions heavily from C. In the programming language popularity
website, C tops the list followed by C+ and Java,
‘Thus, knowledge of C provides a solid foundation to lear advanced programming skills such as object-oriented
programming, event-driven programming, multi-thread programming. real-time programming, embedded programming,
network programming, parallel programming, other programming languages, and new and emerging computing
paradigms such as grid-computing and cloud computing.
ABOUT THE BOOK
‘This second edition of Computer Fundamentals and Programming in C has been designed a8 a textbook for the
undergraduate students of engineering, computer science, and computer applications. The objective of this book is to
introduce the readers to the elements of computing, computer hardware and software, and C progemming,
PEDAGOGICAL FEATURES
‘The following are the salient features of the book:
Comprehensive coverage Provides comprehensive coverage of important topics ranging from the basics of computers
to C programming and important data structures
Case studies Includes case studies at the end of select chapters on C, which provide practical orientation to the concepts
discussed in the respective chapters
Complete program codes Contains plenty of program codes that are thoroughly tested and compiled to support the
text
Practical orientation Provides numerous solved examples and chapter-end exercises in the form of objective-type
questions, review exercises, and programming problems that enable the students to check their understanding of the
concepts
Glossary Includes a list of key terms at the end of each chapter that facilitates revision of important topics learned
‘Tips and Notes Includes programming tips that educate readers about common programming errors and how to avoid
them and notes that highlight important terms and concepts in between the text as sidebars for a quick recapitulation,
NEW TO THIS EDITION
‘The following are the most notable additions in this:
+ Introduces a chapter on Boolean Algebra and Logic Gates, which discusses the basic concepts underlying digital
computing systems
+ Many new sections have been added in this edition. The details are as follows:
Chapter 1 To provide readets a perspective of how computers evolved over the last century, this chaptet presents a
section on history of computers, which gives a timeline of the developments in computing technology. The section on
applications of computers covers new applications,ve Preface to the Second Edition
1er 3 The section on secondary storage devices includes latest deviees such as Blu-ray disks and external hard
disks. The chapter now also provides section on processor architecture, which focuses on the different components of a
processor, and types of processors.
Chapter 4 This chapter includes new examples to demonstrate the addition and subtraction of hexadecimal and octal
numbers. In addition, the chapter covers codes such as Unicode and 8421 and 2421 BCD codes. The sections on logic
gates and universal gates have been moved to Chapter S.
Chapter 5 This is a new chapter, which focuses on logic gates that form the basic building blocks of a digital circuit,
and discuses Boolean algebra, which is used to express the output of any circuit implemented using logic gates.
Chapter 6 This chapter strengthens discussion on operating systems by briefly explaining the command interpretation
module of an operating system and CLI vs GUI interface. It discusses the features of Windows 8 and Windows 10 along
‘with mobile operating systems, In addition, it includes a seetion outlining the differences between customized and public
domain software.
Chapter 7 To familiarize readers with how applications communicate over @ network, this chapter provides a brief
overview of two reference models—OSI model and TCP/IP model. In addition, it discusses Internet-related concepts,
such as IP address, URL, and domain name system (DNS).
Chapter 8 In onder to make the text more coherent, this chapter has been restructured to focus on the program designing
tools that aid in the development of efficient programs. The section on programming languages has been shifted to
chapter 6.
Chapter 9 This chapter includes an annexure, which shows the steps to compile and execute C programs on both Unix’
Linux and Ubuntu platforms.
Chapter 12 This chapter adds a program showing the array representation of sparse matrices. Similarly, it includes a
program to find whether a matrix is symmetric of not.
Chapter 14 {tineludes a program to illustrate the dangling pointer problem,
Chapter 15. Mt presents three different ways to find the size of a structure. All these different methods have been
exemplified through program codes.
CONTENT AND COVERAGE
‘The book is divided into two parts spanning 18 chapters and five appendices.
Part |: Computers in Fundamentals
Chapter 1, Introduction to Computers, provides an introduction to computers. The chapter explains the generations,
classifications, applications, and the basic organization of a computer system.
Chapter 2, Input and Output Devices, presents a detailed description of the different types of input and output devices.
Chapter 3, Computer Memory and Processors, explains the significance of memory hierarchy and discusses the different
types of primary and secondary memory that are widely used to store data, It also discusses the basic processor architecture
(ineluding RISC and CISC) and the instruction set.
Chapter 4, Number Systems and Computer Codes, discusses binary, octal, and hexadecimal number systems. The
‘chapter enables the reader to perform arithmetic operations on different number systems, Important codes such as ASCII,
EBCDIC, Excess 3, Gray code, and Unicode are also discussed in the chapter.
Chapter 8, Boolean Algebra and Logic Gates, introduces the concepts of digital computing systems such as Boolean
algebra, Boolean functions, Boolean expressions, and logic gates.
Chapter 6, Computer Software, provides a thorough overview of computer software. It discusses different types of
system software and application software packages that are widely used.
‘Chapter 7, Computer Networks and the Internet, talks about different types of computet networks, wired and wireless
media, network devices and topologies, area networks, and data transmission mode. It also discusses the Internet, TCP/
IP protocol, and different services provided by the Intemet.
Chapter 8, Designing Efficient Programs, details the different ste
performed for creating efficient and maintai
solution(s) of a given problem at hand.
‘ps in software development process, which are
ble programs. It also explains the different tools, which are used to obtainPreface to the Second Edition (oe
Part Il: Programming in C
Chapter 9, Introduction to C, discusses the building blocks of the C programming language, It includes descriptions om
identifiers, constants, variables, and operators supported by the language.
Annexure I shows the steps to write, compile, and execute a C program in Unix‘Linux and Ubuntu environments,
Chapter 10, Decision Control and Looping Statements, deals with special types of statements such as decision control,
iterative, break, control, and jump.
Case Study’ 1 includes two programs which hamess the concepts learnt in Chapters 9 and 10,
Chapter 11, Functions, deals with declaring, defining, and calling functions. It also discusses the storage classes as well
as variable scope in C. The chapter ends with the concept of recursion and a discussion of the Tower of Hanoi problem.
Annexure 2 discusses how to create user-defined header files.
Chapter 12, Arrays, provides a detailed explanation of arrays that includes one-dimensional, two-dimensional, and
‘multi-dimensional arrays. Towards the end of the chapter, the operations that can be performed on such arrays are also
explained
Case Study 2 provides an introduction to sorting and various sorting techniques such as bubble sort, insertion sort, and
selection sort.
Chapter 13, Strings, discusses the concept of strings, which are better known as character arrays. The chapter not only
focuses on reading and writing strings but also explains various operations that can be used to manipulate them.
Chapter 14, Pointers, presents a detailed overview of pointers, pointer variables, and pointer arithmetic, The chapter also
relates the use of pointers with arrays, strings, and functions. This helps readers to understand how pointers can be used
to write better and efficient programs.
Annexure 3 explains the process of deciphering pointer declarations.
Case Study 3 includes a program which demonstrates how pointers can be used to access and manipulate strings.
Chapter 15, Structure, Union, and Enumerated Data Type, introduces user-defined data types— structures and unions.
It includes the use of structures and unions with pointers, arrays, and functions so that the inter-connectivity between the
programming techniques can be well understood.
Annexure 4 provides an explanation about bit fields and slack bytes.
Chapter 16, Files, discusses how data can be stored in files. The chapter deals with opening. processing, and closing of
files through a C program. These files are handled in text mode as well as binary mode for better clarity of the concepts.
Chapter 17, Preprocessor Directives, deals with preprocessor directives. It includes small program codes that illustrate
the use of different directives in a C program.
Chapter 18, Introduction to Data Structures, provides an introduction to different data structures such as linked lists,
stacks, queues, trees, and graphs,
Appendix A, Bitwise Operations, discusses bit-level programming and some of the bitwise operators.
Appendix B, ANSI C Library Functions, lists some of the ANSI C library fun
Appendix C, Advanced Type Qualifiers and Inline Functions in C, introduces some advanced type qualificrs as well as
inline functions.
Appendix D, Interview Questions with Solutions, includes about 100 frequently asked interview questions along with
their solutions.
Appendix E, Linux: A Short Guide discusses the basics of Linux kernel and shell and describes the most commonly used
Linux commands.
Appendix F, Answers to Objective Questions, provides answers to objective questions.
sand their descriptions
ACKNOWLEDGEMENTS
| would like to gratefully acknowledge the feedback and suggestions provided by various faculty members for the
improvement of the book. | am obliged to the editorial team at Oxford University Press India for all their support towards
revising this book. Suggestions for improving the presentation and contents can be sent to the publishers through their
website www.india.oup.com or to me at reemathareja(@/gmail.com.
Reema TharejaPreface to the First Edition
‘Computers are so widely used in our day-to-day lives that imagining a life without them has become almost impossible.
‘They are not only used by professionals but also by children for interactively learning lessons, playing games, and doing
their homework. Applications of the computer and its users are increasing by the day.
Learning computer fundamentals is a stepping stone to having an insight into how these machines work. Once the
reader is aware of the basic terminology that is commonly used in computer science, he/she can then go on to develop
usefull computer programs that may help solve a user's problems.
Since computers cannot understand human languages, special programming languages are designed for this purpos
C is one such programming language. Being the most popular programming language, it is used in several different
software platforms such as system software and application software. A few other programming languages such as C++
and JAVA are also based on C. Hence, mastering the C language is a prerequisite for learning such languages
ABOUT THE BOOK
Computer Furdamentals and Programming int Cis aimed at serving as a textbook for undergraduate level courses in
‘computer science and enginecring and postgraduate level courses of computer applications. The objective of this book
is to introduce the students to the fundamentals of computers and the concepts of the C programming language and
‘enable them to apply these concepts for solving res Id problems. The book has been designed keeping in mind the
Fequirements of a basic first-level course on computer fundamentals and programming, which is offered as a common
subject in all engineering disciplines. It comprehensively covers the fundamental concepts of computers, including topics
such as introduction to computers, number system, input/output devices, computer memory, computer software, the
Internet, and introduction to algorithms and programming languages. Programming is a skill best developed by rigorous
practice. Keeping this in mind, the book provides a number of examples and exereises that would help the reader learn
how to design efficient, workable programs. Various programming examples that have been thoroughly implemented and
tested have been included in the book.
‘To further enhance the understanding of the subject, there are numerous chapter-end exereises provided in the form of
objective type questions, review questions, and programming problems.
“The book is also useful as a reference and resource to computer professionals.
ACKNOWLEDGEMENTS
‘The writing of this textbook was a mammoth task for which a lot of help was required from many people. Fortunately, 1
have had the fine support of my family, friends, and fellow members of the teaching staff at the Institute of Information
‘Technology and Management, Delhi
My special thanks would always go to my father Shri Janak Raj Thareja, my mother Smt. Usha Thareja, my brother
Pallay, and sisters Kimi and Rashi who were a source of inspiration and divine blessings for me. | am especially thankful
to my son Goransh who has been very patient and cooperative in letting me realize my dreams. My sincere thanks go to
my uncle, Mr B.L. Theraja, for his inspiration and guidance in writing this book.
Finally, I would like to acknowledge the technical assistance provided to me by Ed. Udit Chopra, who helped me in
designing and testing the numerous program codes provided in the book.
Last but not least, my acknowledgements will remain incomplete if I do not thank the editorial team at Oxford
University Press, India, for supporting me wholeheartedly during the publication of my books over the past few years.
Reema TharejaBrief Contents
Features of the Book iv
Companion Online Resources vi
Preface to the Second Edition vii
Preface to the First Edition x
Detailed Contents xii
PART |: COMPUTER FUNDAMENTALS
1 Introduction to Computers
2 Input and Output Devices
3 Computer Memory and Processors
4 Number Systems and Computer Codes
§ Boolean Algebra and Logic Gates
6 Computer Software
7 Computer Networks and the Internet
8 Designing Efficient Programs
PART Il: PROGRAMMING IN C
9 Introduetion to C
10 Decision Control and Looping Statements
11 Functions
12 Arrays
13 Strings
14 Pointers
15 Structure, Union, and Enumerated Data Type
16 Files
17 Preprocessor Directives
18 Introduction to Data Structures
Appendix A: Bitwise Operations 488
Appendix B: ANSI C Library Functions 490
Appendix C: Advanced Type Qualifiers and Inline Functions in C498
Appendix D: Interview Questions with Solutions 501
Appendix E: Linux: A Short Guide S11
Appendix F: Answers to Objective Questions 516
Index 523
About the Author $25
124
149
163
165
205
248
275
317
347
386
415
447
460Detailed Contents
Features of the Book iv
Companion Online Resources vi
Preface to the Second Edition vii
Preface to the First Edition’ x
Brief Contents xi
PART I: COMPUTER FUNDAMENTALS 1
1 Introduction to Computers 3
1.1 Computer 3
1.2 Characteristics of Computers 3
1.3 Stored Program Concept 4
1.3.1 Types of Stored Program Computers 4
1.4 History of Computers 5
1.5 Classification of Computers 9
15.1 Supercomputers 9
1.5.2 Mainframe Computers. 9
13.3 Minicomputers 9
1.3.4 Microcomputers 10
1.6 Applications of Computers 1
1,7 Basic Organization of a Computer 5
1.8 Lab Session—Inside the Computer 16
19
Motherboard 17
1.9.1 Characteristics ofa Motherboard 17
2 Input and Output Devices 2
2.1 Input Devices 22
2.1 Keyboard
21.2 Pointing Devices. 23
2.1.3 Handheld Devices 25
21.4 Optical Devices 26
2.15 Audiovisual Input Devices 28
2.2 Output Devices 29
22.1 Soft Copy Devices 29
2.2.2 Hard Copy Devices 33
3 Computer Memory and Processors 39
3.1 Introduction 39
3.2 Sequential and Random Access 39
3.3 Memory Hierarchy 39
3.4 Processor Registers 40.
3.5 Cache Memory 40
3.6 Primary Memory 40
3.6.1 Random Access Memory (RAM) 41
3.6.2 Read-only Memory (ROM) 41
3.6.3 Finding Required Data from Main
Memory 42
4.7 Secondary Storage Devices 42
4.7.1 Offline Storage 42
3.8 Magnetic Tapes 43
3.9 Floppy Disks 43
3.10 Hard Disks 44
3.11 External Hard Disks 46
3.12 Optical Drives 46
3.12.1 CD-ROM 47
3.12.2 DVD-ROM 4?
3.123 CD-R 47
3.124 CD-RW 47
3.125 BLU-Ray Disks 48
3.13 USB Flash Drives 48
3.14 Memory Cards 49
3.15 Mass Storage Devices 50
3.15.1 Disk Array 50
3.15.2 Automated Tape Library 50
3.153 CD-ROM Jukebox 50
3.16 Basic Processor Architecture 5?
3.16.1 Execution Unit $1
3.16.2 Registers 51
3.16.3 Bus Interface Unit 52
3.164 Instruction Set $2
3.16.5 System Clock 53
3.16.6 Processor Speed 53
3.16.7 Pipelining and Parallel
Processing 54
3.16.8 Types of Processors 54
4 Number Systems and Computer Codes 59
4.1 Introduction to Number Systems 59
4.2 Binary Number System 59
4.3 Working With Binary Numbers 60
43.1 Converting a Binary Number into
Decimal Form 61
43.2 Converting a Decimal Number into
Binary Form 61
43.3 Adding Two Binary Numbers 61
4.3.4 Subtracting Two Binary Numbers 62
43.5 Subtracting Two Binary Numbers Using
Twos Complement 62
43.6 Multiplying Two Binary Numbers 63
4.3.7 Dividing Two Binary Numbers 63
44 Octal Number System 63
44.1 Converting an Octal Number into
Decimal Form 63
44.2 Converting a Decimal Number into
Octal Form 64
44.3 Converting an Octal Number into
Binary Form 64
444 Converting a Binary Number into Octal
Form 6444.5 Adding Two Octal Numbers 65
4.4.6 Subtracting Two Octal Numbers 65
4.5 Hexadecimal Number System 66
4.5.1 Converting a Hexadecimal Number into
Decimal Form 66
4.5.2 Converting a Decimal Number into
Hexadecimal Form 66
4.5.3 Converting a Hexadecimal Number into
Binary Form 67
4.5.4 Converting a Binary Number into
Hexadecimal Form 67
4.5.5 Converting a Hexadecimal Number into
Octal Form 67
4.5.6 Converting an Octal Number into
Hexadecimal Form 67
45.7 Adding Two Hexadecimal
Numbers 68
4.5.8 Subtracting Two Hexadecimal
Numbers 68
4.6 Working with Fractions 68
4.7 Signed Number Representation in Binary
Form 69
4.7.1 Sign-and-magnitude 70
4.7.2 Ones Complement 70
47.3 Two Complement 70
48 BCD Code 70
4.9 Other Codes 71
4.9.1 ASCH Code 71
4.9.2 Extended Binary Coded Decimal
Interchange Code 71
4.9.3 Excess-3 Code 71
4.9.4 Weighted Codes 71
49.3 Gray Code 73
4.9.6 Unicode 73
§ Boolean Algebra and Logic Gates 16
$.1 Boolean Algebra 76
$2 Venn Diagrams 77
5.3 Truth Tables 77
3.4 Basie Laws of Boolean Algebra 78
$4.1 Identity Law 78
$4.2 Idempotency Law 78
$4.3 Complement Law 78
$44 Involution Law 78
$4.5 Commutative Law 78
5.4.6 Associative Law 79
$4.7 Distributive Law 79
5.4.8 Absorption Law 80
5.4.9 Consensus Law 80
5.4.40 De Morgan's Laws 80
5.5 Representations of Boolean Functions 8/
5.5.1 Minterm 81
5.5.2 Maxterm 82
5.6 Logic Gates 82
5.7 Logic Diagrams and Boolean Expressions 84
5.8 Universal Gates 85
5.8.1 NAND Universal Gate 85
Detailed Contents
5.8.2 NOR Universal Gate 86
5.9 Simplification of Boolean Expressions
Using Kamaugh Map 87
6 Computer Software 92,
6.1 Introduction to Computer Software 92
6.2 Classification of Computer Software 93
6.2.1 System Software 93
6.2.2 Application Software 96
6.3 Acquiring Computer Software 96
63.1 Buying Pre-written Software 96
63.2 Having Customized Software 96
63.3 Downloading Public Domain
Software 97
6.4 Productivity Software 97
6.4.1 Introduction to Microsoft Office 97
65 Graphics Software 109
6.6 Multimedia Software 109
6.7 Database Management Software 109
6.8 Operating Systems 1/0
6.8.1 Types of Operating Systems 110
68.2 Command Interpretation 111
6.9 Popular Operating Systems 112
69.1 Microsoft DOS 112
69.2 Windows 113
69.3 UNIX IIS
6.94 Linux 116
6.10 Mobile Operating Systems 116
6.11 Programming Languages 1/7
6.12 Generation of Programming Languages 118
6.12.1 First Generation: Machine
Language 18
6.12.2 Second Generation: Assembly
Language 118
6.12.3 Third Generation: High-Level
Language 119
6.12.4 Fourth Generation: Very High-tevel
Language 119
6.125 Fifth Generation Programming
Language 120
7 Computer Networks and the Internet 124
7.1 Introduction to Computer Networks 124
7.1.1 Advantages of Computer
Networks 124
7.2 Types of Networks 125
7.2.1 Local Area Network 125
7.2.2 Wide Area Network 125
7.2.3 Metropolitan Area Network 125
7.24 Campus/Corporate Area Network 126
7.2.5 Personal Area Network 126
7.2.6 Peer-to-Peer Networks 126
7.3 Physical Components of a Network 127
7.4 Wired Media 127
7.4.1 Twisted-pair Wires 127
7.4.2 Coaxial Cables 127
7.4.3 Fibre Optic Cables 127Ge) meric
75 Wireless Media 128
7.5.1 Terrestrial Microwaves 128
7.5.2 Satellite Communication 128
75.3 Infrared Communication 128
7.6 Networking Devices 128
7.6.1 Hub 128
7.6.2 Repeater 129
7.6.3 Switch 129
7.6.4 Bridge 129
7.6.3 Router 129
7.6.6 Gateway 130
7.6.7 Network Interface Card 130
7.7 Network Topologies 130
7.7.1 Bus Topology 130
7.7.2 Star Topology 130
7.7.3 Ring Topology 131
7.7.4 Mesh topology 131
7.7.5 Hybrid Topology 131
7.8 Wireless Networks /32
7.9 Data Transmission Mode 133
7.9.1 Simplex, Half-duplex, and Full-duplex
Connections 133
7.9.2 Serial and Parallel Transmissions 134
7.9.3 Synchronous and Asynchronous Data
Transmission Modes 135
7.10 Open System Interconnection
Model 136
7.11. Transmission Control Protocol/Internet
Protocol Model 138
712 Internet 138
7.12.1 History 139
7.13 Internet Protocol Address 139
7.14
TAS
716
7.13.1 Types of IP Addresses 139
Domain Name System 139
Uniform Resource Locator or Universal Resource
Locator 140
Internet Services 141
7.16.1 Electronic Mail 141
7.16.2 File Transfer Protocol 142
7.16.3 Chatting 142
7.164 Internet Conferencing 143
7.16.5 Electronic Newspaper 143
7.16.6 World Wide Web 143
7.16.7 Online Shopping 143
7.168 Search Engine 144
Designing Efficient Programs 149
81
82
83
84
85
86
Programming Paradigms 149
B8L.1 Monolithic Programming 149
81.2 Procedural Programming 149
8.1.3 Structured Programming 150
814 Object-oriented Programming
(00P) 1ST
Example of a Structured Program 151
Design and Implementation of Efticient
Programs 152
Program Design Tools: Algorithms, Flowcharts,
Pscudocodes 153
84.1 Algorithms 153
$4.2 Control Structures Used in
Algorithms 153
84.2 FLOWCHARTS 154
84.3 Pseudocodes 156
‘Types of Errors 157
Testing and Debugging Approaches 158
PART Il: PROGRAMMING IN C 163
9 Introduction to C
9.1 Introduction 165
9.1.1 Background 165
9.1.2 Characteristics of C166
91.3 Uses of C 166
9.2 Structure of aC Program 166
9.3 Writing the first C Program 167
9.4 Files Used inaC Program 168
9.4.1 Source Code Files 168
9.4.2 Header Files 168
9.4.3 Object Files 169
9.4.4 Binary Executable Files 169
9.5 Compiling and Executing C Programs 169
9.6 Using Comments 170
9.7 CTokens 171
9.8 Character Set in@ 171
9.9 Keywords 171
9.10 Identifiers 172
9.10.1 Rules for Forming Identifier
Names 172
9.11 Basie Data Types in 172
165
9.12
913
914
9.15
9.11.1 How are Float and Double Stored? 173
Variables 173
9.12.1 Numeric Variables 173
9.12.2 Character Variables 174
9.123 Declaring Variables 174
9.124 Initializing Variables 174
Constants 174
9.13.1 Integer Constants 174
9.13.2 Floating Point Constants 175
9.13.3 Character Constants 175
9.13.4 String Constants 175
9.13.5 Declaring Constants 175
Input/Output Statements in C176
9.14.1 Streams 176
9.14.2 Formatting Input/Output 176
9.14.3 print€() 176
9.144 scant() 179
9.14.5 Examples of printf/scanf 180
9.14.6 Detecting Errors During Data Input 182
Operators in 182
9.15.1 Arithmetic Operators 18310
9.15.2 Relational Operators 184
9.15.3 Equality Operators 18S
9.15.4 Logical Operators 185
9.15.5 Unary Operators 186
9.15.6 Conditional Operator 187
9.15.7 Birwise Operators 187
9.15.8 Assignment Operators 189
9.15.9 Comma Operator 189
9.15.10 sizeof Operator 191
9.15.11 Operator Precedence Chart 191
9.16 Type Conversion and Typecasting 195
9.16.1 Type Conversion 195
9.16.2 Typecasting 196
Annexure 1 204
Decision Control and Looping Statements 208
10.1. Introduction to Decision Control
Statements 205
10.2 Conditional Branching Statements 205
10.2.1 1 Statement 205
10.2.2 if-else Statement 207
10.2.3 if-else-af Statement 209
10.2.4 switch case 212
10,3 Iterative Statements 2/6
10.3.1 while Loop 216
103.2 dowhile Loop 218
10.3.3 for Loop 221
10.4 Nested Loops
10.5 Break and Conti
10.3.1 break Statement 232
10.3.2 continue Statement 232
10.6 goto Statement 233
Case Sudy 1: Chapters 9 and 10° 245
Functions: was
11.1 Introduction 248
11.1.1 Why are Functions Needed? 248
11.2 Using Functions 249
11.3 Function Declaration/Function Prototype 249
11.4 Function Definition 250
11S Funetion Call 25/
ILS.1 Points to Remember While Calling
Functions 251
11.6 Return Statement 252
1.6.1 Using Variable Number of
Arguments 253
11.7 Passing Parameters to Functions 253
47.1 Call by Value 233
17.2 Call by Reference 254
11.8 Scope of Variables 257
1.8.1 Block Scope 237
11.8.2 Function Scope 258
11.8.3 Program Scope 258
11.8.4 File Scope 259
11.9 Storage Classes 259
119.1 auto Storage Class 259
11.9.2 register Storage Class 260
232
11.10 Recursive Functions 262
Detailed Contents oo
41.9.3 extern Storage Class 260
4194 static Storage Class 261
41.9.5 Comparison of Storage Classes 262
1.10.1 Greatest Common Divisor 263
1110.2 Finding Exponents 264
11.103 Fibonacci Series 264
11.11 Types ofRecursion 265
ILUL1 Direct Recursion 265
IL1L2 Indirect Recursion 265
ILU.3 Tail Recursion 265
ILIA Linear and Tree Recursion 266
11.12 Tower of Hanoi 266
11.13 Recursion Versus Iteration 267
Annexure 2 274
12 Arrays 25
12.1 Introduction 275
12.2 Declaration of Arrays 275
Points to Remember 276
12.3 Accessing the Elements of an Array 276
(2.3.1 Calculating the Address of Array
Elements 277
123.2 Calculating the Length of an
Array 277
124 Storing Values in Arrays 278
42.4.1 Initializing Arrays during
Declaration 278
12.4.2 Inputting Values from the
Keyboard 278
12.4.3 Assigning Values to Individual
Elements. 278
12.5 Operations on Arrays 279
12.5.1 Traversing an Array 279
42.5.2 Inserting an Element in an Array 283
12.5.3 Deleting an Element from an
Array 286
12.5.4 Merging Two Arrays 287
42.5.5 Searching for a Value in an
Array 289
12.6 Passing Arrays to Functions 292
12.7 Two-Dimensional Amays 295
12.7.1 Declaring Two-dimensional
Arrays 295
12.7.2 Initializing Two-dimensional
Arrays 296
12.7.3 Accessing the Elements of
Two-dimensional Arrays 297
12.8 Operations on Two-Dimensional Arrays. 300
12.9 Passing Two-Dimensional Arrays to
Functions 302
129.1 Passinga Row 303
12.9.2 Passing an Entire 2D Array 303
12.10 Multidimensional Arrays 305
12.11 Sparse Matrices 306
I2ILI Array Representation of Sparse
Matrices 307ee Detailed Contents
13
14
12.12 Applications of Arrays 308
Case Stuely 2: Chapter 12313
Strings 317
13.1 Introduction 317
13.11 Reading Strings 318
13.1.2 Writing Strings 319
13.13 Summary of Functions Used to Read
and Write Characters 320
13.2 Suppressing Input 32/
13.2.1 Using a Seanset 321
13.3 String Taxonomy 322
13.4 Operations on Sirings 322
13.4.1 Finding the Length of a
String 323
13.4.2 Converting Characters of a String into
Upper Case 323
13.4.3 Converting Characters of a String Into
Lower Case 324
13.4.4 Concatenating Two Strings to Form a
New String 324
13.4.5 Appending a String to Another
String 325
13.4.6 Comparing Two Strings 326
13.4.7 Reversing a String 325
13.4.8 Extracting a Substring from
Left 327
13.4.9 Extracting a Substring from Right of
the String 328
13.410 Extracting a Substring from the
Middle of a String 328
134.11 Inserting a String in Another
String 329
134.12 Indexing 330
13.413 Deleting a String from the Main
String 330
13.4.14 Replacing a Pattern with Another
Pattern in a String 331
13.5 Miscellaneous String and Character
Functions 33/
13.5.1 Character Manipulation
Functions 331
13.5.2 String Manipulation Functions 332
13.6 Arrays of Strings 337
Pointers 347
14,1, Understanding the Computer's
Memory 347
14.2 Introduction to Pointers. 348
14.3 Declaring Pointer Variables 348
14.4 Pointer Expressions and Pointer
Arithmetic 350
14.5 Null Pointers 354
14.6 Generic Pointers 354
14.7 Passing Arguments to Function Using
Pointers 354
14,8 Pointers and Arrays 358
14.9 Passing an Array to a Function 359
14.10 Difference Between Array Name and
Pointer 360
14.11 Pointers and Strings 360
14.12 Arrays of Pointers 364
14.13 Pointers and 2D Arrays 365
14.14 Pointers and 3D Arrays 367
14.15 Function Pointers 368
14.13.1 Initializing a Function Pointer 368
14.13.2 Calling a Function Using a Function
Pointer 368
14.15.3 Comparing Function Pointers 369
14.15.4 Passing a Function Pointer as an
Argument toa Funetion 369
14.16 Array of Function Pointers 369
14.17 Pointers to Pointers 370
14.18 Memory Allocation in C Programs 370
14.19 Memory Usage 370
14.20 Dynamic Memory Allocation 371
14.20.1 Memory Allocations Process 371
14.20.2 Allocating a Block of Memory 371
14.203 Releasing the Used Space 372
14.204 To Alter the Size of Allocated
Memory 373
14.21 Drawbacks of Pointers 374
Annexure 3 382
Case Study 3: Chapters 13 and 14 384
15 Structure, Union, and Enumerated
Data Type 386
15.1 Introduction 386
1S.LI Structure Declaration 386
15.12 Typedef Declarations 387
15.13 Initialization of Structures 388
15.14 Accessing the Members of a
Structure 388
15.1.5 Copying and Comparing
Structures 389
15.1.6 Finding the Size of a Structure 389
15.2 Nested Structures 392
15.3 Arrays of Structures 303
15.4 Structures and Functions 395
15.4.1 Passing Individual Members 395
15.4.2 Passing the Entire Structure 395
15.4.3 Passing Structures Through
Pointers 398
15.5 Self-referential Structures 402
15.6 Unions 402
15.6.1 Declaring a Union 402
15.6.2 Aecessing a Member ofa
Union 403
15.6.3 Initializing Unions 403
15.7 Arrays of Union Variables 404
15.8 Unions Inside Structures 404
15.9 Structures Inside Unions 404
Enumerated Data Type 405
15.10.1 enum Variables 406
15.10.2 Using the Typedef Keyword 40615.103. Assigning Values to Enumerated
Variables 406
15.104 Enumeration Type Conversion 406
15.105 Comparing Enumerated
Types 407
15.10.6. Input/Output Operations on
Enumerated Types 407
Annexure4 413
16 Files a1
16.1 Introduction to Files 4/5
16.1.1 Streams in 415
16.1.2 Buffer Associated with File
Streams 415
16.1.3 Types of Files 416
16.2 Using Files in C417
16.2.1 Declaring a File Pointer Variable 417
16.2.2 Openinga File 417
16.2.3 Closing a File Using felose() 418
163 Reading Data From Files 4/8
16.3.1 fscanf () 418
16.3.2 fgets() 419
163.3 fgetc() 420
16.34 fread() 420
164 Writing Data to Files 421
164.1 fprint#() 421
164.2 fputs () 422
164.3 fpute () 423
16.44 furite () 423
16.5 Detecting the End-of-File 424
16.6 Error Handling During File Operations 424
16.6.1 clearerr() 425
16.6.2 perror () 425
16.7 Accepting Command Line Arguments 426
16.8 Functions for Selecting a Record
Randomly 438
168.1 fseck() 438
16.8.2 ftel. () 440
16.83 rewind () 440
16.84 fgetpos() 441
16.8.5 fsetpos() 441
16.9 Deleting a File 441
16.10 Renaming a File 442
16.11 Creating a Temporary File 442
17 Preprocessor Directives 47
17.1 Introduction 447
Appendix A: Bitwise Operations 488
‘Appendix B: ANSI C Library Functions 490
Detailed Contents sit
17.2 Types of Preprocessor Directives 447
173 define 447
17.3.1 Object-like Macro 448
17.3.2 Function-like Macros. 448
17.3.3 Nesting of Macros 449
17.34 Rules for Using Macros 449.
17.3.5 Operators Related to Macros. 450
174 sinclude 450
17.5 sundef 451
176 sline 451
17.7 spragna 452
17.8 Conditional Directives 454
178.1 wifder 454
178.2 wifndet 454
1783 A 435
1784 telse 453
I78S tolit 453
1786 tendif 456
17.9 defined Operator 456
17.10 terror 456
17.11 Predefined Macro Names 457
18 Introduction to Data Structures 460
18.1 Introduction 460
18.2 Classification of Data Structures 460
18.2.1 Primitive and Non-primitive Data
Structures 460
18.2.2 Linear and Non-linear Structures 460
18.3 Arrays 461
184 Linked Lists 46!
18.4.1 Traversing a Linked List. 462
18.4.2 Searching Linked List 462
18.4.3 Inserting a New Node in a Linked
ist 463
18.44 Deleting a Node from a Linked
List 466
18.5 Stacks 471
18.3.1 Operations on Stack 473
18.6 Queues 475
18.6.1 Operations on Queues 475
18,7 Trees 477
18.7.1 Representation of Binary Trees in
Memory 478
18.7.2 Traversing a Binary Tree 478
18.8 Graphs 479
18.8.1 Representation of Graphs 480
“Appendix C: Advanced Type Qualifiers and Inline Functions in C498
“Appendix D: Interview Questions with Solutions S01
Appendix E: Limex: A Short Guide S11
“Appendix F: Answers to Objective Questions $16
Index 523
About the Author $251
2
3
4
5
6
7
8
PART |
COMPUTER
NDAMENTALS
Introduction to Computers
Input and Output Devices
Computer Memory and Processors
Number Systems and Computer Codes
Boolean Algebra and Logic Gates
Computer Software
Computer Networks and the Internet
Designing Efficient Programs‘TAKEAWAYS
+ Characteristics of computers
‘+ Digital computers
* Stored program concept
COMPUTER
A computer, in simple terms, can be defined as an
electronic device that is designed to accept data, perform
the required mathematical and logical operations at high
‘speed, and output the result,
‘We all have seen computers in our homes, schools, and
colleges. In fact, in today's scenario, we find computers in
most aspects of our daily lives. For some of us, itis hard to
even imagine a world without them,
In the past, computers were extremely large in size
and often required an entire room for installation. These
computers consumed enormous amounts of power and
were 100 expensive to be used for commercial applications.
‘Therefore, they were used only for limited tasks, such
us computing trajectories for astronomical or military
applications, However, with technological advancements,
the size of computers became smaller and their energy
requirements reduced immensely. This opened the way for
adoption of computers for commercial purposes.
‘These days, computers have become so prevalent in
the market that all interactive devices such as cellular
phones, global positioning system (GPS) units, portable
organizers, automated teller machines (ATMs), and gas
pumps, work with computers.
CHARACTERISTICS OF COMPUTERS
‘We have seen that a computer is an electronic device that
performs a function based on a given set of instructions
known as a program. A computer accepts data, processes
it, and produces information. Here, data refers to some
raw fact or figure, and information implies the processed
data, For example, if 12-12-92 is the date of birth of
student, then it is data (a raw fact/figure). However, when
we process this data (subtract it from the present-date)
+ Generations of computers
+ Types of computers
+ Applications of computers
roduction to Computers
+ Basic organization of
‘acomputer
and say that the age of the student is 23 years, then the
outcome is information,
‘These days, computers have become a crucial part of
our everyday lives, and we need computers just like we
need televisions, telephones, or other electronic devices at
home. Computers are basically meant to solve problems
quickly and accurately. The important. characteristics
of a computer (refer to Figure 1-1) are discussed in the
following text.
Ge
Se &
Cars) one CEE
Figure 1.1 Characteristics of computers
Speed Computers can perform millions of operations per
second, which means that data that may otherwise take
many hours to process is output as information in the
blink of an eye. The speed of computers is usually given
in nanoseconds and picoseconds, where 1 nanosecon
1 x 10” seconds and | picosecond = 1 x 10° seconds,
Accuracy A computer is a very fast, reliable, and robust
electronic device. It always gives accurate results,
provided the correct data and set of instructions are input
to it. Hence, in the event of an error, it is the user who hasG Computer Fundamentals and Programming in C
‘the incorrect data/program is responsible. This clearly
‘means that the output generated by a computer depends on
the given instructions and input data. If the input data is,
‘wrong, then the output will also be erroneous. In computer
terminology, this is known as garbage-in, garhage-out
(GIGO).
‘Automation Besides being very fust_and accurate,
computers are automatable devices that can perform a
task without any user intervention. The user just needs to
assign the task to the computer, after which it automati-
cally controls different devices attached to it and executes,
the program instructions,
Diligence Unlike humans, computers never get tired of a
repetitive task. It can continually work for hours without
creating errors. Even if a large number of executions need
tobe executed, each and every execution requires the same
duration, and is executed with the same accuracy
Versatile Versatility is the quality of being flexible. Today,
computers are used in our daily life in different fields. For
example, they are used as personal computers (PCs) for
home use, for business-oriented tasks, weather forecasting,
space exploration, teaching, railways, banking, medicine,
and so on, indicating that computers can perform different
tasks simultancously. On the PC that you use at home,
you may play a garne, compose and send e-mails, listen
to music, etc. Therefore, computers are versatile devices
as they can perform multiple tasks of different nature at
the same time.
Memory Similar to humans, computers also have
memory. Just the way we cannot store everything in our
memory and need secondary media, such as a notebook,
to record certain important things, computers also have
internal or primary memory (storage space) as well as
external or secondary memory. While the internal memory
of computers is very expensive and limited in size, the
secondary storage is cheaper and of bigger capacity.
‘The computer stores a large amount of data and
programs in the secondary storage space. The stored
data and programs can be retrieved and used whenever
required. Secondary memory is the key for data storage.
Some examples of secondary devices include floppy disks,
optical disks (CDs and DVDs), hard disk drives (HDDs),
and pen drives.
When data and programs have to be used, they are
copied from the secondary memory into the intemal
‘memory, offen known as random access memory (RAM).
‘The concept of computer memory is discussed in detail in
Chapter 3.
No 1Q Although the trend today is to make computers
intelligent by inducing artificial intelligence (AI) in them,
they still do not have any decision-making abilities of their
‘own, They need guidance to perform various tasks.
Economical Today, computers are considered as short-
term investments for achieving long-term gains. Using
‘computers also reduces manpower requirements and leads
toan clegant andefficient way of performing various tas!
Hence, computers save time, energy, and money. When
‘compared to other systems, computers can do more work
in lesser time. For example, using the conventional postal
system to send an important document takes at least (Wo to
three days, whereas the same information when sent using,
the Internet (e-mail) will be delivered instantaneously,
STORED PROGRAM CONCEPT
All digital computers are based on the principle of stored
program conceptwhich was introduced by Sir John von
Neumann in the late 1940s. The following are the key
characteristic features of this concept:
+ Before any data is processed, instructions are read into
memory,
+ Instructions ate stored in the computer's memory for
execution.
+ Instructions are stored in binary form (using binary
numbers—only 0s and Is),
+ Processing starts with the first instruction in the program,
which is copied into a control unit circuit. The control
unit executes the instructions.
+ Instructions written by the users are performed
sequentially until there is a break in the current flow,
+ InpuvOurput and processing operations are performed
simultaneously. While data is being tead/written, the
central processing unit (CPU) executes another program
in the memory that is ready for execution
‘Astored program architecture is a fundamental
‘computer architecture wherein the computer executes
‘the instructions that are stored in its memory.
John W. Mauchly, an American physicist, and J.
Presper Eckert, an American engineer, further contributed
to the stored program concept to make digital computers
much more flexible and powerful. As a result, engineers
in England built the first stored-program computer,
Manchester Mark I, in the year 1949, They were shortly
followed by the Americans who designed EDVAC in the
very same yeat.
‘Today, a CPU chip can handle billions of instructions
per second. It executes instructions provided both the data
and instructions are valid, In case either one of them or
both are not valid, the computer stops the processing of
instructions.
1.3.1 Types of Stored Program Computers
A computer with a Von Neumann architecture stores data
and instructions in the same memory. There is a serial
machine in which data and instructions are selected oneskein
sae esapiaes
Fe Genie -cwicstcsuiineeem |
Instruction address: Data address
murnctin | nano | Pesce | pearvieden | gy
Figure 1.2 Von Neumann architecture (a) Shared memory for instructions and data (b) Separate
memories for instructions and data
at a time. Data and instructions are transferred to and
from memory through a shared data bus. Since there is a
single bus to carry data and instructions, process execution
becomes slower.
Later Harvard University proposed stored program
concept in which there was a separate memory to store
data and instructions, Instructions are selected serially
from the instruction memory and executed in the processor.
When an instruction needs data, it is selected from the data
memory, Since there are separate memories, execution
becomes faster
HISTORY OF COMPUTERS
Early computers were designed not for entertainment but
for solving number-crunching problems. These computers
‘were punch-card based computers that took up entire rooms.
‘Today, our smartphones have much more computing power
than that was available in those early computers,
In this section, we will read about history of computers
‘way back from the invention of abacus and take a look at
the remarkable achievements in computing technology till
the current time,
Timeline of Developments
300 BC: The abacus was an early aid for mathematical
computations and was designed to aid human's memory
while performing calculations. A skilled abacus operator
can add and subtract with the same speed as that of a person
performing the same calculation using a hand calculator.
‘The invention of abacus is often wrongly attributed to
‘China, It was used by the Babylonians even in 300 BC and
is still in use today (in the Far East)
1822: English mathematician Charles Babbage designed
4 steam-driven calculating machine that could compute
lubles of numbers. Though the project failed as he could
not complete the construction of the engine, it laid the
foundation for the first computer.
1890: Herman Hollerith, an American inventor, designed
& punched card system to calculate the 1880 census.
‘The system completed the task in three years saving the
US government $5 million. Later Herman established a
‘company that we today know as IBM.
1936: British mathematician Alan Turing introduced
4 universal machine called the Turing machine capable
‘of computing anything that is computable, The central
‘concept of the modem computer is based on this machine.
1941: John Vincent Atanasoff, a Bulgarian-American
physicist, and bis graduate student, Clifford Berry, at Towa,
State College designed Atanasoff-Berry computer (ABC)
that could solve 29 equations simultaneously. It was the
first time a computer could store information in its main
memory.
1943-1944: John W. Mauchly and J. Presper Eckert
built the Electronic Numerical Integrator and Calculator
(ENIAC), which is considered as the grandfather of digital
computers. It filled a 20 x 40 feet room and had 18,000
vacuum tubes.
1946: Mauchly and Presper designed the UNIVAC,
which was the first commercial computer for business and
government applications.1 (6°) Computer Fundamentals and Programming in C
"947; William Shockley, John Bardeen, and Walter
Brattain of Bell Laboratories invented the transistor. Soon
vacuum tubes in computers were replaced by transistors.
1953: Grace Hopper developed the first computer
language COBOL.
1954: The FORTRAN programming language was
developed.
1958: Jack Kilby of Texas Instruments and Robert
Noyce at Fairchild Semiconductor Corporation separately
invented integrated circuit, which is commonly known as
the computer chip.
1964: Douglas Engelbart developed a prototype of the
modern computer, with a mouse and a graphical user
interface (GUD. This was a remarkable achievement
as it shifted computers from a specialized machine for
scientists and mathematicians to general public.
1969: Unix operating system was developed at Bell Labs.
It was written in the C programming language and was
designed to be portable across multiple platforms, Soon it
became the operating system of choice among mainframes
at large companies and government entities.
1970: DRAM chip was introduced by Intel.
1971: Alan Shugart with his team in IBM invented
the floppy disk which allowed data to be shared among
‘computers.
1973; Robert Metcalfe, a research member at Xerox,
developed Ethemet for connecting multiple computers,
and other hardware.
1974-197: Personal
popular.
1975: Paul Allen and Bill Gates started writing software for
the Altair 8800 using the new BASIC language. On April 4,
they both formed their own software company, Microsoft.
1976: Steve Jobs and Steve Worniak started Apple
Computers and developed Apple I, the first computer with
asingle-circuit board.
computers started becoming
1977: Apple Il was launched that offered colour graphics
and incorporated an audio cassette drive for storage.
1978: WordStar, a word processor application, was
released by MicroPro International.
1979: VisiCale, the first computerized spreadsheet
program for personal computers, was unveiled.
1981: The first IBM personal computer was introduced
that used Microsoft's MS-DOS operating system. The
term PC was popularized.
1983: The first laptop was introduced. Moreover, Apple
introduced Lisa as the first personal computer with a GUL
with drop-down menus and icons
1985: Microsoft announced Windows as a new operating
system,
1986: Compaq introduced Deskpro 386 in the market,
Which was a 32-bit architecture machine that provides
speed comparable to mainframes.
1990; Tim Bemers-Lee invented World Wide Web with
HTML as its publishing language
1993: The Pentium microprocessor introduced the use of
graphics. and music on PCs.
1994: PC games became popular.
1996: Sergey Brin and Larry Page developed the Google
search engine at Stanford University.
1999: The term Wi-Fi was introduced when users started
connecting to the Internet without wires.
2001: Apple introduced Mac OS X operating system,
which had protected memory architecture and pre-emptive
multi-tasking, among other benefits, To stay competitive,
Microsoit launched Windows XP.
2003: ‘The first 64-bit processor, AMD's Athlon 64, was
brought into the consumer market,
2004: Mozilla released Firefox 1.0 and in the same year
Facebook, « social networking site, was launched,
2005: YouTube, a video sharing service, was launched. In
the same year, Google acquired Android, a Linux-based
mobile phone operating system.
2006: Apple introduced MacBook Pro, its first Intel-
based, dual-core mobile computer:
2007: Apple released iPhone, which brought many
‘computer functions in the smartphone
2009: Microsoft launched Windows 7 in which users
could pin applications to the taskbar.
2010: Apple launched iPad, which revived the tablet
computer segment.
2011: Google introduced Chromebook, a laptop that runs
‘on the Google Chrome operating system.
2015: Apple released the Apple Wate, In the same year,
Microsoft launched Windows 10.
‘After reading these interesting developments in
computing technology, let us also understand the evolution
of computers through different generations.
First Generation (1942-1955)
Hardware Technology First. generation computers were
‘manufactured using thousands of vacuum tubes (see
Figure 1.3);a vacuum tube is adevice made of fragile glass.
Memory Electromagnetic relay was used ay primary
memory and punched cards were used to store data and
instructions.
Software Technology Programming was done in machine
or assembly language,Used for Scientific applications
Examples ENIAC, EDVAC, EDSAC, UNIVAC I, IBM 701
Highlights
+ They were the fastest calculating device of those times
+ Computers were too bulky and required « complete
room for storage
* Highly unreliable as vacuum tubes emitted a large
amount of heat and burnt frequently
+ Required air-conditioned rooms for installation
+ Costly
+ Difficult to use
+ Required constant’ maintenance because vacuum
tubes used filaments that had limited life time.
Therefore, these computers were prone to frequent
hardware failures
Figure 1.3. Vacuum tube
Source: Viadysiav Danilin/Shutterstock
Second Generation (1955-1964)
Hardware Technology Second generation computers
were manufactured using transistors (see Figure 1.4)
‘Transistors were reliable, powerful, cheaper, smaller, and
cooler than vacuum tubes.
‘Memory Magnetic core memory was used as primary
memory; magnetic tapes and magnetic disks were used
to store data and instructions. These computers had faster
sand larger memory than the first generation computers.
Software Technology Programming was done in high
level programming languages. Batch operating system
was used.
Used for Scientific and commercial applications
Examples Honeywell 400, IBM 7030, CDC
UNIVAC LARC
Highlights
+ Faster, smaller, cheaper, reliable, and easier to use than
the first generation computers
1604,
sci ttn
+ They consumed 1/10th the power consumed by f
‘generation computers
+ Bulky in size and required a complete room for its
installation
+ Dissipated less heat than first generation computers but
still required air-conditioned rooms
* Costly
+ Difficult to use
at
o®
Figure 14 Transistors
Source: yurazaga/Shutterstock
Third Generation (1964-1975)
Hardware Technology Third generation computers were
manufactured using integrated chips (ICs) (shown in
Figure 1.5). ICs consist of several components such as
transistors, capacitors, and resistors on a single chip to
avoid wired interconnections between components, These
computers used $S/ and MSI technology. Minicomputers
came into existence,
Initially, ICs contained 10-20 components. This
technology was called Small Scale Integration (SSI). Later,
‘it was enhanced to contain about 100 components. This.
was called MSI (Medium Scale integration),
Memory Larger magnetic core memory was used as
primary memory; larger capacity magnetic tapes and
magnetic disks were used to store data and instructions.
Software Technology Programming was doneinhigh level
programming languages such as FORTRAN, COBOL,
Pascal, and BASIC. Time sharing operating system. was
used. Software was separated from the hardware. This
allowed users to invest only in the software they need.
Used for Sciemtific, commercial, and interactive online
applications
Examples 1BM 360/370, PDP-8, PADP-11, CDC6600
Highlights
+ Faster, smaller, cheaper, reliable, and easier to use than
the second generation computers
+ They consumed less power than second generation
computers8 Computer Fundamentals and Programming in C
W Bulky in size and required a complete room for
installation
+ Dissipated less heat than second generation computers
but still required air-conditioned rooms
+ Costly
+ Easier to use and upgrade
Figure 1.5
Integrated circuits
Source: cooldesign/FreeDigitalPhotos.net
Fourth Generation (1975-1989)
Hardware Technology Fourth generation computers
were manufactured using ICs with LSI (Large Scale
Integrated) and later with VLSI technology (Very Large
le Integration), Microcomputers came into existenc
Use of personal computers became widespread. High
speed computer networks in the form of LANs, WANs,
and MANs started growing. Besides mainframes,
supercomputers were also used
{51 circuits cantained 30,000 components on a single chip
and VLSI technology had about one million electronic
components on a single chip.
Memory Semiconductor memory was used as primary
memory, large capacity magnetic disks were used as built
in secondary memory, Magnetic tapes and floppy disks
were used as portable storage devices.
Software Technology Programming was
high level programming language such as C and C+
Graphical User Interface (GUI) based operating system
(e.g, Windows) was introduced. It had icons and menus
among other features to allow computers to be used as
a general purpose machine by all users. UNIX was also
introduced as an open source operating system. Apple Mac
OS and MS DOS were also released during this period. ALI
these operating systems had multi-processing and multi~
programming capabilities
done
Used for Scientific, commercial, interactive online, and
network applications
Examples IBM PC. Apple Il, TRS-80, VAX 9000, CRAY
1, CRAY-2, CRAY-X/MP
Highlights Faster, smaller, cheaper, powerful, reliable,
the previous generation computers
and easier to use U
Figure 1.6 VLSI chip
Fifth Generation (1989-Present)
Hardware Technology Fifth generation computers arc
manufactured using ICs with ULSI (Ultra Large Seale
Integrated) technol ‘The use of Internet became
widespread and very powerful mainframes, desktops,
portable laptops, and smartphones are being used common
‘Supercomputers use parallel processing techniques,
{ULSI circuits contain about 10 million efectronic
‘components on a single chip.
Memory Semiconductor memory is used as. primary
memory: large capacity magnetic disks are used as built-in
secondary memory. Magnetic tapes and floppy disks were
used as portable storage devices, which have now been
replaced by optical disks and USB flash drives.
Software Technology Programming is done in high-level
programming languages such as Java, Python, and C¥.
Graphical User Interface (GUI)-based operating systems
such as Windows, Unix, Linux, Ubuntu, and Apple Mac
are being used. These operating systems are more powerful
and user friendly than the ones available in the previous
generations
Used for Scicntific, commercial, interactive
multimedia (graphics, audio, yideo), and network application:
Examples IBM notebooks, Pentium PCs, SUM
workstations, IBM SP/2, Param supercomputer
Highlights
+ Faster, smaller, cheaper, powerful, reliable, and easier to
use than the previous generation computers
+ Speed of microprocessors and the size of memory are
growing rapidly+ High-end features available on mainframe computers
in the fourth generation are now available on the
microprocessors
+ They consume less power than computers of prior
generations
+ Airconditioned rooms required for mainframes and
supercomputers but not for microprocessors
Figure 1.7 ULSI chip
CLASSIFICATION OF COMPUTERS
‘Computers can be broadly classified into four categories
based on their speed, amount of data that they can process,
and price (refer to Figure 1.8). These categories are as
follows:
+ Supercomputers
+ Mainframe computers
+ Minicomputers
+ Microcomputers
1.5.1 Supercomputers
Among the four categories, the supercomputer is the
fastest, most powerful, and most expensive computer.
Supercomputers were first developed in the 1980s t0
process large amounts of data and to solve complex
scientific problems, Supercomputers use _paraltel
processing technology and can perform more than one
trillion caleulations in a second.
A single supercomputer can support thousands of users at
the same time, Such computers are mainly used for weather
forecasting, nuclear energy research, aircraft design,
automotive design, online banking, controlling industrial
Introduction to Computers 9
units, etc. Some examples of supercomputers are CRAY-Ty
CRA) Control Data CYBER 205, and ETA A-10.
1.5.2 Mainframe Computers
Mainframe computers are large-scale computers (but
smaller than supercomputers). These are very expensive and
need a very large clean room with air conditioning, thereby
making them very costly to deplay. As with supercomputers,
mainframes can also support multiple processors. For
example, the IBM $/390 mainframe can support 50,000
users at the same time, Users can access mainframes. by
either using terminals or via PCs. The two types of terminals
that can be used with mainframe systems are as follows:
Dumb Terminals
Dumb terminals consist of only a monitor and a keyboard
(or mouse). They do not have their own CPU and memory
and use the mainframe system’s CPU and storage devices.
Intelligent Terminals
In contrast to dumb terminals, intelligent terminals have
their own processor and thus can perform some processing
operations. However, just like the dumb terminals, they do
not have their own storage space. Usually, PCs are used
as intelligent terminals to facilitate data access and other
services from the mainframe system.
Mainframe computers are typically used as servers on
the World Wide Web, They are also used in organizations
such as banks, airline companies, and universities, where
a large number of users frequently access the data stored
in their databases. IBM is the major manufacturer of
mainframe computers. Some examples of mainframe
computers include IBM $/390, Control Data CYBER 176,
and Amdahl 580.
1.5.3 Minicomputers
As the name minicomputers are smaller,
cheaper, and slower than mainframes. They are called
minicomputers because they were the smallest computer
of their times. Also known as midrange computers, the
capabilities of minicomputers fall between mainframe and
personal computers,
suggests,
Classification of computers,
‘Supercomputers Mainframe computers Minicompucers Microcomputers
Dumb terminals Intelligent terminals Deskiop PCs Laptops Handheld devices
Workstations Network computers
Figure 1.8 Classification of computersCE) corone rinses rooming nc
Minicomputers are widely used in business, education,
hospitals, government organizations, etc. While some
‘minicomputers can be used only by a single user, others
‘are specifically designed to handle multiple users
simultaneously, Usually, single-user minicomputers are
used for performing complex design tasks.
‘As with mainframes, minicomputers can also be used
as servers in a networked environment, and hundreds of
PCs can be connected to it.
‘The first minicomputer was introduced by Digital
Equipment Corporation (DEC) in the mid-1960s, Other
‘manufacturers of minicomputers include IBM Corporation
(AS/400 computers), Data General Corporation, and
Prime Computer.
1.5.4 Microcomputers
Microcomputers, commonly known as PCs, are very small
and cheap. The first microcomputer was designed by IBM
in 1981 and was named IBM-PC, Later on, many computer
hardware companies copied this design and termed their
microcomputers as PC-compatible, which refers to any
PC that is based on the original IBM PC design.
‘Another type of popular PC is designed by Apple. PCs
designed by IBM and other PC-compatible computers
have a different architecture from that of Apple computers.
Moreover, PCs and PC-compatible computers commonly
use the Windows operating system, while Apple computers
use the Macintosh operating system (MacOS). PCs ean be
classified into the following categories:
Desktop PCs
‘A desktop PC is the most popular model of PCs. The
system unit of the desktop PC can be placed flat on a desk
‘or table, It is widely used in homes and offices,
Laptops
Laptops (Figure 1,9) are small microcomputers that ean
casily fit inside a briefease. They are very handy and can
Figure 1.9 Laptop
Source: You can more/Shutterstock
easily be carried from one place to another. They may also
be placed on the user's lap (thus the name). Hence, laptops
are Very useful, especially when going on long journeys.
Laptops operate on a battery and do not always have to be
plugged in like desktop computers.
‘The memory and storage capacity of a laptop is almost
equivalent to that of a desktop computer. As with desktop
‘computers, laptops also have hard disk drives, USB drives,
ele, For input, laptops have a built-in keyboard and a
trackball/touchpad, which is used as a pointing device (as
a mouse is used for a desktop PC),
Today, luptops have the same features and processing
speed as the most powerful PCs. However, a drawback is
that laptops are generally more expensive than desktop
computers. These computers are very popular among
business travellers.
Workstations
Workstations are single-user computers that have the same
features as PCs, but their processing speed matches that
of a minicomputer or mainframe computer, Workstation
computers have advanced processors, more RAM and
storage capacity than PCs. Therefore, they are more
expensive and powerful than a normal desktop computer.
Although workstation computers are widely used as,
powerful single-user computers by scientists, engineers,
architects, and graphic designers, they can also: be used as
servers in a networked environment,
Network Computers
Network computers have less processing power,
memory, and storage than a desktop computer. These are
specially designed to be used as terminals in a networked
environment. For example, some network computers are
specifically designed to access data stored on 4 network
including the Intemet and intranet)
‘Some network computers do not have any storage space
and merely rely on the network's server for data storage and
processing tasks. The concept of network computers had
become popular in the mid-1990s when several variations
‘of computers such as Windows terminals, NetPCs, and
diskless workstations were widely used.
Network computers that are specifically designed to access
only the Internet or intranet are often known as Internet PCS
or Intemet boxes. Some network computers used in homes do
not even have a monitor. Such computers may be connected
to a television, which serves as the output device. The most
common example of a home-based network computer is,
Web TY, which enables the user to connect a television to the
Internet. ‘The Web TV is equipped with a special set-top box
that is used to connect to the Internet. The set-top box also
provides controls to enable the user to navigate the Internet,
send and receive e-mails, and to perform other tasks on the
network while Watching television. The other reason for the
popularity of network computers is that they are cheaper to
purchase and maintain than PCsHandheld Computers
‘The mid-1990s witnessed a range of small personal
computing devices that are commonly known as handheld
computers, or mobile computers. These computers are
called handheld computers because they can fit in one
hand, while users can use the other hand to operate them,
Handheld computers are very small in size, and hence they
have small-sized screens and keyboards. These computers
‘are preferred by business travellers and mobile employees
whose jobs require them to move from place to place
Some examples of handheld computers are as follows:
‘+ Smartphones
+ Tablet PCs
‘Smartphones ‘Thesedays,cellularphonesare web-enabled
telephones. Such phones are also known as smartphones
because, in addition to basic phone capabilities, they also
facilitate the users to access the Intemet and send e-mails,
edit Word documents, generate an Excel sheet, create a
presentation, and lots more,
Smartphones run an advanced mobile operating
system that enables it to run various applications. The
four major mobile operating systems are iOS, Android,
BlackBerryOS, and Windows Mobile, Smartphones also
have a CPU, more storage space, more memory, and a
larger sereen than a regular cell phone:
In nutshell, smartphone refers to a multi-functional
mobile phone handset that packs in varied functionalities
from a camera to a web browser to a high-density display.
Tablet PCs A tablet PC (see Figure 1.10) is a computing
device that is smaller than a laptop, but bigger than a
smartphone. Features such as user-friendly interface,
portability, and touch screen have made them very
popular in the last few years. These days, a wide range
Of high-performance tablets are available in the market
While all of them look similar from outside, they may
differ in features such as operating system, speed of data
connectivity, camera specifications, size of the screen,
Processing power, battery life, and storage capability
Some operating systems that are used in tablets are
Android Jellybean (an open-source operating system
built by Google), Windows 8, and iOS (developed by
Apple). Each operating system has its own advantages
and disadvantages and a proprietary app store, from which
users can download applications, extending the tablet’s
functionality. These apps range from games to specialized
word processors and even instruments.
While users can easily type directly on the surface of a
tablet, some users prefer a wireless or bluetooth-connected
Keyboard. These days, tablets also offer an optional
docking station with keyboards that transforms the tablet
into a full-featured netbook.
Uses The following are the uses of Tablet PCs:
+ View presentations
+ Videoconferencing
‘+ Reading e-books, e-newspaper
Introduction to Computers
+ Watching movies
* Playing games
+ Sharing pictures, video, songs, documents, etc.
+ Browsing the Internet
+ Keeping im touch with friends and family on popular
social networks, sending emails
+ Business people use them to perform tasks such as
editing a document, exchanging documents, taking
notes, and giving presentations
* Tablets are best used in crowded places such as airports
and coffee shops, where size and portability become
more important.
Not
Tablets may replace laptops if users don’t have to
perform heawy processing tasks and do not require a CD
‘or DVD player
Figure 1.10 Tablet
Source: bloomua/Shutterstock/OUP Picture Bank
ERD AppLications oF COMPUTERS
When the first computers were developed, they were used
‘only in the fields of mathematics and science. In fact, the
first effective utilization of computers was for decoding
messages in military applications. Later on, computers
Were used in real-time control systems, like for landing on
the moon. However, with the advancement of technology,
the cost of computers and their maintenance declined
This opened the way for computers to be extensively used
in the business and commercial sector for information
processing. Today, computers are widely used in fields
such as engineering, health care, banking, education,
ete, Let us discuss how computers are being effectively
utilized to perform important tasks.
Word processing Word processing software enables users
to read and write documents. Users can also add images,
tables, and graphs for illustrating a concept. The software
wutomatically corrects spelling mistakes and includes
copy-paste features (which is very useful where the same
text has to be repeated several times).@ Computer Fundamentals and Programming in C
yet The Internet is a network of networks that
connects computers all over the world. It gives the user
‘access {0 an enormous amount of information, much more
than available in any library. Using e-mail, the user can
communicate in seconds with a person who is located
thousands of miles away. Chat software enables users
to chat with another person in real-time (irrespective of
the phy'sical location of that person). Video conferencing.
tools are becoming popular for conducting meetings with
people who are unable to be present at a particular place.
Digital video or audio composition Computers: make
audio or video composition and editing very simple. This
has drastically reduced the cost of equipment to compose
music or make a film. Graphics engineers use computers
for developing short or full-length films and creating 3-D
models and special effects in science fiction and action
movies.
Desktop publishing Desktop publishing software enables
Us to create page lay outs for entire books.
‘After discussing how computers are used in today's
scenario, let us now have a look at the different areas
Where computers are being widely utilized.
e-Business
e-Business or electronic business is the process of
conducting business via the Internet. This may include
buying and selling of goods and services using computers
‘and the Internet, Use of email and videoconferencing
technology has revolutionized the way business is being
conducted these days.
While an e-mail is a service that delivers messages
from a sender to one or more receivers via computer,
voice mail systems capture, store, and transmit spoken
messages. Videoconferencing, which is an advanced form
of teleconferencing, provides a complete simulation of
a normal meeting environment in which all concerned
parties can see, hear, and present material, just as if they
were in the same room, These meetings not only speed up
business process but also save the cost of travel and cost of
the time wasted during travel.
Both the terrms—e-Commerce and e-Business—are often
Companies today use e-commerce applications for
marketing, twansaction, processing, and product and
customer services processing. For example, the website
‘of a company can perform activities such as interactive
marketing, ordering, payment, and customer support
proces
e-commerce used to perform transactions between
business partners or customers has several applications
such as home banking. electronic shopping, buying
stocks, finding a job, conducting an auction, marketing
and advertising products or services, and providing
‘customer service. The following are techniques in which
‘e-commerce helps users to conduct business transactions.
Business-to-consumer or B2C In this: form of electronic
commerce, business companies deploy their websites
on the Internet to sell their products and services to the
customers. On their websites, they provide features such
1s catalogues, interactive order processing system, secure
electronic payment system, and online customer support.
Business-to-business or 828 This type of clectronic
‘commerce involves business transactions performed
between business partners (customers are not involved).
For example, companies use computers and networks (in
the form of extranets) to order raw materials from their
suppliers. Companies can also use extranets to supply
their products to their dealers.
Consumer-to-consumer or C2C This type of electronic
‘commerce enables customers to carry business transactions
among themselves. For example, on auction websites,
a customer sells hisvher product which is purchased by
another customer.
Electronic banking Electronic banking, also known as
eyberbanking or online banking, supports various banking
activities conducted from home, a business, or on the road
instead of a physical bank location,
Bioinformatics
Bioinformatics is the application of computer technology
to manage large amount of biological information.
Computers are used to collect, store, analyse, and integrate
biological and genetic information to facilitate gene-based,
drug discovery and development. The need for analysis has
become even more important with enormous amount of
genomic information available publicly from the Human
Genome Project.
Bioinformatics is an interdisciplinary field of molecular
biology. computer science, statistics, and mathematics, [t
involves analyses of genomic information to understand
human diseases and thus discover new drugs to treat those
diseases.
‘We know that DNA is made up of smaller pieces of
molecules and the sequence of molecules along a string,
of DNA contains all information about an organist. This,
information can be used to grow new organisms. For
example, scientists are using this information to grow
better variety of crops, to generate a genome that will
‘enable cows to yield more milk, s0 and so forth,
Therefore. bioinformatics helps scientists to store the
DNA information in huge databases. retrieve it as and
when required, and analyse it to grow and develop new
‘organisms.
Scientists also use bioinformatics to identity diseases
and discover drugs for them. This is done by writing