Structures conditionnelles.
Analyse de programme : choix multiple.
Ces exercices d'analyses doivent être réalisés sans compilateurs, à la main à l'aide d'un crayon et d'une feuille de papier.
Soit le programme suivant :
int main(void) {
 unsigned char i=7;
 i=i/2; //"/": division entière...
 switch(i) {
 case 1 : (void)printf("Premier\n");break;
 case 2 : (void)printf("Deuxième\n");break;
 case 3 : (void)printf("Troisième\n");break;
 default : (void)printf("Non classe\n");
 return EXIT_SUCCESS;
Qu'est ce qui sera affiché à l'écran lors de l'exécution de ce programme ?
Même question pour le programme :
int main(void) {
 int i=18;
 i=i-(--i);
 switch(i) {
 case 1 : (void)printf("Premier\n");
 case 2 : (void)printf("Deuxième\n");
 case 3 : (void)printf("Troisième\n");
 default : (void)printf("Non classe\n");
 return EXIT_SUCCESS;
Test simple : programme non complet.
Écrire la partie de programme réalisant la structure de contrôle demandée.
On ne demande pas le programme en entier : pas les "include" pas le main()...
Un test sur une valeur dans la variable i : si i vaut 19 on écrit "OK" autrement on écrit "Rejet"
Tester votre âge.
Écrire un programme testage.c contenant une fonction codice_1 qui :
Structures répétitives.
Analyse de programme : boucle simple.
Cet exercice d'analyse doit être réalisé sans compilateur, à la main à l'aide d'un crayon et d'une feuille de papier.
Soit le programme suivant :
int main(void){
 int i;
 for (i=0;i<5;i++) {// "/": division entiere
 (void)printf("Module EC%d\n",(i+9)/(i+1));
 return EXIT_SUCCESS;
Qu'affichera à l'écran l'exécution de ce programme ?
Analyse de programme : boucle simple et tableau.
Cet exercice d'analyse doit être réalisé sans compilateur, à la main à l'aide d'un crayon et d'une feuille de papier.
Soit le programme suivant :
int main(void){
 unsigned char i;
 unsigned char tab[5];
//initialisation du tableau
 tab[0]=1;tab[1]=2;tab[2]=4;tab[3]=8;tab[4]=16;
 for (i=0;i<5;i++) {
 (void)printf("Le %d° elt est %d\n",i+1,tab[i]);
 return EXIT_SUCCESS;
Qu'affichera à l'écran l'exécution de ce programme ?
Somme d'entiers (boucle simple).
Écrire un programme "somme" demandant à l'utilisateur de taper 10 entiers et qui affiche leur somme. Le programme ne devra utiliser que 3 variables et ne devra pas utiliser de tableau.
Analyse de programme (double boucle).
Ces exercices d'analyses doivent être réalisés sans compilateurs, à la main à l'aide d'un crayon et d'une feuille de papier.
main() {
 int i,j;
 system("clear"); //efface ecran sous linux (system("cls"); sous Windows)
 for(i=0;i<5;i++){
 for(j=i;j<5;j++)
 (void)printf("**");
 (void)printf("\n");
 return EXIT_SUCCESS;
Que sera-t-il affiché à l'écran lors d'une exécution de ce programme ?
main() {
 int i,j;
 system("clear"); //efface ecran sous linux (system("cls"); sous Windows)
 for(i=0;i<5;i++){
 for(j=5-i;j<5;j++)
 (void)printf("++");
 (void)printf("\n");
 return EXIT_SUCCESS;
Triangle d'étoiles (double boucles).
Compléter la fonction afficherTriangle dans le programme ci-dessous : cette fonction devra afficher un triangle rempli d'étoiles (*) sur un nombre de lignes donné passé en paramètre, exemple : 
/*
Nom : etoile.c
Compilation : gcc -Wall -std=c99 -o etoile.exe etoile.c
Exécution : ./etoile.exe
Nom ... : afficherTriangle
Role .. : Afficher un triangle d'etoiles
Parametre :
 nbLignes : nombre de lignes du triangle
static void afficherTriangle(const int nbLignes)
// Partie à compléter
} // static void afficherTriangle(...
// Fonction principale pour test
int main(void)
 int nbLignes = 0;
 int nbChampsLu = 0;
 int codeRetour = EXIT_SUCCESS;
 (void)fputs("Lignes ? ", stdout);
 nbChampsLu = scanf("%u", &nbLignes);
 if (nbChampsLu == 1 && nbLignes > 0)
 afficherTriangle(nbLignes);
 else
 (void)fputs("Erreur : Vous devez entrer un entier strictement positif !\n",
 stderr);
 codeRetour = EXIT_FAILURE;
 return codeRetour;
} // int main(...

Exercices en langage C/Tableaux statiques

Parcours d'un tableau.
Écrire un programme nommé argv.c qui affiche :
Rappels :
La fonction main d'un programme C reçoit en argument :
Position d'un élément dans un tableau.
Écrire un programme "position.c" contenant une fonction principale "main" déterminant si un entier est contenu dans un tableau statique par l'appel à une fonction "position".
La fonction main :
La fonction "position" :

Exercices en langage C/Fonctions
Ces exercices concernent l'utilisation des fonctions de la bibliothèque standard du langage C.
Filtre qui passe le texte en majuscule.
Problème à résoudre.
Écrivez un programme majuscule.c qui lit des données sur le flux stdin et écrits sur stdout après avoir transformé les caractères lus en majuscules. Vous utiliserez les fonctions codice_1, codice_2 (stdio.h) et codice_3 (ctype.h).
Vous testerez votre programme en lui faisant convertir son propre fichier source majuscule.c.
Lire une ligne longue avec fgets.
Problème à résoudre.
La fonction codice_4 de la bibliothèque standard du langage C permet de lire une chaîne de caractère de longueur limitée dans un flux.
Vous allez compléter une fonction "lire_ligne" répondant au spécifications suivantes :
Test d'un générateur de nombre aléatoire.
Problème à résoudre.
La bibliothèque standard du langage C offre au programmeur plusieurs fonctions pour générer des nombres aléatoires. La plus connue est codice_5.
Vous allez écrire un programme "verifrand.c" qui estime la répartition des nombres aléatoires générés : moyenne et dispersion. Nous allons traiter l'ensemble des nombres générés comme une série discrète regroupée.

Exercices en langage C/Chaines
Longueur d'une chaîne de caractères (pour manipuler).
Écrire une fonction C calculant la longueur en octets d'une chaîne de caractères, donnée en argument.
À titre d'exercice, ne pas utiliser la fonction codice_1 du fichier d'entête string.h.
Longueur d'une chaîne de caractères (par une fonction).
Écrire un programme "lgChaine.c" :
Vous utiliserez :

Exercices en langage C/Sommaire
Calcul tensoriel/Sommaire
Calcul tensoriel/Notions de base
Espéranto/Douzième Leçon
Prépositions.
Comme n'importe quelle langue, l'espéranto possède ses propres prépositions.
Prépositions de lieu : 
Prépositions indiquant un mouvement :
Prépositions de temps :
Prépositions diverses :

Calcul tensoriel/Espace euclidien/Coordonnées cylindriques et sphériques, conflits de notations

Il n'y a pas de consensus pour les symboles, ni même la nature des angles en coordonnées cylindriques et sphériques.
Liens externes.
http://www.physics.oregonstate.edu/bridge/papers/spherical.pdf (en anglais) pour une discussion sur les conflits de notation.

Calcul tensoriel/Espace euclidien/Coordonnées cylindriques

Une fois déterminé le tenseur métrique,
il est facile de calculer le gradient,
la divergence,
le laplacien,
le rotationnel,
le symbole de Christoffel.
ATTENTION, par rapport à l'article , on utilise ici la lettre formula_1 à la place
de la lettre formula_2. Voir une page sur les conflits de notations.

Calcul tensoriel/Espace euclidien/Coordonnées cylindriques/Tenseur métrique

En coordonnées cylindriques formula_1,
le carré d'un élément de longueur vaut
formula_2
et donc le tenseur métrique vaut
formula_3
La racine carrée du déterminant du tenseur métrique vaut
formula_4.
La matrice inverse du tenseur métrique vaut
formula_5
Puisque le tenseur métrique en coordonnées cylindriques est diagonal, la base naturelle formula_6est orthogonale et la base orthonormée s'écrit
formula_7.

Calcul tensoriel/Espace euclidien/Coordonnées cylindriques/Laplacien

Compte tenu de l'expression du
tenseur métrique en coordonnées cylindriques,
formula_2
s'écrit
formula_3
...À RÉDIGER...

Calcul tensoriel/Notions élémentaires/Laplacien