Moderators Kercyn Δημοσ. 27 Ιανουαρίου 2014 Moderators Δημοσ. 27 Ιανουαρίου 2014 "εκτελουνται" με την σειρα, και σου επιστρεφει το τελευταιο. Πχ τι εχουμε εδω; int i = (1,2,3); i = 3 Στο for, σε μία σύνταξη τύπου for (i = 0, j =0; i < 5, j < 6; i++, j++) δεν ελέγχονται και τα δύο σκέλη (δηλαδή και ότι i < 5 και j < 6); Νόμιζα ότι το ίδιο ισχύει και στη while
migf1 Δημοσ. 27 Ιανουαρίου 2014 Δημοσ. 27 Ιανουαρίου 2014 Στο for, σε μία σύνταξη τύπου for (i = 0, j =0; i < 5, j < 6; i++, j++) δεν ελέγχονται και τα δύο σκέλη (δηλαδή και ότι i < 5 και j < 6); Νόμιζα ότι το ίδιο ισχύει και στη while Όχι, δεν ελέγχονται και τα 2... μόνο το j < 6 ελέγχεται (δεν σε κάλυψε το προηγούμενο ποστ μου; ) @ZAKKWYLDE: Σωστά!
Moderators Kercyn Δημοσ. 27 Ιανουαρίου 2014 Moderators Δημοσ. 27 Ιανουαρίου 2014 Όχι, δεν ελέγχονται και τα 2... μόνο το j < 6 ελέγχεται (δεν σε κάλυψε το προηγούμενο ποστ μου; ) @ZAKKWYLDE: Σωστά! Το κατάλαβα το post σου, απλώς μέχρι τώρα πίστευα ότι ελέγχονται και οι 2 (κάπου θα το είχα ακούσει και θα μου έμεινε) και είπα να διπλοτσεκάρω. Ευχαριστώ
migf1 Δημοσ. 27 Ιανουαρίου 2014 Δημοσ. 27 Ιανουαρίου 2014 Το κατάλαβα το post σου, απλώς μέχρι τώρα πίστευα ότι ελέγχονται και οι 2 (κάπου θα το είχα ακούσει και θα μου έμεινε) και είπα να διπλοτσεκάρω. Ευχαριστώ Παρακαλώ Πάντως το παράδειγμα που δίνεις με τη for δεν χρησιμοποιείται πουθενά γιατί δεν έχει νόημα να μπουν boolean συνθήκες ως μη τελευταίοι όροι του τελεστή , Αυτό που θα δεις είναι να χρησιμοποιούνται αναθέσεις ως όροι του τελεστή , Γενικώς όμως, με κάποιες ιδιωματικές εξαιρέσεις (όπως π.χ. στο initialization part και στο incremental part της for) δεν θεωρείται καλή πρακτική η χρήση του τελεστή ,
gon1332 Δημοσ. 27 Ιανουαρίου 2014 Δημοσ. 27 Ιανουαρίου 2014 while (prod *= i, i-- != 1); Αν δεν κάνω λάθος το παραπάνω κάνει το εξής με τη σειρά: 1. υπολογίζει το prod*=1 2. υπολογίζει το i-- και το συγκρίνει με το 1 3. επιστρέφει τη τιμή της σύγκρισης για να δει αν θα συνεχίσει το loop. Έχω την εντύπωση ότι πρώτα γίνεται σύγκριση με το 1 και μετά γίνεται μείωση του counter. 1
ZAKKWYLDE Δημοσ. 27 Ιανουαρίου 2014 Δημοσ. 27 Ιανουαρίου 2014 Έχω την εντύπωση ότι πρώτα γίνεται σύγκριση με το 1 και μετά γίνεται μείωση του counter. Χμμμ νομίζω η αριθμητική προηγείται της λογικής...but you never know .
bird Δημοσ. 28 Ιανουαρίου 2014 Δημοσ. 28 Ιανουαρίου 2014 Χμμμ νομίζω η αριθμητική προηγείται της λογικής...but you never know . Πρώτα γίνεται η σύγκριση και μετά η μείωση δες για παράδειγμα: #include <stdio.h> int main() { int i = 10; while ( i-- != 10 ) printf("into the looop\n"); return 0; } Αν έκανε πρώτα την μείωση και μετά τη σύγκριση θα εκτύπωνε "for ever", ενώ τώρα βλέπει ότι δεν είναι διάφορο του 10 οπότε δεν μπαίνει καν μέσα... Για να κάνεις πρώτα την μείωση και μετά τη σύγκριση θα χρησιμοποιήσεις τον --i; 2
gon1332 Δημοσ. 28 Ιανουαρίου 2014 Δημοσ. 28 Ιανουαρίου 2014 Όσον αφορά το comma seperator διάβασα ότι μπορεί να κάνει και κάτι τέτοιο, αν και μάλλον δεν ενδείκνυται: if (1 == sthng) a = 1, b = 2; is like if (1 == sthng) { a = 1; b = 2; } So we can omit the brackets as it was one expression
bird Δημοσ. 28 Ιανουαρίου 2014 Δημοσ. 28 Ιανουαρίου 2014 Όσον αφορά το comma seperator διάβασα ότι μπορεί να κάνει και κάτι τέτοιο, αν και μάλλον δεν ενδείκνυται: if (1 == sthng) a = 1, b = 2; is like if (1 == sthng) { a = 1; b = 2; } So we can omit the brackets as it was one expression Ναι, φυσικά και γίνεται αλλά κυρίως χρησιμοποιείται όταν θέλεις να γραψεις compact κώδικα. Προσωπικά τον χρησιμοποιώ όταν έχω καποιο conditional if ή σε for για αύξηση παραπάνω από μίας μεταβλητής... (περιτό να πω οτι χρησιμοποιείται κατα κόρον σε obfuscated code writing )
gon1332 Δημοσ. 28 Ιανουαρίου 2014 Δημοσ. 28 Ιανουαρίου 2014 όταν θέλεις να γραψεις compact κώδικα λέγοντας;...
bird Δημοσ. 28 Ιανουαρίου 2014 Δημοσ. 28 Ιανουαρίου 2014 λέγοντας;... Ίσως η λέξη compact να σε μπέρδεψε αλλα στην ουσία το παράδειγμα που ανέφερες λέω. Έχω δει να το χρησιμοποιούν είτε για ανάθεση τιμών σε παρόμοιες μεταβλητές είτε για αύξηση μετρητών (όπως και τις πολλαπλές αναθέσεις). π.χ. ... if ( ... ) word_count++ , char_count++, line_count++ ; else word_count = char_count = line_count = 0; ... Όπως είπες δεν ενδείκνυται και προσωπικα όπως είπα το χρησιμοποιώ κυρίως σε for και σπανιότερα σε κανένα conitional if for ( i = 0, counter = STARTING_POINT; i < MAX_ITERATIONS; i++, counter += STEP ) { ... } Και μια που ανέφερα τις πολλαπλές αναθέσεις... :p #include <stdio.h> main() { int i , j ; ... i -= (j = (i += j)- j); ... return 0; }
defacer Δημοσ. 29 Ιανουαρίου 2014 Δημοσ. 29 Ιανουαρίου 2014 Όσον αφορά το comma seperator διάβασα ότι μπορεί να κάνει και κάτι τέτοιο, αν και μάλλον δεν ενδείκνυται: if (1 == sthng) a = 1, b = 2; is like if (1 == sthng) { a = 1; b = 2; } Ε αν σκεφτείς ότι το μόνο που καταφέρνει είναι να αντικαταστήσει μερικά ερωτηματικά με κόμματα και ίσως να μπερδέψει τον κόσμο... δεν το λες και συνιστάται από 29 κατασκευαστές πλυντηρίων. #include <stdio.h> main() { int i , j ; ... i -= (j = (i += j)- j); ... return 0; } Undefined behavior FTW?
migf1 Δημοσ. 29 Ιανουαρίου 2014 Δημοσ. 29 Ιανουαρίου 2014 Έχω την εντύπωση ότι πρώτα γίνεται σύγκριση με το 1 και μετά γίνεται μείωση του counter. Σωστά! Για αυτόν ακριβώς τον λόγο είχα τοποθετήσει εκείνο το EDIT στο αρχικό μου ποστ.
Dynamicos12 Δημοσ. 4 Φεβρουαρίου 2014 Δημοσ. 4 Φεβρουαρίου 2014 Γεια σας, Σπουδαζω Μηχανικων Πληροφορικης και ο καθηγητης του μαθηματος μας εχει δωσει μια Ασκηση για το εξαμηνο... Εχω εισαχθει στην σχολη απο Θεωρητικη κατευθυνση (καποια απο τα λαθη των πανελληνιων,που επιτρεπουν εισοδο σε τεχνολογικες σχολες απο θεωριτικη κατευθυνση) και οι γνωσεις μου ειναι περιορισμενες πανω στα μαθηματα,παρολο που μου αρεσει η Πληροφορικη... Στο μαθημα του Προγραμματισμου I (1) μας εχει δοθει η εξης ασκηση:Να γραφει προγραμμα σε pascal το οποιο : 1) να κατασκευαζει ενα αρχειο αυτου του τυπου με n στοιχεια 2) να διαγραφει την πρωτη εμφανιση του στοιχειου με μορφη x 3) να εισαγει στην πρωτη διαθεσιμη θεση το στοιχειο με τιμη y... *Τα 1,2,3 να γραφουν με την μορφη διαδικασιας... *** (με βαση αυτο τον τυπο: type myrec=record Value=integer Exists:boolean End; )Αν θα μπορουσε να με βοηθησει καποιος πραγματικα θα ηταν οτι καλυτερο για μενα...!Ευχαριστω πολυ...!
imitheos Δημοσ. 4 Φεβρουαρίου 2014 Δημοσ. 4 Φεβρουαρίου 2014 Να γραφει προγραμμα σε pascal το οποιο : 1) να κατασκευαζει ενα αρχειο αυτου του τυπου με n στοιχεια 2) να διαγραφει την πρωτη εμφανιση του στοιχειου με μορφη x 3) να εισαγει στην πρωτη διαθεσιμη θεση το στοιχειο με τιμη y... *Τα 1,2,3 να γραφουν με την μορφη διαδικασιας... *** (με βαση αυτο τον τυπο: type myrec=record Value=integer Exists:boolean End; ) Αν θα μπορουσε να με βοηθησει καποιος πραγματικα θα ηταν οτι καλυτερο για μενα...! Ευχαριστω πολυ...![/size] Καταρχήν μιλάς για pascal σε θέμα για C το οποίο δεν βοηθάει κάποιον που θα ψάχνει κάτι για την Pascal. Κατά δεύτερον δεν συνηθίζεται να δίνεται έτοιμη λύση για άσκηση αλλά να προσπαθείς και αφού φτάσεις σε ένα αξιοπρεπές σημείο, να ποστάρεις τον κώδικα και να βοηθάμε στα λάθη που μπορεί να έχει. Μπορεί φυσικά να βρεθεί κάποιος να στην δώσει έτοιμη αλλά το πιο σίγουρο είναι να την προσπαθήσεις και μετά να σε βοηθήσουμε στο polishing
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα