Non ça roule pas
Déjà première remarque, pour "afficher" plusieurs espaces à la suite, tu n'es pas obligé de faire:
writeln(c:4,' ',' ',':', k:4);
il suffit de faire:
writeln(c:4,' ',':', k:4);
ou encore mieux:
En effet les caractères ou suites de caractères placés entre ' ' sont des chaines de caractères, même si tu ne mets qu'un seul caractère dedans.
Et quand tu affectes une chaine de caractères composé d'un seul caractère à une variable de type caractère, le compilateur fait la conversion automatiquement et de manière transparente au programmeur. Comme dans:
1 2 3 4
|
var a: char;
...
a := 'a'; |
Bon maintenant pour ta procédure faudrait décider ce que tu veux qu'elle fasse exactement.
Là comme tu l'a écrite elle affiche simplement les 256 symboles en remplaçant ceux non affichable par NO.
La valeur de c que tu passes en paramètre n'est utilisé à aucun moment. Elle est même modifiée avant son utilisation.
Si tu veux une procédure à qui on passe un caractère en paramètre et qui l'affichera seulement s'il est affichable il va plutot falloir jouer avec des if.
Si tu veux une procédure qui affiche les caractères de la table ascii et remplace les premiers par NO, il ne sert à rien de lui passer un paramètre.
Partager