# Programmation en C



## titigrou (25 Janvier 2006)

Bonjour,

Je suis étudiant en physique ingé, et lundi on commence la prog en C. Pour ca, on a accés à la salle avec des centaines de pc sous linux, mais j'ai pas envie de toucher un pc, ca me rappelle trop de mauvaises choses! 
Alors je veux prendre mon ibook pour programmer, mais voilà, je n'y connais rien du tout encore, et je souhaiterai installer tout le nécessaire pour programmer en C!
Help me!!


----------



## PA5CAL (25 Janvier 2006)

Bonsoir

Tu peux télécharger XCode, l'environnement de développement d'Apple (gratuit), à cette adresse : http://developer.apple.com/tools/xcode/index.html.
Il te sera nécessaire de t'enregistrer en ligne avant de pouvoir le télécharger.

XCode contient le compilateur GCC 4.0 (GNU Compiler Collection), qui permet la compilation du C, mais aussi du C++ et de l'Objective C. Suivant la manière dont tu vas l'utiliser, tu devras peut-être adapter plus ou moins ton code et ta manière de travailler pour faire comme tes camarades sous Linux.

Si tu ne veux pas utiliser l'environnement graphique d'XCode, tu peux tout de même éditer des codes sources avec TextEdit et compiler avec GCC sous Terminal.


----------



## Didier Guillion (25 Janvier 2006)

Je complete la reponse de Pa5cal, si ton projet est en C ANSI, tu n'aura strictement rien a adapter, le compilateur GCC respecte la norme ANSI.

Cordialement


----------



## Zeusviper (25 Janvier 2006)

Bonsoir,
XCode c'est top je dis pas le contraire
Mais, la nous  avons un éleve qui va découvrir le C, et suivre un cours, avec un prof et ses camarades sous linux. Et dans de telles conditions Xcode n'est vraiment pas adapté! Ce n'est pas forcément évident d'accès et personne ne pourra l'aider, de plus si c'est un premier cours, on va lui apprendre la compilation en ligne de commande, le makefile... tt ce qui est implicite avec Xcode.

Conclusion, installe X11 et utilise un terminal tout à fait standard, et un emacs (ou autre éditeur) tout bête! Rien ne t'empêche une fois que tu saura la base de base d'utiliser Xcode et sa facilité.

Enfin perso c'est mon avis étant en école d'ingé et ayant vécu la découverte du C sous linux!

++


----------



## Didier Guillion (25 Janvier 2006)

Zeusviper a dit:
			
		

> Bonsoir,
> XCode c'est top je dis pas le contraire
> Mais, la nous  avons un éleve qui va découvrir le C, et suivre un cours, avec un prof et ses camarades sous linux. Et dans de telles conditions Xcode n'est vraiment pas adapté! Ce n'est pas forcément évident d'accès et personne ne pourra l'aider, de plus si c'est un premier cours, on va lui apprendre la compilation en ligne de commande, le makefile... tt ce qui est implicite avec Xcode.
> 
> ...



Rien a ajouter, ca se tient.

Cordialement


----------



## PA5CAL (25 Janvier 2006)

Tout-à-fait d'accord.

Je n'avais pas pensé à X11.


----------



## titigrou (26 Janvier 2006)

C'est quoi au fait x11?
On a fait allusion au complilateur, il y en avec x11?
Et il y aura toutes les librairies?
Merci à tous pour vos réponses c'est super cool!


----------



## Zeusviper (27 Janvier 2006)

Pour faire court, X11 est un environnement graphique.
Tout ce qu'il faut savoir et comment l'installer ici : http://xrings.net/xrings/article.php3?id_article=201

Avec cela tu aura accès à toutes les applis courantes que tu va utiliser dans ton école, et pouvoir installer pas mal d'applications linux, ou nécessitant un Xwindows.

Cela n'empeche pas d'installer en plus l'environnement de développement Apple, ainsi tu aura Xcode, et tout ce qui te sera utile pour développer : compilateur, librairies et autres!
Tu trouve tout ca sur le site Apple : http://developer.apple.com/tools/xcode/index.html (attention 800Mo quand meme) ou plus simplement sur tes cd d'instal de MacOSX (mais ca ne sera pas les toutes dernières versions!).

Voilà! Bonne programmation!
++


----------



## hopkins (28 Janvier 2006)

et puis emacs c'est génial (macro + (sutout) tags + cadre) et tellement pluridisciplinaire !


