100% found this document useful (1 vote)
11 views

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

The document is a comprehensive guide on Data Structures and Algorithms using JavaScript, authored by Michael McMillan. It covers various topics including arrays, lists, stacks, queues, linked lists, dictionaries, hashing, sets, trees, graphs, and sorting algorithms. The book is published by O'Reilly Media and is available for download in multiple formats.

Uploaded by

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

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

The document is a comprehensive guide on Data Structures and Algorithms using JavaScript, authored by Michael McMillan. It covers various topics including arrays, lists, stacks, queues, linked lists, dictionaries, hashing, sets, trees, graphs, and sorting algorithms. The book is published by O'Reilly Media and is available for download in multiple formats.

Uploaded by

pirokmuhic74
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/ 58

Data Structures and Algorithms with JavaScript

1st Edition Michael Mcmillan download

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

Get Instant Ebook Downloads – Browse 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/

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/

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/

Absolute Beginner s Guide to eBay 2nd Edition Michael


Miller

https://ebookname.com/product/absolute-beginner-s-guide-to-
ebay-2nd-edition-michael-miller/
Law of electronic commercial transactions contemporary
issues in the EU US and China 1st Edition Faye Fangfei
Wang

https://ebookname.com/product/law-of-electronic-commercial-
transactions-contemporary-issues-in-the-eu-us-and-china-1st-
edition-faye-fangfei-wang/

Introduction to Conservation Genetics 1st Edition


Richard Frankham

https://ebookname.com/product/introduction-to-conservation-
genetics-1st-edition-richard-frankham/

Schizophrenia Cognitive Theory Research and Therapy 1st


Edition Aaron T. Beck

https://ebookname.com/product/schizophrenia-cognitive-theory-
research-and-therapy-1st-edition-aaron-t-beck/

Type 1 diabetes in children adolescents and young


adults how to become an expert on your own diabetes 2nd
Edition Ragnar Hanas

https://ebookname.com/product/type-1-diabetes-in-children-
adolescents-and-young-adults-how-to-become-an-expert-on-your-own-
diabetes-2nd-edition-ragnar-hanas/

Porphyry Against the Christians Studies in Platonism


Neoplatonism and the Platonic Tradition Robert M.
Berchman

https://ebookname.com/product/porphyry-against-the-christians-
studies-in-platonism-neoplatonism-and-the-platonic-tradition-
robert-m-berchman/
Hiking Wisconsin Second Edition Kevin Revolinski

https://ebookname.com/product/hiking-wisconsin-second-edition-
kevin-revolinski/
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 corporate@oreilly.com.
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 permissions@oreilly.com.

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
tions@oreilly.com.
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
Another Random Document on
Scribd Without Any Related Topics
conchiusa con Enrico VIII d'Inghilterra, e che gli assicurava per la
vicina spedizione i soccorsi di quella stessa potenza che aveva fatta
mancare la precedente. Faceva riflettere al pontefice quanto sarebbe
imprudente consiglio l'affidarsi alle promesse di Ferdinando e di
Massimiliano, de' quali non era meno nota la povertà che la mala
fede. Lo invitava a mettersi in guardia contro l'ambizione di questi
due principi, che aspiravano niente meno che al dominio di tutta
l'Italia; mentre ne' tempi in cui egli medesimo ne possedeva i due
più potenti stati, egli aveva rispettata l'indipendenza di tutti gli altri.
Nello stesso tempo non aveva Lodovico XII tenuti segreti gl'inviti
fattigli da Leon X di passare in Italia, ed aveva in tal modo renduto il
pontefice sospetto agli altri di lui alleati. Pareva giunto l'istante in cui
vedrebbesi il papa forzato a dichiararsi scopertamente, e far
conoscere chi avesse voluto ingannare, o il re di Francia, o gli
Svizzeri, o Massimiliano e Ferdinando, oppure i Veneziani [383].
Ma l'inaspettata morte di Lodovico XII, accaduta il 1.º di gennajo del
1515 ritardò ancora per poco tempo una dichiarazione che sembrava
imminente. Lo sproporzionato matrimonio di questo monarca, in età
di cinquantaquattro anni, con una bellissima principessa di diciotto,
venne risguardato come cagione della sua morte. La breve malattia
che conducevalo al sepolcro aveva tutti i caratteri del rifinimento. In
tempo delle medesime feste delle nozze fatte in Abeville il 9 ottobre,
e continuate in Parigi per sei settimane con giostre e tornei, il re
trovavasi così debole, che rimase costantemente sul suo letto di
riposo. «A cagione di sua moglie, dice il leale servitore di Bajardo,
aveva il re mutata affatto la sua maniera di vivere, perciocchè invece
che era solito di pranzare alle otto ore, conveniva che pranzasse a
mezzogiorno; invece di porsi a letto secondo il suo costume alle sei
ore della sera spesso non si coricava che a mezzanotte, onde cadde
infermo in sulla fine di dicembre; dalla quale malattia non potendolo
liberare veruno umano rimedio, spirò il primo di gennajo seguente,
dopo la mezzanotte [384].»
Lodovico XII, che per alcuni mesi venne riconosciuto come re di
Napoli, e che regnò più di dieci anni sul ducato di Milano, dev'essere
considerato come uno de' sovrani d'Italia; ed il suo carattere non
ebbe che troppa influenza sui destini di questa contrada. Fu
generalmente accusato d'avarizia; ed infatti alienò gli Svizzeri, e per
un risparmio mal inteso e fuori di luogo fece spesso mancare i
successi delle sue armate. Pure quest'economia, sebbene eccessiva,
fu quasi la sola virtù che gli meritò l'onorato titolo di padre del
popolo; perciocchè risparmiò le imposte de' suoi sudditi più ancora
che i proprj tesori. Altronde non ravvisavasi in lui veruna di quelle
qualità che si ammirano ne' grandi uomini o ne' grandi re. Privo di
forza di carattere, e di spirito indeciso, era abitualmente condotto, ed
aveva bisogno di esserlo; ma non sapeva prendere per sue guide
uomini a lui superiori. I suoi favoriti erano quasi tutti deboli al pari di
lui, la loro politica quasi sempre male intesa, ed inoltre quasi sempre
senza fede. Non meno ambizioso che se la natura gli avesse dati i
talenti d'un conquistatore, mai non cessò di combattere pel
possedimento del regno di Napoli e del ducato di Milano, e perdette
l'uno e l'altro per propria colpa, dopo avere attirati sopra la Francia i
più sanguinosi disastri [385]. Non meno perfido, che se invecchiato
fosse nello studio della politica, detta macchiavellica, fu infedele a
tutti i trattati, indegnamente tradì l'amicizia de' suoi alleati, i
Fiorentini, i Veneziani, il re di Navarra, il duca di Ferrara, i
Bentivoglio, i piccoli principi di Romagna, ed il principe di Piombino.
Fu il principale autore della lega di Cambrai contro i Veneziani, suoi
alleati; e questa perfidia pareggiava quella cui erasi associato contro
Federico, re di Napoli. Per altro non era alla ragione di stato ch'egli
sagrificava in tal guisa la sua parola ed il suo onore; poichè ognuna
di queste violazioni de' trattati non era meno imprudente ed
impolitica, che contraria alla buona fede.
Quando Lodovico XII si trovò personalmente alla testa delle sue
armate, ed in particolare nella prima campagna contro i Veneziani,
diede non dubbie prove di crudeltà. Ma in mezzo alle battaglie i
patimenti ed i pericoli personali spengono tutti i più delicati
sentimenti; e le atrocità commesse contro il governatore di Peschiera
e di suo figliuolo, sono una minor prova della durezza del suo cuore,
che il crudele trattamento fatto al suo rivale, Lodovico Sforza. Egli lo
tenne dieci anni in una prigione o in una gabbia di ferro; gli negò la
consolazione inutilmente invocata d'avere libri e mezzi di scrivere
nella sua solitudine, e permise che morisse disperato, senza veruna
distrazione, senza verun alleviamento di spirito [386].
Lodovico XII fece nascere lo scisma nella Chiesa. Visse lungo tempo
scomunicato, e tenne il suo regno sotto l'interdetto: ciò non pertanto
era superstizioso, e dopo di avere lungo tempo sagrificata la
religione alla politica, sagrificò l'una e l'altra alla bigotteria. La privata
dolcezza del suo carattere non merita maggiori elogj della sua
condotta pubblica. Il divorzio della prima moglie fu un insigne
esempio d'ingratitudine, di falsità, di disprezzo per ogni decenza.
Non ebbe altro motivo che l'amore da lui compito per la seconda,
allora moglie di suo cognato; e quando in età avanzata perdette
anche quest'ultima, consacrò appena qualche settimana alla di lei
memoria, e chiese subito la mano d'una terza sposa nel fiore
dell'età, il di cui amore gli costò la vita. Questa dal canto suo, per
una specie di rappresaglia, non gli recava che un cuore di già
consacrato a Carlo Brandon, duca di Suffolck, che sposò
segretamente due mesi dopo la morte di Lodovico XII [387].
CAPITOLO CXII.

Francesco I assume il titolo di duca di Milano; passa le


Alpi; batte gli Svizzeri a Marignano e conquista il
Milanese; invasione di Massimiliano in Lombardia, e
sua ritirata; diversi trattati che pongono fine alle
guerre prodotte dalla lega di Cambrai.
1515 = 1517.

Alla morte di Lodovico XII, suo genero il duca d'Angoleme, primo


principe del sangue, salì sul trono di Francia sotto il nome di
Francesco I. Era egli nato il 12 settembre del 1494, e pronipote dello
stesso Lodovico, duca d'Orleans, figlio di Carlo V, di cui Lodovico XII
era nipote. Prese nello stesso tempo il titolo di duca di Milano, come
erede di Valentina Visconti, sua bisavola, e come nominato nelle
investiture accordate da Massimiliano, in conseguenza del trattato di
Cambrai [388]. L'Italia fu in qualche modo così avvisata, che il nuovo
monarca aspirava a ricuperare colla forza delle armi la sovranità
ch'era stata tolta al suo predecessore.
La Francia aveva avuta la felicità di vedere succedersi due monarchi
nati in privata fortuna, i quali portavano sul trono virtù, o talenti, che
la reale educazione non può sviluppare. Lodovico XII, che, come
principe del sangue, si era mostrato uomo debole e mediocre, si
conservò quale sempre era stato; ad ogni modo andò debitore alla
sua ristretta e spesso contraria fortuna delle abitudini di regolarità,
d'economia, di rispetto per la giustizia e di compassione per le
miserie del popolo, che gli fruttarono l'amore de' suoi sudditi.
Francesco I era stato dalla natura assai più favorito: era egli giovane
di bella presenza, e di una forza ed agilità singolari in tutti gli esercizj
militari; la sua affabilità, la gentilezza delle sue maniere e la sua
generosità gli guadagnavano il cuore di chiunque lo avvicinava.
Finalmente era il primo re francese che fosse stato liberalmente
educato; amava le lettere, le arti, la poesia, e le coltivava egli stesso
non infelicemente. Sebbene Lodovico XII, fuori di speranza d'aver
figliuoli, lo risguardasse di già come presuntivo erede della corona, e
lo avesse perciò scelto per suo genero, promettendogli Claudia di
Francia, sua primogenita, la regina Anna di Bretagna, non aveva
permesso finch'ella visse che questo matrimonio avesse effetto.
L'odio che costei nudriva contro Luigia di Savoja, madre di Francesco
I, stendevasi anche sopra il di lei figliuolo. Il matrimonio non si
celebrò che in maggio del 1514 [389]; e fino a quest'epoca Francesco
sostenne il peso dello sfavore, e quello della necessità d'ubbidire.
Le luminose qualità di Francesco I eccitavano l'attenzione dell'Italia,
che sentivasi minacciata dalle sue prime mosse, e rammentavasi che
Gastone di Foix, pervenuto alla stessa età con eguali talenti, ma con
minore potenza per farli valere, erasi di già renduto famoso con
tante vittorie. Frattanto i nemici della Francia, posti in guardia dagli
apparecchi di Lodovico XII, credettero di avere per la di lui morte
guadagnato, se non altro, una dilazione; sembrava loro affatto
inverisimile che il nuovo re volesse intraprendere una guerra
straniera ne' primi mesi del suo regno, allontanandosene prima
d'avere avuto il tempo di consolidare la propria autorità. Francesco I
nulla omise che convalidare potesse questa opinione, e sebbene
portasse a quattro mila lance il numero delle sue compagnie
d'ordinanza, non annunciò quest'armamento che come una misura di
difesa [390].
Infatti prima d'entrare in campagna, Francesco I voleva conoscere la
disposizione de' suoi vicini. Trovò ch'Enrico VIII, re d'Inghilterra, non
era meno di lui desideroso di rinnovare il trattato di alleanza
conchiuso col suo predecessore; e questo nuovo trattato fu soscritto
a Londra il 5 di aprile [391]. L'arciduca Carlo, sovrano de' Paesi Bassi,
si mostrò egualmente disposto a stipulare in Parigi, il 24 di marzo,
un trattato di alleanza in forza del quale prometteva di sposare
Renata di Francia, figliuola di Lodovico XII, e cognata di Francesco I,
tostocchè questa sarebbe nubile [392].
Ma d'altra parte Ferdinando il Cattolico non volle rinnovare la tregua
d'Orthes, se non a condizione che vi si comprendesse il Milanese, al
che Francesco non volle acconsentire. Massimiliano ricusò d'entrare
in negoziazioni; gli Svizzeri non vollero ricevere gli ambasciatori
francesi, quando non fossero apportatori della ratifica della
convenzione di Digione; il papa promise di tenersi neutrale, ma nello
stesso tempo negoziava segretamente con Massimiliano, con
Ferdinando e cogli Svizzeri, ed in luglio sottoscriveva un trattato di
guarenzia per il ducato di Milano [393]. I Veneziani dal canto loro
riponevano ogni speranza nei soccorsi della Francia; affrettavano il re
a scendere in Italia, mentre che l'assistenza loro poteva ancora
essere efficace; e rinnovarono con lui, il 27 di giugno, l'alleanza che
avevano conchiusa col di lui predecessore [394].
Il doge di Genova, Ottaviano Fregoso, era stato ricondotto in patria
dalle armi degli Spagnuoli e del papa, onde la lega contraria alla
Francia credeva di poter contare sopra di lui; pure ella non lo
accarezzava più di quello che fatto avesse il duca di Milano
medesimo, e mentre opprimeva questi colle contribuzioni, e
continuamente lo minacciava di cedere i suoi stati ad un altro, gli
offriva nello stesso tempo la signoria di Genova, a condizione ch'egli
pagasse alla lega una grossa somma di danaro; di modo che il
Fregoso non ignorava che, sotto la protezione del papa e del re di
Spagna, la sua patria veniva in certo modo posta in vendita al
migliore offerente. Accolse dunque con piacere le segrete
proposizioni di Francesco I, che chiedeva la sua alleanza. Conchiuse
un trattato col contestabile di Borbone, che non doveva essere
pubblicato che dopo che le armate francesi sarebbero entrate in
Italia; allora il Fregoso doveva aprir loro i passaggi della Liguria,
secondarle con un determinato numero di fanti, e deporre il titolo di
doge, per assumere quello di perpetuo governatore di Genova a
nome del re di Francia [395].
Finalmente a Francesco I restava un ultimo alleato in Italia, ma di
tutti il più debole, ed era il marchese di Saluzzo, che, spogliato di
tutti i suoi stati per cagione del suo attaccamento alla Francia, altro
più non conservava che la città di Revello, che dalla sua posizione
per altro alle falde delle montagne era renduta importante [396].
Ma Francesco primo contava meno sopra i suoi alleati che sulle
proprie forze della Francia, e sull'entusiasmo con cui questa
apparecchiavasi a secondare il suo giovane re nella prima di lui
impresa. Volendo Francesco cancellare la vergogna delle sconfitte di
Novara e di Guinegattes, ragunava la più poderosa armata che fin
allora fosse stata condotta in campagna da un re di Francia. Riunì
nel Delfinato duemila cinquecento lance francesi, il fiore di tutta la
nobiltà francese; e perchè la gelosia di questa casta teneva in
Francia disarmato il terzo stato e lontano da ogni militare esercizio; e
perchè d'altra parte le ultime guerre avevano fatta sentire la decisiva
importanza dell'infanteria, quand'essa presentava o la massa
impenetrabile e coperta di picche degli Svizzeri, o l'agilità unita alla
costanza degli Spagnuoli; Francesco I si procurò ventidue mila
Landsknecht per far testa agli Svizzeri, e dieci mila Baschi da opporsi
agli Spagnuoli. Erano i primi sotto il comando del duca di Gueldria,
del capitano Tavannes, la di cui gente, che ammontava a sei mila
uomini, chiamavasi la banda nera, del duca di Suffolck, del conte di
Volff-Brandeck, e di Michele di Openberg [397]. L'avarizia di
Ferdinando, che mai non aveva voluto pagare la taglia del suo
illustre capitano Pietro Navarro, fatto prigioniero nella battaglia di
Ravenna, somministrò ai Francesi un eccellente capo per formare
l'infanteria basca. Il Navarro, stanco di così lunga prigionia, restituì a
Ferdinando tutti i feudi che aveva da lui ricevuti, entrò al servigio
della Francia, e levò parte nel Bearn e parte nel Delfinato i dieci mila
uomini, cui egli diede la forma, la disciplina e le armi colle quali la
sua fanteria spagnuola erasi lungo tempo distinta [398].
Raimondo di Cardone, dopo di avere minacciato il Vicentino, e
forzato a rinculare Bartolommeo d'Alviano, che aveva dal senato
ricevuto espresso ordine di non esporsi a formale battaglia, aveva
ricondotta a Verona l'armata spagnuola. Giuliano de' Medici, che suo
fratello Leon X aveva nominato gonfaloniere della Chiesa, adunava
tra Piacenza e Reggio un'armata composta di truppe pontificie e di
truppe della repubblica fiorentina. Finalmente gli Svizzeri si
affrettavano soli di prevenire i Francesi, occupando i passi delle Alpi.
Avevano stabilito il loro quartiere generale a Susa, ove tenevano di
già un'armata di oltre venti mila uomini, la quale custodiva le
aperture delle due valli d'Exiles e della Novalese, con tutte le gole del
monte Cenisio e del monte Ginevra [399].
D'altra parte l'armata di Francesco I occupava le spalle delle stesse
Alpi nel Delfinato, tra Grenoble e Briançon. Il passaggio del monte
Ginevra, pel quale i Francesi erano nelle precedenti guerre scesi in
Italia, veniva loro chiuso: ed il re giudicava impossibile di sforzare gli
Svizzeri in anguste gole, ove la sua cavalleria non poteva agire, e
dove il più piccolo ritardo avrebbe esposta la sua armata a perire di
fame. In tale stato di cose il maresciallo Trivulzio s'addossò il carico
di visitare le montagne, per informarsi da tutti i pastori intorno alle
strade per le quali l'armata francese potrebbe passare e prendere
alle spalle l'armata svizzera; s'attenne in ultimo a quella, che, dalle
rive della Duranza, conduce per Guillestre e per l'Argentiera alle
sorgenti della Stura, ed ai piani del marchesato di Saluzzo [400].
Già era il 10 d'agosto, e più non si vedevano nevi nelle gole delle
montagne che si dovevano attraversare coll'artiglieria; ma
verun'armata non aveva fin allora penetrato in così alpestre valli,
sconosciute perfino dai condottieri di merci, e praticate solamente da
alcuni cacciatori di camozzi. L'intrapresa di condurvi un treno
d'artiglieria, tutti gli uomini d'armi francesi, e trenta mila pedoni,
doveva dunque sorprendere l'immaginazione. Da Grenoble l'armata
erasi recata ad Embrun per Vizille e la Mura. Colà provvedutasi di
vittovaglie per cinque giorni, penetrò nelle montagne pei villaggi di
san Clemente e di Crispino. Aveva lasciato a sinistra il monte
Genievre, guadata la Duranza, e trovata la sua prima stazione a
Gilestre. Di là fu d'uopo aprirsi col ferro una strada a traverso alla
rupe di san Paolo, che chiudeva il passaggio: questo si eseguì il
secondo giorno, e l'armata andò a passare la notte a Barcellonetta. Il
terzo giorno si doveva valicare la catena centrale delle Alpi, quella
che, tra Barcellonetta e l'Argentiera, divide le acque che scendono
nel Rodano da quelle che vanno nel Po. Qua e là dovevansi far
saltare degli scogli per aprirsi la via, o gettar ponti a traverso ai
precipizj, o innalzare sull'erta delle montagne lungo i precipizj delle
gallerie di legno. Settantadue grossi pezzi d'artiglieria dovevano
passare per questa strada colla colonna centrale dell'armata, la
cavalleria pesante e gli equipaggi; ed in oltre due mila cinquecento
pontonieri e zappatori, raccolti in corpo e pagati come la fanteria, i
quali dovevano aprire le strade; ma lo zelo dei semplici soldati era
ancora più efficace; essi strascinavano l'artiglieria invece dei cavalli,
e mostravano altrettanta avvedutezza e destrezza che coraggio per
superare le inudite difficoltà che loro opponeva la natura. La terza
stazione dell'armata fu ne' villaggi di Larchia e di Ehergia. L'armata
era omai giunta nella valle della Stura; ma la montagna di Piè di
Porco gli chiudeva tuttavia il passaggio: essa la superò il quarto
giorno, ed il quinto si trovò in Lombardia nelle pianure del
marchesato di Saluzzo [401].
Mentre la colonna del centro teneva questa strada, continuamente
lottando con pericoli e con difficoltà che verun altro generale non
aveva per anco tentato di superare, altre divisioni dell'armata
tenevano le strade della Dragoniera, di Rocca Perotta e di Cuneo,
senza mai scontrarsi negli Svizzeri, che con tanto vantaggio
avrebbero potuto vietarne il passaggio.
Con una di queste divisioni La Palisse era stato incaricato di portarsi
da Briançon a Villafranca, e di là per Sestrieres alle sorgenti del Po.
Egli formava in tal modo l'ala sinistra di tutta l'armata francese, e
siccome colui che trovavasi più vicino agli Svizzeri, era altresì quegli
che più particolarmente copriva l'artiglieria. Bajardo, Humbercourt e
d'Aubignì camminavano con questa divisione. Bajardo ebbe avviso
che Prospero Colonna, capitano generale del duca di Milano, aveva il
suo quartiere a Carmagnola, alle falde di quelle stesse montagne, e
seppe inoltre che, sebbene la strada di Rocca Sparviera non avesse
mai veduti cavalli, era non pertanto praticabile. Bajardo e La Palisse
risolsero di sorprendere il generale nemico. Al Colonna riuscì in
quest'occasione dannoso il suo circospetto carattere; perchè non
potè credere possibile ciò ch'egli medesimo non avrebbe osato di
tentare. Infatti egli non aveva verun sospetto dell'avvicinamento de'
Francesi; pure era partito da Carmagnola per Pignerolo la mattina
medesima del 15 agosto, giorno in cui, attesa la sollecitudine usata,
La Palisse e Bajardo avevano sperato di sorprenderlo nella prima di
queste due città: ma, avvisati della sua partenza, gli tennero dietro
di galoppo. Il Colonna, che aveva con lui trecent'uomini d'armi,
alcuni cavaleggieri, e molti cavalli di rimonta, erasi trattenuto a
Villafranca per desinare. Non volle dar fede alle sue spie che vennero
a partecipargli l'imminente arrivo de' Francesi. Il corpo di guardia,
posto all'ingresso di Villafranca, vedendo venire il nemico volle
chiudere le porte; ma due uomini d'armi francesi, che avevano
preceduta la compagnia, si precipitarono avanti con sì grande
impeto, che uno di loro riuscì a cacciare la sua lancia tra le imposte
della porta che si chiudeva, ed a tenervela finchè sopraggiunsero i
suoi camerata. Prospero Colonna, sorpreso, non potè fare veruna
resistenza e fu fatto prigioniere colla maggior parte dei suoi uomini
d'armi, e più di settecento cavalli [402].
L'Italia seppe nello stesso tempo la discesa dalle Alpi di un'armata
francese tanto formidabile, e la prigionia del suo più riputato
generale. Queste notizie scoraggiarono gli alleati, e li fece più
diffidenti gli uni degli altri; onde essi volsero tutte le loro cure a
cercare separatamente i mezzi di porsi al sicuro dal comune pericolo.
Giuliano de' Medici, sorpreso da una pericolosa febbre, aveva
abbandonata l'armata, per recarsi a Firenze, lasciandone il comando
a suo nipote Lorenzo. Leon X si affrettò di far dire a quest'ultimo di
non avanzarsi contro i Francesi, di non violare la neutralità, e di
cogliere il pretesto della rivoluzione di Guido Rangoni, per trattenersi
nel Modenese all'assedio di Rubiera. Nello stesso tempo spedì il suo
confidente, Cinzio di Tivoli, a Francesco I, per iscusare i suoi primi
passi, ed intavolare qualche negoziazione; ma questo emissario fu
arrestato dagli Spagnuoli, e le carte che gli si trovarono addosso
fecero conoscere a Raimondo di Cardone, cui furono rimesse, quanto
poco fondamento doveva fare sul papa [403].
Il Cardone aveva concentrato in Verona tutte le forze della Spagna, e
stava colà aspettando i soccorsi della Germania, che Massimiliano
prometteva sempre e non mandava mai. Altronde egli aveva fin
allora mantenute le sue truppe senza danaro a carico del paese
ch'esse guastavano, conciossiachè non si può dire che rifacessero la
guerra. Ferdinando non mandava verun sussidio; però nell'istante in
cui avrebbe dovuto porsi in cammino, il generale non poteva
dispensarsi dal pagare ai soldati almeno una parte de' soldi arretrati.
Bartolommeo d'Alviano gli si era di nuovo avvicinato, occupando
colla sua armata il Polesine di Rovigo; e, senza voler tentare la
dubbia sorte di una battaglia, riteneva gli Spagnuoli, loro non
permettendo di andare ad unirsi agli Svizzeri [404].
Gli stessi Svizzeri avevano con qualche perturbamento udita la
notizia del passaggio di Francesco I: eransi da principio avviati verso
Pignerolo con intenzione di liberare Prospero Colonna, ed avevano
costretto La Palisse a ripiegarsi sopra Fossano; ma quando seppero
che tutta l'armata, e lo stesso re alla testa della medesima avevano
passate le Alpi, chiesero una sospensione d'armi per ritirarsi a
Vercelli, lo che da Francesco, che ardentemente bramava di
riconciliarsi con loro, fu subito accordato. Nella loro ritirata
saccheggiarono Chivasso e Vercelli, ed infine si fermarono a
Novara [405].
Dopo il cominciamento della guerra gli Svizzeri si trovavano divisi in
due fazioni; gli uni, strascinati dal cardinale di Sion, implacabile
nemico della Francia, non volevano udire ragionamenti di accordo;
gli altri, i di cui principali capi erano Alberto della Pietra e Giovanni di
Diesbach, capitani de' Bernesi, e Giorgio di Super-Sax Valesano,
desideravano di riconciliarsi con una monarchia, che risguardavano
come la naturale amica della loro nazione; e si lagnavano, che si
facesse loro versare il più puro lor sangue per una contesa affatto
straniera alla svizzera. L'ambizione di coloro che volevano
signoreggiare l'Italia ed opprimere la Francia, era sproporzionata
affatto colla loro forza, e pareva loro che la Svizzera dovesse essere
egualmente perduta, sia che la Francia cessasse di esistere, o sia
che la Francia vittoriosa volesse vendicarsi de' suoi più prossimi
vicini. Il timore, che inspirava l'armata di Francesco I, consigliava gli
Svizzeri a dare orecchio alle persuasioni di Diesbach e di Alberto, che
volevano che si accettasse la mediazione loro offerta dal duca di
Savoja, e dal bastardo di lui fratello [406].
Ma gli Svizzeri, che il giorno d'una battaglia si assoggettavano ad
una rigorosa disciplina, conservavano nelle loro armate, qualunque
volta non si trovavano in presenza del nemico, tutte le più focose
abitudini democratiche. I ragionamenti de' loro capi gli strascinavano
a vicenda ad estremi partiti. Gli uni, di già carichi di preda,
desideravano di trasportarla nelle loro montagne, altri domandavano
la guerra, perchè non avevano ancora nulla guadagnato; tutti si
lagnavano, perchè i quaranta mila ducati al mese, loro promessi dal
papa e dal vicerè, mai non giugnevano al campo. In un istante di
mal umore saccheggiarono la cassa del commissario pontificio, e di
già si ponevano in cammino per tornare nella Svizzera, quando
arrivò il danaro. Allora si calmarono, e si accamparono a Gallarate,
ove aspettarono venti mila loro compatriotti, che passavano le Alpi
per raggiugnerli [407].
Frattanto il bastardo di Savoja ed il signore di Lautrec avevano
seguiti gli Svizzeri a Gallarate per continuare le loro negoziazioni; e
perchè questi offrivano danaro contante, mentre che gli alleati
avevano di già fatta conoscere la loro povertà, la maggior parte dei
venti commissarj svizzeri, nominati per trattare con loro, erano
disposti ad un accomodamento. Diffatti venne all'ultimo dalle due
parti firmato un trattato, in forza del quale gli Svizzeri
acconsentivano che il ducato di Milano tornasse alla Francia, non
esclusi i piccoli distretti posti al piè delle Alpi ch'essi avevano
staccati, a condizione che Francesco Sforza sposasse una principessa
del sangue reale di Francia, e ricevesse per appannaggio il ducato di
Nemours, oltre una pensione di dodici mila franchi. Dal canto suo il
re promise di pagare in diversi termini seicento mila scudi per la
capitolazione di Digione, e trecento mila pei villaggi conquistati, che
gli Svizzeri restituivano. Ritornò ai cantoni le antiche loro pensioni, e
l'alleanza rinnovatasi tra di loro doveva durare tutto il suo regno e
dieci anni dopo la sua morte [408].
Francesco I, premuroso di fare un primo pagamento agli Svizzeri, e
di porre in tal modo il suggello alla pace, richiese a tutti i principi e
gentiluomini di prestargli ciò che avevano in danaro contante ed in
vasellame d'oro e d'argento. Ciascuno non si serbò che quanto era
necessario pel proprio mantenimento di otto giorni: ed il danaro fu
mandato a Buffalora, ove il signore di Lautrec doveva consegnarlo ai
deputati della lega. La pace sembrava talmente sicura che il duca di
Gueldria, capitano di tutti i Landsknecht, ripartì a tutta fretta per
respingere un'invasione dei Brabantesi fatta ne' suoi stati; e quando
ebbe a Lione la notizia della battaglia di Marignano, cadde per
dispiacere pericolosamente infermo [409].
Frattanto Rosten [410], borgomastro di Zurigo, che per l'età e per la
sua sperienza militare era stato da' cantoni nominato generale di
tutte le loro truppe in Italia, arrivò da Bellinzona al campo, ch'erasi
trasportato a Monza, con una nuova divisione di venti mila uomini.
Gli Svizzeri, che prima si sentivano più deboli, credettero allora di
avere ricuperata la superiorità. I nuovi venuti non sapevano risolversi
a tornare in patria senza combattere; portavano invidia alle ricchezze
acquistate dai loro compagni, e dichiararono che giammai i cantoni
non acconsentirebbero alla restituzione delle podesterie italiane,
secondo portava il trattato. Invano i partigiani della Francia
rappresentavano quanto vergognosa cosa sarebbe il violare una
convenzione così solennemente stipulata; la maggior parte di quella
moltitudine di Svizzeri domandava la battaglia; essi proponevano,
con due subiti attacchi, d'impadronirsi del danaro ch'era stato
portato a Buffalora, e di sorprendere il re, che colla sua armata erasi
avvicinato a poche miglia di Milano. Alberto della Pietra e Giovanni di
Diesbach, non volendo prendere parte a quest'atto di mala fede,
abbandonarono il campo per tornare in patria, e con loro si posero in
cammino sei in sette mila de' loro commilitoni. Il signore di Lautrec,
prevenuto a tempo da alcune spie de' progetti degli Svizzeri, partì
precipitosamente da Buffalora, e pose in sicuro il danaro a lui
affidato [411].
Intanto l'armata francese aveva omai occupata la maggior parte
della Lombardia. Aymar di Prie con quattrocento lance e cinque mila
fanti erasi avvicinato a Genova, onde sollecitare Ottaviano Fregoso a
dichiararsi per la Francia; e questi aveva subito spiegate le bandiere
francesi, e rinforzata con quattro mila fanti l'armata d'Aymar di Prie,
che occupava tutto il paese a mezzogiorno del Po [412]. Dalla banda
settentrionale di questo fiume, il re si era avanzato da Vercelli verso
Novara, che non aveva fatto che una debolissima resistenza; indi,
passato il Ticino, si trattenne a Buffalora e ad Abbiategrasso, mentre
che Pavia gli apriva le porte, e che Gian Giacopo Trivulzio si avanzava
fino a quelle di Milano: quest'ultimo veniva incontrato da una
deputazione del popolo di questa città, la quale lo supplicava di non
compromettere, prima della battaglia, la capitale della Lombardia,
che trovavasi tra le due armate, e di astenersi dall'entrarvi per
umanità, e per riconoscenza dell'attaccamento dei Milanesi verso la
corona di Francia [413].
Il cardinale di Sion trovavasi presso Raimondo di Cardone, che aveva
stabilito il suo campo al confluente dell'Adda e del Po. Quando seppe
che i suoi compatriotti avevano determinato di continuare la guerra,
sollecitò il Cardone ad unire la sua armata alla loro, e non lo potendo
ottenere, si recò egli presso gli Svizzeri a Monza, con Muzio Colonna,
Luigi di Pitigliano, quattro cento cavaleggieri ed alcuni uomini d'armi.
Gli Svizzeri non avevano altra cavalleria nella loro armata [414].
Il Cardone, dopo avere lasciate guarnigioni in Verona ed in Brescia,
andò ad unirsi a Piacenza a Lorenzo de' Medici con settecento
uomini d'armi, seicento cavaleggieri, e sei mila fanti. Dal canto suo il
Medici aveva sotto di sè settecento uomini d'armi, ottocento
cavaleggieri e quattro mila fanti. Queste due armate, riunite alle
spalle de' Francesi, erano abbastanza forti per tenerli inquieti; ma
intanto l'Alviano aveva passato l'Adige, e, rimontando la sinistra del
Po fino a Cremona, era venuto ad accamparsi in faccia al vicerè, che
aveva di già apparecchiato il suo ponte di battelli sotto Piacenza.
L'armata veneziana, che sotto gli ordini dell'Alviano contava
novecento uomini d'armi, mille quattrocento cavaleggieri e nove mila
fanti, teneva in dovere tutte le forze della Spagna, del papa e de'
Fiorentini, e con così maestro movimento agevolava ai Francesi il
modo di sperimentare co' soli Svizzeri la sorte della guerra [415].
Francesco I, per assicurare la sua comunicazione coll'Alviano e per
troncare assolutamente quella del campo spagnuolo cogli Svizzeri,
era venuto ad accamparsi a Marignano, posto sulla strada di
Piacenza a Milano, lontano trenta miglia dalla prima di queste due
città, dieci dalla seconda. L'Alviano occupava dieci miglia più in là di
Marignano Lodi verso Piacenza; onde il Cardone, dopo avere fatto
passare il Po a parte delle sue truppe, conoscendo l'impossibilità di
avanzare, aveva ripassato il fiume. Gli avamposti francesi
stendevansi fino a tre miglia presso Milano, a san Donato ed a santa
Brigida; e gli Svizzeri, dopo l'arrivo del cardinale di Sion nel loro
campo di Monza, erano rientrati in Milano in numero di circa
trentaquattro mila uomini [416].
Il 13 di settembre il cardinale di Sion fece battere il tamburo per
adunare tutti gli Svizzeri sulla piazza del castello di Milano. Egli vi si
era fatto innalzare un pulpito dal quale gli arringò, eccitandoli a
combattere per la santa Chiesa; conveniva, diceva egli, sorprendere
il re, vendicarsi in una sola volta di tutte le offese ricevute, ed
aggiugnere nuovi allori a quelli che avevano di già colti a Novara.
Nello stesso tempo fece dare un falso allarme da Muzio Colonna, che
rientrò precipitosamente in città, e chiese il soccorso di tutta
l'armata, come se fosse inseguito dai Francesi. Allora quegli stessi,
che fino a tal giorno erano stati per la pace, diedero di piglio alle loro
armi col medesimo impeto degli altri, onde non abbandonare i loro
compatriotti nell'istante del pericolo [417].
Malgrado la nuova determinazione presa dagli Svizzeri i loro
negoziatori e quelli de' Francesi trovavansi tuttavia uniti a Gallarate;
ed il re era sempre di sentimento che sarebbesi fatta la pace;
quando il tredici di settembre, tre ore dopo mezzogiorno, il
maresciallo di Fleuranges, ch'era stato mandato verso Milano per
osservare il nemico, e aveva probabilmente cagionato l'allarme da
cui il cardinale di Sion seppe tirare partito, vide sortire dalla città
tutta l'armata degli Svizzeri al suono delle terribili trombette d'Uri e
d'Underwald, che tenevansi in serbo pei giorni di battaglia. Egli corse
verso il re per avvisarlo di armarsi e chiamare i Francesi a raccolta.
Bartolommeo d'Alviano trovavasi allora in conferenza nella tenda del
re, che lo prese per mano, e gli disse: «signor Bartolommeo, io vi
prego di recarvi sollecitamente alla vostra armata, e venite colla
medesima il più presto che potrete sia di giorno o di notte, dove io
sarò, giacchè voi ben vedete qual affare ho sulle braccia [418].»
Il re, che non pensava di essere attaccato, non aveva presa a santa
Brigida una vantaggiosa posizione; la strada di Milano, per la quale
era ripartito il maresciallo di Fleuranges con dugento uomini d'armi,
per fare una carica contro gli Svizzeri, seguiva una retta linea ed era
fiancheggiata di fosse da ambedue le parti, di modo che la cavalleria
non poteva prendere i nemici di fianco, nè volteggiare intorno a loro.
Alcuni corpi di Landsknecht erano disposti al di là della fossa, ma
non potevano farvi che un debole servigio; altronde le lunghe
negoziazioni ch'essi avevano veduto trattarsi tra il re e gli Svizzeri, li
teneva in qualche diffidenza; temendo essi per avventura che il re gli
avesse abbandonati a quei formidabili nemici [419].
Gli Svizzeri giunsero agli avamposti francesi quando omai non
rimanevano che due ore di giorno. Essi vanzavano sulla fronte
dell'armata colla picca abbassata, non ricorrendo a veruno studiato
movimento, nè altr'arte militare adoperando che la forza del corpo e
la loro intrepidezza. Essi marciavano contro l'artiglieria senza lasciarsi
spaventare dalle scariche delle batterie, che prendevano in pieno le
loro file; dopo la caduta de' loro commilitoni serravano di nuovo le
file ed avanzavano sempre. Gli uomini d'armi si scagliarono contro di
loro, condotti dal re alla testa de' gentiluomini della sua guardia.
Scriveva egli stesso a sua madre: «Da cinquecento e da cinquecento
vi fu fatta una trentina di belle cariche; e al certo più non si dirà che
gli uomini d'armi sono lepri armate; perciocchè a non dubitarne essi
fecero l'esecuzione [420].» Però questo corpo di cavalleria, che non
poteva tenere che la retta linea della grande strada ed attaccare gli
Svizzeri di fronte, veniva trattenuto dal bosco di picche, contro le
quali esso urtava. A misura che gli squadroni piegavano, gli Svizzeri,
che mai non si erano lasciati intaccare, s'avanzavano contro di loro in
buon ordine. Alcune migliaja di Landsknecht tentarono di passare la
fossa per prendere gli Svizzeri di fianco, ma vi perirono quasi
tutti [421].
La prima batteria che venne attaccata dagli Svizzeri non era
composta che di sette pezzi di cannone, sotto il comando di Pietro
Navarro: era coperta da una larga fossa che veniva difesa da un
corpo di fanteria basca e guascona. Fu attaccata dal battaglione
svizzero della gioventù perduta, che era un corpo di giovani soldati
scelti in tutti i cantoni, che portavano il distintivo di alcune piume
bianche sul capo, ed avevano doppio soldo. Questi perdettero
nell'attacco moltissima gente, ma all'ultimo s'impadronirono della
batteria [422].
La luce del giorno era da molto tempo mancata ai combattenti, ma
era stata rimpiazzata da una chiarissima luna, e la pugna continuava.
Ciò nulla meno i capì più non potevano discernere l'andamento della
battaglia, nè dirigere le cominciate operazioni, e tutti separatamente
si battevano contro coloro che accidentalmente si trovavano a fronte.
I corpi francesi erano di già separati dagli Svizzeri, ma combattevano
ancora per conservare il posto che avevano preso. Dopo quattro ore
di notturna battaglia, la stanchezza ed il non conoscere la situazione
de' nemici fecero deporre le armi a tutti. Tutti rimasero al proprio
luogo, cercando di ricuperare col sonno le perdute forze [423].
«Sopraggiunse la notte, dice Fleuranges, e gli Svizzeri cominciarono
a cacciare gli uomini d'armi da un canto e dall'altro; perciocchè più
non sapevano dove andassero, e venivano uccisi dovunque si
trovavano. Nello stesso stato erano i Landsknecht ed i fanti francesi,
tutti smarriti come gli altri. Il re si fermò presso l'artiglieria, e non
aveva un uomo a piedi presso di lui; e fece una carica con circa
venticinque uomini d'armi, i quali lo servirono maravigliosamente; e
poco mancò che il re non impazzisse, e vi giuro in su l'onor mio, che
fu uno de' più valorosi capitani della sua armata, non avendo mai
voluto abbandonare la sua artiglieria, e facendo intorno a sè
ordinare il più di gente che poteva. E gli Svizzeri furono assai vicini
all'artiglieria, ma non la videro: ed il detto re fece spegnere un fuoco
ch'era vicino alla menzionata artiglieria, perchè trovandosi gli Svizzeri
vicini, non la vedessero custodita da così poca gente. Ed il detto
signore chiese da bere, essendo molto assetato; e fuvvi un pedone
che andò a prendergli dell'acqua ch'era lorda di sangue, la quale
fece tanto male al detto signore, ch'era soverchiamente riscaldato,
che lo costrinse a rigettare tutto quello che aveva in corpo. Egli si
coricò sopra un carro dell'artiglieria per riposarsi alquanto, e
sollevare il suo cavallo ch'era malamente ferito. Aveva vicino un
trombetta italiano, chiamato Cristoforo, che lo servì assai bene,
perchè gli si tenne sempre accanto, ed il suono della sua tromba
vinceva quello di tutte le altre del campo; e perciò sapevasi ove
stava il re, e la gente si andava ristringendo verso di lui [424].»
E fu in tal modo che durante la notte si ragunarono circa venti mila
Landsknecht e tutti gli uomini d'armi nel luogo ove trovavasi il re
presso l'artiglieria. I capitani francesi, approfittando del breve
intervallo tra l'una e l'altra battaglia, ritiravano le batterie che
credevano troppo avanzate, le collocavano vantaggiosamente,
rifacevano la loro linea rotta in varj punti, e combinavano gli attacchi
che la cavalleria doveva tentare ai fianchi o alle spalle per rompere la
falange degli Svizzeri [425].
Questi dal canto loro eransi riuniti al suono de' due corni d'Uri e
d'Underwald, che si udirono suonare tutta la notte. Il cardinale di
Sion loro aveva fatte portare vittovaglie da Milano, e i loro corpi
s'intendevano ancora senza vedersi. Il prelato aveva spediti corrieri
in varie parti per annunziare, dietro l'accaduto nel primo attacco, che
gli Svizzeri erano vittoriosi e l'armata francese disfatta [426].
«Quando si fece giorno (il venerdì 14 settembre) ognuno si ritirò
sotto le proprie insegne, dice Martino di Bellay, e ricominciò la
battaglia più furiosa che la sera, di modo che io vidi uno dei
principali battaglioni de' nostri Landsknechts rinculare più di cento
passi; ed uno Svizzero, passando tutte le linee della battaglia, arrivò
a toccare colla mano un pezzo dell'artiglieria del re, ove fu ucciso; e
senza la cavalleria, che sostenne gran parte dell'urto svizzero, si era
in pericolo [427].» Ma malgrado l'intrepidezza degli Svizzeri, e
l'eccellente loro ordinanza, potevasi di già prevedere che il risultato
della battaglia non riuscirebbe loro favorevole. L'artiglieria francese
faceva orrendi guasti ne' loro battaglioni, ed ogni loro sforzo per
impadronirsene tornava vano. I replicati attacchi della cavalleria sui
loro fianchi, sebbene non li disordinassero, ne impedivano la marcia,
e loro uccidevano molta gente. «E cominciavano, dice Fleuranges, a
girare intorno al loro campo da ogni lato per vedere se potevano
assalirli; ma non vi riuscivano; cercarono di rompere una banda che
si era mossa, ma quando si videro abbassate contro le picche,
passarono avanti senza toccarla [428].»
Mentre gli Svizzeri cominciavano già ad essere titubanti,
Bartolommeo d'Alviano, ch'era stato a Lodi a prendere la sua truppa
e che aveva camminato tutta la notte, giunse sul campo di battaglia
con soli cinquantasei cavalieri, prevenendo la sua armata, che
avanzavasi più lentamente ordinata a colonne. Ma il grido de'
Veneziani Marco! Marco! le loro insegne e la grande opinione che si
aveva della rapidità dell'Alviano fecero credere ai due campi che
tutta la sua truppa arrivasse con lui. Gli Svizzeri non giudicarono
conveniente di aspettarlo; strinsero nuovamente le loro file e
ripiegarono verso Milano in buona ordinanza, e con sì fiero contegno,
che niun corpo dell'armata francese di fanteria o di cavalleria, ardì
molestarli. Soltanto due loro compagnie, che si riposavano ne' granai
di un villaggio, perirono tra le fiamme, che vi accesero i cavaleggieri
dell'armata veneziana [429].
Il maresciallo Trivulzio, ch'era stato presente a diciotto battaglie
campali, non le risguardava che come giuochi da fanciullo a petto di
quella terribile di santa Brigida o di Marignano, che aveva costume di
chiamare una battaglia di giganti. Si può credere che tra l'una e
l'altra armata rimanessero sul campo circa diciotto mila uomini, due
terzi de' quali Svizzeri. Ma gli storici delle due parti, per adulare la
vanità nazionale, danno intorno al risultamento della battaglia un
calcolo assai diverso. Nell'armata svizzera eranvi pochi nomi illustri;
in quella dei Francesi moltissimi, e portarono il lutto le più nobili
famiglie. Francesco fratello del duca di Borbone, Imbercourt, il conte
di Sancerre, il signore di Bussy nipote del cardinale d'Amboise,
Giovanni di Muy signore della Meilleraye, il principe Carlo di Talmont,
unico figlio di Luigi della Tremouille, il signor di Roye fratello del
maresciallo di Fleuranges, ed il giovane conte di Pitigliano, venuto
coll'Alviano dall'armata veneziana, rimasero tra i morti [430].
«La sera del venerdì, in cui terminò la battaglia con onore del re di
Francia, si fece allegria nel campo e parlossene in più maniere. E si
trovò che gli uni avevano fatto meglio degli altri; ma si trovò
soprattutto che il buon cavaliere (Bajardo) si era nelle due giornate
mostrato tal quale avea costume di essere in tutti i luoghi in casi
simili. Il re volle fargli molto onore, ricevendo l'ordine di cavaliere
dalle di lui mani. Ed aveva ben ragione, perchè non avrebbe saputo
prenderlo da altri migliore di Bajardo [431].» Il re, dopo fatto
cavaliere, accordò lo stesso ordine a molti altri gentiluomini, che
avevano valorosamente combattuto. «Io ben conosco, disse al
maresciallo di Fleuranges, che in quante battaglie vi siete trovato,
non avete mai voluto essere cavaliere; io lo fui oggi, e vi prego a
volerlo essere ancora voi di mia mano; ciò che il fortunato
Fleuranges gli accordò di buon cuore, ringraziandolo dell'onore che
gli compartiva [432].»
Bajardo, che aveva ricevuto dal re un così segnalato favore, aveva
nella precedente notte corso un grandissimo pericolo. «Il suo
cavallo, punto dalle picche e sbrigliato, quando si sentì senza freno si
pose a correre, ed a dispetto di tutti gli Svizzeri e delle loro
ordinanze, passando oltre, portava a dirittura il buon cavaliere in
mezzo ad un corpo di Svizzeri, se non che, entrato in un campo in
cui le viti erano tese da un albero all'altro, si dovette fermare. Il
buon cavaliere ebbe grande paura, e non senza cagione, perciocchè
era senza rimedio morto, se veniva in mano dei nemici. Non si
perdette per altro di coraggio, ma scese dolcemente da cavallo, ed in
parte si disarmò, e seguendo le rive di una fossa, a quattro gambe si
incamminò verso il luogo in cui credeva trovarsi il campo francese,
ed ove udiva gridare Francia, Dio gli fece la grazia che vi giugnesse
sano e salvo; ed inoltre, ciò che molto gli giovò, che si scontrasse nel
gentile duca di Lorena, uno de' suoi signori, che fu sorpreso di
vederlo così a piedi. Onde il detto duca gli fece subito allestire un
gagliardo cavallo [433].»
Gli Svizzeri rientrati in Milano cercavano un pretesto per ritirarsi da
una guerra, da cui non potevano più nulla sperare. Chiesero a
Massimiliano Sforza i tre mesi di soldo che questi aveva loro
promessi, ma che evidentemente egli più non poteva pagare dopo la
perdita di tutti i suoi stati. Dietro il suo rifiuto, malgrado le istanze
del cardinale di Sion, cui non davano più tanta credenza dopo la
perdita della battaglia, si posero all'indomani in cammino per ritirarsi
per la strada di Como ne' loro paesi. Massimiliano Sforza si chiuse
nel castello di Milano con Girolamo Morone, suo principale ministro,
Giovanni Gonzaga, pochi gentiluomini milanesi, mille cinquecento
Svizzeri, e cinquecento Italiani. Suo fratello Francesco Sforza, duca di
Bari, passò in Germania col cardinale di Sion, per affrettare i soccorsi
dell'imperatore. Gli Svizzeri dal canto loro avevano, partendo,
promesso, che non tarderebbero a ritornare in maggior numero per
vendicarsi della loro sconfitta, e liberare i loro compatriotti [434].
Però la battaglia di Marignano aveva decisa la sorte del ducato di
Milano. Tutte le città si affrettarono d'assoggettarsi a Francesco I, e
di manifestare il loro giubbilo d'essere state liberate dall'insolenza e
dalla rapacità della soldatesca svizzera. I soli castelli di Milano e di
Cremona rimasero in potere di Massimiliano Sforza, e Pietro Navarro
si obbligò col re Francesco ad impadronirsi del primo avanti che
passasse un mese [435].
Il castello di Milano era abbondantemente provveduto d'ogni
maniera di vittovaglie e di munizioni da guerra; la sua guarnigione
più numerosa che non richiedevalo l'estensione del suo ricinto; e le
sue mura, che avevano di già sostenuti lunghi assedj, si giudicavano
presso che inespugnabili. Ma Pietro Navarro, che aveva il primo di
tutti portata in Italia l'arte delle mine caricate e che l'aveva
perfezionata; che col mezzo loro aveva molti anni avanti presi i tre
castelli di Napoli, e che pretendeva non potergli lungamente
resistere veruna fortezza, ispirava grandissimo terrore a tutti coloro
ch'erano chiusi nel castello di Milano. E più d'ogni altro il duca ed i
suoi ufficiali civili temevano di dovere ad ogni istante essere vittime
d'una terribile esplosione. Potevano ben essi tenersi lontani da ogni
conflitto e dai pericoli inseparabili dalla difesa d'una breccia: ma una
mina nella sua esplosione non rispettava più il sovrano del plebeo, e
poteva raggiungere il duca ne' suoi più segreti appartamenti, ed in
qualunque ora del giorno o della notte seppellirlo sotto le ruine delle
mura. Massimiliano Sforza, che non aveva nè coraggio, nè forza di
carattere, era desideroso di sottrarsi a qualunque prezzo a tanto
pericolo. Egli non aveva un solo istante goduto dell'indipendenza o
della ricchezza annessa al sovrano potere. Quando l'uno, e quando
l'altro de' suoi alleati, aveva proposto d'abbandonarlo, e di far
ricadere i suoi stati o all'imperatore, o al re di Francia. Gli Svizzeri
mantenevano il suo potere, ma per tenerlo subordinato alla loro
volontà, facendolo ministro d'insopportabili esazioni, per le quali egli
si era già renduto odioso a' suoi sudditi. Il 4 ottobre, venti giorni
dopo la battaglia, sottoscrisse una capitolazione, colla quale dava in
mano del re non solo i castelli di Milano e di Cremona, ma tutti i suoi
diritti sul Milanese, obbligandosi a passare il rimanente de' suoi
giorni in Francia; mentre che il re dal canto suo gli prometteva
d'interessarsi per ottenergli un cappello di cardinale, e d'assegnargli
trenta mila scudi di rendita in beni stabili [436]. Nell'atto che
sottoscriveva il trattato, Massimiliano gridò, che allora si sottraeva
finalmente alla schiavitù degli Svizzeri, alle estorsioni dell'imperatore,
ed agl'inganni degli Spagnuoli.
Francesco I non volle fare il suo solenne ingresso in Milano che dopo
la capitolazione del castello, credendo sconveniente alla dignità d'un
sovrano di Francia l'entrare in una città che non gli apparteneva tutta
intera. Queste bizzarre nozioni intorno a ciò che egli chiamava
l'onore della sua corona gli fecero più tardi commettere grandissimi
mancamenti, ch'ebbero su tutti i suoi destini una fatale influenza. In
questa circostanza il ritardo del suo ingresso in Milano era di poca
importanza, non gli togliendo il tempo d'approfittare colle armi e
colle negoziazioni degli ottenuti vantaggi.
Le negoziazioni erano attivissime: gli alleati nemici del re si
andavano vicendevolmente confortando alla costanza; ma ognuno
cercava di ritirarsi dalla difficile lotta, lasciandovi implicati i
compagni. Il papa era più d'ogni altro spaventato dalla fortuna de'
Francesi; perciocchè non solo vedeva essere esposti a così potente
nemico gli stati della Chiesa, ma anche per parte di Firenze doversi
da un momento all'altro temere una rivoluzione. I Medici erano stati
ricondotti in questa repubblica dal Cardone, a nome dell'imperatore e
del re di Spagna; onde i patriotti professavano alla Francia il più
caldo attaccamento. Per questo attaccamento avevano permesso che
si tenesse il concilio di Pisa nel loro territorio, provocando la collera
di Giulio II e di Ferdinando, locchè era stato all'ultimo cagione della
loro ruina. La politica, d'accordo colla riconoscenza, suggeriva al
monarca francese l'obbligo di ristabilire la fedele sua alleata, la
repubblica fiorentina, per servire d'avamposto al ducato di Milano:
una volgare prudenza lo ammoniva di fidarsi piuttosto a sperimentati
amici che a nemici costretti dalla forza a cercare la pace.
L'avversione de' re per le repubbliche, e l'avversione che aveva
Francesco I ad entrare in guerra colla Chiesa, gli fecero abbracciare
la contraria decisione. Il vescovo di Tricarico ed il duca di Savoja
trattavano con lui a nome di Leon X, e lo ridussero a sottoscrivere un
trattato preliminare, con cui il re guarentiva l'autorità de' Medici
sopra la repubblica fiorentina; onde il papa, omai riavutosi da quel
primo terrore che lo aveva invaso, cominciò a muovere difficoltà
intorno alla ratifica de' preliminari, perchè aveva avuto notizia degli
scrupoli del re. Intanto egli andava indagando cosa potrebbe
ottenere da Massimiliano o dagli Svizzeri per continuare la guerra, e
se gli sarebbe possibile di staccare i Veneziani dalla Francia. Quando
conobbe che da questo canto non poteva riuscire, fece finalmente il
13 ottobre sottoscrivere in Viterbo il suo trattato d'alleanza col re.
Egli evacuava Parma e Piacenza, che dovevano di nuovo riunirsi al
ducato di Milano, mentre il re prometteva a Giuliano ed a Lorenzo
de' Medici, oltre il mantenimento dell'autorità loro sopra Firenze,
onori, pensioni e comando di truppe; obbligandosi inoltre a fare che
il ducato di Milano si provvedesse di sali alle saline di Cervia con
pregiudizio di quelle de' Veneziani [437].
Gli Svizzeri avevano adunata una dieta in Zurigo, nella quale si
declamava altamente contro la Francia, e si parlava intorno ai modi
di soccorrere il castello di Milano. Frattanto i loro soldati avevano
abbandonate le podesterie italiane, ed altro non conservavano al di
qui dei monti che le fortezze di Bellinzona e di Locarno. Raimondo di
Cardone, che trovavasi coll'armata spagnuola prima d'ogni altro
esposto agli attacchi dell'armata francese, e che non ignorava che
l'Alviano era impaziente di vendicarsi di lui, che i soldati spagnuoli
avevano eccitato contro di loro l'odio universale in tutti gli abitanti
della Lombardia, era premuroso di ricondurre la sua armata nel
regno di Napoli; egli chiese ed ottenne d'essere compreso nella
negoziazione del papa: e Francesco I acconsentì che senz'essere
molestato attraversasse colle sue truppe lo stato della Chiesa [438].
Quattro ambasciatori, i più qualificati personaggi che avesse la
repubblica di Venezia per le dignità loro e per i loro impieghi, erano
stati mandati a Milano per felicitare Francesco I intorno alla sua
vittoria, e per ricordargli le promesse fatte ai Veneziani, di far loro
ricuperare tutto ciò che degli stati della repubblica occupava
l'imperatore. La conquista dello stato di Milano non poteva
risguardarsi come terminata, finchè i Francesi non la venivano
assicurando da nuove invasioni dalla banda della Germania,
rendendo Verona e Brescia ai Veneziani, siccome dal canto dell'Italia
spagnuola, scacciando i Medici da Firenze, e forzando il papa a fare
la pace. Se Francesco I avesse saputo approfittare della sua vittoria,
avrebbe potuto col solo spavento che inspirava ottenere tutti questi
vantaggi senza nuove battaglie: ma la sua politica era troppo
personale, perchè potesse comprendere quanto il più delle volte
torni in utile proprio il servire vivamente i suoi alleati. Sebbene
accogliesse gli ambasciatori veneziani con dimostrazioni di singolare
amicizia, e loro si mostrasse pieno di zelo per gl'interessi della
repubblica, tardò assai a mandar loro le sue truppe; e queste ancora
pareva che affatto avessero dimenticato il valore e l'impeto
francese [439].
I Veneziani, abbandonati alle proprie forze, vollero non pertanto
tentare di ricuperare le perdute città. Lo spagnuolo Hijar comandava
a Brescia, e Marc'Antonio Colonna in Verona. Quest'ultima città
aveva una numerosa guarnigione, l'altra una piccolissima; onde
l'Alviano ebbe ordine dal senato d'accostarsi a Brescia: ma Hijar,
prevedendo il vicino attacco, chiede al Colonna i soccorsi creduti
necessarj; e mille fanti partiti da Verona, girando intorno al lago di
Garda, entrarono in Brescia prima che l'armata veneziana giugnesse
sotto le mura [440].
Bartolommeo d'Alviano, che per la prima volta in sua vita lasciavasi
vincere da un altro in celerità, non lo fu che per sopraggiuntagli
infermità. Le fatiche sostenute nella battaglia di Marignano,
sproporzionate all'età sua ed alla debole sua costituzione, gli
avevano cagionata un'ernia: egli si fece trasportare a Ghedo, non
molto distante da Brescia, ove morì il 7 d'ottobre dopo avere sofferti
acerbissimi dolori. Quest'uomo, che dal rango di semplice soldato,
passando per tutti i gradi della milizia, era giunto ad essere supremo
comandante d'eserciti, non pareva dalla natura dotato di quelle
facoltà che abbisognano per una vita attiva. Era piccolissimo, assai
curvo, e d'una quasi deforme bruttezza. Il suo impeto, talvolta
imprudente, sembrava piuttosto una qualità conveniente ad un
soldato che ad un generale; e sebbene questo l'avesse esposto a
sanguinose sconfitte, egli sapeva compensare tale difetto colla sua
celerità ed intrepidezza, e coll'arte che aveva di guadagnarsi l'affetto
e la confidenza del soldato, anche assoggettandolo alla più rigorosa
disciplina. Verun uomo seppe meglio di lui ispirare coraggio alla
fanteria italiana, e farle riacquistare la considerazione de' Tedeschi,
degli Svizzeri, degli Spagnuoli, cui non vergognavasi di confessarsi
inferiore. Morì di sessant'anni, amaramente pianto da' suoi soldati,
che, non volendosi privare della sua presenza, lo tennero venticinque
giorni alla testa dell'armata, facendogli rendere nella sua tenda gli
onori convenienti al loro generale. Essi mai non acconsentirono che
si chiedesse un salvacondotto a Marc'Antonio Colonna, comandante
di Verona, per far passare il di lui corpo a Venezia, e vollero
accompagnarlo armata mano attraverso al territorio nemico. Il
senato lo fece seppellire nella chiesa di santo Stefano, ed accordò
pensioni alla di lui vedova e figli, che lasciava poveri [441].
Dopo la morte dell'Alviano parve che l'armata veneziana più non
avesse il coraggio di misurarsi col nemico; ed i medesimi rinforzi, che
le mandava il re di Francia, giugnendo al campo veneziano
contraevano in certo modo lo stesso spirito di timidità e
d'indisciplina. Gian Giacopo Trivulzio, che le condusse settecento
lance francesi e sette mila fanti tedeschi, ed intraprese l'assedio di
Brescia, si lasciò intimidire da difficoltà, di cui non sarebbesi preso
cura se fosse stato ai servigj del re. I Tedeschi si ammutinarono,
dichiarando di non voler servire contro le insegne imperiali che
vedevano sulle mura di Verona e di Brescia. Fu d'uopo rimandarli, e
chiamare in vece loro cinquemila Biscaini comandati da Pietro
Navarro. Una sortita di mille cinquecento soldati tedeschi e spagnuoli
della guarnigione di Brescia pose in fuga più di sei mila uomini
dell'armata veneziana, togliendo loro dieci cannoni. Le mine
cominciate dal Navarro per penetrare sotto le fortificazioni vennero
sventate dagli assediati, furono uccisi i minatori, e le gallerie
distrutte. Finalmente avendo il Trivulzio cambiato l'assedio in blocco,
ridusse colla fame la guarnigione a promettere, che, se non veniva
soccorsa entro venti giorni, evacuerebbe la città: ma prima che
spirasse il prefinito termine, il barone di Rockandolf [442] adunò otto
mila Tirolesi di milizie de' paesi confinanti, ed avanzandosi pel
contado di Lodrone e Rocca d'Anfo, che vilmente gli si arrese,
vittovagliò Brescia, da cui al suo avvicinamento erasi scostata
l'armata nemica. I Veneziani non ottennero in quest'anno verun altro
vantaggio dalle vittorie de' loro alleati, che di ricuperare Peschiera,
Asola e Lonato, evacuate dal marchese di Mantova [443].
Frattanto Leone X aveva chiesta a Francesco I una conferenza,
desiderata ancora da questi per meglio stringere l'alleanza tra di loro
conchiusa. I due sovrani convennero di trovarsi in Bologna, ove il
papa arrivò l'otto di dicembre, due giorni prima del re. Leon X non
aveva torto di confidare nell'influenza che gli darebbero sul giovane
monarca la sua accortezza e le sue maniere. Francesco I,
negoziando in Viterbo, aveva richiesto a favore del suo fedele
alleato, il duca di Ferrara, la restituzione di Modena e di Reggio, a
condizione che gli fossero restituiti i quaranta mila ducati pei quali la
prima di queste città era stata impegnata. Era questa la sovranità
che Leon X aveva destinata a suo nipote; e vedevasi forzato a
spogliare la propria famiglia degli stati per lei conquistati sulla destra
del Po. Rinunciandovi voleva collocare altrove Lorenzo de' Medici; e
gli destinò il ducato d'Urbino, per confiscare il quale a pregiudizio
dell'attuale possessore non poteva allegare che il di lui attaccamento
verso la Francia. Leone domandò che il duca d'Urbino fosse
sagrificato al suo rancore ed alla sua ambizione; e Francesco ebbe la
debolezza d'acconsentirvi. Inoltre il papa chiese che si abolisse la
prammatica sanzione, che formava la guarenzia della libertà della
Chiesa gallicana; e Francesco si lasciò piegare a fissare con lui le
basi del concordato, che infatti le venne sostituito nel susseguente
mese d'agosto. In contraccambio di così umilianti cessioni e così
contrarie alla politica, Francesco ottenne il cappello di cardinale per
Adriano di Boisì, fratello del gran maestro di Francia, la promessa
d'un soccorso di cinquecento uomini d'armi, ed il soldo di tre mila
Svizzeri, per difendere lo stato di Milano qualunque volta fosse
attaccato [444].
Prima di recarsi a Bologna aveva Francesco I colla mediazione del
duca di Savoja conchiuso cogli Svizzeri un più importante trattato per
la difesa dello stato di Milano. Erasi obbligato a pagar loro i seicento
mila ducati convenuti nel trattato di Digione; i trecento mila promessi
a Gallarate per prezzo delle podesterie italiane, ed inoltre ad
accrescere le loro annue pensioni: questi dal canto loro
promettevano di restituire al ducato di Milano le podesterie italiane,
e di servire la casa di Francia verso e contro tutti, tranne il papa e
l'imperatore, con quel numero di truppe che il re troverebbe
opportuno d'assoldare. Per tal modo, malgrado la sanguinosa vittoria
di Marignano, il re accordava agli Svizzeri press'a poco le medesime
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

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

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookname.com

You might also like