jeudi 31 janvier 2013

Cours Langage C : Les constantes

,

Les constantes

Une constante est une valeur qui apparaît littéralement dans le code source d'un programme, le type de la
constante étant déterminé par la façon dont la constante est écrite. Les constantes peuvent être de 4 types : entier,
flottant (nombre réel), caractère, énumération. Ces constantes vont être  utilisées, par exemple, pour initialiser
une variable.
 

1 . Les constantes entières 

Une constante entière peut être représentée de 3 manières différentes suivant la base dans laquelle elle est écrite :

décimale : par exemple, 0 et 2437348 sont des constantes entières décimales. 
octale : la représentation octale d'un entier correspond à sa décomposition en base 8. Les constantes octales
     doivent commencer par un zéro. Par exemple, les représentations octales des entiers 0 et 255 sont 
     respectivement 00 et 0377. 
hexadécimale : la représentation hexadécimale d'un entier correspond à sa décomposition en base 16. Les lettres 
     de a à f sont utilisées pour représenter les nombres de 10 à 15. Les constantes hexadécimales doivent 
     commencer par 0x ou 0X. Par exemple, les représentations hexadécimales de 14 et 255 sont respectivement 
     0xe et 0xff. 

On peut spécifier explicitement le format d'une constante entière en la suffixant par u ou U pour indiquer qu'elle
est non signée, ou en la suffixant par l ou L pour indiquer qu'elle est de type long. Par exemple :

Constante type
1234 int
02322  int /* octal */
0x4D2  int /* hexadécimal */
123456789L long
1234U unsigned int
123456789UL unsigned long int

 2 . Les constantes réelles 

Les constantes réelles sont représentées par la notation classique par mantisse et exposant. L'exposant est
introduit par la lettre e ou E ; il s'agit d'un nombre décimal éventuellement signé. 

Par défaut, une constante réelle est représentée avec le format du type double. On peut cependant influer sur la
représentation interne de la constante en lui ajoutant un des suffixes f (indifféremment F) ou l (indifféremment
L). Les suffixes f et F forcent la représentation de la constante sous forme d'un float, les suffixes l et L forcent la
représentation sous forme d'un long double. Par exemple : 
 

 3 . Les constantes caractères 

Pour désigner un caractère imprimable, il suffit de le  mettre entre apostrophes (par ex. 'A' ou '$'). Les seuls
caractères imprimables qu'on ne peut pas représenter de cette façon sont l'antislash et l'apostrophe, qui sont
respectivement désignés par \\ et \'. Le point d'interrogation et les guillemets peuvent aussi être désignés par les notations \? et \". Les caractères non imprimables peuvent être désignés par '\code-octal' où code-octal est le codeen octal du caractère. On peut aussi écrire '\xcode-hexa' où code-hexa est le code en hexadécimal du caractère
(cf. page X). Par exemple, '\33' et '\x1b' désignent le caractère escape. Toutefois, les caractères non-imprimables
les plus fréquents disposent aussi d'une notation plus simple :  


4 . Les constantes chaînes de caractères  

Une chaîne de caractères est une suite de caractères entourés par des guillemets. Par exemple,

"Ceci est une chaîne de caractères"

Une chaîne de caractères peut contenir des caractères non imprimables, désignés par les représentations vues
précédemment. Par exemple,

"ligne 1 \n ligne 2"

A l'intérieur d'une chaîne de caractères, le caractère  " doit être désigné par  \". Enfin, le caractère \ suivi d'un
passage à la ligne est ignoré. Cela permet de faire tenir de longues chaînes de caractères sur plusieurs lignes. Par
exemple,

"ceci est une longue longue  longue longue longue longue longue longue \
chaîne de caractères"
Read more →

mardi 29 janvier 2013

UML : Qualités des exigences

,

Qualités des exigences

Nécessaires – Elles doivent porter sur des éléments nécessaires, c'est-à-dire des éléments importants du système que d'autres composants du système ne pourraient pas compenser.
Non ambiguës – Elles doivent être susceptibles de n'avoir qu'une seule interprétation.
Concises – Elles doivent être énoncées dans un langage qui soit précis, bref et agréable à lire, et qui de plus communique l'essence de ce qui est exigé.
Cohérentes – Elles ne doivent pas contredire d'autres exigences établies, ni être contredites par d'autres exigences. De plus, elle doit, d'un énoncé d'exigence au suivant, utiliser des termes et un langage qui signifie la même chose.
Complètes – Elles doivent être énoncées entièrement en un endroit et d'une façon qui ne force pas le lecteur à regarder un texte supplémentaire pour savoir ce que l'exigence signifie.
Accessibles – Elles doivent être réalistes quant à aux moyens mis en œuvre en termes d'argent disponible, avec les ressources disponibles, dans le temps disponible.
Vérifiables – Elles doivent permettre de déterminer si elles ont été atteintes ou non selon l'une de quatre méthodes possibles : inspection, analyse, démonstration, ou test.
Aptitude aux tests
La plupart des exigences doivent être vérifiables par des tests. Si ce n'est pas possible, une autre méthode de vérification doit pouvoir être utilisée (par exemple, analyse, inspection, ou analyse de la méthode de conception). Des exigences testables sont une composante importante de la validation.

 

Read more →

UML : Classification des exigences

,

Classification des exigences

Les exigences sont classées généralement en trois catégories :
1) Exigences fonctionnelles - Elles décrivent les caractéristiques du système ou des processus que le système doit exécuter. On trouve dans cette catégorie les règles métier, et les exigences fonctionnelles de sécurité informatique (confidentialité,...)
2) Exigences non fonctionnelles - Elles décrivent les propriétés que le système doit avoir ; par exemple les exigences techniques de sécurité informatique (confidentialité, intégrité, disponibilité), de performance, d'accessibilité, selon des critères définis,
3) Contraintes- Les limites du développement en quelque sorte: comme définir un système d'exploitation sur lequel le système doit fonctionner, ou définir quel langage de programmation doit être utilisé pour mettre en œuvre le système.

 

Read more →

Cours Langage C : Les types prédéfinis

,

Les types prédéfinis

Le C est un langage  typé. Cela signifie en particulier que toute variable, constante ou fonction est d'un type
précis. Le type d'un objet définit la façon dont il est représenté en mémoire. 

La mémoire de l'ordinateur se décompose en une suite continue d'octets. Chaque octet de la mémoire est
caractérisé par son adresse, qui est un entier. Deux octets contigus en mémoire ont des adresses qui diffèrent
d'une unité. Quand une variable est définie, il lui est attribué une adresse. Cette variable correspondra à une zone
mémoire dont la longueur (le nombre d'octets) est fixée par le type.

La taille mémoire correspondant aux différents types dépend des compilateurs ; toutefois, la norme ANSI
spécifie un certain nombre de contraintes.

Les types de base en C concernent les caractères, les entiers et les flottants (nombres réels). Ils sont désignés par
les mots-clefs suivants :

char   int   float   double   short   long  unsigned

 1 . Le type caractère

Le mot-clef  char désigne un objet de type caractère. Un char peut contenir n'importe quel élément du jeu de
caractères de la machine utilisée. La plupart du temps, un objet de type char est codé sur un octet ; c'est l'objet le
plus élémentaire en C. Le jeu de caractères utilisé correspond généralement au codage ASCII (sur 7 bits). La
plupart des machines utilisent désormais le jeu de caractères ISO-8859 (sur 8 bits), dont les 128 premiers
caractères correspondent aux caractères ASCII. Les 128 derniers caractères (codés sur 8 bits) sont utilisés pour
les caractères propres aux différentes langues. 

Une des particularités du type char en C est qu'il peut être assimilé à un entier : tout objet de type char peut être
utilisé dans une expression qui utilise des objets de type entier. Par exemple, si c est de type char, l'expression c
+ 1 est valide. Elle désigne le caractère suivant dans le code ASCII. Ainsi, le programme suivant imprime le
caractère 'B'.

main()
{
  char c = 'A';
  printf("%c", c + 1);
}

2 . Les types entiers

Le mot-clef désignant le type entier est  int. Un objet de type int est représenté par un mot ``naturel'' de la
machine utilisée, 32 bits pour un DEC alpha ou un PC Intel.

Le type int peut être précédé d'un attribut de précision (short ou  long) et/ou d'un attribut de représentation
(unsigned).Un objet de type short int a au moins la taille d'un  char et au plus la taille d'un int. En général, un
short int est codé sur 16 bits. Un objet de type long int a au moins la taille d'un int (64 bits sur un DEC alpha, 32
bits sur un PC Intel).

3 . Les types flottants 

Les types float, double et long double servent à représenter des nombres en virgule flottante. Ils correspondent
aux différentes précisions possibles.

Read more →

dimanche 27 janvier 2013

Cours Langage C : Structure d'un programme C

,

Structure d'un programme C

Une expression est une suite de composants élémentaires syntaxiquement correcte, par exemple
x = 0
ou bien 

(i >= 0) && (i < 10) && (p[i] != 0)

Une instruction est une expression suivie d'un point-virgule. Le point-virgule signifie en quelque sorte ``évaluer
cette expression''. Plusieurs instructions peuvent être rassemblées par des accolades { et } pour former une
instruction composée ou bloc qui est syntaxiquement équivalent à une instruction. Par exemple, 
if (x != 0) 
{
  z = y / x; 
  t = y % x; 
}

Une instruction composée d'un spécificateur de type et d'une liste d'identificateurs séparés par une virgule est une
déclaration. Par exemple, 

int a;
int b = 2, c;
double x = 2.38e4;
char message[80];

ATTENTION :  En C, toute variable doit faire l'objet d'une déclaration avant d'être utilisée.

Un programme C se présente de la façon suivante : 

[directives au préprocesseur]
[déclarations de variables externes]
[fonctions secondaires]

main()
{  déclarations de variables internes,
    instructions
}

La fonction principale  main peut avoir des paramètres formels. On supposera dans un premier temps que la
fonction main n'a pas de valeur de retour. Ceci est  toléré par le compilateur mais produit un message
d'avertissement quand on utilise l'option -Wall de gcc.

Les fonctions secondaires peuvent être placées indifféremment avant ou après la fonction principale. Une
fonction secondaire peut se décrire de la manière suivante : 

type ma_fonction ( arguments )
{déclarations de variables internes
  instructions
}

Cette fonction retournera un objet dont le type sera  type (à l'aide d'une instruction comme return objet;). Les
arguments de la fonction obéissent à une syntaxe voisine de celle des déclarations : on met en argument de la
fonction une suite d'expressions type objet séparées par des  virgules. Par exemple, la fonction secondaire
suivante calcule le produit de deux entiers : 

int produit(int a, int b)
{
  int resultat;
  
  resultat = a * b;
  return(resultat);
}

Read more →

UML : Classification des exigences

,

Classification des exigences

Les exigences sont classées généralement en trois catégories :
1)  Exigences fonctionnelles - Elles décrivent les caractéristiques du système ou des processus que le système doit exécuter. On trouve dans cette catégorie les règles métier, et les exigences fonctionnelles de sécurité informatique (confidentialité,...)
2)  Exigences non fonctionnelles - Elles décrivent les propriétés que le système doit avoir ; par exemple les exigences techniques de sécurité informatique (confidentialité, intégrité, disponibilité), de performance, d'accessibilité, selon des critères définis,
3)  Contraintes- Les limites du développement en quelque sorte: comme définir un système d'exploitation sur lequel le système doit fonctionner, ou définir quel langage de programmation doit être utilisé pour mettre en œuvre le système.
Read more →

UML : Les exigences

,

Les exigences

Dans l‘ingénierie système, une exigence peut être la description de ce qu'un système doit faire. Ce type d'exigence spécifie quelque chose que le système livré doit être capable de faire.

Un autre type d'exigence spécifie quelque chose sur le système lui-même, et de quelle manière il exécute ses fonctions.

De telles exigences s'appellent souvent «exigences non fonctionnelles», «exigences de performance» ou «qualité des exigences de service». Exemples de ce type d'exigences : la disponibilité, la testabilité, la facilité de maintenance et la facilité d'utilisation.
Read more →