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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Διαδικαστικός Προγραμματισμός Ενότητα 5: Πίνακες Καθηγήτρια Μαρία Σατρατζέμη

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

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

4 Σκοποί ενότητας Να εκτιμήσετε τη σημασία που έχουν για τον προγραμματισμό οι πίνακες δεδομένων. Να μπορείτε να δηλώνετε και να χειρίζεστε απλούς πίνακες. Να κατανοήσετε τον τρόπο με τον οποίο αποθηκεύονται στη μνήμη οι τιμές δεδομένων. Να αναγνωρίσετε σε τι διαφέρει η μεταβίβαση πινάκων ως παραμέτρων συναρτήσεων από τη μεταβίβαση απλών μεταβλητών. Να μάθετε πώς να κάνετε στατική ανάθεση αρχικών τιμών σε πίνακες. Να κατανοήσετε τη δομή των πολυδιάστατων πινάκων. 4

5 Σύνθετοι τύποι δεδομένων Μέχρι τώρα επικεντρώσαμε την προσοχή μας στη χρήση αλγορίθμων με ολοένα μεγαλύτερη πολυπλοκότητα για το χειρισμό απλών δεδομένων. Αυτούς τους απλούς τύπους δεδομένων που γνωρίσαμε στα προηγούμενα μαθήματα μπορούμε να τους χρησιμοποιήσουμε για να ορίσουμε πιο σύνθετους τύπους δεδομένων, προκειμένου να λύσουμε πιο πολύπλοκα προβλήματα. Όπως θα δούμε οι τύποι δεδομένων σχηματίζουν και αυτοί μια ιεραρχία και μας δίνουν τη δυνατότητα να συνδυάζουμε πολλές ανεξάρτητες τιμές δεδομένων με τέτοιον τρόπο ώστε να θεωρούνται μια ενοποιημένη συλλογή. Οι έννοιες δομή ελέγχου και δομή δεδομένων (data structure) σε συνδυασμό μεταξύ τους, απoτελούν τα θεμέλια του σύγχρονου προγραμματισμού. To 1976, o Niklaus Wirth, δημιουργός της γλώσσας προγραμματισμού Pascal, διατύπωσε την παραπάνω αρχή στον τίτλο ενός συγγράμματος προγραμματισμού με τη μορφή της παρακάτω εξίσωσης: Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα 5

6 Εισαγωγή στους πίνακες (1) Πίνακας (array) είναι μια συλλογή μεμονωμένων τιμών δεδομένων, η οποία διαθέτει δύο χαρακτηριστικά: 1. Ο πίνακας είναι διατεταγμένος τα μεμονωμένα συστατικά στοιχεία ενός πίνακα μπορούμε να τα ξεχωρίσουμε ως πρώτο, δεύτερο, κ.ο.κ. 2. Ο πίνακας είναι ομοιογενής όλες οι τιμές που αποθηκεύονται σε έναν πίνακα είναι του ίδιου τύπου. Κάθε μία από τις τιμές ενός πίνακα ονομάζεται στοιχείο (element) αυτής της συνάρτησης. Πίνακας 5 στοιχείων 6

7 Δήλωση πίνακα (1) Στη C, κάθε πίνακας έχει δύο βασικές ιδιότητες: o τον τύπο στοιχείου (element type), δηλαδή τον τύπο των τιμών οι οποίες είναι δυνατό να αποθηκευτούν στα στοιχεία του πίνακα o το μέγεθος πίνακα (array size), δηλαδή το πλήθος των στοιχείων που περιέχει ο πίνακας. Κάθε φορά που δημιουργείτε ένα νέο πίνακα στο πρόγραμμα σας, θα πρέπει να καθορίζετε τόσο τον τύπο των στοιχείων όσο και το μέγεθος του πίνακα: τύπος_στοιχείου όνομα_πινακα[μέγεθος]; όπου: - τύπος_στοιχείου είναι ο τύπος κάθε στοιχείου του πίνακα - όνομα_πίνακα είναι το όνομα της μεταβλητής που δηλώνεται ως πίνακας - μέγεθος είναι το πλήθος των στοιχείων που δεσμεύονται για τον πίνακα 7

8 Δήλωση πίνακα (2) Παράδειγμα: Πίνακας 10 θέσεων για ακεραίους (int) με όνομα intarray int intarray[10]; intarray Κάθε στοιχείο του πίνακα προσδιορίζεται με μια αριθμητική τιμή που ονομάζεται αριθμοδείκτης (index) του στοιχείου. Στη C, οι αριθμοδείκτες σε έναν πίνακα ξεκινούν πάντα από το 0 και φτάνουν μέχρι το μέγεθος του πίνακα μείον ένα. Στις περισσότερες περιπτώσεις, θα πρέπει να καθορίζετε το μέγεθος του πίνακα χρησιμοποιώντας μια σταθερά, προκειμένου να διευκολύνετε τους προγραμματιστές που θα κληθούν να συντηρήσουν το πρόγραμμά σας στο μέλλον. #define NElements 10 int intarray[nelements]; 8

