Avatar billede jonashn Nybegynder
12. oktober 2007 - 18:32 Der er 32 kommentarer og
1 løsning

Idéer til C++ program til 3-månedersopgave

Kære Eksperter!

På min skole skal vi lave en opgave, som varer tre måneder. Jeg skal fremlægge mit emne om 3 uger (mener jeg).

Jeg går i 10. klasse og har programmeret i ca. 5 år. Først HTML og JavaScript, og siden har jeg læst enormt mange bøger (og ofte skrevet et par småprogrammer for at eksperimentere med de pågældende sprog) om C++/C, Visual Basic, ASP, PHP, SQL, og Fortran (cool, de der whole-array operationer, ikke:) ).

Efter at have læst alt dette mener jeg stadig at C++ (og C) er de(t) "reneste"  sprog der findes - man kan både skrive operativsystemer, programmer o.s.v og så er det lavet på en universal måde, så man kan bruge det på enormt mange måder til enormt mange ting.

Opgaven skal indeholde en teoretisk og praktisk opgave.
Jeg har overvejet at skrive om programmering som teoretisk opgave, og som praktisk lave et program. Det skal ikke være noget enormt stort projekt, gerne bare et lille program der kan være praktisk at have/bruge.

Jeg har tænkt mig at skrive det i C++. Jeg har stor teoretisk viden om dette sprog, men har ikke lavet ret meget praktisk. Lidt, men ikke meget.
D.v.s at jeg kan forstå hvad der sker når jeg ser på koden til et program, men ikke selv lave det (I hvertfald ikke lige så elegant og hurtigt).

Jeg efterlyser ikke et program der ligger i taskbaren og tæller antal cm. man har bevæget musen, men heller ikke noget meget avanceret. Jeg har jo kun tre måneder.

Jeg regner med at det der primært vil være besværligt for mig er at finde ud af hvilke funktoner der skal bruges hvor.. Altså ikke sproget, men implementationen.

Jeg har tænkt mig at lave det i windows forms, f.eks. via WxWidgets. Det kunne være lidt fedt at lave det 100% cross-platform. Og hvis jeg benytter mig af STL og gratis open-source libraries til specifikke ting, skulle det da ikke være helt umuligt?

Jeg giver de 80 point til den eller dem der kommer med det forslag jeg vælger, eller inspirerer mig til et.

Bemærk at jeg endnu ikke er 100% sikker på at det ovennævnte er det jeg vil lave i opgaven.

Jeg tror også det vil være svært at undgå at genopfinde den dybe talleren, der findes jo mange småprogrammer derude!

Da jeg laver/spiller musik meget må det gerne have noget med det at gøre, men det er intet krav, bare en mulighed.

Håber i kan komme med nogle gode forslag!

-jonashn
Avatar billede arne_v Ekspert
12. oktober 2007 - 18:45 #1
Det er ganske vist lavet en million gange foer, men alligevel:
  en CD database

GUI + database programmering gaar du ikke helt ved siden af med.
Avatar billede jonashn Nybegynder
12. oktober 2007 - 18:50 #2
Tak for svaret, det er en god idé. Meeen, lad os nu se om der kommer flere..
Avatar billede sherlock Nybegynder
12. oktober 2007 - 19:06 #3
Lav en database-app til opbevaring af numre med becifringer/akkorder og tekster.
Det kæmper vi allesammen med. Og så lige en udskrift af set-lister.
Avatar billede jonashn Nybegynder
12. oktober 2007 - 19:45 #4
Den kunne man integrere i CD Db'en..
Avatar billede sherlock Nybegynder
12. oktober 2007 - 20:33 #5
Ja. Det ville da være noget nyt samtidig.
Jeg glæder mig allerede :D
Avatar billede jonashn Nybegynder
12. oktober 2007 - 21:29 #6
Rolig nu:) Lad os se om der er andre forslag.. Jeg har tre uger ;)
Avatar billede jonashn Nybegynder
12. oktober 2007 - 21:29 #7
..og jeg har aldrig arbejdet med GUI programmering før, så det bliver nok nogle lange aftener...
Avatar billede sherlock Nybegynder
12. oktober 2007 - 22:16 #8
3 måneder er ikke lang tid !!
Avatar billede jonashn Nybegynder
12. oktober 2007 - 22:27 #9
nej! Især ikke når man har fuld skole samt megen musikundervisning.
Avatar billede jonashn Nybegynder
12. oktober 2007 - 23:45 #10
Andre idéer?
Avatar billede oddi Nybegynder
13. oktober 2007 - 14:31 #11
Hej.
Du kan prøve at lave et lille chat program. Så kommer du igennem sockets osv.
Avatar billede oddi Nybegynder
13. oktober 2007 - 14:46 #12
Og du kan brug Qt til GUI, Qt er 100% cross-platform. Det er ikke svært at få sockets til at blive 100% cross-platform!
Avatar billede jonashn Nybegynder
14. oktober 2007 - 12:35 #13
Joh, men wxWidgets er også 100% Cross-platform, og wxWidgets emulerer _ikke_ det native GUI som Qt og f.eks. Java gør. Derudover er der jo også meget simple og brugbare socketklassesr og lign. i wxWidgets. Derudover ER Qt jo kommercielt, selvom jeg ikke regner med at sælge det program jeg kommer til at lave..
Avatar billede jonashn Nybegynder
14. oktober 2007 - 12:36 #14
Men ellers en god ide med chatprogrammet, da jeg næsten tror den CD-db vil være for meget på 3 mdr..

Så er det vel noget med at have en klient og server i hver ende og evt. en server med static ip som klienterne kan koble op på og checke hvilken ip deres kontakter har hvorefter de laver en direkte tilslutning til deres kontakter?
Avatar billede oddi Nybegynder
14. oktober 2007 - 13:00 #15
Ja du kan lave det som server og client, men hvis du ikke har så meget tid kan du bare lave en server og en client, hvor kun to personer kan chatte. Hvis du skal lave den forkromede løsning med ip på kontakter osv på serveren. skal du nok ud i noget database.

Håber at det gav mening.
Avatar billede arne_v Ekspert
14. oktober 2007 - 16:42 #16
En multi threaded socket server kan nemt blive mere kompliceret end en GUI DB app.
Avatar billede jonashn Nybegynder
15. oktober 2007 - 16:15 #17
oddi-> Grunden til at jeg mente at der _skulle_ være en server som mellemled var, at ellers havde klienterne ikke noget fælles referencepunkt hvor de kunne finde den andens ip. Og ja, så skal jeg nok ud i noget database, men hvis det gøres så simpelt som muligt så det nærmest kun er ip'en der gemmes kan jeg sagtens lave det i PHP eller ASP.. tror jeg..

Arne-> Det har du nok ret i... Men jeg kan jo vælge at basere mit arbejde på en simpel gpl chatklient, selvom det ville være at snyde lidt.. WxWidgets har faktisk også en simpel client/server applikation med som demoprojekt.. Men hvis jeg nu lavede en CDDB, ville det så ikke være en god idé at gemme DB'en i xml? Eller er det for tungt ved større DB'er?
Avatar billede jonashn Nybegynder
15. oktober 2007 - 18:01 #18
-og det behøver jo ikke at være multi-thread..
Avatar billede jonashn Nybegynder
15. oktober 2007 - 18:01 #19
..hvis man altså kan klare sig med 1 instans af .exe'n pr. client.
Avatar billede jonashn Nybegynder
16. oktober 2007 - 12:42 #20
Ingen andre idéer?
Avatar billede jonashn Nybegynder
19. oktober 2007 - 09:19 #21
Jeg tangerer til odde's forslag, da jeg tror en DB app vil være for svær at lave.. Andre forslag/argumenter?
Avatar billede jonashn Nybegynder
19. oktober 2007 - 09:19 #22
Undskyld, mente oddi:)
Avatar billede oddi Nybegynder
19. oktober 2007 - 12:03 #23
Hej

Du kan godt klare dig med 1 instans af .exe pr. "client"
Den ene skal dog være server som clienten kan connecte til.

1. Server starter, på en bestemt port > 1023 (find ip for server)
2. Server venter på connects
3. Clienten connecter til server (via ip fra server samt port)
4. Hvis alt går godt kan server og client "chatte"

Dette er et udgangspunkt i et MEGET simpelt chat program.

Her er et link til hvordan man kan lave sockets: http://www.beej.us/guide/bgnet/

Mvh Oddi
Avatar billede jonashn Nybegynder
20. oktober 2007 - 12:47 #24
Jeg har læst beej's guide, den er enormt god. Men der fulgte et lille client-server demoprogram med min wxwidgets-distribution, og det viser meget detaljeret hvordan man bruger de platformsuafhængige WxSockets, så det tror jeg jeg vil basere arbejdet på..

For at det bliver i det mindste lidt smart, burde .exe'n jo være en hybrid mellem en client og server, f.eks.:

1. Exe starter, lytter efter clienter på en port.
2. [Anden computer] Exe starter, connecter til den 1.ste computers ip.
3. 1.ste computer opdager den 2. og tilslutter til den
4. 1.ste computer opretter en forbindelse til 2. hvor den 1.ste er client, så man kan chatte begge veje.

Men så kommer man jo alligevel ud i noget multitasking??
Avatar billede jonashn Nybegynder
20. oktober 2007 - 13:09 #25
-det jeg mener er at det virkelig vile være ærgerligt hvis man skulle have to vinduer kørende, og ikke kunne se chatoversigten i et enkelt vindue.
Avatar billede jonashn Nybegynder
20. oktober 2007 - 16:09 #26
-så jeg mener at programmet skal fungere som server og lytte på en port så snart man starter den, men at der skal være mulighed for at tilslutte til en anden server som client.
Avatar billede jonashn Nybegynder
20. oktober 2007 - 22:17 #27
ups, "så snart man starter den"->"Så snart man starter _det_" :)
Avatar billede oddi Nybegynder
22. oktober 2007 - 11:36 #28
Nej det bliver ikke multitasking da du bruger serveren som "Chat client" til den client som har connected
Avatar billede jonashn Nybegynder
22. oktober 2007 - 16:16 #29
Hmm.. nej det er klart at den kun skulle multitaske hvis den skulle listen()e på flere sockets samtidig, aka have flere sessions på samme tid, hvilket jeg ikke kræver.

Så når serveren opdager at en client vil connecte til den accepterer den connection'en og laver en ny socket til clienten, som den så connecter til.
Avatar billede oddi Nybegynder
22. oktober 2007 - 16:46 #30
Du kan bruge server socket til at kommuikere til den connectede client
Avatar billede jonashn Nybegynder
22. oktober 2007 - 18:11 #31
Ja det er rigtigt.. en socket er jo også tovejs... Jeg må få lidt mere styr på det:D
Avatar billede jonashn Nybegynder
25. november 2007 - 09:27 #32
Læg et svar, Oddi.
Avatar billede oddi Nybegynder
25. november 2007 - 16:11 #33
Svar

Håber at det går godt for din opgave

Mvh Oddi
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester