Desarrollo de Software
[Ejemplo] Implementar la función GOTOXY en Dev-C++

Para quienes quieran aprender a programar, [url="https://sourceforge.net/projects/orwelldevcpp/"]Dev-C++[/url] es un entorno para el lenguaje C y C++.
Entre las primeras prácticas que normalmente tienen los estudiantes de programación, está hacer pequeñas aplicaciones en la consola de texto. Una de las rutinas más comunes que se pueden llegar a ocupar en este ambiente, es la de ubicar el cursor en posiciones dadas por columnas y filas. En otros entornos esto se resuelve utilizando la función gotoxy, pero en Dev-C++ no está, por tanto este código de ejemplo viene a mostrar cómo implementar por nuestra cuenta dicha función.

[size=2]Para empezar vamos a necesitar incluir la siguiente línea al inicio de nuestro código:[/size]
[size=2]#include <windows.h>[/size]
[size=2](este ejemplo fue probado en el sistema operativo Windows), luego vamos poner el código de la función gotoxy, seguido del main donde haremos un llamado a una función que pinta un recuadro, le enviaremos los parámetros de 48 columnas y 24 filas. Por último la implementación de la función de pintar un recuadro.[/size]

[size=2]Utilizaremos unos caracteres tomados de la tabla ascii para dar forma al recuadro. (Ver tabla ascii adjunta).[/size]


