Προγραμματισμός Υπολογιστών με C++

Τα posts που έγιναν κατά την διάρκεια του Ακαδημαϊκού Έτους 2016-2017 για τα προπτυχιακά μαθήματα.
alex1997
bit level
bit level
Posts: 8
Joined: Tue Oct 20, 2015 10:04 pm
Academic status: 2nd year
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by alex1997 » Sun Jan 15, 2017 8:01 pm

Γεια σας παιδιά,
Θα ήθελα να κάνω μερικές ερωτήσεις για την εργαστηριακή εξέταση στο εργαστήριο. Η εργασία έχει βαθμολογηθεί ήδη και εξεταζόμαστε εμείς ή βαθμολογείτε εκείνη την ώρα; Επίσης γίνεται και έλεγχος για memory leaks;
Ευχαριστώ
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 545
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: MSc
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Υπολογιστών με C++

Post by Georgilakis Antonios » Sun Jan 15, 2017 8:19 pm

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
User avatar
mashua
bit level
bit level
Posts: 18
Joined: Wed Mar 11, 2015 10:56 pm
Academic status: 1st year
Gender:
Location: @th3n$
Contact:

Re: Προγραμματισμός Υπολογιστών με C++

Post by mashua » Fri Jan 20, 2017 5:10 pm

Χαὶρετε, ξέρει κανείς να μας πεί αν στο τελικό διαγώνισμα μπορούμε να έχουμε μαζί μας σημειώσεις;
--
--A.D Masiakos
--KeyId: 0x48D84811
---http://recodestuff.wordpress.com
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 545
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: MSc
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Υπολογιστών με C++

Post by Georgilakis Antonios » Fri Jan 20, 2017 7:52 pm

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
yagosdrakos
bit level
bit level
Posts: 17
Joined: Mon Apr 04, 2016 5:24 pm
Academic status: 2nd year
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by yagosdrakos » Wed Jan 25, 2017 5:24 pm

Καλησπέρα παιδιά. Το μάθημα περνιέται χωρις να χω δώσει εργασίες? Αξίζει το κόπο ή να το παρατήσω καλύτερα ?
garry
byte level
byte level
Posts: 89
Joined: Sat Sep 21, 2013 7:54 pm
Academic status: Alumnus/a
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by garry » Wed Jan 25, 2017 10:38 pm

yagosdrakos wrote:Καλησπέρα παιδιά. Το μάθημα περνιέται χωρις να χω δώσει εργασίες? Αξίζει το κόπο ή να το παρατήσω καλύτερα ?
Ένας YagosDrakos ποτέ δεν τα παρατά. Να λέμε τα πράματα με τ' όνομά τους! :smt005 :smt005

Λοιπόν, δες τις διαφάνειες και παλαιά θέματα για να καταλάβεις πως είναι περίπου η εξέταση. Το μάθημα, σαφώς, δεν είναι εύκολο αλλά ούτε και ο κος Παπαϊωάννου είναι εύκολος!
Ξέρω παιδιά που το πέρασαν δίχως εργασίες αλλά ήταν πάρα πολύ καλοί προγραμματιστές. Δεν γνωρίσω το επίπεδο σου στον προγραμματισμό αλλά δεν έχεις να χάσεις και κάτι. Διάβασε και πήγαινε, κατά την γνώμη μου πάντα!
==============================================================
Κάτι που ξέχασα, το γραπτό με άριστα το 70. Πρέπει να γράψεις 45 και πάνω για να το περάσεις! (Είναι από τους λίγους που χαρίζει κάτι ψιλά. Οφείλω να του το αναγνωρίσω! :smt021 )
Last edited by ChrysaK on Wed Jan 25, 2017 10:58 pm, edited 1 time in total.
Reason: double post
yagosdrakos
bit level
bit level
Posts: 17
Joined: Mon Apr 04, 2016 5:24 pm
Academic status: 2nd year
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by yagosdrakos » Wed Jan 25, 2017 10:40 pm

Garry ασχολούμαι γενικά με προγραμματισμό, αλλά δεν δούλεψα πολύ την cpp αυτό το εξάμηνο. Απ ότι έχω δεί απ τα θέματα παίζει γενικά με κατανοηση των θεμελίων της γλώσσας, υλοποιήσεις βασικών δομών σε cpp , κλάσεις, exceptions. Ομως παλέυεται ουσιαστικά ένα 7/10 σ αυτό το γραπτό?? Βάζει ύπουλα ερωτήματα κλπ? Γενικά με τον αριθμό ατόμων που το χρωστάει δεν το βλέπω κι εύκολο. Θα το προσπαθήσω πάντως ,ευχαριστώ για την ενθάρρυνση ! Για την Βιρνα ρε γαμώτο!
garry
byte level
byte level
Posts: 89
Joined: Sat Sep 21, 2013 7:54 pm
Academic status: Alumnus/a
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by garry » Wed Jan 25, 2017 10:50 pm

yagosdrakos wrote:Garry ασχολούμαι γενικά με προγραμματισμό, αλλά δεν δούλεψα πολύ την cpp αυτό το εξάμηνο. Απ ότι έχω δεί απ τα θέματα παίζει γενικά με κατανοηση των θεμελίων της γλώσσας, υλοποιήσεις βασικών δομών σε cpp , κλάσεις, exceptions. Ομως παλέυεται ουσιαστικά ένα 7/10 σ αυτό το γραπτό?? Βάζει ύπουλα ερωτήματα κλπ? Γενικά με τον αριθμό ατόμων που το χρωστάει δεν το βλέπω κι εύκολο. Θα το προσπαθήσω πάντως ,ευχαριστώ για την ενθάρρυνση ! Για την Βιρνα ρε γαμώτο!
Δυστυχώς ήταν το τελευταίο μου μάθημα και πάλεψα πολύ μ'αυτό. Κι όποιον ακούω να μιλάει για C++, ένας σφάχτης μου ρχεται.
Τις δυο πρώτες φορές που το έδωσα είχα διαβάσει πάααααααρα πολύ γιατί ήθελα πάρα πολύ να τελειώσω. Όμως, δεν ξέρω τι συνέβαινε και πάντα έπαιρνα 2.
Την τρίτη φορά, τελείως απογοητευμένος, πήγα με το σκεπτικό του ότι θέλει ας γίνει. Και για κάποιο λόγο το πέρασα.
Το ξέρω ακούγεται πολύ γραφική ιστορία αλλά έτσι έγινε.

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

Κάνε ότι καλύτερο μπορείς και πήγαινε. (Κι εγώ μία εργασία είχα καταφέρει να κάνω από τις 3.)
User avatar
Lavlarous
byte level
byte level
Posts: 64
Joined: Fri Nov 20, 2015 3:12 pm
Academic status: N>4
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by Lavlarous » Fri Jan 27, 2017 10:59 pm

Μαγκες εδω τι γινεται; Σωζομεθα με τιποτα; Συλλογες βαζει συνηθως η οχι; Καποια θεματα να αποκλεισουμε εστω και να δωσουμε βαση στα πιο σημαντικα; Καποιος ειδημων επι του θεματος παρακαλω
:smt024
AkisMadrugada
bit level
bit level
Posts: 21
Joined: Tue Oct 06, 2009 12:36 am
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by AkisMadrugada » Sat Jan 28, 2017 5:10 pm

Για αυτό υπάρχει κάποια απάντηση, τι θα γραφεί στο αρχείο?

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();
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 545
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: MSc
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Υπολογιστών με C++

Post by Georgilakis Antonios » Sat Jan 28, 2017 5:50 pm

Αν υποθέσουμε ότι η γραμμή:

Code: Select all

unsigned char * number_array = {1, 1, 1};	// unsigned char number_array[ ] = {1, 1, 1};
παράγει error στο C++ Shell για C++14, αυτό το πρόγραμμα δεν κάνει compile. Αλλά ας το παραβλέψουμε αυτό.

Έστω λοιπόν ότι κάνει compile, και ότι δεν δημιουργούνται access violations από ανάγνωση μνήμης εκτός ορίων. Έχεις ένα array μεγέθους 3 bytes (unsigned char [ ]), με 3 αριθμούς. Παίρνεις pointer της μορφής unsigned short *, που δείχνει σε αριθμούς 2 bytes ο καθένας.

Στην γραμμή:

Code: Select all

*(++s_p) = 2;
O pointer αυξάνεται κατά μια θέση ως unsigned short *, 2 θέσεις όμως ως unsigned char * (2 bytes κόντρα σε 1 byte), επομένως θα βρεθεί στην 3η θέση του αρχικού array. Ολόκληρη όμως? Όχι βέβαια ( :-D ). Το κάτω 1 byte της θέσης είναι εντός του number_array, το άνω 1 byte όμως είναι εκτός του array, άρα εκτός accessible μνήμης. Δηλαδή:

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.
Με την αλλαγή στον αριθμό 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 είναι σκουπίδια.
Spoiler: εμφάνιση/απόκρυψη
Ελπίζω να μην έκανα κανα λάθος με όλα αυτά. Και, by the way, μην πάρεις την χρήση του δεύτερου προσώπου προσωπικά. :-D
"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
AkisMadrugada
bit level
bit level
Posts: 21
Joined: Tue Oct 06, 2009 12:36 am
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by AkisMadrugada » Sun Jan 29, 2017 9:57 pm

@Georgilakis Antonios Σε ευχαριστώ πάρα πολύ για την εξήγηση, νομίζω κατάλαβα.
AkisMadrugada
bit level
bit level
Posts: 21
Joined: Tue Oct 06, 2009 12:36 am
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by AkisMadrugada » Tue Jan 31, 2017 2:50 pm

Μπορεί επίσης κάποιος να εξηγήσει τη σειρά με την οποία γίνονται οι πράξεις στο παρακάτω:

Code: Select all

Time t1(10,20); 
         Time t2(21,41);
         t2= (t1++)++;//<--------------------εδώ συγκεκριμένα
         
User avatar
Georgilakis Antonios
Mbyte level
Mbyte level
Posts: 545
Joined: Mon Dec 02, 2013 11:10 pm
Academic status: MSc
Gender:
Location: Straight into your Mind

Re: Προγραμματισμός Υπολογιστών με C++

Post by Georgilakis Antonios » Tue Jan 31, 2017 5:12 pm

AkisMadrugada wrote:Μπορεί επίσης κάποιος να εξηγήσει τη σειρά με την οποία γίνονται οι πράξεις στο παρακάτω:

Code: Select all

Time t1(10,20); 
         Time t2(21,41);
         t2= (t1++)++;//<--------------------εδώ συγκεκριμένα
         
Αυτό το code snippet παράγει error, διότι το t1++ δεν είναι l-value για τον δεύτερο postfix operator ++.
Σημείωσε ότι αν είχαμε το εξής:

Code: Select all

t2 = (++t1)++;
τότε το ++t1 είναι l-value και το αποτέλεσμα είναι ισοδύναμο με:

Code: Select all

/*
 *	"increment()" είναι η μέθοδος που αντιπροσωπεύει
 *	την λογική της προσαύξησης ενός αντικειμένου Time.
 */

t1.increment();
t2 = t1;			// Προσοχή, εδώ copy διότι t2 όχι reference, επομένως t1, t2 ανεξάρτητα.
t1.increment();
Δες αν θες επιπλέον και αυτό: http://stackoverflow.com/questions/3715 ... t-i-is-not
"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
efev2014
byte level
byte level
Posts: 120
Joined: Tue Oct 07, 2014 8:17 pm
Academic status: 3rd year
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by efev2014 » Thu Feb 02, 2017 10:20 pm

Μπορεί κάποιος να εξηγήσει γιατί ο κώδικας τυπώνει 0?

Code: Select all

#include<iostream>

using namespace std;
main() {
   short unsigned int i = 0; 
   
   cout<<i--;
}
Ευχαριστώ
User avatar
kras
Kilobyte level
Kilobyte level
Posts: 253
Joined: Mon Sep 01, 2014 1:21 am
Academic status: 4th year
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by kras » Thu Feb 02, 2017 11:06 pm

efev2014 wrote:Μπορεί κάποιος να εξηγήσει γιατί ο κώδικας τυπώνει 0?

Code: Select all

#include<iostream>

using namespace std;
main() {
   short unsigned int i = 0; 
   
   cout<<i--;
}
Ευχαριστώ
http://en.cppreference.com/w/cpp/langua ... tor_incdec
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.
WhitestRabbit
Buffer underflow exception
Buffer underflow exception
Posts: 1
Joined: Wed Sep 28, 2016 12:47 pm
Academic status: 1st year
Gender:

Re: Προγραμματισμός Υπολογιστών με C++

Post by WhitestRabbit » Sun Jul 09, 2017 12:26 am

Καλησπέρα, μήπως υπάρχουν εκφωνήσεις για το υλικό των εργαστηριακών μαθημάτων; Στο eclass μπορώ να βρω μόνο κώδικα.
Locked

Return to “Ακαδημαϊκό Έτος 2016-2017”