Se connecter avec
S'enregistrer | Connectez-vous

Comment débuter en programmation ?

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte

DragonVert40 a dit :
Je voudrait apprendre la programmation, mais je ne sais pas par ou commencer.
Logiciel ? lesquels ? editeurs de texte, compilateur, langages.

Pourriez vous m'aiguiller pour mes premiers pas?

Pour démarrer l'apprentissage de la programmation, il faut un peu de culture informatique (il y a pas mal de vocabulaire). Ensuite, il faut mener de front 2 aspects :
  • L'étude de l'algorithmie et des structures de données
  • L'étude d'un langage de programmation

    L'algorithmie est une science théorique qu'il faut rapidement concrétiser par la mise en oeuvre de la théorie (à moins d'avoir des capacités d'abstraction phénoménales), ce qui passe par l'utilisation d'un langage de programmatin.

    Un langage est simple au début, mais il met rapidement en oeuvre des principes vus en 'algorithime'. Donc les deux sont intimement liés.

    Reste à choisir un bon cours d'algo (livres, sites) et un langage adapté. Je ne suis pas sûr que le C soit un langage pour un débutant absolu. Trop de subtilités... De mon temps (années 80), on commençait par le Pascal... (FreePascal, TurboPascal...)

    merci pour tout ces renseignements,
    j'ai quelques notions (vraiment trés petite) en C
    dois je continuer sur ce langage ou bien laisser tomber et choisir python ou pascal ?
    connaissez vous quelques livres ou site de réference ?
    Expert Programmation

    Je me permets de te conseiller le C. Puisque tu es électricien, tu auras sans doute à coeur de vouloir brancher des trucs sur ton PC ;)  Or le langage le plus adapté est le C.

    Voila mon premier programme :
    La division est toujours égale à 0
    Pourquoi?
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
    long plus = 0,moins = 0,multi = 0, nombre1 = 0, nombre2 = 0;
    float div = 0;
    // On demande les nombres 1 et 2 à l'utilisateur :

    printf("Entrez le nombre 1 : ");
    scanf("%ld", &nombre1);
    printf("Entrez le nombre 2 : ");
    scanf("%ld", &nombre2);

    // On fait le calcul :

    plus = nombre1 + nombre2;
    moins = nombre1 - nombre2;
    multi = nombre1 * nombre2;
    div = nombre1 / nombre2;
    // Et on affiche les opérations à l'écran :
    printf ("L'addition nous donne :\t");
    printf ("%ld + %ld = %ld\n", nombre1, nombre2, plus);
    printf ("La soustraction nous donne :\t");
    printf ("%ld - %ld = %ld\n", nombre1,nombre2, moins);
    printf ("La multiplication nous donne :\t");
    printf ("%ld * %ld = %ld\n", nombre1, nombre2, multi);
    printf ("La division nous donne :\t");
    printf ("%ld / %ld = %ld\n", nombre1, nombre2, div);
    system("PAUSE");
    return 0;
    }

    DragonVert40 a dit :
    Voila mon premier programme :

    Alors premières choses à apprendre :

  • Mettre les balises code
  • Ne pas utiliser scanf() qui est une fonction trop difficile pour les débutants (et même les autres)

    http://mapage.noos.fr/emdel/notes.htm#saisie
    http://mapage.noos.fr/emdel/notes.htm#fichiers
    Citation :
    La division est toujours égale à 0
    Pourquoi?

  • Pour scanf() et printf(), il manque <stdio.h>, c'est à dire les prototypes. Sans prototypes, le compilateur fait des hypothèses (int), et elles sont fausses (long, float).
  • Les paramètres de main() ne sont pas utilisés. int main(void) aurait suffit...
  • Les nombres utilisés dans la division sont des entiers. La division est donc entière. (2 / 3 -> 0)
  • Avec printf(), "%ld" attend un long. Parfois, tu lui passes un float(div). Il faudrait un "%f".

    Tout cela relève du B.A. BA que l'on trouve dans les livres de C. Il y a des références sur mon site (qui t'a déjà été conseillé).

    Y aurait il un probleme dans le code.

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char *argv[])
    {
    long NombreMystere = 0;
    const long MAX = 100, MIN = 1;

    srand(time(NULL));
    NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    long nombre = 0;
    do
    {
    printf (" Quel est donc ce nombre\t ?");
    scanf ("%ld" , &nombre);
    if (nombre < NombreMystere)
    {
    printf ("trop p'tit mon gars, recommence");
    }
    else if (nombre > NombreMystere)
    {
    Printf (" Pas tant pitchou, tounos y ");
    }
    else if (nombre == NombreMystere)
    {
    printf ("Ba trapat lou tipe, félicitaciou");
    }

    }
    while (nombre != NombreMystere);

    system("PAUSE");
    return 0;
    }

    Je balise

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <time.h>
    4.  
    5. int main(int argc, char *argv[])
    6. {
    7. long NombreMystere = 0;
    8. const long MAX = 100, MIN = 1;
    9.  
    10. srand(time(NULL));
    11. NombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    12. long nombre = 0;
    13. do
    14. {
    15. printf (" Quel est donc ce nombre\t ?");
    16. scanf ("%ld" , &nombre);
    17. if (nombre < NombreMystere)
    18. {
    19. printf ("trop p'tit mon gars, recommence");
    20. }
    21. else if (nombre > NombreMystere)
    22. {
    23. Printf (" Pas tant pitchou, tounos y ");
    24. }
    25. else if (nombre == NombreMystere)
    26. {
    27. printf ("Ba trapat lou tipe, félicitaciou");
    28. }
    29.  
    30. }
    31. while (nombre != NombreMystere);
    32.  
    33. system("PAUSE");
    34. return 0;
    35. }

    Citation :


    Doit y avoir un bug dans le code. Regade l'onglet log


    Log devc++

    Compilateur: Default compiler
    Building Makefile: "C:\Documents and Settings\Mes documents\PlusMoins_\Makefile.win"
    Exécution de make...
    make.exe -f "C:\Documents and Settings\Mes documents\PlusMoins_\Makefile.win" all
    gcc.exe main.o -o "PlusMoins.exe" -L"C:/Dev-Cpp/lib"

    main.o(.text+0xc0):main.c: undefined reference to `Printf'
    collect2: ld returned 1 exit status

    make.exe: *** [PlusMoins.exe] Error 1

    Exécution terminée

    DragonVert40 a dit :
    Ok, c'est incroyable ce que peut faire un Printf pour un printf.

    Bon affaire reglée. Que ça te serve de leçon. Sinon, le code est correct, mais améliorable (tape a pour voir...)

    scanf() est largement déconseillée aux débutants, mais pas seulement. Ici, comme dans 95% des cas, il est mal utilisé.

    Alternatives fiables :

    http://mapage.noos.fr/emdel/notes.htm#saisie
    http://mapage.noos.fr/emdel/notes.htm#fichiers


    encore une petite aide.
    d'apres le code suivant :
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3.  
    4. int main(int argc, char *argv[])
    5. {
    6. // titre //
    7. printf ("\t\tCalcul de moyenne\n\n");
    8. // entree utilisateur le nombre de note a traiter //
    9. printf ("Combien y a t il de notes ?.... ");
    10. long nombreDeNote;
    11. scanf ("%ld" , &nombreDeNote);
    12.  
    13. // entree des notes //
    14.  
    15.  
    16. long note = 1;
    17. long valeurNote;
    18.  
    19. do
    20. {
    21. printf ("note %ld : " , note);
    22. scanf ("%ld", &valeurNote);
    23. note++;
    24.  
    25. }
    26. while (note <= nombreDeNote);
    27.  
    28. // petite mise en page, on saute deux ligne //
    29. printf ("\n\n\n");
    30.  
    31. // calcul et affichage de la moyenne //
    32.  
    33. long moyenne;
    34. printf (" La moyenne de cet eleve est de %ld : ",valeurNote );
    35.  
    36.  
    37.  
    38. system("PAUSE");
    39. return 0;
    40. }


    comment additionner les plusieurs valeurs de "valeurNote".
    c'est peut- etre tout béte, mais j'y arrive pas.
    merci
    Expert Programmation

    Ben ce n'est pas en C que tu as un problème, c'est en algo.

    Commence par initialiser valeurNote à zéro.
    Crée une autre variable de saisie disons A (c'est bien A comme nom, non ?).
    Dans la boucle, demande à saisir la valeur de A, puis tu fais
    1. valeurNote =+ A;


    C'est marrant, tu nommes tes variables à la mode Java. Hey, tu fais du C, ou pas :D  :D  :D 

    Citation :
    C'est marrant, tu nommes tes variables à la mode Java.(c'est bien A comme nom, non ?).


    Je trouve que c'est plus facile pour savoir a quoi elles servent.

    1. valeurNote =+A;

    doit etre dans la boucle ? "A" doit aussi etre initialise, non ??
    Expert Programmation

    Oups. Au temps pour moi. Vous aviez corriger de vous même.

    Concernant le nommage des identificateurs, les différents langages ont leurs traditions et leurs conventions. C'était une simple remarque, hein...

    Bon, Frequi, faut travailler l'algo. Au sens général. C'est à dire qu'il faut comprendre ce que tu fais. Réfléchis bien et tu découvriras que A n'a pas à être initialisé, que valeurNote doit l'être et qu'on initialise rien dans une boucle (ou alors il est vraiment chiadé ton programme). Tu veux bien que valeurNote reçoive toutes les saisies, alors bien sûr qu'il faut que valeurNote += A; soit dans la boucle....

    Courage...
    Lassé par la pub ? Créez un compte