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

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

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

Transcript

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

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

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

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

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

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

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

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

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

10 Επίλυση προβλήματος με πίνακα /* Αρχείο: 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"); /* Υπολογισμός του μέσου όρου των τιμών του πίνακα NJudges */ average = total / NJudges; printf("the average score is %.2f\n", average); 10

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... #define NJudges 5 void Read_Array(double double array[]); main() { double gymnasticscores[njudges]; Read_Array(gymnasticScores gymnasticscores);... void Read_Array(double double array[]) { int i; printf("please enter a score for each judge.\n"); for (i = 0; i < NJudges; i++) {... array[i] = GetReal(); 12

13 Μεταβίβαση πινάκων ως παραμέτρων (1) #include <stdio.h> #include "genlib.h" #include "simpio.h" #define NJudges 5 void Read_Array(double double array[]); void Calculate_Average(double array[]); main() { double gymnasticscores[njudges]; Read_Array(gymnasticScores gymnasticscores); Calculate_Average(gymnasticScores gymnasticscores); void Read_Array(double double array[]) { int i; 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); 13

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

15 Μεταβίβαση πινάκων ως παραμέτρων (2) #include <stdio.h> #include "simpio.h" void f(int x); void ftab(int size, int tab[]); f(x): Κλήση συνάρτησης με παράμετρο int, long, float. ftab(3,tab): Κλήση συνάρτησης που δέχεται ως τυπική παράμετρο έναν πίνακα int main(){ int x; int tab[3] = {1,1,1; x = 1; f(x); printf("value of x: %d\n", x); ftab(3,tab); printf("value of 1st element: %d\n", tab[0]); return 0; void f(int x){ x = 5; void ftab(int size, int tab[]) void ftab(int size, int tab[]){ int i; for(i=0;i<size;i++) tab[i] = 5; 15

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

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

18 Παράδειγμα: αντιμετάθεση στοιχείων πίνακα (3) int GetIntegerArray(int array[], int max, int sentinel) { int n, value; 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); void PrintIntegerArray(int array[], int n) { int i; for (i = 0; i < n; i++) { printf("%d\n", array[i]); 18

19 Παράδειγμα: αντιμετάθεση στοιχείων πίνακα (4) void ReverseIntegerArray(int array[], int n) { int i; for (i = 0; i < n / 2; i++) { SwapIntegerElements(array, i, n - i - 1); void SwapIntegerElements(int array[], int p1, int p2) { int tmp; tmp = array[p1]; array[p1] = array[p2]; array[p2] = tmp; 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"); 19

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

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

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

23 Μεταβίβαση πολυδιάστατων πινάκων σε συναρτήσεις -1 Η μεταβίβαση πολυδιάστατων πινάκων μεταξύ συναρτήσεων γίνεται όπως ακριβώς των μονοδιάστατων. #define ROWS 3 #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(); Πίνακας matrix, τυπική παράμετρος συνάρτησης, δηλώνεται στη κεφαλίδα της συνάρτησης Πίνακας scores, μεταβιβάζεται ως όρισμα στη συνάρτηση, δηλώνεται εκεί όπου καλείται η συνάρτηση ReadData, στη περίπτωση μας στη main 23

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

25 Μεταβίβαση πολυδιάστατων πινάκων σε συναρτήσεις -3 Επειδή όμως όλα αυτά ΔΕΝ επιτρέπουν τη συγγραφή "γενικών" συναρτήσεων για πολυδιάστατους πίνακες, το πρότυπο C99, επιτρέπει τη δήλωση των διαστάσεων του πολυδιάστατου πίνακα, με παραμέτρους, ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΠΡΟΗΓΟΥΝΤΑΙ. //δήλωση πρωτότυπου συνάρτησης void ReadData(int matrix[][columns]); Παράλειψη της δήλωσης της 1 ης διάστασης (μέγεθος 1 ου αριθμοδείκτη) void ReadData(int matrix[rows][columns]); Δήλωση με "σταθερές" προεπεξεραστή void ReadData(int r, int c, int matrix[r][c]); Δήλωση C99 25

26 Εσωτερική αναπαράσταση δεδομένων 26

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Γλώσσες Προγραμματισμού Γλώσσες Προγραμματισμού Διδάσκων: Ανδρέας Παπασαλούρος Ιστοσελίδα: 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Α. 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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 11η: Δείκτες, μέρος 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες Στόχοι και αντικείμενο ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ορισμός και αρχικοποίηση Αποθήκευση πινάκων στη μνήμη Πολυδιάστατοι πίνακες #6. Πίνακες και Δείκτες Ο τύπος του Δείκτη Η έννοια του

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

scanf() scanf() stdin scanf() printf() int float double %lf float

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 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 (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 4ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Συναρτήσεις (functions) 56 Τεμαχισμός του προγράμματος σε μικρότερα κομμάτια που είναι πιο κατανοητά, πιο εύκολα

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

Εισαγωγή στον Προγραμματισμό (με. τη C) Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Πολυδιάστατοι πίνακες Μέχρι τώρα µιλούσαµε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες,

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα

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

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

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

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014 Πίνακες 0 Μαρτίου 014 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα του συγκεκριμένου τύπου. Στην περίπτωση που θέλουμε

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

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

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

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

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

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Δείκτες Τι είναι ένας δείκτης (pointer); Όταν δηλώνoυμε μια μεταβλητή σε ένα πρόγραμμα

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

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

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

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

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

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

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

Δείκτες - σελίδα 1 από 6

Δείκτες - σελίδα 1 από 6 Τμήμα Εφαρμοσμένης Πληροφορικής ΔΙΑΔΙΚΑΣΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εξάμηνο Α' Φύλλο Ασκήσεων 6 ΔΕΙΚΤΕΣ Διδάσκοντες: Μάγια Σατρατζέμη, Αλέξανδρος Χατζηγεωργίου, Ηλίας Σακελλαρίου, Στέλιος Ξυνόγαλος Παρατηρήσεις:

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Φεβρουάριος/Μάρτιος 2013 v. 0.1 Master-mind: κανόνες παιχνιδιού Στο master mind χρειάζεται να παράγονται κάθε φορά 4 τυχαία σύμβολα από ένα πλήθος 6 διαφορετικών

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

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

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 4: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής θέματα: Πίνακες Δεικτών, Παραδείγματα, Πολυδιάστατοι πίνακες Πέρασμα παραμέτρων σε προγράμματα C Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες:

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

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Μονοδιάστατοι Πίνακες (tables) Μια συλλογή μεταβλητών ίδιου τύπου οι οποίες είναι αποθηκευμένες

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

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

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

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

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

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Προγραμματισμός 2 Σημειώσεις εργαστηρίου Προγραμματισμός 2 Σημειώσεις εργαστηρίου 02-Java, Τύποι Δεδομένων ως Αντικείμενα Νεβράντζας Βάιος-Γερμανός Λάρισα, Μάρτιος 2013 02-iProgramminginJava, Τυ ποι δεδομε νων ως Αντικει μενα, σελίδα 1 Περίληψη

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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