340 likes | 439 Views
Εισαγωγή στους Η/Υ. Δηλώσεις και Εκφράσεις. ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Δομή πηγαίου κώδικα. program name integer(…) variable(s) read ( *,*) variable(s) write (*,*) variable(s) end program. ΑΡΧΗ. ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ. ΔΕΔΟΜΕΝΑ ΕΙΣΟΔΟΥ. ΕΚΦΡΑΣΕΙΣ - ΚΟΡΜΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ
E N D
Εισαγωγή στους Η/Υ Δηλώσεις και Εκφράσεις
ΑΝΑΚΕΦΑΛΑΙΩΣΗ Δομή πηγαίου κώδικα programname integer(…)variable(s) read(*,*) variable(s) write(*,*) variable(s) end program ΑΡΧΗ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΔΕΔΟΜΕΝΑ ΕΙΣΟΔΟΥ ΕΚΦΡΑΣΕΙΣ - ΚΟΡΜΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ (ΥΠΟΛΟΓΙΣΜΟΙ, ΔΙΑΔΙΚΑΣΙΕΣ,...) ΔΕΔΟΜΕΝΑ ΕΞΟΔΟΥ ΤΕΛΟΣ Ο κώδικας εκτελείται γραμμή-γραμμή από πάνω προς τα κάτω
Γενικά περί σύνταξης εκφράσεων Όνομα μεταβλητής ή σταθεράς = δεδομένα ή Όνομα μεταβλητής ή σταθεράς = συνδυασμός δεδομένων και τελεστών Αριστερό σκέλος:περιλαμβάνει ΜΟΝΟ το όνομα μιας μεταβλητής Δεξί σκέλος:περιλαμβάνει μεταβλητές, σταθερές, συνδυασμό τους με τελεστές Η AΡΙΘΜΗΤΙΚΗ ΤΙΜΗ του αποτελέσματος του δεξιού σκέλους ανατίθεται στην μεταβλητή του αριστερού σκέλους
Βασικοί τύποι Τύποι Δεδομένων αριθμητικά μη αριθμητικά ακέραια πραγματικά μιγαδικά λογικά αλφαριθμητικά • Κάθε τύπος δεδομένων έχει τέσσερα χαρακτηριστικά • Όνομα (προκαθορισμένοαπό τον compiler) • Πεδίο επιτρεπτών τιμών • Τρόπο αναπαράστασης των σταθερών • Σύνολο τελεστών που μπορεί να συνδυαστεί • Η δήλωση του τύπου των δεδομένων γίνεται με προκαθορισμένους και συγκεκριμένους κανόνες σύνταξης
τύπος[ ( [KIND=] είδος) ] [ [ ,ιδιότητες] : : ]λίστα τύπος :integer, real (double precision), complex, character, logical είδος : 1, 2, 4, 8 (ο αριθμός bytes που δεσμεύεται στη μνήμη) ιδιότητες :parameter,public,private,intent,... (πιν.3-7 σελ.92) λίστα : ονόματα δεδομένων χωρισμένα με κόμμα Δηλώσεις Μεταβλητών (Γενική μορφή) • Τα ‘::’ χρησιμοποιούνται υποχρεωτικά όταν: • Δηλώσουμε μια ή περισσότερες ιδιότητες • Ταυτόχρονα με τη δήλωση δώσουμε αρχικές τιμές στα δεδομένα
τύπος , PARAMETER: : όνομα σταθεράς = τιμή PARAMETER και DATA DATA , λίστα ονομάτων/ λίστα τιμών /
Αρχικοποίηση μεταβλητών • Κατά τη δήλωση μπορούμε να δώσουμε αρχικές τιμές στις μεταβλητές • Η αρχικοποίηση γίνεται με παρόμοιο τρόπο με την εντολή parameter • Η αρχικοποίηση γίνεται μια φορά όταν ο υπολογιστής φορτώνει το πρόγραμμα στη μνήμη • Για να δώσουμε αρχικές τιμές με τη δήλωση πρέπει υποχρεωτικά να χρησιμοποιήσουμε τη σύνταξη τύπος:: μεταβλητή = τιμή
Εκφράσεις αριθμητικές Τελεστές: + - / * ** λογικές Τελεστές: .OR. .AND. … Εκφράσεις αλφαριθμητικές Τελεστής: // μιγαδικών Τελεστές: + - / * ** Κάθε τύπος δεδομένων συνοδεύεται από συγκεκριμένες εγγενείς συναρτήσεις
Παράδειγμα Υπολογίστε την παρακάτω έκφραση για α = 5.2, b=4.57, x=5.6, y=6.43, m=5, k=4 Με ποια σειρά εκτελούνται οι πράξεις;
Σημεία που πρέπει να προσέχουμε στις αριθμητικές εκφράσεις ! ! • Στις ισότητες εκτιμάται πρώτα το δεξί μέλος και η τιμή του ανατίθεται στην μεταβλητή του ΑΡΙΣΤΕΡΟΥ μέλους • Κάθε μεταβλητή στην οποία δεν δίνουμε κάποια αρχική τιμή, έχει την τιμή μηδέν • Δεν υπονοείται τίποτα, όλες οι πράξεις ορίζονται ρητώς. • Δεν επιτρέπεται η χρήση δύο συνεχόμενων τελεστών • Ορίζουμε κάθε μεταβλητή με ονόματα με σημασία και βάσει του τύπου τους • Όσες παρενθέσεις ανοίγουμε άλλες τόσες κλείνουμε • ΠΡΟΣΟΧΗ στις διαιρέσεις και στην ύψωση σε δύναμη • ΠΡΟΣΟΧΗ στις πράξεις με μικτούς τύπους αριθμών
ΔΙΑΙΡΕΣΕΙΣ • Απαγορεύεται η διαίρεση με το μηδέν • Εμφανίζεται αποτέλεσμα Infinityστη μονάδα εξόδου • Προσοχή στις διαιρέσεις μεταξύ ακέραιων • Αποκόπτεται το δεκαδικό μέρος του αποτελέσματος • Η διαίρεσηγράφεται ωςα/(b*c) ή a/b/c
ΕΚΘΕΤΕΣ • Απαγορεύεται η ύψωση ενός τελεστέου με τιμή μηδέν σε αρνητική ή μηδενική δύναμη • Εμφάνιση μηνύματος στη μονάδα εξόδου • forrtl: severe (696): Real zero raised to negative power • Απαγορεύεται η ύψωση ενός αρνητικού τελεστέου σε μη ακέραια δύναμη • Εμφάνιση μηνύματος NaNστη μονάδα εξόδου (Not a Number)
Εγγενείς Συναρτήσεις Οι εγγενείς συναρτήσεις έχουν μεγαλύτερη προτεραιότητα από όλους τους τελεστές ! • ΠΡΟΣΟΧΗ • Τύπος ορισμάτων - Τύπος αποτελέσματος
Τυχαίοι Αριθμοί Αρχικοποίηση γεννήτριας τυχαίων αριθμών Παραγωγή τυχαίου αριθμού Τι συμβαίνει αν παραλείψουμε την αρχικοποίηση της γεννήτριας των τυχαίων αριθμών ? Οι τυχαίοι αριθμοί έχουν ένα πολύ σημαντικό ρόλο στην επίλυση επιστημονικών προβλημάτων (π.χ. διαδικασίες λήψης αποφάσεων, τυχαία δειγματοληψία, προσομοίωση τυχαίων φαινομένων, κ.α.) Η παραγωγή τυχαίων αριθμών στον Η/Υ γίνεται από γεννήτριες τυχαίων αριθμών που απαιτούν συγκεκριμένη σύνταξη κατά την κλήση τους Στη FORTRAN:
Λογικές εκφράσεις • Είναι οι εκφράσεις που χρησιμοποιούν λογικά δεδομένα και λογικούς τελεστές • Η κύρια χρήση τους είναι σε δομές ελέγχου ροής • Τιμές λογικών μεταβλητών: • .true. : αληθής • .false. : ψευδής • Τελεστές λογικών εκφράσεων: • .NOT. : άρνηση • .AND. : σύζευξη • .OR. : διάζευξη • .EQV.: ισοδυναμία • .NEQV.: ανισοδυναμία • Λογικά αποτελέσματα παράγονται και με εκφράσεις σύγκρισης • Οι λογικές μεταβλητές πρέπει να δηλώνονται υποχρεωτικά
Αποτελέσματα πράξεων με λογικούς τελεστές
Εκφράσεις σύγκρισης • Είναι οι εκφράσεις που χρησιμοποιούν αριθμητικά ή αλφαριθμητικά δεδομένα και τελεστές σύγκρισης • Η κύρια χρήση τους είναι σε δομές ελέγχου ροής • Τελεστές εκφράσεων σύγκρισης: • .LT. ή < : Μικρότερο • .LE. ή <= : Μικρότερο ή ίσο • .EQ. ή == : Ίσο • .NE. ή /=: Άνισο (διάφορο) • .GE. ή >=: Μεγαλύτερο ή ίσο • .GT. ή > : Μεγαλύτερο • Το αποτέλεσμα μιας έκφρασης σύγκρισης έιναι λογικού τύπου (.true. .false.) • Και οι δύο τελεστέοι πρέπει να είναι ίδου τύπου
Αλφαριθμητικές εκφράσεις • Είναι οι εκφράσεις που χρησιμοποιούν αλφαριθμητικά δεδομένα (βλ. πίνακα ASCII) • Η κύρια χρήση τους είναι για τον προσδιορισμό της τοποθεσίας αρχείων στον σκληρό δίσκο • Τιμές αλφαριθμητικών μεταβλητών: • αριθμοί και γράμματα περικλειόμενα μέσα στους διαχωριστές “ ” ή ‘ ‘ • Τελεστής αλφαριθμητικών εκφράσεων: • //: συνένωση αλφαριθμητικών δεδομένων εκατέρωθεν του τελεστή • Οι αλφαριθμητικές μεταβλητές πρέπει να δηλώνονται υποχρεωτικά ως προς τον τύπο αλλά και ως προς το μέγεθος τους • κάθε χαρακτήρας καταλαμβάνει και ένα πεδίο του μήκους της μεταβλητής • το κενό προσμετράται ως χαρακτήρας • τα κεφαλαία δεν είναι ίδια με τα πεζά
Αλφαριθμητικές εκφράσεις Μπορούμε να χρησιμοποιήσουμε μέρος της αλφαριθμητικής τιμής π.χ. e(4:8) από τον 4ο μέχρι τον 8ο χαρακτήρα (μήκος 5) π.χ. d(:6) από τον 1ο μέχρι τον 6ο χαρακτήρα (μήκος 6)
Συνηθισμένα λάθη κατά τον προγραμματισμό • Συντακτικά λάθη: • Ανοικτές παρενθέσεις • Αδήλωτα ονόματα • Λάθος γραμμένες εντολές • Σύνταξη προτάσεων • Σειρά προτάσεων • Λογικά λάθη • Χρήση μεταβλητών που δεν έχουν πάρει τιμή • Λάθος μονάδες στους υπολογισμούς • Χρήση λάθους τύπου δεδομένων • Αριθμητικά λάθη • Διαιρέσεις • Εκθέτες
Τρεις συνηθισμένες παγίδες To Α**Β**C δεν είναι ίσο με το (Α**Β)**C Η διαίρεση ενός ακεραίου με ακέραιο πάντα επιστρέφει ακέραιο αποτέλεσμα Αν το μέγεθος μιας αλφαριθμητικής μεταβλητής δεν επαρκεί, η τιμή της μεταβλητής αποκόπτεται (truncated) στο δηλωμένο μήκος (parameter, read, εκχώρηση)
Εργασία για το σπίτι • Ιστοσελίδα του μαθήματος Εκπαιδευτικό Υλικό Οι εργασίες παραδίδονται αποκλειστικά σε ηλεκτρονική μορφή μέσω e-mail gkonstan@mie.uth.gr