Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεAspasia Speros Τροποποιήθηκε πριν 9 χρόνια
1
Καπετανάκης Γιάννης 19/11/2007 bilias@physics.uoc.gr ΗΥ0 - Ενότητα 4 Αρχές Προγραμματισμού (ΙΙ) Αρχιτεκτονική σύγχρονων επεξεργαστών Εισαγωγή στον προγραμματισμό Συναρτήσεις Compiler, linker, βιβλιοθήκες Ροή ελέγχου
2
Αρχιτεκτονική σύγχρονων επεξεργαστών 32 bit οι περισσότεροι μέγεθος καταχωρητών (registers) προσωρινή αποθήκευση δεδομένων αριθμοί, κείμενο είτε άλλα στοιχεία το μέγεθος μας περιορίζει !!!
3
Αναπαράσταση αριθμών στον επεξεργαστή Ακέραιοι (int) μέγεθος 32 bit μεγαλύτερος ο 2 32 -1=4.294.967.295 Προσημασμένοι ακέραιοι (signed int) μεγαλύτερος ο 2 31 -1 = 2.147.483.647 μικρότερος –(2 31 ) = -2.147.483.648
4
Αναπαράσταση αριθμών στον επεξεργαστή Μεγαλύτεροι ακέραιοι οι long μέγεθος 64 bit μεγαλύτερος ο 2 64 -1=18.446.744.073.709.551.615 2 καταχωρητές Μικρότεροι ακέραιοι οι short int μέγεθος 16 bit μεγαλύτερος ο 2 16 -1 = 65.535
5
Αναπαράσταση αριθμών στον επεξεργαστή Για μεγαλύτερους από 64 bit ή κλασματικούς αριθμούς, float scientific notation 1.874E-9 (δεκαδικούς) scientific notation 1.100110Ε1001 (δυαδικούς)
6
Single Precision 2 -1 + 2 -2 0.11 2 1.1 2 -01 Δυνάμεις του 2 Δυαδικός αριθμός Scientific Notation
7
Single Precision Ο επεξεργαστής τα 32 bit του float τα χωρίζει: 1) 1 bit για το πρόσημο του αριθμού 2) 8 bit για τον εκθέτη (του 2) 3) 23 bit για το κλασματικό κομμάτι
8
Κλασματικό κομμάτι Μέγεθος 23 bit Κανονικοποίηση. Άσσο πριν την υποδιαστολή Μικρότερη δύναμη η 2 -23 = 0.00000011920928955078 Αυτή είναι και η μέγιστη ακρίβεια Σφάλμα μετά το 6 ο δεκαδικό ψηφίο
9
Εκθετικό κομμάτι Μέγεθος 8 bit Καθορίζει τον μικρότερο και τον μεγαλύτερο αριθμό που μπορεί να αναπαρασταθεί Μεγαλύτερος: Μικρότερος:
10
Double Precision Χρησιμοποιούμε τους double που έχουν μέγεθος 64 bit 1) 1 bit για το πρόσημο του αριθμού 2) 11 bit για τον εκθέτη 10 ±308 μέγιστος και ελάχιστος 3) 52 bit για το κλασματικό κομμάτι σφάλμα μετά το 15 ο δεκαδικό ψηφίο
11
Μεγαλύτερη ακρίβεια Γίνεται με software. Με έξυπνους αλγόριθμους, σπάμε κατάλληλα τους αριθμούς έτσι ώστε να μην ξεπερνάνε το μέγεθος των καταχωρητών
12
64 bit Επεξεργαστές Όλα διπλασιάζονται εκτός από τους float και τους double Registers 64 bit Integers 64 bit Όχι απαραίτητα γρηγορότερα προγράμματα
13
CPUFrequencyRegister Size GP RegistersInteger Size (Long)Float Size (double - extended)Theor. Max Memory SizeSpecInt Pentium III 533 - 113032832 (64)32 (64 - 80)64GB464 Pentium 4 1500 - 340032832 (64)32 (64 - 80)64GB1705 Athlon XP 32832 (64)32 (64 - 80)4GB1080 Athlon 64 1800 - 2800641664 (128)32 (64 - 80)1PB1717 PA-RISC 2 64 (128)32 (64 - 80 -128) Itanium 2 900 - 1000 Ultra Sparc IV 1050 - 120064 8TB G4 350 - 142532 32 (64) 16GB G5 1800 - 2500643264 (128)32 (64)4TB Σύγκριση επεξεργαστών
14
Εισαγωγή στον προγραμματισμό Οι υπολογιστές χρησιμοποιούνται για να κάνουν γρήγορα πράξεις ή καλύτερα να εκτελούν εντολές Πρόσθεση, αφαίρεση κτλ. Όχι απαραίτητα μαθηματικής φύσης Δισεκατομμύρια εντολές σε έναν κύκλο
15
Machine Instructions Οι εντολές ονομάζονται machine instructions Δυαδικής φύσεως Το σύνολο των εντολών Γλώσσα Μηχανής Λίγες και διαφορετικές για κάθε αρχιτεκτονική
16
Assembly Κάθε εντολή έχει το δυαδικό της όνομα Η δυαδική, αριθμητική απεικόνιση εντολών, δυσκολεύει τον άνθρωπο Assembly: Κάθε εντολή έχει και ένα όνομα όπως add, push, store
17
Assembly Ενδιάμεσο στάδιο ανάμεσα στον άνθρωπο και την γλώσσα μηχανής Πιο κοντά στον υπολογιστή Ταχύτατη γλώσσα προγραμματισμού Πολλοί προγραμματίζουν σε assembly
18
main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax subl %eax, %esp movl $1, -4(%ebp) movl $2, -8(%ebp) subl $8, %esp movl -8(%ebp), %eax addl -4(%ebp), %eax pushl %eax pushl $.LC0 call printf addl $16, %esp leave ret 1 + 2 = 3 Ο assembler θα το μεταφράσει σε γλώσσα μηχανής Δυσανάγνωστα και μεγάλα προγράμματα
19
Υψηλού επιπέδου γλώσσες προγραμματισμού Πιο κοντά στον άνθρωπο Κατανοητά προγράμματα Μικρότερα προγράμματα Μερικές από αυτές: Fortran, BASIC, C, C++, Java
20
Διαδικασία παραγωγής εκτελέσιμων αρχείων Γλώσσα CΓλώσσα Assembly Γλώσσα Μηχανής c = a + badd $c, $a, $b10001110 01101010 00000000 00001100 1)Δημιουργία προγράμματος (κώδικας) 2)Μεταγλωττισμός (compile με τον compiler) 3)Linker 4)Assembler 5)Εκτελέσιμο - binary Σημαντικότερα βήματα
21
Παράδειγμα σε C /* code.c */ main() { int a = 1; int b = 2; int c; c = a+b; printf(“a+b= %d”, c); } Συνάρτηση Ορισμός Εκτύπωση μέσω της συνάρτησης printf
22
Παράδειγμα σε Fortran Συνάρτηση Ορισμός Εκτύπωση μέσω της συνάρτησης write C code.f PROGRAM main INTEGER a INTEGER b a = 1 b = 2 c = a+b WRITE(*,*) "a+b=", c END
23
Μεταγλωττισμός - Compilation Για κάθε γλώσσα υπάρχει και ο αντίστοιχος Compiler Compilation in C gcc code.c -o binary-name Compilation in Fortran g77 code.f -o binary-name GNU Compilers
24
Εκτέλεση Σε περιβάλλον Unix:./binary-name a+b = 3 Προσοχή στο PATH! Βάζουμε./ μπροστά από το αρχείο εάν το. δεν είναι στο $PATH μας
25
Συναρτήσεις στα Μαθηματικά Μαθηματικός αλγόριθμος Συγκεκριμένες αλγεβρικές πράξεις f(x)=2x f είναι το όνομα της συνάρτησης x είναι το όρισμα επιστρέφει το διπλάσιο του x f(x,y)=2x+y 2 ορίσματα, το x και το y
26
Συναρτήσεις στον Προγραμματισμό function(x, y) { apotelesma = 2*x + y; print(“Το αποτέλεσμα είναι “, apotelesma); } “function” είναι το όνομα της συνάρτησης τα x και y είναι τα ορίσματά της εκτυπώνει στην οθόνη το αποτέλεσμα που είναι ίσο με την μεταβλητή apotelesma πχ function(1,3) θα εκτυπώσει την φράση: «Το αποτέλεσμα είναι 5"
27
Γιατί συναρτήσεις; Εκτέλεση εντολών που επαναλαμβάνονται Μικρότερο μέγεθος προγραμμάτων Κατανοητός κώδικας Δομημένος και οργανωμένος προγραμματισμός
28
Εξωτερικές Βιβλιοθήκες Κάποιες συναρτήσεις χρειάζονται συνέχεια πχ: sin(), cos(), exp(), log() κτλ. Οι βιβλιοθήκες παρέχουν έτοιμες συναρτήσεις Διαφορετικές βιβλιοθήκες περιέχουν διαφορετικές ομάδες συναρτήσεων Συνήθως είναι οι βέλτιστες συναρτήσεις Δυνατότητα διασύνδεσης με το πρόγραμμα
29
Linking Η διασύνδεση ενός προγράμματος με μια ή περισσότερες βιβλιοθήκες ονομάζεται linking 1)Στατικά: Κατά τη μεταγλώττιση ο κώδικας της συνάρτησης «ενσωματώνεται» στο πρόγραμμα 2)Δυναμικά: Μόνο το όνομα της συνάρτησης και το όνομα της βιβλιοθήκης γίνονται γνωστά στο πρόγραμμα. Κατά τη διάρκεια της εκτέλεσης αναζητείται η απαραίτητη βιβλιοθήκη και χρησιμοποιείται Συνήθως ο linker καλείται από τον compiler
30
Ροή Ελέγχου Οι εντολές για τη ροή ελέγχου καθορίζουν τη σειρά με την οποία εκτελούνται οι υπολογισμοί Γνωριμία με τις βασικές εντολές Διαφορετικό συντακτικό σε κάθε γλώσσα αλλά παραπλήσια λειτουργία C Συντακτικό της C για ευκολότερη κατανόηση
32
α = 1 if (a=1) { εντολή 1 εντολή 2 } α = 1 if (a=2) { εντολή 1 εντολή 2 } α = 1 if (a=1) εντολή 1 εντολή 2 α = 1 if (a=2) εντολή 1 εντολή 2 Παράδειγμα 1 Παράδειγμα 3 Παράδειγμα 2 Παράδειγμα 4
33
if – else Η εντολή “if – else ” χρησιμοποιείται σαν εναλλακτική λύση στην επιλογή αποφάσεων if (παράσταση) εντολή 1 else εντολή 2 Αν η παράσταση είναι αληθής θα εκτελεστεί η εντολή 1 Σε κάθε άλλη περίπτωση θα εκτελεστεί η εντολή 2
35
else – if Με την εντολή “else – if ” ελέγχουμε μια ακολουθία από συνθήκες if (παράσταση 1) εντολή 1 else if ( παράσταση 2) εντολή 2 else if (παράσταση 3) εντολή 3 else εντολή 4
36
a = 2 if (a=1) Συνθήκη 1 print(“To α είναι 1”) else if (a=2) Συνθήκη 2 print(“Το α είναι 2”) else if (a=2) Συνθήκη 3 print(“Το α είναι πάλι 2”) else if (a=3) Συνθήκη 4 print(“Το α είναι 3”) else Συνθήκη 5 print(“Το α δεν είναι κάποιο από τα 1, 2, 3”) Παράδειγμα else - if
37
while Ο βρόχος “while” καθορίζει ποιες εντολές θα εκτελεστούν για όσο ισχύει μια παράσταση while (παράσταση ) { εντολή 1 εντολή 2... }
38
Παράδειγμα while α = 1 while (a < 4) { print(“Το α είναι “, α) a = a + 1 print(“Το α είναι “, α) }
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.