por ovh el Jue Jul 03, 2008 9:13 pm
Hola eljuank!
Entiendo que tu pregunta la formulaste el año pasado, no obstante, espero que todavía permanezca vigente tu inquietud.
La respuesta a tu pregunta es una sola: "Depende".
Depende de cual sea el lenguaje, del alcance funcional de su implementación e instrumentación, y de su compilador.
Como tu ya elegiste el Lenguaje de Programación Pascal, entonces no queda otra que confirmar tu acertada elección.
Prácticamente, Pascal es un Lenguaje que ofrece toda posibilidad técnica para el diseño e implementación de funciones y aplicaciones de alto nivel, a partir de reglas sintácticas y gramaticales sumamente amigables, pero además, con la posibilidad de interactuar directamente con el CPU, a través de sus registros, operaciones de bajo nivel y el manejo de las interrupciones.
Obviamente, todo esto lo hace posible su Turbo-Implementación.
Por su naturaleza, Pascal por excelencia, el Lenguaje
Ahora bien, juank, los límites en el aprendizaje de un Lenguaje de Programación como Pascal no lo establece el conocimiento exhaustivo de la sintaxis, las formas y estructuras gramaticales, las estructuras de datos básicas y las avanzadas fundamentales como lo son las estructuras de datos dinámicas (listas enlazadas), además de los Tipos de Dato Abstracto (TDA) que puedas construir haciendo uso de todo lo anterior, y lo más importante, la forma en que logras ver y entender el Universo, siendo esta última la única restricción y obstáculo, para comprender las posibilidades.
La Programación es un ARTE y los verdaderos programadores, los Programadores Estrella, una Élite.
Por último juank, la pregunta que te tienes que hacer es:
¿Como saber si has alcanzado o te aproximas a un nivel de Programador Estrella, especialista en el Lenguaje de Programación Pascal?
Bueno juank, tienes que programar aplicaciones en Turbo Pascal 7 (MS-DOS), que ofrezcan interfaces para el usuario amigables, iconográficas, que emulen un ambiente Windows o Macintosh, programado por ti mismo.
Por ejemplo, el siguiente procedimiento detecta si ocurre un doble-click, devolviendo en las variables X y Y, la posición en la pantalla donde ocurrió.
Procedure C-M-D (var x,y:integer);
var doble:boolean;
begin
ShowMouse;
doble:=false;
repeat
GetMouseEvent(Evento); {Variable global de Tipo TEvent)
if evento.what = evMouseUp then
if evento.double then
begin
doble:=evento.double;
regs.ax:= 3;
Intr($33,regs); { Call DOS }
x:= regs.cx;
y:= regs.dx;
end;
until doble;
HideMouse;
end;
El siguiente procedimiento dibuja un botón 3D, en las coordenadas x1, y1, x2, y2. Luego, escribe encima del botón el string
de caracteres contenido en el parámetro "texto" el cual se pasa por valor. El string también se visualiza en la pantalla en 3D.
procedure boton(x1,y1,x2,y2,color:integer;texto:string);
begin
setfillstyle(1,color);
bar(x1,y1,x2,y2);
setcolor(color+8);
line(x1,y1,x2,y1);
line(x1,y1+1,x2,y1+1);
line(x1,y2,x1,y1);
line(x1+1,y2,x1+1,y1);
setcolor(0);
line(x2,y1+1,x2,y2);
line(x2,y2,x1+1,y2);
setcolor(color+8);
outtextxy(x1+7,y1+2,texto);
outtextxy(x1+8,y1+1,texto);
setcolor(0);
outtextxy(x1+9,y1+2,texto);
outtextxy(x1+8,y1+3,texto);
setcolor(color);
outtextxy(x1+8,y1+2,texto);
end;
Por último, ejecutando el programa bajo DOS, el siguiente procedimiento dibuja una ventana al estilo Macintosh en las coordenadas x1, y1, x2, y2.
procedure VentanaMac(x1,y1,x2,y2:integer);
begin
{Tope Ventana}
settextstyle(defaultfont,horizdir,1);
setfillstyle(1,15);
bar(x1,y1,x2,y1+16);
{Bordes Tope Ventana}
setcolor(0);
line(x1,y1,x2,y1);
line(x2,y1,x2,y1+16);
line(x2,y1+16,x1,y1+16);
line(x1,y1+16,x1,y1);
setcolor(7);
line(x1+1,y1+1,x2-1,y1+1);
line(x2-1,y1+1,x2-1,y1+15);
line(x2-1,y1+15,x1+1,y1+15);
line(x1+1,y1+15,x1+1,y1+1);
{Lineas Grises Tope Ventana}
line(x1+1,y1+4,x2-1,y1+4);
line(x1+1,y1+6,x2-1,y1+6);
line(x1+1,y1+8,x2-1,y1+8);
line(x1+1,y1+10,x2-1,y1+10);
line(x1+1,y1+12,x2-1,y1+12);
{Boton Cierre de Ventana}
bar(x1+5,y1+4,x1+15,y1+12);
setcolor(0);
line(x1+6,y1+4,x1+14,y1+4);
line(x1+14,y1+4,x1+14,y1+12);
line(x1+14,y1+12,x1+6,y1+12);
line(x1+6,y1+12,x1+6,y1+4);
{Cuerpo Ventana}
setfillstyle(1,15);
bar(x1,y1+16,x2,y2);
setcolor(0);
line(x1,y1+16,x2,y1+16);
line(x2,y1+16,x2,y2);
line(x2,y2,x1,y2);
line(x1,y2,x1,y1+16);
line(x1,y1+26,x2,y1+26);
line(x1,y1+28,x2,y1+28);
{ScrollBar Ventana}
setcolor(0);
line(x2-14,y1+28,x2-14,y2);
line(x1,y2-14,x2,y2-14);
{Sombra Ventana}
line(x1+2,y2+1,x2+1,y2+1);
line(x2+1,y2+1,x2+1,y1+2);
settextstyle(smallfont,horizdir,4);
end;
Ojalá leas la respuesta y no te detengas.
Saludos Cordiales juank.
Oscar.