100% found this document useful (12 votes)
69 views

Data Structures and Algorithms with JavaScript 1st Edition Michael Mcmillan download pdf

Michael

Uploaded by

ruoppfesketa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (12 votes)
69 views

Data Structures and Algorithms with JavaScript 1st Edition Michael Mcmillan download pdf

Michael

Uploaded by

ruoppfesketa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 60

Download the full version of the ebook at ebookname.

com

Data Structures and Algorithms with JavaScript 1st


Edition Michael Mcmillan

https://ebookname.com/product/data-structures-and-
algorithms-with-javascript-1st-edition-michael-mcmillan/

OR CLICK BUTTON

DOWNLOAD EBOOK

Download more ebook instantly today at https://ebookname.com


Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Data Structures and Algorithms in C 2nd Edition Michael T.


Goodrich

https://ebookname.com/product/data-structures-and-algorithms-in-c-2nd-
edition-michael-t-goodrich/

ebookname.com

Problem Solving with Algorithms and Data Structures Using


Python SECOND EDITION Bradley N. Miller

https://ebookname.com/product/problem-solving-with-algorithms-and-
data-structures-using-python-second-edition-bradley-n-miller/

ebookname.com

Clojure Data Structures and Algorithms Cookbook 25 recipes


to deeply understand and implement advanced algorithms in
Clojure 1st Edition Rafik Naccache
https://ebookname.com/product/clojure-data-structures-and-algorithms-
cookbook-25-recipes-to-deeply-understand-and-implement-advanced-
algorithms-in-clojure-1st-edition-rafik-naccache/
ebookname.com

David Griffiths and the Missionary History of Madagascar 1


Edition Gwyn Campbell

https://ebookname.com/product/david-griffiths-and-the-missionary-
history-of-madagascar-1-edition-gwyn-campbell/

ebookname.com
Discrete Time Branching Processes in Random Environment
1st Edition Götz Kersting

https://ebookname.com/product/discrete-time-branching-processes-in-
random-environment-1st-edition-gotz-kersting/

ebookname.com

A Playful Path Bernard De Koven

https://ebookname.com/product/a-playful-path-bernard-de-koven/

ebookname.com

Music in Words Trevor Herbert

https://ebookname.com/product/music-in-words-trevor-herbert/

ebookname.com

C Programming Program Design Including Data Structures


Fourth edition D. S. Malik

https://ebookname.com/product/c-programming-program-design-including-
data-structures-fourth-edition-d-s-malik/

ebookname.com

Water Infrastructure Issues 1st Edition James D. Haffner

https://ebookname.com/product/water-infrastructure-issues-1st-edition-
james-d-haffner/

ebookname.com
Equine Dermatology 1st Edition Danny W. Scott Dvm Dacvd

https://ebookname.com/product/equine-dermatology-1st-edition-danny-w-
scott-dvm-dacvd/

ebookname.com
www.it-ebooks.info
www.it-ebooks.info
Data Structures and Algorithms
with JavaScript

Michael McMillan

www.it-ebooks.info
Data Structures and Algorithms with JavaScript
by Michael McMillan
Copyright © 2014 Michael McMillan. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are
also available for most titles (http://my.safaribooksonline.com). For more information, contact our corporate/
institutional sales department: 800-998-9938 or [email protected].
Editors: Brian MacDonald and Meghan Blanchette Cover Designer: Karen Montgomery
Production Editor: Melanie Yarbrough Interior Designer: David Futato
Copyeditor: Becca Freed Illustrators: Rebecca Demarest and Cynthia Clarke
Proofreader: Amanda Kersey Fehrenbach
Indexer: Ellen Troutman-Zaig

March 2014: First Edition

Revision History for the First Edition:


2014-03-06: First release

See http://oreilly.com/catalog/errata.csp?isbn=9781449364939 for release details.

Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly
Media, Inc. Data Structures and Algorithms with JavaScript, the image of an amur hedgehog, and related
trade dress are trademarks of O’Reilly Media, Inc.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as
trademarks. Where those designations appear in this book, and O’Reilly Media, Inc. was aware of a trademark
claim, the designations have been printed in caps or initial caps.
While every precaution has been taken in the preparation of this book, the publisher and authors assume
no responsibility for errors or omissions, or for damages resulting from the use of the information contained
herein.

ISBN: 978-1-449-36493-9
[LSI]

www.it-ebooks.info
Table of Contents

Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

1. The JavaScript Programming Environment and Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1


The JavaScript Environment 1
JavaScript Programming Practices 2
Declaring and Intializing Variables 3
Arithmetic and Math Library Functions in JavaScript 3
Decision Constructs 4
Repetition Constructs 6
Functions 7
Variable Scope 8
Recursion 10
Objects and Object-Oriented Programming 10
Summary 12

2. Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
JavaScript Arrays Defined 13
Using Arrays 13
Creating Arrays 14
Accessing and Writing Array Elements 15
Creating Arrays from Strings 15
Aggregate Array Operations 16
Accessor Functions 17
Searching for a Value 17
String Representations of Arrays 18
Creating New Arrays from Existing Arrays 18
Mutator Functions 19
Adding Elements to an Array 19
Removing Elements from an Array 20

iii

www.it-ebooks.info
Adding and Removing Elements from the Middle of an Array 21
Putting Array Elements in Order 22
Iterator Functions 23
Non–Array-Generating Iterator Functions 23
Iterator Functions That Return a New Array 25
Two-Dimensional and Multidimensional Arrays 27
Creating Two-Dimensional Arrays 27
Processing Two-Dimensional Array Elements 28
Jagged Arrays 30
Arrays of Objects 30
Arrays in Objects 31
Exercises 33

3. Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
A List ADT 35
A List Class Implementation 36
Append: Adding an Element to a List 37
Remove: Removing an Element from a List 37
Find: Finding an Element in a List 38
Length: Determining the Number of Elements in a List 38
toString: Retrieving a List’s Elements 38
Insert: Inserting an Element into a List 39
Clear: Removing All Elements from a List 39
Contains: Determining if a Given Value Is in a List 40
Traversing a List 40
Iterating Through a List 41
A List-Based Application 42
Reading Text Files 42
Using Lists to Manage a Kiosk 43
Exercises 47

4. Stacks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Stack Operations 49
A Stack Implementation 50
Using the Stack Class 53
Multiple Base Conversions 53
Palindromes 54
Demonstrating Recursion 56
Exercises 57

5. Queues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Queue Operations 59

iv | Table of Contents

www.it-ebooks.info
An Array-Based Queue Class Implementation 60
Using the Queue Class: Assigning Partners at a Square Dance 63
Sorting Data with Queues 67
Priority Queues 70
Exercises 72

6. Linked Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Shortcomings of Arrays 73
Linked Lists Defined 74
An Object-Based Linked List Design 75
The Node Class 75
The Linked List Class 76
Inserting New Nodes 76
Removing Nodes from a Linked List 78
Doubly Linked Lists 81
Circularly Linked Lists 85
Other Linked List Functions 86
Exercises 86

7. Dictionaries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
The Dictionary Class 89
Auxiliary Functions for the Dictionary Class 91
Adding Sorting to the Dictionary Class 93
Exercises 94

8. Hashing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
An Overview of Hashing 97
A Hash Table Class 98
Choosing a Hash Function 98
A Better Hash Function 101
Hashing Integer Keys 103
Storing and Retrieving Data in a Hash Table 106
Handling Collisions 107
Separate Chaining 107
Linear Probing 109
Exercises 111

9. Sets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Fundamental Set Definitions, Operations, and Properties 113
Set Definitions 113
Set Operations 114
The Set Class Implementation 114

Table of Contents | v

www.it-ebooks.info
More Set Operations 116
Exercises 120

10. Binary Trees and Binary Search Trees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121


Trees Defined 121
Binary Trees and Binary Search Trees 123
Building a Binary Search Tree Implementation 124
Traversing a Binary Search Tree 126
BST Searches 129
Searching for the Minimum and Maximum Value 130
Searching for a Specific Value 131
Removing Nodes from a BST 132
Counting Occurrences 134
Exercises 137

11. Graphs and Graph Algorithms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139


Graph Definitions 139
Real-World Systems Modeled by Graphs 141
The Graph Class 141
Representing Vertices 141
Representing Edges 142
Building a Graph 143
Searching a Graph 145
Depth-First Search 145
Breadth-First Search 148
Finding the Shortest Path 149
Breadth-First Search Leads to Shortest Paths 149
Determining Paths 150
Topological Sorting 151
An Algorithm for Topological Sorting 152
Implementing the Topological Sorting Algorithm 152
Exercises 157

12. Sorting Algorithms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159


An Array Test Bed 159
Generating Random Data 161
Basic Sorting Algorithms 161
Bubble Sort 162
Selection Sort 165
Insertion Sort 167
Timing Comparisons of the Basic Sorting Algorithms 168
Advanced Sorting Algorithms 170

vi | Table of Contents

www.it-ebooks.info
The Shellsort Algorithm 171
The Mergesort Algorithm 176
The Quicksort Algorithm 181
Exercises 186

13. Searching Algorithms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187


Sequential Search 187
Searching for Minimum and Maximum Values 190
Using Self-Organizing Data 193
Binary Search 196
Counting Occurrences 200
Searching Textual Data 202
Exercises 205

14. Advanced Algorithms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207


Dynamic Programming 207
A Dynamic Programming Example: Computing Fibonacci Numbers 208
Finding the Longest Common Substring 211
The Knapsack Problem: A Recursive Solution 214
The Knapsack Problem: A Dynamic Programming Solution 215
Greedy Algorithms 217
A First Greedy Algorithm Example: The Coin-Changing Problem 217
A Greedy Algorithm Solution to the Knapsack Problem 218
Exercises 220

Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

Table of Contents | vii

www.it-ebooks.info
www.it-ebooks.info
Preface

Over the past few years, JavaScript has been used more and more as a server-side com‐
puter programming language owing to platforms such as Node.js and SpiderMonkey.
Now that JavaScript programming is moving out of the browser, programmers will find
they need to use many of the tools provided by more conventional languages, such as
C++ and Java. Among these tools are classic data structures such as linked lists, stacks,
queues, and graphs, as well as classic algorithms for sorting and searching data. This
book discusses how to implement these data structures and algorithms for server-side
JavaScript programming.
JavaScript programmers will find this book useful because it discusses how to implement
data structures and algorithms within the constraints that JavaScript places them, such
as arrays that are really objects, overly global variables, and a prototype-based object
system. JavaScript has an unfair reputation as a “bad” programming language, but this
book demonstrates how you can use JavaScript to develop efficient and effective data
structures and algorithms using the language’s “good parts.”

Why Study Data Structures and Algorithms


I am assuming that many of you reading this book do not have a formal education in
computer science. If you do, then you already know why studying data structures and
algorithms is important. If you do not have a degree in computer science or haven’t
studied these topics formally, you should read this section.
The computer scientist Nicklaus Wirth wrote a computer programming textbook titled
Algorithms + Data Structures = Programs (Prentice-Hall). That title is the essence of
computer programming. Any computer program that goes beyond the trivial “Hello,
world!” will usually require some type of structure to manage the data the program is
written to manipulate, along with one or more algorithms for translating the data from
its input form to its output form.

ix

www.it-ebooks.info
For many programmers who didn’t study computer science in school, the only data
structure they are familiar with is the array. Arrays are great for some problems, but for
many complex problems, they are simply not sophisticated enough. Most experienced
programmers will admit that for many programming problems, once they come up with
the proper data structure, the algorithms needed to solve the problem are easier to design
and implement.
An example of a data structure that leads to efficient algorithms is the binary search tree
(BST). A binary search tree is designed so that it is easy to find the minimum and
maximum values of a set of data, yielding an algorithm that is more efficient than the
best search algorithms available. Programmers unfamiliar with BSTs will instead prob‐
ably use a simpler data structure that ends up being less efficient.
Studying algorithms is important because there is always more than one algorithm that
can be used to solve a problem, and knowing which ones are the most efficient is im‐
portant for the productive programmer. For example, there are at least six or seven ways
to sort a list of data, but knowing that the Quicksort algorithm is more efficient than
the selection sort algorithm will lead to a much more efficient sorting process. Or that
it’s fairly easy to implement a sequential or linear search algorithm for a list of data, but
knowing that the binary sort algorithm can sometimes be twice as efficient as the se‐
quential search will lead to a better program.
The comprehensive study of data structures and algorithms teaches you not only which
data structures and which algorithms are the most efficient, but you also learn how to
decide which data structures and which algorithms are the most appropriate for the
problem at hand. There will often be trade-offs involved when writing a program, es‐
pecially in the JavaScript environment, and knowing the ins and outs of the various data
structures and algorithms covered in this book will help you make the proper decision
for any particular programming problem you are trying to solve.

What You Need for This Book


The programming environment we use in this book is the JavaScript shell based on
the SpiderMonkey JavaScript engine. Chapter 1 provides instructions on downloading
the shell for your environment. Other shells will work as well, such as the Node.js Java‐
Script shell, though you will have to make some translations for the programs in the
book to work in Node. Other than the shell, the only thing you need is a text editor for
writing your JavaScript programs.

x | Preface

www.it-ebooks.info
Organization of the Book
• Chapter 1 presents an overview of the JavaScript language, or at least the features
of the JavaScript language used in this book. This chapter also demonstrates through
use the programming style used throughout the other chapters.
• Chapter 2 discusses the most common data structure in computer programming:
the array, which is native to JavaScript.
• Chapter 3 introduces the first implemented data structure: the list.
• Chapter 4 covers the stack data structure. Stacks are used throughout computer
science in both compiler and operating system implementations.
• Chapter 5 discusses queue data structures. Queues are an abstraction of the lines
you stand in at a bank or the grocery store. Queues are used extensively in simulation
software where data has to be lined up before it is processed.
• Chapter 6 covers Linked lists. A linked list is a modification of the list data structure,
where each element is a separate object linked to the objects on either side of it.
Linked lists are efficient when you need to perform multiple insertions and dele‐
tions in your program.
• Chapter 7 demonstrates how to build and use dictionaries, which are data structures
that store data as key-value pairs.
• One way to implement a dictionary is to use a hash table, and Chapter 8 discusses
how to build hash tables and the hash algorithms that are used to store data in the
table.
• Chapter 9 covers the set data structure. Sets are often not covered in data structure
books, but they can be useful for storing data that is not supposed to have duplicates
in the data set.
• Binary trees and binary search trees are the subject of Chapter 10. As mentioned
earlier, binary search trees are useful for storing data that needs to be stored orig‐
inally in sorted form.
• Chapter 11 covers graphs and graph algorithms. Graphs are used to represent data
such as the nodes of a computer network or the cities on a map.
• Chapter 12 moves from data structures to algorithms and discusses various algo‐
rithms for sorting data, including both simple sorting algorithms that are easy to
implement but are not efficient for large data sets, and more complex algorithms
that are appropriate for larger data sets.
• Chapter 13 also covers algorithms, this time searching algorithms such as sequential
search and binary search.
• The last chapter of the book, Chapter 14, discusses a couple more advanced algo‐
rithms for working with data—dynamic programming and greedy algorithms.

Preface | xi

www.it-ebooks.info
These algorithms are useful for solving hard problems where a more traditional
algorithm is either too slow or too hard to implement. We examine some classic
problems for both dynamic programming and greedy algorithms in the chapter.

Conventions Used in This Book


The following typographical conventions are used in this book:
Italic
Indicates new terms, URLs, email addresses, filenames, and file extensions.
Constant width
Used for program listings, as well as within paragraphs to refer to program elements
such as variable or function names, databases, data types, environment variables,
statements, and keywords.
Constant width bold
Shows commands or other text that should be typed literally by the user.
Constant width italic
Shows text that should be replaced with user-supplied values or by values deter‐
mined by context.

Using Code Examples


Supplemental material (code examples, exercises, etc.) is available for download at
https://github.com/oreillymedia/data_structures_and_algorithms_using_javascript.
This book is here to help you get your job done. In general, if example code is offered
with this book, you may use it in your programs and documentation. You do not need
to contact us for permission unless you’re reproducing a significant portion of the code.
For example, writing a program that uses several chunks of code from this book does
not require permission. Selling or distributing a CD-ROM of examples from O’Reilly
books does require permission. Answering a question by citing this book and quoting
example code does not require permission. Incorporating a significant amount of ex‐
ample code from this book into your product’s documentation does require permission.
We appreciate, but do not require, attribution. An attribution usually includes the title,
author, publisher, and ISBN. For example: “Data Structures and Algorithms Using Java‐
Script by Michael McMillian (O’Reilly). Copyright 2014 Michael McMillan,
978-1-449-36493-9.”
If you feel your use of code examples falls outside fair use or the permission given above,
feel free to contact us at [email protected].

xii | Preface

www.it-ebooks.info
Safari® Books Online
Safari Books Online is an on-demand digital library that
delivers expert content in both book and video form from
the world’s leading authors in technology and business.
Technology professionals, software developers, web designers, and business and crea‐
tive professionals use Safari Books Online as their primary resource for research, prob‐
lem solving, learning, and certification training.
Safari Books Online offers a range of product mixes and pricing programs for organi‐
zations, government agencies, and individuals. Subscribers have access to thousands of
books, training videos, and prepublication manuscripts in one fully searchable database
from publishers like O’Reilly Media, Prentice Hall Professional, Addison-Wesley Pro‐
fessional, Microsoft Press, Sams, Que, Peachpit Press, Focal Press, Cisco Press, John
Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT
Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett, Course Technol‐
ogy, and dozens more. For more information about Safari Books Online, please visit us
online.

How to Contact Us
Please address comments and questions concerning this book to the publisher:

O’Reilly Media, Inc.


1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (in the United States or Canada)
707-829-0515 (international or local)
707-829-0104 (fax)

We have a web page for this book, where we list errata, examples, and any additional
information. You can access this page at http://oreil.ly/data_structures_algorithms_JS.
To comment or ask technical questions about this book, send email to bookques
[email protected].
For more information about our books, courses, conferences, and news, see our website
at http://www.oreilly.com.
Find us on Facebook: http://facebook.com/oreilly
Follow us on Twitter: http://twitter.com/oreillymedia
Watch us on YouTube: http://www.youtube.com/oreillymedia

Preface | xiii

www.it-ebooks.info
Acknowledgments
There are always lots of people to thank when you’ve finished writing a book. I’d like to
thank my acquisition editor, Simon St. Laurent, for believing in this book and getting
me started writing it. Meghan Blanchette worked hard to keep me on schedule, and if
I went off schedule, it definitely wasn’t her fault. Brian MacDonald worked extremely
hard to make this book as understandable as possible, and he helped make several parts
of the text much clearer than I had written them originally. I also want to thank my
technical reviewers for reading all the text as well as the code, and for pointing out places
where both my prose and my code needed to be clearer. My colleague and illustrator,
Cynthia Fehrenbach, did an outstanding job translating my chicken scratchings into
crisp, clear illustrations, and she deserves extra praise for her willingness to redraw
several illustrations at the very last minute. Finally, I’d like to thank all the people at
Mozilla for designing an excellent JavaScript engine and shell and writing some excellent
documentation for using both the language and the shell.

xiv | Preface

www.it-ebooks.info
CHAPTER 1
The JavaScript Programming Environment
and Model

This chapter describes the JavaScript programming environment and the programming
constructs we’ll use in this book to define the various data structures and algorithms
examined.

The JavaScript Environment


JavaScript has historically been a programming language that ran only inside a web
browser. However, in the past few years, there has been the development of JavaScript
programming environments that can be run from the desktop, or similarly, from a
server. In this book we use one such environment: the JavaScript shell that is part of
Mozilla’s comprehensive JavaScript environment known as SpiderMonkey.
To download the JavaScript shell, navigate to the Nightly Build web page. Scroll to the
bottom of the page and pick the download that matches your computer system.
Once you’ve downloaded the program, you have two choices for using the shell. You
can use it either in interactive mode or to interpret JavaScript programs stored in a
file. To use the shell in interactive mode, type the command js at a command prompt.
The shell prompt, js>, will appear and you are ready to start entering JavaScript ex‐
pressions and statements.
The following is a typical interaction with the shell:
js> 1
1
js> 1+2
3
js> var num = 1;
js> num*124
124

www.it-ebooks.info
js> for (var i = 1; i < 6; ++i) {
print(i);
}
1
2
3
4
5
js>
You can enter arithmetic expressions and the shell will immediately evaluate them. You
can write any legal JavaScript statement and the shell will immediately evaluate it as
well. The interactive shell is great for exploring JavaScript statements to discover how
they work. To leave the shell when you are finished, type the command quit().
The other way to use the shell is to have it interpret complete JavaScript programs. This
is how we will use the shell throughout the rest of the book.
To use the shell to intepret programs, you first have to create a file that contains a
JavaScript program. You can use any text editor, making sure you save the file as plain
text. The only requirement is that the file must have a .js extension. The shell has to see
this extension to know the file is a JavaScript program.
Once you have your file saved, you interpret it by typing the js command followed by
the full filename of your program. For example, if you saved the for loop code fragment
that’s shown earlier in a file named loop.js, you would enter the following:
c:\js>js loop.js
which would produce the following output:
1
2
3
4
5
After the program is executed, control is returned to the command prompt.

JavaScript Programming Practices


In this section we discuss how we use JavaScript. We realize that programmers have
different styles and practices when it comes to writing programs, and we want to de‐
scribe ours here at the beginning of the book so that you’ll understand the more complex
code we present in the rest of the book. This isn’t a tutorial on using JavaScript but is
just a guide to how we use the fundamental constructs of the language.

2 | Chapter 1: The JavaScript Programming Environment and Model

www.it-ebooks.info
Declaring and Intializing Variables
JavaScript variables are global by default and, strictly speaking, don’t have to be declared
before using. When a JavaScript variable is initialized without first being declared, it
becomes a global variable. In this book, however, we follow the convention used with
compiled languages such as C++ and Java by declaring all variables before their first
use. The added benefit to doing this is that declared variables are created as local vari‐
ables. We will talk more about variable scope later in this chapter.
To declare a variable in JavaScript, use the keyword var followed by a variable name,
and optionally, an assignment expression. Here are some examples:
var number;
var name;
var rate = 1.2;
var greeting = "Hello, world!";
var flag = false;

Arithmetic and Math Library Functions in JavaScript


JavaScript utilizes the standard arithmetic operators:

• + (addition)
• - (subtraction)
• * (multiplication)
• / (division)
• % (modulo)

JavaScript also has a math library you can use for advanced functions such as square
root, absolute value, and the trigonometric functions. The arithmetic operators follow
the standard order of operations, and parentheses can be used to modify that order.
Example 1-1 shows some examples of performing arithmetic in JavaScript, as well as
examples of using several of the mathematical functions.
Example 1-1. Arithmetic and math functions in JavaScript
var x = 3;
var y = 1.1;
print(x + y);
print(x * y);
print((x+y)*(x-y));
var z = 9;
print(Math.sqrt(z));
print(Math.abs(y/x));

The output from this program is:

JavaScript Programming Practices | 3

www.it-ebooks.info
4.1
3.3000000000000003
7.789999999999999
3
0.3666666666666667
If you don’t want or need the precision shown above, you can format a number to a
fixed precision:
var x = 3;
var y = 1.1;
var z = x * y;
print(z.toFixed(2)); // displays 3.30

Decision Constructs
Decision constructs allow our programs to make decisions on what programming
statements to execute based on a Boolean expression. The two decision constructs we
use in this book are the if statement and the switch statement.
The if statement comes in three forms:

• The simple if statement


• The if-else statement
• The if-else if statement

Example 1-2 shows how to write a simple if statement.

Example 1-2. The simple if statement


var mid = 25;
var high = 50;
var low = 1;
var current = 13;
var found = -1;
if (current < mid) {
mid = (current-low) / 2;
}

Example 1-3 demonstrates the if-else statement.

Example 1-3. The if-else statement


var mid = 25;
var high = 50;
var low = 1;
var current = 13;
var found = -1;
if (current < mid) {
mid = (current-low) / 2;
}

4 | Chapter 1: The JavaScript Programming Environment and Model

www.it-ebooks.info
else {
mid = (current+high) / 2;
}

Example 1-4 illustrates the if-else if statement.

Example 1-4. The if-else if statement


var mid = 25;
var high = 50;
var low = 1;
var current = 13;
var found = -1;
if (current < mid) {
mid = (current-low) / 2;
}
else if (current > mid) {
mid = (current+high) / 2;
}
else {
found = current;
}

The other decision structure we use in this book is the switch statement. This statement
provides a cleaner, more structured construction when you have several simple deci‐
sions to make. Example 1-5 demonstrates how the switch statement works.

Example 1-5. The switch statement


putstr("Enter a month number: ");
var monthNum = readline();
var monthName;
switch (monthNum) {
case "1":
monthName = "January";
break;
case "2":
monthName = "February";
break;
case "3":
monthName = "March";
break;
case "4":
monthName = "April";
break;
case "5":
monthName = "May";
break;
case "6":
monthName = "June";
break;
case "7":

JavaScript Programming Practices | 5

www.it-ebooks.info
monthName = "July";
break;
case "8":
monthName = "August";
break;
case "9":
monthName = "September";
break;
case "10":
monthName = "October";
break;
case "11":
monthName = "November";
break;
case "12":
monthName = "December";
break;
default:
print("Bad input");
}

Is this the most efficient way to solve this problem? No, but it does a great job of dem‐
onstrating how the switch statement works.
One major difference between the JavaScript switch statement and switch statements
in other programming languages is that the expression that is being tested in the state‐
ment can be of any data type, as opposed to an integral data type, as required by languages
such as C++ and Java. In fact, you’ll notice in the previous example that we use the
month numbers as strings, rather than converting them to numbers, since we can com‐
pare strings using the switch statement in JavaScript.

Repetition Constructs
Many of the algorithms we study in this book are repetitive in nature. We use two
repetition constructs in this book—the while loop and the for loop.
When we want to execute a set of statements while a condition is true, we use a while
loop. Example 1-6 demonstrates how the while loop works.

Example 1-6. The while loop


var number = 1;
var sum = 0;
while (number < 11) {
sum += number;
++number;
}
print(sum); // displays 55

6 | Chapter 1: The JavaScript Programming Environment and Model

www.it-ebooks.info
When we want to execute a set of statements a specified number of times, we use a for
loop. Example 1-7 uses a for loop to sum the integers 1 through 10.

Example 1-7. Summing integers using a for loop


var number = 1;
var sum = 0;
for (var number = 1; number < 11; number++) {
sum += number;
}
print(sum); // displays 55

for loops are also used frequently to access the elements of an array, as shown in
Example 1-8.

Example 1-8. Using a for loop with an array


var numbers = [3, 7, 12, 22, 100];
var sum = 0;
for (var i = 0; i < numbers.length; ++i) {
sum += numbers[i];
}
print(sum); // displays 144

Functions
JavaScript provides the means to define both value-returning functions and functions
that don’t return values (sometimes called subprocedures or void functions).
Example 1-9 demonstrates how value-returning functions are defined and called in
JavaScript.
Example 1-9. A value-returning function
function factorial(number) {
var product = 1;
for (var i = number; i >= 1; --i) {
product *= i;
}
return product;
}

print(factorial(4)); // displays 24
print(factorial(5)); // displays 120
print(factorial(10)); // displays 3628800

Example 1-10 illustrates how to write a function that is used not for its return value, but
for the operations it performs.

JavaScript Programming Practices | 7

www.it-ebooks.info
Example 1-10. A subprocedure or void function in JavaScript
function curve(arr, amount) {
for (var i = 0; i < arr.length; ++i) {
arr[i] += amount;
}
}

var grades = [77, 73, 74, 81, 90];


curve(grades, 5);
print(grades); // displays 82,78,79,86,95

All function parameters in JavaScript are passed by value, and there are no reference
parameters. However, there are reference objects, such as arrays, which are passed to
functions by reference, as was demonstrated in Example 1-10.

Variable Scope
The scope of a variable refers to where in a program a variable’s value can be accessed.
The scope of a variable in JavaScript is defined as function scope. This means that a
variable’s value is visible within the function definition where the variable is declared
and defined and within any functions that are nested within that function.
When a variable is defined outside of a function, in the main program, the variable is
said to have global scope, which means its value can be accessed by any part of a program,
including functions. The following short program demonstrates how global scope
works:
function showScope() {
return scope;
}

var scope = "global";


print(scope); // displays "global"
print(showScope()); // displays "global"

The function showScope() can access the variable scope because scope is a global vari‐
able. Global variables can be declared at any place in a program, either before or after
function definitions.
Now watch what happens when we define a second scope variable within the show
Scope() function:
function showScope() {
var scope = "local";
return scope;
}

var scope = "global";


print(scope); // displays "global"
print(showScope()); // displays "local"

8 | Chapter 1: The JavaScript Programming Environment and Model

www.it-ebooks.info
The scope variable defined in the showScope() function has local scope, while the scope
variable defined in the main program is a global variable. Even though the two variables
have the same name, their scopes are different, and their values are different when
accessed within the area of the program where they are defined.
All of this behavior is normal and expected. However, it can all change if you leave off
the keyword var in the variable definitions. JavaScript allows you to define variables
without using the var keyword, but when you do, that variable automatically has global
scope, even if defined within a function.
Example 1-11 demonstrates the ramifications of leaving off the var keyword when
defining variables.
Example 1-11. The ramification of overusing global variables
function showScope() {
scope = "local";
return scope;
}

scope = "global";
print(scope); // displays "global"
print(showScope()); // displays "local"
print(scope); // displays "local"

In Example 1-11, because the scope variable inside the function is not declared with the
var keyword, when the string "local" is assigned to the variable, we are actually chang‐
ing the value of the scope variable in the main program. You should always begin every
definition of a variable with the var keyword to keep things like this from happening.
Earlier, we mentioned that JavaScript has function scope. This means that JavaScript
does not have block scope, unlike many other modern programming languages. With
block scope, you can declare a variable within a block of code and the variable is not
accessible outside of that block, as you typically see with a C++ or Java for loop:
for (int i = 1; i <=10; ++i) {
cout << "Hello, world!" << endl;
}
Even though JavaScript does not have block scope, we pretend like it does when we write
for loops in this book:
for (var i = 1; i <= 10; ++i ) {
print("Hello, world!");
}
We don’t want to be the cause of you picking up bad programming habits.

JavaScript Programming Practices | 9

www.it-ebooks.info
Random documents with unrelated
content Scribd suggests to you:
cause était gagnée d'avance; en huit heures nous avions à peine
parcouru vingt-cinq kilomètres!
A Ferachbad les stipes des palmiers servaient à couvrir les
maisons: ici le feuillage constitue les murs et les toitures. Le premier
gîte mis à ma disposition était une hutte de forme conique
composée de branches fichées en terre et liées en faisceau à leur
extrémité supérieure. Une habitation d'un autre modèle m'a paru
présenter d'incontestables avantages. Aux quatre angles s'élèvent
des fûts de palmiers réunis par des sablières; des colonnes
soutiennent à l'intérieur une charpente horizontale qui vient
s'appuyer sur l'enceinte; les murs sont faits en fagots attachés les
uns aux autres par des cordes de sparterie. Une natte couvre le sol
de ce palais hypostyle, dont les indigènes arrosent les toitures à
grande eau pendant les plus chaudes heures du jour.

VILLAGE D'AHARAM.

La rustique demeure mise à notre disposition était abandonnée


depuis quelque temps, et se signalait par les fâcheuses interruptions
de ses murailles; quelques fagots dressés en palissade ayant suffi
pour la remettre en bon état d'entretien locatif, j'en ai pris
immédiatement possession sans état de lieux, bail ou autres
formalités si profitables aux scribes de tous pays.
Il faisait grand jour encore, nous avions un toit assuré, il ne nous
restait plus qu'à rendre visite à nos voisins.
Tapis, mortiers, khourdjines et moulin à farine composent le
mobilier des villageois. Ce dernier instrument, dont les formes
rappellent celles des moulins romains, est formé de meules coniques
emboîtées l'une dans l'autre. Le grincement des pierres, intolérable à
des oreilles européennes, paraît sans doute fort harmonieux aux
Illiates et n'empêche pas en tout cas les oisifs et les jolis cœurs de
faire la roue autour des belles meunières de la tribu.
Vers le soir, le ketkhoda s'est fait annoncer. Il était coiffé d'un
turban de soie rouge et bleue confectionné à la dernière mode de
Bouchyr, et suivi de plusieurs toufangtchis nègres. Des nègres, des
maisons de feuilles de palmier! L'été ne doit pas être frais dans cette
région!

LES PALMIERS D'AHARAM. (Voyez p. 507-508.)

15 novembre.—Je bénis le ciel d'avoir placé hier un village sur


notre route, car jamais, dans l'état archipitoyable de nos montures,
nous ne serions arrivés à Aharam en suivant les sentiers de chèvres
qui conduisent à Bouchyr.
Je croyais, au sortir des défilés de Firouz-Abad, avoir franchi les
plus mauvaises gorges du monde; celles que j'ai vues aujourd'hui
sont bien pires encore. En se retournant, il est impossible de
retrouver le chemin qu'on a suivi; en regardant droit devant soi, on
n'a pas même l'idée de la direction à prendre. Les pentes sont
excessivement rapides, le sentier domine des précipices insondables,
et, quand il ne côtoie pas des abîmes, il suit le lit de torrents
encombrés de pierres énormes, au milieu desquelles il est encore
plus difficile de se mouvoir que sur le flanc des montagnes. Par quel
miracle les canons envoyés d'Ispahan à Bouchyr, il y a quelques
mois, sont-ils arrivés à destination?
Je ferais bon marché des dangers de la route si je pouvais
m'abreuver aux ondes cristallines du ruisseau: depuis deux jours la
soif me dévore, et cette rivière qui effleure mes lèvres roule des
eaux plus purgatives que les célèbres sources de Pullna, de
Birmenstorf ou de Hunyadi Janos. J'ai mesuré pour la première fois,
aujourd'hui, toute l'horreur du supplice de Tantale.
Je suivais toute pensive le chemin de Bouchyr, ma main laissait
flotter les rênes sur le cou de ma monture, quand Marcel a poussé
un cri de joie. Entre deux sommets séparés par une gorge profonde,
apparaît une immense plaine ensoleillée; à l'horizon un trait bleu
foncé sépare le ciel des sables d'or. Cette ligne bleue, c'est le golfe
Persique! c'est la mer! Cette mer est le chemin qui nous relie à la
France.
Les splendeurs d'Ispahan, les rayonnements d'une nuit d'été, les
cyprès de Chiraz, les palmiers du Fars, les vieux palais achéménides,
ne m'ont jamais causé émotion comparable à celle que produit sur
moi cette bande d'azur.
Comment dirai-je le bonheur que sa vue me fait éprouver?
Depuis le mois de mars j'ai fait à cheval quatre-vingt-onze étapes et
près de quatre mille kilomètres à travers un pays sans routes, dans
une contrée dépourvue de tout confortable.
Excepté dans les grandes
villes, j'ai eu pour tout logis de
pauvres caravansérails ou des
gîtes bien pires encore! Dieu
soit loué! il nous a conduits
durant huit mois par de bien
difficiles sentiers, des glaciers
du Caucase jusque sous le ciel
des tropiques, des plaines
désolées aux oasis de palmiers,
mais il nous amène enfin au
port.
Marcel n'est pas moins
joyeux que moi, et tous deux
hâtons si bien la marche de nos
montures, que, trois heures
après l'avoir aperçu pour la
première fois, nous atteignons
enfin le beau village d'Aharam.
Les golams ont apporté nos
bagages dans un balakhanè
mis à notre disposition par le
ketkhoda, superbe vieillard,
dont les traits me rappellent le
Darius des bas-reliefs
persépolitains.
LE KETKHODA D'AHARAM. (Voyez p.
De mes fenêtres j'aperçois à 508.)
l'horizon les hautes montagnes
que nous venons de franchir, plus près d'Aharam d'immenses forêts
de palmiers; à mes pieds s'étend le village de terre égayé par des
touffes d'arbres perdues au milieu des maisons. Une population très
brune de peau grouille dans les rues et forme, au coin de chaque
porte, des groupes aussi vivants que colorés.
Pourquoi faut-il que les sources d'Aharam fournissent un
breuvage tellement amer que les indigènes ne puissent eux-mêmes
le tolérer, et qu'ils soient contraints de consommer l'eau de pluie
recueillie pendant l'hiver, et conservée soit dans des citernes, soit
dans des trous à ciel ouvert, au fond desquels elle croupit et se
décompose! En goûtant ce liquide, j'ai cru, tant il était saumâtre,
que, par erreur, on m'avait apporté le récipient à pétrole. La couleur
m'a tranquillisée: le pétrole est blanc, l'eau d'Aharam plus brune
qu'une décoction de tabac.
Je me suis procuré à grand'peine un peu de lait, puis, comme
nous voyions la provision de citrons doux près de s'épuiser, nous
nous sommes résignés à rester à jeun afin de mieux supporter les
intolérables douleurs que donne la soif, ou de nous garantir des
brûlures pires encore occasionnées par l'eau de citerne.
Soumis à un pareil régime, de malheureux voyageurs morts de
fièvre et de fatigue ne se referont pas de sitôt.

LE BALAKHANÈ DU KETKHODA D'AHARAM.


VILLAGE DE GOUREK.
CHAPITRE XXVIII

Le village de Gourek.—Chasse au faucon.—Arrivée à Bouchyr.—Aspect de la ville.—


Le port.—Le ver de Bouchyr.—La mort du çpâhçâlâr.—Départ de Bouchyr.

16 novembre.—La distance d'Aharam à Bouchyr n'excède pas


huit farsakhs, et cependant nous n'avons pu la franchir en une
étape, tant les chevaux étaient éprouvés par le régime purgatif
auquel ils sont soumis depuis quatre jours.
Enfin, la caravane a atteint le village de Gourek! Cinq minutes
après mon arrivée, j'étais en possession d'une sébile d'eau fort
douce, si je la compare à l'infecte boue d'Aharam. Ce breuvage
réparateur nous a permis de prendre quelque nourriture et de
renouveler nos forces épuisées.
Ce village se compose de cabanes construites, comme toutes les
habitations du Fars méridional, en stipes et en branches de palmier;
les rues ménagées au-devant des portes sont encombrées de beaux
enfants, de chiens jaunes et de poules noires, tous également
sauvages; autour des habitations s'étend une plaine couverte d'une
maigre végétation d'herbes et de buissons. Le pays n'est pourtant
pas stérile: non loin d'ici les terres produisent de plantureuses
récoltes de blé; la vigueur des villageois, leurs habits fort propres,
témoignent d'ailleurs de leur bien-être.
Le cheikh de Gourek mène une existence comparable à celle des
grands seigneurs de la féodalité française, et peut, à son gré, se
donner le plaisir de la chasse à courre et au vol, plaisirs très
appréciés de tous les Iraniens, mais à la portée seulement des chefs
de tribu assez puissants et assez riches pour entretenir des chevaux,
des meutes et des oiseaux de proie.
Ce n'est pas avec des noyaux de pêches qu'on alimente une
fauconnerie. La valeur intrinsèque des gerfauts est souvent
considérable en raison de leur bonne éducation; le prix de leur
nourriture, composée de volaille et de mouton, est élevé; il faut
affecter à chaque animal un serviteur, et à ce serviteur un bon
cheval. Au total on estime que l'entretien particulier de l'oiseau de
proie, de son valet de chambre et de son coursier coûte, bon an mal
an, de huit cents à mille francs.
Une bête possédant un
pareil train de maison ne
saurait être élevée avec trop
de soins; aussi bien l'envoie-t-
on à l'école de bonne heure.
Dès que le fauconneau a mis
ses ailes, on le dresse à aller
chercher de la viande crue
dans les orbites d'une gazelle
ou d'une outarde empaillée. A
mesure qu'il prend goût à cet
exercice, on éloigne l'appât et
on le dispose à une distance
telle, que l'oiseau ne puisse le
distinguer s'il reste à terre. Il
s'élève alors, cherche des yeux
le mannequin et fond sur lui
avec une foudroyante rapidité.
Devenu grand, le faucon se
précipitera de la même
manière sur le gibier dans la
direction duquel le lancera le
chasseur, et l'aveuglera afin de
LE CHEIKH DE GOUREK. saisir derrière ses prunelles la
pâtée qu'il espère y trouver.
Quand un gerfaut doit aller à la chasse, on le laisse à jeun
pendant tout un jour; au moment du départ on le coiffe d'un
capuchon enrichi de pierreries, et l'on attache à sa patte une légère
lanière de cuir. Puis, muni d'un perchoir formé d'une boule de cuir
emmanchée sur une broche de fer, d'une éponge destinée à
débarbouiller l'animal, d'un tambour servant à le rappeler s'il
s'éloigne trop, l'oiseleur pose le faucon sur son poing recouvert d'un
gantelet rembourré, choisit un cheval rapide et sort dans la
campagne à la suite de son maître. C'est à la tête d'un nombreux
équipage de chasse que nous avons rencontré à une petite distance
du village le cheikh de Gourek. J'ai vainement cherché à ses côtés
châtelaines chevauchant belles haquenées, brillants seigneurs,
damoiselles, pages ou varlets. Les châtelaines de Gourek sont trop
occupées à se crêper le chignon ou à confectionner des pilaus,
quand les luttes intestines leur en laissent le loisir, pour prendre part
à des expéditions cynégétiques; les seigneurs sont remplacés par
des moricauds, les varlets par des brigands à mine patibulaire,
décorés du nom de toufangtchis.
Les péripéties de la chasse n'en ont pas moins été très
émouvantes.
L'obarè (outarde) sur laquelle on venait de lancer un faucon était
de la taille d'une grosse poule. Dès qu'elle a aperçu l'assaillant, au
lieu de se tapir ou de se cacher sur le sol, elle s'est bravement
élevée dans les airs. A partir de ce moment les deux adversaires ont
cherché sans cesse à se dominer l'un l'autre, afin d'éviter les coups
de bec qu'ils essayaient mutuellement de se lancer; bientôt nous
avons perdu de vue les combattants. Cependant deux points
réapparaissent. Les lutteurs ailés se maintiennent à égale hauteur,
bec contre bec, serres contre serres; ils redescendent; l'outarde
semble lasse, le faucon garde encore toute sa vigueur. Tout à coup
ce dernier étreint sa victime, celle-ci tente un suprême effort, et les
deux oiseaux, ne formant qu'une boule de plumes hérissées,
s'abattent sur le sol. L'obarè est aveuglée et vaincue.
Dès qu'il s'est rendu maître de sa proie, le gerfaut la dévorerait
tout entière si le chasseur ne venait la lui disputer. Néanmoins il est
indispensable de récompenser le vainqueur en lui donnant la tête et
le foie de chaque pièce de gibier; si on négligeait de lui tenir compte
de sa peine, l'oiseau se refuserait à chasser plus longtemps.
Le faucon est vorace, mais n'a aucune ténacité. Lui arrive-t-il
plusieurs fois de suite de ne pas apercevoir sa proie ou de la
manquer, il revient de fort méchante humeur auprès de son maître
et reste insensible à tout encouragement. De la manière plus ou
moins habile dont l'oiseau est décapuchonné et de la promptitude
avec laquelle il est lancé dépend donc le plus souvent le succès de la
chasse.
L'oiseau le plus vigoureux, le mieux dressé, le mieux dirigé, n'est
pourtant pas toujours vainqueur. Les vieilles outardes, expertes en
ruses de guerre, le battent même assez souvent. Quand elles ont
tenté, sans succès, de dominer l'assaillant, elles simulent une
extrême fatigue, battent faiblement des ailes, guettent le moment où
leur ennemi, les croyant à bout de forces, va s'élancer sur elles et,
faisant alors une brusque volte, lui lancent à la tête un jet de fiente
qui l'aveugle et le laisse si penaud qu'il s'abat comme une masse. En
ce cas, l'oiseleur doit prendre l'animal, le débarbouiller au plus vite
avec l'éponge et le rapporter au logis, car après une pareille
mésaventure il ne voudrait plus combattre de la journée.
On n'emploie pas seulement le faucon à chasser des oiseaux ou
des lièvres: les gerfauts de grande race sont lancés sur la grosse
bête et en particulier sur la gazelle. Les cavaliers poursuivent d'abord
le gibier avec des lévriers très agiles, connus sous le nom de tazi.
Quand les chiens commencent à se fatiguer, le fauconnier
décapuchonne son animal. L'oiseau fond sur la tête de la gazelle,
l'aveugle et la livre impuissante aux mains des chasseurs.
Bouchyr, 17 novembre.—La plaine de Gourek est séparée de la
mer par des dunes de sables mobiles, dans lesquelles nos
malheureuses montures pénètrent jusqu'au jarret. Quand on croit en
être quitte avec les difficultés du chemin, on rencontre une nappe de
boue dissimulée sous une mince couche d'eau. Les saints eux-
mêmes perdraient leur sérénité à franchir un pareil marais sur des
bêtes médicamentées. Pour nous, qui avons dépensé depuis
longtemps la provision de patience départie par le ciel à chaque
mortel, nous nous contentons d'exécuter au-dessus des oreilles de
nos montures des exercices de haute voltige:

La chute succède aux chutes,


Les culbutes aux culbutes [9].

[9] Que Lamartine me pardonne ce plagiat acrobatique.

Malheureusement toutes ces cabrioles, que nous tombions pile


ou que nous tombions face, se terminent d'une manière uniforme
dans la vase. Nous serions encore englués au fond de quelque
bourbier, si la vue de Bouchyr surgissant du milieu des flots n'avait
relevé notre courage défaillant.
Au-dessus d'une enceinte flanquée de tours apparaissent des
maisons à plusieurs étages, surmontées d'une forêt de badguirds
(prend-le-vent) hauts et élancés comme des clochers de cathédrale.
Ces singulières dispositions architecturales consécutives au climat et
au sol de la côte méridionale de la Perse donnent au grand port
iranien un caractère tout différent de celui des villes de l'intérieur.
Roustem, mon vieux golam, m'explique que Bouchyr, entouré d'un
côté par la mer, de l'autre par des terres marécageuses, est
forcément malsain et humide. Les habitants renoncent donc à
occuper le rez-de-chaussée de leur maison et s'en servent comme de
caves destinées à supporter les chambres et les talars. Ces dernières
pièces, percées de nombreuses portes-fenêtres, se dégagent sur la
terrasse qui recouvre le soubassement. Grâce à la multiplicité des
baies, il suffit de fermer les ouvertures pratiquées sur trois côtés et
d'ouvrir les fenêtres orientées à la brise pour modérer l'intensité
d'une chaleur d'autant plus insupportable qu'elle est lourde et
humide.
LA FLOTTE ROYALE A BOUCHYR.

Avant de franchir l'enceinte fortifiée, la caravane longe le port.


Ses eaux sont peu profondes, et à peine aperçoit-on çà et là
quelques barques de pêcheurs. Non loin des portes de la ville
s'étalent, mélancoliquement couchés sur leur flanc, quatre bateaux
ou plutôt quatre coques désemparées veuves de voile et de mâture.
Saluez! c'est la flotte impériale et royale de la Perse, qui pourrit
depuis de longues années sur la grève. Jadis elle affronta sans
trembler les colères de Neptune: aujourd'hui elle est digne de porter
des champignons ou d'être exploitée par la Société concessionnaire
des allumettes incombustibles.
Cet état de vétusté la mettant à l'abri de toute entreprise
commerciale de la part des fonctionnaires iraniens, je proposerais au
chah, si j'avais l'insigne honneur d'être de ses conseillers, de réunir
dans un musée les archéologiques débris de ses escadres et d'en
nommer conservateur son grand amiral. Il sauverait ainsi les
apparences et permettrait à cet «immense dignitaire» de regarder
de haut en bas ses collègues de la Confédération Helvétique.
Après avoir dépassé les vénérables reliques d'une marine dont le
renom n'a jamais troublé les mers, nous nous sommes rendus
directement au palais du gouverneur, Mirza Mohammed Moustofi
Nizam, afin de lui porter les lettres de recommandation que le
docteur Tholozan, un de ses protecteurs, nous a données lors de
notre passage à Téhéran. Pendant la durée de notre entrevue avec
le hakem, les ferachs se mettaient en quête d'une maison inhabitée
et y faisaient porter nos bagages; prévenus du succès de leurs
recherches, nous nous sommes hâtés d'aller prendre possession de
notre appartement.
FAUCONNIER DU CHEIKH DE GOUREK. (Voyez p. 510.)

J'étais d'autant plus désireuse de me renfermer dans une


chambre bien close, que depuis longtemps je caressais une idée fixe,
celle de rompre au moyen de nombreuses ablutions d'eau de mer
avec les petits hadjis de Miandjangal et de cacher aux Européens,
toujours très empressés à venir rendre visite aux nouveaux venus,
les graves dangers qu'il y aurait à nous introduire dans leur maison.
Mes projets mis à exécution, je me lance à la découverte. Un
régiment logerait à l'aise dans notre demeure; du haut des terrasses
on aperçoit la ville, la plaine de Gourek, la mer et, tout à l'horizon, la
mâture de deux navires anglais. En réalité il n'y a ni port ni rade à
Bouchyr: les bateaux de fort tonnage ne peuvent s'approcher de la
ville, entourée de bas-fonds dangereux, et mouillent à une distance
que les barques indigènes à voile ou à rames mettent plus de deux
heures à franchir. Souvent même, quand le vent souffle du large, les
navires sont obligés de gagner la pleine mer sans avoir complété
leur chargement. Les caboteurs calant de trois à quatre pieds
s'aventureraient sans talonner dans la crique qui sert de havre, mais
en ce cas ils ne trouveraient point de bouées et courraient le risque
d'être jetés à la côte par les gros temps de nord-ouest. Les navires
anglais n'hésitèrent pas cependant à traverser ces bas-fonds et à
s'embosser dans la rade intérieure lorsqu'ils bombardèrent Bouchyr il
y a quelque trente ans.
Le chahzaddè Zellè sultan aurait eu le dessein, m'a dit le
gouverneur, d'attirer les petits navires à Bouchyr et de faire
construire à cet effet une jetée et un quai vertical, mais il a craint
d'éveiller les susceptibilités du chah son père, et attend une occasion
favorable pour rendre praticable le seul port qui permette à la Perse
d'entretenir des relations directes avec l'Europe. Ce projet, tout à
l'honneur du prince, ne sera pas, je le crains, mis de longtemps à
exécution.
18 novembre.—Je suis désespérée et cruellement punie de m'être
séparée de mes bagages.
Après avoir fait peau neuve autant que le permettait une garde-
robe devenue bien restreinte, nous nous sommes enquis de nos
caisses. Elles devraient être ici depuis longtemps; il faut huit jours
pour venir de Chiraz à Bouchyr, et nous en avons mis vingt à faire la
tournée du Fars; cependant personne, à la douane ou au palais, n'a
pu nous renseigner sur leur compte. Les ferachs assurent même qu'il
n'est arrivé aucune caravane depuis quinze jours.
C'est un vrai désastre. Sans compter les tapis et les menus objets
achetés en chemin, clichés, cahiers, dessins, fruits d'un long et
pénible voyage, sont peut-être perdus à jamais. Le gouverneur a pris
pitié de mon émoi: il s'est chargé d'envoyer un télégramme à Chiraz
et de savoir si la caravane s'est mise en marche; mais nous ne
pouvons recevoir une réponse avant deux jours.
Les membres de la colonie européenne de Bouchyr, Malcolm
khan, riche négociant d'origine française (il m'a assuré avoir une
parenté très rapprochée avec Rousseau), et les représentants de la
maison Holtz ont apporté un peu de calme dans mon esprit en
m'assurant à l'unanimité que mes bagages ne pouvaient être égarés.
Le premier secrétaire du consulat d'Angleterre, un très aimable
officier, et le médecin de la résidence, neveu du consul général, ont
achevé de me rendre confiance.
Ces deux messieurs venaient, au nom du colonel Ross, en ce
moment en villégiature aux environs de la ville, nous offrir
l'hospitalité à l'hôtel du Consulat ou à sa campagne de Çabs-Abad
(Lieu-Vert), distante du port de deux farsakhs. En se retirant, le
docteur Ross nous a recommandé de nous abstenir rigoureusement
de l'eau de Bouchyr. Elle est malsaine, corrompue, contribue à
donner la fièvre, et contient le germe d'une filaire analogue au ver
de Guinée, qui se développe dans l'économie, chemine lentement le
long des muscles et finit, après avoir occasionné d'insupportables
souffrances, par se présenter sous le derme. Le traitement en faveur
chez les indigènes est simple, mais exige beaucoup de patience de la
part du malade. Dès que la tête apparaît sous la peau, on pratique
une incision et on la saisit. Il s'agit alors de la fixer avec une épingle
sur une bobine de bois, et de tourner tous les jours la bobine jusqu'à
ce que l'animal soit enroulé en entier. Si, impatienté par la lenteur de
cette opération, on exécute trop rapidement la traction, le ver se
contracte et se brise, la partie demeurée dans les chairs s'enfonce,
reprend une vie nouvelle, et, après une longue promenade, se
montre parfois à une très grande distance du point où la première
incision avait été faite. Certains vers nonchalants se laissent extirper
en une semaine, d'autres résistent pendant deux mois au supplice
de la bobine. Les eaux de Bouchyr ne favorisent pas également tout
le monde; quelques malheureux sont parfois gratifiés de plusieurs
filaires et ne peuvent se mouvoir sans risquer de déplacer la bobine
du mollet ou celle du biceps. La maladie, déjà fort douloureuse,
devient alors intolérable, en raison des positions extravagantes que
le patient est obligé de garder pour ne point briser ses appareils.
Les Européens et les riches habitants de Bouchyr se préservent
de ces parasites en buvant de l'eau du Tigre ou de Karoun, apportée
de Bassorah ou de Mohamméreh dans des barques pontées; mais il
n'en est pas de même des pauvres gens, obligés de consommer le
liquide saumâtre emmagasiné dans les citernes; presque tous sont
atteints au moins une fois dans leur vie.
Voilà des renseignements de nature à me faire apprécier à leur
juste valeur deux grandes carafes d'eau envoyées en pichkiach par
le hakem.
Sans compter le ver de Guinée, les indigènes sont sujets en toute
saison à des maladies terribles: choléra, accès pernicieux, diphtérie
les déciment à l'envi. Logés dans les rez-de-chaussées qui servent
de soubassement aux maisons, mal nourris, mal abreuvés, paralysés
par la fièvre et impropres au travail pendant une partie de l'année,
les gens du peuple tomberaient dans une extrême misère et
périraient en grand nombre s'ils ne trouvaient remèdes et conseils
au dispensaire organisé par les soins de Mme Ross.
19 novembre.—Dieu soit béni! les bagages sont retrouvés ou du
moins sur le point de l'être. Nous étions invités à dîner hier soir chez
le gouverneur; dès notre venue, le hakem nous a transmis la
réponse au télégramme qu'il avait envoyé la veille à Chiraz.
Çahabi divan remercie d'abord Marcel de ses salutaires
ordonnances et se plaît à attribuer aux frictions arsenicales et au
séjour dans la montagne l'amélioration de sa santé. Le gouverneur
s'excuse ensuite du retard apporté au départ de la caravane:
ignorant que nous avions laissé une partie de nos bagages au
tcharvadar bachy, il a réquisitionné tous les chevaux de la province,
afin de leur faire transporter ses tentes et sa maison hors de la ville.
Pas un convoi n'est sorti de la cité pendant deux semaines; mais,
comme depuis cinq jours les caravanes ont repris leur marche
normale, nous ne tarderons pas à rentrer en possession de nos
précieux colis.
Cette bonne nouvelle, en dissipant nos inquiétudes, nous a
permis de goûter avec une attention recueillie aux chefs-d'œuvre de
l'achpaz (cuisinier) du palais.
Le dîner était servi à la mode européenne. Cristaux, linge,
argenterie, occupaient sur un grand guéridon leur place
réglementaire; mais les plats, en vertu d'un habile compromis, ne
défilaient pas sur la table et se trouvaient disposés par rang de taille
sur deux longues nappes étendues à terre. Soupes variées, volailles,
gigots d'agneau et de mouton, poissons emmaillotés dans une friture
blonde, melons, pastèques, concombres, aubergines bouillies et
farcies, torchis (fruits ou légumes confits au vinaigre), nougats,
pâtisseries jaunes, roses ou blanches, auraient suffi à rassasier
cinquante Persans bien affamés.
Le gouverneur, après avoir jeté le coup d'œil du maître sur ces
brillants spécimens de la cuisine iranienne, nous a priés de faire
notre choix; nous nous en sommes rapportés à ses lumières et, sur
son ordre, les pichkhedmed (valets de chambre) ont fait circuler à la
ronde un plat de chaque espèce: dîner exquis et bien fait pour ravir
d'aise des gens soucieux de ne point s'offrir une rage de dents en
mangeant trop chaud.
Je n'ai pas été la seule à apprécier les mérites du festin. C'était
plaisir de voir les mines gourmandes d'une trentaine de serviteurs
assis à l'extérieur de la salle à manger. Ces invités de deuxième
catégorie happaient au passage les plats desservis, et faisaient
disparaître leur contenu avec une telle dextérité que les derniers
venus ou les plus timides avaient l'unique consolation de lécher la
sauce attachée au fond des plats.
Après le repas, nous nous sommes retirés dans le salon; les nuits
sont trop fraîches et trop humides à Bouchyr en cette saison pour
que l'on puisse passer la soirée sur les terrasses. La conversation a
roulé sur la France, sur Paris, que le hakem regrette de ne plus
habiter, bien qu'il soit encore tout à la joie d'avoir été nommé
gouverneur.
Mirza Mohammed était fort inquiet, nous a-t-il assuré, à son
arrivée à Chiraz: le pauvre homme se demandait dans sa naïveté
comment il fournirait au roi une redevance supérieure à celle
qu'acquittait son prédécesseur, et comment surtout il rentrerait dans
les madakhels que tout fonctionnaire doit distribuer avant d'obtenir
sa charge. Aujourd'hui le hakem est fort tranquille à cet égard. Sa
quiétude ne repose pas sur une étude approfondie des registres de
la province, paperasses encombrantes et inutiles, mais sur
l'expérience de ses secrétaires, habiles à découvrir des mines d'or et
d'argent monnayé à l'effigie du souverain sans le secours
d'incantations ou de baguette de coudrier.
Comme nous nous apprêtions à nous retirer, plusieurs serviteurs,
la mine à l'envers, sont entrés au salon. Ils apportaient une dépêche
dont le bruit public ou leur curiosité leur avait fait connaître la
teneur. Le télégramme venait de Téhéran et ne contenait que ces
mots: «Dieu a rappelé à lui le çpâhçâlâr.»
Le titre honorifique de çpâhçâlâr, équivalant à celui de
généralissime des armées persanes, était porté par l'avant-dernier
ministre d'État, l'une des plus puissantes figures de la cour de Nasr
ed-din. La mort inattendue de ce personnage suscite une émotion
d'autant plus grande que le défunt, parti de bien bas, avait joui
pendant plusieurs années d'une autorité souveraine.
Fils d'un étuvier de Kazbin, le çpâhçâlâr abandonna de bonne
heure le hammam paternel et se fit admettre au palais dans des
offices très infimes. Sa vive intelligence lui permit de sortir
rapidement de l'obscurité et de prendre plus tard une telle influence
sur l'esprit du roi, que celui-ci n'hésita pas à lui confier d'abord le
département des affaires étrangères, puis à le nommer enfin premier
ministre.
La facilité et la régularité de ses rapports avec les agents
diplomatiques, les sympathies qu'il avait su s'attirer en renonçant
aux éternelles tergiversations de la politique orientale, engagèrent le
chah à amener son grand vizir en Europe et à en faire le confident
de ses plus secrètes pensées. Pendant le voyage, un fait grave se
produisit à la cour de Téhéran. La sœur du souverain, veuve de
l'émir Nizam, se mariait avec Yaya khan, frère du çpâhçâlâr. Le roi
vit, paraît-il, cette union avec déplaisir et dès cette époque prêta
l'oreille aux dénonciations des ennemis d'un homme devenu trop
puissant pour ne pas traîner à sa suite un cortège d'envieux et de
mécontents.
A l'avènement au trône d'Alexandre III, le chah parut oublier ses
griefs et chargea son ancien serviteur d'aller féliciter le nouveau
souverain. L'ambassadeur devait en même temps remettre au tsar
une épée dont le fourreau était enrichi d'émeraudes, et à la tsarine
une turquoise estimée vingt mille francs. Le çpâhçâlâr ne réclama, à
cette occasion, ni traitement ni subvention; il se fit accompagner
d'un nombreux personnel, représenta dignement son maître et revint
en Perse avec l'espoir, bien légitime, de rentrer dans ses bonnes
grâces.
Lors de mon passage à Téhéran, je me souviens qu'amis et
ennemis discutaient entre eux les chances du ministre. En général
on s'accordait à croire que le roi, après avoir imposé une si lourde
contribution à son ancien favori, lui tiendrait compte de son
obéissance.
Trois jours ne s'étaient pas écoulés depuis son arrivée, que le
çpâhçâlâr, nommé gouverneur du Khorassan, était invité à partir
pour Mechhed, situé à vingt-cinq jours de marche de la capitale.
Quoique cette situation, une des plus hautes du royaume, soit
toujours donnée à un parent très rapproché du roi, en raison de la
richesse de la province et de l'omnipotence que prend bien vite un
gouverneur fort éloigné du pouvoir central, le généralissime ne se
méprit pas sur les intentions du chah, et comprit qu'il était
condamné à un exil déguisé. Dans l'espoir de rentrer en grâce, il
alla, assure-t-on, jusqu'à offrir un million à son souverain s'il voulait
l'autoriser à rester à Téhéran. En réponse à sa proposition, il reçut
l'ordre formel de gagner son poste et de quitter la capitale sous
quatre jours.
Le voisinage du tombeau de l'imam Rezza n'a-t-il point suffi à le
consoler de sa disgrâce, et le chagrin a-t-il achevé de détruire une
constitution usée par les travaux et les plaisirs? Nul ne le sait.
Le çpâhçâlâr avait rendu de grands services à la Perse en la
mettant plus directement que par le passé en rapport avec la
diplomatie européenne, et avait achevé de constituer l'unité du
royaume en soumettant d'une manière définitive les tribus du Fars et
de l'Arabistan, jusqu'alors à peu près indépendantes. Ses procédés
administratifs étaient malheureusement plus discutables que ses
vues politiques. Contrairement aux usages de ses prédécesseurs, il
ne vendait ni les charges ni les offices, mais il se dédommageait,
sans scrupule, au préjudice du trésor royal.
Dès son arrivée aux affaires, il avait senti le besoin de se
débarrasser d'un contrôle quelconque ou de l'espionnage d'un
personnel subalterne, et, pour inaugurer l'ère des réformes, il avait
renvoyé tous les employés des ministères. Tour à tour receveur et
payeur, expéditionnaire, chef de bureau, chef de division et président
du Conseil, il tenait à lui seul ses livres de comptabilité et suffisait à
sa correspondance. Les procédés administratifs et financiers de ce
ministre idéal sont néanmoins connus de tout le monde: s'il
comptait, par exemple, le prix d'un uniforme de soldat cinquante
francs, de mémoire de fournisseur il n'en donnait jamais plus de
vingt; il encourageait le roi à augmenter la solde de l'armée et
engageait les hommes au rabais. Officiers et soldats n'osaient se
plaindre, et se contentaient de rentrer dans leurs foyers, à la grande
joie de leur généralissime, qui n'avait plus à les habiller ni à les
payer, et les faisait cependant figurer sur ses états de solde. Une
pareille situation ne pouvait se prolonger éternellement. Quand les
courtisans furent bien convaincus que Nasr ed-din, à son retour
d'Europe, était las de son ancien favori, ils dénoncèrent au roi le
ministre concussionnaire et précipitèrent sa chute.
Le peuple, aux dépens duquel le çpâhçâlâr ne s'enrichit jamais,
et qui aime mieux, sentiment mesquin mais naturel, voir piller la
caisse royale que dépouiller les cultivateurs et les petits marchands,
le regrette; les grands personnages eux-mêmes partagent ce
sentiment. Aujourd'hui qu'il faut payer pour obtenir un
gouvernement, payer pour être nommé général, payer pour se faire
rendre justice, payer pour se faire arrêter, payer pour se faire
administrer la bastonnade, toute la nation déplore la chute d'un
homme qui montrait envers elle un certain désintéressement, et voit
dans sa mort inattendue une occasion de rappeler ses bonnes
qualités. Dieu nous préserve du jour des louanges!
«En somme, me dit sous forme de conclusion, et avec une
franchise charmante, le gouverneur de Bouchyr, souverain, hakems
ou ministres tournent dans un cercle vicieux. Le chah, sachant que
ses proches parents et les plus hauts fonctionnaires de son empire
sont tous enclins au madakhel (bénéfice), ne se fait nul scrupule de
saigner leur coffre-fort de temps à autre; ceux-ci, de leur côté,
prévenus du sort qui les attend, se hâtent de pressurer le peuple et
de s'enrichir afin de conserver un bien-être décent, après avoir
satisfait aux demandes parfois exagérées de leur maître.»
… Il n'est pas surprenant que l'état sanitaire de Bouchyr laisse
tant à désirer: jamais je n'ai vu une ville aussi sale et aussi mal
tenue. Que les places envahies par des tombes creusées à fleur du
sol, les rues encombrées d'ordures animales et végétales, les fosses
d'aisances à ciel ouvert ne fleurent point la rose, c'est là une
bagatelle insignifiante, à peu près commune à toutes les villes de
l'Orient; mais ici le mal est bien autrement grave. Les étages
supérieurs des maisons sont seuls habités, et les propriétaires,
n'ayant point adopté l'usage des tuyaux de descente, se
débarrassent des immondices de tout genre en les déversant au
moyen de gargouilles de bois dans le fossé creusé au milieu des
rues. Quoi qu'ils fassent, les passants doivent s'estimer fort heureux
d'échapper au jet principal et d'être seulement atteints par les
éclaboussures secondaires. A quelle dure épreuve doivent être
soumis de pieux musulmans exposés, dès le pas de leur maison, à
recevoir sur la tête des souillures immondes!
Bouchyr ne mérite pas d'ailleurs que l'on s'aventure dans ses
rues. La ville, de fondation moderne, ne possède aucun monument
digne d'intérêt et n'a pour elle que l'animation de ses bazars
encombrés de gens affairés et de portefaix arabes dont la vigueur
contraste avec l'aspect chétif des indigènes.
Le costume des hommes du peuple se ressent déjà du voisinage
de l'Arabie: chemise de laine blanche serrée autour des reins par une
écharpe colorée, abba (grand manteau), turban d'indienne bleue
rayée de rose.
Les femmes portent le tchader persan, mais remplacent le
roubandi, beaucoup trop chaud dans un pays où l'air est étouffant,
par un grillage de crin noir. Toutes sont chaussées de bottes jaunes
à entonnoir. Ainsi attifées, les grandes élégantes ont bien, quand
elles marchent, un faux air d'oies grasses en promenade, mais
peuvent au moins circuler sans dommage au milieu des immondices
de toute sorte amoncelées en ville.
On comprendra sans peine que les cochers les plus prudents et
les plus habiles ne viennent pas à bout de faire passer leurs
carrosses dans les rues; tout au plus se hasardent-ils sur la route de
Çabs-Abad. C'est pourtant sur un dogcart, solidement construit il est
vrai, que nous avons quitté Bouchyr afin d'aller remercier le colonel
et Mme Ross de leur gracieuse invitation.
Nous avons d'abord suivi une côte sablonneuse et d'une aridité
désespérante. A dix kilomètres de la ville, au milieu des dunes, des
négociants sont parvenus à créer les maigres jardins où s'élève la
maison d'été du représentant de la Reine. Quelques arbres en
carton, la vue de la mer, un home confortablement installé,
dédommagent le consul général de la tristesse de sa résidence
d'hiver.
Le colonel Ross est le roi du golfe Persique, mais il use si bien de
sa royauté qu'il est impossible de ne pas envier à l'Angleterre un
fonctionnaire d'un mérite aussi exceptionnel.
Très touchés du sympathique accueil du colonel et de Mme Ross,
nous avons cependant résisté à la tentation de passer quelques
jours à Çabs-Abad. Le djélooudar (courrier) de la caravane est
arrivé; demain nous serons en possession de nos bagages, le bateau
de la compagnie British India, qui fait le service entre Bombay et
Bassorah, est attendu ces jours-ci: il faut songer à s'embarquer.
TORKAN KHANOUM ET SA PANTHÈRE. (Voyez p. 528.)
CHAPITRE XXIX

