Les chaînes de caractères
Exercice 8 : page 22
|
Écrire les instructions PASCAL
permettant de réaliser les objectifs suivants :
1- Obtenir la longueur de la chaîne
"Informatique"
2- Récupérer la sous-chaîne de 5
caractères à partir de la position 8 de la chaîne
"Informatique"
3- Effacer les 5 premiers caractères de la chaîne
"Informatique"
|
Corrigé :
Utilisant pour cet exercice
ch:='Informatique' ;
1-
|
|
|
Résultat d'exécution :
|
|
l:= length(ch) ;
|
|
12
|
|
writeln(l) ;
|
2-
|
|
|
|
|
ch2:=copy(ch,8,5) ;
|
|
ch2:='tique' ;
|
3-
|
|
|
|
|
delete(ch,1,5) ;
|
|
ch:='matique' ;
|
Program
longueur ;
uses wincrt ;
var
l:integer ;
ch,ch2:string ;
begin
ch:='informatique' ;
l:=length(ch) ;
writeln(l) ;
ch2:=copy(ch,8,5) ;
writeln(ch2) ;
delete(ch,1,5) ;
writeln(ch) ;
end.
Exercice 9: page 22
|
a est un entier, x est un réel et
ch est un caractère.
Dire pourquoi les instructions
suivantes sont erronées, et les corriger dans la
mesure du possible.
* a:=3.4
* x:=5,16
* ch:=x
* a:=maxent+5
|
Corrigé :
Utilisant pour cet exercice :
a est un entier, x est un réel et ch
est un caractère.
Instructions
erronées
|
Erreurs
|
Corrections
proposées
|
a:=3.4
|
On ne peut pas affecter un réel à un entier.
|
a:=3 ;
a:=34 ;
a:=trunc(3.4) ;
|
x:=5,16
|
On n'utilise pas la ,
pour représenter un réel
mais le .
|
x:=5.16 ;
|
ch:=x
|
on ne peut pas affecter un réel à un
caractère.
|
Ch:='x' ;
|
a:=maxent+5
|
maxent n'est pas une variable ou une constante
déclarée.
|
a:=5 ;
ou
const
maxent=1000 ;
...
a:=maxent+5 ;
|
Exercice 10: page 23
|
Soit la partie déclarative du
programme Pascal suivant :
PROGRAM Dates;
CONST
Date1='03/07/2006';
VAR
Date2: STRING[10];
Jour: STRING[2];
Mois: STRING[2];
Annee: STRING[4];
......
Compléter le corps du programme par
les instructions (bloc BEGIN...END) permet-
tant de réaliser les traitements
suivants :
* Mettre Date1 dans Date2 sous la
forme jjmmaaaa ( indication: Date2 va contenir
03072006 )
* Mettre le jour dans la variable
Jour, le mois dans la variable Mois et l'année dans
la variables Annee.
|
Corrigé :
code pascal correspondant :
PROGRAM
Dates;
uses
wincrt ;
CONST
Date1='03/07/2006';
VAR
Date2:
STRING[10];
Jour:
STRING[2];
Mois:
STRING[2];
Annee:
STRING[4];
Begin
{
1- Mettre Date1 dans Date2 sous la forme jjmmaaaa }
Date2:=concat(copy(date1,1,2),copy(date1,4,2),copy(date1,7,4)) ;
{2ème
méthode :
Date2:=copy(date1,1,2)
+ copy(date1,4,2) +
copy(date1,7,4) ;
3ème
méthode :
date2:=date1 ;
delete(date2,3,1) ;
delete(date2,5,1) ;
}
writeln(date2) ;
{
2- Mettre le jour dans la variable Jour, le mois dans la variable
Mois et l'année dans la variables Annee }
jour:=copy(date1,1,2) ;
mois:=copy(date1,4,2) ;
annee:=copy(date1,7,4) ;
{2ème
méthode : puisque date2:='03072006' ;
jour:=copy(date2,1,2) ;
mois:=copy(date2,3,2) ;
annee:=copy(date2,5,4) ;
}
writeln('jour=',jour) ;
writeln('mois=',mois) ;
writeln('année=',annee) ;
end.
|
Exercice 11: page 23
|
Soit la partie déclarative du
programme Pascal suivant :
PROGRAM mots ;
CONST
m1= 'abcd';
m2='ordinateur';
m3='scalaire';
VAR
symetrie: STRING[8];
compose: STRING ;
......
Compléter la partie du programme
Pascal précédente en ajoutant des variables (si
c'est nécessaire) et le bloc BEGIN
... END pour :
* Avoir dans la variable «
symetrie » une chaîne de caractères symétrique obtenue
à partir de la variable « m1 ».
* Avoir dans la variable «
compose » une chaîne de caractères obtenue en com-
binant la première moitié de « m2
» et la deuxième moitié de « m3 » en utilisant
les fonctions : concat() et copy().
|
Corrigé :
code pascal correspondant :
PROGRAM
mots ;
uses
wincrt ;
CONST
m1=
'abcd';
m2='ordinateur';
m3='scalaire';
VAR
symetrie:
STRING[8];
compose:
STRING ;
Begin
{
1- Avoir dans la variable "symetrie" une chaîne de
caractères symétrique obtenue à partir de la variable "m1".
}
symetrie:=concat(m1,m1) ;
{autre
méthode : symetrie:=m1+m1 ;
}
writeln(symetrie) ;
{
2- Avoir dans la variable " compose " une chaîne de
caractères obtenue en combinant la première moitié de " m2
" et la deuxième moitié de " m3 " }
compose:=concat
(copy(m2,1,5), copy(m3,5,4) ) ;
{autre
méthode : compose:=copy(m2,1,5)+
copy(m3,5,4) ; ;
}
{2ème
méthode : méthode générale on déclare a2,a3:integer ;
a2:=length(m2) ;
a3:=length(m3) ;
compose:=
copy(m2,1, a2 div 2 ) + copy (m3, a3 div 2 + 1, a3-a3 div 2) ;
}
writeln(compose) ;
end.
|
Exercice 12 : page 23
|
Ecrire un programme Pascal qui
permet de transformer la chaîne de caractères "informatique" en majuscule sans
utiliser la fonction upcase(c), et la mettre dans une variable nommée maj.
Indication : le code ASCII de 'a' est 97 et le code ASCII de
'A' est 65.
|
Corrigé :
code pascal correspondant :
PROGRAM
majus ;
uses
wincrt ;
VAR
ch :
string ;
Begin
ch:='informatique' ;
ch[1]:=
chr ( ord(ch[1])-32) ;
ch[2]:=
chr ( ord(ch[2])-32) ; }
....
ch[12]:=
chr ( ord(ch[12])-32) ;
{
on peut utiliser la boucle pour i:integer;
for
i:=1 to length(ch) do
ch[i]:=
chr ( ord(ch[i])-32) ; }
end.
|
|
|