Υλοποιήσεις,Δοκιμές και Εφαρμογές Βασικών Αφηρημένων Τύπων Δεδομένων στη C για εκπαιδευτική χρήση 1. O AΤΔ ΣΤΟΙΒΑ

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

Download "Υλοποιήσεις,Δοκιμές και Εφαρμογές Βασικών Αφηρημένων Τύπων Δεδομένων στη C για εκπαιδευτική χρήση 1. O AΤΔ ΣΤΟΙΒΑ"

Transcript

1 1. O AΤΔ ΣΤΟΙΒΑ 1.1 Εισαγωγή Η στοίβα αποτελεί την υλοποίηση μιας συλλογής αντικειμένων στην οποία κάθε εισαγωγή και διαγραφή γίνεται στο ίδιο άκρο που ονομάζεται κορυφή. Για την καλύτερη κατανόηση της λειτουργίας της στοίβας μπορούμε να δούμε παραδείγματα χρήσης της στοίβας στην καθημερινή ζωή. Μια μηχανή αποθήκευσης κερμάτων αποτελεί ένα τέτοιο παράδειγμα, με την πρόσθεση ενός κέρματος στην μηχανή-«στοίβα» ωθούνται προς τα κάτω όλα τα κέρματα από την κορυφή. Με την αφαίρεση ενός κέρματος στη στοίβα εμφανίζεται το επόμενο στην κορυφή. Ένα άλλο παράδειγμα από την καθημερινότητα είναι η στοίβα των πιάτων. Κάθε πιάτο που πλένεται τοποθετείται στην κορυφή της στοίβας, ενώ για σκούπισμα λαμβάνεται πάλι το πρώτο πιάτο. Η στοίβα είναι μια δομή που χρησιμοποιείται στην επιστήμη της πληροφορικής σε πολλές περιπτώσεις. Ένα παράδειγμα χρήσης της στοίβας είναι η στοίβα κλήσεων (call stack), είναι μια δομή δεδομένων που κρατά πληροφορίες σχετικά με τις ενεργές υπορουτίνες ενός προγράμματος. Αυτός ο τύπος στοίβας είναι γνωστός και σαν στοίβα εκτέλεσης (execution stack), στοίβα ελέγχου (control stack), στοίβα συναρτήσεων (function stack), ή στοίβα χρόνου εκτέλεσης (run-time stack), και συχνά αναφέρεται απλά σαν "η στοίβα". Αν και η συντήρηση της στοίβας κλήσεων είναι σημαντική για τη σωστή λειτουργία των πιο πολλών προγραμμάτων, οι λεπτομέρειες συνήθως είναι αόρατες στις γλώσσες υψηλού επιπέδου. Μια στοίβα κλήσεων χρησιμοποιείται για πολλούς σχετικούς μεταξύ τους σκοπούς, αλλά ο κύριος λόγος που υπάρχει είναι για να παρακολουθείται το σημείο στο οποίο κάθε ενεργή υπορουτίνα θα επιστρέψει τον έλεγχο όταν τελειώσει η εκτέλεσή της (ενεργές υπορουτίνες είναι αυτές που έχουν κληθεί αλλά ακόμα δεν έχει τελειώσει η εκτέλεσή τους, επιστρέφοντας). Άλλα παραδείγματα χρήσης της στοίβας είναι τα εξής: Άμεσες Εφαρμογές: Στο ιστορικό των σελίδων που επισκεπτόμαστε σε έναν web browser. Στη σειρά των πράξεων undo (αναίρεση) σε έναν επεξεργαστή κειμένου. Στην αλυσίδα των κλήσεων των διαφορετικών μεθόδων στην Java virtual machine. Έμεσες Εφαρμογές: Ως συστατικό σε άλλες δομές δεδομένων Ως βοηθητική δομή δεδομένων σε αλγορίθμους Aκόμη όμως την συναντούμε και στον κλάδο της Θεωρίας Υπολογισμού, που είναι άρρηκτα συνδεδεμένος με το θεωρητικό όσο και με το πρακτικό υπόβαθρο της επιστήμης της πληροφορικής, συγκεκριμένα στα πεπερασμένα αυτόματα στοίβας. Δ.Μήλιος 1

2 1.2 Ορισμός Ο ΑΤΔ στοίβα είναι μια συλλογή δεδομένων με γραμμική διάταξη στην οποία όλες οι εισαγωγές και οι διαγραφές γίνονται στο ένα άκρο το οποίο λέγεται κορυφή της στοίβας. Η πιο σημαντική ιδιότητα μιας στοίβας που ουσιαστικά την χαρακτηρίζει είναι ότι το τελευταίο στοιχείο που εισήχθη στην στοίβα είναι και το πρώτο που διαγράφεται από αυτή. Εξαιτίας αυτής της ιδιότητας η στοίβα καλείται και δομή LIFO (Last- In- First- Out) Δεδομένα Μια στοίβα αποτελεί μια συλλογή αντικειμένων (όχι απαραίτητα πεπερασμένη) σε γραμμική ακολουθία Πράξεις Οι βασικές πράξεις του ΑΤΔ στοίβα είναι οι εξής: Stoiva_dimiourgia: Δημιουργεί μια κενή στοίβα, σε περίπτωση ολικής απόκρυψης επιστρέφει και τον δείκτη στην στοίβα. Stoiva_exagogi: Σε περίπτωση που δεν είναι κενή η στοίβα εξάγει το στοιχείο της κορυφής, αλλιώς επιστρέφει μήνυμα υποχείλισης. Stoiva_othisi: Σε περίπτωση που δεν είναι γεμάτη η στοίβα προσθέτει ένα στοιχείο στην κορυφή της στοίβας, αλλιώς επιστρέφει μήνυμα υπερχείλισης. Stoiva_keni: Ελέγχει αν η στοίβα είναι κενή. 1.3 Yλοποιήσεις Στο κεφάλαιο αυτό θα παρουσιαστούν 2 διαφορετικές υλοποιήσεις του ΑΤΔ στοίβα, η υλοποίηση με Μερική Απόκρυψη και με Ολική Απόκρυψη. To τι σημαίνει Μερική και Ολική Απόκρυψη έχει επεξηγηθεί λεπτομερώς στο 2 ο κεφάλαιο Υλοποίηση 1η: Μερική Απόκρυψη Αρχεία Διεπαφής-Υλοποίησης Στο αρχείο Διεπαφής για την υλοποίηση με Μερική Απόκρυψη τα βασικά στοιχεία που εντοπίζονται είναι η δήλωση της δομής της στοίβας, ο ορισμός του μεγέθους της (DEFINE), οι δηλώσεις των συναρτήσεων που υλοποιούν τις πράξεις του ΑΤΔ στοίβα αλλά κυρίως εντοπίζεται το include του τύπου στοιχείου στοίβας το οποίο δεν περιλαμβάνει συγκεκριμένο μονοπάτι που να προσδιορίζει το αρχείο του τύπου στοιχείου στοίβας αλλά περιγράφει τον ρόλο του συγκεκριμένου include. Ακολουθεί ο κώδικας του αρχείου Διεπαφής: #ifndef STACK #define STACK #define PLITHOS 100 /*megisto epitrepto plh8os stoixeiwn ana stoiva*/ Δ.Μήλιος 2

