ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Σχετικά έγγραφα
Διαδικασιακός Προγραμματισμός

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Ενδεικτική περιγραφή μαθήματος

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

Εισαγωγή στον Προγραμματισμό

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Κεφάλαιο 1 Εισαγωγή στη C

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εισαγωγή στην γλώσσα προγραμματισμού C

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3

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

Μεθόδων Επίλυσης Προβλημάτων

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Βασικές Αρχές Προγραμματισμού

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Εισαγωγή στον Προγραμματισμό

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)

Μεθόδων Επίλυσης Προβλημάτων

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Είναι μια αλληλουχία κατάλληλων οδηγιών(εντολών) που εκτελεί ο υπολογιστής για την επίλυση ενός προβλήματος.

Εισαγωγή στην Πληροφορική

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

Προγραμματισμός Η/Υ (ΤΛ2007 )

Περιεχόμενα. Πρόλογος... 21

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Συναρτήσεις και διαδικασίες

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

Ανάπτυξη και Σχεδίαση Λογισμικού

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 4η Διάλεξη Πίνακες Συναρτήσεις

ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ. Σταυράκης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Προγραμματισμός Υπολογιστών με C++

12. Συναρτήσεις (Μέρος ΙI)

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Συναρτήσεις. Εισαγωγή

Προγραμματισμός ΙI (Θ)

Δομημένος Προγραμματισμός (ΤΛ1006)

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI

Προγραμματισμός I (Θ)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

11. Συναρτήσεις (Μέρος Ι)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Προγραμματισμό για ΗΜΥ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Πληροφορική 2. Αλγόριθμοι

Transcript:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 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

ΕΦΑΡΜΟΓΕΣ ΤΩΝ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 31

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