[ Foro de Pascal ]

gotoxy

30-Apr-2014 16:06
Invitado (rociolizcano)
7 Respuestas

hola  todos en el foro soy nueva, y me gusto ver este foro pues revizando hay muchisimos ejercicios de compañeros propuestos y resueltos y eso me parece muy bueno, pues muchas veces aprender por nosotros mismos es la clave pero no esta de mas ver otras posibilidades de soluciones.

en mi caso por ahora quiero saber por que leyendo de un manual de pascal , encontre que en modo texto para turbo pascal se manejan 80 columnas y 25 filas, me imagino que dependera del tipo de monitor y resolucion que cada usuario pueda tener? pues en mi caso si pongo gotoxy(1,35) ; el texto en cuestion si me permite mas de 25 filas( es decir me visualiza mi texto en la linea 35 de mi monitor, si estoy en lo correcto agradeceria me indicaran si existe una forma a traves de codigo que me permita automaticamente saber para mi monitor exactamente los valores que serian el centro tanto horizontal como vertical, o si toca solo a prueba y error? gracias y espero estar constante en este foro pues entro a ver dos temas que segun el profesor nos dice siempre se nos dificultan a quienes iniciamos en este tema de programar y son los refrentes a graficos en pascal y  listas enlazadas, dobleenlazadas, circulares, arboles .

gracias y hasta pronto, saludes al profesor nacho o luis la verdad no se quien es el profesor por que veo respuestas de ambos y son programas estupendos en redaccion y estructura de codigo y de explicaciones asi que mis disculpas pero de igual manera saludos al profesor y por la oportunidad.


30-Apr-2014 16:27
Nacho Cabanes (+83)

Ten en cuenta que Turbo Pascal es un producto desarrollado inicialmente para MsDOS (y otros sistemas operativos, como CP/M), con un modo texto estándar de 80 columnas x 25 filas (que ocupaba toda la pantalla, claro).

Eso no quita que, según los PC fueron mejorando e incorporando tarjetas gráficas más avanzadas, se permitía utilizar más puntos, de menor tamaño, y por ello, letras más pequeñas y, a su vez, mayor cantidad de letras en pantalla.

Por ejemplo, en un PC estándar con tarjeta EGA se podía usar un modo de 80x43, y con una tarjeta VGA (las más extendidas) se podía usar uno de 80x50. Además, algunas tarjetas gráficas más avanzadas permitían modos de (por ejemplo) 132x50 caracteres, aunque era habitual que esos modos avanzados no se pudieran utilizar desde Turbo Pascal ni desde otras muchas aplicaciones de la época (WordPerfect, DBase, Lotus 1-2-3, etc) si no tenías drivers adecuados para ese programa concreto.

En un equipo PC no muy antiguo, podrías suponer que tiene tarjeta VGA o superior y usar la orden "TextMode(Font8x8);" para tener 50 líneas (con letras más achatadas).


30-Apr-2014 17:46
Invitado (rociolizcano)

gracias nacho !!!

eso indica que podria usar el gotoxy(1,TextMode(Font8x8));
me aseguraria 50 filas en cualquier monitor actual? es lo que te entendi ojala este en lo correcto , sino gracias por cualquier otra aclaracion adicional.


30-Apr-2014 17:56
Nacho Cabanes (+83)

Cuidado!

Por una parte, MsDos no es actual desde hace más de 20 años. Imagino que trabajarás en una "ventana de consola" si usas un Windows de 32 bits, o bien con un emulador como DosBox si usas un Windows de 64 bits o un Linux. O incluso que no usarás Turbo Pascal, sino Free Pascal, que sí es multiplataforma.

Por otra parte, una cosa es la orden TextMode y otra es la GotoXY:


TextMode(Font8x8);
gotoxy(70,48);



02-May-2014 20:58
Invitado (rociolizcano)

hola nacho buen dia y gracias por atenderme.
queria solicitarte ayuda respecto a una parte de un ejercicio que no se como hacer, cualquier ayuda se que me sera util
tengo dos palabras separadas por el caracter - quiero saber como hacer para obtener el caracter anterior que esta tras de dicho - y el caracter siguiente que esta despues de dicho guion.
rocio-lizcano
quiero obtener:
o
l

la o como ves esta antes y la li despues del guion.

se que puedo recorrer el string con un for caracter por caracter y preguntar cuando llegue al caracter guion, pero ahi me bloqueo como usando ese for y en dicha posicion obtener el caracter anterior y el siguiente a el???? disculpa si quiza es muy trivial pero apenas inicio y nuestro profesor pone ejercicios asi como este.


02-May-2014 23:38
Luis Torres (+18)

Tienes otra alternativa, la cual es utilizar la función pos(subcad,cad). Esta función devuelve la posición en la que se encuentra la subcadena 'subcad' dentro de la cadena 'cad'. Una vez obtenida esta posición, puedes usar la notación de arreglos aplicada a la cadena (cad[indice]) para acceder a las posiciones anterior y siguiente a la indiciada. En código sería así:


program subcadenaEnCadena;
var
  cad: string;
  posicion: byte;
BEGIN
  cad:= 'rocio-lizcano';
  posicion:= pos('-',cad);
  writeln(cad[posicion-1]);
  writeln(cad[posicion+1]);
  readln;
END.

03-May-2014 11:04
Invitado (rociolizcano)

hola profesor luis, gracias por tu magnifico codigo y explicacion, si que en clase recuerdo haber visto esta funcion pos , pero no la entendia bien quiza por haber sido explicativa mas no aplicada a un ejemplo como me lo explicas tu, sin embargo queria preguntarte y si quiero trabajar con esos dos caracteres como puedo hacerlo pues con pos segun me lo explicas y entiendo tengo esa posicion pero como hago para trabajar ya con esos dos caracteres posteriormente.
gracias muchas gracias por cualquier ayuda.


03-May-2014 16:14
Luis Torres (+18)

No soy profesor.No entiendo lo que quieres decir con trabajar con esos dos caracteres. Ya los tienes identificados en las variables:
cad[posicion-1] y cad[posición+1], en estas dos variables están almacenados los caracteres anterior y posterior a '-', respectivamente.
Saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)