Cours Algo
Cours Algo
Cours Algo
Cours d’Informatique
d’Informatique
Initiation
Initiation àà l’informatique,
l’informatique,
àà l’algorithmique
l’algorithmique
et
et àà la
la programmation
programmation
11ère
ère année DEUG MIAS-MASS
année DEUG MIAS-MASS
Computer Science
INFORMATIQUE ? en anglais
INFORMATION AUTOMATIQUE
Art d’entraîner automatiquement des actions
Science de l’information
ENTREE
Données corrigées
TRAITEMENT Résultats
Par ordinateur
SORTIE
Disque
Ecran Mémoire
Dur
Centrale
Clavier
Unité de Disquette
Souris traitement
Haut- CDROM
parleurs Unité Centrale
Carte son
Périphériques de communication Unités d’échange
Périphériques de mémorisation Bus
Support de transfert
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 16
d'information entre les différents
- JN Provost - V Pagé
ensembles d'un ordinateur) .
1.3.1
1. 3.1 -- Périphériques
Périphériques
• 2 types de périphériques
Une pièce de matériel qui peut effectuer une fonction particulière
– périphériques de communication,
– périphériques de mémorisation.
• Périphériques de communication
– Périphériques d’entrées
• clavier
• souris
– Périphériques de sorties
• écran
• imprimantes
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 17
- JN Provost - V Pagé
Les
Lespériphériques
périphériques
ENTREES
• Clavier
• Souris
MEMOIRES (entrées/sorties)
• Disque dur
• Disquette
• Disque optique (CD)
SORTIES
• Ecran
• Imprimante
MODEM MODEM
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 19
- JN Provost - V Pagé
• Convertisseurs A/N ou N/A
• Signal numérique : 0 et 1
• Signal analogique: t et A continu => codage
par modulation
• MODEM = modulation+démodulation
Unité de Traitement
Unité de Commande
et de Contrôle
Unité Arithmétique
et Logique
Mémoire
Périphériques Centrale Périphériques
d’Entrées de Sorties
Périphériques d’Entrées/Sorties
Informations Mémoires Auxiliaires
Commandes
Texte du
Variables
Zone de programme Code du
exécutable
données en C programme
– conduit le calcul
Unité Arithmétique
(ordre des instructions) et Logique
voulu par le programmeur
Mémoire
• Unité Arithmétique et logique Centrale
– unité de calcul
– exécute les opérations arithmétiques et logiques (+-*/ et ou
…) d’un programme sous le contrôle de l’unité de commande
Connecteurs de contrôleur
de disquettes et disque dur
Emplacements de
cartes d ’extensions
Batterie
Décodeur d ’instructions
Unité de traitement
Unité arithmétique et logique
Registres:
Mémorise différents
états binaires (environ 10)
résultant des opérations élémentaire
Unité de contrôle Unité de détection d’erreurs Overflow
Retenue
Parité
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 31
- JN Provost - V Pagé
1.3.4
1.3.4 -- Les
Les bus
bus
Disque
Ecran Mémoire
Dur
Centrale
Clavier
Unité de Disquette
Souris traitement
CDROM
• Permettent
Haut- de faire
Unité
le lien entre les
Centrale
parleurs
différentes unités d’un ordinateur
• représente le chemin utilisé par les
informations pour aller d’une unité à l’autre
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 32
- JN Provost - V Pagé
1.4
1.4 :: Logiciel
Logiciel
• Domaine du logiciel (software)
– instructions expliquant à l ’ordinateur comment
traiter un problème
– algorithmes et représentation informatiques de
ces instructions
– programme
Algorithme informatique
=
procédure de calcul
Rigueur scientifique
IMPORTANT ! Informations
en sortie
Sinon, information de sortie
erronée
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 35
- JN Provost - V Pagé
1.4.1
1.4.1 -- Algorithmes
Algorithmes et
et programmes
programmes
• Programme :
– codage d’un algorithme afin que l’ordinateur
puisse exécuter les actions décrites
– doit être écrit dans un langage compréhensible
par l’ordinateur
langage de programmation (Assembleur
(micropro), Basic, C, Fortran, Pascal, Cobol …)
• Un programme est donc une suite ordonnée
d’instructions élémentaires codifiées dans
un langage de programmation
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 36
- JN Provost - V Pagé
1.4.2
1.4.2 -- Langages
Langages de
de programmation
programmation
• L’ordinateur
– construit autour d’un ensemble de circuits électroniques (le
courant passe, le courant ne passe pas)
– traite donc que des signaux assimilables à 0 ou 1
– une opération élémentaire suite de 0 et de 1 = suite de bits
(BInary digiT) ! Un champ de 8 bits constituant ce qu'on
appelle 1 byte ou 1 octet. Importance des unités en
science. Rappel: k(2^10) M et G .
• Pour que les programmes et les données soient
compréhensibles par l’ordinateur il faut effectuer un
codage binaire
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 37
- JN Provost - V Pagé
1.4.2
1.4.2 -- Langages
Langages de
de programmation
programmation
• Langage machine
– langage binaire
– ses opérations sont directement compréhensibles par
l’ordinateur
– propre à chaque famille d’ordinateur
– Pour pouvoir manipuler du langage machine, on est obligé de
passer par de l'Assembleur.
Application 1 Application 2
Système d’exploitation
Matériel
RAM, disque dur, disquette, CD-ROM,
clavier, souris, écran, imprimante
Users
Appli Données divers
personelles
Exercices windows
WordPad Word
Paint
Access
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 55
- JN Provost - V Pagé
Applications
Applications multimédia
multimédia
Logiciels permettant de reproduire ou de
créer des sons, des animations, des
vidéo, …
Netscape
PowerPoint
Algorithme informatique
=
schéma de calcul
programmation
traduction
i
i 1
• Complexité en 2n² n n
(i j )
i 1 j 1
• Documents autorisés
• Bibliographie:
– Cours d’informatique: langages et programmation.
MASSON. Scholl-Fauvet-Lagnier-Maraninchi
– Initiation à l’informatique et aux structures de données
Volume 1. DUNOD Courtin-Kowarski
• SI=somme initiale
• T=taux d’intérêt (ex: 3 pour 3%)
• I=intérets=S*T/100
• SF=somme finale=S+I
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 83
- JN Provost - V Pagé
2.1
2.1 -- Exemple
Exemple
• Formalisation de l’algorithme
– En langage de description : pseudo code, LDA
(Langage de Description Algorithmique)
écrire " Introduisez la somme initiale (en francs): "
Lire SI
écrire " Introduisez le taux d'intérêt (ex: 3 pour 3%): "
lire T
T SI* T / 100
SF SI + I
écrire " L'intérêt fourni est de " , I , "francs "
écrire " La somme après un an sera de " , SF , "francs "
p non p
VRAI FAUX
FAUX VRAI
• (b > 8) ou (c < 1) ? F ou F = F
• (b > 0) ou (c > 1) ? V ou V= V
• (b > 9) ou (c > 1) ? F ou V = V
• (b > a) et (c > b) ? V et V =V
• (b > a) et (c < 0) ? V et F = F
• non (c < a) ? Non(F)=V
• non ((b > a) et (c > b)) ? Non(V et V)=non(V)=F
• ((b > a) et (c > b)) ou (a < 0) ? (V et V)ou(F)=V ou F=V
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 106
- JN Provost - V Pagé
Variables
Variablesbooléennes
booléennes
• Variable ne pouvant contenir que deux types de
valeur : VRAI ou FAUX
• Peuvent donc stocker le résultat de l’évaluation
d’une expression logique
• Définition algorithmique :
– Booléen variable
• Définition C : il n’existe pas de type booléen
– Utilisation du type entier
Int OK, pair ;
– égal à 0 FAUX ; différent de 0 (ou 1) VRAI
• LDA : Assignation : OK VRAI
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 107
- JN Provost - V Pagé
4.4.
4.4. L'alternative
L'alternative en
en CC
si expression alors if (expression) {
séquence d'instructions séquence_d_instructions;
fsi }
si expression alors if (expression)
une instruction une_instruction;
sinon else {
séquence d'instructions séquence_d_instructions;
fsi }
2001/2002
i-- i=i-1
DEUG MIAS-MASS 1ère année - Ph. Hunel 132
- JN Provost - V Pagé
5.4
5.4 –– Les
Les boucles
boucles en
en CC
#include <stdio.h>
main() {
int i;
for (i=1;i<=5;i++)
printf("%d : Ca monte\n",i);
printf("--------------------------\n");
for (i=5;i>=1;i--)
printf("%d : Ca descend\n",i);
}
--------------------------
5 : ca descend
4 : ca descend
3 : ca descend
2 : ca descend
1 : ca descend
main() {
int i, somme, N;
somme=0;
printf("Entrez le nombre d'élément que vous voulez sommer : ");
scanf("%d",&N);
i=1;
while (i<N) {
somme = somme +i;
i=i+1;
}
printf("Somme des %d premiers entiers est :
%d\n",N,somme);
}
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 137
- JN Provost - V Pagé
5.4
5.4 –– Les
Les boucles
boucles en
en CC
#include <stdio.h>
main() {
int i, somme, N;
somme=0;
printf("Entrez le nombre d'élément que vous voulez sommer : ");
scanf("%d",&N);
i=1;
do {
somme = somme +i;
i=i+1;
} while (i<N);
printf("Somme des %d premiers entiers est : %d\n",N,somme);
}
1 25
2 30 Cette case du tableau
3 23 représente la variable
Température[3] dont la valeur est 23
4 36
5 33
6 22
7 27
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 152
- JN Provost - V Pagé
6.2
6.2 –– Tableaux
Tableaux àà un
un indice
indice
• L’utilisation d’un indice variable présente le principal
intérêt des tableaux
• Si la variable k entière a pour valeur 3, alors
– Température[k] = 23
– Température[k+1] = 36
– Température[k-1] = 30
• Mais attention l’écriture de Température[-2] ou
Température[12] n’ont pas de sens car elles font
référence à des éléments inexistants
1
2
3
n
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 156
- JN Provost - V Pagé
6.5
6.5 -- Les
Les tableaux
tableaux en
en CC
• Exemple :
int a[13];
char b[8][5][10];
float d [6][15][9];
• Principe :
<type><identificateur>[taille1][taille2]…[taillek];
• N’importe quelle référence à une case peut être utilisé
comme une simple variable :
int i,j,k;
a[i]
b[i][j][k]
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 157
- JN Provost - V Pagé
6.5
6.5 -- Les
Les tableaux
tableaux en
en CC
• La taille correspond au nombre de cases du
tableau
• Attention : les indices, permettant de localiser le
contenu d’une case d’un tableau, varient entre
0 et taille-1
• Il est possible d’affecter un tableau à un
ensemble de valeurs dès sa déclaration par :
<type><identificateur>[taille1][taille2]…={val1, val2, …};
• Exemple :
1 2 3
Int matrice[2][3]={1,2,3,4,5,6} 4 5 6
main(){
int i, somme, temperature[7];
float moyenne;
for (i=0;i<7;i++){
printf("Temperature[%d]=",i);
scanf("%d",&temperature[i]);
}
somme=0;
for (i=0;i<7;i++)
somme=somme+temperature[i];
moyenne=somme/7;
printf("la température moyenne de la semaine est %f\n",moyenne);
}
#include <stdio.h>
main(){
float X, Y;
printf("Entrez la valeur : "); appel du sous-programme d’affichage
scanf(‘’%f’’,&X); appel du sous-programme de lecture
Y = cos(X); appel du sous-programme cos
printf(" %f’’ ,Y); appel du sous-programme d’affichage
}
Processus
courant
Suspension du
processus appelant Sous-programme appelé
Nouveau processus courant
Reprise du
processus appelant
Retour vers
l’appelant
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 164
- JN Provost - V Pagé
Intérêts
Intérêts
• Diviser pour mieux régner
• Méthode modulaire de conception utilisant
le découpage d’un problème en sous-
problèmes distincts
• Permet de réutiliser des programmes (sous-
programmes) déjà développés et surtout
validés
Début
Écrire « Donner la valeur de x: »
Lire x
Écrire « L’exponentielle de x= », x, « est : », expo(x)
Fin
#define E 0.001
#define E 0.001
float expo(float x) {
int i; float f,ex;
f=1; ex=1; i=1;
while (f>=E) {
f=f*(x/i);
ex=ex+f;
i++;
}
return ex;
}
2001/2002 DEUG MIAS-MASS 1ère année - Ph. Hunel 200
- JN Provost - V Pagé
7.4.3
7.4.3 –– Traduction
Traduction en
en CC
/*Programme principal */
main() {
float x;
printf("Donner la valeur de x : ");
scanf("%f",&x);
printf("L'exponentiel de x=%f est %f\n",x,expo(x));
}
. Factoriel(1) 1*1=1
- Factoriel(0) 1
0 1 k i temp
• Principe de l’algorithme :
– pour i 2 à n faire
déplacer T[i] vers le début du tableau jusqu'à
la position j<=i telle que
T[j] < T[k] pour j<=k<i et (ou bien T[j]>=T[j-1] ou bien j=1).