You are on page 1of 16

UNIVERSIDAD TECNOLÓGICA DE PANAMÁ

FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES

HERRAMIENTA DE PROGRAMACION APLICADA I

MANEJO DE PANTALLA EN C

GRUPO: 1IL115

PROFESORA
PROF. Dra. ADDYS DE LAM

INTEGRANTES
Campos Bryan 8-958-1721
Franco Cirilo 8-918-469
Ruiz Héctor 8-915-1415
Sanchez Ernesto 9-743-681

GRUPO DE TRABAJO NO. 5

FECHA
06/09/2018
INTRODUCCIÓN A LOS INTERFACES DE TEXTO .................................................................................... 3
OBJETIVOS....................................................................................................................................................... 4
LA PANTALLA NORMAL EN MODO TEXTO: DIMENSIONES ................................................................ 4
Tabla n 1: tamaño en modo texto .............................................................................................................. 4
ACTIVAR EL MODO TEXTO ......................................................................................................................... 4
BORRAR PANTALLA...................................................................................................................................... 5
Utilizar una función del sistema .................................................................................................................... 5
Escribir una función que mediante programación borrará la pantalla ........................................................... 6
Función clrscr().............................................................................................................................................. 6
BORRAR LÍNEA DESDE EL CURSOR AL FINAL ....................................................................................... 7
Función delline()............................................................................................................................................ 7
ELIMINAR LÍNEA ........................................................................................................................................... 7
Función clreol() ............................................................................................................................................. 7
Función insline() ............................................................................................................................................ 8
COLOR DE FONDO , COLOR DE TEXTO Y ACTUALIZACIÓN DE AMBOS AL MISMO TIEMPO...... 9
Función textbackground() ............................................................................................................................ 10
Función textcolor() ...................................................................................................................................... 10
Función textarr() .......................................................................................................................................... 11
MOVIMIENTOS EN BLOQUE DE TEXTO. ................................................................................................. 11
Función movetext() ...................................................................................................................................... 11
POSICIONAMIENTO DEL CURSOR ............................................................................................................ 12
Función gotoxy() ......................................................................................................................................... 12
CAMBIAR EL TIPO DE CURSOR ................................................................................................................ 12
Función _setcursortype() ............................................................................................................................. 12
CREACIÓN DE VENTANA ........................................................................................................................... 13
Función window() ........................................................................................................................................ 13
CONTROL DE INTENSIDAD ........................................................................................................................ 14
Función highvideo() .................................................................................................................................... 14
Función lowvideo()...................................................................................................................................... 14
VALOR DE COORDENADAS X E Y DEL CURSOR .................................................................................. 14
Funcion wherex() ......................................................................................................................................... 14
Funcion wherey() ......................................................................................................................................... 14
CONCLUCION ................................................................................................................................................ 15
REFERENCIAS ............................................................................................................................................... 15
INTRODUCCIÓN A LOS INTERFACES DE TEXTO
A estas alturas del siglo XXI casi todos los ordenadores personales utilizan modernos
entornos gráficos como son Windows o los también conocidos KDE y GNOME en Linux.
Estos sistemas pueden representar cualquier imagen a partir de pequeños puntos que
pueden ser de uno de los millones de colores soportados. Para aplicaciones más sencillas, se
utiliza lo que se denomina Interfaz de texto, que es mucho más fácil de controlar por el
ordenador y más que suficiente para determinadas aplicaciones.

En todos los ejemplos que hemos hecho hasta ahora hemos podido comprobar como los
resultados se iban presentando en la pantalla de forma secuencial, es decir, unos debajo de
otro conforme se iban generando. Cuando se alcanzaba la parte baja de la pantalla todo el
contenido subía automáticamente para dejar una nueva línea vacía abajo. Algunas
operaciones más "sofisticadas" que hemos llegado a hacer han sido borrar todo usando la
instrucción o encolumnar la presentación de algunos listados ajustando los argumentos que
le pasamos a la instrucción de imprimir. De todas formas los resultados siempre se han
visto de color gris sobre fondo negro. Muy triste.

En este tema vamos a ver cómo se puede conseguir escribir exactamente en la posición de
la pantalla que queramos, así como en distintos colores de letra y de fondo. También
usaremos unos caracteres especiales conocidos como "Semigráficos" para dibujar líneas y
recuadros que den más consistencia a nuestras presentaciones.
OBJETIVOS
El alumno aprenderá a manejar las instrucciones necesarias para programar en modo texto
generando, impresiones en pantalla con presentación.
El alumno conocerá el manejo de caracteres ASCII para dar presentación.
El alumno conocerá las opciones de edición de texto para el dominio del editor y del
teclado.
El alumno conocerá las instrucciones de salida para imprimir en pantalla.
El alumno conocerá las instrucciones de entrada para capturar datos.

LA PANTALLA NORMAL EN MODO TEXTO: DIMENSIONES

Según el adaptador gráfico usado, hay disponible una variedad concreta de modos de texto
en los ordenadores compatibles IBM. Se detallan a continuación:

Res. texto Tamaño car. Res. gráfica Colores Adaptadores


80×25 9×14 720×350 Blanco y negro MDA
40×25 8×8 320×200 16 colores CGA, EGA
80×25 8×8 640×200 16 colores CGA, EGA
80×25 8×14 640×350 16 colores EGA
80×43 8×8 640×350 16 colores EGA
80×25 9×16 720×400 16 colores VGA
80×50 9×8 720×400 16 colores VGA

Tabla n 1: tamaño en modo texto

El modo texto más usado con diferencia en entorno DOS y en las primeras consolas
Windows es el de 80 columnas por 25 filas con 16 colores. Este modo estaba disponible en
prácticamente todos los ordenadores personales IBM y compatibles. Todos los modos
80×25 también tenía un modo virtual 80×24, usado por algunas aplicaciones que
necesitaban una barra de estado en la última fila, como los emuladores de terminal. En
realidad era el mismo modo 80×25, pero restringido por software para hacer inaccesible la
última file.

ACTIVAR EL MODO TEXTO


Se puede trabajar en 6 modos de texto distintos, utilizando 6 constantes numéricas
predefinidas (en conio.h) para ello:
BW40 40 columnas y 25 filas en blanco y negro.
C40 40 columnas y 25 filas en color.
BW80 80 columnas y 25 filas en blanco y negro.
C80 80 columnas y 25 filas en color (valor usado por defecto).
MONO 80 columnas y 25 filas en monocromo.
C4350 En adaptador EGA: 80 columnas y 43 filas en color.
En adaptador VGA: 80 columnas y 50 filas en color.

Para especificar un modo de trabajo se usa la función textmode(modo). La constante


LASTMODE, cuyo valor es –1, se usa para restablecer el modo de texto existente antes de
cambiarlo la última vez, de la forma textmode(LASTMODE).

Ej. textmode(C4350);

BORRAR PANTALLA

Algunas versiones de C, que no pertenecen a Microsoft, proporcionan una función clrscr


para borrar la pantalla en una aplicación DOS. Sin embargo, no hay ninguna función de
interfaz de programación de aplicaciones de Win32 o en tiempo de ejecución de C que se
llevará a cabo esta función
Para realizar esta tarea para una aplicación de consola Win32, utilice uno de los métodos
siguientes:

 Utilice una función del sistema.


 Escribir una función que mediante programación borrará la pantalla.
 Función clrscr(); de conio.h

Utilizar una función del sistema

#include <stdio.h>

void main()
{
system("cls");
}
Escribir una función que mediante programación borrará la pantalla
#define PERR(bSuccess, api){if(!(bSuccess)) printf("%s:Error %d from %s
\
on line %d\n", __FILE__, GetLastError(), api, __LINE__);}

void cls( HANDLE hConsole )


{
COORD coordScreen = { 0, 0 };
BOOL bSuccess;
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD dwConSize;

bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi );


PERR( bSuccess, "GetConsoleScreenBufferInfo" );
dwConSize = csbi.dwSize.X * csbi.dwSize.Y;

bSuccess = FillConsoleOutputCharacter( hConsole, (TCHAR) ' ',


dwConSize, coordScreen, &cCharsWritten );
PERR( bSuccess, "FillConsoleOutputCharacter" );

bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi );


PERR( bSuccess, "ConsoleScreenBufferInfo" );

bSuccess = FillConsoleOutputAttribute( hConsole, csbi.wAttributes,


dwConSize, coordScreen, &cCharsWritten );
PERR( bSuccess, "FillConsoleOutputAttribute" );

bSuccess = SetConsoleCursorPosition( hConsole, coordScreen );


PERR( bSuccess, "SetConsoleCursorPosition" );
return;
}

Función clrscr()

esta función despeja la ventana de texto actual y coloca el cursor en la esquina superior
izquierda

# include <conio.h>
# include <stdio.h>

Int main(){
printf(“Ejemplo de \”clrscr\”\n\n”);
printf(“pulsar una tecla para continuar…”);
getch();
clrscr();
return 0;
}
BORRAR LÍNEA DESDE EL CURSOR AL FINAL

Función delline()
Borra la línea donde se encuentra el cursor y mueve todas las líneas inferiores a una línea
anterior. La función delline funciona en la ventana de texto activa.

#include <conio.h>

int main() \{
clrscr();
cprintf( "Ejemplo de \"delline\"\r\n\r\n" );
cprintf( "en una de estas líneas, para borrarla.\n" );
cprintf( "Pulsa una tecla para continuar...\n" );
getch();
gotoxy( 1, 3 );
delline();

return 0;
}

ELIMINAR LÍNEA
Función clreol()
Aquí como te das cuenta mostramos un mensaje luego utilizamos la función getch() para
poder hacer una pausa hasta presionar una tecla (según el mensaje Enter), la siguiente línea
"gotoxy(x, y);clreol();" borrar el texto mostrado en la posición (x, y).

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
gotoxy(2,2);printf(“Presione enter para continuar”);
getch();
gotoxy(2,2);clreol();
gotoxy(3,3); printf(“Presione enter una vez más”);
getche();
}
#include <conio.h>
#include <stdio.h>

int main() \{
clrscr();
printf( "Ejemplo de \"clreol\"\n\n" );
printf( "Esto es un mensaje\nescrito en variaslíneas.\n");
printf( "Usaremos \"gotoxy\"para colocar el cursor\n
printf( "en una de estas líneas, para borrarla.\n" );
printf( "Pulsa una tecla para continuar...\n" );
getch();
gotoxy( 1, 4 );
clreol();
getch();

return 0;
}

INSERTAR LÍNEA EN BLANCO


Función insline()
Inserta una línea vacía en la ventana de texto en la posición del cursor usando el color de
fondo de texto de uso. Todas las líneas debajo de la vacía son mudadas una línea mas abajo,
y la línea inferior es mudada fuera de la ventana.
#include <conio.h>

int main() \{
clrscr();
cprintf( "Ejemplo de \"insline\"\r\n\r\n" );
cprintf( "Añadiremos una línea vacía después de esta.\n");
insline();
cprintf( "\r\n Pulsa una tecla para continuar...\n" );
getch();
return 0;
}
COLOR DE FONDO , COLOR DE TEXTO Y ACTUALIZACIÓN DE AMBOS
AL MISMO TIEMPO.

La función textattr() permite establecer un color de texto y otro de fondo en una sola
llamada, en lugar de llamar una vez a textcolor() y otra vez a textbackground(), pero el
resultado es el mismo. Como ya se ha comentado, cada posición de pantalla se almacena en
2 bytes: en el primero se guarda el código ASCII del carácter mostrado; en el segundo se
guardan los atributos de color de texto, de fondo y la intermitencia. La forma de almacenar
esos atributos en esos 8 bits es la siguiente:
7 6 5 4 3 2 1 0
blink back back back text text text text

Los bits del 0 al 3 guardan el color de texto, de 0 a 15 (16 colores posibles). Los bits del 4, 5
y 6 guardan el color de fondo, de 0 a 7 (8 colores posibles). El bit 7 guarda el estado de
intermitencia.
Ej.
textattr(5); //5 =0 000 0101 texto=5 fondo=0 Inter=0
textattr(37); //37 =0 010 0101 texto=5 fondo=2 Inter=0
textattr(165);//165=1 010 0101 texto=5 fondo=2 Inter=1

Para no tener que pasar a binario pueden usarse las constantes predefinidas, multiplicando el
color de fondo por 16 y sumando la constante BLINK (128) para activar intermitencia.
Ej.
textattr(BLINK + 16 * RED + BLUE); //Texto azul, fondo
//rojo e intermitencia activada.

textattr(16*GREEN + RED); //Texto rojo, fondo verde e


//intermitencia desactivada.

Al establecer nuevos colores de fondo o de texto, los caracteres ya mostrados en pantalla no


se ven alterados. Esos colores se utilizan en los caracteres que se van a mostrar después de
usar textcolor() y textbackground().
Los colores no son tenidos en cuenta por todas las funciones de salida por pantalla, sólo por
aquellas que escriben directamente en pantalla, como cprintf(), cscanf(), cputs(), etc., no a
través del stream (buffer de un fichero) asociado al fichero de salida estándar (stdout, que es
la pantalla), como las funiones printf(), scanf(), puts(), etc. Las funciones clrscr() y clreol()
sí tienen en cuenta los colores.

Función textbackground()
Esta funcion selecciona el color de fondo especificado por el argumento color. Esta funcion
solamente funciona con aquellas funciones que envían datos de salida en modo 0 y 7;
también se pueden usar constantes simbólicas definidas en conio.h en lugar de enteros.
# include <conio.h>
int main(){
cprintf( "Ejemplo de \"textbackground\"\r\n\r\n" );
textbackground(BLUE);
cprintf( "Este mensaje tiene otro color de fondo.\n" );
cprintf( "Pulsa una tecla para continuar...\n" );
getch();

return 0;
}

Función textcolor()

Esta función selecciona el color de texto especificado por el argumento color. Esta función
solamente funciona con aquellas funciones que envían datos de salida en modo texto
directamente a la pantalla. El argumento color es un numero entero entre 0 y 15 y el
numero 128, para activar el parpadeo.
# include <conio.h>
int main(){
cprintf( "Ejemplo de \"textcolor\"\r\n\r\n" );
textcolor(LIGHTRED);
cprintf( "Este mensaje tiene otro color de texto.\n" );
cprintf( "Pulsa una tecla para continuar...\n" );
getch();

return 0;
}
Función textarr()

Esta función asigna ambos colores de primer plano y de fondo en una sola llamada.
# include <conio.h>
int main(){

int artibuto = BLUE << 4 | LIGHRED;


cprintf(“ejemplo de \”textattr\”\r\n\r\n”);
textattr(atributo);
cprintf(“este mensaje tiene otro color de fondo y de
texto\n”);
getch();

return 0;
}

MOVIMIENTOS EN BLOQUE DE TEXTO.


Función movetext()
Copia el contenido en un rectángulo de texto en pantalla definido por los argumentos
izquierda y superior, que describe la esquina superior izquierda y por los argumentos
derecha e inferior, que describen la esquina inferior derecha, a otro rectángulo de igual
dimensiones.
# include <conio.h>
#define ANCHURA 25
#define ALTURA 2
int main(){

clrscr();
cprintf(“ejemplo de \”movertext\”\r\n\r\n”);
cprintf(“el rectángulo será un área pequeña.\n”);
cprintf(“copiamos esta línea…\r\n…y esta tambien.\r\n”);
cprintf(“\”movertext\” ha rretomado:
%d\r\n.\n”,movetext(1,4,ANCHURA, 3+ALTURA,5,15));
getch();
clrscr();

return 0;
}
POSICIONAMIENTO DEL CURSOR
Función gotoxy()
Mueve el cursor de la ventada de texto a la posición según las coordenadas especificadas
por los argumentos x e y. si las coordenadas no son validas entonces la llamada a la función
gotoxy es ignorada.

# include <conio.h>
int main(){

clrscr();
cprintf(“ejemplo de \”gotoxy\”\r\n\r\n”);
cprintf(“1°linea.\n”);
cprintf(“2°linea.\n”);
gotoxy(5,20);
cprintf(“3°linea.\n”);
gotoxy(20,1);
cprintf(“4°linea.\n”);
gotoxy(1,15);
cprintf(“5°linea.\n”);
getch();
clrscr();

return 0;
}

CAMBIAR EL TIPO DE CURSOR

Función _setcursortype()

Selecciona la apariencia del cursor entre tres tipos. El argumento tipo_cursor indica el tipo
de cursor a seleccionar según estos:
_NOCURSOR Desactiva el cursor
_NORMALCURSOR Cursor normal
_SOLIDCURSOR cursor es un cuadrado relleno
# include <conio.h>
int main(){
char nombre[15]. Si_no=’’;

_setcursortype(_SOLIDCURSOR);
clrscr();
cprintf(“ejemplo de \”_setcursortype \”\r\n\r\n”);
cprintf(“cursor es un cuadrado relleno.\n”);
getch();
clrscr();

return 0;
}

CREACIÓN DE VENTANA
Función window()
Define una ventana de texto en pantalla especificado por los argumentos izquierda y
superior, que describen la esquina superior izquierda y por los argumentos derecha e
inferior, que describen la esquina inferior derecha.

#include <conio.h>

int main() \{
clrscr();
cprintf( "Ejemplo de \"window\"\r\n\r\n" );
cprintf( "La ventana de texto será de (10,10) á
(50,20).\r\n" );
window( 10, 10, 50, 20 );
cprintf( "Ahora estamos dentro de la ventana de
texto.\r\n" );
cprintf( "Pulsa una tecla para continuar..." );
getch();

return 0;
}
CONTROL DE INTENSIDAD
Función highvideo()
Selecciona los caracteres con una mayor intensidad mediante activando el bit de la mayor
intensidad del color de primer plano en uso.

Función lowvideo()
Selecciona los caracteres con una menor intensidad mediante activando el bit de la menor
intensidad del color de primer plano en uso.
# include <conio.h>
int main(){

clrscr();
cprintf(“ejemplo de \”highvideo\”\r\n\r\n”);
cprintf(“el texo tiene su propia intensidad.\n”);
cprintf(“ahora combiemos la intensidad.\n”);
hidhvideo();
cprintf(“la intensidad a partir de ahora es mayor”);
cprintf(“la intensidad a partir de ahora es menor”);
lowvideo();
cprintf(“pulsa una tecla para continuar…”);

return 0;
}

VALOR DE COORDENADAS X E Y DEL CURSOR


Funcion wherex()
Obtiene la coordenada x de la posición del cursor actual (dentro de la ventana en uso).

Funcion wherey()
Obtiene la coordenada y de la posición del cursor actual (dentro de la ventana en uso).

# include <conio.h>
int main(){

_setcursortype(_SOLIDCURSOR);
clrscr();
cprintf(“ejemplo de \”wherex\”y\”wherex\”\r\n\r\n”);
cprintf(“la posición del cursor es(%d,%d)\n”, wherex, wherex);
getch();
clrscr();

return 0;
}
CONCLUCION
Todos los resultados de los programas que hemos hecho hasta ahora en este curso de
programación los hemos podido ver en la pantalla a través de lo que denominamos
"Interfaz de texto", primero sólo en blanco y negro, y ahora en colores. A partir de aquí
vamos a tener la posibilidad de usar la pantalla como una matriz de puntos de colores
(Píxeles) donde tendremos la posibilidad de dibujar lo que queramos usando las
instrucciones adecuadas.

En los veremos la forma de iniciar el modo de pantalla de texto, algo muy sencillo, y
después cómo dibujar figuras en la pantalla para que hagan nuestros programas y juegos
más vistosos. la cabecera conio.h declara varias funciones útiles para mejorar el
rendimiento de la «entrada y salida por consola» desde un programa.

Dos conceptos muy importantes que hay que tener en cuenta a la hora de trabajar con
interfaces de texto son las coordenadas y color. Esta nos permite dar un “mejor formato” al
texto en la terminal de MS-DOS, ya sea dándole color al texto o color al fondo, por
mencionar un ejemplo simple.

El lenguaje de programación C posee diversos métodos para hacer mas atractivo el


programa y dar una visión grafica detallada para el manejo de nuestro programa de una
forma elegante a nivel visual, entre ellos podemos encontrar los antes mencionados como
son el clrscr(), para borrar una pantalla, o para cambiar el color de fondo y texto. Todas
estas funciones sin embargo deben ser bien estudiadas para su utilización debido a que estas
poseen bastantes reglas se utilización, así que se recomienda primero leer sobre el tema,
conocer los parámetros para después implementar estas funciones al programa.

REFERENCIAS
Cabanes, N. (2018). Tema 10: Pantalla en modo texto - AprendeAProgramar.com. [online]
Aprendeaprogramar.com. Available at:
http://www.aprendeaprogramar.com/mod/resource/view.php?id=153 [Accessed 1 Sep.
2018].
Es.wikipedia.org. (2018). Modo texto. [online] Available at:
https://es.wikipedia.org/wiki/Modo_texto [Accessed 1 Sep. 2018].
Taringa.net. (2018). Colores en C++ - cout&lt;&lt;&quot;Hola Mundo&quot; ; -
Taringa!. [online] Available at:
https://www.taringa.net/comunidades/programadores/2091/Colores-en-C.html [Accessed 1
Sep. 2018].
Foro.elhacker.net. (2018). Gama de colores.. [online] Available at:
https://foro.elhacker.net/programacion_cc/pequenita_aportacion_gama_de_colores_y_gran
_duda_al_respecto-t391209.0.html [Accessed 1 Sep. 2018].
Kernighan, B. and Ritchie, D. (2016). The C programming language. Englewood Cliffs,
N.J.: Prentice Hall.s

You might also like