cerberus2
Messages postés1Date d'inscriptionjeudi 30 novembre 2000StatutMembreDernière intervention25 octobre 2005
-
25 oct. 2005 à 11:25
cpotiron
Messages postés1Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention20 août 2009
-
20 août 2009 à 11:07
Bonjour,
Je viens de débuter une formation de DI il y a deux semaines et je galère énormément. En fait, cette formation dure un an pour l'équivalent d'un bac+2 et il s'agit d'auto-formation, ceci signifiant que pour obtenir l'aide d'un formateur il faut se lever de bonne heure. Cette formation était sensée s'adresser aux débutants, du moins c'est ce que l'on m'avait dit. Je constate néanmoins que je suis le seul novice de la section, mes collègues ayant tous des expériences antérieures solides en programmation (DUT, BTS, etc...). Ceci étant dit, je n'ai aucun livre pour m'aider à l'heure actuelle. La seule ressource dont je dispose est un pavé de 300 pages sur C# qui ne s'adresse pas au débutant que je suis et auquel je ne comprends strictement rien. Chaque jour, les TP que nous réalisons (sans cours, car il s'agit je le répète d'autoformation) deviennent de plus en plus difficiles (Fibonacci, Erasthothène, tri par bulle, etc etc...) et moi, je m'enfonce de plus en plus.
J'en suis arrivé au point ou je n'avance plus du tout. J'ai de grosses difficultés à écrire les algorithmes et à passer outre l'abstraction qui en découle. Je n'arrive tout simplement pas à "visualiser" les choses, les boucles, les opérations effectuées par l'ordinateur.
Actuellement, je suis bloqué depuis d'innonbrables heures en face de ma feuille blanche face, incapable d'écrire l'algorithme pour cet exercice: "Ecrire un programme qui transcrit un nombre binaire en son équivalent décimal".
La seule chose que j'ai compris, c'est qu'il me faut entrer ce nombre binaire, ou plutôt chaque chiffre de ce nombre binaire dans un tableau de valeur, et qu'ensuite il me faudra multiplier chacune de ses valeurs 0 ou 1 par 2^0, 2^1, 2^2, etc...
Ensuite ajouter les valeurs obtenues pour avoir le nombre décimal.
Les problèmes que j'ai sont multiples:
- Je n'arrive pas à écrire l'algorithme détaillé
- Je ne sais pas vraiment manier les tableaux sous C#
- On m'a parlé d'une commande "substring" pour décomposer le binaire, mais je ne sais pas de quoi il s'agit.
Je ne vais pas demander aux développeurs que vous êtes la solution de cet exercice.
Plutôt, je souhaiterais savoir ces choses:
1. Quel bouquin DE BASE me conseillez-vous pour apprendre et assimiler les bases en C#?
2. Quel bouquin me conseillez-vous pour m'exercer avec les algorithmes?
3. Si vous pouviez me donnez un petit exemple sur ce substring, ce serait sympa.
Voilà, merci de m'avoir lu et un grand merci d'avance pour vos réponses. Je suis vraiment paumé et au bord de la noyade.
Cerberus2.
cs_poullos
Messages postés145Date d'inscriptionlundi 13 janvier 2003StatutMembreDernière intervention27 décembre 20052 25 oct. 2005 à 11:54
1. et 2.) Aucune idée pour les bouquins, mais il y a plein de tutoriels
sur internet pour debuter en C#, (pour le langage en lui même tu
trouveras beaucoup de tuto C++, c'est pareil) [%20http://c.developpez.com/cours/ ici] .
3.) Substring est une methode de la classe String (voir sur le site
http://msdn.microsoft.com/, il y a tout ) et s'utilise comme cela :
string toto = "plop";
toto.substring(1, 2) va te renvoyer la chaine "lo".
Mais si tu ne maitrises pas les notions de l'objet oriente toi plutot vers le langage C
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 25 oct. 2005 à 12:38
Bonjour,
Déja, je comprends ta douleur... Mais tu es tombé sur le bon forum ;)
Pour ce qui est de l'algorithme et de la facon de procéder
-> Tu dois entrer ta valeur en binaire.
La valeur rentrée sera une chaine (string). Ce qui tombe bien, c'est qu'un string est en fait un tableau de char :)
Donc tu as deja ton tableau tout pret.
Ensuite, tu a bien compris l'histoire de la conversion en binaire, il
faudra prendre le rang d'un bit, et le mettre a la puissance 2.
Donc comment proceder ?
Tu vas utiliser 2 variables en plus de celle contenant la chaine en binaire:
-une variable de type double qui contiendra ton resultat en decimal
-un simple int qui contiendra le rang de ton bit -1. Ce sera la valeur a mettre puissance 2.
Il te faut une boucle for, qui va jouer avec chaque caractere de ta chaine binaire
<hr size="2" width="100%"> int temp = 0; // Tu mettras la valeur decimale dedans;
int rang =
bin.Length -1 // bin etant ta chaine binaire, on prend sa taille
-1
for(int i = 0; i < bin.Length; i++)
{
}
<hr size="2" width="100%">
Je ne te met pas le contenu de la boucle, puisque tu nous demande de pas te resoudre ton exercice ;).
Je vais juste te donner l'analyse de ce qu'il faut y faire. Si tu t'en
sors pas, je te donnerais le corps de la boucle, pour que tu puisses
apprendre et comprendre par l'exemple.
Dans ta boucle for tu dois :
- Prendre la valeur i de ta chaine binaire et la multiplier par (rang ^ 2). en C#, tu as la méthode Math.Pow() pour cela
- Ajouter le resultat de la ligne si dessus a ta variable temp
- Décrementer le rang.
Cela se fait donc en 2 lignes de code
J'espere que j'ai été assez clair.
Bon courage
Au fait : pas besoin de Substring avec cette méthode
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 25 oct. 2005 à 12:51
Non, je pense au contraire que je lui donne une piste, et que comme il
n'a pas de cours, pas d'autre choix que d'apprendre par l'exemple quand
tu es bloqué.
Vaut mieux lui donner une bonne solution a son probleme, plutot qu'il
en trouve une mauvaise. (moins optimisée, plus compliquée).
Quand tu t'autoformes, tu passes souvent a coté de choses qui repondent
plus simplement a ton probleme. Et je sais de quoi je parle.
Et puis, s'il connaissait la méthode, il ne serait pas venu nous rendre visite ;).