• Aucun résultat trouvé

[PDF] Cours initiation a l algorithmique enjeux et pratique | Cours algorithme

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Cours initiation a l algorithmique enjeux et pratique | Cours algorithme"

Copied!
120
0
0

Texte intégral

(1)

ABDELKADER BENHARI

ABDELKADER BENHARI

ABDELKADER BENHARI

ABDELKADER BENHARI

L’ALGORITHMIQUE

L’ALGORITHMIQUE

L’ALGORITHMIQUE

L’ALGORITHMIQUE

The algorithm is the set of rules and techniques that are involved in the definition and design of algorithms, that is to say, systematic process of problem solving to describe the steps to the result. In other words, an

algorithm is a finite and unambiguous instructions to give the answer to a problem.

If the instructions of an algorithm executed one after the other, the algorithm is called sequential if they run at the same time, it is parallel. If the algorithm operates tasks running on a processor network is called

distributed algorithm, or distributed.

The word "algorithm" comes from the name of the mathematician Al Khawarizmi (Latinized Algoritmi in the Middle Ages), which, in the ninth century wrote the first systematic work on the solution of linear and

(2)

A.BENHARI 2

Table des matières

INTRODUCTION A L’ALGORITHMIQUE

... 4

-

Analyse

-

Algorithme

-

Squelette d’un algorithme

-

Elément de base

-

Schémas algorithmique

APPLICATION

... 13

DEFINITION DES VARIABLES

... 14

-

Variable destinée au calcul

-

Variable non destinée au calcul

ENTREE DE DONNEES DANS LA MACHINE

... 15

AFFICHAGE DE RESULTATS

... 15

CALCULS

... 15

CONDITIONS

... 15

LES STRUCTURES REPETITIVES

... 16

LES PROCEDURES ET LES FONCTIONS (SOUS-PROGRAMME)

... 19

-

Procédure

-

Fonction

LES CHAINES DE CARACTERES

... 22

-

Définition

-

Concaténation

-

Conversions

-

Longueur d’une chaîne

-

Sous chaîne d’une chaîne

NOTION DE TABLEAU (OU TABLE OU VECTEUR OU MATRICE

ARRAY)

... 24

-

Définition

-

Déclaration du tableau

-

Mise à l’état initial

-

Recherche de donnée dans un tableau

LES METHODES DE TRI USUELLES

... 28

-

Tri par insertion

-

Tri par sélection

-

Le tri bulle

-

Le tri de shell

-

Tri de shell-Metzner

-

Tri par vecteur d’indice

-

Tri par monotonie

LA RECURSIVITE

... 35

-

Définition

-

Principe

LES FICHIERS

... 37

(3)

A.BENHARI 3

-

du fichier

-

Notion d’enregistrement

-

Déclaration des fichiers en algorithme

-

Instruction de manipulation des fichiers

-

Application sur les fichiers séquentiels

-

Les fichiers à accès direct

-

Les fichiers texte

ALGORITHMES ET STRUCTURE DE DONNEES

... 44

-

Les structures arborescentes

-

Graphes

-

Problème de la recherche

-

Problème du tri

-

Quicksort

-

Heapsort

ALGORITHMES NUMERIQUES

... 58

-

Généralités

-

Systèmes linéaires Ax=b : méthodes directes

-

Factorisation A=LU

-

Factorisation PA=LU

-

Factorisation A=BB

t

: Cholesky

-

Factorisation A=LDL

t

: Crout

SYSTEMES LINEAIRES AX=B : METHODES ITERATIVES

... 73

-

Principe

-

Méthode Jacobi

-

Méthode Gauss-Seidel

-

Méthode de relaxation

-

Méthodes du gradient

PROBLEMES AU MOINDRES CARRES (LINEAIRE)

... 79

-

Régression linéaire

-

Méthode des équations normales

RESOLUTION DES EQUATIONS NON LINEAIRES

... 81

-

Méthode de dichotomie

-

Généralités

-

Valeurs propres et vecteurs propres

APPROXIMATION POLYNOMIALE & INTEGRATION NUMERIQUE

... 85

-

Approximations polynomiales

ÉQUATIONS DIFFERENTIELLES

... 89

-

Généralités

-

Méthode de résolution numérique

-

Méthode de Euler

-

Méthode du développement de Taylor

-

Méthode de Runge - Kutta

EXERCICES CORRIGES

... 92

(4)

A.BENHARI 4

L’ALGORITHMIQUE

L’ALGORITHMIQUE

L’ALGORITHMIQUE

L’ALGORITHMIQUE

I.

I

NTRODUCTION A L

ALGORITHMIQUE

Qu’est ce qu’un algorithme ?

"Une suite finie de règles à appliquer dans un ordre déterminé à un nombre fini de données

pour arriver, en un nombre fini d'étapes, à un certain résultat, et cela indépendamment des

données".

Encyclopaedia universalis

I.1. Analyse

Définition

La décomposition d’un problème en sous problèmes, ensuite des sous problèmes en sous

problèmes, on arrive ainsi à des problèmes non décomposables, ou à des tâches élémentaires.

Ces tâches élémentaires ordonnées forment la succession des étapes qui permettent à partir

d’une situation initiale d’aboutir à une situation finale qui représente la solution du problème

de départ. Une première solution peut être rédigée dans un langage non formel (en français

par exemple), ensuite traduite dans un langage formel (algorithme), à partir duquel il est

possible d’écrire un programme dans un langage de programmation et de l’exécuter sur une

machine.

Démarche de décomposition

Nous allons détailler un exemple qui montre la démarche de décomposition et comment

arriver à résoudre un problème sans faire autre chose que de l’exprimer par des problèmes

plus petits.

Le problème initial : un individu se trouve devant une voiture et doit la faire démarrer.

Entrer dans la voiture

Démarrer la voiture

Ouvrir la portière

Monter

Fermer la portière

Faire fonctionner la voiture

Démarrer la voiture

Mettre la clé dans le contact

Faire un quart de tour, les voyants doivent s’activer

Continuer à tourner la clé jusqu’à ce que la voiture émette un bruit indiquant

l’état de marche normal

(5)

A.BENHARI 5

Appuyer sur la pédale d’embrayage

Enclencher la première vitesse

Désactiver le frein à main

Actionner doucement le démarreur et relâcher progressivement l’embrayage.

La solution finale est exprimée par les tâches se trouvant en bas du schéma. Cette succession

de tâches s’appelle un algorithme mais il est ici exprimé dans un langage non formel.

La situation initiale : individu, et voiture ouverte (non verrouillée).

La situation finale : individu dans la voiture et voiture en état de marche.

L’algorithme a besoin de certains renseignements externes pour pouvoir fonctionner

correctement (voyants, bruit que fait la voiture…etc.)

La solution est donnée dans le cas où il n’y a aucun problème, supposons maintenant que la

