64
Prof : Nsiri Riadh 4 ème Science de l’informatique LES ENREGISTREMENTS ET LES FICHIERS Au terme de ce chapitre, l’élève sera capable : Déclarer des objets de type composés : Enregistrements et Fichiers Résoudre des problèmes faisant appel à ces structures . Page 1 Object Chapitre 1 Algorithmique

Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

LES ENREGISTREMENTS ET LES FICHIERS

Au terme de ce chapitre, l’élève sera capable :

Déclarer des objets de type composés : Enregistrements et Fichiers

Résoudre des problèmes faisant appel à ces structures.

Page 1

Chapitre 1

Algorithm

ique Objectifs

Page 2: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

I. les Enregistrements :

1. Introduction :

Activité :

Une entreprise veut gérer les informations concernant ses employés (matricule, nom, prénom, salaire, adresse…) sachant qu’on a 100 employés.1-Donnez la structure de données nécessaire pour les objets à déclarés,2- Est-ce qu’on peut regrouper ces informations dans une seule structure.

Parmi les types structurés, nous avons déjà vu le type tableau qui nous permet de réunir au sein d’une même structure des éléments de même type. Donc on peut utiliser ici 5 tableaux pour chaque information concernant l’employé

Donc le type tableau ne permet pas de regrouper des informations de type différent

La solution est d’utilisée une nouvelle structure appelée : enregistrement (Record en Pascal)

2. Définition :

Un enregistrement est une structure de données composée, définie par le programmeur qui permet de grouper (dans une même case mémoire) un nombre fini de données, simples et/ou composées de même ou de différents types.

==> notion de champUn enregistrement est un ensemble de valeurs se trouvant chacune dans une variable appelée CHAMP.Un champ est identifié par un nom, contenant une valeur de type prédéfini (entier, caractère….) ou de nouveau type défini par le programmeur.

3. Déclaration :

Au niveau de l’analyse :

Page 2

Page 3: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Au niveau de pascal :

TYPE NomDeType = Record Champ 1 : type ; Champ 2 : type ; . . Champ N : type ; End ;VAR NomDeVar : NomDeType ;

4- Exemples :

Reprenons l’exemple de l’activité introductive :au niveau de l’analyse :

TDNT TDO

TypeEmployer =Enregistrement Matricule: Entier Nom: Chaine[10] Prénom: Chaine[10] Adresse: chaine[30]Fin Employer

au niveau du Pascal:

TYPE employer = Record Matricule: integer ; Nom: String [10] ; Prenom: string [10] Adresse: string [30] End ;VAR E : Employer ;

Page 3

Objet Type/nature

E Employer

Page 4: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

5- Exercice 1 :

Déclarer une variable el de type élèves, celui-ci est un enregistrement avec les champs suivants:Nom : chaineNote: tableau de 3 réelsMoyenne: réel

6- Accès à un champ d’enregistrement :

On a deux méthodes :1- Accès en utilisant le point2- Accès en utilisant l’instruction Avec (With)

Exemple 1:

Soit P une variable de type Personne qui est un enregistrement contenant 2 champs : nom et Prénom on veut saisir et afficher cette variable

Saisie : 1 ère Méthode :

Analyse :

P. Nom = Donnée(‘’Nom=‘’)

P.Prenom = Donnée(‘’Prénom=‘’)

Algorithme

Ecrire(‘’nom=‘’), Lire (P.Nom)

Ecrire(‘’Prénom=‘’), Lire (P.Prenom)

Pascal

Write(‘Nom=‘); Read(P.Nom);

Write(‘Prénom=‘) ; Read(P.Prenom);

Page 4

TypeTabnote= Tableau de 3 réeleleves =Enregistrement Nom: Chaine note: tabnote moyenne: réelFin eleves

Objet Type/nature

el eleves

Page 5: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Saisie : 2 ème Méthode :

Analyse :

Avec P Faire

Nom = Donnée(‘’Nom=‘’)

Prenom = Donnée(‘’Prénom=‘’)

Fin Avec

Algorithme

Avec P Faire

Ecrire(‘’nom=‘’), Lire (Nom)

Ecrire(‘’Prénom=‘’), Lire (Prenom)

Fin Avec

Pascal

With P Do BeginWrite(‘Nom=‘); Read(Nom);Write(‘Prénom=‘) ; Read(Prenom);End;

7- Tableau d’enregistrement

Un enregistrement n’est pas un tableau et d’après nos pré requis un tableau est un ensemble de case de même type contenant chacune une valeur, donc on peut avoir un tableau d’enregistrement.

Reprenons notre exercice :

Si la variable el est un tableau d’élèves sa déclaration devient

Type

Tabnote= Tableau de 3 réeleleves =Enregistrement Nom: Chaine note: tabnote moyenne: réel Fin elevesTabeleve = Tableau de n eleves

Page 5

Objet Type/nature

el Tabeleleves

Page 6: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Exemple2 Soit P une variable de type Personne qui est un enregistrement contenant deux

champs Nom et prénom. Pour sauvegarder les informations de n personnes de types P chacune on doit

utiliser un vecteur T.

Donc la saisie de notre tableau de n enregistrement P sera :

1 ère méthodeAu niveau de l’analyse

Pour i de 1 à n faire

T[i].Nom= Donnée(‘’Nom=‘’)

T[i].Prenom= Donnée(‘’Prenom=‘’)

Fin pour

Au niveau de l’algorithme

Pour i de 1 à n faire

Ecrire(‘’Nom=‘’), Lire (T[i].Nom)

Ecrire(‘’Prenom=‘’), Lire(T[i].Prenom)

Fin pour

Au niveau du Pascal

For i:= 1 to n Do

Begin

Write(‘Nom=‘); Read(T[i].Nom);

Write(‘Prenom=‘); Read(T[i].Prenom);

End;

2 ème méthodeAu niveau de l’analyse

Pour i de 1 à n faire

AVEC T[i] Faire

Nom= Donnée(‘’Nom=‘’)

Prenom= Donnée(‘’Prenom=‘’)

Fin AVEC

Fin pour

Page 6

Page 7: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Au niveau de l’algorithme

Pour i de 1 à n faire

AVEC T[i] Faire

Ecrire(‘’Nom=‘’), Lire (Nom)

Ecrire(‘’Prenom=‘’), Lire(Prenom)

Fin AVEC

Fin pour

Au niveau du Pascal

For i:= 1 to n DoWith T[i] DO Begin Write(‘Nom=‘); Read(Nom); Write(‘Prenom=‘); Read(Prenom); End;

Remarque :

La lecture et l’écriture d’une valeur d’un enregistrement se font champ par champ.

L’affectation () des valeurs d’un enregistrement dans une variable de même type peut être réalisée champ par champ ou entièrement ?

