programmation impérative 2006-2007pensa/prog-l2-pcpa/cours1.pdf · 2006-10-04 · faire tout ce...
TRANSCRIPT
![Page 1: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/1.jpg)
Programmation Impérative2006-2007
Licence PhysiqueUniversité Jean Monnet
Ruggero G. PENSA
![Page 2: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/2.jpg)
Eléments d’algorithmique
Introduction
Variables
Opérateurs et expressions
Actions
Entrée/Sortie
![Page 3: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/3.jpg)
Définitions
Algorithmedescription d’un ensemble d’étapes (instructions) à effectuer dans un ordre donné pour parvenir à un résultat
Langage de programmationlangage dans lequel un algorithme peut être traduit pour être compris par l’ordinateur
Programmedescription d’un algorithme dans un langage de programmation
Exemples Guide de montage d’un meuble IKEA/Conforama… Recette de cuisine
![Page 4: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/4.jpg)
Types de langage
Pour vos algorithmes Langage naturel : français, anglais, italien… Langages formels : pseudo-code
Pour vos programmes Langages évolués : C, Pascal, Visual Basic, Delphi, Java…
Utile à savoir Langages assembleurs : mnémoniques Langages machines : ensemble de bits
Langages interprétés : Visual Basic, Matlab, Pearl… Langages compilés : C, Pascal, Cobol, ADA
![Page 5: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/5.jpg)
Langage de programmation
Un langage de programmation est un langage formel avec une syntaxe bien définie, qui sert à coder des algorithmes et des structures de données dans une forme compréhensible par l’ordinateur
Un programme informatique est constitué d’une suite d’instructions (ou ordres) exécutées par l’ordinateur pour accomplir une tâche particulière
Dans un langage il est important à la fois Le contenu (le sens) La forme (la syntaxe, la grammaire)
![Page 6: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/6.jpg)
Méthodologie de programmation
Problème
Algorithme
Programme(langage évolué)
Programme(langage machine)
Résultats
Analyse
Débogage
Révision Débogage
Conception
Exécution
Traduction (Compilation)
TD
TP
![Page 7: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/7.jpg)
Qualités d’un algorithme
Correctbien faire ce qui est prévu
Completfaire tout ce qui est prévu
Efficaceexécution rapideavec peu d’occupation mémoire
Clairdoit être facilement lisible et évolutif
![Page 8: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/8.jpg)
Introduction au formalisme
Un algorithme doit être compréhensible par plusieurs personnes
Exemple
Nom : addDeuxEntiersRôle : Additionner deux entiers Entrée : a, b : entierSortie : entierDéclaration :
débutretourner (a + b)
fin
Entête
Corps
![Page 9: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/9.jpg)
Variable
Entité qui contient une information
Possède un nom (identifiant)
Possède une valeur
Possède un type (qui caractérise l’ensemble des valeurs que peut prendre la variable)
Est stockée dans la mémoire centrale de l’ordinateur
![Page 10: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/10.jpg)
Variable
Analogie avec une armoire d’archive qui contiendrait des tiroirs étiquetés
Armoire Mémoire de l’ordinateur Tiroirs Variables Etiquettes Identifiants Contenu Valeur Couleur Type
Exemple : bleu pour les factures, rouge pour les bons de commande…
![Page 11: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/11.jpg)
Type d’une variable
Caractérise L’ensemble des valeurs que peut prendre la variable L’ensemble des actions que l’on peut effectuer sur une variable
Toute variable doit être déclarée avant son utilisation (partie Déclaration) en lui associant un Type
Identifiant : Type Exemples
age : Naturel nom : Chaîne de Caractères sexe : Caractère moyenne : Réel
Une fois qu’un type est associé à une variable, on peut pas le changer
Une fois qu’un type est associé à une variable le contenu de cette variable doit être obligatoirement du même type
![Page 12: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/12.jpg)
Types de données
Types simples Dénombrables (nombre d’éléments fini) Indénombrables (nombre d’éléments infini)
Types complexes Exemples
- nombre complexe (partie réelle + partie imaginaire)- etudiant (nom + prénom + moyenne)
![Page 13: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/13.jpg)
Types de données simples
Dénombrables
Booléen : { VRAI, FAUX }les variables ne peuvent prendre que ces deux valeurs
Intervalle, ex, : [1..10]les variables ne peuvent prendre que les valeurs entières définies dans cet intervalle
Énuméré, ex : {rouge, vert, jaune}les variables ne peuvent prendre que les valeurs explicitées
Caractères : table ASCII
![Page 14: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/14.jpg)
Dénombrables
Exemples célibataire : booléen mois : 1..12 minuscules : ‘a’..‘z’ jour : JoursDeLaSemaine
Déclaration : type JourDeLaSemaine = énuméré {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche}
![Page 15: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/15.jpg)
Types de données simples
Indénombrables
Entier (positifs et négatifs)
Naturel (entiers positifs)
Réel
Chaîne de caractéresExemple ’’cours’’ ou ’’TD d’algorithmique’’
![Page 16: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/16.jpg)
Indénombrables
Exemples
age : naturel
taille : réel
nom : chaîne de caractères
![Page 17: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/17.jpg)
Constante
Variable dont la valeur est fixée tout au début de l’algorithme et ne change pas lors de l’exécution de l’algorithme
Possède Un nom Un type Une valeur (fixe)
Exemples Pi : Réel 3.14159 Euro : Réel 6.55957 Répétitions : Entier 10
![Page 18: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/18.jpg)
Opérateurs, opérande et expression
Opérateur : symbole d’opération qui permet d’agir sur des variables ou de faire des calculs
Opérande : entité (variable, constante ou expression) utilisée par un opérateur
Expression : combinaisons d’opérateur(s) et d’opérande(s), evaluée durant l’exécution de l’algorithme.Possède une valeur (son interprétation) un type
![Page 19: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/19.jpg)
Opérateur, opérande et expression
Exemple : a + b
a : opérande gauche + : opérateur b : opérande droite a + b : expression
Si a vaut 2 et b vaut 3, l’expression a + b vaut 5 Si a et b sont des entiers, l’expression a + b est de
type entier
![Page 20: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/20.jpg)
Type d’opérateurs
Unaire : un seul opérande(Exemple : non)
Binaire : deux opérandes(Exemple : +)
L’expression possède un seul type dans une expression chaque opérateur doit être associé au type de l’expression(Exemple : "J’ai" + 2 + "chats")
Seule exception tolérée : types arithmétiques(Exemple : 2 + 3.5)
![Page 21: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/21.jpg)
Signification des opérateurs
Peut changer en fonction du type des opérandes
Par exemple
opérateur + avec des entiers aura pour sens l'addition2 + 3 vaut 5
Opérateur + avec des chaînes de caractères aura pour sens la concaténation"bonjour" + " tout le monde" vaut"bonjour tout le monde"
![Page 22: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/22.jpg)
Opérateurs sur les booléens
Quatre opérateurs
vraifauxfauxvrainon aa
fauxfauxfauxvraifauxvraivraivraifauxvraivraivraia ou bba
fauxfauxfauxfauxfauxvraifauxvraifauxvraivraivraia et bba
fauxfauxfauxvraifauxvraivraivraifauxfauxvraivrai
a ouExclusif bba
![Page 23: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/23.jpg)
Opérateurs sur les énumérés
Trois opérateurs succ : permet d'obtenir le successeur pred : permet d'obtenir le prédecesseur ord : permet d'obtenir le naturel de correspondant à la
position de l'élément dans la liste de l'énuméré
Exemplestype JoursDeLaSemaine succ Lundi vaut Mardisucc Dimanche vaut Lundi
pred Mardi vaut Lundipred Lundi vaut Dimanche
ord Lundi vaut 0ord Dimanche vaut 6
![Page 24: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/24.jpg)
Opérateurs sur les caractères
Quatre opérateurs (les trois des énumérés + car)
On considère la position dans la table ASCII
Exemples ord 'A' vaut 65 car 65 vaut 'A' pred 'A' vaut '@' succ 'b' vaut 'c'
Cf. man ascii
![Page 25: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/25.jpg)
Opérateurs arithmetiques
Pour les entiers : +, -, *, / Pour les réels : +, -, *, / Pour les naturels et les entières :div : division entièremod : reste de la division
Exemples 11 div 2 vaut 5 11 mod 2 vaut 1
![Page 26: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/26.jpg)
Opérateurs sur les chaînes de caractères
Concatenation : +
Exemple :"bonjour" + " tout le monde" vaut "bonjour tout le monde"
![Page 27: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/27.jpg)
Opérateurs de comparaison
= : opérateur d'égalitéon le retrouve chez tous les types simples et permet de savoir si deux opérandes sont égales
≠ : opérateur d'inégalité
<, >, ≤, ≥ : opérateurs de comparaisons pour les types possédant un ordre
Une expression de comparaison contenant un opérateur de comparaisons est de type booléenExemples 12 < 14 vaut VRAI "marco" = "zizou" vaut FAUX
![Page 28: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/28.jpg)
Priorité des opérateurs
Tout comme en arithmétique, les opérateurs ont des prioritésExemple : * / + - (du plus prioritaire au moins prioritaire)
Pour les booléen :non, et, ouExclusif, ou
En cas de doute : utiliser les parenthèses
![Page 29: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/29.jpg)
Actions sur les variables
Lecture d'une variable obtenir son contenu Il suffit de nommer la variable
Exemple : écrire(a)
Écriture d'une variable affecter un (nouveau) contenu à la variable en utilisant la procédure lire (a) en utilisant l'opérateur d'affectation ""
Syntaxe : identifiant expressionl'expression ne contient pas d'opérateur d'affectation
![Page 30: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/30.jpg)
Opérateur d'affectation
Qu'est-ce que ça veut dire c a + b ? On prend la valeur contenue dans la variable a On prend la valeur contenue dans la variable b On additionne ces deux valeurs On met ce résultat dans la variable c Si c avait auparavant une valeur, cette dernière est perdue
Exemple :- x 1 (on affecte la valeur 1 à la variable x)- x x + 1 (on ajoute 1 à la valeur contenue dans x, on
stocke le résultat dans x)- Résultat : incrémentation de la variable x d'une unité (x vaut 2)
![Page 31: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/31.jpg)
Les entrées/sorties
Un algorithme a souvent des interactions avec l'utilisateur. Il peut Afficher un résultat (texte ou contenu d'une variable) Demander à l'utilisateur de saisir une information afin de la stocker
dans une variable
Affichage Commande écrire suivie entre parenthèses de la chaîne de
caractères entre guillemets et/ou des variables de type simple à afficher (séparées par des virgules)
Exemple :écrire("La valeur de la variable prix est ", prix, " Euros")
Saisie Commande lire suivie entre parenthèses de la variable de type
simple qui va recevoir la valeur saisie par l'utilisateur Exemple : lire(b)
![Page 32: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/32.jpg)
Exemple d'algorithme
Nom : euroVersFrancRôle : Convertisseur des sommes en euros vers le franc, avec sisie de la
somme en euro et affichage de la somme en franc.Entrée : -Sortie : -Déclaration : constante tauxConversion : Réel 6.55957 variable valeurEnEuro, valeurEnFranc : Réeldébut écrire("Entrer votre valeur en euro : ") lire(valeurEnEuro) valeurEnFranc valeurEnEuro * tauxConversion écrire(valeurEnEuro, "euros = ", valeurEnFranc, " Fra")fin
![Page 33: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/33.jpg)
Langage C
Introduction
Variables
Opérateurs et expressions
Instructions
Entrée/Sortie
![Page 34: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/34.jpg)
Histoire
Développé en 1971 par Dennis Ritchie au sein des laboratoires Bell pour écrire le système UNIX
Spécifications publiées en 1978 dans l'ouvrage de Kerninghan et Ritchie : "The C Programming Language" (K&R C)
Norme AINSI C publiée en 1989 (ANSI C)
![Page 35: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/35.jpg)
Compilation
.c
.h
.s .o
compilateur
assembleur
éditeur de liens
gcc –o exécutable source.c
fichier.cfichier.o
fichier exécutable
![Page 36: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/36.jpg)
Compilation 2
.c
.h
.s .o
compilateur
assembleur
éditeur de liens
.c
.s .o
vert.c
bleu.c
vert.o
bleu.o
common.h
fichier exécutable
![Page 37: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/37.jpg)
Séparateurs et commentaires
Espace, tab et retour à la ligne sont ignorées (mais utiles pour la mise en forme du fichier .c)
/* */ : commentaires (ignorés)/* ceci est un commentairesur plusieurs lignes */
; termine une déclaration ou une instruction simple , sépare deux éléments dans une liste (…) liste d'arguments {…} bloc ou liste d'initialisations […] dimension/sélection d'élements de tableaux
![Page 38: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/38.jpg)
Structure d'un programme C
fin du bloc}corps du programme… ;variables… ;début du bloc{fonction principaleint main(int argc, char*argv[])fonctions… ;variables… ;prépocesseur#include <stdio.h>
![Page 39: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/39.jpg)
Directives du procésseur
Commencent toujours par #Exemples : #include #define #ifdef
Quatre utilisations principales1. Inclusion de fichiers2. Constantes symboliques3. Macros4. Compilation conditionnelle
![Page 40: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/40.jpg)
Variables
En C les variables sont caractérisées par
un identifiant
une portée
un type
une valeur
![Page 41: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/41.jpg)
Identifiants
L'identifiant d'une variable est son nom
En C il est composé d'une suite de caractères parmi les lettres minuscules les lettres majuscules les chiffres "_" (underscore)
Le premier caractère est toujours "_" ou une lettre
Exemples (nom corrects)x x2 _x LePoint c_est_bon
Exemples (non incorrects)2x non' le.point hara-kiri
![Page 42: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/42.jpg)
Identifiants 2
Distinction entre majuscules et minusculestoto ≠ Toto ≠ TOTO
Les mots réservés du langage C ne sont pas redéfinissables par le programmeur
caseswitchwhile
doforelseifcontinuebreak
returngotovolatilestaticregisterextern
autoconstsizeoftypedefunionstruct
enumunsigneddefaultsignedshortlong
voidasmdoublefloatcharint
![Page 43: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/43.jpg)
Déclaration
On prévient le compilateur en début de bloc que l'on va utiliser une variable et le type d'éléments qui y seront stockés
Forme : <type> <identifiant> Exemple : int ma_variable
![Page 44: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/44.jpg)
Affectation
On stocke une valeur dans la variable
Forme : <identifiant> = <contenu> ; Exemple : a = 3 ; (si a est une variable entière)
![Page 45: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/45.jpg)
Initialisation
Déclaration + Affectation
Forme : <type> <identifiant> = <contenu> ; Exemple : int a = 3 ; (si a est une variable
èntiere)
![Page 46: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/46.jpg)
Utilisation
On récupère la valeur qui est stockée dans la variable
Forme : <identifiant>Exemple : a + 2.5 (si a est une variable réelle)
![Page 47: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/47.jpg)
Portée
La portée d'une variable définit où la variable peut être utilisée
En C une variable peut être utilisée à partir du moment où elle a été définie et jusqu'à la fin du bloc de déclaration
![Page 48: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/48.jpg)
Portée Exemple
Variable a#include…int a ;… ;void test(int b){ if (a > b) { int c = b ; b = a ; a = b ; } ecrire(b) ;}void test2…
![Page 49: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/49.jpg)
Portée Exemple
Variable b#include…int a ;… ;void test(int b){ if (a > b) { int c = b ; b = a ; a = b ; } ecrire(b) ;}void test2…
![Page 50: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/50.jpg)
Portée Exemple
Variable c#include…int a ;… ;void test(int b){ if (a > b) { int c = b ; b = a ; a = b ; } ecrire(b) ;}void test2…
![Page 51: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/51.jpg)
Types de base
void : type vide char : 'a' … 'b' … 'B' … '\n' … '\t' … '\014' int : 120 … -10 … 0123 … 0xfc … 0xFC float : 1.23 … -1.23 … 1.2345e+12 … 1. double : 1.23 … -1.23 … 1.23456789012345e+12 pas de type booléen en C Utiliser les entier
FAUX : 0, VRAI : tous les autres valeurs pas de type intervalle
Le type int possède 3 sous-typesshort, long et unsigned
![Page 52: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/52.jpg)
Constantes
Les constantes sont des variables dont la valeur ne peut pas changer
Elles se déclarent comme des variables et sont affectées définitivement à ce moment là
Elles sont précédées du mot-clef constExemples const double Pi = 3.141592654 ; const int BufSize = 1024 ; const int VRAI = 1, FAUX = 0 ;
Elles ne peuvent pas être modifiées
![Page 53: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/53.jpg)
Expressions
Une expression est un ensemble d'une ou de plusieurs opérations
Une expression a une valeur Types d'opérations :
arithmétiques logiques affectation et in/de-crémentation relations conversion de type
L'ordre d'évaluation dans une expression est déterminé par des règles de priorité et d'associativité
Le type de donné du résultat est déterminé par le type des opérandes
![Page 54: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/54.jpg)
Opérateurs arithmétiques
Pour les entiers et les réels
expr % exprmodulo (binaire)%
expr / exprdivision (binaire)/
expr * exprmultiplication (binaire)
*
expr – exprsoustraction (binaire)-
-exprsoustraction (unaire)-
expr + expr + …addition (binaire)+UsageFonctionOpérateur
![Page 55: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/55.jpg)
Opérateur d'affectation
Permettent de donner une valeur à une variable
int i, j ;i = 0 ;j = 1 ;
Attention : retourne la valeur affectéeint x, y ;x = y = -1 ; /* se lit : x = (y = -1) ; */
Combinaison possible avec un opérateur arithmétiquea = a + 2 ; a += 2 ;y = y / 4 ; y /= 4 ;x = x * (y + z) x *= y + z ;
![Page 56: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/56.jpg)
Opérateurs d'in/de-crémentation
L'opérateur ++ et l'opérateur – fournissent un moyen efficace pour compacter les écritures x++ ; post-incrémentation x-- ; post-décrémentation ++x ; pré-incrémentation --x ; pré-décrémentation
Significationx++ ; équivaut à x = x + 1 ;x-- ; équivaut à x = x – 1 ;
![Page 57: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/57.jpg)
Opérateurs relationnels
Le résultat est une expression booléenne vraie ou fausse Lors de l'évaluation : arrêt de l'évaluation dès que la première
opérande est fausse, dans le cas de &&, ou vraie, dans le cas de ||
expr || exprou logique||expr && expret logique&&
!exprnon logique!expr <= exprinférieur ou égal<=expr < exprinférieur<
expr >= exprsupérieur ou égal>=expr > exprsupérieur>expr != exprinégalité!=expr == exprégalité==
UsageFonctionOpérateur
![Page 58: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/58.jpg)
Instruction
Il existe deux types d'instruction
Instructions simples terminées par un ';'Exemple : a = 4 ; b++ ;
Instructions composées utilisant un bloc {…} Instructions conditionnelles Instructions d'itération
![Page 59: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/59.jpg)
Instruction conditionnelle (exemple)
if (a < b){ c = b – a ; ecrire("Négatif") ;}else{ c = a – b ; ecrire("Positif ou zéro") ;}
![Page 60: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/60.jpg)
Instructions d'itération
while (a < b){ a++ ; b-- ;}
for (i=1 ; i <= 10 ; i++) { somme += i ; produit *= i;}
![Page 61: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/61.jpg)
Entrées
Entrées : scanf()
scanf("%c", &c) ;char c ;scanf("%f", &f) ;float f ;scanf("%lf", &d) ;double d ;scanf("%i", &i) ;int i ;instructionVariable
!!!
![Page 62: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/62.jpg)
Sorties
Entrées : printf()
printf("%c", c) ;char c ;
printf("%lf", d) ;printf("%f", f) ;printf("%e", f) ; exponentielle
double d ;float f ;
printf("%i", i) ;printf("%d", i) ;printf("%x", i) ; héxadecimal
int i ;instructionVariable
![Page 63: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/63.jpg)
Exemple d'algorithme
Nom : euroVersFrancRôle : Convertisseur des sommes en euros vers le franc, avec sisie de la
somme en euro et affichage de la somme en franc.Entrée : -Sortie : -Déclaration : constante tauxConversion : Réel 6.55957 variable valeurEnEuro, valeurEnFranc : Réeldébut écrire("Entrer votre valeur en euro : ") lire(valeurEnEuro) valeurEnFranc valeurEnEuro * tauxConversion écrire(valeurEnEuro, "euros = ", valeurEnFranc, " Fra")fin
![Page 64: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/64.jpg)
Traduction en Langage C
#include <stdio.h>
const float tauxDeConversion = 6.55957 ;
int main(int argc, char *argv[]){
float valeurEnEuro, valeurEnFranc;printf("Entrer votre valeur en euros :") ;scanf("%f", &valeurEnEuros) ;valeurEnFranc = valeurEnEuro * tauxDeConversion ;printf("%f euros = %f Fra\n", valeurEnEuros,
valeurEnFranc) ;return 0 ;
}
![Page 65: Programmation Impérative 2006-2007pensa/prog-L2-PCPA/cours1.pdf · 2006-10-04 · faire tout ce qui est prévu ... ord: permet d'obtenir le naturel de correspondant à la position](https://reader034.vdocuments.site/reader034/viewer/2022042119/5e987cbaadbb0c0b8603b012/html5/thumbnails/65.jpg)
Récapitulatif
scanfprintf
lireécrire
EntréeSortie
E/S
a++ ;a-- ;+ - / * %! && ||== != < > <= >=
a a + 1a a – 1+ - / * mod et +. -. *. /.non et ou= ≠ < > ≤ ≥
incrémentationdécrémentationarithmétiquelogiquerelation
Opérateurs
int a ;a = 3 ;a
a : Entiera 3a
déclarationaffectationutilisationportée
Variables
void--intfloat / doublechar
-Booléen[1..10]EntierRéelCaractère
videbooléenintervalleentierréelcaractère
Types
Langage de programmationLangage C
Langage algorithmiquePseudo-code
Instruction
Depuis la déclaration jusqu'à la fin du bloc de déclaration