Μαζέρας Αχιλλέας Φυσικός Αυτοματιστής M.Sc. Οι εντολές επανάληψης στην Pascal (While) Νοέµβριος 2009
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Θεωρούµε ότι µπορούµε και να αφαιρέσουµε ένα κιβώτιο (b<0) 1. program kivotia ; 2. uses wincrt; 3. var 4. b : integer; 5. begin 6. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 7. readln ( b) ; 8. while b <> 0 do 9. begin 10. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 11. readln ( b ) ; 12. end; 13. writeln ( ); 14. end.
Ερωτήσεις
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Ζητείται να υπολογισθεί το συνολικό βάρος των κιβωτίων. 1. program kivotia1 ; 2. uses wincrt; 3. var 4. b, sum : integer; 5. begin 6. sum := 0; 7. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 8. readln ( b) ; 9. while b <> 0 do 10. begin 11. sum := sum + b; 12. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 13. readln ( b ) ; 14. end; 15. writeln ( Το συνολικό βάρος είναι, sum:4 ); 16. end.
Ερωτήσεις
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Ζητείται να υπολογισθεί το πλήθος των κιβωτίων. 1. program kivotia2 ; 2. uses wincrt; 3. var 4. b, plithos : integer; 5. begin 6. plithos:=0; 7. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 8. readln ( b) ; 9. while b <> 0 do 10. begin 11. plithos:=plithos+1; {inc(plithos)} 12. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 13. readln ( b ) ; 14. end; 15. writeln ( Το πλήθος των κιβωτίων είναι, plithos:3 ); 16. end.
Ερωτήσεις
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Ζητείται να υπολογισθεί το πλήθος των κιβωτίων που έχουν βάρος µικρότερο των 100 Kgr. 1. program kivotia4 ; 2. uses wincrt; 3. var 4. b, plithos : integer; 5. begin 6. plithos:=0; 7. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 8. readln ( b) ; 9. while b <> 0 do 10. begin 11. if b<100 then plithos:=plithos+1; {inc(plithos)} 12. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 13. readln ( b ) ; 14. end; 15. writeln ( ' Το πλήθος των κιβωτίων είναι ', plithos:3 ); 16. end.
Ερωτήσεις
Ζητείται να υπολογισθεί το πλήθος α) των ελαφρών κιβωτίων (κάτω από 100 Kgr -> b< 100 ) β) των κιβωτίων µεσαίου βάρους (µεταξύ 100 και 200Kgr->100<=b<=200) γ) των βαριών κιβωτίων (πάνω από 200 Kgr ->200< b ) 1. program kivotia5 ; 2. uses wincrt; 3. var 4. b, p1, p2, p3 : integer; 5. begin 6. p1:=0; p2:=0; p3:=0; 7. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 8. readln ( b) ; 9. while b <> 0 do 10. begin 11. if b<100 then inc(p1) { p1:=p1+1} 12. else if b<=200 then inc(p2) else inc(p3); 13. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 12. readln ( b ) ; 13. end; 14. writeln ('. ', p1:3, p2:3, p3:3 ); 15. end.
Ερωτήσεις
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) 1ος τρόπος Εκµεταλλευόµαστε ότι µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) τα βάρη είναι πάντα θετικά Ζητείται να βρεθεί το µεγαλύτερο βάρος. 1. program kivotia7 ; 2. uses wincrt; 3. var 4. b, max : integer; 5. begin 6. max:= 0; 7. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 8. readln ( b) ; 9. while b <> 0 do 10. begin 11. if max<b then max:=b; 12. else 13. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 14. readln ( b ) ; 15. end; 16. writeln ( Το µέγιστο βάρος είναι:, max:4 ); 17. end.
Ερωτήσεις Τι θα γίνει αν εκτελεσθεί πρώτα η εντολή 13, 14 και µετά η εντολή 11,12;
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) 2ος τρόπος µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Ζητείται να βρεθεί το µεγαλύτερο βάρος. 1. program kivotia8 ; 2. uses wincrt; 3. var 4. b, max : integer; 5. begin 6. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 7. readln ( b) ; 8. max:=b; 9. while b <> 0 do 10. begin 11. if max<b then max:=b; 12. else 13. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 14. readln ( b ) ; 15. end; 16. writeln ( Το µέγιστο βάρος είναι:, max:4 ); 17. end.
Ερωτήσεις
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) 2ος τρόπος µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Ζητείται να βρεθεί ηθέση (σειρά) του κιβωτίου µε το µεγαλύτερο βάρος. 1. program kivotia9 ; 2. uses wincrt; 3. var 4. b, max, thesi, plithos : integer; 5. begin 6. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 7. readln ( b) ; 8. max:=b; thesi:=1; plithos:=1; thesi:=plithos; 9. while b <> 0 do 10. begin 11. if max<b then 12. begin 13. max:=b; 14. thesi:=?? plithos; 15. end; 16. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 17. readln ( b ) ; 18. plithos:=plithos+1; {inc(plithos)} 19. end; 20. writeln ( Ηθέση του µέγιστου βάρους είναι:, thesi:4 ); 21. end.
Ερωτήσεις
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Ζητείται να ενηµερωθεί µια ένδειξη αν υπάρχει κιβώτιο µε βάρος ίσο µε το δοσµένο αριθµό. 1. program kivotia10 ; 2. uses wincrt; 3. var 4. b, num : integer; 5. flag : boolean; 6. begin 7. write ( ώσε έναν αριθµό ); readln ( num ) ; 8. flag:=false; 9. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 10. readln ( b) ; 11. while b <> 0 do 12. begin 13. if b = num then flag := true; 14. else 15. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 16. readln ( b ) ; 17. end; 18. if flag then 19. else 20. end. writeln ( Το βάρος βρέθηκε ) writeln ( Τοβάρος ΕΝ βρέθηκε );
Ερωτήσεις
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Υπάρχει ένα συγκεκριµένο πάνω όριο π.χ. 200 Κιλά Ζητείται να ενηµερωθεί µια ένδειξη αν υπάρχει κιβώτιο µε βάρος µεγαλύτερο από το συγκεκριµένο όριο 1. program kivotia11 ; 2. uses wincrt; 3. const 4. a = 200 5. var, num 6. b : integer; 7. flag : boolean; 8. begin write ( ώσε έναν αριθµό ); readln ( num ) ; 1. flag:=false; 7. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 8. readln ( b) ; 9. while b <> 0 do 10. begin 11. if b b = > num a then flag := true; 12. else 13. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 14. readln ( b ) ; 15. end; 16. if flag then 17. else 18. end. writeln ( Το βάρος βρέθηκε ) writeln ( Τοβάρος ΕΝ βρέθηκε );
Ερωτήσεις
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) 1ος τρόπος µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Θέλουµε να κάνουµε Ζητείται να υπολογισθεί το συνολικό βάρος των κιβωτίων αν η φόρτωση χρήση σηµαίας σταµατήσει είτε µε το άδειο κιβώτιο είτε αν βρεθεί κιβώτιο µεγαλύτερο από ένα συγκεκριµένο όριο π.χ. 200Kgr (Το 200 δεν προστίθεται) 1. program kivotia12 ; 2. uses wincrt; 3. var 4. b, sum : integer; 5. flag : boolean; 6. begin 7. sum:=0; flag:=false; 8. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 9. readln ( b) ; 10. while ((b b <> 0) 0 and (not flag)) do 11. begin 12. if b < 200 then sum := sum + b; 13. else flag := true; 14. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 15. readln ( b ) ; 16. end; 17. writeln ( Το συνολικό βάρος που φορτώθηκε είναι, sum ); 18. end.
Ερωτήσεις
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) 2ος τρόπος Μια πιο σωστή συνθήκη µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Ζητείται να υπολογισθεί το συνολικό βάρος των κιβωτίων αν η φόρτωση σταµατήσει είτε µε το άδειο κιβώτιο είτε αν βρεθεί κιβώτιο µεγαλύτερο από ένα συγκεκριµένο όριο π.χ. 200Kgr (Το 200 δεν προστίθεται) 1. program kivotia13 ; 2. uses wincrt; 3. var, sum 4. b : integer; 5. begin 7. sum:=0; 8. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 9. readln ( b) ; 10. while (b > 0) and (b<200) do 11. begin sum := sum + b; 12. 13. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 14. readln ( b ) ; 15. end; 16. writeln ( Το συνολικό βάρος που φορτώθηκε είναι, sum ); 17. end.
Ερωτήσεις
ίνονται διαδοχικά από το πληκτρολόγιο τα βάρη µερικών κιβωτίων (απροσδιόριστο το πλήθος τους) µε το τελευταίο κιβώτιο άδειο (βάρος µηδέν) Ζητείται να µετρηθεί το πλήθος των κιβωτίων που θα δοθούν έτσι ώστε το συνολικό βάρος τους να µην ξεπεράσει ένα µέγιστο όριο π.χ. 200Kgr. Θεωρούµε ότι κανένα κιβώτιο δεν έχει βάρος µεγαλύτερο του ορίου 1. program kivotia14 ; 2. uses wincrt; 3. var 4. b, sum, counter : integer; 5. begin 7. sum := 0 ; counter := 0 ; 8. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 9. readln ( b) ; 10. while (( b <> 0 ) and ( sum < 200 )) do 11. begin 12. sum:=sum+b; 13. counter:=counter+1; 14. write( ώσε βάρος κιβωτίου. Για να σταµατήσεις δώσε 0 ); 15. readln ( b ) ; 16. end; 17. writeln ( Φορτώθηκαν συνολικά, counter, κιβώτια ); 18. end.