THMMY.gr

Μαθήματα Βασικού Κύκλου => Δομημένος Προγραμματισμός => Topic started by: bestpike on June 21, 2011, 03:24:25 am



Title: Ερωτηση σχετικα με pointers
Post by: bestpike on June 21, 2011, 03:24:25 am
Οταν πηγα για εξεταση εργαστηριου,ο Κορτεσης μου επισημανε ενα 'λαθος' που ειδε σε αρκετα ατομα οπως ειπε. Το λαθος αυτο ηταν οτι εδινα σαν ορισμα σε συναρτηση εναν πινακα η ενα pointer. Δηλαδη αν πχ εχουμε ενα πινακα Α [ 3 ] και 3 αλλες μεταβλητες a b c οταν οριζα τη συναρτηση εγραφα function(int a, int b, int c, float Table[ ]), και μετα την καλουσα ως function(a,b,c,A). Αυτο δε του αρεσε γιατι λεει οτι ετσι του δινω ως ορισμα ολοκληρο τον πινακα και οτι αυτο καθυστερει το προγραμμα, και οτι αυτος θελει να καλεις τη συναρτηση ως function(a,b,c, &d). Αυτο που δε καταλαβαινω είναι γιατι αν του δωσω εναν πινακα ως ορισμα αυτο θα επιβαρυνει το προγραμμα μου παραπανω? Ξερουμε πολυ καλα οτι το μονο που στελνω ως ορισμα στη συναρτηση ειναι η διευθυνση του πρωτου στοιχειου του πινακα και τιποτα αλλο. Επομενως τi διαφορα εχει αυτο απο το &d το οποιο είναι κι αυτο 1 διευθυνση?

Η μονη διαφορα που μπορω να δω ειναι αν του δωσω σαν ορισμα ενα πινακα με πανω απο 1 διασταση, οποτε στη συναρτηση δινεις σαν πληροφορια τη διευθυνση του πρωτου στοιχειου καθως και ποσες γραμμες ή στηλες έχει ο πινακας.

Καμμια ιδέα κανεις? Ειδικα κανενας που να του το ανεφερε επισης ο Κορτέσης?


Title: Re: Ερωτηση σχετικα με pointers
Post by: Silvershot on June 21, 2011, 04:17:40 am
Σορρυ κιολας για την εκφραση αλλα αυτα ειναι Μ@Λ@ΚΙΕΣ. Το ενα δε του αρεσει το αλλο δε του αρεσει ε μηπως τελικα αυτος εχει καθυστερηση και οχι το προγραμμα? Στον καθενα και κατι διαφορετικο ειπε. Και στη περιπωτση που ισχυει, ΠΟΣΟ πιο πολυ διαφορα να εχει? Αν δεν του αρεσουν αυτα που κανουμε γιατι δεν ηρθε να παραδωσει και να εξηγησει ασκησεις ο ιδιος και εβαζε αλλους? Μετα αν γραψεις κατι και δε του αρεσει εσυ θα φταις?
Αν στο ειπε ετσι και τυχει κατι παρομοιο στην εξεταση καντο ετσι για να μην εχεις αμφιβολια.

Νough said.


Title: Re: Ερωτηση σχετικα με pointers
Post by: SolidSNK on June 21, 2011, 08:03:25 am
ΧΑΧΑΧΑΧΑΧΑΧΑΧΑΧΑΧΑΧΑΧΑΧΑΧΑ

Είναι μια κανονικότατη κοτσάνα :D

Code:
 function(int a, int b, int c, float Table[ ])
function(int a, int b, int c, float *Table)


Οι 2 δηλώσεις είναι απολύτως ταυτόσημες. Και για τις 2 περιπτώσεις ο compiler γνωρίζει πως περιμένει για όρισμα pointer, δλδ διεύθυνση. Αχ ρε κορτέση...


ps: στις 2 διαστάσεις η δήλωση σου πρέπει να 'χει τον αριθμό των στηλών, οι γραμμές δεν παίζουν ρόλο στον compiler. Φυσικά τις πιο πολλές φορές δουλεύει με pointer σε pointer, δεν υπάρχουν πολλές περιπτώσεις σε πρόγραμμα όπου πρέπει να ξέρει ο compiler σε τι μεγέθους array δείχνει η array από pointers.


Title: Re: Ερωτηση σχετικα με pointers
Post by: arashi on June 21, 2011, 10:30:17 am


Ασε ρε Νικο εμπλεξες με Κορτεσηδες κ εσυ....

Παντως βλεπω οτι ο ανταγωνισμος απο Πιτσιανη και Συμεωνιδη λειτουργει ...θετικα...

ακου λεει θα καθυστερει το προγραμμα... ::)

Την επομενη φορα να του πεις

"ελα να γραψουμε ενα loop με 10^9 επαναληψεις αδειων κλισεων να δουμε ποιος ειναι πιο γρηγορος"

"και μετα για 10^24"


Title: Re: Ερωτηση σχετικα με pointers
Post by: edenaxas on June 21, 2011, 10:37:28 am
βασικά το εχω ξανακουσει οτι το εχει πει ο Κορτεσης και σε αλλον αυτο. Νομιζω οτι οταν λεει πως βαραινεις το προγραμμα εννοει πως επιβαρύνεις τη λειτουργεια του compiler...

run and seek αν προγραμματιζεις σε Borland του 92 ίσως...

Μαλλον το λεει για object code λογους αλλα και παλι δεν νομιζω πως επηρεαζει τον parser...


Title: Re: Ερωτηση σχετικα με pointers
Post by: arashi on June 21, 2011, 10:41:10 am
Το οτι συζηταει για Borland στην εποχη του cloud πιστευω κλεινει οριστικα τη συζητηση....


Title: deleted
Post by: BOBoMASTORAS on June 21, 2011, 10:55:43 am
deleted


Title: Re: Ερωτηση σχετικα με pointers
Post by: pmousoul on June 21, 2011, 11:35:00 am
bob είναι assembly για την αρχιτεκτονική της Intel?

πιο προγραμματάκι σου παράγει την assembly?


Title: Re: Ερωτηση σχετικα με pointers
Post by: edenaxas on June 21, 2011, 11:39:23 am
ναι προφανως και βγαζει το ιδιο απλα ο compiler κανει "πιο πολυ" δουλεια  :D

hence "κουραζεις τον compiler" οπως είχε πει στον φίλο μου.


Title: Re: Ερωτηση σχετικα με pointers
Post by: SolidSNK on June 21, 2011, 11:53:00 am
Ε, μα ναι! Λες και είναι κάτι καινούριο, στο K&R (the C programming language) το λένε από την αρχή του χρόνου (1970 if u know what i mean).

bob είναι assembly για την αρχιτεκτονική της Intel?

πιο προγραμματάκι σου παράγει την assembly?
Μπορείς να το πάρεις κάνοντας disassemble το εκτελέσιμο ή ακόμα και να πεις στον gcc να βγάλει τις assembly instructions μόνο με το -S option. x86 είναι η αρχιτεκτονική.


Title: Re: Ερωτηση σχετικα με pointers
Post by: Nessa NetMonster on June 21, 2011, 12:10:42 pm
Ναι αλλά το compiling μία φορά θα γίνει. Δεν είναι ανάγκη να γίνεται γρήγορα.


Title: Re: Ερωτηση σχετικα με pointers
Post by: edenaxas on June 21, 2011, 12:12:59 pm
χμ..

δεν ξερω.

o super 286 που δουλευουν στο γενικο τμημα κανει αρκετη ωριτσα για hello world


Title: deleted
Post by: BOBoMASTORAS on June 21, 2011, 13:20:11 pm
deleted


Title: Re: Ερωτηση σχετικα με pointers
Post by: varvoutis on June 21, 2011, 14:08:45 pm
bob είναι assembly για την αρχιτεκτονική της Intel?

πιο προγραμματάκι σου παράγει την assembly?

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

Δηλαδή μπορείς να παράξεις πχ κώδικα σε assembly του MIPS R2000/R3000 σε ένα μηχάνημα που έχει επεξεργαστή της Intel; Και αν ναι, πώς;


Title: Re: Ερωτηση σχετικα με pointers
Post by: Komimis on June 21, 2011, 14:13:32 pm
Τι 2ο εξάμηνο μωρέ..υπάρχει ακόμα αυτό?


Title: Re: Ερωτηση σχετικα με pointers
Post by: pmousoul on June 21, 2011, 14:28:08 pm
bob είναι assembly για την αρχιτεκτονική της Intel?

πιο προγραμματάκι σου παράγει την assembly?

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

Δηλαδή μπορείς να παράξεις πχ κώδικα σε assembly του MIPS R2000/R3000 σε ένα μηχάνημα που έχει επεξεργαστή της Intel; Και αν ναι, πώς;

εδιτ: τώρα κατάλαβα τι λες.. μιλάς για compiler.. o οποίος να σου δίνει το πρόγραμμά σου σε assembly του mips.. δηλ. να γράφεις π.χ. C και να παίρνεις mips assembly..

λογικά αυτό θα πρέπει να υπάρχει


το κάνει ο gcc απ' ότι γράφει

http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/MIPS-Options.html


Title: Re: Ερωτηση σχετικα με pointers
Post by: arashi on June 21, 2011, 14:35:33 pm
Η ακαδημαικη γυμνια (παντελης ομως!)

του γενικου τμηματος δεν χρειαζεται αποδειξεις και  συζητησεις

ειναι αξιωμα


Title: Re: Ερωτηση σχετικα με pointers
Post by: pmousoul on June 21, 2011, 14:37:32 pm
και το visual studio

http://msdn.microsoft.com/en-us/library/ms254280(v=vs.80).aspx


Title: Re: Ερωτηση σχετικα με pointers
Post by: varvoutis on June 21, 2011, 14:49:12 pm
bob είναι assembly για την αρχιτεκτονική της Intel?

πιο προγραμματάκι σου παράγει την assembly?

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

Δηλαδή μπορείς να παράξεις πχ κώδικα σε assembly του MIPS R2000/R3000 σε ένα μηχάνημα που έχει επεξεργαστή της Intel; Και αν ναι, πώς;

εδιτ: τώρα κατάλαβα τι λες.. μιλάς για compiler.. o οποίος να σου δίνει το πρόγραμμά σου σε assembly του mips.. δηλ. να γράφεις π.χ. C και να παίρνεις mips assembly..

λογικά αυτό θα πρέπει να υπάρχει


το κάνει ο gcc απ' ότι γράφει

http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/MIPS-Options.html

και το visual studio

http://msdn.microsoft.com/en-us/library/ms254280(v=vs.80).aspx

Ναι, αυτό ακριβώς εννοούσα lost body, απλώς όταν είχα ασχοληθεί με το visual studio δεν μπόρεσα να το κάνω...  :(

Οπότε έψαχνα αν κάποιος θα μπορούσε να μου πει 2-3 πράματα απλά και γρήγορα!

Πάντως επειδή έχει ενδιαφέρον το θέμα, όταν βρω λίγο χρόνο θα ασχοληθώ και θα postάρω τα... αποτελέσματα!  ;D


Title: deleted
Post by: BOBoMASTORAS on June 21, 2011, 19:34:59 pm
deleted


Title: Re: Ερωτηση σχετικα με pointers
Post by: varvoutis on June 21, 2011, 20:14:00 pm
γενικά μπορείς να το κάνεις αυτό με τον gcc.

είχα διαβάσει κάποτε οδηγίες για να εγκαταστήσω τον gcc και μου φάνηκαν πολύπλοκες...

όντως έτσι είναι;

δεν υπάρχει κάτι αντίστοιχο, με το VS ή το Xcode που τρέχεις ένα setup και είσαι έτοιμος;


Title: deleted
Post by: BOBoMASTORAS on June 21, 2011, 22:28:41 pm
deleted


Title: Re: Ερωτηση σχετικα με pointers
Post by: nikitas350 on June 27, 2011, 00:03:57 am
Οταν πηγα για εξεταση εργαστηριου,ο Κορτεσης μου επισημανε ενα 'λαθος' που ειδε σε αρκετα ατομα οπως ειπε. Το λαθος αυτο ηταν οτι εδινα σαν ορισμα σε συναρτηση εναν πινακα η ενα pointer. Δηλαδη αν πχ εχουμε ενα πινακα Α [ 3 ] και 3 αλλες μεταβλητες a b c οταν οριζα τη συναρτηση εγραφα function(int a, int b, int c, float Table[ ]), και μετα την καλουσα ως function(a,b,c,A). Αυτο δε του αρεσε γιατι λεει οτι ετσι του δινω ως ορισμα ολοκληρο τον πινακα και οτι αυτο καθυστερει το προγραμμα, και οτι αυτος θελει να καλεις τη συναρτηση ως function(a,b,c, &d). Αυτο που δε καταλαβαινω είναι γιατι αν του δωσω εναν πινακα ως ορισμα αυτο θα επιβαρυνει το προγραμμα μου παραπανω? Ξερουμε πολυ καλα οτι το μονο που στελνω ως ορισμα στη συναρτηση ειναι η διευθυνση του πρωτου στοιχειου του πινακα και τιποτα αλλο. Επομενως τi διαφορα εχει αυτο απο το &d το οποιο είναι κι αυτο 1 διευθυνση?

Η μονη διαφορα που μπορω να δω ειναι αν του δωσω σαν ορισμα ενα πινακα με πανω απο 1 διασταση, οποτε στη συναρτηση δινεις σαν πληροφορια τη διευθυνση του πρωτου στοιχειου καθως και ποσες γραμμες ή στηλες έχει ο πινακας.

Καμμια ιδέα κανεις? Ειδικα κανενας που να του το ανεφερε επισης ο Κορτέσης?

Κάθε χρόνο χειρότερος γίνεται αυτός. Δεν έχει διαφορά ο κώδικας στον χρόνο εκτέλεσης. Στο compile μπορεί να έχει κάτι pico seconds, αλλά δεν μας ενδιαφέρει καθόλου. Σε δισδιάστατο πίνακα, πρέπει βέβαια να κάνεις σωστά την δήλωση στην συνάρτηση π.χ.
void test_function(int A[][9]) και μετά όταν την καλείς να γράφεις test_function(A). Aν την καλέσεις με pointer θα σου δουλέψει πάλι αλλά μπορεί να  σου βγάλει warning. Όμως χωρίς να είμαι 100% σίγουρος ακόμα και στην περίπτωση του δυσδιάστατου δεν στέλνονται περισσότερες πληροφορίες, αλλά μόνο ελέγχεται όταν γίνεται compile αν έχεις βάλει για όρισμα συμβατό πίνακα. Για αυτό βγάζει και warning όταν στέλνεις τον pointer, επειδή δεν μπορεί να ελέγξει αν είναι οκ.

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


Title: Re: Ερωτηση σχετικα με pointers
Post by: arashi on June 27, 2011, 00:17:46 am
προφανως


Title: deleted
Post by: BOBoMASTORAS on June 27, 2011, 00:53:43 am
deleted


Title: Re: Ερωτηση σχετικα με pointers
Post by: edenaxas on June 27, 2011, 00:56:04 am
εαν περασει αυτο με την αξιολογηση ο κορτεσης ποσο λετε να καταληξει να παιρνει το μηνα?


Title: Re: Ερωτηση σχετικα με pointers
Post by: Silvershot on June 27, 2011, 17:52:51 pm
εαν περασει αυτο με την αξιολογηση ο κορτεσης ποσο λετε να καταληξει να παιρνει το μηνα?

Δε το κανεις λιγο πιο μικρο να φαινεται ?  :D