9 Δήλωση πίνακα (3) Πρόβλημα: να γράψετε ένα πρόγραμμα, στο οποίο θα διαβάζετε τη βαθμολογία που δίνουν 5 κριτές στην προσπάθεια ενός αθλητή και θα υπολογίζετε και εμφανίζετε τον μέσο όρο βαθμολογίας. Σε αυτό το πρόγραμμα μπορούμε να χρησιμοποιήσουμε ένα πίνακα 5 θέσεων για την αποθήκευση των βαθμολογιών: #define NJudges 5 double scores[njudges]; scores

10 Επιλογή στοιχείων πίνακα Για να αναφερθούμε σε ένα συγκεκριμένο στοιχείο ενός πίνακα, θα πρέπει να προσδιορίσουμε τόσο το όνομα του πίνακα όσο και τον αριθμοδείκτη που αντιστοιχεί στη θέση αυτού του στοιχείου, διεργασία γνωστή ως επιλογή (selection). Η επιλογή ενός στοιχείου από κάποιον πίνακα γίνεται με μια παράσταση επιλογής (selection expression) που έχει την ακόλουθη μορφή: όνομα_πίνακα[αριθμοδείκτης] Π.χ. scores[0] = 9.2; printf( %.2f, scores[0]); for(i = 0; i < NJudges; i++){ scores[i] = 0; scores

11 Επίλυση προβλήματος με πίνακα /* Αρχείο: gymjudge.c Το πρόγραμμα βρίσκει το μέσο όρο από 5 βαθμολογίες κριτών. */ #include <stdio.h> #include "genlib.h" #include "simpio.h" #define NJudges 5 /* Σταθερά αριθμός κριτών */ main() { double gymnasticscores[njudges]; /*Δήλωση πίνακα βαθμολογιών κριτών */ double total, average; int i; /* Διάβασμα των βαθμολογιών στον πίνακα NJudges */ printf("please enter a score for each judge.\n"); for (i = 0; i < NJudges; i++) { printf("score for judge #%d: ", i); gymnasticscores[i] = GetReal(); /* Υπολογισμός του μέσου όρου των τιμών του πίνακα NJudges */ total = 0; for (i = 0; i < NJudges; i++) { total += gymnasticscores[i]; average = total / NJudges; printf("the average score is %.2f\n", average); 11

12 Αλλαγή του διαστήματος των αριθμοδεικτών #include <stdio.h> #include "genlib.h" #include "simpio.h" #define NJudges 5 /* Σταθερά αριθμός κριτών */ main() { double gymnasticscores[njudges+1]; /*Δήλωση πίνακα βαθμολογιών κριτών */ double total, average; int i; /* Διάβασμα των βαθμολογιών στον πίνακα NJudges */ printf("please enter a score for each judge.\n"); for (i = 1; i <= NJudges; i++) { printf("score for judge #%d: ", i); gymnasticscores[i] = GetReal(); /* Υπολογισμός του μέσου όρου των τιμών του πίνακα NJudges */ total = 0; for (i = 1; i <= NJudges; i++) { total += gymnasticscores[i]; average = total / NJudges; printf("the average score is %.2f\n", average); 12

13 Εσωτερική αναπαράσταση δεδομένων Όλες οι τιμές δεδομένων αποθηκεύονται στο εσωτερικό του υπολογιστή με τη μορφή βασικών μονάδων πληροφοριών, οι οποίες ονομάζονται bit (binary digit). Σε κάθε bit αποθηκεύετε η «μικροσκοπική» πληροφορία 0 ή 1. Για την αποθήκευση πιο «παραδοσιακών» τύπων πληροφοριών (όπως οι αριθμοί και οι χαρακτήρες) χρησιμοποιούνται μεγαλύτερες ομάδες από bit που αντιμετωπίζονται ως ενιαίες μονάδες αποθήκευσης και ονομάζονται byte. Ένα byte ισούται με 8 bit και αρκεί για την αποθήκευση ενός χαρακτήρα. Στα περισσότερα μηχανήματα, τα byte συγκεντρώνονται σε μεγαλύτερες δομές που ονομάζονται λέξεις (words) και ορίζονται, συνήθως, έτσι ώστε να έχουν το μέγεθος που απαιτείται για την αποθήκευση μιας ακέραιης τιμής. Η μνήμη των υπολογιστών μετριέται σε πολλαπλάσια του byte, όπως 1 ΚΒ = 2 10 byte, 1 MB = 2 20 byte, 13

14 Διευθύνσεις μνήμης (1) Στο εσωτερικό του συστήματος μνήμης, κάθε byte προσδιορίζεται με μια αριθμητική διεύθυνση (address). Σε κάθε byte της μνήμης μπορεί να αποθηκευτεί 1 χαρακτήρας πληροφορίας. Για παράδειγμα, αν δηλώσουμε τη μεταβλητή ch char ch; ο μεταγλωττιστής θα δεσμεύσει γι αυτή 1 byte βρίσκεται στη διεύθυνση Όταν εκτελεστεί η εντολή ch = A ; η εσωτερική αναπαράσταση του χαρακτήρα Α (δηλ. ο κωδικός ASCII του χαρακτήρα που είναι 65) θα αποθηκευτεί στη μνήμη στη μνήμη, έστω αυτό που

15 Διευθύνσεις μνήμης (2) Οι τιμές που είναι μεγαλύτερες από ένα χαρακτήρα ή το μέγεθος του απαιτεί περισσότερα από 1 byte αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Για παράδειγμα, αν σε ένα υπολογιστή οι ακέραιοι καταλαμβάνουν 2 byte, για την αποθήκευση ενός ακεραίου θα δεσμευτούν 2 συνεχόμενες θέσεις μνήμης όπως φαίνεται στο σχήμα: Οι τιμές τύπου double απαιτούν συνήθως 8 byte, οπότε για μια μεταβλητή τύπου double θα δεσμεύονταν 8 συνεχόμενες θέσεις. 15

16 Ο τελεστής sizeof Εκτός από τον τύπο δεδομένων char, ο οποίος έχει εξ ορισμού μήκος ενός byte σε όλα τα υπολογιστικά συστήματα, το πλήθος των byte που απαιτούνται για την αποθήκευση μιας τιμής ενός συγκεκριμένου τύπου ενδέχεται να διαφέρει από το ένα μηχάνημα στο άλλο. Στη C, για να μάθετε την ποσότητα μνήμης που θα δεσμευτεί για μια συγκεκριμένη μεταβλητή μπορείτε να χρησιμοποιήσετε τον τελεστή sizeof με τελεστέο - το όνομα ενός τύπου σε παρενθέσεις: sizeof(int) οπότε θα επιστρέψει το πλήθος των byte που απαιτούνται για την αποθήκευση μιας τιμής τύπου int - μια παράσταση π.χ. μια μεταβλητή sizeof x οπότε θα επιστρέψει το πλήθος των byte που απαιτούνται για την αποθήκευση της μεταβλητής x 16

17 Κατανομή μνήμης σε μεταβλητές (1) Κάθε φορά που δηλώνετε μια μεταβλητή σε ένα πρόγραμμα, ο μεταγλωττιστής δεσμεύει χώρο μνήμης για την αποθήκευση της τιμής αυτής της μεταβλητής, διεργασία γνωστή ως κατανομή (allocation). Για τις καθολικές μεταβλητές (global variables), δηλαδή τις μεταβλητές που δηλώνονται στην αρχή του αρχείου πηγαίου κώδικα (έξω από κάθε συνάρτηση) και έχουν εμβέλεια σε όλο το αρχείο, η κατανομή μνήμης γίνεται όταν ξεκινά το πρόγραμμα. Οι μεταβλητές αυτές παραμένουν στις ίδιες διευθύνσεις μνήμης μέχρι να τερματιστεί το πρόγραμμα. Για τις τοπικές μεταβλητές (local variables) κατανέμεται μνήμη μόνο όταν καλείται η συνάρτηση στην οποία δηλώνονται, και όταν η συνάρτηση ολοκληρώσει την εκτέλεση της η μνήμη αποδεσμεύεται. 17

18 Κατανομή μνήμης σε μεταβλητές (2) Για παράδειγμα, αν υποθέσουμε ότι η σταθερά NJudges έχει οριστεί ίση με 5 και ότι κάθε τιμή τύπου double απαιτεί 8 byte τότε για τον πίνακα scores 1000 double scores[njudges]; Θα απαιτηθούν 8 byte/στοιχείο 5 στοιχεία = 40 byte Όταν ο μεταγλωττιστής της C συναντά μια παράσταση επιλογής, όπως η scores[i] υπολογίζει την κατάλληλη διεύθυνση της μνήμης πολλαπλασιάζοντας τον αριθμοδείκτη με το μέγεθος κάθε στοιχείου και προσθέτοντας το γινόμενο στην αρχική διεύθυνση του πίνακα. Π.χ. για το στοιχείο scores[1] η διεύθυνση είναι: = 1008 Η αρχική διεύθυνση του πίνακα ονομάζεται διεύθυνση βάσης (base address),. ενώ η απαραίτητη προσαρμογή για τον εντοπισμό ενός στοιχείου (1 8=8 ) σχετική απόσταση (offset) scores[ 0] scores[ 1] 18

19 Αναφορές σε στοιχεία εκτός ορίων πίνακα Όταν χρησιμοποιείτε πίνακες στα προγράμματά σας πρέπει να εξασφαλίζετε ότι οι τιμές των αριθμοδεικτών που χρησιμοποιείτε για να επιλέγετε στοιχεία από τους πίνακες θα παραμένουν εντός των ορίων των πινάκων. Στους περισσότερους υπολογιστές, η αναφορά σε στοιχεία που βρίσκονται εκτός των ορίων ενός πίνακα δεν εντοπίζεται ως λάθος, αλλά είναι σχεδόν βέβαιο ότι θα οδηγήσει σε απρόβλεπτα αποτελέσματα. Για παράδειγμα, για τον πίνακα scores που έχει 5 στοιχεία με αριθμοδείκτες 0, 1, 2, 3, 4 η αναφορά στο στοιχείο scores[5] θα έχει πιθανόν- ως αποτέλεσμα την επιλογή της τιμής που είναι αποθηκευμένη στη διεύθυνση = 1040 ενώ το τελευταίο στοιχείο του πίνακα είναι αποθηκευμένο στις θέσεις μνήμης 1032 έως

20 Μεταβίβαση πινάκων ως #include <stdio.h> #include "genlib.h" #include "simpio.h" παραμέτρων (1) #define NJudges 5 void Read_Array(double array[]); void Calculate_Average(double array[]); main() { double gymnasticscores[njudges]; void Read_Array(double array[]) { int i; Read_Array(gymnasticScores); Calculate_Average(gymnasticScores); printf("please enter a score for each judge.\n"); for (i = 0; i < NJudges; i++) { printf("score for judge #%d: ", i); array[i] = GetReal(); void Calculate_Average(double array[]) { double total, average; int i; total = 0; for (i = 0; i < NJudges; i++) { total += array[i]; average = total / NJudges; printf("the average score is %.2f\n", average); 20

21 Μεταβίβαση πινάκων ως παραμέτρων (2) Αν καλέσετε μια συνάρτηση που δέχεται ως τυπική παράμετρο μια μεταβλητή βασικού τύπου, όπως int, long και double, τότε η συνάρτηση λαμβάνει ένα αντίγραφο της τιμής-εισόδου. Αυτό σημαίνει ότι η συνάρτηση δεν λαμβάνει την πρωτότυπη τιμή και συνεπώς, ακόμα και αν αλλάξει η τιμή μέσα στη συνάρτηση, δεν μπορεί η συνάρτηση να αλλάξει την τιμή της μεταβλητής-ορίσματος. Στην περίπτωση συνάρτησης με τυπική παράμετρο ένα πίνακα δεν ισχύει ότι ισχύει για τις απλές μεταβλητές. Αν καλέσετε μια συνάρτηση που δέχεται ως τυπική παράμετρο έναν πίνακα, ο χώρος αποθήκευσης του πίνακα ο οποίος θα χρησιμοποιηθεί από την παράμετρο είναι ίδιος με αυτόν που χρησιμοποιείται για το πραγματικό όρισμα. Συνεπώς, η αλλαγή της τιμής ενός στοιχείου του πίνακα της παραμέτρου θα έχει ως αποτέλεσμα την αλλαγή της τιμής του αντίστοιχου στοιχείου στον πίνακα του ορίσματος. 21

22 Μεταβίβαση πινάκων ως παραμέτρων (3) Στη C, μια συνάρτηση που δέχεται ως όρισμα έναν πίνακα, επεξεργάζεται απευθείας τις τιμές που είναι αποθηκευμένες στις διευθύνσεις της μνήμης που αντιστοιχούν στον πίνακα. Κάθε φορά που μεταβιβάζεται ένας πίνακας σε μια συνάρτηση, στο τοπικό πλαίσιο καταγράφεται μόνο η διεύθυνση βάσης του πίνακα. Αν επιλέξετε ένα στοιχείο του τοπικού πίνακα, ο οποίος έχει δηλωθεί στο εσωτερικό της συνάρτησης, η άθροιση της σχετικής απόστασης στη διεύθυνση βάσης θα έχει αποτέλεσμα την παραγωγή μιας διεύθυνσης η οποία καταλαμβάνεται από τον πίνακα-όρισμα με τον οποίο καλείται η συνάρτηση. Το τελικό αποτέλεσμα είναι ότι η τυπική παράμετρος πίνακα που έχει δηλωθεί στην κεφαλίδα μιας συνάρτησης καταλήγει να αποτελεί συνώνυμο του πίνακα ο οποίος μεταβιβάζεται ως όρισμα, και όχι αντίγραφό του. 22

23 Μεταβίβαση πινάκων ως παραμέτρων (4) 1000 gymnasticscores[0] 1008 gymnasticscores[ 1]... main Read_Array array στη διεύθυνση 1000 i 23

24 Παράδειγμα: αντιμετάθεση στοιχείων πίνακα (1) Πρόβλημα: να γράψετε ένα πρόγραμμα που να εκτελεί τα παρακάτω βήματα: 1. Να διαβάζει μια λίστα ακεραίων μέχρι να καταχωρίσει ο χρήστης την τιμήφρουρό Να αντιστρέφει τα στοιχεία αυτής της λίστας. 3. Να εμφανίζει τη λίστα με αντίστροφη σειρά. Στη συνέχεια, παρουσιάζεται ένα δείγμα εκτέλεσης του προγράμματος: 24

25 Παράδειγμα: αντιμετάθεση στοιχείων #include <stdio.h> #include "genlib.h" #include "simpio.h" #define MaxElements 250 #define Sentinel 0 static int GetIntegerArray(int array[], int max, int sentinel); static void PrintIntegerArray(int array[], int n); static void ReverseIntegerArray(int array[], int n); static void SwapIntegerElements(int array[], int p1, int p2); static void GiveInstructions(void); πίνακα (2) main() { int list[maxelements], n; Διάσταση πίνακα, ορίζεται στη δήλωση του πίνακα GiveInstructions(); n = GetIntegerArray(list, MaxElements, Sentinel); ReverseIntegerArray(list, n); PrintIntegerArray(list, n); τρέχον μέγεθος πίνακα 25

26 Παράδειγμα: αντιμετάθεση στοιχείων static int GetIntegerArray(int array[], int max, int sentinel) { int n, value; πίνακα (3) n = 0; while (TRUE) { printf("? "); value = GetInteger(); if (value == sentinel) break; if (n == max) Error("Too many input items for array"); array[n] = value; n++; return (n); static void PrintIntegerArray(int array[], int n) { int i; for (i = 0; i < n; i++) { printf("%d\n", array[i]); 26

27 Παράδειγμα: αντιμετάθεση static void ReverseIntegerArray(int array[], int n) { int i; στοιχείων πίνακα (4) for (i = 0; i < n / 2; i++) { SwapIntegerElements(array, i, n - i - 1); static void SwapIntegerElements(int array[], int p1, int p2) { int tmp; tmp = array[p1]; array[p1] = array[p2]; array[p2] = tmp; static void GiveInstructions(void) { printf("enter numbers, one per line, ending with the\n"); printf("sentinel value %d. The program will then\n", Sentinel); printf("display those values in reverse order.\n"); 27

28 Λειτουργικές μονάδες Όταν ένα πρόγραμμα περιλαμβάνει πολλές συναρτήσεις, για παράδειγμα 50 ή και περισσότερες, είναι δύσκολο να διαχειριστεί και να κατανοηθεί. Σε μια τέτοια περίπτωση, η καλύτερη στρατηγική είναι να διαιρεθεί το πρόγραμμα σε μικρότερα πηγαία αρχεία, καθένα από τα οποία θα περιλαμβάνει ένα σύνολο σχετικών μεταξύ τους συναρτήσεων. Αυτά τα μικρότερα αρχεία, καθένα από τα οποία αποτελεί ένα μέρος του όλου προγράμματος και περιλαμβάνει σχετικές μεταξύ τους συναρτήσεις, ονομάζονται λειτουργικές μονάδες (modules). Η λειτουργική μονάδα που περιέχει τη συνάρτηση main ονομάζεται κύρια λειτουργική μονάδα (main module) και βρίσκεται στο υψηλότερο επίπεδο της ιεραρχίας. Κάθε μια από τις βοηθητικές λειτουργικές μονάδες ενεργεί ως βιβλιοθήκη για την κύρια λειτουργική μονάδα. Για κάθε τέτοια λειτουργική μονάδα θα πρέπει να υπάρχει και το αντίστοιχο αρχείο διασύνδεσης. 28

29 Εμβέλεια μεταβλητών Το τμήμα ενός προγράμματος στο οποίο μπορεί να χρησιμοποιηθεί μια μεταβλητή ονομάζεται εμβέλεια (scope) της μεταβλητής. Η εμβέλεια μιας μεταβλητής διαφέρει ανάλογα με το αν αυτή έχει δηλωθεί ως τοπική, καθολική ή στατική. Καθολικές μεταβλητές (global variables): μεταβλητές που δηλώνονται έξω από οποιονδήποτε ορισμό συνάρτησης και έχουν εμβέλεια μέσα σε όλο το αρχείο πηγαίου κώδικα (όλες τις συναρτήσεις συμπεριλαμβανομένης και της main). Η χρήση τους πρέπει να αποφεύγεται. Τοπικές μεταβλητές (local variables): μεταβλητές που δηλώνονται στο εσωτερικό μιας συνάρτησης και η εμβέλεια τους περιορίζεται μόνο στην ίδια τη συνάρτηση. Όταν γίνεται επιστροφή από τη συνάρτηση, όλες οι τοπικές μεταβλητές «εξαφανίζονται». Στατικές μεταβλητές (static variables): μεταβλητές που δηλώνονται με τη λέξη static έξω από κάθε συνάρτηση και έχουν εμβέλεια μέσα σε μια λειτουργική μονάδα: static int x; 29

30 Ιδιωτικές Συναρτήσεις Η λέξη static μπορεί να χρησιμοποιηθεί για να δηλωθεί ότι μια συνάρτηση είναι ιδιωτική για μια συγκεκριμένη λειτουργική μονάδα. Σε πολλές περιπτώσεις όταν ορίζεται μια λειτουργική μονάδα ενδέχεται να περιλαμβάνει συναρτήσεις που καλούνται μόνο μέσα από τη λειτουργική μονάδα στην οποία ορίζονται. Για να υποδείξετε ότι μια συγκεκριμένη συνάρτηση περιορίζεται σε μια συγκεκριμένη λειτουργική μονάδα μπορείτε να χρησιμοποιήσετε τη λέξη κλειδί static στην αρχή τόσο του πρωτοτύπου της συνάρτησης όσο και της υλοποίησης της. Με αυτόν τον τρόπο είναι αδύνατη η κλήση αυτής της συνάρτησης από άλλα προγράμματα (πελάτες). Η δήλωση στατικών συναρτήσεων έχει και το πλεονέκτημα ότι σε μεγάλου μεγέθους λογισμικό, που αναπτύσσεται από πολλούς προγραμματιστές, αν μια συνάρτηση (ή μια καθολική μεταβλητή) δηλωθεί ως static μπορεί να χρησιμοποιηθεί το ίδιο όνομα και σ άλλες λειτουργικές μονάδες. Οι σχεδιαστές ανεξάρτητων λειτουργικών ομάδων ή 1) επικοινωνούν για να μη χρησιμοποιήσουν τα ίδια ονόματα ή 2) τα ονόματα δηλώνονται ως static. 30

31 Στατική ανάθεση αρχικών τιμών σε Οι μεταβλητές πίνακα είναι δυνατό να δηλωθούν είτε ως τοπικές είτε ως καθολικές, όπως και οποιαδήποτε άλλη μεταβλητή. Η δήλωση ενός πίνακα, όπως και κάθε άλλης μεταβλητής, ως καθολική πρέπει να αποφεύγεται. Αν χρειαστεί ένας πίνακας θα πρέπει να δηλωθεί ως στατική καθολική μεταβλητή. Όταν ένας πίνακας δηλωθεί ως στατική καθολική μεταβλητή, μπορεί ταυτόχρονα να του γίνει και ανάθεση αρχικών τιμών ή πίνακες static int digits[10] = {0,1,2,3,4,5,6,7,8,9; static int digits[] = {0,1,2,3,4,5,6,7,8,9; αφού ο μεταγλωττιστής μετρά το πλήθος των αρχικών τιμών και δεσμεύει χώρο μνήμης τόσα στοιχεία όσα έχουμε αρχικοποιήσει. 31

32 Πολυδιάστατοι πίνακες (1) Στη C, τα στοιχεία ενός πίνακα μπορεί να είναι οποιουδήποτε τύπου. Συνεπώς, τα στοιχεία ενός πίνακα μπορεί να είναι και τα ίδια πίνακες. Οι πίνακες πινάκων ονομάζονται πολυδιάστατοι πίνακες (multidimensional arrays). Η συνηθέστερη μορφή πολυδιάστατου πίνακα είναι ο διδιάστατος πίνακας. Ένας διδιάστατος πίνακας χρησιμοποιείται συνήθως για την αναπαράσταση δεδομένων των οποίων οι μεμονωμένες καταχωρίσεις σχηματίζουν μια ορθογώνια δομή που είναι δυνατό να χωριστεί σε γραμμές και στήλες και ονομάζεται μήτρα (matrix). 32

33 Πολυδιάστατοι πίνακες (2) Έστω ότι σε κάποιο πρόγραμμα έπρεπε να αναπαραστήσετε στην οθόνη μια παρτίδα τρίλιζας. Εφόσον, η τρίλιζα παίζεται σε έναν πίνακα τριών γραμμών και τριών στηλών θα μπορούσαμε να ορίσουμε ένα διδιάστατο πίνακα χαρακτήρων, κάθε στοιχείο του οποίου μπορεί να έχει ως τιμή τον χαρακτήρα, Χ ή Ο : char board[3][3]; Κατανομή μνήμης Γραμμές board[0][0] board[1][0] board[2][0] board[0][1] board[0][2] board[1][1] board[1][2] board[2][1] board[2][2] board[0] board[1] board[0][0] board[0][1] board[0][2] board[1][0] board[1][1] board[1][2] Στήλες board[2] board[2][0] board[2][1] board[2][2] 33

34 Μεταβίβαση πολυδιάστατων πινάκων σε συναρτήσεις (1) Η μεταβίβαση πολυδιάστατων πινάκων μεταξύ συναρτήσεων γίνεται όπως ακριβώς των μονοδιάστατων. #define ROWS 8 #define COLUMNS 3 //δήλωση πρωτότυπου συνάρτησης void ReadData(int matrix[rows][columns]); main() { int scores[rows][columns]; ReadData(scores); //κλήση συνάρτησης // υλοποίηση συνάρτησης void ReadData(int matrix[rows][columns]) { int i,j; for (i=0;i<rows;i++) for (j=0;j<columns;j++) matrix[i][j]=getinteger(); 34

35 Μεταβίβαση πολυδιάστατων πινάκων σε συναρτήσεις (2) Όταν μια συνάρτηση δέχεται ως παράμετρο κάποιο πολυδιάστατο πίνακα η C απαιτεί τον καθορισμό του μεγέθους κάθε αριθμοδείκτη του πίνακα (διάσταση) εκτός του πρώτου. Κατά συνέπεια η κεφαλίδα της συνάρτησης ReadData θα μπορούσε να γραφεί. //δήλωση πρωτότυπου συνάρτησης void ReadData(int matrix[][columns]); void ReadData(int matrix[rows][columns]); Αντί Παράλειψη της δήλωσης της 1 ης διάστασης (μέγεθος 1 ου αριθμοδείκτη) Σ αυτή τη περίπτωση το πρόγραμμα θα λειτουργούσε με τον ίδιο τρόπο αφού η διεύθυνση βάσης του πίνακα και το μέγεθος του 2 ου αριθμοδείκτη αρκούν για να προσδιορίσει τη διεύθυνση κάθε στοιχείου του πίνακα. Επειδή η παράλειψη του πρώτου αριθμοδείκτη κάνει τη δήλωση κάπως ασύμμετρη γι αυτό συνήθως συμπεριλαμβάνουμε στη δήλωση μιας παραμέτρου πολυδιάστατου πίνακα όλες τις διαστάσεις του πίνακα. 35

36 Ανάθεση αρχικών τιμών σε πίνακες (1) static double identitymatrix[3][3]= { ; { 1.0, 0.0, 0.0, { 0.0, 1.0, 0.0, { 0.0, 0.0, Η συγκεκριμένη μήτρα, η οποία εμφανίζεται πολύ συχνά σε μαθηματικές εφαρμογές, ονομάζεται μοναδιαία μήτρα (identity matrix). 36

37 Τέλος Ενότητας

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

Προγραμματισμός Υπολογιστών ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Προγραμματισμός Υπολογιστών Β Εξάμηνο Μάθημα 6 ο - 7 ο : Πίνακες Στόχοι μαθήματος Να εκτιμήσετε τη σημασία που έχουν για τον προγραμματισμό οι πίνακες δεδομένων. Να μπορείτε

Διαβάστε περισσότερα

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

Διαδικαστικός Προγραμματισμός ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Διαδικαστικός Προγραμματισμός Α Εξάμηνο Μάθημα 5 ο : Πίνακες Στόχοι μαθήματος Να εκτιμήσετε τη σημασία που έχουν για τον προγραμματισμό οι πίνακες δεδομένων. Να μπορείτε

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού

Γλώσσες Προγραμματισμού Γλώσσες Προγραμματισμού Διδάσκων: Ανδρέας Παπασαλούρος Ιστοσελίδα: http://www.samos.aegean.gr/math/andpapas/courses/pl/default.htm Πλατφόρμα ηλεκτρονικής μάθησης: http://myria.math.aegean.gr/moodle/ Πλατφόρμα

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011 Συναρτήσεις (functions) Συνάρτηση (function) σύνολο εντολών που έχει οµαδοποιηθεί και τους έχει αποδοθεί ένα όνοµα Κλήση (calling)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 7: Δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

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

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 8: Παραδείγματα με μονοδιάστατους πίνακες, συναρτήσεις, δείκτες, πέρασμα παραμέτρων με αναφορά Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Εισαγωγή στους πίνακες

Εισαγωγή στους πίνακες Εισαγωγή στους πίνακες Πίνακες Ένας πίνακας (array) είναι μια συλλογή μεμονωμένων τιμών με τα παρακάτω χαρακτηριστικά: Διατεταγμένος Ομοιογενής Κάθε τιμή ενός πίνακα ονομάζεται στοιχείο (element) του πίνακα.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού

Γλώσσες Προγραμματισμού Γλώσσες Προγραμματισμού Πολυδιάστατοι πίνακες Στατικές μεταβλητές Στατική ανάθεση τιμών σε πίνακες 19/4/2007 Πολυδιάστατοι πίνακες Παράδειγμα: Sudoku Πώς αναπαριστάται η διπλανή εικόνα από έναν πίνακα;

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 10: Συναρτήσεις Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 3: Εντολές ελέγχου επανάληψη Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6.1 Η Έννοια του Πίνακα Συχνά είναι προτιμότερο να αντιμετωπίζουμε ένα σύνολο μεταβλητών σαν ενότητα για να απλοποιούμε το χειρισμό τους. Έτσι οργανώνουμε σύνθετα δεδομένα σε

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Σκοπός του μαθήματος Σκοπός του παρόντος μαθήματος είναι να μάθετε να κάνετε εισαγωγή δεδομένων σε πίνακες και περαιτέρω επεξεργασία

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη

Διαβάστε περισσότερα

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ 10 η Διάλεξη C++ - Πίνακες Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Ανακεφαλαίωση Κατά την κλήση μιας συνάρτησης κατ αξία οι τιμές των ορισμάτων αντιγράφονται στις αντίστοιχες τυπικές παραμέτρους

Διαβάστε περισσότερα

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

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 6: Πίνακες-Συναρτήσεις Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως

Διαβάστε περισσότερα

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

Διαδικαστικός Προγραμματισμός Ενότητα 10: Εγγραφές/Δομές Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 8 η Δείκτες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 10: Συναρτήσεις Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Συναρτήσεις και διαδικασίες Συναρτήσεις και διαδικασίες Χρήση συναρτήσεων βιβλιοθήκης Εντολή κλήσης της συνάρτησης printf: printf( Hello, world\n ); Μια συνάρτηση είναι ένα σύνολο εντολών που έχουν ομαδοποιηθεί και τους έχει αποδοθεί

Διαβάστε περισσότερα

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

Εισαγωγή στον δομημένο προγραμματισμό Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 12 η : Δυναμική Ανάθεση Θέσης Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16) Κεφάλαιο 8.1-8.3 Πίνακες Ι (Διάλεξη 16) 15-1 Πίνακες (Arrays) Σε αυτή την ενότητα θα μιλήσουμε για την δομή δεδομένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. Δήλωση Πίνακα 3. Αρχικοποίηση Πίνακα 4. Πρόσβαση

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι δείκτες στη C Η έννοια του δείκτη Την έννοια του δείκτη τη συναντήσαμε σε προηγούμενα μαθήματα. Η συνάρτηση scanf(), καταχωρίζει τιμές σε μεταβλητές χρησιμοποιώντας τον τελεστή

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 9: Πίνακες στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 11 Πίνακες Ι Πίνακες (Arrays) Σε αυτή την ενότητα

Διαβάστε περισσότερα

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες Προγραμματισμός Η/Υ Ι Υπολογισμός - - Πίνακες ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συζητήσουμε τη χρήση του πίνακα (array) για τη συλλογή

Διαβάστε περισσότερα

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

Εισαγωγή στον δομημένο προγραμματισμό Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 7 η : Δείκτες Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

Διαβάστε περισσότερα

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19) Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες (Διάλεξη 19) Πολυδιάστατοι πίνακες Μέχρι τώρα μιλούσαμε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες, π.χ. int id[5] = {1029,1132,1031,9991,1513;

Διαβάστε περισσότερα

Η βασική συνάρτηση προγράμματος main()

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 8: Πίνακες Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων Σκοπός της Άσκησης ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση µε τη χρήση πινάκων σαν διατάξεις αποθήκευσης δεδοµένων της Γλώσσας Προγραµµατισµού C. H συγκεκριµένη άσκηση

Διαβάστε περισσότερα

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 13 Πίνακες & Συναρτήσεις Εισαγωγή Στις προηγούμενες

Διαβάστε περισσότερα

Διάλεξη 6: Δείκτες και Πίνακες

Διάλεξη 6: Δείκτες και Πίνακες Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 6: Δείκτες και Πίνακες (Κεφάλαιο 12, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 6-1 Περιεχόμενο

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ιαδικαστικός Προγραμματισμός ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ιαδικαστικός Προγραμματισμός Α Εξάμηνο Μάθημα 3 ο : Εντολές ελέγχου > επανάληψη Στόχοι μαθήματος Να μάθετε τις λεπτομέρειες των εντολών while και for και τις περιπτώσεις

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

Διαβάστε περισσότερα

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 14. Πίνακες Ι. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 14. Πίνακες Ι. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 14. Πίνακες Ι Ιωάννης Κατάκης Πίνακες o Εισαγωγή o Δήλωση o Αρχικοποίηση o Πρόσβαση o Παραδείγματα 2 Πίνακες -Εισαγωγή o Μία δομή δεδομένων είναι ένα σύνολο

Διαβάστε περισσότερα

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.1-8.3 Πίνακες Ι ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 15-1 Πίνακες (Arrays) Σε αυτή την ενότητα θα µιλήσουµε για την δοµή δεδοµένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. ήλωση Πίνακα 3. Αρχικοποίηση

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Έκτη (6 η ) τρίωρη διάλεξη. Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 12 Πολυδιάστατοι Πίνακες Πολυδιάστατοι πίνακες

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 3: Συναρτήσεις printf() και scanf() Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης Προγραμματισμός Η/Υ Ενότητα 5: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Έλεγχος της ροής του προγράμματος

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 5: Εντολές συνθήκης Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

Διαβάστε περισσότερα

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Τύποι δεδομένων, μεταβλητές, πράξεις Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Διάλεξη 9η: Πίνακες (arrays)

Διάλεξη 9η: Πίνακες (arrays) Διάλεξη 9η: Πίνακες (arrays) Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Arrays CS100, 2016-2017 1 / 17

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

Διαβάστε περισσότερα

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Δείκτες Διδάσκοντες: Αν Καθ Δ Παπαγεωργίου, Αν Καθ Ε Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 2: Τύποι μεταβλητών Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα