rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Langage C débutant

Posté par sibe, le lundi 12 mars 2007 à 13:55:48
bonjour, je suis débutant complet en langage C, j'aimerais savoir ce qui correspond aux procédures dans d'autres langages.

Merci d'avance de votre aide :)
Configuration: Windows 98
Firefox 2.0.0.2
Répondre à sibe  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Max_B, le lundi 12 mars 2007 à 13:59:19
Ca dépend , qu'est ce que tu connais comme autres languages ?
Contrairement à Linux, Qui choisit Windows s'expose aux virus, spys et aux tracas peu constructifs
Répondre à Max_B

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sibe, le lundi 12 mars 2007 à 14:02:14
j'ai programmé en Pascal et en delphi.
Répondre à sibe

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Stupeflip, le lundi 12 mars 2007 à 14:25:24
Une procédure c'est une fonction.

Par exemple, tu fais un programme qui fait une opération plusieurs fois, comme par exemple une addition qui affiche le résultat puis une soustraction qui affiche le résultat.

Sachant que tu vas les appeler par exemple 10 fois dans ton programme, tu peux faire une fonction que tu appeleras 10 fois plutôt que de tout recopier :
void fonction_procédure(int valeur1, int valeur2)
{
printf("Addition : %i\n,valeur1+valeur2);
printf("Soustraction : %i\n,valeur1-valeur2);
}

et dans ton programme tu auras juste à faire :
bla bla code 
fonction_procédure(80,10); // c'est qu'un exemple !
bla bla code

Autant de fois que tu veux ;)
Par ailleurs, cela allège la fonction principale (appelée main) et rend le code plus propre (et plus transparent).
Répondre à Stupeflip

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sibe, le lundi 12 mars 2007 à 18:05:32
mais une fonction peut-elle sortir plusieurs résultats, disons par exemple le quotien et le reste pour une division euclidienne (oui, je sais, c'est pas très utile une division euclidienne, mais cest un exemple:)

c'est à dire, je voudrais pouvoir taper un truc du genre :

EUCLID(A,B ; Q, R)

où A et B seraient des variables ou des paramètres type entier, et Q et R le quotient et le reste de la division euclidiennne du plus grand des 2 nombres par le plus petit calculés par la procédure EUCLID.

En Pascal, une fonction ne sort qu'un résultat, j'ai parcouru vaguement quelques sites, et j'ai l'impresion que c'est pareil en C, non ?
Répondre à sibe

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mamiemando, le lundi 12 mars 2007 à 21:14:19
Il suffit de passer en paramètre les variables dans lesquelles tu veux stocker le résultat. Exemple
#include <stdio.h>

void euclide(int a,int b,int *q,int *r){
  *q = a/b;
  *r = a- q*b;
}

int main(){
  int q,r;
  euclide(8,3,&q,&r);
  printf("q=%d r=%d\n",q,r);
  return 0;
}

ou de passer par une structure :
struct qr{
  int q;
  int r;
};

struct qr euclide2(int a,int b){
  struct qr res;
  res.q = a/b;
  res.r = a - q*b;
  return res;
}

int main(){
  struct qr res = euclide2(8,5);
  printf("q=%d r=%d\n",res.q,res.r);
  return 0;
}

Bonne chance
Répondre à mamiemando

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
sibe, le mardi 13 mars 2007 à 13:38:29
Merci pour la réponse, je vais essayer ceci qui semble tout à fit correspondre à ce que je cherchais :)

Toutefois, une question subsidiaire : laquelles des 2 méthodes serait elle la mieux préconisée (ou quelle est la différence "phylosophique" entre les 2 possibilités :)
Répondre à sibe

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Stupeflip, le mercredi 14 mars 2007 à 10:43:01
Oui tu peux évidemment, seulement c'est vrai que c'est pas si simple. En fait, quand on parle de procédures, on peut faire la distinction entre action et fonction (les termes varient selon les livres/profs).

Action : procédure qui ne renvoie rien (comme mon exemple)
Fonction : procédure qui renvoie une valeur (comme ton exemple)

Pour cela plusieurs possibilités :
*Soit tu n'as qu'une valeur simple, tu fais un
return valeur;
Ca te fera un truc genre
int fonction_procédure(int valeur1, int valeur2)
{
int resultat=valeur1+valeur2;
printf("Addition : %i\n,resultat);
return resultat
}

Ce code fera l'addition, et retournera le résultat qui pourra être exploité.
*Soit tu as plusieurs variables, dans ce cas
- tu peux faire une structure regroupant toutes tes variables
struct{
int valeur1;
int valeur2;
};

et faire le return dessus.
- tu peux faire des passages de paramètres par pointeur, ou par référence (C++), ainsi tu n'envoies non pas la valeur, mais l'adresse mémoire de cette variable. Donc tu modifies directement la case, et non la valeur, et ce changement est effectif même en dehors de la fonction.
- tu peux utiliser des variables globales (bouh), des variables définies pour tout le programme. C'est moche.
- surement d'autres moyens mais je mets les plus courants sans trop prendre le temps d'approfondir !



Salut, il n'y a pas de meilleure solution entre le return et les pointeurs, en fait ça dépend des cas. La grande différence entre les deux est dans le fait que quand tu travailles sur des pointeurs, tu travailles sur les cases mémoire. Ce qui fait que tu modifies la valeur même en dehors de la fonction, ce qui n'est pas le cas du return.
int addition (int valeur1, int valeur2)
{
int resultat=valeur1+valeur2;
return resultat;
}

Ici resultat est une variable locale à la fonction. Dans ton main, si tu veux afficher resultat, ça ne marchera pas. Par contre si tu travailles sur des pointeurs
int addition (int valeur1, int valeur2, int *resultat)
{
*resultat=valeur1+valeur2;
}

C'est la variable se situant à l'adresse de resultat qui sera modifiée, et non la variable elle-même. En pratique, le resultat que tu auras déclaré dans ton main sera effectivement modifié !

Le return est quant à lui plus pratique dans le cas où tu ne réutilises pas la variable, en effet, les variables locales allègent le programme et le rendent plus clair.
Répondre à Stupeflip

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
beden, le lundi 21 avril 2008 à 01:26:07
je suis etudiant en NTIC et je voudrai des exrcices et corriges en langage c et en algorithme merci et je compte sur vous.
bede olivier
Répondre à beden

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Lorie, le lundi 21 avril 2008 à 13:02:14
Répondre à Lorie
Logiciels pertinents trouvés dans les téléchargements
Télécharger Easy CD-DA Xtractor 11_5_3 trialEasy CD-DA Xtractor - Easy CD-DA Xtractor est un extracteur de CD audio pour Windows (CD ripper) capable d'encoder directement aux formats MP3 et...Catégorie: Extraction
Licence: Demo
Télécharger BlueJ 2.2.1BlueJ - BlueJ est un programme qui permet d’apprendre la programmation en Java. Ce logiciel très simplifié, offre la possibilité...Catégorie: Java
Licence: Freeware/gratuit
Télécharger RatDVD 0.78.1444RatDVD - RatDVD permet de faire tenir dans un seul fichier, tout le contenu d'un DVD, à la manière d'un DivX/xVid, mais il préserve...Catégorie: Copie/Extraction
Licence: Freeware/gratuit
Télécharger Nada   0.5Nada - Dans le langage courant, on utilise le terme "nada" pour signifier "rien". Nada est pourtant le nom d'un programme d'un...Catégorie: Bureautique
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Langage C débutant »