Vous êtes sur la page 1sur 42

IFT- - Introduction à la programmation

Module : Présentation de la programmation

Pascal Germain

Département d’informatique et de génie logiciel


Université Laval

/
Table des matières

Mise en contexte historique

Situer l’étape de programmation dans le développement logiciel

Algorithmes

Les instructions de base

Langage de programmation, code source, et langage machine

Le langage Python

Lectures, travaux et exercices

/
Mise en contexte historique
Origines : Les machines à calculer

Premiers ordinateurs = grosses calculatrices !

Les premières machines à calculer datent des années . Blaise Pascal a réalisé en à l’âge de
ans la Pascaline, qui effectue des additions et soustractions à l’aide d’engrenages mécaniques.

/
Origines : Les machines à calculer

La machine Enigma, développée au début des années , était une machine de chiffrement
électromécanique utilisée pour coder des messages, notamment pendant la e guerre mondiale
par l’armée Allemande.

/
Origines : Vers des machines programmables

• La logique mathématique permet la manipulation de symboles abstraits :


• Gottfried Leibniz : « Explication de l’arithmétique binaire » ( )

• George Boole :« Les règles de la pensée » ( )

• Ada Lovelace : Les premiers algorithmes (~ )

• Les ordinateurs programmables :


• La « Machine analytique » de Charles Babbage (~ )

• Les ordinateurs « Colossus » ( - ), auxquels a contribué Alan Turing

• Le « Electronic Numerical Integrator and Computer » (ENIAC, ) et« Electronic Discrete Variable
Automatic Computer » (EDVAC, ) : premiers odinateurs entièrement électroniques

/
Origines : L’informatique moderne

L’ENIAC est un des premiers ordinateurs conçus selon le modèle de l’« architecture Von
Neumann ».

/
Origines : L’informatique pour tous (ou presque)

• : Langage « Beginners All-purpose Symbolic Instruction Code » (BASIC)

• - : Fondation de Microsoft et Apple

• ~ - : Premiers ordinateurs pour la maison (Commodore, Machintosh, IBM PC, ...)

• : Création du « Réseau interordinateurs scientifique québécois » (RISQ)

• : Première version du système d’exploitation Linux

• - : Fondation de Amazon et Google

• : Premier iPhone

• : Premier Raspberry Pi

Au fond, les opérations élémentaires effectuées par les ordinateurs n’ont pas beaucoup
changé depuis ans. /
Situer l’étape de programmation
dans le développement logiciel
Le cycle de développement d’un logiciel

/
Le cycle de développement d’un logiciel

/
Le cycle de développement d’un logiciel

Lors du développement d’un logiciel de grande envergure, il faut se soucier :

• Des coûts de développement ;

• De son efficacité ;

• De sa facilité d’interconnexion avec son environnement et de sa facilité d’utilisation


(convivialité) ;

• De sa portabilité et de sa compatibilité ;

• De sa validité, de sa fiabilité et de sa vérifiabilité ;

• De sa facilité d’entretien (maintenabilité) et de sa longévité ;

/
Le cycle de vie d’un logiciel

/
Dans le cadre de ce cours...

/
Algorithmes
Algorithmes

• Un algorithme est une description étape par étape des actions à poser (intructions)
pour atteindre un certain but.
• Chacune des étapes doit être :
• Non ambigüe

• Appartenir à l’ensemble fini des instructions possibles

• On nomme pseudo-code la description d’un algorithme qui n’est pas traduit dans un langage
de programmation particulier.

• Souvent, la programmation consiste à traduire le pseudo-code d’un algorithme dans un


langage de programmation de notre choix.

/
Programmer... Un chien !

• Actions/Instructions
• Couché

• Debout

• Assis

• Donne la patte

/
Deux programmes

Questions :

. Quelle patte donnera-t-il ?

. Puis-je le faire rouler par terre ?

. Que fera-t-il si on fait : Couché, Donne la patte ?

Le langage « chien » est un langage ambigu ! /


Programmer le calcul d’une moyenne

Le langage mathématique, lui, n’est pas ambigu.


• Langage (pour une calculatrice scientifique)
• Opérateurs mathématiques : +, −, ×, /, . . .

• Instructions :
• variable <- … : mémoriser une information
Exemple : age_retraite <- 65

• entrée : acquérir une donnée Exemple : age_embauche <- entrée()

• +, -, /, *, (, ) : opérateurs mathématiques
Exemple : anciennete <- (age_retraite - age_embauche)

• sortie : donner le résultat du calcul


Exemple : sortie(anciennete)

/
Programmer un système de domotique

En informatique, certains langages de programmation permettent d’accomplir des tâches de


« haut niveau ».
• Langage :
• Opérateurs de gestion d’infos + mathématiques

• Opérateur d’entrée d’un senseur de chaleur

• Commandes de contrôle d’une toile

• Entées et sorties :
• chaleur() : entrée donnant la température captée

• ouverture_toile() : donne le % d’ouverture de la toile

• baisse_toile(x_pourcent), où x_pourcent = % de fermeture de la toile

• monte_toile(x_pourcent), où x_pourcent = % d’ouverture de la toile


/
Les instructions de base
L’ordinateur : Une machine programmable

Un ordinateur est minimalement constitué d’un processeur (CPU), de mémoire vive (RAM), ainsi
que de périphériques d’entrées et de sorties.

/
Opérateurs de gestion d’information

Les instructions de base d’un langage de programmation informatique permettent d’intéragir avec
les composantes d’un ordinateur.

• Les variables : pour mémoriser de l’information

• L’affectation : pour déplacer de l’information

• L’entrée : pour acquérir des données provenant de l’extérieur

• La sortie : pour communiquer des données vers l’extérieur

/
L’opération d’affectation et les variables

En pseudo-code, nous allons utiliser la flèche <- comme le symbole de l’affectation.

. Évaluer l’expression à droite du symbole <-

. Mémoriser le résultat de l’évaluation de l’expression dans la variable identifiée à gauche du


symbole <-

/
Les entrées-sorties

• entrée:
• Du clavier ;

• Avec mémorisation temporaire ;

• Convertit la chaîne de caractères selon le type requis, par exemple les deux caractères consécutifs
"6" et "5" sont convertis en la valeur numérique 65.

• sortie:
• À l’écran ;

• Convertit la donnée en une chaîne de caractères correspondante, par exemple la valeur


numérique 60.0 est convertie en caractères affichés consécutivement : "6", "0", "." et "0".

/
Langage de programmation, code
source, et langage machine
Langage de programmation

• Langage de programmation. On appellera langage de programmation un ensemble de


mots-clés associé à un ensemble de règles très précises indiquant comment on peut
assembler ces mots pour former des « phrases », le code source, que l’interpréteur ou le
compilateur puisse traduire en langage machine (binaire).

• Langage de bas niveau. Un langage est dit « de bas niveau » (ex : Assembleur) s’il est
constitué d’instructions très élémentaires, très « proches de la machine ».
Désavantage : très dépendant du type de machine.

• Langage de haut niveau. Un langage de haut niveau comporte des instructions plus abstraites
(ex : C, C++, Python, Java,...). Chacune de ces instructions pourra être traduite par
l’interpréteur ou le compilateur en un grand nombre d’instructions machine élémentaires.
Avantage : beaucoup plus portable et plus facile à écrire.

/
Langage de programmation

Langage C : Langage Python :


f = fopen("Result.txt", "w"); f=open("Result.txt", "w")
f o r ( i n t i=0; i<length(data); i++) f o r i i n r a n g e (0, l e n (data)):
{ i f data[i] == "HIS":
i f (data[i] == "HIS") # Ecrire dans le fichier
{
/* Ecrire dans le fichier */
}
}

/
Langage machine

• Langage machine. Un ordinateur n’est rien d’autre qu’une machine effectuant des opérations
basé sur un système numérique limité à deux chiffres appelé système binaire : / . Les
successions de et de (les bits) sont souvent traités par groupes de (les octets), , ou
.

• Compilateur/Interpréteur. Toute donnée ou instruction d’un programme doivent être


convertie, ou codée, en format binaire : utilisation de systèmes de traductions automatiques
qui permet de convertir en nombres binaires des suites de caractères (le code source !)

• Le système de traduction proprement dit s’appellera interpréteur ou bien compilateur,


suivant la méthode utilisée pour effectuer la traduction.

/
Code source versus code machine

/
Le langage Python
Le langage Python

Python est un langage de programmation parmi tant d’autres !

• BASIC, Microsoft Basic

• Visual Basic, VB.NET

• C, C++

• Java

• Javascript

• Julia

• ...et vraiment beaucoup d’autres...

Voir :
https://fr.wikipedia.org/wiki/Chronologie_des_langages_de_programmation

/
Le langage Python

Atouts de Python :

• Langage interprété (facilite le prototypage) ;

• Typage dynamique (simplifie la programmation) ;

• Interactif ;

• Librairie standard très complète, grande quantité de librairies tierces (third-party).

/
Le langage Python

On peut débuter la programmation (relativement) rapidement avec Python :

C++ : Python :
# i n c l u d e <iostream> p r i n t ("Hello world")
using namespace std;

i n t main()
{
cout << "Hello world" << endl;
r e t u r n 0;
}

/
D’accord, mais est-ce utilisé dans l’industrie ?

Oui !

Quelles entreprises utilisent Python ?

• Google

• Pixar

• NASA

• etc.

Mais même s’il ne l’était pas, ce ne serait pas un problème : vous apprenez à programmer, le langage est un outil pour y
arriver.

/
Et en éducation ?

Quelles universités enseignent Python comme premier langage de programmation ?

• L’université Laval

• le MIT

• UC Berkeley

• Georgia Tech

• etc.
http://cacm.acm.org/blogs/blog-cacm/
176450-python-is-now- the- most- popular- introductory- teaching- language- at-top- us- universities/fulltext

/
Meilleurs langages en selon l’IEEE

https://www.developpez.com/actu/217533/

Meilleurs- langages-en- 2018- selon- l- IEEE- Python- conforte- sa- place- de- leader- grace-a-son- ascension- dans- le- machine- learning- et- l- embarque/

/
Et on peut faire quoi avec ?

L’environnement Python est riche en librairies de toutes sortes !

• Analyser des données (pandas, matplotlib)

• Faire du calcul scientifique (numpy, scipy)

• Faire de l’apprentissage automatique (scikit-learn)


et des réseaux de neurones profonds (pyTorch, TensorFlow)

• Construire des sites Web (flask, cherrypy)

• Programmer des jeux vidéos (pygame)

• Maintenir des serveurs

• Faire de la robotique avec un Raspberry Pi

• Et beaucoup plus !
/
Le langage Python

Développements :

• : Python . , développé au CWI (Centrum Wiskunde & Informatica, Pays-Bas)

• : Python . , ajout du ramasse-miettes

• : Python . , correction d’incohérences ⇒ non rétrocompatible avec Python !

• : Python . : La version préconisée pour ce cours.

/
Lectures, travaux et exercices
Plan des activités du module

• Documents à lire
• Chapitre de G. Swinnen

• Travaux dirigés
• Installation, survol et test des logiciels utiles

• Premiers pas avec l’interpréteur, écriture d’un premier programme, consultation de l’aide
interactive

/
Questions ?

Vous aimerez peut-être aussi