0% ont trouvé ce document utile (0 vote)
53 vues7 pages

Cours Pascal

Ce document présente une introduction à la programmation en Pascal, en détaillant la syntaxe de base, les types de variables, la structure d'un programme, ainsi que les fonctions et procédures. Il aborde également les boucles, les tableaux et le traitement des chaînes de caractères, tout en proposant des exercices pratiques pour illustrer les concepts. Enfin, des fonctions de conversion de type et des manipulations de chaînes sont expliquées.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
53 vues7 pages

Cours Pascal

Ce document présente une introduction à la programmation en Pascal, en détaillant la syntaxe de base, les types de variables, la structure d'un programme, ainsi que les fonctions et procédures. Il aborde également les boucles, les tableaux et le traitement des chaînes de caractères, tout en proposant des exercices pratiques pour illustrer les concepts. Enfin, des fonctions de conversion de type et des manipulations de chaînes sont expliquées.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction à la programmation en Pascal

Module L1 - Info
Octobre 2004
Gédéon LÉGAUT

1 Introduction au langage Pascal

On va dénir les briques de bases du langage Pascal.


J'ai demandé aux élèves de se faire un petit Mémo pour avoir la syntaxe sous la main en salle de TP et pour
leur faire relire le cours.

1.1 Les lettres


A à Z, a à z et _
pas de diérences minuscules/majuscules
Pour les noms de variables : ils doivent commencer par une lettre, mais peuvent contenir des chires.

1.2 Les chires et les nombres


0 à 9
La partie décimale est notée .

1.3 Les symboles réservés


symboles opération exemple
+-*/ les quatres opérations usuelles
div mod division euclidienne et son reste 3 div 2, 3 mod 2
= > >= < <= et <> (diérent de) tests 2=j teste si j vaut 2
[ ] crochets pour les tableaux T [i] avec i entier
.. intervalle [0..9] ou [a-e]
' délimiteur de chaîne de caractères 'toto'
and, not, or et xor (ou exclusif) opérateurs booléens (j>2) and (j<10)
; n d'instruction ou de déclaration
:= aectation i :=2 ; s :='toto' ; f :=2.3 ;
//... commentaires sur une seule ligne //s :=2 ;
{...} commentaires sur plusieurs lignes
Les " ne sont pas utilisés en pascal.

Exercices : Que signie les expressions suivantes ?


j=2
pourquoi pas de ; après "j=2" ?
j :=2 ;
pourquoi un ; après "j :=2" ?
//j :=2 ;
7 div 3
7 mod 3

1
1.4 Mots réservés
Il y en a beaucoup. On en verra tout au long des TD et TP. Par exemple,
begin end ; Un begin se nit toujours par un end ; , sauf celui du programme qui se nit par end. .
if ... then ... else ... ; > IF condition THEN instruction ELSE instruction ;
(pas de ; avant ELSE)
do

1.5 Types de variables


variable type exemples
entière integer 1 2 235 6325874
réelle real 2.3 1 0.3698 1e-5
chaîne de caractères string 'toto' 'tas rien dit ?'
tableau array T[4]
booléen boolean false true

2 Structure d'un programme

PROGRAM nom_du_programme ;
USES unité ;
déclaration des constantes et des variables GLOBALES
BEGIN
corps du programme = suite d'instructions
END.
USES : utilisation d'une bibliothèque. Pour avoir la bibliothèque mathématique, USES math ;
Déclaration des constantes et des variables :
CONST nom = valeur ;
VAR nom : type ;
Exemple :
PROGRAM Surface_du_cercle ;
CONST pi=3.14159;
VAR r:integer;
s:real;
BEGIN
r:=10;
s:=pi*r*r;
END.

3 Fonction

FUNCTION nom (variables : type ) : type renvoyé par la fonction ;


déclaration des constantes et des variables LOCALES
BEGIN
corps de la fonction
nom:= ... ; //pour que la fonction renvoie un résultat
END;
Exercice : Ecrire la fonction qui renvoie le maximum de deux entiers.
FUNCTION max (a,b:integer) : integer;
BEGIN
IF a>b THEN max:=a ELSE max:=b;
END;

2
4 Procédures

Les procédures sont une généralisation de la notion de fonction. Elles ne renvoient aucun résultat, mais
peuvent écrire dans des variables qu'on leur spécie. Il y a donc deux cas de gure, suivant qu'on leur spécie
des variables ou non.
 

PROCEDURE nom variables : type ; VAR variables : type 


 

| {z } | {z }
variables d'entrée variables de sortie

PROCEDURE nom (variables : type) ;


déclaration des constantes et des variables LOCALES
Cas 1 : BEGIN
corps de la procédure
END;

PROCEDURE nom (variables : type ; VAR variables : type) ;


déclaration des constantes et des variables LOCALES
Cas 2 : BEGIN
corps de la procédure
END;

Pour faire les exercices suivants, on va introduire deux nouvelles fonctions :


 writeln(s) ache la chaîne de caractères "s" à l'écran quand on exécute en ligne de commande le programme
pascal. Avec Delphi, on ne fait rien en ligne de commande ; mais on va écrire sur des objets.
Ex : writeln('toto') ; ache la chaîne de caractères toto .
 format('%X',[var]) renvoie une chaîne de caractères où %X est remplacé le contenu de la variable var.
Ex : si r :=2 ; p :=2*pi*r ; format('le périmètre dun cercle de rayon %f vaut %f ',[r,p]) renvoie
le périmètre d'un cercle de rayon 2 vaut 12.56

type de la variable var X


string %s
integer %d
real %f, %1.5f

Exercice : écrire un programme avec une procédure qui calcule le cosinus et le sinus d'un angle. Variable
d'entrée : un angle en degré. Deux variables de sorties pour le sinus et le cosinus.

PROGRAM angle;
VAR x,y,z: real;
BEGIN
PROCEDURE cosin(x:angle; VAR c,s:real);
BEGIN
c:=cos(x*pi/180);
s:=sin(x*pi/180);
END;

x:=0.12; // radians
cosin(x,y,z);
// y contient le cosinus de l'angle x
// z contient le sinus de l'angle x
END.
Discuter des variables LOCALES / GLOBALES.

3
5 Quelques boucles

On peut tout faire facilement avec deux boucles alors qu'il en existe beaucoup. On va regarder les boucles
for et while.

5.1 Boucle for


FOR i:=1 TO 10 DO instruction ;
i est incrémenté de 1 automatiquement
la boucle porte PAR DÉFAUT sur la première instruction après le do. Pour avoir une boucle qui exécute
plusieurs instructions pour chaque valeurs de i, mettre un begin ... end ;
FOR i:=1 TO 10 DO BEGIN
instruction1;
instruction2;
...
instructionN;
END;
Un begin doit toujours être fermé par un end ; . On ne peut pas modier la valeur de i dans une boucle for .

5.2 Boucle while


WHILE condition DO instruction;
Pour que la boucle while ne soit pas une boucle innie, il faut que la condition devienne fausse à un moment
donné. Il faut donc que la boucle while porte sur deux instructions (ce qu'on veut + modier la condition) : on
mettra donc un begin fermé par un end ; . Exemple

i:=1; s:=0;
WHILE i<=10 DO BEGIN
i:=i+1;
s:=s+1;
END;
Que fait ce programme ?

i s
1 0
2 0+1
3 1+1
... ...
n n-1

Pour quitter une boucle sans être arrivé à la condition nale, on utilise la fonction break .

5.3 Exercices
1. Calculer la somme des N premiers entiers avec une boucle for et une boucle while :

N
X N (N + 1)
s= i=
i=1
2

PROGRAM somme_entier1;
VAR s,i,n:integer;
BEGIN
n:=10;
s:=0; // initialisation
FOR i:=1 TO n DO s:=s+i;
END.

4
PROGRAM somme_entier2;
VAR s,i,n:integer;
BEGIN
n:=10;
s:=0; // initialisation
i:=1;
WHILE i<=n DO BEGIN
s:=s+i;
i:=i+1;
END;
END.

2. Soit les fonctions g(x) = (1 − x)2 et h(x) = x2 − 1. Calculer

N
X
s= g(xi ) ∗ h(xi ) xi = i ∗ dx dx = 3
i=1

PROGRAM somme_fonctions;
VAR i,n:integer;
dx,s:real;
BEGIN
FUNCTION g (x:real):real;
BEGIN
g:=(1-x)*(1-x);
END;

FUNCTION h (x:real):real;
BEGIN
h:=x*x-1;
END;

n:=10;
dx=3;
s:=0; // initialisation
FOR i:=1 TO n DO s:=s+g(i*dx)*h(i*dx);
END.

6 Les tableaux

Déclaration d'un tableau :


CONST N=100;
VAR T : array [0..100] of real;
T1 : array [0..N,0..N+10] of integer ;
Utiliser ou écrire dans un tableau :
T[i]:=i;
k:=T1[i][j]; // colonne i, ligne j
Exercice : Soit la fonction f (x) = sin(x)e−(x−6) . On recherche le maximum de cette fonction dans l'inter-
2

valle [0..100]. Soit n = 200, xi = i ∗ 100/n, T [i] = f (xi ).

5
PROGRAM maximum;
CONST n=200;
VAR i:integer;
x,max,xmax:real;
T:array [0..n] of real;
BEGIN
FUNCTION f (x:real):real;
BEGIN
f:=sin(x)*exp(-(x-6)*(x-6));
END;

// ecriture des valeurs dans le tableau T


FOR i:=0 TO n DO T[i]:=f(i*100/n);

// recherche du maximum global


max:=T[0]; //pourquoi pas max=0 ?
FOR i:=0 TO n DO
if T[i]>max THEN BEGIN
max:=T[i];
xmax:=i*dx/n;
END;
END.

7 Traitement des chaînes de caractères

Une chaîne de catactères est un tableau de caractères. s :='bonjour' ;

s[1] →b
s[2] →o
s[5] →o
s :='toto' ; s[3] :='x' ; s contient alors toxo .
Concaténation : s1 :='toto' ; et s2 :='tata' ;
s1+s2 renvoie 'tototata'
s2+s1 renvoie 'tatatoto'

7.1 Manipulation de chaîne de caractères


Comme une chaîne de catactères est un tableau de caractères, tester si deux chaînes sont identiques ne se fait
pas par s1=s2 . On peut tester si deux caractères sont identiques ( i :=1 ; if s1[i]=s2[i] then ... ). Pour manipuler
de façon générale les chaînes de caractères, il faut utiliser des fonctions telles StrComp ... rechercher dans l'aide

1. pos('motif ',s) :

pos('.','10.2') → 3
pos('o','tota') → 2
pos(',','10.2') → 0

2. length(s) renvoie la longueur de la chaîne de caractères s.

3. copy(s,n,m) renvoie une chaîne de caractères

copy('toto',1,2) → 'to'
copy('bonjour',4,length('bonjour')) → 'jour'
copy('tram',1,length('tram')) → tram
copy('tram',1,12) → tram
s :='tram' ; copy(s,pos(',',s)+1,pos('m',s)) → 'tram'
s :='tram' ; copy(s,1,2) → 'tr'
s :='tram' ; copy('s',1,2) → 's'

6
7.2 Conversion de type
Tout ce qu'on rentre dans un programme avec un clavier ou un chier est compris comme étant une chaîne
de caractères par l'ordinateur. Il existe donc des fonctions de conversion de type.

1. StrToInt
VAR s:string;
n:integer;

s:='10';
n:=StrToInt(s);
2. Format('%X',[var])

VAR s,s1:string;
n:integer;
r:real;

s1:='Toto';
n:=10;
r:=120.35;
s:=Format('\%s a recu pour ses \%d ans \%f euros',[s1,n,r]);
Exercice : écrire une fonction de conversion de type StrToReal . Vos données sont de la forme '12.13' ou
'12,563'.

// fonction qui transforme une chaine de caractères en réel


FUNCTION StrToReal (s:string):real;
VAR s1,s2:string;
BEGIN
// si virgule, la changer en point
IF pos(',',s)<>0 THEN s[pos(',',s)]:='.';
// si nombre entier -> cas particluier
IF pos('.',s)=0 THEN strtoreal:=strtoint(s)
ELSE BEGIN
s1:=copy(s,1,pos('.',s)-1);
s2:=copy(s,pos('.',s)+1,length(s));
// rajouter math tout en haut du prog dans la rubrique ``Uses''
strtoreal:=strtoint(s1)+strtoint(s2)/power(10,length(s2));
END;
END;

8 Exercices

1. Comment tester si un nombre est pair ? impair ?

2. Comment enlever tous les espaces dans une chaîne de caractères ?

3. Comment inverser une chaîne de caractères ?

4. Comment tester si un entier est un nombre premier ?

5. Comment faire une calculette horaire qui calcule 10h53min + 128h38min ?

Vous aimerez peut-être aussi