1 0 13MB
SUPPORT DE COURS
UE : ALGORITHME ET PROGRAMMATION LPRGL 1 Equipe Pédagogique
INFORMATIQUE Propriété exclusive de PIGIER CI. Toute reproduction même partielle de ce document est strictement interdite. 22-23
Formation – Placement - Consultance Tél : (225) 27 20 30 35 00 / Fax : (225) 27 20 22 67 64 E-mail : [email protected] / [email protected] 01 BP 1585 Abidjan République de Côte d'Ivoire 23 Boulevard de la République - Plateau
SARL au capital de 300.000.000 FCFA RC N° CI-ABJ-1977-B-26872 CC : 77 02508 P / Centre des Impôts : DGE Régime d’Imposition : Réel Normal
PIGIER CI
Algorithme et programmation SOMMAIRE
LEÇON 1 : LES BASES DE L’ALGORITHME ................................................................................................. 3 I. Définition .............................................................................................................................................. 3 II. Les différentes étapes dans l’élaboration d’un programme ............................................................... 3 III. La structure générale d’un algorithme ............................................................................................... 3 IV. La déclaration des ressources ............................................................................................................ 3 V. Les instructions de base ...................................................................................................................... 4 VI. Exercices de la leçon .......................................................................................................................... 5 LEÇON 2 : LES STRUCTURES DECISIONNELLES......................................................................................... 8 I)
La structure conditionnelle ............................................................................................................. 8
II)
La structure alternative ................................................................................................................... 9
III)
Exercice corrigé (Cas d’imbrication) .......................................................................................... 10
LEÇON 3 : LES STRUCTURES REPETITIVES .............................................................................................. 12 I)
La boucle TANTQUE ....................................................................................................................... 12
II)
La boucle REPETER ........................................................................................................................ 13
III)
La boucle POUR ......................................................................................................................... 14
LEÇON 4 : LES CHAINES DE CARACTERES .............................................................................................. 16 I)
Généralités sur les chaînes de caractères ..................................................................................... 16
II)
Relation d'ordre............................................................................................................................. 16
III)
Concaténation de chaînes de caractères .................................................................................. 17
IV)
Les fonctions d manipulation de chaînes de caractères ........................................................... 17
LEÇON 5 : LES TABLEAUX ....................................................................................................................... 18 I)
Les tableaux à une dimension ....................................................................................................... 18
II)
Les tableaux à deux dimensions .................................................................................................... 19
LEÇON 6 : LES ENREGISTREMENTS ........................................................................................................ 22 I)
Définition ....................................................................................................................................... 22
II)
Déclaration .................................................................................................................................... 22
III)
Applications ............................................................................................................................... 22
IV)
Exercices corrigés ...................................................................................................................... 23
LEÇON 7 : LES PROCEDURES ET LES FONCTIONS................................................................................... 26 I)
Les procédures .............................................................................................................................. 26
II) Les fonctions...................................................................................................................................... 28 II)
Exercice corrigé ............................................................................................................................. 30
LEÇON 8 : LES FICHIERS ......................................................................................................................... 32 I)
Définition ....................................................................................................................................... 32
II)
Les primitives de gestion de fichier ............................................................................................... 32 1
PIGIER CI III)
Algorithme et programmation
Application................................................................................................................................. 33
LEÇON 9 : LES POINTEURS ..................................................................................................................... 35 I)
Définition ....................................................................................................................................... 35
II)
Notation......................................................................................................................................... 35
III)
Les primitives de gestion de pointeur ....................................................................................... 35
IV)
La valeur NIL ou NULL ................................................................................................................ 35
V)
Application..................................................................................................................................... 35
2
PIGIER CI
Algorithme et programmation
LEÇON 1 : LES BASES DE L’ALGORITHME I. Définition Un algorithme est une suite ordonnée d’opérations permettant de passer d’un état initial à un état final.
II. Les différentes étapes dans l’élaboration d’un programme Pour concevoir un programme informatique (logiciel), il faut mener des réflexions qui aboutiront à la conception d’algorithmes. Une fois les algorithmes obtenus, il faut les traduire en programmes informatiques (logiciel). Cette traduction se fera à l’aide de langages de programmation (Exemples de langage de programmation : Turbo Pascal, C, C++, Visual basic).
III. La structure générale d’un algorithme ALGORITHME NomAlgorithme Déclaration des ressources DEBUT Description du traitement FIN. Commentaire :
Un algorithme commence par le mot clé algorithme suivi de son identificateur (nom donné à l’algorithme). La partie déclarative permet de présenter les ressources nécessaires pour résoudre le problème. La partie description du traitement permet de préciser les instructions ordonnées résolvant le problème. Cette partie commence par le mot clé DEBUT et se termine par le mot clé FIN suivi d’un point (.).
IV. La déclaration des ressources IV.1 Les constantes IV.1.1 Définition Une constante est affectée d’une valeur au début de l’algorithme et cette valeur ne peut pas être modifiée. IV.1.2 Déclaration CONST NomConstante=valeur Exemples : CONST Classe=’Info1a’ Coef=3 TVA=20%
3
PIGIER CI
Algorithme et programmation
IV.2 les variables IV.2.1 Définition Une variable peut prendre une valeur pendant le déroulement de l’algorithme et cette valeur peut changer. IV.2.2 Les types simples Une variable a un type. Le type permet de définir le domaine de valeurs de la variable. Les types simples sont résumés dans le tableau ci-dessous :
Entier
Symboles ou mots clés du langage de description algorithmique ENTIER
Réel
REEL
Caractère
CARACTERE
Chaîne de caractères
CARACTERES
Booléen
BOOLEEN
Types simples
IV.2.3 Déclaration VAR NomVariable :Type Exemples : VAR Nbre1,Nbre2 : ENTIER Moy :REEL Prenom :CARACTERES
V. Les instructions de base V.1 Le symbole de fin d’instruction (;) Le symbole point virgule ( ;) marque la fin d’une instruction. Il faudra donc mettre un point virgule ( ;) à la fin de chaque instruction.
V.2 Les opérateurs arithmétiques Les opérateurs arithmétiques sont résumés dans le tableau ci-dessous. Les opérateurs arithmétiques
Symboles ou mots clés du langage de description algorithmique
Observations
Addition
+
Soustraction
-
Multiplication
*
Division réelle
/
Division entière
DIV
3 DIV 2 = 1
Reste d’une division entière
MOD
3 MOD 2 = 1
4
PIGIER CI
Algorithme et programmation
V.3 Les opérateurs de comparaison Les opérateurs de comparaisons sont résumés dans le tableau ci-dessous. Symboles ou mots clés du langage de description algorithmique
Les opérateurs de comparaison Supérieur
>
Inférieur
=
Inférieur ou égale
=0 ALORS DEBUT ECRIRE(‘La valeur absolue de ‘,N, ’ est ‘, N) ; FIN ; SI N=0 ALORS DEBUT ECRIRE(‘La valeur absolue de ‘,N,’est ‘,N) ; FIN 9
PIGIER CI
Algorithme et programmation
SINON DEBUT ECRIRE(‘La valeur absolue de ‘,N,’est ‘,-N) ; FIN ; FIN.
III)
Exercice corrigé (Cas d’imbrication)
Enoncé : Ecrire un algorithme permettant de savoir le signe du produit de deux nombres entiers.
Solution : ALGORITHME SigneProd VAR Nbre1,Nbre2,Prod :ENTIER DEBUT (* Saisie de deux nombres entiers *) ECRIRE(‘Entrez deux nombres entiers’) ; LIRE(Nbre1,Nbre2) ; (* Calcul du produit des deux nombres entiers *) Prod←Nbre1*Nbre2 ; (* Recherche et affichage du signe du produit des deux nombres entiers saisis *) SI Prod>0 ALORS DEBUT ECRIRE(‘Le produit est positif’) ; FIN SINON DEBUT SI Prod < 0 ALORS DEBUT ECRIRE(‘Le produit est négatif’) ; FIN SINON 10
PIGIER CI
Algorithme et programmation DEBUT ECRIRE(‘Le produit est nul’) ; FIN ; FIN ;
FIN.
Autres exercices de la leçon. Exercice 1 Ecrire un algorithme permettant de savoir le résultat d’un étudiant. Il a deux notes et il faut avoir une moyenne supérieure ou égale à 10 pour être admis. Pour une moyenne inférieure à 10 on est ajourné.
Exercice 2 Ecrire un algorithme permettant de comparer deux nombres.
11
PIGIER CI
Algorithme et programmation
LEÇON 3 : LES STRUCTURES REPETITIVES I)
La boucle TANTQUE 1) Définition
La boucle TANTQUE est une structure de contrôle permettant d’exécuter plusieurs fois un bloc d’instructions. La condition d’arrêt de la boucle est vérifiée à l’entrée de la structure. Lorsque la condition est vérifiée la boucle s’exécute et s’arrête lorsque la condition n’est plus vérifiée.
2) Syntaxe TANTQUE condition FAIRE DEBUT Bloc d’instructions FIN ;
3) Application Enoncé : On veut faire la somme de 10 (dix) entiers quelconques Ecrire l’algorithme en utilisant la structure de contrôle TANT QUE.
Solution de l’exercice ALGORITHME Somme VAR Nbre,Som,Cpte :ENTIER DEBUT (* Initialisation de la somme et du compteur *) Som←0 ; Cpte←0 ; (* Boucle de saisie et calcul de la somme des 10 nombres entiers saisis *) TANTQUE Cpte "A" car le code ASCII du caractère "B" (66 en base 10) est supérieur au code ASCII du caractère "A" (65 en base 10). Pour comparer deux chaînes de caractères, on compare les caractères de même rang dans les deux chaînes en commençant par le premier caractère de chaque chaîne (le premier caractère de la première chaîne est comparé au premier caractère de la seconde chaîne, le deuxième caractère de la première chaîne est comparé au deuxième caractère de la seconde chaîne, et ainsi de suite…). Exemples : Comparaison de deux chaînes "baobab" < "sapin" car le code ASCII de "b" est inférieur au code ASCII de "s". "baobab" > "banania" car le code ASCII de "o" est supérieur au code ASCII de "n" (la comparaison ne peut pas se faire sur les deux premiers caractères car ils sont identiques). "1999" > "1998" car le code ASCII de "9" est supérieur au code ASCII de "8" (la comparaison ne peut pas se faire sur les trois premiers caractères car ils sont identiques). Attention, ici ce ne sont pas des valeurs numériques qui sont comparées, mais bien des caractères. "333" > "1230" car le code ASCII de "3" est supérieur au code ASCII de "1". "333" < "3330" car la seconde chaîne a une longueur supérieure à celle de la première (la comparaison ne peut pas se faire sur les trois premiers caractères car ils sont identiques). "Baobab" < "baobab" car le code ASCII de "b" est supérieur au code ASCII de "B". 16
PIGIER CI
III)
Algorithme et programmation
Concaténation de chaînes de caractères
Le but de la concaténation est de créer des chaînes de caractères en juxtaposant deux (ou plus) chaînes de caractères. En algorithmique, l'opérateur de concaténation est représenté par + ou par //. Exemple : Concaténation de deux chaînes Algo Concaténations Variable : catégorie : Chaîne Début catégorie ←développeur" catégorie ←catégorie // "s" Afficher(catégorie) # Affiche : développeurs catégorie ←" des " // catégorie Afficher(catégorie) # Affiche : des développeurs Fin
IV)
Les fonctions d manipulation de chaînes de caractères
1. Copie d'un extrait SSCHAINE(chaîne,position,nombre):Chaîne Le rôle de la fonction SSCHAINE() est de retourner une "sous-chaîne" (copie d'un extrait de la chaîne passée en premier paramètre) de nombre caractères de la chaîne chaîne à partir du caractère qui se trouve en position position (rappel : le premier caractère d'une chaîne de caractères se trouve en position 1 en algorithmique. 2. Nombre de caractères LONGUEUR(chaîne):Entier La fonction LONGUEUR() a pour rôle de calculer et de retourner le nombre de caractères présents dans la chaîne de caractères passée en paramètre. 3. Recherche d'un caractère ou d'une sous-chaîne RANG(chaîne,souschaîne,position):Entier La fonction RANG() recherche et retourne la première occurrence de la souschaîne dans la chaîne. La recherche commence à partir de position. Cette fonction retourne la position du premier caractère de la souschaîne, ou la valeur 0 si la "souschaîne" n'existe pas dans la chaîne (à partir de position). 4. Conversion en code ASCII CODE(caractère):Entier La fonction CODE() retourne le code ASCII du caractère passé en paramètre. 5. Conversion en caractère CAR(code_ascii):Caractère La fonction CAR() retourne le caractère dont le code ASCII est passé en paramètre. 6. Conversion en grandeur numérique CVNOMBRE(chaîne):Entier CVNOMBRE(chaîne):Réel La fonction CVNOMBRE() a pour rôle de convertir (CV pour ConVersion) la chaîne de caractères passée en paramètre, en grandeur numérique si la suite de caractères représente un nombre, puis de retourner la grandeur numérique. 7. Conversion en chaîne de caractères CVCHAINE(entier): Chaîne CVCHAINE(réel): Chaîne La fonction CVCHAINE() a pour rôle de convertir en chaîne de caractères une valeur numérique passée en paramètre, puis de retourner la chaîne résultante.
17
PIGIER CI
Algorithme et programmation
LEÇON 5 : LES TABLEAUX I)
Les tableaux à une dimension
1) Définition Un tableau à une dimension également appelé vecteur est une structure de données constituée d’une ligne et de plusieurs colonnes permettant de contenir des informations de même type.
2) Déclaration NomTableau : TABLEAU [valeur initiale..valeur finale] DE TYPE ;
Exemple : Déclarez un tableau de 10 entiers. TNbre :TABLEAU [1..10] DE ENTIER ;
Observations : Chaque case a un indice. Soit le tableau TPrenom de 5 prénoms.
Indice : 1 2 Valeurs : Facto Pluplu TPrenom[3] contient la valeur Poulili
3 Poulili
4 Sacolo
5 Gagoumo
3) Application Enoncé : Ecrire un algorithme permettant de faire la somme et la moyenne de dix nombres que vous devez saisir au préalable dans un tableau à une dimension.
Solution de l’exercice ALGORITHME AdditionMoyenne VAR TNbre :TABLEAU [1..10] DE ENTIER ; i,Som :ENTIER ; Moy :REEL ; DEBUT (* La saisie des nombres*) POUR i←1 JUSQUA 10 FAIRE DEBUT
18
PIGIER CI
Algorithme et programmation ECRIRE(‘Entrez le nombre N° ‘,i) ; LIRE(TNbre[i]) ; FIN ;
(*Calcul de de la somme et de la moyenne*) Som←0 ; POUR i←1 JUSQUA 10 FAIRE DEBUT Som←Som+TNbre[i] ; FIN ; Moy←Som/i ; (*Affichage de de la somme et de la moyenne*) ECRIRE(‘La somme est :’,Som) ; ECRIRE(‘La moyenne est :’,Moy) ; (*Affichage du vecteur Tnbre*) ECRIRE(‘Les nombres contenus dans le vecteur TNbre sont :’) ; POUR i←1 JUSQUA 10 FAIRE DEBUT ECRIRE(TNbre [i], ‘ ’) ; FIN ; FIN.
II)
Les tableaux à deux dimensions 1) Définition
Un tableau à deux dimensions est une structure de données constituée de plusieurs lignes et de plusieurs colonnes permettant de contenir des informations de même type.
2) Déclaration NomTableau :TABLEAU[ValeurInitialeLigne..ValeurFinaleLigne, Valeur initialeColonne..ValeurFinaleColonne] DE TYPE
Exemple : Déclarez un tableau de 2 lignes et de 5 colonnes de prénoms. TPrenom :TABLEAU[1..2,1..5] DE CARACTERES
19
PIGIER CI
Algorithme et programmation
Observation : Un tableau à deux dimensions a deux indices. Le premier indique le numéro de la ligne et le second le numéro de colonne (exemple : TPrenom[2,3] ←’Yaopio’)
3) Application Enoncé : Ecrire un algorithme permettant de saisir 10 nombres dans un tableau de deux lignes et de cinq colonnes. Après la saisi votre algorithme doit permettre de déterminer la plus grande valeur du tableau.
Solution de l’exercice 3 ALGORITHME Maxi VAR TNbre :TABLEAU[1..2 ,1..5] DE ENTIER i,j,Max : ENTIER DEBUT POUR i←1 JUSQUA 2 FAIRE DEBUT POUR j←1 JUSQUA 5 FAIRE DEBUT ECRIRE(‘Entrez le nombre de la ligne ’, i, ‘et de la colonne ‘ , j) ; LIRE(TNbre[i ,j]) ; FIN ; FIN ; Max←TNbre[1;1] ;
POUR i←1 JUSQUA 2 FAIRE DEBUT POUR j←1 JUSQUA 5 FAIRE DEBUT SI Max < TNbre[i ,j] ALORS DEBUT Max ←TNbre[i ,j]; FIN; 20
PIGIER CI
Algorithme et programmation FIN ;
FIN ; ECRIRE(‘La plus grande valeur du tableau est ’,Max) ; FIN. Exercices de la même leçon Exercice 1 Ecrire un algorithme permettant de trier un tableau de dix entiers.
Exercice 2 Ecrire un algorithme permettant de déterminer le nombre de notes supérieures ou égales à 10 préalablement saisie dans un vecteur.
Exercice 3 Ecrire un algorithme permettant de déterminer le nombre de notes inférieures à dix préalablement saisie dans une matrice deux lignes et cinq colonnes.
Exercice 4 Ecrire un algorithme permettant de remplacer tous les nombres inférieurs à zéro par zéro dans une matrice de trois lignes et de quatre colonnes.
21
PIGIER CI
Algorithme et programmation
LEÇON 6 : LES ENREGISTREMENTS I)
Définition
Un enregistrement est une structure de données permettant de stoker des données de types différents.
II)
Déclaration
TYPE NomEnregistrement= ENREGISTREMENT Champ 1 :TYPE 1 Champ n :TYPE n FIN VAR NonVariable :NomEnregistrement
III)
Applications
Enoncé Ecrire un algorithme permettant de saisir des informations sur un étudiant (Matricule, nom et prénom). Votre algorithme doit permettre d’afficher les informations saisies. Correction de l’algorithme ALGORITHME InfoEtud TYPE (*Création du type Etudiant qui est un enregistrement*) Etudiant=ENREGISTREMENT Mat : ENTIER ; Nom : CARACTERES ; Pren : CARACTERES ; FIN VAR EEtudiant : Etudiant ; DEBUT (* saisie des informations sur l’étudiant*) ECRIRE(‘Entrez le matricule de l’’étudiant’) ; 22
PIGIER CI
Algorithme et programmation LIRE(EEtudiant.Mat) ; ECRIRE(‘Entrez le nom de l’’étudiant’) ; LIRE(EEtudiant.Nom) ; ECRIRE(‘Entrez le prénom de l’’étudiant’) ; LIRE(EEtudiant.Pren) ;
(* affichage des informations saisies*) ECRIRE(‘Le matricule de l’’étudiant est :’,EEtudiant.Mat) ; ECRIRE(‘Le nom de l’’étudiant est :’,EEtudiant.Nom) ; ECRIRE(‘Le prénom de l’’étudiant est :’,EEtudiant.Pren) ; FIN.
IV)
Exercices corrigés
Enoncé Ecrire un algorithme permettant de saisir des informations sur des étudiants (Matricule et identité). Il y en a dix au maximum. Votre algorithme doit permettre de rechercher un étudiant à partir du matricule. Prévoir un menu avec les options suivantes : 1 :Saisir un étudiant 2 :Rechercher un étudiant 3 :Quitter le programme Solution de l’exercice
Correction de l’algorithme ALGORITHME GestionEtu TYPE Etudiant=ENREGISTREMENT Mat : ENTIER ; Identite : CARACTERES ; FIN VAR TEEtudiant : TABLEAU [1..10] DE Etudiant ; Rep : ENTIER ; VerifierSaisie ,Trouve : BOOLEEN ; 23
PIGIER CI
Algorithme et programmation
Cpte,MatRecherche ,i:ENTIER ; DEBUT VerifierSaisie←Faux, Cpte←0 ; REPETER (* Affichage du choix et saisie du menu *) ECRIRE(‘MENU’) ; ECRIRE(‘1 :Saisir un étudiant’) ; ECRIRE(‘2 :Rechercher un étudiant’) ; ECRIRE(‘3 :Quitter le programme’) ; ECRIRE(‘Entrez votre réponse’) ; LIRE(Rep) ; SI (Rep=1) ET (Cpte’,N2) ; FIN SINON DEBUT SI N1 < N2 ALORS DEBUT ECRIRE(N1 ,’