100% found this document useful (5 votes)
28 views65 pages

A Web Based Introduction to Programming Essential Algorithms Syntax and Control Structures Using Php Html and Mariadb MySQL Mike O’Kane 2024 scribd download

Php

Uploaded by

hiuhabavug
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
100% found this document useful (5 votes)
28 views65 pages

A Web Based Introduction to Programming Essential Algorithms Syntax and Control Structures Using Php Html and Mariadb MySQL Mike O’Kane 2024 scribd download

Php

Uploaded by

hiuhabavug
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 65

Experience Seamless Full Ebook Downloads for Every Genre at textbookfull.

com

A Web Based Introduction to Programming Essential


Algorithms Syntax and Control Structures Using Php
Html and Mariadb MySQL Mike O’Kane

https://textbookfull.com/product/a-web-based-introduction-
to-programming-essential-algorithms-syntax-and-control-
structures-using-php-html-and-mariadb-mysql-mike-okane/

OR CLICK BUTTON

DOWNLOAD NOW

Explore and download more ebook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

PHP and MySQL for Dynamic Web Sites Fifth Edition Ullman

https://textbookfull.com/product/php-and-mysql-for-dynamic-web-sites-
fifth-edition-ullman/

textboxfull.com

PHP and MySQL Web Development 5th Edition Developer s


Library Luke Welling

https://textbookfull.com/product/php-and-mysql-web-development-5th-
edition-developer-s-library-luke-welling/

textboxfull.com

Learn PHP 8: Using MySQL, JavaScript, CSS3, and HTML5


Second Edition Steve Prettyman

https://textbookfull.com/product/learn-php-8-using-mysql-javascript-
css3-and-html5-second-edition-steve-prettyman/

textboxfull.com

Essential algorithms a practical approach to computer


algorithms using Python and C Second Edition Rod Stephens

https://textbookfull.com/product/essential-algorithms-a-practical-
approach-to-computer-algorithms-using-python-and-c-second-edition-rod-
stephens/
textboxfull.com
Beginning PHP and MySQL: From Novice to Professional 5th
Edition Frank M. Kromann

https://textbookfull.com/product/beginning-php-and-mysql-from-novice-
to-professional-5th-edition-frank-m-kromann/

textboxfull.com

Problem Solving in Data Structures Algorithms Using C


Programming Interview Guide First Edition Hemant Jain

https://textbookfull.com/product/problem-solving-in-data-structures-
algorithms-using-c-programming-interview-guide-first-edition-hemant-
jain/
textboxfull.com

Problem Solving in Data Structures Algorithms Using C


Programming Interview Guide 1st Edition Hemant Jain

https://textbookfull.com/product/problem-solving-in-data-structures-
algorithms-using-c-programming-interview-guide-1st-edition-hemant-
jain/
textboxfull.com

Learning PHP, MySQL & JavaScript, 6th Edition Robin Nixon

https://textbookfull.com/product/learning-php-mysql-javascript-6th-
edition-robin-nixon/

textboxfull.com

Introduction to Java Programming and Data Structures


Comprehensive Version Y Daniel Liang

https://textbookfull.com/product/introduction-to-java-programming-and-
data-structures-comprehensive-version-y-daniel-liang/

textboxfull.com
A Web-Based Introduction
to Programming

2
A Web-Based Introduction
to Programming

3
Essential Algorithms, Syntax,
and Control Structures Using PHP, HTML,
and MariaDB/MySQL

Fourth Edition

Mike O'Kane

4
Copyright © 2017
Mike O'Kane
All Rights Reserved.

Library of Congress Cataloging-in-Publication Data

Names: O'Kane, Mike, 1953- author.


Title: A web-based introduction to programming : essential algorithms,
syntax, and control structures using PHP, HTML, and MariaDB/MySQL / Mike
O'Kane.
Description: Durham, North Carolina : Carolina Academic Press, [2017] |
Includes bibliographical references and index.
Identifiers: LCCN 2017017694 | ISBN 9781531002749 (alk. paper)
Subjects: LCSH: Computer software--Development. | Internet programming. |
Computer programming--Web-based instruction. | PHP (Computer program
language) | XHTML (Document markup language)
Classification: LCC QA76.76.D47 O43 2017 | DDC 005.3--dc23
LC record available at https://lccn.loc.gov/2017017694

eISBN 978-1-53100-707-2

Carolina Academic Press, LLC


700 Kent Street
Durham, North Carolina 27701
Telephone (919) 489-7486
Fax (919) 493-5668

www.cap-press.com

Printed in the United States of America.

No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any
means, electronic, mechanical, recording or otherwise, without the prior written permission of the author.

Please note: The information in this book is provided for instructional value and distributed on an “as is” basis,
without warranty. While every precaution has been taken in the preparation of the book, neither the author nor
Carolina Academic Press shall have any liability to any person or entity with respect to any loss or damage caused
by or alleged to be caused, directly or indirectly, by the instructions contained in this book or by the programs or
applications that are listed in, or provided as supplements to, this book.

Macintosh®, Mac OS®, Safari, and iOS® are registered trademarks of Apple, Inc. in the United States and other
countries. Windows® and Windows Mobile® are registered trademarks of Microsoft Corporation in the United
States and other countries. Linux® is the registered trademark of Linus Torvalds in the United States and other
countries. MySQL® is a registered trademark of Oracle Corporation and/or its affiliates. MariaDB® is a registered
trademark of MariaDB Corporation Ab. Mozilla® and Firefox® are registered trademarks of the Mozilla
Foundation. Joomla!® is trademarked by Open Source Matters. Apache® is a trademark of the Apache Software
Foundation. XAMPP and Apache Friends are registered trademarks of BitRock. The WordPress® trademark is
owned by the WordPress Foundation. Android® and Google Chrome® are trademarks of Google Inc. The Drupal®
trademark is owned and controlled by Dries Buytaert. BlackBerry® is a trademark of Blackberry. All product
names identified in this book are trademarks or registered trademarks, and are the properties of their respective
companies. We have used these names in an editorial fashion only, and to the benefit of the owner, with no

5
intention of infringing the trademark.

6
To my dear mother and father,
thank you for the love and light that you bestowed on us.

7
Contents

Preface
Acknowledgments
About the Author

Chapter 1 · Introducing Computer Programming


Introduction
What Is a Computer Program?
What Do Programmers Do?
The Software Development Life Cycle
The Importance of Writing and Communicating
What Are Programming Languages?
Compilers and Interpreters
So Many Languages!
Standalone and Network Applications
Markup Languages
Combining Markup and Programming Languages
Summary
Chapter 1 Review Questions

Chapter 2 · Client/Server Applications—Getting Started


Introduction
Client/Server Design in Web Applications
Working with Files and Folders
Locating Files and Folders on Computers Running a Windows Operating System
Locating Files and Folders on the Internet
Internet Naming Conventions for Files and Folders
Working with a Local Web Server
What Languages Will I Use?
What Software Will I Need?
Installing a Text Editor
Installing One or More Web Browsers
Installing Your Web Server
Using Your Web Server
Using URLs with Your Web Server
Always Use URLs to Run Your Web Applications!
Where to Save Your Work Files
The Importance of Frequent Backups
Creating an HTML Document
Creating a PHP program

8
Creating an Interactive HTML and PHP Program
Summary
Chapter 2 Review Questions
Chapter 2 Code Exercises

Chapter 3 · Program Design—From Requirements to Algorithms


Introduction
What Are Instructions?
Common Characteristics of Instructions
Sequence, Selection and Repetition Structures
A Programming Example
Creating an Input, Processing, Output (IPO) chart
Designing the User Interface
Developing an Algorithm
A Smoking Calculator
Coding the Application
Summary
Chapter 3 Review Questions
Chapter 3 Code Exercises

Chapter 4 · Basics of Markup—Creating a User Interface with HTML


Introduction
A Short History of HTML
Introducing HTML Tags
Ignoring White Space
More HTML Tags
Introducing HTML Tables
Using HTML Tables to Layout Web Pages
Other HTML Tags
Deprecated HTML Tags
Introducing Style Sheets
Multiple Styles for a Single Tag
Selecting Colors for Fonts and Backgrounds
Referencing a Style Sheet in Your HTML Document
Applying a Style Sheet to Multiple Pages
Interactive User Interfaces
Creating HTML Forms
Using HTML Forms to Obtain User Input
Using HTML Tables to Line Up Prompt and Input Boxes
Problems with Form Submission
Drop Down Lists
Combining Textboxes and Drop Down Lists
Other Types of Input
Stylesheets and Forms

9
Summary
Chapter 4 Review Questions
Chapter 4 Code Exercises

Chapter 5 · Creating a Working Program—Basics of PHP


Introduction
Why PHP?
Working with HTML and PHP
Important Features of Client/Server Programs
Receiving Input from a Form — wage2.php
Processing the Smoking Survey — smoking.php
PHP — General Guidelines and Syntax
Arithmetic Expressions
Using Arithmetic Functions
White Space in PHP Files
Generating Character Strings from PHP
Including Double Quotes in Character Strings
Using Multiple PHP Sections
Using the number_format() Function to Display Numbers to a Specific Number of Places
Including Calls to PHP Functions inside PHP Print Statements
String Concatenation and the Concatenation Operator
The PHP Echo Statement
Finding Syntax Errors
Finding Logical Errors
Summary
Chapter 5 Review Questions
Chapter 5 Code Exercises

Chapter 6 · Persistence — Saving and Retrieving Data


Introduction
The Difference Between Persistent and Transient Data
Files and Databases
Working with a Text File
Closing a Text File
Reading Data from a Text File
PHP Functions to Read Data from a Text File
Writing Data to a Text File
PHP Functions to Write Data to a Text File
Be Careful to Avoid Security Holes!
Using Escape Characters
Escape Characters and HTML Tags
Using PHP to Append Data to Files
PHP Functions to Append Data to a Text File
Processing Files that Contain Complete Records on Each Line