Exemple : si a et b deux enregistrement de même type l’instruction suivante est possible abOn ne peut pas comparer deux variables de types enregistrements or on peut comparer les champs.

Application :

Soit la structure Personne schématisée par le nom (chaîne de 30 caractères maximum), le numéro de téléphone (10 caractères maximum), le numéro de carte bancaire (entier non signé).

Ecrire un programme qui permet l'enregistrement de 100 personnes sous forme tabulaire.

Page 7

Page 8: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Exemples d’utilisation d’enregistrements

Page 8

program annuaire;

uses wincrt;

Type

Personne = record

nom: string[30];

telephone: string[10];

nCarte: word;

end;

Tab: array[1..10] of Personne;

Var i: integer; T:Tab;

Procedure remplir(Var T:Tab);

Begin

For i:=1 to 10 do

begin

Write ('Nom : ');

readln(T[i].nom);

write('Numero de telephone : '); readln(T[i].telephone);

write('Numero de carte banquaire : ');

readln(T[i].nCarte);

writeln;

end;

BEGIN

Saisie(T);

writeln('Opération de lecture terminee!!!');

end.

Program portrait;

Type taille_t =50..250;

Couleurs_t=(Brun,Noir,Roux,Bleu,Marron,Vert);

Cheveux_t=Brun..Roux;

Yeux_t=Bleu..Vert;

Personne= Record

taille:taille_t;

cheveux:cheveux_t;

Yeux:yeux_t;

End;

Var ali, sami : personne;

Begin

ali.taille:=180; ali.cheveux:=brun; ali.yeux:=Noir;

Sami := ali;

End.

Il est possible d’affecter une variable enregistrement dans une autre à condition qu’elles

aient la même structure

Page 9: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Exemple2 :

Page 9

Type date = Record

Jour_s:(lun, mar, mer, jeu, ven, sam, dim);

Jour: 1..31;

Mois:1..12;

Annee:0..99;

End;

Employer =record

Nom: string[20];

prenom: string;

Date_embauche:date;

End;

Var e1, e2:employer;

- e1.date_embauche.annee : désigne l’année d’embauche de l’enregistrement e1

- e1.date_embauche : désigne la date d’embauche de l’enregistrement e1

Page 10: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

II- Les Fichiers

1- Introduction :

À la fin de l’exécution d’un programme toutes les informations saisies et stockées dans la mémoire centrales seront perdues, pour cela les langages de programmation nous permettent de stocker les données saisies dans des fichiers sur des supports de stockage

2- Définition :

Un fichier est une structure de données de même types nommées et enregistrer sur une mémoire de masse (DD, flash disque dur, CD, ….)

3- Types de fichiers :

Essentiellement on distingue deux types de fichiers :

Fichiers texte : constitués par des lignes de types chaines de caractères.

Fichiers Typé : basé sur une structure de donnée (fichiers de réel, fichier d’enregistrements…)

4- Organisation :

Les blocs des données formant un fichier sont enregistrés les uns à la suite des autres de façon linéaire.

Il existe plusieurs types d’organisation des fichiers, nous allons voir essentiellement deux grands types :

Organisation séquentielle Organisation relative (dite aussi directe).

5- Types d’accès :

On distingue deux types d’accès à un fichier :

- Accès séquentiel- Accès direct

Activité 1 :

Nous disposant de 4 disques de couleurs différentes et un support où nous allons empiler un à un les disques (Blanc – Bleu –Rouge).

Nous voulons accéder au disque rouge. Nous ne pouvant pas le faire directement car il se trouve sous le disque bleu et ce dernier sous le disque blanc.

Page 10

Page 11: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Pour accéder à un disque dans le support, il faut retirer tous les disques placés avant lui. Ce type d’accès est appelé séquentiel.

Activité 2 :Nous disposant maintenant de 4 disques de couleurs différentes et 4 supports distincts, nous allons placer chaque disque sur un support.

Nous voulons accéder au disque rouge . Pour cela il n’est pas nécessaire de retirer le disque blanc puis le disque bleu. Nous accédons directement au disque rouge ==> Cet accès s’appelle accès direct (relatif)

a- Les Fichiers à accès séquentiels :

Un fichier à accès séquentiel (fichier séquentiel) est une suite de valeurs ou d’enregistrements disposés les uns à la suite des autres de façon que la lecture d’une valeur ne puisse se faire qu’après la lecture des valeurs précédentes.

Déclaration

En algorithmique

===>T.D.N.O

Avec types_composants représente le type des composants du fichier, ces composants peuvent être de même types exemple : Entier, réel, enregistrement…

===>T.D.O

Objet T/N Rôle

Nom_logique Nom_Nouveautype Fichier pour …..

……

Page 11

Type

Nom_NouveauType = Fichier de types_composants

Page 12: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

En Pascal

Type nom_NouveauType = File of type_composants

Var nom_logique : nom_NouveauType;

Exemple1 :

Nous voulons saisir et enregistrer les noms des élèves d’une classe dans un fichier. Donner la déclaration algorithmique et en Pascal?

En algorithmique

===>T.D.N.O

Type

eleve = Fichier de chaîne de caractères

Objet T/N Rôle

Nom eleve Fichier pour les noms des élèves

En Pascal

Type eleve = File of string;

Var nom : eleve;

Exemple2 :

Nous voulons saisir et enregistrer la fiche des élèves d’une même classe dans un fichier avec fiche contient les informations suivantes :

Nom & prénom Date de naissance Sexe Note1, Note2, Note3

Donner la déclaration algorithmique et en Pascal ?

Page 12

Page 13: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Type

Fiche = enregistrementNom_prenom : chaîne [40]Date_nai : chaîneSexe: caractèreN1, N2, N3 :RéelFin FicheClasse = Fichier de Fiche

Objet T/N Rôle

eleve classe Variable pour l’utilisation du fichier

classe

===== Traitement sur les fichiers :

1ère

étape : Association (Assignation)

Pour un fichier, il existe deux noms :

Nom_interne : ou bien nom_logique : utilisé par le programme. Nom_externe : ou bien nom_physique : utilisé par le système d’exploitation.

Avant d’utiliser un fichier il faut associer son nom logique à son nom physique.

Syntaxe

En Analyse et Algorithmique En Pascal

Associer (nom_logique, nom_physique) Assign (nom_logique, nom_physique);

Page 13

Page 14: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

En Analyse et Algorithmique En Pascal

Associer (F, ‘’c:\cours.dat’’) Assign (F, ‘c:\cours.dat’);Exemple 1

Exemple 2

Const NomFich = ‘c:\4si\exemples,dat’ ; ………Assign ( F, NomFich)

Exemple 3 

Var NomFich : string; ………Write(‘sur quel fichier on va travailler’);Readln(NomFich);Assign ( F, NomFich)

2ème étape : Ouverture

L’instruction « recréer » permet d’ouvrir un fichier et d’effacer son contenu, si le fichier n’existe pas, il sera créé.

En Algorithmique En Pascal

Recréer (nom_logique) Rewrite (nom_logique);

L’instruction « ouvrir » permet d’ouvrir un fichier existant et de positionner le pointeur au début du fichier pour pouvoir lire ou écrire à partir du début du fichier.

Page 14

Page 15: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

En Algorithmique En Pascal

Ouvrir (nom_logique) Reset (nom_logique);

L’instruction « Ecrire » permet d’écrire ou de modifier une valeur ou un enregistrement dans un fichier.

En Algorithmique En Pascal

Ecrire (nom_logique, variable) Write (nom_logique, Variable);

L’instruction « Lire » permet de lire une valeur ou un enregistrement dans un fichier (read et non readln bien sur pour les fichiers typés) car cette opération de lecture engendre systématiquement le déplacement du pointeur vers l’élément successeur

En Algorithmique En Pascal

Lire (nom_logique, variable) Read (nom_logique, Variable);

L’instruction « Fermer » permet de fermer le ou les fichier (s) ouvert (s) à la fin du traitement

En Algorithmique En Pascal

Fermer (nom_logique) Close (nom_logique);

Page 15

3ème

étape : Écriture dans un fichier

4ème

étape : Lecture à partir d’un fichier

5ème

étape : Fermeture d’un fichier

Étape intermédiaire : Test de fin de fichier

Page 16: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Dans un programme on peut tester à tout moment si nous avons atteint la fin d’un fichier par l’instruction «  Fin_Fichier  »

En Algorithmique En Pascal

Fin_fichier (nom_logique) EOF (nom_logique);

Remarque :

La première fois, le fichier doit être créé avec un appel à Rewrite, qui est la seule méthode pour créer un fichier vide, un appel à reset produira une erreur d’exécution puisque le fichier n’existe pas sur le disque, par contre dès la seconde exécution il faut impérativement faire appel à Reset pour ouvrir simplement le fichier sans détruire le contenu

Toutes les opérations d’entrée/sortie font automatiquement l’objet d’un contrôle d’erreur, si une erreur survient le programme se termine et affiche un message d’erreur, ce contrôle automatique peut être désactivé et réactiver en utilisant les directives de compilation {$I-} et {$I+}.

Càd lorsque une série d’instruction est précédée par {$I-}, une erreur d’E/S ne cause pas l’arrêt du programme mais suspend toute autre opération d’E/S jusqu’à ce la fonction standard Ioresult sera appelée. Ce qui permet de tenter sans risque plusieurs opérations.

La valeur 0 retournée par Ioresult signifie que toute est bien passé, toute autre valeur signifie qu'une erreur est survenue pendant la dernière opération de l’E\S.

Exemple 1 :

Lorsqu’on déclare une variable de type entier et on saisit au clavier des caractères alphabétiques dans cette variable le programme s’arrête, pour ne pas provoquer l’arrêt du programme on utilise la directive de compilation {$I-} ,

Exemple2 :

Page 16

Gestion d’erreur :

Page 17: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

- Pour savoir si un fichier est utilisé pour la 1 ère fois par un programme, on désactive les erreurs d’E\S puis on essaie reset, s’il y a une erreur càd le fichier n’existait pas et l’on créer avec rewrite

Assign(F, nomF);

{$I-}Reset(F);IF Ioresult <>0 then Rewrite(F); (création) {$I+}Application 1 :

Remplir aléatoirement un tableau T de n lettres majuscules (1<=n<=50) puis le sauvegarder dans un fichier « F ».Analyser le programme et en déduire les algorithmes ainsi que le programme pascal correspondant.

Remarque :

- Il est interdit de lire ou d’écrire une partie d’un enregistrement dans un fichier d’enregistrements.

Exemple : si on a un enregistrement fiche contenant les noms et les prénoms sauvegarder dans un fichier Ffiche.

La séquence suivante n’est pas valide :

Var F : Ffiche ; P : fiche ;

……….Read (F, P.nom) ;

Si on a besoin de consulter les noms d’une personne, il faut lire l’intégralité de l’enregistrement dans une variable de type approprié puis on extraire le nom

Exemple : on veut afficher les noms inscrits dans les enregistrements d’un fichier

While not(EOF(F)) DOBeginRead(F, p) ;Writeln(p.nom) ;End ;

Application 2 :

Page 17

Page 18: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Un produit est caractérisé par les informations suivantes : Référence (10 caractères)Nom (15 caractères) PU Qte

Ecrire l’analyse d’un programme modulaire permettant de:- Saisir autant de produit jusqu’à que l’utilisateur décide de s’arrêter puis les

sauvegardés dans un fichier nommé ‘’fp.dat’’,- Afficher le nombre des produits dont le PU <= 10,000DT

Analyse du PP

Résultat = Fermer (fp1) Ecrire (FN nbproduit(fp1) ) Proc saisie (fp1) Proc Création (fp1)

TypeEnregistrement = ProduitRéférence : chaine [10]Nom : chaine [15] PU : réelQte : entierFin produitFprod : fichier de produit

Objet Type/NatureFp1NbproduitSaisiecréation

FprodFonctionProcédureProcédure

Analyse de la procédure création

DEF PROC création (var fp1 : fprod)Résultat= fp1Fp1 = []Recréer (fp1)Associer (fp1, ‘’c:\fp.dat’’)Fin création

Analyse de la procédure saisie

Page 18

Page 19: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

