Langage C

Discutez d'informatique ici !
Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 14 Juil 2014, 12:13

Je n'ai jamais vraiment compris qu'elle est le but de faire des "écrits" en programmation (code à trou, ect...).

tester les ocrs des enseignants chercheurs!
Sinon, effectivement, je trouve ca particulièrement stupide aussi.

Le seul truc qui devrait etre demandé sont les pseudos algorithmes, mais quand c'est pour tester de la syntaxe...

PS:bvo, mais les structures de données c'est quand même, genre, méga important :we:
la vie est une fête :)



lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 12:18

par lulubibi28 » 14 Juil 2014, 12:21

Ok! Néanmoins , il faut bien à un moment se remuer ^^
D'ailleurs , je vais devoir utiliser le compilateur gcc , qu'est-ce que tu peux conseiller en matière de tutos en ligne ? (perso , je rêve d'un livre rempli d'algo )


Le langage C a t-il un lien direct avec le cours du langage impératif ?

Je sais que POO veut dire prog° orientée vers un objet , mais qu'entends-tu par structures de données @fatal_error ?

joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 16:31

par joel76 » 14 Juil 2014, 15:35

lulubibi28 a écrit: qu'est-ce que tu peux conseiller en matière de tutos en ligne ? (perso , je rêve d'un livre rempli d'algo )


Le langage C a t-il un lien direct avec le cours du langage impératif ?

Je sais que POO veut dire prog° orientée vers un objet , mais qu'entends-tu par structures de données @fatal_error ?

La référence de bouquin d'algo est le Cormen, il en existe une version en Français.
Le C est le type même du langage impératif.
En programmation orientée objet on manipule des objets à l'aide de méthodes. Toute la difficulté est de bien définir ces objets et les interfaces correspondant, on a ensuite des notions d'héritage, et j'en passe (et surement des meilleures car je n'ai jamais fait véritablement de prog objet). Les archétypes de la programmation objet sont le C++ et java.

Les structure de données sont essentielles en programmation.
Pour résoudre un problème il faut bien analyser les données et les structurer correctement. Si des données sont bien structurées, les 3/4 des difficultés pour résoudre ce problème sont déjà surmontées.

Je vais te donner un exemple, un peu naïf et bateau je l'avoue :zen:

Supposons que tu veuilles faire un fichier de contact.
Que voudras tu mettre dedans ?
L'identité du contact, son adresse, son/ses numéros de téléphone (personnel et/ou professionnel), de même pour les adresses mails.

L'identité sera composée du nom, prénom, éventuelleemnt sa date de naissance.
L'adresse sera consitutée en général de deux champs de caractères puis de la ville et d'un code postal.
Suivant les besoins tu pourras regrouper les téléphones et mails par groupe personnel / professionnel ou par téléphone / mails.
L'étude de l'utilisation des données est déterminante pour la suite du codage.

On peut bien sur mettre toutes les infos à la suite des une des autres, mais elles ne sont pas toutes du même intérêt, donc il peut être intéressant de les regrouper en catégorie pour dédier des bouts de code à la manipulation de chaque type d'info.

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 12:18

par lulubibi28 » 14 Juil 2014, 18:09

Merci pour l'explication ^^

Cependant , le livre dont tu parles ,n'est pas disponible en ligne , et on dirait qu'il existe plusieurs éditions ...C'est important d'entrainer les neurones à résoudre *.* . Par ailleurs , ton exemple me fait pensées aux structures de données rigides et souples que je n'arrive pas à comprendre avec ces bidules d'agrégats , scalaires , vecteur , bref ce sont des notions assez lourdes è.é...

Je trouve l'utilisation du compilateur gcc un peu compliqué !

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 14 Juil 2014, 20:42

D'ailleurs, j'ai voulu commencer aujourd'hui pendant que je m'ennuyais au taf mon bouquin sur java écrit par Anne Tasso, et honnêtement, je trouve ça très mal expliqué...je crois que j'en reste sur mon premier avis, le meilleur endroit pour apprendre les langages c'est le sdz...
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 12:18

par lulubibi28 » 14 Juil 2014, 21:06

Java est un langage plus porté sur le net , les logiciels ...

Euh , Est-ce que tu connais de bons tutos pour le langage C ? Pour l'instant , j'ai trouvé celui-là qui est potable
http://hebergement.u-psud.fr/iut-orsay/Pedagogie/MPHY/Algo-C/coursInfo.pdf

En tout cas , les livres qui disent "apprendre à coder en C en 50h" , et ben les auteurs se trompent vraiment ...

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 14 Juil 2014, 21:24

à mon avis tu confonds java et javascript ;)


Pour le C va voir directement le tuto de matéo sur le sdz (open classroom maintenant) j'ai rien trouvé de mieux.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 14 Juil 2014, 23:01

ben chui pas un kaid du C, mais jpense que stack est une très bonne source pour apprendre.

chercher google donne généralement une fonction std, puis cppreference pour voir comment on l'utilise (il y a aussi les C fonctions), puis quand le compilateur t'envoies péter, ben tu investigues un peu, puis si tu trouves pas...google, et tu choisis stack

le sdz, j'y suis pas retourné, mais bon, avant, il y a trop l'aspect travail maché, je me rappele qu'en suivant les tutos j'étais complètement passif et j'apprenais rien du coup (ou pas grand chose)
la vie est une fête :)

joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 16:31

par joel76 » 14 Juil 2014, 23:34

Sur stackoverflow on trouve quelques intervenants de très haut niveau (je parle pour Prolog, mais je suppose que c'est la même chose pour le C) dont les réponses sont parfois très détaillées mais certaines explications doivent passer largement au dessus des connaissances des posteurs.
Sans aller si loins, developpez.com est un très bon site où les réponses sont de bonnes qualité, sur openclassroom on trouve de tout , du plus folklorique (ou zéro !) au meilleur.
Il y a aussi les comp.lang.xxx qui à une époque étaient très intéressant mais de très haut niveau, c'était plus pour approfondir que pour apprendre.
PS
"apprendre à coder en C en 50h"
c'est le genre de livre à éviter absolument.
A une certaine époque, le Kernigham et Ritchie était "The référence" pour le C.

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 08:03

par ampholyte » 15 Juil 2014, 09:45

fatal_error a écrit:tester les ocrs des enseignants chercheurs!
Sinon, effectivement, je trouve ca particulièrement stupide aussi.


Je n'avais vu les choses sous cet angle, merci pour ton éclaircissement.

Rockleader a écrit:Pour le C va voir directement le tuto de matéo sur le sdz (open classroom maintenant) j'ai rien trouvé de mieux.


Le problème du langage C, c'est qu'il est tellement vaste qu'on ne peut pas faire un tuto global pour ce langage.

Pour les bases, le site du zero est un site correct (rien d'exceptionnel) car comme le dit fatal_error on est assez passif quand même lors de l'apprentissage (donc on ne retient pas grand chose).

Stack est une très bonne source de pour l'apprentissage mais on peut vite se retrouver sur des réponses de type "usine à gaz".

Pour les livres il y a "la bible du programmeur C / C++" qui a de bonnes critiques.

Après tout dépend de ce que tu veux apprendre en C :
- Algorithmie (franceioi est un bon site avec plein d'exercice pour l'apprentissage)

- Interface graphique (gtk par exemple)

- Programmation sur microcontroleur (arduino vraiment sympa pour s'amuser rapidement à faire des choses plus robotiques / domotiques etc... mais à un certain coup)

- CGI (pour le web)

- Drivers (côté hardware)

- Etc ...

Pour moi la meilleure méthode pour apprendre c'est :
1) La lecture de code

2) La recherche de commande dans les manpages et sur le web (man ma_fonction sur google te donnera toujours un résultat ou presque)

3) La pratique, la pratique, la pratique

lulubibi28 a écrit:Je trouve l'utilisation du compilateur gcc un peu compliqué !

Utilise des makefiles tu trouveras cela beaucoup plus simple =).

joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 16:31

par joel76 » 15 Juil 2014, 10:03

Pour ce qui est des compilos, l'utilisation des EDI, (CodeBlock, Visual Studio, Eclipse, NetBeans) facilite la vie, mais peut-être que ce n'est pas autorisé en cours...

Ezra
Membre Naturel
Messages: 95
Enregistré le: 10 Déc 2013, 17:52

par Ezra » 15 Juil 2014, 12:37

lulubibi28 a écrit:Java est un langage plus porté sur le net , les logiciels ...

Euh , Est-ce que tu connais de bons tutos pour le langage C ? Pour l'instant , j'ai trouvé celui-là qui est potable
http://hebergement.u-psud.fr/iut-orsay/Pedagogie/MPHY/Algo-C/coursInfo.pdf

En tout cas , les livres qui disent "apprendre à coder en C en 50h" , et ben les auteurs se trompent vraiment ...


Java a pour particularités d'être un langage orienté objet et de permettre aux applications une portabilité
très rapide sur divers OS comme Unix, GNU Linux, Windows, MAC OS avec pas ou bien peu d'adaptations.

Le C a sa référ biblio. qui est encore le C ANSI de Ritchie et Kernighan: quant au tutorat, on l'a en MOOC.
Ceux qui codent en C avec si peu d'acquis restent des petits joueurs; on ne code qu'un jeu simple, ainsi !

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 12:18

par lulubibi28 » 15 Juil 2014, 14:03

Merci pour tous vos conseils ^^ . Je vais en tenir compte !
En ce moment , je suis obligée de faire pleins de flashbacks en maths (mais c'est important) , et je dois apprendre aussi à mieux gérer mon temps .
En tout cas , notre professeur de prog° a un niveau très élevé :shock: , en arrivant toujours à rendre ses codes courts et cohérents (c'est difficile parfois de le suivre avec son raisonnement super simple , bien que çà soit une grande qualité)...

Ezra
Membre Naturel
Messages: 95
Enregistré le: 10 Déc 2013, 17:52

par Ezra » 15 Juil 2014, 15:41

Aucun conseil en avis n'a été donné: juste une suggestion, pour devenir efficace. On a des façons plus propres que d'autres d'utiliser les appels de fonctions. Des méthodes feront éviter: goto, break, return.

Même si le glossaire est maîtrisé, on recommande d'être explicite dans la programmation. L'utilisation de la technique conditionnelle comme : expr1? expr2: expr3 est ardue à lire bien que facile à appliquer, pour une calculatrice et la définition d'opérateurs (la valeur absolue est un exemple raccourci: x >= 0 ? x: -x)

En résumé: le codage court ne signifie pas toujours le codage explicite pour une maintenance à garantir.

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 15 Juil 2014, 16:51

C'est peut être que mon point de vue de débutant, mais je pense qu'il est préférable d'utiliser un code, peut être plus long, mais qui soit plus compréhensible d'un point de vue algorithmique.

Mais au final c'est pas que ça, c'est un tout, c'est le choix du nom des variables etc etc...à moins de vouloir faire chier tous le monde si ta deux infos à stocker, age et prénom tu vas pas stocker l'age dans prenom et le prénom dans age
C'est la façon de les utiliser constante, glabales, locales etc etc


C'est parfois assez dur de comprendre un code que l'on a pas écrit lorsqu'on ne connait pas l'algo.
AU moins, lorsque le code est clair et lisible, on peut reconstituer l'algorithme.

Ou au minimum si on persiste à utiliser des raccourcis de codage, faut les commenter.


L'exemple type que l'on retrouvera plus haut c'est les prof qui nous font faire un typedef sur nos structures pour aller plus vite, et c'est vrai qu'au final on en oublie un peu ou on est, on fait les choses mécaniquement dans forcement comprendre.


Ce que j'aurais retenu sur la méthodologie de codage cette année, à force de coder, et surtout de voir les autres coder.


Un code aéré et structuré est toujours plus compréhensible d'un point de vue indentation.
Les commentaires sont primordiaux mais il ne faut pas en abuser non plus pour ne pas surcharger l'espace de travail, mais adopter un modèle de commentaire par exemple une description du role d'une fonction avant la fonction est utile et pratique.
Il est préférable de ne pas utiliser des raccourcis de codage tant que l'on ne les comprends pas parfaitement.
Ne pas oublier que ce n'est pas parce que l'on comprends son code que les autres le comprendront forcement.





Et surtout quand on a l'esprit à tout remettre en question, ne jamais remettre le prof en question au moment de l'exam si vous voulez pas vous ramassez et passer en rattrapages :d Toujours faire ça avant, et accepter de faire à sa façon le jour J même si on est pas d'accord, quitte à creuser plus sur un point de vue personnel.




Voili voilou ce que je pense de la chose ;)
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 12:18

par lulubibi28 » 15 Juil 2014, 17:07

Très long message *.*

Oui , c'est vrai , chaque professeur a sa méthode , le notre parait plus orienté vers l'approche fonctionnelle . J'ai toujours l'impression qu'il prend les codes comme un jeu algorithmique , et c'est pour cette raison , que plus un code est long , plus la personne est susceptible de faire des erreurs d'indentation ...
Justement , le prof nous demande d'avoir de l'imagination , et sur ce point , le d-day parait :mur:

Par exemple , la manipulation d'une liste est plus simple qu'un dico , et sans parler de l'itération avec un dico , c'est déjà bien de savoir compter le nombre d'occurrence des lettres (dans un mot) :zen:

joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 16:31

par joel76 » 15 Juil 2014, 17:19

Je me méfie un peu du vocabulaire utilisé dans les facs, c'est quoi une liste et un dico pour toi ?

lulubibi28
Membre Relatif
Messages: 240
Enregistré le: 10 Nov 2013, 12:18

par lulubibi28 » 16 Juil 2014, 19:20

En bref ,un dico possède un clé et une valeur associée , c'est assez efficace pour stocker des données plus volumineuse qu'une liste , comme des adresses , des noms ...

Une liste est une séquence de données (éléments) ordonnées à laquelle on peut accéder à l'aide des indices ou bien d'une boucle for .

Mais , je suis trop en retard dans le cours d'architecture de l'ordi° :triste: , je préfère la programmation .

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 16 Juil 2014, 19:25

Mouais, c'est un peu réducteur ça


Pour moi la liste que tu décris c'est un simple tableau; mais le chaînage peut être différent avec le cas de pile, file, arbre de taille indéterminé par exemple.


Ce que tu appelles Dico, moi on m'a appelé ça table de hachage cette année
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 16:31

par joel76 » 16 Juil 2014, 22:40

Rockleader a écrit:Ce que tu appelles Dico, moi on m'a appelé ça table de hachage cette année
Comme quoi, les noms changent avec les facs mais les idées sont les mêmes (heureusement).

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite