Algorithmique. Table des matières. Classe de première SI

Documents pareils

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programme Compte bancaire (code)

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

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

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

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

Algorithme. Table des matières

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

Notions fondamentales du langage C# Version 1.0

Informatique Générale

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

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

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

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

Chap III : Les tableaux

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

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

Cours d initiation à la programmation en C++ Johann Cuenin

Cours 1 : Qu est-ce que la programmation?

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

Programmes des classes préparatoires aux Grandes Ecoles

Logiciel de Base. I. Représentation des nombres

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

L informatique en BCPST

Organigramme / Algorigramme Dossier élève 1 SI

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

Cours d Algorithmique et de Langage C v 3.0

Conventions d écriture et outils de mise au point

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)

Introduction au langage C

Algorithmique et programmation : les bases (VBA) Corrigé

ACTIVITÉ DE PROGRAMMATION

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

Feuille TD n 1 Exercices d algorithmique éléments de correction

Programmation C. Apprendre à développer des programmes simples dans le langage C

Algorithmique et Programmation, IMA

Python - introduction à la programmation et calcul scientifique

Introduction à MATLAB R

Cours d Informatique

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

Initiation à la programmation en Python

Algorithmes récursifs

Rappels sur les suites - Algorithme

Chapitre I Notions de base et outils de travail

Cours Informatique Master STEP

TP, première séquence d exercices.

Programmation sous QT

Initiation. àl algorithmique et à la programmation. en C

UE C avancé cours 1: introduction et révisions

Chapitre 10 Arithmétique réelle

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

Indications pour une progression au CM1 et au CM2

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Programmation parallèle et distribuée

ALGORITHMIQUE ET PROGRAMMATION En C

CH.6 Propriétés des langages non contextuels

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

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

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

Chapitre 2. Eléments pour comprendre un énoncé

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Mise en œuvre des serveurs d application

TP1. Outils Java Eléments de correction

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

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

Quantification Scalaire et Prédictive

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

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Système de Gestion de Fichiers

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

Introduction à NetCDF

Algorithmique et structures de données I

Représentation d un entier en base b

LE PROBLEME DU PLUS COURT CHEMIN

Exercices sur les interfaces

2 Comment fonctionne un ordinateur, dans les grandes lignes

UE Programmation Impérative Licence 2ème Année

Initiation à l algorithmique

MANUEL UTILISATEUR BALADEUR SANTÉ AUXILIAIRES MÉDICAUX ET SAGES-FEMMES C.D.C 1.40

La mémoire. Un ordinateur. L'octet. Le bit

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Puissances d un nombre relatif

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.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)

Adama MBODJI MBODJ.SYSTEM

S LICENCE INFORMATIQUE Non Alt Alt SS1 S2 S3 S4 S5 S6 Parcours : IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques)

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

TP 1. Prise en main du langage Python

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Plan du cours Cours théoriques. 29 septembre 2014

Claude Delannoy. 3 e édition C++

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Transcription:

Table des matières Algorithmique 1. Introduction...2 2. Algorithmique...2 2.1. Modes d expression d un algorithme...3 2.2. Organisation d un algorithme...4 2.2.1. L en tête...4 2.2.2. La partie déclarative...4 2.2.2.1. Les constantes...4 2.2.2.2. Les variables...4 2.2.3. La partie exécutive...5 2.2.3.1. Les procédures et fonctions...5 2.2.3.2. Le programme principal...5 2.2.4. Les commentaires...5 2.3. Les structures algorithmiques...6 2.3.1. Les structures linéaires...6 2.3.2. Les structures alternatives...7 2.3.3. Les structures itératives ou répétitives...9 2.4. Structures de données : les vecteurs (tableaux à une dimension)...11 3. Traduction dans un langage de programmation...11 4. Symboles utilisés dans «Flowcode» et «VPL»...12 5. Exemple de traitement algorithmique...13 Un algorithme énonce une résolution sous la forme d une série d opérations à effectuer. La mise en œuvre de l algorithme consiste en l écriture de ces opérations dans un langage de programmation et constitue la brique de base d un programme informatique. 5-algorithmique.odt 1

1. Introduction Un programme informatique a pour objectif de faire exécuter une suite de travaux à une machine mais pour cela, il faut que la machine puisse comprendre les ordres d'un opérateur humain. Le développement d un programme nécessite trois phases. Phase 1 Phase 2 Phase 3 Cahier Des Charges Fonctionnel (CdCF) : expression en français ou avec des outils de spécification du besoin. ALGORITHMIQUE (Analyse structurée du problème) : représentation sous forme graphique ou en pseudo code. Traduction dans un langage «de programmation» Les mots-clés ou les symboles graphiques sont traduits en langage de programmation. 2. Algorithmique L'algorithmique est l ensemble des règles et des techniques qui sont impliquées dans la définition et la conception d'algorithmes. Un algorithme est une suite finie et non-ambiguë d'instructions permettant d'arriver, en un temps fini, à un résultat déterminé, à partir d une situation donnée. Pour concevoir un algorithme trois étapes sont nécessaires : 1. La préparation du traitement : recherche des données nécessaires à la résolution d un problème. 2. Le traitement : résolution pas à pas du problème après décomposition en plusieurs sous-ensembles si nécessaire. 3. L édition des résultats. 5-algorithmique.odt 2

2.1. Modes d expression d un algorithme Un algorithme peut être écrit : en langage littéral (pseudo code) par l utilisation de mots-clés et de délimiteurs. On parle de langage de description d'algorithme. L algorithme est bien adapté pour le codage dans un langage de haut niveau (Ex : Java, C#, C, C++, Python, PHP, Javascript). Exemples de mots-clés Exemples de mots délimiteurs Lire Ecrire si sinon tant que faire Ils fixent les bornes des entrées et des sorties des structures algorithmiques : début - fin - finsi graphiquement (utilisation de symboles normalisés), on parle d algorigramme ou d'organigramme de programmation. L algorigramme est plus adapté au codage dans un langage de bas niveau (Ex : assembleur) ou pour l apprentissage de l algorithmique (Ex : logiciel Flowcode). PRINCIPAUX SYMBOLES UTILISES (NF Z 67-010) Identificateur d'un "DEBUT" ou d'une "FIN" de programme ou de sous-programme Opération ou exécution sur une ENTREE ou une SORTIE (lecture d'une saisie clavier, lecture de l'état d'un capteur, commande d'un pré actionneur vers une sortie...etc Action interne du processeur ou opération logique et/arithmétique sur une variable, un mot binaire... Appel d'un sous programme NON? Test logique OUI 5-algorithmique.odt 3

2.2. Organisation d un algorithme 2.2.1. L en tête Classe de première SI Dans cette partie le concepteur donne un nom à l algorithme. Il définit le traitement effectué et les données auxquelles il se rapporte. Exemple : 2.2.2. La partie déclarative Algorithme Calcul_Surface_Disque { Diamètres D et d existent } { Affichage de la surface du disque } Dans cette partie, le concepteur décrit les différents «objets» que l algorithme utilise. 2.2.2.1. Les constantes Une constante est un emplacement de stockage qui contient une valeur constante dans tout l algorithme. Constante Exemple : Constante (Nom_Constante : type) := valeur ; (Pi : réel) := 3,1416 (c : entier) := 299 792 458 La déclaration de constantes symboliques permet de donner un nom à un objet constant dans tout l algorithme et ensuite de faire référence à cet objet par son nom plutôt que par sa valeur. 2.2.2.2. Les variables Une variable est un emplacement de stockage qui contient une valeur pouvant changer au cours de l exécution de l algorithme. Un programme peut-être amené à manipuler différents types de données : booléen : valeur pouvant être soit Vraie, soit Fausse entiers : valeur numériques entières pouvant être signées ou non signées réels : valeurs numériques codées avec une mantisse et un exposant caractère : octet correspondant à un code ASCII chaîne de caractères : ensemble de caractères tableau de données : ensemble de données de même type Variable Exemple : Variable Nom_Variable : type 5-algorithmique.odt 4

vitesse : réel nbr_buts : entier Une variable est caractérisée par : son nom, son type qui représente l ensemble (au sens mathématique) dans lequel la variable prend ses valeurs, sa valeur. 2.2.3. La partie exécutive 2.2.3.1. Les procédures et fonctions Les procédures et fonctions peuvent nécessiter éventuellement un ou plusieurs paramètres d entrée ou de sortie. Un paramètre d entrée est la référence à une variable manipulée par la procédure ou la fonction. Un paramètre de sortie est une valeur renvoyée par une fonction. Une fonction ou une procédure peut elle-même appeler une ou plusieurs fonctions et procédures. Fonction NomFonction(NomEntrée1 : [Type], NomEntrée2 : [Type], ) : [TypeDuRésultat] Constante { déclaration des constantes locales } Variable { déclaration des variables locales } Début Fin { description des actions effectuées par la fonction } 2.2.3.2. Le programme principal Le programme principal consiste en une suite d opérations élémentaires faisant souvent appel à des fonctions ou procédures.il est délimitée par des primitives algorithmiques (mots clés) ou des schémas : début fin...... début fin 5-algorithmique.odt 5

2.2.4. Les commentaires Des commentaires doivent être insérés dans le programme afin d en faciliter la relecture. { Commentaire } 2.3. Les structures algorithmiques Les structures algorithmiques sont réparties en 3 catégories : structures linéaire d'opérations structures alternatives (ou conditionnelles) ou de choix : en fonction d'une condition, le programme exécute des opérations différentes structures itératives ou répétitives: sous contrôle d'une condition, une séquence d'opérations est exécutée répétitivement 2.3.1. Les structures linéaires L affectation Cette action attribue une valeur (une constante ou le résultat d un traitement) à une variable. On notera cette action par le symbole : ou := Nom_Variable := valeur L affectation n a de sens que si les deux objets de part et d autre du signe := sont de même type. 5-algorithmique.odt 6

La saisie d une valeur sur un terminal Lire( ) On pourra lire une variable seule, de type quelconque, ou un ensemble de variables séparées par des virgules, de type identique ou différent. L édition de résultats sur un périphérique de sortie Ecrire( ) On pourra écrire les valeurs d une ou plusieurs variables. 2.3.2. Les structures alternatives La structure alternative de base si si ( condition vraie ) action1 sinon action2 finsi condition action1 sinon action2 fsi 5-algorithmique.odt 7

Si action2 est vide, on écrira : si si ( condition vraie ) action1 finsi condition action1 sinon fsi Les structures alternatives imbriquées Il peut arriver que «action1» et «action2» soient elles-mêmes des actions comportant un choix, par exemple : si ( condition1 ) si ( condition2 ) action1 sinon action2 finsi sinon si ( condition3 ) action4 sinon action5 finsi finsi 5-algorithmique.odt 8

Structure de choix multiple Lorsqu on peut choisir entre plusieurs possibilités se rapportant à une même expression, on utilisera la primitive suivante : selon (expression) Selon ( expression ) Faire valeur 1 : action_1 FinFaire valeur 2 : action_2 FinFaire valeur 1 sinon valeur 2 action 1 action 2 valeur n : action_n FinFaire Sinon : action_par-defaut FinSelon valeur n action n autrement Action 0 fselon 2.3.3. Les structures itératives ou répétitives Ces structures permettent d exécuter plusieurs fois une séquence d instructions. Pour que l'itération puisse se terminer, il faut que l exécution de l action modifie la valeur de l expression conditionnelle évaluée. Pour cela, il faut veiller à initialiser la ou les variables intervenant dans la condition d'évolution (test) de l'itération. Le nombre d itérations est connu (boucle de comptage) Lorsque le nombre d itérations est connu, on peut utiliser une variable auxiliaire (compteur de boucle) dont la valeur caractérise le nombre de passages dans la boucle. 5-algorithmique.odt 9

Variables i : entier; pour i <valeur_initiale> à <valeur_finale> par pas de <n> Faire Action(s); FinFaire Remarque : pour des valeur de n = 1, l'instruction «par pas de» est optionnelle. Le nombre d itérations est inconnu (test en tête de boucle)? Tantque ( condition vraie ) Faire Action(s) FinFaire ACTION(S) Suite structure Le nombre d itérations est inconnu (test en fin de boucle) L'instruction est réalisée au moins UNE fois. Faire Action(s) Tantque ( condition vraie ) 5-algorithmique.odt 10

ACTION (S)? Suite structure 2.4. Structures de données : les vecteurs (tableaux à une dimension) Soient : - un ensemble quelconque : l ensemble des valeurs E - un entier n : nombre d éléments du vecteur - un intervalle I de N tel que I = [0..n], avec (n 0) Un vecteur est une application V de I dans E ; I est appelé ensemble des indices. Exemple : 0 1 2 3 4 5 V A B Z A C D V[0..5] := ( A, B, Z, A, C, D ) V[2] := Z V[6] : non défini On note par l'action d'empiler une valeur dans un vecteur : V valeur et par l'action de dépiler une valeur d'un vecteur : V variable 3. Traduction dans un langage de programmation Cette dernière étape devrait être celle à laquelle le concepteur consacre le moins de temps (dans l hypothèse ou les deux étapes précédentes ont été correctement développées!). «Contrairement aux idées reçues, il n est pas facile du tout de produire un bon logiciel : cela demande beaucoup de précision et de soin» 5-algorithmique.odt 11

Pour éviter les défauts logiciels (bogues), chaque ligne de code écrite doit répondre à trois exigences : 1. une bonne compréhension du problème et de la solution que la ligne est supposée mettre en œuvre 2. la capacité d exprimer cette solution correctement dans un langage de programmation 3. l absence totale de la moindre faute de frappe Afin de réduire le risque de créer de futurs défaut de code, il est bon : 4. de s assurer que le code est clair et compréhensible 5. d'ajouter des commentaires (et les maintenir à jour) pour expliquer le raisonnement sous-jacent 6. de suivre une norme de codage (Ex : HICPP pour C++) ou des conventions (Ex : conventions de codage pour java, C# etc) 4. Symboles utilisés dans «Flowcode» et «VPL 1» Algorithmique Logiciel Flowcode Langage VPL Commentaires Constante Idem norme NFZ 67-010 Variable Affectation Pas de symbole particulier 1 Visual Programming Language 5-algorithmique.odt 12

Choix Idem norme NFZ 67-010 Choix multiple Boucle «pour (Nombre d itération connu) Pas de symbole particulier 5. Exemple de traitement algorithmique Enoncé du problème : Une machine découpe des disques circulaires de diamètre D, percés d un trou de diamètre d dans une plaque (d < D). Des palpeurs mesurent D et d et transmettent ces informations à un calculateur. Celui-ci doit déterminer la surface S du disque et l afficher. Phase 1 : Analyse du problème 1. Préparation du traitement : saisie des diamètres D et d. 2. Traitement : calcul de la surface du disque S = π(d² - d²) / 4. 3. Edition des résultats : Affichage de la surface du disque S. Phase 2 : Expression du problème en langage algorithmique d D Primitives algorithmiques Algorithme Calcul_Surface_Disque; { Diamètres D et d existent } { Affichage de la surface du disque } Algorigramme {---- En-tête ----} Constante (Pi : réel) := 3,1416 {---- Partie déclarative ----} Variable D, d : réels { données } S : réel { résultat } {---- Partie exécutive ----} Début 5-algorithmique.odt 13

fin { Etape 1 : Préparation du traitement } Lire(D, d) { Etape 2 : Traitement algorithmique } S := Pi * (D² d²) / 4 { Etape 3 : Edition des résultats } Ecrire("La surface du disque est :", S) Début //Initialisation des variables Pi 3,1416 D 0 d 0 S 0 D, d S Pi*(D 2 d 2 )/4 S Fin Phase 3 : codage, programmation en C# using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CalculSurfaceDisque { class Program { static void Main(string[] args) { // Partie déclarative // La constante Pi est définie dans la bibliothèque Math Double D = 0.0, d = 0.0, S = 0.0; } } } // Partie Exécutive Console.Write("Entrez la valeur de D (en mm) : "); D = Single.Parse(Console.ReadLine()); Console.Write("Entrez la valeur de d (en mm) : "); d = Single.Parse(Console.ReadLine()); S = Math.PI * (Math.Pow(D, 2.0) - Math.Pow(d, 2.0)) / 4; Console.WriteLine("L'aire du disque est :" + S + "mm²"); Console.ReadKey(); 5-algorithmique.odt 14