Вы находитесь на странице: 1из 132

Ministère de l’éducation et de la

formation

Algorithmique et programmation

2 ème année de l’enseignement secondaire

Section : Sciences

Année Scolaire : 2020 / 2021

Enseignant : Mr Fennira Karim


PLAN

Module 1 Pensée computationnelle et programmation


• Identifier les étapes de résolution d’un problème.
• Élaborer des solutions sous forme d’algorithmes.
• Exploiter des environnements de programmation
pour tester des algorithmes solutions.

Module 2 Systèmes et technologies Internet


• Prendre conscience de l’intérêt de l’Internet des
objets.
• Comprendre les fondements de l’Internet des
objets.
• Appliquer les concepts liés à l’Internet des objets
pour piloter à distance un objet connecté.
Chapitre 1

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

Étape 2 : Élaboration d’un algorithme

Étape 3 : Écriture du programme

Étape 4 : Exécution et tests du programme


É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

2 Déterminer le processus d’obtention des résultats à partir des données.


C’est le traitement : S  A + 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

a / Définition : Un algorithme est une suite ordonnée et finie d’actions ou


d’instructions permettant de résoudre un problème.

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

1 ) Lire ( A ) La saisie d’une données


2 ) Lire ( B ) Lire

3)S=A+B Traitement

4 ) Ecrire ( S ) L’affichage du Résultat


Ecrire
5 ) FIN somme
III - Traduction en un programme
exécutable par ordinateur :

 Les deux étapes précédentes sont les plus


importantes dans la résolution d'un problème.
Il reste cependant les dernières étapes liées
étroitement à l'ordinateur.
 Il faudra trouver un moyen de rendre
l'algorithme solution compréhensible par la
machine.
 L'opération consiste à écrire cet algorithme dans un
langage de programmation.
 Exemples de langage de programmation :
 COBOL (COmmun Business-Oriented Language)
 FORTRAN (FORmula TRANslation)
 BASIC (Beginners All-purpose Symbolic Instruction Code)
 PASCAL (c'est un hommage au savant Blaise Pascal)
 C
 ADA (Hommage à Ada Lovelace, la 1ére femme programmeur)
 Python
 Le langage Python est assez structuré très
pédagogique et se prête bien pour
l'enseignement.
 Il permet une traduction simple des
algorithmes que nous allons développer.

 C'est pour cette raison que nous allons


l'utiliser pour écrire nos programmes.
1) Comment écrire un programme ?

 Une fois l'algorithme est établi et testé on


commence à penser à la traduction en un
langage de programmation. Pour ce faire, il
faudra connaître le vocabulaire, la syntaxe,
les instructions, les représentations des
données et leurs contraintes,
2) L'interprétation ou la compilation

 Pour exécuter le programme écrit, il faut encore


le traduire en langage machine. Il existe deux
manières de traduire en langage machine :
 Soit on traduit et on exécute au fur et à mesure les
différentes instructions du programme source. On dit
que le langage est interprété. Cette méthode a
l'inconvénient de la lenteur et du plantage à la
première erreur.
Exemple : langage BASIC, Python
 Soit on traduit le programme source en un autre
programme dit exécutable et il s'agit dans ce cas
de la compilation ou encore que le langage de
programmation compilé. Lors de la compilation,
le traducteur révèle toutes les erreurs de
vocabulaire et de syntaxe et permet donc de les
corriger.
Exemple : Les langages Pascal et C.
L'exécution d’un programme dépend du langage utilisé.

Si le langage est interprété, le programme source sera exécuté


instruction par instruction.

Par contre, si le langage est compilé, il faudra faire la compilation du


programme source et corriger les éventuelles erreurs pour produire
un autre programme dit programme exécutable. C'est ce dernier, écrit
en langage machine par le langage lui-même, qui, sera exécuté. Les
éventuelles erreurs qui se produiront seront dites erreurs d'exécution.

Un langage compilé donne des programmes exécutables dont


l'exécution est très rapide relativement à l'exécution d'un programme
interprété.
Compilateur/interpréteur
 Compilateur: traduire le programme entier une fois pour toutes

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éteur: traduire au fur et à mesure les instructions du programme à


chaque exécution

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 :

 Une fois l'écriture du programme source


achevée, nous allons procéder aux
exécutions. Ces opérations consistent à
tester le programme obtenu. Pour cela, il est
nécessaire de préparer un jeu de tests bien
choisis et de les essayer à ce programme.
- Données : a et b

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)

print(s) Le programme est ensuite transformé


en langage machine lors d'une étape

Program allongement ; 4 appelée interprétation.

Uses wincrt ; L’interprétation consiste a corriger les


Const G = 9.8 ; éventuelles erreurs révéler par le compilateur .
VAR M,K,L : Real ;
BEGIN
Read ( m ) ;
Read ( k ) ; Il s’agit de faire tourner le programme sur
L := M * G / K ; machine et de le tester afin de s’assurer de
Write ( L ) ; son bon fonctionnement.
END . 5 vérifier si le résultat obtenu est bien celui que
l’on voulait.
Énoncé du programme

- 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.

tion L’interprétation consiste a corriger les


éventuelles erreurs révéler par le compilateur .

Il s’agit de faire tourner le programme sur


machine et de le tester afin de s’assurer de
son bon fonctionnement.
5 Exécution vérifier si le résultat obtenu est bien celui que
l’on voulait.
Algorithmique et programmation

Chapitre 1 : Les structures de données et les structures simples

Les constantes et les variables


