Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σας. 

 

Είμαι πρωτοετής φοιτητής και στο πρώτο εξάμηνο ασχολούμαστε με την εκμάθηση της C με τα αποτελέσματα του κάθε προγράμματος να βγαίνουν στην κονσόλα. Προφανώς, υπάρχει κάποιος τρόπος για να φτιάξεις και κανονικό GUI στο πρόγραμμά σου. 

 

Μπορεί κάποιος να με βοηθήσει σε αυτό το κομμάτι? Θα ήθελα π.χ. να μπορέσω να φτιάξω κάτι τέτοιο

 

 

post-229999-0-47374800-1449965647_thumb.jpg

 

 

 

May the Force be with us,

Δημήτρης

  • Απαντ. 41
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Πρέπει να διαλέξεις framework. Επίσης πρέπει να κατανοησεις το event driven paradigm.

Αν σου πω ότι δεν κατάλαβα καθόλου τι εννοείς?

 

Για να καταλάβεις τις γνώσεις που έχω αυτή τη στιγμή.

Σε κώδικα C μπορώ να χρησιμοποιήσω printf, scanf, if,switch, for, while και τώρα ξεκινήσαμε τους πίνακες. 

Οτιδήποτε εκτός από αυτά είναι άγνωστο

Δημοσ.

Δεν υπάρχει κάτι στάνταρ. Πρέπει να διαλέξεις μια βιβλιοθήκη που να σου διμουργει γραφικά.

 

Για να καταλάβεις πως δουλεύουν αυτές οι "βιβλιοθήκες" πρέπει πρώτα να καταλάβεις την event driven λογική. Δηλαδή η εφαρμογή σου να μην έχει flow.

Δημοσ.

Το να βάλεις "παραθυρική φορεσιά" σε ένα πρόγραμμα είναι μια ιστορία από μόνο του και έχει νόημα κυρίως στο

τελευταίο στάδιο γραφής του προγράμματος, αφού ο βασικός κώδικας έχει αναπτυχθεί.

 

Είναι πολύ χρησιμότερο (εξαρτάται βέβαια και από το τι φτιάχνεις) να μπορείς να οπτικοποιήσεις

ενδιάμεσα και τελικά αποτελέσματα ενός προγράμματος (για λόγους ελέγχου) παρά να βάλεις κουμπάκια και μενού.

Π.χ. αν γράφεις έναν γεωμετρικό αλγόριθμο πρέπει να μπορείς να δεις (δηλ. να σχεδιάσεις) τις ευθείες,

τα σημεία κλπ αλλιώς είσαι τυφλός. Για τέτοιες δουλειές υπάρχουν πακέτα όπως το pgplot και το gnuplot που

δουλεύουν ανεξάρτητα από το είδος του λειτουργικού, καθώς και το opengl.

Aυτά μπορούν να χρησιμοποιηθούν με στάνταρ C, χωρίς πλήρη κατανόηση του event μοντέλου.

 

Αν επιμένεις σώνει και καλά να βάλεις μενού, θα πρέπει να δεις κάποιο από τα Qt, GTK, winForms κ.α.

Ωστόσο, στη στάθμη που είσαι τώρα, μάλλον θα πρέπει να τα ξεχάσεις προς το παρόν διότι είναι πολύπλοκα

και χρησιμοποιούν έννοιες που δεν ξέρεις και που δεν μαθαίνονται σε μια μέρα....

 

-

  • Like 2
Δημοσ.

Ας ρίξει μια ματιά εδώ: http://www.gtk.org/tutorial1.2/gtk_tut-2.html  και ας αναλογιστεί σε τι σύμπαν μπαίνει!

Γιατί όχι; Μαθαίνεις για callbacks, events και άλλες έννοιες που είναι χρήσιμες γενικά. Επίσης υπάρχουν γλώσσες που είναι βασισμένες σε αυτές τις έννοιες, οπότε μόνο καλό προσφέρει.

 

Βέβαια είναι λίγο δύσκολο για κάποιον αρχάριο, που δεν τα πάει και τόσο καλά με pointers να κρατήσει ενδιαφέρον, αλλά είναι ένα motivation για να μάθεις.

Δημοσ.

Δεν είναι το πρόβλημα η βασική ιδέα. Ούτε οι δείκτες έχουν δυσκολία στην κατανόηση. Για όλα αυτά χρειάζεται κανείς να τρέξει δύο τρία παραδείγματα. Άντε κάποιος να θέλει λίγα παραπάνω.

Το ζήτημα είναι στο τρόπο που κτίζεις μια εφαρμογή με παράθυρα. Ενώ όπως αναφέρθηκε έχουμε απουσία ροής, ο έλεγχος πρέπει να γίνεται με δημιουργία κατάστασης λειτουργίας. Δηλαδή τρέχουμε το πρόγραμμα βλέπουμε τι δεν κάνει σωστά και πάμε για διόρθωση. Δες τώρα τι κάνεις με τη VB. Σταματάς το πρόγραμμα την ώρα που τρέχει, χωρίς να το τερματίσεις, διορθώνεις τον κώδικα...και συνεχίζεις τον έλεγχο από εκεί που σταμάτησες αλλά με διόρθωση. Σε αντίθετη περίπτωση, αν δεν έχεις αυτό το πλεονέκτημα, πρέπει να τερματίσεις, να μπεις στον διορθωτή και αφού εκκινήσεις να κάνεις όλα τα βήματα που θα σε φέρουν στην ίδια κατάσταση, πού θες να ελέγξεις. Η διαφορά με τις visual γλώσσες που δέχονται αλλαγές κώδικα κατά την εκτέλεση είναι στη δυνατότητα διατήρησης της κατάστασης που ελέγχουμε.

Αν δεν έχουμε λοιπόν την δυνατότητα που έδειξα, αργούμε να κατανοήσουμε, αργούμε να μάθουμε κατά μία έννοια.Δεν είναι μόνο να έχουμε ένα ωραίο IDE με object browser, οπότε και έχουμε την εντύπωση ότι η γνώση αποκτάται με την συχνή επιθεώρησή του.

Μια παραθυρική εφαρμογή που έγραψα, για την fotomatic, τότε αντιπροσωπεία της OLYMPUS, το FOTODIGITALLAB, για την υποστήριξη ενός εξειδικευμένου εκτυπωτή, δεν θα τελείωνε γρήγορα αν δεν γράφονταν σε VB5 (την 5 είχα τότε). Είχα αγοράσει την vb 2003 αλλά προτίμησα την VB5 ..γιατί βγάζει πολύ γρήγορο εκτελέσιμο αρχείο, αλλά φοβόμουν ότι με Net θα είχα πρόβλημα σε εγκαταστάσεις, και εδώ είχαμε να κάνουμε με εκτυπώσεις φωτογραφιών, με επεξεργασία πριν την εκτύπωση. Το πρόγραμμα γράφτηκε το 2004 πριν βγει το Lightroom, και ήταν σαν το lightroom, στην ιδέα της γρήγορης διόρθωσης, μέσω ξεχωριστών εντολών, χωρίς μόνιμες αλλαγές, με έμφαση όμως στην εκτύπωση.

Η Μ2000 έχει τη μηχανή εκτύπωσης συτού του προγράμματος! Τυπώνει με χρήση διαφορετικών dpi σε οριζόντιες και κάθετες αναλύσεις. Εδώ παίζει δηλαδή το αν μπορούμε να κερδίσουμε με επαναχρησιμοποίησή κώδικα.

 

Άρα συνοψίζονται σημασία έχει η πορεία εργασίας (workflow), το στυλ για να αφήνεις επαναχρησιμοποιούμενο κώδικα και φυσικά η εμπειρία των αντικειμένων, των ιδιοτήτων και μεθόδων τους. Φυσικά αυτά ισχύουν για κάθε γλώσσα, αλλά στις παραθυρικές εφαρμογές το επίπεδο είναι σοβαρότερο, πιο βαρύ.

Δημοσ.

Ας ρίξει μια ματιά εδώ: http://www.gtk.org/tutorial1.2/gtk_tut-2.html  και ας αναλογιστεί σε τι σύμπαν μπαίνει!

 

 

Συμφωνω ότι ο GUI προγραμματισμός είναι λίγο ζόρι ειδικά με γλώσσες όπως C/C++. Παρόλα αυτά όποιος θέλει μαθαίνει και τίποτα που να αξίζει δεν είναι εύκολο.

Δημοσ.

Παιδιά, σκέφτομαι κι εγώ τώρα διακοπές που είναι...  :-D  να ασχοληθώ με γραφικό προγραμματισμό σε C (Gtk). Ξέρει κάνεις κανένα καλό βιβλίο (φυσική ή ηλεκτρονική μορφή) ή κάποιο καλό documantation για το Gtk στα ΕΛΛΗΝΙΚΑ; Ή είναι κάτι που δεν θα μπορούσε να υπάρχει σε βιβλίο;

Δημοσ.

Μια φορά που κοίταξα το documentation του Gtk+, άλλαξα άμεσα γνώμη! Η Gambas όμως το χρησιμοποιεί (θέλει linux) και έτσι μπορεί κανείς να πάρει μια γεύση από παραθυρικό περιβάλλον σε Gtk+ χωρίς να πολυζορίζεται!

Δημοσ.

Παιδιά, σκέφτομαι κι εγώ τώρα διακοπές που είναι...  :-D  να ασχοληθώ με γραφικό προγραμματισμό σε C (Gtk). Ξέρει κάνεις κανένα καλό βιβλίο (φυσική ή ηλεκτρονική μορφή) ή κάποιο καλό documantation για το Gtk στα ΕΛΛΗΝΙΚΑ; Ή είναι κάτι που δεν θα μπορούσε να υπάρχει σε βιβλίο;

 

Αν θες να γίνεις καλό προγραμματιστής τότε πρέπει να μάθεις την πιο σημαντίκη γλώσσα προγραμματισμού, τα Αγγλικά. Μακρία απο ελληνικά εγχειρήδια, μάθε Αγγλικά γιατί αλλιώς θα υποφέρεις.

  • Like 2
Δημοσ.

Αν θες να γίνεις καλό προγραμματιστής τότε πρέπει να μάθεις την πιο σημαντίκη γλώσσα προγραμματισμού, τα Αγγλικά. Μακρία απο ελληνικά εγχειρήδια, μάθε Αγγλικά γιατί αλλιώς θα υποφέρεις.

Και αν θες να γίνεις καλό[ς] στην σημαντικ[ή] γλώσσα που ονομάζουμε [Ε]λληνικά, τότε επέλεξε εγχειρ[ί]δια... μαγειρικής!

Θα διαφωνήσω, διότι τα Αγγλικά είναι απαραίτητα εκ των πραγμάτων αλλά άσχετα με την ΕΚΜΑΘΗΣΗ του προγραμματισμού - και άραγε είναι πιο έυκολο για κάποιον Ελληνα να ΚΑΤΑΝΟΗΣΕΙ τις έννοιες σε μία ξένη γλώσσα αντί της δικής του (π.χ., variable/constant-μεταβλητή/σταθερή);

  • Like 1
Δημοσ.

Και αν θες να γίνεις καλό[ς] στην σημαντικ[ή] γλώσσα που ονομάζουμε [Ε]λληνικά, τότε επέλεξε εγχειρ[ί]δια... μαγειρικής!

Θα διαφωνήσω, διότι τα Αγγλικά είναι απαραίτητα εκ των πραγμάτων αλλά άσχετα με την ΕΚΜΑΘΗΣΗ του προγραμματισμού - και άραγε είναι πιο έυκολο για κάποιον Ελληνα να ΚΑΤΑΝΟΗΣΕΙ τις έννοιες σε μία ξένη γλώσσα αντί της δικής του (π.χ., variable/constant-μεταβλητή/σταθερή);

 

Δεν υπάρχει γνώση γραμμένη στα Ελληνικά, πέρα από ελάχιστα πράγματα για αρχάριους. Και πολλά άρθα που ξεφεύγουν από τις begginer γνώσεις περιέχουν λεξιλόγιο και εκφράσεις ίδιες με ένα άρθρο των London Times, Guardian κλπ. Οπότε φιλόλογος αγγλικής μπορεί να μη χρειάζετια να είσαι... αλλά να έχεις άνεση να διαβάσεις μια Αγγλική εφημερίδα, να συντάξεις ένα επίσημο κείμενο και να μιλήσεις σε επίσημο χώρο με άλλα άτομα στα αγγλικά είναι απαραίτητο.

 

Επίσης για τον OP, άτομο που έμαθε στην καλύτερη το 5% της C και ούτε το 0.5% από προγραμματιστικές αρχές σε αυτούς τους 2-3 μήνες του εξαμήνου του και θέλει να δημιουργήσει GUI application είναι παράλογο. Το επόμενο εξάμηνο αντίστοιχα θα κάνει κάτι πασαλείματα σε C++, μετά κανά πασάλειμα σε Java κλπ. Από την άλλη όταν έχεις 2-3 χρόνια εμπειρία γράφοντας console applications, έχεις φάει ώρες διαβάζοντας posts στο stackoverflow, documentation κλπ., ξέρεις ήδη να χρησιμοποιείς κάποιες βιβλιοθήκες πέραν από αυτές που έχει η γλώσσα, δηλαδή είσαι έτοιμος να δεχτείς τις γνώσεις που απαιτεί το gui programming, δεν μπαίνεις να ρωτήσεις σε forum πως θα φτιάξεις gui. Έχει πάρει το μάτι σου ήδη αναφορές στα γνωστά διαθέσιμα frameworks και ξέρεις και πως θα κινηθείς για να μάθεις τη χρήση τους...

  • Like 2
Επισκέπτης
Αυτό το θέμα είναι πλέον κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...