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

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

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

Transcript

1 1.1 Εισαγωγή 1. O AΤΔ ΟΥΡΑ Μια ουρά αποτελεί μια δομή πολύ παρόμοια με την στοίβα, διαφέρει μόνο ο τρόπος εισαγωγής-εξαγωγής των στοιχείων της. Τον όρο ουρά τον συναντάμε πολύ συχνά στην καθημερινή μας ζωή. Κάποια παραδείγματα που γνωρίζουμε όλοι είναι μια ουρά ατόμων μπροστά από ένα ταμείο ή μια τράπεζα ή την ουρά που σχηματίζουν τα αυτοκίνητα μπροστά από ένα φανάρι. Η ουρά είναι μια δομή που χρησιμοποιείται στην επιστήμη της πληροφορικής σε πολλές περιπτώσεις. Παραδείγματα χρήσης της ουράς είναι τα εξής: Άμεσες Εφαρμογές: Για την προσπέλαση κοινόχρηστων πόρων Στην χρήση πολυεπεξεργαστών σε πολυεπεξεργαστικά περιβάλλοντα Σε routing buffers Ως κλάση σε αντικειμενοστραφείς γλώσσες για την εξυπηρέτηση υλοποίησης κάποιου προγράμματος. Έμμεσες Εφαρμογές: Βοηθητικές σε πιο γενικές δομές δεδομένων. Ακόμη την συναντάμε και στα μαθηματικά την ουρά συχνά, με τον όρο ουρά αναμονής. 1.2 Ορισμός O ΑΤΔ ουρά είναι μια συλλογή στοιχείων με γραμμική διάταξη στην οποία η διαγραφή ενός στοιχείου γίνεται στο στο ένα άκρο της το οποίο καλείται εμπρός ενώ η εισαγωγή στοιχείου γίνεται στο άλλο άκρο που καλείται πίσω. Η πιο σημαντική ιδιότητα μιας ουράς που ουσιαστικά την χαρακτηρίζει είναι ότι τα στοιχεία απομακρύνονται από την ουρά με την ίδια σειρά που εισάγονται, το πρώτο στοιχείο που φθάνει στην ουρά είναι το πρώτο που απομακρύνεται. Εξαιτίας αυτής της ιδιότητας η ουρά καλείται και δομή FIFO (First- In- First- Out) Δεδομένα Μια ουρά αποτελεί μια πεπερασμένη συλλογή δεδομένων σε γραμμική ακολουθία όπου κάθε εισαγωγή γίνεται από το ένα άκρο ενώ κάθε διαγραφή από το άλλο Πράξεις Οι βασικές πράξεις του ΑΤΔ Ουρά είναι η εξής: Oyra_dimiourgia: Δημιουργεί μια κενή ουρά, σε περίπτωση ολικής απόκρυψης επιστρέφει και τον δείκτη στην ουρά. Oyra_keni: Ελέγχει αν η ουρά είναι κενή. Oyra_gemati: Ελέγχει αν η ουρά είναι γεμάτη. Δ.Μήλιος 1

2 Oyra_prosthesi: Σε περίπτωση που δεν είναι γεμάτη η ουρά προσθέτει ένα στοιχείο στην κορυφή της ουράς, αλλιώς επιστρέφει μήνυμα υπερχείλισης. Oyra_apomakrynsh: Σε περίπτωση που δεν είναι κενή η ουρά εξάγει το πρώτο στοιχείο της ουράς, αλλιώς επιστρέφει μήνυμα υποχείλισης. 1.3 Yλοποιήσεις Στο κεφάλαιο αυτό θα παρουσιαστούν 3 διαφορετικές υλοποιήσεις του ΑΤΔ Ουρά, η υλοποίηση με κενό (gap), η υλοποίηση με λογική μεταβλητή και η υλοποίηση με μετρητή. Και οι 3 υλοποίησεις γίνονται με χρήση πίνακα. Ακολουθεί περαιτέρω ανάλυση για κάθε μια από αυτές τις υλοποίησεις στα αντίστοιχα εδάφια κειμένου Υλοποίηση 1η: Υλοποίηση με κενό Αυτή η υλοποίηση ουσιαστικά χρησιμοποιεί απλώς μια δομή ουράς που περιέχει τον πίνακα στοιχείων που χρησιμοποιεί κάθε υλοποίηση από τις 3 όπως αναφέρθηκε πιο πάνω και 2 δείκτες ουσιαστικά ακέραιες μεταβλητές που λειτουργούν ουσιαστικά ως δείκτες στο εμπρός και στο πίσω άκρο αντίστοιχα Αρχεία Διεπαφής-Υλοποιήσης Στο αρχείο Διεπαφής δηλώνεται η δομή της ουράς, το μέγεθος της ουράς και οι συναρτήσεις αλλά κυρίως εντοπίζεται το include του τύπου στοιχείου ουράς το οποίο δεν περιλαμβάνει συγκεκριμένο μονοπάτι που να προσδιορίζει το αρχείο του τύπου στοιχείου ουράς αλλά περιγράφει τον ρόλο του συγκεκριμένου include. Ακολουθεί ο κώδικας του αρχείου Διεπαφής: #ifndef QGAP #define QGAP #define PLITHOS 100 #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 embros; /*8esh toy prwtoy stoixeoy ths oyras*/ int piso; /*8esh toy teleytaioy stoixeioy ths oyras*/ TStoixeioyOyras pinakas[plithos]; /*o pinakas twn stoixeiwn*/ TOuras; /*dhlwseis synarthsewn*/ /*dhmioyrgia*/ Δ.Μήλιος 2

3 void Oyra_dimiourgia(TOuras *oura); /*Prakseis elegxoy*/ int Oyra_keni (TOuras oura); int Oyra_gemati (TOuras oura); /*Prakseis pros8eshs/apomakrynshs*/ void Oyra_prosthesi(TOuras *oura, TStoixeioyOyras stoixeio, int *yperxeilisi); void Oyra_apomakrynsh(TOuras *oura, TStoixeioyOyras *stoixeio, int *ypoxeilisi); #endif /*#ifndef QGAP */ Ακολουθεί ο κώδικας του αρχείου Υλοποίησης: #include <stdlib.h> #include "Qgap.h" /*orismos synarthsewn*/ void Oyra_dimiourgia(TOuras *oura ) {/* Pro: kamia * Meta: Dhmioyrgia kenhs oyras */ oura->embros = 0; oura->piso = 0; int Oyra_keni(TOuras oura) {/* Pro: Dhmioyrgia oyras * Meta: Epistrefei 1 an h oyra einai kenh, diaforetika 0 */ return ( oura.embros == oura.piso ); int Oyra_gemati(TOuras oura) {/* Pro: Dhmioyrgia oyras * Meta: Epistrefei 1 an h oyra einai gemath, diaforetika 0 */ int neo_piso = (oura.piso+1) % PLITHOS; if (neo_piso == oura.embros ) return 1; return 0; Δ.Μήλιος 3

4 void Oyra_prosthesi(TOuras *oura, TStoixeioyOyras stoixeio, int *yperxeilisi) {/* Pro: Dhmioyrgia oyras * Meta: Oyra exei epayksh8ei me to stoixeio */ if (Oyra_gemati(*oura)) *yperxeilisi=1; { *yperxeilisi=0; TSoyra_setValue(&(oura->pinakas[oura->piso]), stoixeio); oura->piso = ( oura->piso + 1 )% PLITHOS; void Oyra_apomakrynsh(TOuras *oura,tstoixeioyoyras *stoixeio,int *ypoxeilisi) {/* Pro: Dhmioyrgia oyras * Meta: Oura exei meiw8ei kata ena stoixeio */ if (Oyra_keni(*oura)) *ypoxeilisi=1; { *ypoxeilisi=0; TSoyra_setValue(stoixeio, oura->pinakas[oura->embros]); oura->embros = ( oura->embros + 1 )% PLITHOS; Αρχεία Δοκιμής Στα αρχεία Δοκιμής περιλαμβάνεται το αρχείο main που χρησιμοποιείται ως αρχείο test για τις πράξεις της ATΔ Ουρά. Ακολουθεί ο κώδικας του αρχείου δοκιμής: #include "Qgap.h" #include "../../TS/TStoixeioyOyras.h" void print_options(void); int main(void) { int option, error,created,out_err; TOuras queue; TStoixeioyOyras x; error=created=0; do{ print_options(); scanf("%d", &option); switch(option) Δ.Μήλιος 4

5 {case 1: case 2: Oyra_dimiourgia(&queue); created=1; printf("\nh oura dimiourgithike!\n"); if(!created) { printf("\nden uparxei oura gia na eisaxthei stoixeio!\n"); printf("dwse ena stoixeio: "); out_err=tsoyra_readvalue(stdin,&x); if(!out_err) { printf("\n error stin readvalue!\n"); Oyra_prosthesi(&queue, x, &error); if(error) case 3: printf("\nyperxeilhsh oyras. To stoixeio DEN eishx8h!\n"); printf("\nto stoixeio eishx8h!\n"); if(!created) { printf("\nden uparxei oura gia na apomakrynthei stoixeio!\n"); Oyra_apomakrynsh(&queue, &x, &error); if(error) printf("\nkeni oyra!\n"); { printf("\nekshx8h epityxws to stoixeio "); out_err=tsoyra_writevalue(stdout,x); if(out_err <0) { printf("\n error stin writevalue!\n"); case 4: if(!created) Δ.Μήλιος 5

6 { printf("\nden uparxei oura gia na elexthei an einai kenh!\n"); if(oyra_keni(queue)) printf("\nh oura einai kenh!\n"); printf("\nh oura DEN einai kenh!\n"); case 5: if(!created) { printf("\nden uparxei oura gia na elexthei an einai gemath!\n"); if(oyra_gemati(queue)) printf("\nh oura einai gemath!\n"); printf("\nh oura DEN einai gemath!\n"); while(option); return 0; void print_options(void) { printf("\n\n1. Dhmioyrgia ouras\n\ 2. Prosthesh stoixeiou sthn oura\n\ 3. Apomakrynsh stoixeiou apo thn oura\n\ 4. Elegxos gia kenh oura\n\ 5. Elegxos gia gemath oura\n\n\ Dwste thn epilogh sas(1-5, 0 gia eksodo):"); Ακόμη όμως περιλαμβάνονται και τα αρχεία Διεπαφής και Υλοποίησης της ουράς τους (δεν δίνεται κώδικας επειδή είναι ουσιαστικά ο ίδιος με τα πρότυπα αρχεία) Υλοποιήση 2η: Υλοποίηση με χρήση λογικής μεταβλητής Στην δεύτερη υλοποίηση ακολουθείται η ίδια λογική μόνο που υπάρχει μια extra μεταβλητή ακεραίου που λειτουργεί ως λογική μεταβλητή η οποία παραμένει 1 όσο η ουρά είναι άδεια ενώ μηδενίζεται σε κάθε άλλη περίπτωση. Δ.Μήλιος 6

7 Αρχεία Διεπαφής-Υλοποιήσης To πρότυπο αρχείο Διεπαφής δεν έχει διαφορές από το αντίστοιχο της υλοποίησης με κενό (ουσιαστικά της απλής υλοποίησης με πίνακα) παρά μόνο την προσθήκη της λογικής μεταβλητής στη δομή μας. Ακολουθεί ο κώδικας του αρχείου Διεπαφής: #ifndef QLOGIC #define QLOGIC #define PLITHOS 100 #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 embros; /*8esh toy prwtoy stoixeioy ths oyras*/ int piso; /*8esh toy teleytaioy stoixeioy ths oyras*/ int adeia; /*shmaia poy dhlwnei an einai h oyra adeia*/ TStoixeioyOyras pinakas[plithos]; /*o pinakas stoixeiwn*/ TOuras; /*dhlwseis synarthsewn*/ /*dhmioyrgia*/ void Oyra_dimiourgia(TOuras *oura); /*Prakseis elegxoy*/ int Oyra_keni (TOuras oura); int Oyra_gemati (TOuras oura); /*Prakseis pros8eshs/apomakrynshs*/ void Oyra_prosthesi *yperxeilisi); (TOuras *oura, TStoixeioyOyras stoixeio, int void Oyra_apomakrynsh(TOuras *oura, TStoixeioyOyras *stoixeio, int *ypoxeilisi); #endif /*#ifndef QLOGIC */ Στο αρχείο Υλοποίησης γίνεται εμφανής η απλοποίηση του κώδικα σε συγκεκριμένα σημεία λόγω της χρήσης της λογικής μεταβλητής. Δ.Μήλιος 7

8 Ακολουθεί ο κώδικας του αρχείου Υλοποίησης: #include "Qlogic.h" #include <stdlib.h> /*orismos synarthsewn*/ void Oyra_dimiourgia(TOuras *oura ) {/* Pro: kamia * Meta: Dhmioyrgia kenhs oyras */ oura->embros = 0; oura->piso = 0; oura->adeia = 1; /*True*/ int Oyra_keni(TOuras oura) * Meta: epistrefei 1 an h oyra einai kenh, diaforetika 0 */ return oura.adeia; int Oyra_gemati(TOuras oura) * Meta: epistrefei 1 an h oyra einai gemath, diaforetika 0 */ return ( (oura.piso == oura.embros) && (!Oyra_keni(oura)) ); void Oyra_prosthesi(TOuras *oura, TStoixeioyOyras stoixeio, int *yperxeilisi) * Meta: Oyra exei epayksh8ei me to stoixeio */ if (Oyra_gemati(*oura)) *yperxeilisi=1; { *yperxeilisi=0; TSoyra_setValue(&(oura->pinakas[oura->piso]), stoixeio); oura->piso = ( oura->piso + 1 )% PLITHOS; oura->adeia = 0; Δ.Μήλιος 8

9 void Oyra_apomakrynsh(TOuras *oura, TStoixeioyOyras *stoixeio, int *ypoxeilisi) * Meta: Oyra exei meiw8ei kata ena stoixeio */ if (Oyra_keni(*oura)) *ypoxeilisi=1; { *ypoxeilisi=0; TSoyra_setValue(stoixeio, oura->pinakas[oura->embros]); oura->embros = ( oura->embros + 1 )% PLITHOS; oura->adeia = ( oura->embros == oura->piso ); Αρχεία Δοκιμής Το αρχείο main-test είναι το ίδιο ως κώδικας με το αρχείο δοκιμής της πρώτης υλοποίησης με διαφορά την περιοχή των include. Τα include είναι τα εξής: #include "Qlogic.h" #include "../../TS/TStoixeioyOyras.h" Τα αρχεία Υλοποίησης-Δοκιμής όπως έχει αναφερθεί σε πολλές αντίστοιχες ενότητες είναι ίδια με τα πρότυπα με εξαίρεση το path στο include Υλοποίηση 3η: Υλοποίηση με μετρητή H Τρίτη υλοποίηση σε σχέση με την 1 η υλοποίηση κάνει και χρήση ενός μετρητήακέραιας μεταβλητής που καταμετρά τον αριθμό των στοιχείων της ουράς ανά πάσα στιγμή. Η συγκεκριμένη υλοποίηση όμως εκτός των άλλων έχει υλοποιηθεί εκτός από με μερική απόκρυψη όπως οι άλλες 2 και με ολική, για να δειχθεί ενδεικτικά στον αναγνώστη- χρήστη και εδώ η διαφορά μερικής ολικής απόκρυψης στα πλαίσια μιας υλοποίησης της ουράς Υλοποίηση με Μερική Απόκρυψη Αρχεία Διεπαφής-Υλοποίησης Η μόνη διαφορά με το αντίστοιχο αρχείο Διεπαφής της 1 ης υλοποίησης η προσθήκη του μετρητή. Ακολουθεί ο κώδικας του αρχείου Διεπαφής: #ifndef QLOGIC Δ.Μήλιος 9

10 #define QLOGIC #define PLITHOS 100 #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 embros; /*8esh toy prwtoy stoixeioy ths oyras*/ int piso; /*8esh toy teleytaioy stoixeioy ths oyras*/ int adeia; /*shmaia poy dhlwnei an einai h oyra adeia*/ TStoixeioyOyras pinakas[plithos]; /*o pinakas stoixeiwn*/ TOuras; /*dhlwseis synarthsewn*/ /*dhmioyrgia*/ void Oyra_dimiourgia(TOuras *oura); /*Prakseis elegxoy*/ int Oyra_keni (TOuras oura); int Oyra_gemati (TOuras oura); /*Prakseis pros8eshs/apomakrynshs*/ void Oyra_prosthesi (TOuras *oura, TStoixeioyOyras stoixeio, int *yperxeilisi); void Oyra_apomakrynsh(TOuras *oura, TStoixeioyOyras *stoixeio, int *ypoxeilisi); #endif /*#ifndef QLOGIC */ Ακολουθεί ο κώδικας του αρχείου Υλοποίησης: #include "Qlogic.h" #include <stdlib.h> /*orismos synarthsewn*/ Δ.Μήλιος 10

11 void Oyra_dimiourgia(TOuras *oura ) {/* Pro: kamia * Meta: Dhmioyrgia kenhs oyras */ oura->embros = 0; oura->piso = 0; oura->adeia = 1; /*True*/ int Oyra_keni(TOuras oura) * Meta: epistrefei 1 an h oyra einai kenh, diaforetika 0 */ return oura.adeia; int Oyra_gemati(TOuras oura) * Meta: epistrefei 1 an h oyra einai gemath, diaforetika 0 */ return ( (oura.piso == oura.embros) && (!Oyra_keni(oura)) ); void Oyra_prosthesi(TOuras *oura, TStoixeioyOyras stoixeio, int *yperxeilisi) * Meta: Oyra exei epayksh8ei me to stoixeio */ if (Oyra_gemati(*oura)) *yperxeilisi=1; { *yperxeilisi=0; TSoyra_setValue(&(oura->pinakas[oura->piso]), stoixeio); oura->piso = ( oura->piso + 1 )% PLITHOS; oura->adeia = 0; Δ.Μήλιος 11

12 void Oyra_apomakrynsh(TOuras *oura, TStoixeioyOyras *stoixeio, int *ypoxeilisi) * Meta: Oyra exei meiw8ei kata ena stoixeio */ if (Oyra_keni(*oura)) *ypoxeilisi=1; { *ypoxeilisi=0; TSoyra_setValue(stoixeio, oura->pinakas[oura->embros]); oura->embros = ( oura->embros + 1 )% PLITHOS; oura->adeia = ( oura->embros == oura->piso ); Αρχεία Δοκιμής Το αρχείο Δοκιμής και εδώ είναι το ίδιο ακριβώς με αυτό των άλλων 2 υλοποιήσεων, με διαφορά την περιοχή των include. Τα include είναι τα εξής: #include "Qcounter.h" #include "../../../TS/TStoixeioyOyras.h" ενώ τα αρχεία Διεπαφής-Υλοποίησης, εκτός πάντα του path για τον τύπο στοιχείου, ίδια με τα πρότυπα αρχεία Εφαρμογές Εδώ έχουμε μόνο μια εφαρμογή η οποία ουσιαστικά μπορεί να λειτουργήσει και με τις άλλες 2 υλοποιήσεις απλά έχει μπει εδώ ενδεικτικά ως εφαρμογή γιατί έχει υλοποιηθεί με μικρές παραλλαγές και με Ολική Απόκρυψη για την υλοποίηση με μετρητή. Οι εφαρμογή αυτή σε πλαίσιο αρχείων και όπως έχει αναλυθεί και στο κεφάλαιο 2 περιλαμβάνει τα αρχεία Διεπαφής-Υλοποίησης της ουράς, τα αρχεία Διεπαφής- Υλοποίησης του τύπου στοιχείου ουράς και προφανώς το αρχείο-εφαρμογή main το οποίο υλοποιεί με τις κατάλληλες κλήσεις των συναρτήσεων-πράξεων το αντίστοιχο αποτέλεσμα που θέλει να επιτύχει η καθεμία από αυτές Εφαρμογή ουράς αναμονής Ο σκοπός της εφαρμογής είναι η προσομοίωση μιας πραγματικής ουράς αναμονής πελατών με βάση κάποια στοιχεία που ζητούνται από τον χρήστη. Ακολουθεί ο κώδικας του αρχείου-εφαρμογής: #include <stdlib.h> Δ.Μήλιος 12

13 #include <time.h> #include "Qcounter.h" int main(void) {/* Skopos: Prosomoiwsh ouras anamonhs*/ TOuras oura; /*oura pelatwn*/ float pithanotita_afiksis; /*pi8anothta afikshs*/ unsigned int xronos_eksipiretisis;/*xronos e3yphrethshs enos pelath*/ unsigned int xronos_prosomoiosis; /*synolikos xronos prosomoiwshs*/ unsigned int xronos; /*roloi prosomoiwshs*/ unsigned int enapomenon_xronos; /*xronos gia to telos e3yphrethshs enos pelath*/ unsigned int arithmos_pelaton; unsigned int xronos_anamonis; /*plh8os e3yphreth8entwn pelatwn*/ /*synolikos xronos anamonhs*/ int xronos_eisodoy; /*h wra pou eishl8e o pelaths sthn oyra*/ float mesos_xronos; /*mesos xronos anamonhs*/ float int random; error=0; printf("dwste xrono prosomoiwshs, pi8anothta afikshs kai xrono e3yphrethshs\n"); scanf("%d %f %d",&xronos_prosomoiosis,&pithanotita_afiksis,&xronos_eksipiretisis); getchar(); printf("h prosomoiwsh 8a diarkesei %4u lepta.\n",xronos_prosomoiosis); printf("h pi8anothta afikshs pelath se ena lepto einai: %4.2f.\n",pithanotita_afiksis); printf("h diarkeia e3yphrethshs enos pelath einai %d lepta.\n",xronos_eksipiretisis); Oyra_dimiourgia(&oura); xronos = 0; enapomenon_xronos = 0; arithmos_pelaton = 0; xronos_anamonis =0; srand(time(null)); while( xronos < xronos_prosomoiosis ) { random = ((float)rand())/(float)(rand_max); if ( random < pithanotita_afiksis ) Oyra_prosthesi(&oura,xronos,&error); Δ.Μήλιος 13

14 if (error) { printf("yperxeilish oyras!\n"); return 0; if ( enapomenon_xronos == 0) /*eley8eros tamias*/ if (!Oyra_keni(oura)) { /*yparxei pelaths*/ Oyra_apomakrynsh(&oura,&xronos_eisodoy, &error); /*phgainei sto tamio*/ if(error) { printf("ypoxeilish oyras!\n"); return 0; xronos_anamonis += xronos - xronos_eisodoy; /*ypologismos xronoy paramonhs*/ arithmos_pelaton++; enapomenon_xronos = xronos_eksipiretisis; xronos++; /*o xronos ay3anetai kata 1 lepto*/ if ( enapomenon_xronos > 0) /*o pelaths brisketai sto tamio*/ enapomenon_xronos --; /*while( xronos < xronos_prosomoiosis )*/ if (arithmos_pelaton == 0) mesos_xronos = 0.0; mesos_xronos = ((float)xronos_anamonis)/((float)arithmos_pelaton); printf("eksyphreth8hkan %d pelates\n",arithmos_pelaton); printf("o synolikos xronos anamonhs htan %4.2f lepta.\n",mesos_xronos); getch(); return 0; Υλοποίηση με Ολική Απόκρυψη Αρχεία Διεπαφής-Υλοποίησης Στο αρχείο Διεπαφής για την υλοποίηση με Ολική Απόκρυψη τα βασικά στοιχεία που εντοπίζονται είναι η δήλωση του δείκτη της δομής της ουράς και οι δηλώσεις των συναρτήσεων που υλοποιούν τις πράξεις του ΑΤΔ Ουρά. Προφανώς παρατηρείται πλέον πως οι συναρτήσεις έχουν διαφορετικές παραμέτρους σε σχέση με αυτές της Διεπαφής της Υλοποίησης με Μερική Απόκρυψη πράγμα κατανοητό καθώς η Δ.Μήλιος 14

15 προσπέλαση της δομής γίνεται πλέον με χρήση δείκτη. Έχει υλοποιηθεί και μια extra συναρτήσεις η συνάρτηση καταστροφής του ΑΤΔ, Oura_Destructor. Τέλος είναι αυτονόητο πως το μονοπάτι του include για την Διεπαφή του τύπου στοιχείου δεν υπάρχει αφού πρόκειται για πρότυπο αρχείο. Ακολουθεί ο κώδικας του αρχείου Διεπαφής: #ifndef QCOUNTER_OA #define QCOUNTER_OA #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 TOuras * HandleOuras; /*dhlwseis synarthsewn*/ /*dhmioyrgia*/ HandleOuras Oura_Constructor(); /*katastrofi*/ void Oura_Destructor(HandleOuras * OuraPtrPtr); /*Prakseis elegxoy*/ int Oyra_keni(const HandleOuras OuraPtr); int Oyra_gemati(const HandleOuras OuraPtr); /*Prakseis pros8eshs/apomakrynshs*/ void Oyra_prosthesi(const HandleOuras OuraPtr, TStoixeioyOyras * const stoixeioptr, int *yperxeilisi); void Oyra_apomakrynsh(const HandleOuras OuraPtr, TStoixeioyOyras * const stoixeioptr, int *ypoxeilisi); #endif /*#ifndef QCOUNTER_OA */ Ακολουθεί ο κώδικας του αρχείου Υλοποίησης: #include <stdlib.h> #include <malloc.h> #include "Qcounter-OA.h" Δ.Μήλιος 15

16 #define PLITHOS 100 typedef struct TOuras { int embros; /*8esh toy prwtoy stoixeioy ths oyras*/ int piso; /*8esh toy teleytaioy stoixeioy ths oyras*/ int metritis; /*ta stoixeia sthn oyra*/ TStoixeioyOyras pinakas[plithos]; /*o pinakas stoixeiwn*/ TOuras; /*orismos synarthsewn*/ HandleOuras Oura_Constructor() {/* Pro: Kamia * Meta: Dhmioyrgia kenhs stoivas */ HandleOuras ThisOura= malloc(sizeof(touras)); ThisOura->embros = 0; ThisOura->piso = 0; ThisOura->metritis = 0; return ThisOura; void Oura_Destructor(HandleOuras * OuraPtrPtr) * Meta: Katastrofi ths Oyras */ free(*ouraptrptr); *OuraPtrPtr = NULL; int Oyra_keni(const HandleOuras OuraPtr) * Meta: epistrefei 1 an h oyra einai kenh, diaforetika 0 */ return (OuraPtr->metritis == 0); int Oyra_gemati(const HandleOuras OuraPtr) * Meta: epistrefei 1 an h oyra einai gemath, diaforetika 0 */ return (OuraPtr->metritis == PLITHOS); Δ.Μήλιος 16

17 void Oyra_prosthesi(const HandleOuras OuraPtr, TStoixeioyOyras * const stoixeioptr, int *yperxeilisi) * Meta: Oyra exei epayksh8ei me to stoixeio */ if (Oyra_gemati(OuraPtr)) *yperxeilisi=1; { *yperxeilisi=0; OuraPtr->metritis++; TSoyra_setValue(&(OuraPtr->pinakas[OuraPtr->piso]), *stoixeioptr); OuraPtr->piso = ( OuraPtr->piso + 1 )% PLITHOS; void Oyra_apomakrynsh(const HandleOuras OuraPtr, TStoixeioyOyras * const stoixeioptr, int *ypoxeilisi) * Meta: Oyra exei meiw8ei kata ena stoixeio */ if (Oyra_keni(OuraPtr)) *ypoxeilisi=1; { *ypoxeilisi=0; OuraPtr->metritis--; TSoyra_setValue(stoixeioPtr, OuraPtr->pinakas[OuraPtr->embros]); OuraPtr->embros = ( OuraPtr->embros + 1 )% PLITHOS; Αρχεία Δοκιμής Στα αρχεία δοκιμής περιλαμβάνεται το αρχείο main που χρησιμοποιείται ως αρχείο test για τις πράξεις της ATΔ Ουρά. Ακολουθεί ο κώδικας του αρχείου δοκιμής: #include "Qcounter-OA.h" #include "../../../TS/TStoixeioyOyras.h" void print_options(void); int main(void) { int option, error,out_err; Δ.Μήλιος 17

18 HandleOuras queue; TStoixeioyOyras x; error=0; queue=null; do{ print_options(); scanf("%d", &option); switch(option) {case 1: queue=oura_constructor(); printf("\nh oura dimiourgithike!\n"); case 2: if(queue==null) { printf("\nden uparxei oura gia na eisaxthei stoixeio!\n"); printf("dwse enan stoixeio: "); out_err=tsoyra_readvalue(stdin,&x); if(!out_err) { printf("\n error stin readvalue!\n"); Oyra_prosthesi(queue, &x, &error); if(error) case 3: printf("\nyperxeilhsh oyras. To stoixeio DEN eishx8h!\n"); printf("\nto stoixeio eishx8h!\n"); if(queue==null) { printf("\nden uparxei oura gia na apomakrynthei stoixeio!\n"); Oyra_apomakrynsh(queue, &x, &error); if(error) printf("\nkeni oyra!\n"); { printf("\nekshx8h epityxws to stoixeio "); out_err=tsoyra_writevalue(stdout,x); if(out_err <0) Δ.Μήλιος 18

19 { printf("\n error stin writevalue!\n"); case 4: if(queue==null) { printf("\nden uparxei oura gia na elexthei an einai kenh!\n"); if(oyra_keni(queue)) printf("\nh oura einai kenh!\n"); printf("\nh oura DEN einai kenh!\n"); case 5: if(queue==null) { printf("\nden uparxei oura gia na elexthei an einai gemath!\n"); if(oyra_gemati(queue)) printf("\nh oura einai gemath!\n"); printf("\nh oura DEN einai gemath!\n"); case 6: if(queue==null) { printf("\nden uparxei oura gia na katastraphei!\n"); Oura_Destructor(&queue); printf("\nh oura katastrafike!\n"); while(option); return 0; Δ.Μήλιος 19

20 void print_options(void) { printf("\n\n1. Dhmioyrgia ouras\n\ 2. Prosthesh stoixeiou sthn oura\n\ 3. Apomakrynsh stoixeiou apo thn oura\n\ 4. Elegxos gia kenh oura\n\ 5. Elegxos gia gemath oura\n\ 6. Katastrofi\n\n\ Dwste thn epilogh sas(1-6, 0 gia eksodo):"); ενώ τα αρχεία Διεπαφής-Υλοποίησης, εκτός πάντα του path για τον τύπο στοιχείου, ίδια με τα πρότυπα αρχεία Εφαρμογές Εφαρμογή ουράς αναμονής Η μόνη διαφορά σε σχέση με την Μερική Απόκρυψη στο αρχείο εφαρμογής είναι λόγω της ολικής απόκρυψης ότι δηλώνεται δείκτης στην δομή στην main ενώ και οι συναρτήσεις-πράξεις της ουράς παίρνουν παράμετρο δείκτη και όχι την ίδια την δομή. Ακολουθεί ο κώδικας του αρχείου-εφαρμογής: #include <stdlib.h> #include <time.h> #include "Qcounter-OA.h" int main(void) {/* Skopos: Prosomoiwsh ouras anamonhs */ HandleOuras oura; /*oura pelatwn*/ float pithanotita_afiksis; /*pi8anothta afikshs*/ unsigned int xronos_eksipiretisis;/*xronos e3yphrethshs enos pelath*/ unsigned int xronos_prosomoiosis; /*synolikos xronos prosomoiwshs*/ unsigned int xronos; /*roloi prosomoiwshs*/ unsigned int enapomenon_xronos; /*xronos gia to telos e3yphrethshs enos pelath*/ unsigned int arithmos_pelaton; unsigned int xronos_anamonis; /*plh8os e3yphreth8entwn pelatwn*/ /*synolikos xronos anamonhs*/ int xronos_eisodoy; /*h wra pou eishl8e o pelaths sthn oyra*/ float mesos_xronos; /*mesos xronos anamonhs*/ float int random; error=0; Δ.Μήλιος 20

21 printf("dwste xrono prosomoiwshs, pi8anothta afikshs kai xrono e3yphrethshs\n"); scanf("%d %f %d",&xronos_prosomoiosis,&pithanotita_afiksis,&xronos_eksipiretisis); getchar(); printf("h prosomoiwsh 8a diarkesei %4u lepta.\n",xronos_prosomoiosis); printf("h pi8anothta afikshs pelath se ena lepto einai: %4.2f.\n",pithanotita_afiksis); printf("h diarkeia e3yphrethshs enos pelath einai %d lepta.\n",xronos_eksipiretisis); oura=oura_constructor(); xronos = 0; enapomenon_xronos = 0; arithmos_pelaton = 0; xronos_anamonis =0; srand(time(null)); while( xronos < xronos_prosomoiosis ) { random = ((float)rand())/(float)(rand_max); if ( random < pithanotita_afiksis ) Oyra_prosthesi(oura,&xronos,&error); if (error) { printf("yperxeilish oyras!\n"); return 0; if ( enapomenon_xronos == 0) /*eley8eros tamias*/ if (!Oyra_keni(oura)) /*yparxei pelaths*/ { Oyra_apomakrynsh(oura,&xronos_eisodoy, &error); /*phgainei sto tamio*/ if(error) { printf("ypoxeilish oyras!\n"); return 0; xronos_anamonis += xronos - xronos_eisodoy; /*ypologismos xronoy paramonhs*/ arithmos_pelaton++; enapomenon_xronos = xronos_eksipiretisis; xronos++; /*o xronos ay3anetai kata 1 lepto*/ if ( enapomenon_xronos > 0) /*o pelaths brisketai sto tamio*/ enapomenon_xronos --; Δ.Μήλιος 21

22 /*while( xronos < xronos_prosomoiosis )*/ if (arithmos_pelaton == 0) mesos_xronos = 0.0; mesos_xronos = ((float)xronos_anamonis)/((float)arithmos_pelaton); printf("eksyphreth8hkan %d pelates\n",arithmos_pelaton); printf("o synolikos xronos anamonhs htan %4.2f lepta.\n",mesos_xronos); Oura_Destructor(&oura); getch(); return 0; Αρχεία Διεπαφής-Υλοποίησης Τύπου Στοιχείου Ουράς Ακολουθεί παράθεση κώδικα για καθεμιά από τις 3 υλοποιήσεις του τύπου στοιχείου που υλοποιούνται σε αυτή την ενότητα. TS-int: Ακολουθεί ο κώδικας του αρχείου Διεπαφής: #ifndef TStoixeioyOyras_H #define TStoixeioyOyras_H typedef int TStoixeioyOyras; void TSoyra_setValue (TStoixeioyOyras *target, TStoixeioyOyras source); int TSoyra_readValue (FILE *from, TStoixeioyOyras * Elem); int TSoyra_writeValue (FILE *to, TStoixeioyOyras Elem); #endif Ακολουθεί ο κώδικας του αρχείου Yλοποιήσης: #include "TStoixeioyOyras.h" void TSoyra_setValue (TStoixeioyOyras *target, TStoixeioyOyras source) { *target=source; Δ.Μήλιος 22

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

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

25 int TSoyra_readValue (FILE *from, TStoixeioyOyras * Elem) { int fd; fd=fscanf(from,"%d %s",&(elem->integer),elem->string); if(fd==2) return 1; return 0; int TSoyra_writeValue (FILE *to, TStoixeioyOyras Elem) { int fd; fd=fprintf(to,"%d %s-- ", Elem.integer,Elem.string); return fd; Προφανώς έξω από τους φακέλους στα πλαίσια της επιλογής του χρήστη και όσων άλλων παραθέτονται στο κεφάλαιο 2 για την επεξήγηση των αρχείων της συγκεκριμένης ενότητας βρίσκονται πάλι τα αρχεία Διεπαφής και Υλοποίησης του TS-int ως default υλοποίηση που χρησιμοποιούν οι δοκιμές-main των επιμέρους υλοποιήσεων της ουράς (με κενό, με λογική μεταβλητή, με μετρητή). Δ.Μήλιος 25

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδηµαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόµενη λύση ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδηµαϊκό έτος 2003-2004 ΑΣΚΗΣΗ #5 Προτεινόµενη λύση Θέµα 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) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

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

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

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

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

Θέµα 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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) Να γράψετε ένα πρόγραμμα το οποίο να γεμίζει ένα ακέραιο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΤΣΑΛΑΚΗ ΞΑΝΘΟΥΛΑ ΕΡΓΑΣΤΗΡΙΟ 2

ΑΤΣΑΛΑΚΗ ΞΑΝΘΟΥΛΑ ΕΡΓΑΣΤΗΡΙΟ 2 EXERSICE 1 #include #define ROWS 20 #define COLUMNS 5 int better(int array[][columns],int rows); int main(void) int rows,grades[rows][columns],i,j,k=0,l=0; printf("\nhow many students are there

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

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

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

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Να γίνει περιγραφή της δομής δεδομένων Στοίβα. Στη δομή δεδομένων στοίβα τα δεδομένα στοιβάζονται το ένα πάνω στο άλλο. Σχηματικά οι λεπτομέρειες μιας δομής δεδομένων στοίβας μπορούν

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

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

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

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

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

242 -ΕισαγωγήστουςΗ/Υ 1 242 -ΕισαγωγήστουςΗ/Υ ΤµήµαΜαθηµατικών, Πανεπιστήµιο Ιωαννίνων Άρτια Α.Μ. (0-2-4-6-8) Πίνακες σαν παράµετροι 2 Πίνακες σαν παράµετροι 3 Πίνακες σαν παράµετροι Περνάµε ένα πίνακα σαν παράµετρο σε µια

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 10η εβδομάδα. Κοζάνη, 14 Ιανουαρίου 2009. Τα προγράμματα 1 έως 4 αφορούν την ταξινόμηση και αναζήτηση δεδομένων. Το πρόγραμμα 5 υλοποιεί μια στοίβα

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

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

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

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

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

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

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ 8/9/2008

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ 8/9/2008 ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ 8/9/2008 Όλα τα θέματα είναι ισοδύναμα. Οι απαντήσεις σας οι οποίες αφορούν ανάπτυξη κώδικα ή αποτελέσματα προγράμματος, θα πρέπει να είναι καθαρογραμμένες με ευδιάκριτους όλους

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr.

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα. http://aetos.it.teithe.gr/~demos/teaching_gr. Δομές Δεδομένων & Ανάλυση Αλγορίθμων 3ο Εξάμηνο Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα http://aetos.it.teithe.gr/~demos/teaching_gr.html Δημοσθένης Σταμάτης Τμήμα Μηχανικών Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα

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

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

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

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

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

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

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

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

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

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

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #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 Λογικές παραστάσεις Σχεσιακοί

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

3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? )

3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? ) 3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? ) 3.1 Η εντολή switch case Στην περίπτωση που θέλουμε να εξετάσουμε πολλές διαφορετικές τιμές, θα αναγκαζόμασταν να φτιάξουμε ένα κώδικα που θα περιέχει πολλά

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 8 Ασκήσεις Πινάκων Ταξινόμηση Αναζήτηση. Γιώργος Λαμπρινίδης

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 8 Ασκήσεις Πινάκων Ταξινόμηση Αναζήτηση. Γιώργος Λαμπρινίδης Εργαστήριο 8 Ασκήσεις Πινάκων Ταξινόμηση Αναζήτηση Γιώργος Λαμπρινίδης amprinidis@pharm.uoa.gr Παραδείγματα στους πίνακες (1) Έστω ότι έχετε το εξής: int a[20]; for(i = 0; i < 20; i++) a[i] = i+1; Ποιες

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

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

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

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

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

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

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

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)

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

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

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

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

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

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

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

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

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

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

ιαφάνειες παρουσίασης #5 (β)

ιαφάνειες παρουσίασης #5 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

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

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

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

#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 πίνακας

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Α Εξεταστική Περίοδος, 25 Ιουνίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ Ηλίας. Κ. Σάββας

Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Α Εξεταστική Περίοδος, 25 Ιουνίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ Ηλίας. Κ. Σάββας TEI Λάρισας / ΣΤΕΦ Τμ. Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Α Εξεταστική Περίοδος, 25 Ιουνίου 2009 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ Ηλίας. Κ. Σάββας Α 1) Να δημιουργήσετε ένα header file με όνομα pinakesα.h το

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

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

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

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

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

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

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

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

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

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

Generics και ArrayLists

Generics και ArrayLists ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Generics και ArrayLists Προσοχή!!! Να εκτελεστούν πρώτα όλες οι ασκήσεις τις Θεωρίας

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

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

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 8η σειρά ασκήσεων. Κοζάνη, 7 Δεκεμβρίου 2007. Κάθε πρόγραμμα εξαρτάται από αλγόριθμους και δομές δεδομένων, αλλά μόνο λίγα απαιτούν κάποια καινοτομία

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 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 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις

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

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

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

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

Εργαστήριο 3 Εντολή for while, do while

Εργαστήριο 3 Εντολή for while, do while Εργαστήριο 3 Εντολή for while, do while Άσκηση 3.1 Εύρεση αθροίσματος ακεραίων με χρήση της εντολής for #include int main(int argc, char *argv[]) int num,sum; coutnum;

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

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

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

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

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

Δομές δεδομένων (2) Αλγόριθμοι Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ: ΘΕΜΑ 1: 2.5 μονάδες Τι εκτυπώνουν τα παρακάτω κομμάτια κώδικα θεωρώντας ότι πληκτρολογούμε

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

Εισαγωγή στις Συναρτήσεις

Εισαγωγή στις Συναρτήσεις Εισαγωγή στις Συναρτήσεις Η φιλοσοφία σχεδίασης της C βασίζεται στη χρήση των συναρτήσεων. Έχουμε ήδη δει και χρησιμοποιήσει πολλές συναρτήσεις που έχει το σύστημα, όπως είναι οι printf(), scanf(),αλλά

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

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

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

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

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

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

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

2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if)

2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if) 2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if) 2.1. Τελεστές ΠΡΑΞΗ ΤΕΛΕΣΤΗΣ Ισότητα = = Μεγαλύτερο από > Μικρότερο από < Μεγαλύτερο ή ίσο από >= Μικρότερο ή ίσο από

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

ΕΝ ΕΙΚΤΙΚΑ ΣΧΕ ΙΑ ΛΥΣΕΩΝ - ΥΠΟ ΕΙΞΕΙΣ

ΕΝ ΕΙΚΤΙΚΑ ΣΧΕ ΙΑ ΛΥΣΕΩΝ - ΥΠΟ ΕΙΞΕΙΣ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΛΗ42 - ΕΙ ΙΚΑ ΘΕΜΑΤΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ 2η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ ΑΚΑ ΗΜΑΪΚΟΥ ΕΤΟΥΣ 2009-2010 2 oς Τόµος ΕΝ ΕΙΚΤΙΚΑ ΣΧΕ ΙΑ ΛΥΣΕΩΝ - ΥΠΟ ΕΙΞΕΙΣ ΕΡΓΑΣΙΑ 2 i. υναµική τεχνική επικύρωσης:

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

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

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

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

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

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

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