18
1) Εισαγωγή στο δυαδικό σύστημα αρίθμησης. Όπως φαίνεται και από την λέξη, ο “Υπολογιστής” δεν είναι τίποτα άλλο από μια μηχανή που εκτελεί υπολογισμούς, δηλαδή κάνει πράξεις. Αυτές, όπως θα έχετε ήδη φανταστεί, δεν είναι τίποτε άλλο από μαθηματικές πράξεις, κοινότυπες όπως η πρόσθεση, η αφαίρεση και ο πολλαπλασιασμός, αλλά και πράξεις όχι τόσο συνηθισμένες που θα δούμε αργότερα. Οι άνθρωποι για να κάνουν τις δικές τους μαθηματικές πράξεις, συνήθως χρησιμοποιούν το περίφημο “θεσιακό, δεκαδικό” σύστημα αρίθμησης. Και λέμε δεκαδικό γιατί όλα εκφράζονται με πολλαπλάσια ή υποπολλαπλάσια, δηλαδή δυνάμεις, του αριθμού 10. Και όχι για κανένα άλλο λόγο, απλά επειδή δέκα είναι και τα δάχτυλα των χεριών μας. Το 10 ονομάζεται βάση της δύναμης. Με τη λέξη “θεσιακό” εννοούμε ότι ο εκθέτης κάθε δύναμης καθορίζεται από τη θέση που έχει ο κάθε συντελεστής βάρους μέσα στον αριθμό. Δηλαδή για τον αριθμό 346 έχουμε: 2, 1, 0 Θέση Συντελεστές Βάρους 6 ° 10 0 =6 ° 1=6 4 ° 10 1 =4 ° 10=40 3 ° 10 2 =3 ° 100=300 Οι πιθανοί συντελεστές (βάρους), επειδή “μετράμε” μέχρι το 10, είναι οι αριθμοί 0,1,2,3,4,5,67,8,9. Στην προκειμένη περίπτωση έχουμε το 6 για τις μονάδες, το 4 για τις δεκάδες και το 3 για τις εκατοντάδες. Ακολουθώντας 3 απλούς κανόνες, το σύνολο των ακέραιων αριθμών μπορεί να αναπαρασταθεί με το δεκαδικό σύστημα αρίθμησης: α) χρησιμοποιούμε 10 αριθμούς για τους συντελεστές αρχίζοντας από το μηδέν (0,1,2,...,8,9) β) χρησιμοποιούμε σαν βάση κάθε δύναμης το 10 γ) η θέση κάθε συντελεστή καθορίζει τον εκθέτη της δύναμης (του 10) Αντίθετα με τους ανθρώπους, οι υπολογιστές χρησιμοποιούν ένα λίγο διαφορετικό σύστημα αρίθμησης, το “δυαδικό” (binary). Η βάση σε αυτήν την περίπτωση είναι το 2. Οι τρείς κανόνες που αναφέραμε, φυσικά δεν αλλάζουν πέρα από το αναμενόμενο, όπου 10 τώρα βάζουμε το 2. Ας προσπαθήσουμε να τους εξάγουμε μαζί: α) χρησιμοποιούμε 2 αριθμούς για συντελεστές αρχίζοντας από το μηδέν, οι οποίοι φυσικά είναι το 0 και το 1. Αυτό είναι και το λεγόμενο bit που δυνατές τιμές έχει μόνο το μηδέν και το ένα 1 και αποτελεί την μικρότερη ποσότητα πληροφορίας για κάτι. β) χρησιμοποιούμε σαν βάση κάθε δύναμης το 2 γ) η θέση κάθε συντελεστή καθορίζει τον εκθέτη της δύναμης (του 2) Ας κάνουμε ένα παράδειγμα ενός δυαδικού αριθμού, του 101011010. 1 Το ένα συχνά συμβολίζεται και σαν true,yes ή on ενώ το μηδέν αντίστοιχα σαν false,no ή off. 3 4 6

Σχετικά με δυαδικό σύστημα

Embed Size (px)

Citation preview

Page 1: Σχετικά με δυαδικό σύστημα

1) Εισαγωγή στο δυαδικό σύστημα αρίθμησης.

Όπως φαίνεται και από την λέξη, ο “Υπολογιστής” δεν είναι τίποτα άλλο από μια μηχανήπου εκτελεί υπολογισμούς, δηλαδή κάνει πράξεις. Αυτές, όπως θα έχετε ήδη φανταστεί, δενείναι τίποτε άλλο από μαθηματικές πράξεις, κοινότυπες όπως η πρόσθεση, η αφαίρεση και οπολλαπλασιασμός, αλλά και πράξεις όχι τόσο συνηθισμένες που θα δούμε αργότερα.

Οι άνθρωποι για να κάνουν τις δικές τους μαθηματικές πράξεις, συνήθως χρησιμοποιούντο περίφημο “θεσιακό, δεκαδικό” σύστημα αρίθμησης. Και λέμε δεκαδικό γιατί όλα εκφράζονταιμε πολλαπλάσια ή υποπολλαπλάσια, δηλαδή δυνάμεις, του αριθμού 10. Και όχι για κανέναάλλο λόγο, απλά επειδή δέκα είναι και τα δάχτυλα των χεριών μας. Το 10 ονομάζεται βάση τηςδύναμης. Με τη λέξη “θεσιακό” εννοούμε ότι ο εκθέτης κάθε δύναμης καθορίζεται από τη θέσηπου έχει ο κάθε συντελεστής βάρους μέσα στον αριθμό. Δηλαδή για τον αριθμό 346 έχουμε: 2, 1, 0 ΘέσηΣυντελεστές Βάρους

6°100=6°1=6

4°101=4°10=40

3°102=3°100=300

Οι πιθανοί συντελεστές (βάρους), επειδή “μετράμε” μέχρι το 10, είναι οι αριθμοί0,1,2,3,4,5,67,8,9. Στην προκειμένη περίπτωση έχουμε το 6 για τις μονάδες, το 4 για τιςδεκάδες και το 3 για τις εκατοντάδες. Ακολουθώντας 3 απλούς κανόνες, το σύνολο τωνακέραιων αριθμών μπορεί να αναπαρασταθεί με το δεκαδικό σύστημα αρίθμησης:

α) χρησιμοποιούμε 10 αριθμούς για τους συντελεστές αρχίζοντας από το μηδέν (0,1,2,...,8,9)β) χρησιμοποιούμε σαν βάση κάθε δύναμης το 10γ) η θέση κάθε συντελεστή καθορίζει τον εκθέτη της δύναμης (του 10)

Αντίθετα με τους ανθρώπους, οι υπολογιστές χρησιμοποιούν ένα λίγο διαφορετικόσύστημα αρίθμησης, το “δυαδικό” (binary). Η βάση σε αυτήν την περίπτωση είναι το 2. Οι τρείςκανόνες που αναφέραμε, φυσικά δεν αλλάζουν πέρα από το αναμενόμενο, όπου 10 τώραβάζουμε το 2. Ας προσπαθήσουμε να τους εξάγουμε μαζί:

α) χρησιμοποιούμε 2 αριθμούς για συντελεστές αρχίζοντας από το μηδέν, οι οποίοι φυσικά είναιτο 0 και το 1. Αυτό είναι και το λεγόμενο bit που δυνατές τιμές έχει μόνο το μηδέν και το ένα1 καιαποτελεί την μικρότερη ποσότητα πληροφορίας για κάτι.β) χρησιμοποιούμε σαν βάση κάθε δύναμης το 2γ) η θέση κάθε συντελεστή καθορίζει τον εκθέτη της δύναμης (του 2)

Ας κάνουμε ένα παράδειγμα ενός δυαδικού αριθμού, του 101011010.

1 Το ένα συχνά συμβολίζεται και σαν true,yes ή on ενώ το μηδέν αντίστοιχα σαν false,no ή off.

3 4 6

Page 2: Σχετικά με δυαδικό σύστημα

0°20=0°1=01°21=1°2=20°22=0°4=01°23=1°8=81°24=1°16=160°25=0°32=01°26=1°64=640°27=0°128=01°28=1°256=256

Εάν τα προσθέσετε όλα μαζί θα δείτε ότι το αποτέλεσμα είναι 346. Ουσιαστικά, στον δυαδικό101011010, το πρώτο (από δεξιά) στοιχείο αναφέρεται στις μονάδες, το δεύτερο στις δυάδες, τοτρίτο στις τετράδες κτλ. Στο δυαδικό σύστημα η κάθε τάξη διπλασιάζεται ενώ αντίστοιχα στοδεκαδικό δεκαπλασιάζεται. Αν υπήρχε επταδικό σύστημα σίγουρα θα επταπλασιαζόταν.

Σε έναν υπολογιστή όλα τα δεδομένα συμβολίζονται με σειρές από μηδενικά και άσουςδηλαδή από συνεχόμενα bit. Το bit μπορείτε να το φανταστείτε σαν τον διακόπτη ενόςηλεκτρικού κυκλώματος. Ο διακόπτης μπορεί να είναι κλειστός (τιμή 1) και το ρεύμα να διαρέειτο κύκλωμα, είτε να είναι ανοιχτός (τιμή 0) και να μην επιτρέπει στο ρεύμα να περάσει. Κάπωςέτσι καταλαβαίνει και ο υπολογιστής το 0 και το 1. Οι δύο αυτές τιμές μπορεί να είναι τιμέςτάσης, τιμές μαγνητικού πεδίου ή κάποιου άλλου σήματος.

Πέρα από την ευκολία του σχεδιασμού τέτοιου μηχανικού μέρους, μειώνονται οι πιθανέςπαρεμβολές (θόρυβος) και ευξάνεται δραματικά η ταχύτητα λειτουργίας. Το κόστος κατασκευήςεπίσης είναι πιο χαμηλό σε σχέση με έναν υπολογιστή που θα δούλευε με βάση το 10.

2) Το bit και το byte.

Συχνά ακούτε, όσοι τουλάχιστον έχετε κάποια εμπειρία με τους υπολογιστές, γιαδιάφορες μονάδες μέτρησης. 'Ένα σκληρό δίσκο με 200 GB (giga byte) χωρητικότητα, μιαμνήμη με 512 MB (mega byte) χωρητικότητα ή ένα modem που κατεβάζει με 56 kbps (kilo bitper second) ταχύτητα. Ας ξεκαθαρίσουμε τι σημαίνουν όλα αυτά.

Είπαμε ότι ένα bit δεν είναι είναι τίποτα άλλο από ένα μόνο 0 ή 1 και αυτό συνήθωςσυμβολίζεται με το αγγλικό γράμμα b.

1kb=103bit1mb=103kb=106bit1gb=103mb=106kb=109bit1 tb=103 gb=106mb=109kb=1012bit

1 0 1 0 1 1 0 1 0

Page 3: Σχετικά με δυαδικό σύστημα

Για να περάσουμε από το bit στο byte, αρκεί να πούμε ότι 1 byte = 8 bit. Το byte συμβολίζεταιμε το αγγλικό κεφαλαίο B. Αντίστοιχα συμβολίζουμε kB (kilo byte), mB, gB κτλ. Αντίθετα με τοbit στο byte όλα εκφράζονται σύμφωνα με το 2 και με τις δυνάμεις του. 'Έτσι εδώ το το k-ilo δενείναι το 1000=103 αλλά το 1024=210 . Ανάλογα ορίζονται και το m-ega, το g-iga, το t-eraκτλ.:Και εδώ ισχύει ο κανόνας ότι 1kB=210B=1024bytes .

1kB=210bytes1mB=210kB=220bytes1 gB=210mB=220kB=230bytes1 tB=210 gB=220mB=230kB=240bytes

'Άσκηση: Πόση ώρα χρειάζεται για να κατεβάσουμε με ένα modem ταχύτητας56kbps, ένα mp3 μεγέθους 4,93 ΜΒ;

Λύση:Για να το λύσουμε θα πρέπει να έχουμε κοινές μονάδες μέτρησης. Μετατρέπουμε λοιπόν τα bitσε byte ή το αντίστροφο.

4,93MB=4,93°220Bytes=8°4,93°220bit=39,44°220

103 Kb

39,44°220kb

103°56kb /sec≈738,5 sec≈12min

'Άρα θα χρειαστεί το λιγότερο 12 λεπτά. Αν σας φαίνεται πολύ μπορείτε να δοκιμάσετε και μετην DSL που από τα 56Kbps μας πάει στα 512Kbps.

3) Εισαγωγή στο δεκαεξαδικό σύστημα αρίθμησης.

Για το δεκαεξαδικό (hexadecimal ή hex) σύστημα δεν θα πούμε και πολλά. Ίσως το μόνοπου έχει ενδιαφέρον να σημειώσουμε είναι ότι χρησιμοποιούμε 16 αριθμούς (τι άλλο θαμπορούσε να είναι;). Επειδή μόνο 10 δάχτυλα έχουμε και επειδή το να μετράς και με τα δάχτυλατων ποδιών δεν είναι και τόσο βολικό αν φοράς μπότες, πρέπει να βρούμε έναντρόπο να συμβολίσουμε και να γράφουμε τους πρώτους 16 αριθμούς (τους συντελεστές).

Για τους πρώτους 10 χρησιμοποιούμε τους 0 εώς 9 του δεκαδικού συστήματος. Οιεπόμενοι 6 είναι με τη σειρά τα αγγλικά γράμματα A = 10, B = 11, C = 12, D = 13, E = 14, F =15. Επίσης μη ξεχνάτε ότι η βάση μας τώρα θα γίνει το 16.

Page 4: Σχετικά με δυαδικό σύστημα

A°160=10°160=10°1=105°161=5°16=801°162=1°256=2560°163=0°4096=0

Το αποτέλεσμα εάν προσθέσουμε όλα τα μέλη είναι 346 (στο δεκαδικό). Το πρώτο μέρος (απόδεξιά) υπολογίζει τις μονάδες, το δεύτερο τις δεκαεξάδες, το τρίτο τις 256άδες το τέταρτο τις4096άδες κτλ. Εάν κάνετε μετατροπές σε μεγάλους αριθμούς θα παρατηρήσετε ότι οιδεκαεξαδικοί χρησιμοποιούν λιγότερα ψηφία από ότι οι δεκαδικοί για να εκφράσουν έναν αριθμόπχ. 1.000.00010=F424016 .

Δεκαδικό Δεκαεξαδικό Δυαδικό

0 0 0000

1 1 0001

2 2 0010

3 3 0011

4 4 0100

5 5 0101

6 6 0110

7 7 0111

8 8 1000

9 9 1001

10 Α 1010

11 Β 1011

12 C 1100

13 D 1101

14 E 1110

15 F 1111

Οι δεκαεξαδικοί αριθμοί για να ξεχωρίζουν από τους δεκαδικούς συχνά συμβολίζονται και με τοπρόθεμα 0x όπως το 0x015A ή 0x15A

Ερώτηση: Πόσο κάνει το δεκαεξαδικό 0x346 στο δεκαδικό σύστημα;

0 1 5 Α

Page 5: Σχετικά με δυαδικό σύστημα

4) Μετατροπή δεκαδικών σε άλλα αριθμητικά συστήματα.

Μέχρι τώρα είδαμε πως να μετατρέπουμε δυαδικούς αριθμούς σε δεκαδικούς καιδεκαεξαδικούς σε δεκαδικούς. Ας μελετήσουμε πως μπορούμε να μετατρέψουμε δεκαδικούς σεδυαδικούς. 'Όπως θα παρατηρήσατε στον παραπάνω πίνακα, 4 bit αρκούν για να περιγράψουνόλους τους ακέραιους από το 0 εως και το 15 που είναι στο σύνολο 16 αριθμοί2. Αυτό συμβαίνειγιατί 24=16 . Όπως είναι αναμενόμενο 8 bit θα περιγράφουν όλους τους αριθμούς από το 0εώς και το 255, 16 bit εώς και το 65535 και ούτο καθ' εξής. Ίσως είναι χρησιμό να έχουμε ένανπίνακα τουλάχιστον στην αρχή με μερικές από τις δυνάμεις του 2.

20 21 22 23 24 25 26 27 28 29 210

1 2 4 8 16 32 64 128 256 512 1024

Έστω ότι θέλουμε να μετατρέψουμε το δεκαδικό 346 στην δυαδική του αναπαράσταση:

1ος τρόπος (πρακτικός): Βρίσκουμε την μεγαλύτερη δύναμη του 2 που “χωράει” στο 346. Αυτόείναι το 256 που είναι η δύναμη του 8. O εκθέτης 8 ανήκει στη θέση 9 άρα αρκούν 9 bit.Η 9η αυτή θέση θα έχει και την τιμή 1. Ο αριθμός μας, μέχρι τώρα, είναι κάπως έτσι:1x x x x x x x xΑφαιρούμε το 256 από το 346 και βρίσκουμε ότι 346 – 256 = 90. Συνεχίζουμε όπως και πριναλλά με το 90. Το 128 είναι μεγαλύτερο από το 90 άρα το επόμενο bit (το 8ο) δενχρησιμοποιείται οπότε θα είναι μηδέν. Το 64 χωράει στο 90 άρα το 7ο bit θα είναι 1.1 0 1 x x x x x x90 – 64 = 26. To 32 δεν μας κάνει αλλά το 16 είναι μια χαρά. Βάζουμε μηδέν για το 32 (6ο bit)και 1 για το 16 (5ο bit).1 0 1 0 1 x x x xΜε τον ίδιο βαρετό τρόπο συνεχίζουμε και βλέπουμε ότι 26 – 16 = 10 άρα το το 8 χωράει οπότεβάζουμε 1 στo 4o bit, 10 – 8 = 2, το 4 δεν μας κάνει (μηδέν στο 3ο bit) αλλά το 2 μας κάνειοπότε 1 στο 2ο bit και τέλος 2 – 2 = 0 οπότε 0 στο 1ο bit. Ο δυαδικός τελικά είναι ο101011010.

Ουσιαστικά αυτό που κάναμε είναι να αναλύσουμε το 346 σε άθροισμα δυνάμεων του 2,δηλαδή:

346=1°280°271°260°251°241°230°221°210°20

'Όπως θα παρατηρήσατε οι συντελεστές των δυνάμεων είναι και ο δυαδικός μας αριθμός.

2ος τρόπος (Ευκλείδειος αλγόριθμος3): Τώρα θα κάνουμε διαδοχικές διαιρέσεις με το 2 καικρατάμε το υπόλοιπο. Θα σταματήσουμε όταν το πηλίκο γίνει μηδέν. Αν το το υπόλοιπο είναιμηδέν τότε μηδέν θα είναι και ο συντελεστής. Αν το υπόλοιπο είναι 1, αυτός θα είναι και οσυντελεστής. Η διαφορά είναι ότι τώρα ο αριθμός γράφεται από δεξιά προς τα αριστερά και όχιτο ανάποδο όπως κάναμε πριν. 'Έχουμε λοιπόν:

2 Αν φύγουμε λίγο από την αριθμολογία, μπορούμε να πούμε ότι n bits περιγράφουν 2n διαφορετικές καταστάσεις. 3 Υπολογισμός του μέγιστου κοινού διαιρέτη μ.κ.δ(346,2)

Page 6: Σχετικά με δυαδικό σύστημα

346/2 = 173 με υπόλοιπο 0 (1ο bit) x x x x x x x x 0 173/2 = 86 με υπόλοιπο 1 (2ο bit) x x x x x x x 10 86/2 = 43 με υπόλοιπο 0 (3ο bit) x x x x x x 01043/2 = 21 με υπόλοιπο 1 (4ο bit) x x x x x 1010 21/2 = 10 με υπόλοιπο 1 (5ο bit) x x x x 1101010/2 = 5 με υπόλοιπο 0 (6ο bit) x x x 0110105/2 = 2 με υπόλοιπο 1 (7ο bit) x x 10110102/2 = 1 με υπόλοιπο 0 (8ο bit) x 010110101/2 = 0 με υπόλοιπο 1 (9ο bit) 101011010

Όπως ήταν αναμενόμενο ο δυαδικός είναι ο 101011010.

Για να μετατρέψουμε δεκαδικούς σε δεκαεξαδικούς μπορούμε να χρησιμοποιήσουμε τον 2οτρόπο και να κάνουμε διαδοχικές διαιρέσεις με το 16. Αυτή τη φορά τα υπόλοιπα θα είναιαριθμοί από το 0 εώς και το 15. Αυτοί θα είναι και οι συντελεστές του δεκαεξαδικού μαςαριθμού.

346/16 = 21 με υπόλοιπο 10=A21/16 = 1 με υπόλοιπο 51/16 = 0 με υπόλοιπο 1

Το 346 σε δεκαεξαδική μορφή γράφεται σαν 0x15A.

Ερώτηση: Τι κοινό έχουν όλοι οι περιττοί αριθμοί μεταξύ τους, στο δυαδικόσύστημα;

Ερώτηση: Πως θα μετατρέψουμε γρήγορα έναν δεκαεξαδικό σε δυαδικό;

Άσκηση: Μπορείτε να μετατρέψετε όποιον αριθμό θέλετε από δεκαδικό σεδυαδικό και δεκαεξαδικό και αντίστροφα.

5) Αριθμητικές πράξεις στο δυαδικό σύστημα.

Ας δούμε πως γίνονται οι συνήθεις αριθμητικές πράξεις στο δυαδικό σύστημα. Οι κανόνες γιατην πρόσθεση, την αφαίρεση και τον πολλαπλασιασμό συνοψίζονται στον παρακάτω πίνακα.

Πράξη Αποτέλεσμα Κρατούμενο

Πρόσθεση 0 + 0

0 + 1

1 + 0

1 + 1

0

1

1

0

0

0

0

1

Page 7: Σχετικά με δυαδικό σύστημα

Πράξη Αποτέλεσμα Κρατούμενο

Αφαίρεση 0 – 0

0 – 1

1 – 0

1 – 1

0

1

1

0

0

1

0

0

Πολλαπλασιασμός 0 x 0

0 x 1

1 x 0

1 x 1

0

0

0

1

0

0

0

0

Όπως θα παρατηρήσατε για δύο πράξεις (1+1 και 0-1) έχουμε κρατούμενο. Το χρησιμοποιούμεόπως ακριβώς και στους δεκαδικούς, προσθέτοντάς το δηλαδή στο επόμενο στοιχείο τουδεύτερο προσθετέου ή του αφαιρετέου αντίστοιχα για την πρόσθεση και την αφαίρεση. Μερικάπαραδείγματα σίγουρα θα διαφωτίσουν τη κατάσταση:

Πρόσθεση Αφαίρεση Πολλαπλασιασμός

1 1 1 0 1 1 1 0 1 1 1 0 + 0 1 1 0 1 - 1 1 0 1 * 1 1 0 1____________________ ________________________ ________________________αποτέλεσμα: 1 1 0 1 1 αποτέλεσμα: 0 0 0 1 1 1 1 0 κρατούμενο: 1 1 κρατούμενο: 1 0 0 0 0 1 1 1 0 + 0 1 1 1 0 ____________________________

αποτέλεσμα: 1 0 1 1 0 1 1 0 κρατούμενο: 1 1 1 1

6) Αρχιτεκτονική Σύγχρονων επεξεργαστών

Οι περισσότεροι σύγχρονοι επεξεργαστές, όπως θα έχετε ακούσει είναι 32 bit. Τιεννοούμε όταν λέμε 32 bit; Αυτά τα 32 bit δηλώνουν το μέγεθος των καταχωρητών (registers)που διαθέτει ο επεξεργαστής. Οι καταχωρητές είναι μικρές μνήμες στις οποίες αποθηκεύουμεδεδομένα προσωρινά τα οποία χρησιμοποιεί ο επεξεργαστής. Αυτά τα δεδομένα μπορεί να είναιείτε αριθμοί είτε κείμενο είτε άλλα στοιχεία όπως διευθύνσεις μνήμης. Οπότε το μέγεθος τωνκαταχωρητών περιορίζει τις μέγιστες τιμές σε αριθμούς, διευθύνσεις μνήμης. Για νακαταλάβουμε τι σημαίνει αυτός ο περιορισμός πρέπει να δούμε πως αναπαριστούνται οι αριθμοίστον επεξεργαστή.

Η πιο απλή μορφή αριθμών είναι οι ακέραιοι (int). Έχοντας 32 μόνο bit είναι λογικό,σύμφωνα και με τα παραπάνω, ότι ο μεγαλύτερος θετικός ακέραιος θα είναι ο 2^32-1=4.294.967.295. Στην περίπτωση όμως που θέλουμε να έχουμε και αρνητικούς ακέραιους

Page 8: Σχετικά με δυαδικό σύστημα

αυτό περιορίζεται στο μισό δηλαδή: ο μεγαλύτερος θετικός θα είναι ο 2^31-1=2147483647 και ομικρότερος αρνητικός θα είναι ο -2^31=-2147483648. Αυτοί είναι ο προσημασμένοι ακέραιοι(signed int)

Αν τώρα θέλουμε να κάνουμε πράξεις με μεγαλύτερους ή μικρότερους ακεραίουςυπάρχουν οι long και οι short int που έχουν αντίστοιχα 64 και 16 bit. Στην περίπτωση που τα 64bit δεν είναι αρκετά ή πρέπει να κάνουμε πράξεις με μη ακέραιους αριθμούς υπάρχουν οιλεγόμενοι float. Σε αυτούς η αναπαράσταση του αριθμού είναι όπως η γνωστή scientificnotation (πχ. 1.874Ε-9 που ισούται 1.874 10^-9). Αντίστοιχα στους δυαδικούς θα είναι τηςμορφής 0.100110Ε-1001. Παράδειγμα:

Ο αριθμός 0.75 θα είναι

0.7510=34=1

21

4=2−12−2=0.112=1.1°2−01

Ο επεξεργαστής τα 32 bit (single precision) τα χωρίζει ως εξής: 1 bit είναι το πρόσημο του αριθμού,8 bit είναι ο εκθέτης (του 2) 23 bit είναι το κομμάτι μετά την υποδιαστολή.

Πάντα κάνουμε κανονικοποίηση έτσι ώστε να έχουμε ένα άσσο πριν την υποδιαστολή. Οπότε ημικρότερη δύναμη που μπορούμε να έχουμε για το κλασματικό κομμάτι είναι η

2−23=0.00000011920928955078 .

Αυτό σημαίνει ότι έναν δεκαδικό αριθμό μπορούμε να τον αναπαραστήσουμε με τόση ακρίβεια.Πρακτικά αν αφαιρέσουμε από τον δεκαδικό την αντίστοιχη δυαδική αναπαράσταση το λάθος θαείναι μικρότερο από το 2−23 , δηλαδή μετά το 6ο δεκαδικό ψηφίο.

Ο μικρότερος και ο μεγαλύτερος αριθμός που μπορούμε να αναπαραστήσουμεεξαρτάται από τον εκθέτη της δύναμης του 2. Για τα 8 διαθέσιμα bit που έχουμε για τον εκθέτη ;έχουμε μέγιστο 227−1=2127≈1038 και ελάχιστο το 2−2

7−1=2−127≈10−38 .

Για μεγαλύτερη ακρίβεια και μεγαλύτερους δεκαδικούς έχουμε τους double που είναι 64 bit(double precision):1 bit είναι το πρόσημο του αριθμού,11 bit ο εκθέτης ( 10±308 μέγιστο και ελάχιστο)52 bit το κλασματικό κομμάτι (σφάλμα μετά το 15ο δεκαδικό ψηφίο)

Λαμβάνοντας υπ' όψιν τους 64 bit επεξεργαστές τα πράγματα αλλάζουν. Οι καταχωρητέςόπως και οι ακέραιοι γίνονται πλέον 64 bit και όλα διπλασιάζονται εκτός από τους float και τουςdouble.

Page 9: Σχετικά με δυαδικό σύστημα

6) Εισαγωγή στον προγραμματισμό.

Οι υπολογιστές δεν είναι και από τα πιο έξυπνα “όντα” σε αυτόν το κόσμο. Συνήθως ούτεάποψη έχουν ούτε κάποια (φανερή τουλάχιστον) προσωπικότητα. Σε αυτό που είναι πάρα πολύκαλοί είναι ο γρήγορος υπολογισμός απλών πράξεων ή καλύτερα η εκτέλεση απλών εντολών. Ηπρόσθεση δύο αριθμών είναι μια τέτοια εντολή. Φανταστείτε ότι οι σύγχρονοι προσωπικοίυπολογιστές (PC) μπορούν να εκτελούν δισεκατομμύρια εντολές σε ένα κύκλο διάρκειας ενόςδευτερολέπτου.

Οι εντολές αυτές ονομάζονται machine instructions και δεν είναι απαραίτητα αριθμητικήςφύσης. Πχ. υπάρχουν εντολές που λένε στον μικροεπεξεργαστή ποιά θα είναι η επόμενη εντολήανάλογα με το αποτέλεσμα της προηγούμενης, αν το x είναι αρνητικό εκτέλεσε την εντολή Ααλλιώς την εντολή Β. Το σύνολο αυτών των εντολών ονομάζεται γλώσσα μηχανής και είναισχετικά μικρό και διαφορετικό για κάθε αρχιτεκτονική επεξεργαστή.

Όπως θα περιμένατε οι εντολές αυτές είναι δυαδικής μορφής. Κάθε εντολή έχει και τοδικό της δυαδικό όνομα. Και εδώ αρχίζουν τα δύσκολα για εμάς. Εάν θέλουμε να πούμε στονυπολογιστή να κάνει κάτι πρέπει να μιλήσουμε τη γλώσσα του. Όχι μόνο είναι δύσκολο να μιλάςμε αριθμούς, αλλά και το δυαδικό σύστημα δεν είναι το αγαπημένο μας. Οπότε αυτό που κάνανεοι προγραμματιστές είναι να βάλουν ένα ενδιάμεσο στάδιο όπου κάθε εντολή έχει μια λέξη γιαόνομα, όπως add, store, push κτλ. Αυτό το ενδιάμεσο στάδιο ονομάζεται assembly και κάπωςέτσι άρχισε ο προγραμματισμός των υπολογιστών. Ακόμα και σήμερα υπάρχουν πολλοί πουπρογραμματίζουν σε assembly για το λόγο ότι είναι μια γλώσσα πολύ κοντά στον υπολογιστή.Ένα κομμάτι από ένα τέτοιο πρόγραμμα είναι και το παρακάτω που το μόνο που κάνει είναι ναπροσθέτει το 1 με το 2 και να εμφανίζει το αποτέλεσμα στην οθόνη:

main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax subl %eax, %esp movl $1, -4(%ebp) movl $2, -8(%ebp) subl $8, %esp movl -8(%ebp), %eax addl -4(%ebp), %eax pushl %eax pushl $.LC0 call printf addl $16, %esp leave ret

Όλο αυτό το κατεβατό για το 1+2=3!!! Για να το καταλάβει αυτό το πρόγραμμα ο υπολογιστήςπρέπει να το περάσουμε από έναν assembler. Αυτό είναι ένα πρόγραμμα το οποίο μεταφράζειτην κάθε εντολή της γλώσσας assembly σε αυτό που καταλαβαίνει ο υπολογιστής, δηλαδή τη

Page 10: Σχετικά με δυαδικό σύστημα

γλώσσα μηχανής.

CΓλώσσα Γλώσσα Assembly Γλώσσα Μηχανήςc = a + b add $c, $a, $b 10001110 01101010 00000000 00001100

Το να γράφεις προγράμματα σε assembly είναι δύσκολο, γιατί πέρα από ότι είναιδυσανάγνωστα είναι και πολύ μεγάλα. Για το λόγο αυτό, δημιουργήθηκαν γλώσσεςπρογραμματισμού οι οποίες είναι πιο κοντά στον άνθρωπο παρά στη μηχανή. Αυτές λέγονταιυψηλού επιπέδου γλώσσες προγραμματισμού. Μερικές από αυτές είναι οι Fortran, BASIC, C,C++ και Java.

Τα προγράμματα που έχουν γραφτεί σε γλώσσες υψηλού επιπέδου για να εκτελεστούνπρώτα περνάνε από ένα πρόγραμμα που λέγεται compiler. Ο compiler παίρνει το πρόγραμμαμας, το μεταγλωττίζει και παράγει ένα εκτελέσιμο αρχείο σε μορφή binary4. Το εκτελέσιμο αυτόαρχείο στη συνέχεια το “τρέχουμε”, ουσιαστικά δίνοντας στον υπολογιστή όλες τις απαραίτητεςπληροφορίες για την εργασία που θέλουμε να εκτελέσει. Η διαφορά ανάμεσα στο αρχικόπρόγραμμα (κώδικας) και το στο εκτελέσιμο είναι ότι το πρώτο είναι κατανοητό μόνο από τονάνθρωπο ενώ το δεύτερο είναι κατανοητό μόνο από τον υπολογιστή. Ο compiler είναι ο“διερμηνέας” μας σε όλη αυτή τη διαδικασία.

Ας δούμε πως θα μπορούσαμε να γράψουμε ένα πρόγραμμα σαν το παραπάνω που προσθέτειδυο αριθμούς σε μια γλώσσα υψηλού επιπέδου.

Παράδειγμα σε C:

/* code.c */

main() {

int a = 1;

int b = 2;

printf(“a+b= %d”, a+b);

}

Σκοπός δεν είναι να μάθετε το συντακτικό μιας τέτοιας γλώσσας, απλά να δείτε πόσο πιοκατανοητές είναι τέτοιες γλώσσες. Όπως και στα μαθηματικά έτσι και στον προγραμματισμόλειτουργούμε συνήθως με συναρτήσεις. Κατασκευάζουμε δηλαδή συναρτήσεις πουυπολογίζουν αυτό που θέλουμε. Στο παραπάνω πρόγραμμα έχουμε την συνάρτηση πουονομάζεται main(). Σε αυτήν ορίζουμε δύο ακέραιους αριθμούς (int σημαίνει integer) τον a καιτο b που είναι ίσοι με το 1 και το 2 αντίστοιχα. Έπειτα ζητάμε από τον υπολογιστή να τυπώσειστην οθόνη το αποτέλεσμα της πρόσθεσής τους. Το printf() .είναι και αυτό μια συνάρτηση

4 Υπάρχουν και άλλα ενδιάμεσα στάδια όπως αυτό του preprocessor, interpretοr, linker, δημιουργία bytecode, assemblerκτλ. αλλά δεν είναι απαραίτητο να τα γνωρίζετε όλα αυτά.

Page 11: Σχετικά με δυαδικό σύστημα

Παράδειγμα σε Fortran:

C code.f

PROGRAM main

INTEGER a

INTEGER b

a = 1

b = 2

WRITE(*,*) "a+b=", a+b

END

Όπως βλέπετε η διαδικασία που ακολουθούμε είναι πάνω κάτω η ίδια και για τις δύο γλώσσες.Πρώτα ορίζουμε τον τύπο των μεταβλητών μας, έπειτα αναθέτουμε τιμές σε αυτές και στο τέλοςυπολογίζουμε και τυπώνουμε το αποτέλεσμα. Και στις δυο περιπτώσεις στην οθόνη θαεκτυπωθεί το:a+b=3

7) Compilation

Στα παραπάνω παραδείγματα παρουσιάσαμε το πρόγραμμα μας αλλά δεν δείξαμε πωςαυτό μπορούμε να το μεταγλωττίσουμε ή αλλιώς να το κάνουμε compile, έτσι ώστε ναδημιουργήσουμε ένα εκτελέσιμο αρχείο. Για να γίνει αυτό θα πρέπει να χρησιμοποιήσουμε τονcompiler. Για κάθε γλώσσα προγραμματισμού υπάρχει ο αντίστοιχος compiler ο οποίος κάνειαυτήν τη δουλειά. Σε περιβάλλον Unix συνήθως χρησιμοποιούμε τους compiler της GNU οιοποίοι διατίθονται δωρεάν. Για τη C o compiler ονομάζεται cc ή gcc ενώ για τη Fortran g77.Ας δούμε τις εντολές για την μεταγλώττιση:

Compilation in C

gcc code.c -o binary

Compilation in Fortran

g77 code.f -o binary

Page 12: Σχετικά με δυαδικό σύστημα

Και στις δυο περιπτώσεις το αρχείο που δέχεται ο compiler λέγεται code με κατάληξη .c και .fστη C και στη Fortran αντίστοιχα. Η παράμετρος -o code λέει στον compiler ότι το εκτελέσιμοαρχείο θα ονομαστεί binary. Για να εκτελέσουμε αυτό το αρχείο σε περιβάλλον Unix πρέπει ναδώσουμε την εξής εντολή:

π UnixΕκτέλεση σε εριβάλλον./binary

a+b = 3

8) Συναρτήσεις

Η έννοια της συνάρτησης στον προγραμματισμό δεν διαφέρει και πολύ με τιςσυναρτήσεις που γνωρίζετε από τα μαθηματικά. Κάθε συνάρτηση ορίζει έναν μαθηματικόαλγόριθμο συμπεριλαμβάνοντας συγκεκριμένες αλγεβρικές πράξεις. Στον προγραμματισμόεκτός από μαθηματικές πράξεις έχουμε τη δυνατότητα να εκτελέσουμε και εντολές.

Έστω ότι έχουμε τη συνάρτηση f(x) = 2x. Η συνάρτηση f παίρνει το χ και το διπλασιάζει. Το χαποτελεί η μεταβλητή ή αλλιώς το όρισμα της f. Όπως γνωρίζετε μια συνάρτηση μπορεί να έχειένα ή παραπάνω ορίσματα5. Ένα παράδειγμα μιας τέτοιας συνάρτησης είναι η f(x,y) = 2x +y.

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

function(x, y) { apotelesma = 2*x + y; print(“Το αποτέλεσμα είναι “, apotelesma);}

'Εστω λοιπόν ότι έχουμε την παραπάνω συνάρτηση και την καλούμε με τα ορίσματα function(1,3). Η συνάρτηση θα υπολογίσει την μεταβλητή “ apotelesma” η οποία ισούται με το άθροισματου διπλασίου του x και του y, συγκεκριμένα:apotelesma = 2*1 + 3 = 5.Στο επόμενο βήμα εκτυπώνεται η φράση “ Το αποτέλεσμα είναι 5”. Αυτό γίνεται με τηνσυνάρτηση print η οποία έχει και αυτή ορίσματα. Το πρώτο όρισμα της είναι η φράση “Τοαποτέλεσμα είναι ” και το δεύτερο η μεταβλητή apotelesma.

Οι συναρτήσεις στον προγραμματισμό χρησιμοποιούνται για δύο κυρίως λόγους. Πρώταόταν θέλουμε να εκτελέσουμε ένα πλήθος εντολών που επαναλαμβάνεται. Αντί να γράφουμεόλες τις εντολές ξανά και ξανά, ορίζουμε μια συνάρτηση που συμπεριλαμβάνει τις εντολές αυτέςκαι έπειτα καλούμε αυτήν τη συνάρτηση όποτε επιθυμούμε. Ακολουθώντας αυτή τη διαδικασίαδημιουργούμε μικρότερα σε μέγεθος προγράμματα και πιο κατανοητά. Ο δεύτερος λόγος είναιότι έτσι οργανώνουμε και δομούμε καλύτερα τα προγράμματά μας.

9) Βιβλιοθήκες συστήματος και linker

5 Στον προγραμματισμό υπάρχουν και συναρτήσεις με κανένα όρισμα αλλά αυτό θα το δούμε αργότερα.

Page 13: Σχετικά με δυαδικό σύστημα

Τα περισσότερα λειτουργικά συστήματα χρησιμοποιούνται και για προγραμματισμό απότους χρήστες του. Θεωρούμε δηλαδή ότι προσφέρουν ένα περιβάλλον όπου δείνει τηδυνατότητα σε έναν προγραμματιστή να δημιουργήσει εκτελέσιμα προγράμματα. Απαραίτηταεφόδια είναι ένας editor και ένας compiler τα οποία είναι τα βασικά εργαλεία ενόςπρογραμματιστή.

Όπως θα παρατηρήσετε όταν ασχοληθείτε με τον προγραμματισμό, υπάρχουν κάποιεςσυναρτήσεις οι οποίες χρησιμοποιούνται αρκετά συχνά. Ένα παράδειγμα αυτών είναι και οιμαθηματικές συναρτήσεις όπως το ημίτονο sin(), το συνημίτονο cos(), ο λογάριθμος log() κτλ.Είναι φανερό ότι το να ανακαλύπτεις πάλι τον τροχό είναι μια επίπονη και μακρόχρονηδιαδικασία. Φανταστείτε δηλαδή, κάθε φορά που θέλαμε να χρησιμοποιήσουμε τέτοιεςκοινότυπες συναρτήσεις, να έπρεπε να τις ορίσουμε από την αρχή. Επιπλέον οι συναρτήσειςπου χρησιμοποιούνται σε αυτές τις βιβλιοθήκες είναι συνήθως οι βέλτιστες.

Για να λυθεί αυτό το πρόβλημα ο κατασκευαστές λειτουργικών συστημάτων, μαζί με ταεργαλεία που αναφέραμε πριν, περιλαμβάνουν και κάποια καινούρια για μας, τα οποίαονομάζονται βιβλιοθήκες ή libraries. Οι βιβλιοθήκες αυτές έχουν ενσωματωμένες συναρτήσειςτις οποίες μπορεί να τις χρησιμοποιήσει ένας προγραμματιστής όποτε τις χρειαστεί. Είναιδηλαδή σαν να υπάρχει από πριν ο κώδικας αυτών των συναρτήσεων και εμείς με κάποιοτρόπο τον συμπεριλαμβάνουμε στο δικό μας, χωρίς να τις γράφουμε από την αρχή. Όπως είναιφανερό υπάρχει μια πληθώρα από βιβλιοθήκες, όπου η κάθεμιά περιλαμβάνει και διαφορετικήςομάδας συναρτήσεις.

Η διαδικασία της διασύνδεσης του προγράμματος μας με μια βιβλιοθήκη ονομάζεταιlinking. Ουσιαστικά δηλαδή έτσι δηλώνουμε ότι θέλουμε να χρησιμοποιήσουμε μιασυγκεκριμένη βιβλιοθήκη η οποία συμπεριλαμβάνει συγκεκριμένες συναρτήσεις, όχι απαραίτηταμαθηματικές. Αυτό μπορεί να γίνει με δύο τρόπους:

α) Στατικά. Κατά το στάδιο της μεταγλώττισης του προγράμματός μας (compilation) ο κώδικαςτης συνάρτησης συμπεριλαμβάνεται πρώτα στο δικό μας πρόγραμμα και έπειτα προχωράκανονικά η μεταγλώττιση.β) Δυναμικά. Το πρόγραμμά μας μεταγλωτίζεται χωρίς να συμπεριλαμβάνει τον κώδικα τηςσυνάρτησης αυτό καθ' αυτό. Αντίθετα συμπεριλαμβάνεται το όνομα της συνάρτησης και τηςβιβλιοθήκης που υφίσταται. Κατά τη διάρκεια λοιπόν της εκτέλεσης του προγράμματος,αναζητείται η απαραίτητη βιβλιοθήκη η οποία και χρησιμοποιείται.

Όπως για να κάνουμε compile ένα πρόγραμμα χρησιμοποιούμε τον compiler, έτσι και γιανα κάνουμε link με τα βιβλιοθήκη χρησιμοποιείται ένα διαφορετικό πρόγραμμα, ο linker.

10) Ροή Ελέγχου

Οι εντολές μιας γλώσσας για τη ροή ελέγχου καθορίζουν τη σειρά με την οποίαεκτελούνται οι υπολογισμοί. Σε αυτό το κεφάλαιο θα γνωρίσουμε τις βασικές εντολές ροήςελέγχου οι οποίες υπάρχουν στις περισσότερες γλώσσες προγραμματισμού. Σκοπός είναι ηεξοικείωση με αυτές τις εντολές, έτσι ώστε όταν στο μέλλον χρειαστεί να μάθετε μια γλώσσαπρογραμματισμού να γνωρίζετε ήδη την λειτουργία αυτών των εντολών. Το συντακτικό κάθεγλώσσας και συνεπώς και αυτών των εντολών θα είναι διαφορετικό από γλώσσα σε γλώσσα.Παρ' όλα αυτά η βασική λειτουργία τους θα είναι περίπου η ίδια.

Page 14: Σχετικά με δυαδικό σύστημα

Στα επόμενα παραδείγματα θα δανειστούμε εκφράσεις από τη γλώσσα C, γιατί τοσυντακτικό της βοηθά στην ευκολότερη κατανόηση αυτών των εντολών.

10.1) if

Η εντολή if χρησιμοποιείται για τη επιλογή αποφάσεων. Συγκεκριμένα όταν θέλουμε μιαεντολή να εκτελεστεί μόνο εάν ισχύει μία συνθήκη, τότε χρησιμοποιούμε την if.

if (παράσταση) 1εντολή

Η εντολή 1 θα εκτελεστεί μόνο στη περίπτωση που η παράσταση είναι αληθής, δηλαδή όταν ηπαράσταση ισχύει. Σε κάθε άλλη περίπτωση η εντολή 1 δεν θα εκτελεστεί.

Παράδειγμα 1 if

= 1α

if (a=1) {

1εντολή α

1εντολή β}

Παράδειγμα 2 if

= 2αif (a=1)

1εντολή α 1εντολή β

Στο παράδειγμα 1 θα εκτελεστούν οι εντολές 1α και 1β. Εάν το α δεν ήταν ίσο με το 1, οιεντολές 1α και 1β δεν θα εκτελούνταν. Με τις αγκύλες { } μπορείτε να περικλείσετε ένα πλήθοςεντολών μέσα στον βρόχο του if. Στο παράδειγμα 2 που δεν χρησιμοποιήσαμε αγκύλες, έχουμετο εξής αποτέλεσμα: η εντολή 1α δεν θα εκτελεστεί γιατί το α δεν είναι ίσο με το 1. Ακριβώς μετάεγκαταλείπουμε το βρόγχο του if και εκτελείται η εντολή 1β.

10.2) if- else

Σαν προέκταση της if μπορούμε να χρησιμοποιήσουμε την εντολή if-else.

Page 15: Σχετικά με δυαδικό σύστημα

if (παράσταση) 1εντολή

else

2εντολή

Εάν η παράσταση ισχύει τότε εκτελείται η εντολή 1. Σε κάθε άλλη περίπτωση εκτελείται η εντολή2. Το να εκτελεστούν και οι δύο εντολές δεν είναι δυνατό.

Παράδειγμα if-else

= 1α

if (a=1)

print(“ 1”)Το α είναι

else

print(“To 1”)α δεν είναι

Εφόσον το α είναι ίσο με το 1, το αποτέλεσμα θα είναι να εκτυπωθεί η φράση “Το α είναι 1”.

10.3) else-if

Για να ελέγξουμε μια ακολουθία από συνθήκες τότε μπορούμε να χρησιμοποιήσουμε τηνεντολή else-if.

if (παράσταση)

1εντολή

else if (παράσταση)

2εντολή

else if (παράσταση)

3εντολή

else

4εντολή

Μπορούμε να χρησιμοποιήσουμε όσα else if χρειάζονται για να ελέγξουμε τις πιθανέςπαραστάσεις.

Page 16: Σχετικά με δυαδικό σύστημα

Παράδειγμα else-if

a = 2

if (a=1) Συνθήκη 1

print(“To 1”)α είναι

else if (a=2) Συνθήκη 2

print(“ 2”)Το α είναι

else if (a=2) Συνθήκη 3

print(“ π 2”)Το α είναι άλι

else if (a=3) Συνθήκη 4

print(“ 3”)Το α είναι

else

print(“ π π 1, 2, 3”)Το α δεν είναι κά οιο α ό τα

Στο παραπάνω παράδειγμα θα εκτυπωθεί η φράση “Το α είναι 2” επειδή το α είναι ίσο με το 2.Αυτό που πρέπει να αναφέρουμε είναι ότι θα εκτυπωθεί μόνο η φράση αυτή και όχι και ηεπόμενη που λέει ότι “Το α είναι πάλι 2” άσχετα εάν ισχύει η παράσταση μέσα στην παρένθεσητης συνθήκης 3. Αυτό συμβαίνει γιατί εφόσον μια συνθήκη είναι αληθής τότε το πρόγραμμά μαςεκτελεί τις εντολές που ορίζονται και μετά ο βρόχος τελειώνει. Οι συνθήκες 3 και 4 δεν θαελεγθούν ποτέ, άρα και οι εντολές που ορίζονται μέσα σε αυτές τις συνθήκες δεν θαεκτελεστούν ποτέ.

10.4) Βρόχος while

while (παράσταση ) {

1εντολή

2 εντολή ...

}

Ο βρόχος while λειτουργεί ως εξής: Για όσο η συνθήκη μέσα στην παρένθεση ισχύει,εκτελούνται όλες οι εντολές που ορίζονται μέσα στο βρόχο του while. O κύκλος αυτόςεπαναλαμβάνεται για όσο ισχύει η παράσταση μέσα στην παρένθεση. Ας δούμε έναπαράδειγμα:

Page 17: Σχετικά με δυαδικό σύστημα

Παράδειγμα while

= 1α

while (a < 4) {

print(“ “, )Το α είναι α

a = a + 1

print(“ “, )Το α είναι α

}

Ουσιαστικά το παραπάνω πρόγραμμα θα εκτελεστεί σε 4 βήματα. Ας δούμε αναλυτικά το κάθεβήμα ώστε να κατανοήσετε την εντολή while.

Βηματική αναπαράσταση του βρόχου while

Βήμα 1

= 1 α Το α γίνεται ίσο με το 1.

while ( < 4) { α Γίνεται έλεγχος για την τιμή του α. Είναι το α μικρότερο από το 4;

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

print(“ “, ) Το α είναι α Εκτύπωση της φράσης “Το α είναι 1”

a = a + 1 Το α γίνεται ίσο με το 2 ( α = 1 + 1).

print(“ “, ) Το α είναι α Εκτύπωση της φράσης “Το α είναι 2”. Εδώ τελειώνει ό πρώτος

κύκλος και αρχίζουμε πάλι από την αρχή.

Βήμα 2

while ( < 4) { α Είναι το α μικρότερο από το 4; Ναι (α = 2). Εκτέλεση τον

εντολών του βρόχου.

print(“ “, ) Το α είναι α Εκτύπωση της φράσης “Το α είναι 2”

a = a + 1 Το α γίνεται ίσο με το 3.

print(“ “, ) Το α είναι α Εκτύπωση της φράσης “Το α είναι 3”. Εδώ τελειώνει ό δεύτερος

κύκλος και αρχίζουμε πάλι από την αρχή.

Βήμα 3

while ( < 4) { α Είναι το α μικρότερο από το 4; Ναι (α = 3). Εκτέλεση τον

εντολών του βρόχου.

print(“ “, ) Το α είναι α Εκτύπωση της φράσης “Το α είναι 3”

a = a + 1 Το α γίνεται ίσο με το 4.

print(“ “, ) Το α είναι α Εκτύπωση της φράσης “Το α είναι 4”. Εδώ τελειώνει ό τρίτος

κύκλος και αρχίζουμε πάλι από την αρχή.

Page 18: Σχετικά με δυαδικό σύστημα

Βήμα 3

while ( < 4) { α Είναι το α μικρότερο από το 4; 'Όχι γιατί το α είναι ίσο με το 4.

Έξοδος από τον βρόχο. Δεν εκτελείται καμία από τις εντολές.