Définition |
En-tête : | [classe_alloc] type_retour ident (params) |
Corps : | { |
déclaration_des_variables_locales | |
liste_d'instructions | |
} |
Exemples |
void hello (void) |
{ |
printf("hello\n"); |
} |
// Calcul de la moyenne |
float moyenne (float x, float y) |
{ |
return ((x+y)/2); |
} |
// Longueur d'une chaîne |
int strlen (char s[]) |
{ |
int i=0; |
while(s[i]!='\0') i++; |
return i; |
} |
Retour d'une fonction |
-->
tout SAUF des tableaux et des fonctions (dans ces
cas là, utiliser des pointeurs).
-->
sortie du programme avec un code de retour correspondant
à la valeur entière de l'argument.
Arguments d'une fonction |
void essai(const int &a, int &b); |
Passage d'arguments par valeur |
void echange1(int a, int b) |
{ |
int tmp = a; |
a=b; |
b = tmp; |
} |
int x,y; |
echange1(x, y); |
-->
L'échange n'a lieu qu'à l'intérieur de echange1.
Fonction main |
main
avec 3 args :
argv[0]
-->
nom du programmeargv[i]
-->
i-eme argument (1 £i £ argc)
main
comme :
int main(int argc , char *argv[], char *envp[])
int main(int argc , char *argv[])
int main(void)
argc, argv : exemple |
// echo.cc |
// Version simplifiée du programme echo |
int main(int argc , char *argv[]) |
{ |
int i; |
for(i=1; i<argc; i++) { |
printf("%s",argv[i]); |
} |
putchar('\n'); |
} |
> echo |
> echo hello |
hello |
> echo a b c |
a b c |
Structure des programmes |
Programme | ÜÞ | ensemble de fichiers (ou
``modules'')
|
Module | ÜÞ | suite de déclarations
|
Déclaration | ÜÞ | déclaration de variable ou de fonction |
Notion de ``bloc'' |
while (n>1) {
...}
-->
les fonctions sont forcément ``globales'';
-->
les variables sont ``globales'' ssi
elles sont définies hors de tout bloc, ``locales'' sinon.
Exemple |
float v; |
globale |
float f(float x) |
// fonction f : globale |
// paramètre x : local à la fonction |
{ int i; // locale à la fonction |
float v=0.5; // locale à la fonction |
for(i=0;i<10;i++) { |
float v; // locale au bloc |
... // cache la valeur de v=0.5 |
// ATTENTION Exple purement pédagogique |
// A NE PAS REPRODUIRE |
} |
... // v = 0.5 |
} |
int main(void) |
{ |
f(3.4); |
f(v); |
} |
Portée d'un nom |
-->
du côté import, elle doit être déclarée extern.
E/S en C : Spécification des formats |
- | cadrage à gauche |
+ | un signe + ou - sera ajouté |
# | format alternatif qui combiné à o ajoute un '0' devant le nombre, combiné à x ajoute un 'X', ... |
E/S en C : Spécification des formats (suite) |
d decimal | o octal | x hexa | u unsigned |
c character | s string | f float | ... |
#include <stdio.h> |
int lectecr3 (void) { |
char c; |
while (scanf("%c",&c)==1) printf("%c",c); |
return 0; |
} |
... |
int alpha, m, n; |
printf("Entrez la valeur de alpha: "); |
scanf("%d", &alpha); |
printf("S[%d]=%d, M[%d]=%.2f\n", |
n, sum, n, (float) sum / n); |
#include <stdio.h> |
int main(void) |
{ |
int i = 456; |
long int l = 123123123L; |
unsigned int ui = 45645U; |
unsigned long int ul = 2123123123UL; |
double d = 12.678; |
printf("En décimal : \n"); |
printf("i = %d (%%d) l = %ld (%%ld) ui = %u (%%u) \n'', i,l,ui); |
printf(``ul = %lu (%%lu) d = %f (%%f) \n", ul, d); |
printf("En octal : \n"); |
printf("ui = %o (%%o) ul = %lo(%%lo) \n", ui, ul); |
printf("En hexadécimal : \n"); |
printf("ui = %X (%%X) ul = %lX (%%lX) \n", ui, ul); |
printf("Affichage du signe : \n"); |
printf(" |% d| (%% d) |%+d| (%%+d) |%d| (%%d) \n", -i, -i, -i); |
printf(" |% d| (%% d) |%+d| (%%+d) |%d| (%%d) \n", i, i, i); |
printf("Affichage octal, hexadécimal : \n"); |
printf(" |%x| (%%x) |%#x| (%%#x) backslashn", i, i); |
printf(" |%X| (%%X) |%#X| (%%#X) \n", i, i); |
printf(" |%o| (%%o) |%#o| (%%#o)\n", i, i); |
printf("Affichage des flottants : \n"); |
printf("|%7.2f| (%%7.2f) |%07.2f| (%%07.2f) |%-7.2f| (%%-7.2f) \n",d,d,d); |
} |
En décimal : i = 456 (%d) l = 123123123 (%ld) ui = 45645 (%u) ul = 2123123123 (%lu) d = 12.678000 (%f) En octal : ui = 131115 (%o) ul = 17643044663(%lo) En hexadécimal : ui = B24D (%X) ul = 7E8C49B3 (%lX) Affichage du signe : |-456| (% d) |-456| (%+d) |-456| (%d) | 456| (% d) |+456| (%+d) |456| (%d) Affichage octal, hexadécimal : |1c8| (%x) |0x1c8| (%#x) |1C8| (%X) |0X1C8| (%#X) |710| (%o) |0710| (%#o) Affichage des flottants : | 12.68| (%7.2f) |0012.68| (%07.2f) |12.68 | (%-7.2f)