100% found this document useful (1 vote)
51 views56 pages

C++20 in Examples. 1st Edition Alex Vasilev Download

The document is an introduction to the book 'C++20 in Examples' by Alex Vasilev, which aims to teach the C++ programming language through a series of selected examples and problems. It covers fundamental topics such as variables, functions, control statements, object-oriented programming, and mathematical problems, making it suitable for beginners. The author, a professor with extensive teaching experience, emphasizes the importance of C++ in programming and provides resources for further learning.

Uploaded by

nillbanb9073
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)
51 views56 pages

C++20 in Examples. 1st Edition Alex Vasilev Download

The document is an introduction to the book 'C++20 in Examples' by Alex Vasilev, which aims to teach the C++ programming language through a series of selected examples and problems. It covers fundamental topics such as variables, functions, control statements, object-oriented programming, and mathematical problems, making it suitable for beginners. The author, a professor with extensive teaching experience, emphasizes the importance of C++ in programming and provides resources for further learning.

Uploaded by

nillbanb9073
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/ 56

C++20 in Examples.

1st Edition Alex Vasilev


download

https://textbookfull.com/product/c20-in-examples-1st-edition-
alex-vasilev/

Download more ebook instantly today - get yours now at textbookfull.com


We believe these products will be a great fit for you. Click
the link to download now, or visit textbookfull.com
to discover even more!

Rx.NET in Action with Examples in C# 1st Edition Tamir


Dresher

https://textbookfull.com/product/rx-net-in-action-with-examples-
in-c-1st-edition-tamir-dresher/

Primary Mathematics Textbook 2B Jennifer Hoerst

https://textbookfull.com/product/primary-mathematics-
textbook-2b-jennifer-hoerst/

Beginning SVG: A Practical Introduction to SVG Using


Real-World Examples Alex Libby

https://textbookfull.com/product/beginning-svg-a-practical-
introduction-to-svg-using-real-world-examples-alex-libby/

How Good Policies and Business Ethics Enhance Good


Quality of Life The Selected Works of Alex C Michalos
1st Edition Alex C. Michalos (Auth.)

https://textbookfull.com/product/how-good-policies-and-business-
ethics-enhance-good-quality-of-life-the-selected-works-of-alex-c-
michalos-1st-edition-alex-c-michalos-auth/
Learning C# programming with Unity 3D Alex Okita

https://textbookfull.com/product/learning-c-programming-with-
unity-3d-alex-okita/

Connecting the Quality of Life Theory to Health Well


being and Education The Selected Works of Alex C
Michalos 1st Edition Alex C. Michalos (Auth.)

https://textbookfull.com/product/connecting-the-quality-of-life-
theory-to-health-well-being-and-education-the-selected-works-of-
alex-c-michalos-1st-edition-alex-c-michalos-auth/

Homer and the Poetics of Gesture Alex C Purves

https://textbookfull.com/product/homer-and-the-poetics-of-
gesture-alex-c-purves/

Handbook of Macroeconomics, Volume 2A-2B SET 1st


Edition John B. Taylor

https://textbookfull.com/product/handbook-of-macroeconomics-
volume-2a-2b-set-1st-edition-john-b-taylor/

Concurrency in NET Modern patterns of concurrent and


parallel programming With examples in C and F 1st
Edition Riccardo Terrell

https://textbookfull.com/product/concurrency-in-net-modern-
patterns-of-concurrent-and-parallel-programming-with-examples-in-
c-and-f-1st-edition-riccardo-terrell/
1

C++20
in
Examples
Alex Vasilev
2

C++20 in Examples
Written, codes, and illustrations by Alex Vasilev
Cover image by Anastasiia Vasylieva
Copyright © 2020 Alex Vasilev
All rights reserved
Contents 3

Contents
Introduction. The Book about С++ ............................ 7
About the Book ............................ 7
The C++ Programming Language ............................ 8
The C++ Standards ............................ 9
The Software ............................ 9
About the Author ............................ 11
Feedback ............................ 11
Downloads ............................ 11
Thanks ............................ 11
Chapter 1. Simple Programs ............................ 13
The First Program ............................ 13
Using Variables ............................ 17
Using Functions ............................ 24
Using a Loop Statement ............................ 27
Using a Conditional Statement ............................ 31
Using Arrays ............................ 33
Chapter 2. Control Statements ............................ 37
The for Loop Statement ............................ 37
The do-while Statement ............................ 42
The switch Statement ............................ 45
Nested Conditional Statements ............................ 52
Nested Loop Statements ............................ 54
The Loop over a Collection ............................ 58
Handling and Throwing Exceptions ............................ 63
The goto Statement ............................ 69
Contents 4

Chapter 3. Pointers, Arrays, and References ............................ 71


Using Pointers ............................ 71
Arrays and Pointers ............................ 74
Using References ............................ 78
Using Dynamic Memory ............................ 80
Character Arrays ............................ 83
Two-Dimensional Arrays ............................ 92
Arrays of Pointers ............................ 99
Chapter 4. Functions ............................ 107
Using Functions ............................ 107
Overloading Functions ............................ 112
Default Values for Arguments ............................ 116
Using Recursion ............................ 119
Passing Arguments to Functions ............................ 122
Passing Pointers to Functions ............................ 126
Passing Arrays to Functions ............................ 129
Passing a String to a Function ............................ 136
A Pointer as the Result of a Function ............................ 139
A Reference as the Result of a Function ............................ 143
A Dynamic Array as the Result of a Function ............................ 146
Pointers to Functions ............................ 152
Static Local Variables ............................ 158
Lambda Functions ............................ 161
Chapter 5. Classes and Objects ............................ 169
Using Classes and Objects ............................ 169
Public and Private Members ............................ 174
Overloading Methods ............................ 177
Constructors and Destructors ............................ 183
Contents 5

Operator Overloading ............................ 191


Comparing Objects ............................ 203
Using Inheritance ............................ 209
Chapter 6. Using Object-Oriented
Programming ............................ 219
A Pointer to an Object ............................ 219
Arrays of Objects ............................ 228
An Array as a Field ............................ 232
Functors and Object Indexing ............................ 238
The Copy Constructor ............................ 242
Inheritance and Private Members ............................ 247
Virtual Methods and Inheritance ............................ 250
Multiple Inheritance ............................ 254
Base Class Variables ............................ 257
Chapter 7. Template Functions and Classes ............................ 263
Template Functions ............................ 263
Template Functions with Several Parameters ............................ 268
Overloading Template Functions ............................ 271
The Explicit Specialization of Template
Functions ............................ 273
Template Classes ............................ 275
The Explicit Specialization of Template
Classes ............................ 278
Default Values for Template Parameters ............................ 284
Automatically Calculated Parameters ............................ 286
Inheritance of Template Classes ............................ 288
Integer Template Parameters ............................ 294
Template Lambda Functions ............................ 306
Contents 6

Chapter 8. Different Programs ............................ 309


Using Structures ............................ 309
Template Structures ............................ 312
Complex Numbers ............................ 314
Numerical Arrays ............................ 319
Dynamic Arrays ............................ 331
Using Sets ............................ 337
Associative Containers ............................ 341
Enumerations ............................ 345
Handling Exceptions ............................ 348
Using Multithreading ............................ 350
Chapter 9. Mathematical Problems ............................ 357
The Fixed-Point Iteration Method ............................ 357
The Bisection Method ............................ 360
Newton's Method ............................ 366
The Lagrange Interpolation Polynomial ............................ 368
The Newton Interpolation Polynomial ............................ 372
Simpson's Method for Calculating Integrals ............................ 377
The Monte Carlo Method for Calculating
Integrals ............................ 380
Euler's Method for Solving Differential
Equations ............................ 383
The Classical Runge-Kutta Method ............................ 386
Conclusion. Some Advice ............................ 389
Introduction The Book about С++ 7

Introduction

The Book about С++


You can observe a lot by watching.
Yogi Berra
This book is about the C++ programming language. If you have no (or little)
experience in C++, if you want to succeed in programming in C++, and if you
are ready to study hard, then the book is for you.

About the Book


The book consists of specially selected examples and problems. They cover
all main subjects essential for programming in C++.
The first chapter gives a general notion of what we can do in C++. There we
learn how to create a program. The chapter also contains information about
input and output operators, variables, functions, loop statements, conditional
statements, and arrays.
The second chapter is devoted to the control statements. In this chapter, we
consider in detail the conditional statement, loop statements, the selection
statement. We also will get a notion about handling and throwing exceptions.
In the third chapter, we discuss pointers, arrays, and references. Namely, we
consider how to create and use pointers. We discuss the relationship between
pointers and arrays, and also we investigate how and when we can use
references. Moreover, the chapter contains information about memory
allocation. As well, there we analyze the peculiarities of character arrays used
to implement strings.
The fourth chapter is about functions. There we learn what a function can do
and how we can use it. We overload functions, define the arguments with
default values, and use recursion. We will get to know how arguments are
Introduction The Book about С++ 8

passed to functions and how we pass a function as an argument. Also, we learn


how functions operate with arrays, references, and pointers.
In the fifth chapter, we discuss the principles of object-oriented
programming. We learn how to describe classes and create objects. Also, the
chapter contains information about public and private members, constructors
and destructors, overloading methods and operators, using inheritance.
In the sixth chapter, we continue discussing classes and objects. Namely, we
get familiar with pointers to objects, arrays of objects, and functors. We will
use objects whose fields are arrays and implement object indexing. We will get
familiar with virtual methods and multiple inheritance, and do some other tricks
with classes and objects.
In the seventh chapter, we investigate template functions and classes. There
we create and overload template functions with several parameters. We will
come to know how to define default values for template parameters. There we
also apply inheritance for template classes. Moreover, in the chapter, we
consider how to use integer template parameters.
In the eighth chapter, we consider different programs. The chapter explains
how to use structures, complex numbers, and containers. We will also get
familiar with multithreading.
The ninth chapter is devoted to mathematical problems. In that chapter, we
show how to implement methods for solving algebraic and differential
equations, calculate integrals, and create interpolation polynomials.

The C++ Programming Language


By now, C++ is one of the most popular programming languages. It is
impossible to imagine a professional programmer who would not know C++.
In this sense, choosing C++ for studying seems to be very reasonable. In
addition to the direct benefits of having the ability to create programs in C++,
there is also an important methodological aspect. It is based on exceptional
Introduction The Book about С++ 9

flexibility and richness of the C ++ language. After having studied C++, it is


much more comfortable "to adopt" other programming languages. But, in any
case, C++ is a "must-know" language, and it will be in the nearest future. No
doubt, C++ is an excellent choice to get familiar with programming.

The C++ Standards


The C++ language was created as an extension of the C language in 1983.
Since that time, several Standards of the C++ language were developed and
approved. Those Standards are C++98, C++11, C++14, C++17, and C++20
(the number stands for the year the Standard was approved). Each Standard
makes more or less essential improvements to the language and sometimes
discards inefficient features.
Notes
To get information about which Standards are supported by compilers, you can
visit the
https://en.cppreference.com/w/cpp/compiler_support.

In the book, we will consider the most general and universal peculiarities of
C++. So most programs from the book can be compiled by modern compilers.
Nevertheless, there are also codes based on using the compilers that support
C++20 Standard.
 C++20 Standard
When it is crucial to use a compiler supporting C++20 Standard, we make special
notes and explain what is essential and how it can be handled.

The Software
In the book, we will consider a lot of different programs. It's a good idea to
study how they operate. But for a more in-depth understanding, it would be
good to run the programs by yourself. For doing that, it is necessary to have the
proper software.
Introduction The Book about С++ 10

At least, you should have a compiler, which is a special program that


translates the code you created to the statements the computer executes. There
are a lot of compilers suitable for solving the task. One of the most popular is
the GNU compiler that can be reached at the https://gcc.gnu.org/. To
create a program, you should write its code within a code editor (anyone is
good, even Notepad), save the file with the .cpp extension, and then compile
it. Suppose we have the program.cpp file with the program code. Then to
compile the program with the GNU compiler, we can use the following
instruction in the command line:
g++ program.cpp -o program

If the compilation is successful, then the executable file program.exe will


be created. To run the program, we should run the program.exe file.
Details
In Linux, you can use the same instruction g++ program.cpp -
 o program to compile the program. The name program after the -
o parameter defines the name of the executable file. If omitted, the
executable file gets the name a.
The instruction g++ --version gives information about the version
o the GNU compiler installed on your system.
It is also a good idea to use Microsoft Visual Studio for creating programs,
compiling and running them. In that case, all you need to do is to install Visual
Studion and get familiar with its main features.
Notes
There is no lack of software for creating programs in C++. Now, a lot of high-
quality software development tools exist, both commercial and free. As usual, an
integrated development environment is used, which binds a code editor,
debugger, compiler (not always, but very often), and some other additional
utilities. Of course, you are free to choose any development environment you
Introduction The Book about С++ 11

want. If so, refer to the manual for the compiler you use to clear out how to compile
a program.

About the Author


The author of the book, Alex Vasilev, is a Professor in Theoretical Physics at
the Physics Department of Kiev University. He teaches programming in C++,
C#, Java, JavaScript, and Python for more than fifteen years. Research interests
are physics of liquids and liquid crystals, biophysics, synergetic, mathematical
methods in economics, modeling of social and political processes,
mathematical linguistics.

Feedback
You can send your comments and suggestions about the book by email
[email protected].

Downloads
You can download the codes from the book at
www.vasilev.com.ua/books/cpp/codes.zip.

Thanks
I express my sincere gratitude to the readers for their interest in the book and
hope that the book will help in studying C++.
Introduction The Book about С++ 12
Chapter 1 Simple Programs 13

Chapter 1

Simple Programs
Activity is the only road to knowledge.
George Bernard Shaw
In this chapter, we will learn how to create programs in C++, get data from
the keyboard, and print to the console. We also will use variables, perform some
arithmetic operations, and make other useful things. So let's begin.

The First Program


Our first program prints a message on the screen. Its code is in Listing 1.1.

 Listing 1.1. The first program

#include <iostream>
using namespace std;
int main(){
// Prints a message:
cout<<"Our first program in C++"<<endl;
return 0;
}

And here is the output from the program:


 The output from the program (in Listing 1.1)
Our first program in C++

When the program runs, the message Our first program in C++
appears on the screen. To understand why it happens, we are to analyze the
code. First of all, there are several blocks, and the main of them is the main
function, which is (what a surprise!) main(). To describe the main function,
we use the following pattern:
Chapter 1 Simple Programs 14

int main(){
// The code of the main function
}

The body of the main function is defined by the paired curly braces: the
opening brace { and the closing brace }. All enclosed within the braces is the
code of the main() function. The keyword int before the main function
name indicates that the function returns a result, and it is an integer.
Running a program in C++ means running its main(). In other words, if
we want to understand what happens when the program runs, we should
consider the statements in its main function. In our case, there are several (three,
to be more precise) lines of code in the body of the main function. And one of
these three lines is a comment.
Comments begin with a double slash //. The compiler ignores them. We
use comments to explain the meaning of the statements in the program.
Comments are for people and not for the computer. Although there is no
extreme necessity in using comments, nevertheless, they make a program to be
more friendly and understandable.
 Theory
In C++, we can use single-line comments and multiline comments. Single line
comments begin with a double slash //. All to the right after the double slash is
a comment. We put a single-line comment within a line.
Multiline comments may be several lines long. A multiline comment begins with
/* and ends with */. All between /* and */ is a comment.
The principal statement in main() is
cout<<"Our first program in C++"<<endl. Due to this
statement, the program prints the message. That is for what we created the
program. Here we use the output operator <<. It writes the value on the right
of the operator << to the "place" defined by the keyword cout on the left of
Chapter 1 Simple Programs 15

the operator. The keyword cout is linked to the console (cout is an


abbreviation from the console output). "Writing to the console" means printing
on the screen. Thus, the statement
cout<<"Our first program in C++" prints the string
"Our first program in C++" on the screen.
The string is enclosed in double quotes. We can also use several output
operators within a statement. The endl keyword (it is an abbreviation from
the end of the line) is used to print a newline character (so it moves the screen
cursor to the beginning of the next line). Thus, the
cout<<"Our first program in C++"<<endl statement means:
print the string "Our first program in C++" on the screen and move
to the beginning of the next line.
Notes
There was no necessity to use endl to move to the next line. We could use
cout<<"Our first program in C++" instead of the statement
cout<<"Our first program in C++"<<endl. But if so, the
screen cursor wouldn't move to the next line.

The last statement in main() is return 0. It terminates the main function


and returns 0 as its result. That is a signal for the operating system that the main
function is terminated ordinarily without any errors. As usual, programs in C++
have the last return 0 in main().
Notes
Note that statements in C++ end with a semicolon.

We have analyzed the code of the main function. But in the program, there
are some other instructions. They are at the top of the program, just before the
main function body.
The preprocessor directive #include <iostream> is used to include
the <iostream> header (or the header file) in the program. Header files
Chapter 1 Simple Programs 16

contain important information for a program to be executed successfully. Here


we deal with the standard library, which is a principal element of most
programs (the header <iostream> stands for the standard input/output
library).
Details

 The standard input/output library contains definitions for such identifiers


as cout (the console) and cin (the keyboard).

The instruction using namespace std is an appointment to use the


standard namespace whose name is std.
 Theory
We may think that the namespace is an abstract container with certain
programming utilities. It helps to avoid naming conflicts. When creating a program,
we are to specify a namespace. In all examples in the book, we use the standard
namespace std.

 C++20 Standard
The C++20 Standard introduces a concept of modules. Modules are separate
files of source code, which can be compiled and incorporated into a program. In
some sense, the concept of modules is an alternative for using headers in a
program. Modules are imported into a program with the help of the import
keyword. Modules should be useful in large projects since they reduce the time
of compilation. Nevertheless, to make the book's programs sufficiently compatible
with the current versions of the compilers, we won't use modules.

So, we are done with our first program. As a bonus, we now have a template
for creating new programs:
#include <iostream>
using namespace std;
int main(){
// Your code is here
return 0;
Chapter 1 Simple Programs 17

In the next program, we will face variables and the input operator.

Using Variables
We are going to create a program, which converts miles into kilometers. The
program gets a distance in miles and prints the same distance in kilometers. The
initial value (the distance in miles) is entered into the program from the
keyboard.
Notes
A mile is equal to 1609344 millimeters or 1.609344 kilometers. To convert
miles into kilometers, we should multiply the miles by the conversion factor
1.609344.

The program is quite simple. When it runs, a prompt for entering a number
appears. This number is a distance in miles. After the number is read, the
program performs some calculations and then prints the result on the screen.
We should store somewhere the entered number, as well as the result of the
calculations. For these purposes, we use variables in the program.
 Theory
A variable is a named space in memory that could be accessed by the name: we
can assign a value to the variable and read the value of the variable. In C++, we
have to declare a variable before using it. When we declare a variable, we must
specify its type. The type of variable is determined by a keyword (the type
identifier). The most actual primitive types are int (integers), double (real or
floating-point numbers), and char (character).
A variable can be declared almost everywhere in a program (but before its first
use). A variable is accessible inside the block where it is declared. In turn, a block
is defined by the paired curly braces. So, if some variable is declared in the main
function, then this variable is accessible inside the main function.
Chapter 1 Simple Programs 18

Besides variables, we can use constants. Unlike a variable, the value of a


constant can't be changed once it is defined. A constant can be created similar to
a variable, but we have to use the const keyword.

 C++20 Standard
Along with type char, to handle characters, we can use types wchar_t,
char8_t, char16_t, and char32_t. The wchar_t type is used to store
16-bite characters. Types char16_t and char32_t allow saving characters
in UTF-16 and UTF-32 encoding, respectively. The char8_t type was
introduced in C++20 to store characters in UTF-8 encoding.

Now let's consider the program in Listing 1.2.

 Listing 1.2. Converting miles into kilometers

#include <iostream>
using namespace std;
int main(){
// The conversion factor (kilometers in a mile):
const double F=1.609344;
// The variables for storing a distance
// in miles and kilometers:
double miles,kms;
// The prompt for entering a distance in miles:
cout<<"A distance in miles: ";
// Gets a distance in miles:
cin>>miles;
// Converts miles into kilometers:
kms=miles*F;
// Prints the result of the calculations:
cout<<"The distance in kilometers: "<<kms<<endl;
return 0;
}
Chapter 1 Simple Programs 19

In the main function, we use the statement


const double F=1.609344 to declare the floating-point constant F
(which is the conversion factor). The value of this constant is 1.609344
(kilometers in a mile). We also use two variables miles and kms. Both of
them are of type double. The distance in miles is stored in the variable
miles. The user enters this value from the keyboard. Namely, the statement
cout<<"A distance in miles: " prints a message on the screen.
Then the user types a number and presses <Enter>. To process these actions,
we use the statement cin>>miles. It contains the input operator >>. Here
cin (it is an abbreviation from the console input) is a link to the input console
device (by default, it is the keyboard). The variable miles is on the right of
the input operator. The entered value is stored (saved) in this variable.
Notes
The variable miles is declared as being of type double. Thus, the value
entered by the user is treated as a value of type double.

The statement kms=miles*F calculates the distance in kilometers: we just


multiply the distance in miles by the conversion factor F.
 Theory
Here we face the multiplication operator *. Other arithmetic operators are the
addition operator +, the subtraction operator -, and the division operator /. In
C++, the division operator has a specific feature. If both operands are integers,
then integer division is performed (the fractional part of the result is discarded).
For example, the expression 9/4 gives 2. To make ordinary (floating point)
division (when both operands are integers), we can put the (double)
instruction (the keyword double enclosed in parentheses) before the instruction
with the division operator. For example, the expression (double)9/4 gives
2.25.
Chapter 1 Simple Programs 20

An assignment is performed with the help of the operator =. The value on the right
of the assignment operator is assigned to the variable on the left of the
assignment operator.

The result of the calculations is assigned to the variable kms. After that, the
statement
cout<<"The distance in kilometers: "<<kms<<endl prints
the calculated result on the screen. The output from the program could be as
follows (the entered by the user number is marked in bold):

 The output from the program (in Listing 1.2)


A distance in miles: 3.5
The distance in kilometers: 5.6327

Above, we were dealing with floating-point numbers. From a mathematical


point of view, all this is correct, but it is not very convenient from a practical
point of view. Usually, if we want to define a distance, we use different metrical
units. Next, we are going to consider a situation of such a kind.
Notes
Let's explain what we mean. Suppose, in the previous example, we enter 3.5 for
the distance in miles. On the other hand, we can express the same distance in
miles and feet, and it is 3 miles and 2640 feet (since there are 5280 feet in a
mile). The same distance in kilometers is 5.6327, and it is equal to 5 kilometers
and 632 meters (here we have neglected with 70 centimeters).

We are going to consider an example, which is similar to the previous one,


except we have changed some positions in the problem formulation. In
particular, a distance, which is initially in miles and feet, is converted into
kilometers and meters. Let's consider the program in Listing 1.3.

 Listing 1.3. Converting miles and feet into


kilometers and meters

#include <iostream>
Chapter 1 Simple Programs 21

using namespace std;


int main(){
// Feet in a mile:
const int G=5280;
// Kilometers in a mile:
const double F=1.609344;
// The variables for storing miles, feet,
// kilometers and meters:
int miles,feet,kms,ms;
// Gets a distance in miles and feet:
cout<<"A distance in miles and feet."<<endl;
cout<<"Miles: ";
cin>>miles;
cout<<"Feet: ";
cin>>feet;
// The distance in miles:
double M=miles+(double)feet/G;
// The distance in kilometers:
double K=M*F;
// Kilometers only:
kms=(int)K;
// Meters only:
ms=(int)((K-kms)*1000);
// Prints the result of the calculations:
cout<<
"The distance in kilometers and meters."<<endl;
cout<<"Kilometers: "<<kms<<endl;
cout<<"Meters: "<<ms<<endl;
return 0;
}
Chapter 1 Simple Programs 22

In the program, we define the integer constant G with the value 5280. This
constant determines the number of feet in a mile. The floating-point constant F
with the value 1.609344 determines the number of kilometers in a mile. The
integer variables miles, feet, kms, and ms are used, respectively, for storing
the miles, feet, kilometers, and meters in the distance that the user enters. To
get the miles, we use the statement cin>>miles, and we use the statement
cin>>feet to get the feet. The statement
double M=miles+(double)feet/G calculates the distance in miles.
Here we mean the distance measured in miles only. Due to that, we implement
the corresponding value as a floating-point number. This statement determines
the value, but it also declares the variable in which the value is stored. Namely,
here we declare the variable miles of type double, and this variable gets the
value that is calculated by the instruction miles+(double)feet/G. We
calculate the value as the sum of miles and (double)feet/G. The last one
is the ratio of the variables feet and G. These variables (feet and G) are
integers, so to perform floating-point division, we use the (double)
instruction.
Notes
The (double)feet/G instruction converts feet into miles.

We calculate the distance in kilometers employing the statement


double K=M*F. Here we initialize the variable K with the value, which is the
product of M (the distance in miles) and F (the conversion factor, which
determines the number of kilometers in a mile).
The variable K stores the distance in kilometers. That is a floating-point
number. We need to extract its integer part (kilometers) and fractional part. The
fractional part, being multiplied by 1000 (since there are 1000 meters in a
kilometer), gives meters.
Chapter 1 Simple Programs 23

To extract the integer part, we use the expression kms=(int)K. Here we


employ the explicit type cast: due to the instruction (int), the value of the
variable K of type double is converted to an integer value. This conversion
means discarding the fractional part of the floating-point value. In other words,
the result of the instruction (int)K is the integer part of K. Along with that,
the value of the variable K doesn't change.
The variable ms gets the value of the expression (int)((K-
kms)*1000). This expression is calculated in the following way. The
difference K-kms gives the fractional part of the variable K. The received result
is multiplied by 1000. After that, the fractional part of the calculated value is
discarded (due to the instruction (int)).
To print the calculated values kms and ms, we use the statements
cout<<"Kilometers: "<<kms<<endl and
cout<<"Meters: "<<ms<<endl. Here is how the output from the
program looks like (the numbers entered by the user are marked in bold):
 The output from the program (in Listing 1.3)
A distance in miles and feet.
Miles: 3
Feet: 2640
The distance in kilometers and meters.
Kilometers: 5
Meters: 632

The considered examples give some notion of how to use data in a program.
Next, we are going to get familiar with functions.
Chapter 1 Simple Programs 24

Using Functions
Now we consider the same problem about calculating a distance in
kilometers basing on the value of the distance in miles. But in this case, we use
functions.
 Theory
A function is a named block of programming code, which can be called by the
name. When we describe a function, we specify its prototype (the type of the
function result, the name of the function, and the list of its arguments). The body
of the function (the statements to execute when calling the function) is enclosed
in the paired curly braces.
A new version of the previous program is presented in Listing 1.4.

 Listing 1.4. Using functions

#include <iostream>
using namespace std;
// The function for entering a distance in miles:
double getMiles(){
// The local variable to store
// the result of the function:
double dist;
// The prompt for entering a distance in miles:
cout<<"The distance in miles: ";
// Gets a distance in miles:
cin>>dist;
// The result of the function:
return dist;
}
// The function for converting miles into kilometers:
double getKms(double dist){
// Kilometers in a mile:
double F=1.609344;
Chapter 1 Simple Programs 25

// The result of the function:


return dist*F;
}
// The main function of the program:
int main(){
// The variable to store a distance in miles:
double miles=getMiles();
// The distance in kilometers:
cout<<"In kilometers: "<<getKms(miles)<<endl;
return 0;
}

The output from the program could be as follows (the number entered by the
user is marked in bold):
 The output from the program (in Listing 1.4)
A distance in miles: 3.5
In kilometers: 5.6327

The output from the program is almost the same as in the example in
Listing 1.2. But in this case, the program is fundamentally different. Let's
analyze it.
Besides the main function main(), there are also two other functions in the
program: getMiles() gets a distance in miles, and getKms() converts
miles into kilometers. The declaration of the function getMiles() starts with
the double keyword: the function returns a result, and its type is double.
The name of the function is followed by empty parentheses. That means that
the function has no arguments. In the body of the function, there is the statement
double dist, which declares the local variable dist (this variable is
available inside the function only). The statement cin>>dist assigns the
value entered by the user to the variable dist. The function returns this value
as the result (the statement return dist).
Chapter 1 Simple Programs 26

 Theory
Note that a variable is valid inside the block where it is declared. The variables
declared inside the body of a function are local and accessible inside the function
only.
Memory for a local variable is allocated when we call the function. When the
function is terminated, then all its local variables are deleted from memory. A local
variable, thus, exists while the function is being executed.
We should make a difference between the description of a function and calling
the function. The description of a function doesn't mean executing the statements
of the function. The statements of the function are executed when the function is
called.
The return instruction terminates the execution of the function. If we put some
value after the return instruction, then this value is returned as the result of the
function.

We use the function getKms() to convert miles into kilometers. It has the
argument dist of type double, and the function returns a value of type
double as well. The result of the function is returned by the statement
return dist*F, and it is the product of the function argument dist and
the local variable F, whose value is 1.609344.
 Theory
Any argument of a function "has a power" of a local variable: it is accessible inside
the function only.

In the main function, we use the statement


double miles=getMiles() to declare the variable miles. The result of
the function getMiles() is assigned to this variable. Calling the function
getMiles() leads to printing a prompt in the console. The function is
terminated after the user enters a number from the keyboard. This number the
function returns as the result. The variable miles is passed to the function
getKms() as the argument. Namely, we use the statement
Another Random Scribd Document
with Unrelated Content
The Henry Genealogy 129 Natural Philosophy in the College
of New Jersey, at Princeton, in 1832, and was elected the first
Secretary and Director of the Smithsonian Institution in 1846. He
received the honorary degree of Doctor of Laws from Union College
in 1829, and from Harvard University in 1851. He was President of
the American Association for the Advancement of Science in 1849;
was chosen President of the U. S. National Academy of Sciences in
1868; President of the Philosophical Society of Washington in 1871;
and chairman of the Lighthouse Board of the United States in the
same year; the last three positions he continued to fill until his
death. He made contributions to science in electricity, electro-
magnetism, meteorology, capillarity, acoustics, and in other branches
of physics ; he published valuable memoirs in the transactions of
various learned societies of which he was a member; and devoted
thirty-two years of his life to making the Smithsonian Institution
what its founder intended it to be, an efl&cient instrument for the
''increase and diffusion of knowledge among men." Dr. Henry died in
Washington, D. C, May 13, 1878. The funeral services were held May
16, in the New York Avenue Presbyterian Church. The arrangements
were made by General Sherman and other prominent men; and
leading officials in every branch of the Government, men eminent in
science, in literature, in diplomacy, and in professional and business
life, assembled at the church. Through the efforts of Senator Morrill
of Vermont, Congress, in 1880, provided for the erection of a bronze
statue of Prof. Henry upon the grounds of the Smithsonian
Institution.
ROBERT HENRY OF GUILFORD, CONN. On the records of
the Fourth Church of Guilford, Robert Hendry is recorded as having
been admitted to full communion in 1746, and "Jane Hendry Reed
by Recommendation from Urope" (about 1758). In 1766, she was
"dismissed to Hadlime." Mar. 20, 1763, in a deed of one quarter acre
with dwelling, shop, and barn to Samuel Brown, Robert is called
"merchant." Children of Robert^ and Jane Henry on Fourth Church
records : — i. Isabel,^ bapt. Feb. 23, 1745/6. ii. Robert, bapt. Nov.
13, 1748; d. Sept. 24, 1757. iii. Jane, bapt. Mar. 17, 1751; probably
m. July 14, 1778, at Middletown, Conn., John Buchanan of Enfield,
iv. Mary Anne, bapt. July 1, 1753; probably m. Apr. 13, 1774, at
Middletown, Conn., James McAlister of Enfield. V. Elizabeth, bapt.
June 13, 1757. iv. Sarah, bapt. Mar. 11, 1759. (130)
SOME EARLY HENRY FAMILIES OF RHODE ISLAND. By Mrs.
Elisha Edgerton Rogers, Norwich, Conn. FRANCIS HENRY OF
WARWICK. The earliest record of Francis Henry so far noted in this
country, is dated May 31, 1745, when he had a son, Robert, baptized
in Providence, R. I., on the same day that a James Henry had a
daughter baptized, Mary. (Records of the First Presbyterian Church,
Boston, Mass.) On October 24, 1749, he had a daughter baptized at
Providence, as the same church record testifies. On Feb. 23, 1759,
Francis Henry "of Warwick, County Kent," Rhode Island, bought a
tract of land in Killingly, County Windham, Conn., from Peter and
Mary Bateman. (Land Rec. Killingly, Conn., Vol. 6, p. 253.) There was
some mistake about the bounds and on Feb. 18, 1765, Samuel and
Thomas Gould of Killingly, Conn., sold a small piece of land on
Chestnut Hill, "in sd KiUingly," joining the land of "abovesd Francis
Henry," a part of which was purchased of Peter and Mary Bateman;
the witnesses to this deed were Francis Henry, Thomas Moffit and
John Henry. {lUd., 8-236). Francis was still "of Warwick." Francis
Henry does not appear to have lived in Killingly and the farm was
improved by his two sons, for whom it was probably bought. The will
of "Francis Henry, of Warwick, County Kent, Colony of Rhode Island .
. . being at present in a weak and low condition," is dated
September 14, 1766; he leaves his estate as follows: "To my two
sons\dz: John Henry and Robert Henry, my mansion house and farm
in KilUngly, County Windham, Colony of Connecticut to be equally
divided between them. "To my three daughters, Margaret Douglas,
EHzabeth Huston and Hannah Henry, each a cow. "To wife EUzabeth
Henry, all household stuJGf, etc. (131)
132 The Henry Genealogy "And to my two sons John Henry
and Robert Henry, the rest of the moveable estate not before
devised. The two sons to be executors. Jer. Lippitt "i (Signed) Francis
Henry. Saml. Henry > James Kelly J Kent, December 27, 1766,
appeared Jeremiah Lippitt, Esq., of Warwick, Mr. Samuel Henry of
Johnston and James Kelly of Tuesberry* Province of Massachusetts
Bay, the witnesses to the will, etc." (Probate Records, Warwick, R. I.,
Vol. 3, p. 157.) Francis Henry died sometime between the 24th of
September, 1766, when he made his will, and December 27, of the
same year, when it was probated. His widow, Elizabeth Henry, was
living in 1771, in Killingly, Conn., when she sold to "my two sons,
John and Robert Henry both of sd Killingly," her right of dower in the
estate "my well beloved Husband Francis Henry died seized of."
(Land Rec. Kilhngly, Conn., Vol. 8, p. 250.) Children of Francis and
Elizabeth Henry: — 1. i. Margaret^. 2. ii. Elizabeth. 3. iii. John. 4. iv.
Robert, bapt. May 31, 1745, Providence, R. I 5. V. Hannah. 6. vi.
Sarah, bapt. Oct. 24, 1749, Providence, R. I. No. 1. Margaret' Henry
(Francis^) married Feb. 21, 1754, in Providence, R. I., William
Douglas. (Vital Rec. R. I., Vol. 2, Providence County, Providence, pp.
61 and 92). She is mentioned as "Margaret Douglas," in her father's
will, Sept., 1766. No. 2. Elizabeth* Henry {Francis^) married Oct. 27,
1757, in Providence, R. I., William Huston. (Vital Rec. R. I.,
Providence County, Vol. 2, Providence, pp. 92 and 99). In her
father's will, she is called "Elizabeth Huston." *Tuesberry, was
probably Tewksbury, Middlesex County, Mass.; another party from
Tewksbury, Mass., will be mentioned in connection with James
Henry, "of Killingly, Conn.," when he bought land in Voluntown,
Conn., (adjoining Killingly) in 1771.
The Hefiry Gefiealogy 133 No. 3. John 2 Henry (Francis^)
probably married, before 1772, Agnes , (surname unknown), as an
Agnes Henry signs a deed with John and Robert Henry on Jan. 30,
1772. John is placed as the older son because he is mentioned first
in his father's will and also takes precedence on the land records in
which the two are named. His father bought a farm in KUlingly,
Conn., in 1759, and on March 3, 1760, John Henry, "of Killingly,
Conn.," purchased a tract of land ''beginning at a heap of stones at
the southeast corner of Francis Henry's farm"; so John was Uving in
Killingly in March, 1760. Chestnut Hill, where these farms were
situated, may be readily located in the eastern part of KilUngly.
(Land Rec. Killingly, Conn., 7-26). By his father's will, John inherited
half of the home farm, and on December 5, 1771, John Henry and
Robert Henry, both of KilUngly, mortgaged to Andrew Harris, of
Cranston, R. I., two parcels of land on Chestnut Hill, in said Killingly;
one parcel being that purchased in 1760, by John, of Joseph and
Mary Cutler, and the other piece "is the whole of the farm that
belonged to our Honored Father Francis Henry late of Warwick,
County Kent, Rhode Island, and now deceased" . . . "which tract our
Honored father in his last will gave to us the said John Henry and
Robert Henry in equal proportions and is the farm where said John
and Robert now hve." (Land Rec. Killingly, Conn., 8-249.) On the
same date, Dec. 5, 1771, and recorded immediately after the above-
mentioned deed, is one by which "Elizabeth Henry of KilUngly,
Conn.," for £70, sold to "my two sons John Henry and Robert Henry,
both of sd KilUngly" her right of dower and power of thirds of the
estate "my weU beloved Husband Francis Henry died seized of."
{Ibid. 8-250). On Jan. 30, 1772, John Henry and Robert Henry, of
KilUngly, Conn., for £660, sold to WiUiam West, of Scituate, R. I.,
land on Chestnut Hill, in KilUngly, "and is all the land sd John and
Robert Henry own in Killingly, except a roadway now trod and an
acre and a half of land for a burying place." {Ibid. 9-111.) This deed
was signed by John Henry, Robert Henry and Agnes Henry. John
Henry then disappears from the records of this vicinity, as does also
Robert Henry, for a time; but
134 The Henry Genealogy on the "List of Polls, etc. for the
Parish of New Salem for the year 1787," the names of Robert Henry,
John Henry and Robert Douglas are found. (Taintor's "Colchester,
Conn., Records," p. 154.) The "Census of 1790, Heads of Famihes,
Connecticut," page 122, shows John Henry, in New London County,
with a family of fifteen (three males over sixteen years of age, four
males under sixteen, six females and two other free persons) ; and
Robert Henry, with a family of nine, consisting of one male over
sixteen, four males under sixteen, and four females. This John and
Robert may, or may not, be identical with the Kilhngly John and
Robert. The Parish of New Salem was in the southern part of
Colchester, Conn., and the writer recognizes the names on the
census list near the Henrys, as residents of New Salem Parish; this
section is now included in the town of Salem, Conn. Unfortunately,
the records of the church of New Salem Parish were destroyed by
fire. Nothing further has been found concerning this John Henry, but
it may be remarked in passing, that soon after this time, the name
of Henry is found in New York State. No. 4. Robert* Henry
{Francis^) was baptized at Providence, R.I., May 31, 1745, and
James Henry had a daughter baptized, "Mary," at Providence, R.I.
"The same day, Francis Henry had a son Robert baptized." (Records
of the First Presbyterian Church of Boston, Mass.) Most of the
inhabitants of Providence were Baptists, while the Henry families
were undoubtedly descendants of Scotch Convenanters, and waited
for a visit from the Presbyterian minister of Boston, before having
the children baptized. As the Henrys had children baptized in 1745,
1747, 1748, 1749, and 1750, it would seem that this Boston minister
made a yearly trip to Providence. The father, Francis Henry, had
purchased a farm in Killingly, Conn., and there, on March 20, 1762,
Robert Henry married Elizabeth Anderson, who died in 1819 at
Killingly, Conn., daughter of John and Margaret Anderson of
Voluntown and Killingly, Conn., the marriage being recorded on
Killingly records. John Anderson and his wife, Margaret Anderson,
(the name also is written "Andrewson"), "of Voluntown, Conn."
bought land in Killingly, Conn., of John Dixson, of Killingly
The Henry Genealogy 135 (Land Rec. Killingly) in 1748, and
the births of some of their children are recorded at Voluntown. It is
through a deed of land to his daughter, EHzabeth (Anderson) Henry,
that much is learned of this family. Robert Henry inherited equally
with his brother John, the farm in KilUngly, left them by their father,
Francis Henry, as told in the record of John Henry, and after the
deed of January 30, 1772, Robert also disappears from the Killingly
records, but in the "Census of Rhode Island, 1774," a Robert Henry
is found in Cranston, with a family of two males over, two under,
sixteen years of age, and two females over, and two under sixteen.
In the "List of Men in Rhode Island, 1776-1777," taken for the
purpose of finding those able to bear arms for the war, the name of
Robert Henry is given in Cranston. On June 24, 1778, John Anderson
of Killingly, Conn., "for love," deeded 50 acres of land in Killingly to
his "daughter EHzabeth Henery of Cranston, County Providence, R.
I.," (Land Rec. Killingly, Conn., 10-270), and on Dec. 3, 1778, Robert
Henry of Cranston, "husbandman," quitclaimed to Asa King of
Coventry, R. I., his right in and to all the buildings "that are on the
farm whereon I now dwell, except a Hovel standing on the southeast
from the present dwelling house." (Land Rec. Cranston, R. I., 2-525.)
They lived in various places; perhaps for a time in Smithfield,
possibly in New Salem Parish, Colchester, Conn., and certainly for a
time in Voluntown, for on July 15, 1789, Robert Henry and his wife
Elizabeth, "Late of Voluntown, Conn.," (but present residence not
stated) sold two acres of land in Killingly, to Ebenezer Pierce. (Land
Rec. 13137). This was part of the land given to Elizabeth by her
father, and on August 15, 1795, "Elizabeth Henry, widow, of Killingly,
Conn.," bought back the two acres from Pierce, being "the same
which said Ebenezer Pierce purchased of Robert and EHzabeth
Henry." {Ihid. 15-50.) Robert Henry, then, had died before August
15, 1795; the widow Elizabeth Henry died in Killingly, early in 1819.
Her will was not dated, but the witnesses made oath to it, March 15,
1819, and it was presented for probate. May 4, 1819. (Probate Rec.
Plainfield, Conn., Vol. 14, pp. 495-6.) Only two children are
mentioned in it. The will of "Elizabeth Henry of KiUingly, County
Windham, Conn.," leaves to "Daughter Margaret Henry ... all
136 The Henry Genealogy household furniture . . . use of
one half my dwellinghouse . . . with one third of the profits of my
landed estate ... so long as she remains unmarried and no longer.
"To my son Francis Henry, the use and improvement (with the
following exceptions) of all my lands together with one half the
house thereon standing . . . during his lifetime. "To my two
grandsons, John Henry and Robert Henry, sons of said Francis
Henry, all my estate in lands together with the house I now live in,
to be equally divided between them after the death of their father.
"To my grandson Wilham Henry, son of sd Francis Henry, five dollars.
Son Francis Henry to be executor. Witnesses, Alexander Gaston,
Stephen Draper and Thomas Tanner." The will was exhibited at a
Court of Probate held May 4, 1819, by Francis Henry, the executor
therein named. Children of Robert and Elizabeth (Anderson) Henry:
— 7. i. Margaret'. 8. ii. Francis, b. after 1762. No. 5. Hannah 2 Henry
(Francis^) is called "Hannah Henry" in her father's will, September,
1766. No. 6. Sarah 2 Henry (Francis^) was baptized Oct. 24, 1749,
at Providence, R. I. "Francis Henry had a daughter baptized Sarah,
Oct. 24, 1749." (Records of First Presbyterian Church, Boston, Mass.)
She is not mentioned in her father's will, September, 1766. No. 7.
Margaret' Henry, {Robert,'^ Francis^) died after Aug. 7, 1854,
unmarried. Her brother, Francis Henry, purchased land in KilUngly,
Conn., and on March 11, 1814, he sold to Margaret, three acres
"beginning at a heap of stones which is the northeast corner of land
belonging to Elizabeth Henry." (Land Rec. Killingly, Conn., 20-83).
She bought three acres more on Jan. 4, 1816, with Francis Henry
and Samuel Anderson as witnesses. {Ibid., 20-111.)
The Henry Genealogy 137 By her mother's will, she was to
have the use of half the house and part of the profits of the land as
long as she remained unmarried, and her brother was to have the
use of one half during his lifetime. He died about 1842, and on Oct.
30, 1843, Robert Henry quitclaimed to Margaret Henry, both of
Killingly, right to 50 acres of land ''bounded south by the north line
of Sterling . . . with dwelling house" etc. {Ibid., 33-86), and next day
Margaret seems to have deeded it to Robert, {Ibid., 34-103), but
this was probably simply to secure the payment. She was still living
in Killingly, August 17, 1854, when she deeded two acres of land to
the town of Killingly. {Ibid., 38-397). No. 8. Fkancis'Henry, (/?o6erf,2
Francis^) born after 1762, marled Charity, whose surname is
unknown; he died about 1842, and Charity survived him. He bought
land in Killingly, Conn., April 4, 1799, (Land Rec. 15-59), adjoining
his mother's farm; on March 11, 1814, he sold to his sister Margaret,
three acres; he bought 47 acres from James Stranahan, one of the
bounds being "land formerly belonging to Elizabeth Henry
deceased," {Ibid., 2393) ; by his mother's will, he had the use of half
the dwelling house, and use of part of farm, in 1819, and this, after
his death, was to be the inheritance of two of his sons, John and
Robert. On Feb. 29, 1836, he deeds to "son William Henry" 11 acres
of land; {Ibid., 30-3), and on Feb. 16, 1837, he mortgaged the land
purchased of Stranahan, one of boundaries being "land formerly
owned by Elizabeth Henry, deceased, but now in the occupancy of
the grantor." {Ibid., 30-96). Mar. 6, 1840, Francis Henry of Killingly,
mortgaged to his "son John Henry of sd Killingly," a tract of land,
"reserving to myself and my wife Charity Henry," the use and
improvement of the same during their lifetimes. {Ibid., 31-166). He
died about 1842; the probate records of Killingly, Conn., began in
1830, but were destroyed by fire in 1850, so nothing is found of the
settlement of his estate. Lyman Henry was administrator, and on
Feb. 4, 1842, "Lyman Henry of Killingly, Conn., as administrator on
the estate Francis Henry, late of Killingly, deceased, and Charity
fenry, widow of sd Francis Henry," quitclaimed right to a
138 The Henry Genealogy certain woodlot "it being the
same Francis Henry conveyed by deed of mortgage to John Henry,
Mar. 6, 1840" to said John Henry. June 18, 1842, Lyman and Charity
as administrators, sold land to Robert Henry of Brooklyn, Conn., "sd
land bounded westerly by land of Robert and John Henry." {Jhid.,
32-252). Children of Francis and Charity Henry: — i. John,* b. in
Smithfield, R, I., according to a descendant; d. after March, 1844,
when he was Uving in Killingly, Conn.; m. Amy French, who was
living in Killingly in 1851. March 6, 1840, Francis Henry, of Killingly,
mortgaged to his son John Henry, of Killingly, a tract of land
"reserving to myself and my wife Charity Henry," the use and
improvement of the same during life. (Land Rec. Killingly, Conn., 31-
166.) Lyman Henry, as administrator of Francis Henry's estate, on
Feb. 4, 1842, with Charity Henry, the widow, quitclaimed all rights to
this land, "it being the same which Francis Henry conveyed by deed
of mortgage to sd. John Henry, by deed dated March 6, 1840."
{Ihid., 32-119.) The next day, John sold this land to Harris
Burlingame. (Ibid., 32-120.) By the will of his grandmother, Elizabeth
(Anderson) Henry, John was to share equally with his brother Robert
Henry, after his father's death, the land given to said Elizabeth by
her father, John Anderson. On April 1, 1843, John Henry, "of
Killingly," sold land to Abraham Burlingame, for a particular
description of which, the deed referred to "deed from John Anderson
to Elizabeth Henry, dated June 24, 1778." (Ibid., 33-32.) This may
have been a mortgage, as on March 24, 1844, John Henry
quitclaimed all right to 50 acres of land, to Jeremiah Hall, the town
line between Killingly and Sterling being one of the bounds. (Ibid.,
33-199) The following is the record, so far ascertained, of the
children of John* and Amy (French) Henry, but the order of their
birth is not known: — 1. Polly, 5 m. Sept. 8, 1834, in Killingly, Conn.,
William A. Law. (Town Rec. Killingly, Conn.) Children: Alfreds Law,
Dallas^ Law, Helen^ Law who m. Bray, and lives in 111. One of this
family represented Illinois in the U. S. Senate. 2. John.
The Henry Genealogy 139 3. Eliza, m. Christopher Taylor;
has a son living in Quincy, 111. 4. Lyman, m. Mar. 10, 1840, in
Killingly, Conn., Philura Park, of Brooklyn, Conn.; (Town Rec. Killingly,
Conn.) Had a son Marcus Lyman^ Henry, and perhaps others. 5.
Robert. A Robert Henry was living in Spencer, Mass., in 1886. 6.
George R., b. Oct. 24, 1824, in Killingly, Conn.; d. June 22, 1900, in
Norwich, Conn.; m. (1) Sept. 8, 1851, in Plainfield, Conn., Emeline E.
Wood, of Brookfield, Mass., who d. in about a year, s. p., and George
m. (2) Sarah Candace Sayles, b. 1829, in SterUng, Conn., dau. of
Archa and Clarissa (Hall) Sayles, of Sterling, Conn. Mrs. Henry is
Uving, (June, 1914) in Norwich, Conn., a fine upright character,
admired and respected by all who know her. Children of George
Richmond and Sarah Candace (Sayles) Henry, b. in Norwich, Conn.:
— 1. Arthur Eugene,^ b. Aug. 20, 1857, m. Feb. 6, 1898, in
Norwich, Annie T. Hartigan, b. July 10, 1857, in Mansfield, Conn.;
res. Norwich; they have one child, Martha Irene? Henry, b. Mar. 11,
1899, in Norwich. 2. Susan Angeline, b. Oct. 15, 1868; m. 1899,
Howard Mansir; res. Norwich; one child, Charles Howard' Mansir, b.
Apr. 26, 1906, in Norwich. 3. Charles Edward, b. Dec. 24, 1869; lives
with his mother in Norwich; unm. 7. WiUiam, had three children:
Charles,^ living (1914) in Spencer, Mass.; George,^ went to the Civil
War, and d. at Roanoke Island, Va.; and Maryfi 8. Amy, m. Harvey
Sayles, son of Archa and Clarissa (Hall) Sayles, brother to Sarah C.
(Sayles) Henry. Children: Alberts Sayles, Welcomed Sayles, Alcotifi
Sayles, and Francis^ Sayles. (The record of the family of John and
Amy (French) Sayles, except the few items on town records, was
given by Mrs. George R. Henry). ii. Robert inherited equally with his
brother John, the land given by the great-grandfather, John
Anderson, to his daughter Elizabeth (Anderson) Henry; but did not
come into possession until after the death of his father, Francis
Henry, in 1852. Robert was living in Brooklyn, Conn., in 1842, when
he purchased land in Killingly, from his brother William. (Land Rec.
Killingly, 32-150.) On June 18, 1842, Lyman Henry, as administrator
of the estate of Francis Henry, and Charity Henry, widow, sold land
in Killingly, sd. land bounded westerly "by land of Robert and John
Henry."
140 The Henry Genealogy {Ibid., 32-252.) In 1843, he was
again in Killingly, or else it was his nephew Robert, iii. William
received a legacy of five dollars, by his grandmother's will, 1819. He
was in Killingly, February, 1836, when he received by deed from his
father, Francis Henry, eleven acres of land in Killingly; on March 17,
1842, William Henry "of Pomfret, Conn.," sold to "my brother Robert
Henry of Brooklyn," land "the same conveyed to me by my father
Francis Henry by deed dated Feb. 29, 1836." {Ibid,, 32-150.) JOHN
HENRY OF PROVIDENCE. John Henry, "Innholder, of Providence," R.
I., bought land in Providence, on January 12, 1736, from William
Westcott. (Land Rec. Providence, lOA-4). He sold this tract on
January 30, 1744, his wife Elizabeth signing the deed as required by
Rhode Island law. {Ibid., lOB-171). On Sept. 6, 1738, he, then called
"yeoman," purchased a larger tract "in the propriety of Pautuxett, on
the west side of Pauchaset River;" the name then being spelled
"Hennery" and "Henery." {Ibid., lOA-249.) On April 14, 1746, John
Henry, "yeoman," sold part of this land to his son William Henry, of
Providence, stating that it is "part of my homestead farm where I
now dwell and lies a little eastward of my dwelling house . . .
bounded northerly by a brook commonly called Sedar Swamp
Brook," etc.; this deed was not recorded till July 31, 1758. {Ibid., 16-
4). The rest of this farm was left by will to his two sons, William and
Samuel. On June 13, 1750, he purchased of John Stone, about 100
acres of land situated "about six and a half miles westerly from the
salt water harbor in said Providence;" this land adjoined his home
farm, and Pauchesset River and Cedar Brook Swamp may still be
found on the map, and lay in that part of Providence which, in 1759,
was set off as the town of Johnston, R. I. This tract he left by will, to
his two sons, James and John Henry. He died December 4, 1753, as
stated in the return of his inventory. The will of "John Henry of
Providence, R. I.," was dated April 1, 1752; he leaves
The Henry Genealogy 141 "To wife Elizabeth Henry, the
best room in the dweUing house . . . one third of the homestead
farm during her widowhood . . . but if she marries again she is to be
fully quit of the house and farm . . . she also to have the indoor
household goods .... "To my two sons James Henry and John Henry .
. . the land I bought of John Stone, to be equally divided between
them, they paying the money for which sd farm is now mortgaged to
the Colony, said land containing by estimation 100 acres. "To my two
sons William Henry and Samuel Henry, all my homestead farm where
I now dwell, to be equally divided between them, they paying the
money for which sd farm is mortgaged, my other debts and a small
legacy to their sister hereinafter mentioned. "To my daughter
Ehzabeth Mackgonegil £100, to be paid by my two sons William and
Samuel, who are appointed executors. (Signed) John Henry." Ezekiel
Warner ] Sylvanus Relph [ Nathan Tiler J At a Town Council held at
Providence, R. I., January 15, 1754, the above will was proved.
"Whereas John Henry of Providence, County Providence, Colony of
Rhode Island, departed this Ufe the 4th day of December last, and
the testator did name and appoint his two sons William and Samuel
Henry joint executors, administration was committed to them. "The
inventory of Mr. John Henry late of Providence deceased who
departed this life the 4th day of December AD 1753, prized at
Providence, January 5, 1754;" total amount, £1180-14. (Probate
Rec. Providence, R. I., Vol. 5, page 1 ei seq.) While no positive
connection has so far been proved between John Henry of
Providence and Francis Henry of Warwick, both of Rhode Island, yet
an acquaintance at least is established from the fact that James
Henry, son of John, and Francis Henry, each had a child baptized
May 31, 1745, at Providence, by the minister of the First
Presbyterian Church of Boston, Mass., as appears by the church
records.
142 The Henry Genealogy Children of John> and Elizabeth
Henry: — 1. i, Elizabeth,* m. James McGonegal. 2. ii. William, m.
Prudence, . 3. iii. James, m. Hannah McKness. 4. iv. John, m. Lydia .
5. V, Samuel. No. 1. Elizabeth » Henry (John^) married Oct. 28,
1742, James McGonegal, son of James McGonegal, Sr., of
Voluntown, Conn. "Married . . . 1742, Oct. 28, James McGonegal of
Voluntown & Eliza Henry of Providence." (Vital Rec, R. I., Vol. 2 and
3, Providence, p. 125.) "James Mcgunegall Senr of Voluntown,
Conn., to James Mcgunegall Junr of same Voluntown . . . land on
side of the path called the Greenwich old road," Mar. 12, 1740/1.
(Land Rec. Voluntown, Conn., 2-290.) The record of the marriage
and births of children are given in Vol. 1, of Voluntown records.
"James Macgonegal Junr & Elizabeth Henry were Lawfully joined in
Marriage by the Rev. Mr. Cotton, Minister of the Gospel, at
Providence October ye 27th day 1742." Children of James, Jr. and
Elizabeth (Henry) McGonegal, "Born in Voluntown": — i. Henry»
McGonegal, b. Sept. 26, 1743. ii. Mary McGonegal, b. Oct. 27, 1745.
iii. Elizabeth McGonegal, b. July 3, 1746. iv. William McGonegal, b.
Apr. 28, 1750; d. Oct. 13, 1754. V. Ann McGonegal, b. Apr. 23, 1752.
vi. Hannah McGonegal, b. Apr. 15, 1755. Some of the McGonegals,
perhaps not this particular family, went to Hillsdale, Columbia Co.,
New York. No. 2. William' Henry (John^) "husbandman", of
Providence, R. L, for £300, purchased of his father, John Henry, part
of the latter's home farm in Providence, (Land Rec. 16-4), about
forty acres; this lay in what is now Johnston, R. I. This was on April
14, 1746, and was probably about the time of his marriage, for in
October, 1750, he had a son WilHam baptized.
The Henry Genealogy 143 By his father's will, he inherited
half of the homestead farm, and on March 3, 1766, "Whereas John
Henry of Providence dec'd in his last will made April 1, 1752, did
devise to his two sons William Henry and Samuel Henry, all his
homestead farm lying and being in that part of Providence now
called Johnston, containing about 90 acres, to be equally divided
between them, now said William and Samuel Henry, both of
Johnston, do in obedience to our honored father's last will, make an
agreement to divide said land." WilUam agreed to take the western
part, all the land on southward side of certain bounds and to the
westward of Cedar Swamp Brook, with one half of dwelling house,
barn, etc., while Samuel agreed to take the east part, eastward of
the brook, with half the house, etc. This deed was acknowledged
Jan. 13, 1770, but not recorded till Feb. 8, 1778. Henry Harris and
Mary Henry were the witnesses. (Land Rec. Johnston, R. I., 1-372.)
On July 8, 1771, William Henry of Johnston, R. I., "for 580 good
Spanish milled dollars," sold to Henry Randall of Cranston, R. I., "all
my homestead farm whereon I now dwell in said Johnston," one half
the dwelling house, barn, etc. "bounded on land sd Randall
purchased of Samuel Henry" . . . and other bounds . . . "according to
a deed of partition dated March 3, 1766," and Prudence Henry, wife
of said William Henry, reUnquishes rights of dower. (Land Rec.
Johnston) This William Henry went to Providence to live, and on July
28, 1772, "being in low health," he made his will, giving all his estate
to his wife Prudence, to support herseK and their three young
children, and "if the expected child lives, it is to share with the
others." The will was proved August 21, 1772, so William died
between July 28, and Aug. 21, 1772. (Probate Rec. Providence, R. I.,
6-46). The name of but one of the children is found: — i. William,'
bapt. Oct. 7, 1750, at Providence, R. I. No. 3. James' Henry (John^)
by the will of his father, inherited equally with his brother John
Henry, the farm bought of John Stone, and on July 21, 1757, he
bought of his brother "John Henry of Smithfield, R. I.," the other half
of the
144 The Henry Genealogy farm. On Feb. 13, 1761, "James
Hemy of Johnston, R. I., yeoman," for £3600, sold to Henry Randall
of Cranston, R. I., land with dwelling house, "situated about 63^
miles from the salt water harbor of Providence, . . . containing about
100 acres . . . and is the same place which my late father John
Henry purchased of John Stone as by a deed dated 13 June, 1750,
may appear . . . sd land lies on both sides of the highway . . . the
land on southerly side of the highway is bounded partly on sd
highway and partly on the dividing line betwixt the town of
Providence and Pawtuxet, easterly taking the greater part of the
brook called Cedar Swamp Brook, . . . and southerly on the farm of
William Henry and Samuel Henry," etc. (Land Rec. Johnston, R. I., 1-
88). James Henry then disappears from the records of this vicinity,
but in 1771, a James Henry, "of Killingly, Conn.," where Francis
Henry's sons were living, buys land in Voluntown, Conn., in the
northwest corner of the town, near the town hue; this was the part
of Voluntown which in 1794, was set off as the present town of
Sterling, Conn. The line between Plainfield and Voluntown was much
disputed, so when James sold on April 11, 1772, a small piece of
land to Ebenezer Kingsbury, whose land adjoined his, he is called "of
Plainfield;" this was at the north end of Plainfield, near Plainfield old
town line and ran southerly in the old town line. (Plainfield, Conn.,
Land Rec. 6-28.) On Feb. 19, 1782, James Henry of Voluntown, sold
40 acres of land in the northwest corner of Voluntown, highways
excepted. (Voluntown Land Rec. 6-228.) On Apr. 2, 1784, he sold
another piece of about 16 acres, reserving about a quarter of an
acre with a spring, and excepting the road as now laid out to
Plainfield line. The will of "James Henry of Voluntown, County
Windham," Conn., was made Oct. 27, 1791, he then "being in
perfect health;" he evidently continued in good health for some
time, as the will was not proved till 1812. He leaves to his wife
Nancy, the use and improvement of one third of the estate, etc. To
son WiUiam Henry, 5 shillings. To son John Henry, 5 shillings. To
daughter Jean Hill, 5 shillings. To daughter Mary Kinsle, 5 shillings.
To daughter Martha Henry, 5 shillings. \
The Henry Genealogy 145 To daughter Elizabeth Cutler, 5
shillings. To son Francis Henry, 12 shillings. To son James Henry, all
my farm, etc. and he to be executor. John Henry ) John Williams, Jr.
[ Witnesses. Francis Henry J State of New York, 1 September 19,
1812. County Otsego J "Personally appeared before me Charles
Averill, Esq. J. P., Francis Henry and being duly sworn . . . declared
he saw James Henry the within named Testator make his Plainfield,
Conn., Feb. 19, 1812, N. B. John Henry is now dead and John
Williams, Jr., is gone to parts unknown and is supposed to be dead.
(Probate Rec. Plainfield, Conn., 12-418.) The inventory of the estate
was taken at Sterling, Conn., Nov. 9, 1809, and accepted Jan. 2,
1810; it included 100 acres of land, and the total amount was
$1432.09. Sterling, Feb. 22, 1810. "Agreeable to an order of the
Court of Probate we this day distributed to Anna Henry, widow of
James Henry, late of Sterling, dec'd, one equal third of her husband's
estate," etc. (Ibid., 12-480.) Note that James in his will, called her
"Nancy," but in the probate record, she is called "Anna." In the
"Census of U. S. A., 1790, Heads of Families, Connecticut," James
Henry of Voluntown, had a family of three males over 16, and three
females, (p. 152.) It is considered here that this James Henry was
the one who married April 25, 1742, in Providence, R. I., Hannah
McKness, and who was made a freeman of Providence in May, 1756.
(Colonial Rec. R. I., 5-487.) Other instances have been known where
"Hannah" was also called "Nancy," "Ann" or "Anna;" he may have
had a second wife. Children of James ' and Hannah (McKness)
Henry: — i. William', bapt. Mar. 20, 1743. ii. Mary, bapt. May 31,
1745, at Providence, R. I., by the minister of the First Presbyterian
Church of Boston, Mass.; m. Kinsle.
146 The Henry Genealogy iii. Margaret, bapt. March 15,
1747. iv. Elizabeth, bapt. Oct. 24, 1749; m. Cutler. V. Jean, m. Hill. vi.
John. vii. Martha. viii. Francis. ix. "James Henry, Jr., of Voluntown &
Hannahritter Waterman of Coventry, R.I., were married November 1,
1792, by Rev. Israel Day, Pastor of a Church in Killingly, (Conn.)" By
his father's will, he inherited all the home farm in Sterling. His
marriage and the births of his children are recorded on Sterling
records, that town having been set ofif from Voluntown in 1794.
Children of James, Jr., & "Hannahritter" (Waterman) Henry : — 1.
Ichabod*, b. Nov. 14, 1793; m. Mehitabel Mordock, and served in
the War of 1812, from Stonington, Conn. 2. William, b. Jan. 23,
1796. 3. Seley (?), b. Dec. 14, 1798, "in Sterling."* 4. James, b. Oct.
29, 1799, "in Sterling." 5. John, b. June 12, 1801, "in Sterling." 6.
Francis, b. Apr. 12, 1803, "in Sterling." 7. Hannahritta, b. May 12,
1806, "in Sterling." No. 4. John 2 Henry, (John^) by the will of his
father, inherited half of the farm bought of John Stone; on July 21,
1757, "John Henry of Smithfield, County Providence, R. I.,"
husbandman, for £330, sold to James Henry of Providence, R. I.,
"one half of a certain farm in the township of Providence; the whole
farm contains 100 acres and was given equally to sd James and
John Henry by the last will of their honored father, John Henry late
of Providence, dec'd. and is the same our father purchased of John
Stone" , . . The deed was signed by John Henry and his wife, Lydia
Henry (Land Rec. Providence, R. I., 14-327). He does not appear, so
far as noted, on the Smithfield records, and disappears, unless he is
the John Henry who was living in Voluntown, Conn., in 1790, with a
family of three males over, and one under, sixteen, four females and
one other free person. This John may, however, be the son of
James, mentioned in his will. * Sterling, Conn., Rec. Vol. 1, p. 96.
The Henry Genealogy 147 No. 5. Samuel" Henry, (John^)
by his father's will, had half of a farm as told in the record of his
brother William; William sold his part on July 8, 1771, to Henry
Randall of Cranston, R. I., and on January 8, 1778, "Samuel Henry of
Johnston," R. I., yeoman, sold his part to this same Henry Randall,
reference being made to the deed of partition; and Elizabeth Henry,
"mother of sd Samuel Henry," reUnquished rights of dower. (Land
Rec. Johnston, R. I., 1-373.) Samuel was made freeman of Johnston,
May, 1760. (Colonial Rec. R. I., 6-248.) The following are supposed
to be children of Samuel Henry: — i. Samuel,' b. before 1763;
bought land with his "brother Thomas Henry." (Land Rec, Scituate,
R. I., 8-24 & 10-66.) ii. Thomas, b. before 1763; m. Anna Bates,
daughter of Reuben Bates of Scituate, R. L; mentioned in his will.
Children of Thomas and Anna (Bates) Henry, order of birth not
known : — 1. William.4 2. Thomas, m. June 8, 1824, Eliza Rhodes,
dau. of Capt. Richard Rhodes of Scituate, R. I., and had: 1. Thomas
R.,^ m. Apr. 15, 1847, Celinda E. Henry, dau. of Sylvester (?) Henry;
had Mart Ffi and Edward R.^: 2. Charles M.,^ had Mary Eliza^ and
Herbert L.^: 3. James F.^: 4. George R.^ 3. Sylvanus, m. (1) Lydia ,
who d. Nov. 14, 1833, and he m. (2) Hannah M. , who was living in
North Kingston, R. I., in 1852. Children: Ann Frances,^ m. John
Chadsey; and probably others. 4. George, b. 1795, in Scituate, R. I.,
m. Ellen Colgrove. He d. in Scituate, Mar. 15, 1883. Child: William T.,
b. Sept. 18, 1823, in Scituate; d. there Dec. 11, 1897; and perhaps
others. iii. Caleb, b. before 1760, m. Hannah Sheldon, dau. of
Nicholas Sheldon of Cranston, R. I. Children of Caleb and Hannah
(Sheldon) Henry: — 1. Caleb,* Jr., b. 1782; d. Mar. 10, 1864; m.
Mary , b. 1782; d. Mar. 25, 1873, "in 91st year." 2. Stephen, m. Lydia
. 3. William. 4. Mahala, m. Feb. 10, 1811, Artemus Stone of
Coventry. 5. Candace, m. Aug. 10, 1817, Wm. Stone, 3rd. 6. Celia.
148 The Henry Genealogy 7. Hannah, m. Benjamin
Burlingame. 8. Rhobe. 9. John, sold his share of his grandfather
Nicholas Sheldon's estate, in 1804, to his brother, Stephen Henry. iv.
Benjamin, "son of Samuel," m. June 30, 1782, he being called "of
Smithfield," Ruth Steere, in Gloucester, R. I., dau. of John Steer.
(Vital Rec. R. I., Vol. 2 and 3, Providence Co., Gloucester, p. 20.) He
was living in Gloucester, R. I., in 1790, with a family of one male
over, and one under, sixteen, and seven females. SAMUEL HENRY OF
JOHNSTON, RHODE ISLAND, AND CANTERBURY, CONN. Samuel
Henry, "of Johnston, County Providence, R. L," on May 6, 1771,
bought a large tract of land in the northwesterly part of Canterbury,
County Windham, Conn., from Phinehas and Zerviah (Bushnell)
Holden. (Land Rec. Canterbury, Conn., 9-95.) He immediately came
to Canterbury to live, and at the Lexington Alarm, April 19, 1775, he
went with a company from Canterbury. ("Conn. Men in War of
Revolution," p. 6.) On Mar. 11, 1776, he sold part of the land to Esek
Saunders, of Smithfield, Co. Providence, R. I., this land being
bounded on one side by land of Alexander Gordon. (Land Rec. 9-
127.) On Apr. 16, 1785, he sold land in Westminster Society, in
western part of Canterbury, (9-452), and on Feb. 12, 1786, "Jerusha
Henry, wife of Capt. Samuel Henry," was admitted to the Church of
Westminster Parish. When the Census of 1790 was taken, Samuel
Henry appears as head of a family, consisting of one male over
sixteen, one under sixteen, and four females, residing in Canterbury,
(p. 142.) He made purchases of land at various times, and in 1796,
he sold some land, and again in February, 1800. On April 4, 1804,
Samuel Henry of Canterbury, for love to son, Samuel Henry, Jr., of
same place, deeded him a farm in Canterbury, "sd land lying on the
east and west sides of the highway leading from Westminster
meeting house to Alexander Gordon's" with a dwelling house, two
barns and other small buildings, the deed being acknowledged by
Capt. Samuel Henry. (12-240.)
COLONEL FRANCIS HENRY Member of the New York
Assembly from Otsego County in 1 798
Tlie Henry Genealogy 149 On the same day, an indenture
was made between Samuel Henry, Jr., on one part, and Samuel
Henry and Jerusha Henry, his wife, on the other part, that whereas
Samuel Henry, Jr., had this day received two lots of land in
Canterbury, one of three acres lying on the highway leading from
Westminster Meetinghouse to Alexander Gordon's, and the other of
53 acres, "being lands deeded to the Leasor this day by my honored
father Capt. Samuel Henry," Samuel Jr., leases to his father and
mother, Samuel and Jerusha Henry, this land during the term of
theu* hves, or that of the longest Uver. The indenture was signed by
Capt. Samuel Henry and Samuel Henrj^', Jr. (14-1.) On Nov. 23,
1809, Capt. Samuel Henry gave a quitclaim deed to son Samuel
Henry, Jr., and the son agreed to furnish his parents with a certain
amount of Indian corn, etc., yearly, beginning with the year 1809.
(14-272, 273.) At a Court of Probate held for the District of
Plainfield, November 26, 1809, administration was granted to
Samuel Henry of Canterbury, on the estate of Samuel Henry, late of
Canterbury, deceased, with James Gordon of Plainfield, Conn., as
surety. (Probate Rec. Plainfield, Conn., 12-332.) At a Court of
Probate held July 2, 1810, Rufus Johnson of Canterbury, was chosen
guardian for Alexander Henry, "a minor of the town of Canterbury, in
his 17th year." (/bid, 12-346.) While the connection has not yet been
proved between Capt. Samuel Hemy, of Johnston, R. I., later of
Canterbury, Conn., and Col. Francis Henry, of Otsego County, N. Y.,
yet is well to remark here that Col. Francis Henry came from Otsego
County to Windham County, Connecticut, and in Scotland Parish,
(now Scotland, Conn.,) the parish next west of Westminster Parish
(where Capt. Samuel Henry lived,) and there married, Feb. 5, 1797,
Ehza* Hebard, (Nathan, ^Ebenezer, 3 Robert, 2 Roberto b. Scotland,
Conn., May 17, 1767. She was admitted to Scotland Parish in Jan.,
1799, and had a daughter Nancy, baptized there on the 27th of the
same month. What brought Col. Francis from New York to this
section, unless it was to visit relatives? Capt. Samuel Henry was
probably buried in the Westminster Burying-ground, where (the
writer knows) Capt. Alexander Gordon hes.
1^^ The Henry Genealogy Children of Capt. Samuel and
Jerusha Henry: — i. Samuel, perhaps he was the Samuel Henry who
m. Abigail Spalding, b. Mar. 28, 1778, in Ashford, Conn.; d. Nov. 28,
1819, in Bloomington, New Jersey, daughter of Josiah and Priscilla
(Paine) Spalding. This Josiah Spalding was born in Plainfield, Conn.,
was a lieutenant in the War of the Revolution, and drew a pension in
Windham County, Conn. (See "Spalding Memorial," p. 143.) On May
13, 1813, Samuel Henry of Canterbury, Conn., sold 195 acres of land
in Canterbury, to Parker Morse (16-256) and the name is not again
noted for many years. ii. Alexander, "minor of the town of
Canterbury, in his 17th year," 1810, was probably also a son of Capt.
Samuel Henry.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like