10
PHP Functions to Parse a Delimited Character String
Processing a File with Multiple Records
Appending Records to a File
Working with Multiple Files
Summary
Chapter 6 Review Questions
Chapter 6 Code Exercises

Chapter 7 · Programs that Choose — Introducing Selection Structures


Introduction
Introducing IF and IF..ELSE Structures
Introducing Flow Charts
Boolean Expressions and Relational Operators
Selection Using the IF Structure
Testing Threshold Values
Selection Using the IF..ELSE Structure
When to Use Braces in IF..ELSE Statements
Creating a Program with Multiple but Independent Selection Structures
Comparing Strings — Testing for a Correct Password
Ignoring the Case of a Character String
Providing a Selective Response
Using Selection to Construct a Line of Output
Summary
Chapter 7 Review Questions
Chapter 7 Code Exercises

Chapter 8 · Multiple Selection, Nesting, ANDs and ORs


Introduction
Introducing the Logical Operators AND and OR
Introducing the NOT Operator
Validating User Input
Using A Nested Selection Structure to Validate Input
Designing Applications with Nested Selection Structures
Use of Braces in Nested Selection Structures
Chaining Related Selection Structures
Additional Input Validation Using Chained Selection Structures
More about Input Validation: Using the trim() Function
When to Use AND or OR? Be Careful with Your Logic!
The Challenge of Software Testing
A Special Case: The Switch Statement
More Examples in the Samples Folder
Some Words of Encouragement
Summary
Chapter 8 Review Questions

11
Chapter 8 Code Exercises

Chapter 9 · Programs that Count — Harnessing the Power of Repetition


Introduction
Controlling a Loop by Counting
Coding a FOR Loop in PHP
General Syntax of a FOR Loop
Including the Counting Variable in Your Loop Statements
Using a Variable to Control the Loop Condition
Converting from Celsius to Fahrenheit
Changing the Increment Value
Using Loops with HTML Tables
Allowing the User to Control the Loop
Improving Processing Efficiency
Using Loops to “Crunch Numbers”
Using a Loop to Accumulate a Total
Finding the Total and Average from a File of Numbers
Finding the Highest and Lowest Values in a Series
Performing Multiple Operations on a File of Numbers
Nesting IF..ELSE Structures to Customize Output from a Loop
Loops within Loops — Creating a Bar Chart
Selecting from a List of Data Files
Summary
Chapter 9 Review Questions
Chapter 9 Code Exercises

Chapter 10 · “While NOT End-Of-File”—Introducing Event-Controlled Loops


Introduction
Characteristics of WHILE Loops
The Structure of WHILE Loops
An Algorithm to Process Files of Unknown Length
Using a WHILE Loop to Process a File of Scores
Including Selection Structures Inside a WHILE Loop
Using a WHILE Loop to Count, Sum and Average Data
Using a WHILE Loop to Process a File of Records
Processing Weekly Wages from a File of Timesheet Records
Processing Selected Records from a File of Timesheet Records
Processing Selected Fields from a File of Records
Processing a File of Survey Data
Using DO..WHILE or REPEAT..UNTIL Loops
Summary
Chapter 10 Review Questions
Chapter 10 Code Exercises

12
Chapter 11 · Structured Data — Working with Arrays
Introduction
What Is an Array?
Working with Array Elements
Extending an Array
Displaying Array Values
Receiving Scores into an Array from an HTML Form
Arrays of Strings
How Large Is the Array?
Why Do Array Indices Begin with 0 and Not 1?
Using FOR Loops with Arrays
Using the sizeof() Function to Control a FOR Loop
Summing and Averaging the Values in an Array
Counting Selected Values in an Array
Multiple Operations on an Array
Reading Data from a File into an Array
Reading Data into an Array from a File of Unknown Length
Using [] with no Index Value
Reading Selected Data from a File into an Array
Reading Data from a File into Multiple Arrays
Reading Selected Data from a File of Records into an Array
More About the explode() and list() Functions
A Special Loop for Processing Arrays — FOREACH
Multi-Dimensional Arrays
Summary
Chapter 11 Review Questions
Chapter 11 Code Exercises

Chapter 12 · Associative Arrays


Introduction
Using a Variable to Reference the Key of an Associative Array
Using Associative Arrays as Lookups
Using the array() Function to Create Associative Arrays
Associative Arrays and the FOREACH Loop
More about the $_POST Array
Using the isset() Function to Combine a Web Form with the Form Processing Code in a Single Page
Web Sessions and the $_SESSION Array
Adding Code to Manage a Web Session
Creating, Initializing and Modifying Session Variables
Validating $_SESSION and $_POST Arrays
Revisiting the Same Page in a Web Session
Summary
Chapter 12 Review Questions

13
Chapter 12 Code Exercises

Chapter 13 · Program Modularity — Working with Functions


Introduction
Using Functions
Understanding Function Arguments
Receiving Values from a Function
Researching Available Functions
Reasons to Use Pre-Defined Functions
Using die() or exit() to Terminate an Application
Creating Your Own Functions
Where Do I Put My Functions?
Creating a Library of Functions
Including Functions from External Files
Using the Same Functions in Different Programs
Functions Calling Functions
Learning to Think Beyond Specific Applications
More about Include Files
Summary
Chapter 13 Review Questions
Chapter 13 Code Exercises

Chapter 14 · Connecting to a Database — Working with MySQL


Introduction
What Is a Relational Database?
The Relational Database Management System (RDBMS)
Structured Query Language — MySQL
Starting Your MySQL Server
Configuring MySQL for Use with This Textbook
Three Ways to Work with MySQL
Working with PHP and MySQL
Using PHP to Open and Close a Connection to a MySQL Server
Using the MySQL SELECT Query
Selecting Specific Records
Relational Operators in MySQL
The Logical Operators AND and OR
Ordering Your Query Results
Viewing Your Query Results
Using an HTML Table to Display the Query Results
Putting It All Together
Using Input from an HTML Form to Construct a Query
Processing Queries with a Single Result
Performing Calculations with the Result Set
Performing Aggregate Operations on MySQL Queries

14
Performing JOIN Operations on Multiple Tables
Using INSERT to Add Records to a Table
Using UPDATE to Modify a Record
Removing a Record
Storing MySQL Connection Data in an Include File
Creating, Dropping, and Altering Databases and Tables
Summary
Chapter 14 Review Questions
Chapter 14 Code Exercises

Chapter 15 · Introduction to Object-Oriented Programming


Introduction
What is an Object?
Creating and Using Instances of a Class
Using Employee Objects in an Application
Defining an Object
Coding the Object Class
Creating and Using Instances of an Object Class
The Class Constructor Method
Method Overloading
Why do Objects Matter?
Object Design and Inheritance
Abstract Classes and Methods
Method Over-riding
Polymorphism
OOP and Databases
OOP Development
OOP Languages
Summary
Chapter 15 Review Questions
Chapter 15 Code Exercises

Chapter 16 · Where to Go from Here . . .


Introduction
Moving Forward with PHP and HTML
More about PHP
PHP and Other Languages
XHTML and XML
Client Side Processing with Javascript and Ajax
The Importance of OOP
IDE's, Modeling Languages and Frameworks
Client/Server and Server/Server Programming
Mobile Applications
Digital Media

15
Graphical User Interfaces and Interface Design
Web Design and Content Management
Database Programming and SQL
In Summary: Follow Your Heart!

Appendix A · Data Representation and Formats


Introduction
Storing Data in Bits and Bytes
How Multimedia Data Is Represented in Binary
How Numeric Values Are Represented in Binary
How Plain Text Is Represented in Binary
How Source Code and Markup Code Is Represented in Binary
How Program Instructions Are Represented in Binary
How Memory Addresses Are Represented in Binary
What Else Can Be Represented in Binary?

Appendix B · Files, Folders, Addressing Schemes, and Command Line Arguments


File Types and File Extensions
Disk and Disk Drives
Files and File Folders (Directories)
Naming Files and Folders
File Addresses in Windows and on the Web
Relative Addresses in Windows
Relative Addresses on the Internet
Using Relative Web Addresses in HTML Code
Managing Files at the Command Line
Introduction to MS DOS Commands
Recalling Previous Commands
Use Double Quotes when Paths Include Spaces
Printing the Contents of the Console Window
Creating Batch Files
Unix Commands

Appendix C · Installing and Running Your Standalone Web Server


Using an Active Web Server
Problems Using Your Web Server
Advanced Users

Appendix D · Debugging Your Code


Problems Viewing Your HTML or PHP Programs
Problems with HTML Layout
Locating PHP Syntax Errors
Common PHP Syntax Errors
Common Logical Errors

16
Appendix E · More about HTML and CSS
Useful HTML References
Useful CSS References
Inline Styles and Internal Style Sheets
Deprecated HTML Tags
Frequently Asked Questions Regarding HTML Tags

Appendix F · More about PHP Functions and Data Types


Useful PHP References
More about PHP Functions and Data Types
Standard PHP Array Functions
Standard PHP File Functions
Standard PHP Math Functions
Standard PHP String Functions
PHP Data Types

Appendix G · Additional PHP Operators and Control Structures


Shortcut Operators
Switch Structure
Another Loop Structure: DO..WHILE
Multi-Dimensional Arrays
Ragged Arrays
Multi-Dimensional Associative Arrays

Index

17
Preface

The problem I have tried to solve with this textbook is, quite simply, how to effectively introduce general
programming concepts to students who have never programmed before. Perhaps like me, you have found yourself
frustrated by textbooks that try to cover too much too fast, make inappropriate assumptions about what a student
already knows, or take sudden leaps in complexity when providing examples and exercises.
I believe that the purpose of an introductory programming course is to help students gain confidence and
develop their understanding of basic logic, syntax, and problem-solving. They do not need to learn all aspects of a
language or even learn best practices—these are topics for the next course level. The question is: how to provide
the kind of hands-on experience that supports active learning without overwhelming the beginning student with
too much syntactical and programmatic detail?
I have tried many approaches over the years before settling on a Web-based approach, using PHP, CSS, and
HTML code to develop small, interactive Web applications. This approach has proved very successful. Many
students report how much they enjoy the course, how much they have learned, and how well the material has
served them in subsequent courses and in their professional life. I also hear from many students who tell me that
the course positively changed their opinion of programming as a career or subject of interest, which is most
gratifying.
Some instructors may have concerns that my coverage of the PHP and HTML is insufficient. The book uses a
small number of HTML tags, CSS rules, and PHP functions, and employs some arbitrary conventions to simplify
the code and keep the focus on basic concepts common to most languages. For example, PHP print statements
are used rather than echo statements, and these statements always include parentheses and double quotes so that
the syntax is more consistent with the output statements of most other languages. The last chapter (“Where to Go
From Here”) clarifies which practices are standard and which are particular to the textbook.

