Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Σχετικά έγγραφα
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Δομημένος Προγραμματισμός

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Γενικά Μαθηματικά Ι. Ενότητα 14: Ολοκλήρωση Κατά Παράγοντες, Ολοκλήρωση Ρητών Συναρτήσεων Λουκάς Βλάχος Τμήμα Φυσικής

Διαδικασιακός Προγραμματισμός

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ιστορία της μετάφρασης

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Γενικά Μαθηματικά Ι. Ενότητα 9: Κίνηση Σε Πολικές Συντεταγμένες. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Εκκλησιαστικό Δίκαιο

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Εκκλησιαστικό Δίκαιο

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

Γενικά Μαθηματικά Ι. Ενότητα 17: Αριθμητική Ολοκλήρωση, Υπολογισμός Μήκους Καμπύλης Λουκάς Βλάχος Τμήμα Φυσικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Γενικά Μαθηματικά Ι. Ενότητα 5: Παράγωγος Πεπλεγμένης Συνάρτησης, Κατασκευή Διαφορικής Εξίσωσης. Λουκάς Βλάχος Τμήμα Φυσικής

ΑΡΙΣΤΟΤΕΛΕΙΟ ΑΝΟΙΚΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΚΑΔΗΜΑΪΚΑ ΘΕΣΣΑΛΟΝΙΚΗΣ ΜΑΘΗΜΑΤΑ Γενικά Μαθηματικά Ι Ενότητα 11 : Ακολουθίες και Σειρές Λουκάς Βλάχος Τμήμα Φυσικής

Ηλεκτρονικοί Υπολογιστές

Γενικά Μαθηματικά Ι. Ενότητα 1: Συναρτήσεις και Γραφικές Παραστάσεις. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Η γλώσσα προγραμματισμού C

Εισαγωγή στους Αλγορίθμους

Λογισμός 3. Ενότητα 19: Θεώρημα Πεπλεγμένων (γενική μορφή) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Ιστορία της μετάφρασης

Εισαγωγή στους Αλγορίθμους

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Γενικά Μαθηματικά Ι. Ενότητα 16: Ολοκλήρωση Τριγωνομετρικών Συναρτήσεων, Γενικευμένα Ολοκληρώματα Λουκάς Βλάχος Τμήμα Φυσικής

Γενικά Μαθηματικά Ι. Ενότητα 8: Εφαρμογές Σειρών Taylor. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Γενικά Μαθηματικά Ι. Ενότητα 7: Σειρές Taylor, Maclaurin. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Γενικά Μαθηματικά Ι. Ενότητα 13: Ακτίνα Σύγκλισης, Αριθμητική Ολοκλήρωση, Ολοκλήρωση Κατά Παράγοντες. Λουκάς Βλάχος Τμήμα Φυσικής

Εισαγωγή στους Υπολογιστές

ΓΕΝΙΚΗ ΚΑΙ ΑΝΟΡΓΑΝΗ ΧΗΜΕΙΑ

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Μηχανολογικό Σχέδιο Ι

Εκκλησιαστικό Δίκαιο

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Ηλεκτρονικοί Υπολογιστές

Δομημένος Προγραμματισμός

Οδοποιία IΙ. Ενότητα 14: Υπόδειγμα σύνταξης τευχών θέματος Οδοποιίας. Γεώργιος Μίντσης ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Γενικά Μαθηματικά Ι. Ενότητα 19: Υπολογισμός Εμβαδού και Όγκου Από Περιστροφή (2 ο Μέρος) Λουκάς Βλάχος Τμήμα Φυσικής

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

Αξιολόγηση μεταφράσεων ιταλικής ελληνικής γλώσσας

Εισαγωγή στους Αλγορίθμους

