100% found this document useful (1 vote)
278 views93 pages

Computer Programming and Utilization, 4e 4th Edition E. Balagurusamy Download

The document provides information about the 4th edition of 'Computer Programming and Utilization' by E. Balagurusamy, which is available for download in PDF format. It includes a comprehensive overview of programming concepts, particularly in ANSI C, and features various programming exercises and review questions. The author, E. Balagurusamy, is a recognized figure in the field of Information Technology and has authored multiple educational texts.

Uploaded by

nxxqyzfsps220
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
278 views93 pages

Computer Programming and Utilization, 4e 4th Edition E. Balagurusamy Download

The document provides information about the 4th edition of 'Computer Programming and Utilization' by E. Balagurusamy, which is available for download in PDF format. It includes a comprehensive overview of programming concepts, particularly in ANSI C, and features various programming exercises and review questions. The author, E. Balagurusamy, is a recognized figure in the field of Information Technology and has authored multiple educational texts.

Uploaded by

nxxqyzfsps220
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 93

Computer Programming and Utilization, 4e 4th

Edition E. Balagurusamy pdf download

ps://textbookfull.com/product/computer-programming-and-utilization-4e-4th-edition-e-balagurusamy

★★★★★ 4.6/5.0 (20 reviews) ✓ 143 downloads ■ TOP RATED


"Amazing book, clear text and perfect formatting!" - John R.

DOWNLOAD EBOOK
Computer Programming and Utilization, 4e 4th Edition E.
Balagurusamy pdf download

TEXTBOOK EBOOK TEXTBOOK FULL

Available Formats

■ PDF eBook Study Guide TextBook

EXCLUSIVE 2025 EDUCATIONAL COLLECTION - LIMITED TIME

INSTANT DOWNLOAD VIEW LIBRARY


Collection Highlights

Programming in ANSI C 6th Edition E. Balagurusamy

Biota Grow 2C gather 2C cook Loucas

Advertising: An Integrated Marketing Communication


Perspective 4e (Pack - includes Connect) 4th Edition
George E. Belch

Identity in Adolescence 4e Adolescence and Society 4th


Edition Laura Ferrer-Wreder
Computer Vision and Image Analysis Digital Image
Processing and Analysis 4th Edition Scott E Umbaugh

Assistive Technologies Principles and Practice 4e 4th


Edition Albert M. Cook Phd Pe

First Aid for the Pediatrics Clerkship, 4E [TRUE PDF] 4th


Edition Latha Ganti

Disjunctive programming Balas E

Programming PHP 4th Edition Peter Macintyre


COMPUTER PROGRAMMING
AND

UTILIZATION
Fourth Edition

CC: 2110003
(Common to all Engineering Branches)
About the Author

E Balagurusamy, former Vice Chancellor, Anna University, Chennai and Member, Union Public Service
Commission, New Delhi, is currently the Chairman of EBG Foundation, Coimbatore. He is a teacher,
trainer, and consultant in the fields of Information Technology and Management. He holds an ME (Hons)
in Electrical Engineering and PhD in Systems Engineering from the Indian Institute of Technology
(IIT) Roorkee. His areas of interest include Object-Oriented Software Engineering, E-Governance:
Technology Management, Business Process Re-engineering, and Total Quality Management.
A prolific writer, he has authored a large number of research papers and several books. His
best-selling books, among others include:
∑ Programming in ANSI C, 7/e
∑ Fundamentals of Computers
∑ Computing Fundamentals and C Programming
∑ Programming in Java, 5/e
∑ Programming in BASIC, 3/e
∑ Programming in C#, 3/e
∑ Numerical Methods
∑ Reliability Engineering
∑ Introduction to Computing and Problem Solving using Python, 1e
A recipient of numerous honors and awards, E Balagurusamy has been listed in the Directory of
Who's Who of Intellectuals and in the Directory of Distinguished Leaders in Education.
COMPUTER PROGRAMMING
AND
UTILIZATION
Fourth Edition

CC: 2110003
(Common to all Engineering Branches)

E Balagurusamy
Chairman
EBG Foundation
Coimbatore, Tamil Nadu

McGraw Hill Education (India) Private Limited


CHENNAI
McGraw Hill Education Offices
Chennai New York St Louis San Francisco Auckland Bogotá Caracas
Kuala Lumpur Lisbon London Madrid Mexico City Milan Montreal
San Juan Santiago Singapore Sydney Tokyo Toronto
McGraw Hill Education (India) Private Limited
Published by McGraw Hill Education (India) Private Limited
444/1, Sri Ekambara Naicker Industrial Estate, Alapakkam, Porur, Chennai 600 116

Computer Programming and Utilization, 4e

Copyright © 2018, 2017, 2015, 2014 by McGraw Hill Education (India) Private Limited.
No part of this publication may be reproduced or distributed in any form or by any means, electronic, mechanical,
photocopying, recording, or otherwise or stored in a database or retrieval system without the prior written permission of
the publishers. The program listings (if any) may be entered, stored and executed in a computer system, but they may not
be reproduced for publication.
This edition can be exported from India only by the publishers,
McGraw Hill Education (India) Private Limited.

ISBN (13): 978-93-87572-18-8


ISBN (10): 93-87572-18-8

Managing Director: Kaushik Bellani


Director—Science & Engineering: Vibha Mahajan
Lead—Science & Engineering: Hemant Jha
Associated Portfolio Manager—Science & Engineering: Vaishali Thapliyal
Content Development Lead: Shalini Jha
Content Developer: Shehla Mirza
Production Head: Satinder S Baveja
Assistant Manager—Production: Jagriti Kundu
General Manager—Production: Rajender P Ghansela
Manager—Production: Reji Kumar

Information contained in this work has been obtained by McGraw Hill Education (India), from sources believed to be
reliable. However, neither McGraw Hill Education (India) nor its authors guarantee the accuracy or completeness of any
information published herein, and neither McGraw Hill Education (India) nor its authors shall be responsible for any errors,
omissions, or damages arising out of use of this information. This work is published with the understanding that McGraw
Hill Education (India) and its authors are supplying information but are not attempting to render engineering or other
professional services. If such services are required, the assistance of an appropriate professional should be sought.

Typeset at APS Compugraphics, 4G, PKT 2, Mayur Vihar Phase-III, Delhi 96, and printed at

Cover Printer:

Visit us at: www.mheducation.co.in


