Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock List of forums Cairo-Dock cafe | Café Cairo-Dock Le post dédié à l' apprentissage du C
The latest stable release is the *3.4.0* : How to install it here.
Note: We just switched from BZR to Git on Github! (only to host the code and your future pull requests)
Cairo-Dock cafe | Café Cairo-Dock

Subjects Author Language Messages Last message
[Locked] Le post dédié à l' apprentissage du C
Page : 1 2 3 ...18 19 20
nochka85 Français 388 nochka85 [Read]
24 January 2010 à 19:27

nochka85, Thursday 25 September 2008 à 19:46


Subscription date : 29 November 2007
Messages : 7408
Allez : Suite à la suggestion de Mr Mav, je me suis décidé à me lancer dans l'apprentissage du C .... çà risque d'être "un tout petit" long car je pars de zéro !!! ... et du coup, je me lance dans les tutos dispo sur "Le Site du Zéro" (http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html) !!!!
Je ne fais pas çà dans le but de pouvoir programmer une "tuerie" (du moins pas avant disons .... 20 ans ) ... mais si je peux réussir ne serait-ce qu'à comprendre ou modifier un bout de code ... et dans l'idéal pouvoir programmer une petite applet pour mon dock préféré, alors je serais ravi !!

... Bref, je vous raconte tout çà et j'ai décidé d'ouvrir (et de faire "vivre") ce post pour plusieurs raisons :
      • Je me suis dit qu'en cas de difficultés (et c'est sûr qu'il y en aura ), peut être qu'une âme charitable parmis les devs pourraient m'aider <- OK, je pourrais demander sur un site dédié à la programmation ... mais vu la compétence des devs de cairo-dock, je suis sûr de n'avoir QUE des bons conseils ici <- Alors là, si vous ne m'aidez pas, je ne comprendrais pas :mrgreen:
      • Cela pourrait peut être "inciter" d'autres personnes de la communauté cairo-dock qui, comme moi, n'y connaissent rien (pour ma part, je ne connais que "2 ou 3 trucs" en bash + un peu de Basic à l'époque où j'avais mon Amstrad CPC 6128 ) à se lancer dans l'aventure !


Bref, j'éspère que les "pros" pourront me (nous) aider .... et j'invite donc toute personne souhaitant "franchir le pas" à se joindre à ce post afin de partager nos questions, les réponses, nos désillusions ( ), nos erreurs, les solutions ....

Voilà pour l'intro ....

Merci d'avoir lu jusque là

nochka85, Thursday 25 September 2008 à 19:54


Subscription date : 29 November 2007
Messages : 7408
Entrons dans les choses sérieuses :

.... mais je suis sympa, pour l'instant, je n'ai "aucun" soucis .... je vous poste juste mon 1er bout de code afin que vous vous rendiez compte du chemin qu'il reste à parcourir :

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

printf("J'écris de texte :-P\n\n\nJe saute des lignes...\t\t\tet fais des tabulations :-D\n"); //et je mets un commentaire ;-)
printf("... et le tout avec des smileys ... sinon, cela ne serait pas moi !!! ;-)");
return 0;
}


.... C'est cool , non ? ... maintenant, je sais faire un "echo" en C !!!!!!!!!

.... allez, juste une petite question aux "pros" histoire de ne pas poster pour rien (en fait, je l'avais postée en "hors sujet" dans un autre post, mais autant la remettre ici) :

Quel IDE (ou EDI) utilisez vous ?
<- Pour ceux qui, comme moi il y a 12 heures, ne savent pas ce que c'est, c'est un 3 en 1 qui permet de tapper son code + débugguer + compiler

... j'ai pour l'instant jeté mon dévolu sur Code::Blocks 8.02 .... mais est-ce un bon choix ?

Mav, Thursday 25 September 2008 à 20:05


Subscription date : 29 November 2007
Messages : 3146
Perso, je te conseille d'y aller à la bonne vieille méthode, mais c'est purement personnel.

Geany pour l'édition (le CTRL+E pour les commentaires est ultra pratique)

un terminal ouvert qui pointe vers le dossier de ton plugin (je te parle à la sauce cairo-dock vu que c'est le but :)) pour pouvoir compiler (make et make install)

un autre onglet terminal pour lancer CD quand la compilation est finie

N'hésites pas par exemple à regarder le premier musicplayer dès que tu voudras te mettre au code de CD, je l'avais pas mal commenté et il était assez simple

nochka85, Thursday 25 September 2008 à 20:18


Subscription date : 29 November 2007
Messages : 7408
Geany pour l'édition (le CTRL+E pour les commentaires est ultra pratique)


... j'ai vu qu'il n'avais pas de débuggueur .... même si je ne vois pas encore à quoi cela pourra me servir ... Bref, Code::Blocks est il trop compliqué pour débuter ?

un terminal ouvert qui pointe vers le dossier de ton plugin (je te parle à la sauce cairo-dock vu que c'est le but :)) pour pouvoir compiler (make et make install)


... oui, mais pour l'instant, j'en suis juste à vouloir tapper du code et le lancer pour voir ce que cela fait -> si faut que je me tappe un "make et make install" à chaque fois

cchumi, Thursday 25 September 2008 à 20:20


Subscription date : 11 January 2008
Messages : 390
tu es obliger à chaque fois de faire le make install.

ppmt, Thursday 25 September 2008 à 20:42


Subscription date : 29 November 2007
Messages : 3520
c'est la beaute du C

cchumi, Thursday 25 September 2008 à 21:02


Subscription date : 11 January 2008
Messages : 390
Nochka ( ou les autres ! ) si je peux t'encourager j'ai commencer le C pour cairo dock et à vrai dire n'y connaissais rien du tout . Je me suis taper le tuto du site du zero en premier. Ensuite à chaque problème que je pouvait rencontrer je cherchais sur le net. Tu trouves réponse à tout enfin presque . Je t'assure que Fabounet en ayant repris mon code pourra t'affirmer que je n'y connaissais rien. Mais lance toi et tu vas apprendre. Couragggggeeee

nochka85, Thursday 25 September 2008 à 21:09


Subscription date : 29 November 2007
Messages : 7408
Mais lance toi et tu vas apprendre. Couragggggeeee


merci

tu es obliger à chaque fois de faire le make install.


Bah pour l'instant, avec Code::Blocks, je clique juste sur l'icone "Compiler et executer" et cela me lance mon programme ... c'est du coup même plus rapide que de lancer un script bash

ChAnGFu, Thursday 25 September 2008 à 21:10


Subscription date : 17 January 2008
Messages : 1526
Moi c'est très simple, mon IDE: gEdit.
Il existe une tonne de "Greffons" qui permettent d'avoir la complétion, un correcteur orthographique (utile!), un volet de navigation de fichier, surbrillance automatique, etc...

Un lien intéressant: http://artisan.karma-lab.net/node/1619

Il existe un système d'outil externe qui permet d'intégrer des scripts bash:
  • Compiler un .c

#!/bin/sh
DIR=$GEDIT_CURRENT_DOCUMENT_DIR
FILE=$GEDIT_CURRENT_DOCUMENT_NAME
echo "Bienvenue dans l'outils de compilation de Gedit"
echo ""
echo "Outils créé par ChAnGFu"
sleep 1

echo "Changement de dossier vers $DIR"
cd "$DIR"

PRENOM=${FILE%.*}
NOM=`zenity --entry --title="Compilation: Nom du Programme" --text="Entrer le nom du programme compilé" --entry-text=$PRENOM`

echo "Compilation de $FILE vers $NOM"
gcc "$FILE" -o "$NOM"

sleep 2
echo "Fichier Compilé!"

  • Compiler et exécuter un .c

#!/bin/sh
DIR=$GEDIT_CURRENT_DOCUMENT_DIR
FILE=$GEDIT_CURRENT_DOCUMENT_NAME
echo "Bienvenue dans l'outils de compilation de Gedit"
echo ""
echo "Outils créé par ChAnGFu"
sleep 1

echo "Changement de dossier vers $DIR"
cd "$DIR"

PRENOM=${FILE%.*}
NOM=`zenity --entry --title="Compilation: Nom du Programme" --text="Entrer le nom du programme compilé" --entry-text=$PRENOM`

echo "Compilation de $FILE vers $NOM"
gcc "$FILE" -o "$NOM"

sleep 2
echo "Fichier Compilé!"
echo ""
echo "Lancement du programme dans un terminal..."

gnome-terminal --working-directory="$GEDIT_CURRENT_DOCUMENT_DIR" -x "./$NOM"


  • Executer:


#!/bin/sh
DIR=$GEDIT_CURRENT_DOCUMENT_DIR
FILE=$GEDIT_CURRENT_DOCUMENT_NAME

PRENOM=${FILE%.*}
NOM=`zenity --entry --title="Execution: Nom du Programme" --text="Entrer le nom du programme compilé" --entry-text=$PRENOM`

echo "Lancement du programme dans un terminal..."

gnome-terminal --working-directory="$DIR" -x "./$NOM"


Voila pour ma contrib du soir

cchumi, Thursday 25 September 2008 à 21:11


Subscription date : 11 January 2008
Messages : 390
Bah pour l'instant, avec Code::Blocks, je clique juste sur l'icone "Compiler et executer" et cela me lance mon programme ... c'est du coup même plus rapide que de lancer un script bash


Ohhhh c'est pas vrai j'avais jamais tester je my mets de suite

nochka85, Thursday 25 September 2008 à 22:26


Subscription date : 29 November 2007
Messages : 7408
Ohhhh c'est pas vrai j'avais jamais tester je my mets de suite


C'est vrai ? Tu ne connaissais pas ?

Voila pour ma contrib du soir


merci bien

pico, Friday 26 September 2008 à 06:44


Subscription date : 23 February 2008
Messages : 144
Je compte bien m'y mettre car faire des themes...
Enfin quelque chose qui puisse aidé réellement !

Je m'y mettrai ce soir !

Jackass059, Friday 26 September 2008 à 11:02


Subscription date : 08 February 2008
Messages : 166
Un truc annexe au C très important, c'est le Makefile (c'est pas seulement annexe au C au passage, ça sert pour plein de choses ).

Le premier Makefile que j'ai utilisé ressemblait à ça :

# Ces cibles ne sont pas des vrais fichiers
.PHONY: clean, real-clean

# On désactive toutes les règles implicites
.SUFFIXES:

# Déclarations de constantes
CC = gcc
CFLAGS = -W -Werror -fno-builtin `xml2-config --cflags`
LDFLAGS = -s \
    `xml2-config --libs`

FINAL = Main
MIDDLE = reader2.o \

$(FINAL): $(MIDDLE)
    $(CC) $(LDFLAGS) -o $@ $^

%.o: %.c
    $(CC) $(CFLAGS) -c $<

clean:
    rm -f $(MIDDLE) *~


Dans ce Mafefile, il n'y a pas le support du make install, pour ça faudra s'intéresser aux auto-tools et compagnie

Pour info :
FINAL correspond au nom de l'exécutable final.
MIDDLE correspond à la liste des .o à lier à l'exécutable.
CFLAGS correspond à la liste des librairies à lier à la pré-compilation.
LDFLAGS correspond à la liste des librairies à lier à l'exécutable.
CC correspond au compilateur utilisé.

Un autre point à voir, c'est la compilation, en C la compilation se passe en 2 étapes, il y a d'abord une pré-compilation qui transforme votre .c en .o, puis la compilation qui lie vos .o dans une exécutable.

Ouranos999, Friday 26 September 2008 à 11:11


Subscription date : 29 April 2008
Messages : 106
Ben moi perso, j'utilise Vim + compilation en ligne de commande avec GCC...
C'est moins lourd que Geany ou Code::Blocks

Tu peux automatiser aussi la compilation en créant un Makefile avec des arguments de ce type :
install: gcc -o monexe.x fichier1.o fichier2.o fichier3.o
# Attention, il faut utiliser des tabulations après les :, pas des espaces !


Edit : sinon, tu peux regarder par là : http://www.cs.usask.ca/staff/oster/makefiles.html

fabounet, Friday 26 September 2008 à 12:17


Subscription date : 30 November 2007
Messages : 17118
Très bonne initiative Nochka, et je t'en remercie !
vu que le but est de créer une applet pour le dock, tu peux essayer de lancer le script de génération d'applet : generate-new-applet.sh on un nom approchant, dans le répertoire plug-ins.

tu auras une applet dans ton dock en 1 minute (et pas besoin de tripatouiller les Makefile) ! (si tu veux pas faire le "sudo make install" à chaque fois, tu peux utiliser l'option -m du dock )
après tu peux mettre des trucs dans la partie INIT de applet-init.c qui sera ton bac à sable.
L'applet la plus simple est à mon avis logout (ou showDesktop)

3 trucs à comprendre en C : les pointeurs, les macros et les signaux (glib).
après c'est juste connaître les APIs des diverses lib, je te conseille devhelp pour ça, très pratique.

PS : Kate powa !

nochka85, Friday 26 September 2008 à 13:12


Subscription date : 29 November 2007
Messages : 7408
Alors, juste pour recadrer un tout petit peu -> Pour l'instant (en 1 soirée de tuto sur le site du zéro) je sais simplement faire 1 menu à choix multiple dans une console ! -> Bref, je crois qu'il faut au moins que je finisse ces tutos avant de m'attaquer à quoi que ce soit pour cairo-dock

... Je vous dis tout çà pour ne pas que vous alliez trop vite -> je ne sais même pas "exactement" ce qu'est un makefile, des pointeurs, les signaux glib, etc... moi j'en suis juste à manipuler des variables (ou constantes) numériques (char,long,int,float,double <- z'avez vu, j'ai bien appris ma leçon ) à faire quelques conditions (if, else, else if ... ou encore des switch + case), à faire des calculs simples (je viens juste d'apprendre ce qu'était un modulo ) ou des incrémentations/décrémentation sous forme de raccourcis, etc .... Bref, je découvre ....

Alors svp, n'allez pas trop vite -> Vous risquez de me parler de trucs que je vous redemanderai dans quelques temps

nochka85, Saturday 27 September 2008 à 11:01


Subscription date : 29 November 2007
Messages : 7408
Bon, çà y'est : je suis rentré dans le vif du sujet : les POINTEURS !!!

Encore 6 mois de pratique et j'aurais tout compris


nochka85, Saturday 27 September 2008 à 13:11


Subscription date : 29 November 2007
Messages : 7408
J'aurais une petite question :

Je suis actuellement en train d'apprendre les pointeurs et les tableaux ... seulement, sur le site du zéro, il est écrit que pour afficher l'adresse d'une variable , on peut faire (exemple pour une variable nommée "age") :
      • printf("L'adresse de la variable age est : %p", &age); <- pour avoir l'adresse en hexadécimal
      • printf("L'adresse de la variable age est : %ld", &age); <- pour avoir l'adresse en décimal


Mais cela ne semble pas marché chez moi :
      • avec %p , j'obtiens une adresse du type : 0xbfec5fc0
      • avec %ld , j'obtiens (après une belle erreur à la compilation) comme "valeur" d'adresse : -1075028032


Bref, le seul truc qui semble marcher est %p .... mais ce n'est pas de l'hexadécimal non plus !! ... à moins que l'on puisse aller jusqu'à x désormais

... Donc, voici ma question : Ce comportement est il normal ? (est-ce une "spécificité" de linux par rapport à windows sur lequel s'appuie le site du Zéro ?)

ChAnGFu, Saturday 27 September 2008 à 14:01


Subscription date : 17 January 2008
Messages : 1526
Sincèrement, je vois pas d'intérêt à cette exercice, si tu code des applets tu ne va jamais "voir" les adresses de pointeurs que tu utilise. Et je crois que c'est %x pour afficher une adresse de variable en hexa.

Jackass059, Saturday 27 September 2008 à 14:09


Subscription date : 08 February 2008
Messages : 166
Les résultats sont les bons.

0x signifie que tu lis une valeur hexadécimale
L'autre valeur est assez explicite, elle est bien décimale

Ensuite, les pointeurs, représentent une adresse dans la mémoire, donc les valeurs sont (un peu) incompréhensible pour un humain.

Je sais pas si ils ont mis un schéma sur le site, mais un pointeur c'est une valeur qui indique l'adresse en mémoire d'une autre valeur.

le & sert à indiquer l'adresse du pointeur.

Exemple :
toto (à ladresse 0x123AB) pointe vers titi (à l'adresse 0xAB123)

&toto => 0x123AB
*toto => 0xAB123

(Ou un truc du genre, je confonds souvent & et *, mais ça doit être ça)

Cairo-Dock cafe | Café Cairo-Dock

Subjects Author Language Messages Last message
[Locked] Le post dédié à l' apprentissage du C
Page : 1 2 3 ...18 19 20
nochka85 Français 388 nochka85 [Read]
24 January 2010 à 19:27


Glx-Dock / Cairo-Dock List of forums Cairo-Dock cafe | Café Cairo-Dock Le post dédié à l' apprentissage du C Top

Online users : billsorry,

Powered by ElementSpeak © 2007 Adrien Pilleboue, 2009-2013 Matthieu Baerts.
Dock based on CSS Dock Menu (Ndesign) with jQuery. Icons by zgegball
Cairo-Dock is a free software under GNU-GPL3 licence. First stable version created by Fabounet.
Many thanks to TuxFamily for the web Hosting and Mav for the domain name.