Salut franchement vos vidéos m'on beaucup aidé et surtout que tu expliques vraiment très bien par la façon dont tu fais le détail des chaques points...c'est vraiment génial,merci beaucoup pour votre souci à nous partager votre connaissanceBah de là je voulais vous dire que j'adorais que vous nous faites un tuto sur java au plus vite stp
Bonjour et merci à toi. Le Java (ainsi que le C# et le C++) viendront plus tard sur la chaîne mais ce sont des formations que j'ai bien l'intention de proposer :)
FormationVidéo d'accord j'attends avec impatience et merci beaucoup d'avance... bah j'aimerais savoir qe si avec le C seulement,il est possible de créer une très bonne jolie app pour Android ? si oui,qell explotation alors?
FormationVidéo d'accord j'attends avec impatience et merci beaucoup d'avance... bah j'aimerais savoir qe si avec le C seulement,il est possible de créer une très bonne jolie app pour Android ? si oui,qell explotation alors?
Salut je débute dans la programation et je voudrai connaître le logiciel que tu utilise pour écrie t'es programme ou alors je voudrais savoir sur quelle logiciel je peut écrire et exécuter des programmes
Bonjour, pour écrire du code, j'utilise un éditeur de code : Sublime Text. Il en existe plein d'autres aussi comme Notepad++, Atom, Brackets, Visual Studio Code, etc. Et pour compiler, j'utilise tout simplement un compilateur (gcc), dont son installation est expliqué sur ce tutoriel -> ua-cam.com/video/qdnhK0EzX8g/v-deo.html
salut ! mrc bq pour ces vedeos !! je veus te poser une qst : pourquoi j'ai meme adresse que tu as a le pointeur Generique au debut (de int et double 0028FF38 et 0028FF30) ?
Ah ah, nous avons le même ordinateur =D +---------------------------------------------------------------------------------------------------------------------------------------------+ |- Jason CHAMPAGNE - jasonchampagne.fr +---------------------------------------------------------------------------------------------------------------------------------------------+ |- COUCOU, TU VEUX : |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne |--- T'abonner à mon autre chaîne UA-cam ? ua-cam.com/users/jasonchampagne |--- Me follow sur Twitter ? twitter.com/jachampagne8 |--- Liker la page Facebook ? facebook.com/jachampagne8 |--- Me follow sur Insta ? instagram.com/jachampagne8 |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8 +---------------------------------------------------------------------------------------------------------------------------------------------+
encore une fois de plus géniale ta vidéo !! j'ai testé un peu ce que tu as dit en faisant un callback : void* callback( (void*)(*f_ptr)(void*), void* arg ) { return f_ptr(arg); } mais le compilateur me retourne l'erreur 'f_ptr' n'a pas été déclaré dans le scope, je ne comprend absolument pas l'erreur car je n'ai pas a déclaré f_ptr car c'est la parametre d'une fonction, c'est comme si je mettais void fonction(int a) et que le compilateur me disait 'a' n'a pas été déclaré dans le scope... as tu une idée du probleme ?
Coucou, tu dois juste dans les paramètres de la fonction *callback* retirer les parenthèses autour du premier void (le type de retour) et ce sera bon :)
Non, toutes les 5 minutes la publicité, comme ça a toujours été le cas. De plus, si tu as visionné une publicité à un moment, la prochaine ne sera pas affichée - il faut bien que les vidéos rapportent un minimum. Et merci pour la vidéo :).
Salut Jason, merci pour ces explications qui m’emmènent à une question. Je voudrais me coder un mini jeu international dans lequel j'ai besoin de récupérer les infos clavier en passant par les adresses des touches, avoir leur nombre et la disposition du clavier en fonction du matériel, du pays et de la langue du clavier... J'essaye de trouver des infos là dessus aussi un petit tuto donnant des pistes sur les fonctions utilisables pour aboutir serait le bienvenu 🙂 Peut-être utiliserions-nous les pointeurs génériques ;-)
@@formation-video Merci Jason :-) justement je suis en plein dessus et je trouve tes cours méga intéressants. Reste plus qu'à trouver la ou les fonctions permettant d'extraire ce type de données. Je me suis fixé un but à atteindre : reprendre les travaux du soft tux-type, codé en C avec SDL 1 dont la dernière version 1.8.3-5 est unstable. J'ai plusieurs idées qui me sont apparues notamment apporter une couche plus loufoque au logiciel de manière à apporter une formation plus ludique... Je ne me fais pas d'illusion, il y a beaucoup d'heures de travail avant de parvenir à quelque chose de concret mais ce langage me plait vraiment 🙂
C'est la tout le principe de la généricité ici. On fait référence à une fonction (via le pointeur de fonction). Il y a donc bien un retour puisqu'on fait appel à ce moment à la fonction d'addition 👍
@@formation-video d'accord je pensais qu'il fallait obligatoirement mettre un return (Java l'exige il me semble). Merci pour ton explication ! 👍 Tes vidéos sont super bien !
Non justement, Java ne l'exige pas. Si une méthode a "void" comme type de retour, elle n'a rien à retourner (exemple avec la méthode main d'ailleurs) 👍
Je souhaite faire en c une liste qui puisse sois gerer des entier sois des double. Comme les liste aurons les meme méthode ajout/ afficher... Je pensais faire la généricité avec un pointeur void comme au début de la vidéo mais du coup je comprends pas comment dereferencer pour avoir la valeur ? Le but etant de ne creer qu'une seule structures pour ma liste mais avoir le choix du type. Le but final est par exemple je suis en train de faire en sdl un jeu astéroïdes. Je voudrais pouvoir gerer une liste d'astéroïdes et une liste de tir de mon vaisseau chacun etant un strut perso mais avoir un seul fichier c pour la gestion de liste ?
Du coup j'ai une question: Comment faire du refactoring en C si on ne peut pas variabiliser le typage d'une fonction? Je m'explique. J'en avait marre à chaque Allocation dynamique d'écrire le code suivant maStruct = malloc(sizeof(*maStruct)); if(maStruct == NULL) { fprintf(stderr, "allocation erreur"); exit(EXIT_FAILURE); } J'ai voulu ecrire une fonction générique pour ça en faisant void allocateFor(void *object) { object = malloc(sizeof(*object)); if(object == NULL){ fprintf(stderr, "Memory allocation Error. "); exit(EXIT_FAILURE); } return; } Mais plantage à cause du déférencement impossible... Alors comment fait-on?
ha ok merci! Mais j'arrive pas à comprendre pourquoi faire return myData alors qu'en entrée de fonction on a un pointeur et qu'on y affecte malloc avec la ligne mydata = malloc(sizeof(*mydata))?
Car tu veux faire du générique, donc tu ne sais pas de quel type sera la donnée (int ? char ? float ?). Donc on renvoyant un void*, on récupère tout type de donnée allouée :)
Bon j'avoue c'est pas encore clair, je manque d'experience je pense. Du coup j'ai construit un systeme d'affichage de debugs pour me reperer quand mes progs plantent. Cela permet d'afficher des message en lançant le prog avec -d ou --debug en argument et cela permet de les afficher avec un effet de tabulation selon la profondeur de la fonction appellée.: Le .c est ici: pastebin.com/zSMSsr9K et le .h: pastebin.com/ELX0XtHp.
Salut merci pour ta vidéo bien sympa et claire. J'ai fait le même code que toi celui du début à 8:00 environ et il me met un : main.c:34:18: warning: dereferencing 'void *' pointer printf("%d ", *pGen); ^~~~~ main.c:34:18: error: invalid use of void expression J'utilise un makefile avec les options de compilations suivante : CC = gcc CFLAGS = -O3 -g -Wall -DEBUG CCCOM=$(CC) $(CFLAGS) -std=c17
C'est tout à fait normal, j'ai montré la même erreur dans la vidéo justement. Le pointeur pointe sur NULL, il n'y a donc rien à afficher, là où le "%d" attend une valeur entière (et pas NULL) 😉 ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ 💙 Si ce n'est pas encore fait, n'hésite pas à t'abonner à la chaîne ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA ◾ Site web : jasonchampagne.fr ◾ Discord : discord.me/jasonchampagne ◾ Twitch : www.twitch.tv/jachampagne ◾ UA-cam (personnel) : ua-cam.com/users/jasonchampagne ◾ Twitter : twitter.com/jachampagne8 ◾ Facebook : facebook.com/jachampagne8 ◾ Instagram : instagram.com/jachampagne8 ◾ Snapchat : www.snapchat.com/add/jachampagne8
De rien ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ 💙 Si ce n'est pas encore fait, n'hésite pas à t'abonner à la chaîne ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA ◾ Site web : jasonchampagne.fr ◾ Discord : discord.me/jasonchampagne ◾ Twitch : www.twitch.tv/jachampagne ◾ UA-cam (personnel) : ua-cam.com/users/jasonchampagne ◾ Twitter : twitter.com/jachampagne8 ◾ Facebook : facebook.com/jachampagne8 ◾ Instagram : instagram.com/jachampagne8 ◾ Snapchat : www.snapchat.com/add/jachampagne8
Salut ! merci pour ton cour, j'ai un petit probleme lorsque que je compile apres avoir fais un pointeur sur fonction (qui renvoies toutes des int donc le generique) j'ai cette erreur de compilation : Undefined symbols for architecture x86_64: "_gameManager", referenced from: _main in main-b90cf4.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Pourrais tu me donner un coup de pouce ?
Limpide comme du crystal comme d'habitude. Les tableaux de pointeurs pour tout ceux qui comme moi detestent les couples switch..case pour des menus par exemple.Merci
cette vidéo est très clair et intéressante je vous remercie bcp
De rien, bonne journée à toi 👋
Salut franchement vos vidéos m'on beaucup aidé et surtout que tu expliques vraiment très bien par la façon dont tu fais le détail des chaques points...c'est vraiment génial,merci beaucoup pour votre souci à nous partager votre connaissanceBah de là je voulais vous dire que j'adorais que vous nous faites un tuto sur java au plus vite stp
Bonjour et merci à toi. Le Java (ainsi que le C# et le C++) viendront plus tard sur la chaîne mais ce sont des formations que j'ai bien l'intention de proposer :)
FormationVidéo d'accord j'attends avec impatience et merci beaucoup d'avance... bah j'aimerais savoir qe si avec le C seulement,il est possible de créer une très bonne jolie app pour Android ? si oui,qell explotation alors?
FormationVidéo d'accord j'attends avec impatience et merci beaucoup d'avance... bah j'aimerais savoir qe si avec le C seulement,il est possible de créer une très bonne jolie app pour Android ? si oui,qell explotation alors?
Pour faire une appli Android, on va préférer utiliser le Java ;)
FormationVidéo ha ouais c' bien ce qe je croyais... merci beaucoup pour avoir investi du temps à me répondre aux commentaires,c' gentil de ta part
OUI !!! On en veut du C ! Pleins de petits trucs qui ameliorent notre code !!! Tu as d'autres videos de prevues ?
Bonjour, et oui bien sûr, je reprends le travail dès que je suis de retour chez moi =)
Super ! J'ai hate !
Tant mieux alors, à très vite :) !
Merci beaucoup 👌🏾
Merci beaucoup
✌
◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
◾ MERCI DE TON SOUTIEN ! 🔻
◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
◾ Site web : jasonchampagne.fr
◾ Discord : discord.me/jasonchampagne
◾ Twitch : www.twitch.tv/jachampagne
◾ UA-cam (personnel) : ua-cam.com/users/jasonchampagne
◾ Twitter : twitter.com/jachampagne8
◾ Facebook : facebook.com/jachampagne8
◾ Instagram : instagram.com/jachampagne8
◾ Snapchat : www.snapchat.com/add/jachampagne8
◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
Salut je débute dans la programation et je voudrai connaître le logiciel que tu utilise pour écrie t'es programme ou alors je voudrais savoir sur quelle logiciel je peut écrire et exécuter des programmes
Bonjour, pour écrire du code, j'utilise un éditeur de code : Sublime Text. Il en existe plein d'autres aussi comme Notepad++, Atom, Brackets, Visual Studio Code, etc.
Et pour compiler, j'utilise tout simplement un compilateur (gcc), dont son installation est expliqué sur ce tutoriel -> ua-cam.com/video/qdnhK0EzX8g/v-deo.html
FormationVidéo merci ; )
De rien ;)
salut ! mrc bq pour ces vedeos !! je veus te poser une qst : pourquoi j'ai meme adresse que tu as a le pointeur Generique au debut (de int et double 0028FF38 et 0028FF30) ?
Ah ah, nous avons le même ordinateur =D
+---------------------------------------------------------------------------------------------------------------------------------------------+
|- Jason CHAMPAGNE - jasonchampagne.fr
+---------------------------------------------------------------------------------------------------------------------------------------------+
|- COUCOU, TU VEUX :
|--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
|--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
|--- T'abonner à mon autre chaîne UA-cam ? ua-cam.com/users/jasonchampagne
|--- Me follow sur Twitter ? twitter.com/jachampagne8
|--- Liker la page Facebook ? facebook.com/jachampagne8
|--- Me follow sur Insta ? instagram.com/jachampagne8
|--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
+---------------------------------------------------------------------------------------------------------------------------------------------+
@@formation-video je regole pas :3
encore une fois de plus géniale ta vidéo !! j'ai testé un peu ce que tu as dit en faisant un callback :
void* callback( (void*)(*f_ptr)(void*), void* arg )
{
return f_ptr(arg);
}
mais le compilateur me retourne l'erreur 'f_ptr' n'a pas été déclaré dans le scope, je ne comprend absolument pas l'erreur car je n'ai pas a déclaré f_ptr car c'est la parametre d'une fonction, c'est comme si je mettais void fonction(int a) et que le compilateur me disait 'a' n'a pas été déclaré dans le scope...
as tu une idée du probleme ?
Bonsoir, peux-tu me montrer ton code complet ? (avec pastebin.com) pour voir si j'ai les mêmes erreurs ? Merci.
Coucou, tu dois juste dans les paramètres de la fonction *callback* retirer les parenthèses autour du premier void (le type de retour) et ce sera bon :)
merci beaucoup ! le probleme venait bien de la, merci :)
De rien, ça va mieux aller comme ça =)
Je vois qu'on se fait plaisir sur la publicité ^^ il y en a une toutes les deux minutes...
Sinon vidéo très instructive!
Non, toutes les 5 minutes la publicité, comme ça a toujours été le cas.
De plus, si tu as visionné une publicité à un moment, la prochaine ne sera pas affichée - il faut bien que les vidéos rapportent un minimum.
Et merci pour la vidéo :).
C'est lié au fait du visionnage des vidéos en x2 ;) t'inquiète je comprends...
Ah oui possible :)
Salut, merci c’est très bien expliquer. J’aimerais savoir comment définir une structure d’un tableau à type générique en C ? Merci
Bonjour, pas compris ce que tu veux exactement
@@formation-video je pense qu’il veut faire un peu comme les vector en c++
Salut Jason, merci pour ces explications qui m’emmènent à une question. Je voudrais me coder un mini jeu international dans lequel j'ai besoin de récupérer les infos clavier en passant par les adresses des touches, avoir leur nombre et la disposition du clavier en fonction du matériel, du pays et de la langue du clavier... J'essaye de trouver des infos là dessus aussi un petit tuto donnant des pistes sur les fonctions utilisables pour aboutir serait le bienvenu 🙂 Peut-être utiliserions-nous les pointeurs génériques ;-)
Bonsoir. Pour cela, il vaut mieux passer par une bibliothèque comme SDL (elle est abordée dans le cours)
@@formation-video Merci Jason :-) justement je suis en plein dessus et je trouve tes cours méga intéressants. Reste plus qu'à trouver la ou les fonctions permettant d'extraire ce type de données. Je me suis fixé un but à atteindre : reprendre les travaux du soft tux-type, codé en C avec SDL 1 dont la dernière version 1.8.3-5 est unstable. J'ai plusieurs idées qui me sont apparues notamment apporter une couche plus loufoque au logiciel de manière à apporter une formation plus ludique...
Je ne me fais pas d'illusion, il y a beaucoup d'heures de travail avant de parvenir à quelque chose de concret mais ce langage me plait vraiment 🙂
Cela reste un très bon projet en soit, et une bonne manière de mettre en pratique ce que tu apprends 👍
21:34 pourquoi a-t-on le résultat de la fonction calculer, alors qu'elle ne contient pas de return ?
C'est la tout le principe de la généricité ici. On fait référence à une fonction (via le pointeur de fonction). Il y a donc bien un retour puisqu'on fait appel à ce moment à la fonction d'addition 👍
@@formation-video d'accord je pensais qu'il fallait obligatoirement mettre un return (Java l'exige il me semble). Merci pour ton explication ! 👍 Tes vidéos sont super bien !
Non justement, Java ne l'exige pas. Si une méthode a "void" comme type de retour, elle n'a rien à retourner (exemple avec la méthode main d'ailleurs) 👍
@@formation-video oui, je parlais d'une méthode int, double, etc. par exemple! Merci pour ta réponse :)
Oui, et bien c'est la même chose ici
Je souhaite faire en c une liste qui puisse sois gerer des entier sois des double. Comme les liste aurons les meme méthode ajout/ afficher... Je pensais faire la généricité avec un pointeur void comme au début de la vidéo mais du coup je comprends pas comment dereferencer pour avoir la valeur ? Le but etant de ne creer qu'une seule structures pour ma liste mais avoir le choix du type. Le but final est par exemple je suis en train de faire en sdl un jeu astéroïdes. Je voudrais pouvoir gerer une liste d'astéroïdes et une liste de tir de mon vaisseau chacun etant un strut perso mais avoir un seul fichier c pour la gestion de liste ?
Voilà quelques pistes pour aider : pastebin.com/zTd8bND0
@@formation-video merci c'est très clair il faut caster le pointeur via les pointeur de fonction. Merci je test ça
👍
Du coup j'ai une question: Comment faire du refactoring en C si on ne peut pas variabiliser le typage d'une fonction?
Je m'explique. J'en avait marre à chaque Allocation dynamique d'écrire le code suivant
maStruct = malloc(sizeof(*maStruct));
if(maStruct == NULL) {
fprintf(stderr, "allocation erreur");
exit(EXIT_FAILURE);
}
J'ai voulu ecrire une fonction générique pour ça en faisant
void allocateFor(void *object) {
object = malloc(sizeof(*object));
if(object == NULL){
fprintf(stderr, "Memory allocation Error.
");
exit(EXIT_FAILURE);
}
return;
}
Mais plantage à cause du déférencement impossible...
Alors comment fait-on?
J'ai fait ceci et ça fonctionne : pastebin.com/ERuTZFtZ
ha ok merci! Mais j'arrive pas à comprendre pourquoi faire return myData alors qu'en entrée de fonction on a un pointeur et qu'on y affecte malloc avec la ligne mydata = malloc(sizeof(*mydata))?
Car tu veux faire du générique, donc tu ne sais pas de quel type sera la donnée (int ? char ? float ?). Donc on renvoyant un void*, on récupère tout type de donnée allouée :)
Bon j'avoue c'est pas encore clair, je manque d'experience je pense. Du coup j'ai construit un systeme d'affichage de debugs pour me reperer quand mes progs plantent. Cela permet d'afficher des message en lançant le prog avec -d ou --debug en argument et cela permet de les afficher avec un effet de tabulation selon la profondeur de la fonction appellée.: Le .c est ici: pastebin.com/zSMSsr9K et le .h: pastebin.com/ELX0XtHp.
C'est bien, et utile :)
Salut merci pour ta vidéo bien sympa et claire. J'ai fait le même code que toi celui du début à 8:00 environ et il me met un :
main.c:34:18: warning: dereferencing 'void *' pointer
printf("%d
", *pGen);
^~~~~
main.c:34:18: error: invalid use of void expression
J'utilise un makefile avec les options de compilations suivante :
CC = gcc
CFLAGS = -O3 -g -Wall -DEBUG
CCCOM=$(CC) $(CFLAGS) -std=c17
C'est tout à fait normal, j'ai montré la même erreur dans la vidéo justement. Le pointeur pointe sur NULL, il n'y a donc rien à afficher, là où le "%d" attend une valeur entière (et pas NULL) 😉
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
💙 Si ce n'est pas encore fait, n'hésite pas à t'abonner à la chaîne
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
◾ Site web : jasonchampagne.fr
◾ Discord : discord.me/jasonchampagne
◾ Twitch : www.twitch.tv/jachampagne
◾ UA-cam (personnel) : ua-cam.com/users/jasonchampagne
◾ Twitter : twitter.com/jachampagne8
◾ Facebook : facebook.com/jachampagne8
◾ Instagram : instagram.com/jachampagne8
◾ Snapchat : www.snapchat.com/add/jachampagne8
@@formation-video Ok merci pour ta réponse.
De rien
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
💙 Si ce n'est pas encore fait, n'hésite pas à t'abonner à la chaîne
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
◾ Site web : jasonchampagne.fr
◾ Discord : discord.me/jasonchampagne
◾ Twitch : www.twitch.tv/jachampagne
◾ UA-cam (personnel) : ua-cam.com/users/jasonchampagne
◾ Twitter : twitter.com/jachampagne8
◾ Facebook : facebook.com/jachampagne8
◾ Instagram : instagram.com/jachampagne8
◾ Snapchat : www.snapchat.com/add/jachampagne8
Salut ! merci pour ton cour, j'ai un petit probleme lorsque que je compile apres avoir fais un pointeur sur fonction (qui renvoies toutes des int donc le generique) j'ai cette erreur de compilation :
Undefined symbols for architecture x86_64:
"_gameManager", referenced from:
_main in main-b90cf4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Pourrais tu me donner un coup de pouce ?
Bonjour, quel est ton code ?
Limpide comme du crystal comme d'habitude. Les tableaux de pointeurs pour tout ceux qui comme moi detestent les couples switch..case pour des menus par exemple.Merci
Bon courage pour la suite