Travaux pratiques 4H
DATE:24 /05/2018
Pré-requis
Cours de C de base , fichiers, fonctions, compilation Gcc
usage de workboot
Passage de paramètres (argc et argv)
Usage de GDB
But
Prise en mains des outils et des concepts de bases du C
Faire un peu de dessin en mode texte
Outils de debug (gdg)
Vos tp seront rédigés au format pdf envoyés sur l' émail avec une archive du tp complet au format tar:
polytech1@workboot.fr !
La qualité de la rédaction entre dans votre note , et les initiatives peuvent apporter beaucoup de points dans la notation.
Réaliser un programme Bonjour le monde !
>./bonjour
>Bonjour le monde !
>
Même résultat que la V1 mais avec un passage de paramètre du nom
>./bonjour mr tux
>Bonjour le monde et Mister tux
>./bonjour
>Veuillez entrer votre titre (mr ou mme) et votre nom svp
>./bonjour mr
>Veuillez entrer votre nom après la commande mr
>./bonjour le monde et Mister Polytech
>Bonjour mr Polytech
>./bonjour mme Polytech
>Bonjour le monde et Miss Polytech.
Ici le fait de passer le paramètre mr ou mme votre programme sait que c'est le nom dans le paramètre suivant, et capable d'utiliser Mister ou Miss . Il est faudrait que votre programme ne soit pas sensible à la casse , mr pareil MR et que mR , et mme pareil de MME etc ..
l faut prévoir un traitement des erreurs possibles et rendre votre programme convivial.
comme :
>./Bonjour truc
Veuillez me donner des paramètres cohérents.
>./bonjour mr
On peut avoir les caractères de la chaîne avec argv[1][0]='m'
et argv[1][1]='r'
Mais nous avons vu en cours, comment comparer 2 chaines.
Pareil que V2, mais utiliser la librairie string.h
pour comparer les chaines (ici mr) strcmp
pour plus d'information :
int strcmp(const char *, const char *);
./rserie 10000 2000
la fonction vue en cours atoi est préconisée
Donne le résultat de 2 résistors pour son équivalent série.
Vous pouvez étendre à n éléments
./rserie 1000 2000 5000 6000 80000 .....
./rpara 10000 2000
idem en parallèle
Vous pouvez étendre à n éléments
./rpara 1000 2000 5000 6000 80000 .....
Écrire un programme qui permet d'afficher ce magnifique sapin ! (boucles obligatoire)
>./sapin 4
*
***
*****
*******
ici 4 est un exemple .. il accepte de 1 à 25
Prévoir un traitement des erreurs ..
>./sapinplus 4
*
***
*****
*******
*
*
Écrire un programme qui dessine un graphe en barres
./bargraph or 10 ag 5 zc 6 cu 9
Il analysera les données , relever la plus grande qui permettra de choisir un 100 % (24 max) et placer des rectangles en fonctions du nombres d 'éléments.
Quand ça n'est plus affichable un message d'erreur sera renvoyé.
ex de résultat :
./bargraph or 10 ag 5 zc 6 cu 9
**
** **
** ** **
** ** **
** ** **
** ** ** **
** ** ** **
** ** ** **
** ** ** **
** ** ** **
or ag zc cu
wikipedia de la suite de Fibonacci
donner un code qui va nous donner les éléments de la suite de Fibonacci
exemple :
./fibonacci 11
Les 11 premiers termes de la série de Fibonacci sont:
0 1 1 2 3 5 8 13 21 34 55
ici le paramètre est 10 donc la programme va nous afficher F0 à F10
0+1=1
1+1=2
1+2=3
2+3=5
3+5=8 ....
pour vous aider on préconise nbr, qui contiendra l'argument passé (nombre d’élément de la suite)
n1 : élément de la suite
n2: le suivant
suite qui sera la somme n1+n2
en déduire le programme qui donnera le bon résultat.
int main(int argc, char **argv)
{
int nbr, n1 = 0, n2 = 1, cpt=2, suite;
Pourquoi le 48 ème éléments de la suite est donné négatif. (en rouge ici)
bruno@workboot:~/Works/fibonacci $ ./fibonacci 47
Les 47 premiers termes de la série de Fibonacci sont:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903
bruno@workboot:~/Works/fibonacci $ ./fibonacci 48
Les 48 premiers termes de la série de Fibonacci sont:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 -1323752223
Le nombre d'or que l'on retrouve dans la nature le plus précis que l'on peut avoir avec notre programme est
nombre d'or = n2 / n1
le rapport des 2 derniers nombres de la suite donne ce nombre d'or.
8/5 = 1,8
21/13=1,615384615
C'est un chiffre qui donnerai de belle proportion ! qu'on retrouve dans la nature.
1836311903/1134903170= 1,618033989
Voir le wikipedia , Léonard de Vinci en était fan !