[code]#include <iostream>
#include <windows.h>
void gotoxy(int x, int y) //implementación de la función gotoxy
{
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
using namespace std;
void recuadro(int Col1, int Col2, int Fil1, int Fil2); //declaración de la función recuadro
int main(int argc, char** argv) { //función principal de nuestro programa

recuadro(0,47,0,23); //llamado de la función recuadro
return 0; //fin de la aplicación
}
void recuadro(int Col1, int Col2, int Fil1, int Fil2) //implementación de la función recuadro
{
for (int Cols=Col1;Cols<=Col2;Cols++) //for doble para hacer el recorrido del recuadro
{
for (int Fils=Fil1;Fils<=Fil2;Fils++)
{
gotoxy(Cols,Fils); //llamado de la función gotoxy con el par de coordendas "x,y"
if ((Cols == Col1 || Cols == Col2) && (Fils != Fil1 && Fils != Fil2))
//omite las esquinas
cout << (char)186; //imprime las formas verticales del recuadro
else if ((Fils==Fil1 || Fils == Fil2) && (Cols != Col1 && Cols != Col2))
//omite las esquinas
cout << (char)205; //imprime las formas horizontales del recuadro
}
}
gotoxy(Col1,Fil1); //imprime las esquinas
cout << (char)201;
gotoxy(Col1,Fil2);
cout << (char)200;
gotoxy(Col2,Fil1);
cout << (char)187;
gotoxy(Col2,Fil2);
cout << (char)188;
}[/code]


444_3edb6165424f1cc72bb160034d5f591de5ef44ec.png



446_e3d404285b300c934af66cc522b3456fe91603f2.png


Para quienes quieran aprender a programar, [url=&amp;quot;https://sourceforge.net/projects/orwelldevcpp/&amp;quot;]Dev-C++[/url] es un entorno para el lenguaje C y C++. Entre las primeras pr&aacute;cticas que normalmente tienen los estudiantes de programaci&oacute;n, est&aacute; hacer peque&ntilde;as aplicaciones en la consola de texto. Una de las rutinas m&aacute;s comunes que se pueden llegar a ocupar en este ambiente, es la de ubicar el cursor en posiciones dadas por columnas y filas. En otros entornos esto se resuelve utilizando la funci&oacute;n gotoxy, pero en Dev-C++ no est&aacute;, por tanto este c&oacute;digo de ejemplo viene a mostrar c&oacute;mo implementar por nuestra cuenta dicha funci&oacute;n. [color=#111111][size=2][font=Verdana, Arial, Helvetica, sans-serif]Para empezar vamos a necesitar incluir la siguiente l&iacute;nea al inicio de nuestro c&oacute;digo:[/font][/size][/color] [color=#111111][size=2][font=Verdana, Arial, Helvetica, sans-serif][i]#include &amp;lt;windows.h&amp;gt;[/i][/font][/size][/color] [color=#111111][size=2][font=Verdana, Arial, Helvetica, sans-serif](este ejemplo fue probado en el sistema operativo Windows), luego vamos poner el c&oacute;digo de la funci&oacute;n [i]gotoxy[/i], seguido del main donde haremos un llamado a una funci&oacute;n que pinta un recuadro, le enviaremos los par&aacute;metros de 48 columnas y 24 filas. Por &uacute;ltimo la implementaci&oacute;n de la funci&oacute;n de pintar un recuadro.[/font][/size][/color] [color=#111111][size=2][font=Verdana, Arial, Helvetica, sans-serif]Utilizaremos unos caracteres tomados de la tabla ascii para dar forma al recuadro. (Ver tabla ascii adjunta).[/font][/size][/color] [code]#include &amp;lt;iostream&amp;gt; #include &amp;lt;windows.h&amp;gt; void gotoxy(int x, int y) //implementaci&oacute;n de la funci&oacute;n gotoxy { &amp;nbsp; &amp;nbsp; COORD coord; &amp;nbsp; &amp;nbsp; coord.X = x; &amp;nbsp; &amp;nbsp; coord.Y = y; &amp;nbsp; &amp;nbsp; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } using namespace std; void recuadro(int Col1, int Col2, int Fil1, int Fil2); //declaraci&oacute;n de la funci&oacute;n recuadro int main(int argc, char** argv) { //funci&oacute;n principal de nuestro programa recuadro(0,47,0,23); //llamado de la funci&oacute;n recuadro return 0; //fin de la aplicaci&oacute;n } void recuadro(int Col1, int Col2, int Fil1, int Fil2) //implementaci&oacute;n de la funci&oacute;n recuadro { for (int Cols=Col1;Cols&amp;lt;=Col2;Cols++) //for doble para hacer el recorrido del recuadro { for (int Fils=Fil1;Fils&amp;lt;=Fil2;Fils++) { gotoxy(Cols,Fils); //llamado de la funci&oacute;n gotoxy con el par de coordendas &amp;quot;x,y&amp;quot; if ((Cols == Col1 || Cols == Col2) &amp;amp;&amp;amp; (Fils != Fil1 &amp;amp;&amp;amp; Fils != Fil2)) //omite las esquinas cout &amp;lt;&amp;lt; (char)186; //imprime las formas verticales del recuadro else if ((Fils==Fil1 || Fils == Fil2) &amp;amp;&amp;amp; (Cols != Col1 &amp;amp;&amp;amp; Cols != Col2)) //omite las esquinas cout &amp;lt;&amp;lt; (char)205; //imprime las formas horizontales del recuadro } } gotoxy(Col1,Fil1); //imprime las esquinas cout &amp;lt;&amp;lt; (char)201; gotoxy(Col1,Fil2); cout &amp;lt;&amp;lt; (char)200; gotoxy(Col2,Fil1); cout &amp;lt;&amp;lt; (char)187; gotoxy(Col2,Fil2); cout &amp;lt;&amp;lt; (char)188; }[/code]https://www.forodelpc.com/adjuntos-smf/444_3edb6165424f1cc72bb160034d5f591de5ef44ec.pnghttps://www.forodelpc.com/adjuntos-smf/446_e3d404285b300c934af66cc522b3456fe91603f2.png
26
0
0
vista previa en vivo
ingresar al menos 10 caracteres
ADVERTENCIA: Has mencionado %MENTIONS%, pero no puede(n) ver este mensaje y no serán notificados
Guardando...
Guardado
Con seleccionado deseleccionar publicaciones mostrar publicaciones seleccionadas
Todas las publicaciones de este tema serán eliminado ?
Borrador pendiente ... Clic para continuar editando
Descartar borrador