Vous êtes sur la page 1sur 12

27/09/2016

Objectif - but
Algorithmique et programmation en C
• obtenir de la «machine» qu’elle
Partie I : Algorithmique (introduction) effectue un travail à notre place
–Comment doit elle procéder?
–Avec quel langage communiquer?
Dr TSOPZE N.
tsopze@uy1.uninet.cm –Avantages: gain de temps

Ce support doit être imprimé par chaque étudiant, il le complétera pendant les séances de cours
1 2

Définitions Définitions (en Info.)


• suite finie d'actions à entreprendre en respectant • Suite finie de calculs dont l’exécution dans
une chronologie imposée pour résoudre un l’ordre conduit à un résultat
problème particulier
– …………………………………………………………………. • transformation des données en résultats:
– ……………………………………………………………………….. – Préparation du traitement : décrire les données
– Ne contenir que des instructions compréhensibles par nécessaires à la résolution du problème (leur
celui qui devra l’exécuter forme, leur type,…)
• suite d’instructions, qui une fois exécutée – Traitement : ………………………………………………………
correctement, conduit à un résultat donné ………………………………………………………………..
– Algorithme juste  …………………………………………… – Edition des résultats : …………………………………………
– Algorithme faux  ……………………………………………. …………………………………………………
3 4

Définitions (en Info.) Astuces


• Interlocuteur = Ordinateur • Intuitif: il n’existe aucun moyen de savoir a
– Ne connait que les instructions basiques: on doit priori quelles instructions permettront
tout lui dire d’obtenir le résultat voulu  cultiver
– Ne comprend que les données élémentaires l’expérience
– Ne fait JAMAIS d’erreur • méthodique et rigoureux : toujours s’assurer
– Capable de comprendre un mélange complexe des que l’algorithme est juste ie se mettre à la
données ou des instructions élémentaires place de la « machine » et exécuter
– Pour lui, tout doit être EXPLICITE l’algorithme instructions après instructions

5 6

1
27/09/2016

Algorithmique vs Programmation Dossier algorithmique


Programme: algorithme traduit en un
• Problème
langage compréhensible par l’ordinateur
• Principe de résolution
• Environnement
Algorithmique Programmation
• Algorithme proprement dit
Instructions indépendantes du Propre à un langage
langage

Définir le plan, la structure logique Donne tous les détails dans un langage
d’un programme (concepts du langage)

7 8

Problème Problème
• Question à laquelle il faut donner une réponse • Point de départ:
– Sens général: les éléments sont variables – Valeurs en entrée (ce qu’on dispose)
• Comment partir d’un point A à un point B?
– Représentation des entrées
– Sens particulier: cas particulier du problème
• Comment partir de Yaoundé à Douala?
– Conditions à prendre à compte
• Problème bien compris  …………………………… • Point d’arrivée:
………………………………………….. – Valeurs en sortie: produit obtenu après
• Problème mal compris ……………………………… transformation (algo)
« Le plus dur dans la correction d’une erreur n’est pas de la – Représentation et interprétation des résultats
corriger mais de la trouver »
9 10

Problème (en algo.) Principe de résolution


• Dire comment on comprend le problème à • Description littérale de la méthode de
résoudre résolution du problème
• Réécrire en ses propres expressions le • Enoncer les théorèmes connus (si le
problème problèmes est mathématique) pouvant
• Description des données et des résultats faciliter la résolution
• Description des contraintes • Décrire les formules qui lient les données (en
• Description des limites entrée) aux résultats (données en sortie)

11 12

2
27/09/2016

Environnement Algorithme
• Description dans un tableau de tous les objets Algorithme nom_algo [entrées, résultats]
à utiliser dans la méthode de résolution: //Rôle: dire ce que fait l’algorithme
– Nom: …………………………………………….. Déclaration des types
– Type: …………………………………………………….. Déclaration des variables
– Utilisation: ………………………………………………….. Début
– Valeur initiale: …………………………………………………. instruction 1
instruction 2
– Valeur finale: ……………………………………………………….
…..
– Sens: définition de ce qu’il contient
Fin

13 14

Types simples
• Eléments de « départ »
Objets simples et instructions • Supposés « connus » de l’ordinateur
simples • Ensemble d’opérations pour les manipuler
• Représenter sur une certaine taille (en bits)
• Opérandes dans les instructions simples
• Peuvent être combiner pour former les types
complexes

15 16

Types simples Types simples (opérations)


• Booléen : valeur représentée sur …………(VRAI, • Booléen :
– Négation  ………………………….
FAUX)
– Et  ……………………………………….
• Caractère : représenté sur ……………………. – Ou  …………………………………………….
• chaines de caractères : suite consécutive de – Comparaison: ……………………………………………………
• Caractère :
………………………………………………
– Comparaison  …………………………………………………..
• Entier : représenté sur …….. …………….. bits ; • chaines de caractères :
• réel : représenté sur ……………………………..bits. • Longueur (ch): donne le nombre de caractères dans ch
• Concaténer  ch1+ch2

17 18

3
27/09/2016

Types simples (opérations) Identificateur


Nombre (Entier, réel) • nom donné à un espace mémoire ou à un
• Addition +  a+b objet pour le désigner tout au long de
• Multiplication: *  a*b l’algorithme;
– ………………………………………….
• Soustraction : -  a-b
– …………………………………………………
• Opposé: -  -a – ……………………………………………………….
• Division (entière): div ou ÷ – ………………………………………………………….
• Division réelle: / • Composés d’un mélange de lettres, chiffres et
• Modulo (reste de la division): mod ou modulo de « _ », commençant toujours par une lettre

19 20

Variable Variable (déclaration)


• Objet dont la valeur peut changer au cours de • réserver de l’espace mémoire pour stocker des
l’exécution de l’algorithme données
– stocker provisoirement des valeurs, données Var <liste d’identificateurs> : type
issues du disque dur, fournies par l’utilisateur, de
<liste des identificateurs> : type
résultats obtenus par le programme,
intermédiaires ou définitifs
– Possède toujours un type Var val, unNombre: entier
• « boite » que l’ordinateur manipule par une nom, prénom : chaînes de caractères
étiquette (son identificateur)
21 22

Constante Utilisation des objets


• objet dont la valeur ne doit jamais tout au long de • Opérande
l’algorithme
• Déclarer réserver de l’espace mémoire pour stocker • résultat (à l’exception des constantes)
des données dont la valeur est fixée pour tout
l’algorithme • pour la réception (saisie) des données de
l’utilisateur
constante (<identificateur> : type) ←<expression> • pour lui afficher le résultat (écran).
Constante • pour passer les paramètres aux procédures et
MAX : entier ←100 aux fonctions.
DOUBLEMAX : entier ←MAX ×2 ;
DEUX5;

23 24

4
27/09/2016

Instruction Instructions simples


• Ordre que l’on doit exécuter: • Commentaire: simple explication
• Affichage du contenu d’un objet
• Simple: ………………………………………………….. – écrire à l’écran la valeur contenue dans l’objet.
• Composée: ……………………………………………. – Ne modifie pas la valeur de l’objet.
………………………………………………………………. ecrire(liste de noms de variables, de constantes ou
d’expressions)
• Seul moyen permettant de manipuler les • Saisie de la valeur d’un variable
objets – communiquer à l’ordinateur les valeurs de ses données.
• Éléments qui composent un algorithme Après l’exécution de cette instruction, les variables
contiennent les valeurs saisies par l’utilisateur.
Lire(liste des variables)
25 26

Instructions simples Instructions simples


• Affectation des valeurs Affectation
• permet de ranger la valeur d’une expression dans une variable.
– ranger la valeur d’une expression dans une variable; deux parties séparées par une flèche :
– deux parties séparées par une flèche : variable et – Variable
expression. – Expression (variable, constante, calcul arithmétique ou logique).
• …………………………………………………………………………………
…………………………………………………………………………………... Var ← Expression ;
– Après l’exécution de cette instruction, la variable Var contient le
résultat de calcul de l’expression « expression ». I
Var ← Expression ; – Interdiction stricte de mettre une constante à la place de Var.
– Après l’exécution de cette instruction, la variable Var
contient le résultat de calcul de l’expression nom ←"Venus"
« expression ». Il est strictement interdit de mettre val ←50
une constante à la place de Var. val ←val ×2

