Vous êtes sur la page 1sur 4

J. M.

L UHP Memo langage C


Memo : syntaxe de programmation en C
Elments requis pour le cours dalgorithmique UP! et "#
Structure de programme
$% &'le ( %$
$% )uteurs ( %$
$% Partie dclarations %$
#include <stdio.h> $% dclaration des *i*lioth+ques %$
#include ,mylib.h, $% dclarations de *i*lioth+que personnelles %$
typedef nomdetype definition ; $% dclarations de t-pe %$
#define constante valeur $% dclaration de constante %$
$% .aria*les glo*ales %$
$% Procdures %$
$% Programme principal%$
int main(void) $% un seul programme principal %$
{ $% partie dclaration de .aria*les locales %$
$% partie instructions du programme principal unique dans un pro/et%$
return 0;
}
Types de donnes prdfinis
Catgorie "-pe dclar 0ormat de con.ersion a.ec scan0 et print0
Numriues (
entiers signs short int 1i ou 1d ou 1o 2octal3 ou 14 2he4a3
int 1i ou 1d ou 1o 2octal3 ou 14 2he4a3
long int 1li ou 1ld ou 1lo ou 1l4
entiers non signs unsigned int 1ui
rels 0loat 10 ou 1e
dou*le prcision dou*le 1l0 ou 1le
!aract"re char 1c
!ha#ne de caract"res char nom5taille6 7 1s
$oolens utiliser le t-pe int a.ec 8 pour 0au4 et autre .aleur pour .rai
%claration de varia&le
&'le( identi0ier et rser.er de la place en mmoire pour stoc9er une .aleur
:-nta4e de dclaration de .aria*les
;type_variable< ;nom_variable<';autre_variable< ;
E4emples de dclaration de .aria*les numriques
int annee 7 0loat 4!= 4# 7
a.ec initialisation de .aleur int /our>?= mois>!! 7 0loat t.a>!@.A 7
(ointeur (
&'le ( permet de grer des adresses de .aria*les
Bclaration ( ;type_variable_pointe< %;nom_variable< 7
E4emples
0loat %ptr; int )pti; *) pointeur sur rel= sur entier %$
char %str+,; *% pointeur sur ta*leau de caract+res %$
Utilisation
)00ecter une adresse ptr>C4 7 pti> Ci 7
)00ecter une .aleur D une .aria*le pointe %ptr>!.? 7 %pti># 7
l nest pas 0acile da00icher la .aleur dun pointeur
La .aria*le relle pointe par ptr est s-m*olise par 2%ptr3
-ranstypa.e 2casting3
&'le ( lire le contenu de la mmoire comme si ctait un t-pe di00rent 2mais compati*le3 que
celui dclar initialement pour cette .aleur
)utomatique *ien sou.ent car C nest pas un langage 0ortement t-p
Eolontaire s-nta4e ( ;var_type1< > (<nom_type1>) ;var_type2< 7
E4emple ( long int li 7 int i 7 $% dclarations %$
li > 2longint3 i 7 $% instructions %$
MemoC.doc .ersion du F8$!!$#88G page !$G
J. M.L UHP Memo langage C
Type de donnes complexes
l ne peut - a.oir da00ectation glo*ale pour ce t-pe de donnes ( il 0aut traiter sparment chaque
composant
-a&leau
&'le( utiliser pour une liste de taille 0inie et connue de .aria*les toutes de mHme t-pe
l 0aut connaItre ( le nom*re dlments= le t-pe de llment 7
Bclaration ( ;type_elem< ;nom_tab<+;nb_elem<, 7
E4emples ( char mot5!86 7 0loat ta*le5?6 7
)cc+s D un lement du ta*leau ( par son indice qui commence D 8
E4emples ( mot5F6>a 7 ou ta*le5G6>!.? 7
)dresse du premier lment du ta*leau ( C;nom_tab<586
E4emple ( Cmot586 ou Cta*le586
/tructure
&'le ( regrouper plusieurs in0ormations de t-pes di00rent au sein dune mHme structure de
donne
Bclarations (typedef struct { ;type_champs< ;nom_champs<} ;type_struct< ;
E4emples ( typedef struct Jchar nom5?86 7 0loat note K etudiant 7
etudiant et 7 $% dclaration de .aria*le de t-pe etudiant %$
etudiant %ptr 7 $% pointeur sur structure de t-pe etudiant %$
)cc+s au4 champs dune structure
:-nta4e ( ;nom_variable<.;nom_champs< ou
();ptrLsurLstruct<).;champs< ou ;ptr_sur_struct<0>;champs<
E4emples strcp-2et.nom= ,Bupond,37 et.note>!#.? 7
strcp-22%ptr3.nom= ,Burand,37 ptrM<note>!G.? 7
Dclaration de type de donnes
Utiliser les t-pes pour d0inir des catgories din0ormations utilisa*les dans lensem*le des
programmes
:-nta4e typedef ;type> <nom_de_type> ;
E4emples typedef char string ; *) d0init le t-pe chaIne de caract+res %$
typedef int tab[3]; /* type tableau de 3 entiers tab */
typedef tab *ptrTab; /* pointeur sur tableau de 3 entiers ptrTab*/
Utillisation ta* t!=t# 7 $% dclaration de deu4 .aria*les de t-pe ta*%$
Rgles de nommage pour les identificateurs
B0inition ( squence de lettres 2Na..O3 ou 2N)..P3 et de chi00res 2N8..Q3
:ans espace ni caract+re de ponctuation sau0 NL
Be longueur quelconque 2;F!3
Commencer par un caract+re
Bi00renciation entre ma/uscules et minuscules
Oprateurs pour les expressions
1ffectation s-nta4e ;lvar<2 ;expression< 7 e4emple /our >F! 7
)00ectation couple a.ec oprateur ( 32 02 )2 *2
E4emple ( R S> P 7 qui.aut D R > RSP 7
4naires M
ncrmentation s-nta4e ;lvar<33 e5emple 6 i 33 qui.aut D i>iS! 7
dcrmentation s-nta4e ;lvar< 00 e5emple 700 qui.aut D />/M! 7
Tpration sur *its Bcalage D droite << D gauche ;;
Et *it D *it C Tu *it D *it U
)dresse 8 e4emple ( Ca signi0ie adresse de a
ndirection ) e4emple ( %p signi0ie .aria*le pointe par p
Eri0ier siOeo00 VVV
$inaires
E4pression numriques ( plus 3 moins M produit ) di.ision * reste de di.ision enti+re 9
Comparateurs ( gal 22 di00rent :2 in0rieur < in0rieur ou gal <2 suprieur > suprieur ou gal
>2 2attention ( pas despace entre les deu4 caract+res des comparateurs3
E4emple ( a>>F est une e4pression conditionnelle qui se lit Wa estMil gal D F VX
)lors que a> F 7 est une instruction da00ectation qui se lit W/a00ecte F D aX
Tprateurs logiques ( non : et 88 ou ;;
MemoC.doc .ersion du F8$!!$#88G page #$G
J. M.L UHP Memo langage C
Principales instructions
!ommentaire *) <texte_du_commentaire< )*
<trations
Avec compteur
for (;expr_initc_ptr< ; ;expr_cond.repet_cptr< ; ;expr_cptr<) JblocK
on utilise un compteur= interdit de modi0ier le compteur dans le *loc
pas de e4it goto ou *ranchement quelconque
E4emple ( a00icher tous les caract+res minuscules
for 2i>a 7 i;>O 7 iSS3 print02,1c ,= i3 7
print02,Yn,3 7 $% a00icher toutes les lettres de lalpha*et %$
Avec condition darrt
E4primer la condition darrHt ( puis la traduire en condition pour continuer en respectant les
lois de Be Morgan
:-nta4e ( =hile (;condition<) J;bloc <K
attention ( au4 initialisations a.ant litration= D *ien modi0ier la .aleur de la condition dans le
*loc dinstruction sous peine da.oir une itration in0inie
E4emple i> Na 7
=hile 2i;>O3 J print02,1c ,= i37
iSS 7K
print02,Yn,3 7
:-nta4e ( do J;bloc<
K
=hile ( ;condition< ) ;
!onditionnelles
:imple if (;condition<) ;instr< 7
Compl+te if (;condition<) ;instr1< 7 else ;instr2< 7
).ec des *locs dinstructions if (;condition<) J;bloc1<K
else J;bloc2<K
1i.uilla.e s=itch (;var_int< ) {
case ;valeur1< ( ;instr1< 7 ;instr2< 7&rea> 7
case ;valeur2< ( Z 7
default ( ;instr< 7
}
Entres- sorties
:aisie de .aria*le ( scanf(?<format_de_saisie<?' 8<var<) ;
)00ichage ( printf(?<messae<Yn ?) ou printf(?<messae format>Yn?' ;variable>) ;
:aisie de caract+re ( .etc2 ;caractere<3 7
)00ichage de caract+re putc 2 ;caractere<3 7
:aisie de chaIne de caract+res ( .ets2;chaine<3 7
)00ichage de chaInes de caract+res ( puts2;cha!ne<3 7
Principales fonctions et librairies
;stdio.h< gestion des entres sorties 2scan0= print0= getc= putc= gets= putsZ3
;math.h< 0onctions mathmatiques 2po[= sqrt= 0a*s= mod= log= sinZ3
;string.h< traitement des chaInes de caract+res 2strcp-= strlen= strcmpZ3
;stdli*.h< utilitaires 2rand= malloc= 0reeZ3
;ct-pe.h< tests de classes des caract+res 2isspace= isupper= alphaZ3
;limits.h< et ;0loat.h< les limites d0inies par limplmentation
MemoC.doc .ersion du F8$!!$#88G page F$G
J. M.L UHP Memo langage C
Mots cls rservs
auto
F
dou*le
!
int
!
struct
!
*rea9
#
else
#
long
!
s[itch
#
case
#
enum
!
register
F
t-pede0
F
char
!
e4tern
F
return
#
union
!
const 0loat
!
short
!
unsigned
!
continue
#
0or
#
signed
!
.oid
!
de0ault
#
goto
#
siOeo0
#
.olatile
do
#
i0
#
static
F
[hile
#
!
"-page
#
nstruction
F
ndicateurs de classe de mmorisation
Procdures
@onction
:-nta4e de pro0il
$% role de la procdure ( Z %$
$% donnes ( liste des param+tres a.ec leur t-pe %$
$% rsultat ( t-pe du rsultat %$
;type_result< ;nomLfonction< 2 ;typeLparam< ;nomLparamLformel<3
J $% .aria*les locales %$
$% instructions %$
return ;var_de_type_result< 7
K
a.ec t-peLresult de t-pe simple
(rocdure
:-nta4e de pro0il
$% role de la procdure ( Z %$
$% donnes ( liste des param+tres a.ec leur t-pe %$
$% rsultat .ia ( pointeur sur le t-pe du rsultat %$
void ;nom_procedure< ( ;type_param< ;nom_param_formel< )
J $% .aria*les locales %$
$% instructions %$
K
Compilation
Pour compiler le programme source essai.c en l\o*/et e4cuta*le= taper dans une 0enHtre console (
gcc -o essai essai.c
si le programme contient des 0onctions mathmatiques= taper (
gcc -lm -o essai essai.c
pour garantir une *onne porta*ilit de .otre code= taper (
gcc -ansi -Wall -o essai essai.c
et s\assurer qu\il n\- a plus aucun de message d\erreur ou de pr.ention.
MemoC.doc .ersion du F8$!!$#88G page G$G

Vous aimerez peut-être aussi