beuh dsl je sais mm pas ce ke c´est^^
sinon merci lightness, je te pose une kestion si j´ai besoin de toi, je continue dapprendre ![]()
les gars j´ai une kestion, je m´addresse principalement a lightness mais tlm peut repondre
.
alors voila, dans ton cours ( chapitre fonctions) lightness tu dis:
int ajoute(int nombre1, int nombre2); // prototype de la fonction " ajoute" ( on parle souvent de déclaration)
int main(void)
{
printf("ajout de 500 avec 400: %d\n", ajoute(500, 400)); /* c´est grace au prototype que le compilateur sais ce que veut dire " ajoute" à cet endroit du programme */
return 0;
}
ce ke je comprends pas, c´est comment le compilateur va savoir kil faut additionner 500 et 400 et non pas les multiplier ou autre...?
ou sinon plus bas t´as marké:
int ajoute(int nombre1, int nombre2) // ceci est la définition = l´endroit où a été codée la dite fonction
{
return nombre1 + nombre2;
}
euh je comprends pas ton commentaire..^^
et en dessous tu as marké:
il était aussi possible de ne pas faire de prototype et alors d´écrire le programme comme cela:
int ajoute(int nombre1, int nombre2)
{
return nombre1 + nombre2;
}
int main(void)
{
printf("ajout de 500 avec 400: %d\n", ajoute(500, 400)); /* c´est parce que la fonction a été définie au dessus que le compilateur connais le mot ´ajoute´ */
return 0;
}
or je d´apres ce ke jai compris dans le cours precedent, je croyais ke le prototype etait la 2eme ligne ( int ajoute(int nombre1, int nombre2)
) .
peux tu m´aider stp?
ba t´as pas besoin de prototype quand tu definis ta fonction avant main.
Et le compilo va savoir qu´il faut les additionner a cause de la ligne return nombre1 + nombre2.
En fait il faut juste qu´au moment ou tu appelles ta fonction, le compilo connaisse cette fonction.
Comme en general tu l´appelles dans main, il faut soit que ta fonction soit definie avant main, sinon tu la definis apres main et tu mets le prototype ( avant main)
Comme en general tu l´appelles dans main, il faut soit que ta fonction soit definie avant main, sinon tu la definis apres main et tu mets le prototype ( avant main)
excuse moi j´ai pas compris cette derniere phrase^^
mais sinon, si je met: return nombre1 * nombre2;
il va me les multipliers?
c bon j´ai un peu tout relu, et j´ai compris ![]()
merci pour l´aide ![]()
Tu appelles la fonction ajoute dans ta fonction main donc soit tu déclare la fonction ajoute directement avant avant ta fonction main ou soit tu crée un prototype de fonction qui indique au compilateur qu´il existe bien la fonction ajoute et quelle est déclarée après la fonction main.
Oui, return sert à retourner ce que tu lui demande. Donc vu que tu as déclaré la fonction la fonction ajoute de type int, cette fonction va obligatoirement retourner un nombre entier. Donc la, tu demande à ta fonction de retourner ce que contient la variable nombre1 multiplié par la variable nombre2. Ca va donc te retourner la multiplication de nombre par nombre2.
En espérant t´avoir aider ![]()
A bin j´arrive encore trop tard ![]()
et j´aimerais savoir si j´ai vraiment tout compris:
void retour(void);
int main(void)
{
printf("salut");
retour();
printf("c´est moi");
retour();
return 0;
}
void retour(void)
{
printf("\n");
}
ici les: retour ( );
vont faire un retour a la ligne? au faites c un peu des racourci?
Oui, ça va bien faire des retours à ligne. Hum des raccourcis, je pense pas trop. Lightness a du mettre ce code pour bien faire comprendre les fonctions je pense ![]()
yeah im the best ![]()
bon continuons ![]()
une autre ptite kestion^^
si jutilise la fonction dans un bloc situé apres avoir definni la fonction, est ce ke ca va fonctionner ou le bloc en kestion doit absolument etre situé avant la definition? merciiiiii^^
freedix > oui
tu demandes:
" si jutilise la fonction dans un bloc situé apres avoir definni la fonction, est ce ke ca va fonctionner"
je repond:
oui car la definition de la fonction ( c´est a dire la ou son code complet se situe) est connue du compilateur a partir de cette ligne, donc tous les appels a cette fonction dans les lignes suivantes marcherons.
tu demandes:
" ou le bloc en kestion doit absolument etre situé avant la definition?"
je répond:
en fait, il se trouve que c´est plus conventionnel de mettre les definitions en bas du programme ( parce que ca fait plus beau) mais le mieux encore est de les mettre carrément dans un module a part ( ce que je n´ai pas traité dans ce tutoriel, en revanche tu va acheter prochainnement un livre, les livres sont tres complet pour se genre de choses, et ca sera surement expliqué).
donc la réponse est: non il ne doit pas absolument etre situé en dessous car cela oblige un prototype au dessus et les parresseux n´aiment pas
----
le reste:
" mais sinon, si je met: return nombre1 * nombre2;
il va me les multipliers?"
comme la répondu freedix: oui tout a fait.
en revanche ta fonction s´appelleras toujours " ajoute" et pourtant elle fera une multiplication, donc ce n´est pas pratique du tout, et il n´y aura que toi qui pourras utiliser ton programme sans te tromper.
---
un moment tu as dit que tu aurais surement pas compris si tu n´y avais vraiment rien connu en programmation avant ca.
bon en effet c´est un probleme compliqué, il est TRES difficile de faire apprendre la programmation a un veritable débutant, en fait le mieu pour lui c´est d´apprendre un truc et de rien comprendre.
a premiere vu sa parait trop con mais en fait si on pige rien on apprend quand meme inconsciament.
ensuite il fo lire les exemples, modifier, comprendre, faire de minuscules trucs tout simple.
puis relire un cours ( voir le meme ! ) et au 2eme passage il y aura PLEIN de passages ou tu vas te dire " aaaaaaah ooooook ! ! g pigé c comme ca ke ca maaaaarche ! !" et au fur et a mesure faire ca pour chaque étape:
théorie->rien piger
s´exercer->avoir du mal
relire théorie->tout comprendre mieux
re s´exercer->deja mieu
etc...
etc...
etc...
![]()
Merci beaucoup pour tes reponses! j´espere ke je t´emmerde pas trop^^
en effet c´est dur de comprendre la programmation au debut comment ca marche etc.. et je pense ke ca doit l´etre encore + de faire comprendre a kkun comment ca marche^^.
pour le livre je l´ai pas encore, je devais l´acheter apres l´ecole a midi mais j´me suis pas reveillé
. .^^
j´aurais encore d´autres kestions ( koi? encore??? ben oui^^) si ca vous derange pas^^:
deja une verification: si je fais ca:
int main()
{
int nb;
nb = 5;
nb --;
printf ( "nb apres le -- egal %d\n",nb);
getch ( );
return ( );
}
la le printf va m´afficher le nombre 4 c´est ca? le -- enleve 1 au nombre? et le ++ rajoute 1?
ensuite une kestion:
pour changer la valeur de res, il faut utiliser les pointeurs, et passer l´adresse par copie et modifier le contenu de l´adresse dans la fonction.
cette méthode s´appelle un passage par adresse.
voici un programme qui cette fois-ci fonctionne très bien:
void ajoute(int nb1, int nb2, int* resultat);
int main(void)
{
int res = 0;
ajoute(2, 3, &);
printf("%d\n", res);
return 0;
}
void ajoute(int nb1, int nb2, int* resultat)
{
*resultat = nb1 + nb2;
return; // ce return est facultatif dans un cas ou la fonction est de type void.
}
ca je comprends pas tres bien, tout d´abord, a cette ligne:
ajoute(2, 3, &);
pk il y a un & devant le res? kes kil fait??
peut etre k´apres je comprendrai mieux
j´espere ke vous repondrez^^
merci
i++ est egal a i+1
i-- est egal a i-1
& passe l´adresse de ta variable ( si je ne m´abuse)
et ca sert a koi^^?
aaah c bon j´ai relu le chapitre des pointeurs et c bon
je crois ke g capté
bon je vien de finnir a l´instant le tuto et j´ai pas capté les 3 derniers chapters:
les classes, les structures et les macros..
donc si kkun pouvait m´expliker, je lui en serait grandement reconnaissant :D^^
mais on fait comment apres pour faire des machin graphikes? vous avez un tuto ossi?
Il faut une librairie pour faire du graphique.
http://prografix.games-creators.org
ben les structures c´est simple :
On va faire un exemple c´est toujours plus simple
On definit la structure personne
struct personne
{
char nom[15], prenom [15], ville[15];
int age;
};
void main()
{
struct personne anybody;
printf("Entrez votre nom\n);
scanf("%s", &.nom);
printf("Entrez votre prenom\n");
scanf("%s", &.prenom);
printf("Entrez votre ville\n");
scanf("%s", &.ville);
printf("Entrez votre age");
scanf("%d", &.age");
printf("Vous vous appelez %s %s, vous habitez a %s et vous avez %d ans\n\n", anybody.nom, anybody.prenom, anybody.ville, anybody.age);
}