A bord du Pendjab.—Les côtes persanes.—Le Chat el-Arab.—La barre de Fau.—


Rives du Chat el-Arab.—Mohamméreh.—Le cheikh de Felieh.—Torkan khanoum.
—Qualités de cœur d'une panthère.—Office en l'honneur de Hassan et de
Houssein.

20 novembre. A bord du Pendjab.—La chaloupe à vapeur du


consul d'Angleterre nous a conduits ce soir à bord de ce steamer,
qui, destiné à transporter des Orientaux, manque du confortable que
l'on s'attendrait à trouver sur une ligne où les prix de transport sont
très élevés. Les cabines n'ont pas de couchettes, mais des coussins
de crin, sur lesquels on étend pompeusement des serviettes. Ces
matelas ne valent guère mieux que nos couvre-pieds persans; en
tout cas le dîner de ce soir m'a fait regretter le pilau journalier
confectionné par les soins des Arabet, Mohammed, Ali, etc.
Et moi qui me réjouissais à la pensée de mener durant un jour
tout entier une vie de sybarite!
21 novembre.—Un vent assez violent s'est levé cette nuit, le
Pendjab n'a pu terminer son chargement et a levé l'ancre vers deux
heures du matin.
Au jour je suis montée sur le pont. Nous longions encore les
côtes de Perse. Elles sont plates, très basses, d'une couleur
uniformément jaune, dépourvues de toute espèce de végétation.
A huit heures, le bateau s'engage dans un estuaire vaste comme
une mer; c'est le Chat el-Arab, formé par la réunion du Tigre et de
l'Euphrate: les rives sont sablonneuses et d'une extrême monotonie.
A huit heures et demie, le navire prend toute sa vitesse et
franchit sans encombre une barre vaseuse qu'il est difficile de faire
passer aux navires calant plus de dix-huit pieds. Au delà de la barre
de Fau, les rives se rapprochent, et, bien que le fleuve ait encore
près de six kilomètres de largeur, on aperçoit cependant sur ses
bords une maigre végétation; puis apparaissent des palmiers
rabougris et tordus par les vents de mer, enfin des forêts de plus en
plus belles à mesure qu'on avance dans l'intérieur des terres. Nulle
maison, nul panache de fumée ne décèle la présence de l'homme.
Les rives du Chat el-Arab paraîtraient désertes si le fleuve n'était
sillonné de barques rapides qui vont se perdre dans les rigoles
d'irrigation. Chaque rameur est armé d'un aviron de la grandeur et
de la forme d'une cuiller à potage, et s'aide en guise de voile de son
abba suspendu au manche de la gaffe.
Vers une heure nous passons en vue d'un gros bourg fortifié
situé à l'embouchure du Karoun. Mohamméreh fut pris par les
Anglais en même temps que Bouchyr, puis restitué à l'Iran au
moment de la délimitation des frontières turco-perses. Les murailles
de terre démantelées portent encore les traces des boulets envoyés
par l'escadre victorieuse.
A quelque distance de Mohamméreh, le capitaine du Pendjab fait
mettre une chaloupe à l'eau et, sur notre prière, nous débarque à
Felieh, village d'assez pauvre apparence, habité par un chef de tribu
auquel Çahabi divan nous a spécialement recommandés.
Marcel demande s'il y a un caravansérail; on lui répond en nous
conduisant tout droit chez le cheikh.
Dès l'entrée, la maison s'annonce comme une demeure
hospitalière: autour d'une gigantesque cafetière posée sur des
cendres chaudes, sont groupés des mariniers et des toufangtchis;
chaque étranger qui franchit le seuil de la porte reçoit des mains
d'un gahvadji préposé à ce soin une tasse de café puisée dans la
chaudière.
Consommateurs civils ou militaires diffèrent des Persans par leur
type, leur costume et leur langage. A la longue gandourah, à l'abba,
à la couffè que retient sur la tête une volumineuse corde de poil de
chameau, on reconnaît immédiatement les Arabes de l'Hedjaz.
Après avoir franchi ce vestibule toujours très encombré, nous
pénétrons dans une immense cour entourée de bâtiments de peu
d'élévation, construits en terre crue et en stipes de palmiers. A notre
droite trente ou quarante serviteurs épluchent des légumes,
préparent des viandes et font cuire en plein air, dans huit marmites,
dignes compagnes de la cafetière, un repas à rassasier Gargantua et
ses hôtes. On croirait assister aux préparatifs des noces de
Gamache.
En fait, s'il faut nourrir les chefs arabes qui fument sous une
galerie, les derviches qui pérorent au milieu d'une troupe de soldats
bien armés, les dormeurs étendus deci delà, le contenu des huit
grandes marmites sera à peine suffisant.
Un vieil intendant nous introduit dans une chambre fort propre.
«Dès que le cheikh reviendra de la chasse, je lui annoncerai
qu'Allah lui a envoyé des hôtes.
—Cheikh Djaber n'est-il pas infirme? Cette lettre du gouverneur
ne lui serait-elle pas adressée?
—Mon pauvre maître n'est plus. Allah l'a rappelé à lui il y a
quinze jours à peine, mais son fils, Meuzel, fera honneur aux
recommandations adressées à un père regretté.»
Au coucher du soleil la maison s'ébranle des zirzamins aux
terrasses: de toutes les salles sortent en courant des serviteurs.
Derviches, toufangtchis et mariniers se joignent aux domestiques, se
précipitent vers la porte et se rangent en ligne pour recevoir de
nouveaux arrivants.
ENTRÉE DE LA MAISON DU CHEIKH DE FELIEH.

Un homme dans la force de l'âge, aux traits superbes mais à la


physionomie sévère, s'avance le premier; il précède un jeune garçon
de dix-sept à dix-huit ans, dont le type fin et délicat décèle l'origine
arabe; tous deux portent de longues robes, des abbas et des
turbans noirs sans aucun ornement. Ce sont cheikh Meuzel et son
plus jeune frère, en grand deuil de leur père. Ils sont suivis d'un bel
éphèbe préposé à la garde et à l'entretien du kalyan.
CHEFS ARABES DANS LA MAISON DU CHEIKH DE FELIEH. (Voyez p. 522.)

Avant de rentrer dans son appartement, cheikh Meuzel se dirige


vers la pièce où nous sommes assis. Les salutations d'usage
échangées, il prend les lettres dans lesquelles Çahabi divan le prie
de faciliter à mon mari l'entrée en Susiane, et déclare qu'il est
heureux de pouvoir mettre à notre disposition une chaloupe à
vapeur. Elle nous conduira en remontant le Karoun jusqu'au barrage
d'Avas, distant de Dizfoul de cinq étapes. Malheureusement
l'embarcation n'est pas en bon état. Notre hôte s'est engagé à la

You might also like