3 #include "to antistoixo.h typou stoixeiou" /*edo analoga tin efarmogi i to test tou tipou stoixeiou mpainei to antoistixo.h tou tipou stoixeiou */ /*dhlwseis typwn*/ typedef struct { int korifi; /*8esh toy prwtoy stoixeioy ths stoivas*/ TStoixeioyStoivas pinakas[plithos]; /*o pinakas twn stoixeiwn*/ TStoivas; /*dhlwseis synarthsewn*/ /*dhmioyrgia*/ void Stoiva_dimiourgia(TStoivas *stoiva); /*Prakseis elegxoy*/ int Stoiva_keni(TStoivas stoiva); /*Prakseis pros8eshs/apomakrynshs*/ void Stoiva_exagogi(TStoivas *stoiva,tstoixeioystoivas *stoixeio,int *ypoxeilisi); void Stoiva_othisi(TStoivas *stoiva,tstoixeioystoivas stoixeio,int *yperxeilisi); #endif /*#ifndef STACK */ Ακολουθεί ο κώδικας του αρχείου Υλοποίησης: #include <stdio.h> #include <stdlib.h> #include "Stack.h" /*orismos synarthsewn*/ void Stoiva_dimiourgia(TStoivas *stoiva) {/* Pro: Kamia * Meta: Dhmioyrgia kenhs stoivas */ stoiva->korifi = -1; Δ.Μήλιος 3

4 int Stoiva_keni(TStoivas stoiva) {/* Pro: Dhmioyrgia ths stoiva * Meta: Epistrefei 1 an h stoiva einai kenh alliws 0 */ return (stoiva.korifi == -1); void Stoiva_exagogi(TStoivas *stoiva,tstoixeioystoivas *stoixeio,int *ypoxeilisi) {/* Pro: Mh kenh stoiva * Meta: Eksagetai to stoixeio apo th stoiva */ if (Stoiva_keni(*stoiva)) *ypoxeilisi = 1; { *ypoxeilisi = 0; TSstoiva_setValue(stoixeio, stoiva->pinakas[stoiva->korifi]); stoiva->korifi--; void Stoiva_othisi(TStoivas *stoiva,tstoixeioystoivas stoixeio,int *yperxeilisi) {/* Pro: Dhmioyrgia ths stoiva * Meta: Wtheitai to stoixeio sth stoiva */ if (stoiva->korifi == PLITHOS -1) *yperxeilisi = 1; { *yperxeilisi = 0; stoiva->korifi++; TSstoiva_setValue(&(stoiva->pinakas[stoiva->korifi]), stoixeio); Αρχεία Δοκιμής Στα αρχεία δοκιμής περιλαμβάνεται όπως έχει εξηγηθεί και στο κεφάλαιο 2 το αρχείο main που χρησιμοποιείται ως αρχείο test για τις πράξεις της ATΔ Στοίβα. Ακολουθεί ο κώδικας του αρχείου δοκιμής: #include <stdio.h> #include "Stack.h" #include "../../TS/TStoixeioyStoivas.h" void print_options(void); Δ.Μήλιος 4

5 int main(void) { int option, error,created,out_err; TStoivas stack; TStoixeioyStoivas x; error=created=0; do{ print_options(); scanf("%d", &option); switch(option) {case 1: Stoiva_dimiourgia(&stack); created=1; printf("\nh stoiva dimiourgithike!\n"); case 2: if(!created) { printf("\nden uparxei stoiva gia na eisaxthei stoixeio!\n"); printf("dwse ena stoixeio: "); out_err=tsstoiva_readvalue(stdin,&x); if(!out_err) { printf("\n error stin readvalue!\n"); Stoiva_othisi(&stack, x, &error); if(error) printf("\nyperxeilhsh stoivas. To stoixeio DEN eishx8h!\n"); printf("\nto stoixeio eishx8h!\n"); case 3: if(!created) { printf("\nden uparxei stoiva gia na eksaxthei stoixeio!\n"); Stoiva_exagogi(&stack, &x, &error); if(error) printf("\nkeni stoiva!\n"); { printf("\nekshx8h epityxws to stoixeio "); out_err=tsstoiva_writevalue(stdout,x); Δ.Μήλιος 5

6 if(out_err <0) { printf("\n error stin writevalue!\n"); case 4: if(!created) { printf("\nden uparxei stoiva gia na elexthei an einai kenh!\n"); if(stoiva_keni(stack)) printf("\nh stoiva einai kenh!\n"); printf("\nh stoiva DEN einai kenh!\n"); while(option); return 0; void print_options(void) { printf("\n\n1. Dhmioyrgia stoivas\n\ 2. Othisi stoixeiou sth stoiva\n\ 3. Eksagwgh stoixeiou apo th stoiva\n\ 4. Elegxos gia kenh stoiva\n\n\ Dwste thn epilogh sas(1-4, 0 gia eksodo):"); Ακόμη όμως περιλαμβάνονται και τα αρχεία Διεπαφής και Υλοποίησης της στοίβας που η μόνη διαφοροποίηση από τα πρότυπα αρχεία έγκειται στο path-μονοπάτι που περιλαμβάνεται στο αρχείο Διεπαφής καθώς αυτό είναι που προσδιορίζει την ένταξη τους στην συγκεκριμένη εφαρμογή-test (δεν δίνεται κώδικας επειδή είναι ουσιαστικά ο ίδιος με τα πρότυπα αρχεία) Εφαρμογές Σε αυτό το σημείο παρουσιάζονται 3 εφαρμογές που κάνουν χρήση του ΑΤΔ Στοίβα με Μερική Απόκρυψη. Mε μικρές αλλαγές μπορούν να κάνουν χρήση και της Διεπαφής με Ολική Απόκρυψη. Δ.Μήλιος 6

7 Οι εφαρμογές αυτές σε πλαίσιο αρχείων και όπως έχει αναλυθεί και στο 2 ο κεφάλαιο περιλαμβάνούν η καθεμία τα αρχεία Διεπαφής-Υλοποίησης της στοίβας, τα αρχεία Διεπαφής-Υλοποίησης του τύπου στοιχείου στοίβας και προφανώς το αρχείο-εφαρμογή main το οποίο υλοποιεί με τις κατάλληλες κλήσεις των συναρτήσεων-πράξεων το αντίστοιχο αποτέλεσμα που θέλει να επιτύχει η καθεμία από αυτές Μετατροπή ακεραίων αριθμών από το δεκαδικό στο δυαδικό Ακολουθεί ο κώδικας του αρχείου-εφαρμογής: #include <stdio.h> #include <stdlib.h> #include "Stack.h" #include "TStoixeioyStoivas.h" int main(void) { int number; TStoixeioyStoivas ypoloipo; /*to ypoloipo ths diaireshs ari8mos/2*/ int error,out_err; TStoivas stack; printf("dwste ena 8etiko akeraio:"); scanf("%d",&number); Stoiva_dimiourgia(&stack); while (number!= 0) { TSstoiva_setValue(&ypoloipo, number%2); Stoiva_othisi(&stack,ypoloipo,&error); number = number/2; printf("o arithmos sto dyadiko systhma einai:"); while (!Stoiva_keni(stack) ) { Stoiva_exagogi(&stack,&ypoloipo,&error); out_err=tsstoiva_writevalue(stdout,ypoloipo); if(out_err <0) { printf("\n error stin writevalue!\n"); printf("\n\n"); getch(); return 0; Υπολογισμός της τιμής μιας μεταθεματικής παράστασης Δ.Μήλιος 7

8 Εδώ διευκρινίζεται ότι στα πλαίσια σωστής εκτέλεσης της εφαρμογής στο αρχείο Διεπαφής του τύπου στοιχείου που χρησιμοποιεί η συγκεκριμένη εφαρμογή το TStoixeioyStoivas έχει οριστεί ως float. Ακολουθεί ο κώδικας του αρχείου Υλοποίησης του τύπου Στοιχείου στοίβας για να τονισθεί η ειδοποιός διαφορά και στην υλοποίηση των πράξεων του τύπου στοιχείου: #include "TStoixeioyStoivas.h" void TSstoiva_setValue (TStoixeioyStoivas *target, TStoixeioyStoivas source) { *target=source; int TSstoiva_readValue (FILE *from, TStoixeioyStoivas * Elem) { int fd; fd=fscanf(from, "%5.2f", Elem); if(fd==1) return 1; return 0; int TSstoiva_writeValue (FILE *to, TStoixeioyStoivas Elem) { int fd; fd=fprintf(to, "%5.2f--",Elem); return fd; Ακολουθεί ο κώδικας του αρχείου-εφαρμογής: #include <stdio.h> #include <stdlib.h> #include "Stack.h" #include "TStoixeioyStoivas.h" /*orismos synarthsewn*/ TStoixeioyStoivas upologismos (char,tstoixeioystoivas,tstoixeioystoivas); int einai_telestis (char); int main(void) { int sfalma; TStoivas stoiva; /*stoiva twn orwn*/ TStoixeioyStoivas oros1,oros2,apotelesma; char apantisi, metathematiki[256]; int i, ch, symbolo; Δ.Μήλιος 8

9 do { Stoiva_dimiourgia(&stoiva); metathematiki[0]='\0'; i=0; printf("dwste th meta8ematikh parastash:"); while ( (symbolo = getchar())!= '\n') { metathematiki[i]=symbolo; i++; if (symbolo >= '0' && symbolo <= '9') /*bre8hke oros*/ { TSstoiva_setValue(&apotelesma, (float)(symbolo-'0')); Stoiva_othisi(&stoiva,apotelesma,&sfalma); if ( einai_telestis(symbolo) ) /*bre8hke telesths*/ { Stoiva_exagogi(&stoiva,&oros1,&sfalma); Stoiva_exagogi(&stoiva,&oros2,&sfalma); TSstoiva_setValue(&apotelesma, upologismos(symbolo,oros1,oros2)); Stoiva_othisi(&stoiva,apotelesma,&sfalma); /*while ( (symbolo=getchar())!= '\n')*/ metathematiki[i]='\0'; Stoiva_exagogi(&stoiva,&apotelesma,&sfalma); printf("%s=", metathematiki); fprintf(stdout, "%5.2f",(float) apotelesma); printf("\nepi8ymeite na synexisete? (N/n gia NAI)\n"); apantisi=getchar(); while ((ch = getchar())!= '\n' && ch!= EOF); /* int ch */ while ( apantisi=='n' apantisi=='n'); return 0; TStoixeioyStoivas upologismos (char symbolo, TStoixeioyStoivas oros1, TStoixeioyStoivas oros2) { TStoixeioyStoivas apotelesma = 0; switch (symbolo) { case '+' : case '-' : case '*' : TSstoiva_setValue(&apotelesma,oros1 + oros2); TSstoiva_setValue(&apotelesma, oros1 - oros2); TSstoiva_setValue(&apotelesma, oros1 * oros2); Δ.Μήλιος 9

10 case '/' : TSstoiva_setValue(&apotelesma, oros1 / oros2); default : printf("%c: mh egkyros telesths!\n", symbolo); // printf(" ddd %5.2f\n",apotelesma); return apotelesma; int einai_telestis (char c) { return c == '+' c == '-' c == '*' c == '/'; Μετατροπή ενδοθεματικής παράστασης στην μεταθεματική μορφή της Εδώ διευκρινίζεται ότι στα πλαίσια σωστής εκτέλεσης της εφαρμογής στο αρχείο Διεπαφής του τύπου στοιχείου που χρησιμοποιεί η συγκεκριμένη εφαρμογή το TStoixeioyStoivas έχει οριστεί ως char. Ακολουθεί ο κώδικας του αρχείου Υλοποίησης του τύπου Στοιχείου στοίβας για να τονισθεί η ειδοποιός διαφορά και στην υλοποίηση των πράξεων του τύπου στοιχείου: #include "TStoixeioyStoivas.h" int TSstoiva_iso (TStoixeioyStoivas Elem1, TStoixeioyStoivas Elem2) { return(elem1 == Elem2); void TSstoiva_setValue (TStoixeioyStoivas *target, TStoixeioyStoivas source) { *target=source; Δ.Μήλιος 10

11 int TSstoiva_readValue (FILE *from, TStoixeioyStoivas * Elem) { int fd; fd=fscanf(from, "%2c", Elem); if(fd==1) return 1; return 0; int TSstoiva_writeValue (FILE *to, TStoixeioyStoivas Elem) { int fd; fd=fprintf(to, "%2c--",Elem); return fd; Ακολουθεί ο κώδικας του αρχείου-εφαρμογής: #include <stdio.h> #include <string.h> #include <stdlib.h> #include "Stack.h" #include "TStoixeioyStoivas.h" #define MIKOS 80 /*megisto plh8os xarakthrwn ths parastashs*/ #define TELOS ';' /*endeiksh telous ths endo8ematikhs parastashs*/ #define synolo_teleston "+-*/" /*synolo telestwn*/ /*orismos synarthsewn*/ int protereotita(char); void metatropi(tstoixeioystoivas *); int main(void) { TStoixeioyStoivas endo_parastasi[mikos]; int i; printf("dwste thn endo8ematikh parastash. Topo8ethste ; sto telos.\n"); i=-1; do { i++; TSstoiva_setValue(&endo_parastasi[i], (char) getchar()); Δ.Μήλιος 11

12 while (!TSstoiva_iso(endo_parastasi[i], TELOS) ); i++; TSstoiva_setValue(&endo_parastasi[i], '\0'); printf("h meta8ematikh morfh einai: "); metatropi(endo_parastasi); printf("\n"); getch(); return 0; int protereotita(char telestis) /*Epistrefei thn proteraiothta tou telesth telestis*/ { switch(telestis) { case '(': return 0; case '+': case '-': return 1; case '*': case '/': default: return 2; void metatropi (TStoixeioyStoivas endo_parastasi[]) /*Metatrepei thn endo8ematikh morfh mias parastashs sthn meta8ematikh ths morfh*/ { TStoivas stoiva; /*stoiva telestwn*/ int i,out_err; TStoixeioyStoivas symbolo,symbolo_korifi; int sfalma,lathos,telos_exagogis; /*Elegxei to telos e3agwghs orwn apo th stoiva*/ Stoiva_dimiourgia(&stoiva); lathos =0; /*arxh metatrophs*/ i=0; TSstoiva_setValue(&symbolo, endo_parastasi[0]); while ((!TSstoiva_iso(symbolo, TELOS)) && (!lathos) ) { Δ.Μήλιος 12

13 while( TSstoiva_iso(endo_parastasi[i], ' ') )/*agnohsh kenwn*/ i++; symbolo = endo_parastasi[i]; if ( TSstoiva_iso(symbolo, '(') ) /*aristerh paren8esh*/ Stoiva_othisi(&stoiva,symbolo,&sfalma); if ( TSstoiva_iso(symbolo, ')') )/*deksia paren8esh*/ { telos_exagogis = 0; do { if (Stoiva_keni(stoiva)) lathos =1; { Stoiva_exagogi(&stoiva,&symbolo_korifi,&sfalma); if (!TSstoiva_iso(symbolo_korifi, '(') ) { out_err=tsstoiva_writevalue(stdout,symbolo_korifi); if(out_err <0) {printf("\n error stin writevalue!\n"); telos_exagogis=1; while ((!telos_exagogis)&&(!lathos)); if ( strchr(synolo_teleston,symbolo)!=null )/*telesths*/ { telos_exagogis=0; while (!Stoiva_keni(stoiva) && (!telos_exagogis) ) { Stoiva_exagogi(&stoiva,&symbolo_korifi,&sfalma); if ((protereotita(symbolo))<=(protereotita(symbolo_korifi))) { out_err=tsstoiva_writevalue(stdout,symbolo_korifi); if(out_err <0) { printf("\n error stin writevalue!\n"); { Stoiva_othisi(&stoiva,symbolo_korifi,&sfalma); telos_exagogis=1; Δ.Μήλιος 13

14 Stoiva_othisi(&stoiva,symbolo,&sfalma); if (!TSstoiva_iso(symbolo, TELOS) ) /*oros*/ { out_err=tsstoiva_writevalue(stdout,symbolo); if(out_err <0) { printf("\n error stin writevalue!\n"); i++; /*while ( (!TSstoiva_iso(symbolo, TELOS)) && (!lathos) )*/ /*Eksagwgh kai ektypwsh tvn stoixeiwn ths stoivas.*/ while ( (!Stoiva_keni(stoiva)) && (!lathos) ) { Stoiva_exagogi(&stoiva,&symbolo_korifi,&sfalma); if (!TSstoiva_iso(symbolo_korifi, '(') ) { out_err=tsstoiva_writevalue(stdout,symbolo_korifi); if(out_err <0) { printf("\n error stin writevalue!\n"); lathos =1; if (lathos) printf("la8os sthn endo8ematikh parastash.\n"); printf("\n"); Υλοποίηση 2 η : Ολική Απόκρυψη Αρχεία Διεπαφής-Υλοποίησης Στο αρχείο Διεπαφής για την υλοποίηση με Ολική Απόκρυψη τα βασικά στοιχεία που εντοπίζονται είναι η δήλωση του δείκτη της δομής της στοίβας και οι δηλώσεις των συναρτήσεων που υλοποιούν τις πράξεις του ΑΤΔ στοίβα. Προφανώς παρατηρείται πλέον πως οι συναρτήσεις έχουν διαφορετικές παραμέτρους σε σχέση με αυτές της Διεπαφής της Υλοποίησης με Μερική Απόκρυψη πράγμα κατανοητό καθώς η προσπέλαση της δομής γίνεται πλέον με χρήση δείκτη. Υπάρχουν στην Ολική Απόκρυψη και 2 extra συναρτήσεις, Stoiva_gemati: ελέγχει αν η στοίβα είναι γεμάτη, Stoiva_Destructor: καταστρέφει την στοίβα. Τέλος είναι αυτονόητο πως το μονοπάτι του Δ.Μήλιος 14

15 include για την Διεπαφή του τύπου στοιχείου δεν υπάρχει αφού πρόκειται για πρότυπο αρχείο. Ακολουθεί ο κώδικας του αρχείου Διεπαφής: #ifndef STACK_OA #define STACK_OA #include "to antistoixo.h typou stoixeiou" /*edo analoga tin efarmogi i to test tou tipou stoixeiou mpainei to antoistixo.h tou tipou stoixeiou */ /*orismoi typwn*/ typedef struct StackStruct * HandleStoivas; /*dhlwseis synarthsewn*/ /*dhmioyrgia/katastrofh*/ HandleStoivas Stoiva_Constructor(); /* real creation not initialisation */ void Stoiva_Destructor(HandleStoivas * StoivaPtrPtr); /*Prakseis elegxoy*/ int Stoiva_keni(const HandleStoivas StoivaPtr); int Stoiva_gemati(const HandleStoivas StoivaPtr); /*Prakseis pros8eshs/apomakrynshs*/ void Stoiva_exagogi(const HandleStoivas StoivaPtr, TStoixeioyStoivas * const stoixeioptr, int *ypoxeilisi); void Stoiva_othisi(const HandleStoivas StoivaPtr, TStoixeioyStoivas stoixeio, int *yperxeilisi); #endif /*#ifndef STACK_OA */ Ακολουθεί ο κώδικας του αρχείου Υλοποίησης: #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include "Stack-OA.h" #define PLITHOS 5 /*megisto epitrepto mege8os stoivas*/ Δ.Μήλιος 15

16 typedef struct StackStruct { int korifi; /*8esh toy prwtoy stoixeioy ths stoivas*/ TStoixeioyStoivas pinakas[plithos]; /*o pinakas twn stoixeiwn*/ StackStruct; /*orismos synarthsewn*/ HandleStoivas Stoiva_Constructor() {/* Pro: Kamia * Meta: Dhmioyrgia kenhs stoivas */ HandleStoivas ThisStoiva= malloc(sizeof(stackstruct)); ThisStoiva->korifi = -1; return ThisStoiva; void Stoiva_Destructor(HandleStoivas * StoivaPtrPtr) {/* Pro: Dhmioyrgia ths stoiva * Meta: Katastrofi ths stoivas */ free(*stoivaptrptr); *StoivaPtrPtr = NULL; int Stoiva_keni(const HandleStoivas StoivaPtr) {/* Pro: Dhmioyrgia ths stoiva * Meta: Epistrefei 1 an h stoiva einai kenh alliws 0 */ return (StoivaPtr->korifi == -1); int Stoiva_gemati(const HandleStoivas StoivaPtr) {/* Pro: Dhmioyrgia ths stoiva * Meta: Epistrefei 1 an h stoiva einai gemath alliws 0 */ return (StoivaPtr->korifi == PLITHOS-1); Δ.Μήλιος 16

17 void Stoiva_exagogi(const HandleStoivas StoivaPtr, TStoixeioyStoivas * const stoixeioptr, int *ypoxeilisi) {/* Pro: Mh kenh stoiva * Meta: Eksagetai to stoixeio apo th stoiva */ if (Stoiva_keni(StoivaPtr)) *ypoxeilisi = 1; { *ypoxeilisi = 0; TSstoiva_setValue(stoixeioPtr, >korifi]); StoivaPtr->korifi--; StoivaPtr->pinakas[StoivaPtr- void Stoiva_othisi(const HandleStoivas StoivaPtr,TStoixeioyStoivas stoixeio, int *yperxeilisi) {/* Pro: Dhmioyrgia ths stoiva * Meta: Wtheitai to stoixeio sth stoiva */ if (Stoiva_gemati(StoivaPtr)) *yperxeilisi = 1; { *yperxeilisi = 0; StoivaPtr->korifi++; TSstoiva_setValue(&(StoivaPtr->pinakas[StoivaPtr->korifi]), stoixeio); Αρχεία Δοκιμής Στα αρχεία δοκιμής περιλαμβάνεται το αρχείο main που χρησιμοποιείται ως αρχείο test για τις πράξεις της ATΔ Στοίβα. Ακολουθεί ο κώδικας του αρχείου δοκιμής: Ακόμη όμως περιλαμβάνονται όπως και στην μερική απόκρυψη τα αρχεία Διεπαφής και Υλοποίησης της στοίβας (δεν δίνεται κώδικας επειδή είναι ουσιαστικά ο ίδιος με τα πρότυπα αρχεία) Αρχεία Διεπαφής-Υλοποίησης Τύπου Στοιχείου Στοίβας Ουσιαστικά πρόκειται για τα αρχεία που υλοποιούν τις βασικές πράξεις του τύπου στοιχείου Στοίβας και ανάλογα με το τι τύπο στοιχείου θέλει και ο χρήστης, όπως αναλύεται και στο κεφάλαιο 2, υπάρχουν δυνατές 3 υλοποιήσεις του τύπου στοιχείου. TS-int: Δ.Μήλιος 17

18 Ακολουθεί ο κώδικας του αρχείου Διεπαφής: #ifndef TStoixeioyStoivas_H #define TStoixeioyStoivas_H #include <stdio.h> typedef int TStoixeioyStoivas; void TSstoiva_setValue (TStoixeioyStoivas *target, TStoixeioyStoivas source); int TSstoiva_readValue (FILE *from, TStoixeioyStoivas * Elem); int TSstoiva_writeValue (FILE *to, TStoixeioyStoivas Elem); #endif Ακολουθεί ο κώδικας του αρχείου Yλοποιήσης: #include "TStoixeioyStoivas.h" void TSstoiva_setValue (TStoixeioyStoivas *target, TStoixeioyStoivas source) { *target=source; int TSstoiva_readValue (FILE *from, TStoixeioyStoivas * Elem) { int fd; fd=fscanf(from, "%d", Elem); return fd; if(fd==1) return 1; return 0; int TSstoiva_writeValue (FILE *to, TStoixeioyStoivas Elem) { int fd; fd=fprintf(to, "%d--", Elem); return fd; TS-string: Ακολουθεί ο κώδικας του αρχείου Διεπαφής: #ifndef TStoixeioyStoivas_H #define TStoixeioyStoivas_H #define CPLITHOS 15 #include <stdio.h> Δ.Μήλιος 18

19 #include <string.h> typedef char TStoixeioyStoivas[CPLITHOS]; void TSstoiva_setValue (TStoixeioyStoivas *target, TStoixeioyStoivas source); int TSstoiva_readValue (FILE *from, TStoixeioyStoivas * Elem); int TSstoiva_writeValue (FILE *to, TStoixeioyStoivas Elem); #endif Ακολουθεί ο κώδικας του αρχείου Yλοποιήσης: #include "TStoixeioyStoivas.h" void TSstoiva_setValue (TStoixeioyStoivas *target, TStoixeioyStoivas source) { strncpy(*target, source,cplithos); int TSstoiva_readValue (FILE *from, TStoixeioyStoivas *Elem) { int fd; fd=fscanf(from, "%s", Elem); if(fd==1) return 1; return 0; int TSstoiva_writeValue (FILE *to, TStoixeioyStoivas Elem) { int fd; fd=fprintf(to, "%s--", Elem); return fd; TS-struct: Ακολουθεί ο κώδικας του αρχείου Διεπαφής: #ifndef TStoixeioyStoivas_H #define TStoixeioyStoivas_H #define CPLITHOS 15 #include <stdio.h> #include <string.h> typedef struct { int integer; Δ.Μήλιος 19

20 char string[cplithos]; TStoixeioyStoivas; void TSstoiva_setValue (TStoixeioyStoivas *target, TStoixeioyStoivas source); int TSstoiva_readValue (FILE *from, TStoixeioyStoivas * Elem); int TSstoiva_writeValue (FILE *to, TStoixeioyStoivas Elem); #endif Ακολουθεί ο κώδικας του αρχείου Yλοποιήσης: #include "TStoixeioyStoivas.h" void TSstoiva_setValue (TStoixeioyStoivas *target, TStoixeioyStoivas source) { target->integer=source.integer; strncpy(target->string,source.string,cplithos); int TSstoiva_readValue (FILE *from, TStoixeioyStoivas * Elem) { int fd; fd=fscanf(from,"%d %s",&(elem->integer),elem->string); if(fd==2) return 1; return 0; int TSstoiva_writeValue (FILE *to, TStoixeioyStoivas Elem) { int fd; fd=fprintf(to,"%d %s-- ", Elem.integer,Elem.string); return fd; Προφανώς έξω από τους φακέλους στα πλαίσια της επιλογής του χρήστη και όσων άλλων παραθέτονται στο κεφάλαιο 2 για την επεξήγηση των αρχείων της συγκεκριμένης ενότητας βρίσκονται πάλι τα αρχεία Διεπαφής και Υλοποίησης του TS-int ως default υλοποίηση που χρησιμοποιούν οι δοκιμές-main των επιμέρους υλοποιήσεων της στοίβας (Μερική, Ολική απόκρυψη). Δ.Μήλιος 20

1. ΟΡΓΑΝΩΣΗ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΒΑΣΙΚΟΙ ΤΡΟΠΟΙ ΠΡΟΣΒΑΣΗΣ ΣΕ ΔΟΜΕΣ

1. ΟΡΓΑΝΩΣΗ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΒΑΣΙΚΟΙ ΤΡΟΠΟΙ ΠΡΟΣΒΑΣΗΣ ΣΕ ΔΟΜΕΣ 1. ΟΡΓΑΝΩΣΗ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΒΑΣΙΚΟΙ ΤΡΟΠΟΙ ΠΡΟΣΒΑΣΗΣ ΣΕ ΔΟΜΕΣ 1.1 Οργάνωση Αφηρημένων τύπων δεδομένων Θα αναλυθεί το πρότυπο οργάνωσης των αφηρημένων τύπων δεδομένων (ΑΤΔ) που παρουσιάζονται

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

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

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

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

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

Χρήσεις Στοίβας ΣΤΟΙΒΑ. Ορισμός Στοίβας (stack) Βασική Λειτουργικότητα

Χρήσεις Στοίβας ΣΤΟΙΒΑ. Ορισμός Στοίβας (stack) Βασική Λειτουργικότητα ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

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

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας ΣΤΟΙΒΕΣ (stacks) Η στοίβα είναι µια συλλογή δεδοµένων µε γραµµική διάταξη στην οποία όλες οι εισαγωγές και οι διαγραφές γίνονται στο ένα άκρο που λέγεται κορυφή (top) της στοίβας Σχήµα: Λειτουργία Στοίβας

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

ΕΠΛ232: Εργαστήριο 2

ΕΠΛ232: Εργαστήριο 2 ΕΠΛ232: Εργαστήριο 2 Παράδειγμα σε Στοίβες 1 Υπολογισμός Αριθμητικών Παραστάσεων - Πολωνικός Συμβολισμός A + (B * C) A + (BC * ) A(BC *) + ABC * + Ενδοθεματική μορφή Μεταθεματική μορφή Οι κανόνες που διέπουν

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

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 2: ΑΤΔ Στοίβα. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 2: ΑΤΔ Στοίβα. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 2: ΑΤΔ Στοίβα Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Σκοποί ενότητας Ορίζει τον ΑΤΔ Στοίβα Σχεδιαστικές Επιλογές

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

Υλοποιήσεις,Δοκιμές και Εφαρμογές Βασικών Αφηρημένων Τύπων Δεδομένων στη C για εκπαιδευτική χρήση 1. O AΤΔ ΟΥΡΑ

Υλοποιήσεις,Δοκιμές και Εφαρμογές Βασικών Αφηρημένων Τύπων Δεδομένων στη C για εκπαιδευτική χρήση 1. O AΤΔ ΟΥΡΑ 1.1 Εισαγωγή 1. O AΤΔ ΟΥΡΑ Μια ουρά αποτελεί μια δομή πολύ παρόμοια με την στοίβα, διαφέρει μόνο ο τρόπος εισαγωγής-εξαγωγής των στοιχείων της. Τον όρο ουρά τον συναντάμε πολύ συχνά στην καθημερινή μας

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

1. ΕΙΣΑΓΩΓΗ-ΓΕΝΙΚΑ ΠΕΡΙ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ

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

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

Υλοποιήσεις,Δοκιμές και Εφαρμογές Βασικών Αφηρημένων Τύπων Δεδομένων στη C για εκπαιδευτική χρήση 1. Ο ΑΤΔ ΔΕΝΔΡΟ

Υλοποιήσεις,Δοκιμές και Εφαρμογές Βασικών Αφηρημένων Τύπων Δεδομένων στη C για εκπαιδευτική χρήση 1. Ο ΑΤΔ ΔΕΝΔΡΟ 1.1 Εισαγωγή 1. Ο ΑΤΔ ΔΕΝΔΡΟ Μέχρι τώρα είδαμε τις ΑΤΔ Στοίβα, ΑΤΔ Ουρά και τέλος την ΑΤΔ Λίστα η οποία αποτελεί μια γενίκευση των άλλων 2. Γενικά είδαμε δομές που τηρούν την γραμμική ακολουθία των στοιχείων

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

Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους

Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους Κάθε στοιχείο του ΑΤΔ συνδεδεμένη λίστα (linked list) καλείται κόμβος (node) και περιέχει δύο πεδία. Στο ένα πεδίο αποθηκεύονται τα δεδομένα και Στο άλλο αποθηκεύεται

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

Υλοποιήσεις,Δοκιμές και Εφαρμογές Βασικών Αφηρημένων Τύπων Δεδομένων στη C για εκπαιδευτική χρήση 1. Ο ΑΤΔ ΓΡΑΦΗΜΑ

Υλοποιήσεις,Δοκιμές και Εφαρμογές Βασικών Αφηρημένων Τύπων Δεδομένων στη C για εκπαιδευτική χρήση 1. Ο ΑΤΔ ΓΡΑΦΗΜΑ 1.1 Εισαγωγή 1. Ο ΑΤΔ ΓΡΑΦΗΜΑ Σε προηγούμενα κεφάλαια είδαμε γραμμικές δομές δεδομένων (στοίβα, ουρά, λίστα), στις οποίες κάθε στοιχείο μπορεί να έχει το πολύ ένα επόμενο και το πολύ ένα προηγούμενο, αλλά

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

Οι Πράξεις. 1 η Υλοποίηση του ΑΤΔ: μονά συνδεδεμένη λίστα με δείκτες. Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους

Οι Πράξεις. 1 η Υλοποίηση του ΑΤΔ: μονά συνδεδεμένη λίστα με δείκτες. Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους Κάθε στοιχείο του ΑΤΔ συνδεδεμένη λίστα (linked list) καλείται κόμβος (node) και περιέχει δύο πεδία Στο ένα πεδίο αποθηκεύονται τα δεδομένα και Στο άλλο αποθηκεύεται

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

2 η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα ????

2 η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα ???? η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα θέση (index) dedomena epomenos lista = 0 1 3 Ελένη Σπύρος Βασίλης -1 1 Στη συνέχεια θα πρέπει να γνωρίζουμε την οργάνωση

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 35: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 21 211, Χειµερινό εξάµηνο Όλες οι ασκήσεις να δακτυλογραφηθούν

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδηµαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόµενη λύση ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδηµαϊκό έτος 2003-2004 ΑΣΚΗΣΗ #5 Προτεινόµενη λύση Θέµα 1 /* Προγραµµατιστής : Ηµεροµηνία συγγραφής : Λειτουργία Προγράµµατος : Πρόγραµµα για την αποθήκευση και ανάκτηση βαθµολογιών

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

Η αναφορά σ ένα μέλος μίας μεταβλητής τύπου δομής γίνεται με την παράσταση

Η αναφορά σ ένα μέλος μίας μεταβλητής τύπου δομής γίνεται με την παράσταση ΔΟΜΕΣ Πολλές φορές, μία σύνθετη οντότητα μπορεί να καθορισθείαπό ένα σύνολο δεδομένων, πιθανώς διαφορετικών τύπων,οπότε θα ήταν χρήσιμο να ομαδοποιούσαμε τα δεδομένααυτά κάτω από ένα γενικό όνομα, με σκοπό

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

Γραμμικές Δομές Δεδομένων

Γραμμικές Δομές Δεδομένων Γραμμικές Δομές Δεδομένων Συλλογή δεδομένων στη σειρά (ολική διάταξη). Προσθέτουμε δεδομένα στη Δομή (μεγαλώνει) ή αφαιρούμε δεδομένα (μικραίνει) Αν περιορίσουμε τις πράξεις Στην Αρχή μόνο Στοίβα (stack)

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

Επισκόπηση Μαθήματος. Γραμμικές Δομές Δεδομένων. ΑΤΔ Ουρά Εναλλακτικοί Σχεδιασμοί Προγραμματισμός με Ενότητες Interface.h Implementation.

Επισκόπηση Μαθήματος. Γραμμικές Δομές Δεδομένων. ΑΤΔ Ουρά Εναλλακτικοί Σχεδιασμοί Προγραμματισμός με Ενότητες Interface.h Implementation. Γραμμικές Δομές Δεδομένων Επισκόπηση Μαθήματος Συλλογή δεδομένων στη σειρά (ολική διάταξη). Προσθέτουμε δεδομένα στη Δομή (μεγαλώνει) ή αφαιρούμε δεδομένα (μικραίνει) Αν περιορίσουμε τις πράξεις Στην Αρχή

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

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

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

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

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

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

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

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 4: ΑΤΔ Λίστα. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 4: ΑΤΔ Λίστα. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 4: ΑΤΔ Λίστα Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Σκοποί ενότητας Ορίζει τον ΑΤΔ Λίστα Να αναδείξει το πρόβλημα

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

Θέµα 1 (15%): (απαιτούµενος χρόνος < 15 λεπτά)

Θέµα 1 (15%): (απαιτούµενος χρόνος < 15 λεπτά) Θέµα 1 (15%): (απαιτούµενος χρόνος < 15 λεπτά) Εκτελέστε µε το χέρι το παρακάτω πρόγραµµα και γράψτε όλες τις ενδιάµεσες τιµές και τις τιµές που τυπώνονται: int m,n; m=2; n=1; m=m+5; if (m>=9) m=m-8; n=n+7;

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

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ουρές ΕΡΓΑΣΤΗΡΙΟ 5 ΣΗΜΕΙΩΣΕΙΣ Μια ουρά αποτελεί μια δομή δεδομένων στη λογική του First-in

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

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

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

"ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ (ΕΜ102), ΕΡΓΑΣΙΑ 1η "ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η Σε αυτήν την εργασία καλείστε να κατασκευάσετε τον πηγαίο κώδικα γλώσσας C για το εκτελέσιµο αρχείο µε ό- νοµα ATM, που όταν εκτελείται σε κονσόλα προσοµοιώνει

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

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών ΛΙΣΤΕΣ Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα Υλοποίηση με δείκτες (pointers) Υλοποίηση με πίνακα Εφαρμογές και Χρήση Λιστών Λίστες (Lists) Δεδομένα

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

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

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

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

A[0] = 0; /* To μηδέν δεν έχει διαιρέτες */ for (i=1; i<n; i++) { S=0; for (d=1; d<=i; d++) if (i % d == 0) S += d; A[i] = S; }

A[0] = 0; /* To μηδέν δεν έχει διαιρέτες */ for (i=1; i<n; i++) { S=0; for (d=1; d<=i; d++) if (i % d == 0) S += d; A[i] = S; } TEI Λάρισας / ΣΤΕΦ Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών B Εξεταστική Περίοδος, 19 Φεβρουαρίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ι Ηλίας. Κ. Σάββας Α 1) Να γράψετε ένα πρόγραμμα το οποίο να γεμίζει ένα ακέραιο

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

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

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

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

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

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

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

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

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

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

Ασκήσεις 5ο Μάθημα - Λύσεις

Ασκήσεις 5ο Μάθημα - Λύσεις Ασκήσεις 5ο Μάθημα - Λύσεις Άσκηση 1: Γράψτε ένα πρόγραμμα σε γλώσσα C το οποίο να διαβάζει ένα ακέραιο αριθμό και να υπολογίζει: - Αν ο αριθμός είναι μεγαλύτερος του 10 - Αν ο αριθμός είναι θετικός -

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

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

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή παράσταση_1 = Παράσταση Αρχικοποίησης παράσταση_2 = Παράσταση Ελέγχου Επανάληψης παράσταση_3 = Παράσταση Ενημέρωσης

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

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

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while) 5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while) 5.1 Ο βρόχος while Η εντολή while παρέχει έναν μηχανισμό επανάληψης των δηλώσεων όσο μια συνθήκη είναι αληθινή. Χρησιμοποιείται όταν ο αριθμός των επαναλήψεων

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

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

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 3: ΑΤΔ Ουρά. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 3: ΑΤΔ Ουρά Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Ορίζει τον ΑΤΔ Ουρά Σκοποί ενότητας Σχεδιάζει τον ΑΤΔ Ουρά

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

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 12 ο Μάθημα 1

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 12 ο Μάθημα 1 12 ο Μέρος Συναρτήσεις Συναρτήσεις Τι είναι οι συναρτήσεις Οι συναρτήσεις είναι ένα βασικό δομικό συστατικό σε όλες τις ανώτερες γλώσσες προγραμματισμού. Με τις συναρτήσεις έχουμε τη δυνατότητα να χωρίσουμε

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΑΣΤΙΚΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ (2009-2010) ΥΠΕΥΘΥΝΟΙ ΔΙΔΑΣΚΟΝΤΕΣ ΕΡΓΑΣΤΗΡΙΟΥ: Α. ΦΩΚΑ, K. ΣΤΑΜΟΣ

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

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω εµπρός Ουρές (Queues) A B C FIFO εµπρός πίσω B C Διαγραφή εµπρός πίσω B C D E Εισαγωγή πίσω Ορισµός Η ουρά είναι µια γραµµική λίστα στην οποία η διαγραφή ενός στοιχείου γίνεται στο ένα άκρο το οποίο καλείται

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

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

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

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

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

Λογικό και (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0) 0ι Λογικοί Τελεστές: Πρόκειται για τελεστές που μας επιτρέπουν να συνδυάσουμε απλές εκφράσεις συσχετισμού και να δημιουργήσουμε πιό πολύπλοκες λογικές εκφράσεις. Εχουμε λοιπόν: && Λογικό "και" (AND) μας

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

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

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

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

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ 7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ 7.1 Ορισμός και δήλωση συνάρτησης Μία συνάρτηση είναι μία ενότητα οδηγιών οι οποίες μαζί εκτελούν μία συγκεκριμένη εργασία. Παρέχει έναν κατάλληλο τρόπο να μπορέσουμε να κάνουμε

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 4 ο Στοίβα Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Στοίβα Υλοποίηση µε Πίνακα Υλοποίηση

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

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

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

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

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων ΠΟΛΛΕΣ ΕΝΤΟΛΕΣ ΕΠΙΣΤΡΟΦΗΣ Να γραφτεί ένα πρόγραμμα που να διπλασιάζει ένα ποσό που του δίνει ο χρήστης μεταξύ 0 και 1000. Να ελέγχει εάν το ποσό που εισήχθη

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΠΡΟΓΡΑΜΜΑΤΑ ΕΡΓΑΣΤΗΡΙΟΥ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΠΡΟΓΡΑΜΜΑΤΑ ΕΡΓΑΣΤΗΡΙΟΥ Χαράλαµπος Σκόκος ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΠΡΟΓΡΑΜΜΑΤΑ ΕΡΓΑΣΤΗΡΙΟΥ Πρόγραµµα 1 (Βασική χρήση της συνάρτησης printf) /* Βασική χρήση της συνάρτησης printf */ /* Το \n αλλάζει γραµµή

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

8. Συνθήκες ελέγχου, λογικοί τελεστές

8. Συνθήκες ελέγχου, λογικοί τελεστές Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 8. Συνθήκες ελέγχου, λογικοί τελεστές Ιωάννης Κατάκης Σήμερα o Λογικές παραστάσεις Σχεσιακοί τελεστές Λογικοί τελεστές o if -else o switch Λογικές παραστάσεις

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

Αλγόριθμοι Ταξινόμησης Μέρος 1

Αλγόριθμοι Ταξινόμησης Μέρος 1 Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις

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

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

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

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 14 Στοίβες 1 / 14 Στοίβες Η στοίβα είναι μια ειδική περίπτωση γραμμικής λίστας στην οποία οι εισαγωγές

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες Τι είναι οι συνδεδεμένες λίστες (linked lists) Μια Συνδεδεμένη Λίστα (Σ.Λ.) είναι μια διάταξη από κόμβους που μπορούμε να τους διαχειριστούμε δυναμικά. Κάθε

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση #include #include #define TRUE 0 #define FALSE -1 #define SIZE 4 /* Το μέγεθος του πίνακα */ typedef struct

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

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

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

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

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες. 58 Δομή ενός προγράμματος C Συναρτήσεις Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C Εισαγωγή στη Γλώσσα C Η C είναι µια δοµηµένη (structured ) γλώσσα ηλαδή ένα C πρόγραµµα αποτελείται από υποπρογράµµατα τα οποία ονοµάζονται συναρτήσεις ( functions ), όπου η κάθε συνάρτηση εκτελεί µια

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

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 Ευρετήριο Η γλώσσα C σε βάθος # #define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 A abs(), 625 AND, 64 ASCII πίνακας

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

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

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

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

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

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

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΞΕΤΑΣΤΙΚΗ ΠΕΡΙΟ ΟΣ: ΙΟΥΝΙΟΥ 5 Ι ΑΣΚΩΝ: Ε. ΚΟΦΙ ΗΣ Όλα τα ερωτήµατα είναι ισοδύναµα. Καλή επιτυχία! ΘΕΜΑ ο a) Βρείτε την αναπαράσταση

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

Τυχαίοι αριθμοί Αλφαριθμητικά και χαρακτήρες

Τυχαίοι αριθμοί Αλφαριθμητικά και χαρακτήρες Τυχαίοι αριθμοί Αλφαριθμητικά και χαρακτήρες Παραγωγή τυχαίων αριθμών: Η συνάρτηση rand Η συνάρτηση rand() ανήκει στη βιβλιοθήκη stdlib της C. int rand(void); Για την χρήση της σε ένα πρόγραμμα εισάγουμε

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

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

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

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

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

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

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

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις Γιώργος Λαμπρινίδης lamprinidis@pharm.uoa.gr Ασκήσεις Εμπέδωσης στις εντολές επανάληψης Σε αυτό το εργαστήριο θα δούμε στην πράξη: Πόσο χρήσιμες

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 8: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική Δέσμευση

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 9 Συναρτήσεις. Γεώργιος Λαμπρινίδης

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 9 Συναρτήσεις. Γεώργιος Λαμπρινίδης Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 9 Συναρτήσεις Γεώργιος Λαμπρινίδης lamprinidis@pharm.uoa.gr Ασκήσεις Προηγούμενου Εργαστηρίου #include main() { int i, flag, temp, a[5]; for (i=0;i

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

Δέντρα (Trees) - Ιεραρχική Δομή

Δέντρα (Trees) - Ιεραρχική Δομή Δέντρα (Trees) - Ιεραρχική Δομή Εφαρμογές Δομή Οργάνωση Αρχείων Οργανογράμματα Ορισμός (αναδρομικός ορισμός): Ένα δέντρο είναι ένα πεπερασμένο σύνολο κόμβων το οποίο είτε είναι κενό είτε μη κενό σύνολο

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

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

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Χpήσιµες Βιβλιοθήκες της γλώσσας C

Χpήσιµες Βιβλιοθήκες της γλώσσας C Χpήσιµες Βιβλιοθήκες της γλώσσας C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Επεξεργασίας Συµβολοσειρών (strings) που Παρέχονται από τη Βιβλιοθήκη Συναρτήσεις Ελέγχου

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

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

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

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

Σημειώσεις όγδοης εβδομάδας

Σημειώσεις όγδοης εβδομάδας Σημειώσεις όγδοης εβδομάδας Για να την δημιουργία σειριακών αρχείων, χρησιμοποιείται η fopen(filename, w ). Το αρχείο δημιουργείται στον ίδιο φάκελο που τρέχει το εκτελέσιμο πρόγραμμα. Το παρακάτω πρόγραμμα,

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

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) Αρχείο είναι μια συλλογή δεδομένων του ίδιου τύπου. Ενα αρχείο αποθηκεύεται στην περιφερειακή μνήμη (σκληρό δίσκο, δισκέττα). Τα αρχεία είναι μόνιμα. Τα δεδομένα

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

ΕΛΕΓΧΟΣ ΡΟΗΣ IF-ELSE

ΕΛΕΓΧΟΣ ΡΟΗΣ IF-ELSE ΕΛΕΓΧΟΣ ΡΟΗΣ IF-ELSE Παράδειγμα 1 Το παρακάτω πρόγραμμα ελέγχει την ηλικία του χρήστη για να τον αφήσει να ψηφίσει. int hlikia; printf("dose thn Hlikia soy: "); scanf("%d", &hlikia); if (hlikia>=18) printf("mporeis

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:

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

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις Ασκηή σεις 12ο Μαά θημα - Λυύ σεις Άσκηση 1: Γράψτε ένα πρόγραμμα που να δέχεται από το πληκτρολόγιο 21 ακέραιους αριθμούς (μεταξύ 0 και 100) και στη συνέχεια να υπολογίζει το πλήθος και το μέσο όρο, μόνο

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:

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

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

ΣΥΝΑΡΤΗΣΕΙΣ (Functions) ΣΥΝΑΡΤΗΣΕΙΣ (Functions) Δομή Συνάρτησης τύπος όνομα ( λίστα τυπικών παραμέτρων ) Δηλώσεις μεταβλητών εντολή_1 εντολή_2 : εντολή_ν Σώμα της συνάρτησης Δομή της Λίστας Τυπικών Παραμέτρων τύπος_1 τύπος_2

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

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

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

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

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

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

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

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

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

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

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1 Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι

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

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

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

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

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

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

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

Βασικές Δομές Δεδομένων

Βασικές Δομές Δεδομένων Βασικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Διαδοχική και Δυναμική Χορήγηση

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις

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

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

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

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

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή.

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή. Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή. Αφηρηµένος τύπος δεδοµένων (abstract data type): είναι ένα θεωρητικό

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2011 Θέµα 1 (α') 1 - i 2 - ii 3 - iii 4 - iv 5 - v 6 - vi 7 - vii 8 - viii 9 - ix 10 - x Το αποτέλεσµα είναι η αντιστοιχία των

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

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

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

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

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

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

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

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. Διάλεξη 11: Φροντιστήριο για Στοίβες Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1 ΑΤΔ Στοίβα- Πράξεις Θυμηθείτε τον ΑΤΔ στοίβα με τις πράξεις του: MakeEmptyStack()

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