Vous avez appris l’année dernière que le travail d’un programme s’articule autour de la
manipulation de valeurs contenues dans des objets qui peuvent être des constantes ou
des variables.
Les types standard
Les opérations d’entrée/sortie
Les types énumérés
Les types utilisateurs

Les tableaux à 1 et à 2 dimensions


Les constantes et les
variables

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.

I.1. Les constantes

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.

Une constante est caractérisée par :


Nom de la constante

- 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

Déclaration en Pascal : const


identificateur-de-la-constante = valeur ;
Exemples : const
PI = 3.14 ;
Lors de la déclaration d'une constante, on ne doit pas spécifier un type de données, mais lui
affecter uniquement une valeur initiale. Le compilateur verra la valeur et utilisera
automatiquement son propre type de données.
(entier si nombre sans point, réel si nombre avec point, caractères si entre cotes).
Démarche deApplication
résolution de problèmes

On se propose de calculer l’allongement L d’un ressort de raideur K auquel


est accroché une masse m.
Sachant que : m * g = k * L

 Présentez la spécification de ce problème.

 Déduisez l’algorithme correspondant.

 Traduisez la solution en Pascal et l’exécutez pour m = 150 et k = 10


Énoncé du programme

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)LM*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

Program allongement ; 4 Compilation appelée compilation.

Uses wincrt ; La compilation consiste a corriger les


Const G = 9.8 ; éventuelles erreurs révéler par le compilateur .
VAR M,K,L : Real ;
BEGIN
Read ( m ) ;
Programme Exécutable
Read ( k ) ; Il s’agit de faire tourner le programme sur
L := M * G / K ; machine et de le tester afin de s’assurer de
Write ( L ) ; son bon fonctionnement.
END . 5 Exécution vérifier si le résultat obtenu est bien celui que
l’on voulait.
Étape 1 : Analyse
Approche descendante :

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)

2 Déterminer le processus d’obtention des résultats à partir des


données. C’est le traitement :
LM*G/K

3 Préciser les données qui doivent être saisies à partir du clavier. Ce


sont les entrées :
M et K
Étape 2 : Élaboration d’un algorithme
Définition :
Un algorithme est une suite ordonnée et finie d’actions ou d’instructions
permettant de résoudre un problème.

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 :

Nom Type / Nature Rôle

Tableau de codification des variables :

Nom Type / Nature Rôle


M réel Une variable contenant la masse
K réel Une variable contenant la raideur
G G = 9.8 constante connue
L réel la valeur calculé de l’allongement
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.
Démarche de résolution de problèmes
Application
Activité 2 :
On se propose de calculer la surface d’un cercle de rayon R donnée.
Sachant que : Surf = Pi * R * R

- Présentez la spécification de ce problème.


- Déduisez l’algorithme correspondant.
- Traduisez la solution en Pascal et l’exécutez pour R = 10

Solution :

Analyse

- Résultat : Ecrire ( Surf)


- Traitement : Surf  Pi * R * R
- Données : R
0 ) DEBUT surface

Algorithme : 1 ) Lire ( R )

2 ) Surf  Pi * R * R

3 ) Ecrire (Surf)

4 ) FIN surface

Tableau de Nom Type/Nature Rôle


codification des Pi Pi = 3.14 constante qui contient la valeur de ∏
objets : R réel Rayon du cercle

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

Une variable est caractérisée par :


- Un nom (sert à identifier la variable )
- Un contenu ( c’est la valeur courante de la variable )
- Un type :
• L’ensemble des valeurs qui peuvent être affecter à la variable en question.
• L’ensemble des opérations qu’on peut appliquer sur cette variable.
La déclaration d’une variable se fait comme suit :
2. Déclaration d’une variable :
a. Déclaration algorithmique :
Objet Type / Nature Rôle

Nom de la variable Type de la variable Rôle joué par de la variable dans le programme

Objet Type / Nature Rôle

Exemple :
Surface Réel Surface du disque

R Réel Rayon 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.

 L’ensemble des opérations qu’on peut appliquer sur cette variable.

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:

 Type numérique (entier ou réel)

 Type booléen: deux valeurs VRAI ou FAUX

 Type caractère: lettres majuscules, minuscules, chiffres,


symboles, …
exemples: ’A’, ’a’, ’1’, ’?’, …

 Type chaîne de caractère: toute suite de caractères,


exemples: " Nom, Prénom", "code postale: 1000"
II.1 Les types numériques :
Le contenu d’une variable de ce type est une valeur numérique ( entier ou
réel ).
Exemple :
X 10 X est une valeur entière
Y 5.32 Y est une valeur réelle

1) L’ensemble des valeurs qui peuvent être affecter à la variable en question.


2) L’ensemble des opérateurs qu’on peut appliquer sur cette variable.
3) La déclaration en pascal.
Les Types standard

Le Type ENTIER

Menu
II. Les types standard 
II.1. Les types numériques :
II.1.1. Le type entier

Domaine de définition Sous ensemble de Z : -32768 .. 32767

Opérateurs arithmétiques + , - , * , DIV , MOD , IN

Notation algorithmique : < ,>,= ,≤ , ≥ ,≠


Opérateurs relationnels
Notation en Pascal : <, > ,=, <= , >= , <>

Tableau de codification des Objet Type / Nature Rôle


variables Nom entier Rôle

Déclaration en Pascal Var Nom : INTEGER ;

Exemple : 17 DIV 3 vaut 5 17 3


17 MOD 3 vaut 2 2 5
LES TYPES ENTIERS PREDEFINIS
Type
LIMITES
En En Pascal Nombre de bits
[Min,Max]
Algorithmique
Entier court SHORTINT [-128,+127] Signé 8
Entier INTEGER [-32768,+32767] Signé 16
Entier long LONGINT [-2147483648,+2147483647] Signé 32
Octet BYTE [0,255] Non Signé 8
Mot WORD [0,65535] Non Signé 16

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

Domaine de définition Sous ensemble de R

Opérateurs arithmétiques + ,- ,*,/

Notation algorithmique : < ,>,= ,≤ , ≥ ,≠


Opérateurs relationnels
Notation en Pascal : <, > , = , <= , >= , <>

Tableau de codification des Objet Type / Nature Rôle


variables Nom réel Rôle

Déclaration en Pascal Var Nom : REAL;


Comme le type entier, le type réel admet aussi des sous types utilisés
lors de la résolution de quelques problèmes, dont voici les plus utilisés :

Les types réels prédéfinis


Nombre de chiffres Occupation en
Type Valeurs autorisées
significatifs mémoire
SINGLE [1.5*10-45, 3.4*1038] 7 chiffres 4 octets
REAL [-2.9*10-39, 1.7*1038] 11 chiffres 6 octets
DOUBLE [5.0*10-324 ,1.7*10308] 15 chiffres 8 octets
EXTENDED [3.4*10-4932, 1.1*104932] 19 chiffres 10 octets
COMP [-9.2*1018, 9.2*1018] 20 chiffres 8 octets
Activité

1/ Écrivez les formules suivantes en Pascal :


X1  (-b - RacineCarré (Delta) ) / (2 * a)
X1 := (-b - SQRT(Delta) ) / (2 * a) ;

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

3/ Soit y une variable qui a pour valeur l’expression suivante :

y  Arrondi (RacineCarré (4+3*4) + tronc (-12-1.8/2))

Après avoir exécuté cette instruction, la valeur finale de y est égale à -8


Les Types standard

Le Type BOOLEEN

Menu
Le Type BOOLEEN
VRAI (TRUE) FAUX (FALSE).

Exemple 1: 14 > 5 est VRAI


14 < 5 est FAUX
5=9 est FAUX

Les opérateurs applicable sur une variable booléenne sont :


La " tables de vérité "
A B A et B A ou B Non A A OUex B

VRAI VRAI VRAI VRAI FAUX FAUX

VRAI FAUX FAUX VRAI FAUX VRAI

FAUX VRAI FAUX VRAI VRAI VRAI

FAUX FAUX FAUX FAUX VRAI FAUX


Expression Résultat
( 4 < 7 ) ET ( 9 > 0 ) Vrai
( 1 < 0 ) OU ( 1 < > 1 ) Faux
Non ( 13.4 < 15 ) Faux

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 ?

En pascal, la déclaration d’une variable de type booléen se fait comme suit :

Déclaration en Pascal VAR <nom_variable> : BOOLEAN;


Activité page 21

Sachant que a = 4, b = 5, c = 1 et d = 0; évaluez les expressions logiques


suivantes :
1. (a < b) et (c >= d) Vaut Vrai

2. Non (a < b) ou (c = b) Vaut Vrai

3. Non (a = b2) ou (a * c < d) Vaut Faux


Les Types standard

Le Type CARACTERE

Menu
Le Type caractère

Il est réservé aux variables contenant un et un seul caractère. Il s’agira en


l’occurrence :

Des Lettres alphabétiques : - Les lettres en majuscules [‘A’..’Z’]


- Les lettres en minuscules [ ‘a’ ..’z’ ]
Des chiffres de 0 à 9

Des symboles ou caractères spéciaux comme : + , - , * , / , ; , la touche


entrée (ou retour chariot), etc.

Des caractères non imprimables comme la touche Echappe(Esc)


Remarques :
 Une variable de type caractère ne peut contenir qu’un et un seul caractère.
 Un caractère est présenté par le caractère lui-même placé entre 2 guillemets dans
l’algorithme.
Exemple: "A" , "z" , "1" , "$" .
Ces guillemets sont remplacées par des apostrophes en Turbo Pascal.
 Un caractère vide est représenté par deux paires de guillemets en analyse : " "
En Pascal : ‘ ’

 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).

Exemple : Exemple de caractères Code ASCII


Chiffres de 0 à 9 de 48 à 57
Lettres de A à Z de 65 à 90
Lettres de a à z de 97 à 122
Le retour chariot 13
La barre d’espace 32
Le code ASCII
Le type caractère :
- Lettres alphabétiques minuscules et majuscules
- Les chiffres de 0 à 9
Domaine de définition
- Les symboles
- Les caractères non imprimables

Notation algorithmique : < , > , = , ≤ , ≥ , ≠


Relationnels
Notation en pascal : <, > , = , <= , >= , <>
Opérateurs
Notation algorithmique : "A" dans ["A" .. "Z" ]
Appartenance
Notation en pascal : ‘A’ IN [‘A’ .. ‘Z’ ]

Tableau de codification des Objet Type / Nature Rôle


variables Nom Caractère Rôle

Déclaration en Pascal VAR <nom_variable> : CHAR;


Il est possible de déterminer les successeur / prédécesseur / position d’un
caractère dans la liste des codes ASCII , grâce aux fonctions prédéfinies
offertes par Pascal :
Ainsi le successeur de "B" est "C", son prédécesseur "A" et son code ASCII 66.

Les fonctions prédéfinies relatives au type caractère  :

Fonction Rôle Type de x Type de résultat Exemples


Renvoie le code ascii du
ORD(c) Caractère entier ORD("A") vaut 65
caractère c
Renvoie le caractère dont le
CHR(n) Entier Caractère CHR(65) vaut "A"
code ascii est n

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.

Le type entier et caractère sont des types scalaires.

Les types scalaires bénéficient de 2 fonctions Succ et Pred.

Exemple : Succ (‘B’) = ‘C’

Pred (5) = 4
Activité

Exemple1 :

Soit x une variable qui a pour valeur l’expression suivante :

x  MAJUS (CHR (PRED(110)))

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

a) Exécutez cette algorithme pour c1 = "A"  


b) Refaites l’exécution pour c1 = "s"
c) Déduisez le rôle de cette algorithme.
Confusion possible entre le nom d’une variable et la valeur d’une variable !
Quel est la différence entre ce x et celui la !
X := 'info' 'X'

Quel est la différence entre ces deux algorithmes ?

Exemple n°1 Exemple n°2


Début Début
X ← "info" X ← "info"
Y ← "X" Y←X
Fin Fin

La seule différence entre les deux algorithmes consiste


dans la présence ou dans l’absence des guillemets lors de la seconde affectation.
Et l'on voit que cela change tout !
Les Types standard

Le Type Chaîne de caractères

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 :

Section  "Sciences informatiques" 


1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2
0 1 2 3 4 5 6 7 8 9 0 1 2
Section S c i e n c e s i n f o r m a t i q u e s

Section[4] Section[9] Section[22]

On peut accéder au ième caractère d’une chaîne CH en utilisant la notation CH[i]


avec : 1 ≤ i ≤ Long(ch)

Section[4] est le caractère "e" 

Section[9] est le caractère espace " "  

Section[22] est la lettre "s".


Exemple 2 :
Soit CH une variable de type chaîne de caractères :

CH  "Enseignant"

1 2 3 4 5 6 7 8 9 10
CH E n s e i g n a n t

CH[1] donne "E"

CH[2] donne "n"  

CH[5] donne "i"

CH[11]  "e" CH devient "Enseignante"

Exemple 3 :

NOM  "AMIR" NOM[2] donne "M"


NOM[2]  "B" NOM devient "ABIR"
En Pascal, La déclaration d’une variable de type chaîne de caractères se fait
comme suit :

VAR <nom_variable> : STRING ;

Dans ce cas, la chaîne peut atteindre 256 caractères.

VAR <nom_variable> : STRING [L] ;

Dans ce cas, la chaîne peut avoir une taille maximale égale à L, ( qui est la
longueur de cette chaîne ).
Exemple :

Donnez les déclarations des variables de type chaîne de caractères


suivantes :
Le nom d’un élève dont la taille est de 50 caractères au maximum
Adresse de l’élève

Correction : 
Tableau de codification des objets :

Objet Type / Nature Rôle


Nom CHAINE[50] Le nom d’un élève
Adresse CHAINE Adresse de l’élève

Déclaration en Turbo Pascal

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

Renvoie la position de la 1ére POS(‘t’,’tatouer’) vaut 1


occurrence de CH1 dans CH2. Si POS(‘T’,’tatouer’) vaut 0
Position(CH1,CH2) POS(CH1,CH2)
CH1 n’est pas dans CH2, elle POS(‘cas’,’cartable’) vaut
retourne 0. 0

Renvoie une sous-chaine de n


Sous_chaîne(CH,p,n) COPY(CH,p,n) caractères à partir de la PRED("B") vaut "A"
position p de CH.

Renvoie la concaténation de CONCAT(’20’,’/’,’mars’,’/’


CONCAT(CH1,CH2, CONCAT(CH1,CH2,
CH1,CH2,…,CHn. C’est ,’1956’) vaut
…,CHn) …,CHn)
l’équivalent de l’opérateur + ’20/mars/1956’
Les procédures sur les chaînes de caractères :

Nom
Rôle Exemples
Algorithmique Pascal

On attribue à CH la valeur ‘ESCLAVE’


Enlève n caractères de CH à
Efface DELETE(CH,p,n) Après DELETE(CH,1,3), CH devient
partir de la position p.
‘LAVE’

Insère la chaîne CH1 dans la On attribue à CH2 la valeur ‘CABLE’


Insère INSERT(CH1,CH2,p) chaîne CH2 à partir de la Après INSERT(‘RTA’,CH2,3), CH2
position p. devient ‘CARTABLE’

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’

On attribue à CH la valeur ‘152.6’


Génère à partir d’une chaîne
CH une entité numérique n Cas 1 : n est du type entier
(Entier ou réel). e est une Après VAL(CH,n,e), on obtient n qui
variable de type entier, elle vaut 0 et e qui vaut 4.
Valeur VAL(CH,n,e) contiendra 0 si la
conversion est possible Cas 2 : n est du type réel
sinon, elle contiendra la Après VAL(CH,n,e), on obtient n qui
position du premier vaut 152.6 et e qui vaut 0.
caractère causant l’échec.
Application

1) Quelles seront les valeurs des variables T1  "procédure"


x1 et y1 après l’exécution de la séquence T2  "dur"
d’instructions suivante :
x1  Position (T2,T1)
y1  Position ("roche",T1)

2) Quelles seront les valeurs des variables T1  "langage"


x2 et y2 après l’exécution de la séquence T2  "Mohamed"
d’instructions suivante :
x2  Sous_chaîne (T1, 4, 2)
y2  Sous_chaîne (T2, 3, 5)

2) Quelles seront les valeurs des variables T1  "Mohamed"


x2 et y2 après l’exécution de la séquence T2  "Turbo Pascal"
d’instructions suivante :
T3  "Pascal"
x2  Position ("Hamed", T1)
y2  Position (T3, T2)
III. Les structures simples
Les structures simples

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 :

- Lire (x) La Lecture sur le clavier : (pour faire entrer


les deux entiers x et y ).

- M  (x * 2) DIV 3 Affecter la valeur de l’expression à la


variable M

- 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 :

Syntaxe en algorithmique Syntaxe en Pascal

Lire ( n ) Read ( n ) ; ou bien Readln ( n ) ;

Pour effectuer la lecture de plusieurs valeurs, il existe l'abréviation suivante:


read (v1, v2, ..., vn); qui équivaut à read (v1);
read (v2);

read (vn);
Les structures simples

L’opération de sortie

Menu
L’opération de sortie

L’affichage des informations:


L'instruction write permet d'afficher des informations à l'écran. On peut s'en
servir :
pour écrire Un texte

Exemple : write ('il fait beau') ;

On peur aussi afficher La valeur d'une variable :

Exemple : write(moy) ;

Ou bien, Un mélange des deux ( affichage d’un texte + contenu d’un variable ) :

Exemple : write( ' la moyenne est ', x ) ;

Et même, Le résultat d'un calcul :

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.

Exemple : Write ( ‘l’’algorithmique’ ) ;


Remarque :
L’instruction Writeln permet de passer à la ligne suivante après l’écriture des
différentes variables et textes figurant dans l’instruction.

Writeln (Pi : a : n ) avec a désignant le nombre de position d’affichage du


rée et n le nombres décimales parmi ces positions.
Exemple :
Writeln ('Pi = ', Pi : 4 : 2 );  le programme affiche  Pi = 3.14
Writeln ('Pi = ', Pi : 6 : 2 );  le programme affiche  Pi = 3.1
III- Les structures simples

L’opération d’affectation

Menu
L’opération d’affectation

Y  10 Cela signifie Après exécution de l’instruction, la valeur de la


variable Y vaut 10

X  Y Après exécution de l’instruction, la valeur de la variable X


devient égale à la valeur de la variable Y, x égale à 10.

X  X+1 Après exécution de l’instruction, la valeur de la variable X


devient égale à sa valeur actuelle incrémentée de 1, la nouvelle
valeur de X est 11 (Si X valait 10, il vaut maintenant 11).

Z  x*2 + y La variable Z reçoit la valeur de l'expression suivante x*2 + y,


c’est-à-dire Z aura pour valeur 32

Utiliser des affectations sur des expressions booléennes,


Par exemple, en ayant déclaré :
TEST  (A<B) and (A>0)
Vous remarquez que La partie situé à droite de l’affectation, peut être une
valeur, une variable ou une expression.

Pour affecter une valeur à une variable en algorithmique, on écrit :

Variable Valeur

Syntaxe en Pascal
En pascal, vous remplacez la flèche par :=
Variable := valeur ;
Remarques :

Une instruction d’affectation doit respecter trois conditions :

 À gauche de l’affectation, on doit trouver un nom de variable, et uniquement


cela. Dans le cas contraire, il s’agit certainement d’une erreur !

 À droite de l’affectation, on doit trouver une expression ;

 L’expression (située à droite de l’affectation) doit être du même type que la


variable (située à gauche de l’affectation), la seule exception est de mettre un
entier dans un réel  (le .0 est rajouté automatiquement), mais l'inverse est
impossible .
Démarche deApplication
résolution de problèmes

Soit la séquence d’instructions suivante :

Lire (A)
Lire (B)
AA+B CA
BA–B AB
AA–B BC
Ecrire (A)
Ecrire (B)

Questions :

- Quel le rôle de cette séquence ?

- Traduisez ces déclarations en Pascal.


Démarche de résolution de problèmes
Application
Activité :
Calculer et afficher le quotient et le reste de la division Euclidienne de A par B. (sans
utiliser l’opérateur MOD).

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)RA–(Q*B)
- Traitements : Q  A DIV B 5 ) Ecrire ("le quotient est : " , Q )
6 ) Ecrire ("le reste est : " , R )
RA–(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 RA–(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

Les types énumérés

Menu
Les types énumérés

- Le Type numérique (entier ou réel)


- Le Type booléen
- Le Type caractère
- Le Type chaîne de caractère.
Activité 1:

Représenter les jours de la semaine ?

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 ;

Au niveau de l’analyse, la déclaration d’un type énuméré se fait comme


suit :

Tableau de déclaration de nouveaux types (T.D.N.T)


Type
Nom_type = (val1, val2, ….., valn)

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 :

Tableau de déclaration des objets

Objet Type / Nature Rôle


Nom de la variable Type de la variable Rôle

Exemple :

TDO

Objet Type / Nature Rôle


jour jours_de_la_semaine Contient un jour de la semaine
Sachez que :
A chaque valeur énumérée correspond un numéro d'ordre (nombre entier).

jours_de_la_semaine = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)

lundi porte le numéro 0,


mardi porte le numéro 1
et dimanche porte le numéro 6

Sachez aussi :

Qu’ Il est possible de comparer les valeurs d’un type énuméré en utilisant les
opérateurs relationnels < , > , = , < = , > = , < >

La comparaison se fait selon les indices des valeurs dans la liste.

Pour le type jours_de_la_semaine  nous avons :


lundi < mardi < mercredi < jeudi < vendredi < samedi < dimanche
Les fonctions prédéfinies sur les types énumérés

Soit le type énuméré suivant :


Cours = (informatique, math, physique, français, anglais)

3 opérations sur chaque nouveau type énuméré :

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)

Fonction Rôle Exemple


Fournit le numéro d’ordre de la Ord (informatique) donne …..0….
Ord (expr_type_énuméré ) valeur donné par Ord (math) donne …1…..
expr_type_énuméré Ord (anglais) donne …4…..
Fournit le successeur de la valeur
Succ (math) a pour valeur …
donnée par expr_type_énuméré
Succ (expr_type_énuméré ) physique…..
(Erreur si cette expression est
Succ (anglais) donne …..erreur…..
la dernière valeur énumérée).
Fournit le prédécesseur de la
valeur donnée par
Pred (français) donne ..physique…
Pred (expr_type_énuméré ) expr_type_énuméré (Erreur si
Pred (informatique) donne ..erreur.
cette expression est la première
valeur énumérée).

La fonction Succ n'est pas


définie pour le dernier
élément de la liste. La fonction Pred n'est pas
définie pour le premier élément
de la liste.
Exemple :
Type jours_de_la_semaine = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche) ;

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)

Donner  le résultat affiché par chaque exemple :

Exemples Résultat

Write( ord( math))  1

A := pred ( Français) ; write (ord(A)) ; 2 

A := succ ( Physique) ; write (ord(A)) ;  3

If informatique < pred( physique) then write(‘tu  ’tu as compris’


as compris’)
Application

Activité 2 :

Donnez les déclarations des types énumérés suivantes :


1 – Un type Sens comportant les quatre sens de direction qui
sont haut, bas, gauche et droite
2 – Un type Saison comportant les quatre saisons (Automne,
Hiver, Printemps, Eté)
Solution :

Au niveau de l’analyse :
Tableau de déclaration de nouveaux types (T.D.N.T)
Type
Sens = (haut, bas, gauche,droite)

La déclaration d’une Variable de ce type se fait comme suit :


TDO

Objet Type / Nature Rôle


S Sens Contient un sens de direction

Au niveau du langage Pascal :


Type Sens = (haut, bas, gauche,droite) ;

Var S : Sens ;
Solution :

Au niveau de l’analyse :

Tableau de déclaration de nouveaux types (T.D.N.T)


Type
Saison = (Automne, Hiver, Printemps, Eté)

La déclaration d’une Variable de ce type se fait comme suit :

TDO

Objet Type / Nature Rôle


S1 Saison Contient une saison

Au niveau du langage Pascal :


Type Saison = (Automne, Hiver, Printemps, Eté) ;

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

Les types intervalles

Menu
Les types intervalle

Les types intervalle constituent un autre type scalaire défini par


l'utilisateur.
Au lieu de listez dans une énumération toutes les valeurs possibles pour le
type en question vous indiquer un intervalle d'un type existant.
Un intervalle permet de restreindre le groupe des valeurs d'un type
appelé type de base et choisi parmi :
- integer
- boolean
- char  
- ou un type énuméré

Un intervalle est un ensemble de valeurs successives appartenant à un


type déjà défini.
Vous pouvez définir un intervalle du type Integer :

0..9 est l'intervalle des valeurs entières de 0 à 9, le type de base est integer

Ou définir un intervalle du type Char, 'A'..'Z' est l'intervalle des lettres


majuscules, le type de base est char

lundi..vendredi est l'intervalle des valeurs énumérées lundi  à vendredi, le type de


base est jours_de_la_semaine

Avec les exemples précédents, on peut définir le type intervalle suivants :

Type chiffre = 0..9 ;

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 ;

La variable nombre, du type chiffre, peut prendre les valeurs : 0, 1, 2, 3,


4, 5, 6, 7, 8 ou 9 uniquement.

Au niveau de l’analyse, la déclaration d’un type intervalle se fait


comme suit :

Tableau de déclaration de nouveaux types (T.D.N.T)


Type
Nom_type = borne_inf .. Borne_sup

Tableau de codification des variables

Objet Type / Nature Rôle


Nom de la variable Type de la variable Rôle
Exemple :
T.D.N.T
Type
chiffre = 0..9

Au niveau de l’analyse, la déclaration d’une Variable de type énuméré se


fait comme suit :

Tableau de codification des variables

Objet Type / Nature Rôle


nombre chiffre Contient une valeur comprise entre 0 et 9

Une fois la variable déclarer, on peut alors l’utiliser dans le programme


grâce à l’affectation :
Par exemple : nombre := 5 ;
Définir un intervalle des lettres majuscules

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'

La déclaration d’une Variable de ce type se fait comme suit :

Tableau de codification des variables


Objet Type / Nature Rôle
Lettre majuscule Contient une lettre majuscule

Au niveau du langage Pascal :


Type majuscule = 'A‘ .. 'Z‘ ;

Var Lettre : majuscule ;


VI. Les tableaux
Les tableaux

Les tableaux à une dimension

Menu
Pouvez vous me rappeler Qu’est ce qu’une structure tableau ?
Pourquoi a-t-on recours à cette structure ?

Heureusement, les langages de programmation offrent la possibilité de rassembler


toutes ces variables dans une seule structure de donnée appelée tableau.

illustrons ce dernier : 12.5


8.56
13.2 10.8 14.5
7.89
16.5 10.0 14.4 15.0
0 2 9 8 8 8 8 9
On veut stocker les moyennes d’un groupe de 10 élèves pour un certain traitement.

On a donc : Le tableau moyenne qui contient 10 réels :


Identifiant du Type du contenu = Réel
tableau

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

Les indices du tableau


Indice minimal = Indice maximal =
1 10
Par exemple :
- moyenne[4] correspond au 4ème élément du tableau moyenne est a la valeur 10.89.
- moyenne[10] correspond au dernier élément du tableau moyenne est a la valeur
15.09.
Le numéro de l'élément (en fait appelé
indice) est placé entre crochets

Chaque élément du tableau moyenne peut être atteint ou modifié directement.

Pour assigner une valeur à un élément de ce tableau, on utilise, par exemple:


moyenne[2] := 10;
Cette opération assigne la valeur 10 au deuxième élément du tableau .

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

Les indices du tableau

Que devient le contenu du tableau moyenne après l’exécution des


affectations suivantes :

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é.

contenu de la case mémoire


T[‘e’]

T 45 13 9 11 67 4 23

‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘f’ ‘g’


Définition :
Un tableau, est une structure de données permettant de ranger un nombre
fini d’éléments de même type et qui se distinguent les une des autres par leur
numéro d’indice.

Déclaration d’un tableau :


On peut déclarer un tableau de deux manières différentes :

Première formulation

Type des éléments


du tableau

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

Min et Max définissent les bornes du tableau. 

Type est le type de variable que le tableau va stocker,

L’exemple suivant créer un tableau de type entier de 5 cases :

Var MyTab : Array[1..5] of integer;

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

Objet Type / Nature Rôle

Tableau de taille et de
nom_tableau Rôle
type_éléments

Au niveau de l’algorithme Au niveau de Pascal

Objet Type / Nature Rôle Var

moyenne Tableau de 10 réels Stocker des moyennes moyenne : Array[1..5] Of real;


Tableau : Deuxième formulation
Créer 5 tableaux de type entier de 4 cases ?

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 ;

La notion de Type, vous donne la


possibilité de définir vos propres
types de données.

Suivi du nom, le nom


du nouveau type

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

Au niveau de l’algorithme Au niveau de Pascal

Tableau de déclaration des nouveaux types


Type
Types nom_type = Array[BInf..BSup]
nom_type = Tableau de taille type_éléments of type_éléments ;
En général T.D.O VAR
Objet Type / Nature Rôle nom_ tableau : nom_type;
nom_ tableau nom_type Rôle

Maintenant déclarer le tableau moyenne en tenant compte des modalités que je


vous ai donner
Au niveau de l’algorithme Au niveau de Pascal
Tableau de déclaration des nouveaux types
Type
Types
TAB = Array[1..10] of Real ;
vecteur = Tableau de 10 réels

T.D.O

Objet Type / Nature Rôle VAR


moyenne vecteur Stocker des réels
moyenne : TAB;
Application Page 41

Écrivez un programme qui permet la saisie de 6 valeurs puis d’afficher


leurs carrés.

Le dialogue avec l’utilisateur se présente comme suit :

12 4 8 58 -9 11

Nombre Carré
12 144
4 16
8 64
58 3364
-9 81
11 121
Les tableaux

Les tableaux à deux


dimension

Menu
Première formulation

Au niveau de l’algorithme Au niveau de Pascal

Objet Type / Nature Rôle Var


NomTab : Array[Binf1..Bsup1 , Binf2..Bsup2] Of Type;
Tableau de taille et
nom_tableau Rôle
de type_éléments

Deuxième formulation

Au niveau de l’algorithme Au niveau de Pascal

Tableau de déclaration des nouveaux types


Type
Types nom_type = Array[Binf1..Bsup1 , Binf2..Bsup2]
nom_type = Tableau de taille type_éléments
of type_éléments ;
T.D.O VAR
Objet Type / Nature Rôle nom_ tableau : nom_type;
nom_ tableau nom_type Rôle
L'opération la plus simple pour l'accès aux éléments d'un tableau à deux dimensions
est M[n,p] : cette opération lit l'élément du tableau M situé à la ligne n et à la
colonne p.

Exemple : Echec : Array[1..8 , 1..5] of integer;

Nom de la matrice Les indices des colonnes : de 1 à 5

Echec 1 2 3 4 5

1 5 -12 13 7 876 Correspond à l’élément de la


ligne n°2 et de la colonne n°2
2 43 13 25 87 56 Echec[2,2] autrement dit il s’agit du 2ème
3 4 25 2 43 45 élément de la 2ème ligne.
4 6 98 4 4 -42
Correspond au 4ème élément
5 7 67 5 6 -12 Echec[6,4]
de la ligne n°6.
6 87 43 13 7 13
7 9 4 25 87 25
8 -43 6 98 678 98 Echec[8,5] Correspond à l’élément n°8 de la
colonne n°5

Les indices des


lignes : de 1 à 8
Type de la matrice : Entier
Activités

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 :

A  (2 < 18) OUEx ( -10 < tronc(0.25) ) A Faux

V OUEx V

B  ( 25 >= 3 ) OU ( NON( -3 < 31 ) B Vrai

V OU F

C  NON( (3>12) ET (21<arrondi(-3.23) ) C Vrai

NON ( F ET F )
Compléter le tableau suivant en testant la validité des expressions données.

n et m sont deux entiers.

X, y et z sont trois réels.

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

xz/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) ;

Donner le résultat de chaque instruction :

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 :

Déclaration en Pascal ( préciser le mot clé


Description
adéquat : CONST , TYPE , VAR, etc.)
Une chaîne ch de 20 caractères au maximum Var ch : string[20];
Un type saison contenant les identificateurs Type saison = (automne, hiver, printemps, été) ;
suivants : automne, hiver, printemps, été
Un tableau V dont les indices sont de type caractère
pouvant contenir 20 chaînes de 10 caractères au Var V : array[‘A’..’T’] of string[10];
maximum
Une constante message de valeur :
Const message = ‘bonne chance’;
bonne "chance"
Démarche deApplication
résolution de problèmes
Soit :

- Semaine = ( lundi, mardi, mercredi, jeudi, vendredi) et les variables x et y de type semaine.

- Nombre : intervalle d’entiers compris entre 0 et 20 et les variables m et n de type nombre.

- Test : une variable booléenne.

a) Déclarer ces types et ces variables en Pascal.

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 ;

b) Indiquer le résultat de chacune des instructions suivantes :


Expression Validité Résultat ou justification
X := ‘lundi’; Faux X := ‘lundi’;
Y := Samedi ; Samedi n’appartient pas aux valeurs du type
Faux
semaine
X := PRED (mardi) ; Vrai X sera égal à lundi
Writeln (X) ; On ne peut ni lire ni écrire une variable de type
Faux
scalaire énuméré
Y := SUCC (vendredi) ; Faux Le successeur de vendredi n’existe pas
M := ORD (lundi) ; Vrai M sera égal à 0
N := ORD (mardi) - 4 ; Faux ORD (mardi) – 4 = -3 n’appartient pas à [0..20]
Test := (jeudi < mercredi) ; Test sera égale à False car jeudi > mercredi
Vrai

N := ORD (jeudi) + 3 * 4 ; Vrai N sera égale à 15


M := ORD (lundi) * SUCC(jeudi) ; On ne peut pas multiplier un entier par une
Faux
variable de type semaine
M := ORD (lundi) * SUCC (ORD(jeudi)) ; Vrai M = 0 * SUCC(3) = 0 * 4 = 0
a) Compléter le programme Pascal suivant par les déclarations nécessaires :

- Un type Section contenant les différentes sections au baccalauréat dans l’ordre


suivant : Math, Sciences, Techniques, Informatique, Lettre, Economie et Sport.

- Un type tableau TAB contenant 7 chaînes de caractères d’indices de type section.

Program Incomplet ;
Type Section
Uses wincrt ;

……………………………………………………………………………………………………………

……………………………………………………………………………………………………………

Var
T : Tab ; S : Section ; Type TAB

X : …………………… ; G : …………………… ; F : …………………… ; C : ………………… ;

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 :

Expressions Validité Explications


T : Array (1..9) of integer; La déclaration de T en Pascal est comme suit:
F
T : Array [1..9] of integer;
T[6] est la plus petite valeur V
T[9] est la plus grande valeur F la plus grande valeur est T[8]
T[5]  13 T[5] est une variable de type entier prêt à recevoir
V
n’importe quel entier
T[4]  T[1] + T[7] V T[4] est entier et la somme de 2 entiers est un entier
T[4]  T[1] DIV T[7] T[4] est un entier et le quotient de la division de 2 entiers
V
est un entier
T[4]  T[1] / T[7] F T[4] est un entier et la division de 2 entiers donne un réel

T[26]  2 * T[4] La case n° 26 n’existe pas, le tableau T est de 9 cases


F
seulement !
T[1]  ORD("A") ORD("A") est un entier, c’est une valeur de meme type
V
que la case T[1]
T[1]  Long("Ali va à l’école.") V Long("Ali va à l’école.") est un entier
Soit le tableau M suivant, une matrice à deux dimensions de 6 valeurs :

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 :

Expressions Validité Explications


M : Array [1..3,1..2] of integer; La déclaration de M en Pascal est comme suit:
F
M : Array [1..2,1..3] of real;
Le nombre de lignes = 2 V
Le nombre de colonnes = 2 F Le nombre de colonnes = 3
La plus petite valeur est M[2,1] V M[2,1] = -5 c’est la plus petite valeur de M
La plus grande valeur est M[1,2] V M[1,2] = 380 c’est la plus grande valeur de M
M[3,2]  20 F La case d’adresse M[3,2] n’existe pas, M est de 2 lignes maximum
M[2,3]  20 V M est de type réel, alors ses cases sont capables de contenir des entiers
M[1,1]  M[1,1] / 6 V M est de type réel, et M[1,1] / 6 est un réel
M[2,2]  2 * M[1,2] V M est de type réel, et 2 * M[1,2] est un réel
M[1,3]  M[2,2] MOD M[1,3] M est une matrice de réels, l’opérateur MOD n’est utilisé qu’avec les
F
entiers
M[1,3]  "3" + "SI" F M est une matrice de réels, "3" + "SI«  est une chaîne de caractères
M[1,3]  M[2,2] <= M[1,3] M est une matrice de réels, M[2,2] <= M[1,3] a pour résultat une vérité
F
booléenne
Application
Activité :
Écrire un programme Pascal qui permet de remplir un tableau T1 par trois entiers et
un tableau T2 par le nombre de chiffres de chaque entier dans T1.

1 2 3 1 2 3

Exemple : T1 23 2445 485 T2 2 4 3

Solution : Program nombre ;


Uses wincrt ;
Type TAB = Array [1..3] of integer ;
VAR ch1, ch2, ch3 : string ;
T1,T2 : TAB ;
BEGIN
Writeln(‘donner le 1er entier’) ; Readln ( T1[1] ) ;
Writeln(‘donner le 2ème entier’) ; Readln ( T1[2] ) ;
Writeln(‘donner le 3ème entier’) ; Readln ( T1[3] ) ;
Traduction en pascal : Str (Abs(T1[1]),ch1) ;
Str (Abs(T1[2]),ch2) ;
Str (Abs(T1[3]),ch3) ;
T2[1] := Length (ch1) ;
T2[2] := Length (ch2) ;
T2[3] := Length (ch3) ;
Writeln ( T2[1] ) ;
Writeln ( T2[2] ) ;
Writeln ( T2[3] ) ;
END .

Вам также может понравиться