République Algérienne Démocratique et Populaire
Ministère de l’Enseignement Supérieur et de la Recherche
Scientifique
Université des Sciences et de la Technologie Houari Boumediene
Introduction to
Computer Programming
(ICP)
Chargé du module: MEDJDOUB Ammar Rachad
FSB/USTHB
[Link]@[Link]
medjdoubammarrachad@[Link]
Plan du cours
Chapitre 1 : Généralités
1. Evolution de l’informatique et des ordinateurs
1.1. Définition de l’informatique
1.2. Définition de l’ordinateur
2. Système informatique
2.1. Les aspects de l’informatique
2.2. Types d’ordinateurs
2.3. Composition d’un ordinateur
2.4. Rôle de l’ordinateur
2.5. Critères de performance d’un ordinateur
Avant tout
L’informatique est avant tout une science de
l’abstraction
Il s’agit de créer le bon modèle pour un problème et
d’imaginer les bonnes techniques automatisables
pour le résoudre.
Toutes les autres sciences considèrent l’univers tel
qu’il est.
Par exemple, le travail d’un physicien est de
comprendre le monde et non pas d’inventer un
monde dans lequel les lois de la physique seraient
plus simples et auxquelles il serait plus agréable de
1. Evolution de l’informatique et des
ordinateurs
Selon les langages de programmation et la technologie
utilisée, l’histoire de l’informatique est classée par
génération :
La première génération (1946)
Construction du premier calculateur électronique
ENIAC, utilisant le langage de programmation binaire.
La deuxième génération (1956)
Premier calculateur transistorisé TRADIC, apparition
des langages de programmation Assembleur, Algol,
Cobol.
La troisième génération (1964)
Premier ordinateur à circuits intégrés (IBM360),
langages de programmation Basic, Pascal, C.
La quatrième génération (1976)
Naissance des micro-processeurs et des micro-
ordinateurs de bureau, logiciels de bureautique.
La cinquième génération (1984)
Naissance des micro-ordinateurs familiaux et
apparition des systèmes d’exploitation
(MS_DOS, MacOS).
La sixième génération (1992)
Diffusion de Windows à grande échelle et
exploration d’Internet par le grand public.
Génération actuelle
Apparition des ordinateurs portables puissants,
2. Système informatique
Un système informatique est l’ensemble des
moyens logiciels (software) et matériel (hardware)
nécessaire pour satisfaire les besoins
informatiques des utilisateurs.
L’information (ou données) est introduite par un
organe d'entrée (clavier, disques, souris,
commandes vocales, manettes etc.) pour être
traitée dans l'unité centrale par un programme qui
fournit des résultats à un organe de sortie (écran,
2.1. Les aspects de l’informatique
L’informatique est représentée par deux aspects distincts mais
indissociables :
Le HARDWARE : qui est composé de l’ensemble de matériels
(l’ordinateur et ses périphériques).
Le SOFTWARE : pour animer un ordinateur, il faut avoir des
logiciels (programmes) qui trouvent place dans deux catégories:
--Logiciel système : qui est un ensemble de programmes chargés
d’exploiter les ressources matérielles et de définir la façon dont ces
derniers doivent se comporter à l’égard des commandes introduites
par un utilisateur. Exemples de logiciel système : le MS-DOS et
Windows etc...
--Logiciel d’application : qui est un ensemble de programmes
2.2. Types d’ordinateurs
Le développement des ordinateurs se poursuit de
nos jours dans deux directions principales :
– Accroissement des performances
– Miniaturisation des composants
Super ordinateurs et Ordinateurs
Mini-Ordinateur
Micro-ordinateurs
Mini micro-ordinateurs.
2.3. Critères de performance d’un ordinateur
L’ordinateur est une machine performante qui est
caractérisé par :
La rapidité d’exécution des instructions (quelques
milliards d’opérations élémentaires par seconde),
La fidélité, l’ordinateur ne se trompe pas,
La précision de calcul, l’ordinateur peut manipuler
des chiffres très petits ou très grands,
Possède une grande capacité mémoire de stockage
de l’information dans d’excellentes conditions de
sécurité.
2.4. Rôle de l’ordinateur
Les applications de l’ordinateur sont très nombreuses. En voici
quelques exemples :
Accès à Internet ;
Envoi de courrier électronique ;
Création de sites Web ;
Lecture de CD-Rom ou de DVD ;
Archivage et retouche de photos ;
Jeux vidéo ;
Bureautique : traitement de texte, tableur, gestion de bases
de données... ;
Gestion et comptabilité : facturation, paye, stocks... ;
Analyse numérique ;
2.5. Composition d’un ordinateur
Un ordinateur se décompose d’un ensemble d’éléments
pouvant s'associer dans un boîtier, il est généralement
composé :
D'une unité centrale (processeur, carte mère,
mémoire…) ;
De périphériques internes (cartes de son, carte
vidéo, ...);
D'un lecteur de disquettes,
Un lecteur de CD-ROM ou de DVD-ROM;
Eventuellement, de cartes d'extension diverses ;
Périphérique d’entrée ;
Qu’est-ce que la Programmation ?
D’une manière générale,
l’objectif de la programmation est de
permettre l’automatisation d’un certain nombre de tâches, à
l’aide de machines particulières:
les automates programmables
Automates programmables
Un automate est un dispositif capable d’assurer, sans intervention humaine, un
enchaînement d’opérations, correspondant à la réalisation d’une tâche donnée.
Comme exemple d’automates, on peut citer:
la montre, le réveil-matin…ect.
L’automate est dit «programmable» lorsque l’enchaînement d’opérations
effectuées peut être modifié à volonté, pour permettre un changement de la tâche
à réaliser. Dans ce cas, la description de la tâche à accomplir se fait par le biais
d’un programme,
c’est-à-dire une séquence d’instructions et de données susceptibles d’être traitées
par l’automate.
Exemple d’automate programmable
automate
programme
tâche
Programmer c’est...
En résumé, programmer c’est donc
décomposer la tâche à automatiser sous la forme d’une séquence
d’instructions et de données
adaptées à l’automate utilisé.
Dès lors, voyons quelles sont ces instructions et données
«adaptées», dans le cas où l’automate programmable est un
ordinateur.
Instructions et langage machine
Langage machine: format
interne
Les générations de
langage
Au cours du temps, différents types de langages de programmation firent
leur apparition, et furent regroupés [entre autres] en générations
Bien qu’il s’agisse d’une classification différente de celle des machines, les
générations de langages sont, du moins pour les premières, liées sur le plan
chronologique aux générations de machines, et aux performances de leurs
composants
1 ère
Génération
Au début était le langage de machine.
Dans le cas des ordinateurs de premières
générations, la mémoire n’est pas encore
utilisée pour le stockage du programme.
On l’imagine facilement, la production des
programmes était fastidieuse, et leur
relecture et modification presque
impossible.
Par ailleurs, les programmes écrits pour
une machine ne pouvaient pas être
2 ème
génération (1)
Puis vint le langage d’assemblage.
Afin de rendre les programmes plus
faciles à écrire et à corriger,
on a rapidement songé à remplacer les
séquences de bits par des symboles,
les instructions machines étant codées
par des mnémoniques et les données
par les caractères alphanumériques
associés.
Le nouveau langage ainsi produit
s’appelle un langage d’assemblage,
ou langage assembleur.
Exemple 0101 0110 0101
«6» «5»
«LOAD»
3 ème
génération
4 ème
génération
Parallèlement aux langages évolués, des langages encore plus spécialisés, voir
des méta-langages, ont fait leur apparition.
Un langage de programmation est donc un moyen formel permettant de
décrire des traitements (i.e. des tâches à effectuer) sous la forme de
programmes (i.e. de séquences d’instructions et de données de haut
niveau, c’est-à-dire compréhensibles par le programmeur) et pour lequel
il existe un traducteur permettant l’exécution effective des programmes
par un ordinateur.
Définition d’un système
d’exploitation
Le système d’exploitation est l’ensemble des programmes qui
se chargent de résoudre les problèmes relatifs à l’exploitation de l’ordinateur.
Plus concrètement, on assigne généralement
deux tâches distinctes à un système d’exploitation:
1. Gérer les ressources physiques de l’ordinateur (assurer l’exploitation efficace,
fiable et économique des ressources critiques (processeur, mémoire)),
2. Gérer les informations manipulées par les utilisateurs (faciliter le travail des
utilisateurs en leur présentant une machine plus simple à exploiter que la
machine réelle).
Apparition des systèmes
d’exploitation
Les premières machines étaient dépourvues de système d’exploitation; a cette
époque, toute programmation était l’affaire de l’utilisateur.
Dès lors, le «passage en machine» (exécution d’un programme) nécessitait un
ensemble d’opérations longues et fastidieuses. Par exemple,
lorsque la machine s’arretait (suite à une panne), il fallait à nouveau programmer à la
main l’amorcage.
Avec les machines de seconde génération, on commenca à
automatiser les opérations manuelles, ce qui améliora l’exploitation des différentes
unités.
Pour cela, des programmes spécifiques appelés moniteurs ou exécutifs
firent leur apparition, leur rôle étant d’assurer la bonne marche des opérations
(séquencement des travaux des utilisateurs).
le système d’exploitation était né.
LA LANGUE R
HISTORIQUE
Dans le milieu des années1970, une équipe de chercheurs
de ATT Bell Laboratories, composée de John
Chambers, Douglas Bates, Rick Becker, Bill Cleveland,
Trevor Hastie, Daryl Pregibon et Allan Wilks, développe
un langage de programmation appelé S (la lettre S
faisant référence à statistics). Il s’agit d’un langage
permettant de manipuler les données et d’effectuer
Dans le milieu des années 1990, Ross Ihaka et Robert Gentleman
créent le R au département de Statistiques de l’Université d’Auckland.
Ce langage et logiciel, inspiré du S est distribué sous les termes de la «
GNU General Public Licence » ([Link]
Un logiciel sous licence GNU est un « logiciel libre » qui permet à tout à
chacun :
-----de disposer du logiciel gratuitement (généralement téléchargeable
gratuitement) ; -----d’utiliser le programme pour tout usage, y compris
commercial ; ------d’étudier le fonctionnement du programme, de
l'améliorer, le modifier, publier ces améliorations (l'accès libre au code
source est donc requis) ; -----de redistribuer des copies, gratuitement
ou non, sous quelque forme que ce soit
Le développement et la distribution de R sont assurés
par plusieurs statisticiens regroupés dans le « R
Development Core Team », qui rend public ses
développements dans le « Comprehensive R Archive
Network (CRAN) » ([Link]
Un grand nombre de personnes ont également
contribué à R en programmant ou en établissant des
Bug Reports. R est à la fois un langage et un logiciel ;
parmi ses caractéristiques les plus remarquables
citant :
√ Un système performant de stockage et de manipulation de
données ;
√ La possibilité d’effectuer du calcul matriciel et autres
opérations complexes ;
√ Une large collection intégrée et cohérente d’outils d’analyse
statistique ;
√ Un large éventail d’outils graphiques particulièrement
flexibles ;
√ Un langage de programmation simple et efficace qui inclut
2. PRESENTATION DE R
Le système R connaît depuis plus d’une décennie une
progression remarquable dans ses fonctionnalités, dans la
variété de ses domaines d’application ou, plus simplement, dans
le nombre de ses utilisateurs. La documentation disponible suit la
même tangente : plusieurs maisons d’édition proposent dans leur
catalogue des ouvrages — voire des collections complètes —
dédiés spécifiquement aux utilisations que l’on fait de R en
sciences naturelles, en sciences sociales, en finance, etc. R est un
logiciel de traitement de données : il permet de réaliser
d'importants calculs statistiques sur une grande quantité de
Plus qu'un logiciel, "R" est un langage de programmation
objet. Chaque donnée est stockée dans un objet que l'on
doit nommer.
R est un logiciel de calcul scientifique interactif libre qui
possède une large collection d’outils statistiques et
graphiques.
Plusieurs sites sont consacrés à ce logiciel, en particulier
le site [Link] offre une description
exhaustive sur le langage R et fournit les liens
indispensables pour les différents téléchargements,
3. CONNAISSANCES PREALABLES
RECOMMANDEES
Maitriser les outils informatiques et statistiques nécessaires
aux sciences des données, en particulier, la gestion de
projets d'analyse des données, l'importation, remaniement et
transformation des données, la visualisation sous forme de
graphiques, et l'inférence. Pouvoir présenter clairement et
rigoureusement les résultats de ces analyses dans un
rapport scientifique de manière reproductible. Être capable
d'analyser correctement des données biologiques usuelles
Comme rien n’est parfait, on peut également
trouver quelques inconvénients
Applications avancées des logiciels en
sciences de la nature et de la vie
Analyse d’images scientifiques (ImageJ)
ImageJ est un logiciel de traitement d'images performant
écrit en Java pour le domaine scientifique qui peut être déployé
dans les systèmes informatiques les plus divers (Window, Mac et
Linux).
Ce logiciel sous licence Open Source, très facilement
extensible, peut être utilisé gratuitement.
Il a été développé par l'Américain Wayne Rasband qui met
sans cesse de nouveaux composants à disposition.
Ce logiciel offre une vaste gamme de fonctionnalités, font
partie des fonctions de base un grand éventail d'outils de
mesurage comme la mesure des longueurs, des angles, les
L'installation est extrêmement simple.
1.) On ouvre l'image à traiter sous File / Open en l'important dans
le programme :
2.) Sous Edit, il est alors possible d'effectuer
les tâches standards les plus diverses : Cut,
Copy, Paste, Clear, Fill, Draw, Invert
3.) Sous le point du menu Image, on peut appeler diverses routines de traitement de
l'image comme [Link].
Schéma de couleur
Luminosité, contraste
5.) Analyze est le point du menu qu'il faut sélectionner entre
autres pour les actions suivantes :
- Autocorrelation
- Histogram
- Cell Counter
Exemple : l'histogramme
6.) Si on désire par exemple mesurer une cellule, on doit
sélectionner l'outil de mesure de l'image dans les « plugins » :
Mesure de la longueur de cellules
Applications en biologie
Analyse des séquences génomiques avec Biopython
Biopython est une bibliothèque Python spécialement conçue pour le
traitement et l’analyse des données biologiques.
Elle permet de manipuler facilement des séquences d’ADN, d’ARN
ou de protéines, et d’effectuer diverses opérations bio-informatiques.
Par exemple, on peut lire et écrire des fichiers GenBank, calculer la
composition en bases, ou encore traduire une séquence d’ADN en
# Exemple d'une séquence d'ADN
sequence_adn = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG")
# Affichage de la séquence
print("Séquence ADN :", sequence_adn)
# Transcription : ADN ARN messager
sequence_arn = sequence_adn.transcribe()
print("Séquence ARN :", sequence_arn)
# Traduction : ARN Protéine
sequence_proteine = sequence_adn.translate()
print("Séquence Protéine :", sequence_proteine)
# Calcul de la composition en bases
from collections import Counter
composition = Counter(sequence_adn)
print("Composition en bases :", composition)
Traitement des données biologiques avec EMBOSS
EMBOSS (European Molecular Biology Open Software Suite) est un
logiciel conçu pour le traitement et l’analyse des données en
bioinformatique.
Elle regroupe plus de 200 programmes permettant d’effectuer des
tâches courantes comme la traduction de séquences d’ADN, ou
encore la construction d’alignements multiples.
EMBOSS est largement utilisé dans les laboratoires de biologie
moléculaire.
# Exemple avec EMBOSS - Traduction d'une séquence ADN
# 1. Créer un fichier contenant la séquence ADN
echo ">sequence1
ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG"
> [Link]
# 2. Traduire la séquence en protéine avec transeq
transeq -sequence [Link] -outseq [Link]
# 3. Afficher le résultat
cat [Link]
Analyse avec Galaxy
Galaxy est une plateforme web libre et conviviale
qui permet de traiter, analyser et intégrer des
données biologiques de différentes sources :
Génomiques,
Protéomiques, etc.
Galaxy aide à relier plusieurs niveaux d’information
biologique pour mieux comprendre les mécanismes
cellulaires globaux.
Modélisation de systèmes biologiques
(COPASI)
Introduction à la modélisation biologique
Définition :
La modélisation biologique consiste à représenter un système vivant à
l’aide d’équations ou d’algorithmes, afin de comprendre, prédire et
simuler son comportement.
Objectifs :
– Décrire quantitativement les interactions biologiques.
– Prédire l’évolution d’un système (réactions biochimiques,
population, infection…).
– Tester des hypothèses sans expérimentations coûteuses.
– Étudier la sensibilité et la stabilité du système.
– COPASI : logiciel de simulation biochimique basé sur des
équations cinétiques.
Présentation de COPASI
Logiciel libre et multiplateforme (COmplex PAthway
SImulator).
Permet de modéliser des réseaux de réactions
biochimiques (enzymatiques, métaboliques,
signalisation…).
Éléments d’un modèle biochimique
Espèces : molécules ou entités (substrat, enzyme, produit…).
Réactions : transformation d’espèces selon des lois
cinétiques.
Paramètres : constantes de vitesse, concentrations initiales.
Compartiments : milieu de réaction (cytoplasme, noyau…).
Applications et perspectives
Modélisation de voies métaboliques.
Simulation de signalisations cellulaires.
Étude de dynamiques écologiques
(espèces, épidémies).
Prévision d’impacts environnementaux ou
pharmacologiques.
Notions de base du langage de
programmation python
Présentation générale
Le 20 février 1991 est apparue la première version du langage de
programmation python. Elle a été développée par Guido van
Rossum au sein du Centrum voor Wiskunde en Informatica (CWI)
d'Amsterdam, aux Pays-Bas. Le but premier de ce langage était
d’automatiser l’écriture de scripts et de réaliser rapidement des
prototypes d’applications. Depuis quelques années, toutefois, ce
langage de programmation s’est hissé parmi les plus utilisés
dans le domaine du développement de logiciels, de gestion
d’infrastructure et d’analyse de données. Il s’agit d’un élément
moteur de l’explosion du Big Data. Python est un langage de
programmation interprété, qui ne nécessite donc pas d’être
compilé pour fonctionner.
Les avantages du langage Python
L’un des principaux avantages du langage Python est qu’il
fonctionne sur tous les principaux systèmes d’exploitation et
plateformes informatiques. Il est facile à apprendre et à utiliser.
Ses caractéristiques sont peu nombreuses, ce qui permet de
créer des programmes rapidement et avec peu d’efforts. De plus,
sa syntaxe est conçue pour être lisible et directe. Malgré sa
simplicité, ce langage est aussi utilisé pour créer des logiciels de
qualité professionnelle. Qu’il s’agisse d’applications ou de
services Web, le langage Python est utilisé par un grand nombre
de développeurs pour créer des logiciels. Ainsi, c’est un langage
Les caractéristiques du langage Python.
Les principales caractéristiques du langage open-source
Python résident dans sa simplicité et sa lisibilité. Il est doté
d’une bibliothèque de base très fournie. Un grand nombre de
bibliothèques sont disponibles pour le calcul scientifique, les
statistiques, les bases de données ou la visualisation. Il est
également caractérisé par sa grande portabilité qui lui offre une
indépendance vis à vis du système d’exploitation (linux,
windows, MacOS). C’est un langage orienté objet avec un
typage dynamique, ce qui permet une grande flexibilité et
Historique des versions de Python
Les versions de Python développées depuis sa création et
jusqu’en 2009 sont des versions 2.x. Depuis 2009, Python
est passé à la version 3. Le changement de version s'est
accompagné de quelques modifications de syntaxe, ne
permettant pas un portage immédiat d'un script d'une
version à l'autre. Python 3.x est la version actuelle du
langage. Elle apporte constamment de nombreuses
fonctionnalités nouvelles et très utiles.
La syntaxe du langage Python.
Les instructions.
Dans le langage Python, chaque instruction occupe une ligne : il
n'y a pas de symbole de fin, Il s’agit de passer simplement à la
ligne après chaque instruction. Les instructions Python peuvent
être exécutées en écrivant directement en ligne de commande.
>>> print ("Département de biologie et Physiologie des
organismes – USTHB")
Département de biologie et Physiologie des organismes – USTHB
L'indentation.
Les blocs d'instructions, eux, ne sont pas délimités par un
symbole particulier mais sont identifiés par l'indentation,
au lieu d'accolades comme en C ou C++ ; ou de begin ...
end comme en Pascal ou Ruby.
Une augmentation de l'indentation marque le début d'un
bloc, et une réduction de l'indentation marque la fin du bloc
courant.
if 10 > 5:
print("dix est plus grand que cinq")
Commentaires.
Il est possible d'intégrer des commentaires
dans un programme Python. Les
commentaires commencent par un # :
#Ceci est un commentaire.
Types et variables.
Python autorise, sans déclaration aucune, la manipulation de
types classiques : booléens, entiers, réels, caractères, chaîne de c
pi = 3.14 # déclaration et affectation d'un nombre aractères.
Département = 'Génie-civil’ # affectation d'une chaîne de caractères
Le symbole = est réservé à l'affectation d'une valeur à une
variable.
Le symbole ==, lui, permet d'exprimer un test d'égalité qui ne
modifie en rien les variables.