Manual de Iniciación A La Programación
Manual de Iniciación A La Programación
http://www.desarrolloweb.com/articulos/2410.php
Para empezar a entender lo que es la programacin, primero tenemos que tener ciertos
conocimientos sobre todo lo que la rodea.
Empezaremos con unas definiciones un poco tcnicas, pero que son imprescindibles para el
aprendizaje.
Tecnologa
Dentro del campo que nos interesa a nosotros, la tecnologa tiene el objetivo de eliminar las tareas
repetitivas, facilitando el trabajo y hacindolo ms eficiente as como aumentando la productividad
y los beneficios de la empresa.
Programacin
La programacin es una de las etapas ms importantes del ciclo de vida de un proyecto
(explicaremos ms adelante lo que es este termino), y requiere un mtodo de trabajo. La
programacin es el resultado de dicho trabajo. La programacin es el instrumento que permite la
ejecucin de las tareas automatizadas de un sistema informtico. Las herramientas que
utilizaremos para programar son los lenguajes de programacin a travs de las cuales
codificaremos los programas.
Programa
Conjunto de instrucciones entendibles por el ordenador que permiten realizar un trabajo o resolver
un problema.
Un programa debe ser finito, es decir, tiene que tener un inicio y un fin. Tiene que estar bien
confeccionado para que, al introducir un dato, salga una solucin y si se volviese a introducir el
mismo dato, saliese de nuevo la misma solucin.
Metodologa de la programacin
Se entiende como metodologa de la programacin al conjunto de normas, mtodos y anotaciones
que nos indican la forma de programar. Cada lenguaje de programacin sigue una metodologa
distinta.
Lenguaje de programacin
Es un conjunto de reglas semnticas as como sintcticas que los programadores usan para la
codificacin de instrucciones de un programa o algoritmo de programacin. Existen varios
lenguajes de programacin.
Entorno de programacin o entorno de desarrollo
Es el conjunto de herramientas utilizadas para la elaboracin de un programa.
Recursos
Conjunto de componentes hardware que utilizaremos para la elaboracin de un programa (cpu,
disco duro. . .).
Una vez conocidos los conceptos bsicos necesarios para el aprendizaje de la programacin
podemos empezar a ver los diferentes tipos de lenguajes de programacin.
Tipos de lenguaje de programacin
Existen dos tipos de lenguajes claramente diferenciados; los lenguajes de bajo nivel y los de alto
nivel.
El ordenador slo entiende un lenguaje conocido como cdigo binario o cdigo mquina,
consistente en ceros y unos. Es decir, slo utiliza 0 y 1 para codificar cualquier accin.
Los lenguajes ms prximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los
que se encuentran ms cercanos a los programadores y usuarios se denominan lenguajes de alto
nivel.
Lenguajes de bajo nivel
Son lenguajes totalmente dependientes de la mquina, es decir que el programa que se realiza con
este tipo de lenguajes no se puede migrar o utilizar en otras mquinas.
Al estar prcticamente diseados a medida de hardware, aprovecha al mximo las caractersticas
del mismo.
Dentro de este grupo se encuentran:
El lenguaje maquina: este lenguaje ordena a la mquina las operaciones fundamentales para su
funcionamiento. Consiste en la combinacin de 0's y 1's para formar las ordenes entendibles por el
hardware de la maquina.
Este lenguaje es mucho ms rpido que los lenguajes de alto nivel.
La desventaja es que son bastantes difciles de manejar y usar, adems de tener cdigos fuente
enormes donde encontrar un fallo es casi imposible.
El lenguaje ensamblador es un derivado del lenguaje maquina y esta formado por abreviaturas de
letras y nmeros llamadas mnemotcnicos. Con la aparicin de este lenguaje se crearon los
programas traductores para poder pasar los programas escritos en lenguaje ensamblador a
lenguaje mquina. Como ventaja con respecto al cdigo mquina es que los cdigos fuentes eran
ms cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje
siguen siendo prcticamente las mismas que las del lenguaje ensamblador, aadiendo la dificultad
de tener que aprender un nuevo lenguaje difcil de probar y mantener.
Lenguajes de alto nivel
Son aquellos que se encuentran ms cercanos al lenguaje natural que al lenguaje mquina.
Estn dirigidos a solucionar problemas mediante el uso de EDD's.
Nota: EDDs son las abreviaturas de Estructuras Dinmicas de Datos, algo muy utilizado en todos
los lenguajes de programacin. Son estructuras que pueden cambiar de tamao durante la
ejecucin del programa. Nos permiten crear estructuras de datos que se adapten a las
necesidades reales de un programa.
Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en principio, un
programa escrito en un lenguaje de alto nivel, lo puedes migrar de una mquina a otra sin ningn
tipo de problema.
Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la
maquina/s para la que estn diseando el programa. Tan solo necesitan un traductor que
entiendan el cdigo fuente como las caractersticas de la maquina.
Suelen usar tipos de datos para la programacin y hay lenguajes de propsito general (cualquier
tipo de aplicacin) y de propsito especifico (como FORTRAN para trabajos cientficos).
Lenguajes de Medio nivel
Se trata de un trmino no aceptado por todos, pero que seguramente habrs odo. Estos lenguajes
se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podra
situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria,
todas ellas caractersticas de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel.
Generaciones
La evolucin de los lenguajes de programacin se puede dividir en 5 etapas o generaciones.
Primera generacin: lenguaje maquina.
Segunda generacin: se crearon los primeros lenguajes ensambladores.
Tercera generacin: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol
Cuarta generacin. Son los lenguajes capaces de generar cdigo por si solos, son los llamados
RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aqu tambin
se encuentran los lenguajes orientados a objetos, haciendo posible la reutilizacin de partes del
cdigo para otros programas. Ej. Visual, Natural Adabes.
Quinta generacin: aqu se encuentran los lenguajes orientados a la inteligencia artificial. Estos
lenguajes todava estn poco desarrollados. Ej. LISP.
Proceso de traduccin de los lenguajes de programacin
Explicamos el proceso ms importante a la hora de hacer funcionar un programa realizado en
lenguajes de alto y medio nivel.
Cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es el cdigo
fuente de ese programa.
Este cdigo fuente debe ser traducido a binario para que las instrucciones que contienen puedan
ser entendidas y ejecutadas por la mquina.
Para esto existe un programa encargado de realizar la traduccin, llamado traductor del lenguaje.
Estos traductores pueden ser de dos tipos:
Ensambladores
Son los encargados de traducir los programas escritos en lenguaje ensamblador a lenguaje
mquina.
Compiladores
Son programas que leen el cdigo fuente y lo traducen o convierten a otro lenguaje. Estos
programas te muestran los errores existentes en el cdigo fuente.
Etapas del proceso de compilacin:
Edicin. Esta fase consiste en escribir el programa empleando algn lenguaje y un editor. Como
resultado nos dar el cdigo fuente de nuestro programa.
Compilacin. En esta fase se traduce el cdigo fuente obtenido en la fase anterior a cdigo
mquina. Si no se produce ningn error se obtiene el cdigo objeto.
En caso de errores el compilador los mostrara para ayudarnos a corregirlos y se procedera a su
compilacin de nuevo, una vez corregido.
Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas rutinas
internas del lenguaje obteniendo el programa ejecutable.
Existen dos tipos de linkados:
Linkado esttico: Los binarios de las libreras se aaden a nuestros binarios compilados
generando el archivo ejecutable.
Linkado dinmico: no se aaden las libreras a nuestro binario sino que har que se carguen en
memoria las libreras que en ese momento se necesiten.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecucin donde tambin
podrn surgir problemas y fallos, para los cuales tendramos que volver a realizar todo el proceso
anteriormente citado de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecucin antes de
presentar el programa al cliente.
Otro sistema para la ejecucin de nuestro cdigo fuente es mediante el uso de intrpretes (estos
no se encontraran dentro de los traductores).
Intrpretes
Los intrpretes realizan la traduccin y ejecucin de forma simultanea, es decir, un intrprete lee el
cdigo fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intrprete bsicamente son:
Un programa compilado puede funcionar por si solo mientras que un cdigo traducido por un
intrprete no puede funcionar sin ste.
Un programa traducido por un intrprete puede ser ejecutado en cualquier mquina ya que, cada
vez que se ejecuta el intrprete, tiene que compilarlo.
Un archivo compilado es mucho ms rpido que uno interpretado.
Manejando bits
Importancia del manejo de los bits en el mundo de la programacin.
Como bien es conocido un Byte es la agrupacin de 8 bits respectivamente, cada bit forma parte
del sistema de numeracin Binario a quien debe su nombre, es decir de base 2 en otras palabras
puede almacenar valores comprendidos entre 0 y 1.
Si bien recordamos que un sistema de numeracin se conforma de un conjunto de reglas y
principios que permite expresar o definir un nmero valido dentro del mismo, podemos afirmar que
la mayora de ellos (Sistemas: binarios, octanos, decimales hexadecimales, etc..) se pueden
representar mediante un polinomio sencillo que nos permitir entender su lgica:
Nmero = N*base
n
+ N*base
n-1
+ N*base
n-2
hasta que base quede elevado a la 0 siempre y cuando
no contenga decimales el Nmero
Donde Nmero es el valor expresado dentro del sistema, base como su nombre lo indica la base
del sistema (si es binario: 2, octano: 8, decimal: 10, hexadecimal: 16, etc.) y
n
la posicin que
ocupa el digito N dentro del Nmero.
Ejemplo en sistema decimal (base:10):
18598 1*10
4
+ 8*10
3
+ 5*10
2
+ 9*10
1
+ 8*10
18598 1*10
4
+ 8*10
3
+ 5*10
2
+ 9*10
1
+ 8*10
0
Hemos descompuesto el valor expresado "18598" multiplicndolo por la base del sistema (10)
elevada a la posicin del digito en la expresin.
El nmero 1 se encuentra iniciando la expresin y guarda en su interior 10 000 (Para comprobarlo:
si eliminamos el 1 el resultado ser (18598-10 000)) por lo tanto 10 000 es igual a 10
4
(1*10
4
)=10
000 + (8*10
3
)= 8 000
En el sistema de numeracin binario la misma formula es aplicable:
10 (nmero binario) = 1*2
1
+ 0*2
0
Lo que indica que 10, en el sistema decimal es igual 2, en realidad en el sistema de numeracin
binario se puede definir cualquier nmero entero mayor o igual a 0, sin embargo la estructura de
almacenamiento Byte solo fue diseada desde su origen para almacenar hasta 256 porque incluye
como mximo 8 bits (2
8
= 256) (recordemos que se toma en cuenta el 0 por lo cual 255 equivaldr
a 256) y se escogi este valor como mximo porque es la totalidad de caracteres disponibles en la
tabla ASCII, que incluye todos los caracteres validos dentro de un computador, para comprobar
esto podemos guardar un carcter en un archivo sin formato y como resultado tendremos que
siempre ocupar 1 byte, si colocamos 2 caracteres el tamao del archivo ser igual a 2 bytes. Lo
que justifica que 1 byte = 8 bits = puede almacenar hasta 256. y 1 bit es la mnima unidad en la que
se puede almacenar informacin, Ejemplo: el tipo booleano (bool) ocupa en memoria 1 bit, por
tanto TRUE = 1 FALSE=0.
Por esta razn la mayora de los hardwares con capacidad de almacenamiento tales como Discos
duros, memorias, y otros dispositivos; su capacidad siempre ser divisible entre 2 , al igual que las
dems estructuras de almacenamiento ( Kb, Mb, Gb, Tb, etc)
Como refera anteriormente, la tabla ASCII incluye todos los caracteres validos dentro del
computador, desde todas las letras en minsculas y maysculas, nmeros y otros especiales,
estos ltimos utilizados en su mayora como delimitadores o separadores gua dentro de un
formato de archivo de contenido binario (PDF, DOC, EXE, DLL, OCX, ENTRE OTROS) Ejemplo de
delimitadores: La direccin IP incluye 4 pares de cuyo valor mximo es 255 para poder
representarlo en decimal se hace ms que necesario, obligatorio el uso de delimitadores por lo cual
se emplea un ". (Punto)" de modo tal que 255.255.255.255, para reducir esta informacin a 4 bytes
podremos acudir a la tabla ASCII.
Por ejemplo el carcter "A" dentro de la tabla ASCII en el sistema decimal ocupa 64, podemos
ejecutar una funcin ampliamente reconocida por lenguajes de programacin entre ellos (Delphi,
C++, VB, Php, etc) llamada ORD que producir como resultado de ord(64) "A" si por el contrario
ejecutamos chr('A') es resultado ser 64 en decimal, el cual representado en binario equivaldra a
"1000000" , auque 64 no ocupe fsicamente los 255 (1 byte completo) su tamao en disco siempre
ser 1 byte, porque la mayora de sistemas operativos y hardware desde su ensamblaje esta
orientados para reservar un mnimo de espacio en memoria y en disco tomando en cuenta que ese
valor puede ser modificado a 255 (mximo) 0 (mnimo) en cualquier momento.
Por tanto podemos decir que un bit tiene un valor de acuerdo a su posicin ubicacin y para
hallar ese valor solo tenemos que descomponer 255.
128 62 32 16 8 4 2 1
1 2 3 4 5 6 7 8(bits)
Como comentbamos anteriormente el bit se conforma de 0 y 1 respectivamente por tanto
afirmaremos a partir de ahora que 0 ES IGUAL A FALSO (false) Y 1 ES IGUAL A VERDADERO
(true) si tenemos un conjunto de 8 bits lo sumaremos segn su posicin, siempre y cuando el bit
sea VERDADERO es decir su contenido sea igual a 1, ejemplo: dado los bits "10111011" para
convertirlo a decimal aplicamos la tabla:
128 62 32 16 8 4 2 1
1 0 1 1 1 0 1 1
Y posteriormente sumamos solo los valores que son "VERDADEROS" entonces:
128+32+16+8+2+1=187 Enhorabuena 10111011=187!, entonces podemos decir que para
almacenar 256 necesitaremos que los 8 bits sean verdaderos es decir 8 bits y ya tendemos nuestro
byte.
Para hacer el proceso contrario es decir de decimales a binario, solo tenemos que descomponer el
decimal dividindolo siempre entre 2 hasta que el valor sea igual a 1, la agrupacin de los residuos
obtenidos ser nuestro valor binario; obviamente los residuos siempre sern (0 1).
Los bits son ampliamente utilizados para codificar datos, comprimir informacin, etc. Por ejemplo el
formato de imgenes diseado por Microsoft (.BMP) calcula el rea de la imagen es decir base por
altura lo que es igual a ancho por alto la cual asume como la cantidad de puntos disponibles,
estos puntos a su vez almacenan un color hexadecimal de 3 pares conocido como RGB que
almacena los colores ROJOS, VERDE Y AZUL, por lo cual para el almacenamiento del color
emplea 3 bytes (255,255,255) y los escribe con ASCII , por cada punto , lo que indica si una
imagen es de 10 px x 10 px emplear 300 bytes para almacenar los puntos y otros adicionales que
guardan informacin de propiedades y caractersticas de esencial importancia. Utilizando bytes
delimitadores o separadores en caso de no conocer el final del valor, es decir si la cantidad de
bytes a emplear por la cabecera del formato (que contiene informacin) se desconoce puede
variar dependiendo de factores, se hace indispensable el uso de delimitadores (ASCII DEFINIDOS
COMO DELIMITADORES), si por el contrario siempre se situar entre los bytes 10 y 20 por
ejemplo (no ser necesario). Por tal motivo cuando leemos un archivo (con un programa
desarrollado por nosotros) debemos especificar cuantos bytes leeremos por cada secuencia, en el
caso de los colores del formato (BMP) bastara con leer de 3 en 3, cabe destacar que un archivo se
puede leer hasta 1024 es decir 1 KB de secuencia que equivale a una lnea de informacin, a partir
de esa base se han diseado mecanismos de comprensin que agrupa los bits repetido en
matrices o arrays.
Para hacer posible este manejo existen algunos operadores similares a los de lgica ( OR, AND,
NOT, XOR, ETC) mejor conocidos como operadores bit a bit.
Desplazando bits:
Podemos definirlo como la accin de transportar bytes de un extremo de la expresin a otro, como
la expresin esta conformada por 2 solo puede hacerse en dos sentidos, izquierda y derecha.
Desplazando bits a la izquierda (<<)
Consiste en mover la cantidad de bit indicada en la expresin, de la izquierda a la derecha, esta
operacin equivale a multiplicar por 2.
Por ejemplo:
16 <<2 desplazaremos 2 bits de la izquierda a la derecha
16 en binario equivale a 00010000 por lo cual moveremos los dos primeros bits a la parte de atrs
del numero (derecha) de tal modo que quedar 01000000 lo cual equivale a 64.
Por tanto si multiplicamos
(16*2)=32 (32*2)=64
1 bit 2 bits
Desplazando bits a la derecha (>>)
Consiste en mover la cantidad de bit indicada en la expresin, de la derecha a la izquierda, esta
operacin equivale a dividir por 2.
Por ejemplo:
128 >>4 desplazaremos 4 bits de la derecha a la izquierda.
128 en binario es igual a: 10000000, moveremos los ltimos 4 bits a la parte inicial ( de derecha a
izquierda) , el resultado ser 00001000 cuyo valor es igual a 8
por tanto si dividimos
(128 / 2)=64 (64/2)=32 (32/2)=16 (16/2)=8
1 bit 2 bits 3 bits 4 bits
Se emplea 2 por ser la base del sistema de numeracin binario.
Operador de lgica OR |
Recordemos que llamaremos 0 en binario False y 1 True, entonces el operador OR
Evaluara las expresiones y producir TRUE es decir 1 solo si el uno de los 2 bits a comparar es
igual a 1. Ejemplo:
Expresin: 5 | 12
5 en binario es igual a 00000101
12 en binario = 00001100
Resultado : 00001101 = 13
Solo si un par de los bits a comparar es 1 el resultado ser 1, se comporta exactamente igual a una
condicin: (true || false) es igual a true; (false || false) es igual a false, su razn se debe a que la
condicin de dos o ms argumentos se transforma siempre a binarios para realizar la comparacin
utilizando el procesador y la memoria de computador.
Operador de lgica AND &
Solo si el par de bits a comparar es igual a 1 el resultado ser 1.
Expresin: 5 & 12
5 en binario es igual a 00000101
12 en binario = 00001100
Resultado : 00000100 = 4
Es similar a (TRUE && TRUE) es igual a true, (False && True) es igual a false.
Operador XOR ^
Solo si el par de bits a comparar es diferente ser igual a 1.
Expresin: 5 ^ 12
5 en binario es igual a 00000101
12 en binario = 00001100
Resultado : 00001001 = 9
Similar a (TRUE XOR FALSE) es igual a true, ( TRUE XOR TRUE) es igual a false.
Operador Not ~
Solo si el bit a comparar es igual a 0 (False) ser igual a 1.
Expresin: ~5
5 en binario es igual a 00000101
Resultado : 00000010 = 2
Similar a (!FALSE) es igual a true
Importancia del manejo de los bits
Como programador dar una opinin muy personal, se hace indispensable en la construccin de
aplicaciones a gran escala el desarrollo formatos personales basados en esquemas que
almacenan la informacin empleada de modo comprimido para la utilizacin de un o unos recursos
de nuestra aplicacin, permitindole al usuario final mayor comodidad y seguridad durante el
transporte de la informacin y ofrecindole la capacidad de hacerlas compatibles con otras
aplicaciones, y dejar a un lado (dependiendo del objetivo) el tpico uso de bases de datos que
requieren recursos adicionales del computador adems de interpretadores, etc. Considero que la
informacin redactada contribuye considerablemente a encaminar vuestros esfuerzos en esa
direccin.
Concuclusin:
Podemos decir que el computador sin software solo tiene capacidades para hacer operaciones
aritmticas simples (sumas, restas, multiplicacin, etc)
Y es el software que valindose se esas simples operaciones con procesos como los antes
explicados puede crear la interfaz como de la que hoy disfrutamos en materia de Sistemas
Operativos, todos los lenguajes desde los ms altos como Php hasta los ms bajos como
Assembler pasan por binario, cada vez que movemos el Mouse eso esta produciendo un
procesamiento de datos binarios, en fin, orienta tus esfuerzos como programador a reducir al
mximo el consumo de recursos, seguro lograras una suma consumiendo menor cantidad de
recursos que lo habitual.