jueves, 9 de abril de 2015

Programación Hola Mundo

Hola Mundo

La ventana principal de Lazarus

Una vez instalado Lazarus y Free Pascal, escribir nuestra primera aplicación es coser y cantar.
Lo primero que sorprende es la cantidad de ventanas que aparecen. Cada ventana tiene una función muy útil, y hay incluso más ventanas que pueden aparecer o desaparecer, pulsando el menú Ver. Por supuesto, si te estorban, puedes cerrarlas; solo la ventana principal donde está el menú es necesaria, las demás se pueden abrir y cerrar libremente.
Recomiendo echar un vistazo general a la aplicación, y configurarla a gusto de cada uno. En el menú "Entorno" se encuentran tanto las opciones generales como las del editor. Como puede comprobarse en la foto, he puesto colores personalizados, pues me gusta el color azul retro del antiguo Turbo Pascal para el código.
La ventana donde pasarás la mayor parte del tiempo, es, por supuesto, la del código. Hay otra muy importante debajo, la de mensajes, que informa de todos los errores que pueda encontrar el compilador. Las otras ventanas que se ven en la foto son el editor de interfaces y la lista de propiedades de los controles. Hablaremos más sobre esto en futuras lecciones, pero por el momento, puede ser divertido experimentar un rato.

La primera aplicación

Tras el primer "shock" inicial, te enseñaré a escribir tu primera aplicación en pascal:
En el menú Proyecto, selecciona Nuevo Proyecto, y la opción de proyecto personalizado. Con esto crearemos el programa más sencillo posible, a ejecutar desde la consola.
Efectivamente, como se trata de un programa de consola, y te encuentras en un editor gráfico, debes indicar a Lazarus que quieres que se ejecute un terminal cuando sea compilado. Por lo tanto, antes de nada, ve al menú Ejecutar, y en Parámetros de ejecución selecciona la opción "Usar al lanzar la aplicación". En la entrada justo debajo verás que sale la orden xterm en Linux, y el intérprete de comandos en Windows; eso es lo que pretendemos.
Sin más dilación, te explico que significa el código que ves, que será algo parecido a esto:

program Project1;
 
{$mode objfpc}{$H+}
 
uses
  Classes, SysUtils
  { you can add units after this };
 
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
 
begin
end.
De momento, no tienes que comprender todo lo que pone. Aprenderás más adelante que significa. Como nuestro programa es muy básico, hay cosas que nos sobran. Borra todo lo que sobre hasta que se quede así:
program Project1;
 
begin
end.

Esto es todo lo que se necesita para que un programa hecho en Pascal funcione. Por supuesto, esto no hace nada. Es lo más básico de todo.
Lo que significa es lo siguiente:
program Project1;

Indica al compilador que este fichero se trata de un programa, y que se llama Project1. El punto y coma del final es siempre necesario excepto para algunos casos; significa que detrás de ello van otras instrucciones.
begin
end.

Significa que ejecute todo lo que hay entre begin end.. Evidentemente, no hay nada, por eso no ejecuta nada. Pon algo interesante en medio:
program Project1;
 
begin
          writeln('¡Hola mundo!');
end.

A continuación, salva el proyecto. Preguntará el nombre del fichero, ponle el nombre leccion1.lpi, guardándolo en un directorio que te convenga.
Te habrás dado cuenta, que, tras salvarlo, el nombre del programa ha cambiado automáticamente:
program leccion1;
 
begin
          writeln('¡Hola mundo!');
end.
Efecticamente, ahora es leccion1. Correcto.
Finalmente, pulsa Ejecutar (en el menú ejecutar), o F9. Saldrá una ventana con un contenido similar a este:
/home/javi/program/pascal/lecciones/leccion1
¡Hola mundo!
--------------------------------------------------
Press enter
Lo que nos interesa aquí es, por supuesto, el ¡Hola mundo! que se ve en medio...

¿Porqué ha sucedido esto? No hay que ser muy listo para ver que ello tiene que ver con esto:
          writeln('¡Hola mundo!');

Lo que significa es: escribe una nueva línea con el contenido '¡Hola mundo!' en la consola. writeln no es más que una entre las miles de funciones que hay disponible en Pascal. Programar consiste en llamar a funciones que ya están hechas, o hacer unas propias si no están disponibles. En este caso, writeln es la función que se encarga de escribir datos en la consola.

Distribuir tu aplicación

Parece sorprendente, pero tu aplicación ya está lista para ser empaquetada y mandada a los amigos. Si vas al directorio del proyecto, te encontrarás con el archivo leccion1.exeen Windows o simplemente leccion1 en Linux y OS X. Este es un ejecutable con todo lo necesario para ejecutarse en otras máquinas.
Tanto en Windows como en Linux puedes ejecutar la aplicación en la consola como de costumbre:
cd directorio_donde_esta
./leccion1   => si es en linux y OS X
leccion1     => si es windows
Por supuesto, es un programa tan tonto que difícilmente encontrarás a alguien interesado... pero es una buena forma de demostrar lo simple que es crear aplicaciones con Lazarus/FreePascal. Compara esto con los archivos Java y el lío de configuración de los jar, make, los headers de C y C++, etc. Es más, en las próximas lecciones veremos que más cosas buenas tiene Pascal que ofrecer en este aspecto.
Incluso para más adelante, cuando las aplicaciones sean gráficas, es igual de fácil compilarlas y empaquetarlas.
Free Pascal enlaza las aplicaciones estáticamente, por defecto. Esto significa que todo lo necesario (excepto por supuesto las librerías del sistema) está contenido en el ejecutable. No más follón con dependencias.

Finalmente, una aplicación creada en Windows es recompilable, generalmente sin cambios, en Linux y OS X. Eso significa que, generalmente, solo hay que hacer el esfuerzo de programar en una plataforma y chequear que funciona en las otras, ¡así de simple! Y si lo precisas, puedes hacer pequeños ajustes para cada plataforma.

Hardware y Sistema Operativo

Cómo funciona el hardware


Entendemos por hardware los distintos componentes que forman la computadora, físicamente.
Ya hemos dicho que hay un procesador y un bus. El bus comunica a la memoria y a los dispositivos con el procesador. Este bus se encuentra en lo que en términos vulgares llamamos "placa base" o "placa madre". La memoria RAM almacena datos temporalmente, que se pierden cuando se desconecta. Y luego hay otra serie de dispositivos, los más comunes son el disco duro (que almacena datos permanentemente o hasta que sean borrados), los USB, teclados, pantallas, y por supuesto, la tarjeta gráfica, que en los últimos años se ha convertido en un computador en si mismo debido a su complejidad (lleva GPU que es un tipo de procesador especializado en gráficos, y memoria para ella sola).
Con la tecnología actual, el hardware no funciona sin un "cerebro" central, que es el procesador. El procesador es en si mismo otra máquina extremadamente compleja (tiene cientos de miles de millones de transistores en un espacio de micras), compuesta por muchas partes. Cada parte realiza una función. Así, por ejemplo, hay una parte con transistores que realizan operaciones matemáticas, otra parte que hace operaciones en memoria, otra que manda instrucciones a los dispositivos, etc.
Ya hemos dicho que los transistores son pequeños dispositivos que solo entienden de unos y ceros. Hay muchos tipos de agrupaciones de transistores, por ejemplo AND, NAND, OR, XOR. A su vez, la combinación de estos grupos producen operaciones complejas. Solo para realizar la suma de dos datos de 32 bits se necesitan cientos de transistores, que a su vez precisan de registros, otras instrucciones para manejar esos registros, etc. Explicar como funciona un procesador está fuera del alcance de este libro, pero el futuro programador tiene que tener nociones básicas de lo que es un ordenador, o de lo contrario se sentirá perdido cuando se manejen temas complejos.
Sin un reloj que regulase la cantidad de operaciones que pueden realizar estos transistores, sucedería que se calentaran tanto que reventarían. Además, habría problemas de sincronismo (unos transistores se adelantarían a otros sin que debieran, produciendo que el procesador se colgara inmediatamente).
A medida que avanza la técnica, se consiguen hacer transistores con menor gasto (se calientan menos), más pequeños (caben más), y más rápidos. Así, un ordenador de 4 Mhz de hace 20 años, podía hacer (en teoría) cuatro millones de instrucciones por segundo. Hoy en día, con 3 Ghz puede hacerse tres mil millones. En la práctica pueden ser más o menos, dependiendo de si tiene varios núcleos (core), la velocidad del bus, la memoria, etc. Generalmente suele ser bastante menos.

 

El sistema operativo

El sistema operativo es el programa principal. Se encarga de manejar a la "bestia". Se carga después de cargar el otro programa principal, la BIOS, y su función es ofrecer al resto de los programas una base segura y práctica donde trabajar.
Ya sabrás que hay varios sistemas operativos: Linux, Apple OS X, Windows, etc. Además de estos conocidos, toda máquina que lleve un sistema más o menos complejo, lleva también un sistema operativo. Eso significa que incluso el router de tu conexión a internet, o el firmware de tu DVD, son, de una forma u otra, sistemas operativos.
La importancia de conocer el sistema operativo para el que se va a programar es vital. Hay grandes diferencias entre unos sistemas u otros. Para programar, se usan lasLibrerías (en Windows las llaman DLLs), que llevan ya código escrito por otras personas que facilitarán enormemente el trabajo del programador de aplicaciones.

Afortunadamente para los usuarios de Free Pascal y Lazarus, pasar un programa de un sistema a otro suele ser casi trivial, debido a que los creadores de estos programas han puesto especial esfuerzo en ocultar las diferencias. Si no fuera así, sería un gran engorro, como de hecho sucede con muchas aplicaciones realizadas en C o C++

Tamaño del Bus y de la Memoria

Tamaño del bus

El siguiente concepto importante en informática es el número de bits de la computadora. Por ejemplo, habrás oido decir que "este ordenador es de 32 bits", o si es más moderno dirán "es de 64 bits". También es común oirlo en otros electrodomésticos, como videoconsolas, o incluso reproductores de DVD, ordenadores de abordo de los coches y cosas similares.

El bus son los cables por donde viaja la información internamente. Imagina que son una especie de raíles (rieles) electrónicos por donde circula la electricidad. Un ordenador de 32bits tendrá 32 raíles paralelos. Eso quiere decir que el ordenador es capaz de trabajar con 32 bits simultaneamente. Si necesita más bits, necesitará pedir otros 32, y luego otros 32, y así indefinidamente. Decimos, entonces, que es de 32 bits porque trabaja en bloques de 32 bits.
Es fácil imaginar que, de cuantos más bits se trate, más grandes serán los números que pueda manejar. Para entender esto, observa la siguiente tabla:
Bits
Número máximo en decimal
1
2
2
4
4
16
8
256
16
65536
32
4294967296
64
18446744073709551616
Como ves, con 64 bits se puede representar un número realmente inmenso. ¡Imagina con 128 bits!

Además, la mayoría de los procesadores permiten segmentar el bus. Es decir, si es de 32 bits, se puede dividir en dos de 16bits, y estos de 16 bits, en otros de 8 bits. Normalmente hay un límite. En los actuales PCs, el tamaño mínimo de dato es 8 bits. Además, existe otra limitación, y es que aunque esté dividido, la computadora tiene que trabajar con direcciones de memoria siempre de su tamaño máximo (aprenderás que es esto en la lección dedicada a los punteros), por lo que al final lo que se pueda ganar en velocidad, se pierde en cantidad de memoria desperdiciada.


Capacidad de memoria

La capacidad de memoria es archiconocida. Cuando vamos a comprar un ordenador, manejamos datos que ya nos resultan de uso común. Si tienes interés por aprender a programar, seguro que ya sabes que significa:
1 Terabyte = 1024 Gigabyte.
1 Gigabyte = 1024 Megabytes.
1 Megabyte = 1024 Kilobytes.
1 Kilobyte = 1024 bytes.
1 byte = 8 bits.

Los discos duros, la memoria, etc, se mide en bytes o sus unidades superiores.
De la misma manera, existen Gigabits, Megabits, Kilobits, etc. Se refieren a bits a secas. Se utilizan para medir la transferencia de datos. Por ejemplo, una ADSL de 1Mbit tiene una capacidad de transmisión máxima de 128Kbytes (en la práctica menos debido a la redundancia de protocolos). De ahí que nuestros navegadores web, cuando descargan datos, parezcan en principio que marcan datos que no son los que hemos contratado. A las compañías de telecomunicaciones les viene muy bien esta convección, pues al usuario que no entiende le da la impresión de ser más veloz de lo que realmente es...
Y todo esto se abrevia, por ejemplo, Kb es kilobits, pero KB (con la B mayúscula) son kilobytes... como ves, un pequeño follón que complica aún más la forma de medir. Pero necesitas saber todo esto si quieres ser programador.


Nociones y modo de medir su capacidad

Nociones generales

Programación en Pascal
Quienquiera que quiera o necesite aprender a programar, necesita saber el funcionamiento básico, a bajo nivel, de una computadora.
Difícilmente puede aprenderse a programar, por ejemplo, si no se sabe que es un bit, como se organiza la memoria del ordenador, o cual es el cometido del procesador, el bus, la tarjeta gráfica.

Como  medir su  capacidad 
De la misma manera que la masa se mide en gramos, y el volumen en litros, la lógica y la información se mide en bits.
En español, a la ingeniería que trata del procesamiento de la información se le llama informática. Siendo estrictos, no es necesario usar un ordenador para hacer informática, pero es prácticamente el único medio usable moderno que se tiene para hacerlo, por lo que, en la práctica, la asociación informática / ordenadores es indisoluble.
La capacidad de un ordenador, y de su memoria, se mide también en bits. Un bit en un ordenador, al igual que en la lógica y la filosofía, mide una sola cosa: si es cierto o falso. Dicho de otro modo, si está lleno o vacio. Si es cero o uno.
Al uso de ceros y unos exclusivamente para representar la información, se le llama sistema binario.

Como es posible que solo con unos y ceros el sistema pueda funcionar

Es una gran pregunta que se hacen todos los que quieren aprender informática. La explicación no es tan complicada.
Observa, por ejemplo, como contamos nosotros. Medimos casi todo en números. Si algo no es un número, se puede transformar y buscar su equivalente en número.
Nuestro sistema humano es decimal. Coincide con el número de dedos que tenemos en las manos y los pies. Puedes imaginar que es decimal porque el hombre primitivo observaba sus dedos, y asociaba lo que veía contando dedos.
¿Y qué sucede cuando se acaban los dedos? Que hay que empezar de nuevo, recordando en la mente que ya han transcurrido 10. Así, por ejemplo, el 11 son todos los dedos de las manos más uno mas, el 100 son todos los dedos repetidos 10 veces, etc.
Esta capacidad de contar, que parece tan simple, es lo que ha traído la tecnología al ser humano. Sin ello, seguiríamos en la edad de piedra.
El ordenador, sin embargo, no puede tener 10 dedos. Está hecho con transistores. Los transistores son pequeños circuitos que solo entienden dos cosas: que pase la corriente, o que no pase. Por lo tanto, el ordenador solo tiene dos dedos.
Entonces, empezamos a contar... 0, 1, ops! no hay más. Entonces, el siguiente tendrá que ser... 10. Si, 10. Hemos llegado al final de los dedos y tenemos que empezar a recordar el siguiente acarreo. Entonces, el equivalene a nuestro sistema puede ser así:
Decimal
Binario
0
0
1
1
2
10
3
11
4
100
5
101
6
110
7
111
8
1000
Y así podemos seguir contando hasta que nos aburramos. Como ves, con solo ceros y unos, es posible representar cualquier número.

Que es pascal y sus Características

https://www.blogger.com/blogger.g?blogID=4263937428688892405#editor/target=post;postID=3107664017311869765
http://programacionenpascal1.blogspot.com/2015/04/nocionesgenerales-programacion-en.html
¿Qué es Pascal?

Pascal
Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo.

Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipado. Esto implica que:
1.   El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica.
2.   El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado.
El nombre de Pascal fue escogido en honor al matemático francés Blaise Pascal.

Características únicas

Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su definición; la asignación a variables de valores de tipo incompatible no están autorizadas (en C, en cambio, el compilador hace el mejor esfuerzo para dar una interpretación a casi todo tipo de asignaciones). Esto previene errores comunes donde variables son usadas incorrectamente porque el tipo es desconocido; y también evita la necesidad de notación húngara, que vienen a ser prefijos que se añaden a los nombres de las variables y que indican su tipo.

Implementaciones

Las primeras versiones del compilador de Pascal, entre ellas la más distribuida fue UCSD Pascal, traducían el lenguaje en código para una máquina virtual llamada máquina-P. La gran ventaja de este enfoque es que para tener un compilador de Pascal en una nueva arquitectura de máquina solo hacía falta reimplementar la máquina-P. Como consecuencia de esto, solo una pequeña parte del intérprete tenía que ser reescrita hacia muchas arquitecturas.
En los años 1980Anders Hejlsberg escribió el compilador Blue Label Pascal para la Nascom-2. Más tarde fue a trabajar para Borland y reescribió su compilador que se convirtió en Turbo Pascal para la IBM PC. Este nuevo compilador se vendió por $49, un precio orientado a la distribución masiva.
El económico compilador de Borland tuvo una larga influencia en la comunidad de Pascal que comenzó a utilizarlo principalmente en el IBM PC. En busca de un lenguaje estructurado muchos aficionados al PC reemplazaron el BASIC por este producto. Dado que Turbo Pascal sólo estaba disponible para una arquitectura, traducía directamente hacia el código máquina del Intel 8088, logrando construir programas que se ejecutaban mucho más rápidamente que los producidos en los esquemas interpretados.
Durante los años 1990, estuvo disponible la tecnología para construir compiladores que pudieran producir código para diferentes arquitecturas de hardware. Esto permitió que los compiladores de Pascal tradujeran directamente al código de la arquitectura en que corre.
Con Turbo Pascal versión 5.5, Borland agregó programación orientada a objetos a Pascal.

Sin embargo, Borland después decidió mejorar esa extensión del lenguaje introduciendo su producto Delphi, diseñado a partir de estándar Object Pascal, propuesto por Apple como base. Borland también lo llamó Object Pascal en las primeras versiones, pero cambió el nombre a 'lenguaje de programación Delphi' en sus últimas versiones



Compilador
Varios compiladores de Pascal están disponibles para el uso del público en general:
  • Epox
  • Compilador GNU Pascal (GPC), escrito en C, basado en GNU Compiler Collection (GCC). Se distribuye bajo licencia GPL.
  • Free Pascal está escrito en Pascal (el compilador está creado usando Free Pascal), es un compilador estable y potente. También distribuido libremente bajo la licencia GPL. Este sistema permite mezclar código Turbo Pascal con código Delphi, y soporta muchas plataformas y sistemas operativos.
  • Turbo Pascal fue el compilador Pascal dominante para PC durante los años 1980 y hasta principios de los años 1990, muy popular debido a sus magníficas extensiones y tiempos de compilación sumamente cortos. Actualmente, versiones viejas de Turbo Pascal (hasta la 7.0) están disponibles para descargarlo gratuito desde el sitio de Borland (es necesario registrarse).
  • Delphi es un producto tipo RAD (Rapid Application Development) inicialmente desarrollado por Borland y actualmente por Embarcadero. Utiliza el lenguaje de programación Delphi, descendiente de Pascal, para crear aplicaciones para la plataforma Windows. Las últimas versiones también generan ejecutables para MacOS X, Linux y .NET.
  • Kylix fue una versión de Delphi para el sistema operativo Linux promovida por la antigua Borland reiterando la rama de Pascal de sus productos. Como descendiente de Delphi cuanta con una librería de objetos mejorada llamada CLX, que es la versión para Linux de la VCL. Sin embargo el proyecto ya se había descontinuado mucho antes de que Borland vendiera todos sus productos de desarrollo a Embarcadero Technologies, actual dueño de Delphi.
  • Lazarus es un clon de Delphi, basado en Free Pascal es software libre.
  • MidletPascal para la plataforma J2ME.
  • TMT. Pascal.
  • PIC Micro Pascal, para microcontroladores PIC.
  • Smart Mobile Studio] traduce un programa en dialecto Object Pascal a JavaScript, especialmente diseñado para ser utilizado en dispositivos móviles.
  • Oxygene es un compilador que genera archivos

En la Actualidad


Actualmente sigue utilizándose este lenguaje en el desarrollo de aplicaciones, gracias a la aparición de herramientas de desarrollo para nuevas plataformas como Oxygene o Smart Mobile Studio y la modernización de compiladores y entornos más antiguos como DelphiFree Pascal y Lazarus. Hoy en día se usa el compilador Free Pascal y similares para enseñar programación en las escuelas .También se usan más antiguos como el Turbo Pascal.
https://www.blogger.com/blogger.g?blogID=4263937428688892405#editor/target=post;postID=7644971957362180592
https://www.blogger.com/blogger.g?blogID=4263937428688892405#editor/target=post;postID=7698982710972326831