Aller au contenu principal
BacInfo

Ch. 02 · Leçon 1

Les actions élémentaires simples

60 minanalyse · pascal

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

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)

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)

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;

InstructionPosition 123456
WRITELN(n:6);421
WRITELN(n:2);421

b. Affichage des réels

WRITELN(variable : champ : chiffres_significatifs);
  • write(valeur_reelle); — affiche le nombre en notation scientifique (x.xxxxxxxxxxE+xx précédé d'un espacement).
  • write(valeur_reelle : np); — affiche le nombre en notation scientifique sur np positions, précédé d'un espacement.
  • write(valeur_reelle : np : nd); — affiche le nombre sur np positions avec nd décimales.

Exemple : avec x := 43.51;

InstructionRé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';

InstructionPosition 12345678
WRITELN(ch:6);Bonjour
WRITELN(ch:8);Bonjour

d. Affichage des caractères

write(car : n);

Affiche le caractère à la position n (avec insertion d'espaces à gauche).

Exemple : avec car := 'a';

InstructionLe caractère a apparaît en position …
WRITELN(car:6);6
WRITELN(car:8);8

Exercices

Exercice 8
Formatage de l'affichage (page 69)

On déclare :

VAR var1, var2, var3, var4, var5 : REAL;

avec les valeurs :

  • var1 vaut 1.2
  • var2 vaut 0.00089
  • var3 vaut 45
  • var4 vaut 10095.095
  • var5 vaut 2.7182818281

Préciser le résultat affiché pour chacune des instructions suivantes :

  1. WRITE(var1 : 8 : 4);
  2. WRITE(var2 : 8 : 4);
  3. WRITE(var3 : 4 : 1);
  4. WRITE(var4 : 3 : 1);
  5. WRITE(var5 : 3 : 1);
  6. WRITE(var1 : 6 : 4);
  7. WRITE(var2 : 10 : 6);
  8. WRITE(var3 : 10 : 6);
  9. WRITE(var4 : 7 : 5);
  10. WRITE(var5 : 10 : 4);
Voir le corrigé
#InstructionRésultat affiché
1WRITE(var1 : 8 : 4); 1.2000
2WRITE(var2 : 8 : 4); 0.0009
3WRITE(var3 : 4 : 1);45.0
4WRITE(var4 : 3 : 1);10095.1
5WRITE(var5 : 3 : 1);2.7
6WRITE(var1 : 6 : 4);1.2000
7WRITE(var2 : 10 : 6); 0.000890
8WRITE(var3 : 10 : 6); 45.000000
9WRITE(var4 : 7 : 5);10095.09500
10WRITE(var5 : 10 : 4); 2.1783
Exercice 9
Multiplication et division formatées (page 69)

É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.
Exercice 4
Conversion de secondes (page 50)

É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
Exercice A
Somme des chiffres d'un entier de 3 chiffres

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

  1. En utilisant les opérateurs arithmétiques mod et div.
  2. En utilisant les procédures de conversion convch (Pascal : str) et valeur (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 100
    • d ← (n mod 100) div 10
    • u ← n mod 10
    • s ← 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) :

ObjetType / NatureRôle
NEntierEntier à saisir
UEntierUnité
DEntierDizaine
CEntierCentaine
SEntierSomme 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 :

ObjetType / Nature
n, u, d, c, sEntier
chChaîne de 3 caractères
eEntier

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.
Exercice B
Surface d'un cercle

É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.
Exercice 10
Activité 10 — Initialiser la date système (page 67)

É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 pour Mois et 1..31 pour Jour. 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.
Exercice 6
Création d'un répertoire (page 68)

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.
Vérification des acquis

Quiz : actions élémentaires

Lire, écrire, affecter — vérifiez que vous maîtrisez ces 3 briques essentielles.

Quiz (5 questions)

1

Pour faire saisir un entier `n` par l'utilisateur, on écrit :

2

Que fait `Ecrire("Bonjour ", nom)` si `nom` contient `"Sami"` ?

3

Quelle est la **différence** entre `Ecrire("x")` et `Ecrire(x)` ?

4

Quelle est la valeur de `a` à la fin de : ``` a ← 5 a ← a + 3 a ← a * 2 ```

5

Quel **type** doit-on déclarer pour une variable qui contient `'A'` ?

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.