Παράκτια Τεχνικά Έργα

ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ. Γενικά Μαθηματικά Ι. Ενότητα 6: Ακρότατα Συνάρτησης. Λουκάς Βλάχος Τμήμα Φυσικής

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Οικονομία των ΜΜΕ. Ενότητα 7: Μορφές αγοράς και συγκέντρωση των ΜΜΕ

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Διπλωματική Ιστορία Ενότητα 2η:

Διοικητική Λογιστική

Δομημένος Προγραμματισμός

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Οντοκεντρικός Προγραμματισμός

Λογισμός 3. Ενότητα 18: Θεώρημα Πεπλεγμένων (Ειδική περίπτωση) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Προγραμματισμός Η/Υ. Αλγόριθμοι. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός H/Y Ενότητα 3: Πίνακες αριθμών και χαρακτήρων. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Γεωργική Εκπαίδευση Ενότητα 9

Εκκλησιαστικό Δίκαιο

Δομημένος Προγραμματισμός

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Διδακτική Πληροφορικής

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Δομημένος Προγραμματισμός

Υπόγεια Υδραυλική και Υδρολογία

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Οικονομετρία. Εξειδίκευση του υποδείγματος. Μορφή της συνάρτησης: Πολυωνυμική, αντίστροφη και αλληλεπίδραση μεταβλητών

Φ 619 Προβλήματα Βιοηθικής

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Διαγλωσσική μεταφορά και διαμεσολάβηση

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Βέλτιστος Έλεγχος Συστημάτων

Διαγλωσσική μεταφορά και διαμεσολάβηση

Οικονομετρία. Συστήματα συναληθευουσών εξισώσεων Το πρόβλημα της ταυτοποίησης. Τμήμα: Αγροτικής Οικονομίας & Ανάπτυξης. Διδάσκων: Λαζαρίδης Παναγιώτης

Πληροφορική. Ενότητα 1: Α. Οργάνωση μαθήματος. Β. Στοιχεία Προγραμματισμού -Προγραμματιστικές Δομές, Πρόγραμμα, Γλώσσες.

Εισαγωγή στον δομημένο προγραμματισμό

Ατομικά Δίκτυα Αρδεύσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 1: Εισαγωγή Στον Προγραμματισμό Νικόλαος Στεργιούλας Τμήμα Φυσικής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Γενικά Μαθηματικά Ι Τμήμα Φυσικής 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Γενικά Μαθηματικά Ι Τμήμα Φυσικής 3

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 1ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1

ΓΙΑΤΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ; Στα μαθηματικά και στη φυσική συχνά έχουμε να κάνουμε υπολογισμούς που ακολουθούν μια συγκεκριμένη διαδικασία ΠΑΡΑΔΕΙΓΜΑ: Εύρεση ρίζας Έστω ότι θέλουμε να υπολογίσουμε τη τρόπος είναι να σχηματίσουμε την εξίσωση f(x) =x 2 2=0 p 2. Ένας Αν η ρίζα είναι η x = x 0 (= 1.414213562...) τότε το ανάπτυγμα Taylor γύρω από τη ρίζα είναι 0 f(x) =f(x 0 )+f 0 (x 0 )(x x 0 )+... 2

ΓΙΑΤΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ; Άρα x 0 ' x f(x)/f 0 (x 0 ) και αν στην περιοχή της ρίζας f 0 (x) ' f 0 (x 0 ) τότε x 0 ' x f(x)/f 0 (x) και μπορούμε να δημιουργήσουμε την αναδρομική σχέση (μέθοδος Newton-Raphson) x (n+1) =[x (f/f 0 )] (n) Ξεκινάμε με μια αρχική εκτίμηση, π.χ. n =1:x (1) =1.0 3

ΓΙΑΤΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ; και υπολογίζουμε διαδοχικά: n x (n) x (n+1) f(x) 1 1.0 1.5 2.5e-01 2 1.5 1.41667 7e-03 3 1.41667 1.414216 6e-06 Η παραπάνω διαδικασία είναι ένας ΑΛΓΟΡΙΘΜΟΣ, που p μας επέτρεψε να υπολογίσουμε 2 ' 1.414216 4

ΑΝΑΛΥΣΗ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ Ο αλγόριθμος Newton-Raphson για το συγκεκριμένο παράδειγμα έχει την εξής δομή: n =1 αρχικοποίηση δείκτη x (n) =1.0 x (n+1) =[x x (n) = x (n+1) n n +1 f/f 0 ] (n) αρχικοποίηση μεταβλητής υπολογισμός νέας τιμής αντικατάσταση παλαιάς τιμής από νέας αύξηση δείκτη f(x) (n) < 1e 5 συνθήκη τερματισμού 5

ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΑΡΧΗ n =1 x (n) =1.0 x (n+1) =[x f/f 0 ] (n) x (n) = x (n+1) n n +1 ΝΑΙ f(x) (n) 10 5 ΟΧΙ ΤΕΛΟΣ 6

ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΑΡΧΗ n =1 x (n) =1.0 Εντολή x (n+1) =[x f/f 0 ] (n) x (n) = x (n+1) Εντολή n n +1 ΝΑΙ f(x) (n) 10 5 ΟΧΙ ΤΕΛΟΣ 7

ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΑΡΧΗ n =1 x (n) =1.0 x (n+1) =[x f/f 0 ] (n) x (n) = x (n+1) n n +1 Συνθήκη ΝΑΙ f(x) (n) 10 5 ΟΧΙ ΤΕΛΟΣ 8

ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΑΡΧΗ n =1 x (n) =1.0 Ακολουθία x (n+1) =[x f/f 0 ] (n) x (n) = x (n+1) n n +1 ΝΑΙ f(x) (n) 10 5 ΟΧΙ ΤΕΛΟΣ 9

ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΑΡΧΗ n =1 x (n) =1.0 x (n+1) =[x f/f 0 ] (n) x (n) = x (n+1) n n +1 Απόφαση ΝΑΙ f(x) (n) 10 5 ΟΧΙ ΤΕΛΟΣ 10

ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ ΑΡΧΗ n =1 x (n) =1.0 Επανάληψη x (n+1) =[x f/f 0 ] (n) x (n) = x (n+1) n n +1 ΝΑΙ f(x) (n) 10 5 ΟΧΙ ΤΕΛΟΣ 11

ΒΑΣΙΚΕΣ ΔΟΜΕΣ Οι βασικές δομές του προγραμματισμού είναι: Η ακολουθία εντολών είναι μια σειρά από εντολές που εκτελούνται διαδοχικά Η απόφαση ελέγχεται μια συνθήκη και αναλόγως εάν είναι αληθινή ή όχι εκτελείται μια εντολή ή κάποια άλλη Η επανάληψη όσο ισχύει μια συνθήκη επαναλαμβάνεται ένα μέρος του κώδικα 12

ΜΕΤΑΤΡΟΠΗ ΣΕ ΨΕΥΔΟΚΩΔΙΚΑ n =1 ΑΡΧΗ n = 1 x (n) =1.0 xold = 1.0 x (n+1) =[x f/f 0 ] (n) xnew = xold-f/df NΑΙ x (n) = x (n+1) n n +1 f(x) (n) 10 5 ΤΕΛΟΣ ΟΧΙ xold = xnew n = n+1 if(f>=1e-5) repeat else end 13

ΜΕΤΑΤΡΟΠΗ ΣΕ ΨΕΥΔΟΚΩΔΙΚΑ ΑΡΧΗ n =1 x (n) =1.0 n = 1 xold = 1.0 ΟΧΙ x (n+1) =[x f/f 0 ] (n) x (n) = x (n+1) n n +1 f(x) (n) 10 5 while ( f >=1e-5) f = xold^2-2.0 df = 2*xold xnew = xold-f/df xold = xnew n = n+1 else exit ΝΑΙ ΤΕΛΟΣ 14

ΜΕΤΑΤΡΟΠΗ ΣΕ ΨΕΥΔΟΚΩΔΙΚΑ ΑΡΧΗ n =1 x (n) =1.0 n = 1 xold = 1.0 f = 1.0 απαραίτητη αρχικοποίηση μεταβλητής ΟΧΙ x (n+1) =[x f/f 0 ] (n) x (n) = x (n+1) n n +1 f(x) (n) 10 5 while ( f >=1e-5) f = xold^2-2.0 df = 2*xold xnew = xold-f/df xold = xnew n = n+1 else exit ΝΑΙ ΤΕΛΟΣ 15

ΜΕΤΑΓΡΑΦΗ ΣΤΗ ΓΛΩΣΣΑ C n = 1 xold = 1.0 f = 1.0 n = 1; xold = 1.0; f = 1.0; while ( f >=1e-5) f = xold^2-2.0 df = 2*xold xnew = xold-f/df xold = xnew n = n+1 else exit while( fabs(f) >= 1e-5) { f = xold*xold-2.0; df = 2.0*xold; xnew = xold-f/df; xold = xnew; n = n+1; } άγκιστρα return 0; 16

ΜΕΤΑΓΡΑΦΗ ΣΤΗ ΓΛΩΣΣΑ C n = 1 xold = 1.0 f = 1.0 n = 1; xold = 1.0; f = 1.0; συνάρτηση απόλυτης τιμής while ( f >=1e-5) f = xold^2-2.0 df = 2*xold xnew = xold-f/df xold = xnew n = n+1 else exit while( fabs(f) >= 1e-5) { f = xold*xold-2.0; df = 2.0*xold; xnew = xold-f/df; xold = xnew; n = n+1; } return 0; 17

ΜΕΤΑΓΡΑΦΗ ΣΤΗ ΓΛΩΣΣΑ C n = 1 xold = 1.0 f = 1.0 n = 1; xold = 1.0; f = 1.0; while ( f >=1e-5) f = xold^2-2.0 df = 2*xold xnew = xold-f/df xold = xnew n = n+1 else exit while( fabs(f) >= 1e-5) { f = xold*xold-2.0; df = 2.0*xold; xnew = xold-f/df; xold = xnew; n = n+1; } return 0; τερματισμός προγράμματος 18

ΜΕΤΑΓΡΑΦΗ ΣΤΗ ΓΛΩΣΣΑ C n = 1 xold = 1.0 f = 1.0 δήλωση τύπου μεταβλητών int n; double xold, xnew, f, df; n = 1; xold = 1.0; f = 1.0; while ( f >=1e-5) f = xold^2-2.0 df = 2*xold xnew = xold-f/df xold = xnew n = n+1 else exit while( fabs(f) >= 1e-5) { f = xold*xold-2.0; df = 2.0*xold; xnew = xold-f/df; xold = xnew; n = n+1; } return 0; 19

ΠΡΟΣΘΗΚΗ ΕΝΤΟΛΗΣ ΕΚΤΥΠΩΣΗΣ int n; double xold, xnew, f, df; n=1; xold=1.0; f=1.0e-5; while(fabs(f) >= 1.0e-5) { f=xold*xold-2.0; df=2.0*xold; xnew=xold-f/df; f=xnew*xnew-2.0; xold=xnew; n=n+1; } printf( %6.5e\n",xnew); return 0; εντολή εκτύπωσης αποτελέσματος 20

ΠΡΟΣΘΗΚΗ HEADERS #include <stdio.h> #include <math.h> int main() { int n; double xold, xnew, f, df; Απαραίτητη δήλωση συναρτήσεων της C } n=1; xold=1.0; f=1.0e-5; while(fabs(f) >= 1.0e-5) { f=xold*xold-2.0; df=2.0*xold; xnew=xold-f/df; f=xnew*xnew-2.0; xold=xnew; n=n+1; } printf( %6.5e\n",xnew); return 0; 21

ΠΡΟΣΘΗΚΗ ΚΥΡΙΑΣ ΣΥΝΑΡΤΗΣΗΣ Απαραίτητη δήλωση κύριας συνάρτησης #include <stdio.h> #include <math.h> int main() { int n; double xold, xnew, f, df; n=1; xold=1.0; f=1.0e-5; } while(fabs(f) >= 1.0e-5) { f=xold*xold-2.0; df=2.0*xold; xnew=xold-f/df; f=xnew*xnew-2.0; xold=xnew; n=n+1; } printf( %6.5e\n",xnew); return 0; 22

ΟΛΟΚΛΗΡΩΜΕΝΟ ΠΡΟΓΡΑΜΜΑ C #include <stdio.h> #include <math.h> int main() { int n; double xold, xnew, f, df; n=1; xold=1.0; f=1.0e-5; } while(fabs(f) >= 1.0e-5) { f=xold*xold-2.0; df=2.0*xold; xnew=xold-f/df; f=xnew*xnew-2.0; xold=xnew; n=n+1; } printf("%6.5e\n",xnew); return 0; 23

ΜΕΤΑΓΛΩΤΤΙΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Ένας κώδικας για να τρέξει και να δώσει το αποτέλεσμα των πράξεων απαιτείται* πρώτα να μεταγλωττιστεί σε γλώσσα μηχανής (machine language). Η μεταγλώττιση γίνεται μέσω ειδικών προγραμμάτων μεταγλώττισης (compilers). Για κάθε γλώσσα προγραμματισμού υπάρχουν διάφοροι compilers και για διάφορα λειτουργικά συστήματα. *υπάρχουν και γλώσσες προγραμματισμού που είναι interpreted (μεταγλώττιση/εκτέλεση μία εντολή τη φορά) 24

http://rextester.com/runcode 25

http://www.tutorialspoint.com/compile_c_online.php 26

http://codelite.org/ 27

http://en.wikipedia.org/wiki/list_of_compilers#c_compilers Υπάρχουν πάνω από 50 compilers για τη γλώσσα C. 28

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Οι 100 δημοφιλέστερες γλώσσες προγραμματισμού: 29

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 30

ΕΦΑΡΜΟΓΕΣ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ http://lifehacker.com/learn-which-programming-language-to-choose-with-this-in-1669612111 31

ΕΞΕΛΙΞΗ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η γλώσσα C είναι μια γλώσσα ανώτερου επιπέδου (highlevel language) χωρίς την πολυπλοκότητα ή εξειδίκευση μεταγενέστερων γλωσσών. https://www.flickr.com/photos/dullhunk/4833512699/ 32

ΕΞΕΛΙΞΗ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η γλώσσα C είναι μια γλώσσα ανωτέρου επιπέδου (highlevel language) χωρίς την πολυπλοκότητα ή εξειδίκευση μεταγενέστερων γλωσσών. κατώτερου επιπέδου γλώσσες μηχανής 33

ΕΞΕΛΙΞΗ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η γλώσσα C είναι μια γλώσσα ανώτερου επιπέδου (highlevel language) χωρίς την πολυπλοκότητα ή εξειδίκευση μεταγενέστερων γλωσσών. κατώτερου επιπέδου γλώσσες μηχανής πιο πολύπλοκες γλώσσες ανώτερου επιπέδου 34

ΕΞΕΛΙΞΗ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η γλώσσα C είναι μια γλώσσα ανώτερου επιπέδου (highlevel language) χωρίς την πολυπλοκότητα ή εξειδίκευση μεταγενέστερων γλωσσών. κατώτερου επιπέδου γλώσσες μηχανής πιο πολύπλοκες γλώσσες ανώτερου επιπέδου εξειδικευμένες γλώσσες ανώτερου επιπέδου 35

ΕΞΕΛΙΞΗ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η γλώσσα C είναι μια γλώσσα ανώτερου επιπέδου (highlevel language) χωρίς την πολυπλοκότητα ή εξειδίκευση μεταγενέστερων γλωσσών. κατώτερου επιπέδου γλώσσες μηχανής πιο πολύπλοκες γλώσσες ανώτερου επιπέδου εξειδικευμένες γλώσσες ανώτερου επιπέδου 36

ΓΙΑΤΙ C ΩΣ ΠΡΩΤΗ ΓΛΩΣΣΑ; Η γλώσσα C είναι για τις άλλες γλώσσες ανώτερου επιπέδου ό,τι και τα λατινικά για τις νεότερες λατινογενείς γλώσσες (Ιταλικά, Γαλλικά, Ισπανικά). Το να ξεκινήσει κανείς να μαθαίνει προγραμματισμό με μια πιο εξειδικευμένη γλώσσα, όπως π.χ. με την Python, είναι σα να μαθαίνει να οδηγεί με αυτόματο αυτοκίνητο το πιο πιθανό είναι να μη μάθει ποτέ αργότερα να οδηγεί με ταχύτητες Για τους παραπάνω λόγους, η γλώσσα C ενδείκνυται ως μια πρώτη γλώσσα προγραμματισμού, παρόλη την αυστηρότητά της. 37

Η ΕΞΕΛΙΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΗ Η εξελικτική πορεία ενός προγραμματιστή είναι μηγραμμική: μήνας του μέλιτος ρώτα με ό,τι θες! Αυτοπεποίθηση απελπισία (δεν ξέρω τίποτα ) εντάξει τα καταφέρνω Ικανότητα 38

Η ΕΞΕΛΙΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΗ Η εξελικτική πορεία ενός προγραμματιστή είναι μηγραμμική: Αυτοπεποίθηση μήνας του μέλιτος ξεκινά η σύγχυση απελπισία (δεν ξέρω τίποτα ) εντάξει τα καταφέρνω ρώτα με ό,τι θες! Ικανότητα 39

Η ΕΞΕΛΙΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΗ Η εξελικτική πορεία ενός προγραμματιστή είναι μηγραμμική: Αυτοπεποίθηση μήνας του μέλιτος ξεκινά η σύγχυση απελπισία (δεν ξέρω τίποτα ) εντάξει τα καταφέρνω ρώτα με ό,τι θες! Ικανότητα 40

Η ΕΞΕΛΙΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΗ Η εξελικτική πορεία ενός προγραμματιστή είναι μηγραμμική: Αυτοπεποίθηση μήνας του μέλιτος ξεκινά η σύγχυση απελπισία (δεν ξέρω τίποτα ) εντάξει τα καταφέρνω ρώτα με ό,τι θες! Ικανότητα 41

Η ΕΞΕΛΙΞΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΗ Η εξελικτική πορεία ενός προγραμματιστή είναι μηγραμμική: Αυτοπεποίθηση μήνας του μέλιτος ξεκινά η σύγχυση απελπισία (δεν ξέρω τίποτα ) εντάξει τα καταφέρνω ρώτα με ό,τι θες! Ικανότητα 42

Η ΓΛΩΣΣΑ C - ΣΥΝΤΟΜΗ ΑΝΑΔΡΟΜΗ Δημιουργήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 στα εργαστήρια Bell Labs της εταιρείας AT&T. Ο ν ο μ ά σ τ η κ ε C δ ι ό τ ι κ λ η ρ ο ν ό μ η σ ε π ο λ λ ά χαρακτηριστικά από μια προηγούμενη γλώσσα που ονομαζόταν B. Ο κύριος σκοπός της δημιουργίας της γλώσσας C ήταν η χρήση της για την ανάπτυξη του λειτουργικού συστήματος UNIX (το οποίο μετεξελίχθηκε στο Linux για υπολογιστές και στο Android για κινητά/τάμπλετ). 43

ANSI C To 1989 ο οργανισμός ANSI (American National Standard Institute) εισήγαγε το πρότυπο της ANSI C, το οποίο να καθορίζει αυστηρά μια σειρά από κανόνες, και χαρακτηριστικά της γλώσσας. Υποστηρίζεται από όλους τους μεταγλωττιστές C, άρα έχει μεγάλη φορητότητα. Στο τέλος της δεκαετίας του 90 δημιουργήθηκε το νεότερο πρότυπο C99. Οι περισσότεροι μεταγλωττιστές το υποστηρίζουν εν μέρει, λίγοι όμως το υποστηρίζουν εξ ολοκλήρου, γι αυτό έχει μικρή φορητότητα. Το πρότυπο ANSI C παραμένει το επικρατέστερο. 44

ΚΥΡΙΑ ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΗΣ C Απλό συντακτικό και λίγες δεσμευμένες λέξεις Φορητότητα κώδικα (εκτελείται σε διαφορετικά λειτουργικά συστήματα) Υποστηρίζει υπορουτίνες και συναρτήσεις (δομημένος προγραμματισμός) Παρέχει έτοιμες συναρτήσεις 45

ΚΥΡΙΑ ΜΕΙΟΝΕΚΤΗΜΑΤΑ ΤΗΣ C Έλλειψη αυστηρών περιορισμών (ο μεταγλωττιστής δεν θα αντιληφθεί όλα τα σφάλματα) Ένα πρόγραμμα C μπορεί να γραφεί με αρκετά πολύπλοκο τρόπο ακόμα και αν αποτελείται από λίγες γραμμές κώδικα Δεν είναι αντικειμενοστρεφής γλώσσα όπως η C++. 46

ΚΥΚΛΟΣ ΔΗΜΙΟΥΡΓΙΑΣ ΕΝΟΣ ΚΩΔΙΚΑ C Συγγραφή κώδικα (edit) Μεταγλώττιση (compile) Σύνδεση με βιβλιοθήκες (Link)* Εκτέλεση (run/execute) *Η σύνδεση με διάφορες βιβλιοθήκες γίνεται συνήθως αυτόματα, σε προχωρημένους κώδικες μπορεί να χρειασθεί να καθορίσουμε επιπλέον παραμέτρους 47

ΕΝΑ ΠΡΩΤΟ ΑΠΛΟ ΠΡΟΓΡΑΜΜΑ #include <stdio.h> int main(void) { ωοι printf("hello, World!\n"); } return 0; Αφού γράψουμε το πρόγραμμα, το σώζουμε ως ένα αρχείο με κατάληξη.c (π.χ. hello.c ). 48

#include <stdio.h> Η ΟΔΗΓΙΑ #include int main(void) { printf("hello, World!\n"); } return 0; Η οδηγία #include ενσωματώνει στον κώδικα εντολές που βρίσκονται σε κάποιο άλλο αρχείο. 49

#include <stdio.h> ΤΟ ΑΡΧΕΙΟ #<stdio.h> int main(void) { printf("hello, World!\n"); } return 0; Το αρχείο stdio.h (standard input output) περιέχει τις δηλώσεις των συναρτήσεων για εμφάνιση δεδομένων στην οθόνη (output) και εισαγωγή δεδομένων από το πληκτρολόγιο (input). 50

Η ΟΔΗΓΙΑ #include ΚΑΙ ΤΑ HEADER FILES Η οδηγία #include ξεκινάει πάντα με το σύμβολο # και δεν τελειώνει με ; Τα αρχεία με κατάληξη.h περιέχουν δηλώσεις συναρτήσεων και ονομάζονται header files. Όταν το όνομα του αρχείου είναι γραμμένο μέσα σε < >, τότε ο μεταγλωττιστής ψάχνει σε προεπιλεγμένους φακέλους του συστήματος. Μπορούμε να ενσωματώσουμε και δικά μας αρχεία έχοντας το όνομα γραμμένο μέσα σε. Ο μεταγλωττιστής ψάχνει στον ίδιο φάκελο που βρίσκεται το κυρίως πρόγραμμα. 51

#include <stdio.h> Η ΣΥΝΑΡΤΗΣΗ main() int main(void) { printf("hello, World!\n"); } return 0; Η συνάρτηση main(void) υπάρχει υποχρεωτικά σε κάθε πρόγραμμα C και είναι η κύρια συνάρτηση του προγράμματος. 52

#include <stdio.h> Η ΣΥΝΑΡΤΗΣΗ main() int main(void) { printf("hello, World!\n"); } return 0; To void (κενό) δηλώνει πως δε χρησιμοποιούμε ορίσματα στη συνάρτηση (μελλοντικά, θα χρησιμοποιήσουμε). 53

Η ΣΥΝΑΡΤΗΣΗ main() Η εκτέλεση του προγράμματος ξεκινάει από την πρώτη εντολή που υπάρχει μέσα στη συνάρτηση main(). Η εκτέλεση του προγράμματος τελειώνει με την τελευταία εντολή που υπάρχει μέσα στη συνάρτηση main() ή και νωρίτερα με μία εντολή εξόδου. Όλες οι εντολές της συνάρτησης main() αλλά και κάθε άλλης συνάρτησης πρέπει να περιέχονται μέσα σε άγκιστρα { }. Μπορούμε να γράψουμε main() αντί για main(void), (δε συμφωνεί με το πρότυπο ANSI, αλλά είναι αποδεκτό). 54

#include <stdio.h> Η ΕΝΤΟΛΗ printf() int main(void) { printf("hello, World!\n"); } return 0; Η εντολή printf() είναι δηλωμένη στο <stdio.h> και τυπώνει ό,τι βρίσκεται μέσα σε στην οθόνη. 55

#include <stdio.h> Η ΕΝΤΟΛΗ printf() int main(void) { printf("hello, World!\n"); } return 0; Ο χαρακτήρας \n δημιουργεί στο τέλος μια νέα γραμμή (new line), όπως το πλήκτρο Enter όταν πληκτρολογούμε. 56

#include <stdio.h> Ο ΤΥΠΟΣ ΤΗΣ ΜΑΙΝ int main(void) { printf("hello, World!\n"); } return 0; Στο συγκεκριμένο παράδειγμα, δηλώνουμε πως ο τύπος της main() είναι int, δηλαδή στο τέλος πρέπει να λάβει ως τιμή κάποιον ακέραιο αριθμό. 57

#include <stdio.h> Η ΕΝΤΟΛΗ return int main(void) { printf("hello, World!\n"); } return 0; Η εντολή return δίνει τιμή στον ακέραιο αριθμό της main() και τερματίζεται το πρόγραμμα. Συμβατικά, χρησιμοποιούμε το 0 για να δηλώσουμε τον ομαλό τερματισμό του προγράμματος. 58

ΣΧΟΛΙΑ #include <stdio.h> int main(void) { /* Εκτύπωσε µια φράση */ printf("hello, World!\n ); /* Τερµατισµός προγράµµατος */ } return 0; Τα σχόλια περιλαμβάνονται μέσα σε /* */. (κάποιοι compilers αναγνωρίζουν και το // στην αρχή μόνο κάθε γραμμής) 59

Σημείωμα Αναφοράς Copyright Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης, Νικόλαος Στεργιούλας «Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική». Έκδοση: 1.0. Θεσσαλονίκη 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://opencourses.auth.gr/eclass_courses. Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Γενικά Μαθηματικά Ι Τμήμα Φυσικής

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά - Παρόμοια Διανομή [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. [1] http://creativecommons.org/licenses/by-sa/4.0/ Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Γενικά Μαθηματικά Ι Τμήμα Φυσικής

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Τέλος ενότητας Επεξεργασία: Νικόλαος Τρυφωνίδης Θεσσαλονίκη, 20/09/2015

ΣΗΜΕΙΏΜΑΤΑ

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Γενικά Μαθηματικά Ι Τμήμα Φυσικής