Programmation en C

Premier programme - les fonctions

Notions abordées

Description du programme

On crée une fonction simple qui renvoie la somme de deux nombres.

main.c

#include <stdio.h>

int addition(int a, int b) {
return a+b;
}

int main() {
int nb1, nb2;
nb1=4;
nb2=7;
int resultat = addition(nb1, nb2);
printf("%i + %i = %i \n", nb1, nb2, resultat);
return 0;
}

Pour compiler le programme, on tape dans le terminal

gcc main.c -o test

En tapant la commande ls, vous devriez voir un exécutable appelé test. Pour l'exécuter on tape:

./test

Dans le terminal, on obtient le résultat suivant:

4 + 7 = 11

Deuxième programme

Description du programme

On reprend l'exemple précédent mais cette fois-ci on demande à l'utilisateur de rentrer ses propres valeurs.

main2.c

#include <stdio.h>

int addition(int a, int b) {
	return a+b;
}

int main() {
	int nb1, nb2;
	printf("Donner un premier nombre : ");
	scanf("%i", &nb1);
	printf("Donner un deuxieme nombre : ");
	scanf("%i", &nb2);

	int resultat = addition(nb1, nb2);

	printf("%i + %i = %i \n", nb1, nb2, resultat);
return 0;
}

Pour compiler le programme, on tape dans le terminal

gcc main2.c -o test2

Pour exécuter on tape:

./test2

Résultat obtenu:

Donner un premier nombre : 4
Donner un deuxieme nombre : 7
4 + 7 = 11

Troisième programme - Instruction switch/case

Notions abordées

Description du programme

Cette fois-ci on va créer deux fonctions: addition et multiplication. On va laisser le choix à l'utilisateur de choisir l'opération à effectuer. On utilisera pour cela l'instruction switch/case.

main3.c

#include <stdio.h>

int addition(int a, int b) {
	return a+b;
}

int multiplication(int a, int b) {
	return a*b;
}

int main() {
	int nb1, nb2, choix;
	int resultat;

	printf("Tapez un choix: \n 1. Addition \n 2. Multiplication\n");
	scanf("%i", &choix);

	printf("Donner un premier nombre : ");
	scanf("%i", &nb1);
	printf("Donner un deuxieme nombre : ");
	scanf("%i", &nb2);

	switch (choix) {
		case 1: 		
			resultat = addition(nb1, nb2);
			break;
		case 2:
			resultat = multiplication(nb1, nb2);
			break;
	}

	printf("Resultat : %i \n", resultat);
return 0;
}

Compilation

gcc main3.c -o test3

Exécution:

./test3

Résultat:

Tapez un choix:
1. Addition
2. Multiplication
2
Donner un premier nombre : 5
Donner un deuxieme nombre : 3
Resultat : 15

Qatrième programme - Pointeurs

Notions abordées

Description du programme

On crée deux fonctions dans lesquelles on passe une variable comme argument. Dans le premier cas la variable n'est pas modifiée lors de l'appel de la fonction dans le main. Pour que la variable soit modifiée dans le programme principal il faut passer l'adresse de cette variable en argument dans le main et l'on doit utiliser les pointeurs dans la fonction.

main4.c

#include <stdio.h>

void modif_valeur1(int a) {
	a=44;
}

void modif_valeur2(int *a) {
	*a=44;
}

int main() {
	int nb1;
	int nb2;

	modif_valeur1(nb1);

	modif_valeur2(&nb2);

	printf("Valeur nb1 : %i \n", nb1);
	printf("Valeur nb2 : %i \n", nb2);
return 0;
}

Compilation et exécution

gcc main4.c -o test4 && ./test4

Résultat:

Valeur nb1 : 4200049
Valeur nb2 : 44

Cinquième programme - les tableaux

Notions abordées

Description du programme

On déclare un tableau d'entier et on initialise seulement les deux premiers éléments de ce tableau. On constate que si les éléments du tableau ne sont pas initialisés alors les nombres générés par défaut sont aléatoires. On peut déclarer et initialiser en même temps un tableau, ce que l'on fait avec notre chaîne de caractère.

main5.c

#include <stdio.h>

void afficher_tab(int tab[4]) {
	int i;
	for (i=0;i<4;i++) {
		printf("tab %i=%i \n", i, tab[i]);
	}
}

int main() {
	int tab[4];

	tab[0]=2;
	tab[1]=42;

	afficher_tab(tab);

	char chaine[20]="bonjour";
	printf("Chaine : %s \n", chaine);
return 0;
}

Compilation et exécution

gcc main5.c -o test5 && ./test5

Résultat:

tab 0=2
tab 1=42
tab 2=-1078080452
tab 3=4298401
Chaine : bonjour

Sixième programme

Notions abordées

Description du programme

On demande à l'utilisteur de rentrer son nom. S'il rentre "alexandre", le programme affichera le message "Tu es trop intelligent!!!". Dans le cas contraire il affichera "Tu es un gros cretin".

main5.c

#include <stdio.h>
#include <string.h>

int main() {
	char nom[20];

	printf("Donnez votre nom : ");
	scanf("%s", nom);

	if ( strcmp(nom, "alexandre")  == 0 ) {
		printf("Tu es trop intelligent!!! \n");
	} else {
		printf("Tu es un gros cretin \n");
	}

	printf("Votre nom est : %s \n", nom);
return 0;
}

Compilation et exécution

gcc main6.c -o test6 && ./test6

Résultat:

Donnez votre nom : alexandre
Tu es trop intelligent!!!
Votre nom est : alexandre

Donnez votre nom : toto
Tu es un gros cretin
Votre nom est : toto