Informatique 1 1ère Année GC Ecole Hassania des Travaux Publics Karim Guennoun

Informatique 1 1ère Année GC Ecole Hassania des Travaux Publics Karim Guennoun 1 Plan du cours Partie 1: Algorithmique générale – C’est quoi un algorithme? – Notions de variables, d’actions…etc – Structures de contrôle – Structures de données avancées – Fonctions et procédures Partie 2: Le langage C – Passer de l’algorithme à la programmation 2 Partie 1: Algorithmique 3 Un algorithme, c’est quoi? Origine étymologique: – Vient du nom du mathématicien Al Khawarizmi latinisé en « algoritmi » Définitions: – Académie Française: Méthode de calcul qui indique la démarche à suivre pour résoudre une série de problèmes équivalents en appliquant dans un ordre précis une suite finie de règles. – Wikipedia: Un algorithme est un moyen pour un humain de présenter la résolution par calcul d’un problème à une autre personne physique (un autre humain) ou virtuelle (un calculateur) 4 Pour faire simple: Un algorithme est une suite d’instructions, d’actions permettant de résoudre un problème donné – Aller quelque part: le chemin – Réaliser un plat de cuisine: la recette – Faire un calcul mathématique: la méthode La granularité des instructions correspond au contexte d’utilisation de l’algorithme – Le chemin: l’interlocuteur – La recette : Le cuisiner – Le calcul: Les bibliothèques et la puissance de l’ordinateur Heureusement, les ordinateurs sont à peu près aussi idiots les uns que les autres: même types d’instructions élémentaires compréhensibles 5 Qualités d’un bon concepteur d’algorithmes L’intuition: – Pas de méthode universelle absolue pour résoudre un problème La rigueur et la logique – La méthodologie, la capacité à se mettre à la place de la machine et d’être aussi idiot qu’elle! L’expérience – Renforce les deux premiers points – Plus on écrit d’algorithmes, plus on est performant à le faire 6 Algorithmique Vs programmation Un langage de programmation n’est que l’outil de réalisation de l’algorithme L’algorithme permet de concevoir la solution alors que la programmation permet de la mettre en œuvre L’algorithme est généralement à un niveau d’abstraction plus haut que la programmation Il est, cependant, nécessaire de prendre en compte la nature, la puissance et l’expressivité du langage de programmation avant de concevoir l’algorithme 7 Les variables 8 L’intérêt des variables Parfois, il est nécessaire de stocker de l’information au cours du calcul effectué par un algorithme – Pour additionner deux valeurs, j’ai besoin de stocker ces deux valeurs – Pour additionner trois valeurs, j’ai besoin de stocker, en plus, le résultat intermédiaire Une variable est donc une case où on peut stocker de l’information repérée par une étiquette permettant d’écrire dedans et de lire depuis. Physiquement, c’est une case de la mémoire vive de l’ordinateur repérée par une adresse binaire 9 Cycle de vie d’une variable La déclaration L’instruction d’affectation La lecture/écriture et les opérations 10 La déclaration d’une variable 11 La déclaration Avant de pouvoir utiliser une variable, il faut – La créer – Lui associer une étiquette L’étiquette d’une variable correspond en gros au nom qu’on lui associe Préciser le type d’information qu’on souhaite lui associer. 12 Bonnes pratiques pour les étiquettes Pour plus de lisibilité, – Toujours privilégier les étiquettes qui ont du sens – Éviter des étiquettes à rallonge Le nom doit observer certaines règles dépendantes du langage de programmation ciblé. Règles absolues: – Une suite de lettres et de chiffres – Pas de signes de ponctuation – Surtout pas d’espaces 13 Les types classiques Les types numériques Les types alphanumériques Le type booléen 14 Les types numériques Correspondent à des variables destinées à recevoir des nombres La taille de l’espace réservé pour le stockage détermine – Les valeurs maximales et minimales des nombres pouvant être stockés dans la variable – La précision des valeurs décimales – E.g. pour un octet, on pourra coder 28 nombres c-a-d 256 nombres 15 Types numériques En gros, on retrouve pour la plus part des langages, les types classiques suivants: Type Numérique Plage Byte (octet) 0 à 255 Entier simple -32 768 à 32 767 Entier long -2 147 483 648 à 2 147 483 647 Réel simple -3,40x1038 à -1,40x10-45 pour les valeurs négatives 1,40x10-45 à 3,40x1038 pour les valeurs positives Réel double 1,79x10308 à -4,94x10-324 pour les valeurs négatives 4,94x10-324 à 1,79x10308 pour les valeurs positives 16 Types numériques Question: – Pourquoi, pour éviter tout problème, ne pas tout déclarer en Réel double? Réponse: – Parce que les ressources d’un programme sont limitées Bonne nouvelle: – en algorithmique, on se contentera de faire le distinguo entier/réel (existence de la virgule ou non) – Le raffinement vers les autres sous-types numériques sont laissés à l’étape de programmation 17 Pseudo-code En Pseudo-code, nous écrivons la déclaration d’une variable numérique : – Variable v: Entier – Variable v1, v2, v3: Réel – Variable v1: Entier Variable v2: Réel Variable v3: Entier 18 Types alphanumériques On dispose, en plus du type numérique, du type caractères ou chaîne de caractères – En Anglais, string Pour ce type de variables, on peut stocker des caractères, qu’il s’agisse de lettres, de signes de ponctuation, d’espaces, ou même de chiffres. Le nombre maximal de caractères pouvant être stockés dans une seule variable string dépend du langage utilisé. 19 Types alphanumériques En Pseudo-code, la valeur est déclarée entre guillemets "chaîne de caractères" "bonjour" "Mesdames, messieurs, bonjour!" "1234" Déclaration – Variable v: caractères 20 Type booléen Permet de stocker les valeurs logiques Vrai/Faux (True/False) Peut être remplacé par les valeurs numériques 0 et 1, mais l’utilisation des booléens: – Rend l’algorithme plus lisible – Est plus économique en terme d’utilisation de la mémoire, un bit suffit pour le stocker (deux octets pour un entier) 21 Les instructions d’affectation 22 L’affectation Une variable n’est exploitable que si elle est instanciée. L’instruction d’affectation permet d’associer une valeur à la variable Une variable ne peut recevoir que des valeurs correspondant au type avec lequel elle a été déclarée En pseudo-code, l’instruction d’affectation se note «  » 23 Exemples Variable ecole1: caractères ecole1  "EHTP" On peut aussi écrire. Variable ecole2: caractères ecole2 ecole1 ecole2 "ecole1" Mais l’instruction suivante n’est pas consistante: ecole2 1 24 Exemples L’instruction d’affectation n’altère que la variable se situant à gauche Variable e1, e2: entier e1 5 e2 e1 * 2 e1 e1+10 e2e1+e2 25 Ordre des instructions L’ordre des instructions est déterminant: – Elles s’exécutent séquentiellement dans l’ordre où elles apparaissent Variable e1: entier e110 e15 Vs e1 5 e110 Les deux algorithmes sont pour illustration, si vous écrivez quelque chose de semblable, posez-vous des questions! 26 Pause exercices 27 Exo1 Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ? – Variables A, B: Entier Début A ← 1 B ← A + 3 A ← 3 Fin 28 Exo2 Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ? – Variables A, B, C : Entier Début A ← 5 B ← 3 C ← A + B A ← 2 C ← B – A Fin 29 Exo3 Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ? – Variables A, B en Entier Début A ← 5 B ← A + 4 A ← A + 1 B ← A – 4 Fin 30 Exo4 Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ? – Variables A, B, C en Entier Début A ← 3 B ← 10 C ← A + B B ← A + B A ← C Fin 31 Exo5 Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ? Variables A, B en Entier Début A ← 5 B ← 2 A ← B B ← A Fin Les deux dernières instructions permettent-elles d’échanger les deux valeurs de B et A ? Si l’on inverse les deux dernières instructions, cela change-t-il quelque chose ? 32 Exo6 Problème classique – écrire un algorithme permettant d’échanger les valeurs de deux variables A et B, et ce quel que soit leur contenu préalable. 33 Exo7 On dispose de trois variables A, B et C. Ecrivez un algorithme transférant à B la valeur de A, à C la valeur de B et à A la valeur de C (toujours quels que soient les contenus préalables de ces variables). 34 Expressions et opérateurs Dans une instruction d’affectation – À gauche, une variable c’est toujours le cas!, sinon il y a un problème! – À droite, une expression Suite de variables et de constantes reliées par des opérateurs Équivalent à une valeur unique! – La partie gauche et la partie droite sont évidemment du « même » type 35 Opérateurs numériques Les plus classiques: – + : addition – - : soustraction – * : multiplication – / : division – ^ : puissance Priorités – * et / sont prioritaire par rapport à + et – – Évaluation de gauche à droite – L’utilisation des parenthèses force les priorités 36 Exemples 3*4/2 3+2*5 3+4-2*3 3+(4-2)*3 (3+(4-2))*3 37 Opérateurs alphanumériques Opérateurs de concaténation – En uploads/Ingenierie_Lourd/ algorithmique 1 .pdf

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