Ch. 02 · Leçon 1
Les actions élémentaires simples
Ce que vous saurez faire
- →Distinguer les trois actions élémentaires simples : affectation, entrée et sortie
- →Écrire la syntaxe correcte d'une affectation en analyse et en Pascal
- →Utiliser les instructions de lecture et d'écriture en Pascal
- →Formater l'affichage des entiers, réels, chaînes et caractères
- →Traduire un algorithme simple en programme Pascal
id: 33-207-actions-elementaires-simples slug: 33-207-actions-elementaires-simples titre: Les actions élémentaires simples chapitre: 2 chapitre_titre: Les actions élémentaires simples lecon: 1 niveau: 4eme-sci ordre: 2 prerequis:
- types-de-donnees
- variables-constantes duree_estimee_min: 60 mots_cles:
- affectation
- lecture
- ecriture
- entree
- sortie
- formatage
- write
- read
- pascal langages:
- analyse
- pascal objectifs:
- 'Distinguer les trois actions élémentaires simples : affectation, entrée et sortie'
- Écrire la syntaxe correcte d'une affectation en analyse et en Pascal
- Utiliser les instructions de lecture et d'écriture en Pascal
- Formater l'affichage des entiers, réels, chaînes et caractères
- Traduire un algorithme simple en programme Pascal status: published source_pdf: 33_207.pdf source_pages:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9 kind: cours
Les actions élémentaires simples
Ce chapitre présente les trois actions élémentaires simples qui constituent la base de tout algorithme : l'affectation, l'entrée (lecture de données) et la sortie (écriture de données).
Leçon 1 — L'affectation
Définition
Deux règles fondamentales :
- L'expression à droite du signe d'affectation
←est complètement évaluée puis assignée à la variable située à gauche. - La valeur (ou le résultat de l'expression) à droite doit être de même type — ou d'un type compatible — avec celui de la variable de gauche.
Vocabulaire et syntaxe
Forme générale :
Variable ← valeur
Exemple :
Moy ← (Note1 + Note2) / 2
Forme générale :
Variable ← valeur
Exemple :
Moy ← (Note1 + Note2) / 2
Forme générale :
Variable := valeur ;
Exemple :
Moy := (Note1 + Note2) / 2 ;
Leçon 2 — Les opérations d'entrée / sortie
I. Les entrées (lecture de données)
Vocabulaire et syntaxe
Forme générale (Analyse) :
A = Donnée("commentaire sur A")
var1, var2, var3 = Donnée
Forme générale (Algorithme) :
Écrire("commentaire sur A")
Lire(A)
Lire(var1, var2, var3)
Exemple :
Écrire("Entrer la moyenne :")
Lire(moy)
Ou sur une seule ligne :
Écrire("Entrer la moyenne :"), Lire(moy)
Forme générale (Analyse) :
A = Donnée("commentaire sur A")
var1, var2, var3 = Donnée
Forme générale (Algorithme) :
Écrire("commentaire sur A")
Lire(A)
Lire(var1, var2, var3)
Exemple :
Écrire("Entrer la moyenne :")
Lire(moy)
Ou sur une seule ligne :
Écrire("Entrer la moyenne :"), Lire(moy)
Forme générale :
WRITE('commentaire sur A');
READLN(A); { ou READ(A) }
Readln(var1, var2, var3);
{ ou } Read(var1, var2, var3);
Exemple :
WRITE('Entrer la moyenne :');
READLN(moy);
II. Les sorties (écriture de données)
Vocabulaire et syntaxe
Affichage d'un texte :
Écrire("message")
Exemple : Écrire("Bonjour")
Affichage du contenu d'une variable :
A ← 165
Écrire(A)
Affichage d'une expression :
Écrire(3 + 5)
Affichage mixte :
Écrire("A=", A)
Affichage d'un texte :
Écrire("message")
Exemple : Écrire("Bonjour")
Affichage du contenu d'une variable :
A ← 165
Écrire(A)
Affichage d'une expression :
Écrire(3 + 5)
Affichage mixte :
Écrire("A=", A)
Affichage d'un texte :
WRITE('Bonjour'); { → Bonjour }
Affichage du contenu d'une variable :
A := 165;
WRITELN(A); { → 165 }
Affichage d'une expression :
WRITELN(3 + 5); { → 8 }
Affichage mixte :
WRITE('A=', A); { → A=165 }
III. Formatage de l'affichage des résultats
a. Affichage des entiers
write(valeur_entiere : n);
Affiche la valeur entière dans une colonne de n caractères alignée à droite. Si la valeur comporte plus que n chiffres, l'affichage commence par la gauche (Pascal ajuste automatiquement).
Exemple : avec n := 421;
| Instruction | Position 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
WRITELN(n:6); | 4 | 2 | 1 | |||
WRITELN(n:2); | 4 | 2 | 1 |
b. Affichage des réels
WRITELN(variable : champ : chiffres_significatifs);
write(valeur_reelle);— affiche le nombre en notation scientifique (x.xxxxxxxxxxE+xxprécédé d'un espacement).write(valeur_reelle : np);— affiche le nombre en notation scientifique surnppositions, précédé d'un espacement.write(valeur_reelle : np : nd);— affiche le nombre surnppositions avecnddécimales.
Exemple : avec x := 43.51;
| Instruction | Résultat affiché |
|---|---|
WRITELN(x); | 4.3510000000E+01 |
WRITELN(x:6); | 4.4E+01 |
WRITELN(x:10); | 4.351E+01 |
WRITELN(x:7:3); | 43.510 |
WRITELN(x:4:4); | 43.5100 |
WRITELN(x:2:1); | 43.5 |
c. Affichage des chaînes de caractères
write(chaine : n);
Affiche la chaîne sur n positions : insertion d'espaces à gauche s'il y a moins de n caractères, sinon ajustement automatique.
Exemple : avec ch := 'Bonjour';
| Instruction | Position 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
WRITELN(ch:6); | B | o | n | j | o | u | r | |
WRITELN(ch:8); | B | o | n | j | o | u | r |
d. Affichage des caractères
write(car : n);
Affiche le caractère à la position n (avec insertion d'espaces à gauche).
Exemple : avec car := 'a';
| Instruction | Le caractère a apparaît en position … |
|---|---|
WRITELN(car:6); | 6 |
WRITELN(car:8); | 8 |
Exercices
On déclare :
VAR var1, var2, var3, var4, var5 : REAL;
avec les valeurs :
var1vaut1.2var2vaut0.00089var3vaut45var4vaut10095.095var5vaut2.7182818281
Préciser le résultat affiché pour chacune des instructions suivantes :
WRITE(var1 : 8 : 4);WRITE(var2 : 8 : 4);WRITE(var3 : 4 : 1);WRITE(var4 : 3 : 1);WRITE(var5 : 3 : 1);WRITE(var1 : 6 : 4);WRITE(var2 : 10 : 6);WRITE(var3 : 10 : 6);WRITE(var4 : 7 : 5);WRITE(var5 : 10 : 4);
Voir le corrigé
| # | Instruction | Résultat affiché |
|---|---|---|
| 1 | WRITE(var1 : 8 : 4); | 1.2000 |
| 2 | WRITE(var2 : 8 : 4); | 0.0009 |
| 3 | WRITE(var3 : 4 : 1); | 45.0 |
| 4 | WRITE(var4 : 3 : 1); | 10095.1 |
| 5 | WRITE(var5 : 3 : 1); | 2.7 |
| 6 | WRITE(var1 : 6 : 4); | 1.2000 |
| 7 | WRITE(var2 : 10 : 6); | 0.000890 |
| 8 | WRITE(var3 : 10 : 6); | 45.000000 |
| 9 | WRITE(var4 : 7 : 5); | 10095.09500 |
| 10 | WRITE(var5 : 10 : 4); | 2.1783 |
Écrire un programme en Pascal qui lit 2 nombres entiers positifs inférieurs à 999, puis affiche à l'écran leur multiplication et leur division sous la forme suivante :
120 130 : 11
x 11 9 :....
........ : 11
= 1320 :
Voir le corrigé
program ex9page69;
uses wincrt;
var
a, b : word;
begin
writeln('Donner 2 entiers positifs <999 :');
write('a='); readln(a);
write('b='); readln(b);
writeln;
writeln(a:6);
writeln(' x ', b:3);
writeln('........');
writeln('= ', a*b:4);
writeln; writeln;
writeln(a:3, ' : ', b);
writeln(a mod b : 3, ' :....');
writeln(': ':6, a div b);
writeln(': ':6);
end.
Écrire un algorithme qui saisit un temps exprimé en secondes puis le convertit en jours, heures, minutes et secondes.
Voir le corrigé
Sachant que :
- 1 jour = 86 400 s
- 1 heure = 3 600 s
- 1 minute = 60 s
Algorithme :
0) Début conversion
1) Écrire("Donner un temps en seconde : "), Lire(temps)
2) jours ← temps div 86400
3) heures ← (temps mod 86400) div 3600
4) minutes ← (temps mod 3600) div 60
5) secondes ← temps mod 60
6) Écrire("jours=", jours, " heures=", heures,
" minutes=", minutes, " secondes=", secondes)
7) Fin conversion
Écrire la préanalyse, l'analyse, l'algorithme et le programme Pascal d'un programme qui permet de saisir un entier de 3 chiffres puis affiche la somme de ces 3 chiffres.
Exemple : pour 123, on doit obtenir S = 1 + 2 + 3 = 6.
À résoudre avec deux méthodes :
- En utilisant les opérateurs arithmétiques
modetdiv. - En utilisant les procédures de conversion
convch(Pascal :str) etvaleur(Pascal :val).
Voir le corrigé
Méthode 1 — Avec mod et div
Préanalyse :
- But : afficher la somme des 3 chiffres d'un entier
- Données :
n - Formules :
c ← n div 100d ← (n mod 100) div 10u ← n mod 10s ← u + d + c
Analyse :
Nom : Somme
Résultat = Écrire(" la somme de 3 chiffres est = ", s)
s ← u + d + c
c ← n div 100
d ← (n mod 100) div 10
u ← n mod 10
n = donnée("Donner un entier composé de 3 chiffres :")
Fin Somme
T.D.O (Tableau de Déclaration des Objets) :
| Objet | Type / Nature | Rôle |
|---|---|---|
| N | Entier | Entier à saisir |
| U | Entier | Unité |
| D | Entier | Dizaine |
| C | Entier | Centaine |
| S | Entier | Somme des 3 chiffres |
Algorithme :
0) Début Somme
1) Écrire("Donner un entier composé de 3 chiffres :"), Lire(n)
2) c ← n div 100
3) d ← (n mod 100) div 10
4) u ← n mod 10
5) s ← u + d + c
6) Écrire(" la somme de 3 chiffres est = ", s)
7) Fin Somme
Traduction en Pascal :
Program somme;
uses wincrt;
var
n, u, d, c, s : integer;
Begin
writeln('Donner un entier composé de 3 chiffres :');
readln(n);
c := n div 100;
d := (n mod 100) div 10;
u := n mod 10;
s := u + d + c;
writeln(' la somme de 3 chiffres est = ', s);
end.
Méthode 2 — Avec convch et valeur
Préanalyse :
- But : afficher la somme des 3 chiffres d'un entier
- Données :
n - Formules :
convch(n, ch)valeur(ch[1], c, e),valeur(ch[2], d, e),valeur(ch[3], u, e)s ← u + d + c
Analyse :
Nom : Somme
Résultat = Écrire(" la somme de 3 chiffres est = ", s)
s ← u + d + c
valeur(ch[1], c, e)
valeur(ch[2], d, e)
valeur(ch[3], u, e)
convch(n, ch)
n = donnée("Donner un entier composé de 3 chiffres :")
Fin Somme
T.D.O :
| Objet | Type / Nature |
|---|---|
| n, u, d, c, s | Entier |
| ch | Chaîne de 3 caractères |
| e | Entier |
Algorithme :
0) Début Somme
1) Écrire("Donner un entier composé de 3 chiffres :"), Lire(n)
2) convch(n, ch)
3) valeur(ch[1], c, e)
4) valeur(ch[2], d, e)
5) valeur(ch[3], u, e)
6) s ← u + d + c
7) Écrire(" la somme de 3 chiffres est = ", s)
8) Fin Somme
Traduction en Pascal :
Program somme;
uses wincrt;
var
n, u, d, c, s, e : integer;
ch : string[3];
Begin
writeln('Donner un entier composé de 3 chiffres :');
readln(n);
str(n, ch);
val(ch[1], c, e);
val(ch[2], d, e);
val(ch[3], u, e);
s := u + d + c;
writeln(' la somme de 3 chiffres est = ', s);
end.
Écrire un programme Pascal qui permet de calculer la surface d'un cercle.
Rappel : S = π × r².
Voir le corrigé
program surface;
uses wincrt;
const
pi = 3.14;
var
r, s : real;
begin
writeln('Donner le rayon du cercle =');
readln(r);
s := pi * r * r;
writeln('La surface du cercle est = ', s:7:3);
end.
Écrire en Pascal le programme intitulé DATE, qui initialise la date maintenue par le système d'exploitation, en utilisant la procédure SetDate(…) de la bibliothèque WinDos.
NB.
- La syntaxe de la procédure est :
procedure SetDate(Annee, Mois, Jour); - Les paramètres valides sont : 1980..2099 pour
Annee, 1..12 pourMoiset 1..31 pourJour. Si la date est invalide, la demande est ignorée.
Voir le corrigé
PROGRAM DATE;
USES WinCrt, WinDos;
VAR
a, m, j : WORD;
BEGIN
WRITE('Entrez l''année : '); READLN(a);
WRITE('Entrez le mois : '); READLN(m);
WRITE('Entrez le jour : '); READLN(j);
SetDate(a, m, j);
END.
Pour créer un répertoire, on utilise la procédure prédéfinie MkDir(Path : string) de l'unité DOS.
Écrire un programme en Pascal qui permet de créer un répertoire : le nom du répertoire et le chemin sont saisis au clavier.
Exemple : MkDir('C:\TEST'); permet de créer le répertoire TEST sous la racine C:.
Voir le corrigé
program creer_repertoire;
uses wincrt, dos;
var
chemin : string;
begin
write('Entrer le chemin complet du répertoire à créer : ');
readln(chemin);
MkDir(chemin);
writeln('Répertoire ', chemin, ' créé avec succès.');
end.
Quiz : actions élémentaires
Lire, écrire, affecter — vérifiez que vous maîtrisez ces 3 briques essentielles.
Quiz (5 questions)
Pour faire saisir un entier `n` par l'utilisateur, on écrit :
Que fait `Ecrire("Bonjour ", nom)` si `nom` contient `"Sami"` ?
Quelle est la **différence** entre `Ecrire("x")` et `Ecrire(x)` ?
Quelle est la valeur de `a` à la fin de : ``` a ← 5 a ← a + 3 a ← a * 2 ```
Quel **type** doit-on déclarer pour une variable qui contient `'A'` ?