Académique Documents
Professionnel Documents
Culture Documents
3 – Introduction au langage C
Un mot mémoire est une suite de chiffres en binaire (0 ou 1). Il est composé
d’un nombre fixe de bits (par exemple 8, 16, 32 ou 64). Une suite de 8 bits
est appelé un octet ou byte.
Types du langage C
Un premier programme
main() {
printf("char : %d\n", sizeof(char)) ;
printf("int : %d\n", sizeof(int)) ;
printf("float : %d\n", sizeof(float)) ;
printf("double : %d\n", sizeof(double)) ;
}
Explications
$ gcc taille.c
$ a.out
char : 1
int : 4
float : 4
double : 8
Explications
Variable et affectation
Une variable est désignée par un nom et un type qui sont invariables au
cours de l’exécution du programme. À chaque variable est associée un ou
plusieurs mots mémoire.
Opérateurs et négation
Il existe des opérateurs de comparaison (<, >, <=, >=) ainsi que des
opérateurs booléens et (&&), ou (||), la négation ( !) .
Les pointeurs
main() {
int a, b, *pa, *pb ;
a = 5 ;
b = 23 ;
pa = &a ; /* pa contient l’adresse
mémoire où est stockée a */
pb = &b ;
printf("a= %d, pa = %d\n", a, pa) ;
printf("b= %d, pb = %d\n", b, pb) ;
pb = pa ;
*pb = 10 ;
/* le contenu de la variable désignée par pb
prend la valeur 10 */
printf("Après la modification :\n");
printf("a= %d, pa = %d\n", a, pa) ;
printf("b= %d, pb = %d\n", b, pb) ;
}
2. Schémas itératifs
#include <math.h>
main() {
int a, b, c ;
printf("Résolution\n");
printf("Valeur de a ? ") ; scanf("%d", &a) ;
printf("\n Valeur de b ? ") ; scanf("%d", &b) ;
printf("\n Valeur de c ? ") ; scanf("%d", &c) ;
printf("\n Racine de %d x^2 + %d x + %d :\n",
a, b, c) ;
if (a==0)
if (b==0)
if (c==0)
printf("Tout x est solution.\n");
else
printf("Pas de solution.\n");
else
printf("%f est solution.\n", (float) c/b) ;
else
else {
int delta = b*b -4*a*c ;
if (delta < 0)
printf("Pas de solution réelle.\n") ;
else if (delta == 0)
printf("Sol. double : %f.\n", (float)-b/(2*a)) ;
else {
float rac = sqrt(delta) ;
printf("x1 = %f, x2 = %f.\n", (-b-rac)/(2*a),
(-b+rac)/(2*a));
} } }
Calcul de n !
main() {
int n, nb, produit = 1 ;
printf("Factorielle\n");
printf("n = ? ") ;
scanf("%d",&n) ;
for(nb = 1 ; nb <= n ; nb++)
produit = produit * nb ;
printf("\n factorielle(%d) = %d\n", n, produit);
}
Il existe en C une itération non bornée qui s’exécute tant qu’une condition
de continuation (expression booléenne) est vérifiée.
main() {
int a, b ;
printf("a = ") ;
scanf("%d", &a);
printf("\nb = ");
scanf("%d", &b);
while (a != b) {
if (a>b) a = a - b ;
else b = b - a ; }
printf("\n PGCD = %d\n", a);
}
Une fonction est déclarée afin de pouvoir ensuite l’appeler par son nom.
Calcul du PGCD
main() {
int u, v, p ;
printf("a = ") ;
scanf("%d", &u);
printf("\nb = ");
scanf("%d", &v);
p = pgcd(u,v) ;
printf("\n PGCD = %d\n", p);
}
Exemple :
un nombre est dit parfait, s’il est égal à la somme de ses diviseurs. Le
premier nombre parfait est 6, car
affiche tous les nombres parfaits inférieurs à
. Voici un programme en C qui
...
Passage de paramètres
Nous avons déjà vu qu’il existe trois types de paramètres : les paramètres
en entrée, en sortie et en entrée/sortie.
main() {
int a, b, r ;
printf("a = ") ;
scanf("%d", &a);
printf("b = ");
scanf("%d", &b);
pgcd(a, b, &r) ;
printf("PGCD = %d\n", r);
}