1 Bases de la programmation : Cours 1ère année IUT de Villetaneuse. Hanène Azza

1 Bases de la programmation : Cours 1ère année IUT de Villetaneuse. Hanène Azzag, Frédérique Bassino, Pierre Gérard, Bouchaïb Khafif, Mathieu Lacroix, Mustapha Lebbah, François Lévy, Guillaume Santini. 28 février 2012 IUT de Villetaneuse Bases de la programmation    2 1ère année Chapitre 1 Séquentialité et variables 1.1 Introduction Un ordinateur est une machine et en tant que telle, elle ne fait que ce qu’on lui demande. Les programmeurs ont pour tâche de faire faire à ces machines exactement ce qu’ils veulent qu’elles fassent et dans le bon ordre ni plus, ni moins, ni autre chose. Donner à un ordinateur une séquence d’ordres à effectuer, c’est écrire un programme qu’il devra exécuter. Les problèmes à résoudre étant parfois complexes, la tâche principale est décomposée en plu- sieurs sous-problèmes plus simples résolus les uns après les autres. En définitive, pour résoudre un problème, le programmeur conçoit une série d’instructions, chacune donnant un ordre à l’ordina- teur. L’instruction print(1), par exemple, correspond à l’ordre donné à l’ordinateur d’afficher 1 à l’écran. Il s’agit d’un ordre simple, mais qui peut être combiné à d’autres pour produire des résultats (un peu) plus complexes. Par exemple, cette instruction suivie de print(2) forme un programme avec deux instructions (dans le cercle : les numéros de ligne du programme) :   1 print(1) 2 print(2)   qui affichera 1 puis affichera 2. Cet exemple est évidemment simplisme et peut paraître très éloigné des programmes que l’uti- lisateur contemporain utilise habituellement. Mais même pour réaliser des applications complexes (animation et rendu 3D, par exemple), ce sont toujours les mêmes principes simples qui sont à l’œuvre. Au lieu d’instructions qui se contentent d’afficher un nombre à l’écran, on utilisera des instruc- tions toujours aussi simples à écrire, mais dont les effets seront plus spectaculaires. Le travail du programmeur n’est pas plus complexe pour autant. Ainsi, au lieu de   1 print(1) 2 print(2)   On aura des instructions comme   1 pivoter(0.2) # pour faire tourner une scène 3D de 0.2 degrés 2 afficher(0.1) # pour demander un rendu 3D de la scène en moins de 0.1 seconde   3 IUT de Villetaneuse dont l’impact visuel sera bien plus important, mais dont la complexité pour le programmeur reste comparable. Construire des programmes informatiques, c’est toujours se demander quelles instructions exé- cuter, et dans quel ordre. 1.2 Séquences d’instructions Un programme est une série d’instructions effectuées une par une, de la première à la dernière, en séquence. Chaque instruction est un ordre simple donné à l’ordinateur. Chaque programme commence par exécuter sa première instruction. Ce n’est que lorsqu’elle est terminée qu’il passe à la seconde. S’il y a une troisième instruction, il attend d’avoir terminé la deuxième pour l’exécuter. ▶Sur ce thème : Exercice 1, TD1 1.3 Variables 1.3.1 Noms de variables Les instructions d’un programme permettent de traiter des données (quantité de vie restante, age d’un client, nombre de munitions, etc.) qui doivent pouvoir être ajustées au fur et à mesure que le programme se déroule. L’odinateur stocke donc chacune de ces informations dans sa mémoire à un endroit bien identifié, grâce à des variables. On utilise le terme variables parce que ces données sont susceptibles d’être modifiées, par opposition à des constantes). Les variables associent un nom à une valeur. Une variable nommée x peut par exemple prendre la valeur 1. Chaque variable mobilise un espace mémoire accessible par un nom, et qui peut contenir une valeur. La valeur d’une variable peut être changée au cours de l’exécution d’un programme. Selon la syntaxe utilisée dans ce cours, le nom d’une variable commence par une lettre minuscule (a à z) ou majuscule (A à Z), ou bien par le caractère souligné (_). Pour la suite de son nom, on peut utiliser des lettres minuscules ou majuscules, des soulignés et des chiffres (0 à 9). Le nom d’une variable ne contient donc pas d’espace. ▶Sur ce thème : Exercice 2, TD1 1.3.2 Affectation L’opération principale mettant en œuvre les variables est l’affectation, qui permet de changer la valeur d’une variable en utilisant son nom. Une affectation est notée avec le signe « = ». A gauche du signe « = », on place le nom de la variable dont on veut changer la valeur, et à droite on définit la valeur que doit prendre la variable. Ce symbole n’est pas du tout l’égalité mathématique. Par exemple, l’instruction   x=2   change la valeur de x. Notez bien que 2=x est incorrect. 2 est un nombre constant et ne change pas de valeur. Ce n’est pas une variable et on ne peut donc pas le mettre à gauche de l’opérateur d’affectation. Dans cet exemple, la nouvelle valeur est directement spécifiée. On aurait également pu placer à droite du symbole « = » une expression qui représente un calcul, comme par exemple dans   x=1+2   Bases de la programmation    4 1ère année Departement informatique L’opérateur d’affectation commence toujours par évaluer la valeur à droite du signe « = » (quelle que soit la complexité du calcul) avant de placer le résultat dans l’espace mémoire réservé à la variable. Ainsi, l’instruction   x=(1+2)/3   calcule d’abord la valeur de l’expression (1+2)/3 avant d’affecter le résultat du calcul à la variable nommée x, qui prend finalement la valeur 1. 1.3.3 Utilisation des variables Dans l’évaluation d’une expression, un nom de variable est remplacé par sa valeur. Si x vaut 2, par exemple, alors (x*3) vaut 6. Ainsi, à l’issue des deux instructions consécutives suivantes :   1 x=2 2 y=x*3   x vaut 2 et y vaut 6. Cette évaluation des variables grâce à leur valeur vaut également pour les sorties écran. L’ins- truction print(1+2) est correcte, mais print(x+y) l’est également, et donnera le même résultat si par exemple x et y valent respectivement 1 et 2 juste avant son exécution. ▶Sur ce thème : Exercice 3, TD1 Il est important de noter qu’une variable ne peut être utilisée que si elle a été définie plus haut. Ainsi, le programme suivant est correct :   1 x = 0 2 y = 2 3 print((x+y)+2)   alors que le suivant le l’est pas   1 x = 1 2 z = x+y 3 print(z)   parce qu’à la deuxième instruction, la variable y n’avait pas encore été définie. Selon le principe de séquentialité, ajouter une ligne à la fin comme dans le le programme suivant :   1 x = 1 2 z = x+y 3 print(z) 4 y = 3   1ère année    5 Bases de la programmation IUT de Villetaneuse n’aurait d’ailleurs pas résolu le problème. Pour définir une variable, il faut lui affecter une valeur. Une source d’erreurs importante en programmation est la non-maîtrise de la séquentialité des instructions. Les instructions s’exécutent dans l’ordre où elles sont écrites, les éventuelles modifications de variables se font dans le même ordre. ▶Sur ce thème : Exercice 4, TD1 ▶Sur ce thème : Exercice 5, TD1 ▶Sur ce thème : Exercice 6, TD1 1.4 Types de données, opérations et conversions 1.4.1 Types de nombres et opérations permises Il existe deux types de nombres : – Les nombres entiers, appelés integer, ou en abrégé int : ils sont signés (1, 2, -3). – Les nombres à virgule flotante, appelés floating point numbers, ou en abrégé float : ils sont positifs ou négatifs et on les note avec un point pour la virgule (1.0, 2.3, -17.32, 3.141516). Pour définir une variable de type int, on lui affecte une valeur entière. Pour définir une variable de type float, on lui affecte un nombre à virgule. Par exemple : – a = 0 définit la variable a comme un int de valeur nulle, – a = 0.0 définit la variable a comme un float de valeur nulle. Le tableau suivant récapitule succinctement les principales opérations possibles sur des nombres : Expression Résultat, x et y étant des nombres (int ou float) x + y somme de x et de y x - y différence de x et de y x * y produit de x et de y x / y division de x par y x % y reste de la division entière de x par y -x négation de x x ** y x à la puissance y abs(x) valeur absolue de x Il faut être très vigilant quand au type des nombres quand on applique les opérateurs ci-dessus : si une opération implique deux nombres de même type, alors le résultat reste du même type. Si une opération implique à la fois une valeur de type int et une autre de type float, alors le résultat sera de type float (float « absorbe » int). Notons en particulier que le résultat de la division de deux nombres entiers ne donne pas un float. Typiquement, 3/2 vaut 1 et pas 1.5. 1.4.2 Chaines de caractères et opérations uploads/s3/ algo-2011.pdf

  • 37
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager