Académique Documents
Professionnel Documents
Culture Documents
Plan:
• Généralités (matériel d’un ordinateur, systèmes d’exploitation, langages de
programmation, …)
Applications
).Word, Excel, Jeux, Maple, etc(
Langages
).Java,C/C++, Fortran,etc(
Système d’exploitation
).DOS,Windows, Unix, etc(
Matériel
).PC, Macintosh, station SUN, etc(
Périphériques
• Moniteur (l'écran), clavier, souris
• Modem, imprimante, scanner, …
• Le code ASCII (American Standard Code for Information Interchange) donne les
correspondances entre les caractères alphanumériques et leurs
représentation binaire, Ex. A= 01000001, ?=00111111
ADD A, 4
traducteur langage machine
LOAD B
MOV A, OUT
…
Apparition des langages évolués
2007/2008 Module I2, 1ère année SMP/SMC 8
Langages haut niveau
Intérêts multiples pour le haut niveau:
• proche du langage humain «anglais» (compréhensible)
• permet une plus grande portabilité (indépendant du matériel)
• Manipulation de données et d’expressions complexes (réels,
objets, a*b/c, …)
Nécessité d’un traducteur (compilateur/interpréteur),
exécution plus ou moins lente selon le traducteur
Compilateur exécution
exemple.c exemple
fichier source fichier exécutable
Interprétation+exécution
exemple.bas
fichier source
• + exécution instantanée appréciable pour les débutants
• - exécution lente par rapport à la compilation
Exemples de langages:
• Fortran, Cobol, Pascal, C, …
• C++, Java, …
• un nom (Identificateur)
Identificateur
• un type (entier, réel, caractère, chaîne de caractères, …)
Ex valides: i ←1 j ←i k ←i+j
x ←10.3 OK ←FAUX ch1 ←"SMI"
ch2 ←ch1 x ←4 x ←j
(voir la déclaration des variables dans le transparent précédent)
non valides: i ←10.3 OK ←"SMI" j ←x
Variables A, B, C: Entier
Début
A←3
B←7
A←B
B ← A+5
C←A+B
C←B–A
Fin
Variables A, B : Entier
Début
A←1
B←2
A←B
B←A
Fin
• ^ : (élévation à la puissance)
• * , / (multiplication, division)
• % (modulo)
• + , - (addition, soustraction)
exemple: 2+3*7 vaut 23
Algorithme Calcul_double
variables A, B : entier
Début
écrire("entrer le nombre ")
lire(A)
B ← 2*A
écrire("le double de ", A, "est :", B)
Fin
2007/2008 Module I2, 1ère année SMP/SMC 30
Exercice (lecture et écriture)
Ecrire un algorithme qui vous demande de saisir votre nom puis
votre prénom et qui affiche ensuite votre nom complet
Algorithme AffichageNomComplet
variables Nom, Prenom, Nom_Complet : chaîne de caractères
Début
écrire("entrez votre nom")
lire(Nom)
écrire("entrez votre prénom")
lire(Prenom)
Nom_Complet ← Nom & Prenom
écrire("Votre nom complet est : ", Nom_Complet)
Fin
2007/2008 Module I2, 1ère année SMP/SMC 31
Tests: instructions conditionnelles (1)
Les instructions conditionnelles servent à n'exécuter une instruction
ou une séquence d'instructions que si une condition est vérifiée
On utilisera la forme suivante: Si condition alors
instruction ou suite d'instructions1
Sinon
instruction ou suite d'instructions2
Finsi
• la condition ne peut être que vraie ou fausse
• si la condition est vraie, se sont les instructions1 qui seront exécutées
Si condition alors
instruction ou suite d'instructions1
Finsi
Exemples :
• x compris entre 2 et 6 : (x > 2) ET (x < 6)
• n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)
C1 C2 C1 XOR C2 C1 NON C1
VRAI VRAI FAUX VRAI FAUX
VRAI FAUX VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX
• Les boucles tant que : on y répète des instructions tant qu'une certaine
condition est réalisée
FinTantQue Faux
Variable C : caractère
Debut
Ecrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z')
Ecrire ("Saisie erronée. Recommencez")
Lire (C)
FinTantQue
Ecrire ("Saisie valable")
Fin
version 1
Variables som, i : entier
Debut
i←0
som← 0
TantQue (som <=100)
i ← i+1
som ← som+i
FinTantQue
Ecrire (" La valeur cherchée est N= ", i)
Fin
instructions
FinPour
i ←initiale
Vrai
i n'a pas atteint finale instructions i ← i + pas
Faux
Compteur est une variable de type entier (ou caractère). Elle doit être
déclarée
Pas est un entier qui peut être positif ou négatif. Pas peut ne pas être
mentionné, car par défaut sa valeur est égal à 1. Dans ce cas, le
nombre d'itérations est égal à finale - initiale+ 1
a) Si la valeur du compteur est > à la valeur finale dans le cas d'un pas
positif (ou si compteur est < à finale pour un pas négatif), on sort de la
boucle et on continue avec l'instruction qui suit FinPour
b) Si compteur est <= à finale dans le cas d'un pas positif (ou si compteur
est >= à finale pour un pas négatif), instructions seront exécutées
puiss ← 1
Pour i allant de 1 à n
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
2007/2008 Module I2, 1ère année SMP/SMC 53
Boucle Pour : exemple1 (version 2)
Calcul de x à la puissance n où x est un réel non nul et n un entier
positif ou nul (version 2 avec un pas négatif)
négatif
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez respectivement les valeurs de x et n ")
Lire (x, n)
puiss ← 1
Pour i allant de n à 1 par pas -1
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
2007/2008 Module I2, 1ère année SMP/SMC 54
Boucle Pour : remarque
Il faut éviter de modifier la valeur du compteur (et de finale) à
l'intérieur de la boucle. En effet, une telle action :
FinPour
peut être remplacé par : compteur ← initiale
(cas d'un pas positif) TantQue compteur <= finale
instructions
compteur ← compteur+pas
FinTantQue
puiss ← 1
i←1
TantQue (i<=n)
puiss← puiss*x
i ← i+1
FinTantQue
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
Exemple: Exécution
Pour i allant de 1 à 5 OX
Pour j allant de 1 à i OOX
écrire("O") OOOX
FinPour OOOOX
écrire("X") OOOOOX
FinPour
instructions instructions
Jusqu'à condition
Faux
condition
Vrai
les instructions entre Répéter et jusqu’à sont exécutées au moins une fois et
leur exécution est répétée jusqu’à ce que condition soit vrai (tant qu'elle est
fausse)
Présentation générale et
syntaxe des instructions de
base
> int(1-x+x^3,x); x2 x4
x-
2 4
> taylor(sin(x),x=0,6); x3 x5
x- O(x 6 )
6 120
• Calcul numérique : calcul sur des valeurs (avec une grande précision)
• Syntaxe: var:=readstat(`texte`)
readstat Maple affiche le texte entre ` ` et
attend qu'on entre une valeur au clavier qui doit être suivie de ; ou :
> n:=readstat(`entrez la valeur de n : `);
Remarque : il existe d'autres commandes pour les entrées-sorties en Maple
2007/2008 Module I2, 1ère année SMP/SMC 68
Maple : syntaxe des tests
Écriture en pseudo code Traduction en Maple
Fonctions et procédures
Dans ces cas on ne peut pas utiliser une fonction, on utilise une procédure
Une procédure est un sous-programme semblable à une fonction mais qui
ne retourne rien
Une procédure s'écrit en dehors du programme principal sous la forme :
FinProcédure
Remarque : une procédure peut ne pas avoir de paramètres
2007/2008 Module I2, 1ère année SMP/SMC 76
Appel d'une procédure
L'appel d'une procédure, se fait dans le programme principale ou dans une
autre procédure par une instruction indiquant le nom de la procédure :
Procédure exemple_proc (…)
…
FinProcédure
Algorithme exepmleAppelProcédure
Début
exemple_proc (…)
…
Fin
Remarque : contrairement à l'appel d'une fonction, on ne peut pas affecter la
procédure appelée ou l'utiliser dans une expression. L'appel d'une
procédure est une instruction autonome
2007/2008 Module I2, 1ère année SMP/SMC 77
Paramètres d'une procédure
Les paramètres servent à échanger des données entre le programme
principale (ou la procédure appelante) et la procédure appelée
• Remarque : le paramètre effectif doit être une variable (et non une valeur)
lorsqu'il s'agit d'une transmission par adresse
Algorithme Test_incrementer1
Test_incrementer
variables n, m : entier
Début
n←3
m←3
incrementer1(n, m) résultat :
écrire (" n= ", n, " et m= ", m) n=3 et m=4
Fin
Remarque : l'instruction x ← x+1 n'a pas de sens avec un passage par valeur
2007/2008 Module I2, 1ère année SMP/SMC 80
Transmission par valeur, par adresse : exemples
Procédure qui calcule la somme et le produit de deux entiers :
Procédure SommeProduit (x,y: entier par valeur, som, prod : entier par adresse)
adresse
som ← x+y
prod ← x*y
FinProcédure
Une variable locale n'est connue qu'à l'intérieur du module ou elle a été
définie. Elle est créée à l'appel du module et détruite à la fin de son exécution
• Conseil : Il faut utiliser autant que possible des variables locales plutôt que
des variables globales. Ceci permet d'économiser la mémoire et d'assurer
l'indépendance de la procédure ou de la fonction
En Maple, une procédure peut être appelée sans être affectée. Elle
peut aussi être affectée à une variable
> carre(1,2); 5
> a:=carre(3,3); a := 18
> exemple:=proc(a,b)
> local c,d,e;
> c:=a+b; d:=a-b; e:=a*b;
> RETURN(c,d,e);
> d:=c+e;
> end:
Tout module récursif doit posséder un cas limite (cas trivial) qui
arrête la récursivité
Les tableaux
• En tous cas, un tableau est inutilisable tant qu’on n’a pas précisé le nombre de ses
éléments
Un grand avantage des tableaux est qu'on peut traiter les données qui y sont
stockées de façon simple en utilisant des boucles
2007/2008 Module I2, 1ère année SMP/SMC 96
Tableaux : exemples (1)
Pour le calcul du nombre d'étudiants ayant une note supérieure à
10 avec les tableaux, on peut écrire :
Algorithme Tableaux
variable p : entier
tableau A[10] : réel
Début
p ← 10
SaisieTab(p, A)
AfficheTab(10,A)
Fin
> A:=array(1..4,[5,8,1,7]);
> moyenne(4,A); résultat : 21/4
Algorithme Matrices
variables tableau M1[3][4],M2 [3][4],M3 [3][4] : réel
Début
SaisieMatrice(3, 4, M1)
SaisieMatrice(3, 4, M2)
AfficheMatrice(3,4, M1)
AfficheMatrice(3,4, M2)
SommeMatrice(3, 4, M1,M2,M3)
AfficheMatrice(3,4, M3)
Fin
2007/2008 Module I2, 1ère année SMP/SMC 107
Matrices : syntaxe Maple
Pour définir une matrice en Maple, on peut utiliser le type array ou le type
matrix comme suit :
• Recherche séquentielle
• Recherche dichotomique
Si la valeur cherché est 20 alors les indices inf, sup et milieu vont évoluer
comme suit :
inf 0 5 5 6
sup 8 8 5 5
milieu 4 6 5
Si la valeur cherché est 10 alors les indices inf, sup et milieu vont évoluer
comme suit :
inf 0 0 2
sup 8 3 3
milieu 4 1 2
1 4 9 7 3
• Étape 3: 1 3 4 7 9
temp ← T[indice_ppe]
T[indice_ppe] ← T[i]
T[i] ← temp
FinPour
2007/2008 Module I2, 1ère année SMP/SMC 120
Tri par sélection : complexité
Quel que soit l'ordre du tableau initial, le nombre de tests et d'échanges
reste le même
On effectue N-1 tests pour trouver le premier élément du tableau trié, N-2
tests pour le deuxième, et ainsi de suite. Soit : (N-1)+(N-2)+…+1 = N(N-1)/2
On effectue en plus (N-1) échanges.
variable q: entier
Si p <r alors
Partition(T,p,r,q)
TriRapide(T,p,q-1)
TriRapide(T,q+1,r)
FinSi
Fin Procédure
Le pire des cas correspond au cas où le pivot est à chaque choix le plus petit
élément du tableau (tableau déjà trié)
différentes versions du tri rapide sont proposés dans la littérature pour rendre
le pire des cas le plus improbable possible, ce qui rend cette méthode la plus
rapide en moyenne parmi toutes celles utilisées