18
Intended Audience
The book is designed to serve:

Instructors teaching introductory programming, programming logic and design, or Web programming
courses, who want a textbook that engages students and provides a solid preparation for subsequent courses,
but avoids overwhelming beginners with too much syntactical detail or program complexity.
Traditional and online students taking a first course in programming, programming logic and design, or
Web programming.
Web designers, graphic artists, technical communicators, and others who find that their work increasingly
requires some degree of programming expertise, and need an effective, hands-on introduction.
Others who wish to learn the basics of programming, either for personal interest, or to explore the
possibility of a career in this field.

Note that solutions to quizzes and exercises are only available to verified course instructors.

19
Approach
The book takes a fairly novel approach, allowing students to learn program logic and design by developing a large
number of small Web-based applications. Students love working with the Web, and this approach has other
important benefits:

Important concepts such as client/server design, server-side processing, and interface-driven code modules
can be introduced in the form of working applications, and then applied in hands-on exercises.
Students not only learn the essential control structures and syntax of a programming language, but also learn
to use a markup language (and associated style sheets), and a database query language to access and query a
database. This makes sense in today's programming environment where these languages are routinely used
in combination to develop a networked application.
The material is relevant to students across a range of disciplines: Computer Science, Information Systems,
Technical Communications, Network Systems, Digital Media, Web Technologies, Mobile Applications,
Database Programming, and other technology-related fields.
The focus on hands-on problem-solving and fundamental structures prepare students for next-level,
language-specific courses such as PHP, Python, Java or C++, as well as Web design and database courses,
without replicating a great deal of material, while the syntax covered here is generally consistent with these
and other languages.

The book makes use of a programming language (PHP), a scripting language (HTML), a style sheet language
(CSS), and a database query language (MariaDB or MySQL), but does not attempt to provide a complete
overview of these languages. Instead, students learn sufficient syntax to convert requirements into working
applications using basic programming structures, arithmetic and logical expressions, user interfaces, functions,
data files, and SQL queries. The focus remains on basic concepts, logic and design, algorithm development, and
common programming procedures. The book provides context throughout, explaining why each topic is
important, and referring students to related career paths.
Although the book focuses on Web-based applications, there is NO requirement for a network-based
programming environment. The book uses a fully functional but standalone Apache Web server (the open source
xampp distribution provided by the Apache Friends group) that students can install on a USB drive or home
computer simply by unzipping a file. Students can begin programming in HTML, PHP and MariaDB or
MySQL in literally minutes.

20
Features
Each chapter begins with clearly stated learning outcomes. Each topic is introduced using examples of simple
program requirements that are first developed as algorithms and interfaces and then realized in working code.
Code statements and control structures are explained step by step.
Different programming topics are treated in separate chapters. Even topics that are commonly combined, such
as counting loops and event-controlled loops, have their own chapters so that students have the chance to develop
and apply their understanding of each separately.
Each chapter includes quizzes that have been carefully developed to test the student's understanding of the
chapter's learning outcomes. The questions have been tested extensively in the classroom.
Three different types of coding exercise are provided at the end of each chapter:

Fixit exercises provide small programs that include a single error of some kind. These exercises help students
improve their problem-solving ability, test their understanding of key concepts, and develop tracing and
debugging skills.
Modify exercises provide working programs that must be modified to perform a somewhat different or
additional function. These exercises help students determine how and where to add new code, and test their
ability to read and understand existing code.
Code completion exercises allow students to apply concepts and tools covered in the chapter by developing
new applications. These exercises test the student's ability to: understand requirements, develop algorithms,
and produce working code. The code completion exercises follow consistent themes that are developed
throughout the book, so that students can more readily appreciate the value of new functionalities that they
learn in each chapter.

Templates for each exercise contain partially completed code so students don't waste time typing (and debugging)
code that is not relevant to the problem at hand. The templates also help instructors to streamline the grading
process.
The textbook comes with a standalone Web server that can be installed on a fixed or portable drive simply by
unzipping a file (so students can bring the software with them to work on computers at any location).
The server installation includes textbook folders that contain all code samples and exercise templates. Students
can complete the exercises simply by opening, editing, and saving the appropriate files. Assignments can be turned
in simply by zipping and submitting the appropriate chapter folder.
The textbook appendices provide additional learning resources designed to: (a) help individual students with
particular needs or interests (for example file/folder management, additional references, and help debugging
code); and (b) deliver useful topics not included in the chapters (for example data representation, additional
control structures, and multi-dimensional arrays).

21
Textbook Web Site
The textbook Web site ensures that both students and instructors have access to the most current resources
associated with this textbook. The Web site includes: everything you need to install and use the Web server; slide
presentations; and hints and help for students working through each chapter. The Web site also provides support
for verified instructors, including additional exercises, test banks, slide presentations, quiz solutions, code
solutions, and other instructional resources. The Web site can be found at:
http://www.mikeokane.com/textbooks/WebTech/

22
Changes to the Fourth Edition
In addition to minor corrections and improvements, this fourth edition of the book includes: a new install of the
xampp Apache Web server distribution with installation instructions for Windows, Mac OS, and Linux; revised
file naming conventions that are more standard for current web development; a hopefully improved redesign of
Chapters 7 and 8; additional materials and improvements to Chapter 13 (functions); references to both MySQL
and MariaDB in Chapter 14 (the actual code and descriptions are identical); a new Chapter 15 that introduces
Object-Oriented Programming.

23
Chapter Overview
Chapter 1: Introducing Computer Programming. Students learn the relationship between machine language
and high-level languages, and review common tasks that computer programs typically perform. The work of a
programmer is described, and the software development cycle is explained. The chapter highlights and briefly
summarizes design approaches such as algorithm development, interface design, client/server design and object-
oriented programming. Different programming languages are identified, and the distinction is made between
interpreted and compiled languages, and between markup and programming languages. Standalone and network
applications are also contrasted.
Chapter 2: Client/Server Applications—Getting Started. This chapter prepares students for the hands-on
work they will perform in subsequent chapters. File types and local and Internet addressing schemes are explained.
Instructions are provided to install, run, and test the required software. Students are shown how to create, store,
and run a number of sample applications in order to become familiar with the process of using a text editor,
saving files, running the Web server, and viewing the results in a Web browser.
Chapter 3: Program Design—from Requirements to Algorithms. The general characteristics and
requirements of effective instructions are explored, using human and program examples. Students walk through
the process of reviewing simple requirements, creating input, processing, and output (IPO) charts, designing the
interface, and developing solution algorithms. The chapter introduces sequence, selection and control structures,
variables and assignment operations, and arithmetic and logical expressions.
Chapter 4: Basics of Markup—Creating a User Interface with HTML. This chapter explains the significance
of data rendering, and provides a brief overview and history of Hypertext Markup Language (HTML).
Commonly used HTML tags are explained, and the student is shown how to apply these to create and organize
simple Web pages. Cascading style sheets are introduced. Students are shown how to create HTML forms to
obtain user input as a first step in developing interactive Web applications. HTML Tables are used to perform
simple form layout.
Chapter 5: Creating a Working Program—Basics of PHP. This chapter teaches sufficient PHP language
syntax to process user input received from HTML forms, perform simple arithmetic, and produce formatted
output. In the process, students learn to code arithmetic expressions, use standard operators and functions, create
and work with variables, and identify and fix both syntax and logical errors.
Chapter 6: Persistence—Saving and Retrieving Data. This chapter explains the difference between persistent
and transient data, and introduces text file processing as well as basic database concepts. Students learn to: open,
read, write, and close text files; work with multiple files; parse lines of data that contain multiple values separated
by some kind of delimiter.
Chapter 7: Programs that Choose—Introducing Selection Structures. This chapter introduces selection
control structures and demonstrates the use of algorithms to solve problems requiring simple selection. Students
learn to use IF and IF..ELSE structures, Boolean expressions, relational operators, truth tables, simple string
comparisons, and testing procedures.
Chapter 8: Multiple Selection, Nesting, ANDs and ORs. This chapter develops examples from Chapter 7 to
handle problems associated with input validation and more complex requirements. Students explore the use of
compound Boolean expressions, nested selection structures, chained IF..ELSEIF..ELSE selection structures, and
multiple but independent selection structures.
Chapter 9: Programs that Count—Harnessing the Power of Repetition. This chapter introduces loop
structures with a focus on count-controlled FOR loops. Students learn how to refer to the counting variable
within the loop, and how to use loops to generate tables, crunch numbers, accumulate totals, find highest and
lowest values in a series, select values from a file of records, and display bar charts.
Chapter 10: “While NOT End-Of-File”—Introducing Event-Controlled Loops. This chapter introduces
WHILE loops and demonstrates the use of the priming read and the standard algorithm to process files of
unknown length. The student is shown how WHILE loops can be used to perform various operations on a list of

24
data values, and how a file of records can be processed and searched for specific records or field values.
Chapter 11: Structured Data—Working with Arrays. This chapter introduces numerically-indexed arrays,
and shows how arrays can be used to store, access, and update multiple-related values. The use of the FOR loop
to process arrays is explained, and various array-processing algorithms are demonstrated.
Chapter 12: Associative Arrays. This chapter introduces associative arrays. Students learn how to use
associative arrays as lookups, and gain a better understanding of the $_POST array and the way that data is
received from HTML forms. Web sessions are introduced, and students learn how to use the $_SESSION array
to maintain session data between applications.
Chapter 13: Program Modularity—Working with Functions. This chapter demonstrates the importance of
program modularity and introduces functions, include files and objects. Students learn to write their own
functions, to build libraries of related functions, and to call functions from different applications as needed.
Chapter 14: Connecting to a Database—Working with MySQL. This chapter introduces databases queries
as an important application tool. The relationship between relational databases and SQL is explained, along with
the purpose and syntax of common queries (SELECT, INSERT, UPDATE and DELETE). Students learn to
write code to open and close database connections, submit queries, handle errors, perform simple joins, and
process results.
Chapter 15: Introduction to Object-Oriented Programming. This chapter introduces Object-Oriented
Programming. Examples show how simple object classes are designed, how class variables are encapsulated and
accessed by class methods, how objects are instantiated and used in applications, and how classes can be inherited
by other classes. An overview of basic OO terminology is provided.
Chapter 16: Where to Go From Here. This last chapter provides a short overview of key concepts and
technologies that the students may want to explore after completing this textbook, along with clarification of
some of the conventions followed in the book.
The textbook also includes a number of useful appendices as follows:
Appendix A introduces data representation, and shows how binary values can store data for a wide range of
purposes.
Appendix B provides an introduction to overview of file and folder management, file addressing schemes
(including relative and absolute addresses), and the use of the command line with a list of common DOS and
Unix command equivalents.
Appendix C provides help for students wishing to use different Web server installations.
Appendix D provides debugging help for students having trouble identifying and resolving PHP code errors.
Appendix E provides additional material and references for students wishing to learn more about HTML and
style sheets.
Appendix F provides additional information regarding PHP data types, and provides a list of common PHP
functions not covered in the book.
Appendix G provides additional coverage of common PHP operators and structures that were omitted from
the chapters to avoid overwhelming the beginning student (for example, shortcut operators, the SWITCH
statement, DO..WHILE loops, and multi-dimensional arrays).

25
Acknowledgments

This textbook could not have been created without the generous help and support of many others. In particular I
want to thank my dear wife Constance Humphries for her invaluable technical advice, proof-reading,
development of video tutorials, and daily encouragement and patience! My sincere thanks to Scott Sipe, Beth
Hall, Sara Hjelt, and all at Carolina Academic Press for their supportive style, professionalism and experience.
Thanks to all my fellow instructors at A-B Tech (Asheville-Buncombe Technical Community College), especially
to Charlie Wallin and Fred Smartt who field-tested the first edition, and provided invaluable suggestions and
corrections. And thanks to all of those students who have learned with me and sometimes in spite of me as this
book evolved in the classroom. A particular thank you to A-B Tech students Uma Benson, Jean-Jacques Maury,
and Kenneth Stanley, who all voluntarily provided me with carefully compiled lists of corrections that were
incorporated into the fourth edition. Their engagement with the material and concern for future students is
greatly appreciated. Any remaining errors or inconsistencies are of course my own.
Lastly, a huge thank you to Kai ‘Oswald’ Seidler, Kay Vogelgesang, and all those who have contributed to the
Apache Friends Project, and who continue to deliver and support the XAMPP distribution. So many of us owe
you our great appreciation for your generosity of spirit!

26
About the Author

Mike O'Kane holds a master's degree in Systems Science (specializing in Advanced Technology) from
Binghamton University. He has over eighteen years' experience teaching computer science courses, most recently
at Asheville-Buncombe Technical Community College in North Carolina. He also has extensive practical
experience in the use of technology for learning, having worked at IBM as a short-course developer, NC State
University as an Instructional Coordinator, and the University of North Carolina system as the first Executive
Director of the UNC Teaching and Learning with Technology Collaborative. He has a passion for developing
effective instructional content, and learning environments that promote rather than hinder student learning.

27
Chapter 1

Introducing Computer Programming

Intended Learning Outcomes


After completing this chapter, you should be able to:

Explain the difference between computers and other machines.


escribe the purpose of the microprocessor's instruction set.
Explain the relationship between the instruction set and machine language.
List some common tasks that computer programs perform.
escribe what programmers do.
Summarize the stages of the software development cycle.
Explain the importance of writing and communications for programmers.
Explain the relationship between high-level programming languages and machine language.
istinguish between the purpose of a compiler and an interpreter.
Explain the difference between standalone and network applications.
Explain the difference between programming languages and markup languages.

28
Introduction
Welcome! If you have never programmed before, this book is for you. By the time you complete the chapters and
exercises, you will have a good grasp of the basic logic and design of computer programs. The book is designed to
teach common programming syntax and control structures in a manner that will prepare you for further study in
this field, and provide you with sufficient expertise to develop small, interactive Web applications, using a
combination of the HTML markup language and PHP programming language. You will also be introduced to
the CSS stylesheet language, and the MariaDB and MySQL database languages.
To get started, in this first chapter we will explore the general process of programming and define some
important term and practices. For a book that is supposed to be hands-on this chapter is mostly descriptive! Don't
be too concerned if some of the topics don't make complete sense yet. Your understanding will deepen as you
work through the chapters and develop your own applications.

29
Exploring the Variety of Random
Documents with Different Content
double traversée de la chaîne à peu près entière. D’autre part, j’ai
suivi la Saoura sur tout son cours.
Âge des couches. — A la hauteur et à l’ouest de Kerzaz, au sud
d’Aïn Dhob, dans une région faillée, s’étend la sebkha el Mellah. Elle
est très particulière par l’épaisseur de ses dalles de sel. A en juger
par la comparaison avec les autres sebkhas, celle de Timmimoun par
exemple, qui est pour ainsi dire à peine saupoudrée de sel, on est
tenté de croire que les seules conditions climatiques n’expliquent pas
une pareille accumulation. Sur la rive ouest de la sebkha d’ailleurs on
aperçoit de loin un monticule auquel les indigènes donnent le nom
de Golb el Melah, « montagne de sel ». En Algérie il faudrait
conclure à la présence du Trias ; on n’a jamais signalé au Sahara
d’étage dévonien salifère. Il est évidemment impossible de conclure
d’une façon positive, mais la question méritait peut-être d’être
posée : notons qu’une montagne de sel est signalée sur le bas
Guir[139].
E.-F. Gautier. — Sahara Algérien. Pl. XXIX.

Phototypie Bauer, Marchet et Cie, Dijon Cliché Gautier

55. — LE POSTE D’IGLI sur une gara carboniférienne.


Cliché Gautier
56. — SUR LA RIVE DROITE DE LA SAOURA, à Beni-Ikhlef.
Sur tout le fond on distingue bien l’allure des couches gréseuses dévoniennes ; l’érosion y
a fait ressortir des lignes qui rappellent les reflets de la moire.
E.-F. Gautier. — Sahara Algérien. Pl. XXX.

Cliché Gautier
57. — L’OUED SAOURA A BENI-IKHLEF.
La photographie est prise sur la falaise mio-pliocène de la rive gauche ; le rond de l’Oued
est une nebka (monticules de sable et touffes de végétation) ; — à l’arrière plan la chaîne
d’Ougarta ; sur la rive droite de l’Oued, au pied de la chaîne, on distingue des lambeaux
de terrasse mio-pliocène.

A ce Trias très hypothétique près, et si l’on fait abstraction des


dépôts continentaux mio-pliocènes et des dunes, je n’ai vu dans la
chaîne d’Ougarta qu’une seule formation, très homogène et qui
paraît constituer toutes les chaînes[140]. C’est le grès du Mouidir,
blanc patiné noir, qui, dans le reste du Sahara, est attribué au
Dévonien inférieur. Il y a un ou plusieurs niveaux argileux (argiles
vertes et rouges) comme au Mouidir. En revanche, l’étage supérieur
des grès du Mouidir et de l’Ahnet est très fossilifère, tandis que les
fossiles ici font à peu près complètement défaut. Il se pourrait
cependant que cette lacune fût imputable aux hasards de l’itinéraire,
car j’ai rapporté un fossile, un seul, un pygidium de Trilobite, non
trouvé en place il est vrai, mais qui provient des environs de Beni
Ikhlef. Autre différence avec le Mouidir-Ahnet : dans la chaîne
d’Ougarta le soubassement silurien ou archéen n’apparaît nulle part,
du moins à ma connaissance. Il est donc impossible d’évaluer avec
certitude l’épaisseur totale de la formation. Dans l’Ahnet M. Chudeau
l’a trouvée médiocrement puissante, 250 mètres environ. Du moins
peut-on dire que, à juger par ce qu’on voit, la formation d’Ougarta
n’aurait pas une puissance supérieure.

Fig. 36. — Coupe de l’O. Saoura (Beni Ikhlef) à Ennaya.


Échelle : 1/200 000. — mp, Mio-Pliocène ; Di, Dévonien inférieur.
(Bull. Soc. géol. Fr., 4e série, t. VI, p. 732, fig. 1.)

En résumé les grès d’Ougarta sont identiques à ceux de l’Ahnet


dont l’âge dévonien inférieur est bien établi.

Fig. 37. — Coupe de Kerzaz à Oguilet Mohammed.


Échelle : 1/600 000. — F, faille.
(Bull. Soc. géol. Fr., 4e série, t. VI, p. 734, fig. 3.)

Les plis hercyniens. — Les grès d’Ougarta sont minéralisés. Au


lieu dit Tamegroun à mi-chemin entre Guerzim et Ennaya, sur le
flanc ouest d’un dôme anticlinal, court un filon de quartz cuivreux,
orienté dans le sens du plissement. Le filon a été exploité, aussi bien
est-il célèbre dans la région. (Voir appendice III et pl. XXXI, phot.
58.) Un autre filon de cuivre existe au sud-ouest d’Ennaya, le point
porte un nom caractéristique, Golb en Nehas, la montagne du
cuivre. Il a été visité par le lieutenant Rousseau, qui m’a envoyé
quelques échantillons de minerai.
Les grès de l’Ahnet, au rebours de ceux-ci, ne sont jamais
minéralisés ; la raison en est simple : ils rentrent dans la zone
calédonienne du Sahara et n’ont pas été plissés. Les grès d’Ougarta,
au contraire, ont été soumis à des plissements hercyniens.
Le caractère plissé de la région est incontestable, on s’en rendra
compte, je pense, d’un coup d’œil sur les coupes ci-jointes. (Voir
aussi pl. XXXI, phot. 58, 59 et pl. XXXII, phot. 60.) Les plis sont très
nets, médiocrement accusés, en général symétriques, souvent ils
sont courts, réduits à des dômes anticlinaux ou à des cuvettes
synclinales qui se relaient. Ce sont là des indices concordants d’un
plissement peu énergique ; on s’explique ainsi que les couches
inférieures à l’éo-dévonien n’aient été nulle part amenées au jour, au
moins le long de l’itinéraire suivi, malgré la faible épaisseur de cette
formation.
Malgré d’énormes lacunes on suit facilement et sans conteste la
direction générale des plis ; ils courent nord-ouest-sud-est, comme
la chaîne elle-même et comme la Saoura, qui en suit le pied. Cette
direction fait un angle droit avec celle des plis hercyniens dans la
Zousfana.
Les plis sont sectionnés à la même hauteur, le sommet arasé de
l’anticlinal à Tamegroun porte un lambeau étendu de Mio-Pliocène
horizontal (fig. 36), le pays a tous les caractères d’une ancienne
pénéplaine ravinée par l’érosion.

Fig. 38. — Coupe d’Ougarta, à Tin Oraj.


Échelle : 1/400 000. — Dm, Dévonien moyen.
(Bull. Soc. géol. Fr., 4e série, t. VI, p. 736, fig. 5.)
Cette pénéplaine a été affectée de failles dont le dessin se
reconnaît facilement sur la carte, parce que le placage mio-pliocène
s’est conservé dans les compartiments effondrés, où il s’est, comme
d’habitude, partiellement transformé en dunes.
Un grand effondrement dans le sens longitudinal a divisé la
chaîne d’Ougarta lato sensu en deux grandes arêtes néo-
dévoniennes, la branche d’Ougarta proprement dite et l’arête de
Tabelbalet (les indigènes disent le Kahal ?)[141].
Entre les deux un gigantesque compartiment effondré à contours
irréguliers en zigzags, supporte, sur un socle mio-pliocène, les ergs
Atchan et er Raoui.
Souvent les failles ont été guidées par la direction des plis, c’est
le cas le plus fréquent, mais il arrive qu’elles ont taillé à contre-fil,
coupant les plis à angle droit par une cassure brutale. C’est ce qu’on
observe par exemple dans le grand cirque d’effondrement où se
trouve avec la sebkha el Melah la pointe nord de l’erg Atchan.
Les failles sont récentes en relation avec la surrection de l’Atlas ;
les lèvres en rejet sont fraîches, ont gardé un profil de falaise : le
grand lambeau horizontal mio-pliocène sur la crête de Tamegroun,
(cailloutis et poudingues inconsistants), a le facies des dépôts
miocènes ou si l’on veut oligocènes, il est dénivelé de 100 mètres
par rapport à ceux des compartiments effondrés ; les failles ne
peuvent donc pas être plus anciennes que le tertiaire.
Dans les compartiments surhaussés, l’érosion a été très active.
Elle a été d’autant plus efficace que les couches d’argiles molles
interstratifiées dans les grès durs lui donnaient une prise. Le relief
s’est ainsi rajeuni et recréé par le creusement de profondes vallées
longitudinales qui ont accusé en saillie marquée les plis hercyniens.
La sécheresse du climat actuel aidant, qui exagère les pentes,
d’après une loi bien connue, la chaîne d’Ougarta fait encore figure
assez montagneuse.
Longues falaises infranchissables, gorges étroites en canyons, lits
caillouteux à pente torrentielle ; — le relief est jeune, comme les
effondrements qui ont été le point de départ du processus érosif.

La zone Beni Abbès-Ougarta. — Il nous reste à parler de la


région comprise entre la chaîne d’Ougarta et la Saoura. Au point de
vue géologique c’est la plus intéressante, malgré sa faible étendue
relative, par l’abondance de ses fossiles et la variété de ses roches.
C’est un compartiment effondré par rapport à la chaîne
d’Ougarta. Au contact les failles ne sont pas apparentes.
Partout sur la lisière orientale de la chaîne d’Ougarta, à Zeramra,
à Ougarta, à Guerzim et au delà, on voit, ou on croit voir les couches
du Dévonien inférieur plonger sous les couches plus récentes ou
sous la hammada mio-pliocène d’une inclinaison régulière. Les
bastions avancés de la chaîne, dj. Zeramra, dj. Kahla, Nif Kroufi,
qu’on pourrait prendre sur la carte topographique du capitaine
Prudhomme pour des horsts limités par des à-pics, sont au contraire,
sur le terrain, autant que j’ai pu en juger, des bombements
anticlinaux parfaitement réguliers.
L’hypothèse des failles n’en reste pas moins la seule qui puisse
rendre compte d’une dénivellation aussi marquée et d’aspect aussi
frais que celle qui existe entre la chaîne d’Ougarta et la hammada de
Beni Abbès, ces deux parties disjointes d’une même pénéplaine. Les
failles longitudinales par rapport au sens des plis échappent à
l’observation plus aisément que les transversales.
Le compartiment effondré, comme d’habitude est plaqué de mio-
pliocène et couvert çà et là de dunes. L’étude stratigraphique du
substratum primaire est donc très malaisée. Pourtant le long de la
Saoura d’une part, et d’autre part au pied des montagnes et au
débouché des torrents, l’érosion a ménagé quelques fenêtres, où il
est possible de faire sur le sous-sol des observations lacunaires.
Horst de Merhouma. — Le long de la Saoura entre Beni Abbès et
Idikh, l’oued traverse une formation assez puissante, qu’on peut
appeler, pour la commodité de l’exposition, couches de Merhouma,
du nom du point d’eau au voisinage duquel on les aperçoit d’abord
en venant du nord.
A la partie supérieure de la formation ce sont des grès, plongeant
à l’est, qui ont tout à fait le facies éodévonien ; ils reposent, en
discordance, je crois, sur une assise schisteuse, qui est restée
malheureusement en dehors de la route suivie ; cette assise paraît
puissante et ses éléments complexes ; on y trouve des schistes noirs
très durs, à bilobites, qui ont le facies de certaines phyllades
siluriennes du Sahara. Elle mériterait un examen approfondi[142].
Dans la cuvette de Beni Abbès j’ai pu observer le contact entre
ces phyllades et les couches calcaires supradévoniennes. Ce contact
est anormal, les couches calcaires sont coupées brusquement et
rebroussées. Il y a là une faille, très ancienne, puisqu’elle était
arasée quand s’est déposé le placage mio-pliocène.

Fenêtre d’Ougarta. — Le petit village d’Ougarta est à la limite


exacte des grès éodévoniens, sur des argiles et des schistes argileux
mous. Au sud du village s’étend une très grande sebkha, dont le sol
est une pénéplaine de schistes argileux interstratifiés de couches
calcaires minces.

Fig. 39. — Coupe à l’est de Zeramra. — Échelle : 1/300 000.


(Bull. Soc. géol. Fr., 4e série, t. VI, p. 741, fig. 8.)

A trois ou quatre kilomètres d’Ougarta, sur la route de Beni


Abbès on voit une couche de calcaire gréseux, pétri d’Orthocères et
interstratifié dans un grès très tendre jaune clair.
A une dizaine de kilomètres au nord d’Ougarta, ce gisement à
Orthocères se retrouve sous la garet Yhoudia, qui est un témoin
détaché de la hammada mio-pliocène. La couche calcaire à
Orthocères a un mètre d’épaisseur ; elle est interstratifiée dans des
argiles rougeâtres beaucoup plus puissantes.
Aux environs d’Ougarta, si la couverture mio-pliocène fait à peu
près complètement défaut, le sol est souvent couvert de dépôts
quaternaires et de cailloutis actuel, apportés par les oueds de la
montagne. Il n’a pas été possible de préciser les relations
stratigraphiques entre ces affleurements de facies assez différent. Il
est vrai que la stratification s’écarte peu de l’horizontale, et, à si
faible distance, on peut supposer avoir affaire au même niveau ou a
des niveaux très voisins, à moins pourtant qu’il n’existe des failles
inaperçues.
Fenêtre de Zeramra. — Le petit village de Zeramra est, lui aussi,
a la limite des grès éodévoniens ; il est bâti sur ces grès ; mais, dans
son périmètre immédiat, on ne voit pas d’autres roches primaires. Le
contact est voilé par le terrain quaternaire ou par des lambeaux de
Mio-Pliocène.
En revanche, à quelques kilomètres du village, aussi bien sur la
route d’Ougarta que sur celle de Beni Abbès, on traverse des
couches puissantes bien différentes de celles d’Ougarta, au moins
comme faciès (fig. 39). Ce sont des grès, généralement en
plaquettes, intercalés de calcaires violets, bleus, amarantes, à
crinoïdes, à spirifer, à orthocères. Ces couches sont très dures, elles
sont énergiquement redressées et sont à découvert sur 2 kilomètres
environ, elles ont donc une certaine puissance, au moins une
centaine de mètres.
Les fossiles ne sont pas très caractéristiques. Pourtant M. Haug
admet qu’ils appartiennent au dévonien moyen[143].
La formation est certainement affectée de plis arasés, ils sont de
même orientation que ceux de l’Éodévonien, ils semblent même
grosso modo concorder avec eux et les prolonger ; mais il y a
certainement des failles.
La coupe de la figure 39 semble bien révéler une diaclase à la
hauteur de l’O. Ouzouma. De part et d’autre de cet oued en effet le
niveau de la hammada mio-pliocène n’est plus le même.
Fenêtre de Beni Abbès. — Dans le lit de la Saoura, au voisinage
de Beni Abbès affleurent les plus remarquables des couches
néodévoniennes et les mieux connues, celles qui ont livré une faune
abondante du Dévonien supérieur, l’étage à clyménies[144].
Les fossiles se trouvent dans des bancs de calcaires rouges
sombres, très ferrugineux, interstratifiés avec des schistes argileux
très fissiles et mous, de même couleur, et qui contiennent aussi
quelques fossiles mais beaucoup plus rares.
Ces couches, avec le même facies et les mêmes fossiles se
rencontrent en deux points médiocrement éloignés l’un de l’autre au
nord et au sud de Beni Abbès, et qui sont en allant du nord au sud :
A) Ouarourourt, une petite palmeraie ; le Dévonien supérieur
affleure sur la rive droite de l’oued, immédiatement à l’ouest de la
palmeraie, sous la falaise mio-pliocène.
L’affleurement se suit sur une assez grande distance au pied de
la falaise, en amont et en aval d’Ouarourourt. Ici le Dévonien
supérieur est affecté d’un plissement anticlinal très net (fig. 40) ;
c’est cette arête anticlinale qui a forcé l’oued à faire un coude
prononcé en amont d’Ouarourourt. Elle est dirigée nord-ouest-sud-
est, exactement est 30° sud en visant l’aval de l’oued. Au sud de
l’anticlinal d’Ouarourourt les couches dévoniennes sont sensiblement
horizontales.
Fig. 40. — Ouarourourt.
Ds, Dévonien supérieur.
(Bull. Soc. géol. Fr., 4e série, t. VI, p. 744, fig. 9.)

B) 8 kilomètres au sud vrai de Beni Abbès. C’est là que les


couches calcaires fossilifères sont coupées brusquement et
rebroussées au contact du horst de Merhouma.
Ces affleurements sont au nord de Merhouma ; au sud du horst
on retrouve ou du moins on entrevoit à peu près les mêmes couches
se succédant dans le même ordre.
Fenêtre des « pierres écrites » (pl. XXXII, phot. 61). — Au sud-
ouest de Tametert en pleine hammada, affleure, au ras du sol, une
bande de calcaire, tantôt simple et tantôt double, large de quelques
mètres et longue de plusieurs kilomètres ; on y voit tout du long une
foule de gravures rupestres et d’inscriptions, ce qui explique le nom
de cet affleurement Hadjra Mektouba « pierres écrites ». La roche
est bleue claire et quelquefois violette, elle renferme des crinoïdes et
des débris de coquilles ; le facies rappelle les affleurements de
Zeramra. L’affleurement est parallèle à l’oued, et semble avoir une
allure anticlinale.
Les couches à Bivalves. — Quand on va des « Pierres écrites » au
ksar d’el Ouata, au point où l’on descend la falaise de l’oued, juste
en face du ksar de Bou Hadid, on passe sur un autre affleurement
dévonien empâté dans la falaise mio-pliocène et de facies particulier.
Ce sont des calcaires (?) gris, assez tendres, renfermant des moules
de coquilles (dont la forme rappelle le genre Panenka). Ces couches
plongent vers l’oued, je les crois intermédiaires comme âge entre
l’affleurement précédent et le suivant.
Fenêtre d’Idikh. — En face du ksar d’Idikh, sur la rive droite de
l’oued, on retrouve une dernière fois les calcaires violets à
clyménies, c’est un petit lambeau qui m’a paru affecté d’une
ondulation anticlinale. A quelques centaines de mètres dans le
prolongement de ce lambeau, sur l’autre rive de l’oued, on en voit
un autre couronné de ruines, d’un calcaire assez analogue d’aspect
et de couleur, mais pétri de crinoïdes au lieu de clyménies. Il plonge
franchement nord ou nord-est.
En résumé, on peut essayer de classer comme suit les terrains
méso et néodévoniens voilés par la hammada de Beni Abbès.
A la base, les couches d’Ougarta, avec abondance d’orthocères.
Au-dessus, les calcaires et les grès en plaquette de Zeramra,
identiques, semble-t-il, aux calcaires des Pierres écrites.
Puis les couches à bivalves.
Enfin, les calcaires à clyménies.
Il est certain d’ailleurs que cette série est lacunaire, et en outre
l’ordre qui paraît le plus plausible pourrait être erroné.
On peut affirmer, en revanche, que ces couches sont affectées de
plissements arasés orientés S.-E.-N.-O.
On peut affirmer aussi que le plissement est léger ; les argiles et
les marnes, qui jouent un grand rôle, sont toujours feuilletées, mais
la pression subie n’a pas été assez énergique pour les transformer
en véritables schistes.
Plus au sud les étages supérieurs du Dévonien n’apparaissent
nulle part ; au delà d’el Beiada et de Tagdalt, où affleurent des grès
massifs ou en plaquettes d’âge indéterminé on ne voit plus jusqu’à
Foum el Kheneg que des grès éodévoniens incontestables et du Mio-
Pliocène.
Cette dernière formation prend un facies assez particulier dans la
falaise de Timmoudi, que j’ai pu examiner à loisir. Au-dessous du
ksar elle est composée sur presque toute son épaisseur d’une
succession de lits caillouteux, qui attestent un courant assez rapide.
Tout à côté, au sud, la falaise est tout entière en argile très fine, que
le ruissellement a curieusement sculptée, et qui atteste une
sédimentation tranquille en eau stagnante. (Voir pl. XXXIII.)
Évidemment nous avons ici la section d’un vieux lit de rivière. Le tout
est couronné uniformément par la croûte travertineuse habituelle
(pliocène ?).
Il est clair qu’une formation continentale aussi étendue n’est pas
homogène, et le nom vague de mio-pliocène, que nous lui donnons,
est une appellation d’ensemble commode qui supplée à notre
ignorance des détails.
E.-F. Gautier. — Sahara Algérien. Pl. XXXI.

Cliché Gautier
58. — MINE DE CUIVRE DE TAMEGROUN dans la chaîne d’Ougarta.
Au premier plan on voit les trous d’exploitation, dans l’un desquels un indigène est
debout.
Au fond grande vallée longitudinale entre deux assises gréseuses.
Cliché Gautier
59. — DANS LE KAHAL DE TABELBALA, auprès d’Oguilet Mohammed.
Dans le fond à gauche les dunes en masse indistincte ; — au delà de l’oued on distingue
l’allure stratigraphique des grès éo-dévoniens.
E.-F. Gautier. — Sahara Algérien. Pl. XXXII.

Cliché Gautier
60. — DANS LA CHAÎNE D’OUGARTA. — Kheneg el Aten.
Grès éo-dévoniens.
Un des coins les plus sauvages de la chaîne.
Cliché Gautier
61. — HADJRA MEKTOUBA
Affleurement de calcaire méso-dévonien au milieu du reg.
Sur ces calcaires, inscriptions et gravures rupestres.
E.-F. Gautier. — Sahara Algérien. Pl. XXXIII.

62. — BERGE DROITE DE LA SAOURA AU KSAR DE TIMMOUDI.


On aperçoit le Ksar au sommet de la falaise mio-pliocène, constituée par des couches de
sable et surtout de galets agglomérés en grès tendres et en poudingues.
Cliché Gautier
63. — FALAISE DE TIMMOUDI.
Continuation de la précédente, mais de composition bien différente, argileuse.
On voit d’un coup d’œil que l’érosion a sculpté la paroi de tout autre façon.

Structure générale. — En somme la région étudiée est


essentiellement une pénéplaine hercynienne, dont les plis modérés
courent sud-est-nord-ouest. Elle est affectée dans son ensemble
d’une pente régulière nord-sud ; j’estime à deux cents mètres
environ la différence de niveau entre Igli et Foum el Kheneg (sur une
distance d’environ 200 kilomètres).
L’horizontalité de la pénéplaine a été dérangée par des diaclases
dont les unes ont suivi le sens des plis et les autres une direction
perpendiculaire à la première.
Les compartiments surélevés ont été disséqués par l’érosion et
présentent une série de longues arêtes gréseuses parallèles ; la
raideur des pentes, exagérée par le climat désertique, rend les
communications difficiles, et donne au paysage un aspect sauvage
malgré la faiblesse des altitudes relatives (100 à 150 m.).
La jeunesse de l’érosion atteste qu’il s’agit de diaclases récentes,
évidemment en relation avec la surrection de l’Atlas.
Les alluvions anciennes, mio-pliocènes, occupent une superficie
considérable comme partout sur le versant méridional de l’Atlas, qui
est enfoui sous les débris de la grande chaîne. Elles sont bien moins
puissantes pourtant que dans l’est où elles recouvrent le sous-sol
d’un manteau continu, épais en certains points de plusieurs
centaines de mètres (O. Namous).
Ici, encore qu’on en trouve quelques lambeaux sur les sommets,
le Mio-Pliocène n’a été conservé en plaques étendues que sur les
compartiments effondrés. Le long de la Saoura, à Beni Abbès par
exemple, le Mio-Pliocène a une quarantaine de mètres de puissance.
Le puits de Haci Touil (erg er Raoui) creusé dans le Mio-Pliocène, et
le plus profond de la région comme son nom l’indique[145], a une
trentaine de mètres, ce qui semble indiquer que, là aussi, la croûte
d’ennoyage n’excède pas quelques dizaines de mètres.
Comme partout au Sahara algérien ces dépôts en grande partie
sableux ont été remaniés superficiellement par le vent et
transformés en dunes.
Une longue bande de Mio-Pliocène et de dunes (erg er Raoui, erg
Atchan), coupe en deux dans le sens longitudinal la chaîne
d’Ougarta ; séparant la chaîne proprement dite d’Ougarta de celle de
Tabelbalet (que les indigènes appellent le Kahal de Tabelbalet).
D’autre part la chaîne d’Ougarta (stricto sensu) est assiégée à
l’est par les dernières dunes du Grand Erg. La chaîne de Tabelbalet
confine vers l’ouest à l’Iguidi.
Si donc on essayait de résumer brièvement l’originalité
géographique de la région étudiée, on arriverait à peu près à la
conclusion suivante.
Au sud de l’Atlas s’étire d’est en ouest une énorme accumulation
de dunes dont les matériaux ont été fournis par les déjections de la
grande chaîne attaquée par l’érosion depuis l’Oligocène, et qu’on
pourrait appeler les grands ergs subatliques. Cette gigantesque
barrière de dunes est rompue à l’ouest de l’O. Saoura par les chaînes
jumelles d’Ougarta et de Tabelbalet ; elles articulent l’énorme
accumulation de sable en trois masses inégales, nettement
distinctes, encore qu’elles tendent à se rejoindre, et qu’elles fassent
manifestement partie d’un même ensemble ; l’erg du Gourara, — le
groupe jumeau Atchan et er Raoui, — l’Iguidi.
Cet affleurement du vieux sous-sol rocheux en double crête
montagneuse au milieu des hammadas, des regs et des dunes
subatliques donne à la région son unité géographique. Il la fait
priviligiée au milieu d’étendues inhabitables et presque inabordables.
L’affleurement de vieilles roches où les argiles jouent un rôle
considérable ramène en surface et met à la disposition de l’homme
la nappe souterraine d’humidité. Ainsi prend naissance une double
ligne de verdure et de vie — oued Saoura — oued de Tabelbalet,
toutes les deux longeant à l’est l’une la chaîne d’Ougarta, l’autre
celle de Tabelbalet.

O. Saoura. — Le nom de Saoura s’applique à l’oued formé par la


réunion de la Zousfana et du Guir, et qui garde ce nom jusqu’à Foum
el Kheneg.
Dans son ensemble la Saoura coule nord-ouest-sud-est : c’est la
même direction que celle des plissements hercyniens et il y a entre
les deux un lien de cause à effet.
Entre Igli et Ksabi (tout proche de Foum el Kheneg) une
trentaine de ksars s’alignent le long de la Saoura, ce qui fait en
moyenne un village tous les six ou sept kilomètres ; sur certains
points ils sont notablement plus serrés, jamais à plus de 25
kilomètres l’un de l’autre.
Une pareille densité de population est tout à fait anormale le long
d’un oued saharien et s’explique nécessairement par des conditions
physiques très particulières.
Très en gros on peut dire que l’O. Saoura est resserré sur tout
son cours entre la dune et la montagne ; sa rive gauche est de sable
et sa rive droite de roc, traduit en langage géologique, cela signifie
qu’il suit assez exactement la limite des deux terrains le Mio-Pliocène
et le Dévonien. C’est une circonstance heureuse, parce que cette
limite est aquifère.
Le lit est partout marqué avec une extrême netteté, encadré de
hautes falaises, qui atteignent parfois une cinquantaine de mètres ;
et il est net de sable. Les dunes, très puissantes pourtant, et qui
atteignent facilement une centaine de mètres d’altitude, s’arrêtent
méticuleusement à l’oued, leur contour en suit fidèlement les
méandres, et ces masses instables ne se permettent nulle part
d’envahir le lit béant à leurs pieds. Que cet océan de sable soit
arrêté si nettement par un aussi petit obstacle, c’est un fait étrange
et qu’on serait tenté de dire miraculeux, en ce sens du moins que
nos connaissances actuelles ne nous en fournissent pas d’explication
tout à fait satisfaisante ; à tout le moins peut-on dire qu’il atteste
une connexion entre le contour des ergs et le tracé des oueds.
Quelles que soient les causes il est tout à fait important que la
Saoura ait un lit profond, net, libre d’obstacle où la pente est en
moyenne d’un millimètre par mètre. C’est un canal naturel
d’irrigation qui guide et chasse au loin les crues. (Voir pl. XXX.)
La Saoura en effet n’est pas un fleuve tout à fait mort, et à
certaines époques, très espacées il est vrai, elle coule sans
métaphore. Elle est constituée par deux rivières, la Zousfana et le
Guir, qui ne sont pas dépourvues d’eau courante. On sait déjà ce qui
peut s’en trouver dans la Zousfana, et c’est à vrai dire assez peu.
D’après le capitaine Normand l’oued coulerait une fois ou deux par
an, et il semble que ces crues exceptionnelles parviennent jusqu’à
Igli.
Mais c’est le Guir surtout qui est une rivière tout près d’être
normale. On le connaît très mal. On sait pourtant qu’il prend sa
source dans des montagnes bien plus hautes et bien plus humides
que le Grouz et le Beni Smir, dans le grand Atlas marocain ; les
« montagnes de neige » disent les indigènes, djebel el theldj. Les
hautes vallées Atliques constitutives du Guir sont habitées par une
population sédentaire et agricole de Beraber. Même sur le bas Guir le
« Bahariat » des Doui Menia est une grande plaine de culture liée à
l’existence des crues régulières.
On nous dit d’ailleurs que l’oued sur tout ou presque tout son
parcours garde habituellement un filet d’eau légèrement salée ; la
salure de ces eaux s’expliquant vraisemblablement par des causes
géologiques : la carte Prudhomme signale sur le bas Guir un « Golb
el Melah — rocher de sel » ; il est possible que le Guir rencontre des
bancs de sel triasique, si fréquents dans l’Atlas, et il est sûr que sur
tout son cours, moyen et inférieur, les argiles cénomaniennes,
chargées de gypse et de sel jouent un rôle considérable. A Igli
même, au confluent avec la Zousfana, et à différentes époques, j’ai
vu couler le Guir et de la boucle de l’oued auprès du poste on
entend s’élever un coassement continu de grenouilles. Par le canal
de la Zousfana et surtout du Guir les crues descendues de l’Atlas
envahissent la Saoura ; elles approvisionnent de barbeaux les r’dirs
de Beni Abbès ; très certainement il arrive qu’elles parcourent d’un
élan la Saoura tout entière jusqu’à Foum el Kheneg ; au poste de
Ksabi en octobre 1904 le maréchal des logis Galibert a photographié
une crue qui couvrait toute la vallée et qui n’était pas encore écoulée
au bout de huit jours (voir pl. IX, phot. 18). Octobre 1904 a été
particulièrement pluvieux dans le Sud-Oranais, à cette date une
inondation a ravagé le village d’Aïn Sefra qui n’avait pas connu
pareille catastrophe depuis sa fondation.
On n’a pas de documents sur la fréquence et la périodicité des
crues. Il est certain pourtant que dans l’hiver 1906-1907, qui fut
particulièrement pluvieux, l’oued a coulé pendant cinq mois
consécutifs au pied du poste de Beni Abbès, et au printemps 1907 la
crue dépassait assurément Foum el Kheneg.
Il est probable que la Saoura coule à de très longs intervalles,
supérieurs à une année, mais enfin elle coule, et elle roule alors
d’énormes masses d’eau.
Il est clair qu’elle emmagasine alors de puissantes réserves dans
les cuvettes de son lit, qui est, en tout temps, semé de r’dirs ; —
(Beni Abbès — la R’aba — Kerzaz — Beïada — Ksabi, où les
moustiques sont intolérables). Il serait imprudent pourtant
d’attribuer les r’dirs à l’influence exclusive des crues.
Un fait tout à fait caractéristique c’est que la Saoura est en
quelque sorte hémiplégique ; toutes les palmeraies sans exception
sont sur la rive gauche, et lorsque par exception et pour des raisons
de commodité architecturale on a construit le ksar sur la rive droite
(Timmoudi), le village est séparé de la palmeraie par toute la largeur
de l’oued. Toutes les canalisations s’enracinent à l’est.
Rien de plus naturel. L’oued Saoura sur sa rive droite longe le
pied de la montagne à quelques kilomètres de la ligne de partage
des eaux ; sur la rive gauche, au contraire, le bassin encore qu’on ne
puisse pas préciser ses limites s’étend certainement très loin.
D’ailleurs sur la rive gauche la nappe d’eau souterraine trouve
des conditions particulièrement favorables de mise en réserve et
d’adduction progressive. L’erg du Gourara est très mal connu ; il est
impossible de tracer, même hypothétiquement, le réseau des
affluents qui s’y trouvent assurément enfouis. En tout cas il est
certain que l’erg est formidablement massif et il semble bien reposer
à peu près partout sur le même substratum, le Mio-Pliocène,
particulièrement intéressant par ses épaisseurs de sable miocène
non concrétionné. Sable d’alluvions ou de dunes, l’épaisseur doit
atteindre et dépasser presque partout une centaine de mètres ; une
monstrueuse éponge que la pente du terrain égoutte dans la Saoura
tout le long de sa rive gauche.
C’est d’abord un admirable condensateur. Les rares pluies qui
tombent sur ce sol meuble par excellence sont bues avec une
instantanéité qui ne laisse aucune chance à l’évaporation. On sait en
outre qu’un sol de sable, par sa porosité qui multiplie sa surface de
radiation nocturne, est particulièrement apte à provoquer des rosées
ou des phénomènes de cet ordre ; on signale en hiver sur les dunes
la fréquence relative des gelées blanches et notons que à Ksabi la
température en hiver s’abaisse occasionnellement jusqu’au-dessous
de zéro. L’erg est donc bien organisé pour soutirer à l’air ambiant le
maximum d’humidité.
Mais par surcroît, et ceci est je crois l’essentiel, il recouvre un
réseau de rivières quaternaires, c’est-à-dire un terrain dont les âges
antérieurs ont organisé le drainage. Ainsi advient-il que toutes les
eaux qui tombent ou qui se condensent dans un immense espace,
englobant un morceau de l’Atlas sont absorbées, protégées, et
acheminées vers la rive gauche de la Saoura.
Quand on essaie de serrer d’un peu plus près la question on
distingue dans le lit de la Saoura un certain nombre de sections qui
s’individualisent.
Entre Igli et Beni Abbès la limite géologique entre Mio-Pliocène et
Dévonien n’est pas marquée exactement par le lit de l’oued ; elle est
même assez loin dans l’ouest, où elle est jalonnée par deux petites
palmeraies, celles d’Ougarta et de Zeramra. Le lit de la Saoura, il est
vrai, a entamé le Mio-Pliocène jusqu’à la pénéplaine primaire sous-
jacente.
Dans cette section du cours les palmeraies sont rares et
distantes, mais en revanche assez considérables. Ce sont Igli,
Mazzer, et Beni Abbès, respectivement séparées par des étapes de
25 kilomètres. Pour être tout à fait complet, il est vrai, il faut ajouter
la palmeraie, très petite et inhabitée, d’Ouarourourt à quelques
kilomètres en amont de Beni Abbès.
Qu’Igli soit précisément au confluent de la Zousfana et du Guir
cela suppose que ces deux oueds ont un rôle à jouer dans l’irrigation
des jardins. En arrière d’une barrière rocheuse carboniférienne, la
nappe d’eau souterraine stagne dans une grande plaine d’alluvions,
où on va la chercher dans des puisards larges et peu profonds (de 4
à 8 mètres) et d’après Calderaro ces puisards sont la principale
ressource de la palmeraie. Pourtant je retrouve dans mes notes
mention d’une foggara, une seule, une canalisation quelconque
allant capter de l’eau, plus douce que celle du Guir, dans la direction
de l’est, sous les dunes.
Le cas de Mazzer est parfaitement clair : à la base de la falaise
mio-pliocène, sur la rive gauche, jaillit une très grosse source ou
mieux un petit ruisseau d’eau claire ; il débouche sous une voûte
travertineuse qu’il s’est construite lui-même, il donnerait 100 litres à
la minute. On l’appelle Aïn el Hammam. Il existe d’ailleurs à Mazzer
cinq autres petites sources beaucoup moins importantes.
Ouarourourt est alimenté de même par un tout petit filet d’eau
qui sourd à la base de la dune.
Beni Abbès a ses r’dirs pérennes et poissonneux, mais cette
pérennité même d’une mare superficielle, dans un pays où les crues
ne sont pas même annuelles, je crois, atteste que les r’dirs doivent
être alimentés par une circulation souterraine. Ce ne sont pas les
r’dirs d’ailleurs qui jouent un rôle essentiel dans la vie de la
palmeraie. C’est la seguia ; elle jaillit de la falaise mio-pliocène, au
sud immédiat du village, tout à fait comparable à la source de
Mazzer et plus importante encore. Il existe d’ailleurs outre la grosse
source huit petits suintements distincts tous voisins. Il est donc
incontestable que, dans la section amont de la Saoura, — Igli mis à
part — les palmeraies sont alimentées par de grosses sources
naturelles, des douix dirait-on en Bourgogne, qui jalonnent la rive
gauche.
En aval de Beni Abbès l’oued entre dans une section de son cours
tout à fait à part. Il a dû s’ouvrir un chemin à travers un horst
éodévonien, et pour partie peut-être silurien ; il s’est creusé dans les
grès un beau canyon (en aval de Merhouma), et dans les argiles des
gorges sauvages (ksar en Nsara). L’érosion paraît ici plus jeune
qu’en amont et la pente du lit paraît, à l’œil, plus accentuée. Une
carte topographique précise accuserait, je crois, une rupture de
pente, à la traversée de cette barrière puissante, où l’oued n’a pas
encore atteint un profil d’équilibre. L’existence de cette barrière n’est
probablement pas étrangère à la richesse en eau de la falaise et de
la cuvette à Beni Abbès.
Ce horst hercynien offre de médiocres conditions aux
agglomérations humaines. Elles n’y font pas tout à fait défaut
pourtant, il y a des cultures à Merhouma, mais pas de village, il est
vrai ; des palmeraies minuscules avec quelques habitants à Noukhila
et à Bechir. Çà n’en est pas moins un intervalle à peu près vide entre
les groupements importants d’amont et d’aval.
Celui d’aval surtout est considérable, c’est le plus dense de toute
la Saoura. A partir de Tametert, mais surtout d’el Ouata où la
cuvette s’élargit, jusqu’à Beiada, sur une cinquantaine de kilomètres,
les palmiers se touchent, et souvent aussi les ksars ; c’est la R’aba,
la forêt de palmiers. Ce coin privilégié est devenu le centre politique
et militaire de la région ; je dis au point de vue indigène, puisque
notre administration française s’est fixée à Beni Abbès : mais la
R’aba est l’habitat de la tribu nomade suzeraine, les R’nanema.
Cette section du cours est encadrée entre ce qui semble bien être
deux ruptures de pentes ; en amont le horst de Tametert ; en aval,
au delà de Beïada, le point critique est Tagdalt. L’oued prend là un
aspect très particulier, le lit perd tout à fait sa netteté habituelle ; il
est envahi sinon directement par la dune du moins par la nebka, qui
en est l’avant-coureur. A travers les mamelonnements de sable on ne
le retrouve plus qu’à la traînée de végétation arbustive (tamaris,
etc.). Il y a certainement là un palier.
La R’aba est le seul coin de la Saoura où j’ai observé un double lit
majeur et mineur, et une double ligne de terrasses étagées ; l’une, la
supérieure taillée dans le Mio-Pliocène, l’autre, l’inférieure, dans ces
dépôts d’un blanc éclatant, plâtreux, qui sont abondants au
voisinage d’Ouargla et qu’on classe quaternaires anciens.
Au cœur de la R’aba (Bou Hadid, el Ammès) la ligne orientale des
terrasses disparaît ou s’écarte hors de vue, le lit s’élargit en vaste
cuvette, où se pressent les palmiers et les ksars et où l’eau se trouve
partout dans le sol à un très petit nombre de mètres. C’est de là
justement que part à travers l’erg une route de caravanes jalonnée
de puits, encore inexplorée, mais qui a bien des chances de suivre le
thalweg d’un oued enfoui.
Je suis mal renseigné sur le régime de l’irrigation dans la R’aba, il
y a apparence qu’il existe là aussi des foggaras ou du moins une
canalisation ; il m’a semblé pourtant que les puisards et les r’dirs
jouaient le rôle le plus important, comme à Igli, et au rebours de
Beni Abbès.
Au delà de Tagdalt et surtout à partir de Guerzim l’oued suit
rigoureusement le pied de la chaîne d’Ougarta jusqu’auprès de
Timmoudi. Nulle part la dissymétrie des deux rives n’est aussi
directement sensible à l’œil, la rive gauche est taillée comme
d’habitude dans le Mio-Pliocène, immédiatement dominé par les
hautes dunes. A droite le Mio-Pliocène est représenté localement par
des lambeaux de terrasses très discontinues et qu’il faut un examen
attentif pour déceler dans le paysage (voir pl. XXX, phot. 57 et pl.
XXIX, phot. 56). Ce qui frappe c’est l’énorme talus rocheux, inclinée
à 45°, ce qui est l’inclinaison même des strates, noir de poix, et où
l’érosion en découpant les strates a dessiné d’immenses rondelles
qui prennent sous le soleil des reflets de moires (voir pl. XXIX, phot.
56) ; l’ensemble a une centaine de mètres d’un seul jet, et la nudité
absolue de ces collines gréseuses leur donne un aspect sauvage de
grandes montagnes. L’aspect est un peu celui d’un coupe-gorge, et
l’on se rend compte en effet que la proximité de ce massif
montagneux, qui peut si facilement devenir un repaire, est une
menace pour la vallée. C’est peut-être pour cela que cette partie de
l’oued est habitée par des marabouts ; là se trouvent les deux
grosses zaouias de Guerzim et de Kerzaz, protégées par leur
caractère sacré.
Guerzim a de superbes foggaras, longues de 2 kilomètres à ce
qu’il m’a semblé, et rappelant déjà celles du Touat. Bien entendu
leur point de départ est à l’est à la base des dunes.
Kerzaz au contraire a des r’dirs, beaucoup d’eau stagnante et
peut-être même en certains endroits courante. L’oued Saoura, dont
le lit est ici très étroitement resserré entre la falaise et la montagne,
tend à se revivifier localement et une canalisation compliquée n’est
pas nécessaire.
Pourquoi cette différence dans les conditions hydrographiques
entre points voisins. La solution de ce petit problème est sans doute
ensevelie sous l’erg.
Dans la dernière section de son cours — de Timmoudi à Foum el
Kheneg — la Saoura s’écarte à quelques kilomètres de la chaîne
d’Ougarta, qu’on aperçoit cependant à faible proximité (pl. IX, 17) ;
mais cette chaîne perd rapidement de son altitude et de sa
puissance. A Ksabi elle est réduite à une arête rocheuse de quelques
dizaines de mètres, ennoyée presque jusqu’au sommet, à l’assaut de
laquelle les dunes montent de part et d’autre. Ici par-dessus l’O.
Saoura et les derniers débris de la chaîne d’Ougarta le Grand Erg et
l’erg Atchan se rejoignent déjà par quelques filaments. Ce faible
obstacle est percé par la Saoura aux gorges de Foum el Kheneg.
Jusque-là jusqu’à Foum el Kheneg qui est en somme l’exutoire de
la cuvette de Ksabi l’O. Saoura reste vivant, semé de palmeraies et
de ksars (Ksabi, Tim’rarin, etc.). On ne peut que signaler à distance
assez grande au cœur de l’erg oriental un groupe important de
palmeraies et de puits, celui de Telmin. Il est possible qu’entre la
nappe de Telmin et celle de la basse Saoura il existe une relation.
En tout cas il est remarquable que la Saoura qui a été un ruban
de sources, de palmeraies et d’agglomérations humaines cesse
brusquement de l’être au delà de Foum el Kheneg ; les indigènes ont
vivement senti ce changement et l’ont accusé dans leur
nomenclature ; l’O. Saoura prolongé cesse de porter ce nom il
devient l’O. Messaoud, un oued saharien banal, qui traverse le
désert sans en modifier le caractère, souvent méconnaissable, de
continuité incertaine, bi- et trifide, conservant à peine assez d’eau
pour alimenter en des points très éloignés un pâturage et un puits
saumâtre. Cette déchéance s’accuse sans transition dès que l’oued a
derrière lui la chaîne d’Ougarta, il est séparé désormais par une
barrière infranchissable de son réservoir d’humidité, cette masse
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

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

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like