Καπετανάκης Γιάννης 19/11/2007 ΗΥ0 - Ενότητα 4 Αρχές Προγραμματισμού (ΙΙ) Αρχιτεκτονική σύγχρονων επεξεργαστών Εισαγωγή στον προγραμματισμό.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

Επιμέλεια: Τίκβα Χριστίνα
5 Οργάνωση υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών ã Εκδόσεις Κλειδάριθμος.
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Εισαγωγή στις Τεχνολογίες της Πληροφορικής και των Επικοινωνιών
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
Αρχιτεκτονική Υπολογιστών Γλώσσες Μηχανής
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
Εισαγωγή στους Η/Υ Πίνακες.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
ΜΑΘ-3122/106 Προγραμματισμός
Τύποι πραγματικών αριθμών
Εντολες Επιλογης (Selection)
Εισαγωγή στο MATLAB.
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΜΑΘ-3122/106 Γλώσσα Προγραμματισμού
ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑ 1.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Τα θέματα μας σήμερα Ηλεκτρονικοί υπολογιστές Υλικό και λογισμικό
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Ολυμπιάδα Πληροφορικής
ΑΡΧΙΤΕΚΤΟΝΙΚΗ & ΟΡΓΑΝΩΣΗ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 1 Εισαγωγή
ΣΥΝΑΡΤΗΣΕΙΣ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Ενότητα Α.4. Δομημένος Προγραμματισμός
Για τη διεκπεραίωση ενός προβλήματος πρέπει να ακολουθηθεί η εξής διαδικασία:  να γραφεί ο αλγόριθμος να συνταχθεί το πρόγραμμα σε γλώσσα υψηλού επιπέδου.
1.5 Γλώσσες Προγραμματισμού
ΛΑΔΑΚΑΚΟΣ ΘΑΛΗΣ Α.Μ ΔΙΑΧΕΙΡΗΣΗ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΜΑΘ3122/106 – Γλώσσα προγραμματισμούΞενοφών Ζαμπούλης ΜΑΘ3122/106 Γλώσσα προγραμματισμού Συναρτήσεις.
Από την ιδέα μέχρι το λογισμικό. Ξεκινώντας από το πρόβλημα...
Τμήμα Πληροφορικής και Τηλεπικοινωνιών Κ. Χαλάτσης, Εισαγωγή στην Επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών Πανεπιστήμιο Αθηνών 1 Παράσταση Πληροφοριών.
Διαφάνειες παρουσίασης #2
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Επιστημονικός Υπολογισμός Ι Πρώτο Εργαστήριο Εισαγωγή στο matlab 15 Οκτωβρίου 2010 Γιώργος Δρακόπουλος ΤΜΗΥΠ.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 getchar() /* char_count.c A program to count characters of input. */ main() { int c ; int count = 0; while.
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Εισαγωγή στην Έννοια του Αλγορίθμου και στον Προγραμματισμό
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 5: Γνωριμία με το Λογισμικό
Γλώσσες προγραμματισμού Ένας αλγόριθμος όταν περιγραφεί με μια μορφή που τη δέχεται ένας υπολογιστής, λέγεται πρόγραμμα (prοgram, prοgramme)
ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
Προγραμματισμός Βασικές Έννοιες.
Γιώργος Μαγουλάκης Εξάμηνο: Εαρινό 2015 ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Τμ. Μηχανικών Πληροφορικής.
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ «Εισαγωγή στον οντοκεντρικό προγραμματισμό (βασική εισαγωγή στο περιβάλλον εργασίας)» Ρουσσάκης Ιωάννης, ΤΕΙ Κρήτης,
Εισαγωγή στον προγραμματισμό Μέρος 3 ο Προγραμματιστικά περιβάλλοντα § 6.7.
Πληροφορική 2 Γλώσσες Προγραμματισμού 1. Γλώσσες προγραμματσιμού  Επιτρέπουν την κωδικοποίηση των αλγορίθμων  Η εκτέλεση ενός προγράμματος θα πρέπει.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Εισαγωγή στην Python.
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Εφαρμογές Υπολογιστών
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΔΟΜΕΣ ΕΛΕΓΧΟΥ(if-else, switch) και Λογικοί τελεστές / παραστάσεις
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
2ο ΓΥΜΝΑΣΙΟ ΣΗΤΕΙΑΣ - ΤΑΞΗ Γ'
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
ΗΜΥ 210: Λογικός Σχεδιασμός
Μεταγράφημα παρουσίασης:

Καπετανάκης Γιάννης 19/11/2007 ΗΥ0 - Ενότητα 4 Αρχές Προγραμματισμού (ΙΙ) Αρχιτεκτονική σύγχρονων επεξεργαστών Εισαγωγή στον προγραμματισμό Συναρτήσεις Compiler, linker, βιβλιοθήκες Ροή ελέγχου

Αρχιτεκτονική σύγχρονων επεξεργαστών 32 bit οι περισσότεροι μέγεθος καταχωρητών (registers)  προσωρινή αποθήκευση δεδομένων  αριθμοί, κείμενο είτε άλλα στοιχεία  το μέγεθος μας περιορίζει !!!

Αναπαράσταση αριθμών στον επεξεργαστή Ακέραιοι (int) μέγεθος 32 bit μεγαλύτερος ο = Προσημασμένοι ακέραιοι (signed int) μεγαλύτερος ο = μικρότερος –(2 31 ) =

Αναπαράσταση αριθμών στον επεξεργαστή Μεγαλύτεροι ακέραιοι οι long μέγεθος 64 bit μεγαλύτερος ο = καταχωρητές Μικρότεροι ακέραιοι οι short int μέγεθος 16 bit μεγαλύτερος ο =

Αναπαράσταση αριθμών στον επεξεργαστή Για μεγαλύτερους από 64 bit ή κλασματικούς αριθμούς, float scientific notation 1.874E-9 (δεκαδικούς) scientific notation Ε1001 (δυαδικούς)

Single Precision Δυνάμεις του 2 Δυαδικός αριθμός Scientific Notation

Single Precision Ο επεξεργαστής τα 32 bit του float τα χωρίζει: 1) 1 bit για το πρόσημο του αριθμού 2) 8 bit για τον εκθέτη (του 2) 3) 23 bit για το κλασματικό κομμάτι

Κλασματικό κομμάτι Μέγεθος 23 bit Κανονικοποίηση. Άσσο πριν την υποδιαστολή Μικρότερη δύναμη η = Αυτή είναι και η μέγιστη ακρίβεια Σφάλμα μετά το 6 ο δεκαδικό ψηφίο

Εκθετικό κομμάτι Μέγεθος 8 bit Καθορίζει τον μικρότερο και τον μεγαλύτερο αριθμό που μπορεί να αναπαρασταθεί Μεγαλύτερος: Μικρότερος:

Double Precision Χρησιμοποιούμε τους double που έχουν μέγεθος 64 bit 1) 1 bit για το πρόσημο του αριθμού 2) 11 bit για τον εκθέτη 10 ±308 μέγιστος και ελάχιστος 3) 52 bit για το κλασματικό κομμάτι σφάλμα μετά το 15 ο δεκαδικό ψηφίο

Μεγαλύτερη ακρίβεια Γίνεται με software. Με έξυπνους αλγόριθμους, σπάμε κατάλληλα τους αριθμούς έτσι ώστε να μην ξεπερνάνε το μέγεθος των καταχωρητών

64 bit Επεξεργαστές Όλα διπλασιάζονται εκτός από τους float και τους double Registers 64 bit Integers 64 bit Όχι απαραίτητα γρηγορότερα προγράμματα

CPUFrequencyRegister Size GP RegistersInteger Size (Long)Float Size (double - extended)Theor. Max Memory SizeSpecInt Pentium III (64)32 ( )64GB464 Pentium (64)32 ( )64GB1705 Athlon XP (64)32 ( )4GB1080 Athlon (128)32 ( )1PB1717 PA-RISC 2 64 (128)32 ( ) Itanium Ultra Sparc IV TB G (64) 16GB G (128)32 (64)4TB Σύγκριση επεξεργαστών

Εισαγωγή στον προγραμματισμό Οι υπολογιστές χρησιμοποιούνται για να κάνουν γρήγορα πράξεις ή καλύτερα να εκτελούν εντολές Πρόσθεση, αφαίρεση κτλ. Όχι απαραίτητα μαθηματικής φύσης Δισεκατομμύρια εντολές σε έναν κύκλο

Machine Instructions  Οι εντολές ονομάζονται machine instructions  Δυαδικής φύσεως  Το σύνολο των εντολών Γλώσσα Μηχανής  Λίγες και διαφορετικές για κάθε αρχιτεκτονική

Assembly Κάθε εντολή έχει το δυαδικό της όνομα Η δυαδική, αριθμητική απεικόνιση εντολών, δυσκολεύει τον άνθρωπο Assembly: Κάθε εντολή έχει και ένα όνομα όπως add, push, store

Assembly Ενδιάμεσο στάδιο ανάμεσα στον άνθρωπο και την γλώσσα μηχανής Πιο κοντά στον υπολογιστή Ταχύτατη γλώσσα προγραμματισμού Πολλοί προγραμματίζουν σε assembly

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 = 3 Ο assembler θα το μεταφράσει σε γλώσσα μηχανής Δυσανάγνωστα και μεγάλα προγράμματα

Υψηλού επιπέδου γλώσσες προγραμματισμού Πιο κοντά στον άνθρωπο Κατανοητά προγράμματα Μικρότερα προγράμματα Μερικές από αυτές: Fortran, BASIC, C, C++, Java

Διαδικασία παραγωγής εκτελέσιμων αρχείων Γλώσσα CΓλώσσα Assembly Γλώσσα Μηχανής c = a + badd $c, $a, $b )Δημιουργία προγράμματος (κώδικας) 2)Μεταγλωττισμός (compile με τον compiler) 3)Linker 4)Assembler 5)Εκτελέσιμο - binary Σημαντικότερα βήματα

Παράδειγμα σε C /* code.c */ main() { int a = 1; int b = 2; int c; c = a+b; printf(“a+b= %d”, c); } Συνάρτηση Ορισμός Εκτύπωση μέσω της συνάρτησης printf

Παράδειγμα σε Fortran Συνάρτηση Ορισμός Εκτύπωση μέσω της συνάρτησης write C code.f PROGRAM main INTEGER a INTEGER b a = 1 b = 2 c = a+b WRITE(*,*) "a+b=", c END

Μεταγλωττισμός - Compilation Για κάθε γλώσσα υπάρχει και ο αντίστοιχος Compiler Compilation in C gcc code.c -o binary-name Compilation in Fortran g77 code.f -o binary-name GNU Compilers

Εκτέλεση Σε περιβάλλον Unix:./binary-name a+b = 3 Προσοχή στο PATH! Βάζουμε./ μπροστά από το αρχείο εάν το. δεν είναι στο $PATH μας

Συναρτήσεις στα Μαθηματικά Μαθηματικός αλγόριθμος Συγκεκριμένες αλγεβρικές πράξεις f(x)=2x  f είναι το όνομα της συνάρτησης  x είναι το όρισμα  επιστρέφει το διπλάσιο του x f(x,y)=2x+y  2 ορίσματα, το x και το y

Συναρτήσεις στον Προγραμματισμό function(x, y) { apotelesma = 2*x + y; print(“Το αποτέλεσμα είναι “, apotelesma); } “function” είναι το όνομα της συνάρτησης τα x και y είναι τα ορίσματά της εκτυπώνει στην οθόνη το αποτέλεσμα που είναι ίσο με την μεταβλητή apotelesma πχ function(1,3) θα εκτυπώσει την φράση: «Το αποτέλεσμα είναι 5"

Γιατί συναρτήσεις; Εκτέλεση εντολών που επαναλαμβάνονται Μικρότερο μέγεθος προγραμμάτων Κατανοητός κώδικας Δομημένος και οργανωμένος προγραμματισμός

Εξωτερικές Βιβλιοθήκες Κάποιες συναρτήσεις χρειάζονται συνέχεια πχ: sin(), cos(), exp(), log() κτλ. Οι βιβλιοθήκες παρέχουν έτοιμες συναρτήσεις Διαφορετικές βιβλιοθήκες περιέχουν διαφορετικές ομάδες συναρτήσεων Συνήθως είναι οι βέλτιστες συναρτήσεις Δυνατότητα διασύνδεσης με το πρόγραμμα

Linking Η διασύνδεση ενός προγράμματος με μια ή περισσότερες βιβλιοθήκες ονομάζεται linking 1)Στατικά: Κατά τη μεταγλώττιση ο κώδικας της συνάρτησης «ενσωματώνεται» στο πρόγραμμα 2)Δυναμικά: Μόνο το όνομα της συνάρτησης και το όνομα της βιβλιοθήκης γίνονται γνωστά στο πρόγραμμα. Κατά τη διάρκεια της εκτέλεσης αναζητείται η απαραίτητη βιβλιοθήκη και χρησιμοποιείται Συνήθως ο linker καλείται από τον compiler

Ροή Ελέγχου Οι εντολές για τη ροή ελέγχου καθορίζουν τη σειρά με την οποία εκτελούνται οι υπολογισμοί  Γνωριμία με τις βασικές εντολές  Διαφορετικό συντακτικό σε κάθε γλώσσα αλλά παραπλήσια λειτουργία C  Συντακτικό της C για ευκολότερη κατανόηση

α = 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

if – else Η εντολή “if – else ” χρησιμοποιείται σαν εναλλακτική λύση στην επιλογή αποφάσεων if (παράσταση) εντολή 1 else εντολή 2 Αν η παράσταση είναι αληθής θα εκτελεστεί η εντολή 1 Σε κάθε άλλη περίπτωση θα εκτελεστεί η εντολή 2

else – if Με την εντολή “else – if ” ελέγχουμε μια ακολουθία από συνθήκες if (παράσταση 1) εντολή 1 else if ( παράσταση 2) εντολή 2 else if (παράσταση 3) εντολή 3 else εντολή 4

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

while Ο βρόχος “while” καθορίζει ποιες εντολές θα εκτελεστούν για όσο ισχύει μια παράσταση while (παράσταση ) { εντολή 1 εντολή 2... }

Παράδειγμα while α = 1 while (a < 4) { print(“Το α είναι “, α) a = a + 1 print(“Το α είναι “, α) }