Progammation en C++

Tout et rien, sauf à propos de KSP ! Le quotidien de Mr Tout le monde en somme
Avatar de l’utilisateur
switchON
Messages : 130
Inscription : 22 janvier 2013, 13:09
Contact :

Re: Progammation en C++

Message par switchON » 21 février 2013, 20:49

Charvalos a écrit :Attention, en JAVA, il y a quand même des pointeurs.
Oo ben non...
Il y a en effet des "références" mais elles sont gérées automatiquement et sont totalement invisibles pour le programmeur. Une référence est "l'adresse" d'un objet. En java, tout objet issu d'une classe est une référence, mais tout type genre Int, Double etc n'en est pas un (juste une valeur). Donc modifier un objet donné en argument influera sur cet objet, tandis que les types ne seront qu'une "copie", donc obligé d'utiliser un return.

Mais jamais la notion de pointeurs n’apparaît, vue que de toute façon il y a un Gerbage Collector qui s'occupe de supprimer les emplacements mémoires qui ne sont plus utilisés (c'est d'ailleurs à cause de lui que JAVA est plutôt lent).

Avatar de l’utilisateur
Charvalos
Messages : 105
Inscription : 01 janvier 2013, 18:04
Contact :

Re: Progammation en C++

Message par Charvalos » 21 février 2013, 20:51

Quand je disais qu'il y en avait, j'aurais dû préciser qu'ils étaient gérés automatiquement.

Mais je suis d'accord avec toi. ^^

Avatar de l’utilisateur
switchON
Messages : 130
Inscription : 22 janvier 2013, 13:09
Contact :

Re: Progammation en C++

Message par switchON » 21 février 2013, 20:52

Ah oui ^^ Tu m'as fais peur =P. D'ailleurs hormis le C++ et Objective C, je connais pas trop de langages ayant des pointeurs.. (moi même j'en suis pas fan).

Avatar de l’utilisateur
nicomak
Messages : 255
Inscription : 19 décembre 2012, 01:07
Contact :

Re: Progammation en C++

Message par nicomak » 21 février 2013, 23:57

ba c'est pas si compliqué les pointeurs faut juste bien se représenter ce qu'on fait, se faire un dessin si besoin, ça aide à visualiser, faut pas hésiter à se rendre les choses plus compréhensibles.

genre pour supprimer l'élément au milieu d'une liste doublement chaînée, ou gérer un tableau dynamique de tableaux dynamiques xD

au final ce n'est qu'une variable contenant l'adresse d'une autre variable.
une variable de type "adresse mémoire" si on veut.
la difficulté vient du fait qu'il ne faut pas perdre l'adresse de la variable avant de l'avoir libérée, et de bien savoir là où on pointe.
_______>>>____Ma chaîne Youtube et la page facebook correspondante____<<<_______

Image

Avatar de l’utilisateur
Stellaris
Messages : 980
Inscription : 14 décembre 2012, 20:45
Localisation : Derrière-toi
Contact :

Re: Progammation en C++

Message par Stellaris » 22 février 2013, 11:55

Je vous remercie vraiment pour tout vos conseils !
En fait, j’apprends le C++ pour mieux pouvoir appréhender le C#, afin de faire des plugins pour un certain jeu que nous connaissons bien.
Et pour ce qui est des pointeurs, j'ai rapidement compris le principe, après il faut que je trouve comment bien les utiliser !
J'en suis à faire un programme console avec calcul de racine carrée, de puissance, d'addition, de soustraction, de multiplication et de division.(avec bientôt sin et cosin avec choix radian/degré.)

Avatar de l’utilisateur
Stellaris
Messages : 980
Inscription : 14 décembre 2012, 20:45
Localisation : Derrière-toi
Contact :

Re: Progammation en C++

Message par Stellaris » 22 février 2013, 15:36

Voici mon programme calculatrice :
http://www.sendspace.com/file/mljnak


Ainsi que le code :
http://www.sendspace.com/file/xqo0xl

N'hésitez pas à me conseiller et à améliorer mon programme !

Avatar de l’utilisateur
Ecle31
Messages : 49
Inscription : 29 décembre 2012, 22:05
Contact :

Re: Progammation en C++

Message par Ecle31 » 22 février 2013, 17:12

Salut,

Je viens de test ta calculatrice et il y a 2-3 truc qu'on peut en dire :

-Ca marche ! :D (bon c'est tout con a dire, mais c'est déja un bon début quand on commence dans la programmation)

-Un truc que je t'invite grandement a faire c'est de mettre des commentaires ( //ton commentaire ou /* ton commentaire sur plusieurs lignes */) a peu près partout. Ici ça peut paraître un peu inutile (prog assez simple et facilement lisible) mais je peux t'assurer que par la suite si tu fais un prog un poil plus compliqué sans commentaire et que tu y reviens 2 semaines plus tard sans y avoir toucher tu n'y comprendra plus rien.

-Pour simplifier un peu ton programme, tu peux remplacer la cascade de fonction "if" par une fonction "switch"
au lieu de

Code : Tout sélectionner

    cin >> operation;
    if (operation == 1)
    {
         cout << "Bienvenue dans le programme d'addition !" << endl;
        cout << "Choisissez une valeur pour a :" << endl;
        cin >> a1;
        cout << "Choisissez une valeur pour b :" << endl;
        cin >> b1;
    resultat1 = a1 + b1;
    cout << "Le resultat est : " << resultat1 << "." << endl;
    }
    if (operation == 2)
    {
        cout << "Bienvenue dans le programme de soustraction !" << endl;
        cout << "Choisissez une valeur pour a :" << endl;
        cin >> a1;
        cout << "Choisissez une valeur pour b :" << endl;
        cin >> b1;
        resultat1 = a1 - b1;
    cout << "Le resultat est : " << resultat1 << "." << endl;
    }
tu peux faire

Code : Tout sélectionner

    cin >> operation;
    switch(operation)
    {
        case 1:
        {
            cout << "Bienvenue dans le programme d'addition !" << endl;
            cout << "Choisissez une valeur pour a :" << endl;
            cin >> a1;
            cout << "Choisissez une valeur pour b :" << endl;
            cin >> b1;
            resultat1 = a1 + b1;
            cout << "Le resultat est : " << resultat1 << "." << endl;
            break;
        }
        case 2:
        {
            cout << "Bienvenue dans le programme de soustraction !" << endl;
            cout << "Choisissez une valeur pour a :" << endl;
            cin >> a1;
            cout << "Choisissez une valeur pour b :" << endl;
            cin >> b1;
            resultat1 = a1 - b1;
            cout << "Le resultat est : " << resultat1 << "." << endl;
            break;
        }
    }
Attention a ne pas oublier le "break;" sinon tout foire.

-Toujours pour simplifier le programme, au lieu de demander a, puis demander b tu pourrais éventuellement les demander en même temps (c'est plus dans l'idée d'améliorer l'expérience utilisateur). Par contre en C++ avec du cin() je sais plus exactement la syntaxe pour faire des demandes plus complexes, j'ai du voir ça une semaine en cours puis on est passer uniquement sur du C (je fais des prog pour micro-contrôleur et le C++ n'apporte rien dans ce domaine).

-Et petite dernière chose, tu respecte pas trop mal l'indentation (les tabulations qui permettent de savoir dans quelle fonction on est) et ça c'est méga cool :D


Bref, pas mal pour un début ;)
Continue comme ça et tu fera bientôt des programmes plus complets, plus performants, plus optimisés.

