Αλγόριθμοι Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ
Εισαγωγή Τι είναι ένας αλγόριθμος Ευκλείδης πατέρας των ποιο γνωστών αλγορίθμων (πχ ΜΚΔ) Στην αρχή : μαθηματικό παιχνίδι (μεγάλος όγκος υπολογισμών για την επίλυση πρακτικών προβλημάτων) Εποχή των υπολογιστών: οι αλγόριθμοι στη μάχη για την επίλυση άλυτων μέχρι τότε υπολογιστικών προβλημάτων Αλγοριθμική: κλάδος των μαθηματικών που πέρασε στο κλάδο της πληροφορικής
Εισαγωγή Η αλγοριθμική: Ο πυρήνας της επιστήμης της πληροφορικής Τα προγράμματα των υπολογιστών δεν θα ήταν δυνατό να υπάρξουν χωρίς τους αλγορίθμους Τεχνικές σχεδίασης αλγορίθμων : στρατηγικές επίλυσης προβλημάτων
Τι είναι ένας αλγόριθμος Αλγόριθμος είναι μια ακολουθία ξεκάθαρων, ρητών εντολών για την επίλυση ενός προβλήματος, δηλαδή για την παραγωγή της απαιτούμενης εξόδου για κάθε αποδεκτή είσοδο, σε πεπερασμένο χρόνο.
Αλγόριθμος- σημαντικά σημεία Ξεκάθαροι έκφραση του κάθε βήματος του αλγορίθμου Σαφής καθορισμός του εύρους των τιμών των εισόδων Αναπαράσταση του αλγορίθμου με διάφορους ισοδύναμους μεταξύ τους τρόπους Ενδέχεται να υπάρχουν περισσότεροι του ενός αλγόριθμοι για την επίλυση του ίδιου προβλήματος Αλγόριθμοι για το ίδιο πρόβλημα μπορεί να βασίζονται σε εντελώς διαφορετικές ιδέες και μπορεί να επιλύουν το πρόβλημα με εντελώς διαφορετικές ταχύτητες
Ευκλείδης Ο αλγόριθμος του ΜΚΔ Μέγιστος Κοινός Διαιρέτης (GCD, greatest common divisor): Ο ΜΚΔ 2 μη αρνητικών, μη ταυτόχρονα-μηδενικών ακεραίων m και n, δηλούμενος ως mkd(m,n) ορίζεται ως ο μεγαλύτερος ακέραιος που διαιρεί ακριβώς τους m και n. Ο Ευκλείδης (Αλεξάνδρεια 3 αιώνας πχ) στο βιβλίο του «στοιχεία» περιέγραψε έναν αλγόριθμο για την επίλυση αυτού του προβλήματος
Ευκλείδης Ο αλγόριθμος του ΜΚΔ Σε σύγχρονους όρους ο αλγόριθμος του Ευκλείδη βασίζεται στην επαναληπτική εφαρμογή της ταυτότητας: Mkd(m,n)=mkd(n,m mod n) Έως ότου το (m mod n ) γίνει ίσο με το 0 M mod n : είναι το υπόλοιπο της διαίρεσης του m από το n Ισχύει ΜΚΔ(m,0)=m (γιατί;) άρα η τελική τιμή του m θα είναι ο ΜΚΔ της αρχικής τιμή του m και του n
Ευκλείδης Ο αλγόριθμος του ΜΚΔ Παράδειγμα Mkd(60,24)=mkd(24,12)=mkd(12,0)=12 Φανταστείτε τον αλγόριθμο να τρέχει για μεγάλους αριθμούς
Ευκλείδης Ο αλγόριθμος του ΜΚΔ Αλγόριθμος του Ευκλείδη για τον υπολογισμό του mkd(m,n): 1. Εάν n=0 επέστρεψε την τιμή του m ως απάντηση και σταμάτησε αλλιώς προχώρα στο βήμα 2 2. Διαίρεσε τον m με τον n και ανάθεσε την τιμή του υπολοίπου στον r 3. Ανάθεσε την τιμή του n στον m και αυτήν του r στον n. Πήγαινε στο βήμα 1
Ευκλείδης Ο αλγόριθμος του ΜΚΔ Ο αλγόριθμος του Ευκλείδη σε μορφή ψευδοκώδικα: 1. // Υπολογισμός του ΜκΔ των αριθμων m & n 2. while n 0 do { 3. r m mod n 4. m n 5. n r 6. } 7. return m
Αλγόριθμος ελέγχου διαδοχικών ακεραίων -ΜΚΔ Από τον ορισμό του ΜΚΔ είναι προφανές ότι ο ΜΚΔ δεν μπορεί να είναι μεγαλύτερος από το μικρότερο από τους δύο αυτούς αριθμούς 1. Ανάθεσε τη τιμή min(m,n) στον t 2. Διαίρεσε τον m με τον t. Εάν το υπόλοιπο της διαίρεσης αυτής είναι 0 πήγαινε στο βήμα 3. Αλλιώς πήγαινε στο βήμα 4 3. Διαίρεσε τον n με τον t. Εάν το υπόλοιπο της διαίρεσης αυτής είναι 0, επέστρεψε την τιμή του t ως απάντηση και σταμάτησε αλλιώς πήγαινε στο βήμα 4 4. Μείωσε την τιμή του t κατά 1. Πήγαινε στο βήμα 2 Παρατηρήστε ότι σε αντίθεση με τον αλγόριθμο του Ευκλειδη, εάν ένας από τους αριθμούς στην είσοδο είναι 0 δεν δουλεύει σωστά
Αλγόριθμος γινομένου πρώτων παραγόντων - ΜΚΔ 1. Ανέλυσε τον m σε γινόμενο πρώτων παραγόντων 2. Ανέλυσε τον n σε γινόμενο πρώτων παραγόντων 3. Τακτοποίησε όλους τους κοινούς παράγοντες στα γινόμενα των Βημάτων 1 και 2. Εάν ένας πρώτος παράγοντας επαναλαμβάνεται p m και p n φορές στα αναπτύγματα των m και n αντίστοιχα, τότε αυτός θα πρέπει να επαναληφθεί min (p m, p n ) φορές 4. Υπολόγισε το γινόμενο όλων των κοινών παραγόντων και επέστρεψε την τιμή αυτή ως το ΜΚΔ των m και n Για τους αριθμούς 60 και 24: 60=2*2*3*5 24=2*2*2*3 ΜΚΔ=2*2*3=12
Πρώτοι Αριθμοί το κόσκινο του Ερατοσθένη Πρώτος αριθμός είναι ένας φυσικός αριθμός μεγαλύτερος της μονάδας με την ιδιότητα οι μόνοι φυσικοί διαιρέτες του να είναι η μονάδα και ο εαυτός του. Το κόσκινο του Ερατοσθένη (200πχ) παράγει διαδοχικούς πρώτους αριθμούς ου δεν υπερβαίνουν ένα δοσμένο ακέραιο n Ο αλγόριθμος ξεκινά αρχικοποιώντας μια λίστα ακεραίων αριθμών από το 2 μέχρι το n Στη 1 η επανάληψη απαλείφει από τη λίστα όλα τα πολλαπλάσια του 2 Κατόπιν προχωρά στην επόμενη τιμή της λίστας δηλαδή στο 3 και απαλείφει όλα τα πολλαπλάσιά του και συνεχίζει στον επόμενο αριθμό που έχει απομείνει στη λίστα (το 5 μιας και το 4 έχει διαγραφή ως πολλαπλάσιο του 2)
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΙΚΗΣ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ 1. Μπορούμε να θεωρήσουμε τους αλγόριθμους ως διαδικαστικές λύσεις (procedural solutions) για διάφορα προβλήματα. Οι λύσεις αυτές δεν αποτελούν απαντήσεις αλλά ειδικές εντολές για τη λήψη μιας απάντησης
Διαδικασία σχεδίασης και ανάλυσης ενός αλγορίθμου Κατανόηση του προβλήματος Αποφάσεις για: υπολογιστικά μέσα, επακριβή ή προσεγγιστική επίλυση, δομές δεδομένων, τεχνική σχεδίασης αλγορίθμων Σχεδίαση ενός αλγορίθμου Απόδειξη ορθότητας Ανάλυση του αλγόριθμου Κωδικοποίηση του αλγορίθμου
Κατανόηση του προβλήματος Προσεκτικό διάβασμα της περιγραφής του προβλήματος Διευκρινήσεις σε δυσνόητα σημεία Έλεγχος αν υπάρχει ήδη κάποιος αλγόριθμος που να λύνει το συγκεκριμένο πρόβλημα Μια είσοδος σε έναν αλγόριθμο ονομάζεται έκφανση (instance) Επακριβής καθορισμός του εύρους των εκφάνσεων Εάν δεν γίνει σωστός καθορισμός ενδέχεται ο αλγόριθμος να μη δουλεύει σε οριακές περιπτώσεις Σωστός Αλγόριθμος είναι αυτός που δουλεύει καλά για όλες τις εισόδους ΕΠΙΣΤΡΟΦΗ
Αποφάσεις για: υπολογιστικά μέσα, επακριβή η προσεγγιστική επίλυση, δομές δεδομένων, τεχνική σχεδίασης αλγορίθμου Ακολουθιακοί αλγόριθμοι: Οι πιο παλιοί υπολογιστές ήταν βασισμένοι στην αρχιτεκτονική τυχαίας προσπέλασης, όπου οι εντολές εκτελούνται η μια μετά την άλλη, επιτελώντας μια λειτουργία κάθε φορά για αυτό και οι αλγόριθμοι που σχεδιάζονται για αυτή την αρχιτεκτονική λέγονται τυχαίας προσπέλασης Παράλληλοι αλγόριθμοι: Τα νέα υπολογιστικά συστήματα έχουν τη δυνατότητα της εκτέλεσης πολλών παράλληλων λειτουργιών, και οι αλγόριθμοι που σχεδιάζονται για τέτοια συστήματα λέγονται παράλληλοι αλγόριθμοι
Αποφάσεις για: υπολογιστικά μέσα, επακριβή η προσεγγιστική επίλυση, δομές δεδομένων, τεχνική σχεδίασης αλγορίθμου Ουσιώδης επιλογή: ακριβής ή προσεγγιστική λύση Επιλογή των κατάλληλων δομών δεδομένων Πίνακας: Ένας μονοδιάστατος πίνακας (one dimensional array) είναι μια ακολουθία n στοιχείων του ίδιου τύπου, τα οποία βρίσκονται αποθηκευμένα σε συνεχόμενες θέσεις μνήμης στον υπολογιστή, η προσπέλασή τους γίνεται με τον καθορισμό μια τιμής δείκτη (index) του πίνακα αυτού Οι πίνακες χρησιμοποιούνται για την υλοποίηση μιας πληθώρας άλλων δομών δεδομένων όπως η συμβολοσειρά (string) μια ακολουθία από χαρακτήρες που ανήκουν σε ένα αλφάβητο. Η συμβολοσειρά τερματίζεται από έναν ειδικό χαρακτήρα, οποίος καταδεικνύει το τέλος της. Οι συμβολοσειρές που αποτελούνται από μονάδες και μηδενικά καλούνται δυαδικές ή συμβολοσειρές bit
Αποφάσεις για: υπολογιστικά μέσα, επακριβή η προσεγγιστική επίλυση, δομές δεδομένων, τεχνική σχεδίασης αλγορίθμου Λίστα: Πεπερασμένη ακολουθία στοιχείων δεδομένων διατεταγμένα σε γραμμική διάταξη. Απλά συνδεδεμένη λίστα Κώδικας δημιουργίας λίστας #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }
Αποφάσεις για: υπολογιστικά μέσα, επακριβή η προσεγγιστική επίλυση, δομές δεδομένων, τεχνική σχεδίασης αλγορίθμου Διπλά συνδεδεμένη λίστα n στοιχείων Κώδικας δημιουργίας λίστας #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; struct node *prev;
Αποφάσεις για: υπολογιστικά μέσα, επακριβή η προσεγγιστική επίλυση, δομές δεδομένων, τεχνική σχεδίασης αλγορίθμου Δύο ειδικοί τύποι λιστών: Στοίβα (stuck): είναι μια λίστα στην οποία η εισαγωγή και η διαγραφή στοιχείων μπορεί να γίνει μόνο στο ένα άκρο της που ονομάζεται κορυφή. Η όλη δομή δεδομένων συμπεριφέρεται με έναν τρόπο τελευταίος μέσα πρώτος έξω (last - in - first out, LIFO) χρησιμοποιούνται κυρίως στην υλοποίηση αναδρομικών αλγορίθμων Ουρά: είναι μια λίστα στη οποία τα στοιχεία διαγράφονται μόνο από το ένα άκρο τους το οποίο ονομάζεται πρόσθιο τμήμα (front). Νέα στοιχεία μπορούν να προστίθενται μόνο στο άλλο άκρο της που ονομάζεται οπίσθιο τμήμα (rear). Η λίστα αυτή λειτουργεί με έναν τρόπο πρώτος μέσα πρώτος έξω (first in first out FIFO)
Αποφάσεις για: υπολογιστικά μέσα, επακριβή η προσεγγιστική επίλυση, δομές δεδομένων, τεχνικές σχεδίασης αλγορίθμου Μια τεχνική σχεδίασης αλγορίθμων ή στρατηγική, ή υπόδειγμα, είναι μια γενική προσέγγιση επίλυσης προβλημάτων με αλγοριθμικό τρόπο, η οποία εφαρμόζεται σε μια ποικιλία προβλημάτων που ανακύπτουν σε διάφορους τομείς της πληροφορικής. ΕΠΙΣΤΡΟΦΗ
Σχεδίαση ενός αλγορίθμου Ωμή βία Απευθείας προσέγγιση της επίλυσης ενός προβλήματος. Πχ εύρεση κλειδιού κρυπτογράφησης Διαίρεση και κυριαρχία Η ποιο διαδεδομένη τεχνική, σπάσιμο του προβλήματος σε πολλά μικρά Μείωση και κυριαρχία : βασίζεται στην εκμετάλλευση της σχέσης που υφίσταται μεταξύ μιας δεδομένης έκφανσης του προβλήματος και της λύσης μιας μικρότερης έκφανσης του ίδιου προβλήματος Μείωση κατά μία σταθερά Μείωση κατά ένα παράγοντα Μειωση μετεβλητου μεγέθους
Σχεδίαση ενός αλγορίθμου Μετασχηματισμός και κυριαρχία: τροποποιείται το πρόβλημα έτσι ώστε να γίνει πιο εύκολο στη λύση του Απλοποίηση έκφανσης Αλλαγή αναπαράστασης Αναγωγή του προβλήματος Δυναμικός προγραμματισμός Τεχνική επίλυσης προβλημάτων τα οποία αποτελούνται από αλληλεπικαλυπτόμενα υποπροβλήματα.
Σχεδίαση ενός αλγορίθμου Τεχνική απληστίας (greedy) Εφαρμόζεται σε προβλήματα βελτιστοποίησης. Η τεχνική αυτή προτείνει την κατασκευή μιας λύσης διαμέσου μιας ακολουθίας βημάτων, όπου το καθένα επεκτείνει μια μερικώς κατασκευασθείσα μέχρι τώρα λύση Επαναληπτική βελτίωση Ξεκινά με κάποια αποδεκτή λύση (λύση η οποία ικανοποιεί τους δοθέντες περιορισμούς του προβλήματος) και προχωρά στη βελτίωσή της, επιτελώντας κατ επανάληψη ένα απλό σχετικά βήμα. ΕΠΙΣΤΡΟΦΗ
Απόδειξη ορθότητας Πρέπει να αποδειχτεί ότι ο αλγόριθμος που καθορίσατε, δουλεύει και παράγει τις επιθυμητές εξόδους για τις αντίστοιχες εισόδους Η ποιο συνηθισμένη μέθοδος είναι η μέθοδος της επαγωγής ΕΠΙΣΤΡΟΦΗ
Ανάλυση του αλγόριθμου Ελέγχουμε τη χρονική και χωρική αποδοτικότητα του αλγορίθμου Την απλότητά του Την γενικότητά του ΕΠΙΣΤΡΟΦΗ
Κωδικοποίηση του αλγορίθμου Η υλοποίηση του αλγορίθμου ως πρόγραμμα ηλεκτρονικού υπολογιστή Ο κίνδυνος έγκειται στη πιθανότητα η μετάβαση από τον αλγόριθμο στο πρόγραμμα να γίνει είτε λανθασμένα είτε μη αποδοτικά Ο έλεγχος των προγραμμάτων των υπολογιστών είναι ουσιαστικά μια τέχνη και όχι μια επιστήμη ΕΠΙΣΤΡΟΦΗ
Συμπέρασμα Ένας καλός αλγόριθμος είναι το αποτέλεσμα επαναληπτικών προσπαθειών και ξαναδουλέματος
C++
Χρήσιμες διευθύνσεις Περιβάλλον ανάπτυξης: http://www.bloodshed.net/devcpp.html Tutorials: http://www.cplusplus.com/doc/tutorial/ http://www.cprogramming.com/ http://www.netspace.org/~mts/cpp/ http://www.functionx.com/cpp/index.ht m
Διαδικασία συγγραφής και εκτέλεσης προγράμματος
Μεταβλητές Κάθε πρόγραμμα σε οποιαδήποτε γλώσσα και αν είναι γραμμένο, τα δεδομένα του, τις ενδιάμεσες πράξεις, τα αποτελέσματα τα αποθηκεύει στην κεντρική μνήμη επεξεργασίας (RAM) του υπολογιστή. Τη θέση μνήμης που αποθηκεύονται τα παραπάνω για να μπορέσουμε να τη χρησιμοποιήσουμε πρέπει να της δοθεί ένα όνομα. Μεταβλητή είναι μια δεσμευμένη θέση μνήμης της οποίας έχουμε αποδώσει ένα όνομα και μέσω του ονόματος αυτού αναφερόμαστε στη τιμή που είναι αποθηκευμένη σε αυτή
Σταθερές - Εντολές Οι σταθερές είναι προκαθορισμένες τιμές που δεν μεταβάλλονται κατά τη διάρκεια εκτέλεσης ενός προγράμματος. Υπάρχουν αντίστοιχες σταθερές για κάθε τύπο δεδομένων Εντολή είναι μια φράση της γλώσσας προγραμματισμού που αναγκάζει τον Η/Υ να εκτελέσεις μια συγκεκριμένη λειτουργία
Λογικό διάγραμμα
Λογικό διάγραμμα Έστω ότι θέλουμε να δημιουργήσουμε ένα πρόγραμμα το οποίο να δέχεται να υπολογίζει το ΜΟ της εξέτασης προόδου και της τελικής ενός φοιτητή και αν αυτός είναι μεγαλύτερος από 5 τότε να τυπώνει ένα μήνυμα ότι προάγεται ειδάλλως ότι απέτυχε, το λογικό διάγραμμα θα είναι το παρακάτω:
Λογικό διάγραμμα
Το πρώτο μας πρόγραμμα
Το πρώτο μας πρόγραμμα Οι εντολές που ξεκινούν με : #include <cstdlib> #include <iostream> εξαναγκάζουν τον μεταγλωττιστή της C++ να συμπεριλάβει τα αρχεία αυτά κατά τη διάρκεια της μεταγλώττισης. Το αρχείο πχ «iostream> περιέχει τις δηλώσεις των αντικειμένων και των συναρτήσεων εισόδου και εξόδου της c++ (cout) Εντολή using namespace std : ενημερώνει το μεταγλωττιστή της c++ ότι τα ονόματα που θα χρησιμοποιούνται (συναρτήσεις, αντικείμενα) από αυτό το σημείο και μετά θα ανήκουν στο όνομα χώρου std. Η χρήση ονομάτων χώρου δίνει τη δυνατότητα στη c++ να χρησιμοποιεί οντότητες (μεταβλητές, συναρτήσεις, αντικείμενα, κλπ) που έχουν το ίδιο όνομα, αλλά επιτελούν διαφορετική λειτουργία ανάλογα με το όνομα χώρου στο οποίο ανήκουν.
Το πρώτο μας πρόγραμμα Συνάρτηση main() Η συνάρτηση main() είναι υποχρεωτική σε κάθε πρόγραμμα της c++. Στην περίπτωση που το πρόγραμμα μας έχει μια μόνο συνάρτηση, αυτή πρέπει να είναι η main(). Αν το πρόγραμμά μας περιέχει περισσότερες από μια συναρτήσεις η main() είναι η πρώτη που εκτελείται. Η αριστερή αγκύλη { σηματοδοτεί την αρχή των προτάσεων της συνάρτησης και η δεξία } το τέλος τους
Η δομή ενός προγράμματος στη c++ Ένα απλό πρόγραμμα στη C++ αποτελείται συνήθως από 3 βασικά τμήματα: 1. Μια συνάρτηση main(). Κάθε πρόγραμμα περιέχει μια και μόνο μια συνάρτηση main(). 2. Δηλωτικές προτάσεις: int a,b; Δηλώνει 2 ακέραιες μεταβλητές. Κάθε δηλωτική πρόταση τερματίζεται με ελληνικό ερωτηματικό (;) 3. Εκτελέσιμες προτάσεις: Οι εκτελέσιμες προτάσεις αποτελούνται από εντολές παραστάσεις, κλήσεις συναρτήσεων ή χρήση αντικειμένων και επιτελούν μια συγκεκριμένη λειτουργία. Τερματίζονται με το ελληνικό ερωτηματικό (;)
Η δομή ενός προγράμματος στη c++ Σχόλια προγράμματος: Ο σωστός σχεδιασμός ενός προγράμματος επιβάλει τη χρήση σχολίων μέσα στο ίδιο πρόγραμμα με σκοπό να το κάνει περισσότερο ευανάγνωστο και κατανοητό. Τα σχόλια αρχίζουν με το ζεύγος των χαρακτήρων /* και τελειώνουν με τους χαρακτήρες */
Δηλώσεις μεταβλητών Για να χρησιμοποιηθεί μια μεταβλητή πρέπει πρώτα να έχει δηλωθεί. Τύποι μεταβλητών:
Δηλώσεις μεταβλητών Το όνομα μιας μεταβλητής μπορεί να αποτελείται από χαρακτήρες, αριθμούς, και το χαρακτήρα υπογράμμισης «_». Ο πρώτος χαρακτήρας του ονόματος πρέπει να είναι γράμμα. Το πλήθος των χαρακτήρων του ονόματος θεωρητικά είναι απεριόριστο αλλά μπορεί να μεταβάλλεται από έκδοση σε έκδοση. Δεν επιτρέπεται η χρήση Ελληνικών χαρακτήρων σε ονόματα μεταβλητών. Στη c++ οι πεζοί και οι κεφαλαίοι χαρακτήρες είναι διακριτοί.
Δηλώσεις μεταβλητών Στην πρόταση δήλωσης μιας μεταβλητής μπορούμε να της αναθέσουμε και αρχική τιμή int a=4, b; float c=4.6, m; char ch= A ; Στη c++ μπορούμε να δηλώσουμε μεταβλητές στις οποίες να δώσουμε αρχική τιμή χωρίς όμως στη συνέχεια να μπορούμε να τις μεταβάλλουμε: const int a=4; const float b=5.8;
Δηλώσεις μεταβλητών Μπορούμε να δηλώσουμε μεταβλητές σε διάφορα σημεία ενός προγράμματος, ανάλογα με το σημείο που δηλώνεται διαφέρει και το τμήμα του προγράμματος στο οποίο ισχύει Καλό είναι να δηλώνουμε τις μεταβλητές στη αρχή της συνάρτησης (η γλώσσα c σε αντίθεση με τη c++ το απαιτεί) Στη c++ μια μεταβλητή πριν της ανατεθεί μια τιμή έχει απροσδιόριστο περιεχόμενο και όχι 0 ή κενό όπως συμβαίνει σε άλλες γλώσσες
Αριθμητικοί τελεστές ΤΕΛΕΣΤΗΣ ΠΕΡΙΓΡΑΦΗ = Απόδοσης τιμής + πρόσθεση - αφαίρεση * Πολλαπλασιασμός / Διαίρεση % Υπόλοιπο ακέραιας διαίρεσης ++, -- Τελεστές αύξησης και μείωσης κατά 1
Σχεσιακοί τελεστές ΤΕΛΕΣΤΗΣ ΠΕΡΙΓΡΑΦΗ == Ισο!= Όχι ίσο (άνισο) > Μεγαλύτερο >= Μεγαλύτερο ή ίσο < Μικρότερο <= Μικρότερο ή ίσιο Χρησιμοποιούνται για να σχηματίσουμε λογικές συνθήκες. Το αποτέλεσμα είναι μία λογική τιμή, είτε αληθής (true) είτε ψευδής (false).
Λογικοί τελεστές Τελεστής Περιγραφη! Λογικό not && Λογικό and Λογικό or χρησιμοποιούνται για να σχηματίσουν λογικές προτάσεις. ΠΙΝΑΚΑΣ ΑΛΗΘΕΙΑΣ ΤΕΛΕΣΤΗ! (NOT) ΛΟΓΙΚΗ ΕΚΦΡΑΣΗ Α!Α ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ
Λογικοί τελεστές ΠΙΝΑΚΑΣ ΑΛΗΘΕΙΑΣ ΛΟΓΙΚΟΥ ΤΕΛΕΣΤΗ && (AND) ΛΟΓΙΚΗ ΕΚΦΡΑΣΗ Α ΛΟΓΙΚΗ ΕΚΦΡΑΣΗ Β Α&&Β ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΠΙΝΑΚΑΣ ΑΛΗΘΕΙΑΣ ΛΟΓΙΚΟΥ ΤΕΛΕΣΤΗ (OR) ΛΟΓΙΚΗ ΕΚΦΡΑΣΗ Α ΛΟΓΙΚΗ ΕΚΦΡΑΣΗ Β Α Β ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ
ΠΑΡΑΣΤΑΣΕΙΣ Μια παράσταση αποτελείται από σταθερές, μεταβλητές και συναρτήσεις, συνήθως σε συνδυασμό με αριθμητικούς (πχ +,-) ή λογικούς τελεστές Ο τελεστής ίσον (=) καταχωρίζει το αποτέλεσμα της παράστασης που βρίσκεται δεξιά του, στη μεταβλητή που εμφανίζεται στα αριστερά του. Αριστερά από έναν τελεστή (=) επιτρέπεται να εμφανίζεται μόνο το όνομα μιας μεταβλητής Το αποτέλεσμα μιας παράστασης είναι του ίδιου τύπου δεδομένων με το τύπο του ιεραρχικά υψηλότερου μέλους της παράστασης: int a=10,b=5; float c; C=(a+b)/2 Η μεταβλητή C θα πάρει τη τιμή 7 και όχι 7.5 θα είναι τύπου int Αν θέλουμε να πάρουμε το σωστό αποτέλεσμα θα πρέπει να γράψουμε C=(a+b)/2.0;
Αλφαριθμητικές σταθερές Οι αλφαριθμητικές σταθερές είναι σύνολα χαρακτήρων μέσα σε διπλά εισαγωγικά ( this is a char ) Προσοχή να μη γίνει σύγχυση με τις σταθερές χαρακτήρων, οι οποίες περιέχουν ένα χαρακτήρα μέσα απλά εισαγωγικά ( C ) τις οποίες η c++ χειρίζεται σαν αριθμούς
Η c++ και οι αγκύλες της Οι {} αποτελούν ένα βασικό κομμάτι της φιλοσοφίας της c++ για τη δημιουργία δομημένων και «ευανάγνωστων προγραμμάτων» Χρησιμοποιούνται για τη δημιουργία σύνθετων προτάσεων, δηλαδή προτάσεων που αποτελούνται από περισσότερες προτάσεις, αλλά αντιμετωπίζονται από τη C++ ως μια πρόταση Μέσα σε μια σύνθετη πρόταση μπορούν να δηλωθούν μεταβλητές που να έχουν ισχύ μόνο μέσα στη πρόταση { a=4; { int m=8; cout<< m; } }
Η οδηγία define #define PI 3.141593 main() { float aktina,emvadon; aktina=10; emvadon=aktina*aktina*pi; }
ΜΚΔ - ευκλειδης #include <iostream> main() { int r; int a=30, b = 16; while (b!= 0) { r = b; b = a % b; a = r; } printf("mkd=%d", a); system("pause"); return 0; }