samedi 29 janvier 2000

Structure de flux


STRUCTURE DE FLUX

Les structures de flux permettent de choisir le déroulement du programme. Nous allons voir deux groupes de structures de flux.
  • instruction alternative
  • instruction répétitive

Instruction alternative

Ces instructions permettent d'exécuter certaines parties de programmes selon certains critères. Nous allons voir le if, if..else et le case.

Insctruction if

La syntaxe n'est pas la même dépendant du nombre d'instruction
Instruction simple Multiple instruction
if <instruction> then
         <opération>
if <instruction> then 
      begin
        <opération>;
        <opération>;
      end;
if NbEnfant > 3 then
        AjouterFrais;
      
if Frais > 1200 then 
      begin
        CalculerTaxe(Frais);
        SommeTotale;
      end;

Insctruction if else

Cette instruction est nécessaire lorsqu'on désire rajouter des opérations à effectuer lorsque la condition n'est pas remplie. On ne doit pas mettre de point virgule lorsqu'il y a seulement une instruction au if, mais on en met un pour le else.

Instruction simple Multiple instruction
if <instruction> then
        <opération> 
      else
        <opération>;
      end;
if <instruction> then begin 
   <opération>;
end else begin
   <opération>;
   <opération>; 
end;
if NbChaine < 20 then
        Commander
      else
        FaireInventaire;
      end;
if NbAuto > 18 then 
      begin
        NbAuto:=NbAuto+3;
      end 
      else begin
        NbAuto:=NbAuto+8;
        Recalculer(NbAuto);
      end;

Insctruction if imbriquée

On peut imbriquer les instructions if si nécessaire, mais si on doit en imbriquer plusieurs, il est préférable d'utiliser le case afin d'améliorer la clarté de notre code.
if x > 10 then 
begin 
  x := x + 5;
  if x > 20 then 
  begin
    x := x + 15;
    if x < 100 then 
    begin
      x := x + 25;
    end;
  end;
end;

Insctruction case

On peut remplacer des if imbriquées par un case. On gagne en compréhension.
case x of
  10..19: x := x + 5;
  20..25: x := x + 15;
else
  x := x + 25;
end;

Instruction répététive

Ces instructions permettent de réexécuter certaines parties de programmes sans qu'il soit nécessaire de les réécrire.

Boucle for

Une valeur initiale et une valeur finale sont nécessaires pour le fonctionnement de cette boucle. On incrémente et décrémente que par pas de 1, ce qui est un peu étrange lorsqu'on a déjà programmé dans d'autres langages. Habituellement, on utilise cette boucle lorsqu'on connaît le nombre de fois qu'on va parcourir la boucle. On est toutefois pas obligé de suivre cette logique, mais pourquoi pas se standardiser?

Le mot to permet d'incrémenter
for <valeur_initiale> to <valeur_final> do begin
  instruction;
end;

for ligne:=0 to maxLigne 
do 
   Calculer(tabNote); 
end;

On doit rajouter begin si le bloc comporte plusieurs instructions

for ligne:=0 to maxLigne do
begin
  Calculer(tabNote);
  Afficher(tabNote);
end;

Le mot downto permet de décrémenter

for ligne:=maxLigne downto do
begin
  Calculer(tabNote);
end;

Décrementer signifie de diminuer à chaque itération de la boucle.

Boucle while

Cette boucle teste à chaque itération si la valeur est vraie (true).
while <expression> do begin
    <instruction>
  end;
  // lire jusqu'à la fin d'un fichier
  while not Eof(InputFile) do begin
    Readln(InputFile, Line);
    Process(Line);
  end;
  while tabNote[Colonne,Min] < tabNote[Colonne,Mid] do begin 
    Inc(Min);
  end;

Boucle repeat

La boucle repeat équivaut à la boucle do while en langage c. Cette boucle ressemble beaucoup à une boucle while, elle évalue l'expression qu'à la fin de la boucle. Les instructions de la boucle seront ainsi exécutées au moins une fois.

repeat
    <instruction>
    until <expression>;
    repeat   
    inc(Min);
  until tabNote[Colonne,Min] < tabNote[Colonne,Mid];

vendredi 28 janvier 2000

Borland Delphi 4 (Formation en 21 jours)



C'est un excellent livre pour débuter en delphi.

Il présente de façon claire la syntaxe de ce langage. Les exemples sont instructifs et bien conçu.

La programmation nous ait facilité grâce à la bonne information concernant l'environnement de développement intégré.

Vous saurez davantage ce que le logiciel peut vous offrir. Ce livre touche de façon sommaire à de nombreux aspects de la programmation en delphi, c'est pour cette raison que je le trouve indispensable pour quiconque qui veut démarrer dans ce merveilleux langage.

vendredi 7 janvier 2000

Squelette

SQUELETTE

Type de fichier

Delphi génère plusieurs fichiers en voici quelques uns
Type Création Nécessaire pour compiler Description
DPR développement oui Projet (programme principal)
PAS développement oui Source des units
DCU compilation non Units compilées
EXE compilation non Code exécutable de l'application
DFM développement oui Contient la description des propriétés d'une fiche et des contrôles qu'elle contient
RES développement oui Fichier binaire associé au projet. Contient l'icon par défaut. Plusieurs fichiers RES peuvent être ajoutés au projet
~PA développement non Copie de sauvegarde du PAS correspondant
~DP développement non Copie de sauvegarde du DPR correspondant
~DF développement non Copie de sauvegarde du DFM correspondant

D'autres fichiers peuvent être générés par delphi, nous allons nous concentrer sur les deux types de fichiers les plus utilisés par les programmeurs

Fichier source

program Project1;
  uses
  Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES} 
begin 
  Application.Initialize;
  Application.CreateForm(TForm1, Form1); 
  Application.Run;
end.
Ce code est généré par delphi et ne devrait pas être modifié par le programmeur débutant.
L'application est initialisée, la fiche principale est créée et l'application s'exécute. C'est dans ce source qu'on peut empêcher delphi de créer notre formulaire au démarage de l'application.

Unité pascal

C'est ici que le programmeur travaille
unit Unit1; 
interface 
uses 
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 
Dialogs; 
type 
TForm1 = class(TForm) 
private 
{ Private declarations }
public { Public declarations } 
end;
var 
Form1: TForm1; 
implementation 
{$R *.DFM} 
end. 

Section uses

Remarquez le mot «use» dans le code, il spécifie les unités extérieures pointées par cette unité. Le uses équivaut au include du langage C
Ce code montre les principales unités utilisées.

Les composants qu'on ajoute sur la fiche, inscrivent automatiquement dans la partie «use» l'unité externe auxquelles ils ont besoin pour fonctionner correctement.
En ajoutant le composant wordapplication de l'onglet server, les unités OleServer, Word97 sont automatiquement inscrites dans la partie «use» de l'unité.

Section interface

La partie interface d'une unité sert à spécifier les identifiants extérieurs de l'unité, ça peut être un objet, fonction,procédure. On déclare les variables, classes, fonction et procédure dans cette section. Les éléments de cette partie sont accessibles aux autres unités.

Le mot «implementation» termine cette partie. La partie« implementation» contient directement le contenu des fonctions et procédures. C'est là qu'on inscrit le code.
unit Unit1;

interface

  uses Windows, Messages, SysUtils, Classes, Graphics, 
  Controls, Forms, Dialogs, OleServer, Word97, StdCtrls; 

type
  TForm1 = class(TForm) 
private { Private declarations } 
public { Public declarations } 

end;

function ajouter(x,y:double):double; 

var Form1: TForm1;

implementation 
{$R *.DFM}

function ajouter(x,y:double):double; 
begin 
   result := x+y;
end; 
end.

Plusieurs formulaires

Utiliser plusieurs formulaires devient vite essentiel lors du développement d'une application. Si on veut utiliser les variables, fonction, procédure.... d'un autre formulaire, on doit spécifier dans le uses du formulaire le nom de l'unité voulant être utilisée.

Exemple, on a une unité appelée uMain et une autre uMath. On veut utiliser une variable quelconque de uMath dans uMain. Il suffit d'inscrire uMath dans le uses de uMain.

Si on voudrait utiliser une variable de uMath dans uMain et vice versa, on pourrait seulement inscrire une des deux unités dans le uses et l'autre serait inscrite après le mot implentation de l'unité.

jeudi 6 janvier 2000

Comment entrer que des chiffres ou lettre dans un TEdit ?

Comment entrer que des chiffres ou lettre dans un TEdit ?
//que des chiffres
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if not (Key in ['0'..'9']) then
      Key := #0;
end;

//que des lettres
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if not (Key in ['a'..'z']) then
      Key := #0;
end;