Está en la página 1de 16

3.

1 INTRODUCCION A LA PROGRAMACION

A principios de la dcada de los ochenta llegaban a los hogares de los


usuarios los primeros microordenadores. Mquinas casi olvidadas, como los
Sinclair ZX-81, o como el mtico Sinclair ZX-Spectrum, el Amstrad CPC-464,
etc.
Todos estos equipos tenan un punto en comn: el nico software con que se
entregaban era, por regla general, un sencillo intrprete de lenguaje BASIC.
Cuando el usuario conectaba su ordenador, no encontraba un entorno
grfico, en su lugar encontraba una pantalla con una lnea de comandos,
esperando a recibir rdenes. Cuando se consegua combinar varias rdenes
consecutivas, obtenindose un resultado satisfactorio, ya se saba programar.
En cierto sentido programar es, por lo tanto, ensear a una mquina a hacer
algo.

3.1.1 DEFINICION DE PROGRAMA

Es un conjunto de instrucciones u ordenes basadas en un lenguaje de


programacin que una computadora interpreta para resolver un problema o
una funcin Especifica:

Es la relacin ordenada de actividades, en informtica se le conoce como la


serie codificada de instrucciones.
Redaccin de un algoritmo en un lenguaje de programacin.
Conjunto de instrucciones ordenadas correctamente que permiten realizar
una tarea o trabajo especfico.
Toda secuencia de instrucciones o indicaciones destinadas a ser utilizadas,
directa o indirectamente, en un sistema informtico para realizar una funcin
o una tarea o para obtener un resultado determinado, cualquiera que fuere
su forma de expresin y fijacin.
Conjunto secuenciado de instrucciones que quedan escritas en un lenguaje
determinado con unos fines especficos. Aunque en el lenguaje comn con
frecuencia se denomina programa al sistema operativo, la diferencia estriba,
precisamente, en la especificidad de aqul frente al carcter de gestin
global de ste. La palabra software engloba ambos.
3.1.2 DEFINICION DE PROGRAMACION

Se conoce como programacin de computadores a la implementacin de un


algoritmo en un determinado lenguaje de programacin, conformando un
programa. Mientras que un algoritmo se ejecuta en una mquina abstracta
que no tiene limitaciones de memoria tiempo, un programa se ejecuta en
una mquina real, que s tiene esas limitaciones. El lenguaje de programacin
puede ser de alto nivel, medio nivel o bajo nivel, en funcin del grado de
abstraccin.

3.1.3 DEFINICION DEL LENGUAJE DE PROGRAMACION

Es aquel elemento dentro de la informtica que nos permite crear programas


mediante un conjunto de instrucciones, operadores y reglas de sintaxis; que
pone a disposicin del programador para que este pueda comunicarse con
los dispositivos hardware y software existentes.

3.2 INTRODUCCION Y ORIGENES DEL LENGUAJE

Desde algunos puntos de vista, la historia de la teora de lenguajes de


programacin precede incluso al desarrollo de los propios lenguajes de
programacin. El clculo lambda, desarrollado por Alonzo Church, Max HL.
Solis Villareal y Stephen Cole Kleene en la dcada de 1930, es considerado ser
uno de los primeros lenguajes de programacin del mundo, incluso pese a
que tena intencin de modelar la computacin ms que ser un medio para
que los programadores describan algoritmos para un sistema informtico.
Muchos lenguajes de programacin funcional se han caracterizado por
proveer una "fina apariencia" al clculo lambda [1], y muchos se describen en
sus trminos.
El primer lenguaje de programacin (como tal) que se propuso fue Plankalkl,
que fue diseado por Konrad Zuse en los aos 40, pero no fue conocido
pblicamente hasta 1972 (y no implementado hasta 2000, cinco aos
despus de la muerte de Zuse).El primer lenguaje de programacin
ampliamente conocido y exitoso fue Fortran, Desarrollado entre 1954 y 1957
por un equipo de investigadores en IBM liberados por John Backus. El xito
de FORTRAN condujo a la creacin de un comit de cientficos para
desarrollar Un lenguaje de programacin "universal"; el resultado de Su
esfuerzo fue ALGOL 58.

Separadamente, John McCarthy del MIT desarroll el Lenguaje de


programacin Lisp (basado en el clculo Lambda), el primer lenguaje con
orgenes acadmicos en Conseguir el xito. Con el triunfo de estos esfuerzos
iniciales, los lenguajes de programacin se convirtieron en un tema candente
en la investigacin en la dcada de 1960 y en adelante.

Algunos otros eventos claves en la historia de la teora de lenguajes de


programacin desde entonces:

En la dcada de 1950, Noam Chomsky desarroll la Jerarqua de Chomsky en


el campo de la lingstica; un descubrimiento que impact directamente a la
teora de Lenguajes de programacin y otras ramas de la informtica.

En la dcada de 1960, el lenguaje Simula fue desarrollado por Ole-Johan Dahl


y Kristen Nygaard; muchos consideran que es el primero lenguaje orientado a
objetos; Simula tambin introdujo el concepto de corrutinas.

Durante 1970:

Un pequeo equipo de cientfico en Xerox PARC Encabezado por Alan Kay


elaboran Smalltalk, un Lenguaje orientado a objetos muy conocido por su
Novedoso (hasta ese momento desconocido) entorno de desarrollo.

Sussman y Steele desarrollan el lenguaje de programacin Scheme, un


dialecto de Lisp que Incorpora mbitos lxicos, un espacio de nombres
unificado, y elementos del modelo Actor incluyendo continuaciones de
primera clase.
Backus, en la conferencia del Premio Turing de 1977, asedi el estado actual
de los lenguajes industriales y propuso una nueva clase de lenguajes de
programacin ahora conocidos como lenguajes de programacin funcional.

La aparicin del process calculi, como el clculo de sistemas comunicantes de


Robin Milner, y el modelo de Comunicacin secuencial de procesos de C. A.
R. Hoare, as como modelos similar de concurrencia como el Modelo Actor de
Carl Hewitt.

La aplicacin de la teora de tipos como una disciplina a los lenguajes de


programacin, liderada por Milner; esta aplicacin ha conducido a un
tremendo avance en la teora de tipos en cuestin de aos.

En la deada de 1990:

Philip Wadler introdujo el uso de monads para estructurar programas


escritos en lenguajes de Programacin funcional.

3.3 ESTRUCTURA BASICA DE UN PROGRAMA

La estructura exacta de un programa depende del lenguaje que utilicemos y


el entorno en el cual lo creemos. Sin embargo, hay algunos principios
generales:

Un cargador - Todo programa necesita ser cargado en la memoria por el


sistema operativo. De esto se encarga el intrprete.
Definicin de los datos - La mayora de los programas operan con datos y por
lo tanto en el cdigo fuente debemos definir que tipo de datos vamos a
utilizar en el programa. Esto se realiza de manera diferente en los distintos
lenguajes. Todos los lenguajes que usaremos tienen la posibilidad de crear
una nueva definicin de datos simplemente al utilizar los datos. Veremos
esto en la prxima seccin.

Instrucciones - Son la parte central del programa. Las instrucciones


manipulan los datos que hemos definido, realizan clculos, muestran los
resultados, etc.

La mayora de los programas siguen una de dos estructuras:

Programas de lotes

Estos se ejecutan tpicamente desde una lnea de comando o


automticamente desde otra aplicacin (tipo scheduler) y tienden al
siguiente patrn:

Inicializacin interna de los datos


Lectura de los datos ingresados
Procesamiento de los datos
Visualizacin o ejecucin de los resultados

Programas controlados por eventos.

La mayor parte de las interfaces grficas (y los sistemas de control presentes


en un horno a microondas o una cmara por ejemplo) responden a eventos.
Esto significa que el Sistema Operativo enva un evento al programa y este los
responde tan pronto como estos le llegan. Los eventos incluyen acciones del
usuario como apretar una tecla, mover el mouse, etc, y operaciones propias
del sistema operativo tales como la actualizacin del reloj, el refresco de la
pantalla, etc.

Los programas controlados por eventos son generalmente as:

Inicializacin interna de los datos


Espera de los eventos
Identificacin de los eventos y actuacin en consecuencia

Caractersticas comunes a todos los programas

Hace tiempo Edsgar Dijkstra desarroll el concepto de la programacin


estructurada. Esto significa que todos los programas pueden estructurarse de
las siguientes cuatro formas:

Secuencias de instrucciones
Bucles
Bifurcaciones
Mdulos

Adems de estas estructuras los programas necesitan otras caractersticas


que los hacen tiles:

Datos
Operaciones (sumar, restar, comparar, etc.)
Capacidad de Entrada/Salida (para mostrar resultados)

Una vez que se comprende cmo un lenguaje particular implementa estos


conceptos, uno est preparado para escribir un programa en ese lenguaje.

3.4. DATOS

El dato (del latn datum), es una representacin simblica (numrica,


alfabtica, etc.), atributo o caracterstica de una entidad. El dato no tiene
valor semntico (sentido) en s mismo, pero convenientemente tratado
(procesado) se puede utilizar en la realizacin de clculos o toma de
decisiones. Es de empleo muy comn en el mbito informtico.

En programacin un dato es la expresin general que Describe las


caractersticas de las entidades sobre las cuales opera un algoritmo.
Un dato por s mismo no constituye informacin, es el procesador de los
datos lo que nos proporciona Informacin.

3.4.1 TIPOS DE DATOS

Existen muchas clasificaciones para los tipos de datos, y dependiendo de la


fuente que mires, te mostrarn una u otra. A continuacin tienes una de las
posibles clasificaciones:

Tipos estticos

Casi todos los tipos de datos son estticos, la excepcin son los punteros y no
se tratarn debido a su complejidad. Que un tipo de datos sea esttico quiere
decir que el tamao que ocupa en memoria no puede variar durante la
ejecucin del programa. Es decir, una vez declarada una variable de un tipo
determinado, a sta se le asigna un trozo de memoria fijo, y este trozo no se
podr aumentar ni disminuir.

Tipos dinmicos

Dentro de esta categora entra solamente el tipo puntero. Este tipo te


permite tener un mayor control sobre la gestin de memoria en tus
programas. Con ellos puedes manejar el tamao de tus variables en tiempo
de ejecucin, o sea, cuando el programa se est ejecutando.

Los punteros quizs sean el concepto ms complejo a la hora de aprender un


lenguaje de programacin, sobre todo si es el primero que aprendes. Debido
a esto, no lo trataremos.
Adems, lenguajes que estn muy de moda (por ejemplo Java) no permiten
al programador trabajar con punteros.

Tipos simples

Como su nombre indica son los tipos bsicos en Pascal. Son los ms sencillos
y los ms fciles de aprender. Por todo esto, sern en los que nos centremos.
Los tipos simples ms bsicos son: entero, lgico, carcter y real. Y la mayora
de los lenguajes de programacin los soportan, no como ocurre con los
estructurados que pueden variar de un lenguaje a otro.

Tipos estructurados

Mientras que una variable de un tipo simple slo referencia a un elemento,


los estructurados se refieren a colecciones de elementos. Las colecciones de
elementos que aparecen al hablar de tipos estructurados son muy variadas:
tenemos colecciones ordenadas que se representan mediante el tipo array,
colecciones sin orden mediante el tipo conjunto, e incluso colecciones que
contienen otros tipos, son los llamados registros.

Tipos ordinales

Dentro de los tipos simples, los ordinales son los ms abundantes. De un tipo
se dice que es ordinal porque el conjunto de valores que representa se puede
contar, es decir, podemos establecer una relacin uno a uno entre sus
elementos y el conjunto de los nmeros naturales. Dentro de los tipos
simples ordinales, los ms importantes son:

El tipo entero (integer)


El tipo lgico (boolean)
El tipo carcter (char)

Tipos no-ordinales

Simplificando, podramos reducir los tipos simples no-ordinales al tipo real.


Este tipo nos sirve para declarar variables que pueden tomar valores dentro
del conjunto de los nmeros reales.

A diferencia de los tipos ordinales, los no-ordinales no se pueden contar. No


se puede establecer una relacin uno a uno entre ellos y los nmero
naturales. Dicho de otra forma, para que un conjunto se considere ordinal se
tiene que poder calcular la posicin, el anterior elemento y el siguiente de un
elemento cualquiera del conjunto.Cul es el sucesor de 5.12? Ser 5.13, o
5.120, o 5.121, ...
Despus de ver una de las posibles clasificaciones para los tipos de datos,
pasemos a ver los que nos interesan: los tipos simples. Realmente de los
tipos simples veremos los ms bsicos, que son: integer, boolean, char y real.
Adems, tambin hablaremos un poco de las cadenas de caracteres, los
llamados strings.

nota: a continuacin slo se comentar qu es cada tipo, no se explicar su


declaracin, esto puedes verlo si vas a la seccin correspondiente.

El tipo integer (entero)

Como ya habrs ledo el tipo de datos entero es un tipo simple, y dentro de


estos, es ordinal.

Al declarar una variable de tipo entero, ests creando una variable numrica
que puede tomar valores positivos o negativos, y sin parte decimal.
Este tipo de variables, puedes utilizarlas en asignaciones, comparaciones,
expresiones aritmticas, etc. Algunos de los papeles ms comunes que
desarrollan son:

Controlar un bucle .
Usarlas como contador, incrementando su valor cuando sucede algo.
Realizar operaciones enteras, es decir, sin parte decimal
Y muchas ms...

El tipo boolean (lgico)

El tipo de datos lgico es el que te permite usar variables que disponen slo
de dos posibles valores: cierto o falso. Debido a esto, su utilidad salta a la
vista, y no es otra que variables de chequeo. Nos sirven para mantener el
estado de un objeto mediante dos valores:

si/no
cierto/falso
funciona/no funciona
on/off
etc.
El tipo real (real)

Como ya has visto, Pascal soporta el conjunto entero de nmeros. Pero no es


el nico, tambin te permite trabajar con nmeros pertenecientes al
conjunto real. El tipo de datos real es el que se corresponde con los nmeros
reales. Este es un tipo importante para los clculos. Por ejemplo en los
estadsticos, ya que se caracterizan por tratar fundamentalmente con valores
decimales.

nota: Aunque pueda que ests acostumbrado a escribir con coma los
decimales, te advierto que en Pascal y en todos los lenguajes de
programacin se escribe con un punto. Por ejemplo: 3.1416

Los tipos char y string (carcter y cadena)

Con el tipo carcter puedes tener objetos que representen una letra, un
nmero, etc. Es decir, puedes usar variables o constantes que representen un
valor alfanumrico. Pero ojo, cada variable slo podr almacenar un carcter.
Sin embargo, con las cadenas de caracteres (strings) puedes contener en una
sla variable ms de un carcter. Por ejemplo, puedes tener en una variable
tu nombre.

3.4.2 IDENTIFICADORES

En los lenguajes informticos, los identificadores son elementos textuales


(tambin llamados smbolos) que nombran entidades del lenguaje. Algunas
de las de entidades que un identificador puede denotar son las variables, las
constantes, los tipos de dato, las etiquetas, las subrutinas, los paquetes y las
subrutinas (procedimientos y funciones).
En muchos lenguajes algunas secuencias tienen la forma lxica de un
identificador pero son conocidos como palabras clave (o palabras
reservadas). Lo habitual es que si un identificador se corresponde con una
palabra clave o reservada, ste ya no pueda utilizarse para referirse a otro
tipo de entidades como variables o constantes (en unos pocos lenguajes,
como PL/1, esta distincin no est del todo clara).

3.4.3 ALMACENAMIENTO, DIRECCIONAMIENTO Y REPRESENTACIN EN


MEMORIA.

ALMACENAMIENTO:

Hay dos clases, almacenamiento primario, que son los que usa la CPU
directamente (memoria principal, memoria cach, etc) y el almacenamiento
secundario, a los cuales la CPU no accede directamente, sino que deben
almacenarse previamente en uno primario. Son de almacenamiento
secundario los discos magnticos, pticos, cintas magnticas, tambores
magnticos, etc.El almacenamiento de datos puede usarse tambin para
copias de seguridad, ver backup.Con el correr de los aos, el almacenamiento
de datos informticos ha ido bajando de precio. Por ejemplo, 1 GB de
memoria en 1956 costaba 8,2 millones de dlares. En 1980, 184 mil dlares;
en 1990 eran 5.200 dlares; en 2000 eran 12 dlares, y en 2006 fueron 1,2
dlares.

DIRECCIONAMIENTO

Los llamados Modos de direccionamiento son las diferentes maneras de


especificar en informtica un operando dentro de una instruccin (lenguaje
ensamblador). Cmo se especifican e interpretan las direcciones de memoria
segn las instrucciones. Pueden ser:

Inmediato: En la instruccin est incluido directamente el operando.

Directo: El campo de operando en la instruccin contiene la direccin en


memoria donde se encuentra el operando.
Indirecto: El campo de operando contiene una direccin de memoria, en la
que se encuentra la direccin efectiva del operando.

Absoluto: El campo de operando contiene una direccin en memoria, en la


que se encuentra la instruccin.

De registro: Sirve para especificar operandos que estn en registros.

Indirecto mediante registros: El campo de operando de la instruccin


contiene un identificador de registro en el que se encuentra la direccin
efectiva del operando.

De desplazamiento: Combina el modo directo e indirecto mediante registros

De pila: Se utiliza cuando el operando est en memoria y en la cabecera de la


Pila.

REPRESENTACION DE MEMORIA

Podemos representar a las colas de dos formas :

Como arreglos
Como listas ordenadas

En esta unidad trataremos a las colas como arreglos de elementos, en donde


debemos definir el tamao de la cola y dos apuntadores, uno para accesar el
primer elemento de la lista y otro que guarde el ltimo.

En lo sucesivo, al apuntador del primer elemento lo llamaremos F, al de el


ltimo elemento A y MAXIMO para definir el nmero mximo de elementos
en la cola.

COLA (DEFINICION)

Una cola es una estructura de almacenamiento, donde la podemos


considerar como una lista de elementos, en la que stos van a ser insertados
por un extremo y sern extrados por otro. Las colas son estructuras de tipo
FIFO (first-in, first-out), ya que el primer elemento en entrar a la cola ser el
primero en salir de ella. Existen muchsimos ejemplos de colas en la vida real,
como por ejemplo: personas esperando en un telfono pblico, nios
esperando para subir a un juego mecnico, estudiantes esperando para subir
a un camin escolar, etc.

3.4.4 PROPOSICIN DE ASIGNACIN.

La forma de una proposicin de asignacin es: a = b donde b es una expresin


permitida, y a es el nombre de la variable donde se dejar el valor resultante
de evaluar b.
Por expresin permitida se entiende a aquella expresin matemtica que
ocupa las operaciones y funciones nombradas como existentes, y escritas de
la forma que para ellas se seala, respetando as la sintaxis en cada
instruccin.
El signo igual, " = ", de a = b tiene el sentido de asignar a la variable a el valor
que resulte de evaluar la expresin permitida b. Es decir, a = b. Que no es la
misma definicin usada en matemticas para el signo: = .

El computador, al ejecutar una proposicin de asignacin evala la expresin


del lado derecho del signo igual con los valores que en ese momento tengan
las variables ah ocupadas. As, la expresin entregar valores probablemente
distintos en las diversas ocasiones que por programa se evale esa expresin.
Las siguientes son proposiciones de asignacin correctas, A = 2.5 TO = 1 + XT I
= I + 1 Y no son correctas las siguientes:

A + B = C 20 = 16.2 + 3.8 AL = (AT+3.4) / 110.302

3.5. OPERADORES, OPERANDOS Y EXPRESIONES

OPERADORES.

En todos los lenguajes de programacin se utilizan operadores para efectuar


operaciones aritmticas.Combinando las variables y constantes en
expresiones aritmticas por medio de funciones adecuadas. Una expresin es
un conjunto de datos o funciones unidos por operadores aritmticos, los
cuales son: SUMA, RESTA, MULTIPLICACION, DIVISION, EXPONENCIAL Y
MODULO.

OPERADOR LOGICO

En ocasiones en los programas se necesitan realizar comparaciones entre


distintos valores, esto se realiza utilizando los operadores relaciones, los
cuales son: Mayor que, menor que, menor igual que, mayor igual que, igual
a, distinto a o diferente de.

OPERANDO.

Referente a la parte de la instruccin de lenguaje mquina de la


computadora que designa la direccin de los datos con los que se debe
operar.

EXPRESIONES.

Las expresiones son combinaciones de constantes, variables, smbolos de


operacin, parntesis y nombres de funciones especiales. Por ejemplo:
a + (b + 3) / c

Cada expresin toma un valor que se determina tomando los valores de las
variables y constantes implicadas y la ejecucin de las operaciones indicadas.
Una expresin consta de operadores y operandos. Segn sea el tipo de datos
que manipulan, se clasifican las expresiones en: Aritmticas, Relacionales
,Lgicas

3.5.1 PRIORIDAD DE OPERADORES, EVALUACIN DE EXPRESIONES

Prioridad
Se llama prioridad al orden en el que se evala una expresin. 4D tiene una
estricta prioridad izquierda-a-derecha. Por ejemplo: 3+4*5 devuelve 35
porque la expresin es evaluada como 3+4, dando 7, el cul es multiplicado
por 5, resultando 35. Se pueden utilizar parntesis para cambiar la prioridad
izquierda-a-derecha. Por ejemplo:
3+(4*5) devuelve 23 porque se evala primero la expresin (4*5), por estar
entre parntesis. El resultado es 20, lo cual es aadido el 3, dando el
resultado final 23. Se pueden insertar parntesis dentro de otros grupos de
parntesis. Es necesario asegurarse de que cada parntesis izquierdo tiene su
correspondiente derecho. La falta o el uso incorrecto de los parntesis puede
provocar resultados inesperados o expresiones no vlidas.

EVALUACIN DE EXPRESIONES

Cuando en una expresin concurre mas de una operacin, los parntesis


indicarn prioridad, es decir, la operacin encerrada entre parntesis se
realizar en primer lugar. Adems, algunos operadores tendrn preferencia
sobre otros. Por ejemplo, en la operacin a + b / c, primero se realizar b / c y
posteriormente se le sumar a. En caso de que el programador quiera que se
sume primero a y b para posteriormente dividir por c, tendramos que hacer
(a + b) / c. Si todos los operadores de una expresin tienen la misma
prioridad, la operacin se har de izquierda a derecha, salvo cuando
tengamos exponenciales, en tal caso, el orden ser de derecha a izquierda,
por ejemplo, al hacer 2**3**2 resulta el valor 2**9 = 512

3.6. PROCESO DE CREACIN DE UN EJECUTABLE

En Java, en principio, no se pueden crear autoejecutables ya que este es un


lenguaje multiplataforma y los archivos autoejecutables son dependientes de
la plataforma. Esto provoca que tengamos que usar la consola para ejecutar
nuestros programas; lo que supone un gran inconveniente para usuarios
sobre todo acostumbrados a los entornos grficos. Existen varias soluciones
para este asunto. Aqu se explican tres de ellas. La primera es la de crear
ejecutables dependientes de la plataforma ; la segunda permite hacer ms
fcil la ejecucin en cada plataforma sin impedir su ejecucin en otra
plataforma; la tercera es vlida para cualquier plataforma y aporta otras
muchas posibilidades. Podemos crear un ejecutable de la plataforma de
varias maneras: Podemos usar traducir el cdigo java a cdigo C con Toba o
J2C. De esta forma slo nos queda compilar el cdigo C para crear el
ejecutable.

Toba es un proyecto libre cuyo desarrollo ha quedado estancado cuando Java


iba por la versin 1.1, pero podemos descargarlo todava desde su pgina
web. J2C lo puedes encontrar aqu (creo; cuando veas la pgina sabrs el
porqu de mis dudas), Existe un compilador que adems de permitirnos,
como cualquier otro compilador, crear bytecodes a partir de ficheros .java,
nos da la posibilidad de compilar el fuente (archivos .java) para obtener un
ejecutable de la plataforma y tambin permite crear un ejecutable de la
plataforma a partir del bytecode. De esta forma el cdigo obtenido es mucho
ms rpido. El programa se llama GJC y forma parte la familia de
compiladores GCC del proyecto GNU que se desarrolla bajo la GPL (General
Public License). Si lo que queremos es crear un archivo ejecutable .exe (para
plataforma Windows) y prescindir de la cualidad de multiplataforma de este
lenguaje, lo que hay que hacer es conseguir un programa que realice esta
tarea. Esto lo hacen algunas IDEs y el programa Jto Exe. Al crear un .exe lo
que hacemos es sustituir los archivos de clase de Java, al contrario que la
siguiente opcin que complementa y no sustituye