----------



## Aurélien-A (28 Janvier 2006)

titigrou a dit:
			
		

> Bonjour,
> 
> Je suis étudiant en physique ingé, et lundi on commence la prog en C. Pour ca, on a accés à la salle avec des centaines de pc sous linux, mais j'ai pas envie de toucher un pc, ca me rappelle trop de mauvaises choses!
> Alors je veux prendre mon ibook pour programmer, mais voilà, je n'y connais rien du tout encore, et je souhaiterai installer tout le nécessaire pour programmer en C!
> Help me!!



Comment j'ai fait à l'IUT:

J'ai installé XCode (sur ton CD d'installation système). J'ai commencé, comme tout le monde, à faire des makefiles "pour apprendre" ou alors à faire des programmes ne contenant qu'un seul fichier source.  Pour ça je te recommande cet éditeur de texte convivial et open-souce: Smultron. Ensuite, compilation via la console, en invoquant la ligne de commande.

Ensuite, tu pourras passer par XCode, créer un "portable command line tool written in C" dans les templates de projets, et faire du multifichiers en te dispensant les fastidieux makefiles et en gagnant du temps. Mais à mon avis, je ne connaît pas l'importance de la programmation dans ton diplôme, apprend à faire "à l'ancienne" d'abord. 

Voilà mes conseils persos.

Aurélien


----------



## Aurélien-A (28 Janvier 2006)

hopkins a dit:
			
		

> et puis emacs c'est génial (macro + (sutout) tags + cadre) et tellement pluridisciplinaire !



Mode UNIX-GEEK-TROLL on:

Ouais, vim c'est mieux, ça fait qu'une chose et ça le fait bien, et puis pour quitter le programme c'est humainement compréhensible.

Mode UNIX-GEEK-TROLL off.


----------



## titigrou (28 Janvier 2006)

Ben le module s'appelle initiation au langage C...
Donc on va commencer par les bases, mais je ne connais rien du tout du tout...
Dans quoi je vais taper mon code, avec quoi après je le compile?


----------



## Zeusviper (28 Janvier 2006)

En toute logique, si le cours est réalisé sur linux, tu va taper dans emacs. tapes emacs dans un terminal pour découvrir! (bon courage!) tu peux aussi installer des version d'emacs bcp plus accessible (avec une souris qui marche!!).
Mais en pratique tu peux utiliser n'importe quel éditeur texte (enfin textedit n'est pas conseillé! mais par ex bbedit, smultron, SubEthaEdit,...) tu enregistre tes fichiers là ou tu le souhaites. et tu compile via le terminal : "gcc tonfichier.c -o tonappli"

Mais donc si c'est une inititation tout devrais t'etre expliqué de toute facon! si tu installe, X11+Xcode, comme dit plus haut, tu aura tout les outils dont on te parlera.

Bonne programmation!

PS : Pour tout ce qui concerne la prog sur mac, voir l'excellent http://www.projectomega.org/


----------



## titigrou (28 Janvier 2006)

Quand tu dis "tu compile via le terminal : "gcc tonfichier.c -o tonappli" ", tonappli je remplace par quoi?


----------



## Zeusviper (28 Janvier 2006)

tonappli est le nom que tu veux donner à ton executable.

en pratique, tu peux te contenter de faire gcc tonfichier.c et alors il crée tt seul un executable nommé a.out

il y a bien sur tt un tas d'options a gcc mais tu les verra au fur et à mesure.


----------



## titigrou (28 Janvier 2006)

Je tape gcc prog.c dans le terminal et il me répond,  prog.c No such file or directory, et no input file
... :rose:


----------



## Zeusviper (28 Janvier 2006)

;-) oui je suis pas clair je sais!

quand je disais gcc tonfichier.c
tonfichier.c représente le chemin compelt d'accès vers ton fichier
En général le dossier dans lequel tu te trouve par défaut en ouvrant le Terminal est ton dossier utilisateur.
tu peux naviguer dans tes dossiers dans le terminal via cd nomdedossier
cd .. pour remonter la hiérarchie
ls pour lister le contenu d'un dossier

en esperant que ca va aller!


----------



## titigrou (28 Janvier 2006)

J'ai mis mon fichier prog sur le bureau, je remonte sur le bureau avec cd desktop, je tappe gcc prog.c et j'ai ca...
prog.c: In function 'main':
prog.c:3: warning: incompatible implicit declaration of built-in function 'printf'
prog.c:2: warning: return type of 'main' is not 'int'
g5:~/desktop Titigrou$


----------



## Zeusviper (28 Janvier 2006)

euh d'abord un chti détail, ton bureau est DANS ton dossier utilisateur, donc tu es plutot descendu vers desktop!!

ensuite, la ce sont des erreurs de code C qui sont détectés par le compilateur.
donc cela dépend du code que tu a tapé!

enfin vu les erreurs je dirai qu'iil te manque :
#include <stdio.h>
au début de ton code, sans ce fichier ton prog ne connait pas la focntion printf

et je suppose que tu a déclaré ta fonction :
int main(){ ...}
dans ce cas cela veut dire que le type de retour doit etre un entier, donc soit tu change ce type en void, soit tu met à la fin de ton code de focntion un "return 1;" par ex.

tu devrai chercher un pti tuto C, pour faire les premiers prog basiques habituelles! ce sera plus simple que le forum!!  

Bonne soirée!!
++

EDIT : PA5CAL>>ok j'ai été plus vite mais toi c'est nettement plus beau!!


----------



## PA5CAL (28 Janvier 2006)

*prog.c:3: warning: incompatible implicit declaration of built-in function 'printf'*

Tu n'as peut-être pas inclus le fichier de définition de la fonction "printf". En tête de ton fichier, tu dois avoir rajouté la ligne:
	
	



```
#include <stdio.h>
```


*prog.c:2: warning: return type of 'main' is not 'int'*

Le retour de la fonction "main" doit être de type "int". Cette fonction doit être implémentée comme ceci:
	
	



```
int main (int argc, char * const argv[]) {
    /* code de la fonction ici ... */

    return 0;
}
```


EDIT: Ach! Grilled !


----------



## titigrou (28 Janvier 2006)

Oki j'essairai ca!! Merci beaucoup tout le monde!


----------



## Aurélien-A (1 Février 2006)

Zeusviper a dit:
			
		

> int main(){ ...}
> dans ce cas cela veut dire que le type de retour doit etre un entier, donc soit tu change ce type en void, soit tu met à la fin de ton code de focntion un "return 1;" par ex.



return 0;  

On est sous UNIX, et la valeur standard à retourner de main() quand tout s'est bien déroulé, c'est 0.
C'est même conseillé, en programmation système, d'employer exit(0); <stdlib.h> mais bon là on sort du domaine de l'initiation...

Aurélien.


----------



## clampin (2 Février 2006)

Pour rebondir...

Vous avez un bon bouquin en français ou en anglais pour le C ainsi ? 

Merci


----------



## OlivierL (2 Février 2006)

sans hésiter, le célèbre "Kernighan & Ritchie"


----------



## Zeusviper (2 Février 2006)

Aurélien-A a dit:
			
		

> return 0;
> On est sous UNIX, et la valeur standard à retourner de main() quand tout s'est bien déroulé, c'est 0.
> C'est même conseillé, en programmation système, d'employer exit(0); <stdlib.h> mais bon là on sort du domaine de l'initiation...
> Aurélien.



ah si on veut chipoter oui!! mais bon ds ce cas on retournera meme plutot exit(EXIT_SUCCESS) ! :rateau:  c plus joli et plus conseillé encore! ;-)


et pour le bouquin en francais! ;-)
http://www.amazon.fr/exec/obidos/AS...88803/sr=1-1/br_lfbnb_b_1/402-3168737-4781754

enfin perso, je trouve que les cours que l'on peut trouver sur le net sont plutot bien fait (pdf de christian Bac  a chercher sous google!)

ce que je trouve bcp plus interessant, c ca : 
http://www.amazon.fr/exec/obidos/AS...88803/sr=1-2/br_lfbnb_b_2/402-3168737-4781754

on a un énoncé pour y réfléchir et la correction pour voir comment bien faire!
Bon le mieux est d'avoir les 2 bouquins je suppose!!

PS : ce genre de bouquins se trouve ds bcp de bibliothèque, mediatheques et toute BU!


----------



## molgow (2 Février 2006)

OlivierL a dit:
			
		

> sans hésiter, le célèbre "Kernighan & Ritchie"



Je confirme, très bon livre de référence. La traduction française n'est même pas trop horrible pour une fois. Mais je conseille toujours l'anglais, c'est mieux.


----------