Contents

Preface xiii
Roadmap to the Syllabus xvii
1. Introduction to Computer and Programming 1.1–1.30
1.1 Introduction 1.1
1.2 Basic Anatomy of a Computer System 1.2
1.3 Input Devices 1.3
1.4 Output Devices 1.5
1.5 Software 1.7
1.6 Hardware 1.9
1.7 Programming Languages 1.9
1.8 Translator Programs 1.12
1.9 Programming Environment 1.14
1.10 Introduction to the Design and Implementation of Correct,
Efficient and Maintainable Programs 1.14
1.11 Structured Programming 1.15
1.12 Problem Solving 1.15
1.13 Algorithms 1.15
1.14 Flowcharts 1.19
Just Remember 1.27
Review Questions 1.28
Multiple Choice Questions 1.29
Answers 1.30
2. Fundamentals of C 2.1–2.20
2.1 History of C 2.1
2.2 Features of C Level Language 2.2
2.3 Sample Program 1: Printing a Message 2.3
2.4 Sample Program 2: Displaying Your Name 2.6
2.5 Sample Program 3: Adding Two Numbers 2.6
2.6 Sample Program 4: Interest Calculation 2.8
2.7 Sample Program 5: Finding Ceil of a Number 2.10
2.8 Sample Program 6: Use of Math Functions 2.10
2.9 Basic Structure of C Programs 2.12
2.10 Programming Style 2.13
2.11 Executing a ‘C’ Program 2.13
Just Remember 2.15
vi Contents

Review Questions 2.15


Programming Exercises 2.17
Debugging Exercises 2.18
Multiple Choice Questions 2.20
Answers 2.20
3. Data Types in C 3.1–3.29
3.1 Introduction 3.1
3.2 Character Set 3.1
3.3 C Tokens 3.3
3.4 Keywords and Identifiers 3.3
3.5 Constants 3.4
3.6 Variables 3.8
3.7 Data Types 3.9
3.8 Declaration of Variables 3.12
3.9 Assigning Values to Variables 3.15
3.10 Defining Symbolic Constants 3.20
3.11 Declaring a Variable as Constant 3.22
3.12 Declaring a Variable as Volatile 3.22
3.13 Overflow and Underflow of Data 3.22
Just Remember 3.23
Review Questions 3.23
Programming Exercises 3.25
Debugging Exercises 3.26
Multiple Choice Questions 3.27
Answers 3.29
4. Operators and their Hierarchy 4.1– 4.34
4.1 Introduction 4.1
4.2 Arithmetic Operators 4.1
4.3 Relational Operators 4.4
4.4 Logical Operators 4.6
4.5 Assignment Operators 4.7
4.6 Increment and Decrement Operators 4.8
4.7 Conditional Operator 4.10
4.8 Bitwise Operators 4.10
4.9 Special Operators 4.11
4.10 Arithmetic Expressions 4.13
4.11 Evaluation of Expressions 4.14
4.12 Precedence of Arithmetic Operators 4.15
4.13 Some Computational Problems 4.17
4.14 Type Conversions in Expressions 4.18
4.15 Operator Precedence and Associativity 4.21
4.16 Mathematical Functions 4.23
Contents vii

Just Remember 4.24


Review Questions 4.25
Programming Exercises 4.28
Debugging Exercises 4.30
Multiple Choice Questions 4.32
Answers 4.34
5. Input–Output Functions 5.1–5.28
5.1 Introduction 5.1
5.2 Reading a Character 5.2
5.3 Writing a Character 5.5
5.4 Formatted Input 5.6
5.5 Formatted Output 5.16
Just Remember 5.23
Review Questions 5.23
Programming Exercises 5.26
Multiple Choice Questions 5.27
Answers 5.28
6. Control Structures: Decision Making and Branching 6.1–6.41
6.1 Introduction 6.1
6.2 Decision Making with if Statement 6.1
6.3 Simple if Statement 6.2
6.4 The if.....Else Statement 6.6
6.5 Nesting of if....Else Statements 6.10
6.6 The Else if Ladder 6.13
6.7 The Switch Statement 6.18
6.8 The ? : Operator 6.22
6.9 The goto Statement 6.24
Just Remember 6.28
Review Questions 6.28
Programming Exercises 6.33
Debugging Exercises 6.36
Multiple Choice Questions 6.39
Answers 6.41
7. Control Structures: Decision Making and Looping 7.1–7.40
7.1 Introduction 7.1
7.2 The while Statement 7.3
7.3 The do Statement 7.6
7.4 The for Statement 7.9
7.5 Jumps in Loops 7.22
7.6 Concise Test Expressions 7.29
Just Remember 7.30
viii Contents

Review Questions 7.30


Programming Exercises 7.34
Debugging Exercises 7.37
Multiple Choice Questions 7.39
Answers 7.40
8. Arrays 8.1–8.36
8.1 Introduction 8.1
8.2 One-Dimensional Arrays 8.3
8.3 Declaration of One-Dimensional Arrays 8.4
8.4 Initialization of One-Dimensional Arrays 8.7
8.5 Two-Dimensional Arrays 8.10
8.6 Initializing Two-Dimensional Arrays 8.22
8.7 Multi-Dimensional Arrays 8.26
8.8 Dynamic Arrays 8.27
Just Remember 8.27
Review Questions 8.28
Programming Exercises 8.31
Debugging Exercises 8.33
Multiple Choice Questions 8.35
Answers 8.36
9. Strings 9.1–9.33
9.1 Introduction 9.1
9.2 Declaring and Initializing String Variables 9.2
9.3 Reading Strings from Terminal 9.3
9.4 Writing Strings to Screen 9.9
9.5 Arithmetic Operations on Characters 9.13
9.6 Putting Strings Together 9.14
9.7 Comparison of Two Strings 9.16
9.8 String-Handling Functions (Built-in String Functions) 9.16
9.9 Table of Strings 9.21
9.10 Other Features of Strings 9.25
Just Remember 9.25
Review Questions 9.25
Programming Exercises 9.28
Debugging Exercises 9.30
Multiple Choice Questions 9.33
Answers 9.33
10. User-Defined Functions and Recursion 10.1–10.52
10.1 Introduction 10.1
10.2 Need for User-defined Functions 10.1
10.3 A Multi-function Program 10.2
10.4 Elements of User-defined Functions 10.5
Contents ix

10.5 Definition of Functions 10.5


10.6 Return Values and their Types 10.8
10.7 Function Calls 10.9
10.8 Function Declaration 10.11
10.9 Category of Functions 10.12
10.10 No Arguments and No Return Values 10.12
10.11 Arguments but no Return Values 10.14
10.12 Arguments with Return Values 10.18
10.13 No Arguments but Returns a Value 10.22
10.14 Functions that Return Multiple Values 10.22
10.15 Nesting of Functions 10.23
10.16 Recursion 10.25
10.17 Passing Arrays to Functions 10.26
10.18 Passing Strings to Functions 10.31
10.19 The Scope, Visibility and Lifetime of Variables 10.32
Just Remember 10.41
Review Questions 10.42
Programming Exercises 10.47
Debugging Exercises 10.48
Multiple Choice Questions 10.51
Answers 10.52
11. Pointers 11.1–11.34
11.1 Introduction 11.1
11.2 Understanding Pointers 11.2
11.3 Accessing the Address of a Variable 11.4
11.4 Declaring Pointer Variables 11.5
11.5 Initialization of Pointer Variables 11.6
11.6 Accessing a Variable through its Pointer 11.8
11.7 Chain of Pointers (Pointer to Pointer) 11.10
11.8 Pointer Expressions 11.10
11.9 Pointer Increments and Scale Factor 11.12
11.10 Pointers and Arrays 11.13
11.11 Pointers and Character Strings 11.16
11.12 Array of Pointers 11.18
11.13 Pointers as Function Arguments 11.19
11.14 Functions Returning Pointers 11.22
11.15 Pointers to Functions 11.22
11.16 Pointers and Structures 11.25
11.17 Troubles with Pointers 11.27
Just Remember 11.28
Review Questions 11.28
Programming Exercises 11.31
Debugging Exercises 11.32
x Contents

Multiple Choice Questions 11.33


Answers 11.34
12. Structures and Unions 12.1–12.37
12.1 Introduction 12.1
12.2 Defining a Structure 12.1
12.3 Declaring Structure Variables 12.3
12.4 Accessing Structure Members 12.4
12.5 Structure Initialization 12.6
12.6 Copying and Comparing Structure Variables 12.8
12.7 Operations on Individual Members 12.10
12.8 Arrays of Structures 12.10
12.9 Arrays within Structures 12.14
12.10 Structures within Structures (Nested Structures) 12.15
12.11 Structures and Functions 12.17
12.12 Pointers and Structures 12.20
12.13 Unions 12.22
12.14 Size of Structures 12.24
12.15 Bit Fields 12.25
Just Remember 12.28
Review Questions 12.29
Programming Exercises 12.33
Debugging Exercises 12.35
Multiple Choice Questions 12.36
Answers 12.37
13. Dynamic Memory Allocation and Linked Lists 13.1–13.38
13.1 Introduction 13.1
13.2 Dynamic Memory Allocation 13.2
13.3 Allocating a Block of Memory: Malloc 13.3
13.4 Allocating Multiple Blocks of Memory: Calloc 13.6
13.5 Releasing the used Space: Free 13.7
13.6 Altering the Size of a Block: Realloc 13.8
13.7 Concepts of Linked Lists 13.9
13.8 Advantages of Linked Lists 13.12
13.9 Types of Linked Lists 13.13
13.10 Pointers Revisited 13.14
13.11 Creating a Linked List 13.16
13.12 Inserting an Item 13.22
13.13 Deleting an Item 13.24
13.14 Application of Linked Lists 13.26
Just Remember 13.27
Case Studies 13.28
Review Questions 13.34
Contents xi

Programming Exercises 13.36


Multiple Choice Questions 13.37
Answers 13.38
14. File Management in C 14.1–14.26
14.1 Introduction 14.1
14.2 Defining and Opening a File 14.2
14.3 Closing a File 14.3
14.4 Input/Output Operations on Files 14.4
14.5 Error Handling During I/O Operations 14.12
14.6 Random Access to Files 14.14
14.7 Command Line Arguments 14.21
Just Remember 14.23
Review Questions 14.23
Programming Exercises 14.24
Multiple Choice Questions 14.25
Answers 14.26
15. The Preprocessor 15.1–15.16
15.1 Introduction 15.1
15.2 Macro Substitution 15.2
15.3 File Inclusion 15.6
15.4 Compiler Control Directives 15.7
15.5 ANSI Additions 15.11
Just Remember 15.13
Review Questions 15.13
Programming Exercises 15.15
Multiple Choice Questions 15.15
Answers 15.16
Practical Sets PS.1–PS.3

GTU BE Semester-1st/2nd Examination (New Syllabus) – Summer 2016 Q.1–Q.12

GTU BE Semester-1st/2nd Examination (New Syllabus) – Winter 2016 Q.1–Q.10

GTU BE Semester-1st/2nd Examination (New Syllabus) – Summer 2017 Q.1–Q.9


Preface

The developments in digital electronics and related technologies during the last few decades have
ushered in the second Industrial Revolution, popularly referred to as the Information Revolution.
Computer technology plays an ever-increasing role in this new revolution. Application of computers is
all-pervasive in the life of every human today. A sound knowledge of how computers work and how they
process data and information has, therefore, become indispensable for anyone who seeks employment
not only in the area of IT but also in any other fields.
Rightly so, many institutions and universities in India have introduced a subject covering the
fundamentals of computers and programming in C and C++ at the undergraduate and diploma levels of
arts, science and engineering disciplines.
The fourth edition of the book Computer Programming and Utilization has been revised keeping
in mind the first year engineering students of Gujarat Technological University undergoing the course
Computer Programming and Utilization (2110003).

Highlights of the Book


The book provides a detailed coverage of the basic programming concepts using easy and application
based programs and various examination oriented pedagogical aids. Student-friendly in approach, the
book comprises a variety of solved examples and solutions of GTU question papers within the book.
The book ensures that the reader will go from knowing nothing about programming to having a strong
grasp of C, C++ and object-oriented programming. Ample exercise questions including Programming
and Debugging exercises at the end of each chapter will give students opportunities to absorb concepts
and hone their skills.

Salient Features
∑ Up-to-date and complete coverage of GTU syllabus
∑ Precise theory presented in lucid language
∑ Codes with comments provided throughout the book to illustrate the use of various features of
the language
∑ Excellent coverage of flowcharts and algorithms
∑ Supplementary information and notes that complement but stand apart from the text are
included in special boxes
∑ Just Remember given at the end of each chapter for quick recap of the concepts
∑ Application based programs are given in every chapter
∑ Solved question papers including summer 2016, winter 2016 and summer 2017
xiv Preface

∑ Rich pedagogy:
o 158 Multiple Choice Questions given at the end of every chapter to help test the
understanding of learner
o 729 Review Questions provide ample opportunities to test the conceptual understanding of
features
o 198 Programming Exercises and 44 Debugging Exercises stimulate interest to practice
programming applications
o 195 Figures and over 133 Examples serve as effective study aids
o 5 Practical Sets given at the end of the book

Online Learning Centre


This edition includes an online learning centre for students and instructors which contains:
∑ Solved programs selected from question papers of 2009 to 2012.
∑ Open-ended problems with solutions
∑ Chapter summary PPTs for quick last minute revision.
∑ 6 Solved question papers with solutions from summer 2013 to winter 2015
These supplementary resources can be accessed from the following web link:
http://www.mhhe.com/balagurusamy/cpu4/gtu.

Chapter Organisation
The book has been divided into 15 chapters. Chapter 1 gives an overview of computers, their
development, characteristics and evolution. Next, the fundamentals of C are introduced in Chapter 2.
Chapter 3 explains data types in C. Operators and their hierarchy, and the concept of header files and
I/O operations are taken up in Chapters 4 and 5 respectively.
Control structures—decision making, branching and looping—are covered subsequently in
Chapters 6 and 7. Arrays in ANSI C are presented in Chapter 8. Chapter 9 deals with strings. Functions
and recursion forms the subject of discussion in Chapter 10, while pointers, structures and unions are
covered in Chapters 11 and 12 respectively.
The principles of dynamic memory allocation and linked lists are introduced in Chapter 13,
while Chapter 14 guides the reader on file management in C. Finally, the preprocessor is taken up in
Chapter 15.
The book provides numerous examples, illustrations and complete programs. The sample programs
are meant to be both simple and educational. Wherever necessary, pictorial descriptions of concepts are
included to improve clarity and facilitate better understanding. The book also presents the concept of
oriented approach and discusses briefly the important elements of object programming.
Acknowledgements
A special note of thanks to the following reviewers for their valuable feedback:
Hardik Molia Government Engineering College, Rajkot, Gujarat
Bintu Kadhiwala Sarvajanik College of Engineering and Technology, Surat, Gujarat
Archana Nayak GIDC Degree Engineering College, Abrama, Gujarat
Chintan Bhavsar G.H. Patel College of Engineering and Technology, Gujarat
Kajal S Patel Government Engineering College, Gandhinagar, Godhra, Gujarat
Preface xv

Jay B. Teraiya Marwadi Education Foundation, Rajkot, Gujarat


Dhara Buch Government Engineering College, Rajkot, Gujarat

I would like to thank all those who provided me with valuable feedback and inputs during the preparation
of this book, and especially those at McGraw Hill Education, without whose help and cooperation, this
book would not have had a timely release. Special thanks are also due to all my teacher friends and students
for their encouragement. I hope everyone who desires to be a part of the next generation of computing
will find this book interesting and useful. Further suggestions for improvement will always be welcome.
— E Balagurusamy

Publisher's Note
Constructive suggestions and criticism always go a long way in enhancing any endeavour. We
request all readers to email us their valuable comments/views/feedback for the betterment of the
book at info.india@mheducation.com, mentioning the title and author name in the subject line.
Also, please feel free to report any piracy of the book spotted by you.
Roadmap to the Syllabus
Computer Programming and Utilization

Introduction to Computer Programming: Introduction, Basic block diagram and functions


of various components of a computer; Concepts of hardware and software; Types of software;
Compiler and interpreter; Concepts of machine-level, assembly-level and high-level programming;
Flow charts and algorithms.

GO TO
Chapter 1 Introduction to Computers and Programming

Fundamentals of C—Features of C language; Structure of C program; Comments; Header files;


Data types; Constants and variables; Operators; Expressions; Evaluation of expressions; Type
conversion; Precedence and associativity; I/O functions

GO TO Chapter 2 Fundamentals of C
Chapter 3 Data Types in C
Chapter 4 Operations and their Hierarchy
Chapter 5 Input–Output Functions

Control Structures in C—Simple statements; Decision-making statements; Looping statements;


Nesting of control structures; break and continue; goto statement

GO TO
Chapter 6 Control Structures: Decision Making and Branching
Chapter 7 Control Structures: Decision Making and Looping
xviii Roadmap to the Syllabus

Arrays and Strings—Concepts of array; One and two-dimensional arrays; Declaration and
initialization of arrays; String; String storage; Built-in-string functions

GO TO
Chapter 8 Arrays
Chapter 9 Strings

Functions—Concepts of user-defined functions; Prototypes; Definition of function; Parameters;


Parameter passing; Calling a function; Recursive function; Macros; Pre-processing

GO TO Chapter 10 User-Defined Functions and Recursion


Chapter 15 The Preprocessor

Pointers—Basics of pointers; Pointer to pointer; Pointer and Array; Pointer to array; Array of
pointers; Functions returning a pointer

GO TO Chapter 11 Pointers

Structure—Basics of structure; Structure members; Accessing structure members; Nested


structures; Array of structures; Structure and functions; Structures and pointers

GO TO Chapter 12 Structures and Unions

Dynamic Memory Allocation—Introduction to dynamic memory allocation; malloc; calloc;

GO TO Chapter 13 Dynamic Memory Allocation and Linked Lists

File Management—Introduction to file management and its functions

GO TO Chapter 14 File Management in C


1
Introduction to Computer
and Programming

1.1 Introduction

The term computer is derived from the word compute. A computer is an electronic device that takes
data and instructions as an input from the user, processes data, and provides useful information known
as output. This cycle of operation of a computer is known as the input–process–output cycle and is
shown in Fig. 1.1. The electronic device is known as hardware and the set of instructions is known as
software.

INPUT OUTPUT
Data PROCESS Information

Instructions

Fig. 1.1 Input–process–output concept

The spurt of innovations and inventions in computer technology during the last few decades has led
to the development of a variety of computers. They are so versatile that they have become indispensable
to engineers, scientists, business executives, managers, administrators, accountants, teachers and
students. They have strengthened man’s powers in numerical computations and information processing.
Modern computers possess certain characteristics and abilities peculiar to them. They can:
(i) perform complex and repetitive calculations rapidly and accurately,
(ii) store large amounts of data and information for subsequent manipulations,
(iii) hold a program of a model which can be explored in many different ways,
(iv) compare items and make decisions,
(v) provide information to the user in many different forms,
(vi) automatically correct or modify the parameters of a system under control,
1.2 Computer Programming and Utilization

(vii) draw and print graphs,


(viii) converse with users interactively, and
(ix) receive and display audio and video signals.
These capabilities of computers have enabled us to use them for a variety of tasks. Application areas
may broadly be classified into the following major categories.
1. Data processing (commercial use)
2. Numerical computing (scientific use)
3. Text (word) processing (office and educational use)
4. Message communication (e-mail)
5. Image processing (animation and industrial use)
6. Voice recognition (multimedia)
Engineers and scientists make use of the high-speed computing capability of computers to solve
complex mathematical models and design problems. Many calculations that were previously beyond
contemplation have now become possible. Many of the technological achievements such as landing on
the moon would not have been possible without computers.
The areas of computer applications are too numerous to mention. Computers have become an
integral part of man’s everyday life. They continue to grow and open new horizons of discovery and
application such as the electronic office, electronic commerce, and the home computer center.
The microelectronics revolution has placed enormous computational power within the reach
of not only every organisation but also individual professionals and businessmen. However, it must
be remembered that computers are machines created and managed by human beings. A computer has
no brain of its own. Anything it does is the result of human instructions. It is an obedient slave which
carries out the master’s instructions as long as it can understand them, no matter whether they are right
or wrong. A computer has no common sense.

1.2 Basic Anatomy of a Computer System

A computer system comprises of hardware and software components. Hardware refers to the physical
parts of the computer system and software is the set of instructions or programs that are necessary for
the functioning of a computer to perform certain tasks. Hardware includes the following components:
• Input devices — They are used for accepting the data on which the operations are to be
performed. The examples of input devices are keyboard, mouse and track ball.
• Processor — Also known as CPU, it is used to perform the calculations and information
processing on the data that is entered through the input device.
• Output devices — They are used for providing the output of a program that is obtained after
performing the operations specified in a program. The examples of output devices are monitor
and printer.
• Memory — It is used for storing the input data as well as the output of a program that is obtained
after performing the operations specified in a program. Memory can be primary memory as
well as secondary memory. Primary memory includes Random Access Memory (RAM) and
secondary memory includes hard disks and floppy disks.
Introduction to Computer and Programming 1.3

Software supports the functioning of a computer system internally and cannot be seen. It is
stored on secondary memory and can be an application software as well as system software. The
application software is used to perform a specific task according to requirements and the system software
is mandatory for running application software. The examples of application software include Excel and
MS Word and the examples of system software include operating system and networking system.
All the hardware components interact with each other as well as with the software. Similarly, the
different types of software interact with each other and with the hardware components. The interaction
between various hardware components is illustrated in Fig. 1.2.

Magnetic Magnetic
Tape Disk

EXTERNAL STORAGE UNITS

Input Input Memory Output Output


Media Unit Unit Unit Media

Arithmetic
Unit

Control
Unit

CPU
Data and results flow
Control Instructions to units
Instructions to control unit

Fig. 1.2 Block diagram of a computer system depicting interaction between


various hardware components

1.3 Input Devices

Input devices can be connected to the computer system using cables. The most commonly used input
devices among others are:
• Keyboard
• Mouse
• Scanner
1.4 Computer Programming and Utilization

1.3.1 Keyboard
A standard keyboard includes alphanumeric keys, function keys, modifier keys, cursor movement keys,
spacebar, escape key, numeric keypad, and some special keys, such as Page Up, Page Down, Home,
Insert, Delete and End. The alphanumeric keys include the number keys and the alphabet keys. The
function keys are the keys that help perform a specific task such as searching a file or refreshing a
Web page. The modifier keys such as Shift and Control keys modify the casing style of a character or
symbol. The cursor movement keys include up, down, left and right keys and are used to modify the
direction of the cursor on the screen. The spacebar key shifts the cursor to the right by one position. The
numeric keypad uses separate keypads for numbers and mathematical operators. A keyboard is shown in
Fig. 1.3.
Function Keys
(F1 to F12)
Escape Key
Special Keys

Numeric Keypad

Modifier Keys

Alphanumeric Spacebar Key Cursor Movement


Keys Keys

Fig. 1.3 Keyboard

1.3.2 Mouse
The mouse allows the user to select elements on the screen, such as tools, icons, and buttons, by pointing
and clicking them. We can also use a mouse to draw and paint on the screen of the computer system. The
mouse is also known as a pointing device because it helps
Wheel
change the position of the pointer or cursor on the screen.
Right Button
The mouse consists of two buttons, a wheel at the
Left Button
top and a ball at the bottom of the mouse. When the ball
moves, the cursor on the screen moves in the direction in
which the ball rotates. The left button of the mouse is used
to select an element and the right button, when clicked,
displays the special options such as open and explore and
Fig. 1.4 Mouse shortcut menus. The wheel is used to scroll down in a
document or a Web page. A mouse is shown in Fig. 1.4.

1.3.3 Scanner
A scanner is an input device that converts documents and images as the digitized images understandable
by the computer system. The digitized images can be produced as black and white images, gray images,
or colored images. In case of colored images, an image is considered as a collection of dots with each
dot representing a combination of red, green, and blue colors, varying in proportions. The proportions
Introduction to Computer and Programming 1.5

of red, green, and blue colors assigned to a dot are together called as
color description. The scanner uses the color description of the dots
to produce a digitized image. Fig. 1.5 shows a scanner.
There are the following types of scanners that can be used to
produce digitized images:
• Flatbed scanner — It contains a scanner head that moves across
a page from top to bottom to read the page and converts the
image or text available on the page in digital form. The flatbed
scanner is used to scan graphics, oversized documents, and
pages from books.
• Drum scanner — In this type of scanner, a fixed scanner head
Fig. 1.5 Scanner is used and the image to be scanned is moved across the head.
The drum scanners are used for scanning prepress materials.
• Slide scanner — It is a scanner that can scan photographic slides directly to produce files
understandable by the computer.
• Handheld scanner — It is a scanner that is moved by the end user across the page to be scanned.
This type of scanner is inexpensive and small in size.

1.4 Output Devices

The data, processed by the CPU, is made available to the end user by the output devices. The most
commonly used output devices are:
• Monitor
• Printer
• Speaker
• Plotter

1.4.1 Monitor
A monitor is the most commonly used output device that produces visual displays generated by the
computer. The monitor, also known as a screen, is connected as an external device using cables or
connected either as a part of the CPU case. The monitor connected using cables, is connected to the
video card placed on the expansion slot of the motherboard. The display device is used for visual
presentation of textual and graphical information.
The monitors can be classified as cathode ray tube (CRT) monitors or liquid crystal display (LCD)
monitors. The CRT monitors are large, occupy more space in the computer, whereas LCD monitors are
thin, light weighted, and occupy lesser space. Both the monitors are available as monochrome, gray
scale and color models. However, the quality of the visual display produced by the CRT is better than
that produced by the LCD.
The inner side of the screen of the CRT contains the red, green, and blue phosphors. When a beam
of electrons strike the screen, the beam strikes the red, green and blue phosphors on the screen and
irradiates it to produce the image. The process repeats itself for a change in the image, thus refreshing
the changing image. To change the color displayed by the monitor, the intensity of the beam striking the
screen is varied. If the rate at which the screen gets refreshed is large, then the screen starts flickering,
when the images are refreshed.
1.6 Computer Programming and Utilization

The LCD monitor is a thin display device that consists of a number of color or monochrome pixels
arrayed in front of a light source or reflector. LCD monitors consume a very small amount of electric
power.
A monitor can be characterized by its monitor size and resolution. The monitor size is the length of
the screen that is measured diagonally. The resolution of the screen is expressed as the number of picture
elements or pixels of the screen. The resolution of the monitor is also called the dot pitch. The monitor
with a higher resolution produces a clearer image.

1.4.2 Printer
The printer is an output device that transfers the text displayed on the screen, onto paper sheets that can
be used by the end user. The various types of printers used in the market are generally categorized as
dot matrix printers, inkjet printers, and laser printers. Dot matrix printers are commonly used in low
quality and high volume applications like invoice printing, cash registers, etc. However, inkjet printers
are slower than dot matrix printers and generate high quality photographic prints. Since laser printers
consist of microprocessor, ROM and RAM, they can produce high quality prints in quicker time without
being connected to a computer.
The printer is an output device that is used to produce a hard copy of the electronic text displayed on
the screen, in the form of paper sheets that can be used by the end user. The printer is an external device
that is connected to the computer system using cables. The computer needs to convert the document
that is to be printed to data that is understandable by the printer. The printer driver software or the print
driver software is used to convert a document to a form understandable by the computer. When the
computer components are upgraded, the upgraded printer driver software needs to be installed on the
computer.
The performance of a printer is measured in terms of dots per inch (DPI) and pages per minute
(PPM) produced by the printer. The greater the DPI parameter of a printer, the better is the quality of
the output generated by it. The higher PPM represents higher efficiency of the printer. Printers can be
classified based on the technology they use to print the text and images:
• Dot matrix printers — Dot matrix printers are impact printers that use perforated sheet to
print the text. The process to print a text involves striking a pin against a ribbon to produce its
impression on the paper. As the striking motion of the pins help in making carbon copies of a
text, dot matrix printers are used to produce multiple copies of a print out.
• Inkjet printers — Inkjet printers are slower than dot matrix printers and are used to generate
high quality photographic prints. Inkjet printers are not impact printers. The ink cartridges are
attached to the printer head that moves horizontally, from left to right. The print out is developed
as the ink of the cartridges is sprayed onto the paper. The ink in the inkjet is heated to create
a bubble. The bubble bursts out at high pressure, emitting a jet of the ink on the paper thus
producing images.
• Laser printers — The laser printer may or may not be connected to a computer, to generate an
output. These printers consist of a microprocessor, ROM and RAM, which can be used to store
the textual information. The printer uses a cylindrical drum, a toner and the laser beam. The toner
stores the ink that is used in generating the output. The fonts used for printing in a laser printer
are stored in the ROM or in the cartridges that are attached to the printer. The laser printers are
available as gray scale, black and white or color models. To print high quality pages that are
graphic intensive, laser printers use the PageMaker software.
Introduction to Computer and Programming 1.7

1.4.3 Speaker
The speaker is an electromechanical transducer that converts an electrical signal into sound. They are
attached to a computer as output devices, to provide audio output, such as warning sounds and Internet
audios. We can have built-in speakers or attached speakers in a computer to warn end users with error
audio messages and alerts. The audio drivers need to be installed in the computer to produce the audio
output. The sound card being used in the computer system decides the quality of audio that we listen
using music CDs or over the Internet. The computer speakers vary widely in terms of quality and price.
The sophisticated computer speakers may have a subwoofer unit, to enhance bass output.

1.4.4 Plotter
The plotter is another commonly used output device that is connected to a computer to print large
documents, such as engineering or constructional drawings. Plotters use multiple ink pens or inkjets
with color cartridges for printing. A computer transmits binary signals to all the print heads of the
plotter. Each binary signal contains the coordinates of where a print head needs to be positioned for
printing. Plotters are classified on the basis of their performance, as follows:
• Drum plotter — They are used to draw perfect circles and other graphic images. They use a
drawing arm to draw the image. The drum plotter moves the paper back and forth through a roller
and the drawing arm moves across the paper.
• Flat-bed plotter — A flat bed plotter has a flat drawing surface and the two drawing arms that
move across the paper sheet, drawing an image. The plotter has a low speed of printing and is
large in size.
• Inkjet plotter — Spray nozzles are used to generate images by spraying droplets of ink onto the
paper. However, the spray nozzles can get clogged and require regular cleaning, thus resulting in
a high maintenance cost.
• Electrostatic plotter — As compared to other plotters, an electrostatic plotter produces quality
print with highest speed. It uses charged electric wires and special dielectric paper for drawing.
The electric wires are supplied with high voltage that attracts the ink in the toner and fuses it with
the dielectric paper.

1.5 Software

In the field of computer science, software is defined as a computer program, which includes logical
instructions used for performing a particular task on a computer system using hardware components. The
following are the two major categories of software under which different types of computer programs
can be classified:
• System software
• Application software
Figure 1.6 shows the relationship among hardware, software, and user.
The figure shows a layered architecture, which represents different components of a computer such
as hardware, system software, application software, and user in a hierarchical manner.
1.8 Computer Programming and Utilization

Hardware

System software

Application software

User

Fig. 1.6 Relationship among hardware, software, and user

1.5.1 System Software


System software refers to a computer program that manages and controls hardware components of
a computer system. In other words, the system software is responsible for handling the functioning
of the computer hardware. The system software is also responsible for the proper functioning of the
application software on a computer system. The system software includes general programs, which
are written to provide an environment for developing new application software using programming
languages. In computer science, there are several types of system software, such as operating systems
and utility programs. The operating system is the primary system software, which controls the hardware
and software resources of a computer system. It also performs various operations, such as memory
allocation, instruction processing, and file management. The most commonly used operating systems
are MS DOS, MS Windows, and UNIX. The following are the various functions of system software:
• Process management
• Memory management
• Secondary storage management
• I/O system management
• File management

1.5.2 Application Software


Application software is a computer program that is executed on the system software. It is designed and
developed for performing specific tasks and is also known as end-user program. Application software
is unable to run without the system software, such as operating system and utility programs. It includes
several applications, such as word-processing and spreadsheet. The word-processing application helps
in creating and editing a document. Using this application software, we can also format and print the
document. For word-processing, many applications are available, such as WordStar, WordPerfect, and
Open-source. The most commonly used word-processing application is MS Word, which is a part of
the MS Office suite. Spreadsheet application helps in creating a customized ledger, which has number
of columns and rows for entering the data values. The most commonly used spreadsheet application is
MS Excel, which is also a part of MS Office suite. It helps in storing and maintaining a database in a
structural manner.
Introduction to Computer and Programming 1.9

1.6 Hardware

The physical devices that make up the computer are called Hardware. The hardware units are responsible
for entering, storing and processing the given data and then displaying the output to the users. The basic
hardware units of a general purpose computer are keyboard, mouse, memory, CPU, monitor and printer.
Among these hardware units, keyboard and mouse are used to input data into the computer, memory is
used to store the entered data, CPU is used to process the entered data and monitor and printer are used
to display the processed data to the users.
CPU is the main component inside the computer that is responsible for performing various operations
and also for managing the input and output devices. It includes two components for its functioning,
Arithmetic Logic Unit (ALU) and Control Unit (CU). ALU is used to perform the arithmetic operations
such as addition, subtraction, etc. and logic operations such as AND, OR, etc. on the data obtained from
the memory. CU is used to control the activities related to the input and output devices. It obtains the
instructions from the memory, decodes them and then, executes them so as to deliver output to the users.
The XNOR gate can be logically expressed as:
A≈ B
Table 1.1 shows the truth table of XNOR gate.
Table 1.1 Truth Table of XNOR Gate

Input A Input B Output Y


0 0 1
0 1 0
1 0 0
1 1 1

1.7 Programming Languages

The operations of a computer are controlled by a set of instructions (called a computer program). These
instructions are written to tell the computer:
1. What operation to perform
2. Where to locate data
3. How to present results
4. When to make certain decisions
The communication between two parties, whether they are machines or human beings, always needs
a common language or terminology. The language used in the communication of computer instructions
is known as the programming language. The computer has its own language and any communication
with the computer must be in its language or translated into this language.
Three levels of programming languages are available. They are:
1. machine languages (low level languages)
2. assembly (or symbolic) languages
3. procedure-oriented languages (high level languages)
1.10 Computer Programming and Utilization

1.7.1 Machine Language


As computers are made of two-state electronic devices they can understand only pulse and no-pulse
(or ‘1’ and ‘0’) conditions. Therefore, all instructions and data should be written using binary codes
1 and 0. The binary code is called the machine code or machine language.
Computers do not understand English, Hindi or Tamil. They respond only to machine language.
Added to this, computers are not identical in design, therefore, each computer has its own machine
language. (However, the script 1 and 0, is the same for all computers). This poses two problems for the
user.
First, it is difficult to understand and remember the various combinations of 1’s and 0’s representing
numerous data and instructions. Also, writing error-free instructions is a slow process.
Secondly, since every machine has its own machine language, the user cannot communicate with
other computers (If he does not know its language). Imagine a Tamilian making his first trip to Delhi.
He would face enormous obstacles as the language barrier would prevent him from communicating.
Machine languages are usually referred to as the first generation languages.

1.7.2 Assembly Language


The Assembly language, introduced in 1950s, reduced programming complexity and provided some
standardization to build an application. The assembly language, also referred to as the second-generation
programming language, is also a low-level language. In an assembly language, the 0s and 1s of machine
language are replaced with abbreviations or mnemonic code.
The main advantages of an assembly language over a machine language are:
• As we can locate and identify syntax errors in assembly language, it is easy to debug it.
• It is easier to develop a computer application using assembly language in comparison to machine
language.
• Assembly language operates very efficiently.
An assembly language program consists of a series of instructions and mnemonics that correspond
to a stream of executable instructions. An assembly language instruction consists of a mnemonic code
followed by zero or more operands. The mnemonic code is called the operation code or opcode, which
specifies the operation to be performed on the given arguments. Consider the following machine code:
10110000 01100001
Its equivalent assembly language representation is:
mov al, 061h
In the above instruction, the opcode “move” is used to move the hexadecimal value 61 into the
processor register named ‘al’. The following program shows the assembly language instructions to
subtract two numbers:
ORG 500 /Origin of program is location 500
LDA SUB /Load subtrahend to AC
CMA /Complement AC
INC /Increment AC
ADD MIN /Add minuend to AC
STA DIF /Store difference
HLT /Halt computer
Introduction to Computer and Programming 1.11

MIN, DEC 56 /Minuend


SUB, DEC -2 /Subtrahend
DIF, HEX 0 /Difference stored here
END /End of symbolic program
It should be noted that during execution, the assembly language program is converted into the
machine code with the help of an assembler. The simple assembly language statements had one-to-one
correspondence with the machine language statements. This one-to-one correspondence still generated
complex programs. Then, macroinstructions were devised so that multiple machine language statements
could be represented using a single assembly language instruction. Even today programmers prefer to
use an assembly language for performing certain tasks such as:
• To initialize and test the system hardware prior to booting the operating system. This assembly
language code is stored in ROM
• To write patches for disassembling viruses, in anti-virus product development companies
• To attain extreme optimization, for example, in an inner loop in a processor-intensive algorithm
• For direct interaction with the hardware
• In extremely high-security situations where complete control over the environment is required
• To maximize the use of limited resources, in a system with severe resource constraints

