Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Généralités
Le langage Pascal est un langage de programmation dit évolutif parce qu'il est proche du
langage humain. Il est créé en 1969 à l'école polytechnique de Zurich par NWIRTH. Il a
été conçu pour permettre d'enseigner la programmation comme une science. Sa
conception présente beaucoup d'avantages:
Un programme écrit en Pascal est constitué d'une suite d'instructions qui sont des
phrases du langage.
Un programme Pascal comprend deux parties:
1. L'en-tête: Qui comprend le nom du programme et éventuellement des paramètres.
2. Le corps du programme: Comprend les déclarations et les instructions. Les instructions sont séparées entre
elles par les points virgule (;). Le programme Pascal se termine toujours par un point (.) et il a la forme
suivante:
Déclaration
Déclaration d'étiquette
En pascal toute instruction peut être précédée par une étiquette qui identifie de façon
unique chaque instruction.
C'est un entier positif d'au plus 4 chiffres. Tout élément soit être suivi du caractère (:).
On peut débrancher une instruction étiquette à l'aide de l'instruction goto étiquette.
Exemple:
goto 100
x :=1;
100:x:=x+4;
y:=x-2
Pour déclarer une étiquette on fait: Label entier;
Exemple:
Label 10, 12, 10;
Déclaration de constante
Une constante est un objet qui ne peut pas changer de valeur lors de l'exécution d'un
programme. Sa déclaration est: const identification = valeur
Exemple:
const Pi=3.14;
onze=11.0;
max=45;
min=-max
Déclaration de type
Le type d'un objet est l'ensemble dans lequel cet objet prend ses valeurs. On distingue
les types non standard.
Les types non standard sont définis par le programme et ne sont valables dans le
programme qui les utilise.
La déclaration d'un type est le suivante:
type identification=ensemble de valeur;
Exemple:
Déclaration de variable
Une variable est un objet qui peut changer de valeur lors de l'exécution d'un programme.
On retrouve la déclaration des variables dans tous les programmes.
On déclare une variable de la façon suivante:
var identificateur: type;
Exemple:
var a: interger;
jour: semaine;
La partie exécutable
C'est la partie la plus important, sans elle le programme ne s'exécute pas. Elle
commence toujours par le mot Begin et se termine toujours part le mot End. Cette partie
est constituée d'une séquence d'instruction exécutable (lecture, écriture, affectation ou
structure de contrôle).
Exemple de programme Pascal:
program suite
(*Ce programme affiche les nombres de 1 à 10*);
var nombre: interger; (*compteur*)
Begin
for nombre := 1 to 10 do
writeln(nombre);
end. (*fin du programme*)
Le type entier.
Le type réel.
Le type caractère.
Le type booléen.
Le type chaîne de caractères.
Le type entier
Le mot utilisé est integer, tout élément de ce type appartient à l'intervalle [-max int, max
int] où l'identificateur max int fournit la valeur du plus grand entier représentable. Les
nombres que l'on peut représenter sont limités par la taille de l'emplacement mémoire
utilisé pour les codes (2 octets=16bits).
Avec 16 bits on peut représenter les nombres appartenant à l'intervalle [-215; 215-1]=[-
32768;32767]. En complément à 2.
Ainsi donc Max int = 32 767
A partir de cette limitation du type entier le programme est toujours confronté au
problème de dépassement de capacité.
Exemple:
program exemple;
var a, ab: interger;
begin
a := 20000;
b := 2*a;
xriteln('b=', b);
end.
Lors de l'exécution de ce programme l'ordinateur affiche b=-25536. Ce mauvais résultat
provient du fait que les dépassements de capacité dans le cas type entier ne sont jamais
détectés.
Par contre si vous cherchez à écrire une constante comme par exemple 125413 qui ne
peut pas être représenté dans le type entier, vous serrez prévenu par le message de
compilation approprié constant out of rang.
Pour résoudre ce problème le Turbo Pascal dispose du type long int (32bit).
Les opérations possibles avec les objets du type entier sont: l'addition (+); la soustraction
(-); la multiplication (*); la division (div), le modulo (mod).
Les fonctions relatives au type entier sont:
Le mot utilisé est real. Un élément de ce type peut s'écrire sous deux formes:
Les nombres réels sont codés sur 6 octets et la technique de codage utilisée permet de
les représenter avec une précision de l'ordre de 1 chiffres significatifs.
On distingue donc l'intervalle 2,9x10-3; 1,7x1038 valeur absolu.
Avec le type réel le déplacement de capacité est détecté. On a un message overglow.
Les opérations relatifs au type réel sont: l'addition (+); la soustraction (-); la multiplication
(*); la division (/).
Les fonctions relatives au type réel sont:
abs valeur absolue.
sqr élévation au carré.
sqrt racine carrée.
frac la partie fractionnelle, exemple frac(3.05)=0.05
Le type booléen
Le mode utilisé est boolean. C'est un ensemble à deux valeurs true, false. Les opérations
utilisées sont:
and
or
not
xor: le "ou exclusif" (faux lorsque les deux conditions ont la même valeur)
Le type caractère
Exercice:
Ecrire un programme qui affiche les caractéristiques des codes allant de 1 à 100 et
l'affichage doit se faire de la manière suivant:
le caractère de code 65 est: A
le caractère de code 66 est: B
Ecrire un algorithme qui lit une chaîne de caractère, il lit la position à partir de laquelle on
doit extraire une sous chaîne de caractère et lit enfin la taille de la sous chaîne obtenue.
Instructions simples
On distingue:
L'affectation :=
La lecture read, readln
L'écriture write, writeln
for compteur := 1 to n do
instruction;
Exemple:
for i := 1 to 10 do
write(i);
Structure "tant que":
while condition do
instruction;
Structure "répéter":
repeat
instruction;
until condition;
Procédures et fonctions
Généralités
En Pascal lorsqu'un programme devient beaucoup plus complexe il est nécessaire
d'utiliser une écriture modulaire permettant de scinder en plusieurs parties ou module le
programme correspondant. Chaque module peut également être décomposé en module
plus élémentaire, il existe deux sortes de module: les procédures et les fonctions.
Généralement une écriture modulaire permet:
Définitions
Fonction: C'est une entité qui calcule un résultat unique en fonction d'un ou de plusieurs
paramètres. La valeur calculée est mise à la disposition de l'utilisateur par l'intermédiaire
du nom de la fonction, qui est une variable d'un type donné: celui de la valeur calculée.
Procédure: C'est une entité pouvant calculer et mettre à la disposition de l'utilisateur
plusieurs valeurs ou aucune. Une procédure ou une fonction peut comporter toutes les
parties d'un programme principal.
Déclaration
Les fonctions et les procédures sont déclarées juste après la déclaration des variables.
Déclaration d'une procédure
procedure nom([liste des paramètres]);
déclaration des variables locales;
Begin
corps de la procédure;
end;
Déclaration de la fonction
function nom([paramètres]): type;
déclaration des variables;
begin
corps de la fonction;
nom := valeur calculée;
end;
Exemple 1:
Ecrivons une fonction booléenne qui est fausse lorsque le nombre est négatif, vraie
lorsque le nombre est positif.
function Positif(b: real):boolean;
begin
if (b<0) then
Positif := false;
else
if (b>0) then
Positif := true;
else
write('Ce nombre est nul');
end;
Exemple 3:
Ecrivons un programme qui permet de lire deux nombres qui calcule et affiche la somme
et la moyenne de ses nombres.
program calcul;
var nombre1, nombre2, S, M: real;
begin
write('Entrez deux nombres');
Lecture(nombre1, nombre2);
S := somme(nombre1, nombre2);
M := moyenne(nombre1, nombre2);
writeln('La somme est ', S);
write('La moyenne est ', M);
readln;
end.
Passage de paramètre
On distingue les effectifs et les paramètres formels:
Le paramètre actuel doit être compatible au paramètre formel correspondant (doit être de
même type).
Un paramètre peut être:
Les paramètres d'un sous-programme peuvent être transmis sous plusieurs formes. Les
plus courant sont: la passage par valeur et le passage par adresse.
program X
Ecrire un programme qui fait appel à une procédure pour permuter le contenu de deux
variables. Les valeurs des deux variables à permuter sont lues par le programme
principal.
program Exemple1
begin
writeln('Entrez deux nombres');
write('X= '); readln(x);
write('Y= '); readln(y);
Permuter(x, y);
writeln('Le resultat est: ');
write('X= ', x);
write('Y= ', y);
end.
Exemple 2:
Ecrire un programme qui fait appel à une fonction pour déterminer la plus grande valeur
entre deux variables.
program exemple2
var nbre1, nbre2, G: interger;
function plusgrand(x, y: interger): interger
begin
if (x>y) then
plusgrand := x;
else
plusgrand := y;
end;
begin
writeln('Entrez deux nopmbres');
read(nbre1);
read(nbre2);
G := plusgrand(nbre1, nbre2);
writeln(le plus grand est ', G);
end.
La variable locale ou privée: Elle est déclarée immédiatement après l'en-tête de la procédure.
Une variable locale peut être globale pour une autre procédure.
Exemple:
procedure A()
var x, y: type
procedure B()
var i, j: type
fin
fin
La variable globale publique: Elle est déclarée après les étiquettes, les constantes, les types et avant toute
déclaration des procédures.
Exemple:
program
label
const
type
var
procedure
Chaque sous-programme ne connaît que ses variables locales et ses variables globales.
Mais le programme principal connaît uniquement les variables globales.
Exemple:
program X
var z, t: type
procedure A()
var x, y: type
procedue B()
var i, j: type
fin
fin
fin
Types structures
Les tableaux
Un tableau est une structure de données composée de plusieurs éléments de même
type. Chaque élément du tableau est repéré par son indice dans le tableau. L'indice peut
être un type énuméré:
Entier
Caractère
Semaine: Lundi; Mardi; Mercredi; Jeudi; Vendredi; Samedi; Dimanche
Exemple pratique:
const max=100
type semaine = (Lun, Mar, Mer, Jeu, Ven, Sam, Dim)
vecteur1 = tableau[1..max] d'entier
vecteur2 = tableau['a'..'z'] de réel
vecteur3 = tableau[semaine] booléen
pour i=1 à max faire
pour k=Lun à Dim faire
De façon générale, un tableau peut avoir une ou plusieurs dimensions.
type
vecteur1 = array[1..12] of integer;
vecteur2 = array[1..5; 1..10] of integer;
vecteur3 = array[1..10; 'a'..'x'] of real;
for i := 1 to 12 do
read(V1[i]);
Pour l'affichage:
for i := 1 to 12 do
write(V1[i]);
Exemple 3:
for i := 1 to 5 do
for j := 1 to 10 do
read(V[i,j]);
end;
end;
Les enregistrements
Déclaration
type
nom = record
champ1 : type1;
champ2 : type2;
. . . . . . . . . . . . . .
champn : typen;
end;
Exemple:
type
personne = record
code : string[7];
nom : string[20];
prenom : string[20];
masculin : boolean;
nombre_enfant : 0..15;
end;
var employe, homme : personne;
Les fichiers
Généralités
Un fichier est une collection d'information structurée en unité d'accès appelé
enregistrement.
Un fichier est toujours enregistré dans un support externe à la mémoire centrale (disque
dur, disquette, clef USB ...).
L'accès aux différents éléments d'un fichier peut être soit séquentiel soit direct.
Un fichier une fois créé doit continuer à exister indépendamment du programme qui le
construit. Chaque fichier a un nom physique ou chemin d'accès qui se présente sous la
forme 'unité: nom_fichier.Extension' où unité peut être A: B: C: D:
nom_fichier est constitué de 1 à 8 caractères.
extention de 0 à 3 caractères.
Exemple:
'C:\Etude.txt'
Le nom du fichier est spécifié par l'instruction assign.
Exemple:
assign(fichier, 'C:\etude.txt')
Exemple:
rewrite(fichier) permet d'ouvrir le fichier en écriture. Si le fichier existe déjà son ancien contenu devient
inaccessible. Si le fichier n'existe pas encore, il sera tout simplement créé (pour l'instant il sera vide).
reset(fichier) permet l'ouverture du fichier en lecture ou en lecture écriture. Dans ce cas le fichier doit
effectivement exister sinon il se produit une erreur d'exécution.
write(fichier, val) cette instruction permet d'écrire le contenu de val dans le fichier. Seulement val doit être
du même type que les éléments du fichier.
read(fichier, val) cette instruction permet d'introduire un élément du fichier dans val.
eof(fichier) permet de détecter la fin du fichier. Cette fonction prend la valeur vraie si la fin du fichier a été
atteinte.
close(fichier) permet de fermer le fichier à partir de là le fichier devient inaccessible.
Exemple:
program creation_fichier_etudiant;
type etudiant = record
matricule : string;
nom : string;
note : real;
end;
var fichir : file of etudiant;
personne : etudiant;
begin
assign(fichier, 'C:\etudiant.txt');
rewrite(fichier);
repeat
write('matricule: ')
readln(personne.matricule);
write('nom');
readln(personne.nom);
write('note: ');
readln(personne.note);
if length(personne.matricule) <> 0 then
write(fichier, personne);
until length(personne.matricule) = 0;
close(fichier);
end.
Exercice:
Ecrire un programme qui permet d'afficher la liste des informations des étudiants contenu
dans 'C:\etudiant.txt'.
Solution:
Accès direct
Exemple: