Suggestions de programmes à développer pour l'apprentissage [clos]

12

je me demande en dehors de ces applications très simples du monde du bonjour, quels autres programmes dois-je essayer de développer pour apprendre. J'entre à l'université l'année prochaine et je me demande quel genre de programmes seront développés dans cet environnement.

ce n'est pas vraiment une langue spécifique, mais si vous voulez savoir ce que j'utilise actuellement principalement

  • windows: C # / WPF - j'ai étudié java / vb etc en poly mais je pense que C # est la voie à suivre, peut-être même F #
  • web: PHP / MySQL, Zend Framework / Doctrine, + HTML / CSS / JS (jQuery) bien sûr. cherchez à essayer le moteur d'application google avec python aussi.

pour l'instant, je pense à

  • listes de tâches
  • des applications qui s'intègrent avec l'api, par exemple. twitter / tumblr que j'utilise
  • éditeur de texte - j'essaie actuellement de développer un éditeur de texte qui utilise markdown et génère des fichiers html pour la visualisation (lien vers l'entrée de blog). pas très pratique après avoir commencé à le développer. cos lors de l'édition theres pas de mise en forme et au format HTML, je ne peux pas éditer directement

  • logiciel de blog (pour le web)

Jiew Meng
la source

Réponses:

18

Jetez un œil au projet Euler. Il n'y a rien d'autre comme ça pour affiner vos compétences en programmation fondamentale.

Robert Harvey
la source
2
+1. L'avantage de Project Euler est que vous pouvez implémenter les solutions dans n'importe quelle langue, puis les comparer / les contraster.
Thomas Owens
1
+1 - Excellente réponse! Vous avez ouvert un gymnase pour nos cerveaux.
Karthik Sreenivasan
6

J'écris actuellement un analyseur / matcher regex et cela m'apprend énormément sur l'analyse et les machines à états finis et les expressions régulières elles-mêmes, entre autres. La raison pour laquelle je pense particulièrement qu'un analyseur d' expressions rationnelles est utile est que le langage d'expression régulière est petit et qu'il est assez limité dans ce qu'il peut faire.

J'ai aussi écrit un interprète pour Ook! , qui est une tâche simple, mais encore une fois, vous apprend une tonne.

Chinmay Kanchi
la source
+1 SC Kleene n'était pas l'inventeur de l'expression régulière pour aucune raison.
ixtmixilix
2

CodePlex.com répertorie de nombreux projets open source qui ont été réalisés à l'aide de C #. Vous pouvez jeter un œil sur le site pour avoir des idées.

Mamta D
la source
2

Vous pouvez également consulter TopCoder . Ce site a d'excellents algorithmes à apprendre et ils mènent de temps en temps une compétition. L'avantage important de ce site est que vous pouvez voir le code source d'autres personnes pour un problème particulier et en savoir plus.

Et même sur les sites SE, il faut regarder CodeGolf .

Fourmis
la source
1

(Il s'agit principalement d'une réponse mata plutôt que d'une liste de projets.)

Réfléchissez à la raison pour laquelle vous écrivez le programme: sera-t-il utile en soi, ou s'agit-il uniquement d'apprendre un aspect d'un outil / d'une API / d'un langage?

Dans ce dernier cas, il y a un avantage à ce que le programme qui en résulte soit aussi court que possible, puis simplement conservé pour référence.

Dans le premier cas, pourquoi ne pas étendre l'apprentissage aux bonnes pratiques à tous égards: supposez que vous devrez le maintenir et l'étendre. Utilisez donc le contrôle des sources, le suivi des problèmes, la refactorisation, les tests unitaires, ... car toutes ces choses sont au moins aussi importantes pour un développeur que de connaître une autre API.


Que diriez-vous d'un intégrateur de flux:

  • Sources RSS / Atom
  • Gérer Twitter en utilisant son API (et ne pas raccourcir les liens)
  • En fonction de la source, autorisez le post-traitement enfichable (par exemple, le téléchargement de fichiers MP3 à partir d'un flux de podcast)

(L'idée est de se concentrer sur l'intégration de différentes implémentations du même paradigme: obtention HTTP planifiée d'un flux RSS vs API Twitter vs ... qui sont toutes sous un flux d'entrées avec horodatage, source et contenu.

Richard
la source
Merci. je pense que c'est dans le sens de ce que je pense, intégrer avec les services web. Je pense aussi à des applications différentes qui utilisent différentes fonctionnalités de la langue. par exemple. avec l'éditeur de texte, j'ai essayé d'intégrer le ruban
wpf
1

J'ai beaucoup appris en travaillant sur ce genre de projets de loisirs:

  • Jeux simples (clone de serpent, clone de Tic Tac Toe, etc.)
  • Économiseurs d'écran

Sans oublier - ce genre de projets est incroyablement amusant à travailler :-).

sabiland
la source
1

Programmez un petit jeu: c'est amusant et vous apprenez beaucoup.

Quelques idées:

  • Dragueur de mines
  • Tetris
  • Un jeu de cartes
  • Serpent

Et quand c'est fait, pourquoi ne pas mettre en place un site web de haut niveau ...

Carra
la source
0

Spyrographe. Spécifiez les dimensions d'une bague extérieure, d'un disque intérieur et d'un point de stylo le long de son diamètre. Tracez le chemin du stylo pendant que le disque intérieur roule le long de l'intérieur de l'anneau extérieur.

Change Maker. Coût d'entrée et montant remis au caissier. Calculez l'optimal pour que le caissier fasse le changement. Il existe un moyen lent et rapide de résoudre ce problème. Trouvez la voie rapide.

OO-Life Simulation. Recherchez l'algorithme de vie. Créez un état de départ aléatoire et affichez les étapes suivantes en utilisant la conception OO pour dissocier la logique de la présentation. Donnez une sortie texte et une sortie graphique.

Missionnaire / solveur de cannibales, recherchez ce célèbre puzzle. Écrivez un programme pour le résoudre en utilisant des arbres de recherche. Comparez BFS à DFS.

Aaron Anodide
la source