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

Σχετικά έγγραφα
Προγραµµατιστικές Τεχνικές

i : 0<=i<N-1 => data[i] <= data[i+1] 25/10/2009

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

242 -ΕισαγωγήστουςΗ/Υ

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

Επιµέλεια Θοδωρής Πιερράτος

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση

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

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

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

Εχουμε ήδη συναντήσει μονοδιάστατους πίνακες, οι οποίοι ορίζονται ως εξής:

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

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

Πίνακες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

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

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Δομές Δεδομένων & Αλγόριθμοι

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Προγραμματιστικές Τεχνικές

k 1 j 1 A[k] i A[...]... A[...]... k A4.

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

Εργαστηριακή Άσκηση 1

Προγραμματιστικές Τεχνικές

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

Δομές Δεδομένων & Αλγόριθμοι

Κεφάλαιο V: Δομές και ενώσεις. 5.1 Δομές.

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή

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

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

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

Δομές δεδομένων (2) Αλγόριθμοι

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Επανάληψη για τις Τελικές εξετάσεις

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

είκτες και Πίνακες (2)

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

Εργαστήριο 2: Πίνακες

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

Ενδεικτικές Ερωτήσεις Θεωρίας

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

04ο Πίνακες.doc. Πίνακας. Γενικά

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

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

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

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ. Όνομα:.. Βαθμός: /100

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

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

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

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t)

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

ΗΥ-150. Ταξινόµηση και Αναζήτηση

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

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

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

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

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 8 ο. Αναζήτηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

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

