Ecriture d'un programme [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 12 mars 2014
Statut
Membre
Dernière intervention
11 février 2020
-
Abir MARINA
Messages postés
18
Date d'inscription
mercredi 12 mars 2014
Statut
Membre
Dernière intervention
11 février 2020
-
Bonjour,

J'ai rédigé un programme mathématiques en Python. Je souhaiterai l'équivalence en C++ et Java.
Quelqu'un aurait-il les connaissances nécessaires ?
Mon programme est ci dessous.

Un grand merci pour votre aide.

Bien à vous,

AM

9 réponses

Messages postés
18
Date d'inscription
mercredi 12 mars 2014
Statut
Membre
Dernière intervention
11 février 2020

Messages postés
18
Date d'inscription
mercredi 12 mars 2014
Statut
Membre
Dernière intervention
11 février 2020

Bonjour Whismeril,

merci pour ces précisions.

Alors je ne suis pas étudiante et ce n'est pas un exercice :)
Je suis enseignante en mathématiques et mes élèves apprennent à coder en Python.
Je souhaite faire un comparatif c++ et java, langages que je ne connais pas. L'idée est juste de leur montrer que différents langages existent. Connaissant les rudiments de plusieurs langages , je comprendrais sans doute assez rapidement c++ et java mais je ne veux pas prendre le risque de faire une mauvaise "traduction" et présenter un code qui ne respecte pas les habitudes de ces 2 langages...

Bien à vous,

AM
Messages postés
14239
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2020
459
Tu comprendras que je n'ai aucun moyen de vérifier ce que tu dit, mais admettons.

Pour ceci en Python
def Rebond():
  H = 120
  R = 0
  while H>=1:
    H *= 3 / 5
    R += 1
  return(R)

print(Rebond())


Un équivalent en C++ (mode console)
#include <iostream>

using namespace std;
int Rebond()
{
    double H = 120.0;
    int R = 0;
    
    while(H >= 1.0)
    {
        H *= 3.0/5;
        R++;
    }
    
    return R;
}

int main()
{
   cout << Rebond() << endl; 
   
   return 0;
}


Et en Java (console aussi)
public class MyClass {
    public static void main(String args[]) {
      System.out.println(Rebond());
    }
    
    private static int Rebond(){
        double H = 120.0;
        int R = 0;
    
        while(H >= 1.0)
        {
            H *= 3.0/5;
            R++;
        }
    
    return R;
    }
}


Note que Java étant un descendant de C++, ça se ressemble un peu.

Si tu veux montrer une différence de syntaxe, tu peux aussi faire du VB ou Delphi

Messages postés
18
Date d'inscription
mercredi 12 mars 2014
Statut
Membre
Dernière intervention
11 février 2020

Je te remercie vivement. Je vais pouvoir travailler sur les comparaisons.
Sans nul doute, Python est vraiment plus concis.

Les indentations ont elles la même fonction que dans Python ? ou est ce juste pour la lisibilité ?
Pour moi qui ne suis pas programmeur et ai juste des bases de programmation, je trouve que la lecture de python est tellement plus simple que ces 2 langages ! Je vois qu'on est notamment obligé de déclarer les variables en indiquant leur type.

Que signifie les lignes 18 à 22 dans c++ ?
Qu'est ce que public static et private static dans java ?

Merci pour tes conseils. Il y a plein de comparatif que je souhaite faire mais je vais me concentrer sur ces 2 là pour le moment.

Tu peux taper mon nom et prénom et tu auras vite confirmation que je suis enseignante et formatrice ;)

Bien à toi,

AM
Messages postés
14239
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2020
459
Les indentations ont elles la même fonction que dans Python ? ou est ce juste pour la lisibilité ?
Pour moi qui ne suis pas programmeur et ai juste des bases de programmation, je trouve que la lecture de python est tellement plus simple que ces 2 langages ! Je vois qu'on est notamment obligé de déclarer les variables en indiquant leur type.


C'est drôle ce qui "te gêne" en C++ ou Java est exactement ce que je n'aime pas en Python.

L'indentation sert à la lisibilité, un bloc de code est délimité par les accolades.
A l'inverse de Python, où un espace oublié ou en trop et plus rien ne marche.

Ce sont tous les 2 des langages fortement typés, ça optimise les calculs, la mémoire etc...
C++ a vu le jour à une époque où le kilooctet de RAM valait de l'or et où les processeur tournait à quelques Mhz.
Ça évite aussi de mélanger les torchons et le serviettes, comme le tolère Basic (et tous ses dérivés) avec parfois (moins maintenant en Python) des résultats hasardeux.

Que signifie les lignes 18 à 22 dans c++ ?


Dans le code python, j'ai ajouté un appel à la fonction Rebond() pour afficher le résultat, ces lignes en C++ servent à ça.
Le point d'entrée du programme est toujours une méthode de type int qui s'appelle Main.
Par défaut, elle retourne 0.
Dans notre cas, Main, appelle Rebond et en affiche le résultat.

Qu'est ce que public static et private static dans java ?

Java est un langage tout objet, j'ai mis tout en italique, car ça ne plait pas à tout le monde. Mais fait est, qu'à part les instructions de début et fin de bloc, toutes les lignes manipulent des objets.
Un objet est décrit dans une class (c'est le plan), l'objet est "l'instanciation" de la class (on peut faire des dizaines de maisons avec le même plan).
Une classe static est une classe qui ne s'instancie pas, par définition, le programme n'en a besoin que d'une. Par exemple, les fonctions mathématiques de base sont regroupées dans la classe static Math, on a pas besoin de créer une instance de cette classe à chaque fois que l'on veut calculer un sinus ou une racine carrée, on appelle juste
Math.sin(3.14)
ou
Math.sqr(2)

Une méthode ou une propriété d'une classe static, est elle aussi static. Note qu'une classe instanciable peut avoir des membres statics.
Le point d'entrée d'un programme Java est forcément static puisque rien ne l'a instancié, et il s'appelle Main, comme en C++.

Le modificateur private ou public définit la visibilité du membre au reste du monde.
Si tu étais un objet informatique, ta main serait public, elle peut interagir avec le monde extérieur, prendre ou toucher un autre objet, être tenue ou touchée par un autre objet.
Tes yeux seraient public en lecture seule, ils peuvent voir le monde extérieur, le monde extérieur peut les voir, mais s'il veut les toucher les paupières se ferment.
Enfin, ton coeur serait privé, il n'y a que ton corps qui peut interagir avec.
C'est le principe de l'encapsulation, l'objet protège son fonctionnement interne. Si un jour, on te pose un pacemaker, pour le monde extérieur, le coeur sera toujours inaccessible, mais ta main et tes yeux seront les mêmes. Mon exemple n'est pas rigoureusement exact, mais je pense que c'est parlant pour un(e) novice.


Messages postés
18
Date d'inscription
mercredi 12 mars 2014
Statut
Membre
Dernière intervention
11 février 2020

Je retire ce que j'ai dit dans ma 1ère réponse ! Il me faudrait bp de temps pour prendre en main ces deux langages !!!

Je comprends tout à fait ton point de vue pour Python. Il me semble que finalement il s'agit plus d'habitude, un peu comme ios/android.
Je pense que pour une personne qui commence en Python ce n'est pas une évidence de passer à ces langages plus complexe.

Un grand merci à toi pour toutes ces explications très claires et intéressantes, j'ai appris de nouvelles choses. Je n'ai plus qu'à travailler dessus afin de maitriser les notions.

Bien à toi,

AM
Messages postés
14239
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2020
459
Je retire ce que j'ai dit dans ma 1ère réponse ! Il me faudrait bp de temps pour prendre en main ces deux langages !!!


Non, en fait en formation continue, un stage de 35h dans l'un ou l'autre donne les bases pour faire bien mieux que ce que j'ai fait ce soir.
Par contre, pas sur qu'on y aborde les points d'entrée et les particularités des classes static.

Sur developpez.com, il y a des cours (gratuits) qui reprennent les grands thèmes d'un stage de 35h, l'interaction avec le prof en moins. Il y a openclassroom aussi.
Pour les 2 cours que je connais (C# et VB.Net), le contenu est plus abordable sur developpez.com, même si le cours de VB.net ne prend pas la mesure de l'objet en .Net. Sur openclassroom l'objet est traité pour ce qu'il est (l'essence de .Net) mais parfois c'est trop rapide comme explication, pour un débutant ça peut être rude. Ils viennent ici après, alors que ceux de développez, on ne les voient pas poser des questions.

Bien motivée, tu peux suivre un des ces cours en 2 à 4 soirées, ne pas sauter les bases, même si elles paraissent évidentes.
Je ne t'apprends rien en te disant que pour bien apprendre la multiplication, il faut d'abord avoir bien compris l'addition. Et qu'une fois toutes les tables sues par coeur, on passera plus facilement à aux divisions, aux fractions, à la décomposition en facteurs premiers et aux développements limités
Messages postés
18
Date d'inscription
mercredi 12 mars 2014
Statut
Membre
Dernière intervention
11 février 2020

Merci encore pour tes conseils. J'utilise ces 2 plateformes que je trouve plutôt bien faites.

Je n'ai pas l'utilité immédiate d'apprendre ces langages mais cela me donnerait bien plus de recul pour enseigner Python. Le temps bien évidemment me fait défaut car il ne s'agit que d'une petite partie de mon enseignement.