100% found this document useful (2 votes)
7 views

Programming In C With Visual Stdio 2010 Lab Manual instant download

The document provides a lab manual for programming in C# using Visual Studio 2010, detailing exercises to build console and WPF applications. It includes step-by-step instructions for creating a simple console application that formats input data and displays it. Additional resources and related products are also mentioned for further learning in C and C# programming.

Uploaded by

garviayosman
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 (2 votes)
7 views

Programming In C With Visual Stdio 2010 Lab Manual instant download

The document provides a lab manual for programming in C# using Visual Studio 2010, detailing exercises to build console and WPF applications. It includes step-by-step instructions for creating a simple console application that formats input data and displays it. Additional resources and related products are also mentioned for further learning in C and C# programming.

Uploaded by

garviayosman
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/ 87

Programming In C With Visual Stdio 2010 Lab

Manual download

https://ebookbell.com/product/programming-in-c-with-visual-
stdio-2010-lab-manual-1547090

Explore and download more ebooks at ebookbell.com


Here are some recommended products that we believe you will be
interested in. You can click the link to download.

Ms 10266a Programming In C With Visual Studio 2010 Vol 1 Student


Manual

https://ebookbell.com/product/ms-10266a-programming-in-c-with-visual-
studio-2010-vol-1-student-manual-2581036

Ms Course 10266a Programming In C With Microsoft Visual Studio 2010


Trainer Edition Volume 1 Microsoft

https://ebookbell.com/product/ms-course-10266a-programming-in-c-with-
microsoft-visual-studio-2010-trainer-edition-
volume-1-microsoft-2113632

Ms Course 10266a Programming In C With Microsoft Visual Studio 2010


Trainer Edition Volume 2 Microsoft

https://ebookbell.com/product/ms-course-10266a-programming-in-c-with-
microsoft-visual-studio-2010-trainer-edition-
volume-2-microsoft-2113634

Programming In C With Microsoft Visual Studio 2010 Student Manual

https://ebookbell.com/product/programming-in-c-with-microsoft-visual-
studio-2010-student-manual-2581034
Network Programming In Net With C And Visual Basic Net Fiach Reid

https://ebookbell.com/product/network-programming-in-net-with-c-and-
visual-basic-net-fiach-reid-4110194

Parallel Programming In C With Mpi And Openmp Michael Jay Quinn

https://ebookbell.com/product/parallel-programming-in-c-with-mpi-and-
openmp-michael-jay-quinn-2438258

Functional Programming In C With Categories 221 Dimitris Papadimitriou

https://ebookbell.com/product/functional-programming-in-c-with-
categories-221-dimitris-papadimitriou-46704096

An Introduction To Objectoriented Programming In C With Applications


In Computer Graphics 2nd Edition Graham M Seed Beng

https://ebookbell.com/product/an-introduction-to-objectoriented-
programming-in-c-with-applications-in-computer-graphics-2nd-edition-
graham-m-seed-beng-4198618

Handson Network Programming With C Learn Socket Programming In C And


Write Secure And Optimized Network Code 1st Edition Lewis Van Winkle

https://ebookbell.com/product/handson-network-programming-with-c-
learn-socket-programming-in-c-and-write-secure-and-optimized-network-
code-1st-edition-lewis-van-winkle-55536756
OFFICIAL MICROSOFT LEARNING PRODUCT

10266A
Programming in C# with
Microsoft® Visual Studio® 2010
ii Programming in C# with Microsoft® Visual Studio® 2010

Information in this document, including URL and other Internet Web site references, is subject to
change without notice. Unless otherwise noted, the example companies, organizations, products,
domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious,
and no association with any real company, organization, product, domain name, e-mail address,
logo, person, place or event is intended or should be inferred. Complying with all applicable
copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part
of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted
in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for
any purpose, without the express written permission of Microsoft Corporation.

Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual
property rights covering subject matter in this document. Except as expressly provided in any
written license agreement from Microsoft, the furnishing of this document does not give you any
license to these patents, trademarks, copyrights, or other intellectual property.

The names of manufacturers, products, or URLs are provided for informational purposes only and
Microsoft makes no representations and warranties, either expressed, implied, or statutory,
regarding these manufacturers or the use of the products with any Microsoft technologies. The
inclusion of a manufacturer or product does not imply endorsement of Microsoft of the
manufacturer or product. Links may be provided to third party sites. Such sites are not under the
control of Microsoft and Microsoft is not responsible for the contents of any linked site or any link
contained in a linked site, or any changes or updates to such sites. Microsoft is not responsible for
webcasting or any other form of transmission received from any linked site. Microsoft is providing
these links to you only as a convenience, and the inclusion of any link does not imply endorsement
of Microsoft of the site or the products contained therein.
© 2010 Microsoft Corporation. All rights reserved.

Microsoft, and Windows are either registered trademarks or trademarks of Microsoft Corporation in
the United States and/or other countries.
All other trademarks are property of their respective owners.

Product Number: 10266A

Part Number: 01918


Released: 09/2010
Lab Instructions: Introducing C# and the .NET Framework 1

Module 1
Lab Instructions: Introducing C# and the .NET
Framework
Contents:
Exercise 1: Building a Simple Console Application 5
Exercise 2: Building a WPF Application 10
Exercise 3: Verifying the Application 14
Exercise 4: Generating Documentation for an Application 17
2 Lab Instructions: Introducing C# and the .NET Framework

Lab: Introducing C# and the .NET Framework

Objectives
After completing this lab, you will be able to:
• Create, build, and run a simple console application by using Visual Studio
2010 and C# 4.0.
• Create, build, and run a basic WPF application by using Visual Studio 2010.
• Use the Visual Studio 2010 debugger to set breakpoints, step through code,
and examine the values of variables.
• Generate documentation for an application.

Introduction
In this lab, you will create simple console and WPF solutions to get started with
using Visual Studio 2010 and C#. You will also configure projects, use code-editing
features, and create comments. You will become familiar with the debugger
Lab Instructions: Introducing C# and the .NET Framework 3

interface. You will compile, run, and use the debugger to step through a program.
Finally, you will generate documentation for an application.

Lab Setup
For this lab, you will use the available virtual machine environment. Before you
begin the lab, you must:

• Start the 10266A-GEN-DEV virtual machine, and then log on by using the
following credentials:
• User name: Student
• Password: Pa$$w0rd

Note: Step-by-step instructions for completing the labs in this course are available in the
lab answer keys provided. Completed, working code is available in the Solution folders
under the Labfiles folder for each lab exercise on the virtual machine.
4 Lab Instructions: Introducing C# and the .NET Framework

Lab Scenario

Fabrikam, Inc. produces a range of highly sensitive measuring devices that can
repeatedly measure objects and capture data. You have been asked to write a C#
application to read a small set of input data that a measuring device has generated,
format this data to make it more readable, and then display the formatted results.
The data consists of text data that contains pairs of numbers representing x-
coordinates and y-coordinates of the location of an object. Each line of text
contains one set of coordinates. The following code example resembles a typical
dataset.

23.8976,12.3218
25.7639,11.9463
24.8293,12.2134

You have been asked to format the data like the following code example.

x:23.8976 y:12.3218
x:25.7639 y:11.9463
x:24.8293 y:12.2134
Lab Instructions: Introducing C# and the .NET Framework 5

Exercise 1: Building a Simple Console Application


In this exercise, you will initially build and test the application by using console
I/O. You will then use I/O redirection to run the application by using data that is
held in a file and verify that the results are as expected.

Scenario
As a prototype, you have decided to implement a console application to read input
from the keyboard and format it. When you are happy that your code is working,
you will then run the code and redirect input to come from a file that contains the
data that you want to format.
The main tasks for this exercise are as follows:
1. Create a new Console Application project.
2. Add code to read user input and write output to the console.
3. Modify the program to read and echo text until end-of-file is detected.
4. Add code to format the data and display it.
5. Test the application by using a data file.

X Task 1: Create a new Console Application project


1. Log on to the 10266A-GEN-DEV machine as Student with the password
Pa$$w0rd.
2. Open Visual Studio 2010.
3. Create a new console application project called ConsoleApplication in the
E:\Labfiles\Lab 1\Ex1\Starter folder.

X Task 2: Add code to read user input and write output to the console
1. In the Main method, add the statements shown in bold in the following code
example, which read a line of text from the keyboard and store it in a string
variable called line.

static void Main(string[] args)

{
// Buffer to hold a line as it is read in
6 Lab Instructions: Introducing C# and the .NET Framework

string line;
// Read a line of text from the keyboard
line = Console.ReadLine();
}

This code uses the Console.ReadLine method to read the input, and includes
comments with each line of code that indicates its purpose.
2. Add the statement and comment shown in bold in the following code
example, which echo the text back to the console by using the
Console.WriteLine method.

static void Main(string[] args)


{
// Buffer to hold a line as it is read in
string line;

// Read a line of text from the keyboard


line = Console.ReadLine();

// Write the results out to the console window


Console.WriteLine(line);
}

3. Build the application.


4. Run the application and verify that it works as expected. You should be able to
enter a line of text and see that line echoed to the console.

X Task 3: Modify the program to read and echo text until end-of-file is
detected
1. In the Main method, modify the statement and comment shown in bold in the
following code example, which read a line of text from the keyboard.

static void Main(string[] args)


{
// Buffer to hold a line as it is read in
string line;

// Loop until no more input (Ctrl-Z in a console, or end-of-file)


while ((line = Console.ReadLine()) != null)
{
Lab Instructions: Introducing C# and the .NET Framework 7

}
// Write the results out to the console window
Console.WriteLine(line);
}

This code incorporates the statement into a while loop that repeatedly reads
text from the keyboard until the Console.ReadLine method returns a null
value (this happens when the Console.ReadLine method detects the end of a
file, or the user types CTRL+Z).
2. Move the Console.WriteLine statement into the body of the while loop as
shown in bold in the following code example. This statement echoes each line
of text that the user has entered.

static void Main(string[] args)


{
// Buffer to hold a line as it is read in
string line;

// Loop until no more input (Ctrl-Z in a console, or end-of-file)


while ((line = Console.ReadLine()) != null)
{
// Write the results out to the console window
Console.WriteLine(line);
}
}

3. Build the application.


4. Run the application and verify that it works as expected. You should be able to
repeatedly enter lines of text and see those lines echoed to the console. The
application should only stop when you press CTRL+Z.

X Task 4: Add code to format the data and display it


1. In the body of the while loop, add the statement and comment shown in bold
before the Console.WriteLine statement in the following code example.

static void Main(string[] args)


{
// Buffer to hold a line as it is read in
string line;

// Loop until no more input (Ctrl-Z in a console, or end-of-file)


while ((line = Console.ReadLine()) != null)
{
8 Lab Instructions: Introducing C# and the .NET Framework

// Format the data


line = line.Replace(",", " y:");

// Write the results out to the console window


Console.WriteLine(line);
}
}

This code replaces each occurrence of the comma character, "," in the input
read from the keyboard and replaces it with the text " y:". It uses the Replace
method of the line string variable. The code then assigns the result back to the
line variable.
2. Add the statement shown in bold in the following code example to the code in
the body of the while loop.

static void Main(string[] args)


{
// Buffer to hold a line as it is read in
string line;

// Loop until no more input (Ctrl-Z in a console, or end-of-file)


while ((line = Console.ReadLine()) != null)
{
// Format the data
line = line.Replace(",", " y:");
line = "x:" + line;

// Write the results out to the console window


Console.WriteLine(line);
}
}

This code adds the prefix "x:" to the line variable by using the string
concatenation operator, +, before the Console.WriteLine statement. The code
then assigns the result back to the line variable.
3. Build the application.
4. Run the application and verify that it works as expected.
The application expects input that looks like the following code example.

23.54367,25.6789

Your code should format the output to look like the following code example.
Lab Instructions: Introducing C# and the .NET Framework 9

x:23.54367 y:25.6789

X Task 5: Test the application by using a data file


1. Perform the following steps to add the DataFile.txt file that contains the
sample data to the project. This file is located in the E:\Labfiles\Lab 1\Ex1
\Starter folder. These steps specify that the file should be copied to the folder
that holds the compiled application when the project is built:
a. In Solution Explorer, right-click the ConsoleApplication project, point to
Add, and then click Existing Item.
b. In the Add Existing Item – ConsoleApplication dialog box, move to the
E:\Labfiles\Lab 1\Ex1\Starter folder, select All Files (*.*) in the drop-
down list box adjacent to the File name text box, click DataFile.txt, and
then click Add.
c. In Solution Explorer, select DataFile.txt. In the Properties window,
change the Build Action property to None, and then change the Copy to
Output property to Copy Always.
2. Rebuild the application.
3. Open a Visual Studio Command Prompt window, and then move to the
E:\Labfiles\Lab 1\Ex1\Starter\ConsoleApplication\bin\Debug folder.
4. Run the ConsoleApplication application and redirect input to come from
DataFile.txt.
Verify that the output that is generated looks like the following code example.

x:23.8976 y:12.3218
x:25.7639 y:11.9463
x:24.8293 y:12.2134

In the Command Prompt window, type the command in the following code
example.

ConsoleApplication < DataFile.txt

5. Close the Command Prompt window, and then return to Visual Studio.
6. Modify the project properties to redirect input from the DataFile.txt file when
the project is run by using Visual Studio.
7. Run the application in Debug mode from Visual Studio.
10 Lab Instructions: Introducing C# and the .NET Framework

The application will run, but the console window will close immediately after
the output is generated. This is because Visual Studio only prompts the user to
close the console window when a program is run without debugging. When a
program is run in Debug mode, Visual Studio automatically closes the console
window as soon as the program finishes.
8. Set a breakpoint on the closing brace at the end of the Main method.
9. Run the application again in Debug mode. Verify that the output that is
generated is the same as the output that is generated when the program runs
from the command line.

Exercise 2: Building a WPF Application


In this exercise, you will build a simple WPF application that provides similar
functionality to the console application that you developed in Exercise 1. You will
initially test the display formatting by providing fields that the user can type data
into. When you are satisfied that the display format is correct, you will modify the
application to read input from the console and modify the Debug properties of the
application to redirect this input to come from the same file as before.

Scenario
You have been asked to change the application to generate the data in a more
helpful manner. The application should perform the same task as the console
application except that the output is displayed in a WPF window.
The main tasks for this exercise are as follows:
1. Create a new WPF Application project.
2. Create the user interface.
3. Add code to format the data that the user enters.
4. Modify the application to read data from a file.

X Task 1: Create a new WPF Application project


• Create a new project called WpfApplication in the E:\Labfiles\Lab 1\Ex2
\Starter folder by using the WPF Application template.

X Task 2: Create the user interface


1. Add TextBox, Button, and TextBlock controls to the MainWindow window.
Place them anywhere in the window.
Lab Instructions: Introducing C# and the .NET Framework 11

2. Using the Properties window, set the properties of each control by using the
values in the following table. Leave any other properties at their default values.

Control Property Value


TextBox Name testInput

Height 28

HorizontalAlignment Left

Margin 12,12,0,0

VerticalAlignment Top

Width 302

Button Name testButton

Content Format Data

Height 23

HorizontalAlignment Left

Margin 320,17,0,0

VerticalAlignment Top

Width 80

TextBlock Name formattedText

Height 238

HorizontalAlignment Left

Margin 14,50,0,0

Text blank

VerticalAlignment Top

Width 384
12 Lab Instructions: Introducing C# and the .NET Framework

The MainWindow window should look like the following screen shot.

X Task 3: Add code to format the data that the user enters
1. Create an event handler for the Click event of the button.
2. Add the code shown in bold in the following code example to the event-
handler method.

private void testButton_Click(object sender, RoutedEventArgs e)


{
// Copy the contents of the TextBox into a string
string line = testInput.Text;
// Format the data in the string
line = line.Replace(",", " y:");
line = "x:" + line;

// Store the results in the TextBlock


formattedText.Text = line;
}
Lab Instructions: Introducing C# and the .NET Framework 13

This code reads the contents of the TextBox control into a string variable
called line, formats this string in the same way as the console application in
Exercise 1, and then displays the formatted result in the TextBlock control.
Notice that you can access the contents of a TextBox control and a TextBlock
control by using the Text property.
3. Build the solution, and then correct any errors.
4. Run the application and verify that it works in a similar manner to the original
console application in Exercise 1.
5. Close the MainWindow window, and then return to Visual Studio.

X Task 4: Modify the application to read data from a file


1. Create an event handler for the Window_Loaded event. This event occurs
when the window is about to be displayed, just after the application has
started up.
2. In the event-handler method, add the code shown in bold in the following
code example.

private void Window_Loaded(object sender, RoutedEventArgs e)


{
// Buffer to hold a line read from the file on standard input
string line;

// Loop until the end of the file


while ((line = Console.ReadLine()) != null)
{
// Format the data in the buffer
line = line.Replace(",", " y:");
line = "x:" + line + "\n";

// Put the results into the TextBlock


formattedText.Text += line;
}
}

This code reads text from the standard input, formats it in the same manner as
Exercise 1, and then appends the results to the end of the TextBlock control.
It continues to read all text from the standard input until end-of-file is
detected.
Notice that you can use the += operator to append data to the Text property of
a TextBlock control, and you can add the newline character ("\n") between
14 Lab Instructions: Introducing C# and the .NET Framework

lines for formatted output to ensure that each item appears on a new line in
the TextBlock control.
3. Perform the following steps to modify the project settings to redirect standard
input to come from the DataFile.txt file. A copy of this file is available in the
E:\Labfiles\Lab 1\Ex2\Starter folder:
a. In Solution Explorer, right-click the WpfApplication project, point to
Add, and then click Existing Item.
b. In the Add Existing Item – WpfApplication dialog box, move to the
E:\Labfiles\Lab 1\Ex2\Starter folder, select All Files (*.*) in the drop-
down list box adjacent to the File name text box, click DataFile.txt, and
then click Add.
c. In Solution Explorer, select DataFile.txt. In the Properties window,
change the Build Action property to None, and then change the Copy to
Output property to Copy Always.
d. In Solution Explorer, right-click the WpfApplication project, and then
click Properties.
e. On the Debug tab, in the Command line arguments: text box, type
< DataFile.txt
f. On the File menu, click Save All.
g. Close the WpfApplication properties window.
4. Build and run the application in Debug mode. Verify that, when the
application starts, it reads the data from DataFile.txt and displays in the
TextBlock control the results in the following code example.

x:23.8976 y:12.3218
x:25.7639 y:11.9463
x:24.8293 y:12.2134

5. Close the MainWindow window, and then return to Visual Studio.

Exercise 3: Verifying the Application


In this exercise, you will create some additional test data and use it as input to your
application. You will use the Visual Studio 2010 debugger to step through your
code and examine it as it runs.
Lab Instructions: Introducing C# and the .NET Framework 15

Scenario
You want to verify that the code for your WPF application is operating exactly as
you require. You decide to create some additional test data and use the Visual
Studio 2010 debugger to step through the application.
The main tasks for this exercise are as follows:
1. Modify the data in the DataFile.txt file.
2. Step through the application by using the Visual Studio 2010 debugger.

X Task 1: Modify the data in the DataFile.txt file


• Modify the contents of the DataFile.txt file as the following code example
shows.

1.2543,0.342
32525.7639,99811.9463
24.8293,12.2135
23.8976,12.3218
25.7639,11.9463
24.8293,12.2135

Note: There must be a blank line at the end of DataFile.txt.

X Task 2: Step through the application by using the Visual Studio 2010
debugger
1. Set a breakpoint at the start of the Window_Loaded event handler.
2. Start the application running in Debug mode.
When the application runs the Window_Loaded event handler, it reaches the
breakpoint and drops into Visual Studio. The opening brace of the method is
highlighted.
3. Step into the first statement in the Window_Loaded method that contains
executable code.
The while statement should be highlighted. This is because the statement that
declares the line variable does not contain any executable code.
16 Lab Instructions: Introducing C# and the .NET Framework

4. Examine the value of the line variable. It should be null because it has not yet
been assigned a value.
5. Step into the next statement.
The cursor moves to the opening brace at the start of the body of the while
loop.
6. Examine the value of the line variable. It should be 1.2543,0.342. This is the
text from the first line of the DataFile.txt file. The Console.ReadLine statement
in the while statement reads this text from the file.
7. Step into the next statement.
The cursor moves to the line in the following code example.

line = line.Replace(",", " y:");

8. Step into the next statement.


9. Examine the value of the line variable. It should now be 1.2543 y:0.342. This
is the result of calling the Replace method and assigning the result back to
line.
10. Step into the next statement.
11. Examine the value of the line variable. It should now be x:1.2543 y:0.342\n.
This is the result of prefixing the text "x:" to line and suffixing a newline
character.
12. Step into the next statement.
The cursor moves to the closing brace at the end of the while loop.
13. In the Immediate window, examine the value of the Text property of the
formattedText TextBlock control. It should contain the same text as the line
variable.

Note: If the Immediate window is not visible, press CTRL+ALT+I.

14. Set another breakpoint at the end of the while loop.


15. Continue the programming running for the next iteration of the while loop. It
should stop when it reaches the breakpoint at the end of the loop.
Lab Instructions: Introducing C# and the .NET Framework 17

16. Examine the value of the line variable. It should now be


x:32525.7639 y:99811.9463\n. This is the data from the second line of
DataFile.txt.
17. In the Immediate window, examine the value of the Text property of the
formattedText TextBlock control again. It should now contain the formatted
results from the first two lines of DataFile.txt.
18. Remove the breakpoint from the end of the while loop.
19. Continue the programming running. The Window_Loaded method should
now run to completion and display the MainWindow window. The TextBlock
control should contain all of the data from DataFile.txt, formatted correctly.
20. Close the MainWindow window, and then return to Visual Studio.

Exercise 4: Generating Documentation for an Application


In this exercise, you will add XML comments to your application, and use the
Sandcastle tool to generate documentation for the application.

Scenario
You must ensure that your application is fully documented so that it can be
maintained easily. You decide to add XML comments to the methods that you have
added to the WPF application, and generate a help file.
The main tasks for this exercise are as follows:
1. Open the starter project.
2. Add XML comments to the application.
3. Generate an XML comments file.
4. Generate a .chm file.

X Task 1: Open the starter project


• In Visual Studio, open the WpfApplication solution located in the
E:\Labfiles\Lab 1\Ex4\Starter folder. This solution is a working copy of the
solution from Exercise 2.

X Task 2: Add XML comments to the application


1. Display the MainWindow.xaml.cs file.
18 Lab Instructions: Introducing C# and the .NET Framework

2. Add the XML comment in the following code example before the
MainWindow class declaration.

/// <summary>
/// WPF application to read and format data
/// </summary>

3. Add the XML comment in the following code example before the
MainWindow constructor.

/// <summary>
/// Constructor for MainWindow
/// </summary>

4. Add the XML comment in the following code example before the
testButton_Click method.

/// <summary>
/// Read a line of data entered by the user.
/// Format the data and display the results in the
/// formattedText TextBlock control.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>

5. Add the XML comment in the following code example before the
Windows_Loaded method.

/// <summary>
/// After the Window has loaded, read data from the standard input.
/// Format each line and display the results in the
/// formattedText TextBlock control.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>

6. Save MainWindow.xaml.cs.

X Task 3: Generate an XML comments file


1. Set the project properties to generate an XML documentation file when the
project is built.
2. Build the solution, and then correct any errors.
Lab Instructions: Introducing C# and the .NET Framework 19

3. Verify that an XML comments file called comments.xml has been generated in
the E:\Labfiles\Lab 1\Ex4\Starter\WpfApplication\bin\Debug folder, and
then examine it.
4. Copy the comments.xml file to the E:\Labfiles\Lab 1\Ex4\Helpfile folder.

X Task 4: Generate a .chm file


1. Open a Windows Command Prompt window as Administrator. The
Administrator password is Pa$$w0rd.
2. Move to the E:\Labfiles\Lab 1\Ex4\HelpFile folder.
3. Use Notepad to edit the builddoc.cmd script, and then verify that the input
variable is set to "E:\Labfiles\Lab 1\Ex4\Starter\WpfApplication\bin\Debug
\WpfApplication.exe".
4. Run the builddoc.cmd script.
5. Open the test.chm file that the builddoc.cmd script generates.
6. Browse documentation that is generated for your application, and then close
test.chm.
Lab Instructions: Using C# Programming Constructs 1

Module 2
Lab Instructions: Using C# Programming
Constructs
Contents:
Exercise 1: Calculating Square Roots with Improved Accuracy 4
Exercise 2: Converting Integer Numeric Data to Binary 12
Exercise 3: Multiplying Matrices 16
2 Lab Instructions: Using C# Programming Constructs

Lab: Using C# Programming Constructs

Objectives
After completing this lab, you will be able to:
• Use C# data types and expressions to help implement a numeric algorithm.
• Use C# programming constructs to perform common programming tasks.
• Use arrays to store and process data.

Introduction
In this lab, you will create several applications that implement some common
algorithms. This will help you to become familiar with using the C# syntax and
learn many of the core C# programming constructs.

Important: The purpose of these exercises, and the remaining exercises throughout this
course, is not to make you familiar with mathematical algorithms or engineering
Lab Instructions: Using C# Programming Constructs 3

processes. Rather, the aim is to enable you to take a description of a problem or


algorithm and use C# to implement a solution.

Lab Setup
For this lab, you will use the available virtual machine environment. Before you
begin the lab, you must:

• Start the 10266A-GEN-DEV virtual machine, and then log on by using the
following credentials:
• User name: Student
• Password: Pa$$w0rd
4 Lab Instructions: Using C# Programming Constructs

Lab Scenario

Fabrikam, Inc. produces a range of highly sensitive measuring devices that can
repeatedly measure objects and capture data. You have been asked to implement
some embedded functionality that several scientific instruments require. You will
write C# applications to build and test your implementations.

Exercise 1: Calculating Square Roots with Improved


Accuracy
In this exercise, you will write a program that prompts the user for a numeric value
and then uses Newton's method to calculate the square root of this number. You
will display the result, and compare it to the double value that is calculated by
using the Math.Sqrt method in the .NET Framework class library.

Scenario
Some of the software that is being developed to support devices that perform
scientific analysis requires applications to perform calculations with a high degree
of accuracy. The .NET Framework uses the double type to perform many of its
calculations. The double type has a very large range, but the accuracy is not always
sufficient. The decimal type provides a higher degree of accuracy at the cost of a
Lab Instructions: Using C# Programming Constructs 5

smaller range and increased memory requirements. However, this accuracy is


important. One scientific calculation requires the ability to calculate square roots to
a high degree of accuracy. You decide to implement Newton's algorithm for
estimating and successively refining square roots, but generate the result by using
the decimal type.
The process that Newton used for calculating the square root of 10 is as follows:
1. Start with an initial guess: use the value that you want to find the square root
of and divide by 2.
In this case, 10 / 2, has the value 5.
2. Refine the guess by dividing the original number by the previous guess, adding
the value of the previous guess, and dividing the entire result by 2: calculate
((number / guess) + guess) / 2.
In this example, calculate ((10 / 5 ) + 5 ) / 2 = 3.5
The answer 3.5 then becomes the next guess.
3. Perform the calculation ((number / guess) + guess) / 2 again, with the new
guess
In this example, calculate ((10 / 3.5) + 3.5) / 2 = 3.17857
3.17857 is then the next guess.
4. Repeat this process until the difference between subsequent guesses is less
than some predetermined amount. The final guess is the square root of 10 to
the accuracy that was specified by this predetermined amount.

The main tasks for this exercise are as follows:


1. Create a new WPF Application project.
2. Create the user interface.
3. Calculate square roots by using the Math.Sqrt method of the .NET
Framework.
4. Calculate square roots by using Newton's method.
5. Test the application.
6 Lab Instructions: Using C# Programming Constructs

f Task 1: Create a new WPF Application project


1. Log on to the 10266A-GEN-DEV virtual machine as Student with the
password Pa$$word.
2. Open Microsoft Visual Studio® 2010.
3. Create a new project called SquareRoots by using the Windows® Presentation
Foundation (WPF) Application template in the E:\Labfiles\Lab 2\Ex1\Starter
folder.

f Task 2: Create the user interface


1. Add TextBox, Button, and two Label controls to the MainWindow window.
Place them anywhere in the window.
2. Using the Properties window, set the properties of each control by using the
values in the following table. Leave any other properties at their default values.

Control Property Value


TextBox Name inputTextBox

Height 28

HorizontalAlignment Left

Margin 12,12,0,0

Text 0.00

VerticalAlignment Top

Width 398

Button Name calculateButton

Content Calculate

Height 23

HorizontalAlignment Right

Margin 0,11,12,0
Lab Instructions: Using C# Programming Constructs 7

Control Property Value

VerticalAlignment Top

Width 75

Label Name frameworkLabel

Content 0.00 (Using .NET Framework)

Height 28

HorizontalAlignment Left

Margin 12,41,0,0

VerticalAlignment Top

Width 479

Label Name newtonLabel

Content 0.00 (Using Newton)

Height 28

HorizontalAlignment Left

Margin 12,75,0,0

VerticalAlignment Top

Width 479
8 Lab Instructions: Using C# Programming Constructs

The MainWindow window should look like the following screen shot.

f Task 3: Calculate square roots by using the Math.Sqrt method of the


.NET Framework
1. Create an event handler for the Click event of the button.
2. In the calculateButton_Click method, add code to read the data that the user
enters in the inputTextBox TextBox control, and then convert it into a double
value. Store the double value in a variable called numberDouble. Use the
TryParse method of the double type to perform the conversion. If the text that
the user enters is not valid, display a message box with the text "Please enter a
double," and then execute a return statement to quit the method.

Note: You can display a message in a message box by using the MessageBox.Show
method.
Lab Instructions: Using C# Programming Constructs 9

3. Check that the value that the user enters is a positive number. If it is not,
display a message box with the text "Please enter a positive number," and then
return from the method.
4. Calculate the square root of the value in the numberDouble variable by using
the Math.Sqrt method. Store the result in a double variable called squareRoot.
5. Format the value in the squareRoot variable by using the layout shown in the
following code example, and then display it in the frameWorkLabel Label
control.

99.999 (Using the .NET Framework)

Use the string.Format method to format the result. Set the Content property
of a Label control to display the formatted result.
6. Build and run the application to test your code. Use the test values that are
shown in the following table, and then verify that the correct square roots are
calculated and displayed (ignore the "Using Newton" label for the purposes of
this test).

Test value Expected result

25 5

625 25

0.00000001 0.0001

–10 Message box appears with the message "Please enter a


positive number"

Fred Message box appears with the message "Please enter a


double"

10 3.16227766016838

8.8 2.96647939483827

2.0 1.4142135623731

2 1.4142135623731

7. Close the application and return to Visual Studio.


10 Lab Instructions: Using C# Programming Constructs

f Task 4: Calculate square roots by using Newton's method


1. In the calculateButton_Click method, after the code that you added in the
previous task, create a decimal variable called numberDecimal. Initialize this
variable with the data that the user enters in the inputTextBox TextBox
control, but convert it into a decimal this time (previously, you read it as a
double). If the text that the user enters is not valid, display a message box with
the text "Please enter a decimal," and then execute a return statement to quit
the method.

Note: This step is necessary because the decimal and double types have different
ranges. A number that the user enters that is a valid double might be out of range for
the decimal type.

2. Declare a decimal variable called delta, and initialize it to the value of the
expression Math.Pow(10, –28). This is the smallest value that the decimal
type supports, and you will use this value to determine when the answer that
is generated by using Newton's method is sufficiently accurate. When the
difference between two successive estimates is less than this value, you will
stop.

Note: The Math.Pow method returns a double. You will need to use the
Convert.ToDecimal method to convert this value to a decimal before you assign it to
the delta variable.

3. Declare another decimal variable called guess, and initialize it with the initial
guess at the square root. This initial guess should be the result of dividing the
value in numberDecimal by 2.
4. Declare another decimal variable called result. You will use this variable to
generate values for each iteration of the algorithm, based on the value from the
previous iteration. Initialize the result variable to the value for the first iteration
by using the expression ((numberDecimal / guess) + guess) / 2.
5. Add a while loop to generate further refined guesses. The body of the while
loop should assign result to guess, and generate a new value for result by
using the expression ((numberDecimal / guess) + guess) / 2. The while loop
should terminate when the difference between result and guess is less than or
equal to delta.
Lab Instructions: Using C# Programming Constructs 11

Note: Use the Math.Abs method to calculate the absolute value of the difference
between result and guess. Using Newton's algorithm, it is possible for the difference
between the two variables to alternate between positive and negative values as it
diminishes. Consequently, if you do not use the Math.Abs method, the algorithm might
terminate early with an inaccurate result.

6. When the while loop has terminated, format and display the value in the
result variable in the newtonLabel Label control. Format the data in a similar
manner to the previous task.

f Task 5: Test the application


1. Build and run the application in Debug mode to test your code. Use the test
values shown in the following table, and verify that the correct square roots are
calculated and displayed. Compare the value in the two labels, and then verify
that the square roots that are calculated by using Newton's method are more
accurate than those calculated by using the Math.Sqrt method.

Test value .NET Framework Newton's algorithm


25 5 5.000000000000000000000000000

625 25 25.000000000000000000000000000

0.00000001 0.0001 0.0001000000000000000000000000

10 3.16227766016838 3.1622776601683793319988935444

8.8 2.96647939483827 2.9664793948382651794845589763

2.0 1.4142135623731 1.4142135623730950488016887242

2 1.4142135623731 1.4142135623730950488016887242

2. As a final test, try the value 0.0000000000000000000000000001 (27 zeroes


after the decimal point). Can you explain the result?
3. Close the application and return to Visual Studio.
12 Lab Instructions: Using C# Programming Constructs

Exercise 2: Converting Integer Numeric Data to Binary


In this exercise, you will create another application that enables the user to enter
an integer value, generate a string that holds the binary representation of this
value, and then display the result.

Scenario
Another device has the requirement to display decimal numeric data in a binary
format. You have been asked to develop some code that can convert a non-negative
decimal integer value into a string that contains the binary representation of this
value.
The process for converting the decimal value 6 into its binary representation is as
follows:
1. Divide the integer by 2, save the integer result, and use the remainder as the
first binary digit.
In this example, 6 / 2 is 3 remainder 0. Save the character "0" as the first
character of the binary representation.
2. Divide the result of the previous division by 2, save the result, and use the
remainder as the next binary digit.
In this example, 3 / 2 is 1 remainder 1. Save the character "1" as the next
character of the binary representation.
3. Repeat the process until the result of the division is zero.
In this example, 1 / 2 is zero remainder 1. Save the character "1" as the final
character of the binary representation.
4. Display the characters saved in reverse order.
In this example, the characters were generated in the sequence "0", "1", 1", so
display them in the order "1", "1", "0". The value 110 is the binary
representation of the decimal value 6.

The main tasks for this exercise are as follows:


1. Create a new WPF Application project.
2. Create the user interface.
3. Add code to generate the binary representation of an integer value.
4. Test the application.
Lab Instructions: Using C# Programming Constructs 13

f Task 1: Create a new WPF Application project


• Create a new project called IntegerToBinary by using the WPF Application
template in the E:\Labfiles\Lab 2\Ex2\Starter folder.

f Task 2: Create the user interface


1. Add a TextBox, Button, and Label control to the MainWindow window. Place
them anywhere in the window.
2. Using the Properties window, set the properties of each control by using the
values in the following table. Leave any other properties at their default values.

Control Property Value


TextBox Name inputTextBox

Height 28

HorizontalAlignment Left

Margin 12,12,0,0

Text 0

VerticalAlignment Top

Width 120

Button Name convertButton

Content Convert

Height 23

HorizontalAlignment Left

Margin 138,12,0,0

VerticalAlignment Top

Width 75
14 Lab Instructions: Using C# Programming Constructs

Control Property Value

Label Name binaryLabel

Content 0

Height 28

HorizontalAlignment Left

Margin 12,41,0,0

VerticalAlignment Top

Width 120

The MainWindow window should look like the following screen shot.
Lab Instructions: Using C# Programming Constructs 15

f Task 3: Add code to generate the binary representation of an integer


value
1. Create an event handler for the Click event of the button.
2. In the convertButton_Click method, add code to read the data that the user
enters in the inputTextBox TextBox control, and then convert it into an int
type. Store the integer value in a variable called i. Use the TryParse method of
the int type to perform the conversion. If the text that the user enters is not
valid, display a message box with the text "TextBox does not contain an
integer," and then execute a return statement to quit the method.
3. Check that the value that the user enters is not a negative number (the integer-
to-binary conversion algorithm does not work for negative numbers). If it is
negative, display a message box with the text "Please enter a positive number
or zero," and then return from the method.
4. Declare an integer variable called remainder and initialize it to zero. You will
use this variable to hold the remainder after dividing i by 2 during each
iteration of the algorithm.
5. Declare a StringBuilder variable called binary and instantiate it. You will use
this variable to construct the string of bits that represent i as a binary value.
6. Add a do loop that performs the following tasks:
a. Calculate the remainder after dividing i by 2, and then store this value in
the remainder variable.
b. Divide i by 2.
c. Prefix the value of remainder to the start of the string being constructed by
the binary variable.
Terminate the do loop when i is less than or equal to zero.

Note: To prefix data into a StringBuilder object, use the Insert method of the
StringBuilder class, and then insert the value of the data at position 0.

7. Display the value in the binary variable in the binaryLabel Label control.

Note: Use the ToString method to retrieve the string that a StringBuilder object
constructs. Set the Content property of the Label control to display this string.
16 Lab Instructions: Using C# Programming Constructs

f Task 4: Test the application


1. Build and run the application in Debug mode to test your code. Use the test
values shown in the following table, and verify that the binary representations
are generated and displayed.

Test value Expected result

0 0

1 1

–1 Message box appears with the message "Please enter a


positive number or zero"

10.5 Message box appears with the message "TextBox does not
contain an integer"

Fred Message box appears with the message "TextBox does not
contain an integer"

4 100

999 1111100111

65535 1111111111111111

65536 10000000000000000

2. Close the application and return to Visual Studio.

Exercise 3: Multiplying Matrices


In this exercise, you will create another WPF application. This WPF application
will provide a user interface that enables the user to provide the data for two
matrices and store this data in rectangular arrays. The application will calculate the
product of these two arrays and display them.

Scenario
Some of the devices that Fabrikam, Inc. has developed perform calculations that
involve sets of data that are held as matrices. You have been asked to implement
code that performs matrix multiplication. You decide to test your code by building
Lab Instructions: Using C# Programming Constructs 17

a WPF application that enables a user to specify the data for two matrices, calculate
the product of these matrices, and then view the result.
Multiplying matrices is an iterative process that involves calculating the sum of the
products of the values in each row in one matrix with the values in each column in
the other, as the following screen shot shows.

This screen shot shows a 3×4 matrix multiplying a 4×5 matrix. This will result in a
3×5 matrix.

Note: The number of columns in the first matrix must match the number of rows in the
second matrix. The starter code that is provided for you in this lab ensures that this is
always the case.

To calculate each element xa,b in the result matrix, you must calculate the sum of
the products of every value in row a in the first matrix with every value in column
b in the second matrix. For example, to calculate the value placed at x3,2 in the
result matrix, you calculate the sum of the products of every value in row 3 in the
first matrix with every value in column 2 in the second matrix:
(5×3)+(4×2)+(2×6)+(3×1) = 38
You perform this calculation for every element in the result matrix.
The main tasks for this exercise are as follows:
1. Open the MatrixMultiplication project and examine the starter code.
2. Define the matrix arrays and populate them with the data in the Grid controls.
3. Multiply the two input matrices and calculate the result.
4. Display the results and test the application.

f Task 1: Open the MatrixMultiplication project and examine the starter


code
1. Open the MatrixMultiplication project located in the
E:\Labfiles\Lab 2\Ex3\Starter folder.
18 Lab Instructions: Using C# Programming Constructs

2. Examine the user interface that the MainWindow window defines.


The user interface contains three Grid controls, three ComboBox controls,
and a Button control.
When the application runs, the first Grid control, labeled Matrix 1, represents
the first matrix, and the second Grid control, labeled Matrix 2, represents the
second matrix. The user can specify the dimensions of the matrices by using
the ComboBox controls, and then enter data into each cell in them. There are
several rules that govern the compatibility of matrices to be multiplied
together, and Matrix 2 is automatically configured to have an appropriate
number of rows based on the number of columns in Matrix 1.
When the user clicks the Calculate button, Matrix 1 and Matrix 2 are
multiplied together, and the result is displayed in the Grid control labeled
Result Matrix. The dimensions of the result are determined by the shapes of
Matrix 1 and Matrix 2.
The following screen shot shows the completed application running. The user
has multiplied a 2×3 matrix with a 3×2 matrix, and the result is a 3×3 matrix.
Lab Instructions: Using C# Programming Constructs 19

f Task 2: Define the matrix arrays and populate them with the data in
the Grid controls
1. In Visual Studio, review the task list.
2. Open the MainWindow.xaml.cs file.
3. At the top of the MainWindow class, remove the comment TODO Task 2
declare variables, and then add statements that declare three two-dimensional
arrays called matrix1, matrix2, and result. The type of the elements in these
arrays should be double, but the size of each dimension should be omitted
because the arrays will be dynamically sized based on the input that the user
provides. The first dimension will be set to the number of columns, and the
second dimension will be set to the number of rows.
4. In the task list, double-click the task TODO Task 2 Copy data from input
Grids. This task is located in the buttonCalculate_Click method.
5. In the buttonCalculate_Click method, remove the comment TODO Task 2
Copy data from input Grids. Add two statements that call the
getValuesFromGrid method. This method (provided in the starter code)
expects the name of a Grid control and the name of an array to populate with
data from that Grid control. In the first statement, specify that the method
should use the data in grid1 to populate matrix1. In the second statement,
specify that the method should use the data from grid2 to populate matrix2.
6. Remove the comment TODO Task 2 Get the matrix dimensions. Declare
three integer variables called m1columns_m2rows, m1rows, and m2columns.
Initialize m1columns_m2rows with the number of columns in the matrix1
array (this is also the same as the number of rows in the matrix2 array) by
using the GetLength method of the first dimension of the array. Initialize
m1rows with the number of rows in the matrix1 array by using the GetLength
method of the second dimension of the array. Initialize m2columns with the
number of columns in the matrix2 array.

f Task 3: Multiply the two input matrices and calculate the result
1. In the buttonCalculate_Click method, delete the comment TODO Task 3
Calculate the result. Define a for loop that iterates through all of the rows in
the matrix1 array. The dimensions of an array are integers, so use an integer
variable called row as the control variable in this for loop. Leave the body of
the for loop blank; you will add code to this loop in the next step.
20 Lab Instructions: Using C# Programming Constructs

2. In the body of the for loop, add a nested for loop that iterates through all of
the columns in the matrix2 array. Use an integer variable called column as the
control variable in this for loop. Leave the body of this for loop blank.
3. The contents of each cell in the result array are calculated by adding the
product of each item in the row identified by the row variable in matrix1 with
each item in the column identified by the column variable in matrix2. You will
require another loop to perform this calculation, and a variable to store the
result as this loop calculates it.
In the inner for loop, declare a double variable called accumulator, and then
initialize it to zero.
4. Add another nested for loop after the declaration of the accumulator variable.
This loop should iterate through all of the columns in the current row in the
matrix1 array. Use an integer variable called cell as the control variable in this
for loop. Leave the body of this for loop blank.
5. In the body of this for loop, multiply the value in matrix1[cell, row] with the
value in matrix2[column, cell], and then add the result to accumulator.
6. After the closing brace of the innermost for loop, store the value in
accumulator in the result array. The value should be stored in the cell that the
column and row variables have identified.

f Task 4: Display the results and test the application


1. In the buttonCalculate_Click method, delete the comment TODO Task 4
Display the result. The starter code contains a method called initializeGrid
that displays the contents of an array in a Grid control in the WPF window.
Add a statement that calls this method. Specify that the method should use the
grid3 Grid control to display the contents of the result array.
2. Build the solution and correct any errors.
3. Run the application in Debug mode.
4. In the MainWindow window, define Matrix 1 as a 3×2 matrix and define
Matrix 2 as a 3×3 matrix.

Note: The number of rows in the Matrix 2 matrix is determined by the number of
columns in the Matrix 1 matrix.

5. Specify the values for the cells in the matrices as shown in the following tables.
Lab Instructions: Using C# Programming Constructs 21

Matrix 1

1 5 –9

3 –7 11

Matrix 2

2 –8 14

4 –10 16

6 –12 18

6. Click Calculate. Verify that the Result matrix displays the values in the
following table.

Result

–32 50 –68

44 –86 128

7. Change the data in Matrix 2 as shown in the following table.

Matrix 2

1 0 0

0 1 0

0 0 1

8. Click Calculate. Verify that the Result matrix displays the values in the
following table.

Result
1 5 –9

3 –7 11
22 Lab Instructions: Using C# Programming Constructs

Matrix 2 is an example of an identity matrix. When you multiply a matrix by


an identity matrix, the result is the same data as defined by the original matrix
(it is the matrix equivalent of multiplying a value by 1 in regular arithmetic). In
this case, the values in the Result matrix are the same as those in Matrix 1.
9. Change the data in Matrix 2 again, as shown in the following table.

Matrix 2

–1 0 0

0 –1 0

0 0 –1

10. Click Calculate. Verify that the Result matrix displays the values in the
following table.

Result

–1 –5 9

–3 7 –11

This time, the values in Result are the same as those in Matrix 1 except that
the sign of each element is inverted (Matrix 2 is the matrix equivalent of –1 in
regular arithmetic).
11. Close the MainWindow window.
12. Close Visual Studio.
Lab Instructions: Declaring and Calling Methods 1

Module 3
Lab Instructions: Declaring and Calling Methods
Contents:
Exercise 1: Calculating the Greatest Common Divisor of Two Integers by Using
Euclid’s Algorithm 4
Exercise 2: Calculating the GCD of Three, Four, or Five Integers 8
Exercise 3: Comparing the Efficiency of Two Algorithms 12
Exercise 4: Displaying Results Graphically 18
Exercise 5: Solving Simultaneous Equations (optional) 21
2 Lab Instructions: Declaring and Calling Methods

Lab: Declaring and Calling Methods

Objectives
After completing this lab, you will be able to:
• Create and call methods.
• Define overloaded methods.
• Define methods that take output parameters.
• Define methods that take optional parameters and call them by using named
arguments.

Introduction
In this lab, you will create methods to calculate the greatest common divisor
(GCD) of a pair of positive integers. You will create an overloaded version of one of
these methods that can take up to five integer parameters. You will modify the
methods to take an output parameter that returns the time taken to perform the
Lab Instructions: Declaring and Calling Methods 3

calculations. Finally, you will use a method that uses optional parameters to
display the relative performance of the methods by displaying a simple graph.

Lab Setup
For this lab, you will use the available virtual machine environment. Before you
begin the lab, you must:

• Start the 10266A-GEN-DEV virtual machine, and then log on by using the
following credentials:
• User name: Student
• Password: Pa$$w0rd
4 Lab Instructions: Declaring and Calling Methods

Lab Scenario

Fabrikam, Inc. produces a range of highly sensitive measuring devices that can
repeatedly measure objects and capture data.
Some of the calculations that various scientific instruments perform depend on
statistical information that is generated by using prime numbers. One of your
colleagues has implemented a method for generating prime numbers, but it does
not have sufficient performance to meet the requirements of the devices that it will
be used with. The software analysts have examined the code and have determined
that it can be improved by using a faster algorithm for calculating the GCDs. You
have been asked to implement a test application that can calculate the GCD of a set
of numbers by using different well-known algorithms, and compare their relative
performance.

Exercise 1: Calculating the Greatest Common Divisor of


Two Integers by Using Euclid’s Algorithm
In this exercise, you will write a method that implements Euclid's algorithm for
calculating the GCD of two integers passed in as parameters. You will test this
method by using a Windows® Presentation Foundation (WPF) application that
Lab Instructions: Declaring and Calling Methods 5

prompts the user for the parameter values, and displays the result. You will also
generate a unit test project to enable you to automate testing this method.

Scenario
Some of the data that is collected by devices built by Fabrikam, Inc. must be
encrypted for security purposes. Encryption algorithms often make use of prime
numbers. A part of the algorithm that generates prime numbers needs to calculate
the GCD of two numbers.
The GCD of two numbers is the largest number that can exactly divide into the two
numbers. For example, the GCD of 15 and 12 is 3. Three is the largest whole
number that divides exactly into 15 and 12.
The process for finding the GCD of 2806 and 345 by using Euclid's algorithm is as
follows.
1. Keep taking 345 away from 2806 until less than 345 is left and store the
remainder.
In this case, 2806 = (8 × 345) + 46, so the remainder is 46.
2. Keep taking the remainder (46) away from 345 until less than 46 is left, and
store the remainder.
345 = (7 × 46) + 23, so the remainder is 23.
3. Keep taking 23 away from 46 until less than 23 is left, and store the remainder.
46 = (2 × 23) + 0
4. The remainder is 0, so the GCD of 2806 and 345 was the value of the
previously stored remainder, which was 23 in this case.

The main tasks for this exercise are as follows:


1. Open the starter project.
2. Implement Euclid’s algorithm.
3. Test the FindGCDEuclid method.
4. Create a unit test for the FindGCDEuclid method.

X Task 1: Open the starter project


1. Log on to the 10266A-GEN-DEV virtual machine as Student with the
password Pa$$w0rd.
6 Lab Instructions: Declaring and Calling Methods

2. Open Visual Studio 2010.


3. Import the code snippets from the E:\Labfiles\Lab 3\Snippets folder.
4. Open the Euclid solution in the E:\Labfiles\Lab 3\Ex1\Starter folder.

X Task 2: Implement Euclid’s algorithm


1. In Visual Studio, review the task list.
2. Use the Task List window to navigate to the TODO Exercise 1, Task 2 task.
This task is located in the GCDAlgorithms.cs file.
3. In the GCDAlgorithms class, remove the TODO Exercise 1, Task 2 comment
and declare a public static method called FindGCDEuclid. The method
should accept two integer parameters called a and b, and return an integer
value.
4. In the FindGCDEuclid method, add code that calculates and returns the GCD
of the values specified by the parameters a and b by using Euclid's algorithm.
Euclid’s algorithm works as follows:
a. If a is zero, the GCD of a and b is b.
b. Otherwise, repeatedly subtract b from a (when a is greater than b) or
subtract a from b (when b is greater than a) until b is zero.
c. The GCD of the two original parameters is the new value in a.

X Task 3: Test the FindGCDEuclid method


1. Use the Task List window to navigate to the TODO Exercise 1, Task 3 task.
This task is located in the MainWindow.xaml.cs file. This is the code-behind
file for a WPF window that you will use to test the FindGCDEuclid method
and display the results.
2. Remove the TODO Exercise 1, Task 3 comment, add code to call the static
FindGCDEuclid method of the GCDAlgorithms class, and display the results
in the resultEuclid label control. In the method call, use the firstNumber and
secondNumber variables as arguments (these variables contain values that the
user enters in the WPF window). Finally, the result should be formatted as the
following code example shows.
Lab Instructions: Declaring and Calling Methods 7

Euclid: result

Hint: Set the Content property of a label control to display data in a label. Use the
String.Format method to create a formatted string.

3. Build the solution and correct any errors.


4. Run the GreatestCommonDivisor application.
5. In the GreatestCommonDivisor application, in the MainWindow window, in
the first text box, type 2806
6. In the second text box, type 345 and then click Find GCD (2 Integers). The
result of 23 should be displayed, as the following screen shot shows.

7. Use the window to calculate the GCD for the values that are specified in the
following table, and verify that the results that are displayed match those in the
table.
Random documents with unrelated
content Scribd suggests to you:
caractère[78]. Aussi prétendit-on que le désir de la revoir n'était pas
le moindre motif qui le ramenât à Versailles en 1783. Quatre ans
avaient suffi pour transformer la jeune princesse, dont le front,
rayonnant de tout l'éclat des grâces printanières, semblait destiné
par l'opinion publique à recevoir le bandeau impérial. Le parti
antiautrichien qui dominait à la cour, et qui déjà avait semé à
l'entour de la Reine des défiances et des haines, s'inquiéta d'une
alliance qui devait être contraire à son ascendant et mit tout en
œuvre pour l'empêcher. L'intrigue réussit. On a dit sans raison que
Madame Élisabeth en conçut quelque regret; l'Empereur n'avait point
encore laissé apercevoir dans la politique les excentricités de son
esprit, et il venait de perdre une femme dont la jeunesse, les vertus
et la piété avaient emporté l'amour et la bénédiction de tout un
peuple. Madame Élisabeth, bien qu'elle possédât assurément tout ce
qu'il fallait pour recueillir un tel héritage, ne parut pas attacher plus
de prix à cette union qu'aux autres alliances que la convenance avait
indiquées, mais auxquelles la politique avait trouvé des obstacles.
Ou peut-être Celui qui règne dans les cieux et de qui relèvent tous
les empires, comme dit Bossuet, Celui dont l'œil voyait déjà s'ouvrir
dans l'avenir la prison du Temple et se dresser l'échafaud du 21
janvier, n'avait-il pas voulu enlever toute consolation à la maison
royale.

Madame Élisabeth de jour en jour se fortifia contre les écueils de


son caractère, de son âge et de la cour; de jour en jour elle sentit
davantage ce qui lui manquait. Ses efforts s'accroissaient de sa
défiance d'elle-même, et plus elle acquérait de qualités, moins elle
se croyait capable de la perfection à laquelle elle devait atteindre. Ce
sentiment de son humilité donnait à sa parole une mesure exquise, à
ses actions une prudente réserve, à sa charité une discrétion
angélique.

Toutes les jeunes personnes qui s'étaient trouvées en contact avec


Madame Élisabeth et qui grandissaient sous ses yeux, participant
parfois à ses plaisirs, lui avaient voué une vive et sincère amitié. Il
en est trois que le cœur d'Élisabeth avait distinguées tout d'abord et
auxquelles elle fit une plus grande part d'affection, payée du plus
fidèle et du plus tendre dévouement: l'une était mademoiselle de
Mackau, qui par son mariage devint madame de Bombelles; l'autre
mademoiselle de Causans, qui épousa M. de Raigecourt; la troisième
était mademoiselle de la Briffe, qu'elle avait connue presque enfant.
C'était une jeune personne d'un esprit charmant et d'une vivacité
d'humeur pleine d'à-propos et d'entraînement. Elle venait d'épouser
le marquis des Moutiers de Mérinville. Madame Élisabeth environnait
d'une tendre sollicitude cette jeune tête, parée de dons trop précieux
pour ne pas être très-remarquée, et ne lui épargnait pas les conseils
d'une affection presque maternelle.

La vie entière de la marquise des Moutiers, aussi bien que celle de


mesdames de Bombelles et de Raigecourt, s'écoula sous le souvenir
de la haute influence qui avait dominé sa première jeunesse. La
vertu de Madame Élisabeth était comme ce sachet d'ambre gris dont
parlent les poëtes de l'Asie: son parfum se communiquait et
demeurait à tout ce qu'elle avait touché. Nous aurons souvent
l'occasion de trouver ces trois noms mêlés aux confidences, aux
lettres, aux événements de la vie que nous avons entrepris d'écrire:
Bombelles, Raigecourt et des Moutiers, noms aimés qui devaient
donner tant de consolation à Madame Élisabeth et emprunter tant
de gloire à son amitié!

Une note écrite par madame de Bombelles, et remise par elle à M.


Ferrand en 1795, fait connaître sa première entrevue avec la jeune
princesse et la manière dont elle devint sa compagne: «Madame
Élisabeth, dit-elle, avoit sept ans lorsque ma mère, désignée par les
dames de Saint-Cyr à madame de Marsan comme propre à seconder
ses vues et ses soins dans l'éducation de Mesdames, arriva de
Strasbourg pour remplir les fonctions de sous-gouvernante. Madame
de Marsan, prévenue en sa faveur, la reçut comme si elle eût dû la
remercier d'avoir accepté le pénible emploi qu'elle lui avoit confié.
Elle voulut voir ma sœur et moi, et nous présenta à Mesdames.
Madame Élisabeth me considéra avec l'intérêt qu'inspire à un enfant
la vue d'un autre enfant de son âge. Je n'avois que deux ans de plus
qu'elle, et étant aussi portée qu'elle à m'amuser, les jeux furent
bientôt établis entre nous et la connoissance bientôt faite. Ma mère
n'ayant point de fortune, pria madame de Marsan de solliciter pour
moi une place à Saint-Cyr. Elle l'obtint, et je m'attendois à être
incessamment conduite dans une maison pour laquelle j'avois déjà
un véritable attachement. Cependant Madame Élisabeth demandoit
sans cesse à me voir; j'étois la récompense de son application et de
sa docilité; et madame de Marsan s'apercevant que ce moyen avoit
un grand succès, proposa au Roi que je devinsse la compagne de
Madame Élisabeth, avec l'assurance que lorsqu'il en seroit temps, il
voudroit bien me marier. Sa Majesté y consentit. Dès ce moment, je
partageai tous les soins qu'on prenoit de l'éducation et de
l'instruction de Madame Élisabeth. Cette infortunée et adorable
princesse, pouvant s'entretenir avec moi de tous les sentiments qui
remplissoient son cœur, trouvoit dans le mien une reconnoissance,
un attachement qui, à ses yeux, me tinrent lieu des qualités de
l'esprit et de l'amabilité; elle m'a conservé sans altération des bontés
et une tendresse qui m'ont valu autant de bonheur que j'éprouve
aujourd'hui de douleur et d'amertume. Je fus mariée à M. de
Bombelles. Le Roi voulut bien, sur la demande de sa sœur, me
donner une dot de cent mille francs, une pension de mille écus et
une place de dame pour accompagner Madame Élisabeth. Cet
événement lui causa le plus sensible plaisir. Jamais je n'oublierai
l'accent avec lequel elle me dit: «Enfin, voici donc mes vœux
remplis: tu es à moi! Qu'il m'est doux de penser que c'est un lien de
plus entre nous, et d'espérer que rien ne pourra le rompre!»

Ce bonheur intérieur que commençait à goûter Madame Élisabeth


semblait régner dans le palais de Versailles. Jamais la cour de France
n'avait offert un tel spectacle: une jeune Reine y vivait en parfaite
harmonie avec deux belles-sœurs de son âge, et un jeune Roi aimait
à s'appuyer sur l'amitié de ses deux frères. «La plus grande intimité,
dit madame Campan, s'établit entre les trois ménages. Ils firent
réunir leurs repas et ne mangèrent séparément que les jours où
leurs dîners étaient publics. Cette manière de vivre en famille exista
jusqu'au moment où la Reine se permit d'aller dîner quelquefois chez
la duchesse de Polignac, lorsqu'elle fut gouvernante; mais la réunion
du soir pour le souper ne fut jamais interrompue et avait lieu chez
madame la comtesse de Provence. Madame Élisabeth y prit place
lorsqu'elle eut terminé son éducation, et quelquefois Mesdames,
tantes du Roi, y étaient invitées. Cette intimité, qui n'avait point eu
d'exemple à la cour, fut l'ouvrage de Marie-Antoinette, et elle
l'entretint avec la plus grande persévérance.»

Les jeux et les plaisirs dont se montre avide la jeune cour laissent
cependant place à des intrigues qui doivent parfois diviser les
membres de la famille royale. Le Roi et ses frères ont chacun un
caractère différent. Louis XVI, qui possède les vertus d'un homme de
bien, est loin d'avoir toutes celles qui conviennent à un roi. Sa
défiance de lui-même est extrême. À l'époque où il n'était encore
que Dauphin, on agitait une question difficile à résoudre: «Il faut,
dit-il, demander cela à mon frère de Provence.» Confiant envers les
autres, il se livre aisément; mais il entre dans des emportements
fâcheux quand il s'aperçoit qu'on le trompe. Il n'a ni fermeté dans le
caractère ni grâces dans les manières. Comme certains fruits
excellents dont l'écorce est amère, il a l'extérieur rude et le cœur
parfait. Sévère pour lui seul, il observe rigoureusement les lois de
l'Église, jeûne et fait maigre pendant les quarante jours de carême,
et trouve bon que la Reine ne l'imite point. Sincèrement pieux, mais
formé à la tolérance par l'influence du siècle qu'il subit sans s'en
rendre compte, il est disposé, trop disposé peut-être à sacrifier les
prérogatives du trône toutes les fois qu'on allègue les intérêts de son
peuple; car un des premiers intérêts d'une nation est le maintien
d'un pouvoir fort et incontesté. Une royauté affaiblie est impuissante
à la fois pour le bien et contre le mal.

Il y a en lui quelque chose d'honnête qui n'accepte pas la


solidarité complète du règne précédent; mais, héritier d'un régime
dont il porte le poids, il est mal à l'aise entre un passé qui soulève
des répugnances et un avenir non point menaçant encore, mais
rempli de doutes et de mystères.
Simple, économe, aimant la lecture et l'étude, cherchant l'oubli du
trône dans l'exercice de la chasse ou d'un travail manuel, détestant
les femmes sans mœurs et les hommes sans conscience, il semble
étranger dans une cour dont les mœurs sont légères et les
consciences faciles. Un jeune prince plein de modération, au faîte de
la puissance et fidèle au devoir, se regardant comme le père de tous
les Français et se sentant attiré de préférence vers ceux de ses
enfants qui sont les plus faibles, ne peut être apprécié de ses
courtisans, gens pour la plupart frivoles ou endettés, corrupteurs ou
corrompus, regardant les innovations comme un danger et les
réformes comme un crime.

Le comte de Provence, dont l'esprit est égal à l'instruction, cache


sous une dignité prudente le regret de n'être point au premier rang.
Versé dans la culture des lettres, servi par une mémoire prodigieuse,
il se regarde, sous le rapport littéraire, comme bien supérieur au Roi
son frère. Ce sentiment est né chez lui dès l'enfance. Un jour, jouant
avec ses frères, le duc de Berry lâcha le mot: Il pleuva. «Ah, quel
barbarisme! s'écria le comte de Provence; mon frère, cela n'est pas
beau: un prince doit savoir sa langue.—Et vous, mon frère, reprit
l'aîné, vous devriez retenir la vôtre.» Monsieur se plaît dans la
société des gens de lettres, cherche à se rendre compte du souffle
des idées qui se lève à l'horizon, se prépare aux événements pour
n'en être pas surpris, ménage les partis sans les embrasser, vit avec
ses frères sans division et sans confiance, caresse froidement
l'opinion; et quand viendra le jour où des combinaisons
malencontreuses feront échouer le départ du Roi son frère, il saura
avec habileté s'éloigner du péril et se réserver pour l'avenir.

Le comte d'Artois est le type du Français d'autrefois: il en a


l'humeur insouciante, l'esprit enjoué, les grâces chevaleresques. Bien
fait, recherché dans sa toilette, adroit dans les exercices du corps, il
n'apprécie la grandeur que pour les avantages qu'elle donne, la
fortune que pour les plaisirs qu'elle procure. La coutume qu'il a de
regarder les femmes le suit jusque dans le sanctuaire. «Monseigneur,
lui dit un jour Mgr du Coëtlosquet, évêque de Limoges, j'ai une grâce
à demander à Votre Altesse Royale, c'est de ne pas aller à la
messe.»

Né dans une cour légère et voluptueuse, il en a pris naturellement


les habitudes; mais son cœur généreux n'y doit pas périr, et survivra
à l'exil, au trône et au malheur.

On comprend qu'autour de ces trois princes, dont nous venons


d'esquisser rapidement le caractère, doivent se grouper des hommes
de mœurs et d'idées différentes. Les honnêtes sont près de Louis
XVI, les politiques près de Monsieur, les frivoles près du comte
d'Artois. C'est ainsi que les amis du Roi sont rares, ceux de Monsieur
nombreux, ceux du comte d'Artois innombrables. Ceux-ci ont la
prétention de se croire plus directement placés sous le patronage de
la Reine, qui, jeune, vive et brillante, cherche les plaisirs de son âge
et se plaît dans la société du comte d'Artois, dont les goûts se
rapprochent des siens. L'esprit pervers de cette époque s'essaye à
faire un crime à Marie-Antoinette de trouver son beau-frère aimable;
mais il ne parviendra pas, aux yeux de l'histoire, à envenimer des
parties de plaisir qui ont toute la cour pour témoin, sans compter la
comtesse d'Artois, qui aime tendrement son mari. On devine
cependant le parti que cherche à tirer de cette amitié fraternelle la
malignité d'un essaim d'étourdis, incapables de supposer le bien et
toujours prêts à croire le mal qu'ils ont inventé.

Madame la comtesse de Provence, d'une figure peu sympathique,


mais ornée de deux beaux yeux qui lui ont attiré les seuls
compliments qu'elle ait mérités, inspira, dit-on, dès la première
entrevue une spirituelle repartie à son fiancé. «Monsieur le comte de
Provence, lui dit le lendemain le comte d'Artois, toujours disposé à
plaisanter, vous aviez la voix bien forte hier; vous avez crié bien fort
votre Oui.—C'est, repartit l'époux passionné, que j'aurois voulu qu'il
pût se faire entendre jusqu'à Turin.» Cette princesse se montra très-
neuve sur l'étiquette, et le cérémonial l'embarrassait beaucoup. Le
lendemain de son mariage, comme madame de Valentinois, sa dame
d'atour, voulait lui mettre du rouge: «Fi donc! s'écria-t-elle, madame;
prenez-vous ma figure pour une tête à perruque?—Madame, lui dit
le comte de Provence, conformez-vous à l'usage de la cour, et je
vous trouverai infiniment mieux.—Allons, madame de Valentinois,
dit-elle, mettez-moi du rouge, et beaucoup, puisque j'en plairai
davantage à mon mari.»

Madame juge sévèrement son prochain; elle a une instruction


variée, un esprit mordant; elle n'est pas exempte d'ambition. Peu
aimée de son mari, quoi qu'en ait dit le comte d'Artois, jalouse de
ses sœurs qui ont des enfants, elle affecte en public une gravité que
l'observateur clairvoyant considère comme la critique de la vivacité
et de la grâce enjouée de la Reine. En 1787, elle eut une
conversation très-vive avec Marie-Antoinette, qu'elle exhorta à faire
plus de cas du peuple, à se rendre digne des vive la Reine! qu'on lui
prodiguait précédemment. La princesse ne trouvant pas que ses
sages représentations fissent grand effet sur l'esprit de Sa Majesté,
elle s'échauffa davantage et s'écria avec chaleur: «Si vous dédaignez
mes avis, Madame, vous ne serez que la reine de France, vous ne
serez pas la reine des Français.» On est disposé à croire que, sans
encourager ni l'opposition qui luttait contre le Roi, ni la calomnie qui
s'attachait aux pas de la Reine, Madame se réjouissait de ces deux
injustices, dont l'une donnait plus de faveur à l'ambition de son mari
et l'autre plus de relief à sa propre dignité.

La comtesse d'Artois est toute petite, d'une carnation


remarquablement blanche et rose, mais son visage est porteur d'un
nez très-long, qui donne à sa physionomie délicate et gracieuse
quelque chose d'agressif. Bienveillante et charitable, elle est fort
aimée, et le privilége qu'elle a d'avoir seule encore donné des
héritiers à la couronne lui assure naturellement quelque crédit.

Le banquet qui avait eu lieu à l'occasion de son mariage était


demeuré inscrit dans les fastes des fêtes royales, à cause d'un
surtout merveilleux de l'invention du sieur Arnoux, célèbre
machiniste du temps. Au milieu était une rivière claire et limpide qui
coula pendant tout le repas avec une abondance intarissable. Son
cours était orné de petits bateaux, de chaumières de pêcheurs,
d'arbres, de prairies, et de tout ce qui peut rendre agréables les
bords d'un fleuve.

On a aussi retenu de cette époque un mot qui fit quelque peu rire
par sa naïveté. La ville de Paris, à l'occasion de ce mariage, dota des
filles. Une d'elles (mademoiselle Lise) se présenta pour se faire
inscrire. On lui demanda le nom de son amoureux, et où il était. «Je
n'en ai point, dit-elle; je croyais que la ville fournissait de tout.» Les
officiers municipaux allèrent lui choisir un mari.

Nous avons dit quel était l'intérieur du palais de Versailles dans les
années qui précédèrent la révolution. Les princes et les princesses
du sang n'y faisaient que de rares apparitions; ils avaient des goûts
différents, des habitudes différentes.

«Des trois branches de la maison de Bourbon, disait un jour le


vieux maréchal de Richelieu, chacune a un goût dominant et
prononcé: l'aînée aime la chasse, les d'Orléans aiment les tableaux,
les Condé aiment la guerre.—Et le roi Louis XVI, lui demanda-t-on,
qu'aime-t-il?—Ah! c'est différent, il aime le peuple.»

Les princes du sang ne se montraient donc à la cour que dans les


jours marqués par l'étiquette. J'en excepte, on le comprend, la
princesse de Lamballe, que ses fonctions de surintendante de la
maison de la Reine y retenaient, aussi bien que son affection. Les
princes du sang, que les querelles du Parlement avaient jetés dans
l'opposition, oubliaient que tout leur éclat n'était qu'un reflet du
trône, et trouvaient commode de joindre aux priviléges que leur
conférait leur naissance les avantages de la popularité que leur
attirait la prétendue indépendance de leur opinion. Le temps venait
où cette grande maison de Bourbon allait s'affaiblir et se condamner
à l'impuissance en divisant ses faisceaux.

Madame Élisabeth avait senti tout ce qu'il y avait de regrettable et


de dangereux dans les habitudes de la cour, aussi bien que dans les
tendances qui se manifestaient au dehors. Cette action incessante
de rivalité et de dénigrement, d'envie et de mensonge, effarouchait
la délicatesse et la droiture de son cœur; elle se prenait à regarder
le palais de Versailles comme un séjour redoutable. Étrangère à
toutes les intrigues, elle n'avait de parti que celui de ses frères, et,
quoique décidée à conserver en toute occasion d'amicales relations
avec ses belles-sœurs, elle leur mesurait un peu son affection sur le
bonheur qu'elles procuraient à ceux qui lui étaient unis par les liens
du sang.

La transformation complète du caractère d'Élisabeth, son esprit


enjoué, son cœur excellent, l'avaient rendue chère à toute la famille
royale et particulièrement au Roi son frère. Heureux de voir que chez
elle la sagesse et la raison avaient devancé l'âge, Louis XVI pensa
qu'il pouvait pour elle devancer l'époque où l'on formait
habituellement la maison d'une fille de France. Une circonstance
semblait favoriser son intention. La Reine était au moment de
donner le jour au premier gage d'une alliance formée depuis huit
ans, et il fut convenu que les personnes chargées de l'éducation de
Madame Élisabeth passeraient à celle de l'enfant royal si ardemment
désiré[79].

Madame Élisabeth va donc se trouver maîtresse de toutes ses


actions, et elle n'a pas quinze ans! Elle va être entourée de toutes
les splendeurs de la fortune, appelée par tous les plaisirs, observée
par tous les regards. Elle n'a pas quinze ans, et elle est libre! Qu'est-
ce que la liberté à cet âge, si ce n'est la cessation des études, les
amusements, la toilette, la parure et les fêtes? Ce n'est pas là le
programme que se trace la jeune sœur du Roi. Son changement
d'état lui inspire le plus grand effroi, mais il n'en inspire qu'à elle;
elle a pris dans sa conscience la volonté d'exercer sur elle-même la
surveillance et le contrôle que ses institutrices n'exerceront plus. Elle
s'est dit: «Mon éducation n'est pas terminée, je la continuerai selon
les règles établies. Je conserverai tous mes maîtres, j'écouterai les
conseils avec plus d'attention, je suivrai leur exemple avec plus de
docilité; je ne verrai que les dames qui m'ont élevée ou qui sont
attachées à ma personne. Ce n'est pas contre moi que je me
prémunis, c'est contre la méchanceté du siècle, si ingénieuse à saisir
l'occasion de calomnier. Comme par le passé, je visiterai mes
respectables tantes, les dames de Saint-Cyr, les Carmélites de Saint-
Denis; les mêmes heures seront consacrées à la religion, à l'étude
des langues et des belles-lettres, aux conversations instructives, à
mes promenades à pied et à cheval.» Tout ce qu'elle se promettait,
elle le tint. Aussi plus tard, lorsqu'elle allait voir ou qu'elle recevait
chez elle ses anciennes institutrices, elle put leur dire plus d'une fois,
avec une douce et naïve fierté: «Je veux que vous me trouviez
toujours digne de votre sourire et de votre approbation.»

Maintenant que l'heure de la jeunesse a sonné pour Madame


Élisabeth, dois-je essayer de crayonner ici son portrait, quand elle-
même avait une invincible répugnance à permettre la reproduction
de ses traits? Dirai-je que sa taille n'était pas élevée, que son port
était privé de cette majesté qu'on admirait dans la Reine, et que son
nez avait la forme qui caractérisait la physionomie bourbonienne? Je
le veux bien; mais j'ajouterai, pour être juste, que son front, dont les
lignes pleines de pureté imprimaient à sa physionomie un cachet de
noblesse et de candeur, ses yeux bleus avec leur douceur
pénétrante, sa bouche, dont le sourire laissait apercevoir des dents
d'ivoire, et enfin l'expression d'esprit et de bonté répandue sur toute
sa personne, formaient un ensemble charmant et sympathique.

«La vigilance de son ange gardien, dit M. de Falloux dans son


beau livre de Louis XVI, ne la surprit jamais sans trouver le zèle de
la religion dans ses actions ou dans ses pensées. Pleine d'attraits
devant Dieu, elle était parée aussi de tous les dons qui séduisent le
monde..... Le reflet de l'âme brillait dans ses yeux comme dans ses
paroles; intime complément de son frère, dont elle vécut et mourut
inséparable, elle était la bonne grâce de toutes ses vertus.»

Telle était Madame Élisabeth à quinze ans lorsque, sortie des


mains de mesdames de Guéménée et de Mackau, elle prit à la cour
son rang de fille de France et de sœur du Roi.
Son appartement dans le palais de Versailles était situé à
l'extrémité de la façade de l'aile du midi, ayant vue sur la pièce d'eau
des Suisses. Le gouvernement de Juillet a fait disparaître les cloisons
qui formaient les différentes chambres de cet appartement, et en a
formé une seule et même salle destinée à recevoir les tableaux
représentant les événements de 1830, et qui fait suite à la galerie
des Batailles. Le visiteur qui s'arrête devant les scènes de la
révolution de juillet ne se doute pas que le lieu où il les contemple a
été sanctifié par la plus innocente victime d'une autre révolution.

Le samedi 19 décembre, vers minuit et demi, Marie-Antoinette


ayant ressenti les premières douleurs de l'enfantement, la princesse
de Chimay, sa dame d'honneur, alla avertir le Roi, qui se rendit chez
la Reine. Toute la famille royale fut également avertie et se trouva
bientôt réunie dans le grand cabinet de Sa Majesté, où arrivèrent
aussi le garde des sceaux de France, les ministres et secrétaires
d'État, tous les officiers et dames de la cour. Les douleurs de la
Reine durèrent toute la nuit. Avertis dès six heures du matin par
l'arrivée d'un page du duc de Cossé, gouverneur de la capitale, le
prévôt des marchands et échevins, procureur du Roi, greffier et
receveur, composant le bureau de la ville de Paris, s'étaient rendus
sur-le-champ à l'hôtel de ville. À une heure, le marquis de Béon,
sous-lieutenant des gardes du corps, y arriva et annonça de la part
du Roi que la Reine était accouchée d'une princesse à onze heures
trente-cinq minutes du matin.

«Cette nouvelle, dit la Gazette de France du mardi 22 décembre


1778, fut annoncée sur-le-champ au peuple par une décharge de
l'artillerie de la ville, dont le bureau députa les deux premiers
échevins, qui se transportèrent dans les prisons et firent sortir tous
les prisonniers qui y étoient détenus pour mois de nourrice, après les
avoir acquittés à cet égard.—Le soir, il fut allumé sur la place, devant
l'hôtel de ville, un feu en cérémonie par le gouverneur et le prévôt
des marchands et échevins, procureur du Roi, greffier et receveur; il
y a eu distribution de pain et de vin à deux buffets, dans la même
place, et à côté de chacun de ces buffets étoit un orchestre garni de
musiciens; il fut aussi tiré des fusées volantes.—L'hôtel de ville, les
hôtels et maisons des gouverneur, prévôt des marchands et
échevins, procureur du Roi, greffier et receveur, furent illuminés.—
On apprend par le bulletin du 20 de ce mois, signé Lassonne, que
l'état de la Reine est aussi satisfaisant qu'on peut le désirer.»

La princesse qui venait de naître fut nommée Marie-Thérèse-


Charlotte et titrée Madame, fille du Roi. Elle fut baptisée le même
jour par le cardinal prince Louis de Rohan-Guéménée, grand
aumônier de France, en présence du sieur Broquevielle, curé de la
paroisse Notre-Dame, et tenue sur les fonts de baptême par
Monsieur[80], au nom du roi d'Espagne, et par Madame, au nom de
l'Impératrice-Reine, le Roi étant présent, ainsi que tous les princes et
princesses du sang.

La correspondance de madame de Bombelles avec son mari,


ministre du Roi près de la diète germanique, que nous aurons
souvent l'occasion de citer, nous apprend, à la date du 20 mars
1779, que Madame Élisabeth se trouva fort incommodée l'avant-
veille. «Elle eut, dit-elle, une très-forte fièvre pendant la nuit, et hier
à trois heures et demie la rougeole a paru. Tu imagines bien que je
ne l'ai pas quittée. Cette nuit a été très-bonne; elle a peu de fièvre
ce soir, et les médecins assurent qu'il n'y a pas la plus petite
inquiétude à avoir. Tu ne peux pas imaginer le chagrin que j'avois. Je
suis parfaitement tranquille actuellement.»

C'est vers cette époque que la Reine commença à apprécier sa


belle-sœur. Madame de Bombelles écrivait le 22 avril: «Madame
Élisabeth est venue nous voir aujourd'hui; elle est revenue hier de
Trianon. La Reine en est enchantée; elle dit à tout le monde qu'il n'y
a rien de si aimable, qu'elle ne la connoissoit pas encore bien, mais
qu'elle en avoit fait son amie, et que ce seroit pour toute sa vie.»

Madame Élisabeth n'avait point encore été vaccinée. Elle regarda


comme un devoir de suivre l'exemple que ses tantes et ses frères
avaient donné[81]. Elle se rendit le 23 octobre à Choisy, où devait
avoir lieu l'inoculation[82]. Elle demanda que douze enfants pauvres
du pays y fussent associés et reçussent les mêmes soins qu'elle-
même. Son vœu fut écouté. Ce fut encore M. Goetz qui fit
l'opération, et sur les sept filles et les cinq garçons que l'habile
chirurgien y avait préparés, aucune n'eut à regretter d'avoir couru
les mêmes chances que la sœur du Roi et d'avoir montré la même
confiance qu'elle. Le succès fut complet[83], et plus d'une de ces
jeunes filles lui demeura reconnaissante. C'était par son exemple en
effet qu'elles avaient été encouragées à se soumettre à l'inoculation,
et ce fut ainsi qu'elles furent placées à l'abri d'un fléau qui, lorsqu'il
ne prend pas la vie, altère ou détruit la santé.

L'année suivante, un grand malheur atteignit la Reine et par


contre-coup toute la famille royale.

Dans la soirée du mercredi 6 décembre 1780, on apprit à


Versailles la nouvelle de la mort de l'Impératrice-Reine.

Louis XVI, par l'entremise de M. de Chamilly, son premier valet de


chambre, chargea l'abbé de Vermond d'apprendre avec ménagement
ce triste événement à la Reine, le lendemain matin, et de l'avertir du
moment où il entrerait chez elle, ayant l'intention de s'y rendre lui-
même un quart d'heure après. Louis XVI s'y présenta à l'heure
indiquée; on l'annonça; l'abbé sortit, et comme il se rangeait sur le
passage du Roi, celui-ci lui dit ces mots, les seuls que pendant
l'espace de dix-neuf ans il lui ait adressés de vive voix: «Je vous
remercie, monsieur l'abbé, du service que vous venez de me
rendre.»

La douleur de la Reine fut telle que Louis XVI avait pu la prévoir et


la redouter. La cour prit spontanément, le jeudi 7, le deuil de
respect, n'attendant pas que le Roi eût fixé le jour auquel le grand
deuil de cour serait pris. Marie-Antoinette demeura enfermée
pendant plusieurs jours dans ses cabinets, où elle ne laissa accès
qu'aux membres de la famille royale, à la princesse de Lamballe et à
madame de Polignac.
L'Impératrice-Reine de Hongrie et de Bohême avait cessé de vivre
le 29 novembre, à l'âge de soixante-trois ans. Les détails qui
arrivèrent bientôt de Vienne augmentèrent encore l'émotion qu'avait
causée la première nouvelle de sa mort. Marie-Thérèse avait voulu
connaître au juste le moment de sa fin. L'Empereur, son fils,
s'évanouit en entendant l'arrêt prononcé par le premier médecin.
L'Impératrice, avec une fermeté héroïque, le soutint, lui prodigua ses
consolations, ses conseils, et lui dicta même des lettres destinées à
tout régler dans l'Empire et à faciliter les débuts d'un règne. «Je
meurs, dit-elle, avec le regret de n'avoir pu faire à mes peuples tout
le bien que j'aurais désiré et de n'avoir pu détourner tout le mal
qu'on leur a fait à mon insu[84].» Au milieu des événements divers
qui avaient illustré son règne, cette grande princesse n'avait jamais
abandonné les sentiments de l'humilité chrétienne. Le linceul et les
vêtements qui devaient servir à l'ensevelir, faits entièrement de sa
royale main, attendaient dans l'armoire d'un de ses cabinets cette
heure inévitable, qu'elle avait toujours envisagée avec un esprit
calme et résigné.

Ses obsèques eurent lieu à Vienne le dimanche 3 décembre. Son


cercueil, après les cérémonies funèbres accomplies avec une pompe
solennelle, fut descendu dans l'église des Capucins, auprès de celui
de feu l'Empereur François Ier, en présence du grand maître de la
cour impériale. Son cœur, renfermé dans une urne, fut déposé au
couvent des Augustins déchaussés de Vienne[85]; ses entrailles
furent déposées dans l'église métropolitaine de Saint-Étienne[86].

La coutume en Allemagne est de prier pour les morts le lendemain


de leurs funérailles, et devant un catafalque d'où leur dépouille est
absente.

Le lundi 4 décembre, un superbe cénotaphe fut élevé par la piété


filiale à l'auguste défunte et environné des hommages de tout un
peuple. La postérité qui commençait pour Marie-Thérèse lui
décernait le titre glorieux de mère de la patrie.
Deux jours après, l'Empereur écrivait à son premier ministre le
prince de Kaunitz:
«Jusqu'à présent je n'ai su qu'être fils obéissant, et voilà à
peu près tout ce que je savois. Par le coup le plus mortel, je
me trouve à la tête de mes États et chargé d'un fardeau que
je reconnois être beaucoup au-dessus de mes forces. Ce qui
me rassure, c'est la persuasion, mon prince, qu'en me
continuant vos sages conseils et vos bons avis, je me
trouverai essentiellement soulagé dans cette tâche difficile et
importante; c'est pour vous en requérir de mon mieux que je
vous adresse cette lettre.

»À Vienne, le 6 décembre 1780.»

La Reine ayant reçu de Vienne communication de cette lettre, dit


au Roi: «En vérité, mon frère en agit avec le prince de Kaunitz
absolument comme vous en avez agi envers M. de Maurepas. Sans
doute il est bon que les souverains demandent le concours des
hommes dévoués et capables, mais il ne faut pas qu'ils se défient
entièrement d'eux-mêmes.»

Marie-Thérèse, par testament fait conjointement avec feu


l'Empereur son époux, avait légué à chacun de ses enfants un
revenu annuel de quarante mille florins. Indépendamment de ce
legs, le grand-duc de Toscane avait la seigneurie de Golsing et
Holitsch, et le coadjuteur de Cologne et de Munster, le château de
Schlofshoff et la jouissance de trois seigneuries qui devaient
retourner à la couronne dès que l'archiduc serait parvenu à la dignité
d'électeur de Cologne. Une clause de ce testament assignait par
forme de legs un mois d'appointements à tous les militaires, depuis
le feld-maréchal jusqu'au dernier soldat.

L'Empereur voulut que ces legs ne coûtassent rien au trésor de


l'État; il les acquitta lui-même, «ne pouvant, disait-il, mieux
employer un argent qui m'appartient personnellement et qui provient
de la succession de mon père». Puis, pour honorer encore la
mémoire de sa glorieuse mère, il ordonna qu'une des deux nouvelles
forteresses qu'on élevait en Bohême, près de Leutmeritz, porterait le
nom de Theresienstadt.

La perte de cette illustre princesse était partout ressentie. Frédéric


II écrivait à d'Alembert: «J'ai donné des larmes bien sincères à sa
mort; elle a fait honneur à son sexe et au trône. Je lui ai fait la
guerre, et je n'ai jamais été son ennemi.»

S'il est beau de voir les grandes âmes toujours bien jugées par les
grands hommes, il est touchant aussi de voir les vertus des mères
passer comme un héritage aux enfants et devenir leur entretien le
plus aimé. Marie-Antoinette se plaisait à parler de la bonté de sa
mère (la bonté, dont Bossuet a dit que c'était le trait qui rapprochait
le plus les souverains de Dieu), à citer des actes de charité dont elle
avait été elle-même témoin. «Combien ma mère valait mieux que
nous! dit-elle un jour; ma mère, qui trouvait que le spectacle d'un
seul pauvre suffisait pour déshonorer son règne!» Une autre fois,
s'étant attardée au lit plus longtemps que de coutume, elle s'écria:
«Et ma mère qui se reprochait le temps qu'elle donnait au sommeil,
disant que c'était autant de dérobé à ses peuples!»

Le dimanche 22 avril 1781, après avoir assisté aux vêpres et au


salut dans la chapelle du château, la cour avait quitté Versailles à
sept heures pour aller souper et coucher à Marly. Elle demeura dans
cette résidence jusqu'au 20 mai.

Madame Élisabeth, accompagnée de la comtesse Diane, vint à


Versailles le 14, conduite surtout par le désir de voir madame de
Bombelles. Celle-ci, prévenue de l'arrivée de sa princesse, vole
aussitôt vers elle. Je vais laisser la parole à cette charmante femme.
Comme personne ne connut mieux Madame Élisabeth, personne ne
l'aima plus, personne ne sut mieux en parler. Qu'est-ce que le récit
du passé, toujours un peu froid dans la bouche de l'historien, auprès
de cette correspondance qui fait reparaître le passé lui-même avec
les fraîches couleurs de la vie? Quelle femme, quelle mère, quelle
amie que madame de Bombelles! Sa plume, tour à tour enjouée,
attendrie, spirituelle, sérieuse, va évoquer pour nous la société des
dernières années du dix-huitième siècle, société qui ne fut point sans
reproche sans doute, mais qu'on a calomniée en généralisant le
blâme porté sur ses idées et sur ses mœurs, ce qui est un déni de
justice à tant de femmes aussi vertueuses que charmantes, en tête
desquelles je placerai les amies de Madame Élisabeth.

Voici les lettres de madame de Bombelles à son mari:—«J'ai été,


écrit-elle, le 15 mai, la trouver dans son appartement. Elle m'a dit
que la Reine vouloit absolument que j'allasse demain à Marly, où il y
auroit un grand déjeuner et une partie de barres. Je voudrois bien y
aller, parce que ce seroit un moyen d'y faire ma cour; mais la visite
du comte d'Esterhazy pourroit bien m'en empêcher. Je me préparerai
pour partir; si le comte vient me voir de bonne heure, j'irai; s'il arrive
tard, je n'irai pas, et j'ai prié Madame Élisabeth de dire dans ce cas à
la Reine que je ne pense pas y aller, que mon fils étoit malade
(j'espère que cela ne lui portera pas malheur, à ce pauvre petit
chou!)»

Madame de Bombelles put aller à Marly, et après avoir exprimé à


son mari, dans une lettre datée du 17, tout le regret qu'elle eut de
quitter son fils, toutes les inquiétudes qui assiégèrent son esprit
pendant cette courte absence, tout le bonheur qu'elle eut en le
trouvant au retour calme et endormi, elle ajoute: «Tu te fais une
idée de ma joie: j'étois transportée et fort aise d'avoir été à Marly,
parce que j'y ai été reçue à merveille. La Reine n'a pas cessé d'être
occupée de moi, de me parler de mon fils, combien elle l'avoit trouvé
beau, de me plaisanter sur la peur que j'avois eue d'entrer dans le
salon; enfin elle m'a traitée comme si elle m'aimoit beaucoup. Elle a
été hier matin à la petite maison et a dit à madame de Guéménée et
à ma sœur qu'elle étoit fort aise de mon retour, qu'elle m'avoit
trouvée blanchie, parlant beaucoup mieux, et un maintien
charmant.» Eh bien, si flatteurs que fussent ces succès, madame de
Bombelles préférait à la vie de cour la vie tranquille et retirée qu'elle
avait menée à Ratisbonne. Les succès de son fils bien-aimé, de
Bombon, comme elle l'appelait, la flattaient infiniment plus que les
siens. Cette humble et simple femme était une orgueilleuse mère;
elle comptait bien, quand les roses de la santé auraient refleuri sur
les joues de son enfant, le montrer dans tout l'éclat de sa beauté. En
attendant, elle jouissait délicieusement de l'intérêt que Madame
Élisabeth témoignait à Bombon d'abord, à elle ensuite. «Madame
Élisabeth, continue-t-elle, a eu la bonté de m'envoyer tout à l'heure
un courrier pour avoir de ses nouvelles. Mon Dieu, qu'elle est
aimable! d'honneur, je l'aime à la folie. Si tu avois vu combien elle
étoit contente de mes petits succès d'avant-hier, comme elle est
venue tout doucement m'arranger mon fichu, afin qu'il eût meilleure
grâce, me dire la manière dont il falloit que je remerciasse la Reine
de ce qu'elle m'avoit invitée à cette partie, réellement j'étois
attendrie de son intérêt pour moi, et je voudrois avoir mille manières
de lui montrer ma reconnoissance.»

Le 29 mai, de Villiers, habitation d'été de M. et madame de


Travanet, ses beau-frère et belle-sœur, madame de Bombelles
écrivait à son mari: «... Conçois-tu qu'il n'y ait que vingt jours que
nous sommes séparés? Il me semble, en vérité, qu'il y a vingt mois.
Comment ferai-je pour être un an sans le voir? Mon Dieu, que cela
m'ennuie! Mais il faut du courage: je vais bien m'occuper de tes
affaires, de mon petit Bombon, et le temps se passera, car enfin tout
passe. Je regarde cette année-ci comme un temps de pénitence, et
celle où je te verrai, je serai aussi heureuse que je le suis peu
actuellement. Il faut avouer que j'ai bien des dédommagements par
Madame Élisabeth, qui me comble de bontés. J'en sens tout le prix,
mais j'en jouirai davantage lorsque tu seras avec moi. J'ai toujours
oublié de te dire qu'elle m'a priée d'aller voir M. d'Harvelay et de
l'engager à lui prêter deux mille louis pour pouvoir se liquider vis-à-
vis de M. de Travanet, de la comtesse Diane à qui elle doit cinq cents
louis, des marchands; enfin, avec cette somme, elle ne devra plus
rien. J'ai cru ne pas devoir lui refuser ce service, et j'irai pour cette
raison à Paris jeudi; pourvu que M. d'Harvelay n'aille pas imaginer
que cet argent soit pour nous, comme avoit fait M. de Travanet;
j'espère que non, et qu'il ne refusera pas cette somme à Madame
Élisabeth. Je t'avouerai que j'aimerois autant n'être pas chargée de
É
cette commission; mais comment faire? Madame Élisabeth m'auroit
su fort mauvais gré de mon peu de complaisance, et j'aurois manqué
à la reconnoissance et à l'attachement que je lui dois.....»

«À Versailles, ce 7 juin 1781.

»Je quitte Madame Élisabeth pour te dire un petit mot. Elle


ne vouloit pas me laisser aller; mais lorsque je lui ai dit que
j'avois envie de t'écrire parce que le courrier partoit demain
de Paris, et que sans cela tu serois cinq jours sans avoir de
mes nouvelles, elle m'a répondu: «Va-t'en, dis-lui bien des
choses de ma part, et, quoiqu'il me prive ce soir de toi, que je
l'aime de tout mon cœur.» Elle a toujours pour moi des
bontés charmantes; il n'y a sortes d'amitiés qu'elle ne me
témoigne, et je lui suis réellement bien tendrement
attachée.....

»J'ai dîné aujourd'hui chez maman, et nous nous sommes


amusées ensemble comme des reines; nous avons causé...
nous avons joué avec Bombon, qui entend la plaisanterie à
merveille, et qui a d'autant bien teté. De là nous avons été
chez Madame Élisabeth, où j'ai passé trois quarts d'heure.
Madame de Canillac y étoit, avec laquelle je suis fort
honnêtement, et je suis revenue te souhaiter le bonsoir avant
d'endormir Bombon. Huit heures sonnent: je te quitte pour ce
petit marmot; sa nuit commence tous les jours à cette heure-
ci.....»

«À Versailles, ce 10 juin 1781.

»...... M. de Maurepas a pensé être brûlé à l'Opéra avant-


hier. Un moment après qu'il en étoit sorti, la toile s'est
allumée par un lampion: le feu a gagné aux décorations et au
reste du théâtre avec une si grande promptitude, qu'au bout
de vingt-cinq minutes la voûte est tombée avec un fracas
épouvantable. Heureusement l'opéra étoit fini..... Cependant
neuf personnes ont été brûlées. Le feu dure encore. On a
bien vite coupé toute communication; de sorte que tout ce
qui environne l'Opéra n'est pas endommagé. Le feu étoit si
fort que mes gens l'ont vu d'ici en soupant: on pouvoit lire sur
le pont de Sèvres; ainsi tu peux juger de la clarté que cela
donnoit à tout Paris. On frémit quand on pense que si le feu
avoit pris un peu plus tôt, il y auroit eu des milliers de
personnes brûlées.....»

Sans cesse le nom, les bontés charmantes de Madame Élisabeth


reviennent sous la plume de madame de Bombelles, heureuse de
devoir à son amie le vif intérêt de la Reine et ces prévenances qui
ont tant de prix quand elles descendent de si haut. La lettre suivante
est datée de

«Versailles, le 13 juin 1781.

»..... J'ai été avant-hier au soir au concert de la Reine avec


Madame Élisabeth. La Reine m'a demandé comment je me
portois ainsi que mon enfant, et si cela ne le dérangeoit pas
que je vinsse au concert. Je lui ai dit qu'il venoit de teter. Elle
a repris: «Mais, si vous vouliez, on pourroit l'amener ici.» J'ai
paru confondue de ses bontés, et lui ai répondu que je
craindrois d'en abuser; qu'il attendroit fort bien mon retour.
Effectivement cela ne lui a pas fait de mal. Je suis rentrée à
neuf heures chez moi; il a teté et s'est endormi tout de suite.
Il s'endort ordinairement à huit heures, huit heures et demie;
mais ce petit retard ne lui a rien fait. Ce pauvre petit chat ne
me gêne pas du tout: il boit et mange parfaitement, et se
passeroit fort bien de teter toute la journée; mais aussi il ne
peut pas, la nuit, se passer de moi. Il est accoutumé à
s'endormir, le soir, à mon sein, à teter toutes les fois qu'il se
réveille, et ce régime lui réussit si bien et me gêne si peu, que
je ne suis pas pressée de le sevrer.....»
Tous les incidents, tous les événements, les rumeurs même de
chaque jour viennent retentir dans cette correspondance, sorte de
journal par lequel madame de Bombelles tient son mari au courant
de tout ce qui peut l'intéresser.

«Versailles, ce 14 juin 1781.

. . . . . . . . . . .
. . .

»On vient de me dire que l'Empereur étoit arrivé hier soir à


Paris. Je suis étonnée qu'il ne soit pas tout de suite venu à
Versailles. J'imagine que la Reine l'attend avec beaucoup
d'impatience.

»La procession du Saint-Sacrement, qui s'est faite ce matin,


étoit superbe: il faisoit le plus beau temps du monde. J'ai été
la voir passer d'une fenêtre: Madame Élisabeth m'a dispensée
de l'accompagner, ce qui m'a fait grand plaisir, car par la
chaleur qu'il faisoit j'aurois fait du mal à mon lait.....

»Le feu de l'Opéra dure toujours. Madame la duchesse de


Chartres a quitté prudemment le Palais-Royal, et s'est établie
à Saint-Cloud.....»

«À Versailles, ce 17 juin 1781.

. . . . . . . . . . .
. . .

»Madame de Clermont est dans le chagrin, de son côté,


parce que son fils va entrer au service et qu'elle n'a pas de
quoi l'y soutenir. M. de Castries ne veut rien faire pour elle.
Madame Élisabeth m'a promis de lui parler en sa faveur. Cette
pauvre femme est presque dans le désespoir, et sera obligée
de quitter Versailles si elle n'obtient rien, parce qu'elle n'y
peut plus vivre. Cela me fait réellement de la peine: je trouve
qu'il est impossible de ne pas être malheureux soi-même de
l'infortune des autres, et le tableau continuel des maux de
l'humanité seroit bien fait pour détacher de la vie.....

»L'Empereur n'étoit pas à Paris: je t'avois mandé une


fausse nouvelle; mais il viendra bientôt, passera quelques
jours ici dans le plus grand incognito, et ne verra
personne.....»

Dans ces lettres de madame de Bombelles, on peut saisir pour


ainsi dire jour par jour la vie de Madame Élisabeth, car ces deux
inséparables amies ne se quittent guère, et la Reine prend soin elle-
même de les rapprocher. Les lettres suivantes furent écrites à
Versailles: les gloires de ce règne, qui compte tant de malheurs, y
jettent un reflet.

«À Versailles, ce 23 juin 1781.

. . . . . . . . . . .
. . .

»Madame Élisabeth va s'établir après-demain à Trianon


avec la Reine. Elles y resteront six jours. La Reine a dit à
Madame Élisabeth qu'il falloit que je l'allasse voir tous les
matins; qu'elle étoit désolée de ne pouvoir m'offrir à dîner et
à souper; mais que, comme elle n'avoit pas de dames de
palais avec elle, qu'il n'y auroit que la duchesse de Polignac,
elle craignoit que cela ne causât trop de jalousie.—J'aurois
trouvé fort simple que la Reine ne pensât pas à moi; ainsi je
ne suis pas choquée qu'elle ne veuille pas me donner à dîner,
mais très-sensible à la permission qu'elle veut bien me donner
d'aller le matin à Trianon, permission que personne n'a: j'ai
prié Madame Élisabeth de lui en faire ce soir mes
remercîments.....»

À
«À Versailles, ce 27 juin 1781.

»J'ai été à Trianon ce matin voir Madame Élisabeth avec


quelque curiosité, parce que tout Paris disoit que l'Empereur y
étoit et qu'il alloit l'épouser. Il n'en est pas un mot; il est
toujours à Bruxelles, et il n'est pas même certain qu'il vienne
ici. Ainsi ma tête a bien trotté inutilement.....

»J'allois oublier de te dire la nouvelle que M. de Castries est


venu annoncer ce matin à la Reine: il y a eu un combat entre
l'amiral Rodney et M. de Grasse. L'amiral a eu cinq de ses
vaisseaux coulés à fond, deux autres mis en fort mauvais
état. Le convoi est arrivé sans le plus petit accident, et M. de
Grasse a perdu fort peu de monde. Mon regret est qu'il n'ait
pas pu prendre l'amiral, cela auroit mis le comble à ses
exploits. Je voudrois bien que quelques affaires de ce genre
forçassent les Anglois à faire la paix.....

»Ce mariage de Madame Élisabeth m'a bien occupée. Car


enfin, si elle étoit heureuse, quel bonheur ce seroit pour moi
de la savoir contente, et de ne plus te quitter! Quant à ta
fortune, elle pourroit y aider encore davantage étant
impératrice; et ne plus te quitter, ne comptes-tu cela pour
rien? Mon Dieu! cela n'arrivera jamais, ma destinée est de ne
te pas voir la moitié de ma vie: cela est affreux; cette
perspective me cause un chagrin que je ne puis te rendre. Il y
a des moments où la maladie du pays me prend, où je pleure,
je me désespère, où je suis tentée de laisser ma place, tout
ce que je puis espérer, pour m'en aller avec toi. La raison, la
reconnoissance que je dois à Madame Élisabeth, me font
revenir de cette espèce de délire; mais la raison empêche de
faire des sottises, et ne rend pas plus heureux pour cela ceux
qui l'écoutent. C'est l'effet qu'elle produit sur moi; je m'ennuie
prodigieusement, je ne te le dissimule pas, et si le bon Dieu
et toi ne m'avoient donné Bombon, je t'assure que je ne
resterois pas ici.»
À
«À Versailles, ce 2 juillet 1781, à neuf heures du soir.

»Je me suis bien amusée ce soir: j'ai été avec ma petite


belle-sœur et madame de Clermont à la Comédie, où
Madame Élisabeth étoit avec la Reine. On a donné Tom Jones
et l'Amitié à l'épreuve. Madame Saint-Huberti, une fameuse
de l'Opéra, a fait les deux principaux rôles. Je me suis en
allée au commencement de la seconde pièce endormir mon
petit Bombon, qui est actuellement paisiblement endormi
dans son berceau. J'avoue que si la crainte que Bombon n'eût
trop envie de dormir ne m'avoit distraite du plaisir que j'avois
au spectacle, rien dans le monde n'eût pu m'en arracher, car
le commencement de l'Amitié à l'épreuve, que je ne connois
pas, m'a paru charmant; mais j'ai été bien dédommagée en
voyant mon petit enfant qui étoit fort content de mon
retour.....»

«À Versailles, ce 14 juillet 1781.

. . . . . . . . . . .
. . .

»Sais-tu les grandes nouvelles? On dit que M. de Grasse a


repris Sainte-Lucie; qu'il a coulé à fond deux vaisseaux de
l'escadre de Hodges, et qu'il en a pris deux. Cela est si beau
que je ne le croirai que lorsque nous le saurons par M. de
Grasse lui-même. Jusqu'à présent nous ne le croyons que sur
le rapport de papiers anglois, qui s'amusent peut-être à écrire
de mauvaises nouvelles pour eux afin de nous causer de
fausses joies.....

»C'est demain soir que la Reine et Madame Élisabeth


partent pour Trianon.....»

Les lettres qui suivent sont animées par le sentiment si touchant


et si vrai de l'amour maternel, qui de génération en génération
recommence son doux et immortel poëme auprès de tous les
berceaux; en même temps, on y voit s'éclipser l'espoir d'un mariage
de Madame Élisabeth avec l'Empereur, qui avait un moment lui aux
regards de son incomparable amie.

«De Versailles, ce 28 juillet 1781.

. . . . . . . . . . .
. . .

»C'est demain le grand jour, celui où vont commencer mes


inquiétudes. L'enfant se porte à merveille, mais je ne suis pas
tranquille. Je crains que d'être sevré ne le rende malade, et si
j'eusse été absolument maîtresse, je ne m'y serois pas encore
résolue; mais maman le désire si fort, craint tant que cela
n'attaque ma santé, que je n'ai pas osé reculer... Je ne sais ce
que je donnerois pour ne pas le sevrer, et quand une fois ce
temps-là sera passé, je serai bien contente.....»

«À Versailles, ce 4 août 1781.

»Bombon se porte à merveille, il a parfaitement bien dormi


l'autre nuit et celle-ci; mais celle d'auparavant, qui étoit la
seconde après notre séparation, ce pauvre petit avoit bien du
chagrin. Il vouloit absolument teter; il pleuroit, il appeloit:
Maman! maman! me cherchoit partout, et ensuite faisoit de
grands soupirs et se remettoit à pleurer. Cela n'est-il pas
touchant au possible? À présent, il n'a plus de chagrin; mais,
malgré cela, il parle de moi toute la journée, me cherche et
fait signe avec son petit doigt qu'il faut aller à la porte du
jardin, que j'y suis. J'ai pleuré d'attendrissement lorsqu'on m'a
donné ces détails. J'adore cet enfant, et les marques
d'attachement qu'il m'a montrées dans cette occasion ne
s'effaceront jamais de mon cœur ni de ma mémoire. J'irai
aujourd'hui à Montreuil: le cœur m'en bat d'avance. Je verrai
mon bijou, mais il ne me verra pas, il est trop occupé de moi;
cela renouvelleroit tous ses chagrins, et je l'aime trop pour
désirer des jouissances aux dépens de sa tranquillité. Ainsi
j'attendrai encore quelques jours pour l'embrasser. Je te
réponds bien que, cette besogne faite, rien dans ce monde ne
pourra plus m'en séparer que le moment où tu t'en
empareras......

»... Je n'espère plus que Madame Élisabeth épouse


l'Empereur. Il part aujourd'hui, et si on avoit eu quelques
idées, on auroit cherché à les faire causer, à les rapprocher.
Au lieu de cela, la Reine a paru peu occupée de Madame
Élisabeth pendant le séjour de son frère ici, et ne lui a jamais
rien dit qui eût le moindre rapport à ce sujet. Ainsi cela
sûrement ne sera pas.

»Madame Élisabeth m'a témoigné tout plein de bontés


depuis que j'ai sevré Bombon. Elle est venue me voir tous les
jours, ainsi que madame de Sérent, qui me témoigne
infiniment d'amitiés.....»

«À Versailles, ce 6 août 1781.

. . . . . . . . . . .
. . .

»Nous avons des raisons pour avoir actuellement la


certitude que l'Empereur n'épousera pas Madame Élisabeth.
J'en suis bien aise et fâchée: c'est peut-être fort heureux pour
elle, cela ne l'est pas tant pour moi, puisque j'aurois toujours
été avec toi si ce mariage s'étoit fait; mais je lui suis si
attachée qu'il m'auroit été impossible de jouir tranquillement
de ma liberté, si cela n'avoit pas fait son bonheur.....»

Les prévenances et les bontés de Madame Élisabeth pour


madame de Bombelles continuent. Celle-ci envoie-t-elle à son
mari une bourse brodée de ses mains, la princesse trouve bon
que les coulants qu'elle a donnés à son amie complètent ce
présent.

Puis voici le nom des Polignac, qui paraît dans ces lettres
comme un point noir à l'horizon. Les calomnies commencent.
Quand on veut détruire l'effet qu'elles peuvent produire sur
l'esprit de Madame Élisabeth, c'est à madame de Bombelles
qu'on s'adresse, comme pour obtenir une grâce de la
princesse.

«À Versailles, ce 12 août 1781.

. . . . . . . . . . .
. . .

»Je t'enverrai [prochainement] cette certaine bourse que je


t'ai mandé que je faisois. Je me flatte que tu seras content
des coulants; ils sont des plus à la mode, et ils te seront
encore plus précieux lorsque tu sauras que c'est Madame
Élisabeth qui me les a donnés et qu'elle trouve très-bien que
je te les envoye.....

»Tu auras été désolé d'apprendre la mort de l'abbé de


Breteuil. Le baron ne peut s'en consoler, et je crois que de sa
vie il n'a éprouvé une peine aussi forte. Cette mort-là m'a fait
faire bien des réflexions: cet abbé a vécu comme s'il n'eût dû
jamais mourir; ses plaisirs sont passés; le voilà mort: Dieu
seul sait à quoi il étoit réservé, et ce qu'il est devenu. En
vérité, quand on calcule bien la courte durée de cette vie et la
longueur de l'éternité, on apprécie bien à sa juste valeur les
objets de son ambition, et on prend une grande indifférence
pour tous les événements de ce monde.....

»J'ai soupé hier soir chez madame la princesse de


Lamballe. La Reine y est venue avec Madame Élisabeth, et
m'a fort bien traitée.....»
À
«À Paris, ce 24 août 1781.

. . . . . . . . . . .
. . .

»Je te dirai que j'ai été hier à Passy voir la comtesse Diane;
la conversation s'est tournée sur la santé. Elle m'a dit que
malgré l'extrême besoin qu'elle auroit eu d'aller aux eaux, les
propos infâmes qu'on avoit tenus sur son compte l'en avoient
empêchée, et qu'elle auroit mieux aimé mourir que de faire
aucune démarche qui eût donné la moindre vraisemblance
aux torts qu'on lui prêtoit; que tous ces propos lui avoient
causé la peine la plus sensible. Je lui ai répondu qu'ils étoient
si dénués de bon sens que je trouvois qu'elle avoit tort d'y
attacher un si grand prix, que toutes les personnes honnêtes
n'avoient pas douté un instant de leur fausseté. «Je me flatte,
a-t-elle ajouté, que Madame Élisabeth ne les aura pas sus.»
Je crois qu'elle les ignore, ai-je répondu (elle les savoit déjà à
mon arrivée à Versailles); d'ailleurs elle a une si belle âme et
vous rend trop de justice pour jamais les croire si on les lui
apprenoit.

»Là-dessus, je me suis fort étendue sur les qualités de ma


princesse. «Elle en a une, m'a-t-elle dit, qui me fait le plus
grand plaisir, c'est sa constance, et l'amitié qu'elle a pour vous
fait son éloge; elle ne pouvoit faire un meilleur choix. La
Reine, qui vous aime beaucoup, me le disoit encore
dernièrement.» Je lui ai dit à cela que je savois bien ce qu'elle
avoit eu la bonté de lui dire de moi ce jour-là, et que j'en
étois extrêmement reconnoissante (c'est le comte
d'Esterhazy, qui y étoit, qui me l'a dit). Ensuite, elle m'a dit
que pendant mon absence Madame Élisabeth l'avoit traitée
avec un froid qui l'avoit fort affligée. Alors mon embarras a
commencé: je ne savois plus que dire. Elle m'a demandé si je
n'en savois pas les raisons. Je lui ai répondu que je croyois
qu'on avoit fait dire à Madame Élisabeth beaucoup de choses
auxquelles elle n'avoit jamais pensé, qu'elle ne s'étoit jamais
plainte d'elle, et qu'il m'avoit paru au contraire qu'elle rendoit
justice dans toutes les occasions à ses procédés et à ses
attentions pour elle. Heureusement madame de Clermont est
arrivée et nous a interrompues. J'en ai été enchantée. La
comtesse D. m'a fort engagée à la revenir voir, m'a demandé
de tes nouvelles, de celles de Bombon, et m'a répété
plusieurs fois à quel point elle étoit sensible à ma visite.....»

«À Viarmes, ce 27 août 1781.

. . . . . . . . . . .
. . .

»En arrivant ici, j'ai trouvé une lettre charmante de


Madame Élisabeth. Cela n'est-il pas fort aimable à elle? Le
surlendemain, j'en ai reçu une autre qui étoit une réponse à
celle que je lui avois écrite. Elle me mande qu'elle l'avoit
reçue à la comédie, et que, comme elle avoit été longtemps à
la lire, la Reine lui avoit demandé avec le plus grand intérêt
s'il ne m'étoit arrivé aucun accident, et qu'elle lui avoit
répondu qu'elle étoit trop bonne, que je me portois fort bien.
«J'ai été bien fâchée, m'ajouta-t-elle, que ceci se soit passé à
la comédie; car, sans cela, le moment eût été bien favorable
pour lui rappeler notre affaire; mais tu peux être sûre que la
première occasion où je le pourrai, je ne l'échapperai pas.»
J'ai été d'autant plus sensible au regret que Madame
Élisabeth m'a marqué que je ne lui avois pas dit un mot
d'affaires, car j'aurois été trop affligée qu'elle eût pu imaginer
que je ne lui écrivois que par intérêt.....»

«À la Muette, le 8 septembre 1781.

. . . . . . . . . . .
. . .
»J'ai quitté hier mon petit Bombon à une heure de l'après-
dînée; il dormoit paisiblement. Je n'ai pu m'empêcher de
verser quelques larmes au moment de notre séparation. C'est
bête, mais je ne puis te rendre ce qui s'est passé en moi:
j'étois oppressée, et, malgré tous les efforts que je faisois
pour être gaie, je ne pouvois en venir à bout. Madame
Élisabeth m'avoit fait chercher pour pêcher, de sorte que j'ai
été obligée de le quitter une heure plus tôt que je ne devois.
J'avoue que cela m'a contrariée à mort; il faisoit à cette triste
pêche un vent et un soleil terribles; nous y sommes restées
jusqu'à deux heures trois quarts, et j'étois transie jusqu'aux
os. Nous ne sommes sorties de table qu'à quatre heures. J'ai
vitement été chez moi, espérant revoir encore un petit
moment mon pauvre enfant; point du tout: il étoit déjà parti
pour Montreuil. Tu avoueras que j'ai dû être bien contrariée
toute la journée. Je suis revenue chez Madame Élisabeth, où
je n'ai pas voulu être maussade, de façon que je m'efforçois
de rire de tout ce qu'on disoit, ce qui me donnoit sûrement un
air fort spirituel. Nous sommes parties à cinq heures, arrivées
ici à six heures et demie, avons fait nos toilettes pour être
rendues au salon à huit heures et demie. Là, j'ai été fort bien
traitée par tout le monde. Le Roi m'a parlé, Monsieur m'a
prise à côté de lui à souper, et a beaucoup causé avec moi
pendant ce temps-là, m'a questionnée sur Ratisbonne, sur toi,
etc. J'ai fait après souper une partie de truc avec Madame
Élisabeth, le chevalier de Crussol et M. de Chabrillant. Le
baron de Breteuil étoit dans le salon; il m'a demandé de tes
nouvelles. Le comte d'Esterhazy n'est pas ici, ce qui me
désespère; mais je pense qu'il y viendra ces jours-ci, car la
seule chose qui m'ait consolée de ce voyage est l'espoir de l'y
voir à mon aise; je serois bien piquée que cela ne fût pas,
mais je ne doute pas qu'il n'y vienne. La Reine est fort
occupée de la duchesse de Polignac. On attend d'un moment
à l'autre qu'elle accouche. Sa Majesté ira y dîner tous les
jours et y passera la journée; elle ne sera ici que pour l'heure
du salon. Madame Élisabeth monte à cheval, j'y monterai
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.

More than just a book-buying platform, we strive to be a bridge


connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.

Join us on a journey of knowledge exploration, passion nurturing, and


personal growth every day!

ebookbell.com

You might also like