Академический Документы
Профессиональный Документы
Культура Документы
Plan:
Gnralits (matriel dun ordinateur, systmes dexploitation, langages
de programmation, )
Applications
(Word, Excel, Jeux, Maple, etc.)
Langages
(Java,C/C++, Fortran,etc.)
Systme dexploitation
(DOS,Windows, Unix, etc.)
Matriel
(PC, Macintosh, station SUN, etc.)
Priphriques
Moniteur (l'cran), clavier, souris
Modem, imprimante, scanner,
Le code ASCII (American Standard Code for Information Interchange) donne les
correspondances entre les caractres alphanumriques et leurs
reprsentation binaire, Ex. A= 01000001, ?=00111111
ADD A, 4
traducteur langage machine
LOAD B
MOV A, OUT
+: dj plus accessible que le langage machine
-: dpend du type de la machine (nest pas portable)
-: pas assez efficace pour dvelopper des applications complexes
Exemples de langages:
Fortran, Cobol, Pascal, C,
C++, Java,
Ex valides: i 1 j i k i+j
x 10.3 OK FAUX ch1 "SMI"
ch2 ch1 x 4 x j
(voir la dclaration des variables dans le transparent prcdent)
non valides: i 10.3 OK "SMI" j x
2007/2008 Module I2, 1re anne SMP/SMC 21
Quelques remarques
Beaucoup de langages de programmation (C/C++, Java, ) utilisent
le signe gal = pour laffectation . Attention aux confusions:
Variables A, B, C: Entier
Dbut
A3
B7
AB
B A+5
CA+B
CBA
Fin
Variables A, B : Entier
Dbut
A1
B2
AB
BA
Fin
^ : (lvation la puissance)
* , / (multiplication, division)
% (modulo)
+ , - (addition, soustraction)
exemple: 2+3*7 vaut 23
Algorithme Calcul_double
variables A, B : entier
Dbut
crire("entrer le nombre ")
lire(A)
B 2*A
crire("le double de ", A, "est :", B)
Fin
2007/2008 Module I2, 1re anne SMP/SMC 30
Exercice (lecture et criture)
Ecrire un algorithme qui vous demande de saisir votre nom puis
votre prnom et qui affiche ensuite votre nom complet
Algorithme AffichageNomComplet
variables Nom, Prenom, Nom_Complet : chane de caractres
Dbut
crire("entrez votre nom")
lire(Nom)
crire("entrez votre prnom")
lire(Prenom)
Nom_Complet Nom & Prenom
crire("Votre nom complet est : ", Nom_Complet)
Fin
2007/2008 Module I2, 1re anne SMP/SMC 31
Tests: instructions conditionnelles (1)
Les instructions conditionnelles servent n'excuter une instruction
ou une squence d'instructions que si une condition est vrifie
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
FinTantQue Faux
Variable C : caractre
Debut
Ecrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z')
Ecrire ("Saisie errone. Recommencez")
Lire (C)
FinTantQue
Ecrire ("Saisie valable")
Fin
version 1
Variables som, i : entier
Debut
i0
som 0
TantQue (som <=100)
i i+1
som som+i
FinTantQue
Ecrire (" La valeur cherche 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 caractre). Elle doit
tre dclare
Pas est un entier qui peut tre positif ou ngatif. Pas peut ne pas
tre mentionn, car par dfaut sa valeur est gal 1. Dans ce cas, le
nombre d'itrations est gal finale - initiale+ 1
b) Si compteur est <= finale dans le cas d'un pas positif (ou si compteur
est >= finale pour un pas ngatif), instructions seront excutes
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, 1re anne SMP/SMC 53
Boucle Pour : exemple1 (version 2)
Calcul de x la puissance n o x est un rel non nul et n un entier
positif ou nul (version 2 avec un pas ngatif)
instructions
FinPour
peut tre remplac par : compteur initiale
(cas d'un pas positif) TantQue compteur <= finale
instructions
compteur compteur+pas
FinTantQue
puiss 1
i1
TantQue (i<=n)
puiss puiss*x
i i+1
FinTantQue
Ecrire (x, " la puissance ", n, " est gal ", puiss)
Fin
Exemple: Excution
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 Rpter et jusqu sont excutes au moins une fois et
leur excution est rpte jusqu ce que condition soit vrai (tant qu'elle est
fausse)
Prsentation gnrale et
syntaxe des instructions de
base
Calcul numrique : calcul sur des valeurs (avec une grande prcision)
> 30!; 265252859812191058636308480000000
> evalf(sqrt(2),50); 1.414213562373095048801688
7242096980785696718753769
2007/2008 Module I2, 1re anne SMP/SMC 63
Maple : les packages
Maple dispose d'un certain nombre de packages (librairies). Chacun
de ces packages est spcialis dans un traitement particulier.
Comme exemples de ces packages, on a :
linalg : pour l'algbre linaire
plots : pour le trac des courbes
geometry : pour la gomtrie
student : ce package est conu pour assister l'enseignement des
mathmatiques de base (intressant pour les tudiants)
Fonctions et procdures
Dans ces cas on ne peut pas utiliser une fonction, on utilise une procdure
FinProcdure
Remarque : une procdure peut ne pas avoir de paramtres
2007/2008 Module I2, 1re anne SMP/SMC 76
Appel d'une procdure
L'appel d'une procdure, se fait dans le programme principale ou dans une
autre procdure par une instruction indiquant le nom de la procdure :
Procdure exemple_proc ()
FinProcdure
Algorithme exepmleAppelProcdure
Dbut
exemple_proc ()
Fin
Remarque : le paramtre effectif doit tre une variable (et non une
valeur) lorsqu'il s'agit d'une transmission par adresse
Algorithme Test_incrementer1
variables n, m : entier
Dbut
n3
m3
incrementer1(n, m) rsultat :
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, 1re anne SMP/SMC 80
Transmission par valeur, par adresse : exemples
Procdure qui calcule la somme et le produit de deux entiers :
Procdure SommeProduit (x,y: entier par valeur, som, prod : entier par adresse)
som x+y
prod x*y
FinProcdure
Conseil : Il faut utiliser autant que possible des variables locales plutt que
des variables globales. Ceci permet d'conomiser la mmoire et d'assurer
l'indpendance de la procdure ou de la fonction
Les paramtres, les variables locales et globales sont facultatifs, ils peuvent
ne pas figurer dans la dclaration
Une procdure Maple peut rendre un seul rsultat (comme une fonction),
plusieurs rsultats ou aucun rsultat
En Maple, une procdure peut tre appele sans tre affecte. Elle
peut aussi tre affecte 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 rcursif doit possder un cas limite (cas trivial) qui
arrte la rcursivit
Les tableaux
Selon les langages, le premier indice du tableau est soit 0, soit 1. Le plus
souvent c'est 0 (c'est ce qu'on va adopter en pseudo-code). Dans ce cas,
notes[i] dsigne l'lment i+1 du tableau notes
En tous cas, un tableau est inutilisable tant quon na pas prcis le nombre de
ses lments
Un grand avantage des tableaux est qu'on peut traiter les donnes qui y
sont stockes de faon simple en utilisant des boucles
2007/2008 Module I2, 1re anne SMP/SMC 96
Tableaux : exemples (1)
Pour le calcul du nombre d'tudiants ayant une note suprieure
10 avec les tableaux, on peut crire :
Algorithme Tableaux
variable p : entier
tableau A[10] : rel
Dbut
p 10
SaisieTab(p, A)
AfficheTab(10,A)
Fin
> A:=array(1..4,[5,8,1,7]);
> moyenne(4,A); rsultat : 21/4
Algorithme Matrices
variables tableau M1[3][4],M2 [3][4],M3 [3][4] : rel
Dbut
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, 1re anne SMP/SMC 107
Matrices : syntaxe Maple
Pour dfinir une matrice en Maple, on peut utiliser le type array ou le type
matrix comme suit :
Le type matrix est disponible dans le package linalg. Il faut donc charger ce
package avec la commande with(linalg) avant d'utiliser ce type
2007/2008 Module I2, 1re anne SMP/SMC 108
Tableaux : 2 problmes classiques
Recherche squentielle
Recherche dichotomique
Le pire des cas pour cet algorithme correspond au cas o x n'est pas dans
le tableau T
La complexit dans le pire des cas est d'ordre N, (on note O(N))
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 2: on cherche le plus petit lment, mais cette fois partir du
deuxime lment. On le trouve en dernire position, on l'change
avec le deuxime:
1 3 9 7 4
tape 3:
1 3 4 7 9
temp T[indice_ppe]
T[indice_ppe] T[i]
T[i] temp
FinPour
2007/2008 Module I2, 1re anne SMP/SMC 120
Tri par slection : complexit
Quel que soit l'ordre du tableau initial, le nombre de tests et d'changes
reste le mme
On effectue N-1 tests pour trouver le premier lment du tableau tri, N-2
tests pour le deuxime, 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 Procdure
Le pire des cas correspond au cas o le pivot est chaque choix le plus petit
lment du tableau (tableau dj tri)
diffrentes versions du tri rapide sont proposs dans la littrature pour rendre
le pire des cas le plus improbable possible, ce qui rend cette mthode la plus
rapide en moyenne parmi toutes celles utilises