Академический Документы
Профессиональный Документы
Культура Документы
formation
Algorithmique et programmation
Section : Sciences
Démarche de résolution de
problèmes
Activité 1 :
Écrire un programme intitulé SOMME qui calcul puis affiche la somme
S de deux entiers A et B données.
Méthodologie :
Pour résoudre un problème de programmation, obligatoirement on
doit passer par ces étapes:
Étape 1 : Spécifier en détaille le problème
1 Préciser les données qui doivent être saisies à partir du clavier. Ce sont
les entrées : A et B
3 Préciser les résultats que l’on désire obtenir. Ces derniers seront
affichés sur écran. Ce sont les sorties : Ecrire ( S )
Étape 2 : Élaboration d’un algorithme
b / Structure :
0 ) DEBUT nom_algorithme
Données
1)
2)
Traitements Liste des Actions ou
… Instructions
…
n–1) Résultats
n ) FIN nom_algorithme
Étape 2 : Élaboration d’un algorithme
0 ) DEBUT somme
3)S=A+B Traitement
Compilateur exécution
exemple.c exemple
fichier source fichier exécutable
• + plus rapide à l’exécution
• + sécurité du code source
• - il faut recompiler à chaque modification
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
Traduction en Python
a = input()
b = input()
s = int(a) + int(b)
print(s)
IV- Exécutions et tests :
1 - Traitement : s = a + b
- Résultat : Ecrire ( s)
0 ) DEBUT _ALGORITHME
1 ) Lire ( a )
2 ) Lire ( b ) 2
3)s=a+b
4 ) Afficher ( s )
5 ) FIN _ALGORITHME
traduire l'algorithme dans un langage de
3 programmation spécifique, il s'agit de la phase
a = input() de programmation.
b = input()
s = int(a) + (b)
- Données : a et b
1 Analyse - Traitement : s = a + b
- Résultat : Ecrire ( s)
0 ) DEBUT _ALGORITHME
1 ) Lire ( a )
2 ) Lire ( b ) 2 Algorithme
3)s=a+b
4 ) Afficher ( s )
5 ) FIN _ALGORITHME
traduire l'algorithme dans un langage de
3 Traduction programmation spécifique, il s'agit de la phase
de programmation.
a = input()
b = input()
Programme Source
s = int(a) + int(b)
Le programme est ensuite transformé
print(s) en langage machine lors d'une étape
4 Interpréta appelée interprétation.
Les constantes
I. Les constantes et les variables
Les objets que manipule l’ordinateur au cours de l’exécution d’un programme ne sont que
des cases mémoires déclarés dans la RAM.
Ces objets peuvent être des constantes ou des variables.
Une constante est une zone mémoire dans laquelle est stockée une valeur. Comme son nom
l'indique, une constante ne change pas de valeur au cours du programme, une valeur de
départ lui est affectée dès sa déclaration, cette valeur restera la même pendant toutes
les périodes d’exécution du programme. avant le code exécutable.
- Son nom
Contenu
- Sa valeur
I.1. Les constantes
Déclaration en algorithmique :
Objet Type / nature Rôle
Nom Constante = valeur de la constante rô le
Exemples :
Objet Type / nature Rôle
Pi Constante = 3,14 Constante connue
Coef Constante = 1,5 Contenant le coefficient
1 Analyse
2 Algorithme
3 Traduction
Programme Source
4 Compilation
Programme Exécutable
5 Exécution
Énoncé du programme
- Résultat : Ecrire ( L)
1 Analyse - Traitement : L M * G / K
- Données : M et K
0 ) DEBUT allongement
1 ) Lire ( M )
2 ) Lire ( K ) 2 Algorithme
3)LM*G/K
4 ) Ecrire ( L )
5 ) FIN allongement
traduire l'algorithme dans un langage de
Programme allongement ;
3 Traduction programmation spécifique, il s'agit de la phase
Uses wincrt de programmation.
Const G = 9.8 ;
VAR M,K,L : Réel ;
BEGIN
Reed ( m )
Reed ( k ) ;
Programme Source
L= M*G/K;
Wrhite ( L ) ; Le programme est ensuite transformé
END en langage machine lors d'une étape
1 Préciser les résultats que l’on désire obtenir. Ces derniers seront
affichés sur écran. Ce sont les sorties :
Ecrire ( L)
b / Structure :
0 ) DEBUT nom_algorithme
1) Données
2)
… Traitement Liste des Actions ou Instructions
…
n) Résultat
n + 1 ) FIN nom_algorithme
Tableau de codification des variables :
Solution :
Analyse
Algorithme : 1 ) Lire ( R )
2 ) Surf Pi * R * R
3 ) Ecrire (Surf)
4 ) FIN surface
Program surface ;
Uses wincrt ;
Const Pi = 3.14 ;
Traduction en VAR R : Real ;
pascal : BEGIN
Readln ( R ) ;
Surf := Pi * R * R ;
Writeln ( Surf ) ;
END .
Les constantes et les
variables
Les variables
R Pi Surf
10 3.14 31.4
15 3.14 47.1
Une variable comme son nom l’indique, a une valeur qui peut être modifiée a
tout moment, tout le long de l’exécution du programme.
X 4
Mémoire centrale
Nom de la variable Type de la variable Rôle joué par de la variable dans le programme
Exemple :
Surface Réel Surface du disque
Au niveau du Pascal : le mot clé pour déclarer les variables est var.
b. Déclaration en turbo Pascal :
VAR
Nom_variable : Type_variable ;
Exemple :
VAR
k : REAL ;
II. Les Types standard
L’ensemble des valeurs qui peuvent être affecter à la variable en
question.
Exemple :
Moyenne 15.25 Réel
Numéro_mois 5 Entier
Nom ‘’salah’’ Chaîne de caractères
Voyelle ‘’a’’ Caractère
test ‘’True’’ Booléen
Les différents type que peut
avoir une variable
Le type d’une variable détermine l’ensemble des valeurs
qu’elle peut prendre, les types offerts par le langages
PASCAL sont:
Le Type ENTIER
Menu
II. Les types standard
II.1. Les types numériques :
II.1.1. Le type entier
Remarque :
Un calcul utilisant des entiers en dehors de cette intervalle conduira à des
erreurs traduisant un dépassement de capacité.
Exemple :
Le calcul de 8 ! Donnera un résultat erroné car 8! = 40320 est en dehors de
l’intervalle permis.
Les Types standard
Le Type REEL
Menu
II.1.2. Le type réel
Delta Carré(b) - 4 * a * c
Delta := SQR(b) - 4 * a * c ;
2/ Soit x une variable qui a pour valeur l’expression suivante :
x carré (abs (-2))
Après avoir exécuté cette instruction, la valeur finale de x est égale à 4
Le Type BOOLEEN
Menu
Le Type BOOLEEN
VRAI (TRUE) FAUX (FALSE).
Autre exemple :
Soient a, b et c trois variables booléennes
1- Donner les étapes d’évaluation de l’expression a OU b ET c !
2- Si on veut d’abord évaluer la disjonction a OU b, comment faut-il s’y prendre ?
Le Type CARACTERE
Menu
Le Type caractère
Tous les caractères sont ordonnés selon leurs code ASCII variant de 0 à
255 (A chaque caractère correspond un code (appelé code ASCII) qui est un entier
variant de 0 à 255).
PRED(c) Renvoie le prédécesseur de c Scalaire Même type que x PRED("B") vaut "A"
SUCC(c) Renvoie le successeur de c Scalaire Même type que x SUCC("A") vaut "B"
Convertit le caractère c en
UPCASE(c) Caractère Caractère UPCASE("a") vaut "A"
majuscule si c’est possible
Remarques :
Une variable de type scalaire est une information qui possède un successeur et un
prédécesseur.
Pred (5) = 4
Activité
Exemple1 :
Après avoir exécuté cette instruction, la valeur finale de x est égale à "M"
Exemple2 :
Que désigne chacune des notations suivantes ?
a- t
b- "t"
c- 7
d- "7"
Application p 24
Exemple :
Soit l’algorithme suivant :
0) Début inconnu
1) Ecrire (" Entrer un caractère : "), lire(c1)
2) Si ( (ORD(c1) ≥ 97) et (ORD (c1) ≤ 122))
Alors c2 CHR (ORD (c1) – 32)
Sinon c2 c1
Fin SI
3) Ecrire (c2)
4) Fin inconnu
Menu
Il est réservé aux variables composée d’une suite de n caractères. n étant compris
entre 0 et 255.
Soit l’instruction suivante :
CH "Enseignant"
1 2 3 4 5 6 7 8 9 10
CH E n s e i g n a n t
Exemple 3 :
Dans ce cas, la chaîne peut avoir une taille maximale égale à L, ( qui est la
longueur de cette chaîne ).
Exemple :
Correction :
Tableau de codification des objets :
VAR
Nom : STRING[50];
Adresse : STRING;
Les fonctions sur les chaînes de caractères :
Nom
Rôle Exemples
Algorithmique Pascal
Renvoie le nombre de caractère
Long(CH) LENGTH(CH) LENGTH(‘bravo’) vaut 5
dans CH
Nom
Rôle Exemples
Algorithmique Pascal
On attribue à n la valeur 15
Génère à partir de n une
Convch STR(n,CH) Après STR(n,CH), à part le n=15, on
chaîne CH.
obtient CH=’15’
L’opération d’entrée
Menu
L’opération d’entrée
0) Debut exercice
1) Lire (x)
Soit l’algorithme suivant : 2) Lire (y)
3) M (x * 2) DIV 3
4) Ecrire (M)
5) Fin exercice
Les actions de notre algorithme sont :
- Ecrire (M) Écriture sur l'écran (on affiche sur l'écran le contenu
de la case mémoire M)
Une structure est dite simple si elle ne contient que des instructions :
- d’entrée de données
- d’affectation
- de sortie de résultats
On utilise l’instruction lire obéit à la syntaxe suivante :
Read ( Var )
Pour que l'utilisateur entre ( à l’aide du clavier ) la nouvelle valeur d'un objet n, on
appliquera la syntaxe suivante :
read (vn);
Les structures simples
L’opération de sortie
Menu
L’opération de sortie
Exemple : write(moy) ;
Ou bien, Un mélange des deux ( affichage d’un texte + contenu d’un variable ) :
Exemple : write(a+b*c) ;
Syntaxe en algorithmique Syntaxe en Pascal
Affichage d’un texte Ecrire ("texte" ) Write ('texte');
Affichage du contenu
Ecrire(variable) Write(variable);
d’une variable
Affichage d’un texte +
Ecrire("texte",variable) Write('texte',variable);
contenu d’une variable
ATTENTION :
Une apostrophe dans un message doit être dédoublée.
L’opération d’affectation
Menu
L’opération d’affectation
Variable Valeur
Syntaxe en Pascal
En pascal, vous remplacez la flèche par :=
Variable := valeur ;
Remarques :
Lire (A)
Lire (B)
AA+B CA
BA–B AB
AA–B BC
Ecrire (A)
Ecrire (B)
Questions :
Solution : Algorithme :
Analyse 0 ) DEBUT CALCUL
1 ) Ecrire("saisir le 1er entier"),Lire ( A )
- Résultats : Ecrire ("le quotient est : " , Q ) 2 ) Ecrire("saisir le 2ème entier"), Lire ( B )
3 ) Q A DIV B
Ecrire ("le reste est : " , R ) 4)RA–(Q*B)
- Traitements : Q A DIV B 5 ) Ecrire ("le quotient est : " , Q )
6 ) Ecrire ("le reste est : " , R )
RA–(Q*B) 7 ) FIN CALCUL
- Données : A = donnée ("saisir le 1er entier")
Traduction en pascal :
B = donnée ("saisir le 2ème entier") Program CALCUL ;
Tableau de codification des objets : Uses wincrt ;
VAR A,B,Q,R : Integer ;
Nom Type/Nature Rôle BEGIN
A entier contient le premier entier Writeln(‘saisir le 1er entier’) ; Readln ( A ) ;
Writeln(‘saisir le 2ème entier’) ; Readln ( B ) ;
B entier contient le deuxième entier
Q A DIV B ;
Q entier contient le quotient RA–(Q*B);
Writeln ( ‘le quotient est : ‘ , Q ) ;
R entier contient le reste Writeln ( ‘le reste est : ‘ , R ) ;
END .
IV-TYPES SIMPLES DEFINIS
PAR L'UTILISATEUR
Menu
Les types énumérés
Type
jours_de_la_semaine = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche) ;
Var
jour : jours_de_la_semaine ;
Structure générale d’un programme
Un programme pascal est un texte dont la structure est définie selon la
figure suivante :
Program nom_programme;
Uses wincrt;
Const (* declarations de constantes *) ;
Type (* déclarations de types *) ;
Var (* déclarations de variables *) ;
(* definitions de sous-programmes *)
Begin
Action1 ;
Action 2 ;
.
.
End.
La variable jour, du type jours_de_la_semaine, peut prendre les valeurs :
lundi, mardi, mercredi, jeudi, vendredi, samedi ou dimanche uniquement.
Par exemple :
jour := mardi ;
T.D.N.T
Type
jours_de_la_semaine = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)
Au niveau de l’analyse, la déclaration d’une Variable de type énuméré se
fait comme suit :
Exemple :
TDO
Sachez aussi :
Qu’ Il est possible de comparer les valeurs d’un type énuméré en utilisant les
opérateurs relationnels < , > , = , < = , > = , < >
succ: successeur
pred: prédécesseur, (ces opérations sont indéfinies aux extrémités)
ord: position (ordinal) dans le type, en commencent à 0
Par exemple :
Ord (informatique) retourne 0.
Soit le type énuméré suivant :
Cours = (informatique, math, physique, français, anglais)
Var demain , jour : jours_de_la_semaine ;
Begin
jour := lundi; L'affectation se fait de manière habituelle
demain := succ ( jour ); (* demain vaut alors mardi, *)
End.
Activité
Soit le type énuméré suivant :
Cours = (informatique, math, physique, français, anglais)
Exemples Résultat
Activité 2 :
Au niveau de l’analyse :
Tableau de déclaration de nouveaux types (T.D.N.T)
Type
Sens = (haut, bas, gauche,droite)
Var S : Sens ;
Solution :
Au niveau de l’analyse :
TDO
Var S1 : Saison ;
Remarques :
Il faut faire attention à une chose en pascal, ce denier ne permet pas de
lire ni écrire des valeur dont le type est énuméré faute de quoi ses types
sont rarement utilisées.
TYPES SIMPLES DEFINIS
PAR L'UTILISATEUR
Menu
Les types intervalle
0..9 est l'intervalle des valeurs entières de 0 à 9, le type de base est integer
La notion de Type, vous donne la on doit mettre la valeur minimale et la valeur maximale
possibilité de définir vos propres de l'intervalle
types de données.
Dans la définition d'un intervalle, on ne doit pas spécifier le nom du type de base,
c’est-à-dire le type Integer, On doit seulement fournir deux constantes de ce
type.
Var nombre : chiffre ;
Par exemple : 'A'..'Z' est l'intervalle des lettres majuscules, le type de base est
char
Au niveau de l’analyse :
T.D.N.T
Type
majuscule = 'A‘ .. 'Z'
Menu
Pouvez vous me rappeler Qu’est ce qu’une structure tableau ?
Pourquoi a-t-on recours à cette structure ?
moyenne 12.50 8.56 13.22 10.89 14.58 7.89 16.58 10.08 14.48 15.09
1 2 3 4 5 6 7 8 9 10
Le tableau devient : 12.50 10 13.22 10.89 14.58 7.89 16.58 10.08 14.48 15.09
1 2 3 4 5 6 7 8 9 10
Pour assigner à une variable la valeur stockée dans un élément d'un tableau, on
utilise : x := moyenne[7];
Cette opération donne à la variable x la valeur stocké dans le septième élément du
tableau, c’est-à-dire x aura comme valeur 16.58
Activité Page 40
contenu de la case mémoire
moyenne[7]
moyenne 12.50 8.56 13.22 10.89 14.58 7.89 16.58 10.08 14.48 15.09
1 2 3 4 5 6 7 8 9 10
moyenne[1] moyenne[10]
moyenne[2] 2 * moyenne[1] / 3
moyenne[5] (moyenne[10] + moyenne[2] ) / 2
moyenne[10] ( 4 * moyenne[2] ) / 3
moyenne[7] moyenne[7] + 2.57
moyenne[4] moyenne[6] – 2.11
Remarques :
Les indices du tableau doivent être de type scalaire simple (Entier, caractère,
booléen) ou scalaire énuméré.
T 45 13 9 11 67 4 23
Première formulation
Borne
Identificateur du
Borne supérieur
tableau
inférieur
Var
NomTab : Array[Min..Max] Of Type;
3 éléments fondamentaux définissent un tableau à un indice :
- Son nom : identificateur respectant les règles classiques des
identificateurs d’un programme
- Le nombre de ses éléments
- Le type de données qu’il contient
Ce tableau est un tableau à une dimension, puisqu’il ne s’agit que d’une ligne. On
pourrait le représenter ainsi :
Mytab 12 8 13 10 14
1 2 3 4 5
Au niveau de l’algorithme, la déclaration d’un tableau se fait comme suit :
Au niveau de l’algorithme
Tableau de taille et de
nom_tableau Rôle
type_éléments
On peut utiliser 5 variables T1 ,T2 ..T5, puis déclarer chaque tableau comme suit :
Var T1 : Array[1..4] of Integer;
Pour créer un nouveau type, Nous pouvons écrire :
Type
nom_type = Array[BInf..BSup] of type_éléments ;
Type
TAB = Array[1..4] of Integer ;
Une fois votre nouveau type créer, il ne reste plus qu’à déclarer les tableaux
comme suit :
Var T1,T2,T3,T4,T5 : TAB;
Deuxième formulation
T.D.O
12 4 8 58 -9 11
Nombre Carré
12 144
4 16
8 64
58 3364
-9 81
11 121
Les tableaux
Menu
Première formulation
Deuxième formulation
Echec 1 2 3 4 5
Menu
Donner en Pascal l’équivalent de chacune des expressions arithmétiques
suivantes :
( x + 1 )2
= sqr( x + 1 ) / sqrt( x )
√x
2x2 + 4x -1
= ( 2 * sqr( x ) + 4 * x – 1) / sqrt(abs( x + 5 ) )
√| x + 5 |
√ = sqrt(abs( 10 * x + 2 ) / 3 ) + x
| 10 x + 2 |
+x
3
x3
-1 = ( sqr( x ) * x / sqr( x ) + 2 ) - 1
x2 + 2
Évaluer les expressions suivantes :
V OUEx V
V OU F
NON ( F ET F )
Compléter le tableau suivant en testant la validité des expressions données.
Expressions Validité
n abs(x) NON
x (3n – 2) / 4 OUI
x n + x + xz OUI
n 2z NON
m y mod 2 NON
n m div 3 OUI
n m /5 NON
y z div x NON
xz/3 OUI
m 2n OUI
Soient les chaînes suivantes. Donner le résultat de chaque instruction :
Chaînes Instructions
CH1 := ‘langage 1. L := LENGTH(CH1) ; L 21
PROGRAMMATION’ ;
2. Res := CONCAT(CH3, ‘ ‘,CH2) ; Res LANGAGE PASCAL
CH2 := ‘PASCAL’ ;
CH4 program
3. DELETE(CH4, 8, 6) ;
CH3 := ‘LANGAGE’ ;
L 7
4. L := LENGTH(CH4) ;
CH4 := ‘programmation’ ;
CH2 Turbo PASCAL
5. INSERT(‘turbo’,CH2,1) ;
Instructions Résultats
A := ‘L’’informatique’ ; A = L’informatique
B := COPY(‘gourmande’,5,5) ; B = mande
C := ‘estimation’ ; C = estimation
B[2] := ‘o’ ; B = monde
DELETE(c,1,6) ; C = tion
A := CONCAT(A, ‘ est un ‘,B,’ de ‘,A[5],A[3],’c’,C) A = l’informatique est un monde de fiction
Compléter le tableau suivant en donnant le résultat de l’évaluation de l’instruction si elle
est correcte. Si l’instruction est fausse compléter par Faux.
C1 BON
C2 TRAVAIL
Instructions Résultats
N Long(C2) N=7
Insère("LER", C2,8) C2 = "TRAVAILLER"
C4 Sous_chaine(C1,1,2) C4 = "BO"
Efface(C2,6,5) C2 = "TRAVA"
C3 C2 + "UX" C3 = "TRAVAUX"
C3 Majus(C1) C3 = Faux
N Pos("L", C2) N=0
C3 Concat(C1,C1) C3 = BONBON
Compléter les affectations suivantes par une valeur d’opérande ou d’opérateur
permettant d’obtenir dans chacun des cas, la valeur voulue de Y :
Affectation Valeur de Y
Y := round ( 99.51 ) = ………
100 ; True
Y := ( upcase ( ‘a’ ) in [ ‘A’ .. ’Z’ ] ) and ( ………
1 in [ 1..10 ] ) ; True
Y := length ( ‘PASCAL’ ) mod 4 …………
= 2; True
Y := random ( 4 ) ………
< 4; True
Y := pred( ‘D’ ) = chr ( ord ( ‘……’
B )+1; True
Y := COPY ( ‘informatique’ ) , 1 , 4 ) ………
<> ‘info’ ; False
Compléter le tableau ci-dessous, par les déclarations Pascal adéquates :
- Semaine = ( lundi, mardi, mercredi, jeudi, vendredi) et les variables x et y de type semaine.
Solutions :
Type
Semaine = ( lundi, mardi, mercredi, jeudi, vendredi) ;
Nombre = 0.. 20 ;
Var x , y : Semaine ;
m , n : Nombre ;
Test : boolean ;
Type Semaine = ( lundi, mardi, mercredi, jeudi, vendredi) ;
Nombre = 0.. 20 ;
Var x , y : Semaine ;
m , n : Nombre ;
Test : boolean ;
Program Incomplet ;
Type Section
Uses wincrt ;
……………………………………………………………………………………………………………
……………………………………………………………………………………………………………
Var
T : Tab ; S : Section ; Type TAB
Begin
X := Ord ( Lettre ) < Ord ( Sport ) ;
G := Copy ( ‘devoir’ , 4 , 3 ) ;
C := UPCASE ( G[ 1 ] ) ;
F := Ord ( Math ) ;
End.
b) Donner les valeurs des variables X, G, C, F.
Solution :
a) Déclaration :
Type
Section = (Math, Sciences, Techniques, Informatique, Lettre, Economie, Sport) ;
TAB = ARRAY[Math..Sport] of string ;
Var
X : Boolean ; G : String ; C : Char ; F : Integer ;
b) Tournage :
X = 4 < 6 = True
G = ‘oir’
C = ‘O’
F=0
Soit le tableau T suivant, un tableau à une dimension de 9 entiers :
1 2 3 4 5 6 7 8 9
T 26 33 58 98 32 -5 65 487 96
Questions :
Mettre Vrai (V) ou Faux (F) dans la case adéquate à chacune des situations suivantes :
M 1 2 3
1 25 380 3.4
2 -5 5 65
Questions :
Mettre Vrai (V) ou Faux (F) dans la case adéquate à chacune des situations suivantes :
1 2 3 1 2 3