ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Σχετικά έγγραφα
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

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

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

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

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

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

Επεξεργασία κειμένου και συμβολοσειρών σε C

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 2α: Εισαγωγή στη C (Μέρος Πρώτο)

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

Υπολογισμός - Εντολές Επανάληψης

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

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

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

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

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

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

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

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

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

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Διδάσκων: Δημήτριος Βαρσάμης

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 8: Συναρτήσεις. Κ.

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Τύποι Δεδομένων Είσοδος/Έξοδος

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

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

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

Προχωρημένες έννοιες προγραμματισμού σε C

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

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

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Συντακτικό Γλώσσας. Αλφάβητο. #2.. Εισαγωγή στη C (Μέρος Πρώτο)

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

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Εισαγωγή στους Η/Υ και τις Εφαρμογές Ενότητα 5: Επεξεργασία δεδομένων με τη γλώσσα προγραμματισμού python Υπο-ενότητα 5.2: Συμβολοσειρές-Έλεγχος Ροής

Δομές Δεδομένων. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

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

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

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

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

Πληροφορική ΙΙ Θεματική Ενότητα 5

Transcript:

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κεφάλαιο 2 Επιμέλεια: Βασίλης Παλιουράς, Αναπληρωτής Καθηγητής Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Σταύρος Νούσιας, Βοηθός Ερευνητή Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τυπου άδειας χρησης, η άδεια χρησης αναφερεται ρητώς. 2

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

Ανάπτυξη Το παρόν εκπαιδευτικό υλικό αναπτύχθηκε στο τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών του Πανεπιστημίου Πατρών 4

