[C] Astuces.
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

[C] Astuces.



  1. #1
    Cech

    [C] Astuces.


    ------

    Salut à tous !

    J'aimerais connaître les astuces pour écrire des codes plus courts (au delà du talent et de l'expérience, bien sur).
    Par exemple un prof a rapidement expliqué qu'on pouvait faire une condition avec un ? du genre a ? b puis d'autres éléments dernières.
    Comment ça marche ? Pouvez vous me donnez des exemples que j'essaie puis j'irai m'entraîner.

    -----

  2. #2
    Jack
    Modérateur

    Re : [C] Astuces.

    Ca va à l'encontre des usages de la programmation actuelle: le but est de rendre le code le plus lisible possible.
    Quel est l'intérêt de rendre le code source le plus court et le plus illisible possible?

  3. #3
    pm42

    Re : [C] Astuces.

    Citation Envoyé par Jack Voir le message
    Ca va à l'encontre des usages de la programmation actuelle: le but est de rendre le code le plus lisible possible.
    En effet. Il ne faut pas oublier que le C a été conçu à une époque où les ordinateurs étaient peu puissants, la mémoire très, très limitée et les écrans pas forcément disponibles : on utilisait clavier + imprimante. Sans parler des compilateurs qui n'optimisaient pas au même niveau qu'aujourd'hui.
    Dans ces conditions, faire un langage concis permettant au programmeur d'écrire du code optimisé et compilable efficacement avait du de sens.
    Aujourd'hui, beaucoup moins et même si on programme toujours en C, on essaie en effet de faire lisible, maintenable, etc.

    Citation Envoyé par Jack Voir le message
    Quel est l'intérêt de rendre le code source le plus court et le plus illisible possible?
    Aucun sauf pour gagner un concours : http://www.ioccc.org/

  4. #4
    lou_ibmix_xi

    Re : [C] Astuces.

    Citation Envoyé par Cech Voir le message
    on pouvait faire une condition avec un ? du genre a ? b puis d'autres éléments dernières.
    Comment ça marche ? Pouvez vous me donnez des exemples que j'essaie puis j'irai m'entraîner.
    pour répondre sur ce point précis, c'est l'opérateur ternaire "?:", le 1er opérande est la condition, l'opérande du milieu est évalué si vrai, sinon c'est l'opérande de gauche qui est évalué, c'est souvent utilisé pour une affectation conditionnelle en une ligne comme par exemple
    Code:
    int y = (y > 0) ? +y : -y;
    c'est juste un opérateur comme +, - ou *, sauf qu'il prend 3 opérandes.
    Mais, comme ça déjà été dit, il est important d'écrire le code pour qu'il soit compréhensible à la lecture, donc principalement une bonne organisation.

  5. A voir en vidéo sur Futura
  6. #5
    Bluedeep

    Re : [C] Astuces.

    Citation Envoyé par Cech Voir le message
    Par exemple un prof a rapidement expliqué qu'on pouvait faire une condition avec un ? du genre a ? b r.
    si c'est pour faire des trucs du genre :
    Code:
    a = (condition1) ? b : (condition2) ? c : (condition3) ? d : e;
    C'est le genre de conseil complétement idiot qui perturbe la lisibilité du code avec rigoureusement aucun benef en terme d'exécution (les optimiseurs des compilos sont capables de gérer ce genre d'artifice tous seuls comme des grands).

    Le prof a pas du souvent piloter des équipes de dev .....
    Dernière modification par Bluedeep ; 22/01/2016 à 10h15.

  7. #6
    quentin08

    Re : [C] Astuces.

    Salut,

    J'y connait absolument rien en C, mais comme dans tout langage, essaye de prendre le réflexe de définir des fonctions.
    Par exemple, si tu as un traitement complexe qui tient sur 1000 lignes, tu le mets dans la fonction, et tu l'appelles quand tu en as besoin.
    Ca évite d'avoir du code qui se répète, et c'est bien plus lisible.
    Dans ton programme, tes 1000 lignes ne tiendrons qu'en une seule
    A+
    Maximator c'est comme Actimel : ça agit à l'intérieur et ça se voit à l'extérieur

  8. #7
    pm42

    Re : [C] Astuces.

    Citation Envoyé par Bluedeep Voir le message
    C'est le genre de conseil complétement idiot qui perturbe la lisibilité du code avec rigoureusement aucun benef en terme d'exécution (les optimiseurs des compilos sont capables de gérer ce genre d'artifice tous seuls comme des grands).
    Pour les optimiseurs actuels c'est vrai et en C, effectivement, on peut éviter pour la lisibilité. Mais à une époque, cela diminuait le nombre de lignes et aidait bien le compilo.
    Dans d'autres langages, c'est pratique quand on a une syntaxe en if then else : on a une logique fonctionnelle.
    Au lieu de déclarer une variable et de l'affecter dans les 2 branches du if, on fait :

    val c = if(a>b) 1 else -1

    C'est lisible et logique en programmation fonctionnelle.

  9. #8
    Bluedeep

    Re : [C] Astuces.

    Citation Envoyé par pm42 Voir le message
    Pour les optimiseurs actuels c'est vrai et en C, effectivement, on peut éviter pour la lisibilité. Mais à une époque, cela diminuait le nombre de lignes et aidait bien le compilo.
    Certes, mais ma réponse était dans le contexte d'un prof qui donne ce conseil à des éléves en 2015. Ils n'ont que fort peu de chances de se trouver face un compilateur de 30 ans d'âge.
    De plus, relis mon message, je ne critique pas l'usage intrinsèque du
    Code:
     a = cond ? b : c
    , qui est parfaitement lisible , tout comme le
    Code:
    a = b ?? c
    mais son usage en imbrication, qui rend le code illisible.

    Dans d'autres langages, c'est pratique quand on a une syntaxe en if then else : on a une logique fonctionnelle.
    Oui, mais là encore, il est question du C en enseignement; les paradigmes fonctionnels ne rentrent pas ici en ligne de compte.

  10. #9
    pm42

    Re : [C] Astuces.

    Citation Envoyé par Bluedeep Voir le message
    Certes, mais ma réponse était dans le contexte d'un prof qui donne ce conseil à des éléves en 2015. Ils n'ont que fort peu de chances de se trouver face un compilateur de 30 ans d'âge.
    Oui mais je ne disais rien qui soit contradictoire avec ton affirmation et on est d'accord : tu peux regarder ma 1ère contribution à ce fil.
    Ma dernière intervention avec uniquement pour but de donner un contexte et d'élargir un peu l'horizon.

Discussions similaires

  1. Astuces d'arithmétique (spé math)
    Par jojo525 dans le forum Mathématiques du collège et du lycée
    Réponses: 2
    Dernier message: 14/11/2010, 12h17
  2. Devoir physique [Astuces ] SVP
    Par invitef4823c71 dans le forum Physique
    Réponses: 1
    Dernier message: 24/03/2009, 19h59
  3. Conseils, trucs, astuces...
    Par invited22e4027 dans le forum Orientation après le BAC
    Réponses: 14
    Dernier message: 19/07/2007, 21h09
  4. Les méthodes et astuces de l'électronique
    Par HULK28 dans le forum Électronique
    Réponses: 7
    Dernier message: 28/02/2006, 12h45
  5. Astuces santé
    Par invitef5ef2786 dans le forum Santé et médecine générale
    Réponses: 3
    Dernier message: 02/08/2005, 08h47