ΠΕΡΙΕΧΟΜΕΝΑ

 

1. clreol()

2. clrscr()

3. gotoxy()

4. wherex(), wherey()

5. gettext( )

6. puttext( )

7. movetext( )

8. window( )

9. textbackground( )

10. textcolor( )

11. textmode( )

12. lowvideo( )

13. normvideo( )

14. highvideo( )

15. textattr( )

 

 

 

 

 

ΚΕΦΑΛΑΙΟ 4Ο

 

ΣΥΝΑΡΤΗΣΕΙΣ ΒΙΒΛΙΟΘΗΚΗΣ

 

Α. TEXT FUNCTIONS

 

1. clreol( )

 

            Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void clreol (void)

 

            Καθαρίζει την τρέχουσα γραμμή κειμένου από τη θέση του κέρσορα έως το τέλος της. Η θέση του κέρσορα παραμένει ως έχει. Δεν παίρνει καμία παράμετρο και καλείται με απλή αναφορά.

 

            Π.χ.:                 gotoxy (10,10);

                                    clreol( );

 

 

2. clrscr( )

 

            Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void clrscr (void)

 

            Καθαρίζει την οθόνη ή το τρέχον ενεργό παράθυρο κειμένου. Ο κέρσορας μετακινείται στη θέση 1,1 (upper left corner).

 

            Π.χ.:                 #include <conio.h>

                                    main( )

                                    {

                                      int i;

                                      gotoxy( 10,10);   printf (“This is a test. “);

                                      getch( );

                                      gotoxy(10,10);

                                      clreol( );        

                                      for (i=0; i<20; i++)  printf (“Hello \n”);

                                      getch( );

                                      clrscr( );

                                    }

 

3. gotoxy( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void gotoxy (int x, int y)

 

            Μεταφέρει τον κέρσορα στη θέση της οθόνης x, y. Αν οι τιμές των συντεταγμένων είναι εσφαλμένες, καμία ενέργεια δεν εκτελείται. Π.χ.:

 

            #include <conio.h>

            main( )

            {

              int i, j;

              clrscr( );

              for (i= 1, j= 1; j< 24; i+ = 3, j++)

              {

                gotoxy( ii, j);

                printf( “ x “ );

              }

              getche( );

              clrscr( );

            }

 

            Το παραπάνω παράδειγμα χρησιμοποιεί τη συνάρτηση gotoxy( ) για να τυπώσει στην οθόνη του Η/Υ διαγώνια το x.

 

4. wherex( ) / wherey( )

 

Τα πρωτότυπά τους βρίσκονται στο <conio.h>:

 

int wherex (void) / int wherey (void)

 

            Επιστρέφουν τις τρέχουσες x και y συντεταγμένες στο ενεργό παράθυρο κειμένου. Π.χ.:

 

            int xpos, ypos;

            x= wherex( ) ;

            y= wherey( ) ;

 

 

5. gettext( )

 

            Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

int gettext ( int left, int top, int right, int bottom, void *buf)

 

            Αντιγράφει το κείμενο το οποίο βρίσκεται στις συντεταγμένες τις οποίες δίνουμε στον buffer. Το ποσό της μνήμης το οποίο θα κρατηθεί για την αποθήκευση των δεδομένων, δίνεται από τον τύπο:             

 

num_bytes = rows * columns * 2.

 

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

 

buf = (char *) malloc (row * columns *2).

 

            Ο λόγος για τον οποίο πολλαπλασιάζουμε επί δύο είναι ότι κάθε χαρακτήρας χρειάζεται 2 bytes για να αποθηκευτεί (αυτό ισχύει για τους χαρακτήρες που εκτυπώνονται στην οθόνη), 1 byte για τον ίδιο τον χαρακτήρα και 1 byte για τα attribute του χαρακτήρα (πρόκειται για video memory).

Πχ.: Αν καλέσουμε την gettext( 1,1,10,10, buf) o buffer θα πρέπει να είναι:

 

buf = 10 * 10 * 2 = 200 bytes

 

Πχ.:      buf = (char ) malloc (10*10*2);

            gettext( 10,10,20,20, buf);

 

            Στο παράδειγμα αυτό δεσμεύουμε μέσω της malloc( ) (memory allocation – θα τη δούμε παρακάτω), 200 bytes video memory στη μεταβλητή buf την οποία εξαναγκάζουμε να είναι ένας char pointer (μέσω του cast char *).

 

            Η συνάρτηση επιστρέφει 1 σε περίπτωση που οι συντεταγμένες είναι σωστές (επιτυχία) και 0 σε περίπτωση που οι συντεταγμένες είναι λάθος (σφάλμα).

 

 

6. puttext( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

int puttext ( int left, int top, int right, int bottom, void *buf)

 

            Η συνάρτηση αυτή πρέπει να συνεργάζεται με τη συνάρτηση gettext( ). Ο buffer πρέπει να έχει οριστεί από πριν με τον τρόπο που υποδείχθηκε στην gettext( ).

 

            Στην ουσία τυπώνει τα περιεχόμενα του buffer στις συντεταγμένες της οθόνης, οι οποίες ορίζονται στις παραμέτρους της συνάρτησης.

 

Π.χ.:     buf = (char ) malloc( 1010*2);

            gettext ( 10,10,20,20, buf);

            puttext( 0,0,30,30, buf);

 

            Το παραπάνω παράδειγμα δεσμεύει χώρο στη μνήμη, στη μεταβλητή buf, κάνοντας πάλι χρήση ενός cast και της συνάρτησης malloc( ). Έπειτα χρησιμοποιεί την gettext( ) για να αποθηκεύσει τα δεδομένα της οθόνης στη μεταβλητή buf και τα τυπώνει σε άλλο σημείο της οθόνης.

 

 

7. movetext( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

int movetext ( int left, int top, int right, int bottom, int newleft, int newtop)

 

            Η συνάρτηση αυτή μετακινεί ένα τμήμα της οθόνης κειμένου σε ένα άλλο σημείο. Η συνάρτηση αυτή δεν απαιτεί τη χρήση buffer μιας και δεν πρόκειται να γίνει αποθήκευση των δεδομένων αλλά απλή μετατόπισή τους πάνω στην οθόνη.

 

Π.χ.:     movetext( 1,1,8,8,10,10);

 

            Το παραπάνω παράδειγμα μετακινεί τα περιεχόμενα του παραθύρου 1,1,8,8 στη νέα θέση 10,10.

            Όταν η μετακίνηση εκτελείται, ο κέρσορας παραμένει στην αρχική του θέση. Επίσης το πρωτότυπο παράθυρο παραμένει και αυτό, δεν εξαφανίζεται δηλαδή.

 

 

8. window( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void window ( int left, int top, int right, int bottom)

 

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

 

Π.χ.:     window(10,10,60,15);

            gotoxy(2,3);

            printf(“at location 2,3);

 

            Στο παραπάνω παράδειγμα η αναφορά στις συντεταγμένες 2,3 γίνεται μέσα στο ενεργό παράθυρο που μόλις ορίστηκε και όχι στη θέση 2,3 της οθόνης.

 

 

9. textbackground( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void textbackground (int color)

 

            Η συνάρτηση αυτή τοποθετεί το υπόστρωμα (background) της οθόνης σε ένα συγκεκριμένο χρώμα. Τα αποδεκτά χρώματα είναι:

 

MACRO

 

BLACK

BLUE

GREEN

CYAN

RED

MAGENDA

BROWN

ΑΚΕΡΑΙΑ ΑΝΑΠΑΡΑΣΤΑΣΗ

 

0

1

2

3

4

5

6

 

            Το νέο background color αρχίζει να ενεργεί μετά την κλήση της συνάρτησης, επομένως οι χαρακτήρες που ήδη έχουν τυπωθεί δεν αλλάζουν background.

 

Π.χ.:     textbackground(CYAN);          ή          textbackground(3);

 

            Τα macros  είναι ήδη ορισμένα στο conio.h, οπότε μπορούν να κληθούν με το όνομά τους.

 

 

10. textcolor( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void textcolor (int color)

 

            Θέτει τους χαρακτήρες, που θα τυπωθούν στην οθόνη, σε ένα συγκεκριμένο χρώμα. Επίσης μπορεί να ορίσει και BLINΚ χαρακτήρες. Οι αποδεκτές τιμές χρωμάτων είναι:

 

MACRO

 

BLACK

BLUE

GREEN

CYAN

RED

MAGENDA

BROWN

LIGHTGRAY

DARKGRAY

LIGHTBLUE

LIGHTGREEN

LIGHTCYAN

LIGHTRED

LIGHTMAGENDA

YELLOW

WHITE

BLINK

INTEGER EQUIVALENT

 

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

128

 

 


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

 

Π.χ.:     textcolor(BLUE);         ή          textcolor(1);

 

 

11. textmode( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void textmode (int mode)

 

            Χρησιμοποιείται για να αλλάζει το video mode σε μία οθόνη κειμένου. Οι αποδεκτές τιμές γι’ αυτή τη συνάρτηση είναι:

 

 

MACRO NAME

 

BW40

C40

BW80

C80

MONO

LASTMODE

 

INTEGER EQUIVALENT

 

0

1

2

3

7

-1

 

DESCRIPTION

 

40 column B – W

40 column color

80 column B – W

80 column color

80 column monocrome

Previous Mode

 


 

            Με την κλήση της textmode( ) η οθόνη καθαρίζεται και όλα τα screen attributes τίθενται σε κατάσταση default.

 

Π.χ.:     textmode(C80);

 

 

12. lowvideo( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void lowvideo (void)

 

            Μετά την κλήση της, οι χαρακτήρες που είναι γραμμένοι στην οθόνη, εμφανίζονται σε low intensity κατάσταση (γκρι).

 

Π.χ.:     lowvideo( );

 

 

13. normvideo( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void normvideo (void)

 

            Μετά την κλήση της, οι χαρακτήρες που είναι γραμμένοι στην οθόνη, εμφανίζονται σε normal intensity κατάσταση (κανονικά).

 

 

14. highvideo( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void highvideo (void)

 

            Μετά την κλήση της, οι χαρακτήρες που είναι γραμμένοι στην οθόνη, εμφανίζονται σε high intensity κατάσταση (high lighted - έντονα).

 

 

15. textattr( )

 

Το πρωτότυπό της βρίσκεται στο <conio.h>:

 

void textattr (int attr)

 

            Η συνάρτηση αυτή μπορεί να καθορίσει κατευθείαν το foreground και το background color στην οθόνη κειμένου με τον παρακάτω τρόπο:

 

7

6

5

4

3

2

1

0

Blink

Χρώμα Φόντου

Χρώμα Κειμένου

 

            Αν το bit 7 ενεργοποιηθεί, τότε το κείμενο αναβοσβήνει. Τα bit 6 – 4 ορίζουν το υπόστρωμα, ενώ τα 3 – 0 το χρώμα των χαρακτήρων. Ο ευκολότερος τρόπος για να θέσουμε ένα background color μέσα στο attribute byte είναι να πολλαπλασιάσουμε το χρώμα επί 16 ( αφού στο 4o bit ξεκινά το 16) και μετά να κάνουμε OR με το χρώμα που θέλουμε.

 

Π.χ.1: Για να έχουμε πράσινο υπόστρωμα με μπλε χαρακτήρες θα πρέπει να κάνουμε : GREEN * 16   BLUE

            Πολλαπλασιάζουμε το macro του GREEN επί 16 για να έχουμε το πράσινο υπόστρωμα και έπειτα κάνουμε OR  με το macro του BLUE.

 

7

6

5

4

3

2

1

0

 

 

0

0

0

0

0

0

0

0

Το  συγκεκριμένο πεδίο δεν έχει τίποτα.

 

 

0

0

0

0

0

0

1

0

(Πρώτα ορίζω το φόντο που θέλω) Binary : 2. Macro : GREEN.

 

X

0

0

0

1

0

0

0

0

            Binary : 16. Πολλαπλασιασμός GREEN*16.

 

=

0

0

1

0

0

0

0

0

Binary : 32. Αποτέλεσμα του πολλ/σμου. Λογικό αφού το 010 = 2, δηλαδή GREEN, και τα Bit 6 – 5 – 4 κρατιούνται για το background.

 

OR

0

0

0

0

0

0

0

1

(Μετά ορίζω το χρώμα των χαρακτήρων) Binary : 1. Macro : BLUE.

 

=

0

0

1

0

0

0

0

1

Αποτέλεσμα: μπλε χαρακτήρες σε πράσινο φόντο. (010 = Δυαδικό 2 = Green, 0001 = Δυαδικό 1 = Blue)

 

                                               

            Υπενθυμίζεται ότι το bitwise OR ( ) χρησιμοποιείται για να θέτει σε κατάσταση ΟΝ ένα bit. Έτσι αν θέλουμε να κάνουμε τον χαρακτήρα αυτόν blink θα πρέπει να κάνουμε OR με το 128, δηλ. textattr( BLUE BLINK GREEN*16).

 

Άρα:

 

OR

1

0

0

0

0

0

0

0

Binary : 128. Το πρώτο bit είναι blink.

 

=

1

0

1

0

0

0

0

1

Αποτέλεσμα: blinking μπλε χαρακτήρες σε

πράσινο φόντο.