Πώς τρέχω σταδιακά το πρόγραμμα στο MS Visual stidio C++;

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Πώς τρέχω σταδιακά το πρόγραμμα στο MS Visual stidio C++;

Δημοσίευση από xarisss » 24 Νοέμ 2007 16:26

Μήπως ξέρει κανείς πώς μπορώ να τρέξω σταδιακά τον κώδικά μου στο MS Visual studio C++, ώστε να μου βγάλει ένα σημαδάκι πάνω στον κώδικα και να μου λέει σε ποιό σημείο βρίσκεται η εκτέλεσή του;
Έχω ακούσει ότι γίνεται ,ίσως να μην το εκφράζω σωστά..
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πώς τρέχω σταδιακά το πρόγραμμα στο MS Visual stidio C++;

Δημοσίευση από dva_dev » 24 Νοέμ 2007 18:34

Κάνεις build το project σου σε debug mode (debug build), μετά μπορείς να βάλεις breakpoints (F9) στις γραμμές που θέλεις σταματήσει η εκτέλεση όταν τρέχεις το πρόγραμμα σου (F5) ή να τρέχεις το πρόγραμμα σου γραμμή γραμμή (F10,F11).

Σε ποιά Version του Visual Studio αναφέρεσαι γιατί τα πλήκτρα (F5,F9,F10,F11) μπορεί να αλλάζουν από έκδοση σε έκδοση.
Στο VS 6, και στο VS2003 είναι αυτά που αναφέρω.

[edit]
Δες επίσης και αυτά για ξεκίνημα αν και αναφέρονται στο VS 6 θα σου δώσουν μια καλή ιδέα.
http://cplus.about.com/od/learningc/ss/vc6compile_4.htm
http://www.cs.iit.edu/~resource/support ... debug.html
[/edit]

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Πώς τρέχω σταδιακά το πρόγραμμα στο MS Visual stidio C++;

Δημοσίευση από xarisss » 24 Νοέμ 2007 22:14

for (int m=0;m<totalNodes;m++)
{
if (nodeMatrix[minNode,m]==0)
continue;
if (d[m]==0)
{
d[m]=minValue+nodeMatrix[minNode][m];
continue;
}

if (((d[minNode]+nodeMatrix[minNode][m])<d[m])&&(nodeMatrix[minNode][m]!=0))
{
d[m]=minValue+nodeMatrix[minNode][m];
}
}

Να τωτήσω και κάτι άλλο. Στον παραπάνω κώδικα, το continue τι ρόλο παίζει; Αν δεν ισχύει το stetement του if μας μας βγάζει έξω και συνεχίζει το for;
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Πώς τρέχω σταδιακά το πρόγραμμα στο MS Visual stidio C++;

Δημοσίευση από xarisss » 24 Νοέμ 2007 22:34

Ουσιαστικά αυτό που θέλω είναι να σταματάνε να εκτελείται ένα από τα if κάθε φορά, αν δεν ισχύει το πρώτο που προσπελάζεται, να μην προχωράει παρακάτω.

ΥΓ: ευχαριστώ για την προηγούμενη απάντηση..
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πώς τρέχω σταδιακά το πρόγραμμα στο MS Visual stidio C++;

Δημοσίευση από dva_dev » 24 Νοέμ 2007 23:36

Με το continue "πηδάει" όλες τις εντολές και συνεχίσει με την επόμενη επανάληψη του for.
Με break αντί για continue βγαίνει εντελώς έξω από το for.
Τι από τα δύο θέλεις να κάνεις;

Π.χ.
for (i=0; i<10; i++) {
printf("*");
continue;
printf("/");
}

Θα τυπώσει 10 αστεράκια (το / δεν θα τυπωθεί ποτέ) και στο τέλος το i θα έχει τιμή 10 (αυξάνεται κανονικά με κάθε loop), ενώ το

for (i=0; i<10; i++) {
printf("*");
break;
printf("/");
}

θα τυπώσει 1 αστεράκι, θα βγεί από το for και το i θα εξακολουθεί να έχει τιμή 0.

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Πώς τρέχω σταδιακά το πρόγραμμα στο MS Visual stidio C++;

Δημοσίευση από xarisss » 27 Νοέμ 2007 22:00

Ευχαριστώ για τη βοήθεια. Πρόσεξα όμως ότι η δική μου έκδοση compiler δεν υποστήριζε έτσι το continue.Ήταν σαν να μην το έβλεπε νομίζω..
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Programmer
Δημοσιεύσεις: 67
Εγγραφή: 22 Σεπ 2007 06:55

Πώς τρέχω σταδιακά το πρόγραμμα στο MS Visual stidio C++;

Δημοσίευση από Programmer » 27 Νοέμ 2007 23:20

xarisss έγραψε:Ευχαριστώ για τη βοήθεια. Πρόσεξα όμως ότι η δική μου έκδοση compiler δεν υποστήριζε έτσι το continue.Ήταν σαν να μην το έβλεπε νομίζω..
αποκλείεται! To continue είναι δεσμευμένη λέξη της C/C++ και σε όλους τους compilers η εντολή άλματος continue συμπεριφέρεται ακριβώς το ίδιο! Είσαι αρχάριος και μπορεί να νομίζεις διάφορα, αλλά μην πιστεύεις και πολύ αυτά που νομίζεις, αν δεν μπορείς να τα τεκμηριώσεις με αποδείξεις.... Το πιθανότερο είναι να έκανες κάποιο λογικό λάθος και ο κώδικας να μην λειτουργούσε όπως νόμιζες...
Τελευταία επεξεργασία από το μέλος Programmer την 28 Νοέμ 2007 02:56, έχει επεξεργασθεί 1 φορά συνολικά.

Programmer
Δημοσιεύσεις: 67
Εγγραφή: 22 Σεπ 2007 06:55

Πώς τρέχω σταδιακά το πρόγραμμα στο MS Visual stidio C++;

Δημοσίευση από Programmer » 27 Νοέμ 2007 23:30

xarisss έγραψε:Ουσιαστικά αυτό που θέλω είναι να σταματάνε να εκτελείται ένα από τα if κάθε φορά, αν δεν ισχύει το πρώτο που προσπελάζεται, να μην προχωράει παρακάτω.

ΥΓ: ευχαριστώ για την προηγούμενη απάντηση..
να χρησιμοποιήσεις τον συνδυασμό if...else που εξασφαλίζει ότι ένα από τα δύο σώματα εντολών θα εκτελεστεί.

px.
if ( συνθήκη )
{
εντολές....
}
else
{
εντολές....
}

Το ένα από τα δύο σύνολα εντολών θα εκτελεστεί ότι και να κάνεις (εκτός από το να βάλεις στο ένα σώμα κανενα goto στο άλλο σώμα, και μας τρελάνεις!)

πιο συγκεκριμένα για να εκτελεστεί μόνο ένα από τα τρια if του παρακάτω κώδικα
for (int m=0;m<totalNodes;m++)
{
if (nodeMatrix[minNode,m]==0)
continue;
if (d[m]==0)
{
d[m]=minValue+nodeMatrix[minNode][m];
continue;
}

if (((d[minNode]+nodeMatrix[minNode][m])<d[m])&&(nodeMatrix[minNode][m]!=0))
{
d[m]=minValue+nodeMatrix[minNode][m];
}
}

μπορέις να τον γράψεις σαν

for (int m=0;m<totalNodes;m++)
{
if (! (nodeMatrix[minNode][m]==0) ) //ή if (nodeMatrix[minNode][m] != 0 )
{
if (d[m]==0)
{
d[m]=minValue+nodeMatrix[minNode][m];

}
else if (((d[minNode]+nodeMatrix[minNode][m])<d[m]) && (nodeMatrix[minNode][m]!=0))
{
d[m]=minValue+nodeMatrix[minNode][m];
}
}//END IF (! (nodeMatrix[minNode][m]==0))
}//END FOR

Εσύ τον έγραψες τον λογικά λάθος κώδικα ή τον βρήκες κάπου?

Άβαταρ μέλους
xarisss
Δημοσιεύσεις: 693
Εγγραφή: 06 Σεπ 2002 18:02
Τοποθεσία: Volos
Επικοινωνία:

Πώς τρέχω σταδιακά το πρόγραμμα στο MS Visual stidio C++;

Δημοσίευση από xarisss » 28 Νοέμ 2007 09:19

Αυτό που βρήκα ήταν κώδικας της C#, οπότε υπέθεσα ότι το continue λειτουργεί εκεί και όχι στη C++. Δεν αποκλείεται να υπάρχει λάθος κάπου αλλού και γι' αυτό να μη λειτουργεί το continue.
PRO-PRO.gr
Πρωτάθλημα Προγνωστικών

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες