samedi 4 avril 2015

INITIATION A LA PROGRAMMATION

Mama miya.

 Salut les gars je suis Ouattara El Hadj  Formateur er Dévéloppeur d'Application web et nous allons aidez dans l'initiation à la programmation.

 Nous allons commencer en douceur, en apprenant les notions de base de la programmation et ceci pas à pas. Tout compte fait rien ne presse, du moins de mon côté ;).

 Sachez qu’il existe une plusieurs types de langages de programmation à savoir le C, C++, JAVA, Python… pour ne citer que ceux-là. Mon choix s’est plutôt porté sur le dernier PYTHON pour son dynamisme, sa portabilité et sa syntaxe assez élégante.

Alors qu’est-ce que ça signifie : langage de programmation, portabilité, dynamisme, syntaxe ?

 Si vous êtes un débutant c’est sûr que ces quelques termes techniques peuvent déjà sembler abstraits et représenter des boites noires à vos yeux. Mais ne vous inquiétez surtout pas, nous verrons tout ceci dans les moindres détails. Cet article n’est en quelque sorte qu’une simple introduction. (Il me faut tout de même parler écrire quelque chose :) ) Les objectifs de ce cours sont les suivants: Initier à la programmation les personnes n’ayant aucune connaissance préalable dans ce domaine. Les aider à se sentir capables à écrire des programmes courts, moyens et … complexes. Comprendre comment résoudre les problèmes de la vie réelle grâce à l’informatique.

 CHAPITRE 1: INTRODUCTION A LA PROGRAMMATION

 Connaissances déclarative et impérative Brêve de bavardage go go go!!! Au passage s'achiez que mon professeur se nomme Honoré Honownou et ce cour lui est dédicacé.

Dans la vie nous avons 2 types de connaissance deux types de connaissances. Nous avons la connaissance déclarative et la connaissance impérative. La connaissance déclarative est composée d’énonciations à priori vraies. Par exemple "il faut bien manger pour être en bonne santé", "Quand le feu est rouge, on doit s’arrêter et laisser les piétons passer" ou "y est une racine carrée de de x si et seulement si y*y = x". Le dernier exemple est plutôt intéressant, mais il peut déjà faire rougir les allergiques aux mathématiques.

Détaillons un peu, histoire d’être sur la même longueur d’onde, même si je sais très bien que cela n’en vaut pas la peine. Je me dis que ça peut arriver de temps en temps quelques petites fuites de cerveau :).

Alors voilà: 4 est la racine carrée de 16 car 4*4 = 163 est la racine carrée de 9 car 3*3 = 9; aussi simple que cela. La connaissance impérative quant à elle fait référence à un procédé permettant d’accomplir une tâche. C’est un peu comme une recette. Un petit exemple pour éclaircir les choses.

 Pour calculer le double du tiers d’un nombre il faut: Avoir le nombre lui-même (vous répondez à ce moment précis: C'est évident ! :) ). Le diviser par 3 pour avoir son tiers. Multiplier ensuite par 2 le résultat obtenu en 2), pour avoir le double du tiers. A priori, en suivant cette petite recette, on peut avoir le double du tiers de n’importe quel nombre !! C’est cela en quelque sorte la connaissance impérative.

 Si je vous ai défini ce que c’est que la connaissance déclarative et la connaissance impérative, c’est parce qu’un bon programmeur doit avoir ces deux types de connaissances, du moins en fonction de ce qu’il veut faire comme programme.

 Je m’explique.

 Si vous voulez écrire un programme qui calcule l’intensité de la force électrostatique entre deux charges électriques q1 et q2 séparées par une distance r. Il faut avoir premièrement la connaissance déclarative, c’est-à-dire qu’est-ce que l’intensité de la force électrostatique ? « L’intensité de la force électrostatique entre deux charges électriques est proportionnelle au produit des deux charges et est inversement proportionnelle au carré de la distance entre les deux charges. » Cf Wikipédia :)

Et deuxièmement la connaissance impérative, c’est-à-dire comment calculer la force électrostatique créée par 2 charges? Avoir les valeurs numériques de q1 et q2. Multiplier q1 et q2. Multiplier ensuite le résultat obtenu en 2) par la constante de coulomb K Diviser le résultat obtenu en 3) par le carré de la distance entre les deux charges (r2). Bah ne vous inquiétez surtout pas si vous ne savez pas ce qu’est toujours la force électrostatique, ceci n’est surtout pas l’objectif de ce cours. Comprenez plutôt la logique qui est derrière cet exemple. Nous avons eu besoin des connaissances déclarative et impérative pour résoudre notre problème précédent. C’est tout ce qu’il y a à comprendre.

 II- Algorithme et programme

  Voici trois définitions fondamentales que vous devez absolument retenir. N’hésitez pas à les relire plusieurs fois s’il le faut :) Un algorithme est tout simplement un procédé permettant de résoudre un problème donné. Un programme quant à lui est un ensemble d’instructions exécutées par l’ordinateur. (C’est tout simplement la traduction de votre algorithme dans un langage de programmation) Une instruction est une tâche que doit exécuter l’ordinateur. Certains programmeurs parlent plutôt de script en lieu et place de programme.

 On peut dire que programme = script. Ce ne sont en grosso-modo que des synonymes.  

III- Python est un langage de programmation

 Rappelons qu’un programme est juste une séquence d’instructions disant à l’ordinateur ce qu’il doit faire. Evidemment, nous avons besoin de fournir ces instructions dans un langage que l’ordinateur peut comprendre.

Il serait très intéressant si nous pouvions juste dire à un ordinateur ce qu’il doit faire dans notre langue maternelle, comme dans les films de science-fiction. Malheureusement, en dépit de plusieurs efforts les informaticiens (y compris moi :) ), créer des ordinateurs capables de comprendre le langage humain est un problème encore non résolu. Même si les ordinateurs pouvaient nous comprendre, le langage humain n’est vraiment pas commode pour décrire des algorithmes assez complexes car il est rempli d’ambiguïté et d’imperfection. Prenons un petit exemple (j’aime bien les exemples :) ). Si je disais "J’ai vu un homme dans le parc avec des jumelles". Est-ce que cela veut dire que j’avais des jumelles en main ? Ou plutôt c’était l’homme en question que j’ai vu qui avait des jumelles ? Et de plus qui est-ce qui était dans le parc? Vous comprenez à présent ce que je voulais dire.

Ainsi les informaticiens ont essayé de résoudre ce problème en créant des notations spéciales pour exprimer les calculs de manière exacte et non ambiguë. Ces notations spéciales sont appelées langages de programmation. Chaque structure dans un langage de programmation a une forme précise (syntaxe) et une signification correcte. Python est un exemple de langage de programmation et c’est ce dernier que nous allons apprendre dans quelques instants.

Vous avez peut être entendu parler d’autres langages de programmation comme le C++, le Perl, PHP, JAVA… Bien que ces langages diffèrent de beaucoup de détails, ils partagent la propriété d’avoir une syntaxe bien définie et non ambiguë et une sémantique. Tous les langages cités plus haut sont des exemples de langages de haut niveau.

 En fait, plus le langage de programmation se rapproche du langage humain, plus on dit qu’il est de haut niveau. (mais évidemment la traduction en binaire prendra un peu plus de temps :) )

 En effet, l’ordinateur ne comprend en réalité qu’un seul langage qu’on appelle communément langage machine ou langage binaire. Ce langage n’est composé que de deux chiffres 0 et 1 appelés aussi bits. En d’autres termes l’ordinateur ne comprend que 0 et 1. Ecrire donc un programme avec de 0 et 1 est un vrai parcours de combattant. Ainsi grâce au langage de programmation qui se rapproche un peu plus du langage naturel (anglais, français … ), nous pourrons écrire nos programmes (on dit coder), plus aisément.

Ce code sera ensuite traduit en langage machine.

 Alors comment est-ce que notre code est traduit en langage machine ??

 IV- Compilateur et interpréteur

  Il y a deux moyens pour traduire un code écrit dans un langage de programmation en langage machine. Un langage de programmation peut être soit compilé ou soit interprété. Un compilateur est un programme complexe qui prend un programme écrit dans un langage de programmation (en C par exemple) et le traduit en un programme équivalent en langage machine. Le programme écrit dans le langage de haut niveau est appelé code source et le résultat obtenu après traduction code machine est un programme que l’ordinateur peut directement exécuter. Un interpréteur est un programme qui simule un ordinateur qui comprend un langage de haut-niveau. Plutôt que traduire le code source du programme en langage machine, l’interpréteur analyse et exécute le code source instruction par instruction.

Python est un exemple de langage interprété. La différence entre l’interprétation et la compilation est que la compilation est un peu plus courte lors de la traduction en langage machine. Une fois le programme compilé et que tout fonctionne, il peut être exécuté plusieurs fois sans avoir besoin de compiler à nouveau le code source. Alors que dans le cas de l’interpréteur, l’interpréteur a besoin d’être lancé à chaque fois qu’on exécute le programme.

 Les programmes compilés ont donc tendance à être plus rapide à l’exécution, vu que la traduction est faite une fois pour toute, mais les langages interprétés permettent une plus grande flexibilité pour l’environnement de programmation car les programmes peuvent être développées et exécutés de manière interactive. Le processus de traduction fait ressortir un autre avantage, c’est que les programmes écrits dans un langage de haut niveau peuvent être exécutés sur plusieurs plateformes (plusieurs systèmes d’exploitation différents); on parle de portabilité. Le langage machine d’un ordinateur est créé par les concepteurs de processeur particulier.

Croyez-moi on s’y habitue à force de pratiquer. C’est ici que ce termine ce chapitre d’introduction à la programmation. Nous apprendrons dans le chapitre suivant à nous familiariser avec Python. Ce premier chapitre vous a plus ? Si oui, alors n’hésitez surtout pas à visionner notre série de vidéos sur le langage Python...
Rendez-vous est donné à la vidéo sur la chaine watsonweb communty. Mama miya!!!