cherche une aide pour la présentation

cherche une aide pour la présentation - C - Programmation

Marsh Posté le 08-09-2006 à 13:22:27    

Bonjour,
 
voilà je débute en c, et y'a quelque temps on m'a dis que j'avais pas une bonne méthode d'apprentissage, donc je m'y suis remis en essayant de respecter certaines normes
 
voilà un petit programme que j'ai fait, ça serait sympa si quelqu'un pourrait me dire si au niveau de la présentation ( les {, les espaces, les if) est-ce que c'est bon, je demande pas de me dire que le programme peut être simplifié (ça je le sais), mais je cherche juste à savoir si il est présenté dans les normes, ou si la présentation peut être améliorée.
 
Merci pour toute âme charitable qui pourrait m'aider ;)
 
 

Code :
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. typedef struct {
  5.    char nom[15], pr[15], pref[15], ville[15], rue[15];
  6.    int tel;
  7. } contact;
  8. contact c[100], res[100];
  9. int i, n, rech_tel,choix,rang;
  10. char rech_ch[15];
  11. int main()
  12. {
  13.    clrscr();
  14.    printf("\t\t\tGESTION DE CONTACT\n\n\n" );
  15.    printf("Entrez le nombre de contact : " );
  16.    scanf("%d", &n);
  17.    /*SAISIE*/
  18.    for (i = 0; i < n; i++)
  19.    {
  20.        clrscr();
  21.        printf("\t\t\tContact N°%d\n\n\n" );
  22.        printf("Nom        : " );
  23.        scanf("%s", &c[i].nom);
  24.        printf("Prénom     : " );
  25.        scanf("%s", &c[i].pr);
  26.        printf("Rue        : " );
  27.        scanf("%s", &c[i].rue);
  28.        printf("Préfecture : " );
  29.        scanf("%s", &c[i].pref);
  30.        printf("Ville      : " );
  31.        scanf("%s", &c[i].ville);
  32.        printf("Numéro Tél : " );
  33.        scanf("%d", &c[i].tel);                                     
  34.    }
  35.    /*RECHERCHE*/
  36.    clrscr();
  37.    gotoxy(35, 4);
  38.    printf("RECHERCHE" );
  39.    gotoxy(28, 7);
  40.    printf("1 --------> Nom" );
  41.    gotoxy(28, 9);
  42.    printf("2 --------> Prénom" );
  43.    gotoxy(28, 11);
  44.    printf("3 --------> Rue" );
  45.    gotoxy(28, 13);
  46.    printf("4 --------> Préfecture" );
  47.    gotoxy(28, 15);
  48.    printf("5 --------> Ville" );
  49.    gotoxy(28, 17);
  50.    printf("6 --------> Numéro tél" );
  51.    gotoxy(33, 20);
  52.    printf("Entrez votre choix : " );
  53.    scanf("%d", &choix);
  54.    switch (choix) {
  55.      case 1:
  56.  clrscr();
  57.  printf("Entrez le nom à rechercher : " );
  58.  scanf("%s", &rech_ch);
  59.  rang = -1;
  60.          i = 0;
  61.  while ((rang == -1) && (i < n)) {
  62.      if (strcmp(c[i].nom, rech_ch) == 0)
  63.   rang = i;
  64.              else
  65.          i = i + 1;
  66.  }
  67.  if (rang != -1) {
  68.      printf("\n\nNom : %s", c[rang].nom);
  69.      printf("\nPrénom : %s", c[rang].pr);
  70.      printf("\nRue : %s", c[rang].rue);
  71.      printf("\nPréfecture : %s", c[rang].pref);
  72.      printf("\nVille : %s", c[rang].ville);
  73.      printf("\nNuméro Tél : %d", c[rang].tel);
  74.  }
  75.  break;
  76.      case 2:
  77.          clrscr();
  78.  printf("Entrez le prénom à rechercher : " );
  79.  scanf("%s", &rech_ch);
  80.          rang = -1;
  81.  for (i = 0; i < n; i++)
  82.      if (strcmp(c[i].pr, rech_ch) == 0) {
  83.  rang = i;
  84.  printf("\n\nNom : %s", c[rang].nom);
  85.         printf("\nPrénom : %s", c[rang].pr);
  86.         printf("\nRue : %s", c[rang].rue);
  87.         printf("\nPréfecture : %s", c[rang].pref);
  88.         printf("\nVille : %s", c[rang].ville);
  89.  printf("\nNuméro Tél : %d", c[rang].tel);
  90.  printf("\n\n\n" );
  91.                 getch();
  92.      }
  93.      else
  94.  i = i + 1;
  95.   break;
  96.      case 3:
  97.  clrscr();
  98.  printf("Entrez la rue à rechercher : " );
  99.  scanf("%s", &rech_ch);
  100.  rang = -1;
  101.  for (i = 0; i < n ; i++)
  102.      if (strcmp(c[i].rue, rech_ch) == 0) {
  103.  rang = i;
  104.  printf("\n\nNom : %s", c[rang].nom);
  105.         printf("\nPrénom : %s", c[rang].pr);
  106.         printf("\nRue : %s", c[rang].rue);
  107.         printf("\nPréfecture : %s", c[rang].pref);
  108.         printf("\nVille : %s", c[rang].ville);
  109.  printf("\nNuméro Tél : %d", c[rang].tel);
  110.  printf("\n\n\n" );
  111.  getch();
  112.              }
  113.      else
  114.  i = i + 1;
  115.   break;
  116.       case 4:
  117.   clrscr();
  118.   printf("Entrez la préfecture à rechercher : " );
  119.   scanf("%s", &rech_ch);
  120.   rang = -1;
  121.   for (i = 0; i < n; i++)
  122.       if (strcmp(c[i].pref, rech_ch) == 0) {
  123.   rang = i;
  124.   printf("\n\nNom : %s", c[rang].nom);
  125.          printf("\nPrénom : %s", c[rang].pr);
  126.          printf("\nRue : %s", c[rang].rue);
  127.          printf("\nPréfecture : %s", c[rang].pref);
  128.          printf("\nVille : %s", c[rang].ville);
  129.   printf("\nNuméro Tél : %d", c[rang].tel);
  130.   printf("\n\n\n" );
  131.   getch();
  132.               }
  133.               else
  134.   i = i + 1;
  135.   break;
  136.       case 5:
  137.   clrscr();
  138.   printf("Entrez la ville à rechercher : " );
  139.   scanf("%s", &rech_ch);
  140.   rang = -1;
  141.   for (i = 0; i < n; i++)
  142.       if (strcmp(c[i].ville, rech_ch) == 0) {
  143.          rang =  i;
  144.          printf("\n\nNom : %s", c[rang].nom);
  145.          printf("\nPrénom : %s", c[rang].pr);
  146.          printf("\nRue : %s", c[rang].rue);
  147.          printf("\nPréfecture : %s", c[rang].pref);
  148.          printf("\nVille : %s", c[rang].ville);
  149.   printf("\nNuméro Tél : %d", c[rang].tel);
  150.   printf("\n\n\n" );
  151.   getch();
  152.               }
  153.               else
  154.   i = i + 1;
  155.   break;
  156.       case 6:
  157.   clrscr();
  158.   printf("Entrez le numéro de Tél à rechercher : " );
  159.   scanf("%d", &rech_tel);
  160.   rang = -1;
  161.   for (i = 0; i < n; i++)
  162.       if (c[i].tel == rech_tel) {
  163.   rang =  i;
  164.          printf("\n\nNom : %s", c[rang].nom);
  165.          printf("\nPrénom : %s", c[rang].pr);
  166.          printf("\nRue : %s", c[rang].rue);
  167.          printf("\nPréfecture : %s", c[rang].pref);
  168.          printf("\nVille : %s", c[rang].ville);
  169.   printf("\nNuméro Tél : %d", c[rang].tel);
  170.   printf("\n\n\n" );
  171.   getch();
  172.               }
  173.               else
  174.   i = i + 1;
  175.   break;
  176.       default:
  177.   clrscr();
  178.   printf("Choix Erroné" );
  179.     }
  180.     if (rang == -1)
  181.        printf("L'objet recherché n'existe pas" );
  182.   getch();
  183.   return 0;
  184. }

Reply

Marsh Posté le 08-09-2006 à 13:22:27   

Reply

Marsh Posté le 08-09-2006 à 13:31:08    

exhortae a écrit :

voilà un petit programme que j'ai fait, ça serait sympa si quelqu'un pourrait me dire si au niveau de la présentation ( les {, les espaces, les if) est-ce que c'est bon, je demande pas de me dire que le programme peut être simplifié (ça je le sais), mais je cherche juste à savoir si il est présenté dans les normes, ou si la présentation peut être améliorée.


Il n'y a pas véritablement de 'norme de présentation'. Il y a plutôt des pratiques courantes plus ou moins imposées sur certains projets ou dans certaines boites. L'important est d'être lisible et cohérent. Le code que tu as soumis est correct de ce point de vue.
 
Personnellement, j'utilise GNU Indent version 1.91 avec certains reglages qui me conviennent pour formatter mon code, et celui-ci a automatiquement une présentation correcte à mes yeux.
 
Exemples : http://mapage.noos.fr/emdel/clib.htm
Conseils : http://mapage.noos.fr/emdel/codage.htm [EDIT]

Message cité 1 fois
Message édité par Emmanuel Delahaye le 08-09-2006 à 22:23:54

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 08-09-2006 à 13:34:53    

Emmanuel Delahaye a écrit :

Il n'y a pas véritablement de 'norme de présentation'. Il y a plutôt des pratiques courantes plus ou moins imposées sur certains projets ou dans certaines boites. L'important est d'être lisible et cohérent. Le code que tu as soumis est correct de ce point de vue.
 
Personnellement, j'utilise GNU Indent version 1.91 avec certains reglages qui me conviennent pour formatter mon code, et celui-ci a automatiquement une présentation correcte à mes yeux.
 
Exemples : http://mapage.noos.fr/emdel/clib.htm
Conseils : http://mapage.noos.fr/emdel/notes.htm


 
oki,
 
et merci pour les liens ;)

Reply

Marsh Posté le 09-09-2006 à 20:33:06    

oui, l'indentation laisse un peu à désirer... surtout que tu utilise les accolade ouvrantes en fin de ligne. Il n'y a pas de norme, bien que dans certains projets des notations particulières soient imposées, la plupart du temps juste un peu de bon sens et de la cohérence suffit.

Reply

Marsh Posté le 10-09-2006 à 02:23:44    

nargy a écrit :

oui, l'indentation laisse un peu à désirer... surtout que tu utilise les accolade ouvrantes en fin de ligne. Il n'y a pas de norme, bien que dans certains projets des notations particulières soient imposées, la plupart du temps juste un peu de bon sens et de la cohérence suffit.


 
"Accolades en ligne laissent à désirer" je ne suis pas tout à fait d'accord. C'est la manière qu'utilisaient Kernighan et Ritchie, les inventeurs du C et c'est également la manière que nous a présenté un prof à nous. Cependant je suis tout à fait d'accord, ce n'est pas très lisible et ne permet pas de différencier facilement les blocs et personnellement je déteste cette présentation. Je préfère l'indentation  
for (...)
{
-----
 
}  
 
à
 
for (...) {
 
------
 
}

Reply

Marsh Posté le 10-09-2006 à 07:20:37    

"Accolades en ligne laissent à désirer"
 
Non, non je n'ai pas dit ça du tout.
 
Je fait remarquer que si on utilise cette notation il est très important de respecter l'indendation pour une bonne lecture.

Reply

Marsh Posté le 10-09-2006 à 20:55:52    

J'ai décider d'abandonner l'utilisation d'accolande ouvrantes en fin de lignes (difficle de s'y retrouver), par contre nargy, je comprends pas très bien quand tu dis l'indentation laisse à désirer, dans quel cas c'est pas bon chez moi ??

Reply

Marsh Posté le 10-09-2006 à 21:34:13    

Par exemple, lignes 190-196, tu as une série de printf qui ne sont pas alignés, ce qui rends difficile la lecture du corps de boucle. Et quand tu cherches l'accolade ouvrante ce n'est pas facile car elle est en fin de ligne.

Reply

Marsh Posté le 11-09-2006 à 03:46:35    

nargy a écrit :

"Accolades en ligne laissent à désirer"
 
Non, non je n'ai pas dit ça du tout.
 
Je fait remarquer que si on utilise cette notation il est très important de respecter l'indendation pour une bonne lecture.


 
A pardon j'ai mal compris. Je pensais que tu disais que l'indentation laissait à désirer ainsi que l'ouverture des accolades en fin de ligne. Autant pour moi. Désolé.


Message édité par miagiste-turc le 11-09-2006 à 03:47:54
Reply

Marsh Posté le 11-09-2006 à 14:13:01    

nargy a écrit :

Par exemple, lignes 190-196, tu as une série de printf qui ne sont pas alignés, ce qui rends difficile la lecture du corps de boucle. Et quand tu cherches l'accolade ouvrante ce n'est pas facile car elle est en fin de ligne.


 
y'a du avoir un soucis lors du copier coller, parceque sur mon compilateur ils sont alignés ;)
 
 

Reply

Marsh Posté le 11-09-2006 à 14:13:01   

Reply

Marsh Posté le 11-09-2006 à 15:23:39    

Y a un mélange d'espaces et de tabulations, je pense, surtout.
 
Pour pallier au problème de différence d'indentation entre différents outils, je force systématiquement les tabulations émulées (à quatre espaces parce que huit c'est trop et que je le vaux bien).
Comme ça, quel que soit l'éditeur que tu utilises, tu conserves la même indentation.

Reply

Marsh Posté le 11-09-2006 à 15:44:41    

Elmoricq a écrit :

Pour pallier au problème de différence d'indentation entre différents outils, je force systématiquement les tabulations émulées (à quatre espaces parce que huit c'est trop et que je le vaux bien).
Comme ça, quel que soit l'éditeur que tu utilises, tu conserves la même indentation.


Pareil avec 3 espaces.


Message édité par Emmanuel Delahaye le 11-09-2006 à 15:44:54

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 11-09-2006 à 20:42:48    

Elmoricq a écrit :

Y a un mélange d'espaces et de tabulations, je pense, surtout.
 
Pour pallier au problème de différence d'indentation entre différents outils, je force systématiquement les tabulations émulées (à quatre espaces parce que huit c'est trop et que je le vaux bien).
Comme ça, quel que soit l'éditeur que tu utilises, tu conserves la même indentation.


 
 
oui effectivement y'avait un cocktail de tabulations et d'espaces :D
 
je viens de voir que dans borland on peut changer la taille des tabulations ce que je ne savais pas, je viens de mettre 4 au lieu de 8.
 
merci :)

Reply

Marsh Posté le 11-09-2006 à 22:11:28    

exhortae a écrit :

je viens de voir que dans borland on peut changer la taille des tabulations ce que je ne savais pas, je viens de mettre 4 au lieu de 8.


Attention, la 'taille des tabulations' n'est pas portable. Ce qui l'est, c'est de remplacer les tabulations par un nombre fixe d'espaces (2,3,4...). C'est aussi un reglage de la plupart des éditeus de textes orienté programmation.


Message édité par Emmanuel Delahaye le 11-09-2006 à 22:11:55

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 12-09-2006 à 21:49:35    

Citation :


(à quatre espaces parce que huit c'est trop et que je le vaux bien).


Deux espaces pour ma part, j'ai tendance à ne pas faire assez de fonctions, vous me direz, et vous auriez raison.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed