Créer un fichier "bonjour.c" contenant les lignes suivantes :
int main() {
printf("Vive le C ! \n"); // ne pas oublier le \n pour passer a la ligne !
}
Le compiler par: gcc -Wall -o bonjour bonjour.c
Normalement le compilateur doit émettre des "warnings" car le code correct est:
#include <stdio.h>
int main() {
printf("Vive le C ! \n");
return 0;
}
Pourquoi faut-il rajouter ces 2 lignes ?
Ecrire une fonction qui calcule factorielle N, c'est-à-dire: N! = N * (N-1) * (N-2) * ... * 3 * 2 *1 en utilisant la boucle for puis la boucle while.
On écrira ultérieurement (maintenant si vous savez le faire) une version récursive de factorielle
Compléter le programme suivant en écrivant une fonction slong() qui calcule la longueur d'une chaîne de caractères. On rappelle qu'une chaîne de caractères est une suite de caractères terminée par un zéro (la valeur numérique 0, pas le caractère '0').
#include <stdio.h>
int main() {
char *s1 = "ceci est litteral";
char s2[] = "ceci est un tableau";
printf("longueur de %s = %d \n", s1, slong(s1));
printf("longueur de %s = %d \n", s2, slong(s2));
return 0;
}
Il existe une fonction de bibliothèque qui fait la même chose.
Quel est son nom ? Si vous ne savez pas comment la trouver, tapez:
man string
On désire améliorer le programme précédent de telle sorte que l'utilisateur puisse entrer interactivement la chaîne de caractères dont il faut calculer la longueur.
Première méthode : récupérer les arguments de la ligne de commande grace aux aux paramètres argc et argv de la fonction main().
int main(int argc, char *argv[]) {
....
}
scanf() et printf() s'utilisent de la même maniere dans le cas des chaînes de caractères (attention ce n'est pas vrai pour d'autres types de données, comme nous le verrons plus tard). Notez que le format est %s (pour "string") dans des deux cas.
Pour plus d'informations: tapez: man scanf ou cherchez cette fonction sur le Web avec Google.
Attention: vérifier que la variable destinée à contenir
la chaîne est correctement allouée et raisonnablement "grande".
Que se passera-t'il si la chaîne entrée est trop grande ? Comment faire pour
éviter ce problème ?
Ecrire un programme calc qui calcule les quatre opérations +, -, *, /. On indiquera l'opération à effectuer sur la ligne de commande comme suit: calc 1 + 2 (noter la présence d'espaces). Le programme affichera le résultat sur le terminal.
Etape préliminaire : Ecrire une fonction s2i() qui transforme une chaîne de caractères représentant un entier (par exemple "123") en un véritable entier (c'est-à-dire un "int" valant 123) de telle sorte qu'on puisse écrire :
int i = s2i("123");
printf("valeur de i = %d \ n", i);
Il existe une fonction de bibliothèque qui fait la même chose.
Quel est son nom ?
Etape finale : écrire et tester le programme calc.
essayer de faire: calc 2 * 2. Quel est le probleme ?
En s'inspirant du cours, compléter le fichier tab1.c en y ajoutant les fonctions suivantes :
Attention:
Attention: cette valeur ne doit être insérée que :
Remarque: ne pas confondre la taille maximale du tableau et le nombre d'éléments effectivement utilisés (ce dernier pouvant varier, contrairement à la taille qui est déterminée une fois pour toutes).
Ecrire un programme permettant de lire, afficher et multiplier des matrices carrées.
Faire le TP sur l'utilisation du debogueur gdb puis réaliser (et finir chez soi) l'exercice figurant à la fin de ce TP.
Remarques:
1) Verifier que votre code compile et s'exécute correctement depuis une salle de TP Unix de l'Ecole. La compilation doit s'effectuer en tapant make dans le Terminal (notez que, tel qu'on l'a utilisé dans ce TP, Qt Creator fait appel à make). Attention: un programme sans Makefile ou qui ne compile pas ou qui plante sur une machine de l'Ecole ne sera pas pas examiné et sera considéré comme non rendu.
2) Ecrire un bref fichier README indiquant les questions traitées et contenant les réponses aux questions et tous les commentaires que vous jugerez utiles. Ce fichier doit être en PDF ou en HTML (en UTF-8) ou au format texte (en UTF-8 également). N'oubliez pas de mettre votre nom (au moins dans le README et de préférence aussi dans les autres fichiers)
3) Créer un fichier zip ou tar.gz (pas d'autre format!) contenant votre README et le code source (ne mettez pas l'executable ni les .o)
4) Aller à l'URL http://services.infres.enst.fr/rendutp/, cliquer (le bon ;-) lien puis entrer votre nom et télécharger le fichier zip ou tar.gz
NB: seule la dernière version téléchargée est prise en compte