PDF de programación - MANUAL DE INICIACIN A LA LIBRERA NCURSES:

Imágen de pdf MANUAL DE INICIACIN A LA LIBRERA NCURSES:

MANUAL DE INICIACIN A LA LIBRERA NCURSES:gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 25 de Febrero del 2018)
1.231 visualizaciones desde el 25 de Febrero del 2018
354,8 KB
21 paginas
Creado hace 18a (28/11/2005)
Página 1 de 21

MANUAL DE INICIACIÓN A LA LIBRERÍA NCURSES
MANUAL DE INICIACIÓN A LA LIBRERÍA NCURSES:

Para instalar las librerías y actualizar otros componentes a través de internet, debe abrirse una terminal
en modo superusuario y escribir:

# apt-get update
# apt-get install make gcc anjuta ncurses-bin libncurses5-dev

ncurses para remolones
Por Carles Pina i Estany
http://bulma.net/body.phtml?nIdNoticia=2004


Las ncurses son unas librerías que ayudan a la programación en modo texto para Linux. Es decir, movimientos
de cursores, colores, recoger teclas (sin tener que esperar el "Intro") y un largo etcétera. Lo que hacia conio.h
en otros sistemas.

También hay gente que a veces tiene problemas con printf y scanf/fgets, debido a buffers intermedios de Linux.
Con las ncurses ya no habrá este problema.

En el escrito en cuestión veremos como empezar a programar con ncurses de forma práctica.



Introducción
Muchos habíamos usado la librería conio.h con el BorlandC o otros compiladores. En Linux existe una librería
que intenta "emularla", llamada uConio pero no es estándard de Unix ni hay paquete para Debian, etc.

En lugar de usar la librería uConio, podemos usar las ncurses. Estas pueden ser usadas desde una forma muy
simple hasta para hacer auténticas maravillas. En este artículo veremos una introducción práctica para empezar
a usarlas.

Existe bastante documentación por Internet, pero suele ser demasiado profunda al acercarnos por primera vez a
la programación usando esas librerías. Incluso, en muchas ocasiones no necesitamos muchas de las
funcionalidades que nos ofrecen.

Para compilar programas que usen las ncurses en Debian tendremos que instalar el paquete libncurses5-dev.
Seguramente lo tendremos instalado ya que también se necesita para compilar el Kernel.
En otras distribuciones necesitaremos instalar un paquete de nombre parecido.

Preparativos

Un programa de ncurses tendrá dos cosas significativas:

• Tendrá este include: #include <ncurses.h>
• Se compilará de una forma parecida a gcc -lncurses fichero.c



Página 2 de 21

MANUAL DE INICIACIÓN A LA LIBRERÍA NCURSES

Programando con ncurses
El "Hola mundo" con ncurses
Probaremos un programa así:
#include <ncurses.h>

int main() {
initscr();
printw("Hola Bulma!!!");
refresh();
getch();
endwin();
return 0;
}
initscr: es para entrar en modo ncurses
printw: es para imprimir en la "ventana"*. Es importante usar printw, scanfw, etc. y no usar printf, scanf, ya
que tendríamos resultados no deseados.
refresh: aquí es donde realmente se refresca la pantalla. Podemos hacer varios printw y al final un solo refresh
para actualizar la pantalla. Si no hacemos el refresh quizás no saldrá impreso por pantalla.
getch: espera una sola pulsación de una tecla. Nos devuelve el código ASCII de la tecla pulsada como un
entero. Fijaros que no espera el "Enter" final de línea
endwin: terminamos el modo de ncurses. Si no lo hacemos, nos quedará el terminal medio desconfigurado. Para
solucionarlo podríamos hacer reset desde la misma consola.
Recordar una vez más de compilar con gcc -lncurses programa.c

(*)En ncurses podemos gestionar ventanas, escribir en ellas de forma independiente, generar scrolls, etc.. Para
hacer una ventana usaríamos la función newwin, para eliminarla delwin, y un largo etcétera (man newwin). En
este escrito, no crearemos ventanas, por tanto todo el terminal en sí será considerado una ventana.
Entrada de teclado
Para pedir cosas a un usuario con ncurses haríamos:
#include <ncurses.h>
int main () {
char cadena[128];
initscr();

printw("Dime tu nombre\n");
scanw("%s",cadena);
printw("Te llamas: %s\n",cadena);

refresh();
getch();
endwin();
return(0);
}
La sintaxis del scanw es la misma que la del scanf tradicional.

Si no quisiéramos que lo que escribe el usuario saliera por pantalla (sin echo):

printw("Escribe la contraseña: ");
noecho();
scanw("%s",cadena);
echo();


Página 3 de 21

MANUAL DE INICIACIÓN A LA LIBRERÍA NCURSES
printw("La contraseña es: %s\n",cadena);
Fácil, ¿no?
"Limpiar" la pantalla
Para "limpiar" la pantalla podemos hacer, sencillamente:
erase();
Moviendonos por la pantalla
Si nos queremos posicionar en un sitio de la pantalla usaremos la función move:
move (10,2);
printw("Escribe la contraseña: ");
¡Ojo! que es move(int y, int x); (fila, columna). Los que habíamos usado la conio.h era gotoxy(int x,
int y) (va al revés).

Igualmente podríamos haber usado:

mvprintw(10,2,"Escribe la contraseña: ");
Poniendo colores en la pantalla
Si quisiéramos hacer un printw con colores:

if (has_colors()) {
start_color();

init_pair(1,COLOR_RED,COLOR_YELLOW);
attron(COLOR_PAIR(1));
printw("Escribe la contraseña: ");
attroff(COLOR_PAIR(1));
}
has_colors: devuelve 0 o 1 si el terminal tiene soporte para colores o no.
start_color: inicia el modo de colores. Si no lo hacemos no veremos los colores.
init_pair: asociamos el "par" 1 el color rojo para el texto y el amarillo para el fondo (los colores disponibles
con BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE).
attron: y ponemos los colores de forma activa. También podríamos hacer:
attron(COLOR_PAIR(1) | A_UNDERLINE);
Y así lo tendríamos subrallado. Tenemos disponibles A_NORMAL,A_BLINK, A_BOLD, etc. (man attron para ver
más opciones)

Es más, si queremos se pueden personalizar los colores en sí mediante la función init_color (man
init_color).
Enlaces

• El ncurses Programming HOWTO
• Un FAQ de ncurses
• Otro manual de ncurses
• Escribir Programas con ncurses (en castellano)
• man ncurses
• El man de cada función de ncurses (muy bien detallados)



MANUAL DE INICIACIÓN A LA LIBRERÍA NCURSES
Queda mucho para hacer con esas librerías. Por ejemplo toda la gestión de ventanas, crearlas, modificarlas,
imprimir dentro; menús, submenús; usar el mouse, etc.
Eso sólo ha sido una manera de introducirnos en la programación de ncurses, a partir de aquí podemos hacer si
lo queremos muchas otras cosas.

Página 4 de 21

Comentar que hay un port para Perl de las ncurses (paquete libcurses-perl) y, también desde Perl, una
manera rápida de hacer ventanas y formularios usando las libcurses (paquete libcurses-widgets-perl)



Programación con Ncurses
Por Wilson Libardo Pantoja Y.
http://gluc.unicauca.edu.co/wiki/index.php/Programaci%F3n_con_Ncurses


Las ncurses son librerías que permiten trabajar funciones similares a las contenidas en la librería conio.h del
viejo turboC de Borland, entre las cuales están: gotoxy(), clrscr(), textcolor(), getch(), etc. Con ncurses se
pueden hacer aplicaciones gráficas elegantes en modo texto y de forma muy fácil.

En Internet he encontrado mucha documentación sobre ncurses, sin embargo, para un principiante, la
información es tan profunda que resulta complicado su entendimiento. Mi intención es brindar un documento
sencillo e introductorio sobre esta librería.


Un Programa sencillo: “Hola linux..”


Utiliza un editor de texto cualquiera y copia (o digita) este programa y grábalo con el nombre programa.c:



#include <ncurses.h>
int main() {
initscr();
printw("Hola linux!");
refresh();
getch();
endwin();
return 0;
}


Nótese que en este programa se ha incluído: #include <ncurses.h> , con lo cual se tiene acceso al uso de las
siguientes funciones:



initscr(): se la utiliza para inicializar un ventana en modo ncurses.

• printw(): es para imprimir texto en la ventana. Es importante usar printw y scanfw en lugar de printf,

scanf, porque se tendrían salidas erróneas debido a los buffers intermedios de linux.







MANUAL DE INICIACIÓN A LA LIBRERÍA NCURSES


Página 5 de 21



refresh(): sirve para refrescar la pantalla, todos los printw se muestran efectivamente al hacer refresh.







• getch(): espera una sola pulsación de una sola tecla (sin tener que presionar “Enter”), devolviendo el

código ASCII de la tecla pulsada como un entero.

• endwin(): finaliza el modo de ncurses. Es importante colocar esta instrucción, de lo contrario el terminal

queda desconfigurado, obligando a cerrar la consola.

Compilar el programa “Hola Linux”

Para compilar desde consola este programa se debe utilizar el parámetro –lncurses, que indica al compilador
que el programa está utilizando curses; el comando completo es:



gcc -lncurses programa.c


Ejemplos

A continuación he elaborado algunos ejemplos sencillos y prácticos que ilustran como trabajar curses.



/*dibujar_cuadro.c
ESTE PROGRAMA DIBUJA UN CUADRO. UTILIZA LA LIBRERIA curses.h QUE SUSTITUYE DE ALGUNA
FORMAA LA CONIO.H DEL VIEJO TURBO C
COMPILE ESTE PROGRAMA CON LA INSTRUCCION: gcc dibujar_cuadro.c -o ejecutable -lncurses*/
#include <curses.h> //Incluiremos una librería a nuestro sistemas
#include <stdio.h>
void salir (void); //Esta funcion hará que nuestro programa se cierre
int main(void)
{
int i;char c;
initscr(); /*Esta función inicializa ncurses. Para todos los programas
debemos siempre inicializar ncurses y luego finalizarla, como
veremos adelante. */
c=95;//caracter ascci horizontal
for(i=1;i<=120;i++)
{
//linea horizontal superior
move(1,i); //Aqui estamos moviendo el cursor para a linea 1 columna i.
printw("%c",c); //Imprimimos un texto en la posición establecida.
//linea horizontal inferior
move(40,i); //Aqui estamos moviendo el cursor para a linea 40 columna i.
printw("%c",c); //Imprimimos un texto en la posición establecida.
}
c=124 ; //caract
  • Links de descarga
http://lwp-l.com/pdf9040

Comentarios de: MANUAL DE INICIACIN A LA LIBRERA NCURSES: (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad