Académique Documents
Professionnel Documents
Culture Documents
INF1007 : Introduction à la
programmation
Chapitre 1 : Introduction
Plan du cours
1. Environnement informatique
2. Méthodologie de programmation
1. Algorithmique
2. Conception d’un programme
3. Programmation
1. Brève histoire de la programmation
2. Types de langages et niveaux d’abstraction
3. Langages interprétés versus compilés
4. Environnement de programmation
Environnement informatique
Environnement informatique
Unité
Unité Unité de
centrale de
d’entrée traitement sortie
Environnement informatique
Un ordinateur n’est pas une machine pensante
et intelligente.
Un ordinateur stocke et manipule des
informations sous le contrôle d’un programme.
Entrée Sortie
(clavier, Mémoire (écran,
etc.) etc.)
Bus
Unité
Unité de
arithmétique Registres
contrôle
et logique
Environnement informatique
Deux types de mémoire : la mémoire vive ou RAM (Random Access
Memory) et la mémoire morte (disque dur).
L’Unité de Contrôle et de Traitement (UCT) est le « cerveau » de
l’ordinateur et peut effectuer des opérations logiques et arithmétiques
de base.
Entrée Sortie
Les données entrent et
(clavier, Mémoire (écran, sortent de l’ordinateur à
etc.) etc.)
l’aide de périphériques
d’entrée et de sortie.
Bus L’information est transférée
d’une unité à l’autre à
l’aide d’un bus.
Unité
Unité de
arithmétique Registres
et logique
contrôle Que se passe-t-il lorsqu’on
exécute un programme?
UCT (en anglais CPU)
Génie informatique et génie logiciel Benjamin De Leener 7 H2022
Chapitre 1 - Introduction
Ordinateur Humain
Bas niveau Haut niveau
r a
le
u C v o n t la b de
b a ge J a
y
h
t a -c
o
em g P M o
s s
La
n
e ud
A Ps
Génie informatique et génie logiciel Benjamin De Leener 8 H2022
Chapitre 1 - Introduction
Objectif :
Décrire une tâche de sorte à ce qu’elle soit facilement
programmable
Moyens :
• Identifier les différentes opérations et préciser la séquence qui
exprime la tâche
• Préciser les répétitions en regroupant les opérations à répéter
• Préciser les décisions en regroupant les opérations
dépendantes d’une condition à vérifier.
Langage informatique
Données d’entrée
Compilateur
Code Source Interpréteur
Données de sortie
Données de sortie
Le langage Python
JAVA
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); }
}
Caractéristiques du langage
• Python est portable, non seulement sur les différentes variantes d'Unix, mais aussi sur les OS
propriétaires : Mac OS, BeOS, NeXTStep, MS-DOS et les différentes variantes de Windows. Un
nouveau compilateur, baptisé JPython, est écrit en Java et génère du bytecode Java. La librairie Numba permet de compiler sur
CPU ou GPU du code python (les performances sont apprécionnantes).
• Python est gratuit, mais on peut l'utiliser sans restriction dans des projets commerciaux.
• Python convient aussi bien à des scripts d'une dizaine de lignes qu'à des projets complexes de
plusieurs dizaines de milliers de lignes.
• La syntaxe de Python est très simple et, combinée à des types de données évolués (listes,
dictionnaires...), conduit à des programmes à la fois très compacts et très lisibles. À fonctionnalités
égales, un programme Python (abondamment commenté et présenté selon les canons standards) est
souvent de 3 à 5 fois plus court qu'un programme C ou C++ (ou même Java) équivalent, ce qui
représente en général un temps de développement de 5 à 10 fois plus court et une facilité de
maintenance largement accrue.
• Python gère ses ressources (mémoire, descripteurs de fichiers...) sans intervention du programmeur,
par un mécanisme de comptage de références (proche, mais différent, d'un garbage collector).
• Python est (optionnellement) multi-threadé et peut être utilisé sur GPU (avec la librairie Numba).
Caractéristiques du langage
• Python est orienté-objet. Il supporte l'héritage multiple et la surcharge des opérateurs. Dans son
modèle objets, et en reprenant la terminologie de C++, toutes les méthodes sont virtuelles.
• Python intègre, comme Java ou les versions récentes de C++, un système d'exceptions, qui
permettent de simplifier considérablement la gestion des erreurs.
• Python est dynamique (l'interpréteur peut évaluer des chaînes de caractères représentant des
expressions ou des instructions Python), orthogonal (un petit nombre de concepts suffit à engendrer
des constructions très riches), réflectif (il supporte la métaprogrammation, par exemple la capacité
pour un objet de se rajouter ou de s'enlever des attributs ou des méthodes, ou même de changer de
classe en cours d'exécution) et introspectif (un grand nombre d'outils de développement, comme
le debugger ou le profiler, sont implantés en Python lui-même).
• Comme Scheme ou SmallTalk, Python est dynamiquement typé. Tout objet manipulable par le
programmeur possède un type bien défini à l'exécution, qui n'a pas besoin d'être déclaré à l'avance.
• Python possède actuellement deux implémentations. L'une, interprétée, dans laquelle les
programmes Python sont compilés en instructions portables, puis exécutés par une machine virtuelle
(comme pour Java, avec une différence importante : Java étant statiquement typé, il est beaucoup
plus facile d'accélérer l'exécution d'un programme Java que d'un programme Python). L'autre génère
directement du bytecode Java.
Caractéristiques du langage
• Python est extensible : comme Tcl ou Guile, on peut facilement l'interfacer avec des bibliothèques C
existantes. On peut aussi s'en servir comme d'un langage d'extension pour des systèmes logiciels
complexes.
• La bibliothèque standard de Python, et les paquetages contribués, donnent accès à une grande
variété de services : chaînes de caractères et expressions régulières, services UNIX standards
(fichiers, pipes, signaux, sockets, threads...), protocoles Internet (Web, News, FTP, CGI, HTML...),
persistance et bases de données, interfaces graphiques.
• Python est un langage qui continue à évoluer, soutenu par une communauté d'utilisateurs
enthousiastes et responsables, dont la plupart sont des supporters du logiciel libre. Parallèlement à
l'interpréteur principal, écrit en C et maintenu par le créateur du langage, un deuxième interpréteur,
écrit en Java, est en cours de développement.
Programmation …
• impérative : série de commandes explicites
• structurée : code avec des structures propres, claires et imbriquées
• procédurale : contient une série d’étapes à réaliser
Environnement de programmation
Un IDE ou un Environnement de développement (Integrated Development
Environment) est un environnement de programmation complet qui se
présente sous la forme d'une application.
Il se compose généralement
• d’un éditeur de code,
• d'un compilateur,
• d'un débogueur,
• d’un système d’aide et
• d'un générateur d'interface graphique.
Introduction à l’algorithmique
Vérification
Programmation
Programme
informatique
Analyse du problème Algorithme
Problème
1. La définition du problème
2. L’analyse du problème
3. La conception des algorithmes
4. La mise au point du programme dans un langage de
programmation (ex: Python)
5. La vérification du programme
Répondre à COMMENT?
• Créer et réfléchir à diverses solutions possibles.
• Il faut s'attendre à envisager plusieurs possibilités avant
de trouver la bonne.
• En programmation, il n'y a pas de solution unique.
Choisir celle avec laquelle vous êtes le plus à l'aise. Pas
nécessairement la plus performante ou la plus courte ou
celle du professeur.
• Il n'y a pas de fonctions Python magiques. Elles ont
toutes des avantages et des inconvénients.
• On a chacun notre style de programmation, mais il y a
des règles communes à respecter.
Génie informatique et génie logiciel Benjamin De Leener 27 H2022
A2019
Chapitre 1 - Introduction
Instances du problème:
Suite de nombres: 475, 787, 34, 245, 56, 350
Suite de noms: Pierre, Christine, Sylvie, Samuel, Fabien
1. x = a;
2. Si b > x, alors x = b;
3. Si c > x, alors x = c;
Quelques définitions :
Le symbole = représente l’opérateur d’assignation
x = a signifie « copie la valeur de a dans x ».
La valeur de a reste inchangée
Paramètres d’entrée : a, b, c
Valeur de sortie : x = max (a, b, c)
Raffinement graduel
Plan du cours
1. Environnement informatique
2. Méthodologie de programmation
1. Algorithmique
2. Conception d’un programme
3. Programmation
1. Brève histoire de la programmation
2. Types de langages et niveaux d’abstraction
3. Langages interprétés versus compilés
4. Environnement de programmation