Avatar de l’utilisateur
Stellaris
Messages : 980
Inscription : 14 décembre 2012, 20:45
Localisation : Derrière-toi
Contact :

Re: Progammation en C++

Message par Stellaris » 22 février 2013, 17:15

Merci Ecle !
J'avais oublié les switch...
Je vais modifier le code tout de suite !

Avatar de l’utilisateur
Stellaris
Messages : 980
Inscription : 14 décembre 2012, 20:45
Localisation : Derrière-toi
Contact :

Re: Progammation en C++

Message par Stellaris » 22 février 2013, 18:11

Le programme après quelques améliorations (merci Ecle !)
http://www.sendspace.com/file/bmefun

Ainsi que le code :
http://www.sendspace.com/file/o60e9b

Edit : Liens corrigés !
Dernière modification par Stellaris le 22 février 2013, 19:07, modifié 1 fois.

Avatar de l’utilisateur
Ecle31
Messages : 49
Inscription : 29 décembre 2012, 22:05
Contact :

Re: Progammation en C++

Message par Ecle31 » 22 février 2013, 18:32

Tu t'es planté tu a remis le même code a télécharger :D

Et temps que j'y suis aussi, si jamais tu veux rajouter des options a ta calculatrice (sin, cos toussa toussa) tu pourrais essayé de faire plus de sous-programmes.
Déjà tu en a fait un et laissé le main uniquement pour l'appel ce qui est très bien, mais si tu complexifies un peu la chose tu pourrais faire une architecture du style

Code : Tout sélectionner

operation_simple()
{
//tout le code pour les op simple
};
operation_complexe()
{
//tout le code pour les op complexe
};
choix_op()
{
//ton début de prog jusque cin >> operation1;
if (operation1 == 1)
    operation_simple();
else if (operation1 == 2)
    operation_complexe();
else
    choix_op(); //Ca je te le rajoute pour gérer les erreurs plutôt que de ne pas en tenir compte (même si sur ton programme - ancienne version - ça plante pas)
}
main()
{
choix_op();
return 0;
}

En faisant ainsi tu n'a que des "petit" sous-programmes qui sont bien plus lisible.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit