Προγραμματισμός Υπολογιστών με C++
Re: Προγραμματισμός Υπολογιστών με C++
Γεια σας παιδιά,
Θα ήθελα να κάνω μερικές ερωτήσεις για την εργαστηριακή εξέταση στο εργαστήριο. Η εργασία έχει βαθμολογηθεί ήδη και εξεταζόμαστε εμείς ή βαθμολογείτε εκείνη την ώρα; Επίσης γίνεται και έλεγχος για memory leaks;
Ευχαριστώ
Θα ήθελα να κάνω μερικές ερωτήσεις για την εργαστηριακή εξέταση στο εργαστήριο. Η εργασία έχει βαθμολογηθεί ήδη και εξεταζόμαστε εμείς ή βαθμολογείτε εκείνη την ώρα; Επίσης γίνεται και έλεγχος για memory leaks;
Ευχαριστώ
- Georgilakis Antonios
- Mbyte level
- Posts: 548
- Joined: Mon Dec 02, 2013 11:10 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Straight into your Mind
Re: Προγραμματισμός Υπολογιστών με C++
Συνήθως η εργασία βαθμολογείται από πριν, η βαθμολογία όμως μπορεί να αλλάξει κατά την διάρκεια της εξέτασης.alex1997 wrote:Γεια σας παιδιά,
Θα ήθελα να κάνω μερικές ερωτήσεις για την εργαστηριακή εξέταση στο εργαστήριο. Η εργασία έχει βαθμολογηθεί ήδη και εξεταζόμαστε εμείς ή βαθμολογείτε εκείνη την ώρα; Επίσης γίνεται και έλεγχος για memory leaks;
Ευχαριστώ
Επίσης, το πρέπον είναι να μην υπάρχουν memory leaks. Αν κάτι τέτοιο εντοπιστεί από τον εξεταστή, υπάρχει μια περίπτωση να αφαιρεθούν μονάδες. Αυτό βέβαια εξαρτάται από πολλά.
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
- mashua
- bit level
- Posts: 18
- Joined: Wed Mar 11, 2015 10:56 pm
- Academic status: 1st year
- Gender: ♂
- Location: @th3n$
- Contact:
Re: Προγραμματισμός Υπολογιστών με C++
Χαὶρετε, ξέρει κανείς να μας πεί αν στο τελικό διαγώνισμα μπορούμε να έχουμε μαζί μας σημειώσεις;
- Georgilakis Antonios
- Mbyte level
- Posts: 548
- Joined: Mon Dec 02, 2013 11:10 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Straight into your Mind
Re: Προγραμματισμός Υπολογιστών με C++
Συνήθως ο κ. Παπαϊωάννου δεν επιτρέπει ποτέ σημειώσεις στην εξέταση αυτού του μαθήματος. Αμφιβάλω αν το έχει κάνει ποτέ στο παρελθόν.mashua wrote:Χαὶρετε, ξέρει κανείς να μας πεί αν στο τελικό διαγώνισμα μπορούμε να έχουμε μαζί μας σημειώσεις;
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
-
- bit level
- Posts: 17
- Joined: Mon Apr 04, 2016 5:24 pm
- Academic status: 2nd year
- Gender: ♂
Re: Προγραμματισμός Υπολογιστών με C++
Καλησπέρα παιδιά. Το μάθημα περνιέται χωρις να χω δώσει εργασίες? Αξίζει το κόπο ή να το παρατήσω καλύτερα ?
Re: Προγραμματισμός Υπολογιστών με C++
Ένας YagosDrakos ποτέ δεν τα παρατά. Να λέμε τα πράματα με τ' όνομά τους!yagosdrakos wrote:Καλησπέρα παιδιά. Το μάθημα περνιέται χωρις να χω δώσει εργασίες? Αξίζει το κόπο ή να το παρατήσω καλύτερα ?
Λοιπόν, δες τις διαφάνειες και παλαιά θέματα για να καταλάβεις πως είναι περίπου η εξέταση. Το μάθημα, σαφώς, δεν είναι εύκολο αλλά ούτε και ο κος Παπαϊωάννου είναι εύκολος!
Ξέρω παιδιά που το πέρασαν δίχως εργασίες αλλά ήταν πάρα πολύ καλοί προγραμματιστές. Δεν γνωρίσω το επίπεδο σου στον προγραμματισμό αλλά δεν έχεις να χάσεις και κάτι. Διάβασε και πήγαινε, κατά την γνώμη μου πάντα!
==============================================================
Κάτι που ξέχασα, το γραπτό με άριστα το 70. Πρέπει να γράψεις 45 και πάνω για να το περάσεις! (Είναι από τους λίγους που χαρίζει κάτι ψιλά. Οφείλω να του το αναγνωρίσω! )
Last edited by ChrysaK on Wed Jan 25, 2017 10:58 pm, edited 1 time in total.
Reason: double post
Reason: double post
-
- bit level
- Posts: 17
- Joined: Mon Apr 04, 2016 5:24 pm
- Academic status: 2nd year
- Gender: ♂
Re: Προγραμματισμός Υπολογιστών με C++
Garry ασχολούμαι γενικά με προγραμματισμό, αλλά δεν δούλεψα πολύ την cpp αυτό το εξάμηνο. Απ ότι έχω δεί απ τα θέματα παίζει γενικά με κατανοηση των θεμελίων της γλώσσας, υλοποιήσεις βασικών δομών σε cpp , κλάσεις, exceptions. Ομως παλέυεται ουσιαστικά ένα 7/10 σ αυτό το γραπτό?? Βάζει ύπουλα ερωτήματα κλπ? Γενικά με τον αριθμό ατόμων που το χρωστάει δεν το βλέπω κι εύκολο. Θα το προσπαθήσω πάντως ,ευχαριστώ για την ενθάρρυνση ! Για την Βιρνα ρε γαμώτο!
Re: Προγραμματισμός Υπολογιστών με C++
Δυστυχώς ήταν το τελευταίο μου μάθημα και πάλεψα πολύ μ'αυτό. Κι όποιον ακούω να μιλάει για C++, ένας σφάχτης μου ρχεται.yagosdrakos wrote:Garry ασχολούμαι γενικά με προγραμματισμό, αλλά δεν δούλεψα πολύ την cpp αυτό το εξάμηνο. Απ ότι έχω δεί απ τα θέματα παίζει γενικά με κατανοηση των θεμελίων της γλώσσας, υλοποιήσεις βασικών δομών σε cpp , κλάσεις, exceptions. Ομως παλέυεται ουσιαστικά ένα 7/10 σ αυτό το γραπτό?? Βάζει ύπουλα ερωτήματα κλπ? Γενικά με τον αριθμό ατόμων που το χρωστάει δεν το βλέπω κι εύκολο. Θα το προσπαθήσω πάντως ,ευχαριστώ για την ενθάρρυνση ! Για την Βιρνα ρε γαμώτο!
Τις δυο πρώτες φορές που το έδωσα είχα διαβάσει πάααααααρα πολύ γιατί ήθελα πάρα πολύ να τελειώσω. Όμως, δεν ξέρω τι συνέβαινε και πάντα έπαιρνα 2.
Την τρίτη φορά, τελείως απογοητευμένος, πήγα με το σκεπτικό του ότι θέλει ας γίνει. Και για κάποιο λόγο το πέρασα.
Το ξέρω ακούγεται πολύ γραφική ιστορία αλλά έτσι έγινε.
Τα θέματα ναι είναι παγίδες τα περισσότερα ή όπως και να το κάνουμε στον προγραμματισμό υπάρχουν πολλοί τρόποι για να απαντήσεις.
Το μόνο κακό είναι ότι τις περισσότερες φορές θέλει μόνον τον δικό του!
Κάνε ότι καλύτερο μπορείς και πήγαινε. (Κι εγώ μία εργασία είχα καταφέρει να κάνω από τις 3.)
Re: Προγραμματισμός Υπολογιστών με C++
Μαγκες εδω τι γινεται; Σωζομεθα με τιποτα; Συλλογες βαζει συνηθως η οχι; Καποια θεματα να αποκλεισουμε εστω και να δωσουμε βαση στα πιο σημαντικα; Καποιος ειδημων επι του θεματος παρακαλω
-
- bit level
- Posts: 21
- Joined: Tue Oct 06, 2009 12:36 am
- Gender: ♀
Re: Προγραμματισμός Υπολογιστών με C++
Για αυτό υπάρχει κάποια απάντηση, τι θα γραφεί στο αρχείο?
Code: Select all
unsigned char * number_array = {1,1,1};
ofstream fs = ofstream("a.out", ios_base::out );
if (!fs.bad())
{
unsigned short * s_p = (unsigned short*) number_array;
*(++s_p)=2;
fs.write(s_p, sizeof(number_array));
}
fs.close();
- Georgilakis Antonios
- Mbyte level
- Posts: 548
- Joined: Mon Dec 02, 2013 11:10 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Straight into your Mind
Re: Προγραμματισμός Υπολογιστών με C++
Αν υποθέσουμε ότι η γραμμή:
παράγει error στο C++ Shell για C++14, αυτό το πρόγραμμα δεν κάνει compile. Αλλά ας το παραβλέψουμε αυτό.
Έστω λοιπόν ότι κάνει compile, και ότι δεν δημιουργούνται access violations από ανάγνωση μνήμης εκτός ορίων. Έχεις ένα array μεγέθους 3 bytes (unsigned char [ ]), με 3 αριθμούς. Παίρνεις pointer της μορφής unsigned short *, που δείχνει σε αριθμούς 2 bytes ο καθένας.
Στην γραμμή:
O pointer αυξάνεται κατά μια θέση ως unsigned short *, 2 θέσεις όμως ως unsigned char * (2 bytes κόντρα σε 1 byte), επομένως θα βρεθεί στην 3η θέση του αρχικού array. Ολόκληρη όμως? Όχι βέβαια ( ). Το κάτω 1 byte της θέσης είναι εντός του number_array, το άνω 1 byte όμως είναι εκτός του array, άρα εκτός accessible μνήμης. Δηλαδή:
Με την αλλαγή στον αριθμό 2, γράφεις το κάτω byte εντός ορίου μνήμης, και το άνω εκτός. Ωστόσο, έχουμε υποθέσει ότι υπάρχουν no access violations, άρα no problem εδώ, αλλιώς ΜΠΑΜ.
Μετά γράφεις τα περιεχόμενα του array από την "οπτική σκοπιά" του δείκτη s_p, o οποίος όμως πλέον ξεκινά να δείχνει από την θέση του 3ου αριθμού του array (κάτω byte της αντίστοιχης θέσης σε unsigned short, άνω byte εκτός ορίων), και μάλιστα γράφεις τόσα bytes, όσο είναι το πλήθος των αριθμών στο array * sizeof(unsigned char). Όμως οι θέσεις μνήμης μετά την εγγραφή του αριθμού 2 είναι uninitialized (εύκολο να το δεις νομίζω) --> σκουπίδια.
Εν τέλει, στο αρχείο θα γραφούν μια σειρά από bytes, όπου τα πρώτα 2 αναπαριστούν τον αριθμό 2 ως unsigned short, και τo υπόλοιπo 1 byte είναι σκουπίδια.
Code: Select all
unsigned char * number_array = {1, 1, 1}; // unsigned char number_array[ ] = {1, 1, 1};
Έστω λοιπόν ότι κάνει compile, και ότι δεν δημιουργούνται access violations από ανάγνωση μνήμης εκτός ορίων. Έχεις ένα array μεγέθους 3 bytes (unsigned char [ ]), με 3 αριθμούς. Παίρνεις pointer της μορφής unsigned short *, που δείχνει σε αριθμούς 2 bytes ο καθένας.
Στην γραμμή:
Code: Select all
*(++s_p) = 2;
Code: Select all
{ 1, 1, 1 }
{unsigned char, unsigned char, unsigned char}[out of bounds]
{ unsigned short, unsigned short }
(You are here) ^
{ 00000001, 00000001, 00000001, [ΧΧΧΧΧΧΧΧ] } // bits.
Μετά γράφεις τα περιεχόμενα του array από την "οπτική σκοπιά" του δείκτη s_p, o οποίος όμως πλέον ξεκινά να δείχνει από την θέση του 3ου αριθμού του array (κάτω byte της αντίστοιχης θέσης σε unsigned short, άνω byte εκτός ορίων), και μάλιστα γράφεις τόσα bytes, όσο είναι το πλήθος των αριθμών στο array * sizeof(unsigned char). Όμως οι θέσεις μνήμης μετά την εγγραφή του αριθμού 2 είναι uninitialized (εύκολο να το δεις νομίζω) --> σκουπίδια.
Εν τέλει, στο αρχείο θα γραφούν μια σειρά από bytes, όπου τα πρώτα 2 αναπαριστούν τον αριθμό 2 ως unsigned short, και τo υπόλοιπo 1 byte είναι σκουπίδια.
- Spoiler: εμφάνιση/απόκρυψη
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
-
- bit level
- Posts: 21
- Joined: Tue Oct 06, 2009 12:36 am
- Gender: ♀
Re: Προγραμματισμός Υπολογιστών με C++
@Georgilakis Antonios Σε ευχαριστώ πάρα πολύ για την εξήγηση, νομίζω κατάλαβα.
-
- bit level
- Posts: 21
- Joined: Tue Oct 06, 2009 12:36 am
- Gender: ♀
Re: Προγραμματισμός Υπολογιστών με C++
Μπορεί επίσης κάποιος να εξηγήσει τη σειρά με την οποία γίνονται οι πράξεις στο παρακάτω:
Code: Select all
Time t1(10,20);
Time t2(21,41);
t2= (t1++)++;//<--------------------εδώ συγκεκριμένα
- Georgilakis Antonios
- Mbyte level
- Posts: 548
- Joined: Mon Dec 02, 2013 11:10 pm
- Academic status: Alumnus/a
- Gender: ♂
- Location: Straight into your Mind
Re: Προγραμματισμός Υπολογιστών με C++
Αυτό το code snippet παράγει error, διότι το t1++ δεν είναι l-value για τον δεύτερο postfix operator ++.AkisMadrugada wrote:Μπορεί επίσης κάποιος να εξηγήσει τη σειρά με την οποία γίνονται οι πράξεις στο παρακάτω:Code: Select all
Time t1(10,20); Time t2(21,41); t2= (t1++)++;//<--------------------εδώ συγκεκριμένα
Σημείωσε ότι αν είχαμε το εξής:
Code: Select all
t2 = (++t1)++;
Code: Select all
/*
* "increment()" είναι η μέθοδος που αντιπροσωπεύει
* την λογική της προσαύξησης ενός αντικειμένου Time.
*/
t1.increment();
t2 = t1; // Προσοχή, εδώ copy διότι t2 όχι reference, επομένως t1, t2 ανεξάρτητα.
t1.increment();
"Always keep a low profile. Cause when you get high, things can become strange."
"Never stop doing things you like. Never stop loving people you love. Never give up. Believe in yourself. Believe in your hidden powers."
"Honesty is an expensive gift, so don't expect it from cheap people."
The Scientist
-
- byte level
- Posts: 120
- Joined: Tue Oct 07, 2014 8:17 pm
- Academic status: Alumnus/a
- Gender: ♂
Re: Προγραμματισμός Υπολογιστών με C++
Μπορεί κάποιος να εξηγήσει γιατί ο κώδικας τυπώνει 0?
Ευχαριστώ
Code: Select all
#include<iostream>
using namespace std;
main() {
short unsigned int i = 0;
cout<<i--;
}
Re: Προγραμματισμός Υπολογιστών με C++
http://en.cppreference.com/w/cpp/langua ... tor_incdecefev2014 wrote:Μπορεί κάποιος να εξηγήσει γιατί ο κώδικας τυπώνει 0?
ΕυχαριστώCode: Select all
#include<iostream> using namespace std; main() { short unsigned int i = 0; cout<<i--; }
Pre-increment and pre-decrement operators increments or decrements the value of the object and returns a reference to the result.
Post-increment and post-decrement creates a copy of the object, increments or decrements the value of the object and returns the copy from before the increment or decrement.
-
- Buffer underflow exception
- Posts: 1
- Joined: Wed Sep 28, 2016 12:47 pm
- Academic status: 1st year
- Gender: ♂
Re: Προγραμματισμός Υπολογιστών με C++
Καλησπέρα, μήπως υπάρχουν εκφωνήσεις για το υλικό των εργαστηριακών μαθημάτων; Στο eclass μπορώ να βρω μόνο κώδικα.