Fil rouge sur mon apprentissage du C

Des questions diverses et variées

a marqué ce sujet comme résolu.

Bonjour à tous !

Grâce à la validation de la formule mathématique à utiliser pour mon projet sur ce même forum, j’avance dans le cours de C, avec mon petit programme en fil rouge !

J’aimerai vous poser quelques question, j’imagine un post en fil rouge également :D

Dans un premier temps, 2 questions !

  • J’ai installé code::blocks, mais Visual Studio Code "me manque". C’est compliqué de lancer une compil via le terminal de VSC? (Je vois les lignes de commandes qui me font peur à citer les .c et .h?).

  • J’ai une partie d’interface entre utilisateur - console, qui implique des scanf. J’ai lu ça et là que ce n’était pas top et j’aimerai bosser sur une fonction qui demande une entrée, puis la vérifie et l’enregistre comme il faut (J’utilise actuellement fgets). Avant de partir sur ce genre de chose, est-ce que le fonctionnement sera le même lors du passage du programme en "mode fenêtre" ? Auquel cas cela vaut le coup de passer du temps à programmer cela, ça pourrait me servir sur tous mes projets.

Merci à vous !

Vincent

(PS : Je n’ai pas vu de cours sur le C en mode fenêtré ici?)

J’ai installé code::blocks, mais Visual Studio Code "me manque". C’est compliqué de lancer une compil via le terminal de VSC? (Je vois les lignes de commandes qui me font peur à citer les .c et .h?).

C’est plutot très simple de lancer une compilation d’un programme C, il suffit d’utiliser le compilateur de reference de ton système (gcc si tu es sous linux et mingw sous windows) et les commandes à taper sont plutot simples. Cependant, je ne peux que te conseiller de t’intéresser au logiciel make et aux makefiles, qui permet d’assez simplement pouvoir compiler des projets complexes assez simplement.

En revanche, je n’ai pas exactement compris ce que tu entends par "passage du programme en mode fenetre"

Le peu de docs que j’ai lu sur la compilation, il fallait indiquer tous les noms des fichiers. Peut etre que je me trompe. Je vais approfondir.

Quand au mode fenetre : Aujourd’hui je passe par la console. J’utilise donc des fonctions utiles avec la console. Mais "demain", quand je ferais la partie visuelle, est-ce que les méthodologies pour récupérer un champ utilisateur changeront ? Ou ma "fonction" de lecture fonctionnera tout de même?

Vincent

"Programmer en mode fenêtre" n’existe pas vraiment.
En simplifiant énormément, ce qu’il se passe c’est que ton système d’exploitation fourni des fonctions que tu peux appeler pour lui demander d’afficher une fenêtre et faire des choses à cette fenêtre. Tu as ensuite des gens/entreprises/associations/etc qui ont fait d’autres fonctions réunies dans des bibliothèques (library en anglais), comme par exemple SDL, qui masque ces fonctions dans d’autres fonctions plus simple à utiliser et qui permettent de faire avec une seule fonction ce qui devrait être fait avec une dizaine de celles du système d’exploitation.

En vérité c’est aussi ce qui se passe avec les fonctions printf, scanf, etc… Mais il y a une forme de standard contrairement à ce qui se fait pour les interfaces graphiques.

+0 -0

Salut,

  • J’ai installé code::blocks, mais Visual Studio Code "me manque". C’est compliqué de lancer une compil via le terminal de VSC? (Je vois les lignes de commandes qui me font peur à citer les .c et .h?).
VBPix84

Le tuto C de ZdS te propose d’utiliser la ligne de commande via l’installation de MSys2. À mon sens, c’est le plus simple pour commencer. Il t’est juste nécessaire de spécifier les fichiers .c à compiler, sachant que ton invite de commande te permet d’utiliser des jokers comme *.c qui signifie « tous les fichiers dont le nom se termine par .c ».

  • J’ai une partie d’interface entre utilisateur - console, qui implique des scanf. J’ai lu ça et là que ce n’était pas top et j’aimerai bosser sur une fonction qui demande une entrée, puis la vérifie et l’enregistre comme il faut (J’utilise actuellement fgets). Avant de partir sur ce genre de chose, est-ce que le fonctionnement sera le même lors du passage du programme en "mode fenêtre" ? Auquel cas cela vaut le coup de passer du temps à programmer cela, ça pourrait me servir sur tous mes projets.
VBPix84

Cela dépend des données que tu récupères en entrée. Si ce sont des données formatées (donc qui respecte un certain format comme le CSV) ou des données que tu souhaites convertir en nombres, la fonction scanf() est toute indiquée (d’où le « f » final pour « format »). Si en revanche tu as du texte pur ou des entrées plus complexes, alors utilises plutôt fgets(). Dans les deux cas, il est nécessaire de faire attention à la temporisation.

Pour les programmes avec GUI, ce n’est pas du tout le même fonctionnement. Typiquement, une boucle principale récupère les « évènements » (clic de souris, appuis sur une touche, relachement d’une touche, etc.) et applique ensuite les actions correspondantes. Cela est fort dépendant de la bibliothèque que tu utilises, la plus connue côté C est GTK+.

(PS : Je n’ai pas vu de cours sur le C en mode fenêtré ici?)

VBPix84

En mode quoi ? :p

+0 -0

Merci pour vos réponses !

Je viens de tenter l’installation de MSys2. Qui met 3 heures à s’ouvrir, et lors de l’installation, me sort des erreurs… Peut être que cela est dû à ma connection nulle au boulot.

Je me repencherai dessus à la maison: On retentera mais la simplicité d’appuyer sur un seul bouton sur Code::Blocks :D…

Pour ce qui est de l’interface Utilisateur-Console, il n’est pas possible de connaitre les entrées à l’avance, parfois un chiffre, parfois 2, etc… D’où le fait de passer par fgets.

En revanche, le fonctionnement du "GUI" me fait dire qu’il n’est pas utile que je passe trop de temps là dessus car lorsque j’utiliserai (a priori) GTK+, il me faudra tout remodifier?

Vincent

Salut,

Note que tu peux avoir une saisie qui correspond à ce que tu veux avec scanf dans la plupart des cas. Tu peux t’écrire des fonctions get_int, get_double, get_string, etc.

+0 -0

Salut !

J’ai fais la même chose avec fgets :D Je vais peut être m’amuser à faire la même en scanf pour entrainement.

Mais si elles ne sont pas utilisable quand je passerai avec un GUI, je ne perds pas mon temps.

Là, je me demande comment créer des variables à la demandes (enfin, quelle méthode je peux utiliser pour obtenir ce que je veux :D).

Vincent

Comment ça créer des variables à la demande ? Quel est le but ?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte