CM1-2 : Algorithmique Mickaël Martin Nevot

Documents pareils
Corrigé des TD 1 à 5

Plan du cours. Historique du langage Nouveautés de Java 7

Programme Compte bancaire (code)

Algorithmique et Programmation, IMA

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Cours Informatique Master STEP


EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours d algorithmique pour la classe de 2nde

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Recherche dans un tableau

Examen Médian - 1 heure 30

Conventions d écriture et outils de mise au point

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

STAGE IREM 0- Premiers pas en Python

Bases de programmation. Cours 5. Structurer les données

Algorithmique I. Algorithmique I p.1/??

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Java Licence Professionnelle CISII,

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Découverte de Python

Programmation C++ (débutant)/instructions for, while et do...while

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Algorithmes récursifs

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Introduction à l algorithmique et à la programmation M1102 CM n 3

Solutions du chapitre 4

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

TD3: tableaux avancées, première classe et chaînes

Introduction au langage C

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

ACTIVITÉ DE PROGRAMMATION

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Définitions. Numéro à préciser. (Durée : )

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Programmation en Java IUT GEII (MC-II1) 1

1. Structure d'un programme FORTRAN 95

Présentation du langage et premières fonctions

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Programmer en JAVA. par Tama

Algorithmique et programmation : les bases (VBA) Corrigé

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Introduction à MATLAB R

Cours 1 : La compilation

Cours d Algorithmique et de Langage C v 3.0

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Projet de programmation (IK3) : TP n 1 Correction

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Initiation à la programmation en Python

AWS avancé. Surveiller votre utilisation d EC2

INF 321 : mémento de la syntaxe de Java

Enseignement secondaire technique

1 Recherche en table par balayage

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Cours de Programmation 2

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

TP 1. Prise en main du langage Python

Représentation d un entier en base b

Bernard HAMM, Évelyne LAVOISIER

Algorithmique & programmation

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ALGORITHMIQUE ET PROGRAMMATION En C

Perl Orienté Objet BioPerl There is more than one way to do it

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Chap III : Les tableaux

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Cours de Systèmes d Exploitation

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Licence Sciences et Technologies Examen janvier 2010

V- Manipulations de nombres en binaire

Notions fondamentales du langage C# Version 1.0

Analyse de sécurité de logiciels système par typage statique

I. Introduction aux fonctions : les fonctions standards

CORRECTION EXERCICES ALGORITHME 1

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Initiation à l algorithmique

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Les arbres binaires de recherche

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Chapitre 10. Les interfaces Comparable et Comparator 1

Outils pour la pratique

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Rappels d architecture

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

TD/TP PAC - Programmation n 3

Transcription:

CM1-2 : Algorithmique Mickaël Martin Nevot 22/09/2016 23:27 Cette œuvre de Mickaël Martin Nevot est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d'utilisation Commerciale - Partage à l'identique 3.0 non transposé.

I. Prés. du cours II. Init. à la prog. III. Algo. IV. APP V. Java VI. Java avancé VII. Algo. avancée VIII.UML IX. Génie log. Algorithmique et UML Mickaël Martin Nevot

Algorithmique Suite finie et non-ambiguë d opérations (instructions) permettant de donner la réponse à un problème IXe siècle : Al Khuwarizmi (Algoritmi en latin) Pseudo-code Algorithmique et UML Mickaël Martin Nevot 1/23

Pseudo-code Règle d or : le pseudo-code doit être suffisamment précis pour que quelqu'un d'autre l'ayant lu sans connaître l'algorithme soit capable de le coder (raffinement) Pas de norme officielle Proposition de langage de description algorithmique Un algorithme juste est un algorithme faux qui s ignore! Algorithmique et UML Mickaël Martin Nevot 2/23

Pseudo-code Une seule page : généralement 20 25 lignes Laisser des lignes blanches régulièrement Avoir une bonne indentation Choisir une langue : l anglais? Choisir une convention d écriture Factoriser le code (modularité et règle DRY) Éviter les zones troubles Éviter les cas particuliers Éviter les commentaires Algorithmique et UML Mickaël Martin Nevot 3/23

Pseudo-code Pas de trivialité : Éviter les déclarations des variables locales (mais préserver les initialisations) Éviter les indices de début et de fin des boucles triviales Éviter de préciser les types de certaines variables ou paramètres Pas de détail sur les morceaux de code usuels : Entrées et sorties simples Structures ou méthodes courantes Fonctions de comparaison standards Algorithmique et UML Mickaël Martin Nevot 4/23

Mise en forme / commentaires Mise en forme : Indentation à chaque niveau de bloc Convention de nommage : myprog myvar MY_CONST Commentaires (de type C/C++) // Commentaire (une seule ligne). À éviter /* Autre commentaire (une ou plusieurs lignes). */ /* */ Commentaire (sur plusieurs lignes). Algorithmique et UML Mickaël Martin Nevot 5/23

Structure générale myprog Prototype déclarations de variables, fonctions Déclarations instruction1 instruction2 Corps du programme Algorithmique et UML Mickaël Martin Nevot 6/23

Types/opérateurs Types : Entier (int) : 3 Réel (float) : 2.75 Chaîne de caractère (string) : "hello!" Booléen (boolean) : true Tableau (array) : {500, 200, 100, 50, 20, 10, 5, 2, 1} Opérateurs : Numériques : +, /, *, -, div (division entière), % (modulo) Affectation : Comparaison : =,, >, <, >,, Logiques: or (ou inclusif), and, not, xor (ou exclusif) De chaines : + (concaténation), size (taille) De tableau : size (nombre d éléments) Algorithmique et UML Mickaël Martin Nevot 7/23

Déclaration const myvar:string Mot clé const (optionnel) Identificateur Type (optionnel) Absence de ; var1, var2:float var3 Algorithmique et UML Mickaël Martin Nevot 8/23

Déclaration (tableaux) const myvar:array [0..5] of int Un seul type par tableau (optionnel avec mot de clé of) Absence de ; Mot clé const (optionnel) Identificateur Type (optionnel) Indices minimum et maximum (optionnel) const myvar:array [0..5] [0..8] of int var1:array [0..8] var3:array [1..5][1..10] Tableau multidimensionnel Algorithmique et UML Mickaël Martin Nevot 9/23

Affectation myvar "hello!" Identificateur Symbole d affectation Valeur affectée Absence de «;» const CONST_1 10 var1:float 3.14 var1 10.5 Algorithmique et UML Mickaël Martin Nevot 10/23

Affectation (tableaux) myvar[0] "hello!" Identificateur Symbole d affectation Valeur affectée Absence de «;» myvar:array {1, 4, -1} Type (optionnel) const CONST_1:array [0..10] of int {1, 4, -1} var1:array {500, 200, 100, 50, 20, 10, 5, 2, 1} var2:array [0..5][0..18] var1[4] 15 var2[0][1] "hello!" Algorithmique et UML Mickaël Martin Nevot 11/23

Structure conditionnelle if condition instruction1 instruction2 else instruction3 instruction4 Algorithmique et UML Mickaël Martin Nevot 12/23

Structure conditionnelle multiple switch expression valeur1 : instruction1 valeur2 : instruction2 instruction3 valeur3, valeur4 : instruction4 else instruction5 Algorithmique et UML Mickaël Martin Nevot 13/23

Répétition (boucles) De 0 à n fois while condition do instruction1 instruction2 do instruction1 instruction2 while condition De 1 à n fois Algorithmique et UML Mickaël Martin Nevot 14/23

Répétition (boucles) for x i to j do instruction1 instruction2 Avec un pas de 1 for x i to j with step k do instruction1 instruction2 Avec un pas de k k entier Algorithmique et UML Mickaël Martin Nevot 15/23

Fonction Signature function myfunction(paramètres):type instruction1 instruction2 return expression Type optionnel myvar1:string, myvar2 Paramètres Identificateur Type (optionnel) Algorithmique et UML Mickaël Martin Nevot 16/23

Entrées/sorties Lire : read var1 read var1, var2 Écrire : write var1 Afficher : print var1 print "result : ", var1 print "3 x 2 = ", (3 * 2) print "tab : ", {1, 4, -1} Algorithmique et UML Mickaël Martin Nevot 17/23

Quelques algorithmes Diviser pour régner : Décomposition Appels récursifs Recomposition Glouton : Étape par étape Optimum local = optimum global? Heuristique gloutonne Recherche exhaustive (combinatoire) : Recherche de tous les cas Probabiliste : Données tirées aléatoirement Recherche dichotomique Tri fusion Tri rapide Rendu de monnaie Problème du sac à dos Attaque par force brute Las Vegas Monte-Carlo Algorithmique et UML Mickaël Martin Nevot 18/23

Trace d un algorithme Exécute les instructions comme un ordinateur Permet de contrôler que l'algorithme correspond a priori aux attentes Ne constitue pas une preuve Algorithmique et UML Mickaël Martin Nevot 19/23

Récursivité Fonction qui s'appelle elle-même Condition d arrêt Algorithmique et UML Mickaël Martin Nevot 20/23

Récursivité : un exemple Factorielle function factorial(n):int if n = 0 return 1 else n * factorial(n - 1) Algorithmique et UML Mickaël Martin Nevot 21/23

Liens Documents électroniques : http://www.france-ioi.org/train/algo/cours/ ftp://ftpdeveloppez.com/lapoire/algorithmique/initiationalgorithmique.pdf http://www.apmep.asso.fr/spip.php?article3405 Algorithmique et UML Mickaël Martin Nevot 22/23

Crédits Auteur Mickaël Martin Nevot mmartin.nevot@gmail.com Relecteurs Carte de de visite électronique Cours en ligne sur : www.mickael-martin-nevot.com Algorithmique et UML Mickaël Martin Nevot 23/23