DEF PROC saisie (var fp1 : fprod)Résultat= fp1Fp1 = []Répéter Avec P Faire Référence = Donnée Nom = Donnée PU= Donnée Qte= DonnéeFin avecEcrire (fp1, p)Ecrire (‘’voulez – vous saisir un nouveau produit (O/N’’)Rep = donnée Jusqu’à (majus (rep) = N)Fin saisie

Objet Type/NaturePrep

Produitcaractère

Analyse de la fonction nbproduit

DEF FN nbproduit (var fp1 : fprod) :octetRésultat= nbproduitnbproduit = nbnb= [ouvrir (fp1), nb 0]ouvrir (fp1) Tant que non fin_Fichier(fp1) Faire Lire (fp1,p) Si p.pu < = 10 alors nb nb +1 Fin si Fin Tant queFin nbproduit

Objet Type/NaturePnb

Produitoctet

b- Les fichiers à accès direct :

Page 19

Page 20: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Un fichier à accès direct si on peut accéder directement à chacun de ces éléments. Cette opération nécessite la procédure « Pointer (seek en Pascal) »

Syntaxe :

En Algorithmique En Pascal

Pointer (nom_logique, numero) seek (nom_logique, numero);

Remarque

Il faut faire attention de ne pas se positionner (ou demander un élément) après la fin physique du fichier. Ce contrôle de dépassement doit être fait par le programmeur grâce à la fonction « Taille _fichier ». Donc il faut que la position « numéro » doit être entre 0 et taille_fichier

Syntaxe

En Algorithmique En Pascal

Taille_fichier (nom_logique) Filesize (nom_logique);

Autres fonctions et procédures prédéfinies

Ces fonctions sont valables aussi bien pour l’accès séquentiel que pour l’accès direct.

Page 20

Page 21: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

En algo En Pascal Rôle

c- Les fichiers textes :

Un fichier texte est un fichier dont le contenu représente uniquement une suite de caractères.

Page 21

Position_fichier (nom_logique)

FilePos (nom_logique); Retourne la position de l’élément sur lequel se trouve le pointeur du fichier. La position est un entier qui vaut 0 pour le premier élément

Effacer (nom_logique) Erase (nom_logique);

Suppression d’un fichier (appliquer sur un fichier ouvert ou fermer)

Renommer (Ancien nom_logique, nouveau noml_ogique)

Rename (Ancien nom_logique, nouveau noml_ogique);

Procédure qui change le nom d’un fichier

Tronquer (nom_logique)Truncate (nom_logique);

Couper le fichier à la position courante du fichier. Tout ce qui est au-delà du pointeur est alors perdu

Page 22: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Déclaration

===>T.D.O

Objet T/N Rôle

Nom_logique Texte Fichier Texte…

En Pascal

Var Nom_logique : Text;

En algo En Pascal Rôle

Ecriture d’une ligne et retour chariot

Page 22

Fin_ligne (nom_logique)

EOLn (nom_logique); Qui retourne vrai si l’on se trouve

sur le caractère (retour chario ) et faux dans le cas contraire

Chercher_fin_ ligne (nom_logique)

SeekEOLn (nom_logique);

SeekEOLn (nom_logique);

SeekEOf(nom_logique);

Ajouter (nom_logique)

Ajouter (nom_logique)

Lire_nl(nom_logique, V)Readln(nom_logique,V);

Ecrire_nl(nom_logique, V)

Writeln(nom_logique, V);

Fonction identique à fin ligne(EOLN) mais supprimant les espaces et les caractères tabulation avant d’effectuer le test.Fonction identique à fin fichier (EOF) mais supprimant les espaces et les caractères tabulation avant d’effectuer le test.Procédure qui ouvre un fichier et

positionne son pointeur à la fin de ce dernier. Seul l’ajout d’éléments est possible Procédure qui permet de lire une ligne et mettre le curseur

Page 23: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

0Lire(T[ 1 ]) i 1 : Lire (T[ i ])

Lire (T[ 2 ]) i 2 : Lire (T[ i ])

Lire (T[ 3 ]) i 3 : Lire (T[ i ])

Lire (T[ 4 ]) i 4 : Lire (T[ i ])

Observation   : D’après cette solution on constate qu’il y a un bloc d’instruction qui se répète. si on veut

charger un tableau de 1000 case l’algorithme devient très long. Pour cela on va utiliser

une structure de contrôle permettant de remédier ce problème. (la boucle pour).

1) Définition

Un résultat a une définition itérative complète s’il est la répétition d’une suite d’instructions un nombre fini de fois connu à l’avance.

Reprenons l’activité précédente :

La solution devient :

Résultat = Remplissage

T [ ] = pour i de 1 à 4 Faire

T [ i ] = donnée ("donner une valeur de la case n°" , i )

Fin pour

Page 23

Répétitio

Page 24: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Algorithme :

0) Début remplissage

1) Pour i de 1 à 4 faire

Ecrire ("donner une valeur de la case n°», i )

Lire(T[i])

Fin pour

2) Fin remplissage

2) Syntaxe:

Au niveau de l’analyse Au niveau de l’algorithme

Au niveau du pascal

… [init]pour compteur De Vi àVf Faire

Instruction1 Instruction2 . . InstructionN

Fin pour

… [init]pour compteur De Vi àVf Faire Instruction1 Instruction2 . . InstructionN

Fin pour

… [init] ;For compteur  := Vi TO Vf DO

Begin Instruction1 ; Instruction2 ; . . InstructionN ;

End ;

Remarques :

Après chaque itération le compteur s’incrémente automatiquement de 1. Le nombre de répétition est égal à Vf-Vi+1. Les clauses Begin et End sont obligatoires si on a plusieurs instructions. Si le pas est de (-1) càd Vi >Vf , la syntaxe en pascal devient : For Compteur := Vi

Downto Vf do  Exemple : afficher l’alphabet par ordre décroissant : For lettre := ‘Z’ Downto ‘A’ do

Exemple : Soit la séquence suivante :S :=0P :=1For i := 1 to 3 DoBegin S:=S + I; P :=P* I;End;

Trace d’exécution:

Etat initiale: S=0 et P=1N° i s p

Page 24

Page 25: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

itération1 1 1 12 2 3 23 3 6 6

Application 1 :Ecrire un programme permettant de calculer et d’afficher la somme de n premiers termes de la suite définie par : Un= 1+3+5+……………..+ (2n-1) avec n un entier positif.

Résultat : Ecrire (‘’ la somme est’’, U)U = [U0] Pour i de 1 à n Faire U U + (2*i -1)Fin pourN= Donnée (‘’donner le nombre de terme’’)

Application2   : Ecrire un algorithme puis u programme pascal permettant de trouver et d’afficher le plus grand élément d’un vecteur T de n entiers.

Résultat = écrire (max)

Max = [ max T [ 1 ] ]

Pour i de 2 à n Faire

Si (T [ i ] > max ) alors max T [ i ]

Fin si

Fin pour

T =[ ] pour i de 1 à n faire

T[i] = Donnée

Fin pour

Page 25

Chapitre 2

Page 26: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

STRUCTURES DE CONTRÔLES II

Au terme de ce chapitre, l’élève sera capable :

Distinguer entre les structures de contrôle itérative. De résoudre des programmes faisant appel à ces structures.

I- Structures itératives à condition d’arrêt :

Activité 1 : Soit l’exemple suivant de la vie courante :

Page 26

Objectifs

Page 27: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Un médecin consulte ses patients de 9h à 13h.Combien de consultation à faire par ce médecin ?Il peut consulter 1, 2, 3, …… patients comme il peut ne consulter aucun patient. Donc le nombre de consultation est inconnu.

Constations : On constate qu’on a une répétition d’action (le fait de consulter) et le nombre de répétition est inconnu.

Quand est ce que le médecin arrêt –il ses consultations.Le médecin termine ses consultations à 13h. Donc on a une condition d’arrêt.

Récapitulations : Dans cet exemple, il y a répétition d’action de consultation un nombre inconnu de fois et les consultations seront arrêtées lorsqu’une condition est vérifiée.

Est-ce qu’on peut utiliser la boucle pour, pour savoir le nombre de patient ?Pourquoi ? (Nbre de répétition n’est pas connu d’avance)Pour cela on va introduire la notion des structures itératives à condition d’arrêt.En effet il existe de formulation de structures itératives à condition d’arrêt. Répéter …jusqu’à et Tant que

1- 1ère forme : Répéter……….jusqu’à :

Activité 2 : Ecrire une analyse algorithme, programme pascal qui permet de calculer et

d’afficher la moyenne trimestrielle d’un élèves pour une matière donnée, les notes doivent

être compris entre 0 et 20.

Résultat = écrire (mt)

mt = [ ] mt (dc + 2* ds )/3

Répéter

dc = donnée (" dc =" )

jusqu’à ( dc>= 20) et (dc<= 20 )

Répéter

ds = donnée ("ds = " )

jusqu’à (ds>= 20) et (ds<= 20 )

a- syntaxe :

En analyse et en algorithme En pascal

Page 27

Page 28: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

[Init]Répéter

Instruction 1Instruction 2…Instruction n

Jusqu'à Condition d’arrêt

[Init];Repeat

Instruction 1 ;Instruction 2 ;…Instruction n ;

Until Condition d’arrêt;

b- Caractéristiques :

On utilise la boucle répéter si le nombre de répétition est inconnu. La répétition est contrôlée par un sujet qui exprime la condition de sortie de la

boucle, ce sujet est évalué après chaque exécution de la séquence s’il est vrai la boucle s’arrête.

Le traitement est exécuté au moins une fois puis la condition est évaluée.

c- Application :

Lancer Turbo Pascal et écrire un programme permettant de calculer la racine carrée d’un entier saisit.

2- 2ème forme : Tant que…….Faire :Activité 3 :

Soit l’algorithme suivant :0) Début exemple1) Lire (n)2) P 1

RépéterP p*nLire (n)Jusqu’à n = 0

3) Ecrire (p)4) Fin exemple

- Que fait cet algorithme.- Est-ce que le traitement dans la boucle répéter sera exécuté si n = 0 dés le départ.

- Cet algorithme permet d’afficher le produit d’une liste de valeur saisie qui se termine par 0 (0 ne fait pas partie du produit).

- Si on va utiliser la boucle répéter le traitement itératif sera au moins exécuté une fois càd même si n=-1 dés le départ on va entrer dans la boucle. Or nous on veut pas que le calcul sera réalisé si la liste est réduite à 0Donc il faut tester la condition avant d’entrer à la boucle.

Pour cela on va utiliser la 2ème forme de structure de contrôle itérative à condition d’arrêt : Tant que…… faire :

0) Début exemple

Page 28

Page 29: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

1) Lire (n)2) P 1

Tant que n< > 0 FaireP p*nLire (n)Fin tant que

3) Ecrire (p)4) Fin exemple

a- syntaxe :

[Init]Tant que non(Condition d’arrêt) faire

Instruction 1Instruction 2…

Instruction nFin Tant que

[Init] while non(Condition d’arrêt) Do Begin

Instruction 1 ;Instruction 2 ;…Instruction n ;

End ;

b- CaractéristiquesLa structure Tant que est utilisée :

- Si le traitement est la répétition d’une suite d’instructions, un nombre de fois, inconnu.- Il y a des circonstances dans lesquelles l’algorithme ne doit pas entrer dans la boucle,

même une fois (la condition est évaluée avant le traitement).- La boucle s’arrête si la condition est fausse.

c- Application :

Ecrire une analyse, un algorithme est un programme pascal permettant de calculer le PGCDDeux entiers strictement positifs en utilisant la méthode de différence.

Le principe de cette méthode est le suivant :PGCD (a,b) = PGCD (a-b, b) si a>b et on pose a=a-bOuPGCD (a,b) = PGCD (a, b-a) si b>a et on pose b=b-aLe calcul s’arrête quand a devient égal à bExemple :PGCD (24, 10) = PGCD (14, 10) = PGCD (4, 10) = PGCD (4, 6) = PGCD (4, 2) = PGCD (2, 2) =2

0) Début PGCD1) Répéter

Ecrire (‘’introduire le premiers entier’’) lire (a) Ecrire (‘’introduire le deuxième entier’’) lire (b)

Page 29

Page 30: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Jusqu’à (a>0) et (b>0)2) Tant que a # b Faire

Si ( a>b) alors aa-b Sinon bb-a Fin si

Fin Tant que

3) Ecrire (‘’le PGCD est’’, a)4) Fin PGCD

Page 30

Page 31: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Page 31

Chapitre 3

Page 32: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

LES SOUS PROGRAMMES

Au terme de ce chapitre, l’élève sera capable :

Décomposer un problème en sous problème élémentaires.

Présenter les solutions sous forme des fonctions et procédures.

I. Introduction :

Page 32

Objectifs

Page 33: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Pour résoudre des problèmes complexe, il souvent préférable de les décomposer en sous problèmes. Ces derniers sont à leur tour décomposés selon le besoin. La décomposition s’arrête aux sous problèmes simples à résoudre. Par la suite, on associe à chaque sous problème un module assurant sa résolution.

II. L’analyse modulaire:

Activité 1 : On se propose de calculer la surface de cette forme géométrique :

Constatation : tache complexe, il n’y a pas de formule directe qui permet de calculer cette surface.Solution : décomposer ce problème en sous problèmes ou modules.

Module pour le calcul de la surface du triangle.Module pour le calcul de la surface du rectangle.Module pour le calcul de la surface de demi-cercle

1. Définition :

L’analyse modulaire consiste à diviser un problème en sous problèmes de difficultés moindres. Ces derniers sont aussi assujettis à cette division jusqu’à ce qu’on arrive à un niveau abordable de difficulté.

2. intérêt de l’analyse modulaire:

- Simplifier la résolution du problème- Se concentrer sur la résolution d’un sous problème à la fois- Eviter les redondances- Le programme devient plus clair et les erreurs deviennent plus facile à les détectées

1. Notion de sous programmes:

On peut regrouper un ensemble d’instructions sous un même nom, on forme donc un sous programme appelé aussi fonction ou procédure, on les utilise : chaque fois qu’une même suite d’instructions doit être exécuté plusieurs fois dans un programme grâce à des appels. On distingue donc des sous programmes appelant et appelé.

III. Les Fonctions:

Page 33

Page 34: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Activité 2 : Citer quelques exemples de fonction standard vue dans le chapitre structures des données :

Fonction Type de résultat RôleTrunc (x) entier Retourne la partie entière d’un

nombreSqrt (x) réel Retourne la racine carrée d’un

nombreChr (n) caractère Retourne le caractère correspondant

au code ascii

Constatations : Ses fonctions retournent une seule valeur

La valeur retournée par une fonction est de type simple (entier, réel, caractère, chaîne, Booléen)Le résultat (l’appel) d’une fonction peut être affecté à une Variable (Y Sqr (x)) ou bien afficher directement(Ecrire (sqr (x)))

1. Définition :

Une fonction est un sous programme qui retourne une valeur d’un seul type

2. Syntaxe :

Activité 3 : On se propose d’écrire un programme qui détermine la valeur maximale entre deux entiers saisis à partir du clavier (on suppose que A est différent de B) 

Analyse du programme principal:

Résultat : Ecrire (‘’le maximum est :’’, FN MAX (N, M))

N= Donnée (‘’Donner le premier entier’’)

M = Donnée (‘’Donner le deuxième entier’’)

T.D.O

Objets Type / NatureMAXNM

FonctionEntierEntier

Algorithme du programme principal:

Page 34

Page 35: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

0) Début Maximum1) Ecrire (‘’Donner le premier entier’’) lire (N)2) Ecrire (‘’Donner le premier entier’’) Lire (M)3) Ecrire (‘’le maximum est :’’, FN MAX (N, M))4) Fin Maximum.

Remarque : l’appel de la fonction est fait à l’aide de : FN MAX

Analyse de la fonction :

DEF FN MAX (A, B : entier) : entier

Résultat : MAXMax XSi A>B alors XASinon X BFin SiFin MAX

Objets Type / NatureX Entier

Algorithme de la fonction MAX

0) DEF FN MAX (A, B : entier) : entier 1) Si A>B alors XA Sinon X B Fin Si

2) MAX X3) Fin MAX

Traduction en Pascal :

Program Maximum ;{entête du programme Principale}

Page 35

Page 36: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Var N, M ; {déclaration programme principal}

Function MAX (A, B :integer) :integer ; {entête de la fonction}

Var X : Integer ; {déclaration fonction}

Begin {corps de la fonction}

If A>B Then

X: =A

Else X: =B;

End;

BEGIN {instructions du programme principal}

Writeln (‘Donner le premier entier’) ; Readln (N) ; Writeln (‘Donner le deuxième entier’) ; Readln (M) ; Writeln (‘le Maximum est :’, Max (N, M)END.

a- Syntaxe d’une fonction au niveau de l’analyse :

DEF FN nom _ fonction (paramètres formels  : types) : types de résultats

Résultat = Nom_FonctionNom_Fonction Résultat calculéInstructions de la fonctionFin Nom_Fonction

b- Syntaxe d’une fonction au niveau de l’algorithme :

Algorithme de la fonction Nom_Fonction

0) DEF FN Nom_Fonction (paramètres formels : types) : type de résultat 1) Instructions de la fonction

2) Nom_Fonction Résultat calculé3) Fin Nom_Fonction

c- Syntaxe d’une fonction au niveau du Pascal :

Function Nom_Fonction (listes des paramètres formels  : types)  : type résultat ; {Déclarations des variables locaux}Begin Instructions de la fonction ; Nom_Fonction := Résultat calculé ;END ;

3. Variables Locales et globales :

Page 36

Page 37: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Une variable est locale pour un sous programme Q, si elle est déclarée seulement dans ce sous programme Q. Le programme qui comporte le sous programme Q ne peut pas accéder à cette variable. (exp : La variable x de type entier déclarée dans le T.D.O des objets locaux de la fonction)

Une variable est globale si elle déclarée dans le programme englobant le sous programme. Elle peut être utilisée dans le sous programme. (La Variables n est utilisée lors de l’appel de la fonction (………………………………………….) par le programme appelant (………………………..), sans quelle soit déclarée dans la partie déclarative de cette fonction)

4. les paramètres :

Un paramètre représente une donnée devant être échangée entre un programme appelant et un programme appelé. On distingue deux types :

Un paramètre FORMEL est le paramètre qui figure dans l’entête du sous programme. Un paramètre EFFECTIF est le paramètre qui figure dans l’instruction d’appel du sous

programme.

Les paramètres effectifs et formels doivent être compatibles de point de vue Type, nombre et ordre.Exemple :Max(n,m) est l’instruction d’appel de la fonction Max.Les objets n et m sont des paramètres formelsA est un paramètre efectif (Il figure dans l’entête de la fonction Max) N est un paramètre effectif correspondant au paramètre formel A

5. Mode de passage des paramètres:

Il y a deux modes de passages : Par valeur et par variable.a- Passage par valeur

Pour les fonctions la plupart des cas on utilise le passage par valeur :Exemple :En appelant la fonction MAx la fonction prend pour A la valeur n. On dit que les arguments (paramètres.) sont passés par valeur. Si la fonction modifie A, n ne sera pas modifié dans le programme appelant. La valeur du paramètre effectif est copiée dans la variable locale désignée par le paramètre formel correspondant (la variable A).

Dans le passage par valeur toute modification du paramètre formel n’entraîne pas une modification du paramètre effectif correspondant. (Garder la même valeur d’origine transmise lors de l’appel)

Dans notre exemple lors de l’appel de la fonction le paramètre effectif n est transmis par valeur, le paramètre formel correspondant A sera tout simplement ‘’initialisé’’ par la valeur de n lors de l’appel de cette fonction.Activité : Remplir le tableau suivant :

Description d’une tache Réalisable ou non par Entête/Explication

Page 37

Page 38: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

à résoudre une fonctionVérifier l’existence

d’une chaîne dans un tableau de n chaînes

Supprimer un entier occupant la position i dans un tableau de n entiers

Convertir une durée donnée en secondes, en heurs, minutes et secondes

Calculer un réel à la puissance d’un entier

Application   :

Ecrire l’analyse d’un programme intitulé COMBINAISON qui permet de calculer et d’afficher le nombre de combinaison de p parmi n.n et p sont deux entiers naturels strictement positifs avec n>=p.

Avec : cnp

= n !

p ! (n− p )!

But : afficher le nombre de combinaison de p parmi n

Traitement : cnp

= Factoriel (n)/factoriel (p)*factoriel (n-p)

Analyse du programme principale :T.D.O :

objet Type/natureCn, pfactoriel

RéelEntierFonction

Algorithme du programme principal :

0) Début combinaison1) Répéter

Ecrire (‘’ donner la valeur de p’’) , lire (p) Jusqu'à p>0

2) Répéter

Ecrire (‘’ donner la valeur de n’’), lire (n)Jusqu’à n>=p

3) C FN factoriel (n)/ FN factoriel (p)*FN factoriel (n-p)4) Ecrire (‘’le nombre de combinaison est :’’, C)5) Fin combinaison.

Grille d’analyse de la fonction factorielle :

Page 38

Page 39: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

T.D.O :

Facti

RéelEntier

Algorithme de la fonction factorielle :0) DEF Factoriel (n :entier) :integer1) Fact1

Pour i de 1 à n Faire Fact Fact*i Fin pour

2) Factorielfact3) Fin factoriel

Traduction en Pascal :Program combinaison ;Uses wincrt ;{variable globale}Var c : real ;n, p: integer;Function Factoriel (n:integer):integer;{variable locale}Var Fact:integer; i:integer Begin Fact:=1; For i:= 1 to n do Fact := fact*i; Factoriel:=fact;End;Begin {programme principal}

C:= Factoriel (n) / Factoriel (p) * Factoriel (n-p);Writeln (‘’ la combinaison est :’’, C) ;End.

Réinvestissement :

Soit T1 et T2 deux tableau contenant respectivement n et m caractères (avec n et m <=30).

Page 39

Page 40: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

On veut calculer le nombre des voyelles se trouvant dans les deux tableaux. La solution doit comporter une fonction qui permet de compter le nombre de voyelles dans un tableau.

Exercice1 :

Function Test (n: integer; T: tab; c: char):…………………………….Var ……………………………………………………………………BeginExiste:= false; i:=0RepeatI:=i+1;If T[i]=c then Existe:=trueElse existe:= false;Test:=……………………………….;Until ( existe=true) or (i>n);End;

1- Compléter les pointillés.2- Donner le résultat de cette fonction pour n=4, c=’A’

T= B A F J

3- Quel est le rôle de cette fonction4- Appeler cette fonction dans un programme principal

Exercice2 :

Soit la fonction suivante :

Function somme (a,b :integer):integer;Var p:integer; Function produit (n:integer):integer ; Var q,r :intger ; Begin Q := n div 3 ; R := n mod 3 ; Produit := q * r ; End ;BeginP :=produit(a) + produit (b) ;Somme := p ;End ;Indiquer pour chaque objet, s’il est reconnu par la fonction somme, la fonction produit ou bien les deux en mettant la lettre o pour oui et la lettre n pour non.

Page 40

Page 41: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

IV. Les procédures:

Activité 2 : écrire une analyse et un algorithme « Calcul » qui permet de calculer et d’afficher, la somme, la moyenne et produit de 3 réels.

Remarque :Q : combien de résultat va retourner cet algorithme ?

Le résultat de cet algorithme est plus qu’une valeur, donc on ne peut pas utiliser une fonction puisque une fonction est un module qui retourne un résultat unique.Pour cela on va utiliser un autre type de sous programme : les procédures.On aura un programme principal qui permet de lire 3 réels, d’appeler une procédure « calculer » et d’afficher les résultats.

Analyse : Résultat : Ecrire (‘’la somme est :’’, s, ‘’la moyenne est :’’, m, ‘’le produit est’’, p)(s, m, p)= [] proc calculer (a, b, c, s, m, p) 

a= Donnée (‘’Donner la valeur de a’’)b= Donnée (‘’Donner la valeur de b’’)c= Donnée (‘’Donner la valeur de c’’)

T.D.O :Objet Type/

natureA,b,c,s,

m,préel

calculer procédure

Algorithme du programme principal :

Analyse de la procédure « calculer »

DEF PROC Calculer (X, Y, Z : réel ; Var  som, moy, pro :réel ) 

Page 41

Page 42: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Résultat : som, moy, pro som X + Y + Z moy(X + Y + Z)/ 3 pro X*Y*Z Fin calculer

N.B : X, Y, Z, som, moy, pro sont tous déclarées au niveau de l’entête de la procédure, donc on n’a pas de variable locale pour cette procédure. Donc pas de T.D.O 

Algorithme de la procédure « calculer ».

Traduction en pascal :Program calcul ;Uses wincrt ;Var s, m, p, a, b, c : real;Procedure calculer (x, y, z:real; Var som, moy, prod: real); Begin Som:= x + y + z; Moy:= (x + y + z)/3 ; Prod := x * y * z ; End ;

BeginWriteln (‘introduire a:’); readln (a);Writeln (‘introduire b:’); readln (b);Writeln (‘introduire c:’); readln (c);Calculer (a, b, c, s, m, p)Writeln (‘la somme est:’, s, ‘ la moyenne est:’, m, ‘ le produit est :’, p) ;End.

1. Définition :

Une procédure est un sous programme qui peut produire plusieurs résultats.

2. Syntaxe :

a- Syntaxe d’une procédure au niveau de l’analyse :

DEF Proc nom _ Procédure (paramètres formels  : types)

Résultat =Instruction de la procédureFin Nom_Procédure

b- Syntaxe d’une procédure au niveau de l’algorithme :

Page 42

Page 43: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Algorithme de la fonction Nom_Fonction

0) DEF FN Nom_Procédure (paramètres formels : types) : 1) Instructions de la procédure

2) Fin Nom_Procédure

c- Syntaxe d’une procédure au niveau du Pascal :

Procedure Nom_Pocédure (listes des paramètres formels  : types)  ; {Déclarations des variables locaux}Begin Instructions de la procédure ; END ;

3. Mode de passage des paramètres :On connaît que pour les sous programmes il y a deux types de passage : mode de passage par valeur déjà vu dans les fonctions et le mode de passage par variable.

Mode de passage par variable :Examinons l’entête de la procédure « calculer » :

DEF PROC Calculer (X, Y, Z : réel ; Var  som, moy, pro :réel ) 

Les paramètres formels sont : X, Y, Z, som, moy, pro Q : Quelle est la différence, au niveau de l’écriture, entre les paramètres x, y, z et les paramètres som, moy, pro.X, Y, Z : sont des paramètres formels avec un mode de transmission par valeurSom, moy, pro : sont des paramètres formels avec un mode de transmission par variable, car ils sont précédés par le mot Var.

Les paramètres transmis par variable font communiquer l’information dans les deus sens :

Programme appelant sous programmes

Le programme appelant peut transmettre une ou plusieurs valeurs au sous programme appelé, ce dernier fournit après son exécution, un ou plusieurs résultats, au programme appelant.

Dans notre exemple :Les valeurs de s, m, p sont indéterminés avant l’appel de la procédure calculer.On suppose que les valeurs lues pour a, b, c sont respectivement : 4, 6, et 10, après l’appel et l’exécution de la procédure calculer les variables s, m, p ont les valeurs de som, moy, pro qui sont 20, 6,66 et 100.

Page 43

Page 44: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Dans ce mode de passage les paramètres effectifs doivent être obligatoirement des variables. Toutes modifications du paramètre formel entraînent automatiquement une modification de la valeur du paramètre effectif qui lui correspond en ordre au moment de l’appel.

Remarques :

- Les paramètres effectifs et les paramètres formels doivent s’accorder de point de vue nombre, ordre et type.

- Une procédure peut être sans paramètre. Ex : une procédure qui affiche « Merci » à la fin du programme :Procedure merci;Begin Writeln (‘merci’)End;- Une procédure peut contenir des déclarations locales.

Application :Ecrire une analyse et en déduire un algorithme permettant d’afficher tous les entiers formés par deux chiffres qui vérifient la propriété suivante, la somme de leurs chiffres est égale à 10.

program divis10;uses wincrt;var a,b:integer;procedure affiche;var i,d,u:integer;BeginFor i:= 10 to 99 dobeginu:= i MOD 10;d:= i DIV 10;if u + d = 10 thenwrite(i:4);End;End;BEGINaffiche;End.

Réinvestissement: Variables et paramètres :

Program principal ; N°Inst. Constatations Conclusions

Page 44

Page 45: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Uses wincrt ;

Var x :real ;

Procedure P1(a :real ;b :integer) ;

Var x :real ;

Begin

x :=a ;

b :=i ;

a :=F1(b) ;

End ;

Function F1 (y :integer) :real ;

Var i :integer ;

Begin

X :=y ;

F1 :=1/y ;

End ;

Procedure P2(a :string) ;

Var l :real ;

Begin

l :=F1(10) ;

End ;

BEGIN

i :=5 ;

P1(5) ;

P1(5,x) ;

P1(x,5) ;

END.

1

La variable globale x recevra la valeur du paramètre y

Un programme ne peut pas accéder aux objets de ces sous programmes par contre les sous programmes accèdent aux objets du programmes principal.

Un sous programme ne peut pas accéder aux objets d’un autre sous programmes.

En cas de noms identiques, les sous programmes accèdent aux objets déclarés localement.

2

Impossible, la variable locale i de la fonction F1 n’est pas accessible. Elle est en dehors de la portée du programme principal.

3

Impossible, la variable locale i de la fonction F1 n’est pas accessible. Elle est en dehors de la portée de la procédure P1.

4

La variable locale x recevra la valeur du paramètre a.

5Impossible, il manque un 2ème paramètre.

Les paramètres effectifs et formels doivent être compatible de point de vue nombre, type et ordre.6

Impossible, le 2ème effectif n’est pas compatible de point de vue type avec le paramètre formel correspondant.

7 Pas de problèmes

8

Impossible, la fonction F1 n’est pas à la portée de la procédure P1 Un sous programme peut

appeler un autre à condition que l’appelant soit déclaré après l’appelé.

9 Pas de problèmes

Application : Passage de paramètre par valeur et par variable

Page 45

3

1

9

4

2

5

67

8

Page 46: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

PROGRAM PASSAGE_VALEUR ;USES WINCRT ;VAR X ,Y : INTEGER ;

Procedure Essai ( Passage de paramètre ) ;Begin

I : = 3 * I ;J := 4 * j ;Writeln(’Dans la procédure les valeurs sont :’) ;Writeln( I ) ;Writeln( J ) ;

End ;

BEGINWriteln(’donner la première valeur :’ ) ;Readln( X ) ;Writeln(’donner la deuxième valeur :’ ) ;Readln( Y ) ;Essai( X , Y) ;Writeln(’Après appel de la procédure les valeurs sont :’) ;Writeln( X ) ;Writeln( Y ) ;Readln ;

END.

Déclaration des paramètres Formels

P. Effectifs P. Formels

Type du passage

X Y I J

( I , J  : Integer )A l'appel d’ESSAI I : Après exécution

d’ESSAIJ :

( VAR I , J : Integer )A l'appel d’ESSAI I :Après exécution

d’ESSAIJ :

( VAR I : Integer ; VAR J : Integer)

A l'appel d’ESSAI I :Après exécution

d’ESSAIJ :

( I : Integer ; VAR J : Integer )

A l'appel d’ESSAI I :Après exécution

d’ESSAIJ :

Exercice 1 :

Soit la fonction suivante:

Page 46

Page 47: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Function Traitement(x: integer):……………………………;Var …………………………………………………………BeginS:=0;Str(x,ch);For i:= 1 to 4 do Begin Val(ch(i],a,e); S:=s+a; End;……………………………………………………………...End;

1- Compléter les pointillées.2- Donner le résultat de cette fonction pour x = 20143- Quelle est le rôle de cette fonction.

Exercice 2 :

Soit l’algorithme de la fonction suivante:

0) DEF FN Traitement (n : entier) : entier 1) r 0

Répéter

r r + n MOD 10

n n DIV 10

Jusqu'à (n = 0)

2) Traitement r

3) Fin Traitement

1- Quelle est la valeur retournée par cette fonction pour n= 125 ?2- Quelle est la valeur retournée par cette fonction pour n= 458 ?3- Donner le rôle de cette fonction.

Application pratique :

On veut déterminer le PGCD de deux entiers naturels a et b non nul, en utilisant l’algorithme d’Euclide.

Page 47

Page 48: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Le principe est le suivant :- Faire la division euclidienne de a par b.- Si le reste est non nul, on remplace a par b et b par r et on revient à l’étape 1 sinon le

traitement se termine et le pgcd = b.

Application 2

Un entier n de 4 chiffres est dit valable, si ses trois derniers chiffres sont des multiples de son Chiffre des milliers.

Exemple : L'entier 2648 est valable car son chiffre des milliers est 2 et il est suivi par les chiffres 6, 4 et 8 qui sont tous multiples de 2.

On se propose d'écrire un programme qui permet de lire un entier positif n composé de 4 chiffres puis d'afficher s'il est valable ou non.

Exemple 1 : Si n= 2888 alors le programme affichera : Cet entier est valable.

Exemple 2 : Si n= 2179 alors le programme affichera : Cet entier n'est pas valable.

Questions 1) Analyser le problème en le décomposant en modules et en déduire l'algorithme du

programme principal.

2) Analyser chacun des modules envisagés et en déduire les algorithmes correspondants.

Page 48

Page 49: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Page 49

Page 50: Professeur : Nsiri riadh 4éme années scientifiques€¦  · Web viewAlgorithmique . les Enregistrements et les Fichiers. Author: hamza Created Date: 10/15/2015 01:59:00 Title:

Prof : Nsiri Riadh 4ème Science de l’informatique

Page 50