IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Syntaxe du code [Débutant(e)]


Sujet :

C

  1. #1
    Membre confirmé Avatar de Mysti¢
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 155
    Par défaut Syntaxe du code
    Bonjour, donc je continue ma petite série d'exercices ^^
    La il faillait faire un programme qui affiche une pyramide avec le nombre de ligne qu'on a spécifié au lancement du programme.
    La console doit donc afficher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Nombre de Lignes ?
    >> 5                                 /* Choisi par l'utilisateur */
     
    *
    **
    ***
    ****
    *****
    Donc mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <stdio.h>
    main() {
      int i;
      int lines;
      printf("Choisissez le nombre de lignes que devra faire la pyramide \n>>");
      scanf("%i", &lines);
      for (i=0; i<=lines; i++)
        printline(i);
    }
     
    int printline(x) {
      int j;
      char etoile;
      etoile = '*';
      for (j = 0;  j < x; j++)
        printf("%c", etoile);
      printf("\n");
     }
    Le code est fonctionnel, mais je voudrais savoir si il y'a pas des choses à éviter au niveau de la syntaxe voir inutiles..., la structure même du code (lisibilité).
    Si c'est mieux de séparer en fonctions même pour les petites opérations...
    Voilà

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Tout d'abord, on ecrit syntaxe.
    Ensuite:
    dans main():
    - le prototype de main() est incorrect;
    - que se passe-t-il si l'utilisateur entre autre chose qu'en entier? Quel est le comportement de scanf()? Comment y remedier? (La reponse a cette derniere question est complexe);
    - toute fonction utilisee doit etre definie avant son utilisation. Il manque donc le prototype de printline();
    - main() doit retourner un entier.

    dans printline():
    - La definition de printline() est incorrecte, il manque le type de x;
    - x n'est pas un nom de variable pratique, on ne sait pas a quoi elle correspond.

    en general:
    - meme si les accolades autour du bloc defini par for() sont optionnelles lorsqu'il n'y a qu'une expression dans le bloc, il est preferable de toujours les mettre (lisibilite, maintenance).

  3. #3
    Membre confirmé Avatar de Mysti¢
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 155
    Par défaut
    Citation Envoyé par DaZumba
    Tout d'abord, on ecrit syntaxe.
    Autant pour moi :X
    Citation Envoyé par DaZumba
    le prototype de main() est incorrect;
    Explicitement (pour un débutant) ça donne?
    Citation Envoyé par DaZumba
    main() doit retourner un entier
    Je vois souvent return 0; à la fin de certaines fonctions, même si j'en ai pas encore vraiment compris l'utilité.

    Sinon je ne sais pas si c'est à force de coder, si t'es bilingue ou encore si tu as un clavier QWERTY, mais les accents ça existe.

    Apart ça, merci pour tes recommandations que je vais d'ailleurs prendre en compte

  4. #4
    Membre chevronné Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Par défaut
    Citation Envoyé par Mysti¢
    Explicitement (pour un débutant) ça donne?
    Le fait est qu'il y a une norme à respecter ; il y a deux formes canoniques pour le main :
    et
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, char **argv)
    Il y a des compilateurs qui refusent de compiler si le main n'est pas écrit de cette façon et y en a qui émettent des warnings.
    Citation Envoyé par Mysti¢
    Je vois souvent return 0; à la fin de certaines fonctions, même si j'en ai pas encore vraiment compris l'utilité.
    Si mes souvenirs sont bons, le 0 correspond à la constante EXIT_SUCCESS qui signifie que le programme s'est exécuté comme il le faut.
    Citation Envoyé par DaZumba
    - toute fonction utilisee doit etre definie avant son utilisation. Il manque donc le prototype de printline();
    Il vaut mieux définir un .h pour chaque .c

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par Mysti¢
    Explicitement (pour un débutant) ça donne?
    Il y a de nombreux exemples dans ce forum. La norme donne deux formes pour le prototype de main():
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int main(int argc, char *argv[])
    La seconde forme permet de recuperer les arguments donne a l'executable. Tu la rencontreras plus tard dans ta formation.

    Je vois souvent return 0; à la fin de certaines fonctions, même si j'en ai pas encore vraiment compris l'utilité.
    Puisque main() est declare comme retournant un entier, il faut qu'on retourne cet entier. Les valeurs possibles sont 0, EXIT_SUCCESS et EXIT_FAILURE (ces deux constantes etant definies dans l'entete standard stdlib.h). Pour l'instant, tu peux t'en tenir a zero.

    Sinon je ne sais pas si c'est à force de coder, si t'es bilingue ou encore si tu as un clavier QWERTY, mais les accents ça existe.
    Je travaille et je vis en Angleterre. Mes claviers sont en effet QWERTY.

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par AL1986
    Il vaut mieux définir un .h pour chaque .c
    Je pense que Mysti¢ verra la compilation separee un peu plus tard. De plus, toutes les fonctions d'une unite de compilation ne sont pas declarees dans un entete (cf. fonctions qualifiees avec static).

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par AL1986
    Si mes souvenirs sont bons, le 0 correspond à la constante EXIT_SUCCESS qui signifie que le programme s'est exécuté comme il le faut.
    A vrai dire exit(EXIT_SUCCESS) a la même sémantique que exit(0). Mais EXIT_SUCCESS n'a pas forcément la valeur 0. Ca dépend du système.

  8. #8
    Membre confirmé Avatar de Mysti¢
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 155
    Par défaut
    Ok, merci pour vos réponses. Ca me permettra de partir sur de bonnes bases

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Incompréhension syntaxe de code
    Par cr4sh.64 dans le forum C++
    Réponses: 3
    Dernier message: 19/04/2011, 10h13
  2. Erreur de syntaxe dans code Java
    Par javaahm dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 05/04/2011, 10h59
  3. Que signifie cette syntaxe de code ?
    Par SPACHFR dans le forum C
    Réponses: 4
    Dernier message: 02/05/2007, 13h24
  4. probleme de syntaxe de code
    Par tounepistols dans le forum Access
    Réponses: 11
    Dernier message: 28/07/2006, 15h59
  5. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo