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;

samedi 16 octobre 1999

Quel sont les modules de chargés?


Quel sont les modules de chargés?

/sbin/lsmod
Module                  Size  Used by
ipt_LOG                 6912  7
ipt_limit               2432  7
ipt_pkttype             1792  1
subfs                   7296  1
nvidia               3916540  12
speedstep_lib           4100  0
freq_table              4484  0
thermal                14088  0
processor              23732  1 thermal

vendredi 8 octobre 1999

Comment avoir de l'information sur un disque dur?


Comment avoir de l'information sur un disque dur?

/sbin/fdisk -l

Cette commande nécessite habituellement d'être connecté en root.
Disque /dev/sda: 18.2 Go, 18210037760 octets
255 têtes, 63 secteurs/piste, 2213 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets

Périphérique Amorce    Début         Fin      Blocs    Id  Système
/dev/sda1   *           1           4       32098+  83  Linux
/dev/sda2               5        2213    17743792+   f  W95 Etendu (LBA)
/dev/sda5               5        1571    12586896   83  Linux
/dev/sda6            1572        1963     3148708+  83  Linux
/dev/sda7            1964        2138     1403832   83  Linux
/dev/sda8            2139        2213      602406   82  Linux swap / Solaris

vendredi 1 octobre 1999

Comment afficher la liste des tâches en cours?


Comment afficher la liste des tâches en cours?

Il faut faire appel
crontab – l
pour afficher les tâches en cours (usager courant).

Quand JPA rencontre ses limites, pensez à jOOQ et au MULTISET

Une seule requête, un graphe d'objets complet — ce n'est pas de la magie, c'est du SQL. La base du problème Dans le monde JPA, q...