1 / 44

Εισαγωγή στους Η/Υ

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

kelvin
Download Presentation

Εισαγωγή στους Η/Υ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  10. ΑΡΧΕΙΑ

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

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

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

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

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

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

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

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

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

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

  21. ΔΙΑΔΙΚΑΣΙΕΣ

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

  23. OPTIONAL και PRESENT • Η ιδιότητα OPTIONALχρησιμοποιείται για να υποδηλώσει ότι μια ή περισσότερες μεταβλητές μιας διαδικασίας δεν είναι αναγκαίο να χρησιμοποιηθούν κατά την κλήση της • Συνδυάζεται με την εγγενή συνάρτηση PRESENT, η οποία επιστρέφει ένα λογικό αποτέλεσμα ανάλογα με το αν κάποια μεταβλητή έχει χρησιμοποιηθεί ή όχι κατά την κλήση της διαδικασίας • Αν χρησιμοποιείται η OPTIONALθα πρέπει να λαμβάνονται υπόψη κατά τη σύνταξη του κώδικα όλες οι πιθανές περιπτώσεις και η θέση των ορισμάτων • Γνωστά παραδείγματα • Open • MIN (πίνακες) • ...

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

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

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

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

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

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

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

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

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

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

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

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

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

  37. Αμφιέρειστη δοκός • Να γραφεί πρόγραμμα που να υπολογίζει τις δυνάμεις (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

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

More Related