Pascal
Pascal
Pascal
Exemple :
Calcul des racines x1 et x2 d'un polynôme du second
ordre : ax2+bx+c dans R.
Algorithme : Racines
Coefficients
Calcul des racines d'un x et x
a, b et c
polynôme du 2nd ordre 1 2
Comment obtenir les données ?
Indiquer les résultats ?
Algorithme : Racines
Coefficients
Calcul des racines d'un x et x
a, b et c
polynôme du 2nd ordre 1 2
Sorties :
Entrées :
Écran, Haut-parleur,
Clavier, Micro, Scanner,
Fichier sur disque,
Webcam, Fichier sur disque,
Imprimante, Variable en
Variable en mémoire, ... Ecran, clavier,
souris mémoire, ...
Unités de
Scanner stockage
Unité centrale
Imprimante
Comment décrire l'algorithme ?
(1/2)
Langage machine :
Suite de nombres directement compréhensibles par l'ordinateur.
Assembleur :
Suite de commandes qui seront directement traduites en langage
machine.
program_init:
pushl %ebp Problèmes :
movl %esp,%ebp
subl $4,%esp Jeu d'instruction de l'ordinateur limité
movb
call
$1,U_SYSWIN32_ISCONSOLE
FPC_INITIALIZEUNITS
(beaucoup de texte à écrire)
.L4:
leal U_SYSWIN32_OUTPUT,%edi
movl %edi,-4(%ebp)
Instructions différentes d'un µP à l'autre
pushl .L9 (re-écrire pour chaque µP)
pushl -4(%ebp)
pushl $0
call FPC_WRITE_TEXT_ANSISTR Code difficile à lire
pushl -4(%ebp)
call FPC_WRITE_END
pushl
call
$.L4
FPC_IOCHECK
Avantage : rapidité, ...
Comment décrire l'algorithme ?
(2/2)
Langages de haut niveau :
Langage proche du langage parlé (par les anglophones).
Program Chiffre;
{ Demande de saisir un chiffre et
Avantages :
recopie ce chiffre } Indépendant de l'ordinateur (+ ou -)
Var
(fonctionne sur PC, Mac, Unix, ...)
a : integer; { Chiffre lu }
Méthode :
1°) On écrit d'abord l'algorithme en Français (pseudo-langage)
=> On réfléchit (étape d'analyse)
2°) On le traduit ensuite en Pascal
=> On adapte pour un ordinateur et un langage
Analyse :
D'après le cours de maths de 1ère Étape 1 : Demander à l'utilisateur
de saisir a, b et c
On calcule ∆=b²-4ac
Étape 2 : Calcul de ∆
Si ∆<0 alors pas de racine dans R
Si ∆=0 alors racine double x=-b/(2a) Étape 3 : Selon ∆ calcul et affichage
Si ∆>0 alors deux racines : des racines
x1=-[b-sqrt(delta)]/(2a)
x2=-[b+sqrt(delta)]/(2a)
Forme simplifiée d'un programme
Remplacer les < >
Programme <nom du programme>
Variables utilisées :
<nom de la variable 1> : <type>;
<nom de la variable 2>,<nom de la variable 3> : <type>
<etc...>
Début du programme
<Instruction 1>
<Instruction 2>
<etc ...>
Fin du programme
Program <nom_programme>;
En Pascal,
Pas d'accent ni Var
<nom 1> : <type>;
d'espace <nom 2>,<nom 3> : <type>;
pour les noms <etc...>;
et les instructions. Begin
Chiffres utilisables <Instruction 1>;
<Instruction 2>;
à partir du 2nd <etc ...>
caractère. End.
Exemple : Racines d'un polynôme
du second ordre dans R (2/4)
Écriture en pseudo-langage :
Utilisation de 4 variables identifiées a, b, c et delta
Étape 1 : Demander à l'utilisateur Instruction : Écrire Écrire « Bonjour »
de saisir a, b et c Instruction : Lire Lire a, b, c
{Variables utilisées }
Var
punit,ptot:real; (* prix unitaire, prix total *)
quantite :integer; (* quantité commandée *)
tva :real=0.206; (* tva *)
reference :string; (* référence produit *)
Begin
punit:=1.30;
quantite:=3;
reference:='Stylo';
b [1]:=23;
A [2,1]:=9.9e3;
End.
Comment commenter un
programme en Pascal
Program ResistanceCu;
{ Ce programme calcul la résistance d'un fil de cuivre à partir de sa longueur
et de la section }
{ Auteur : Frédéric Bonnardot }
Uses WinCrt; { Uniquement pour Turbo Pascal Windows de Borland }
Var
section, longueur : real; { nombres saisis par l'utilisateur }
resistance : real; { resistance du fil }
begin
{ Lecture de la section et de la longueur du fil }
write ('Section du fil de cuivre en mm2 : ');
readln (section);
write ('Longueur du fil de cuivre en m : ');
readln (longueur);
{ Calcul }
resistance:=1.7e-8*longueur/section/1e-6*1e3;
{ Affichage du résultat }
write ('La résistance du fil est : ',resistance:6:1,' mohms');
end.
Instructions
Les tests (si ... alors ...)
Si <condition> alors If <condition> Then
2 variantes : <instruction(s)> En Pascal : <instruction(s)>
Si <condition> alors If <condition> Then
<instruction(s)> En Pascal : <instruction(s)>
sinon Else
<instruction(s)> <instruction(s)>
<condition> :
(a=1 ou b≥2) et c≠1
s'écrit en Pascal
(a=1 or b>=2) and c<>1
1 seule <instruction>
instruction
<instruction(s)>
Début Begin
plusieurs <instruction> <instruction>;
<instruction> <instruction>;
instructions <...> <...>
Fin End
Exemple de test
On demande un nombre et on indique si il est positif ou négatif
Etapes : 1) Demander le nombre
2) Selon le signe écrire positif ou négatif
En Pascal :
Case <variable de type entier ou caractère> Of
<valeur 1> : <instruction(s)>;
<valeur 2>,<valeur 3> : <instruction(s)>;
Else <instruction(s)>
End
Exemple :
Case touche Of
'+' : WriteLn ('Somme : ',a+b);
'*' : WriteLn ('Produit : ',a*b);
Else WriteLn ('Touche inconnue.')
End
Exemple d'utilisation de selon
On lit deux nombres et on affiche un menu pour demander à l'utilisateur
si il veut calculer la somme, le produit, le quotient de ces deux nombres.
Programme Opérations
Variables utilisées :
a,b : nombres réels
touche : caractère
Début du programme
{ Lecture des données}
Écrire « Saisir 2 nombres a et b »
Lire a,b
{ Affichage du menu }
Écrire « Pour calculer la somme, tapez + »
Écrire « Pour calculer le produit, tapez * »
Écrire « Pour calculer le quotient, tapez / »
Fin du programme
Instructions
Répétition (faire ... jusqu'à)
2 variantes : Faire Repeat
<instruction> <instruction>;
<instruction> En Pascal : <instruction>;
<...> <...>
Jusqu'à <condition> Until <condition>
Tant que <condition> faire While <condition> do
<instruction(s)> <instruction(s)>
Écrire nombre
Exécuté au moins 1 fois Fin du programme
Peut ne pas être éxécuté
Instructions
Répétition n fois (pour . variant ...)
Pour <variable> variant de <début> à <fin> faire
<instruction(s)>
En Pascal :
For <variable>:=<début> to <fin> do Si fin<début, on utilisera
<instruction(s)> downto au lieu de to
Exemple :
moyenne:=0.;
For etudiant:=1 to 50 do
moyenne:=moyenne+note[etudiant];
moyenne:=moyenne/50;
Exemple de Boucle
On désire calculer la norme d'un vecteur à 20 dimensions
Programme norme vecteur
Variables utilisées :
vecteur : tableau de 20 réels =(5,64.5,58,4,578,54,6.54,245,564,54,6.5,6,4,46,46,46,46.8,4.86,4,4.8)
position: entier
norme : réel
Début du programme
{ Initialise la norme }
norme <- 0
Écrire norme
Fin du programme
Application au tri de données
On sait faire un tri à la main (trier un jeu de carte)
Mais on ne connait pas l'algorithme (cas général avec 1 million de cartes)...
1ère étape :
On prend des cartes et on regarde comment on fait à la main.
2ème étape :
On essaie d'écrire l'algorithme.
Règle du jeu :
On a dix cartes face cachées.
0.1€ pour retourner une carte.
Seules 2 cartes peuvent être retournées.