SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
H ΓΛΩΣΣΑ C
Μάθηµα 7:
Πίνακες
∆ηµήτρης Ψούνης
Περιεχόµενα Μαθήµατος
Α. Πίνακες
1. Μονοδιάστατοι Πίνακες
1. ∆ήλωση Πίνακα
2. Παράδειγµα Χρήσης Πίνακα
3. Αρχικοποίηση πίνακα κατά τη δήλωση
4. Στατική ∆έσµευση Πίνακα
2. ∆ιδιάστατοι Πίνακες
1. ∆ήλωση Πίνακα
2. Αρχικοποίηση κατά την δήλωση
3. Απεικόνιση στη µνήµη
4. Χρήση ∆ιδιάστατων Πινάκων
3. Πολυδιάστατοι Πίνακες
4. Πίνακες και Συναρτήσεις
Β. Τυχαίοι Αριθµοί
1. Η συνάρτηση rand()
2. Η συνάρτηση srand()
3. Παράδειγµα παραγωγής τυχαίων
αριθµών
Γ. Ασκήσεις
2∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
A. Πίνακες
1. Μονοδιάστατοι Πίνακες
1. ∆ήλωση Πίνακα
3∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Ένας πίνακας είναι µια σειρά από µεταβλητές ίδιου τύπου αποθηκευµένες στην µνήµη.
Για παράδειγµα ένας πίνακας 10 ακεραίων µε όνοµα pin, είναι 10 ακέραιες µεταβλητές
αποθηκευµένες στην σειρά (η µία µετά την άλλη) στην µνήµη.
Ένας πίνακας θα δηλώνεται (στο τµήµα δήλωσης µεταβλητών) µε εντολή της µορφής:
Όπου:
Τύπος_∆εδοµένων: Ο τύπος δεδοµένων των µεταβλητών του πίνακα.
ΟΝΟΜΑ_ΠΙΝΑΚΑ: Το όνοµα που επιλέγουµε εµείς για τον πίνακα.
ΠΛΗΘΟΣ (προσέξτε ότι είναι µέσα σε αγκύλες): Πόσες µεταβλητές θα περιέχει ο
πίνακας
Τύπος_∆εδοµένων ΟΝΟΜΑ_ΠΙΝΑΚΑ[ΠΛΗΘΟΣ];
pin[0] pin[1] pin[2] pin[3]
…
pin[9]
A. Πίνακες
1. Μονοδιάστατοι Πίνακες
1. ∆ήλωση Πίνακα
4∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Για παράδειγµα µε την δήλωση:
∆ηλώνουµε έναν πίνακα µε 4 ακέραιες µεταβλητές.
Με την εντολή δήλωσης, δεσµεύεται στην µνήµη χώρος για τον πίνακα και είναι σηµαντικό
ότι οι θέσεις αυτές είναι σε µια σειρά.
Τα ονόµατα των 4 µεταβλητών που κατασκευάσαµε είναι:
pin[0],pin[1],pin[2],pin[3]
Παρατηρούµε ότι η αρίθµηση ξεκινά από το 0 εως και ένα λιγότερο από τον αριθµό
που δηλώσαµε.
Άρα µετά την εντολή δήλωσης, έχουν δεσµευτεί 4 διαδοχικές θέσεις στην µνήµη για
να αποθηκεύσουν τιµές σε αυτές τις µεταβλητές, στον χώρο της συνάρτησης που έχει
δηλωθεί ο πίνακας:
int pin[4];
Χώρος της συνάρτησης
pin[0] pin[1] pin[2]
…
pin[3]
…
A. Πίνακες
1. Μονοδιάστατοι Πίνακες
2. Παράδειγµα Χρήσης Πίνακα
5∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Πλέον µετά την δήλωση
έχουµε στα χέρια µας τις
µεταβλητές και µπορούµε
να τις χρησιµοποιήσουµε.
∆είτε για παράδειγµα το
εξής απλό πρόγραµµα:
Οι µεταβλητές
διαχειρίζονται όπως οι
τυπικές ακέραιες
µεταβλητές
/* array.c: Aplo programma me pinaka */
#include <stdio.h>
int main()
{
int pin[3];
int sum;
pin[0]=1;
pin[1]=3;
pin[2]=4;
sum=pin[0]+pin[1]+pin[2];
printf("n%d+%d+%d=%d",pin[0],pin[1],pin[2],sum);
}
Προσοχή, µην γράψουµε αριθµό για όριο του πίνακα που είναι εκτός του επιτρεπτού.
Π.χ. Αν έχουµε δήλωση int pin[4]; και γράψουµε για όνοµα µεταβλητής pin[5] θα έχουµε
σφάλµα όταν θα εκτελέσουµε το πρόγραµµα!
A. Πίνακες
1. Μονοδιάστατοι Πίνακες
3. Αρχικοποιήση Πίνακα κατά την ∆ήλωση
6∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Όπως όταν έχουµε µια µεταβλητή, µπορούµε να την αρχικοποιήσουµε µε µια τιµή όταν την
δηλώνουµε µε µία εντολή της µορφής:
Το ίδιο ισχύει και για τους πίνακες. Έχουµε το δικαίωµα να αρχικοποιήσουµε τον πίνακα µε µια
εντολή ως εξής:
Που αντιστοιχεί στην δήλωση και καταχώρηση των µεταβλητών:
Θέλει προγραµµατιστική προσοχή! ∆ιότι θα πρέπει να
έχουµε ακριβώς τόσες τιµές όσες και οι θέσεις του πίνακα.
Αν βάλουµε λιγότερες ή περισσότερες τιµές µέσα στα
άγκιστρα, τότε πιθανόν το πρόγραµµα µας να έχει µη
αναµενόµενη συµπεριφορά!
int pinakas[5];
pinakas[0]=0;
pinakas[1]=4;
pinakas[2]=9;
pinakas[3]=2;
pinakas[4]=1;
int pinakas[5] = {0,4,9,2,1};
int x=5;
A. Πίνακες
1. Μονοδιάστατοι Πίνακες
3. Αρχικοποιήση Πίνακα κατά την ∆ήλωση
7∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Λεπτοµέρειες του µεταγλωττιστή:
Α) Αν δεν δηλώσουµε διάσταση κατά την αρχικοποίηση τότε ο µεταγλωττιστής αρχικοποιεί τη
διάσταση στο πλήθος των στοιχείων του πίνακα. Έτσι οι δύο ακόλουθες δηλώσεις είναι ισοδύναµες:
int pin[4]={2,4,6,8};
int pin[]={2,4,6,8};
Λεπτοµέρειες του µεταγλωττιστή:
B) Ωστόσο αν δηλώσουµε µεγαλύτερη διάσταση στον πίνακα, µπορούµε να αρχικοποίησουµε µε
λιγότερα στοιχεία τον πίνακα. Θα δεσµευτεί χώρος για τα επόµενα στοιχεία, αλλά δεν µπορούµε να
είµαστε σίγουροι για την τιµή που θα έχουν
Για παράδειγµα η ακόλουθη δήλωση είναι έγκυρη:
int pin[10]={2,4,6,8};
A. Πίνακες
1. Μονοδιάστατοι Πίνακες
4. Στατική ∆έσµευση Μνήµης Πίνακα
8∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Στην πράξη χρησιµοποιούνται 4 τρόποι για την δήλωση της διάστασης του πίνακα. Η επιλογή
του τρόπου εξαρτάται από το πρόγραµµα που γράφουµε.
Π.χ. στο τµήµα δήλωσης των δεδοµένων γράφουµε:
{
int pinakas[100]; //Εδώ δηλώνουµε τη διάσταση του πίνακα
int i;
for (i=0; i<100; i++)
{
/*Κάνε κάποια πράγµατα στον πίνακα*/
}
}
Α’ τρόπος: ∆ηλώνουµε την διάσταση «καρφωτά» µέσω ενός αριθµού.
• Ο τρόπος αυτός είναι αντιαισθητικός και δείχνει µικρή προγραµµατιστική εµπειρία. Π.χ. αν
χρειαστεί να τροποποιήσουµε το πρόγραµµα µας για να τρέχει για 1000 ακεραίους, τότε
πρέπει να βρούµε όλες τις εµφανίσεις του 100 και να το αλλάξουµε σε 1000.
• Αυτόν τον τρόπο θα τον εφαρµόζουµε µόνο όταν θέλουµε να «τσεκάρουµε» έναν πολύ
µικρό κώδικα.
A. Πίνακες
1. Μονοδιάστατοι Πίνακες
4. Στατική ∆έσµευση Μνήµης Πίνακα
9∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Παράδειγµα:
#define N 100 // Εδώ δηλώνουµε το µέγεθος του πίνακα
main()
{
int pinakas[Ν]; //∆ήλωση του πίνακα
int i;
for (i=0; i<Ν; i++)
{
/*Κανε κάποια πράγµατα στον πίνακα*/
}
}
Β’ τρόπος: ∆ηλώνουµε την διάσταση µέσω µίας συµβολικής σταθεράς.
• Ο τρόπος αυτός είναι ισοδύναµος µε τον προηγούµενο και έχει το πλεονέκτηµα ότι η
διάσταση του πίνακα δηλώνεται µόνο µία φορά µέσω της συµβολικής σταθεράς.
• Σε περίπτωση που θέλουµε να αλλάξουµε τη διάσταση του πίνακα αρκεί να αλλάξουµε την
τιµή στη συµβολική σταθερά.
A. Πίνακες
1. Μονοδιάστατοι Πίνακες
4. Στατική ∆έσµευση Μνήµης Πίνακα
10∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Είναι πολύ συχνό στα προγράµµατα µας, να µην ξέρουµε πόσες ακριβώς θέσεις θα
χρειαστούµε στον πίνακα.
Στις περιπτώσεις αυτές, κάνουµε µια εκτίµηση του πόσες θέσεις (ένα άνω όριο) θα
χρειαστούµε και δηλώνουµε τον πίνακα µε αυτό το όριο.
Στην συνέχεια έχουµε µια µεταβλητή που χρησιµοποιούµε ως άνω όριο του πίνακα,
ανάλογα µε το πόσες θέσεις χρειαζόµαστε πραγµατικά.
Γ’ τρόπος: ∆ηλώνουµε τη µέγιστη διάσταση του πίνακα µέσω συµβολικής σταθεράς, και
έπειτα έχουµε µία µεταβλητή για το πλήθος των θέσεων που χρησιµοποιούµε
#define SIZE 1000 // Εδώ δηλώνουµε το µέγιστο µέγεθος του πίνακα
main()
{
int pinakas[SIZE];
int N=100;
int i;
for (i=0; i<Ν; i++)
{
/*Κανε κάποια πράγµατα στον πίνακα*/
}
}
A. Πίνακες
1. Μονοδιάστατοι Πίνακες
4. Στατική ∆έσµευση Μνήµης Πίνακα
11∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Λίγα παραπάνω πράγµατα για τους µονοδιάστατους πίνακες...
Αντιλαµβανόµαστε ότι υπάρχει ένα πρόβληµα µε τους πίνακες και το µέγεθος που θέλουµε
να έχουν στο πρόγραµµα µας.
Τα πράγµατα είναι καλά, όταν ξέρουµε εκ των προτέρων πόσα στοιχεία θα έχει. Τότε
τρόποι δήλωσης σαν αυτούς που είδαµε είναι µια χαρά! Αυτoί ο τρόποι δήλωσης του
πίνακα αναφέρονται σαν στατική δέσµευση µνήµης.
Αντίθετα αν οι τρόποι που αναφέραµε δεν µπορούν να εξυπηρετήσουν το
πρόγραµµα µας (φανταστείτε για παράδειγµα, ένα πρόγραµµα που το µέγεθος του
πίνακα εξαρτάται από την είσοδο του χρήστη σε πολύ µεγάλο βαθµό. ∆ηλαδή την µία
φορά πρέπει να τρέχει για 10 ακέραιους και την άλλη για 1.000.000 ακεραίους). Εκεί
είναι κατάχρηση να δηλώνουµε τόσο µεγάλο πίνακα για πιθανόν τόσα λίγα δεδοµένα.
Γι’ αυτόν τον λόγο θα δούµε και έναν δεύτερο τρόπο να δεσµεύουµε χώρο στην
µνήµη για έναν πίνακα, στο µάθηµα 9 και καλείται δυναµική δέσµευση µνήµης.
∆’ τρόπος: Ζητάµε από τον χρήστη να µας εισάγει κατά τον χρόνο εκτέλεσης την διάσταση του
πίνακα και δεσµεύουµε δυναµικά τον χώρο στην µνήµη (δυναµική δέσµευση µνήµης)
A. Πίνακες
2. ∆ιδιάστατοι Πίνακες
1. ∆ήλωση Πίνακα
12∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Ένας διδιάστατος πίνακας (πίνακας 2 διαστάσεων) είναι και πάλι ένας αποθηκευτικός χώρος
στην µνήµη, όπου έχουµε δύο διαστάσεις: Μία για τις γραµµές και µία για τις στήλες.
Έτσι θα έχουµε το δικαίωµα να ορίσουµε π.χ. έναν πίνακα ακεραίων 6x4, δηλαδή έναν πίνακα
ακεραίων µε 6 γραµµές και 4 στήλες
Θα έχουµε τα εξής στοιχεία στον πίνακα (προσέξτε και πάλι ότι η αρίθµηση των γραµµών και
των στηλών ξεκινάει από το 0). Όνοµα του πίνακα στο παράδειγµα είναι Α:
Στήλη 0 Στήλη 1 Στήλη 2 Στήλη 3
Γραµµή 0 A[0][0] A[1][1] A[0][2] A[0][3]
Γραµµή 1 A[1][0] A[1][1] A[1][2] A[1][3]
Γραµµή 2 A[2][0] A[2][1] A[2][2] A[2][3]
Γραµµή 3 A[3][0] A[3][1] A[3][2] A[3][3]
Γραµµή 4 A[4][0] A[4][1] A[4][2] A[4][3]
Γραµµή 5 A[5][0] A[5][1] A[5][2] A[5][3]
A. Πίνακες
2. ∆ιδιάστατοι Πίνακες
1. ∆ήλωση Πίνακα
13∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Ένας διδιάστατος πίνακας θα δηλώνεται (στο τµήµα δήλωσης µεταβλητών) µε εντολή της
µορφής:
Όπου:
Τύπος_∆εδοµένων: Ο τύπος δεδοµένων των µεταβλητών του πίνακα.
ΟΝΟΜΑ_ΠΙΝΑΚΑ: Το όνοµα που επιλέγουµε εµείς για τον πίνακα.
ΠΛΗΘΟΣ-ΓΡΑΜΜΩΝ, ΠΛΗΘΟΣ-ΣΤΗΛΩΝ (προσέξτε ότι είναι µέσα σε αγκύλες πρώτα οι
γραµµές και έπειτα οι στήλες): Πόσες γραµµές και στήλες θα περιέχει ο πίνακας.
Το πλήθος των µεταβλητών που θα οριστούν θα είναι ίσο µε το γινόµενο του πλήθος
των γραµµών µε το πλήθος των στηλών.
Έτσι ο πίνακας που είδαµε προηγουµένως θα δηλώνεται µε µία εντολή δήλωσης της µορφής:
Ενώ για παράδειγµα ένας 8x10 πίνακας µεταβλητών double θα δηλώνεται µε την εντολή:
Τύπος_∆εδοµένων ΟΝΟΜΑ_ΠΙΝΑΚΑ[ΠΛΗΘΟΣ-ΓΡΑΜΜΩΝ][ΠΛΗΘΟΣ-ΣΤΗΛΩΝ];
int Α[6][4];
double Α[8][10];
A. Πίνακες
2. ∆ιδιάστατοι Πίνακες
2. Αρχικοποίηση κατά τη ∆ήλωση
14∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Αντίστοιχα µε τους µονοδιάστατους πίνακες και οι διδιάστατοι πίνακες µπορούν να
αρχικοποιηθούν µε µια εντολή δήλωσης της µορφής:
Όπου φαίνεται ότι γράφουµε τα περιεχόµενα κάθε διαδοχικής γραµµής µέσα σε άγκιστρα.
...ενώ οι διαδοχικές γραµµές του πίνακα χωρίζονται µε κόµµατα και βρίσκονται σε ένα
µεγάλο ζεύγος άγκιστρων.
Υπάρχει και µια πιο εκκεντρική µορφή δήλωσης:
Όπου η αντιστοίχιση είναι νοητή, δηλαδή τα 5 πρώτα στοιχεία είναι για την 1η γραµµή
κ.λπ.
Ο λόγος ύπαρξης αυτής της εντολής δήλωσης είναι η απεικόνιση διδιάστατων πινάκων
στην µνήµη που θα δούµε αµέσως τώρα!
int pinakas[2][5] = {{0,4,9,2,1},{4,3,2,5,2}};
int pinakas[2][5] = {0,4,9,2,1,4,3,2,5,2};
A. Πίνακες
2. ∆ιδιάστατοι Πίνακες
3. Απεικόνιση στη Μνήµη
15∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Βλέπουµε πως δεσµεύεται η µνήµη για έναν πίνακα που δηλώνεται µε την εντολή:
Όπως είδαµε εδώ δηλώνουµε 3x2=6 µεταβλητές.
Τα ονόµατα των 6 µεταβλητών που δηλώσαµε είναι:
Είναι σηµαντικό ότι οι µεταβλητές δηλώνονται στον χώρο µνήµης της συνάρτησης σε διαδοχικές
θέσεις γραµµή προς γραµµή:
int pin[2][3];
pin[0,0] pin[0,1] pin[0,2]
pin[1,0] pin[1,1] pin[1,2]
pin[0,0] pin[0,1] pin[0,2] pin[1,0]
…
pin[1,1] pin[1,2]
A. Πίνακες
2. ∆ιδιάστατοι Πίνακες
4. Χρήση ∆ιδιάστατων Πινάκων
16∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Ο πιο συνηθισµένος τρόπος για να διαχειριστούµε έναν διδιάστατο πίνακα, είναι µέσω µιας
διπλής (εµφωλιασµένης) for.
Συνήθως λοιπόν κάνουµε µια επανάληψη στις γραµµές και µία εµφωλιασµένη επανάληψη στις
στήλες, προκειµένου να κάνουµε µια διαπέραση των στοιχείων του πίνακα:
∆είτε για παράδειγµα τον ακόλουθο κώδικα που δηλώνει έναν 10x5 πίνακα και αρχικοποιεί τα
στοιχεία του σε 0.
#define M 10
#define N 5
main()
{
int pin[M][N];
int i,j; //Ενας µετρητής για τις γραµµές και ένας για τις στήλες
for (i=0; i<M; i++)
for (j=0; j<N; j++)
pin[i][j]=0;
}
Οι παρατηρήσεις που κάναµε περί στατικής δέσµευσης µνήµης ισχύουν και για τους
διδιάστατους πίνακες!
A. Πίνακες
3. Πολυδιάστατοι Πίνακες
17∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Αντίστοιχα ένας τριδιάστατος πίνακας (πίνακας 3 διαστάσεων) είναι και πάλι ένας
αποθηκευτικός χώρος στην µνήµη, όπου έχουµε τρεις διαστάσεις
Έτσι ένας 5x2x8 πίνακας θα δηλώνεται µε µία εντολή της µορφής:
Ο οποίος θα περιέχει 5x2x8=80 ακέραιες µεταβλητές.
Οι ίδιες παρατηρήσεις που κάναµε για τους µονοδιάστατους και τους διδιάστατους πίνακες
ισχύουν βεβαίως και εδώ.
Αντίστοιχα µπορούµε να ορίσουµε πίνακες πολλών διαστάσεων (δεν υπάρχει πρακτικά
περιορισµός στις διαστάσεις που µπορούµε να χρησιµοποιήσουµε). Π.χ. Ένας 5-διάστατος
πίνακας 2x4x9x2x4 δηλώνεται µε µία εντολή της µορφής:
Τέτοιοι πίνακες είναι κυρίως για εξειδικευµένες εφαρµογές και δεν θα µας απασχολήσουν
στους εκπαιδευτικούς στόχους των µαθηµάτων.
int Α[5][2][8];
int Α[2][4][9][2][4];
A. Πίνακες
4. Πίνακες και Συναρτήσεις
18∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Ένας πίνακας µπορεί να διοχετευτεί ως όρισµα σε µία συνάρτηση µε τον εξής τρόπο:
#define N 100
void function(int pin[]); // Πρωτότυπο συνάρτησης
main()
{
int array[N];
function(array); // ∆ιοχέτευση πίνακα ως όρισµα στη συνάρτηση
}
void function(int pin[]) // Σώµα Συνάρτησης
{
...ενέργειες στον pin[0...99]
}
Ωστόσο δεν θα επεκταθούµε περαιτέρω! Σε επόµενο µάθηµα θα δούµε έναν εναλλακτικό
τρόπο διοχέτευσης πινάκων σε συναρτήσεις, µε χρήση δεικτών τον οποίο και θα
επιλέξουµε να εφαρµόζουµε στην πράξη.
Β. Τυχαίοι Αριθµοί
1. Η συνάρτηση rand()
19∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Εδώ θα κάνουµε µια σύντοµη αναφορά σε δύο συναρτήσεις βιβλιοθήκης της C που µας
επιτρέπουν να κάνουµε παραγωγή τυχαίων αριθµών.
Η συνάρτηση rand() επιστρέφει τυχαίους αριθµούς. Το πρωτότυπό της είναι:
Η οποία επιστρέφει έναν τυχαίο αριθµό στο διάστηµα 0...MAX_INT όπου MAX_INT ο
µέγιστος µη προσηµασµένος ακέραιος που µπορεί να απεικονίσει το σύστηµά µας
(συνήθως το 232-1)
Είναι ορισµένη στην βιβλιοθήκη συναρτήσεων
Ας δούµε δύο τρόπους να την χρησιµοποιήσουµε:
Στο x θα αποθηκευτεί ένας αριθµός από το 0 έως το 99
Στο x θα αποθηκευτεί ένας αριθµός από το 10 έως το 100
unsigned int rand()
stdlib.h
x=rand()%100
x=10+rand()%91
Β. Τυχαίοι Αριθµοί
2. Η συνάρτηση srand()
20∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Ο τρόπος λειτουργίας της rand() στηρίζεται σε κάποια περίπλοκα µαθηµατικά και κάθε φορά
παράγει την ίδια ακολουθία τυχαίων αριθµών.
Για τον λόγο αυτό, λέµε ότι παράγει ψευδοτυχαίους αριθµούς.
Προκειµένου κάθε φορά που τρέχουµε το πρόγραµµα να παράγει άλλη ακολουθία τυχαίων
αριθµών, πρέπει αρχικά στο πρόγραµµά µας να τρέξουµε την συνάρτηση:
Που έχει δηλωθεί στη βιβλιοθήκη:
Ο πιο συνηθισµένος τρόπος χρήσης είναι στην αρχή του προγράµµατός µας να γράψουµε την
εντολή:
Έτσι ώστε να αρχικοποιηθεί η ακολουθία τυχαίων αριθµών µε µία παράµετρο που
εξαρτάται από την τρέχουσα ώρα. Θα απαιτηθεί να ενσωµατώσουµε και το αρχείο
κεφαλίδας στο οποίο έχει οριστεί η συνάρτηση time() που χρησιµοποιεί το
πρόγραµµά µας.
void srand(int seed)
stdlib.h
srand(time(NULL));
time.h
Β. Τυχαίοι Αριθµοί
3. Παράδειγµα παραγωγής τυχαίων αριθµών
21∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Το παρακάτω πρόγραµµα τυπώνει στην οθόνη 10 τυχαίους αριθµούς στο διάστηµα 0...99
/* random.c: Typwnei 10 tyxaioys akeraioys sto diastima 0..99 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int x,i;
srand(time(NULL));
for (i=0; i<10; i++)
{
x=rand()%100;
printf("n%d",x);
}
}
Γ. Ασκήσεις
1. Αρχικοποίηση και Εκτύπωση Μονοδιάστατου Πίνακα
22∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Γράψτε ένα πρόγραµµα το οποίο:
1. Να δηλώνει έναν πίνακα 100 ακεραίων (SIZE)
2. Ναι διαβάζει από τον χρήστη έναν αριθµό Ν από το 20 έως το 100 (που θα δηλώνει το
πλήθος των στοιχείων του πίνακα που θέλει να χρησιµοποιήσει). Να πραγµατοποιηθεί
έλεγχος ότι ο χρήστης πληκτρολόγησε τιµή από το 20 έως το 100.
3. Να αρχικοποιηθεί ο πίνακας µε τυχαίους αριθµούς
4. Να προβάλλει τα στοιχεία του πίνακα στην οθόνη µε έναν κοµψό τρόπο.
Γ. Ασκήσεις
2. Εκτύπωση ∆ιδιάστατων Πινάκων
23∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Γράψτε ένα πρόγραµµα το οποίο:
1. Να δηλώνει έναν διδιάστατο πίνακα 5x8
2. Να αρχικοποιεί τις τιµές του πίνακα, αναθέτοντας σε κάθε θέση έναν τυχαίο αριθµό από 0
έως 200
3. Να προβάλλει τα στοιχεία του πίνακα στην οθόνη µε έναν κοµψό τρόπο (σε κάθε γραµµή της
οθόνης να είναι και µία γραµµή του πίνακα)
Γ. Ασκήσεις
3. Στατική ∆έσµευση Μνήµης σε ∆ιδιάστατο Πίνακα
24∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Γράψτε ένα πρόγραµµα σε γλώσσα C που:
1. Να δηλώνει έναν διδιαστατο πίνακα 100x200 ακεραίων (SIZE1xSIZE2)
2. Ναι διαβάζει από τον χρήστη έναν αριθµό M από το 10 έως το 100 (που θα δηλώνει το
πλήθος των γραµµών του πίνακα που θέλει να χρησιµοποιήσει). Να πραγµατοποιηθεί
έλεγχος ότι ο χρήστης πληκτρολόγησε τιµή από το 10 έως το 100.
3. Ναι διαβάζει από τον χρήστη έναν αριθµό Ν από το 10 έως το 100 (που θα δηλώνει το
πλήθος των στηλών του πίνακα που θέλει να χρησιµοποιήσει). Να πραγµατοποιηθεί έλεγχος
ότι ο χρήστης πληκτρολόγησε τιµή από το 10 έως το 100.
4. Να αρχικοποιηθεί ο πίνακας µε τυχαίους αριθµούς
5. Να προβάλλει τα στοιχεία του πίνακα στην οθόνη µε έναν κοµψό τρόπο.
Γ. Ασκήσεις
4. Κατασκευή Παιχνιδιού!
25∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Γράψτε ένα πρόγραµµα σε γλώσσα C που:
1. Θα αρχικοποιεί µία µεταβλητή µε όνοµα hidden µε έναν τυχαίο ακέραιο αριθµό από το 1 έως
το 100.
2. Θα ζητεί από τον χρήστη να πληκτρολογήσει (µαντέψει) τον αριθµό
1. Αν ο χρήστης εισάγει τον αριθµό, θα εκτυπώσει κατάλληλο µήνυµα επιβράβευσης και θα
τερµατίσει.
2. Αν ο χρήστης εισάγει µικρότερο αριθµό, θα εκτυπώσει κατάλληλο µήνυµα στον χρήστη
να πληκτρολογήσει µεγαλύτερο αριθµό και θα επαναλάβει από το βήµα 2
3. Αν ο χρήστης εισάγει µεγαλύτερο αριθµό, θα εκτυπώσει κατάλληλο µήνυµα στον χρήστη
να πληκτρολογήσει µικρότερο αριθµό και θα επαναλάβει από το βήµα 2
Γ. Ασκήσεις
26∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
Όπως είδαµε το συντακτικό και η χρήση των πινάκων δεν είναι ιδιαίτερα δύσκολο.
Σηµαντικότερο είναι να αναπτύξουµε αλγοριθµική σκέψη, δηλαδή να µάθουµε σκεπτικά που
έχουν αναπτυχθεί για την αποδοτική επίλυση προβληµάτων µε τον υπολογιστή.
Συνίσταται λοιπόν στο σηµείο αυτό να µελετηθούν τα ακόλουθα τέσσερα µαθήµατα
αλγορίθµων µε τη βοήθεια της γλώσσας C:
• Αλγόριθµοι σε C – Μάθηµα 1: ∆ιαπέραση Πίνακα
• Αλγόριθµοι σε C – Μάθηµα 2: Αναζήτηση σε Πίνακα
• Αλγόριθµοι σε C – Μάθηµα 3: Ταξινόµηση Πίνακα
• Αλγόριθµοι σε C – Μάθηµα 4: Αλγεβρικές Πράξεις Πινάκων

Weitere ähnliche Inhalte

Was ist angesagt?

ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
Dimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
Dimitris Psounis
 

Was ist angesagt? (20)

ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 13 - ΔΟΜΕΣ
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
 
Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1Η Γλώσσα C - Μάθημα 1
Η Γλώσσα C - Μάθημα 1
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 11
 
Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3 Η Γλώσσα C - Μάθημα 3
Η Γλώσσα C - Μάθημα 3
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 10
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 3
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 4
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.2
ΠΛΗ10 ΜΑΘΗΜΑ 2.2ΠΛΗ10 ΜΑΘΗΜΑ 2.2
ΠΛΗ10 ΜΑΘΗΜΑ 2.2
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
 

Ähnlich wie Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ

Διαγώνισμα Κεφάλαια 7- 8- 9
Διαγώνισμα Κεφάλαια 7- 8- 9Διαγώνισμα Κεφάλαια 7- 8- 9
Διαγώνισμα Κεφάλαια 7- 8- 9
educast
 
Excel odigies 10
Excel odigies 10Excel odigies 10
Excel odigies 10
tomtat57
 
διαγωνισμα δομεσ δεδομενων πινακεσ
διαγωνισμα δομεσ δεδομενων   πινακεσδιαγωνισμα δομεσ δεδομενων   πινακεσ
διαγωνισμα δομεσ δεδομενων πινακεσ
educast
 
Διαγώνισμα Δομές Δεδομένων 1
Διαγώνισμα Δομές Δεδομένων 1Διαγώνισμα Δομές Δεδομένων 1
Διαγώνισμα Δομές Δεδομένων 1
educast
 
ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό ΤεστΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
Nikos Michailidis
 
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 3
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 3ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 3
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 3
Dimitris Psounis
 
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
Dimitris Psounis
 

Ähnlich wie Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ (20)

ΠΛΗ20 ΜΑΘΗΜΑ 5.1
ΠΛΗ20 ΜΑΘΗΜΑ 5.1ΠΛΗ20 ΜΑΘΗΜΑ 5.1
ΠΛΗ20 ΜΑΘΗΜΑ 5.1
 
ΠΛΗ10 ΤΕΣΤ 30
ΠΛΗ10 ΤΕΣΤ 30ΠΛΗ10 ΤΕΣΤ 30
ΠΛΗ10 ΤΕΣΤ 30
 
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον - Βασικές επεξεργασίες μονο...
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον - Βασικές επεξεργασίες μονο...Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον - Βασικές επεξεργασίες μονο...
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον - Βασικές επεξεργασίες μονο...
 
Διαγώνισμα Κεφάλαια 7- 8- 9
Διαγώνισμα Κεφάλαια 7- 8- 9Διαγώνισμα Κεφάλαια 7- 8- 9
Διαγώνισμα Κεφάλαια 7- 8- 9
 
ΠΛΗ10 ΤΕΣΤ 23
ΠΛΗ10 ΤΕΣΤ 23ΠΛΗ10 ΤΕΣΤ 23
ΠΛΗ10 ΤΕΣΤ 23
 
Excel odigies 10
Excel odigies 10Excel odigies 10
Excel odigies 10
 
ΠΛΗ10 ΤΕΣΤ 36
ΠΛΗ10 ΤΕΣΤ 36 ΠΛΗ10 ΤΕΣΤ 36
ΠΛΗ10 ΤΕΣΤ 36
 
ΠΛΗ10 ΤΕΣΤ 35
ΠΛΗ10 ΤΕΣΤ 35ΠΛΗ10 ΤΕΣΤ 35
ΠΛΗ10 ΤΕΣΤ 35
 
διαγωνισμα δομεσ δεδομενων πινακεσ
διαγωνισμα δομεσ δεδομενων   πινακεσδιαγωνισμα δομεσ δεδομενων   πινακεσ
διαγωνισμα δομεσ δεδομενων πινακεσ
 
Διαγώνισμα Δομές Δεδομένων 1
Διαγώνισμα Δομές Δεδομένων 1Διαγώνισμα Δομές Δεδομένων 1
Διαγώνισμα Δομές Δεδομένων 1
 
ΠΛΗ10 ΤΕΣΤ 28
ΠΛΗ10 ΤΕΣΤ 28ΠΛΗ10 ΤΕΣΤ 28
ΠΛΗ10 ΤΕΣΤ 28
 
ECDL Excel Σημειώσεις 4/7
ECDL Excel Σημειώσεις 4/7ECDL Excel Σημειώσεις 4/7
ECDL Excel Σημειώσεις 4/7
 
ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό ΤεστΑΕΠΠ: 3ο Επαναληπτικό Τεστ
ΑΕΠΠ: 3ο Επαναληπτικό Τεστ
 
Python Κεφ. 1.6.1 Πίνακες
Python Κεφ. 1.6.1 ΠίνακεςPython Κεφ. 1.6.1 Πίνακες
Python Κεφ. 1.6.1 Πίνακες
 
Κεφ. 9 Πίνακες
Κεφ. 9 ΠίνακεςΚεφ. 9 Πίνακες
Κεφ. 9 Πίνακες
 
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 3
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 3ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 3
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 3
 
Plir b
Plir bPlir b
Plir b
 
ΛΟΓΙΣΤΙΚΑ ΦΥΛΛΑ
ΛΟΓΙΣΤΙΚΑ ΦΥΛΛΑΛΟΓΙΣΤΙΚΑ ΦΥΛΛΑ
ΛΟΓΙΣΤΙΚΑ ΦΥΛΛΑ
 
αναπαράσταση αλγορίθμων και δεδομένων
αναπαράσταση αλγορίθμων και δεδομένωναναπαράσταση αλγορίθμων και δεδομένων
αναπαράσταση αλγορίθμων και δεδομένων
 
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
ΠΛΗ30 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 4
 

Mehr von Dimitris Psounis

ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
Dimitris Psounis
 

Mehr von Dimitris Psounis (20)

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣΗ ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ CC++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ31 ΤΕΣΤ 32
ΠΛΗ31 ΤΕΣΤ 32ΠΛΗ31 ΤΕΣΤ 32
ΠΛΗ31 ΤΕΣΤ 32
 

Kürzlich hochgeladen

εργασία εφημερίδας για την διατροφή.pptx
εργασία εφημερίδας για την διατροφή.pptxεργασία εφημερίδας για την διατροφή.pptx
εργασία εφημερίδας για την διατροφή.pptx
Effie Lampropoulou
 

Kürzlich hochgeladen (20)

Ο ΧΡΙΣΤΟΦΟΡΟΣ ΚΟΛΟΜΒΟΣ ΚΑΙ Η ΑΝΑΚΑΛΥΨΗ ΤΗΣ ΑΜΕΡΙΚΗΣ,ΕΙΡΗΝΗ ΝΤΟΥΣΚΑ-ΠΕΝΥ ΖΑΓΓΟ...
Ο ΧΡΙΣΤΟΦΟΡΟΣ ΚΟΛΟΜΒΟΣ ΚΑΙ Η ΑΝΑΚΑΛΥΨΗ ΤΗΣ ΑΜΕΡΙΚΗΣ,ΕΙΡΗΝΗ ΝΤΟΥΣΚΑ-ΠΕΝΥ ΖΑΓΓΟ...Ο ΧΡΙΣΤΟΦΟΡΟΣ ΚΟΛΟΜΒΟΣ ΚΑΙ Η ΑΝΑΚΑΛΥΨΗ ΤΗΣ ΑΜΕΡΙΚΗΣ,ΕΙΡΗΝΗ ΝΤΟΥΣΚΑ-ΠΕΝΥ ΖΑΓΓΟ...
Ο ΧΡΙΣΤΟΦΟΡΟΣ ΚΟΛΟΜΒΟΣ ΚΑΙ Η ΑΝΑΚΑΛΥΨΗ ΤΗΣ ΑΜΕΡΙΚΗΣ,ΕΙΡΗΝΗ ΝΤΟΥΣΚΑ-ΠΕΝΥ ΖΑΓΓΟ...
 
Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024
Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024
Παρουσίαση θεατρικού στην Τεχνόπολη. 2023-2024
 
εργασία εφημερίδας για την διατροφή.pptx
εργασία εφημερίδας για την διατροφή.pptxεργασία εφημερίδας για την διατροφή.pptx
εργασία εφημερίδας για την διατροφή.pptx
 
Σχέσεις στην εφηβεία_έρωτας
Σχέσεις                     στην εφηβεία_έρωταςΣχέσεις                     στην εφηβεία_έρωτας
Σχέσεις στην εφηβεία_έρωτας
 
Ο εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
Ο εκχριστιανισμός των Σλάβων, Άγγελος ΔόσηςΟ εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
Ο εκχριστιανισμός των Σλάβων, Άγγελος Δόσης
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣΗ ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
 
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣΗ ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
Η ΒΙΟΜΗΧΑΝΙΚΗ ΕΠΑΝΑΣΤΑΣΗ,ΜΠΟΗΣ ΧΡΗΣΤΟΣ - ΜΑΓΟΥΛΑΣ ΘΩΜΑΣ
 
Βενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία Μπάρδα
Βενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία ΜπάρδαΒενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία Μπάρδα
Βενετία, μια πόλη πάνω στο νερό, Βασιλική Μπράβου - Αποστολία Μπάρδα
 
Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
Παρουσίαση δράσεων στην Τεχνόπολη. 2023-2024
 
Η απελευθέρωση της Θεσσαλονίκης από την Οθωμανική Αυτοκρατορία
Η απελευθέρωση της Θεσσαλονίκης από την Οθωμανική ΑυτοκρατορίαΗ απελευθέρωση της Θεσσαλονίκης από την Οθωμανική Αυτοκρατορία
Η απελευθέρωση της Θεσσαλονίκης από την Οθωμανική Αυτοκρατορία
 
ΕΜΕΙΣ ΕΔΩ ΠΑΙΖΟΥΜΕ ΜΠΑΛΑ, εργασία για την οπαδική βία
ΕΜΕΙΣ ΕΔΩ ΠΑΙΖΟΥΜΕ ΜΠΑΛΑ, εργασία για την οπαδική βίαΕΜΕΙΣ ΕΔΩ ΠΑΙΖΟΥΜΕ ΜΠΑΛΑ, εργασία για την οπαδική βία
ΕΜΕΙΣ ΕΔΩ ΠΑΙΖΟΥΜΕ ΜΠΑΛΑ, εργασία για την οπαδική βία
 
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
ΧΑΝΟΣ ΚΡΟΥΜΟΣ-ΒΑΣΙΛΙΑΣ ΝΙΚΗΦΟΡΟΣ,ΚΡΙΣΤΙΝΑ ΚΡΑΣΤΕΒΑ
 
ΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑ
ΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑ
ΔΙΑΣΗΜΕΣ ΒΥΖΑΝΤΙΝΕΣ ΠΡΙΓΚΙΠΙΣΣΕΣ,ΕΦΗ ΨΑΛΛΙΔΑ
 
ΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣ
ΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣ
ΗΡΑΚΛΕΙΟΣ, ΧΑΡΗΣ ΤΑΣΙΟΥΔΗΣ-ΓΙΩΡΓΟΣ ΤΖΑΝΗΣ
 
Ναυμαχία της Ναυαρίνου 20 Οκτωβρίου 1827
Ναυμαχία της Ναυαρίνου 20 Οκτωβρίου 1827Ναυμαχία της Ναυαρίνου 20 Οκτωβρίου 1827
Ναυμαχία της Ναυαρίνου 20 Οκτωβρίου 1827
 
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ, ΣΤΑΥΡΟΥΛΑ ΜΠΕΚΙΑΡΗ
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ,  ΣΤΑΥΡΟΥΛΑ  ΜΠΕΚΙΑΡΗΗ ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ,  ΣΤΑΥΡΟΥΛΑ  ΜΠΕΚΙΑΡΗ
Η ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ, ΣΤΑΥΡΟΥΛΑ ΜΠΕΚΙΑΡΗ
 
Ρατσισμός, ορισμός, είδη, αίτια , συνέπειες
Ρατσισμός, ορισμός, είδη, αίτια , συνέπειεςΡατσισμός, ορισμός, είδη, αίτια , συνέπειες
Ρατσισμός, ορισμός, είδη, αίτια , συνέπειες
 
ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ
ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ
ΑΝΑΓΕΝΝΗΣΗ, ΕΙΡΗΝΗ ΓΚΑΒΛΟΥ- ΜΑΙΡΗ ΔΗΜΑΚΟΠΟΥΛΟΥ
 
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
 
Φλωρεντία, ΔΑΝΑΗ ΠΥΡΠΥΡΗ- ΜΑΡΙΑΝΕΛΑ ΣΤΡΟΓΓΥΛΟΥ
Φλωρεντία, ΔΑΝΑΗ ΠΥΡΠΥΡΗ- ΜΑΡΙΑΝΕΛΑ ΣΤΡΟΓΓΥΛΟΥΦλωρεντία, ΔΑΝΑΗ ΠΥΡΠΥΡΗ- ΜΑΡΙΑΝΕΛΑ ΣΤΡΟΓΓΥΛΟΥ
Φλωρεντία, ΔΑΝΑΗ ΠΥΡΠΥΡΗ- ΜΑΡΙΑΝΕΛΑ ΣΤΡΟΓΓΥΛΟΥ
 

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ

  • 1. H ΓΛΩΣΣΑ C Μάθηµα 7: Πίνακες ∆ηµήτρης Ψούνης
  • 2. Περιεχόµενα Μαθήµατος Α. Πίνακες 1. Μονοδιάστατοι Πίνακες 1. ∆ήλωση Πίνακα 2. Παράδειγµα Χρήσης Πίνακα 3. Αρχικοποίηση πίνακα κατά τη δήλωση 4. Στατική ∆έσµευση Πίνακα 2. ∆ιδιάστατοι Πίνακες 1. ∆ήλωση Πίνακα 2. Αρχικοποίηση κατά την δήλωση 3. Απεικόνιση στη µνήµη 4. Χρήση ∆ιδιάστατων Πινάκων 3. Πολυδιάστατοι Πίνακες 4. Πίνακες και Συναρτήσεις Β. Τυχαίοι Αριθµοί 1. Η συνάρτηση rand() 2. Η συνάρτηση srand() 3. Παράδειγµα παραγωγής τυχαίων αριθµών Γ. Ασκήσεις 2∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες
  • 3. A. Πίνακες 1. Μονοδιάστατοι Πίνακες 1. ∆ήλωση Πίνακα 3∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Ένας πίνακας είναι µια σειρά από µεταβλητές ίδιου τύπου αποθηκευµένες στην µνήµη. Για παράδειγµα ένας πίνακας 10 ακεραίων µε όνοµα pin, είναι 10 ακέραιες µεταβλητές αποθηκευµένες στην σειρά (η µία µετά την άλλη) στην µνήµη. Ένας πίνακας θα δηλώνεται (στο τµήµα δήλωσης µεταβλητών) µε εντολή της µορφής: Όπου: Τύπος_∆εδοµένων: Ο τύπος δεδοµένων των µεταβλητών του πίνακα. ΟΝΟΜΑ_ΠΙΝΑΚΑ: Το όνοµα που επιλέγουµε εµείς για τον πίνακα. ΠΛΗΘΟΣ (προσέξτε ότι είναι µέσα σε αγκύλες): Πόσες µεταβλητές θα περιέχει ο πίνακας Τύπος_∆εδοµένων ΟΝΟΜΑ_ΠΙΝΑΚΑ[ΠΛΗΘΟΣ]; pin[0] pin[1] pin[2] pin[3] … pin[9]
  • 4. A. Πίνακες 1. Μονοδιάστατοι Πίνακες 1. ∆ήλωση Πίνακα 4∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Για παράδειγµα µε την δήλωση: ∆ηλώνουµε έναν πίνακα µε 4 ακέραιες µεταβλητές. Με την εντολή δήλωσης, δεσµεύεται στην µνήµη χώρος για τον πίνακα και είναι σηµαντικό ότι οι θέσεις αυτές είναι σε µια σειρά. Τα ονόµατα των 4 µεταβλητών που κατασκευάσαµε είναι: pin[0],pin[1],pin[2],pin[3] Παρατηρούµε ότι η αρίθµηση ξεκινά από το 0 εως και ένα λιγότερο από τον αριθµό που δηλώσαµε. Άρα µετά την εντολή δήλωσης, έχουν δεσµευτεί 4 διαδοχικές θέσεις στην µνήµη για να αποθηκεύσουν τιµές σε αυτές τις µεταβλητές, στον χώρο της συνάρτησης που έχει δηλωθεί ο πίνακας: int pin[4]; Χώρος της συνάρτησης pin[0] pin[1] pin[2] … pin[3] …
  • 5. A. Πίνακες 1. Μονοδιάστατοι Πίνακες 2. Παράδειγµα Χρήσης Πίνακα 5∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Πλέον µετά την δήλωση έχουµε στα χέρια µας τις µεταβλητές και µπορούµε να τις χρησιµοποιήσουµε. ∆είτε για παράδειγµα το εξής απλό πρόγραµµα: Οι µεταβλητές διαχειρίζονται όπως οι τυπικές ακέραιες µεταβλητές /* array.c: Aplo programma me pinaka */ #include <stdio.h> int main() { int pin[3]; int sum; pin[0]=1; pin[1]=3; pin[2]=4; sum=pin[0]+pin[1]+pin[2]; printf("n%d+%d+%d=%d",pin[0],pin[1],pin[2],sum); } Προσοχή, µην γράψουµε αριθµό για όριο του πίνακα που είναι εκτός του επιτρεπτού. Π.χ. Αν έχουµε δήλωση int pin[4]; και γράψουµε για όνοµα µεταβλητής pin[5] θα έχουµε σφάλµα όταν θα εκτελέσουµε το πρόγραµµα!
  • 6. A. Πίνακες 1. Μονοδιάστατοι Πίνακες 3. Αρχικοποιήση Πίνακα κατά την ∆ήλωση 6∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Όπως όταν έχουµε µια µεταβλητή, µπορούµε να την αρχικοποιήσουµε µε µια τιµή όταν την δηλώνουµε µε µία εντολή της µορφής: Το ίδιο ισχύει και για τους πίνακες. Έχουµε το δικαίωµα να αρχικοποιήσουµε τον πίνακα µε µια εντολή ως εξής: Που αντιστοιχεί στην δήλωση και καταχώρηση των µεταβλητών: Θέλει προγραµµατιστική προσοχή! ∆ιότι θα πρέπει να έχουµε ακριβώς τόσες τιµές όσες και οι θέσεις του πίνακα. Αν βάλουµε λιγότερες ή περισσότερες τιµές µέσα στα άγκιστρα, τότε πιθανόν το πρόγραµµα µας να έχει µη αναµενόµενη συµπεριφορά! int pinakas[5]; pinakas[0]=0; pinakas[1]=4; pinakas[2]=9; pinakas[3]=2; pinakas[4]=1; int pinakas[5] = {0,4,9,2,1}; int x=5;
  • 7. A. Πίνακες 1. Μονοδιάστατοι Πίνακες 3. Αρχικοποιήση Πίνακα κατά την ∆ήλωση 7∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Λεπτοµέρειες του µεταγλωττιστή: Α) Αν δεν δηλώσουµε διάσταση κατά την αρχικοποίηση τότε ο µεταγλωττιστής αρχικοποιεί τη διάσταση στο πλήθος των στοιχείων του πίνακα. Έτσι οι δύο ακόλουθες δηλώσεις είναι ισοδύναµες: int pin[4]={2,4,6,8}; int pin[]={2,4,6,8}; Λεπτοµέρειες του µεταγλωττιστή: B) Ωστόσο αν δηλώσουµε µεγαλύτερη διάσταση στον πίνακα, µπορούµε να αρχικοποίησουµε µε λιγότερα στοιχεία τον πίνακα. Θα δεσµευτεί χώρος για τα επόµενα στοιχεία, αλλά δεν µπορούµε να είµαστε σίγουροι για την τιµή που θα έχουν Για παράδειγµα η ακόλουθη δήλωση είναι έγκυρη: int pin[10]={2,4,6,8};
  • 8. A. Πίνακες 1. Μονοδιάστατοι Πίνακες 4. Στατική ∆έσµευση Μνήµης Πίνακα 8∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Στην πράξη χρησιµοποιούνται 4 τρόποι για την δήλωση της διάστασης του πίνακα. Η επιλογή του τρόπου εξαρτάται από το πρόγραµµα που γράφουµε. Π.χ. στο τµήµα δήλωσης των δεδοµένων γράφουµε: { int pinakas[100]; //Εδώ δηλώνουµε τη διάσταση του πίνακα int i; for (i=0; i<100; i++) { /*Κάνε κάποια πράγµατα στον πίνακα*/ } } Α’ τρόπος: ∆ηλώνουµε την διάσταση «καρφωτά» µέσω ενός αριθµού. • Ο τρόπος αυτός είναι αντιαισθητικός και δείχνει µικρή προγραµµατιστική εµπειρία. Π.χ. αν χρειαστεί να τροποποιήσουµε το πρόγραµµα µας για να τρέχει για 1000 ακεραίους, τότε πρέπει να βρούµε όλες τις εµφανίσεις του 100 και να το αλλάξουµε σε 1000. • Αυτόν τον τρόπο θα τον εφαρµόζουµε µόνο όταν θέλουµε να «τσεκάρουµε» έναν πολύ µικρό κώδικα.
  • 9. A. Πίνακες 1. Μονοδιάστατοι Πίνακες 4. Στατική ∆έσµευση Μνήµης Πίνακα 9∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Παράδειγµα: #define N 100 // Εδώ δηλώνουµε το µέγεθος του πίνακα main() { int pinakas[Ν]; //∆ήλωση του πίνακα int i; for (i=0; i<Ν; i++) { /*Κανε κάποια πράγµατα στον πίνακα*/ } } Β’ τρόπος: ∆ηλώνουµε την διάσταση µέσω µίας συµβολικής σταθεράς. • Ο τρόπος αυτός είναι ισοδύναµος µε τον προηγούµενο και έχει το πλεονέκτηµα ότι η διάσταση του πίνακα δηλώνεται µόνο µία φορά µέσω της συµβολικής σταθεράς. • Σε περίπτωση που θέλουµε να αλλάξουµε τη διάσταση του πίνακα αρκεί να αλλάξουµε την τιµή στη συµβολική σταθερά.
  • 10. A. Πίνακες 1. Μονοδιάστατοι Πίνακες 4. Στατική ∆έσµευση Μνήµης Πίνακα 10∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Είναι πολύ συχνό στα προγράµµατα µας, να µην ξέρουµε πόσες ακριβώς θέσεις θα χρειαστούµε στον πίνακα. Στις περιπτώσεις αυτές, κάνουµε µια εκτίµηση του πόσες θέσεις (ένα άνω όριο) θα χρειαστούµε και δηλώνουµε τον πίνακα µε αυτό το όριο. Στην συνέχεια έχουµε µια µεταβλητή που χρησιµοποιούµε ως άνω όριο του πίνακα, ανάλογα µε το πόσες θέσεις χρειαζόµαστε πραγµατικά. Γ’ τρόπος: ∆ηλώνουµε τη µέγιστη διάσταση του πίνακα µέσω συµβολικής σταθεράς, και έπειτα έχουµε µία µεταβλητή για το πλήθος των θέσεων που χρησιµοποιούµε #define SIZE 1000 // Εδώ δηλώνουµε το µέγιστο µέγεθος του πίνακα main() { int pinakas[SIZE]; int N=100; int i; for (i=0; i<Ν; i++) { /*Κανε κάποια πράγµατα στον πίνακα*/ } }
  • 11. A. Πίνακες 1. Μονοδιάστατοι Πίνακες 4. Στατική ∆έσµευση Μνήµης Πίνακα 11∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Λίγα παραπάνω πράγµατα για τους µονοδιάστατους πίνακες... Αντιλαµβανόµαστε ότι υπάρχει ένα πρόβληµα µε τους πίνακες και το µέγεθος που θέλουµε να έχουν στο πρόγραµµα µας. Τα πράγµατα είναι καλά, όταν ξέρουµε εκ των προτέρων πόσα στοιχεία θα έχει. Τότε τρόποι δήλωσης σαν αυτούς που είδαµε είναι µια χαρά! Αυτoί ο τρόποι δήλωσης του πίνακα αναφέρονται σαν στατική δέσµευση µνήµης. Αντίθετα αν οι τρόποι που αναφέραµε δεν µπορούν να εξυπηρετήσουν το πρόγραµµα µας (φανταστείτε για παράδειγµα, ένα πρόγραµµα που το µέγεθος του πίνακα εξαρτάται από την είσοδο του χρήστη σε πολύ µεγάλο βαθµό. ∆ηλαδή την µία φορά πρέπει να τρέχει για 10 ακέραιους και την άλλη για 1.000.000 ακεραίους). Εκεί είναι κατάχρηση να δηλώνουµε τόσο µεγάλο πίνακα για πιθανόν τόσα λίγα δεδοµένα. Γι’ αυτόν τον λόγο θα δούµε και έναν δεύτερο τρόπο να δεσµεύουµε χώρο στην µνήµη για έναν πίνακα, στο µάθηµα 9 και καλείται δυναµική δέσµευση µνήµης. ∆’ τρόπος: Ζητάµε από τον χρήστη να µας εισάγει κατά τον χρόνο εκτέλεσης την διάσταση του πίνακα και δεσµεύουµε δυναµικά τον χώρο στην µνήµη (δυναµική δέσµευση µνήµης)
  • 12. A. Πίνακες 2. ∆ιδιάστατοι Πίνακες 1. ∆ήλωση Πίνακα 12∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Ένας διδιάστατος πίνακας (πίνακας 2 διαστάσεων) είναι και πάλι ένας αποθηκευτικός χώρος στην µνήµη, όπου έχουµε δύο διαστάσεις: Μία για τις γραµµές και µία για τις στήλες. Έτσι θα έχουµε το δικαίωµα να ορίσουµε π.χ. έναν πίνακα ακεραίων 6x4, δηλαδή έναν πίνακα ακεραίων µε 6 γραµµές και 4 στήλες Θα έχουµε τα εξής στοιχεία στον πίνακα (προσέξτε και πάλι ότι η αρίθµηση των γραµµών και των στηλών ξεκινάει από το 0). Όνοµα του πίνακα στο παράδειγµα είναι Α: Στήλη 0 Στήλη 1 Στήλη 2 Στήλη 3 Γραµµή 0 A[0][0] A[1][1] A[0][2] A[0][3] Γραµµή 1 A[1][0] A[1][1] A[1][2] A[1][3] Γραµµή 2 A[2][0] A[2][1] A[2][2] A[2][3] Γραµµή 3 A[3][0] A[3][1] A[3][2] A[3][3] Γραµµή 4 A[4][0] A[4][1] A[4][2] A[4][3] Γραµµή 5 A[5][0] A[5][1] A[5][2] A[5][3]
  • 13. A. Πίνακες 2. ∆ιδιάστατοι Πίνακες 1. ∆ήλωση Πίνακα 13∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Ένας διδιάστατος πίνακας θα δηλώνεται (στο τµήµα δήλωσης µεταβλητών) µε εντολή της µορφής: Όπου: Τύπος_∆εδοµένων: Ο τύπος δεδοµένων των µεταβλητών του πίνακα. ΟΝΟΜΑ_ΠΙΝΑΚΑ: Το όνοµα που επιλέγουµε εµείς για τον πίνακα. ΠΛΗΘΟΣ-ΓΡΑΜΜΩΝ, ΠΛΗΘΟΣ-ΣΤΗΛΩΝ (προσέξτε ότι είναι µέσα σε αγκύλες πρώτα οι γραµµές και έπειτα οι στήλες): Πόσες γραµµές και στήλες θα περιέχει ο πίνακας. Το πλήθος των µεταβλητών που θα οριστούν θα είναι ίσο µε το γινόµενο του πλήθος των γραµµών µε το πλήθος των στηλών. Έτσι ο πίνακας που είδαµε προηγουµένως θα δηλώνεται µε µία εντολή δήλωσης της µορφής: Ενώ για παράδειγµα ένας 8x10 πίνακας µεταβλητών double θα δηλώνεται µε την εντολή: Τύπος_∆εδοµένων ΟΝΟΜΑ_ΠΙΝΑΚΑ[ΠΛΗΘΟΣ-ΓΡΑΜΜΩΝ][ΠΛΗΘΟΣ-ΣΤΗΛΩΝ]; int Α[6][4]; double Α[8][10];
  • 14. A. Πίνακες 2. ∆ιδιάστατοι Πίνακες 2. Αρχικοποίηση κατά τη ∆ήλωση 14∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Αντίστοιχα µε τους µονοδιάστατους πίνακες και οι διδιάστατοι πίνακες µπορούν να αρχικοποιηθούν µε µια εντολή δήλωσης της µορφής: Όπου φαίνεται ότι γράφουµε τα περιεχόµενα κάθε διαδοχικής γραµµής µέσα σε άγκιστρα. ...ενώ οι διαδοχικές γραµµές του πίνακα χωρίζονται µε κόµµατα και βρίσκονται σε ένα µεγάλο ζεύγος άγκιστρων. Υπάρχει και µια πιο εκκεντρική µορφή δήλωσης: Όπου η αντιστοίχιση είναι νοητή, δηλαδή τα 5 πρώτα στοιχεία είναι για την 1η γραµµή κ.λπ. Ο λόγος ύπαρξης αυτής της εντολής δήλωσης είναι η απεικόνιση διδιάστατων πινάκων στην µνήµη που θα δούµε αµέσως τώρα! int pinakas[2][5] = {{0,4,9,2,1},{4,3,2,5,2}}; int pinakas[2][5] = {0,4,9,2,1,4,3,2,5,2};
  • 15. A. Πίνακες 2. ∆ιδιάστατοι Πίνακες 3. Απεικόνιση στη Μνήµη 15∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Βλέπουµε πως δεσµεύεται η µνήµη για έναν πίνακα που δηλώνεται µε την εντολή: Όπως είδαµε εδώ δηλώνουµε 3x2=6 µεταβλητές. Τα ονόµατα των 6 µεταβλητών που δηλώσαµε είναι: Είναι σηµαντικό ότι οι µεταβλητές δηλώνονται στον χώρο µνήµης της συνάρτησης σε διαδοχικές θέσεις γραµµή προς γραµµή: int pin[2][3]; pin[0,0] pin[0,1] pin[0,2] pin[1,0] pin[1,1] pin[1,2] pin[0,0] pin[0,1] pin[0,2] pin[1,0] … pin[1,1] pin[1,2]
  • 16. A. Πίνακες 2. ∆ιδιάστατοι Πίνακες 4. Χρήση ∆ιδιάστατων Πινάκων 16∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Ο πιο συνηθισµένος τρόπος για να διαχειριστούµε έναν διδιάστατο πίνακα, είναι µέσω µιας διπλής (εµφωλιασµένης) for. Συνήθως λοιπόν κάνουµε µια επανάληψη στις γραµµές και µία εµφωλιασµένη επανάληψη στις στήλες, προκειµένου να κάνουµε µια διαπέραση των στοιχείων του πίνακα: ∆είτε για παράδειγµα τον ακόλουθο κώδικα που δηλώνει έναν 10x5 πίνακα και αρχικοποιεί τα στοιχεία του σε 0. #define M 10 #define N 5 main() { int pin[M][N]; int i,j; //Ενας µετρητής για τις γραµµές και ένας για τις στήλες for (i=0; i<M; i++) for (j=0; j<N; j++) pin[i][j]=0; } Οι παρατηρήσεις που κάναµε περί στατικής δέσµευσης µνήµης ισχύουν και για τους διδιάστατους πίνακες!
  • 17. A. Πίνακες 3. Πολυδιάστατοι Πίνακες 17∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Αντίστοιχα ένας τριδιάστατος πίνακας (πίνακας 3 διαστάσεων) είναι και πάλι ένας αποθηκευτικός χώρος στην µνήµη, όπου έχουµε τρεις διαστάσεις Έτσι ένας 5x2x8 πίνακας θα δηλώνεται µε µία εντολή της µορφής: Ο οποίος θα περιέχει 5x2x8=80 ακέραιες µεταβλητές. Οι ίδιες παρατηρήσεις που κάναµε για τους µονοδιάστατους και τους διδιάστατους πίνακες ισχύουν βεβαίως και εδώ. Αντίστοιχα µπορούµε να ορίσουµε πίνακες πολλών διαστάσεων (δεν υπάρχει πρακτικά περιορισµός στις διαστάσεις που µπορούµε να χρησιµοποιήσουµε). Π.χ. Ένας 5-διάστατος πίνακας 2x4x9x2x4 δηλώνεται µε µία εντολή της µορφής: Τέτοιοι πίνακες είναι κυρίως για εξειδικευµένες εφαρµογές και δεν θα µας απασχολήσουν στους εκπαιδευτικούς στόχους των µαθηµάτων. int Α[5][2][8]; int Α[2][4][9][2][4];
  • 18. A. Πίνακες 4. Πίνακες και Συναρτήσεις 18∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Ένας πίνακας µπορεί να διοχετευτεί ως όρισµα σε µία συνάρτηση µε τον εξής τρόπο: #define N 100 void function(int pin[]); // Πρωτότυπο συνάρτησης main() { int array[N]; function(array); // ∆ιοχέτευση πίνακα ως όρισµα στη συνάρτηση } void function(int pin[]) // Σώµα Συνάρτησης { ...ενέργειες στον pin[0...99] } Ωστόσο δεν θα επεκταθούµε περαιτέρω! Σε επόµενο µάθηµα θα δούµε έναν εναλλακτικό τρόπο διοχέτευσης πινάκων σε συναρτήσεις, µε χρήση δεικτών τον οποίο και θα επιλέξουµε να εφαρµόζουµε στην πράξη.
  • 19. Β. Τυχαίοι Αριθµοί 1. Η συνάρτηση rand() 19∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Εδώ θα κάνουµε µια σύντοµη αναφορά σε δύο συναρτήσεις βιβλιοθήκης της C που µας επιτρέπουν να κάνουµε παραγωγή τυχαίων αριθµών. Η συνάρτηση rand() επιστρέφει τυχαίους αριθµούς. Το πρωτότυπό της είναι: Η οποία επιστρέφει έναν τυχαίο αριθµό στο διάστηµα 0...MAX_INT όπου MAX_INT ο µέγιστος µη προσηµασµένος ακέραιος που µπορεί να απεικονίσει το σύστηµά µας (συνήθως το 232-1) Είναι ορισµένη στην βιβλιοθήκη συναρτήσεων Ας δούµε δύο τρόπους να την χρησιµοποιήσουµε: Στο x θα αποθηκευτεί ένας αριθµός από το 0 έως το 99 Στο x θα αποθηκευτεί ένας αριθµός από το 10 έως το 100 unsigned int rand() stdlib.h x=rand()%100 x=10+rand()%91
  • 20. Β. Τυχαίοι Αριθµοί 2. Η συνάρτηση srand() 20∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Ο τρόπος λειτουργίας της rand() στηρίζεται σε κάποια περίπλοκα µαθηµατικά και κάθε φορά παράγει την ίδια ακολουθία τυχαίων αριθµών. Για τον λόγο αυτό, λέµε ότι παράγει ψευδοτυχαίους αριθµούς. Προκειµένου κάθε φορά που τρέχουµε το πρόγραµµα να παράγει άλλη ακολουθία τυχαίων αριθµών, πρέπει αρχικά στο πρόγραµµά µας να τρέξουµε την συνάρτηση: Που έχει δηλωθεί στη βιβλιοθήκη: Ο πιο συνηθισµένος τρόπος χρήσης είναι στην αρχή του προγράµµατός µας να γράψουµε την εντολή: Έτσι ώστε να αρχικοποιηθεί η ακολουθία τυχαίων αριθµών µε µία παράµετρο που εξαρτάται από την τρέχουσα ώρα. Θα απαιτηθεί να ενσωµατώσουµε και το αρχείο κεφαλίδας στο οποίο έχει οριστεί η συνάρτηση time() που χρησιµοποιεί το πρόγραµµά µας. void srand(int seed) stdlib.h srand(time(NULL)); time.h
  • 21. Β. Τυχαίοι Αριθµοί 3. Παράδειγµα παραγωγής τυχαίων αριθµών 21∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Το παρακάτω πρόγραµµα τυπώνει στην οθόνη 10 τυχαίους αριθµούς στο διάστηµα 0...99 /* random.c: Typwnei 10 tyxaioys akeraioys sto diastima 0..99 */ #include <stdio.h> #include <stdlib.h> #include <time.h> main() { int x,i; srand(time(NULL)); for (i=0; i<10; i++) { x=rand()%100; printf("n%d",x); } }
  • 22. Γ. Ασκήσεις 1. Αρχικοποίηση και Εκτύπωση Μονοδιάστατου Πίνακα 22∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Γράψτε ένα πρόγραµµα το οποίο: 1. Να δηλώνει έναν πίνακα 100 ακεραίων (SIZE) 2. Ναι διαβάζει από τον χρήστη έναν αριθµό Ν από το 20 έως το 100 (που θα δηλώνει το πλήθος των στοιχείων του πίνακα που θέλει να χρησιµοποιήσει). Να πραγµατοποιηθεί έλεγχος ότι ο χρήστης πληκτρολόγησε τιµή από το 20 έως το 100. 3. Να αρχικοποιηθεί ο πίνακας µε τυχαίους αριθµούς 4. Να προβάλλει τα στοιχεία του πίνακα στην οθόνη µε έναν κοµψό τρόπο.
  • 23. Γ. Ασκήσεις 2. Εκτύπωση ∆ιδιάστατων Πινάκων 23∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Γράψτε ένα πρόγραµµα το οποίο: 1. Να δηλώνει έναν διδιάστατο πίνακα 5x8 2. Να αρχικοποιεί τις τιµές του πίνακα, αναθέτοντας σε κάθε θέση έναν τυχαίο αριθµό από 0 έως 200 3. Να προβάλλει τα στοιχεία του πίνακα στην οθόνη µε έναν κοµψό τρόπο (σε κάθε γραµµή της οθόνης να είναι και µία γραµµή του πίνακα)
  • 24. Γ. Ασκήσεις 3. Στατική ∆έσµευση Μνήµης σε ∆ιδιάστατο Πίνακα 24∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Γράψτε ένα πρόγραµµα σε γλώσσα C που: 1. Να δηλώνει έναν διδιαστατο πίνακα 100x200 ακεραίων (SIZE1xSIZE2) 2. Ναι διαβάζει από τον χρήστη έναν αριθµό M από το 10 έως το 100 (που θα δηλώνει το πλήθος των γραµµών του πίνακα που θέλει να χρησιµοποιήσει). Να πραγµατοποιηθεί έλεγχος ότι ο χρήστης πληκτρολόγησε τιµή από το 10 έως το 100. 3. Ναι διαβάζει από τον χρήστη έναν αριθµό Ν από το 10 έως το 100 (που θα δηλώνει το πλήθος των στηλών του πίνακα που θέλει να χρησιµοποιήσει). Να πραγµατοποιηθεί έλεγχος ότι ο χρήστης πληκτρολόγησε τιµή από το 10 έως το 100. 4. Να αρχικοποιηθεί ο πίνακας µε τυχαίους αριθµούς 5. Να προβάλλει τα στοιχεία του πίνακα στην οθόνη µε έναν κοµψό τρόπο.
  • 25. Γ. Ασκήσεις 4. Κατασκευή Παιχνιδιού! 25∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Γράψτε ένα πρόγραµµα σε γλώσσα C που: 1. Θα αρχικοποιεί µία µεταβλητή µε όνοµα hidden µε έναν τυχαίο ακέραιο αριθµό από το 1 έως το 100. 2. Θα ζητεί από τον χρήστη να πληκτρολογήσει (µαντέψει) τον αριθµό 1. Αν ο χρήστης εισάγει τον αριθµό, θα εκτυπώσει κατάλληλο µήνυµα επιβράβευσης και θα τερµατίσει. 2. Αν ο χρήστης εισάγει µικρότερο αριθµό, θα εκτυπώσει κατάλληλο µήνυµα στον χρήστη να πληκτρολογήσει µεγαλύτερο αριθµό και θα επαναλάβει από το βήµα 2 3. Αν ο χρήστης εισάγει µεγαλύτερο αριθµό, θα εκτυπώσει κατάλληλο µήνυµα στον χρήστη να πληκτρολογήσει µικρότερο αριθµό και θα επαναλάβει από το βήµα 2
  • 26. Γ. Ασκήσεις 26∆ηµήτρης Ψούνης, Η Γλώσσα C, Μάθηµα 7: Πίνακες Όπως είδαµε το συντακτικό και η χρήση των πινάκων δεν είναι ιδιαίτερα δύσκολο. Σηµαντικότερο είναι να αναπτύξουµε αλγοριθµική σκέψη, δηλαδή να µάθουµε σκεπτικά που έχουν αναπτυχθεί για την αποδοτική επίλυση προβληµάτων µε τον υπολογιστή. Συνίσταται λοιπόν στο σηµείο αυτό να µελετηθούν τα ακόλουθα τέσσερα µαθήµατα αλγορίθµων µε τη βοήθεια της γλώσσας C: • Αλγόριθµοι σε C – Μάθηµα 1: ∆ιαπέραση Πίνακα • Αλγόριθµοι σε C – Μάθηµα 2: Αναζήτηση σε Πίνακα • Αλγόριθµοι σε C – Μάθηµα 3: Ταξινόµηση Πίνακα • Αλγόριθµοι σε C – Μάθηµα 4: Αλγεβρικές Πράξεις Πινάκων