Παπαπέτρου Μαρία
Η ανάγκη επικοινωνίας του ανθρώπου με τον Η/Υ σε μια κοινή γλώσσα, ανέπτυξε τις διάφορες γλώσσες προγραμματισμού. Γλώσσα προγραμματισμού είναι ένα σύνολο γραμμάτων, λέξεων, αριθμών, τα οποία συντάσσονται ειδικά και χρησιμοποιούνται στην ανάπτυξη αλγορίθμων. Οι γλώσσες υψηλού επιπέδου προσεγγίζουν περισσότερο τη ανθρώπινη γλώσσα και είναι ειδικά φτιαγμένες ώστε τα προγράμματα να εκτελούνται από οποιονδήποτε υπολογιστή. Κάποιες γλώσσες προγραμματισμού υπερτερούν έναντι των άλλων σε συγκεκριμένες εφαρμογές.
FORTRAN(FORmula TRANslator) -είναι από τις πρώτες γλώσσες υψηλού επιπέδου -σχεδιάστηκε αρχικά για μαθηματικούς σκοπούς -κάνει δυνατή την υπολογιστική επίλυση προβλημάτων -πιο διαδεδομένη είναι η χρήση της Fortran 77 Το πρόγραμμα που γράφουμε, μεταφράζεται μέσω ειδικών προγραμμάτων στη γλώσσα που καταλαβαίνει ο Η/Υ. Ο Compiler κάνει τη μετάφραση όλου του κειμένου και έπειτα εκτελεί τις εντολές
Γράμματα A,B,C..X,Y,Z,a,b,c,..,x,y,z Δε γίνεται διάκριση μεταξύ πεζών και κεφαλαίων. Ο compiler μετατρέπει τα πεζά σε κεφαλαία Ψηφία 0,1,2,..,9 Τα σύμβολα των αριθμητικών πράξεων Ύψωση σε δύναμη Διαίρεση Πολλαπλασιασμός Αφαίρεση Πρόσθεση ** / * - +
Γράφουμε μια εντολή ανά γραμμή, και οι εντολές περιέχονται μεταξύ 7 ης και 72 ης στήλης Αν το μήκος της γραμμής ξεπερνά την 72 η στήλη, μπορούμε να συνεχίσουμε με την εντολή στην επόμενη σειρά, βάζοντας οποιοδήποτε χαρακτήρα(εκτός του 0) στην 6 η στήλη Σα σχόλια μπαίνουν στην 1 η στήλη, γράφοντας το γράμμα C ή το χαρακτήρα *. Ο compiler αγνοεί τα σχόλια
1. Ονόματα Επιτρεπτά Περιέχουν τα 26 γράμματα της αγγλικής αλφαβήτου, τα ψηφία και το σύμβολο _. Ξεκινούν με γράμμα και στη συνέχεια μπαίνει είτε γράμμα είτε ψηφίο Κεφαλαία, πεζά θεωρούνται το ίδιο Μη επιτρεπτά Δεν επιτρέπονται τα σύμβολα, εκτός του _. Δεν επιτρέποντα τα κενά Δεν επιτρέπονται ελληνικά γράμματα
2. Αριθμοί ΑΚΕΡΑΙΟΙ ΠΡΑΓΜΑΣΙΚΟΙ ΜΙΓΑΔΙΚΟΙ INTEGER REAL COMPLEX π.χ. 25, -3 π.χ. 14.6, -3. π.χ. (1.,2.)
3. Σελεστές Σελεστές ύγκρισης Σελεστής.EQ..NE..GT..LT..GE..LE. Λειτουργία Ισότητα Ανισότητα Μεγαλύτερο Μικρότερο Μεγαλύτερο ή ίσο Μικρότερο ή ίσο
Λογικοί Σελεστές Σελεστής.NOT..AND..OR. Λειτουργία Λογική άρνηση Λογική πρόσθεση Διάζευξη 4. Χαρακτήρες CHARACTER( k), όπου το k δηλώνει μέχρι πόσων θέσεων θα είναι ο χαρακτήρας που θα δηλώσω.
5. Δεδομένα που χειρίζεται ένα πρόγραμμα α. Σταθερές (με όνομα, που τις δηλώνουμε στην αρχή του προγράμματος) Π.χ. PI=3.14 β. Μεταβλητές Δεδομένα που η τιμή τους μεταβάλλεται κατά τη διάρκεια του προγράμματος
6. Δομή ενός προγράμματος Αρχίζει πάντα με PROGRAM όνομα προγράμματος Π.χ. program trigwno Δήλωση μεταβλητών (INTEGER,REAL,,CHARACTER) Δήλωση σταθερών, αν υπάρχουν Εκτελέσιμες προτάσεις. Η εντολή STOP τερματίζει την εκτέλεση του προγράμματος. Τελειώνει πάντα με END
7. Εκτελέσιμες Εντολές α. Εντολές Εισόδου και Εξόδου Εντολή: READ(*,*) μτβ1, μτβ2,.. Ση χρησιμοποιούμε, όταν απαιτείται η εισαγωγή δεδομένων από το χρήστη. Εντολή: WRITE(*,*) εκφρ1, εκφρ2,.. Ση χρησιμοποιούμε, όταν θέλουμε να εκτυπώσουμε κάποια αποτελέσματα.
Ένα πρώτο πρόγραμμα! Παράδειγμα Να γραφεί πρόγραμμα που να πολλαπλασιάζει 2 οποιουσδήποτε ακεραίους και μετά να εμφανίζει αυτούς και το γινόμενό τους
Έναρξη του προγράμματος program ex_1 Εισαγωγή σχόλιου, αρχίζοντας με * * To programma ayto pollaplasiazei dyo akeraious kai emphanizei aytous kai to ginomeno tous! integer a,b,multi Δήλωση ακεραίων a,b,multi (έτσι όρισα το γινόμενο) την οθόνη εκτυπώνονται οι φράσεις μέσα στα εισαγωγικά. Ενώ στη θέση των μεταβλητών ανάμεσα στα κόμματα, μπαίνουν τα αποτελέσματα. write(*,*)'dwse tous akeraious arithmous a kai b:' read(*,*)a,b multi=a*b write(*,*)'to ginomeno twn',a,'kai',b,'einai o arithmos:',multi stop end Πέρας του προγράμματος Με την εντολή αυτή, εισάγω τους αριθμούς a και b Εντολή ανάθεσης της μεταβλητής multi Σερματισμός εκτέλεσης προγράμματος
β. Εντολές Συνθήκης IF (λογική έκφραση) THEN εντολές (εκτελούνται, αν η λογική έκφραση είναι αληθής) END IF IF (λογική έκφραση) THEN εντολές (εκτελούνται αν η λογική παράσταση είναι αληθής) ELSE εντολές (εκτελούνται αν η λογική παράσταση είναι ψευδής) END IF
IF (λογική έκφραση 1) THEN εντολές (εκτελούνται αν η έκφραση 1 είναι αληθής) ELSE IF (λογική έκφραση 2) THEN εντολές (εκτελούνται αν η έκφραση 2 είναι αληθής). ELSE IF (λογική έκφραση n) THEN εντολές (εκτελούνται αν η έκφραση n είναι αληθής) ELSE Εντολές (εκτελούνται αν οι εκφράσεις 1,2,,n είναι ψευδείς) END IF
Ασκήσεις για την τάξη 1. Να γραφεί πρόγραμμα που να υπολογίζει το μεγαλύτερο, μεταξύ τριών πραγματικών αριθμών και να τον εμφανίζει. Αν και οι 3 αριθμοί που δίνει ο χρήστης είναι ίσοι, να εμφανίζεται η ανάλογη απάντηση και το πρόγραμμα να σταματάει στο σημείο εκείνο να εκτελεί εντολές. 2. Να γραφεί πρόγραμμα το οποίο θα δέχεται ως είσοδο 2 πραγματικούς αριθμούς a και b, και στη συνέχεια θα επιλύει την a/θμια εξίσωση ax=b, ελέγχοντας αν υπάρχει μοναδική λύση, άπειρες λύσεις ή αν είναι αδύνατη.
ΛΟΓΙΚΟ ΔΙΑΓΡΑΜΜΑ ΑΣΚΗΣΗΣ 1 αρχή read a,b,c ΟΧΙ a=b=c ΝΑΙ ΟΧΙ a>b ΝΑΙ τέλος max=b max=α max<c max=c τέλος
ΛΟΓΙΚΟ ΔΙΑΓΡΑΜΜΑ ΑΣΚΗΣΗΣ 2 αρχή read a,b ΟΧΙ a 0 ΝΑΙ ΟΧΙ b=0 ΝΑΙ x=b/a ΑΔΥΝΑΤΗ ΑΟΡΙΣΤΗ τέλος
γ. Εντολές Επανάληψης DO μτβ=αρχ.,τελ.,βήμα εντολές Όπου μτβ=μεταβλητή αρχ=αρχική τιμή τελ=τελική τιμή βήμα, όταν παραλείπεται, εννοείται βήμα=1 s IF (λογική έκφραση) THEN εντολές (εκτελούνται αν η λογική έκφραση είναι αληθής) GOTO s Όπου s, συνήθως βάζουμε κάποιον αριθμό, π.χ. 10,20, Όσο η λογική έκφραση ισχύει, η διαδικασία επαναλαμβάνεται.
ΠΙΝΑΚΑ ΧΡΗΙΜΩΝ ΤΝΘΗΚΩΝ ΓΙΑ ΑΚΗΕΙ Σο x βρίσκεται στο διάστημα [a, b] (X.GE.A.AND.X.LE.B) Σο x βρίσκεται εκτός διαστήματος [a, b] (X.LT.A.OR.X.GT.B) Σο x είναι πολλαπλάσιο του k (MOD(X,K).EQ.0) (MOD(X,2).EQ.0) Σο x είναι ζυγός αριθμός Σο x είναι θετικό (αρνητικό) Σο x είναι ίσο με το k (X.GT.0) ( (X.LT.0) ) (X.EQ.K) Σο x είναι διάφορο του k (X.NE.K)
Μνημονικός Κανόνας Για Ασκήσεις Που Ζητούν Άθροισμα, Γινόμενο, Πλήθος, Μέσο Όρο Με ή Χωρίς υνθήκη άθροισμα S=0 S=S+X WRITE(*,*)S γινόμενο P=1 P=P*X WRITE(*,*)P πλήθος PL=0 PL=PL+1 WRITE(*,*)PL μέσος όρος S=0 PL=0 S=S+X PL=PL+1 IF(PL.EQ.0)THEN WRITE(*,*) Den orizetai ELSE MO=S/PL WRITE(*,*)PL END IF
Ασκήσεις για την τάξη 1. Να γραθεί πρόγρακκα όποσ ο τρήζηες λα δειώλεη έλα password θαη έλα username (λα δειωζούλ ως ταραθηήρες). Έπεηηα, ηο πρόγρακκα λα δεηά password θαη username. Αλ ασηά είλαη ζωζηά, λα εκθαλίδεηαη ζηελ οζόλε ηο κήλσκα Welcome, αιιηώς λα εκθαλίδοληαη ηα αλάιογα κελύκαηα ιάζοσς. Ο τρήζηες λα έτεη ηε δσλαηόηεηα λα δοθηκάζεη ηο ποιύ 3 θορές. 2. Να γραθεί πρόγρακκα ποσ λα δηαβάδεη n πραγκαηηθούς αρηζκούς, από ηοσς οποίοσς λα σποιογίδεη a. Μέζε ηηκή b. Το γηλόκελο ηωλ αρηζκώλ ποσ είλαη ποιιαπιάζηα ηοσ 3 c. Το πιήζος ηωλ ηηκώλ ποσ αλήθοσλ ζηο δηάζηεκα (-2,4].
ΛΟΓΙΚΟ ΔΙΑΓΡΑΜΜΑ ΑΣΚΗΣΗΣ 1 αρχή Το πολύ 3 φορές Λάθος Read username Read password Λάθος Σωστό Σωστό Welcome -τέλος Wrong password Wrong username Wrong Password/ username
ΠΙΝΑΚΔΣ ε αντίθεση με τις απλές μεταβλητές της FORTRAN που έχουν τη δυνατότητα να αποθηκεύουν μόνο μια τιμή στη μνήμη του Η/Τ, οι πίνακες έχουν τη δυνατότητα να αποθηκεύουν παραπάνω από μία τιμές στη μνήμη του υπολογιστή. ύνταξη DIMENSION A(Γ1,Γ2,.,Γλ) Όλοκα κεηαβιεηής Αθέραηοη ποσ προζδηορίδοσλ ηε κέγηζηε ηηκή θάζε δείθηε
Μονοδιάστατοι Πίνακες Αλ ζέισ, γηα παξάδεηγκα, έλαλ κνλνδηάζηαην πίλαθα, δειαδή ην γλσζηό ζε καο δηάλπζκα, πνπ λα απνηειείηαη από 15 ηηκέο, ζα γξάςσ DIMENSION A(15) Αλ ζέισ λα δειώζσ πάλσ από έλα δηαλύζκαηα, ηα δειώλσ δηαδνρηθά κε άιιν όλνκα κεηαβιεηήο, θαη κέζα ζηελ παξέλζεζε βάδσ ηνλ αξηζκό ησλ ζέζεσλ πνπ ζέισ λα γεκίζσ DIMENSION A(15),B(20),C(25) Όηαλ δειώζσ dimension, ζεσξείηαη όηη ν πίλαθαο παίξλεη πξαγκαηηθέο ηηκέο. Αλ ζειήζσ ν πίλαθαο λα παίξλεη άιινπ είδνπο ηηκέο, ηόηε δειώλσ ηνλ πίλαθα σο απηό ην είδνο. Π.ρ DIMENSION A(15) INTEGER A αλ ζέισ ν πίλαθαο λα παίξλεη αθέξαηεο ηηκέο.
Ασκήσεις για την τάξη 1. Να γραφεί πρόγραμμα όπου να δίνεται μονοδιάστατος πίνακας 10 αριθμών. Να βρεθεί ο μικρότερος και ο μεγαλύτερος. 2. Να γραφεί πρόγραμμα όπου να δίνεται μονοδιάστατος πίνακας 20 ακεραίων. Έπειτα να εκτυπώνονται το πλήθος αυτών που διαιρούνται ακριβώς με το 2 και ποιοι είναι αυτοί καθώς και το πλήθος αυτών που διαιρούνται ακριβώς με το 5 και ποιοι είναι αυτοί
Ασκήσεις για την τάξη 1. Να γξαθεί πξόγξακκα όπνπ λα δίλνληαη 20 αξηζκνί. Να βξεζεί ην πιήζνο ησλ αξηζκώλ πνπ βξίζθνληαη ζηα δηαζηήκαηα i) ( -,3 ) ii) [ 3,8 ] θαη iii) ( 8,+ ), θαη πνηνη απ απηνύο. 2. Δίνεται διάνυσμα που περιέχει 50 ακέραιους αριθμούς. Να γραφεί πρόγραμμα που να υπολογίζει το πλήθος των στοιχείων της περιττής θέσης που διαιρούνται ακριβώς με το 2, και το πλήθος των στοιχείων άρτιας θέσης που διαιρούνται ακριβώς με το 3.
Πολυδιάστατοι Πίνακες Θα αζρνιεζνύκε κε ηνπο απινύο πίλαθεο πνπ γλσξίδνπκε, ηάμεο 2 (απηνύο πνπ έρνπλ δειαδή δύν δηαζηάζεηο). Αλ π.ρ έρνπκε ηνλ πίλαθα 1 3 A 1 2 0 1 1 1 2 2 4 0 Ο πίλαθαο Α έρεη ηάμε 2, θαη ην πιήζνο ησλ ζηνηρείσλ θάζε δηάζηαζεο (ε έθηαζε) είλαη 4 θαη 3. DIMENSION A(4,3) Η Fortran θαζνξίδεη όηη ε δηάηαμε κε ηελ νπνία ζα ηνπνζεηεζνύλ ηα ζηνηρεία ελόο πίλαθα, είλαη σο πξνο ζηήιεο. π.ρ Ο πίλαθαο Α ζα ηνπνζεηεζεί θαηά ζηήιεο ζηε κλήκε ηνπ Η/Υ, δειαδή 1,3,1,2,0,1,1,1,2,2,4,0 θαη απηόο ζα πξέπεη λα είλαη ν ηξόπνο πνπ ζα πξέπεη λα δώζεη ν ρξήζηεο ηηο ηηκέο.
Εισαγωγή τιμών πίνακα μέσα στο πρόγραμμα Σηηο πεξηπηώζεηο όπνπ ηα δεδνκέλα είλαη γλσζηά εθ ησλ πξνηέξσλ, ε εηζαγσγή ηηκώλ θαηά ηε δηάξθεηα εθηέιεζεο ηνπ πξνγξάκκαηνο εγθπκνλεί θηλδύλνπο. Αλ γηα παξάδεηγκα θαηαιάβνπκε όηη έρνπκε εηζάγεη θάπνην δεδνκέλν ιάζνο, ζα πξέπεη λα εθηειέζνπκε ην πξόγξακκα από ηελ αξρή. Γη απηό γίλεηαη θαη ε ρξήζε ηεο εληνιήο DATA. ΣΥΝΤΑΞΗ DATA K 1 /d 1 /,K 2 /d 2 /,. K i : ιίζηα νλνκάησλ ησλ κεηαβιεηώλ, πηλάθσλ πνπ ζα πάξνπλ ηηκέο d i : ιίζηα ζηαζεξώλ ηηκώλ
Η χρησιμοποίηση δεδομένων παραπάνω από μια φορά Η αποθήκευση των δεδομένων πριν από τη χρήση τους
Ορισμός του πίνακα Εισαγωγή στοιχείων στον πίνακα Επεξεργασία των στοιχείων του πίνακα (δηλαδή εύρεση αθροίσματος, γινομένου, πλήθους, μικρότερου, μεγαλύτερου, κ.α.) Εμφάνιση αποτελεσμάτων και στοιχείων του πίνακα
Ασκήσεις για την τάξη 1. Να γξαθεί πξόγξακκα όπνπ λα δίλεηαη ν αθέξαηνο πίλαθαο θαη έπεηηα λα ππνινγίδνληαη ηα αζξνίζκαηα i) ησλ ζηειώλ θαη ii) όισλ ησλ ζηνηρείσλ ηνπ πίλαθα. 2. Να γξαθεί πξόγξακκα πνπ λα δηαβάδεη έλαλ πξαγκαηηθό πίλαθα 5x5 θαη ζηε ζπλέρεηα λα βξεζεί ην ειάρηζην θάζε ζηήιεο. 2 0 1 1 3 2 1 0 1 2 2 1 0 1 1 1 0 0 1 2 5 3 2 0 1 A
(a) Αλ καο δίλεηαη ν πίλαθαο a A a a 11 21 31 a a a 12 22 32 a a a 13 23 33 θη εκείο ζα εηζάγνπκε ηηο ηηκέο κε ηε βνήζεηα ηεο εληνιήο DATA, ηόηε ζα ηνπνζεηήζνπκε ηηο ηηκέο θαηά ζηήιεο, δειαδή DATA A/α 11,α 21,α 31,α 12,α 22,α 32,α 13,α 23,α 33 /
b. Αν δεν είναι γνωστός ο πίνακας ή μας ζητηθεί απ την εκφώνηση της άσκησης να γραφεί πρόγραμμα που να διαβάζει τον πίνακα τότε a A a a 11 21 31 a a a 12 22 32 a a a 13 23 33 i) Γράφοντας do i=1,3 do j=1,3 read(*,*)a(i,j) end do end do να έχουμε υπόψη μας ότι θα εισάγουμε τα στοιχεία κατά γραμμές.
ii) Αν θέλουμε όμως να εισάγουμε τα στοιχεία κατά στήλες, τότε θα γράψουμε do j=1,3 do i=1,3 read(*,*)a(i,j) end do end do ή do i=1,3 do j=1,3 read(*,*)a(j,i) end do end do
1. Να γξαθεί πξόγξακκα ην νπνίν λα δηαβάδεη έλαλ πίλαθα 5x5 θαηά ζηήιεο. Έπεηηα λα ππνινγίδεη i) ην πιήζνο ησλ ζηνηρείσλ ηα νπνία είλαη ηαπηόρξνλα ζεηηθνί αξηζκνί θαη βξίζθνληαη πάλσ από ηελ θύξηα δηαγώλην, ii) λα εκθαλίζεη όια ηα ζηνηρεία πνπ αλήθνπλ ζηελ θύξηα δηαγώλην. 2. Να γξαθεί πξόγξακκα ζην νπνίν λα εηζάγεηε έλαλ ζπκκεηξηθό πίλαθα 3x3. (Να δίλεηε δειαδή κόλν ηα ζηνηρεία εθείλα πνπ είλαη απαξαίηεηα γηα ηε δεκηνπξγία ελόο ζπκκεηξηθνύ πίλαθα, θη έπεηηα ην πξόγξακκα λα δεκηνπξγεί νιόθιεξν ηνλ πίλαθα) Σηε ζπλέρεηα, i) λα εκθαλίδεη ηνλ πίλαθα απηόλ, ii) λα ππνινγίδεη ην άζξνηζκα ηεο θύξηαο δηαγσλίνπ θαη iii) λα ππνινγίδεη ην άζξνηζκα ησλ ζηνηρείσλ όινπ ηνπ πίλαθα.
5 9 7 6 i=1 j=2 5 9 7 6 i=1 j=3 5 9 7 6 i=1 j=4 5 9 7 6 i=2 j=3 5 7 9 6 i=2 j=4 5 6 9 7 i=3 j=4 5 6 7 9
Ορισμός του πίνακα, έστω Α, καθώς και των μεταβλητών Εισαγωγή τιμών στον πίνακα με την εντολή DATA, εφόσον είναι γνωστές από πριν Καθώς το 1 i n-1, επαναλαμβάνουμε τη διαδικασία: Ελέγχουμε αν το A(j), όπου i+1 j n, είναι μικρότερο του A(i). Αν ναι, τότε αλλάζουμε τη θέση των A(i) και A(j): X=A(I) A(I)=A(J) A(J)=X Εμφάνιση του πίνακα
Ασκήσεις για την τάξη 1. Να γξαθεί πξόγξακκα, πνπ εθόζνλ ηνπνζεηήζεη ηνπο αξηζκνύο 0,1,5,2,6,8,1,9,7,7 ζε έλαλ πίλαθα, ζηε ζπλέρεηα λα ηαμηλνκήζεη ηα ζηνηρεηά ηνπ πίλαθα ζε θζίλνπζα ζεηξά. 2. Να γξαθεί πξόγξακκα πνπ λα δηαβάδεη έλαλ πξαγκαηηθό πίλαθα 10 ηηκώλ (βαζκνί ελόο καζεηή ζε θάπνηα καζήκαηα) θαη έλαλ πίλαθα πνπ αληηζηνηρεί ζηα καζήκαηα απηά. Σηε ζπλέρεηα, λα εκθαληζηνύλ νη πξνηάζεηο: «Σην κάζεκα πήξε βαζκό»,από ηε κηθξόηεξε βαζκνινγία ζηε κεγαιύηεξε.
Ασκήσεις Επανάληψης 1. Να γξαθεί πξόγξακκα ην νπνίν λα δηαβάδεη έλαλ αθέξαην πίλαθα Α (5x10) θαη ζην νπνίν λα δίλεηαη ν πίλαθαο Β(5x1) 7 2 B 9 10 4 Έπεηηα, λα ππνινγίδεη (α.) ην άζξνηζκα ηωλ ζηνηρείωλ θάζε ζεηξάο ηνπ πίλαθα Α, ηα νπνία είλαη κηθξόηεξα από ην αληίζηνηρν ζηνηρείν ηεο ίδηαο ζεηξάο ηνπ πίλαθα Β θαη (β.) ην άζξνηζκα ηωλ ζηνηρείωλ θάζε ζεηξάο ηνπ πίλαθα Α, ηα νπνία είλαη κεγαιύηεξα από ην αληίζηνηρν ζηνηρείν ηεο ίδηαο ζεηξάο ηνπ πίλαθα Β.
2. Να γξαθεί πξόγξακκα πνπ λα δηαβάδεη ηνπο πίλαθεο θαη Έπεηηα λα θαηαζθεπάζεηε έλαλ πίλαθα Γ πνπ λα πεξηέρεη ηα ζηνηρεία θαη ηωλ δπν πηλάθωλ, ηαμηλνκεκέλα θαηά αύμνπζα ηάμε. 0 1 4 4 8 9 0 1 A 1 8 9 0 1 4 5 B