Cours algorithmes et langage C

Un langage basé sur des modules…

Le langage C utilise le concept de module (ou de librairie) qui permet de créer et d’utiliser des bibliothèques de fonctions qui peuvent être utilisées dans plusieurs programmes
De ce fait, le code objet produit par le compilateur n’est pas un programme exécutable car il utilise certainement des fonctions définies dans des modules
Pour le rendre exécutable il faut le lier aux modules adéquates : c’est ce que l’on nomme l’édition des liens (ou linkage)
Cette édition des liens s’effectue toujours avec gcc (sans option) suivi des codes objets du programme et des modules (non standards) utilisés
Par exemple pour linker helloworld.o on tape gcc helloworld.o
Il n’y a que helloworld.o car le seul module utilisé est le module stdio.h qui est un module standard
Le programme exécutable a.out est alors créé
Si à la place de l’exécutable a.out, on veut obtenir l’excutable helloworld il faut utiliser l’option -o suivi du nom du fichier exécutable désiré (ici -o helloworld)
Remarque :
Si le programme n’utilise aucune librairie non standard, on peut compiler et linker directement en utilisant gcc suivi du fichier C (avec optionnellement l’option -o), par exemple : gcc -o helloworld helloworld.c

Traduire les types simples…

Le C propose les types simples suivants : int, long, short, float, double, char
Traduire les constantes…
Pour traduire les constantes entières, le C propose trois notations :
1. La notation décimale, en base dix, par exemple 379
2. La notation octale, en base huit, qui doit commencer par un zéro par exemple 0573
3. Le notation hexadécimale, en base seize, qui doit commencer par un zéro suivi d’un x (ou X), par exemple 0X17B (ou 0x17B, 0X17b, 0x17b)
Les constantes caractères sont entourées de quote, par exemple ‘a’
Certains caractères (les caractères non imprimables, avec un code ASCII inférieur à 32, le \, le ‘) ne sont utilisables qu’en préfixant par un \:
le code ASCII du caractère (exprimé en octal), par exemple ‘\001’ un caractère tel que ‘\n’, ‘\t’, ‘\\’, ‘\”
Pour les constantes réelles, on utilise le “.” pour marquer la virgule et le caractère “e” suivi d’un nombre entier, ici a, pour représenter 10a, par exemple : 2. , .3, 2e4, 2.3e4
les constantes chaîne de caractères doivent être entourées de guillemet, par exemple « une chaine »
Par défaut le compilateur ajoute à la fin de la chaîne de caractères ‘\0’, qui est le marqueur de fin de chaîne
Il n’y a pas de constante nommée en C, il faut utiliser la commande #define du préprocesseur
Traduire les opérateurs…
Les opérateurs unaires ++ et sont des opérateurs particuliers qui peuvent avoir jusqu’à deux effets de bord:
En dehors de toute affectation, elle incrémente l’opérande associée, par exemple i++ et ++i sont équivalents à i=i+1
Lorsqu’ils sont utilisés dans une affectation, tout dépend de la position de l’opérateur par rapport à l’opérande, par exemple :
j=i++ est équivalent à j=i;i=i+1;
j=++i est équivalent à i=i+1;j=i;

Les instructions…

Il existe deux types d’instructions en C :
Les instructions simples (expression, appel de fonction, etc.)
Elles ®nissent toujours par un ‘;’
Par exemple : a=a +1;
Les instructions composées qui permettent de considérer une succession d’instructions comme étant une seule instruction
Elles commencent par “{” et ®nissent par “}”
Par exemple :
{ a=a +1; b=b +2;}
Traduire les variables…
On déclare en C une variable en la précédant de son type, par exemple :
i n t a ;
f l o a t x ;
char c ;
Une variable globale est dé®nie en dehors de toute fonction
Sa portée est le ®chier où elle est dé®nie à partir de sa dé®nition (pas au dessus)
Une variable locale est dé®nie à l’intérieur d’une fonction
Sa portée est uniquement la fonction ou elle a été dé®nie

Les conditionnelles…

L’instruction si…alors…sinon est traduit par l’instruction if, qui a la syntaxe suivante :
i f ( c o n d i t i o n )
/ / i n s t r u c t i o n ( s ) du i f
[ e l s e
/ / i n s t r u c t i o n ( s ) du e l s e
]
Par exemple :
i f ( a <10)
a=a +1;
e l s e
a=a +2;
Remarque :
Lorsqu’il y ambiguité sur la porté du else d’une instruction if, le else dépend toujours du if le plus proche Par exemple :
i f ( a>b ) i f ( c<d ) u=v ; e l s e i = j ;
Le mieux étant toutefois de clari®er cette ambiguité :
i f ( a>b ) i f ( a>b ) {
i f ( c<d )
i f ( c<d )
u=v ;
u=v ;
} e l s e {
e l s e
i = j ;
i = j ; }
L’instruction cas..où est traduite par l’instruction switch, qui a la syntaxe suivante :
switch ( l e S e l e c t e u r ) {
case c a s 1 :
/ / i n s t r u c t i o n ( s ) du cas 1
break ;
case c a s 2 :
/ / i n s t r u c t i o n ( s ) du cas 2
break ;
. . .
d e f a u l t :
/ / i n s t r u c t i o n ( s ) du d e f a u l t
}
Par exemple :
s w i t c h ( c h o i x ) {
case ‘ t ‘ : p r i n t f (  » vous v o u l e z un t r i a n g l e  » ) ; break ;
case ‘ c ‘ : p r i n t f (  » vous v o u l e z un c a r r e  » ) ; break ;
case ‘ r ‘ : p r i n t f (  » vous v o u l e z un r e c t a n g l e  » ) ; break ;
d e f a u l t : p r i n t f (  » e r r e u r . recommencez !  » ) ;
}

Traduire les itérations…

L’instruction Pour est traduite par l’instruction for, qui a la syntaxe suivante :
f o r ( i n i t i a l i s a t i o n ;
c o n d i t i o n _ d _ a r r e t ;
o p e r a t i o n _ e f f e c t u é e _ à _ c h a q u e _ i t é r a t i o n )
i n s t r u c t i o n ;
Par exemple :
f o r ( i =0; i <10; i ++)
p r i n t f ( « %d \ n  » , i ) ;
Remarque :
Contrairement à l’algortihmique le for est une itération indéterministe

Notes
Un langage compilé
Un langage basé sur des modules
Traduire les types de bases
Traduire les constantes
Traduire les opérateurs usuels
Traduire les instructions simples et composées
Traduire les conditionnelles
Traduire les itératifs
Les pointeurs
Traduire les fonctions et les procédures
Traduire lire ou écrire
Traduire un programme
Un exemple

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *