Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 3

Απαντήσεις στις ερωτήσεις 04

Απαντήσεις στις ερωτήσεις 04

LOOPS & DECISIONS


04.01 Τι θα συμβεί, εάν σε έναν βρόχο while η συνθήκη ελέγχου είναι
ψευδής (false) από την αρχή ;

Εάν η συνθήκη ελέγχου σε έναν βρόχο while είναι αρχικά ψευδής,


τότε ο βρόχος παρακάμπτεται, που σημαίνει ότι οι προτάσεις μέσα
στον βρόχο δεν εκτελούνται καθόλου.

04.02 Πότε θα πρέπει η μεταβλητή ελέγχου σε έναν βρόχο for να


δηλώνεται πριν την έναρξη του βρόχου (αντί να δηλωθεί μέσα στην
πρόταση δημιουργίας του);

Η μεταβλητή ελέγχου σε έναν βρόχο for, θα πρέπει να δηλώνεται


πριν την έναρξη του βρόχου (αντί να δηλωθεί μέσα στην πρόταση
δημιουργίας του), όταν θέλουμε αυτή η μεταβλητή να
χρησιμοποιηθεί και έξω από το block του κώδικα που ορίζει ο
βρόχος επανάληψης for.

04.03 Πώς η πρόταση break μας παρέχει καλύτερο έλεγχο στις


επαναλήψεις ενός βρόχου ;

Η πρόταση break μας παρέχει καλύτερο έλεγχο στις επαναλήψεις


ενός βρόχου δίνοντας μας την δυνατότητα να τον τερματίσουμε, σε
οποιοδήποτε στάδιο εκτέλεσης του κώδικά του, και όχι μόνο στην
αρχή (βρόχος while), ή στο τέλος του (βρόχος do-while), όπως
θα γινόταν σε κανονικές συνθήκες.

04.04 Ποιος είναι ο ελάχιστος αριθμός επαναλήψεων


Που μπορεί να κάνει ένας βρόχος while
Που μπορεί να κάνει ένας βρόχος do-while;

Ο ελάχιστος αριθμός επαναλήψεων


Που μπορεί να κάνει ένας βρόχος while είναι καμία (0)
Που μπορεί να κάνει ένας βρόχος do-while είναι μία (1)

04.05 Εντοπίστε το λάθος στο παρακάτω βρόχο επανάληψης


n=50;
while(n <= 100)
sum += n * n;

Ο παραπάνω βρόχος επανάληψης είναι ατέρμονας, καθώς η τιμή


της μεταβλητής n δεν αλλάζει πουθενά.

04.06 Αν s είναι μια σύνθετη πρόταση, και e1, e2, και e3 είναι
εκφράσεις, τότε ποια η διαφορά στο κομμάτι κώδικα:
Απαντήσεις στις ερωτήσεις 04
for(e1 ; e2 ; e3)
s;

με αυτό το κομμάτι κώδικα :

e1;
while(e2)
{
s;
e3;
}

Δεν θα υπάρξει καμία διαφορά στην έξοδο αυτών των 2


διαφορετικών κομματιών κώδικα, εκτός εάν η σύνθετη πρόταση s
είναι μια πρόταση break ή περιέχει στον κώδικα της την πρόταση
break ή την πρόταση continue. Για παράδειγμα, αυτός ο βρόχος
for θα κάνει 4 επαναλήψεις και έπειτα θα τερματίσει κανονικά :

for(i = 0; i < 4; i++)


if(i == 2)
continue;

Ενώ αυτός ο βρόχος while θα είναι ατέρμονας :

i = 0;
while(i < 4)
{
if(i == 2)
continue;
i++;
}

04.07 Εντοπίστε το λάθος στο παρακάτω πρόγραμμα:

int main(void)
{
const double PI;
int n;
PI = 3.14159265358979;
n = 22;
}

Η μεταβλητή PI δεν έχει αρχικοποιηθεί στην δήλωση της. Κάθε μεταβλητή


τύπου const (σταθερά) πρέπει να αρχικοποιείται εκεί όπου δηλώνεται. Η
εκχώρηση PI = 3.14159265358979; δεν είναι δυνατή, μια που η
μεταβλητή PI διακηρύχθηκε const. Ο ορθός κώδικας θα ήταν:
int main(void)
{
const double PI= 3.14159265358979;
int n;
Απαντήσεις στις ερωτήσεις 04
n = 22;
}

04.08 Τι ονομάζουμε “ατέρμονα βρόχο” και σε τι χρησιμεύει;

“Ατέρμονα βρόχο” ονομάζουμε το βρόχο ο οποίος δεν τερματίζει με


την χρήση συνθήκης ελέγχου. Οπότε για τον τερματισμό του
χρησιμοποιούνται οι προτάσεις break ή goto, ή ο αιφνίδιος
τερματισμός του προγράμματος που τον τρέχει (π. χ με την χρήση
του συνδυασμού <Ctrl+C>). Οι “ατέρμονες βρόχοι” είναι χρήσιμοι,
όταν επιθυμούμε να σταματούν με την χρήση των εντολών break ή
goto.

04.09 Πώς μπορεί ένας βρόχος να έχει τέτοια δομή, ώστε να τερματίζει με
μία πρόταση μέσα στο σώμα του βρόχου;

Ένας βρόχος μπορεί να έχει τέτοια δομή, ώστε να τερματίζει με μία


δήλωση στη μέση του βρόχου χρησιμοποιώντας τις προτάσεις
break ή goto.

04.10 Γιατί πρέπει να αποφεύγονται οι δοκιμές (tests) ισότητας με


μεταβλητές του τύπου κινητής υποδιαστολής (float; ή double);

Οι μεταβλητές κινητής υποδιαστολής πάσχουν από το πρόβλημα


του λάθους στρογγυλεύματος. Οπότε μετά από μερικές πράξεις με
αριθμούς αποθηκευμένους σε μεταβλητές κινητής υποδιαστολής, το
αποτέλεσμα μιας σύγκρισης με αυτούς (y == x) μπορεί να μην
είναι το αναμενόμενο.

You might also like