for for for for( . */

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδηµαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόµενη λύση

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών

Γ7.8 Εγγραφές (Structures) Γ Λυκείου Κατεύθυνσης

1. ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Transcript:

Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα ιοικητικής Επιστήµης & Τεχνολογίας ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Κεφάλαιο 8 Προχωρηµένα Θέµατα Προγραµµατισµού C Γιώργος Γιαγλής

Περίληψη Κεφαλαίου 8 Προχωρηµένα Θέµατα Προγραµµατισµού C Πίνακες Ανάθεση τιµών στα στοιχεία µονοδιάστατου πίνακα Εκτύπωση στοιχείων µονοδιάστατου πίνακα Πολυδιάστατοι Πίνακες Ανάθεση τιµών στα στοιχεία πολυδιάστατου πίνακα Εκτύπωση στοιχείων πολυδιάστατου πίνακα Αλγόριθµοι αναζήτησης σε πίνακες Γραµµική Αναζήτηση υαδική Αναζήτηση Αλγόριθµοι ταξινόµησης σε πίνακες Ταξινόµηση µε επιλογή Ταξινόµηση φυσαλίδας οµές Εγγραφές ή οµές Πίνακες οµών 2

Πίνακες Ένας πίνακας (array) είναι µια σύνθετη δοµή δεδοµένων οµογενής δοµή δεδοµένων (στοιχεία του ίδιου τύπου) στατική δοµή δεδοµένων (έχει σταθερό µέγεθος) ήλωση πίνακα (Τύπος στοιχείων, Όνοµα Πίνακα, Πλήθος Στοιχείων σε κάθε ιάσταση) Αναφορά σε στοιχείο του Πίνακα: όνοµα του πίνακα και τη θέση του στοιχείου µέσα σε αγκύλες Int pin [4] Ορισµός ενός πίνακα 4 ακέραιων στοιχείων Float arr[10][5] Ορισµός ενός δισδιάστατου πίνακα 10*5 πραγµατικών αριθµών pin[0] Αναφορά στο στοιχείο που βρίσκεται στη θέση 0 του πίνακα pin ΠΡΟΣΟΧΗ: η αρίθµηση των στοιχείων ενός πίνακα στη C αρχίζει πάντα από το στοιχείο µηδέν Απόδοση αρχικών τιµών: arr[0][0] µέσα στο πρόγραµµα για κάθε στοιχείο ξεχωριστά Αναφορά στο πρώτο στοιχείο του πίνακα arr κατά τη δήλωση του πίνακα συγκεντρωτικά για όλα τα στοιχεία του int pin[5]={1,7,22,35,59; 3

Αλγόριθµοι Αναζήτησης Πολλές φορές αναζητούµε ένα συγκεκριµένο από τα πολλά στοιχεία ενός πίνακα. Οι αλγόριθµοι αναζήτησης εντοπίζουν τη θέση του στοιχείου µε την επιθυµητή τιµή αν υπάρχει. Αν δεν υπάρχει κανένα στοιχείο µε την τιµή αυτή τυπώνουν αντίστοιχο µήνυµα Χαρακτηριστικοί Αλγόριθµοι Αναζήτησης σε Πίνακες Γραµµική Αναζήτηση υαδική Αναζήτηση 4

Αλγόριθµοι Αναζήτησης Γραµµική Αναζήτηση ξεκινάει από το πρώτο στοιχείο του πίνακα και ελέγχει ένα-ένα τα στοιχεία µέχρι είτε να βρεθεί το ζητούµενο είτε να τελειώσει ο πίνακας εν αποτελεί αποδοτικό αλγόριθµο: Σε ένα πίνακα µεγέθους Ν απαιτούνται N/2 συγκρίσεις main() /* αλγόριθµος γραµµικής αναζήτησης της θέσης του στοιχείου x σε πίνακα µε το όνοµα pin µεγέθους Ν ακέραιων στοιχείων */ {int pin[n], x, i; i=0; /* ξεκινάµε από το πρώτο στοιχείο του πίνακα */ while ((i<n) && (pin[i]!=x)) /* όσο δεν έχει τελειώσει ο πίνακας και δεν έχουµε βρει το ζητούµενο στοιχείο */ i++; /* αυξάνουµε το µετρητή και προχωράµε στο επόµενο στοιχείο */ if (pin[i]==x) /* αν έχουµε βρει το στοιχείο */ printf( Το στοιχείο πρωτοεµφανίζεται στη θέση %d,i); else printf( Το στοιχείο δεν υπάρχει στον πίνακα ); 5

Αλγόριθµοι Αναζήτησης υαδική Αναζήτηση Πραγµατοποιεί διαδοχικές «διασπάσεις» του πίνακα στη µέση, ώστε µετά από κάθε σύγκριση να έχει αποµείνει ο µισός αριθµός στοιχείων για έλεγχο Σε περίπτωση ταξινοµηµένου πίνακα, επιταχύνεται η διαδικασία της αναζήτησης Περίπτωση αναζήτησης σε πίνακα µε στοιχεία ταξινοµηµένα σε αύξουσα σειρά Σύγκριση του ζητούµενο στοιχείου µε τη µεσαία θέση του πίνακα Αν είναι µικρότερο, τότε γνωρίζουµε ότι το στοιχείο που ζητάµε βρίσκεται στο πρώτο µισό του πίνακα Σύγκριση του στοιχείου µε το µεσαίο στοιχείο του υποπίνακα που αποµένει κοκ 6

Αλγόριθµοι Αναζήτησης υαδική Αναζήτηση Παράδειγµα Έστω πίνακας 10 θέσεων ταξινοµηµένος σε φθίνουσα σειρά, όπως φαίνεται παρακάτω, και έστω ότι αναζητούµε το στοιχείο µε τιµή 30 στον πίνακα αυτό θέση 0 1 2 3 4 5 6 7 8 9 στοιχεία 200 165 117 109 84 74 57 30 26 19 Αναζήτηση του µεσαίου στοιχείου θέση 4, τιµή 84 Σύγκριση µε ζητούµενο 30<84 Άρα το στοιχείο βρίσκεται στο δεξί τµήµα του πίνακα(θέση 5 έως θέση 9) Αναζήτηση του µεσαίου στοιχείου θέση 7, τιµή 30 Σύγκριση µε ζητούµενο 30=30 Τερµατισµός Αλγορίθµου Η ίδια διαδικασία ακολουθείται και σε περιπτώσεις που ψάχνουµε ένα στοιχείο που δεν υπάρχει 7

Αλγόριθµοι Αναζήτησης υαδική Αναζήτηση main() /* αλγόριθµος δυαδικής αναζήτησης της θέσης του στοιχείου x σε ταξινοµηµένο σε αύξουσα σειρά πίνακα µε το όνοµα pin µεγέθους Ν ακέραιων στοιχείων */ {int pin[n], x; int lower, upper; /* το κάτω και το πάνω όριο του υποπίνακα στον οποίο ψάχνουµε */ int mesaio; /* το µεσαίο στοιχείο του πιο πάνω υποπίνακα */ lower=0; upper=n-1 /* ξεκινάµε από τα όρια του πίνακα */ mesaio=(lower+upper)/2; while ((pin[mesaio]!=x) && (lower<=upper)) /* όσο δεν έχουµε βρει το ζητούµενο στοιχείο και δεν έχει εξαντληθεί ο υποπίνακας */ {if (pin[mesaio]<x); /* αν το µεσαίο στοιχείο είναι µικρότερο του ζητούµενου */ lower=mesaio+1; /* συνεχίζουµε στο πάνω µισό του πίνακα */ else /* αλλιώς */ upper=mesaio-1; /* συνεχίζουµε στο κάτω µισό του πίνακα */ mesaio=(lower+upper)/2; if (pin[mesaio]==x) /* αν έχουµε βρει το στοιχείο */ printf( Το στοιχείο πρωτοεµφανίζεται στη θέση %d,mesaio); else printf( Το στοιχείο δεν υπάρχει στον πίνακα ); 8

Αλγόριθµοι Ταξινόµησης Σε πολλές περιπτώσεις, η ταξινόµηση είναι ένα καλό πρώτο βήµα πριν την αναζήτηση ταξινόµηση εντός του ίδιου πίνακα µε αµοιβαίες αντιµεταθέσεις των στοιχείων του Αλγόριθµοι ταξινόµησης σε µονοδιάστατους πίνακές Ταξινόµηση µε επιλογή Ταξινόµηση φυσαλίδας 9

Αλγόριθµοι Ταξινόµησης Ταξινόµηση µε επιλογή 1. ιατρέχει όλα τα στοιχεία ενός πίνακα 2. Βρίσκει κάθε φορά το µικρότερο (αν θέλουµε ταξινόµηση σε αύξουσα σειρά) το µεγαλύτερο (αν θέλουµε ταξινόµηση σε φθίνουσα σειρά) αντιµεταθέτει µε το πρώτο στοιχείο που δεν έχει ελεγχθεί ακόµα 3. Αντιµεταθέτει µε το πρώτο στοιχείο που δεν έχει ελεγχθεί ακόµα 4. Η διαδικασία αυτή εκτελείται Ν-1 φορές για ένα πίνακα Ν στοιχείων και όταν τελειώσει, ο πίνακας είναι ταξινοµηµένος 10

Αλγόριθµοι Ταξινόµησης Ταξινόµηση µε επιλογή main() /* αλγόριθµος ταξινόµησης µε επιλογή σε αύξουσα σειρά πίνακα µε το όνοµα pin µεγέθους Ν ακέραιων στοιχείων */ {int pin[n]; int elaxisto, thesi; /* ελάχιστο κάθε φορά στοιχείο και η θέση του στον πίνακα */ int i, k, temp; /* βοηθητικές µεταβλητές */ for (i=0;i<n-1;i++) /* η διαδικασία εκτελείται Ν-1 φορές */ {elaxisto=pin[i]; thesi=i; /* θέτουµε αρχικά ως ελάχιστο το στοιχείο εκκίνησης */ for (k=i+1; k<n; k++) /* ελέγχουµε όλα τα υπόλοιπα στοιχεία µέχρι το τέλος */ if (pin[k]<min) /* αν το στοιχείο είναι µικρότερο του τρέχοντος ελάχιστου */ {elaxisto=pin[i]; thesi=i; /* θέσε αυτό το στοιχείο ως νέο ελάχιστο */ temp=pin[i]; pin[i]=p[thesi]; p[thesi]=temp; /* 3 εντολές για την αντιµετάθεση του στοιχείου i µε το ελάχιστο */ 11

Αλγόριθµοι Ταξινόµησης Ταξινόµηση φυσαλίδας 1. ιατρέχει τα στοιχεία ενός πίνακα 2. Συγκρίνει ανά δυο γειτονικά αντιµεταθέτοντάς τα αν δεν είναι σε σωστή σειρά 3. Μετά από Ν-1 διαπεράσεις, ο πίνακας είναι ταξινοµηµένος main() /* αλγόριθµος ταξινόµησης φυσαλίδας σε αύξουσα σειρά πίνακα µε το όνοµα pin µεγέθους Ν ακέραιων στοιχείων */ {int pin[n]; int i, k, temp; /* βοηθητικές µεταβλητές */ for (i=0;i<n-1;i++) /* η διαδικασία εκτελείται Ν-1 φορές */ for (k=ν-1; k>i; k--) /* ελέγχουµε όλα τα στοιχεία από το τέλος µέχρι το τρέχον */ if (pin[k]<pin[k-1) /* αν ένα στοιχείο είναι µικρότερο του προηγούµενου του */ {temp=pin[k]; pin[k]=p[k-1]; p[k-1]=temp; /* αντιµετάθεσε τα */ 12

Εγγραφές- οµές Κάθε Εγγραφή στη C ονοµάζεται οµή σύνθετη δοµή δεδοµένων ετερογενής δοµή δεδοµένων (οµαδοποιεί στοιχεία διαφορετικών τύπων) Κάθε στοιχείο µιας εγγραφής ονοµάζεται πεδίο (field) και χαρακτηρίζεται από το όνοµα του και τον τύπο του Ορίζεται µε την ειδική λέξη struct struct Όνοµα οµής { Τύπος1 Πεδίο1.1, Πεδίο1.2,...; Τύπος2 Πεδίο2.1, Πεδίο2.2,...;... Παράδειγµα, ο τύπος της δοµής των στοιχείων ενός φοιτητή struct StoixeiaFoithth { char AM[9], Onoma[20], Epwnymo[30]; float MesosOros; 13

Εγγραφές- οµές οµή µε στοιχεία Φοιτητή struct StoixeiaFoithth { char AM[9], Onoma[20], Epwnymo[30]; float MesosOros; Προσοχή: εν ορίζει καµία µεταβλητή ε δεσµεύει χώρο στη µνήµη. Ορίζει µόνο τη µορφή της δοµής, δηλαδή την οργάνωση της σε πεδία. Ορισµός Μεταβλητών: ειδική λέξη struct ακολουθούµενη από το όνοµα της δοµής και τα ονόµατα των µεταβλητών struct StoixeiaFoithth Foithths1, Foithths2, Foithths3; Αναφορά σε συγκεκριµένο πεδίο µιας µεταβλητής δοµής: µε τη χρήση του τελεστή. (τελεία), οποίος διαχωρίζει το όνοµα της µεταβλητής και το όνοµα του πεδίου π.χ. απόδοση αρχικών τιµών σε στοιχεία της µεταβλητής δοµής Foithths1 Foithths1.AM = 80800001 ; Foithths1.MesosOros = 9.5; 14

Πίνακες οµών (Βάσεις εδοµένων) Πίνακας οµών: Ένας πίνακας του οποίου τα στοιχεία είναι οµές Αποτελεί µια Βάση εδοµένων Παράδειγµα: Βάση εδοµένων για την αποθήκευση στοιχείων 100 φοιτητών struct StoixeiaFoithth { char AM[9], Onoma[20], Epwnymo[30]; ; float MesosOros; struct StoixeiaFoithth Foithtes[100]; 15