8PRO100 Éléments de programmation Comment répéter plusieurs fois une séquence d’instructions.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Les fonctions A quoi ça sert ?
Rappels C.
Algorithmique (suite)
Portée des variables VBA & Excel
Calculs de complexité d'algorithmes
DECLARATION DE VARIABLES
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
C.
5. Les structures répétitives
8. Les tableaux P. Costamagna – ISEN N1.
Section VIII Modularité Partie II
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
1)Boucle for 2)Boucle while
Section VI Structures répétitives (suite)
Langage C Révision.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Récursivité.
Algorithmique et Programmation
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Les éléments de base de l’algorithmique
Python La structure itérative
Introduction à la programmation (Java)
Algorithmes et résolution de problèmes FGE
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les structure d’un programme :
IFT Structures de données
Introduction à l’algorithmique
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Instruction sélective switch-case Instruction répétitive do-while For
PROGRAMMATION SCIENTIFIQUE EN C
8PRO107 Éléments de programmation
8PRO107 Éléments de programmation
1 La récursion. Nous avons vu qu'un programme est constitué d'un ensemble de fonctions. Il est possible pour une fonction donnée d'appeler une autre fonction.
Chapitre 8 Structure de contrôle.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Parcours d'une séquence de longueur fixe
La librairie assert.h.
Exemple de gestion d'un buffer clavier en liste circulaire
Le langage C Structures de données
LA LOGIQUE ALGORITHMIQUE
Solution td 1.
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Sous-programmes.
PHP 3° PARTIE : GESTION DE FICHIERS ET DE REPERTOIRES
Déclaration des données constantes Déclaration des données variables
Les Structures De Contrôle Itératives Complètes
Les structures répétitives en PHP Réfs : manuel p 317.
Procédures et fonctions Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Programmation objet La base.
Cours d’ Algorithmique 2012 Algorithmique. Cours d’ Algorithmique 2012 Qu’est ce que l’Algorithmique ? Avez-vous déjà suivi une recette ? Avez-vous déjà.
Décomposition et paramétrage des algorithmes
Labo 4 : Les structures et les entrées et sorties
 Syntaxe du langage PHP
1 Quatrième journée Les flots de données Les entrées/sorties Les flots de données Les entrées/sorties.
Introduction au langage C Fonctions et Procédures
Introduction à la récursivité
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Initiation à l’Algorithmique
Ecrire 10 fois "Bonjour" sur 10 lignes différentes
Module algorithmique et programmation
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
02/10/2015Les structures de contrôle1 COURS A2I12 Initiation à l'algorithmique illustrée par le langage C Guillaume BOURLET Département GEII IUT Sénart/Fontainebleau.
Algorithmique Boucles et Itérations
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
BASE DE L’ALGORITHMIE.  Un système d’instructions.  Pour résoudre d’un problème ou d’une classe de problèmes  Recette de cuisine pour faire un gâteau.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Transcription de la présentation:

8PRO100 Éléments de programmation Comment répéter plusieurs fois une séquence d’instructions

Étude de cas 6.1 Additionner une série d’entiers Description du problème: Calculer et imprimer la somme d’une série d’entiers données en entrée. Spécification de l’entrée: Une liste d’entiers Sortie: Un entier

Étude de cas 6.1 Fonction principale quatre entiers: n1 n2 n3 n4 un entier: somme lire n1 n2 n3 n4 somme = n1 + n2 + n3 + n4 écrire somme

Étude de cas 6.1 Fonction principale entier n1 n2 n3 n4 entier somme lire n1 n2 n3 n4 somme = n1 + n2 + n3 + n4 afficher somme Remarque: Ne fonctionne que si la liste ne contient que 4 entiers.

Étude de cas 6.1 Fonction principale entier: somme somme = total(); écrire somme

Étude de cas 6.1 Fonction total En-tête: entier total() Corps: 2 entiers: somme, nombre somme = 0 tant que ( il y a encore des entiers à lire) faire lire nombre somme = somme + nombre retourner somme

Étude de cas 6.1 Forme générale tant que ( condition ) faire instruction En C while ( instruction ) instruction

Étude de cas 6.1 Fonction total En-tête: entier total() Corps: deux entiers: somme, nombre somme = 0 tant que ( il y a encore des entiers à lire) faire lire nombre somme = somme + nombre retourner somme

Étude de cas 6.1 Fonction total En-tête: entier total() Corps: entier somme nombre somme = 0 tant que ( il y a encore des entiers à lire) faire lire nombre somme = somme + nombre retourner somme Comment spécifier cette condition?

Étude de cas méthodes Mettre le nombre d’entiers à lire au début de la liste Mettre une valeur spéciale à la fin de la liste Utiliser la valeur de retour de la fonction de lecture

Étude de cas 6.1 Fonction principale deux entiers: somme n lire n somme = total(n); afficher somme où total satisfait le prototype total(entier) retourne un entier Méthode 1

En-tête: total(entier n) retourne un entier Corps: deux entiers: somme, nombre un entier: compteur somme = 0 compteur = 0 tant que (compteur < n) faire lire nombre somme = somme + nombre compteur = compteur + 1 retourner somme Étude de cas 6.1 compte le nombre d’itérations Méthode 1

En-tête: total() retourne un entier Corps: deux entiers: somme nombre un entier: fini somme = 0 fini = 1 tant que (fini  0) faire lire nombre si (nombre = valeur_spéciale) alors fini = 0 sinon somme = somme + nombre retourner somme Étude de cas 6.1 Mis à 0 après avoir lu la valeur spéciale Méthode 2

En-tête: total() retourne un entier Corps: deux entiers: somme nombre un entier: fini somme = 0 fini = 1 tant que (fini  0) faire lire nombre si (nombre = valeur_spéciale) alors fini = 0 sinon somme = somme + nombre retourner somme Mis à 0 après avoir lu la valeur spéciale valeur indiquant la fin de la liste pas d’argument Méthode 2 Étude de cas 6.1 drapeau

Fin de fichier Un programme peut lire des données en provenance du terminal(programme interractif) d’un fichier(programme non interractif) Étude de cas 6.1

Fin de fichier Un programme peut lire des données en provenance du terminal(programme interractif) d ’un fichier(programme non interractif) Étude de cas 6.1 Dans un fichier: Lorsqu’il n’y a plus de donnée à lire on dit que c’est la fin du fichier. La plupart des fonctions de lecture retournent une valeur spéciale lorsqu’elles rencontrent la fin d’un fichier. Nous dénoterons cette valeur par FDF (Fin De Fichier).

Fin de fichier Un programme peut lire des données en provenance du terminal(programme interractif) d ’un fichier(programme non interractif) Étude de cas 6.1 Au terminal: Lorsqu’un programme lit au terminal, comment sait-il qu’il a atteint la fin du fichier? L’utilisateur doit envoyer un signal de fin de fichier en appuyant sur ^d (sur Unix) ou ^z (sur Windows). Dans un fichier: Lorsqu’il n’y a plus de donnée à lire on dit que c’est la fin du fichier. La plupart des fonctions de lecture retournent une valeur spéciale lorsqu’elles rencontrent la fin d’un fichier. Nous dénoterons cette valeur par FDF (Fin De Fichier).

En-tête: total() retourne un entier Corps: deux entiers: somme nombre un entier: fini somme = 0 fini = 1 tant que (fini  0) faire si (lire(nombre) = FDF) alors fini = 0 sinon somme = somme + nombre retourner somme Étude de cas 6.1 Méthode 3

En-tête: total() retourne un entier Corps: entier somme nombre somme = 0 tant que (lire(nombre)  0) faire somme = somme + nombre retourner somme Étude de cas 6.1 Méthode 3 (version2)

int total(void) { int somme, nombre; somme = 0; while (cin>>nombre) somme = somme + nombre; return somme; } Étude de cas 6.1 En C

Étude de cas 6.2 Additionner les n premiers entiers pairs Description du problème: Calculer et afficher la somme des n premiers nombres entiers pairs. Spécification de l’entrée: Un nombre entier n  1

Étude de cas 6.2 Fonction principale (1) deux entiers: n, somme lire n si (n < 0) alors afficher “Erreur dans les données” sinon afficher “La somme des ” n “premiers entiers pairs est ” sommepair(n) où sommepair est une fonction satisfaisant le prototype sommepair(entier) retourne un entier

Étude de cas 6.2 Fonction principale deux entiers: n, somme lire n si (sommepair(n, somme) < 0) alors écrire “Erreur dans les données” sinon écrire “La somme des ” n “premiers entiers pairs est ” somme où sommepair est une fonction satisfaisant le prototype sommepair(entier, entier référence) retourne un entier

Étude de cas 6.2 Fonction sommepair (version 1) En-tête: sommepair(entier n, entier référence somme) retourne un entier Corps: entier: compteur si (n < 1) retourner -1 somme = 0 compteur = 1 tant que (compteur  n) faire somme = somme + 2*compteur compteur = compteur + 1 retourner 0

Étude de cas 6.2 Fonction sommepair (version 1) En-tête: sommepair(entier n, entier référence somme) retourne un entier Corps: entier: compteur si (n < 1) retourner -1 somme = 0 compteur = 2 tant que (compteur  n) faire somme = somme + compteur compteur = compteur + 1 retourner 0 1 n) 2*compteur 1

Étude de cas 6.2 Fonction sommepair (version 2) En-tête: sommepair(entier n, entier référence somme) retourne un entier Corps: entier: compteur si (n < 1) retourner -1 somme = 0 compteur = 2 tant que (compteur  2*n) faire somme = somme + compteur compteur = compteur + 1 retourner 0 2 2*n) compteur 2

Étude de cas 6.2 pour i allant de k à n avec pas de s faire instruction i = k tant que (i  n) faire instruction i = i + s Les boucles avec incrémentation automatique équivalent à

Étude de cas 6.2 for (i=k; i<=n; i=i+s) instruction i = k; while (i  n){ instruction i = i + s; } En C équivalent à

Étude de cas 6.2 Fonction sommepair (version 3) En-tête: sommepair(entier n, entier référence somme) retourne un entier Corps: entier: compteur si (n < 1) retourner -1 somme = 0 pour compteur allant de 1 à n avec pas de 1 faire somme = somme + 2*compteur retourner 0

Étude de cas 6.3 Calculer la moyenne des notes Description du problème: Calculer la moyenne de chacun des étudiants d’une classe où chaque étudiant a exactement n notes. La moyenne de la classe doit aussi être calculée. Spécification de l’entrée: La première ligne d’entrée contient la valeur n. Il y a ensuite autant de lignes que d’étudiants dans la classe, chacune contenant un numéro d’identification suivit des n notes.

Étude de cas 6.3 Exemple

Étude de cas 6.3 Fonction principale deux entiers: nbnotes moyenne lire nbnotes moyenne = moyenne_groupe(nbnotes) afficher “La moyenne du groupe est” moyenne où moyenne_groupe est une fonction respectant le prototype moyenne_groupe(entier) retourne un entier

Étude de cas 6.3 Fonction moyenne_groupe En-tête: moyenne_groupe(entier n) retourne un entier Corps: pour chaque étudiant dans la liste faire calculer la moyenne des n notes afficher la moyenne retourner la moyenne du groupe

Étude de cas 6.3 Fonction moyenne_groupe En-tête: moyenne_groupe(entier n) retourne un entier Corps: trois entiers: mgroupe metudiants nbetudiants un entier: id tant que (lire(id)  FDF) faire metudiants = total(n) / n écrire “La moyenne de l’étudiant ” id “est ” metudiants retourner la moyenne du groupe

Étude de cas 6.3 Fonction moyenne_groupe En-tête: moyenne_groupe(entier n) retourne un entier Corps: trois entiers: mgroupe metudiants nbetudiants un entier: id tant que (lire(id)  FDF) faire metudiants = total(n) / n écrire “La moyenne de l’étudiant ” id “est ” metudiants retourner la moyenne du groupe fonction vue précédemment

Étude de cas 6.3 Fonction moyenne_groupe En-tête: entier moyenne_groupe(entier n) Corps: entier mgroupe metudiants nbetudiants entier id nbetudiants = 0 tant que (lire(id)  FDF) faire metudiants = total(n) / n écrire “La moyenne de l’étudiant ” id “est ” metudiants retourner mgroupe nbetudiants = nbetudiants + 1 mgroupe = mgroupe + metudiants mgroupe / nbetudiants nbetudiant = 0

Étude de cas 6.4 Accumulation d’intérêts Description du problème:Étant donné un investissement initial et un taux d’intérêt annuel, déterminer le nombre d’années nécessaire pour atteindre un objectif spécifié en entrée. Faire ceci pour des intérêts simples et composés. Spécification de l’entrée: Trois valeurs réelles  0: l’investissement initial, le taux d’intérêt annuel et l’objectif.

Étude de cas 6.4 Fonction principale trois réels: initial, taux_annuel, objectif deux entiers: nbsimple, nbcompose lire initial taux_annuel objectif si (initial  0 ou taux_annuel  0 ou objectif  initial ) écrire “Erreur dans les données” sinon nbsimple = simple(initial, taux, annuel, objectif) nbcomp = compose(initial, taux, annuel, objectif) afficher “nombre d’années (simple): ” nbsimple afficher “nombre d’années (composé): ” nbcom où simple et compose sont des fonctions respectant les prototypes: simple(réel, réel, réel) retourne un entier compose( réel, réel, réel) retourne un entier

Étude de cas 6.4 Fonction simple En-tête: simple(réel initial, réel taux, réel objectif) retourne un entier Corps: réel: cumul entier: annees cumul = initial annees = 0 tant que (cumul < objectif) faire cumul = cumul + initial*taux/100 annees = annees + 1 retourner annees

Étude de cas 6.4 Fonction compose En-tête: compose(réel initial, réel taux, réel objectif) retourne un entier Corps: réel: cumul entier: annees cumul = initial annees = 0 tant que (cumul < objectif) faire cumul = cumul + cumul*taux/100 annees = annees + 1 retourner annees

Étude de cas 6.4 tant que (condition) faire instruction faire instruction tant que (condition) Autre type de boucle Utilisé lorsque le corps de la boucle doit être exécuté au moins une fois Pour s’assurer que le corps de la boucle ne soit jamais exécuté si la condition est fausse.

Étude de cas 6.4 Fonction simple En-tête: simple(réel initial, réel taux, réel objectif) retourne un entier Corps: réel: cumul entier: annees cumul = initial annees = 0 faire cumul = cumul + initial*taux/100 annees = annees + 1 tant que (cumul < objectif) retourner annees

Étude de cas 6.4 Fonction compose En-tête: compose(réel initial, réel taux, réel objectif) retourne un entier Corps: réel: cumul entier: annees cumul = initial annees = 0 faire cumul = cumul + cumul*taux/100 annees = annees + 1 tant que (cumul < objectif) retourner annees

Étude de cas 6.4 Pseudo-code faire instruction tanque (condition) En C do instruction while (expression);