Mensajes recientes

Páginas: 1 2 [3] 4 5 ... 10
21
Cursos y manuales de cosecha propia e Internet / Programación con FreePascal
« Último mensaje por JMA_SP en Julio 22, 2014, 02:45:28 pm »
Bueno, aquí voy a añadir cosillas de programación en FreePascal, cosillas simples, al menos al principio, no soy un Gurú ni tampoco me fijo una meta, tampoco me planteeis que resuelva este o aquel problema porque no tengo tiempo, el que esté estudiando adelante, quien pudiera ;).


Bueno comencemos.....lo iré reformateando poco a poco por lo tanto esto va a ir cambiando de continuo sobre la marcha:

Primero de todo bien venidos, el lenguaje pascal fué mi tercer lenguaje de programación después de basic y c, hace ya mucho tiempo, curiosamente no se porque después de aprencer C me gustó la forma de programar en Pascal y es una afición que he mantenido hasta hoy en día. Mi primer compilador fue el Turbo Pascal que cuando lo compré creo recordar que tenía 3 disquetes de 1.44 MB pero mereció la pena.

Hoy día nos encontramos con bastantes opciones, Turbo Pascal el que lo tenga, o bien en el que nos centramos FreePascal.

La página web principal del proyecto se encuentra en http://www.freepascal.org/ o si se prefiere directamente a un sitio de descarga http://sourceforge.net/projects/freepascal/?source=directory donde podéis encontrar tanto su código fuente como los binarios compilados para las diferentes plataformas en las que funciona. En mi caso me centro en i386 y DOS, por ejemplo FreeDos (lo podeis descargar libremente desde www.freedos.org).


Mientras tanto para que veais la estructura más simple del aspecto que tiene el código pongo el famoso HOLA MUNDO.....



Código: [Seleccionar]
Program holamundo;

uses crt;

begin
   Write ('Hola Mundo');
end.

Esto simplemente nos muestra por pantalla una línea de texto que pone Hola Mundo

No es mucho pero es un programa, tal cual suena.

Inconvenientes:

 - No borra el contenido de la pantalla.
-  Tan pronto como muestra el texto se cierra porque el programa finaliza, es lo que tiene poner el end. y nos retorna al IDE. Si ejecutásemos desde el DOS el programa ya compilado si que veríamos los impreso al finalizar.
   no tiene to be continued...... pero eso lo añadimos a continuación

Primero comentar cada línea que e lo que hace:

Código: [Seleccionar]
01   Program holamundo;
02
03 uses crt;
04 begin
05     Write ('Hola Mundo');
06 end.

La línea 01  con Program holamundo  nos pemite comenzar la estructura del programa y ponerle nombre.

   En este caso el nombre del programa es holamundo que no tiene porque coincidir con el nombre del fichero
de código fuente en el que guardamos todas las sentencias que contienen las instrucciones para que nuestro programa haga algo. Si ajustamos el nombre del programa a 8 caracteres fácilmente lo podemos
guardar en un fichero de también 8 caracteres con el mismo nombre, bajo sistemas operativos avanzados el número de caracteres puede ser mayor que 8 y por tanto es más fácil hacer coincidir el nombre del fichero con el nombre del programa.

   Lo que escribimos no es CASE SENSITIVE en el sentido de que le da igual mayúsculas que minúsculas, el formato que escojamos es el que más cómodo nos resulte pero conviene mantenerlo para que el estilo sea el mismo, yo suelo poner en mayúsculas las partes más significantes de cada instrucción y frecuentemente utilizo el guión bajo, como WriteLn o Color_Arbol, pero otros estilos podrían ser ColorArbol o Writeln o simplemente writeln, eso según gustos.

   Debemos finalizar con un punto y coma; así le indicamos ahí va eso, aunque ya veremos más adelante que no en todos los casos va a ser obligatorio poner el ; de hecho en determinados casos para que haga la función tal como deseamos no se pondrá pero prácticamente siempre si.

La siguiente línea no tiene nada es la 02 y el compilador simplemente la salta.

Código: [Seleccionar]
03 uses crt;
   Bueno uses es una claúsula que utilizaremos para añadir al programa módulos que darán funcionalidad a nuestros programas, unos ya nos vendrán de serie con FreePascal y los utilizaremos según los necesitemos (si no los necesitamos no los ponemos así no cargan la memoria).
Veremos más adelante como podemos crear módulos que no vienen de serie o bien utilizar otros desarrollados por terceros. Ahí profundizaremos en lo que es una unit o unidad  que contendrán funciones, procedimientos, variables..........

   Estas unit nos permitirán crear módulos de programa que podremos reutilizar sin tener que reescribirlos cada vez que los necesitemos, los tendremos listos para usar.
   
   Podemos escribir tanto:

Código: [Seleccionar]
   uses crt;
   como

Código: [Seleccionar]
   uses
         crt;

   El compilador sabe manejarlo igualmente bien.

   Si tuviesemos más módulos de este estilo se pondría así:
Código: [Seleccionar]
   uses crt, dos, graph;
Luego nuestra estructura del programa donde vamos a escribir instrucciones se delimitan con un begin (comienzo) y un end (final).

Es una estructura elemental a un begin le corresponde su end, en el principal tendremos un begin ..... end. donde el end. seguido del punto final (end program), en las estructuras internas en cambio el end; va seguido del punto y coma.

Fianlmente el write imprime con esa sintaxis que veis el Hola Mundo en la pantalla, en la línea y posición activa de una pantalla de texto:

Código: [Seleccionar]
05     Write ('Hola Mundo');
Bueno pues eso, es una pantalla de texto mondo y lirondo y nos vamos a quedar con que horizontalmente soporta 80 caracteres y verticalmente 25 líneas para establecer algo conocido.

