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 :

Petits complements simples pour m'instruire


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 212
    Par défaut Petits complements simples pour m'instruire
    Je viens de terminer mon premier programme de 30 lignes et j'ai appris 50 pages.
    Ca m'interesserait d'avoir quelques infos tres tres simples car mon bouquin "oublie" certaines explications que j'aimerais connaitre afin de ne rien laisser dans l'ombre. Certaines choses ne sont pas ..encore...expliquées.
    Merci de votre attention car je ne voudrais pas abuser.

    Void. C'est dans la liste des variables avec char int....

    * Tous ces programmes commencent par void main (void)
    Pourquoi une fois void et une seconde fois en (void) ?

    * La bibli std. # <include iostream> etc.. puis par exemple
    include time.h qui ne fait pas partie de std. D'ou le .h
    Et pourquoi 2 bibliotheques ? Tout ne pouvait pas etre dans une seule ?
    Ou sont listees ces 2 contenants ? Qui est dans std et qui est dans .h ?

    * Une valeur a virgule est toujours de type DOUBLE
    Si je transforme ça en FLOAT avec ceci
    float var2 = 12.34f;
    Que deviennent les 2 chiffres apres la virgule ( le point) ?
    En fait la difference entre FLOAT et DOUBLE n'est pas explicitée.
    Si DOUBLE a 2 decimales alors FLOAT n'en a qu'une ?

    * C'est quoi ce TEST entre 2 # dans une chaine ?
    cout << " #TEST # le nombre est :"


    Seulement 4 choses non expliquées sur 50 pages c'est tres peu !
    Meme sans comprendre je saurais utiliser mais mieux vaut bien savoir

    Bon dimanche

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par bigbernie
    Je viens de terminer mon premier programme de 30 lignes et j'ai appris 50 pages.
    Ca m'interesserait d'avoir quelques infos tres tres simples car mon bouquin "oublie" certaines explications que j'aimerais connaitre afin de ne rien laisser dans l'ombre. Certaines choses ne sont pas ..encore...expliquées.
    Merci de votre attention car je ne voudrais pas abuser.

    Void. C'est dans la liste des variables avec char int....

    * Tous ces programmes commencent par void main (void)
    Pourquoi une fois void et une seconde fois en (void) ?
    Le premier void indique que la fonction ne retourne rien, le second qu'il n'y a pas de paramètres. Mais...

    * la fonction main devrait retourner un int;
    * pour indiquer qu'une fonction n'a pas de paramètres, la méthode idiomatique en C++ est simplement de ne rien mettre entre les parenthèses (l'utilisation de void est autorisée par compatibilité avec le C où ne rien mettre entre les parenthèses a parfois un sens différent).

    * La bibli std. # <include iostream> etc.. puis par exemple
    include time.h qui ne fait pas partie de std. D'ou le .h
    Et pourquoi 2 bibliotheques ? Tout ne pouvait pas etre dans une seule ?
    Ou sont listees ces 2 contenants ? Qui est dans std et qui est dans .h ?
    Premièrement, il y a quatres concepts à ne pas confondre...
    * std est un namespace, un concept C++ qui permet de rassembler des définitions
    * iostream et time.h sont des entêtes qui permettent de récupérer un ensemble de déclarations
    * bibliothèque a au moins deux sens:
    - un ensemble de code destiné à fonctionner ensemble
    - un fichier rassemblant un ensemble de fichiers objets.

    Un bibliothèque dans le premier sens peut être formée de plusieurs bibliothèques dans le second.
    Il n'y a pas de relations a priori entre namespace et bibliothèque, même s'il est souvent pertinent de mettre le code composant une bibliothéque dans un ou plusieurs namespaces propres à la bibliothèque.

    La norme C défini une bibliothèque standard. time.h est un des entêtes contenant les déclarations de ce qui est défini dans la bibliothèque standard C.

    La norme C++ défini une bibliothèque standard pour le C++, qui comporte tout ce que contient la bibliothèque standard du C. Le contenu de la bibliothèque standard C++ est placé presque complètement dans le namespace std. Les entêtes contenant les déclarations permettant de se servir de la bibliothèque standard C++ n'ont en général pas d'extension. L'exception c'est les entêtes qui déclarent ce qui a été hérité du C qui ont une forme avec un .h identique à la forme définie par la norme C et une forme commencant par c et sans .h (donc time.h et ctime par exemple). La forme cxxx devrait mettre les déclarations uniquement dans le namespace std, la forme xxx.h met aussi les déclarations dans la portée globale. Certains préconisent d'utiliser la forme cxxx en C++, d'autres font remarquer que pour des raisons pragmatiques, la forme xxx.h a un comportement plus homogène.

    * Une valeur a virgule est toujours de type DOUBLE
    Si je transforme ça en FLOAT avec ceci
    float var2 = 12.34f;
    Que deviennent les 2 chiffres apres la virgule ( le point) ?
    En fait la difference entre FLOAT et DOUBLE n'est pas explicitée.
    Si DOUBLE a 2 decimales alors FLOAT n'en a qu'une ?
    - premièrement, les flottants ne stockent pas les nombres sous forme décimales mais sous forme binaires, réfléchir en décimal avec eux pose rapidement des problèmes
    - la différence entre double et float, c'est la précision; les doubles ont plus de chiffres (binaires) significatifs

    * C'est quoi ce TEST entre 2 # dans une chaine ?
    cout << " #TEST # le nombre est :"
    Aucune signification technique, c'est juste une partie de la chaîne à afficher.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 212
    Par défaut
    Merci
    Je comprend pourquoi ce n'etait pas encore le moment d'expliquer. Je verrai ça a la page... 500 !

    Concernant le (void) c'est donc comme le NULL qui ici n'est plus indispensable !

    srand ( (int)time(NULL) );

    Bonne soirée.

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 641
    Par défaut
    Salut,
    Citation Envoyé par bigbernie
    Merci
    Je comprend pourquoi ce n'etait pas encore le moment d'expliquer. Je verrai ça a la page... 500 !

    Concernant le (void) c'est donc comme le NULL qui ici n'est plus indispensable !

    srand ( (int)time(NULL) );

    Bonne soirée.
    Non...

    En fait, void, c'est plutot un type (on pourrait dire au meme titre que int, char, float ou double), alors que NULL est une valeur (au meme titre que 1, 2, 3,'a' ou...)

    Le fait est - surtout - que NULL a une fonction "documentaire", qui est - généralement - utilisée pour indiquer que l'on a affaire à un pointeur dont l'adresse est invalide (ou du moins indéfinie) et qui *peut* etre remplacer par la simple valeur 0 (ce que beaucoup font d'ailleurs)

    Dans la commande srtand( (int)time(NULL) ); il faut savoir que l'on a en fait trois commandes en une:

    La premiere est time(NULL), qui renvoie un objet de type time_t (un type capable de contenir des mesures de temps et de supporter les opérations arithmétiques), et qui prend en argument... un pointeur de type tyme_t.

    Si le pointeur n'est pas NULL, la fonction fournis la valeur renvoyée à l'objet pointé par l'argument

    La deuxieme (int)time(NULL) signifie "convertir en entier la valeur renvoyée par time(NULL)

    La troisième, enfin srand( (int)time(NULL) ), signifie "fournit le résultat de cla convertion en entier de la valeur renvoyée par time(NULL) en argument à la commande srand"...
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Aide pour petits programmes simples
    Par sebas450 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/12/2012, 20h03
  2. Réponses: 0
    Dernier message: 11/03/2012, 17h42
  3. Réponses: 3
    Dernier message: 22/12/2011, 22h33
  4. [AC-2003] petit truc simple a part pour moi (concaténation dans une boucle)
    Par b.billet85 dans le forum VBA Access
    Réponses: 7
    Dernier message: 04/08/2010, 13h04
  5. Aide pour petit programme simple
    Par popane42 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 05/04/2008, 11h25

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