1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Algorithmique & Langage.

Slides:



Advertisements
Présentations similaires
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Advertisements

Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 18/09/2016 Cours microprocesseurs.
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 20/09/2016 Algorithmique & Langage.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Table ronde – Réseaux et recherche d'emploi Comment fonctionne le réseau professionnel, comment le mobiliser et le développer lorsqu’on est étudiant ?
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 25/09/2016 ● Algorithmique & Langage.
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
CINI – Li115 1 Semaine 3 Boucles (suite), tirages aléatoires, bibliothèque graphique ● Imbrication d'instructions if et for ● Boucles for imbriquées ●
1 © Copyright 2007, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Algorithmique & Langage.
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Algorithmique & Langage.
CINI – Li115 1 Semaine 4 Révisions ● Questions de cours ● Types des expressions ● Déclaration de variables ● Instruction conditionnelle et boucles ● Structure.
1 © Copyright 2006, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 27/09/2016 ● Algorithmique & Langage.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 27/09/2016 Algorithmique & Langage.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
1 © Copyright 2012, F5OWL Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 13/11/2016 SDR Comment ça marche.
Algorithmique & Langage C IUT GEII S1
Tableaux en C Mardi 2/05.
Les tableaux différencier les variables simples des variables indicées (ordonnées et numérotées) un identificateur unique désigne un ensemble, une collection.
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Quelques Termes INFORMATIQUE ? ORDINATEUR ( Système Informatique)?
« Un langage de programmation est une convention pour donner des ordres à un ordinateur. Ce n’est pas censé être obscur, bizarre et plein de pièges subtils.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Qu'est-ce que POSIX? Une librairie en langage C
Algorithmique & Langage C
Instructions de contrôle
Semaine #1 INF130 par Frédérick Henri.
Javadoc et débogueur Semaine 03 Version A17.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Principes de programmation (suite)
Master Réseaux et Systèmes Distribués (RSD)
Les fonctions.
L’Instruction de Test Alternatif
Algorithmiques Abdelbasset KABOU
Matrices, déclaration en CSharp
SIF-1053 Architecture de ordinateurs
Un Algorithme , c'est Quoi ?
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Langages de programmation TP3
Algorithmique & Langage C
Fonctions Logiques & Algèbre de BOOLE
Algorithmique & Langage C
Cours N°6: Algorithmiques Structures Conditionnelles
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Algorithmique & Langage C IUT GEII S1 Notes de cours (deuxième partie)
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
La méthode du simplexe. 1) Algorithme du simplexe  Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation.
Programmation en C++ C++ de base
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Architecture de machines Le microprocesseur Cours
Entrées/Sorties - Variables - Calculs - Alternative
Calcul Scientifique Initiation à SCILB
Eléments de base du langage C
Exercice : le jeu. Vous devez concevoir l’algorithme permettant de jouer avec votre calculatrice : elle détermine au hasard un nombre caché entier entre.
Semaine #2 INF130 par Frédérick Henri.
Niveau 2 : Tables de plongée
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Flowchart Itération Cours 04.
Programme d’appui à la gestion publique et aux statistiques
Quelle est la valeur de S après exécution des instructions suivantes :
Passage primaire-secondaire
L.P.M Chapitre N°3 Les structures de contrôle itératives Dégager le traitement itératif Problème Nombre d’itération ?? Inconnu à l’avance Connu à l’avance.
Eléments de base du langage C
PROGRAMMATION SOUS R. PRESENTE PAR : ACHETTOU ISMAIL LAARICH TARIQ ENCADRE PAR : Pr. EXPOSÉ SUR LA PROGRAMMATION SUR R 2.
Contenu Systèmes de test parallèles Multithreading Synchronisation
Transcription de la présentation:

1 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Algorithmique & Langage C IUT GEII S1 Les boucles Notes de cours (troisième partie)

2 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Licence P aternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique 2.0 France Vous êtes libres : * de reproduire, distribuer et communiquer cette création au public * de modifier cette création, selon les conditions suivantes : Paternité. Vous devez citer le nom de l'auteur original. Pas d'Utilisation Commerciale. Vous n'avez pas le droit d'utiliser cette création à des fins commerciales. Partage des Conditions Initiales à l'Identique. Si vous modifiez, transformez ou adaptez cette création, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identiqueà celui-ci. * A chaque réutilisation ou distribution, vous devez faire apparaître clairement aux autres les conditions contractuelles de mise à disposition de cette création. * Chacune de ces conditions peut être levée si vous obtenez l'autorisation du titulaire des droits. Ce qui précède n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur : copies réservées à l'usage privé du copiste, courtes citations, parodie...) voir le contrat complet sous :

3 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Plan du cours Boucle while... Algorithmes à connaître Analyser un programme Boucle do...while Boucle for... Le "hasard", l'ordinateur et le C Le temps universel

4 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Boucle while... Permet de répéter l'exécution d'une séquence d'instructions tant que une expression est vraie. exp I; F V Si exp est vraie la séquence I; est exécutée. Puis l'expression est à nouveau évaluée et l'exécution de I; se poursuit tant que exp est vraie.

5 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Boucle while while ( exp ) { I; } exp I; F V

6 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Boucle while Si l'expression est fausse dès la première fois, la séquence d'instructions n'est jamais exécutée. Si l'expression est toujours vraie, la séquence est exécutée infiniment. On a une boucle infinie. En général, les instructions dans le corps de la boucle modifient une variable intervenant dans l'expression et après quelques itérations l'expression devient fausse. Une boucle while permet des répéter des instructions de 0 fois à l'infini.

7 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Exemple : boucle while int i = 0 ; while ( i < 3 ) { printf("A"); i = i + 1 ; } int i = 3 ; while ( i > 0 ) { printf("A"); i = i - 1 ; } int i = 1 ; while ( i <= 3 ) { printf("A"); i = i + 1 ; }

8 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Algorithme à connaître Pour répéter N fois une séquence Ins; : int i = 0; while ( i < N ) { Ins ; i = i + 1 ; }

9 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Analyser un programme int i = 0, j = 6 ; while ( i <= j ) { printf("%d%d",j,i); i = i + 1 ; j = j – 2 ; } printf("%d",i); écran

10 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Boucle do...while do { I; } while ( exp ) ; exp I; F V

11 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Boucle do...while Comme l'expression est évaluée après l'exécution de la séquence I, la séquence est toujours exécutée au moins une fois. Si l'expression est toujours vraie, on a une boucle infinie. La boucle do...while permet de répéter des instructions de une fois à l'infini.

12 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Exemple : do...while int i = 0 ; do { printf("A"); i = i + 1 ; } while ( i < 3 ) ;

13 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Toutes les boucles sont équivalentes Un algorithme utilisant une boucle peut toujours être transformé pour produire le même résultat en utilisant l'autre boucle. Cependant, il vaut mieux utiliser la boucle while (ou for) et réserver la boucle do...while lorsque les instructions du corps de boucle doivent être exécutées au moins une fois au minimum.

14 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Un cas ou do...while est judicieuse Demander une valeur dans un intervalle et recommencer tant que l'utilisateur répond une valeur incorrecte. Ex : demander une valeur réelle comprise entre 1 et 2.

15 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 do...while float x ; do { printf("Entrez une valeur entre 1 et 2 : "); scanf("%f",&x); } while ( x 2.0 ) ; printf("Merci !");

16 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 do...while Demander un nombre entre 1 et 2, cinq fois au maximum. float x ; int n = 5 ; do { printf("Entrez une valeur entre 1 et 2 : "); scanf("%f",&x); n = n – 1 ; } while ( ( x 2.0 ) && (n > 0) ) ; if ( x>=1.0 && x<=2.0 ) { printf("Merci !"); } else { printf("Trop d'erreur !"); }

17 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Boucle for La boucle for est équivalente à la boucle while. int i = 0 ; while ( i < 3 ) { printf("A"); i = i + 1 ; } int i = 0 ; for ( ; i < 3 ; ) { printf("A"); i = i + 1 ; } =

18 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Boucle for for ( ins1 ; exp2 ; ins3 ) { ins ; } ins1 ; while ( exp2 ) { ins ; ins3 ; } = while en "condensé" Avantage : on ne risque pas d'oublier l'initialisation (Ins1) Attention : notez bien que ins3 est exécuté après ins

19 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Boucle for Qu'affiche ce programme ? int i, j = 5 ; for ( i = 0 ; j < 9 ; i = i + 1 ) { printf("%d %d", i, j ) ; j = j + 1 ; } printf("%d %d", i, j ) ;

20 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Opérateurs ++ et -- Ces opérateurs incrémentent ou décrémentent une variable entière. Ils peuvent être placés avant ou après une variable entière. Placé avant l'opération est effectuée avant l'évaluation de l'expression. Placé après l'opération est effectuée après l'évaluation de l'expression. Ex : int i ; l'expression i++ a la valeur de i et comme effet d'incrémenter i l'expression ++i a la valeur de i+1 et comme effet d'incrémenter i

21 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Opérateurs ++ et --

22 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Opérateurs ++ et -- int i=0, j=0 ; for ( ; i < 5 ; i++ ) { printf("%d %d", i, j++ ) ; } printf("%d %d", --i, j-- ) ; Qu'affiche ce programme ?

23 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Opérateurs ++ et -- L'instruction i = i + 1 ; est toujours équivalente à i++; On s'interdit de réutiliser une variable sur laquelle on a appliqué ++ (ou -- ) dans une même expression, car le résultat serait indéterminé. int i=2, j ; j = (i++) + (2 * i) ; j vaut ???? (la valeur de j dépend de l'ordre d'évaluation des opérandes de l'addition ! )

24 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Le hasard Le hasard intervient dans de nombreux domaines de l'informatique : simulation, cryptographie,.... Il est impossible de produire des nombres au hasard avec un algorithme. Tout est prévisible dans le fonctionnement d'un ordinateur. Même si c'est difficile en pratique, il est possible de connaître l'état de la mémoire après un certain temps de fonctionnement.

25 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Le hasard On peut simuler une production de nombres au hasard avec un algorithme en essayant de respecter au mieux deux propriétés essentielles : 1/ chaque nombre à la même probabilité de sortir. 2/ connaissant la suite de nombres tirés depuis de le début, il est impossible (difficile en pratique) de prévoir le prochain nombre qui va sortir. Une suite produite par un algorithme qui vérifie ces propriétés est dite pseudo-aléatoire.

26 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 Suite pseudo-aléatoire La fonction C rand() fournit un nombre peusdo-aléatoire compris entre 0 et le plus grand entier possible (RAND_MAX) à chaque appel. La suite peusdo-aléatoire obtenue dépend d'un paramètre initial, la graine (seed) fixé par la fonction srand(). Pour des valeurs identiques de la graine la suite obtenue est toujours la même. Si on n'utilise pas srand() la graine par défaut est 1. (Ne pas utiliser srand() équivaut à faire srand(1); )

27 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 rand, srand int i, s, x ; printf("seed ? "); scanf("%d",&s) srand(s); for ( i=0; i< 10 ; i++) { x = rand(); printf("%d,", x ); } seed ? 1 41,18467,6334,26500,19169,15724,11478,29358,26962,24464, seed ? 2 45,29216,24198,17795,29484,19650,14590,26431,10705,18316,

28 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 rand, srand Chaque exécution avec la même graine produit toujours la même séquence. Pour obtenir des suites différentes à chaque exécution, on peut modifier la graine à chaque fois en utilisant par exemple l'horloge de la machine : srand ( time(NULL) ) ; Pour obtenir des nombres entre 0 et N, il suffit de prendre le reste dans la division par N+1 du nombre fournit par rand : int x ; x = rand() % (N+1) ; // 0 < x < N

29 © Copyright 2005, Philippe Arlotto tln.fr Creative Commons Attribution-ShareAlike 2.0 license 26/09/2016 le temps Le temps universel coordonné (UTC) est une échelle de temps adoptée comme base du temps civil international par un grand nombre de pays. Dans les systèmes compatibles POSIX (comme linux, windows, MacOS X,BSD,...) ce temps est codé par le nombre de seconde écoulées depuis le 1 er janvier 1970 à 0heure 0minute 0 seconde. La valeur courante peut être obtenue par la fonction time. #include time_t t ; t = time ( NULL ) ; printf( " %ld", t ) ;