voiture ne veut pas démarrer où qu’une fois démarrée, le conducteur cale ! Que faire ? Il est

clair que notre algorithme ne répond plus à la question, et qu’il faut l’améliorer pour qu’il

marche dans toutes les situations possibles.

Nous allons réécrire notre algorithme.

Entrer dans la voiture

Démarrer la voiture

Ouvrir la portière

Monter

Fermer la portière

Faire fonctionner la voiture

Démarrer la voiture

Si le conducteur a la clé alors

Tant que la voiture n’est pas en état de fonctionnement normal il faut

Début

Mettre la clé dans le contact

Faire un quart de tour, les voyants doivent s’activer

Continuer à tourner la clé jusqu’à ce que la voiture émette un

bruit indiquant l’état de marche normal

Si la voiture ne démarre pas alors

Retourner la clé dans le sens contraire

Reprendre à : Mettre clé dans contact

Fin

Appuyer sur la pédale d’embrayage

Enclencher la première vitesse

Désactiver le frein à main

Actionner doucement le démarreur et relâcher progressivement

l’embrayage.

Si la voiture cale alors

Retourner la clé dans le sens contraire

Reprendre à : Mettre clé dans contact

Fin si

Sinon

(6)

A.BENHARI 6

Reprendre à : Mettre clé dans contact

Fin si.

Ce nouvel algorithme permet de refaire certaines actions si elles ne fonctionnent pas

correctement.

I.2. Algorithme

Définition

Un algorithme est rédigé dans un pseudo-langage et destiné à une machine abstraite

(virtuelle). Il permet de décrire formellement toutes les étapes nécessaires qui à partir d’une

situation initiale, permettent d’aboutir à une situation finale. Cette dernière constitue la

solution qui résout un problème donné.

Le langage algorithmique est précis, et suit des règles qui seront décrites tout au long de ce

document.

Démarche : Problème, analyse, algorithme

Pour illustrer la démarche qui permet d’écrire un algorithme nous allons traiter des exemples

concrets

1

er

exemple : Somme de deux entiers

Soit le problème formulé dans les termes suivants : écrire un algorithme qui calcule la somme

de deux entiers, et affiche le résultat à l’écran.

Le problème ici est simple, il s’agit de calculer la somme de 2 entiers. Le problème ne précise

pas où trouver les deux entiers, il est alors possible de supposer que les deux entiers seront

donnés par l’utilisateur, ce dernier dialogue avec la machine par l’intermédiaire du clavier.

On dit alors que les deux entiers seront saisis au clavier. L’énoncé ne précise pas non plus que

faire du résultat, on suppose alors que ce dernier sera affiché sur l’écran.

Voici le schéma qui résume notre problème.

Figure Erreur ! Il n'y a pas de texte répondant à ce style dans ce document.-1

Deux données seront à l’entrée d’une boîte qui réalise le calcul et fournit en sortie la somme

de ces deux données.

En algorithmique, il est fréquent de parler d’entrée et de sortie.

o

Les données d’un algorithme sont appelées entrées : elles sont à la base du traitement

des algorithmes.

o

Les résultats d’un algorithme sont appelés sorties : elles sont le fruit des traitements

faits par les algorithmes et fournissent une réponse au problème posé.

Donnée

2

Résultat Calcul de Somme

(7)

A.BENHARI 7

La boîte de la figure

Figure Erreur ! Il n'y a pas de texte répondant à ce style dans ce document.-1

représente ce que nous allons appeler par la suite un processus de calcul. Ce processus réalise

un traitement simple, qui est le calcul de Donnée 1 + Donnée 2. Une fois le résultat obtenu il

sera affiché sur l’écran.

La totalité du schéma est le processus général et c’est ce qu’il faut concrétiser par un

algorithme.

Pour écrire cet algorithme nous avons besoin de :

1.

Accepter Donnée 1 et la stocker,

2.

Accepter Donnée 2 et la stocker,

3.

Calculer Donnée 1 + Donnée 2,

4.

Stocker le résultat,

5.

Afficher le résultat sur l’écran.

Nous avons ainsi décomposé le problème comme expliqué dans la section 0, les tâches

numérotées de 1 à 5 sont en fait l’algorithme écrit en langage non formel. Il est possible de

noter ici, que chaque problème possède la solution dans sa décomposition.

Nous allons le traduire dans un langage algorithmique formel, et nous expliquerons les

différents mots-clés utilisés au fur et à mesure.

Algorithme Somme Variables

Donnée1, Donnée2, Résultat : entier Début

Ecrire (Donner la donnée numéro 1 ) Lire Donnée1

Ecrire (Donner la donnée numéro 2 ) Lire Donnée2

Résultat = Donnée1+Donnée2 Ecrire (La somme est : Résultat) Fin

I.3. Squelette d’un algorithme

Algorithme NomDeLAlgorithme VAR

//Déclaration de variables manipulés par l’algorithme Donnée1, Donnée2, Résultat : entier

Début

//Corps de l’algorithme constitué par les expressions Fin

Un algorithme est défini par un entête donnant le nom de l’algorithme, généralement

explicite. L’entête est suivie par une partie déclarative permettant de définir toutes les

données qui seront utilisées par l’algorithme. Par la suite entre deux mots-clé Début et Fin,

nous retrouvons le corps de l’algorithme qui sera constitué par les différentes expressions

permettant de résoudre le problème.

I.4. Eléments de base

Types

Les types permettent de donner un domaine de définition aux objets manipulés par un

algorithme, par exemple des données nécessaires pour un calcul seront définies dans le

domaine des réels ou des entiers, un message affiché sera défini dans le domaine des

caractères alphanumériques…etc.

(8)

A.BENHARI 8

Il existe 5 types de base en langage algorithmique de programmation :

Les entiers : définis dans le domaine des entiers naturels et les entiers relatifs.

Les réels

Les caractères : définit tout ce qui est caractère alphanumérique, « a ».. « z », « 1 ».. « 9 »

ainsi que les caractères spéciaux, caractères de ponctuation, etc…

Les chaînes de caractères : un assemblage de caractères forme une chaîne.

Les booléens : un booléen permet de définir une donnée qui ne peut prendre qu’un avaleur

entre deux : vrai ou faux, ou bien 0 ou 1.

Variables

Les variables servent à déclarer des objets nécessaires au bon fonctionnement d’un

algorithme. Les variables doivent être définies avant leur utilisation, en général en dessous de

l’entête de l’algorithme dans une partie qui peut être distinguée par le mot clé VAR. Elles sont

définies grâce à l’un des cinq types de base et peuvent accepter une valeur de début appelée

valeur initiale.

Exemple :

Algorithme Exemple VAR Donnée1 : entier Donnée2 : entier Car : caractère

Message : Chaîne de caractères VraiOuFaux : booléen

Début

// Initialisation des différentes variables Car ‘A’ VraiOuFaux Faux Donnée1 10 Donnée2 20 . . . Fin

L’initialisation des variables permet de donner à ces dernières une première valeur. Il n’est

pas interdit de changer cette valeur par la suite que ce soit par l’intermédiaire :

o

d’une autre affectation,

o

d’une expression de calcul,

o

d’une lecture au clavier.

Constantes

Les constantes sont des données initialisées qui ne changent jamais de valeur pendant toute la

durée de l’algorithme. Elles peuvent seulement être lues, utilisées pour un traitement,

affichées mais jamais modifiées

Algorithme Circonférence Constantes PI = 3,14 VAR Circonférence : réel Rayon : réel

(9)

A.BENHARI 9

Début

Ecrire (Donner le rayon du cercle) Lire Rayon

Circonférence PI * (Rayon)²

Ecrire (La circonférence de votre cercle est : Circonférence) Fin.

Dans cet algorithme PI ne peut qu’être utilisée telle quelle, elle ne peut pas être modifiée

d’une façon quelconque.

Déclaration

La déclaration sert à introduire la donnée (variable ou constante)qui sera utilisée par

l’algorithme. Lors de la déclaration d’une donnée il est nécessaire de lui donner un type, et il

est parfois possible de lui affecter une valeur de départ. Pour les constantes, la valeur de

départ est obligatoire.

Il existe deux manières de déclarer une variable en pseudo-langage.

NomDeLaVariable [: type de la variable]

Ou bien

[Type de la variable] NomDeLaVariable < Valeur de départ>

Remarque : Il est conseillé de garder le même type de déclaration dans le même algorithme.

Exemples :

V1 : entier

//Déclaration de V1 de type entier

Entier V2

0

//Déclaration de V2 de type entier avec une valeur initiale égale à 0

Entier V3

//Déclaration de V3 de type entier sans valeur initiale

Il est aussi possible de faire des déclarations « groupées ».

Entier V1, V2, V3

// Déclaration de trois variables de type entier par le biais d’une même

instruction.

Initialisation

L’initialisation d’une variable revient à une affectation d’une première valeur avant toute

autre utilisation de cette variable. Les instructions d’initialisation peuvent figurer n’importe

où dans l’algorithme, et pas nécessairement au début.

Opérateurs

Les opérateurs permettent de modifier des valeurs de données à l’intérieur des expressions.

Nous allons distinguer entre trois types d’opérateurs en algorithmique. Le type d’une donnée

détermine le type des opérateurs qui peuvent lui être appliqués.

Remarque : certains langages de programmation possèdent des opérateurs spéciaux.

Opérateurs arithmétiques

Les opérateurs arithmétiques sont tous utilisés en algorithmique pour écrire des expressions

arithmétiques pouvant être affectées à des variables numériques. Par exemple pour modifier

certaines valeurs il est nécessaire d’utiliser des opérateurs.

Remarque : Il est aussi possible d’utiliser l’opérateur + pour modifier des chaînes de

caractères.

+ : permet les additions

- : permet les soustractions.

* : permet la multiplication

/ : permet la division

(10)

A.BENHARI 10

Opérateurs logiques

Les opérateurs logiques sont utilisés pour affecter ou modifier les valeurs des données de type

booléen. Il en existe trois :

o

NON : appelé Non logique, c’est un opérateur unaire,

o

OU : opérateur binaire appelé Ou logique,

o

ET : opérateur binaire appelé Et logique.

Les trois tableaux ci-dessous résument les tables de vérité des opérateurs logiques :

Et

Vrai

Faux

Vrai

Vrai

Faux

Faux

Faux

Faux

Ou

Vrai

Faux

Vrai

Vrai

Vrai

Faux

Vrai

Faux

Non

Vrai

Faux

Faux

Vrai

Opérateurs relationnels

Les opérateurs relationnels permettent de comparer des expressions entre elles, le résultat sera

une expression logique : vraie ou fausse. Ces opérateurs peuvent comparer entre les types

numériques, les types caractères et les types chaînes de caractères.

<

<=

=

>

>=

<>

Opérateur

Type numérique Type alphanumérique

Type chaîne

<=

2 <= 3

vrai

‘a’ <= ‘b’

vrai

« abc » <= « acc »

vrai

<=

32.5<=1

faux ‘9’ <= ‘a’

vrai

« zze » <= « azerty »

faux

>=

3 > 2

vrai

‘9’ >= ‘a’

faux

« aaaaa » >= « bbbbbbb »

faux

=

0 = 0

vrai

‘a’ = ‘b’

faux

« aaaa » = « fffe »

faux

<>

<

>

Expressions

Les expressions constituent la base de toute instruction algorithmique. Ils existent des

expressions simples et des expressions complexes. Toutes seront étudiées dans les sections

suivantes sous la dénomination de schémas algorithmiques.

Définition

Une variable ou une constante est une expression.

Les expressions peuvent être combinées grâce aux opérateurs et donnent ainsi une nouvelle

expression.

(11)

A.BENHARI 11

Les expressions comme nous le verrons plus loin peuvent aussi contenir des appels de

fonctions, ou constituer des appels de procédure.

Les expressions constituent les instructions algorithmiques.

I.5. Schémas algorithmiques

Schéma algorithmique simple

Affectation

L’affectation est l’expression de base en algorithmique, elle permet d’associer une valeur

quelconque à une variable de l’algorithme. Il est clair que la valeur doit être du même type

que la variable.

L’affectation comprend 2 parties séparées par le symbole d’affectation «

» :

o

une partie gauche appelée aussi valeur de gauche et constituée par une variable,

c'est-à-dire un objet qui peut prendre une valeur,

o

une partie droite ou valeur droite constituée par une « expression » pouvant être

évaluée.

VAR V1 : entier V2 : réel Début V1 10.5 // Affectation erronée

V1 10 // Affectation correcte, on dit que V1 reçoit la valeur 10 V2 32.5 // Affectation correcte, V2 reçoit 32.5

V2 10 // Affectation correcte, les réels englobent les entiers naturels

V2 25/2 // Affectation correcte, V2 recevra le résultat du calcul de 25 divisé par 2 Fin

Lecture de données

Une autre manière d’accorder des valeurs à des variables est de faire ce qu’on appelle une

lecture de données. La lecture se fait à partir d’un dispositif d’entrée, en l’occurrence un

clavier. On l’appelle aussi saisie ou entrée de données. Ce procédé est utilisé à chaque fois

qu’une valeur est requise par l’algorithme et que cette valeur ne peut être donnée que par

l’utilisateur, c'est-à-dire la personne qui utilise le programme. Bien sûr dans un algorithme il

n’y aura pas de véritable saisie à partir du clavier mais seulement une simulation de la saisie.

L’algorithme simule une demande de donnée à l’utilisateur et l’accepte pour la stocker dans

une variable.

Plus tard, l’algorithme sera traduit par un programme, le programme sera compilé et les

instructions qui seront exécutables par une machine demanderont une saisie réelle de la part

de l’utilisateur. Ce dernier devra taper une donnée du type requis au clavier et valider sa

réponse par un retour chariot.

La syntaxe permettant de lire une donnée est la suivante :

Lire NomDeLaVariable

Ecriture de données

L’écriture de données permet un autre type d’interaction avec l’utilisateur : la sortie de

messages ou de résultats à l’attention de ce dernier. L’écriture se fait sur un dispositif de sortie

tel que l’écran ou l’imprimante par exemple.

(12)

A.BENHARI 12

La syntaxe communément adoptée est la suivante :

Ecrire « Message »

Ecrire Valeur

Incrémentation

L’incrémentation est une expression particulière qui permet d’augmenter la valeur d’une

variable d’une certaine quantité à la fois.

V1 V1 + 1 V2 V2 + 2

Décrémentation

La décrémentation permet de réduire la valeur d’une variable.

V1 V1 - 1

V2 V2 - 2

Schéma algorithmique conditionnel

Un schéma algorithmique conditionnel donne à l’algorithme la possibilité d’aller dans un sens

plutôt que dans un autre. Une condition est évaluée, et à partir du résultat de cette évaluation

un choix est fait.

(13)

A.BENHARI 13

II.

Application

Ennoncé de EXAM1 : on fait passer un examen à des étudiant et l’on veut déterminer ceux qui

sont admis . Il y a 3 matières : math (coef 3), français (coef 2) et informatique (coef 5).

Les notes peuvent aller de 0 à 20. Il y a admission à la condition d’obtenir la moyenne

c'est-à-dire 10 sur 20.

Réalisation des spécifications :

3 matières :

maths

3

français

2

informatique

5

notes

0 à 20

admis = moyenne de 10/20 minimum

c'est-à-dire ajourné pour un total de point <100 mais admis pour un total >= 100

Réalisation d’un organigramme de programmation ou ordinogramme

Réalisation de l’algorithme

algo exam1 ()

Début

Entrée des notes

Calculé le total

Si total >= 100

Admis

Ajourné

FIN

Non

Oui

(14)

A.BENHARI 14

/* déterminer admis ajourné*/

/* 0<= notes <= 20 */

const

entier coefmath 3

entier coeffran 2

entier coefinfo 5

var locales

réel fran, math, info, total

début

afficher (« Entrez la note de math = » )

saisir (math)

afficher (« Entrez la note de français = » )

saisir (fran)

afficher (« Entrez la note d’informatique = » )

saisir (info)

total

math*3 + fran*2 + info*5

ou total math*coefmath + fran*coeffran + info*coefinfo

si total >= 100

alors

afficher (« ADMIS »)

sinon

afficher (« AJOURNER »)

finsi

fin

III.

Définition des variables

2 types de variables

a.

Variable destiné au calcul

Entier : peut contenir un nombre entier entre -32 768 et 32 767. Représentation binaire pure

en machine

Réel : tous les nombres dont les entiers. Représentation virgule flotante.

0,

3458

.10

4

(

mentis

et caractéristique)

Logique ou booléen :

2 valeurs : vrai et faux

var locales

logique homme

début

si homme ou si homme = vrai

alors

afficher (« c’est un homme. »)

b.

Variable non destiné au calcul

car : un symbole

(15)

A.BENHARI 15

ex :

chaîne (15) phrase

….

Phrase

« il y a des nuages »

IV.

Entrée de données dans la machine

saisir (nom_variable)

V.

Affichage de résultats

afficher (« libellé1 », var1, « libellé2 », var2, …)

VI.

Calculs

Symbole d’affectation

total

math*3 …

Règle hiérarchique des opérateurs :

-

puissance : **

-

multiplication et division : * et /

-

addition et soustraction : + et –

Les parenthèse peuvent changer la hiérarchie des opérations. Réalisation des opérations dans

la parenthèse la plus interne.

VII.

Conditions

Exécution séquentielle des instructions des programmes

Attention au parenthèse

(16)

A.BENHARI 16

VIII.

Les structures répétitives

Pour que le programme ne boucle pas indéfiniment, il faut continuellement inclure à

l’intérieur de la boucle une instruction capable de modifier la valeur de l’expression testé.

Différentes façon de programmer une boucle :

Lors d’un dialogue clavier/écran = question posé à l’opérateur

Autres traitement ? (oui/non)

Réponse de l’opérateur

variable = réponse

Analyse du problème : faire n addition de 2 nombre

c

a + b

tant que réponse = « oui »

si non

faire

calculer 1 addition

autre calcul ? (oui/non)

saisir la réponse

fin tant que

prog

Début

Calculer 1 addition

(c fois)

fin

Saisie de a et b

Addition

Affichage du résultat

question

(17)

A.BENHARI 17

Entrez impérativement dans la boucle : réponse

« oui »

Entrez conditionnelle dans la boucle suivant opérateur :

Afficher (calcul ? (oui/non))

algo rep1()

var locales

entier a, b, c

chaîne (3) reponse

début

afficher (« Voulez-vous faire un calcul ? (oui/non) »)

saisir (réponse)

c

a + b

tant que réponse = « oui »

faire

afficher (« entrez a et b »)

saisir (a, b)

c

a + b

afficher (« résultat= », c)

afficher (« autre addition ? (oui/non) »)

saisir (réponse)

fin tant que

fin

A l’aide d’une marque de fin de travail

algo rep2()

var locales

entier a, b, c

début

afficher (« Entrez une valeur pour a ou -1 pour terminer.»)

saisir (a)

tant que a <> -1

faire

afficher (« entrez b »)

saisir (b)

c

a + b

afficher (« résultat= », c)

afficher (« Entrez a ou -1 pour terminer.»)

saisir (a)

fin tant que

fin

(18)

A.BENHARI 18

a.

A l’aide d’un compteur

Par incrémentation ou décrémentation

i.

Par décrémentation

algo rep3()

var locales

entier a, b, c, i

début

afficher (« Entrez le nombre d’addition à faire.»)

saisir (i)

tant que i > 0

faire

afficher (« entrez a et b »)

saisir (a, b)

c

a + b

afficher (« résultat= », c)

i

i-1

fin tant que

fin

ii.

Par incrémentation

algo rep4()

var locales

entier a, b, c, I, cpt

début

afficher (« Nombre d’addition.»)

saisir (i)

cpt

0

tant que i > 0

faire

afficher (« entrez a et b »)

saisir (a, b)

c

a + b

afficher (« résultat= », c)

cpt

cpt+1

fin tant que

fin

(19)

A.BENHARI 19

IX.

Les procédures et les fonctions

(sous-programme)

Raison des sous programmes :

-

réutilisabilité

-

lisibilité du programme

-

facilité de maintenance

-

facilité de mise au point

P1 : entrée

P2 : entrée-sortie

P3 : sortie

(20)

A.BENHARI 20

Une fonction ne retourne qu’une valeur, ses paramètres doivent être exclusivement d’entrée

(passage par valeur uniquement)

Entrée = passage de paramètre par valeur

Entrée-sortie et sortie : passage par référence

(21)

A.BENHARI 21

a.

Procédure

Est un sous ensemble indépendant où faisant partie d’un programme principale. Elle

communique avec des paramètres entrée-sortie, sorties.

Exemple : soit calcul de la somme de 2 nombres : c

a + b

procédure somme (a, b, c)

val entier a

val entier b

ref entier c

début

c

a+b

fin

programme principal

algo pp ()

var locales

entier x, y, z

début

afficher (« Entrez une valeur pour x »)

saisir (x)

afficher (« Entrez une valeur pour y »)

saisir (y)

somme (x, y, z)

afficher (« Le résultat est », z)

fin

b.

Fonction

Une fonction est une sous partie d’un programme qui retourne 1 valeur donc une fonction

possède un type.

Elle ne doit posséder que des entrés.

Doit contenir la commande retourne (constante, variable, expression arithmétique)

(22)

A.BENHARI 22

val entier a

val entier b

var locales

entier c

début

c

a+b

retourne (c)

fin

début

retourne (a+b)

fin

programme principal

algo fpp()

var locales

entier a, b

début

afficher (« entrez a et b »)

saisir (a,b)

afficher (« Résultat », fsomme (a,b))

fin

X.

Les chaînes de caractères

a.

Définition

C’est un ensemble de caractères affichable. On utilise un code ISO (ASCII) codant 0 – 127

caractère texte et 128 – 255 caractères graphiques

-

0 – 31 caractère de contrôle du terminal

-

48 – 57 chiffre

-

65 … A, B

-

97 … a, b

caractère alphabétique numérique spéciaux

Une chaîne de caractère = caractère concaténé

b.

Concaténation

Mise bout à bout de caractère pour former une chaîne

Mise bout à bout de plusieurs chaînes

Opérateur de concaténation = +

y = « il fait chaud » // pas de sémantique

z = « xyaZb2 »

a = « il »

b = « fait »

c = « froid »

d = « chaud »

e = « humide »

y = a + b + d

(23)

A.BENHARI 23

c.

Conversions

i.

Conversions d’une chaîne en entier

Fonction chaînant

c

« 2003 »

z

chainant (c)

d

« 128 »

y

c + d

y = « 2003128 »

r

chainant (d)

r = 128

w = z + v

w = 2131

a

chainant (y)

a = 2003128

Si erreur

chainant = « Za34 » retourne 0

chainant = « 34Za » retourne 34

ii.

Conversion d’un entier en chaîne

Ent chaine (entier) retourne une chaîne

d.

Longueur d’une chaîne

Définition de la chaîne

var locales

chaine (12) a

Longueur effective de la chaîne

= Longueur de l’espace utilisé

longueur (chaine) retourne un entier

ex : l

longueur (a)

e.

Sous chaîne d’une chaîne

z = « Il fait chaud »

temperature

milieu (z, 9, 5)

température = « froid »

(24)

A.BENHARI 24

XI.

Notion de tableau (ou table ou vecteur ou

matrice

array)

a.

Définition

Un tableau est un ensemble de valeurs de même type

Types :

-

prédéfinis = entier, réel, logique, caractère, chaîne

-

construits = structuré, énuméré

Ex d’un tableau d’entier

1, 3, 5, 2, 8, 7

en variable

1

3

5 2

8

7

A

B

C D

E

F

Tableau t

1

1 3 5 2 8 7 Valeur

1 2 3 4 5 6

Rang dans tableau

t

1

[3] = 5

5 est la valeur de l’élément de rang 3 du tableau t

1 1 2 1

1 3

2

5 2

3

8 7

t

1

[2ligne,1colone] = 5

rang = 2,1

b.

Déclaration du tableau

var locales

type nom_tableau [taille] taille = 1

er

valeur … valeur max

Ex : soit un tableau de 50 entiers appelé t

1

entier t

1

[1 … 50]

Soit un tableau de 50 chaînes de caractères de 22 caractères

chaine (22) t

2

[1 … 50]

i.

Tableau à 1 dimension

On peut le considérer comme linéaire

On le remplie avec 1 et 1 seul indice

(vecteur)

Chaque élément est identique

(25)

A.BENHARI 25

On peut considérer qu’il s’agit d’une nature contenant l lignes et c colones

var locales

type nom_tableau [ [1…l], [1 … c] ]

exemple à 3 dimensions

entier t

1

[ [1 … m], [1…l], [1 … c] ]

ensemble de matrice

Du plus haut niveau au plus bas niveau

c.

Mise à l’état initial

Mettre les données dans un tableau correspond au chargement des données dans le tableau.

RAZ, RAB, VRAI / FAUX

-

Transfert de variables

-

Transfert d’autre tableau

-

Saisie

-

Donnés de fichiers

Exemple de saisie

algo saisie ()

var locales

entier t

1

[[1..5], [1..3]], l, c

début /* -1 pour fin*/

afficher (« entrez un numéro de ligne »)

saisir (l)

tant que l <> -1

faire

afficher (« entrez un numéro de colone »)

saisir (c)

afficher (« entrez une valeur pour », l, c)

saisir (t

1

[l,c])

afficher (« Entrez un numéro de ligne ou -1 pour quitter »

fin tant que

fin

Exemple de fonction avec passage de tableau

fonction entier TOTO (t

1

[], n)

ref entier t

1

[1..n]

val entier n

d.

Recherche de donnée dans un tableau

i.

Recherche par le rang

Ex : afficher (t

1

[3])

ii.

Recherche séquentielle

(26)

A.BENHARI 26

C'est-à-dire élément cherché se trouve toujours dans le tableau

2.

Avec erreur possible

En italique dans sch précédent.

t

1

(0,1)

t

1

(0,1)

procédure rechseq (t

1

[], n atrouve)

ref entier t

1

[1..n]

val entier n

val entier atrouver

var locales

entier i

logique trouve

début

trouve

faux

i

1

tant que (i<=n) et trouve = faux (non trouve)

faire

si t

1

[i]=atrouve

alors

trouve

vrai

sinon

i

i+1

finsi

fin tant que

si trouve = vrai

alors

afficher (« l’élément », atrouve, « se trouve en », i, « positions »)

sinon

afficher (« erreur »)

fin si

fin

iii.

Recherche dichotomique

Attention : Cas particulier pour tableau triées

algo

Début

Tableau à trouver

Trouver 1 élément

du tableau (t fois)

t

1

(0,1)

t

1

(0,1)

fin

Début traitement

Trouvé (0,1)

Trouvé (0,1)

Inter

i

I

n+2

Trouve

vrai

i

i+1

(27)

A.BENHARI 27

Principe

Soit un tableau d’une suite de 8 nombres.

3 5 8 12

15

27

43

75

1 2 3

4

5

6

7

8

Chercher 15

indice mini = 1

indice maxi = 8

indice mil = (mini + maxi) /2 =4

trouve = 12

indice mini

mil +1

indice mil

6

trouve = 27

indice maxi

mil - 1

indice mil

(5+5) / 2 = 5

procédure dichotomie (t

1

[], n, cherche, trouve, rang)

ref entier t

1

[1..n]

val entier n

val entier cherche

ref logique trouve

ref entier rang

var locales

entier mini, maxi, mil

début

mini

1

maxi

n

mil

(mini + maxi) / 2

tant que mini <= maxi et t

1

[mil] <> cherche

faire

si cherche < t

1

[mil]

alors

maxi

mil -1

Tant que

(mini<= maxi)

et cherche <>

trouve

procédure

Début

Traiter 1 élément

de partage n fois

t

1

(0,1)

t

1

(0,1)

fin

Cherche < t

1

[mil]

(0,1)

Si cherche < t

1

[mil]

<> (0,1)

Si cherche t

1

[mil]

(28)

A.BENHARI 28

sinon

mini

mil + 1

finsi

mil

(mini + maxi) / 2

fin tant que

si t

1

[mil] = cherche

alors

trouve

vrai

rang

mil

sinon

trouve

faux

finsi

fin

XII.

Les méthodes de tri usuelles

a.

Tri par insertion

i.

Principe

18 5 12 17 14 31 8

1

2 3

4

5

6

7

Comparer un élément au suivant de la liste si cet élément à une valeur inférieur, il reste en

place sinon il est échangé avec celui qui est de valeur inférieur, il s’agit donc pour chaque

élément du tableau de lui ménager une petite place parmi ceux qui sont déjà trié en décalant

vers le haut ceux qui sont plus grand que trié.

ii.

Algorithme

procédure tri insère (tab [], n)

réf TIND tab [1..n]

TIND correspond à un type indéterminé

valeur entier n

var locales

entier i,j

TIND temp

logique fin

début

i

2

tant que i <= n

faire

temp

tab [i]

j

i - 1

fin

faux

(29)

A.BENHARI 29

tant que (j > 0) et (fin = faux)

faire

si temp < tab [j]

alors

tab [j+1]

tab [j]

j

j – 1

sinon

fin

vrai

fin

fin tant que

tab [j+1]

temp

i

i+1

fin tant que

fin

b.

Tri par sélection

i.

Principe

A chaque itération, on choisi le plue petit élément parmi ceux qu’il reste à trier et on le met à

sa place.

ii.

Algorithme

procédure trisélection (tab [], n)

ref TIND tab [1..n]

val entier n

var locales

TIND petit

entier i, ipetit, j

début

i

1

tant que i < n

faire

ipetit

i

petit

tab [ipetit]

j

i+1

tant que j <= n

faire

si tab [j] < petit

alors

ipetit

j

petit

tab [ipetit]

finsi

j

j+1

fintantque

tab [ipetit]

tab [i]

tab [i]

petit

i

i+1

fintantque

fin

(30)

A.BENHARI 30

iii.

Remarque

Cette méthode conduit à peu de décalage. Elle est pourtant moins rapide que la précédente.

c.

Le tribulle

i.

Principe

On parcoure le tableau autant de fois qu’il le faut en comparant les éléments qui se suivent et

en les échangeant s’ils ne sont pas dans le bonne ordre. A chaque passage, on peut enlever 1 à

n puisque l’on trouve le dernier du tableau à trier.

ii.

Algorithme

procédure triballe (tab [], n)

ref TIND tab [1..n]

val entier n

var locales

logique fin

entier i

TIND petit

début

fin

faux

tant que fin = faux

faire

fin

vrai

i

1

tant que i < n

faire

si tab [i] > tab [i+1]

alors

petit

tab [i+1]

tab [i+1]

tab [i]

tab [i]

petit

fin

faux

finsi

i

i+1

fin tant que

n

n –1

fin tant que

fin

iii.

Commentaire

L’un des plus mauvais trie si les données sont très dispersées par contre, il peut très bien

convenir pour remettre en ordre des données peu triés.

d.

Le tri de shell

(31)

A.BENHARI 31

Pour limiter les déplacements , on choisi de comparer des éléments du tableau dans des

parties de tableau. On choisi au départ des parties d’un pas égale à la moitié de la taille du

tableau, chaque éléments de la première moitié est comparé à un élément de la seconde. S’il

ne sont pas dans le bonne ordre, ils sont échangé puis on diminue le pas en continuant à

comparer des éléments dont la distance est égale au pas. De cette façon, les éléments traités

sont d’abord des sauts important puis de plus en plus petit jusqu’à ce que le pas soit égale à 1.

ii.

Algorithme

h

n/2

tant que h >=1

faire

fin

vrai

i

1

tant que i <= n-h

faire

si tab [i] > tab [i+h]

alors

petit

tab [i+h]

tab [i+h]

tab [i]

tab [i]

petit

fin

faux

finsi

i

i+1

fin tant que

si fin = vrai

alors

h

h/2

fin si

fintantque

iii.

Remarque

Méthode plus efficace que la précédente dans les cas d’une grande dispersion.

e.

Tri de shell-Metzner

i.

Principe

Même principe que pour le shell, au lieu d’ « utiliser », le triballe, on choisi le tri par insertion

( i+1 changé par i +h).

ii.

Algorithme

h

n/2

tant que h>=1

faire

i

h+1

tant que i<=n

faire

petit

a[i]

j

i-h

(32)

A.BENHARI 32

faire

a[j+h]

a[j]

j

j-h

fin tant

i

i+1

fin tant

h

h/2

fin tant

iii.

Remarque

Tri réputé plus rapide que tous les précédant

f.

Tri par vecteur d’indice

i.

Principe

Méthode ne manipulant pas directement les éléments du tableau mais utilisation d’un vecteur

d’indice qui joue le rôle de pointeur

Ex :

Avant tri

Tab

50 2 25 -30 45 1

1

2

3

4

5

6

Indice

1

2

3

4

5

6

1

2

3

4

5

6

Après tri

Tab

50 2 25 -30 45 1

1

2

3

4

5

6

Indice

4

6

2

3

5

1

1

2

3

4

5

6

Résultat : -30, 1, 2, 25, 45, 50

ii.

Algorithme

(Avec tri par sélection)

ideb

1

tant que ieb<n

faire

imin

ideb

k

ideb +1

tant que k<=n

faire

si t[indice[k]] < t[indice[imin]]

alors

imin

k

(33)

A.BENHARI 33

aux

indice [min]

indice [imin]

indice [ideb]

indice [ideb]

aux

finsi

k

k+1

fin tant

ideb

ideb +1

fin tant

iii.

Remarque

Cette méthode est très intéressante pour manipuler des fichiers de grande taille, on peut donc

les trier sans déplacer l’ordonnée.

g.

Tri par monotonie

i.

Principe

On part du constat que dans toute suite de nombre entier trié au hasard, on a toujours un

certain nombre d’entre eux trié naturellement.

On appelle monotonie, une suite de nombre naturellement trié ?

Exemple :

ii.

Algorithme

procedure separation (tab1[], tab2[], tab3[], i1,i2, i3)

ref TIND tab1 [1..i1], tab2 [1..i2], tab3 [1..i3]

ref entier i2, i3

val entier i1

var locales

entier ecrit, i

début

ecrit

2

i

1

i2

1

(34)

A.BENHARI 34

i3

0

tab2[i2]

tab1[1]

tant que i <i1

faire

si ecrit = 2

alors

si tab1[i] < tab1[i+1]

alors

ecrit

2

i2

i2+1

tab2[i2]

tab1[i]

sinon

ecrit

3

i3

i3+1

tab3[i3]

tab1[i]

finsi

sinon

si tab1[i] < tab1[i+1]

alors

ecrit

3

i3

i3+1

tab3[i3]

tab1[i]

sinon

ecrit

2

i2

i2+1

tab2[i2]

tab1[i]

finsi

finsi

i

i+1

fintant

fin

procedure fusion (tab1[], tab2[], tab3[], i1,i2, i3)

ref TIND tab1 [1..i1], tab2 [1..i2], tab3 [1..i3]

ref entier i2, i3

val entier i1

var locales

entier I, j, k

début

i

1

j

1

k

1

tant que j <= i2 ou k <= i3

faire

si (tab2[j] < tab 3 [k]) et j <= i2

alors

tab1[i]

tab2[j]

j

j+1

sinon

(35)

A.BENHARI 35

si k <= i3

alors

tab1[i]

tab3[k]

k

k+1

finsi

finsi

i

i+1

fintant

fin

algo trimonotonie ()

var locales

entier i1, i2, i3

TIND t1[1..i1], t2[1..i2], t3[1..i3]

début

i3

1

tant que i3 <> 0

faire

séparation (t1[], t2[], t3[], i1, i2, i3)

si i3 <> 0

alors

fusion (t1[], t2[], t3[], i1, i2, i3)

finsi

fintant

fin

XIII.

La récursivité

a.

Définition

On appelle fonction récursive une procédure ou une fonction qui s’appelle elle même.

Fonction entier fn(a)

Si condition d’arrêt

-

-

-

retourne (fn(a))

fin

Cette approche permet de simplifier l’écriture de certain programme comme les listes chaînés

et les arbres.

Elle n’est pas souhaitable pour tout les programmes

Elle n’est jamais la meilleur solution du point de vue temps de traitement et de la place

occupé en mémoire.

Dès la construction de l’algorithme, il faut prévoir une action de fin d’appel (pour ne pas voir

le programme bouclé indéfiniment).

b.

Principe

Ex1 : soit calculer la factoriel d’un nombre.

5x4x3x2x1 = 1200

(36)

A.BENHARI 36

à 1 instant t

n ! = (n-1) ! * n

0 !=1

fonction entier facto (n)

val entier n

début

si n=0

alors

retoune (1)

sinon

retourne (facto(n-1)*n)

finsi

fin

algo factorielle ()

var locales

entier n

début

afficher (« Quelle factorielle ? »)

saisir (n)

afficher (« La valeur est »,facto(n))

fin

En C++

int facto (int n)

{

if (n==0)

return (1)

else

return (facto (n-1)*n)

endif

}

Ex 2: soit la somme des n premiers nombres entiers

fonction entier somme (n)

val entier n

début

si n = 0

alors

retoune0

sinon

retourne (somme (n-1) +n)

finsi

fin

(37)

A.BENHARI 37

Ex 3 : écrire une procédure récursive qui affiche tous les éléments d’un tableau d’entier dans

l’ordre croissant de leur indice.

procedure ecrivect (V[], n, i)

val entier V[i..n]

val entier i,n

début

si i <= n

alors

affiche (V[i])

ecrivect (V[], n, i+1)

finsi

fin

XIV.

Les fichiers

a.

Définition du fichier

On appelle fichier un ensemble de donné stocker sur un support externe (exp : diskette, CD,

DVD, c’est à dire autre que la RAM).

Fichier binaire et texte intéresse l’algo (surtout binaire).

b.

Notion d’enregistrement

Média = disque dur, trieur

On appelle enregistrement un ensemble de donnée sur un sujet déterminé. Un enregistrement

est décrit en informatique par une structure

Ex :

RE étudiant = {numetu, nom, moyenne}

types struct

entier numetu

chaine (30) nom

reel moyenne

fstruct ETU

On met en majuscule les structures pour les différencier des autres telque les variables.

A chaque fois que l’on veut identifier un fichier on doit définir la structure de ce fichier

Cette structure est généralement déclaré en début de programme et les caractéristiques des

fichiers dans les variables globales.

(38)

A.BENHARI 38

Transfert logique

En mémoire centrale, 3 zones de travail ou BUFFERS qui réalise les entrée, sortie et travail.

c.

Déclaration des fichiers en algorithme

Pour éviter les problèmes de recopie, nous déclarons les types de fichiers au niveau global

EX : Soit à déclarer un fichier client qui contient un numclient 1 nom, 1 adresse, 1 solde de

compte.

types

types struct

entier numroclient

chaine (30) nom

chaine (80) adresse

reel solde

fstruct CLIENT

Après déclaration des bibliothèque (#iostream.h)

var globale

CLIENT ennrcli /*déclaration d’un buffer*/

FICHIER (client) ficli /*déclaration d’un fichier construit sur la structure CLIENT*/

(39)

A.BENHARI 39

d.

Instruction de manipulation des fichiers

-

Ouverture

-

Lecture/ écriture/ suppression

i.

Ouverture, fermeture

1.

Ouverture

OUVRE (nom_fichier_logique, « nom-fichier_physique », mode_d’ouverture)

nom_fichier_logique : nom pour le programme.

nom-fichier_physique : nom connu pour le système d’exploitation.

mode_d’ouverture :

-

lecture

-

écriture

-

Mise à Jour (MAJ) {lecture/écriture}

-

Extension {après fin de fichier}

Fonction :

-

En ouverture : vérifier que le fichier existe, réserver ensuite un buffer.

-

Ouverture en écriture : créé le fichier ou l’écraser s’il existe déjà

-

En MAJ : modifier directement chaque enregistrement

-

En extension : on efface la fin de fichier actuelle pour enregistrer des données à la

suite de celle qui existe déjà.

En algo, on peut utiliser une primitive (fonction) système qui est fdef (fin de fichier ;

fdef(nom de fichier))

2.

Fermeture

fermer (nom de fichier logique)

Libère le buffer créé à l’ouverture en écriture, enregistrer sur le disque le dernier contenu du

tampon.

ii.

Lecture, écriture, suppression

Lecture

lire (nom fichier logique, nom du buffer)

Ecriture

ecrire (nom fichier logique, nom du buffer)

Remarque :

Encli.nom

donnée du buffer toujours nommé par le présence du nom du buffer avant le

nom de la donnée séparé d’un point.

(40)

A.BENHARI 40

e.

Application sur les fichiers séquentiels

i.

Soit imprimer le contenu d’un fichier sur

imprimante

Fichier physique : Fiphy

Fichier logique : fientr

types

type struct

chaine (25) nom

entier nucli

fstruct CLIENT

var globales

CLIENT enrcli

FICHIER (CLIENT) fientr

chaine (25) snom

entier snucli

algo lecseq ()

début

ouvre (fientr, « Fiphy », lecture)

lire (fientr, enrcli)

tant que non fdef (fientr)

faire

snom

enrcli.nom

snucli

enrcli.nucli

imprimer (« » , snom , « », snucli)

fintant

ferme (fientr)

fin

ii.

Remarque

Le fichier d’entré ne doit pas être créé à partir de l’éditeur de texte mais à l’aide d’un

programme de création.

(41)

A.BENHARI 41

iii.

Création d’un fichier séquentiel

types

type struct

chaine (25) nom

entier nucli

fstruct CLIENT

var globales

CLIENT enrcli

FICHIER (CLIENT) fisor

chaine (25) tnom

entier tnucli

algo ecriseq ()

début

ouvre (fisor, « Fiphy », ecriture)

afficher (« entrez un nom ou fin »)

saisir (tnom)

tant que tnom <> « fin »

faire

enrcli.nom

tnom

afficher (« entrez un numéro »)

saisir (tnucli)

enrcli.nucli

tnucli

écrire (fisor, enrcli)

afficher (« entrez un nom ou fin »)

saisir (tnom)

fintant

ferme (fisor)

fin

f.

Les fichiers à accès direct

Sachant que les supports externes tel que les disques magnétiques sont adressable, on va les

utiliser pour retrouver directement des données

Remarque : random (ang) = aléatoire ou au hasard

Dans tous les cas il faut créer une correspondance entre une des informations de

l’enregistrement et le rang de stockage de l’enregistrement sur le support externe.

Algorithme de génération automatique d’adresse ou correspondance direct.

Ex : Correspondance direct, rang identifiant externe

(42)

A.BENHARI 42

Exemple = numéro étudiant = rang de stockage sur le disque

i.

Lecture à accès directe

types

type struct

chaine (25) nom

entier nucli

fstruct CLIENT

var globales

CLIENT enrcli

FICHIER (CLIENT) filogcli

chaine (25) snom

entier snucli, rang

algo lecdir ()

début

ouvre (filogcli, « Fiphy », lecture)

afficher (« entrez un numéro de client ou 0 pour fin »)

saisir (rang)

tant que rang <> 0

faire

positionner (filogcli, rang)

lire (filogcli, eurcli)

snom

enrcli.nom

stnucli

enrcli.nucli

afficher (« Nom du client : », snom)

afficher (« Numéro du client : » snucli)

afficher (« entrez un numéro de client ou 0 pour fin »)

saisir (rang)

fintant

ferme (filogcli)

fin

ii.

Création a accès direct

types

type struct

chaine (25) nom

entier nucli

fstruct CLIENT

var globales

CLIENT enrcli

FICHIER (CLIENT) filogcli

chaine (25) tnom

(43)

A.BENHARI 43

algo ecridir ()

début

ouvre (filogcli, « Fiphy », ecriture)

afficher (« entrez un numéro de client ou 0 pour fin »)

saisir (rang)

tant que rang <> 0

faire

afficher (« Entrez nom du client »)

saisir (tnom)

enrcli.nom

tnom

enrcli.nucli

rang

positionner (filogcli, rang)

ecrire (filogcli, enrcli

afficher (« entrez un numéro de client ou 0 pour fin »)

saisir (rang)

fintant

ferme (filogcli)

fin

g.

Les fichiers texte

i.

Définition

Fichier dont les composantes sont des caractères

TEXTE fitext

On la particularité d’être divisé en ligne dont la fin est indiquer par un caractère spéciale en

général ce caractère et le caractère CR (caracter return).

Un fichier texte fait les conversions de formats de données. Les transferts se fond par les

noms de variables et non pas par structure complète. Les entrées sorties standards sont

généralement de ce type (saisir, afficher, imprimer).

Remarque : un fichier texte peut être créé à partir de l’éditeur de texte

ii.

Déclaration d’un fichier texte

var

TEXTE nom_du_fichier_texte (logique)

iii.

Action sur un fichier texte

1.

Ouverture de fichier

ouvre_text (nom_logique, « nom_physique », mode d’ouverture)

2.

Transfert de données

a.

Lecture

lire_text (nom_logique, arg1, arg2 …)

Figure

Figure Erreur ! Il n'y a pas de texte répondant à ce style dans ce document.-1

Références

Documents relatifs

This explains the fact that the macro-cell load is first increasing (see figure 6). At this time instant, SBSs are indeed starting serving users, alleviating some load from the

Sendo assim, o objetivo deste trabalho foi determinar o número mínimo de frutos para dimensionar o tamanho de amostra e determinar os tamanhos de amostras em função dos erros

Si l’on s’intéresse au diplôme (DIPL) on constate que la détention d’un diplôme du secondaire inférieur (SEC INF) entraîne une diminution du taux d’emploi de près de

nées 80 sans qu’il y ait garantie que les meil- leurs candidats sont ceux qui restent. Tout semble simplement question d’ancienneté au terme de statuts tendant aujourd'hui à

Deux enjeux cruciaux de la recherche en éducation sont pointés par le rapport Prost : d’une part, celui du caractère cumulatif des recherches et, donc, de

Les participants à l’étude étaient 12 étudiants de licence STAPS, représentatifs de différents niveaux de performance en gymnastique (niveau débutant à niveau régional

Les différences selon les conditions d'immersion sont importantes et plus marquées que pour la performance au post-test; la moyenne du gain d'apprentissage est de 7.8 points

11. Le Roman de Tristan en prose, sous la dir. Le récit de la mort de Tristan se trouve au t.. inscrits de façon homogène. On remarque toutefois que Marc, qui lève le bras pour