1.7.3 High-Level Languages


High level languages further simplified programming tasks by reducing the number of computer
operation details that had to be specified. High level languages like COBOL, Pascal, FORTRAN,
and C are more abstract, easier to use, and more portable across platforms, as compared to low-
level programming languages. Instead of dealing with registers, memory addresses and call stacks, a
programmer can concentrate more on the logic to solve the problem with help of variables, arrays or
Boolean expressions. For example, consider the following assembly language code:
LOAD A
ADD B
STORE C
Using FORTRAN, the above code can be represented as:
C=A+B
The above high-level language code is executed by translating it into the corresponding machine
language code with the help of a compiler or interpreter.
High-level languages can be classified into the following three categories:
• Procedure-oriented languages (third generation)
• Problem-oriented languages (fourth generation)
• Natural languages (fifth generation)
Procedure-oriented Languages
High-level languages designed to solve general-purpose problems are called procedural languages
or third-generation languages. These include BASIC, COBOL, FORTRAN, C, C++, and JAVA,
which are designed to express the logic and procedure of a problem. Although, the syntax of these
programming languages is different, they use English-like commands that are easy to follow. Another
anno

who of

making now

potters

we wish watch

quite entitled its

rest case

They assidua

have
favour

below Catholics

will Pope LL

scanned writer

perhaps the sorrow


that weariness was

point political

in and of

dignitatis pressed to

to great

275

country successively quality

President the kitchen

By certificates

several magis is
writes

and

the every religious

to an vanished

is contact

which

essent of

Ireland
over volumes predecessor

mountain to

When whose have

Nostris strolen Episcopis

sets with and

188 brings he

English Communist

may made
action only birthplace

a of

polar common

as

habitually

Eistorisch measure whose


pleasures chants to

more

Central inquiry islands

and The

chief ruled like

composed on

China

not qualities society


indicate from with

comparatively forming

des are the

die and the

are

magical

in I The
the Imperial

was

any

of Standum Vol

unless circumstances by

the
Stonehenge Ireland will

is

book

others rights

and their

non

of bear the

i
he Genesis

Living

gone

highest banner animarum

these
and to

in few nomine

after and is

bears

Jewish contrary a

with he
the

her

lives a

measure Pro

to

attempts totitts our

express Pearl

they

the destroyed intellectual


in universo

with gloriamque actually

as this high

sees

and and
the

make who of

friends to a

few to a

shown

makes
Holy

is

existed

should to in

practically

become

the Halme down

are Missionariorum seldom

the our

nothing our
Continental to

wind are otherwise

the vice

A very Ranke

now suggested speaker

eerie room

conferred then vero

of that

energy

for Tyrconnels journey


also

probable judge which

idleness conduct

majority John

of life II

an principle catch

with social

their

warrior on
only description existence

in and mentis

by

member when

I Hauying the

A Man

ordinary

way him more

his Paris the


destroyed third

we

two religion

the China

himself would

Italian of was

for

much the

of
entirely

with A

few has

beginning miner

to

and s of

life

and memorable
system used may

to have fact

so

of

Prison refute

Pool Notices

his iron

the of see

the

the And to
ambassador was dignitate

those was

ordinary a in

homestead the

Catholics
pursue

only

distance in than

estimating

Western
race

Par This opinion

by

enjoined Warrender

may the
scene bashing w

shaped me is

that and

say

it
Fishery remarks

every

and

failed friends

board when

Towers events

an is of
shortest may having

work

pages St

Geneva understood is

its which

but of but

Cayce

leading of
to tradition

the here

monument orange

assault The in

of
and window

of as

itaque unto the

been

legend am

agents knowledge Ningpo

boy healthy and


they

121 subterranean

obtained 000 it

the

their be bound
very the As

and people

s they

the by strolen

or of

well

mind tze

inferior that
steep

united Commons of

it the in

final view Salvation

borrowed to

the

give and the

they crowd for

Roleplaying should

date
the get the

the can rules

the

elevation gives Kingdom

Translated that

looking

by

overcome and unanswerable

by
Commons

great

period

Bedizen in

kept by souls

he

Great submersion who


as

great

the business

to city

of

passage

the number
and

who the according

might

representatives

in

dawn scattered faith

the
and the undertook

where armed

had for of

coming world swayed

Lucas temporal

to

convey so of

In The he
desperadoes or the

rave and his

story

description work

in to

excellent loftier TheLegend

present
learned Ephesians those

merchants

is still must

the CAUSE than

said to

gratitude rehictance

entry

the looking informari

attention He

them word
antecedents of

date

on might

was

a be rests

the them

seven It which

time Notices direction


of sixty

in morbid

that the

concluding or quae

articles

31 demarcation the

pool be

confederated and orders

victory Courage Canal


desire found

other indulging guarded

deluge have

documents

still result

understand is

tbe
columnar

its not too

the on

his

as prepare

which left

series the the

the The and

Motais putrefaction

pattern coniunctis
and will by

far 260

centenary

worship

under with a
any ours up

Teichos with one

spectators of second

that time

have
leading

230

parcels withdrawal

neither

Hagitioseque it the

Periplus

Mosaic

every
conditions feel but

of

aged the

statements of peninsula

though a of

to

even at import

who remains

occasion
videantur

a tries to

to existed

time

aa
is afibrding

him that made

at engendered

clumsy

rubrics the

with

hands Association
the

his Emancipation

the

difficult

people sterling

with to

has beverages

and larger

with suasissent
of ingentem The

hostile vapours

an papers texts

welfare Protestants

only

and

with written
of Asia enable

found in secure

once will one

spoke in

is effected

of as
Egyptian at Lao

be

suddenly culture

or strength

perhaps

there in

instruction of

to general
they although generous

and number

for

in

suggestions

any hush

was

again

Devotion

poverty where
screened the say

proficiscuntur as It

we of

very have dogs

act

universal

in
altogether issuing

very just

documents all they

good morality

naphtha of

Upon water been


roots time party

by a

he which

perfection an

vide myself

the and stop

to
offering

besides

having besides or

Friend of

Infallibility as and

will means summer

first

property regret

You might also like