Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Ειδικά κεφάλαια και εφαρμογές

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Ειδικά κεφάλαια και εφαρμογές"— Μεταγράφημα παρουσίασης:

1 Ειδικά κεφάλαια και εφαρμογές
Εισαγωγή στους Η/Υ Ειδικά κεφάλαια και εφαρμογές

2 Περιεχόμενα ΠΙΝΑΚΕΣ ΑΡΧΕΙΑ Διαδικασίες υπονοούμενη επανάληψη
παράλληλες δομές ταξινόμηση ΑΡΧΕΙΑ Πρόσβαση σε πολλαπλά αρχεία Εύρεση πλήθους εγγραφών ενός αρχείου Αρχεία με ετικέτες Αλλαγή τύπου δεδομένων Διαδικασίες intent optional, present interface module

3 ΠΙΝΑΚΕΣ

4 Υπονοούμενη επανάληψη
Η υπονοούμενη επανάληψη χρησιμοποιείται Για τον καθορισμό επανάληψης σε ένα μέρος μιας λίστας εισόδου/εξόδου Για την μεταφορά μέρους ενός πίνακα Για την μεταφορά αντικειμένων ενός πίνακα με διαφορετική σειρά από αυτή που καταχωρούνται στη μνήμη. Παραδείγματα:

5 Παράλληλες δομές Όπως η δομή IF Where (συνθήκη) έκφραση
Where … Elsewhere … End Where Όπως η δομή DO Forall (τριάδα[,τριάδα]...); έκφραση; end forall Όπως η δομή DO WHILE Forall (τριάδα[,τριάδα]..., συνθήκη); έκφραση; end forall Ισοδύναμο του forall (…); where(…) έκφραση; end forall

6 ΔΟΜΗ WHERE Επηρεάζει τα στοιχεία στις θέσεις των δεικτών των πινάκων, για τις οποίες ισχύει η αντίστοιχη συνθήκη Where (συνθήκη) έκφραση Where (συνθήκη) εκφράσεις 1 Elsewhere (συνθήκη) εκφράσεις 2 Elsewhere εκφράσεις 3 End Where

7

8 ΔΟΜΗ FORALL Επηρεάζει τα στοιχεία στις θέσεις των δεικτών των πινάκων, οι οποίες προσπελαύνονται από την τριάδα της δομής Απλή μορφή (Μονοδιάστατος πίνακας) FORALL(τριάδα) έκφραση Σύνθετη μορφή (Πολυδιάστατοι πίνακες) FORALL(τριάδα1, τριάδα2, …) εκφράσεις END FORALL

9

10 ΔΟΜΗ FORALL με Συνθήκη Επηρεάζει τα στοιχεία στις θέσεις των δεικτών των πινάκων, οι οποίες προσπελαύνονται από την τριάδα της δομής ΚΑΙ για τα οποία ισχύει η αντίστοιχη συνθήκη Απλή μορφή (Μονοδιάστατος πίνακας) FORALL(τριάδα, συνθήκη) έκφραση Σύνθετη μορφή (Πολυδιάστατοι πίνακες) FORALL(τριάδα1, τριάδα2,…, συνθήκη1.ΛΤ. συνθήκη2.ΛΤ. …) έκφρασεις END FORALL (όπου .ΛΤ. : Λογικός Τελεστής)

11

12 Ταξινόμηση στοιχείων Εδώ παρουσιάζονται δύο αλγόριθμοι
διάταξη με επιλογή θέτει το πρώτο στοιχείο σαν το μικρότερο εξετάζει διαδοχικά τα υπόλοιπα στοιχεία αν βρει κάποιο μικρότερο το τοποθετεί στην 1η θέση επαναλαμβάνει τη διαδικασία για το 2ο, το 3ο, κλπ. διάταξη με παρεμβολή συγκρίνει κάθε στοιχείο με τα προηγούμενα αρχίζοντας από το 2ο στοιχείο μέχρι να βρει την κατάλληλη θέση επαναλαμβάνει τη διαδικασία διαδοχικά για το 3ο, το 4ο, το 5ο, κλπ. Περισσότερα στο κεφ. 11.1

13

14 ΑΡΧΕΙΑ

15 Πρόσβαση σε πολλαπλά αρχεία αγνώστου πλήθους εγγραφών
Εφαρμογή: Συλλογές μετρήσεων σε αρχεία με συγκεκριμένη τυποποίηση ονομασίας Το πρόβλημα χωρίζεται σε δύο μέρη Πρόσβαση σε πολλαπλά αρχεία τοποθεσία στον σκληρό δίσκο όνομα αρχείου τύπος αρχείου Ανάγνωση του αγνώστου πλήθους εγγραφών Εύρεση γραμμών Εύρεση στηλών Καταχώρηση σε δυναμικό πίνακα

16 Πρόσβαση σε πολλαπλά αρχεία
Για να αποκτήσουμε πρόσβαση σε κάποιο αρχείο χρησιμοποιούμε την εντολή open Η μεταβλητή filename (τύπου character) είναι το όνομα του αρχείου που περιλαμβάνει Τοποθεσία στον σκληρό: π.χ. C:\input\ Όνομα αρχείου: π.χ. data1 Τύπος αρχείου: π.χ. txt Όνομα αρχείου: C:\input\data1.txt Η τιμή της filename δίνεται ρητά με ανάγνωση από άλλο αρχείο παραμετρικά

17 Σημείωση: Η ρητή καταχώρηση δεν ενδείκνυται αν επιθυμούμε να αποκτήσουμε πρόσβαση σε μεγάλο αριθμό αρχείων ή σε περιπτώσεις χρήσης διαφορετικών αρχείων κάθε φορά που εκτελείται το πρόγραμμα

18 Για αρχεία στον ίδιο φάκελο
Αν υπάρχουν σημαντικές διαφορές στα ονόματα των αρχείων είναι πιο βολική η χρήση ενός βοηθητικού αρχείου Για αρχεία στον ίδιο φάκελο Για αρχεία σε διαφορετικούς φακέλους Aρχεία σαν το filenames.txt μπορούν να κατασκευαστούν εύκολα στο EXCEL ή με εντολές σε περιβάλλον command-prompt ή να ληφθούν σαν έξοδος από άλλα software/freeware

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

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

21 Παράδειγμα Θέλουμε να διαβάσουμε δεδομένα από πολλά αρχεία με κοινό όνομα και μη μονοψήφιο αύξοντα αριθμό (data001.txt, data002.txt,…, data999.txt)

22 Ανάγνωση αρχείων με άγνωστο πλήθος εγγραφών
Η ανάγνωση αρχείων με άγνωστο πλήθος εγγραφών γίνεται σε τρία στάδια Εύρεση γραμμών Εύρεση στηλών Καταχώρηση σε δυναμικό πίνακα Για την εύρεση των γραμμών χρησιμοποιούμε βρόγχο επανάληψης με συνθήκη εξόδου και μετρητή συντάσσουμε την εντολή READ χρησιμοποιώντας την IOSTAT ελέγχουμε την τιμή που επιστρέφει η παράμετρος IOSTAT (0: κανένα λάθος, -1: τέλος αρχείου) Για την εύρεση των στηλών θεωρούμε ένα αρκετά μεγάλο αριθμό εγγραφών (MAXRECS) διαβάζουμε (READ + IOSTAT) με υπονοούμενη επανάληψη MAXRECS εγγραφές

23 Υποθετική τιμή μέγιστου αριθμού στοιχείων
Υπονοούμενη επανάληψη ο αριθμός στηλών είναι ίσος με τον αριθμό των εγγραφών που αναγνώστηκαν δια τον αριθμό των γραμμών

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

25

26

27 ΔΙΑΔΙΚΑΣΙΕΣ

28 Διαδικασίες – Ιδιότητα INTENT
ΙΝ : ΕΙΣΟΔΟΣ – η τιμή της δεν αλλάζει στην έκταση της διαδικασίας OUT : ΕΞΟΔΟΣ – πρέπει να λάβει τιμή στην έκταση της διαδικασίας INOUT: ΕΙΣΟΔΟΣ/ ΕΞΟΔΟΣ – η τιμή της μπορεί να αλλάζει στην έκταση της διαδικασίας (προκαθορισμένο) Με τη χρήση της ιδιότητας INTENT καθορίζουμε πιο αυστηρά την εκτέλεση του προγράμματος προλαμβάνοντας λογικά λάθη

29 OPTIONAL και PRESENT Γνωστά παραδείγματα
Open MIN (πίνακες) ...

30 Διαδικασίες - Interface
Κατά την χρήση εξωτερικών διαδικασιών ο compiler υποθέτει ότι ο προγραμματιστής έχει φροντίσει για την σωστή αντιστοίχιση των όρων Μια ορθότερη προσέγγιση στην χρήση εξωτερικών διαδικασιών είναι η χρήση δομών INTERFACE Σε αυτές τις δομές δηλώνονται ρητά οι εξωτερικές διαδικασίες που πρόκειται να χρησιμοποιηθούν Η δομή INTERFACE τοποθετείται πριν τις δηλώσεις

31 Χρησιμοποιώντας αρθρώματα μπορούμε να αποφύγουμε τη δήλωση του μεγέθους ενός πίνακα στις εξωτερικές διαδικασίες (υπορουτίνες και συναρτήσεις) κάνοντας το πρόγραμμα πιο ευέλικτο

32 Διαδικασίες - Αρθρώματα
Τo άρθρωμα (MODULE) είναι μια μη εκτελέσιμη από μόνη της μονάδα κώδικα που περιέχει Διαδιακασίες Μεταβλητές Τα αρθρώματα χρησιμοποιούνται Που θέλουμε να φτιάξουμε μια ενιαία ενότητα με ένα ή περισσότερα συναφή προγράμματα και κοινές μεταβλητές Θέλουμε να ορίσουμε κοινές μεταβλητές (public, global, common, ...) για το πρόγραμμά μας Οι διαδικασίες στα αρθρώματα συμπεριλαμβάνονται σαν εσωτερικές στην έκταση CONTAINS ... END Τα αρθρώματα χρησιμοποιούνται με την εντολή USE πριν από τις δηλώσεις

33 Παράδειγμα χρήσης Αρθρωμάτων

34 Χρήση μέρους ενός MODULE
Τα αρθρώματα χρησιμοποιούνται συνήθως σαν γενικές βιβλιοθήκες που αποτελούνται από συναφή προγράμματα Συχνά οι ανάγκες ενός προγράμματος χρησιμοποιούν μόνο μέρος από τέτοια γενικά αρθρώματα Προαιρετικά, προκειμένου να εξοικονομήσουμε πόρους του συστήματος, μπορούμε να δηλώσουμε ρητά τη χρήση κάθε υπομονάδας ενός αρθρώματος Αυτό γίνεται με τις παρακάτω συντάξεις εντολές USE όνομα αρθρώματος ONLY ονόματα διαδικασιών δήλωση τύπου, PRIVATE:: ονόματα μεταβλητών δήλωση τύπου, PUBLIC :: ονόματα μεταβλητών INTERFACE MODULE PROCEDURE όνομα διαδικασίας αρθρώματος END INTERFACE

35 Εναλλαγή δυναμικών δεδομένων μεταξύ διαδικασιών και κυρίως προγράμματος
Η χρήση πινάκων στις διαδικασίες μέχρι τώρα επέβαλλε την εκ των προτέρων γνώση των ακριβών διαστάσεων των πινάκων. Τι γίνεται στις περιπτώσεις που θέλουμε να εισάγουμε δυναμικά δεσμευμένους πίνακες από το κυρίως πρόγραμμα σαν όρισμα εισόδου της διαδικασίας; θέλουμε να εξάγουμε δυναμικά δεσμευμένους πίνακες εντός της διαδικασίας προς το κυρίως πρόγραμμα; Ο προγραμματιστής μπορεί να χρησιμοποιήσει Υποθετικού μεγέθους πίνακες (assumed shape arrays) Αρθρώματα για χρήση κοινών μεταβλητών

36 Assumed-Shape Arrays Τα διανύσματα αυτού του τύπου δανείζονται τη μορφή τους από πατρικά διανύσματα που συσχετίζονται με αυτά Μόνος περιορισμός είναι ότι πρέπει να είναι γνωστή εκ των προτέρων η τάξη τους

37 Παράδειγμα Χρήση πίνακα υποθετικού μεγέθους σαν είσοδο σε εξωτερική διαδικασία και επιστροφή δυναμικού πίνακα ως όρισμα εξόδου της υπορουτίνας MODULE dynam allocatable A Χρήση ενός εικονικού χώρου για τον Υ MODULE utils assumed-shape X allocatable Y Πέρασμα του Υ Πέρασμα του μεγέθους του Χ PROGRAM allocatable A

38 Γενική μορφή χρήσης δυναμικού πίνακα σαν όρισμα εισόδου/εξόδου διαδικασιών
Δέσμευση μνήμης Χρήση στο πρόγραμμα Χρήση σε εξ. διαδικασία Αποδέσμευση μνήμης

39 Εφαρμογές Εξίσωση του Colebrook Αδιάστατοι αριθμοί
Παραγωγή τυχαίων αριθμών Αμφιέρειστη δοκός με κατανεμημένο φορτίο Γραμμική Παρεμβολή

40 Εξίσωση του Colebrook Η εξίσωση του Colebrook χρησιμοποιείται για την εύρεση του συντελεστή τριβών κατά την τυρβώδη ροή ενός ρευστού σε αγωγο. Η επίλυση γίνεται μόνο με κάποια επαναληπτική διαδικασία (Εναλλακτικά η τιμή του Σ.Τ. μπορεί να βρεθεί από το διάγραμμα Moody) Τιμές για δοκιμή: D = [m] ks = [m] Re = [-] λ = [-]

41 Αδιάστατοι αριθμοί Οι αδιάστατοι αριθμοί ποσοτικοποιούν παρόμοια φυσικά μοντέλα Ένας αδιάστατος αριθμός μπορεί να χρησιμοποιηθεί στην ανάλυση πρωτότυπων μοδέλων για την πρόβλεψη παρόμοιων μοντέλων σε πλήρη κλίμακα. Ως συνήθως είναι ένας λόγος δύο φυσικών, γεομετρικών, μηχανικών, θερμικών ή χημικών ποσοτήτων Γνωστά παραδείγματα Αριθμός MACH Συντελεστής οπισθέλκουσας Γράψτε ένα πρόγραμμα που να περιέχει με τη μορφή συναρτήσεων ορισμένους αδιάστατους αριθμούς

42 Παραγωγή τυχαίων αριθμών
Η παραγωγή τυχαίων αριθμών είναι μια διαδικασία που συναντάται ευρέως στον προγραμματισμό Στην πραγματικότητα οι αριθμοί παράγονται βάσει κάποιου αλγορίθμου και είναι «ψευδοτυχαίοι» Στη Fortran η παραγωγή τυχαίων αριθμών γίνεται με τις συναρτήσεις της βιβλιοθήκης CALL RANDOM_SEED() Αρχικοποίηση του αλγορίθμου CALL RANDOM_NUMBER() Παραγωγή βαθμωτών ή πινάκων τυχαίων αριθμών

43 Αμφιέρειστη δοκός Να γραφεί πρόγραμμα που να υπολογίζει τις δυνάμεις (F) και τις ροπές (BΜ) κατά μήκος μίας αμφιέρειστης δοκού. Το τεχνικό πρόβλημα που θέλουμε να λύσουμε παρουσιάζεται στο παρακάτω σχήμα:          Οι τύποι που μας δίνουν τις δυνάμεις F(x) και τις ροπές BM(x) είναι:    Ο υπολογισμός της ροπής πραγματοποιείται βήμα-βήμα κατά μήκος της δοκού. Όσο περισσότερα είναι τα διαστήματα υπολογισμού (N), τόσο μικρότερο είναι το βήμα (dL) και τόσο μεγαλύτερη η ακρίβεια των αποτελεσμάτων. Το πλήθος των διαστημάτων υπολογισμού (Ν) ορίζει και τον αριθμό των επαναλήψεων που χρειάζονται για να υπολογιστεί όλη η δοκός. Τιμές: SL=5m, Q=20kN/m2, N=4 Απ.: για x=1.25, F(x)=25, M(x)=46.87

44 Γραμμική Παρεμβολή Γράψτε ένα πρόγραμμα που να κανει γραμμική παρεμβολή στα στοιχεία ενός αρχείου με βάση τις τιμές της πρώτης στήλης Το πρόγραμμα να χρησιμοποιεί διαδικασίες Για την εύρεση της θέσης των τιμών μεταξύ των οποίων θα γίνει η παρεμβολή Για την εκτέλεση της γραμμικής παρεμβολής


Κατέβασμα ppt "Ειδικά κεφάλαια και εφαρμογές"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google