dNt^ Δημοσ. 13 Δεκεμβρίου 2015 Δημοσ. 13 Δεκεμβρίου 2015 Καλησπέρα σας. Είμαι πρωτοετής φοιτητής και στο πρώτο εξάμηνο ασχολούμαστε με την εκμάθηση της C με τα αποτελέσματα του κάθε προγράμματος να βγαίνουν στην κονσόλα. Προφανώς, υπάρχει κάποιος τρόπος για να φτιάξεις και κανονικό GUI στο πρόγραμμά σου. Μπορεί κάποιος να με βοηθήσει σε αυτό το κομμάτι? Θα ήθελα π.χ. να μπορέσω να φτιάξω κάτι τέτοιο May the Force be with us, Δημήτρης
παπι Δημοσ. 13 Δεκεμβρίου 2015 Δημοσ. 13 Δεκεμβρίου 2015 Πρέπει να διαλέξεις framework. Επίσης πρέπει να κατανοησεις το event driven paradigm. 1
dNt^ Δημοσ. 13 Δεκεμβρίου 2015 Μέλος Δημοσ. 13 Δεκεμβρίου 2015 Πρέπει να διαλέξεις framework. Επίσης πρέπει να κατανοησεις το event driven paradigm. Αν σου πω ότι δεν κατάλαβα καθόλου τι εννοείς? Για να καταλάβεις τις γνώσεις που έχω αυτή τη στιγμή. Σε κώδικα C μπορώ να χρησιμοποιήσω printf, scanf, if,switch, for, while και τώρα ξεκινήσαμε τους πίνακες. Οτιδήποτε εκτός από αυτά είναι άγνωστο
παπι Δημοσ. 13 Δεκεμβρίου 2015 Δημοσ. 13 Δεκεμβρίου 2015 Δεν υπάρχει κάτι στάνταρ. Πρέπει να διαλέξεις μια βιβλιοθήκη που να σου διμουργει γραφικά. Για να καταλάβεις πως δουλεύουν αυτές οι "βιβλιοθήκες" πρέπει πρώτα να καταλάβεις την event driven λογική. Δηλαδή η εφαρμογή σου να μην έχει flow.
V.I.Smirnov Δημοσ. 13 Δεκεμβρίου 2015 Δημοσ. 13 Δεκεμβρίου 2015 Το να βάλεις "παραθυρική φορεσιά" σε ένα πρόγραμμα είναι μια ιστορία από μόνο του και έχει νόημα κυρίως στο τελευταίο στάδιο γραφής του προγράμματος, αφού ο βασικός κώδικας έχει αναπτυχθεί. Είναι πολύ χρησιμότερο (εξαρτάται βέβαια και από το τι φτιάχνεις) να μπορείς να οπτικοποιήσεις ενδιάμεσα και τελικά αποτελέσματα ενός προγράμματος (για λόγους ελέγχου) παρά να βάλεις κουμπάκια και μενού. Π.χ. αν γράφεις έναν γεωμετρικό αλγόριθμο πρέπει να μπορείς να δεις (δηλ. να σχεδιάσεις) τις ευθείες, τα σημεία κλπ αλλιώς είσαι τυφλός. Για τέτοιες δουλειές υπάρχουν πακέτα όπως το pgplot και το gnuplot που δουλεύουν ανεξάρτητα από το είδος του λειτουργικού, καθώς και το opengl. Aυτά μπορούν να χρησιμοποιηθούν με στάνταρ C, χωρίς πλήρη κατανόηση του event μοντέλου. Αν επιμένεις σώνει και καλά να βάλεις μενού, θα πρέπει να δεις κάποιο από τα Qt, GTK, winForms κ.α. Ωστόσο, στη στάθμη που είσαι τώρα, μάλλον θα πρέπει να τα ξεχάσεις προς το παρόν διότι είναι πολύπλοκα και χρησιμοποιούν έννοιες που δεν ξέρεις και που δεν μαθαίνονται σε μια μέρα.... - 2
kilon Δημοσ. 18 Δεκεμβρίου 2015 Δημοσ. 18 Δεκεμβρίου 2015 Το GTK+ είναι γραμμένο σε C και είναι ένα πολύ δυνατό GUI API http://www.gtk.org/ 2
M2000 Δημοσ. 18 Δεκεμβρίου 2015 Δημοσ. 18 Δεκεμβρίου 2015 Ας ρίξει μια ματιά εδώ: http://www.gtk.org/tutorial1.2/gtk_tut-2.html και ας αναλογιστεί σε τι σύμπαν μπαίνει!
gon1332 Δημοσ. 18 Δεκεμβρίου 2015 Δημοσ. 18 Δεκεμβρίου 2015 Ας ρίξει μια ματιά εδώ: http://www.gtk.org/tutorial1.2/gtk_tut-2.html και ας αναλογιστεί σε τι σύμπαν μπαίνει! Γιατί όχι; Μαθαίνεις για callbacks, events και άλλες έννοιες που είναι χρήσιμες γενικά. Επίσης υπάρχουν γλώσσες που είναι βασισμένες σε αυτές τις έννοιες, οπότε μόνο καλό προσφέρει. Βέβαια είναι λίγο δύσκολο για κάποιον αρχάριο, που δεν τα πάει και τόσο καλά με pointers να κρατήσει ενδιαφέρον, αλλά είναι ένα motivation για να μάθεις.
M2000 Δημοσ. 18 Δεκεμβρίου 2015 Δημοσ. 18 Δεκεμβρίου 2015 Δεν είναι το πρόβλημα η βασική ιδέα. Ούτε οι δείκτες έχουν δυσκολία στην κατανόηση. Για όλα αυτά χρειάζεται κανείς να τρέξει δύο τρία παραδείγματα. Άντε κάποιος να θέλει λίγα παραπάνω. Το ζήτημα είναι στο τρόπο που κτίζεις μια εφαρμογή με παράθυρα. Ενώ όπως αναφέρθηκε έχουμε απουσία ροής, ο έλεγχος πρέπει να γίνεται με δημιουργία κατάστασης λειτουργίας. Δηλαδή τρέχουμε το πρόγραμμα βλέπουμε τι δεν κάνει σωστά και πάμε για διόρθωση. Δες τώρα τι κάνεις με τη VB. Σταματάς το πρόγραμμα την ώρα που τρέχει, χωρίς να το τερματίσεις, διορθώνεις τον κώδικα...και συνεχίζεις τον έλεγχο από εκεί που σταμάτησες αλλά με διόρθωση. Σε αντίθετη περίπτωση, αν δεν έχεις αυτό το πλεονέκτημα, πρέπει να τερματίσεις, να μπεις στον διορθωτή και αφού εκκινήσεις να κάνεις όλα τα βήματα που θα σε φέρουν στην ίδια κατάσταση, πού θες να ελέγξεις. Η διαφορά με τις visual γλώσσες που δέχονται αλλαγές κώδικα κατά την εκτέλεση είναι στη δυνατότητα διατήρησης της κατάστασης που ελέγχουμε. Αν δεν έχουμε λοιπόν την δυνατότητα που έδειξα, αργούμε να κατανοήσουμε, αργούμε να μάθουμε κατά μία έννοια.Δεν είναι μόνο να έχουμε ένα ωραίο IDE με object browser, οπότε και έχουμε την εντύπωση ότι η γνώση αποκτάται με την συχνή επιθεώρησή του. Μια παραθυρική εφαρμογή που έγραψα, για την fotomatic, τότε αντιπροσωπεία της OLYMPUS, το FOTODIGITALLAB, για την υποστήριξη ενός εξειδικευμένου εκτυπωτή, δεν θα τελείωνε γρήγορα αν δεν γράφονταν σε VB5 (την 5 είχα τότε). Είχα αγοράσει την vb 2003 αλλά προτίμησα την VB5 ..γιατί βγάζει πολύ γρήγορο εκτελέσιμο αρχείο, αλλά φοβόμουν ότι με Net θα είχα πρόβλημα σε εγκαταστάσεις, και εδώ είχαμε να κάνουμε με εκτυπώσεις φωτογραφιών, με επεξεργασία πριν την εκτύπωση. Το πρόγραμμα γράφτηκε το 2004 πριν βγει το Lightroom, και ήταν σαν το lightroom, στην ιδέα της γρήγορης διόρθωσης, μέσω ξεχωριστών εντολών, χωρίς μόνιμες αλλαγές, με έμφαση όμως στην εκτύπωση. Η Μ2000 έχει τη μηχανή εκτύπωσης συτού του προγράμματος! Τυπώνει με χρήση διαφορετικών dpi σε οριζόντιες και κάθετες αναλύσεις. Εδώ παίζει δηλαδή το αν μπορούμε να κερδίσουμε με επαναχρησιμοποίησή κώδικα. Άρα συνοψίζονται σημασία έχει η πορεία εργασίας (workflow), το στυλ για να αφήνεις επαναχρησιμοποιούμενο κώδικα και φυσικά η εμπειρία των αντικειμένων, των ιδιοτήτων και μεθόδων τους. Φυσικά αυτά ισχύουν για κάθε γλώσσα, αλλά στις παραθυρικές εφαρμογές το επίπεδο είναι σοβαρότερο, πιο βαρύ.
kilon Δημοσ. 18 Δεκεμβρίου 2015 Δημοσ. 18 Δεκεμβρίου 2015 Ας ρίξει μια ματιά εδώ: http://www.gtk.org/tutorial1.2/gtk_tut-2.html και ας αναλογιστεί σε τι σύμπαν μπαίνει! Συμφωνω ότι ο GUI προγραμματισμός είναι λίγο ζόρι ειδικά με γλώσσες όπως C/C++. Παρόλα αυτά όποιος θέλει μαθαίνει και τίποτα που να αξίζει δεν είναι εύκολο.
stavrosyomafias Δημοσ. 18 Δεκεμβρίου 2015 Δημοσ. 18 Δεκεμβρίου 2015 Παιδιά, σκέφτομαι κι εγώ τώρα διακοπές που είναι... να ασχοληθώ με γραφικό προγραμματισμό σε C (Gtk). Ξέρει κάνεις κανένα καλό βιβλίο (φυσική ή ηλεκτρονική μορφή) ή κάποιο καλό documantation για το Gtk στα ΕΛΛΗΝΙΚΑ; Ή είναι κάτι που δεν θα μπορούσε να υπάρχει σε βιβλίο;
M2000 Δημοσ. 18 Δεκεμβρίου 2015 Δημοσ. 18 Δεκεμβρίου 2015 Μια φορά που κοίταξα το documentation του Gtk+, άλλαξα άμεσα γνώμη! Η Gambas όμως το χρησιμοποιεί (θέλει linux) και έτσι μπορεί κανείς να πάρει μια γεύση από παραθυρικό περιβάλλον σε Gtk+ χωρίς να πολυζορίζεται!
kilon Δημοσ. 18 Δεκεμβρίου 2015 Δημοσ. 18 Δεκεμβρίου 2015 Παιδιά, σκέφτομαι κι εγώ τώρα διακοπές που είναι... να ασχοληθώ με γραφικό προγραμματισμό σε C (Gtk). Ξέρει κάνεις κανένα καλό βιβλίο (φυσική ή ηλεκτρονική μορφή) ή κάποιο καλό documantation για το Gtk στα ΕΛΛΗΝΙΚΑ; Ή είναι κάτι που δεν θα μπορούσε να υπάρχει σε βιβλίο; Αν θες να γίνεις καλό προγραμματιστής τότε πρέπει να μάθεις την πιο σημαντίκη γλώσσα προγραμματισμού, τα Αγγλικά. Μακρία απο ελληνικά εγχειρήδια, μάθε Αγγλικά γιατί αλλιώς θα υποφέρεις. 2
midenmidenefta Δημοσ. 18 Δεκεμβρίου 2015 Δημοσ. 18 Δεκεμβρίου 2015 Αν θες να γίνεις καλό προγραμματιστής τότε πρέπει να μάθεις την πιο σημαντίκη γλώσσα προγραμματισμού, τα Αγγλικά. Μακρία απο ελληνικά εγχειρήδια, μάθε Αγγλικά γιατί αλλιώς θα υποφέρεις. Και αν θες να γίνεις καλό[ς] στην σημαντικ[ή] γλώσσα που ονομάζουμε [Ε]λληνικά, τότε επέλεξε εγχειρ[ί]δια... μαγειρικής! Θα διαφωνήσω, διότι τα Αγγλικά είναι απαραίτητα εκ των πραγμάτων αλλά άσχετα με την ΕΚΜΑΘΗΣΗ του προγραμματισμού - και άραγε είναι πιο έυκολο για κάποιον Ελληνα να ΚΑΤΑΝΟΗΣΕΙ τις έννοιες σε μία ξένη γλώσσα αντί της δικής του (π.χ., variable/constant-μεταβλητή/σταθερή); 1
jimex Δημοσ. 18 Δεκεμβρίου 2015 Δημοσ. 18 Δεκεμβρίου 2015 Και αν θες να γίνεις καλό[ς] στην σημαντικ[ή] γλώσσα που ονομάζουμε [Ε]λληνικά, τότε επέλεξε εγχειρ[ί]δια... μαγειρικής! Θα διαφωνήσω, διότι τα Αγγλικά είναι απαραίτητα εκ των πραγμάτων αλλά άσχετα με την ΕΚΜΑΘΗΣΗ του προγραμματισμού - και άραγε είναι πιο έυκολο για κάποιον Ελληνα να ΚΑΤΑΝΟΗΣΕΙ τις έννοιες σε μία ξένη γλώσσα αντί της δικής του (π.χ., 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 και ξέρεις και πως θα κινηθείς για να μάθεις τη χρήση τους... 2
Προτεινόμενες αναρτήσεις