8PRO107 Éléments de programmation

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Cours de C – Séance dexercices 12 Octobre Exercice 5 Idem quexercice 1 : lire une ligne au clavier Sans limitation de la longueur de la ligne (utilisez.
Les fonctions A quoi ça sert ?
Le langage C++ Les boucles.
Portée des variables VBA & Excel
Patrick Reuter maître de conférences
C++ 6ème cours Patrick Reuter maître de conférences
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
CHAPITRE 2 Nombres entiers, initiation à l’arithmétique- Nombres rationnels.
C.
Calculs numériques en Prolog
5. Les structures répétitives
8. Les tableaux P. Costamagna – ISEN N1.
Nous allons vous présenter: - Photoshop - Algorithme et programmation
TRAIN SIMPLE Un train simple est constitué d’une suite d’engrenages à axes parallèles dont tous les axes de rotation sont fixes. ECOLE VIRTUELLE TUNISIENNE.
Un algorithme Dans un distributeur automatique de monnaie, on ne trouve que des billets de 10 et 5 €, des pièces de 2 et 1 €. Dans ce distributeur, on.
Démarche de résolution de problèmes
Algorithmique et Programmation
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Bibliothèque standard du C++
Python La structure itérative
Algorithmes et résolution de problèmes FGE
Les fichiers binaires en C++
Conteneurs STL.
L1 - MC1 Contrôle continu : - Partiel 1 (note N1) : 23 octobre 18h
8PRO107 Éléments de programmation Les fonctions. La bibliothèque standard du C/C++ Il y a peu d'opérateurs arithmétiques en C/C++, mais à partir de ceux.
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.
Introduction au C++ héritage / polymorphisme
Standard Template Library
Parcours d'une séquence de longueur fixe
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 4 Polymorphisme II.
Les mirages. Les mirages n6>n5>n4>n3>n2>n1 L’indice de l’air dépend de la température, donc on peut représenter l’air par des couches superposées d’indices.
Formation C++. Hello World ! #include /* Commentaire sur plusieurs lignes */ int main() { //Affiche hello world std::cout
L’essentiel du langage C
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Exercice Écrire l’analyse, l’algorithme et le programme Pascal qui calcule la somme des nombres d'un entier de 3 chiffres et de l’afficher EXEMPLE : N=123.
Programmation Système et Réseau (sous Linux)
Solution td 1.
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
8PRO100 Éléments de programmation Comment répéter plusieurs fois une séquence d’instructions.
8PRO107 Éléments de programmation Les chaînes de caractères.
Décomposition et paramétrage des algorithmes
Exemple à faire: N°2 Ecrire l’Algorithme et le Programme PASCAL qui affiche la somme de deux nombres entiers donnés.
1 Quatrième journée Les flots de données Les entrées/sorties Les flots de données Les entrées/sorties.
Les Machines RAM.
Les surcharges d'opérateurs
Initiation à l’Algorithmique
8PRO107 Éléments de programmation Les tableaux multidimensionnels.
ACTIVITES 20- Racines carrées.
Ecrire 10 fois "Bonjour" sur 10 lignes différentes
Activités mentales séquence 2 prêt. Question 1 Calculer 80 x 0,0 6.
PUISSANCES D’UN NOMBRE
Langage de programmation
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Introduction à la programmation (420-PK2-SL) cours 18 Gestion des applications Technologie de l’information (LEA.BW)
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.
Calculer la somme de deux nombres entiers relatifs
Algorithmique Tableaux de données
Structures de données IFT-2000 Abder Alikacem Laboratoire #1 Département d’informatique et de génie logiciel Édition Septembre 2009.
Visibilité de variables Paramètres de fonction premier auteur : Agata Savary.
Algorithmique Boucles et Itérations
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
Journal mathématiques.
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.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Activités mentales séquence 2 prêt. Question 1 Calculer 0, 9 x 0,8.
Int 10. Int 6.
Transcription de la présentation:

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

Additionner une série d’entiers É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ée 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: Fonctionne si la liste ne contient que 4 entiers.

É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 // fichier : c5ex1_0.cpp #include <iostream> int main () { int n1, n2, n3, n4 ; int somme ; std::cout << "Entrez quatre entiers : " ; std::cin >> n1 >> n2 >> n3 >> n4 ; somme = n1 + n2 + n3 + n4 ; std::cout << "La somme est " << somme << std::endl ; return 0 ; } Remarque: Fonctionne si la liste ne contient que 4 entiers.

Étude de cas 6.1 Fonction principale entier somme, nombre somme  0 TANT QUE ( il y a encore des entiers à lire) FAIRE LIRE nombre somme  somme + nombre ÉCRIRE somme

Étude de cas 6.1 En utilisant un sous-programme 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

TANT QUE condition FAIRE Étude de cas 6.1 Forme générale TANT QUE condition FAIRE instruction En C/C++ while ( condition ) instruction ;

Étude de cas 6.1 Fonction principale entier somme, nombre somme  0 TANT QUE ( il y a encore des entiers à lire) FAIRE LIRE nombre somme  somme + nombre ÉCRIRE somme

Étude de cas 6.1 Fonction principale entier somme, nombre somme  0 TANT QUE ( il y a encore des entiers à lire) FAIRE LIRE nombre somme  somme + nombre ÉCRIRE somme Comment spécifier cette condition?

Étude de cas 6.1 Fonction total En-tête: Avec sous-programme 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 Avec sous-programme

Étude de cas 6.1 Fonction total En-tête: Avec sous-programme 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 Avec sous-programme Comment spécifier cette condition?

Étude de cas 6.1 3 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 Méthode 1 Fonction principale entiers n, somme, nombre, compteur LIRE n somme  0 compteur  0 TANT QUE (compteur < n) FAIRE LIRE nombre somme  somme + nombre compteur  compteur + 1 AFFICHER somme

Étude de cas 6.1 Méthode 1 Fonction principale entiers n, somme, nombre, compteur LIRE n somme  0 compteur  0 TANT QUE (compteur < n) FAIRE LIRE nombre somme  somme + nombre compteur  compteur + 1 AFFICHER somme #include <iostream> int main () { int n, somme, nombre, compteur ; somme = 0 ; compteur = 0 ; std::cout << "Entrez combien de nombres à additionner: " ; std::cin >> n ; std::cout << "Entrez vos " << n << " nombres:" << std::endl ; while ( compteur < n ) std::cin >> nombre ; somme = somme + nombre ; compteur = compteur + 1 ; } std::cout << "La somme de vos " << n << " nombres est "<< somme << std::endl ; return 0 ;

Étude de cas 6.1 Méthode 1 Avec sous-programme Fonction principale deux entiers : somme, n LIRE n somme  total(n) AFFICHER somme où total satisfait le prototype total(entier) retourne un entier

total(entier n) retourne un entier Étude de cas 6.1 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 Avec sous-programme compte le nombre d’itérations

total(entier n) retourne un entier Étude de cas 6.1 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 Avec sous-programme // fichier : c5ex1_1.cpp #include <iostream> int total ( int n ) { int somme, nombre ; int compteur ; somme = 0 ; compteur = 0 ; std::cout << "Entrez vos " << n << " nombres:" << std::endl ; while ( compteur < n ) std::cin >> nombre ; somme = somme + nombre ; compteur = compteur + 1 ; } return somme ; int main () int somme, n ; std::cout << "Entrez combien de nombres … additionner: " ; std::cin >> n ; somme = total(n) ; std::cout << "La somme de vos " << n << " nombres est "<< somme << std::endl ; return 0 ; compte le nombre d’itérations

Étude de cas 6.1 Méthode 2 Fonction principale entiers somme, nombre 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 AFFICHER somme Mis à 0 après avoir lu la valeur spéciale

Étude de cas 6.1 Méthode 2 Fonction principale entiers somme, nombre 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 AFFICHER somme drapeau Mis à 0 après avoir lu la valeur spéciale valeur indiquant la fin de la liste

Étude de cas 6.1 Avec sous-programme Fonction principale entier : somme somme  total() ÉCRIRE somme

total() retourne un entier Étude de cas 6.1 Méthode 2 Avec sous-programme 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

total() retourne un entier Étude de cas 6.1 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 pas d’argument Mis à 0 après avoir lu la valeur spéciale drapeau valeur indiquant la fin de la liste

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

Étude de cas 6.1 Fin de fichier Un programme peut lire des données en provenance du terminal (programme interactif) d’un fichier (programme non interactif) Dans un fichier : Lorsqu’il n’y a plus de données à 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).

Étude de cas 6.1 Fin de fichier Un programme peut lire des données en provenance du terminal (programme interactif) d’un fichier (programme non interactif) Dans un fichier : Lorsqu’il n’y a plus de données à 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). 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).

Étude de cas 6.1 Méthode 3 Fonction principale entiers somme, nombre entier fini somme  0 fini  1 TANT QUE (fini  0) FAIRE SI (LIRE nombre = FDF) ALORS fini  0 SINON somme  somme + nombre AFFICHER somme

Étude de cas 6.1 Méthode 3 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 Avec sous-programme

Étude de cas 6.1 Méthode 3 (version2) Fonction principale entier somme, nombre somme  0 TANT QUE (LIRE nombre  0) FAIRE somme  somme + nombre RETOURNER somme

total() retourne un entier Étude de cas 6.1 Méthode 3 (version2) Avec sous-programme 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 En C/C++ int total () { int somme, nombre; somme = 0; while (cin>>nombre) somme = somme + nombre; return somme; }

Additionner les n premiers entiers pairs É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

Fonction principale (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

Fonction sommepair (version 1) É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) ALORS retourner -1 somme  0 compteur  1 TANT QUE (compteur  n) FAIRE somme  somme + 2*compteur compteur  compteur + 1 RETOURNER 0

Fonction sommepair (version 1) É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) ALORS retourner -1 somme  0 compteur  2 TANT QUE (compteur  n) FAIRE somme  somme + compteur compteur  compteur + 1 RETOURNER 0 1 n) 2*compteur 1

Fonction sommepair (version 2) É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) ALORS 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 Les boucles avec incrémentation automatique i = k TANT QUE (i  n) FAIRE instruction i  i + s équivalent à POUR i allant de k à n avec pas de s faire instruction

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

Fonction sommepair (version 3) É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

Calculer la moyenne des notes É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 suivi des n notes.

Étude de cas 6.3 Exemple 3 75332 78 80 86 75761 95 100 100 75730 67 61 75 75810 23 16 56 75831 88 85 90

É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

Fonction moyenne_groupe É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

Fonction moyenne_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 moyenne_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

Fonction moyenne_groupe É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 nbetudiant  0 nbetudiants  nbetudiants + 1 mgroupe  mgroupe + metudiants mgroupe / nbetudiants

Accumulation d’intérêts É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 ) ALORS É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 Autre type de boucle Pour s’assurer que le corps de la boucle ne soit jamais exécuté si la condition est fausse. TANT QUE (condition) FAIRE instruction FAIRE instruction TANT QUE (condition) Utilisé lorsque le corps de la boucle doit être exécuté au moins une fois

É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 TANT QUE (condition) En C/C++ do instruction while (expression);