Programme 1: nombre premier
Ci-dessous un petit programme en C qui permet de déterminer si un nombre est premier ou non: is_prime.c
L'image ci-dessous montre:
- la version du compilateur gcc utilisé (gcc version 8.3.0)
- la commande qui permet de compiler notre (unique) fichier (gcc is_prime.c -o is_prime.o)
- quelques exécutions du programme sous kubuntu 19.04
# Version de gcc
prabou@prabou-VPCZ23C5E:~/Téléchargements$ gcc --version
gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# Version de gcov
prabou@prabou-VPCZ23C5E:~/Téléchargements$ gcov --version
gcov (Ubuntu 8.3.0-6ubuntu1) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.
prabou@prabou-VPCZ23C5E:~/Téléchargements$ gcc -fprofile-arcs -ftest-coverage is_prime.c -o is_prime.o
prabou@prabou-VPCZ23C5E:~/Téléchargements$ ./is_prime.o
Please enter the number:
37
The number is prime
prabou@prabou-VPCZ23C5E:~/Téléchargements$ gcov is_prime.c
File 'is_prime.c'
Lines executed:75.00% of 12
Creating 'is_prime.c.gcov'
# Installation de gcovr
prabou@prabou-VPCZ23C5E:~/Téléchargements$ pip3 install gcovr
Collecting gcovr
Downloading https://files.pythonhosted.org/packages/65/3a/0b049c91cadaafa93cc7511aa2885b513e1ce71945a87d57858a06c9af47/gcovr-4.1-py2.py3-none-any.whl
Collecting jinja2 (from gcovr)
Downloading https://files.pythonhosted.org/packages/1d/e7/fd8b501e7a6dfe492a433deb7b9d833d39ca74916fa8bc63dd1a4947a671/Jinja2-2.10.1-py2.py3-none-any.whl (124kB)
100% |████████████████████████████████| 133kB 2.2MB/s
Collecting MarkupSafe>=0.23 (from jinja2->gcovr)
Downloading https://files.pythonhosted.org/packages/98/7b/ff284bd8c80654e471b769062a9b43cc5d03e7a615048d96f4619df8d420/MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl
Installing collected packages: MarkupSafe, jinja2, gcovr
Successfully installed MarkupSafe-1.1.1 gcovr-4.1 jinja2-2.10.1
# Compilation
prabou@prabou-VPCZ23C5E:~/Téléchargements$ gcc -fprofile-arcs -ftest-coverage -g -O0 is_prime.c -o is_prime.o
prabou@prabou-VPCZ23C5E:~/Téléchargements$ ./is_prime.o
Please enter the number:
2047
The number is not prime
# Instrumentation
prabou@prabou-VPCZ23C5E:~/Téléchargements$ gcovr -r . --html --html-details -o coverage.html
prabou@prabou-VPCZ23C5E:~/Téléchargements$ ls -lrt
-rw-rw-r-- 1 prabou prabou 532 mai 23 19:01 is_prime.c
-rw-rw-r-- 1 prabou prabou 904 mai 23 21:00 is_prime.gcno
-rwxrwxr-x 1 prabou prabou 30272 mai 23 21:00 is_prime.o
-rw-rw-r-- 1 prabou prabou 244 mai 23 21:00 is_prime.gcda
-rw-rw-r-- 1 prabou prabou 7804 mai 23 21:01 coverage.html
-rw-rw-r-- 1 prabou prabou 13989 mai 23 21:01 coverage.is_prime.c.html
prabou@prabou-VPCZ23C5E:~/Téléchargements$
Le fichier coverage.html ressemble à ceci:
Et si on clique sur is_prime.c on obtient ceci:
Programme 2: écrire dans un fichier
Ci-dessous un petit programme en C qui permet d'écrire dans un fichier: file_operations.c
L'image ci-dessous montre:
- la création puis l'ouverture du fichier test.txt en écriture ainsi que sa fermeture
- l'utilisation des fonctions fputc, fputs et fprintf
prabou@prabou-VPCZ23C5E:/tmp/mozilla_prabou0$ which gcc /usr/bin/gcc prabou@prabou-VPCZ23C5E:/tmp/mozilla_prabou0$ gcc --version gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. prabou@prabou-VPCZ23C5E:/tmp/mozilla_prabou0$ gcc file_operations.c -o file_operations.o prabou@prabou-VPCZ23C5E:/tmp/mozilla_prabou0$ ls -ltr total 32 -r-------- 1 prabou prabou 945 oct. 27 11:38 file_operations.c -rwxrwxr-x 1 prabou prabou 16800 oct. 27 11:46 file_operations.o prabou@prabou-VPCZ23C5E:/tmp/mozilla_prabou0$ ./file_operations.o Quel age avez-vous ? 39 prabou@prabou-VPCZ23C5E:/tmp/mozilla_prabou0$ ls -ltr total 36 -r-------- 1 prabou prabou 945 oct. 27 11:38 file_operations.c -rwxrwxr-x 1 prabou prabou 16800 oct. 27 11:46 file_operations.o -rw-rw-r-- 1 prabou prabou 86 oct. 27 11:46 test.txt prabou@prabou-VPCZ23C5E:/tmp/mozilla_prabou0$ cat test.txt ASalut les Zer0s Comment allez-vous? Le Monsieur qui utilise le programme, il a 39 ans prabou@prabou-VPCZ23C5E:/tmp/mozilla_prabou0$