No es la única posible en modo texto, podéis buscar mas pantallas modo texto pero ya veremos un poco de esto cuando juguemos a cambiar a otros modos, corresponde a algo para más adelante.

   Dicho esto ahora queremos que al menos se nos quede algo que podamos leer en la pantalla, más útil (siempre que nos finaliza el programa podemos pulsar ALT+F5 y nos mostrará lo último que salió impreso al finalizar el programa y retornar al IDE (Entorno de desarrolo Integrado).


   Visto lo anterior que es a fin de cuentas ya un programa por simple que sea es preciso hacer una introducción a lo que es un IDE y su descripción por encima. El IDE que significa Entorno de Desarrollo Integrado y que es el envoltorio que nos va a permitir programar con comodidad tanto si se trabaja en modo texto puro como si el IDE se arranca desde un entorno gráfico de ventanas.

   El IDE que viene con FreePascal realiza un resaltado de texto a color que ayuda a identificar mejor las secciones del programa, cosa que junto a la indentación nos facilitará movernos por el código sobre todo cuando el número de líneas sobrepasa por ejemplo el centenar.

   Si accedeis al menú del IDE en Help -> About os muestra detalles del mismo como:

    - Tipo de procesador al que va encaminado: en este caso i386
    - Versión: actualmente utilizo la 1.0.12 (del IDE) 2014/03/06
    - Versión del compilador: 2.6.4
    - Versión del Debugger (abreviado GDB o depurador del código).
    - Copy Rights lógicamente de los desarrolladores.
   

   Existen programas para entornos gráficos como es notepad++ que presenta la información de una manera agradable y en un momento dado también nos puede venir bien tenerlo a mano para repasar el código.

   También decir que desde el IDE de Lazarus podemos crear código en FreePascal con comodidad pero es mejor empezar por el modo texto, ya en otra entrada iremos viendo Lazarus que tiene componentes visuales gráficos pero lo dicho poco a poco.


   Otro IDE interesante que permite generar programas tanto en modo texto como en ventanas se llama dev-pascal y lo podéis encotrar en el siguiente enlace:

   http://www.bloodshed.net/devpascal.html
22
Off-topic / Re:2 Sistemas operativos
« Último mensaje por nachoCOB en Abril 30, 2014, 07:56:54 pm »
El secureboot sorry y el grub no me aparece probé instalar el linux primero y luego el windows pero en la instalación de windows no me dejaba instalar en el otro disco duro que estaba vacio
23
Foro general: Programación / Re:numeros aleatorios en assembler
« Último mensaje por HQH en Abril 30, 2014, 12:00:08 pm »
Intenta sacar la hora actual y a partir generar algo de código.

Aqui un ejemplo de codigo visto en stackoverflow http://stackoverflow.com/questions/17855817/generating-a-random-number-within-range-of-0-9-in-x86-8086-assembly

RANDGEN:         ; generate a rand no using the system time
RANDSTART:
   MOV AH, 00h  ; interrupts to get system time       
   INT 1AH      ; CX:DX now hold number of clock ticks since midnight     

   mov  ax, dx
   xor  dx, dx
   mov  cx, 10   
   div  cx       ; here dx contains the remainder of the division - from 0 to 9

   add  dl, '0'  ; to ascii from '0' to '9'
   mov ah, 2h   ; call interrupt to display a value in DL
   int 21h   
RET   
24
Off-topic / Re:2 Sistemas operativos
« Último mensaje por HQH en Abril 30, 2014, 11:58:11 am »
¿Has desactivado secureboot? ¿Aparece Windows 8 en el GRUB?
25
Off-topic / 2 Sistemas operativos
« Último mensaje por nachoCOB en Abril 23, 2014, 11:00:34 am »
Hola quiero instalarme Ubuntu 14.04 en un disco duro interno y tener en otro disco duro interno un Windows 8 mi placa es de BIOS y tengo el problema que cuando instalo el Ubuntu ya no puedo iniciar el Windows 8

Un saludo y gracias
26
Foro general: Programación / Re:numeros aleatorios en assembler
« Último mensaje por jaspi en Abril 22, 2014, 04:56:27 pm »
Hola, me puedes enviar el programa para crear numeros aleatorios, estoy tratando.
de crear
Estoy creando un programita que me cree de forma aleatoria 4 barcos de dos casillas de longitud sobre un tablero de dimensiones 8x8
no se como empezar ya que segun algunas instrucciones para crearlo
1. los barcos no podran solaparse
2. los barcos no pueden estar unidos
3. los barcos solo podran disponerse en horizontal o vertical
alguien me puede ayudar es en ensamblador 8086
27
Off-topic / Re:Busco a un usuario que puede que tenga un código de un videojuego
« Último mensaje por PacoPGD en Abril 08, 2014, 02:24:05 pm »
El que comentó que lo subiría por aquí puso el mensaje el 27 de septiembre de 2009, puff, que ruina.
28
C / C++ / Re:Entornos con compiladores C/C++ Gratuitos
« Último mensaje por svoboda en Abril 06, 2014, 07:48:17 am »
Sí, exacto, esa es. Además, tiene la ventaja de que se utiliza bastante en el mundo empresarial (las versiones completas), con lo cual está bien para aprender o, al menos, para conocerla. Si no recuerdo mal, las versiones express no tenían funcionalidad reducida, sino que la licencia solo te permite hacer aplicaciones más pequeñas en cuando a BBDD y cosas así, más que de sobra para alguien que no realiza aplicaciones en entornos empresariales enormes.
29
Off-topic / Re:Busco a un usuario que puede que tenga un código de un videojuego
« Último mensaje por HQH en Abril 04, 2014, 08:33:28 pm »
No recuerdo haberlo descargado. Espero tengas suerte en tu búsqueda.
30
C / C++ / Re:Entornos con compiladores C/C++ Gratuitos
« Último mensaje por HQH en Abril 04, 2014, 08:33:08 pm »
Creo que es este el entorno que dices, ¿No, svoboda?

http://www.visualstudio.com/en-US/products/visual-studio-express-vs
Páginas: 1 2 [3] 4 5 ... 10