27 28

Simulation d’un algorithme Instructions composées


• exécuter séquentiellement et dans l’ordre • composées de plusieurs instructions
l’algorithme instructions après instructions. simples.
• trouver ce que fait l’algorithme. • constituent le bloc d’instructions que l’on
– représenter dans un tableau en colonne les
différents objets manipulés dans l’algorithme et
voudrait exécuter suivant une condition
en ligne les instructions. ou de manière répétitive.
– A chaque intersection, placer la valeur que prend – …………………………………………………………………
l’objet après l’exécution de l’instruction. – ………………………………………………………..

29 30

5
27/09/2016

Structures conditionnelles Structures conditionnelles


• spécifier les instructions dont l’exécution dépend Cas 2: avec alternative
du résultat d’une condition
si <expression logique> alors
Cas 1: sans alternative
bloc d’instructions N°1
sinon
si <expression logique> alors
bloc d’instructions N°2
bloc d’instructions
finsi
finsi
suite … suite …

31 32

Structures conditionnelles Choix


Cas 3: alternative + imbrication • Plus deux choix possibles,
• facilite l’écriture.
si <expression logique> alors
bloc d’instructions N°1 selon <identificateur>
sinon si <expression logique> alors (liste de) valeur(s) : instructions
bloc d’instructions N°2 (liste de) valeur(s) : instructions…
finsi
finsi [défaut: instructions]
suite … Fin

33 34

Structures itérations (boucles) Boucle pour


• répéter un certain nombre de fois ou répéter une suite d’instructions un certain nombre
de fois
jusqu’à la vérification d’une condition pour <compteur> allant de val_init à val_fin
[pas=constante] faire
un bloc d’instructions
Bloc d’instructions
–Pour Fpour
Suite…
–Tant que condition
–Répéter … jusqu’à condition NB: ………………………………………………………………………
…………………………………….……………………

35 36

6
27/09/2016

Boucle pour Boucle pour (compteur)


• Le bloc d’instructions est exécuté autant de fois • Ses valeurs suivent une suite arithmétique à
que le nombre de valeurs comprises entre valeur entière:
val_init et val_fin (inclus) en respectant le pas.
– U0 = Val_init
• Au début, le compteur prend la valeur val_init.
– Raison = pas
• Le changement de valeur du compteur se fait
automatiquement. – Umax = Val_fin ou Umin = Val_fin
• Dès que le compteur « traverse » la valeur
val_fin, le bloc d’instructions ne s’exécute plus et
l’algorithme continue la première instruction
écrite après fpour
37 38

Boucle tant que … Boucle tant que …


• utilisée lorsque le nombre de fois que initialisation de la (des) variable(s) de condition
l’exécution du bloc d’instructions n’est pas tant que <expression logique (vraie)> faire
connu. bloc d’instructions
• Existence d’une condition qui devra devenir ré-affectation de la (des) variable(s) de
fausse pour arrêter l’exécution du bloc. condition
• répéter une suite d’instructions tant qu’une fintantque
condition est remplie
suite….

39 40

Boucle répéter…jusqu’à Tant que vs répéter


• exécuter une suite d’instructions au moins Tant que répéter
une fois et la répéter tant qu’une condition • condition vérifiée avant • condition vérifiée après
n’est pas remplie chaque exécution du chaque exécution du
traitement traitement
• le traitement peut donc • le traitement est
Répéter ne pas être exécuté exécuté au moins une
Bloc d’instructions • la condition porte fois
instructions de modification de la condition surtout sur la valeur de • la condition porte
nouvelles variables surtout sur le résultat
jusqu’à <expression logique (vraie)>
du traitement
41 42

7
27/09/2016

Types de données composés


• Impossible de représenter certaines
informations à l’aide des données de types
simples
Types de données composés • Mise en commun des éléments de types
simples pour un ensemble plus complexe
• Doivent être déclarés dans la partie « type »
du corps d’algorithme et les variables de types
créées dans l’algorithme
• Tableaux et enregistrements
43 44

Tableau Tableau
• Composé des éléments de même type Type type_tab= tableau*1…MAX+ de
(homogène)
type_des_éléments
• Taille fixée dès la déclaration du type
• Éléments numérotés de 1 à n, accès aux éléments
avec ces numéros • Max : ……………………………………………………
Exemple:
– Vecteur  (1, 2, 7, -6, 4, 5, 2) • Type_tab : ……………………………………………….
– Prénom  (J,E,A,N) • Type_des_éléments : ………………………………….
– Liste des étudiants
– matrice

45 46

Tableau Tableau (accès aux éléments)


Var_tab :type_tab ; • toujours élément par élément
– Var_tab : nom de la variable • accéder à l’élément d’indice i : Var_tab[i]
– Type_tab : nom du type • assurer que les indices ne sortent pas des bornes
Exemple : tableau de 10 éléments réels dans un Exemple :
algorithme – i1
• type – V[i]0 ;
Type tab10=tableau*1…10+ de réel – ecrire(V[3]) ;
– lire(V[2])
• Variables
– V[i]=V[i-1]+V[i-2]
V, t : tab10 ;
47 48

8
27/09/2016

Tableau (Opérations) Tableau à plusieurs dimensions


1. Créer un tableau (initialiser) Type nom_type = tableau*1…MAX1 ; 1…MAX2]
2. Afficher un tableau de type_éléments
3. ranger n valeurs dans un tableau
4. récupérer, consulter des valeurs rangées dans un
tableau • Nom_type : ……………………………………………
5. rechercher si une valeur est dans un tableau • MAX1: ……………………………………………..
6. Mettre à jour un tableau
7. effectuer des opérations entre tableaux : • MAX2 : …………………………………………………
comparaison de tableaux, multiplication, … • Type_éléments : …………………………………….
8. Trier un tableau
49 50

Tableau à plusieurs dimensions Enregistrement


Var M : nom_type • Type de données hétérogène;
Exemple • objet dont les éléments peuvent être
Type matrice = tableau*1…10 ; 1…20+ de entier composés de différents champs;
Var M1: matrice • chaque champ est de type quelconque;
M1[1,1]0 • d’abord déclarer le type enregistrement, puis
Ecrire (M1[i,i]) déclarer une variable de ce type
Lire(M1[i,j])

51 52

Enregistrement (déclaration) Enregistrement (utilisation)


Type nom_type = enregistrement Séparé le nom de la variable et le champ par un « . »
Champ1 : type1 Type etudiant=enregistrement
…. matricule : chaine de caractères
Champn : typen
nom: chaine de caractères
Finenreg
age:entier
Variable Finenreg
Nom_var : nom_type
Var
• Nom_type : ……………………………………………... e : etudiant
• Champ1,…,champn : différents attributs qui composent le type; Lire(e.matricule)
• Type1,…,typen : …………………………………………………….. Ecrire(e.nom)
e.age15

53 54

9
27/09/2016

Modularité des algorithmes


• sous – algorithme : algorithme qui peut être
appelé par un autre pour exécuter une tâche
dans celui-ci;
• conçu pour faire un traitement bien défini, bien
Modularité des algorithmes délimité, si possible indépendamment du
contexte particulier de l’algorithme appelant
• Algorithme appelant: ………………………………..
…………………………………………..
• Algorithme appelé: ……………………………..
…………………………………………………….
55 56

Modularité des algorithmes Sous - algorithme


Schéma classique Principe de modularité Algorithme nom_sous_algo(D paramètres_données, R
paramètres_résultats, R/D…)
Algorithme Algorithme
Données
Déclaration des variables locales
Données
Début Début
Debut Traitement
Initialisation des traitements;
Initialisation des traitements
Sous-algorithme1 ; Affectation des résultats ou [retourner resultat]
Traitement
Sous-algorithme2 ; Fin
Communication des résultats
… • Paramètres_données: ……………………………..
Fin Sous-algorithme_n
………………………………………………………………………….
Communication des résultats
Fin • Paramètres-résultats: ……………………………………..
………………………………………………………………………

57 58

Sous – algorithme (2 types) Sous – algorithme (précautions)


• A l'appel du sous-algorithme, les valeurs des arguments sont • Le nombre de paramètres doit correspondre au nombre
affectées aux paramètres de statut. d’arguments.
– Donnée (D) : n’est pas modifié par le sous-algorithme appelé. • Le type du kième argument doit correspondre au type du kième
– Résultat (R) : censé contenir le résultat à la fin du sous-algorithme. paramètre.
• A l’entrée d’un sous-programme, les arguments deviennent • Un paramètre défini en "Donnée" doit correspondre à un
des paramètres. argument qui possède une valeur dans l’algorithme appelant
– formels lors de l’écriture du sous-algorithme; au moment de l’appel.
– paramètres effectifs lors de l’appel du sous-algorithme
• Un paramètre défini en "Résultat" doit recevoir une valeur
• A la sortie du sous-algorithme, les valeurs des paramètres de dans le sous-algorithme
statut (R) ou (D/R) sont affectées.

59 60

10
27/09/2016

Sous – algorithme (2 types) Programmation modulaire


• Fonctions • diviser un problème complexe en sous-
– sous-algorithme qui retourne une valeur;
– peut participer à toute expression comme opérande. problèmes plus simples
– les arguments d’une fonction sont tous des données (en principe).
– La valeur retournée par une fonction doit être systématiquement
• résoudre chaque sous-problème par un sous-
utilisée une instruction (affichage, affectation,…) algorithme (module)
• Procédures
– sous-algorithme qui peut retourner zéro, un ou plusieurs résultats; • puis fusionner ces modules pour résoudre le
– écrite comme toute instruction; problème de départ
– ne doit pas figurer dans les instructions car son appel constitue une
instruction.
– résultats retournés sont contenus dans les arguments marqués ‘R’.

61 62

Programmation modulaire
• identifier les différents traitements contribuant au travail
demandé et organiser l'enchaînement des étapes (analyse
descendante)
• Permettre une mise au point progressive, module par
module
• Faciliter la maintenance des programmes : modifier le
traitement lui-même sans changer le rôle particulier d'un Fichiers
module
• fabriquer composants logiciels réutilisables.
• Limiter les erreurs, un algorithme court a souvent moins de
fautes
• Factoriser les algorithmes; éviter d’écrire la même chose
plusieurs fois.

63 64

Fichier Fichier (Structure)


• Conserver les informations de manière permanente • délimitation par un caractère
• fichier organisé : même genre d'information à chaque – faible encombrement en place mémoire ;
ligne (fichier texte). – ………………………………………………………………..
– Ces lignes sont alors appelées des enregistrements 16A0001;toto; 16
• fichier non organisé : ……………………………………… 16B238;Nana Momo;20

• fichier texte : …………………………………………………. • champs de largeur fixe


………………………………………………………………….. – Récupération rapide des différents champs
– ……………………………………………………………………..
• Fichier binaire: …………………………………………..
16A0001 toto 16
(exécutables, son, vidéo,…)
16B238 Nana Momo 20
65 66

11
27/09/2016

Fichier (Accès) Fichier (Instructions)


• direct F = OuvrirFichier(chemin, ‘mode’)
– Accès à une information i ne dépend pas de son • F: nom logique à utiliser dans l’algorithme
emplacement
• Chemin: nom physique (que l’on voit dans
– Plus rapide
l’explorateur)
• séquentiel
• Mode: ………………………………………………………..
– Pour accéder à l’information i, il faut parcourir toutes les – ‘r’ : ouvrir en lecture, récupérer uniquement les informations qu’il
informations qui la précèdent contient, impossible de les modifier;
– Plus lent – ‘w’ : ouvrir en écriture, mettre les informations ; perte des informations
précédentes;
– ‘a’ ouvrir en ajout: ni lire, ni modifier les informations existantes; juste
ajouter de nouvelles lignes

67 68

Fichier (Instructions) Fichier (algo classique)


• LireFichier(F, chaine): récupère Variable F : Fichier
l’enregistrement suivant dans le fichier et le Nom_chemin : chaine de caractères
place dans « chaine » Début
• EcrireFichier(F,chaine) : écrire la variable FOuvrir (nom_chemin, ‘R’)
« chaine » dans le fichier F. Tant que Non EOF(F)
• EOF (F) : fonction EOF (End Of File) pour tester LireFichier (F, ch)
la fin. //traitement
FinTantQue
Fermer (F)
69 Fin 70

12

Vous aimerez peut-être aussi