Passer au contenu

Programmation

Informatique IGCSE · Sujet 8

Leçon vidéo pour ce sujet Ouvrir la page vidéo
13:11

Programmation

Voici un court programme. Il lit cinq notes de test et affiche le total. Les cinq notes sont huit, neuf, sept, six et dix, donc le total devrait être quarante. Regardez…

Narration en anglais · sous-titres en anglais et en 中文 au choix

8.1

Variables and constants

Programme
Les candidats doivent être capables de : Notes et orientations
1 Déclarer et utiliser des variables et des constantes
2 Comprendre et utiliser les types de données de base • Y compris : – entier – réel – char – chaîne – Booléen
3 Comprendre et utiliser les entrées et les sorties
4 (a) Comprendre et utiliser le concept de séquence
(b) Comprendre et utiliser le concept de sélection • Y compris : – instructions IF – instructions CASE
(c) Comprendre et utiliser le concept d'itération • Y compris : – boucles contrôlées par compteur – boucles à précondition – boucles à postcondition
(d) Comprendre et utiliser les concepts d'accumulation et de comptage
(e) Comprendre et utiliser le concept de gestion des chaînes • Y compris : – longueur – sous-chaîne – majuscules – minuscules • Le premier caractère de la chaîne peut être à la position zéro ou un
(f) Comprendre et utiliser les opérateurs arithmétiques, relationnels et logiques • Arithmétiques, limités à : – + – – – / – * – ^ (élévé à la puissance) – MOD – DIV • Relationnels, limités à : – = – < – <= – > – >= – <> (différent de) • Logiques, limités à : – AND – OR – NOT
5 Comprendre et utiliser les instructions imbriquées • Y compris la sélection imbriquée et l'itération imbriquée • Les candidats ne seront pas tenus d'écrire plus de trois niveaux d'instructions imbriquées
6 (a) Comprendre ce que signifient les procédures, les fonctions et les paramètres (b) Définir et utiliser des procédures et des fonctions, avec ou sans paramètres (c) Comprendre et utiliser les variables locales et globales • Les procédures et les fonctions peuvent avoir jusqu'à trois paramètres
7 Comprendre et utiliser les routines de bibliothèque • Y compris : – MOD – DIV – ROUND – RANDOM
8 Comprendre comment créer un programme maintenable • Y compris l'utilisation appropriée de : – identifiants significatifs – la fonction de commentaires fournie par le langage de programmation – procédures et fonctions – commentaire pertinent et approprié de la syntaxe • Utiliser des identifiants significatifs pour : – variables – constantes – tableaux – procédures et fonctions

Source : Programme Cambridge International

Une variable est un espace nommé contenant une valeur qui peut changer pendant l'exécution du programme. Une constante est un espace nommé dont la valeur est fixée et ne change pas.

A variable named age holding the value 16
Une variable est un espace nommé dont la valeur peut changer
Lines of program code on a screen
Variables et constantes sont des espaces nommés pour des valeurs, définis dans le code du programme

Vous devez les déclarer (donner leur nom et leur type) avant de les utiliser :

DECLARE Score : INTEGER
DECLARE Name : STRING
CONSTANT Pi ← 3.142
Two RAM memory modules
Pendant l'exécution d'un programme, ses variables sont stockées dans la mémoire de l'ordinateur (RAM)

Utilisez une constante pour une valeur qui ne change jamais (comme Pi), afin qu'elle soit définie à un seul endroit et facile à lire.

Explorer

Variables et affectation

Parcourez les lignes et regardez chaque variable prendre sa nouvelle valeur.

Vocabulaire Entrainer
English Français
variable/ˈveərɪəbl/ variable
constant/ˈkɒnstənt/ constante
declare/dɪˈkleə/ déclarer
integer/ˈɪntɪdʒə/ entier
string/strɪŋ/ chaîne
8.1

Types de données

Un type de données indique quel type de valeur contient une variable. Vous devez connaître cinq types de base.

Types de données : entier (7), réel (3.5), caractère ('A'), chaîne (« bonjour »), booléen (vrai/faux)
Les types de données de base : integer, real, char, string et boolean
Type Holds Example
entier un nombre sans décimales 42, -7
réel un nombre comportant une virgule décimale 3.14, -0.5
caractère un seul caractère 'A', '?'
chaîne une séquence de caractères "Hello"
Booléen l'une de deux valeurs TRUE ou FALSE
Vocabulaire Entrainer
English Français
data type/ˈdeɪtə taɪp/ type de données
real/rɪəl/ réel
char/tʃɑː/ caractère
Boolean/ˈbuːlɪən/ valeur booléenne
8.1

Entrée et sortie

Entrée lit une valeur auprès de l'utilisateur. Sortie affiche une valeur à l'écran.

OUTPUT "What is your name?"
INPUT Name
OUTPUT "Hello ", Name
Vocabulaire Entrainer
English Français
input/ˈɪnpʊt/ entrée
output/ˈaʊtpʊt/ sortie
8.1

Les trois structures de base

Chaque programme est construit à partir de trois structures de contrôle.

Trois petits organigrammes : séquence (boîtes en ligne), sélection (un test se divisant en deux branches) et itération (un test avec un corps qui boucle)
Les trois structures de contrôle : la séquence exécute les étapes dans l'ordre, la sélection choisit une branche, l'itération répète un corps

Sequence

Séquence signifie que les étapes s'exécutent les unes après les autres, par ordre, de haut en bas.

INPUT Length
INPUT Width
Area ← Length * Width
OUTPUT Area

Selection

Sélection choisit quelles étapes exécuter, selon une condition. Utilisez une instruction IF, ou une instruction CASE lorsqu'il y a plusieurs choix.

IF Score >= 50
  THEN
    OUTPUT "Pass"
  ELSE
    OUTPUT "Fail"
ENDIF
CASE OF Grade
    'A' : OUTPUT "Excellent"
    'B' : OUTPUT "Good"
    OTHERWISE OUTPUT "Keep trying"
ENDCASE

Iteration

Itération (boucle) répète des étapes. Il existe trois types.

Une boucle comptée se répète un nombre fixe de fois :

FOR I ← 1 TO 5
    OUTPUT "Hello"
NEXT I

Une boucle à précondition vérifie la condition avant chaque répétition, elle peut donc ne jamais s'exécuter :

WHILE Answer <> "stop" DO
    INPUT Answer
ENDWHILE

Une boucle à postcondition vérifie la condition après chaque répétition, elle s'exécute donc toujours au moins une fois :

REPEAT
    INPUT Password
UNTIL Password = "secret"
Deux organigrammes de boucles : WHILE teste la condition avant le corps ; REPEAT exécute d'abord le corps puis teste
Une boucle précondition (WHILE) teste avant le corps, elle peut donc s'exécuter zéro fois ; une boucle postcondition (REPEAT) teste après, elle s'exécute donc au moins une fois
Explorer

Comment une structure IF … ELSE IF décide

Les conditions sont testées de haut en bas ; la PREMIÈRE qui est vraie s'exécute et les autres sont ignorées. Faites glisser la note et regardez quelle branche s'allume.

Explorer

Sélection

Modifiez la valeur et observez quelle branche s'exécute — la sélection en action.

Vocabulaire Entrainer
English Français
sequence/ˈsiːkwəns/ séquence
selection/sɪˈlekʃn/ sélection
iteration/ˌɪtəˈreɪʃn/ itération
loop/luːp/ boucle
count-controlled loop/kaʊnt kənˈtrəʊld luːp/ boucle contrôlée par compteur
pre-condition loop/priː kənˈdɪʃn luːp/ boucle à condition préalable
post-condition loop/pəʊst kənˈdɪʃn luːp/ boucle à condition postérieure
length/leŋθ/ longueur
8.1

Totaliser et compter

  • accumulation — additionner continuellement des valeurs à un total courant : Total ← Total + Value.
  • comptage — ajouter 1 à un compteur à chaque itération : Count ← Count + 1.
Count ← Count + 1 fait passer le compteur par les valeurs 0, 1, 2, 3 ; Total ← Total + Value fait passer le total par les valeurs 0, 4, 11, 16 pour les entrées 4, 7 et 5
Un compteur augmente de 1 ; un total construit une somme cumulée
Tableau de traçage suivant une boucle sur les valeurs 4, 7 et 5 : total passe à 0, 4, 11, 16 tandis que count passe à 0, 1, 2, 3
Une table de traçage suit une boucle d'addition et de comptage itération par itération
Total ← 0
FOR I ← 1 TO 10
    INPUT Mark
    Total ← Total + Mark
NEXT I
OUTPUT Total

Worked example. Un programme doit lire 5 notes, puis afficher le total et la moyenne.

Total ← 0
FOR I ← 1 TO 5
    INPUT Mark
    Total ← Total + Mark
NEXT I
Average ← Total / 5
OUTPUT Total, Average

Deux lignes transportent les notes. Total ← 0 doit être placé avant la boucle : si vous le mettez à l'intérieur, le total est réinitialisé à chaque passage, donc le programme n'affiche que la dernière note. Et Average ← Total / 5 doit être placé après la boucle, car le total n'est pas complet tant que toutes les notes n'ont pas été ajoutées. Initialiser avant, calculer après — cet ordonnancement est ce que la question teste réellement.

Vocabulaire Entrainer
English Français
totalling/ˈtəʊtəlɪŋ/ accumulation
counting/ˈkaʊntɪŋ/ comptage
remainder/rɪˈmeɪndə/ reste
nested statement/ˈnestɪd ˈsteɪtmənt/ instruction imbriquée
8.1

Opérateurs

Arithmetic operators

Opérateur Sens
+ - * / addition, soustraction, multiplication, division
^ élevé à la puissance
MOD le reste après une division
DIV la partie entière d'une division

Par exemple, 17 MOD 5 est 2, et 17 DIV 5 est 3.

Relational operators

Ces opérateurs comparent deux valeurs et donnent un résultat booléen : =, <, <=, >, >=, et <> (différent de).

Logical operators

Ces opérateurs joignent des conditions : AND (les deux doivent être vraies), OR (au moins une doit être vraie), NOT (inverse vrai/faux).

Trois familles d'opérateurs : les opérateurs arithmétiques comme plus et fois donnent un nombre, les opérateurs relationnels comme inférieur à comparent et retournent vrai ou faux, les opérateurs logiques ET OUI NON joignent des conditions
Les trois familles d'opérateurs : arithmétiques, relationnels et logiques
IF Age >= 13 AND Age <= 19
  THEN
    OUTPUT "Teenager"
ENDIF
Explorer

SUBSTRING : prendre une partie d'une chaîne

Le premier caractère est à la position 1. SUBSTRING(Mot, Début, Longueur) prend Length caractères commençant à Start — faites glisser les deux poignées et lisez l'appel qu'il construit.

8.1

Traitement des chaînes

Une chaîne est composée de caractères. Opérations utiles :

La chaîne Ada Lovelace dans douze cases numérotées de 1 à 12, avec l’espace à la position 4 et les huit caractères à partir de la position 5 mis en évidence sous la forme SUBSTRING(FullName, 5, 8)
Les positions commencent à 1 et l’espace est un caractère : le nom de famille correspond aux 8 caractères à partir de la position 5
  • longueur — le nombre de caractères dans la chaîne ;
  • sous-chaîne — une partie plus petite extraite de la chaîne ;
  • majuscule — convertir les lettres en majuscules ;
  • minuscule — convertir les lettres en minuscules.
name ← "Computer"
OUTPUT LENGTH(name)          // 8
OUTPUT SUBSTRING(name, 1, 4) // "Comp"
OUTPUT UCASE(name)           // "COMPUTER"
OUTPUT LCASE(name)           // "computer"

(Le premier caractère peut être compté comme position 0 ou position 1, selon le langage.)

En pseudo-code d'examen, le premier caractère est à la position 1, et SUBSTRING(name, start, length) extrait length caractères à partir de start.

Exemple résolu. Afficher le nom de famille à partir d'un nom complet tel que "Ada Lovelace".

FullName ← "Ada Lovelace"
Position ← 0
FOR I ← 1 TO LENGTH(FullName)
    IF SUBSTRING(FullName, I, 1) = " "
      THEN
        Position ← I
    ENDIF
NEXT I
OUTPUT SUBSTRING(FullName, Position + 1, LENGTH(FullName) - Position)
  1. La longueur de LENGTH(FullName) est de 12 (l'espace compte comme un caractère).
  2. La boucle vérifie un caractère à la fois ; l'espace est à la position 4, donc Position est 4.
  3. Le nom de famille commence à la position 5 et contient $12 - 4 = 8$ caractères : SUBSTRING(FullName, 5, 8) correspond à "Lovelace".
Explorer

SUBSTRING : prendre une partie d'une chaîne

Le premier caractère est à la position 1. SUBSTRING(Mot, Début, Longueur) prend Length caractères commençant à Start — faites glisser les deux poignées et lisez l'appel qu'il construit.

Vocabulaire Entrainer
English Français
substring/ˈsʌbstrɪŋ/ sous-chaîne
upper case/ˈʌpə keɪs/ majuscules
lower case/ˈləʊə keɪs/ minuscules
8.1

Instructions imbriquées

Une instruction imbriquée est une structure de contrôle placée à l'intérieur d'une autre. Vous pouvez imbriquer des sélections et des itérations.

FOR I ← 1 TO 3
    IF MOD(I, 2) = 0
      THEN
        OUTPUT I, " is even"
      ELSE
        OUTPUT I, " is odd"
    ENDIF
NEXT I

Vous n'aurez pas à écrire plus de trois niveaux d'imbriquation.

8.1

Procédures et fonctions

Pour éviter de répéter du code, vous pouvez diviser un programme en blocs nommés.

  • Une procédure est un bloc de code nommé qui effectue une tâche. Vous l'appellez avec CALL.
  • Une fonction est semblable à une procédure, mais elle retourne une valeur vers l'endroit où elle a été appelée.

Un paramètre est une entrée nommée dans une procédure ou une fonction ; un appel fournit sa valeur. Les questions d'examen utilisent jusqu'à trois paramètres.

PROCEDURE Greet(PersonName : STRING)
    OUTPUT "Hello ", PersonName
ENDPROCEDURE

CALL Greet("Sam")
FUNCTION Square(N : INTEGER) RETURNS INTEGER
    RETURN N * N
ENDFUNCTION

Answer ← Square(5)   // answer is 25

Exemple résolu. Écrire une fonction qui retourne le plus grand de deux nombres, et l'utiliser.

FUNCTION Larger(A : INTEGER, B : INTEGER) RETURNS INTEGER
    DECLARE Result : INTEGER
    IF A > B
      THEN
        Result ← A
      ELSE
        Result ← B
    ENDIF
    RETURN Result
ENDFUNCTION

Biggest ← Larger(12, 30)
OUTPUT Larger(Biggest, 25)

Larger(12, 30) retourne 30, qui est stocké dans Biggest ; Larger(30, 25) retourne 30, qui est affiché. A, B et Result sont locaux : ils n'existent que pendant l'exécution de la fonction. Le résultat d'une fonction doit être utilisé, par exemple dans une affectation ou une sortie ; une procédure s'exécute sur sa propre ligne avec CALL et ne renvoie rien.

Larger(12, 30) renvoie 30 dans Biggest ; Larger(Biggest, 25) est appelée avec A = 30 et B = 25 et renvoie 30, qui est affiché
Chaque appel de fonction renvoie une valeur qui doit être utilisée : stockée dans Biggest, puis affichée

Variables locales et globales

  • Une variable locale est déclarée à l'intérieur d'une procédure ou d'une fonction. Elle ne peut y être utilisée.
  • Une variable globale est déclarée dans le programme principal. Elle peut être utilisée partout.

Les variables locales sont plus sûres, car elles ne peuvent pas être modifiées par erreur depuis une autre partie du programme.

Vocabulaire Entrainer
English Français
procedure/prəˈsiːdʒə/ procédure
function/ˈfʌŋkʃn/ fonction
parameter/pəˈræmɪtə/ paramètre
local variable/ˈləʊkl ˈveərɪəbl/ variable locale
global variable/ˈɡləʊbl ˈveərɪəbl/ variable globale
library routine/ˈlaɪbrəri ruːˈtiːn/ routine de bibliothèque
maintainable/meɪnˈteɪnəbl/ maintenable
meaningful identifiers/ˈmiːnɪŋfl aɪˈdentɪfaɪəz/ identificateurs significatifs
comments/ˈkɒments/ commentaire
8.1

Fonctions de bibliothèque

Une routine de bibliothèque est un bloc de code prêt à l'emploi que vous pouvez utiliser. Vous devez connaître celles-ci :

Routine Ce qu'elle fait
MOD donne le reste d'une division
DIV donne la partie entière d'une division
ROUND arrondit un nombre réel au nombre de décimales spécifié
RANDOM donne un nombre aléatoire
Appel Résultat
MOD(17, 5) 2
DIV(17, 5) 3
ROUND(3.14159, 2) 3.14
ROUND(7.46, 1) 7.5
RANDOM() un nombre réel aléatoire compris entre 0 et 1

MOD(Number, 2) = 0 teste si un nombre est pair ; DIV(Seconds, 60) et MOD(Seconds, 60) convertissent 135 secondes en 2 minutes et 15 secondes.

8.1

Écrire un programme maintenable

Un programme maintenable est facile à lire et à modifier pour les autres plus tard. Pour en créer un :

  • utiliser des identifiants significatifs — noms clairs pour les variables, constantes, tableaux, procédures et fonctions (totalScore, pas x);
  • ajoutez des commentaires pour expliquer ce que font les parties du code ;
  • utilisez des procédures et des fonctions pour diviser le travail en petits blocs.
8.2

Tableaux

Programme
Les candidats doivent être capables de : Notes et orientations
1 Déclarer et utiliser des tableaux à une dimension (1D) et à deux dimensions (2D)
2 Comprendre l'utilisation des tableaux • Y compris l'utilisation de variables comme indices dans les tableaux
3 Écrire des valeurs dans un tableau et lire des valeurs à partir d'un tableau en utilisant l'itération • Le premier indice peut être zéro ou un • Y compris l'itération imbriquée

Source : Programme Cambridge International

Un tableau est une seule variable qui contient plusieurs valeurs du même type, identifiées par un index (un numéro de position).

Tableaux à une dimension

Un tableau à une dimension (1D) est comme une liste unique.

DECLARE Scores : ARRAY[1:5] OF INTEGER
Scores[1] ← 90
Scores[2] ← 75
OUTPUT Scores[1]
Cinq cases alignées horizontalement étiquetées de l'indice 1 à 5, contenant des valeurs, avec la valeur à l'indice 2 surlignée comme étant 75
Un tableau 1D contient plusieurs valeurs dans une seule variable ; chacune est identifiée par son indice

Vous pouvez utiliser une boucle pour remplir ou lire un tableau :

FOR I ← 1 TO 5
    INPUT Scores[I]
NEXT I

Exemple résolu. Trouvez la note la plus élevée dans Scores et sa position. Scores contient 90, 75, 98, 61, 98.

DECLARE Scores : ARRAY[1:5] OF INTEGER
Scores[1] ← 90
Scores[2] ← 75
Scores[3] ← 98
Scores[4] ← 61
Scores[5] ← 98

Highest ← Scores[1]
Place ← 1
FOR I ← 2 TO 5
    IF Scores[I] > Highest
      THEN
        Highest ← Scores[I]
        Place ← I
    ENDIF
NEXT I
OUTPUT "Highest ", Highest, " at position ", Place
I Scores[I] > Highest? Highest Place
début 90 1
2 75 non 90 1
3 98 oui 98 3
4 61 non 98 3
5 98 non 98 3

La sortie est Highest 98 at position 3. Commencer Highest au premier élément, et non à 0, permet également de gérer les valeurs négatives ; avec >= au lieu de >, le dernier 98 serait trouvé (position 5).

Tableaux à deux dimensions

Un tableau à deux dimensions (2D) est comme un tableau avec des lignes et des colonnes. Il utilise deux indices.

DECLARE Grid : ARRAY[1:3, 1:3] OF INTEGER
Grid[1, 1] ← 5
Grid[2, 3] ← 8
Une grille de 3 par 3 avec des lignes et des colonnes numérotées ; la cellule à la ligne 2, colonne 3 est surlignée et étiquetée comme ligne 2 colonne 3
Un tableau 2D est un tableau ; chaque valeur est identifiée par deux indices, [ligne, colonne]

Vous lisez un tableau 2D avec une boucle à l'intérieur d'une boucle (itération imbriquée).

Exemple résolu. Marks[1:3, 1:2] contient deux notes de test pour chacun des trois élèves (lignes). Affichez le total de chaque élève.

Colonne 1 Colonne 2
Ligne 1 12 15
Ligne 2 9 11
Ligne 3 14 18
DECLARE Marks : ARRAY[1:3, 1:2] OF INTEGER
Marks[1, 1] ← 12
Marks[1, 2] ← 15
Marks[2, 1] ← 9
Marks[2, 2] ← 11
Marks[3, 1] ← 14
Marks[3, 2] ← 18

FOR Row ← 1 TO 3
    Total ← 0
    FOR Col ← 1 TO 2
        Total ← Total + Marks[Row, Col]
    NEXT Col
    OUTPUT "Student ", Row, ": ", Total
NEXT Row

La boucle externe sélectionne un élève ; la boucle interne ajoute ses deux notes. La sortie est 27, 20 et 32. Total ← 0 doit être placé à l'intérieur de la boucle externe : s'il était placé avant, les totaux continueraient à 27, 47 et 79.

Un programme complet pour un scénario

La dernière question de l’épreuve 2 vous demande d’écrire un programme complet pour un scénario, en utilisant des tableaux. Des points sont attribués pour chaque partie demandée : planifiez donc les parties avant d’écrire.

Exemple corrigé. Une station météorologique enregistre la température à midi pour chacun des 7 jours d’une semaine. Écrivez un programme qui :

  • saisit les 7 températures dans un tableau, en acceptant uniquement les valeurs de −20 à 50 ;
  • affiche la température moyenne de la semaine ;
  • affiche le nombre de jours au-dessus de cette moyenne et le jour le plus chaud.

Plan. (1) déclarer le tableau et les variables ; (2) une boucle de 7 saisies, chacune avec une boucle de validation ; (3) un total cumulé, puis la moyenne ; (4) une deuxième boucle pour compter les jours au-dessus de la moyenne et trouver la température la plus élevée ; (5) des sorties accompagnées de messages.

DECLARE Temps : ARRAY[1:7] OF REAL
DECLARE Day, AboveCount, HotDay : INTEGER
DECLARE Total, Average : REAL

Total ← 0
FOR Day ← 1 TO 7
    OUTPUT "Enter the temperature for day ", Day
    INPUT Temps[Day]
    WHILE Temps[Day] < -20 OR Temps[Day] > 50 DO
        OUTPUT "Invalid: enter a value from -20 to 50"
        INPUT Temps[Day]
    ENDWHILE
    Total ← Total + Temps[Day]
NEXT Day

Average ← Total / 7
OUTPUT "Average temperature: ", ROUND(Average, 1)

AboveCount ← 0
HotDay ← 1
FOR Day ← 1 TO 7
    IF Temps[Day] > Average
      THEN
        AboveCount ← AboveCount + 1
    ENDIF
    IF Temps[Day] > Temps[HotDay]
      THEN
        HotDay ← Day
    ENDIF
NEXT Day

OUTPUT "Days above average: ", AboveCount
OUTPUT "Hottest day: ", HotDay, " at ", Temps[HotDay]

Pourquoi cette réponse rapporte des points. Chaque partie demandée est présente et facile à trouver : la boucle de validation redemande la saisie jusqu’à ce que la valeur soit dans la plage autorisée (un IF ne vérifierait qu’une seule fois) ; la valeur est ajoutée au total après sa validation ; la moyenne est calculée après la boucle, et non à l’intérieur ; le compteur commence à 0 et le jour le plus chaud est initialisé au jour 1, ce qui garantit qu’il correspond toujours à une mesure réelle. Les jours au-dessus de la moyenne nécessitent une deuxième boucle, car la moyenne n’est connue qu’après la saisie de toutes les valeurs.

Erreurs fréquentes. Diviser par 7 à l’intérieur de la première boucle ; comparer avec la moyenne avant qu’elle soit calculée ; initialiser la valeur maximale à 0 (ce qui est incorrect si toutes les températures sont négatives) ; et afficher des nombres sans message indiquant leur signification.

Explorer

Tableaux

Choisissez une ligne et une colonne pour lire une cellule. Les tableaux de Cambridge comptent à partir de 1, et un élément en 2D s'écrit avec UNE paire de crochets — Grid[2, 3].

Vocabulaire Entrainer
English Français
array/əˈreɪ/ tableau
index/ˈɪndeks/ indice
one-dimensional (1D) array/wʌn daɪˈmenʃənl əˈreɪ/ tableau unidimensionnel (1D)
two-dimensional (2D) array/tuː daɪˈmenʃənl əˈreɪ/ tableau bidimensionnel (2D)
8.3

Gestion des fichiers

Programme
Les candidats doivent être capables de : Notes et orientations
1 Comprendre l'objectif du stockage des données dans un fichier utilisé par un programme
2 Ouvrir, fermer et utiliser un fichier pour la lecture et l'écriture • Y compris : – lire et écrire des éléments de données individuels – lire et écrire une ligne de texte

Source : Programme Cambridge International

Un programme peut stocker des données dans un fichier afin qu'elles soient conservées après l'arrêt du programme. Vous devez ouvrir le fichier, l'utiliser, puis le fermer.

OPENFILE "data.txt" FOR WRITE
WRITEFILE "data.txt", "Hello"
CLOSEFILE "data.txt"

OPENFILE "data.txt" FOR READ
READFILE "data.txt", Line
CLOSEFILE "data.txt"

Vous pouvez lire et écrire des éléments de données individuels ou une ligne entière de texte. Fermez toujours un fichier lorsque vous avez terminé avec lui.

Exemple résolu. Enregistrez les cinq valeurs de Scores dans un fichier, une par ligne, puis lisez la première à nouveau.

DECLARE Scores : ARRAY[1:5] OF INTEGER
Scores[1] ← 90
Scores[2] ← 75
Scores[3] ← 98
Scores[4] ← 61
Scores[5] ← 98

OPENFILE "scores.txt" FOR WRITE
FOR I ← 1 TO 5
    WRITEFILE "scores.txt", Scores[I]
NEXT I
CLOSEFILE "scores.txt"

OPENFILE "scores.txt" FOR READ
READFILE "scores.txt", FirstScore
CLOSEFILE "scores.txt"
OUTPUT FirstScore

Chaque WRITEFILE ajoute une ligne, donc le fichier contient cinq lignes ; la lecture commence en haut, donc FirstScore est la première note. Ouvrir un fichier FOR WRITE le vide : tout contenu existant est perdu.

Vocabulaire Entrainer
English Français
file/faɪl/ fichier
8.3

Conseils d'examen

  • Pour la longue question fondée sur un scénario, listez d’abord les parties demandées, puis assurez-vous que chacune figure dans votre code, avec des commentaires ou des messages qui indiquent où elles se trouvent.
  • Une variable peut changer pendant l'exécution du programme ; une constante est fixe. Apprenez les cinq types de données : entier, réel, caractère, chaîne, booléen.
  • Tout programme est construit à partir de trois structures : séquence, sélection (IF / CASE), et itération (boucles).
  • Une boucle WHILE teste avant le corps, donc elle peut s'exécuter zéro fois ; une boucle REPEAT … UNTIL teste après, donc elle s'exécute toujours au moins une fois.
  • MOD donne le reste et DIV la partie entière d'une division : 17 MOD 5 est 2, 17 DIV 5 est 3.
  • Une fonction retourne une valeur ; une procédure ne le fait pas. Une variable locale fonctionne uniquement à l'intérieur de son bloc ; une globale fonctionne partout.

Leçons interactives sur ce sujet

Traversez-le étape par étape, avec des exercices à vérification instantanée.

Épreuves Passées

Plus de sujets dans Informatique IGCSE

Se connecter ou créer un compte

IGCSE, A-Level & AP