Μερικές διαφορές python, C Στατικοί τύποι δυναμικοί τύποι Διαθέσιμοι ή κατασκευασμένοι Οργάνωση προγράμματος Κώδικας μόνο σε συναρτήσεις Επιτρέπονται δηλώσεις εκτός συναρτήσεων Υποχρεωτικά δηλώσεις ονομάτων Τύπων, μεταβλητών, Κατάλληλες δηλώσεις αξιοποιούν το type checking Μπλοκ κώδικα με { αντί στοίχιση ανά γραμμή Θα δούμε και άλλες 5

Αξιοποίηση αφαιρετικότητας με διεργασίες #include <stdio.h> int computegcd(int, int); int main ( ) { int a, b; int gcd; scanf ("%d %d", &a, &b) ; gcd = computegcd (a, b); printf("%d\n", gcd); int computegcd(int a, int b) { int result; int i = a, j = b; while (i!= j) { if ( i > j) i = i - j ; else j = j - i; return i; 6

Dev-cpp File > New > Project Console application C project Command line gcc test.c o test.exe 7

Βήμα 1 Πρώτο Πρόγραμμα σε C Διάβασε τον πρώτο αριθμό Διάβασε το δεύτερο αριθμό Διάβασε τον τρίτο αριθμό Υπολόγισε το άθροισμα Τύπωσε το άθροισμα a b c sum ενέργειες (ρήματα) δεδομένα 8

Πρώτο Πρόγραμμα σε C Ρήματα => διεργασίες => κλήσεις συναρτήσεων int a, b, c, sum; Διάβασε τον a Διάβασε το b Διάβασε τον c Υπολόγισε το sum Τύπωσε το sum scanf("%d", &a); scanf("%d", &b); scanf("%d, &c); sum = a + b + c; printf("the sum is: %d\n", sum); 9

#include <stdio.h> Δεύτερο Πρόγραμμα σε C main ( ) { int a, b, c, sum; scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); τι κάνει; sum = a + b + c; printf ("sum is %d", sum); 10

Καλές επιλογές ονομάτων => Ευανάγνωστος κώδικας i= 120; if (i>j) func1(); else func2(); velocity = 120; if (velocity > max_velocity) decrease_velocity( ); else increase_velocity( ); 11

Μέχρι τώρα... Αφαιρετικότητα Ως εργαλείο για την αντιμετώπιση της πολυπλοκότητας Σχεδιασμός Προγράμματος Αναφέραμε την Αυξητική Ανάπτυξη Προγράμματος Υποστηρίζει top-down ανάπτυξη Διευκολύνει την ανάπτυξη του προγράμματος διευκολύνει τον έλεγχο του κώδικα 12

Βασική μέθοδος Αυξητική ανάπτυξη προγράμματος (incremental development) Να γραφεί ένα πρόγραμμα που διαβάζει έναν αριθμό, να υπολογίζει την τρίτη δύναμή του, και στη συνέχεια να τυπώνει το αποτέλεσμα. 13

Παράδειγμα Διάβασε έναν αριθμό Υπολόγισε την τρίτη δύναμή του Τύπωσε το αποτέλεσμα number power power int number, power; Διάβασε number Υπολόγισε power Τύπωσε power diabase() ypologisepower() typwse() 14

Σχεδίαση top-down main( ) { int number, power; number = diabase( ); power = ypologisepower(number ); typwse (power ); 15

Έκδοση 0: θα πρέπει να είναι εκτελέσιμο! #include <stdio.h> int diabase(); int ypologisepower(int); void typwse(int); main( ) { int number, power; number = diabase( ); power = ypologisepower(number); typwse(power); int diabase ( ) { printf ("function: diabase\n"); return 5; int ypologisepower(int x ) { printf ("function: ypologise\n"); return x; void typwse (int x ) { printf("function: typwse\n"); 16

Έκδοση 2: πλήρης ypologisepower() #include <stdio.h> int diabase(); int ypologisepower(int); void typwse(int); main( ) { int number, power; number = diabase( ); power = ypologisepower(number); typwse(power); int diabase ( ) { printf ("function: diabase\n"); return 5; int ypologisepower(int x ) { printf ("function: ypologise\n"); return x * x * x; void typwse (int x ) { printf("function: typwse\n"); printf("apotelesma: %d\n",x); 17

Έκδοση 3: πλήρης diabase() #include <stdio.h> int diabase(); int ypologisepower(int); void typwse(int); main( ) { int number, power; number = diabase( ); power = ypologisepower(number); typwse(power); int diabase ( ) { int aninput; printf ("function: diabase\n"); scanf("%d", &aninput); return aninput; int ypologisepower(int x ) { printf ("function: ypologise\n"); return x * x * x; void typwse (int x ) { printf("function: typwse\n"); printf("apotelesma: %d\n",x); 18

Στοιχεία της Γλώσσας C Γραμματική και Συντακτικό Διαθέσιμοι τύποι δεδομένων Απλοί και σύνθετοι τύποι Βασική βιβλιοθήκη της C παρέχει ένα σύνολο έτοιμων συναρτήσεων: printf( ), scanf( ), Eκτεταμένη τεκμηρίωση της GNU C library http://www.gnu.org/software/libc/manual/ 19

Δεσμευμένες λέξεις (reserved words) Λέξεις κλειδιά (keywords) Ονόματα συναρτήσεων της βασικής βιβλιοθήκης Ονόματα μακροεντολών που ορίζονται σε αρχεία επικεφαλίδας: EOF, Oνόματα τύπων που ορίζει η βασική βιβλιοθήκη: time_t, Oνόματα εντολών προεπεξεργαστή: include, define Oνόματα της μορφής _DATE_, _FILE_, κτλ. 20

Αναγνωριστές (Identifiers) Λέξεις που κατασκευάζει ο προγραμματιστής για να ονομάσει μεταβλητές σταθερές συναρτήσεις... Δεν θα πρέπει να είναι δεσμευμένες 21

Τύποι Δεδομένων στη C char χαρακτήρας int ακέραιος float αριθμός κινητής υποδιαστολής απλής ακρίβειας double αριθμός κινητής υποδιαστολής διπλής ακρίβειας απαριθμητικός τύπος enum boolean {FALSE, TRUE; σύνθετοι τύποι πίνακες και δομές (struct) 22

Παραδείγματα Αναγνωριστών - ποιοί είναι σωστοί; j 5j lname _Fname $amount set_password int MaXveLocity find_max#of_lements get_word isdigit get@name δοκιμή 23

Μετατροπή Fahrenheit σε Celcius #include <stdio.h> /* print Fahrenheit-Celcius table for fahr = 0, 20,, 300 */ main ( ) { int fahr, celcius; int lower, upper, step; lower = 0 ; /* lower limit of temperature */ upper = 300; step = 20 ; fahr = lower ; while (fahr <= upper) { celcius = 5* (fahr 32) / 9; printf ("%d\t%d\n", fahr, celcius); fahr = fahr + step; 24

Επεξήγηση #include <stdio.h> /* print Fahrenheit-Celcius table for fahr = 0, 20,, 300 */ main () { int fahr, celcius; int lower, upper, step; lower = 0 ; /* lower limit of temperature */ upper = 300; step = 20 ; fahr = lower ; while (fahr <= upper) { celcius = 5* (fahr 32) / 9; printf ( %d\t%d\n, fahr, celcius); fahr = fahr + step; δήλωση μεταβλητών 25

Επεξήγηση #include <stdio.h> /* print Fahrenheit-Celcius table for fahr = 0, 20,, 300 */ main () { int lower = 0, upper = 300, step = 20; int fahr = lower, celcius; Δήλωση μεταβλητών Μαζί με αρχικοποίηση while (fahr <= upper) { celcius = 5* (fahr - 32) / 9; printf ("%d\t%d\n", fahr, celcius); fahr = fahr + step; 26

Επεξήγηση #include <stdio.h> /* print Fahrenheit-Celcius table for fahr = 0, 20,, 300 */ main () { int lower = 0, upper = 300, step = 20; int fahr = lower, celcius; while (fahr <= upper) { celcius = 5* (fahr - 32) / 9; printf ("%d\t%d\n", fahr, celcius); fahr = fahr + step; Χρήση άλλης μεταβλητής Για αρχικοποίηση 27

Σημείωμα αναφοράς Copyright Πανεπιστήμιο Πατρών, Παλιουράς Βασίλειος, Δερματάς Ευάγγελος «Αρχές Προγραμματισμού». Έκδοση: 1.0. Πάτρα 2015 Διαθέσιμο από τη δικτυακιακή διέυθυνση https://eclass.upatras.gr/modules/ 28