Professional Documents
Culture Documents
A diferencia de los primeros sistemas de informacin del siglo XX, los de ahora estn
llegando a reas impensables, como lo son las telecomunicaciones, la inteligencia artificial,
reconocimiento de voz, automatizacin de procesos industriales y robtica, solo por
mencionar algunas.
Para lograr que estas aplicaciones, se lleven a cabo, es necesario contar con lenguajes de
programacin, que evolucionen acordes con las crecientes necesidades de este siglo.
Estos lenguajes de programacin, permiten expresar los algoritmos en una notacin formal,
que sea reconocida y ejecutada por la computadora, a esta especificacin se le conoce como
programa.
Abstraccin
La abstraccin es una operacin intelectual que ignora selectivamente partes de un todo para
facilitar su comprensin. Su uso en la resolucin de problemas, ignora detalles especficos
buscando generalidades que ofrezcan una perspectiva distinta ms favorable a su resolucin.
Gracias a las abstracciones, se puede hacer que el cdigo fuente de un programa, sea
independiente del equipo donde se est ejecutando y de las direcciones fsicas de memoria
donde se almacenen.
Por ejemplo si se declara en un programa escrito en C una variable entera como a
continuacin se muestra:
int j = 10;
1
JOYANES AGUILAR LUIS, Estructuras de datos en C++, (S/N de edicin.), ESPAA, MCGRAW-
HILL, 2007, pg.14
~1~
2
A travs de esta abstraccin de dato, se estn manejando varios aspectos como son;
El manejando a travs de la variable llamada j dos localidades contiguas de memoria
(al menos para las versiones de Borland C), que pueden estar en cualquier parte de la
memoria que est disponible, al momento de ejecucin de dicho programa. Que de no
existir, cada vez que se ejecutar el programa, se tendra que modificar, para indicar
las direcciones fsicas donde estaran modificando para recibir ese valor de diez.
Ya que durante la ejecucin del programa se hace referencia a esas dos localidades de
memoria a travs del nombre de la variable j y no por las direcciones fsicas en las
cuales esta almacenada la variable.
Los tipos de valores que puede manejar, que en este caso solo son enteros.
El rango de valores que llega a contener, que pueden ser de -(2 15-1) a + (215-1), si la
variable estuviera representada en complemento a uno o en magnitud y signo, en tanto
que sera de -(215) a + (215-1), si en complemento a dos.
Estos valores se obtienen por la cantidad de bits que maneja la variable, en este caso
como son dos localidades de memoria, cada una de ocho bits, se tiene dieseis, pero la
mitad son del lado positivo y la mitad del lado negativo que equivale a tener 2 15 de
cada lado, ahora bien varia en complemento a dos, porque en l no existe el cero
negativo.
Las operaciones que se pueden realizar sobre esta variable, que serian la suma (+), la
resta (-), la divisin (/) y la multiplicacin (*).
Gracias a las abstracciones, no se tienen que definir todos estos detalles finos, para manejar
variables enteras, basta con declararlas.
Que de no existir los programas de aplicaciones, seran demasiado elaborados, porque se
tendran que definir dependiendo el tipo de abstraccin, una gran cantidad de caractersticas,
que aparte de hacerlos mucho ms grandes en cdigo, los hara menos legibles (claros).
Es una gran utilidad para el desarrollo de programas lo que son las abstracciones, pero hay
que tener cuidado en ellas, ya que una instruccin ejecutable como la que se muestra a
continuacin:
A = B + C;
Puede indicar con el operador + (suma), que A contendr el resultado de sumar el valor de B
con lo que contiene la variable C, siempre y cuando las tres variables sean numricas al ser
declaradas como por ejemplo INTEGER A, B, C;
Pero tambin puede significar que con el operador + (concatenacin), que A contendr el
resultado de agrupar la cadena de caracteres de la variable B, con la cadena de caracteres de
C, si es que las tres variables sean de tipo string (cadena de caracteres), declaradas como por
ejemplo EBCDIC ARRAY A, B, C [1:3, 1:5];
Funciones
Las funciones son un tipo de subprogramas y que se componen de conjuntos de sentencias
(una o ms) que realizan una determinada tarea, permitiendo la reutilizacin de cdigo, as
como el descomponer un problema en subproblemas, que resolviendo independientemente
esos subproblemas se pueden combinar sus soluciones , para obtener la solucin del problema
original.
Existen funciones que son elaboradas por los diseadores de los lenguajes y tambin las que
son creadas por los desarrolladores de los sistemas de informacin.
~2~
3
De hecho las funciones son un tipo de abstracciones, que debido a las caractersticas
anteriormente mencionadas, tiene la finalidad, de facilitar junto con otras herramientas, el
trabajo de los desarrolladores de los sistemas de informacin.
Buena parte de la importancia de las funciones, radica en que los programas de los
desarrolladores, se puede hacer mucho ms cortos en cuanto a cdigo, hacerlos ms
eficientes, en cuanto al manejo de la eficiencia espacial (manejo de la memoria) y en el
manejo de la recursividad (capacidad de que una funcin se llame a si misma).
Lenguajes de programacin
La definicin de los lenguajes de programacin, resulta muy variada, pero una de las ms
sencilla y precisa es:
Un lenguaje de programacin, es un lenguaje artificial, el cual est constituido por un
conjunto de reglas sintcticas y semnticas que definen su estructura y el significado de sus
elementos, respectivamente. Puede ser utilizado para controlar el comportamiento de una
computadora.
El lenguaje de programacin es un sistema para describir computaciones en una forma legible
tanto para la mquina como para el ser humano.
Siendo una computacin cualquier proceso, que sea realizado por una computadora, tales
como clculos matemticos, manipulacin de datos, almacenamiento y recuperacin de la
informacin, procesamientos de texto, principalmente.
Los lenguajes de programacin tienen tendencia a parecerse a los lenguajes naturales, por lo
menos en sus ltimas generaciones. Se puede realizar una clasificacin de los lenguajes de
programacin, segn su nivel de abstraccin, como se muestra a continuacin:
~3~
4
Abstracciones
La abstraccin es una operacin que ignora las partes de un todo (detalles especficos)
buscando generalidades para facilitar su comprensin, esto es consiste en asilar un elemento
del resto de los otros elementos.
En otras palabras, se puede decir que la abstraccin es la capacidad de examinar algo, sin
ocuparse de de los detalles finos, los internos. Gracias a su uso la solucin de problemas se
simplifica considerablemente.
Las primeras abstracciones de datos se tienen en los lenguajes ensambladores, con el uso de
los mnemotcnicos, que aunque sigue resultando difciles de comprender, ya resultaba ms
cmodo para el programador, que el programar en ceros y unos, que es el lenguaje de la
computadora, ms adelante con la aparicin lenguajes como FORTRAN, COBOL y ALGOL
58 y 60, se introdujeron tipos de variables diferentes, que manipulaban enteros, nmeros
reales, caracteres, valores lgicos, etc.
A pesar de la creacin de ms tipos de abstracciones, se segua teniendo algunas limitantes, en
cuanto a las necesidades de los desarrolladores. Por ejemplo, el tratamiento de cadenas es una
deficiencia en FORTRAN, en tanto que la precisin y fiabilidad para clculos matemticos y
manejo de tipos de datos numricos es muy alta, inclusive maneja en forma directa las
operaciones bsicas de nmeros complejos, en su formato binomial. En cambio el manejo de
cadenas (stings), es una de las fortalezas de ALGOL, a travs de sus apuntadores.
En la dcada de los sesentas del siglo pasado, fue cuando se crearon la mayor cantidad de
lenguajes de programacin, incluyendo SIMULA-67 y ALGOL 68 y en los setentas apareci
PASCAL, los cuales ofrecieron una gran gama de tipos de datos, que permiti a los
desarrolladores modificar y ampliar los tipos de datos existentes mediante construcciones
especficas por ejemplo, arreglos (arrays) y registros.
Abstracciones en la programacin
Existen dos tipos de abstracciones que se implementan en los lenguajes de programacin y
son:
De datos.
De control.
Los dos tipos de abstracciones, a su vez cuentan con tres niveles, que miden la cantidad de
informacin contenida en la abstraccin:
Bsicas.
~4~
5
Estructuradas.
Unitarias.
Abstracciones de datos
Enteros, este tipo de datos requieren manejar valores positivos y negativos, por lo que
se hace necesario la representacin del + (mas) y del - (menos), debido a que la
computadora maneja bits (solo ceros y unos), se opto por utilizar el bit ms
significativo, para este signo, tomando tres representaciones; complemento a uno,
complemento a dos y magnitud y signo, en cualquiera de ellas, cuando el bit de signo
es cero, el nmero es positivo y cuando es uno, es negativo.
En el caso de Magnitud y signo, el bit de signo, no forma parte del nmero, solo indica
el signo y el resto de los bits representan la magnitud.
En el caso de los complementos cuando el bit de signo es uno, significa que el nmero
es negativo y est representado en complemento y adems ese bit de signo SI forma
parte del numero, pero en complemento, para obtener su magnitud, es necesario
calcular el complemento y se sabe que es negativo por el bit de signo (ya que el
complemento del complemento de un nmero es el nmero original).
~5~
6
Caracter (char), se representa a travs del uso de cdigos, ya sea creados por los
desarrolladores o por los estndares, como el ASCII o el EBCDIC.
unsigned int a; // para las variables entera sin signo (Naturales incluyendo el cero)
Unitarias: Se refiere a la reunin de cdigos que tienen una relacin entre s, dentro de un
programa, como archivos por separado, por ejemplos se tienen: los mdulos, los paquetes, las
clases (puede estar entre el nivel estructurado y unitario), componentes, libreras (bibliotecas),
etc.
Abstracciones de control
Bsicas: Son las sentencias que combinan algunas instrucciones de mquina en una sentencia
abstracta ms comprensible, por ejemplo un enunciado de asignacin (expresin), que
almacena de un valor, como resultado de una expresin aritmtica, como la que se muestra.
a = b + c; //enunciado de asignacin
~6~
7
Funciones
Un subprograma (procedimientos o funciones), es una seccin de cdigo independiente que
realiza una tarea especfica dentro del programa y es uno de los componentes principales de
un programa.
Las funciones son tipos de abstracciones que caen tanto en los tipos da Datos Unitarias, como
en la de Control Unitarias y parte de las de Control Estructuradas, las que fueron comentadas,
en prrafos anteriores. Adems constan de un grupo de sentencias (una o ms) que realizan
una determinada tarea. El concepto de subprograma es una evolucin del antiguo concepto de
subrutina, presente en lenguajes como ensamblador, Basic o primeras versiones de Fortran.
Su declaracin es igual que la de una variable y toda funcin debe de tener un tipo, que
indicara el tipo de valor que la funcin devolver al terminar de ejecutarse (aunque pueden
existir funciones que no retornen ningn valor, que en tal caso serian de tipo void).
A las funciones se les pueden enviar opcionalmente datos a travs de los parmetros de la
funcin, los cuales son variables a los que se les asigna un valor en cada llamada a la funcin
y como variables que son, tambin cuentan con un tipo de datos.
Hay dos formas de pasar valores de los parmetros a una funcin y son:
Por valor.- como su nombre lo indica, el valor que se pasa es una copia del valor de la
variable (otras localidades de memoria que contienen la copia del valor original), una
vez que se termina de ejecutar la funcin, la copia se destruye y se sigue conservando
el valor original. En caso de la recursividad, cada, vez que se llame a s misma la
~7~
8
funcin, se estn generando, copias de los parmetros, con sus respectivos valores
(que probablemente se estn modificando en cada llamada).
Por referencia.- no se pasa el contenido de una variable, si no su posicin de
almacenamiento en la memoria, por tanto su contenido puede ser variado dentro de la
funcin, ya que se est manejando la misma variable, no se crea copia alguna.
01
FIGURA 2.1 Paso del valor de los parmetros, por valor y por referencia.
Las primeras son de tipo computacional que son diseadas para realizar
operaciones con los argumentos y regresan un valor basado en el resultado de esa
operacin.
Las segundas son aquellas que no regresan ningn valor, es decir son
estrictamente procedurales (tipo void, en el caso de C).
Una funcin es una seccin de cdigo separada del programa principal que puede ser llamada
en un momento dado (llamada a la funcin) y que una vez acabada su ejecucin vuelve a la
instruccin siguiente donde se realiz su llamada. Una funcin hace el papel de un programa,
ya que cuenta con una seccin de declaraciones (variables, constantes, etc.) y puede contar
con datos de entrada y de salida, permitiendo que una funcin sea independiente del programa
principal, salvo por el tener que ser invocada.
~8~
9
programa principal o quizs por otra funcin o procedimiento, ya que un subprograma, puede
llamar a otro y ese otro a su vez llamar a otro diferente o a s mismo.
Es de hacer notar que los subprogramas, pueden manejar sus propias variables, que se
conocen como variables locales, las cuales se declaran dentro del cuerpo del subprograma y
que son utilizadas, para realizar su trabajo, pero una vez concluido, estas variables locales se
destruyen, salvo como en lenguajes como C, que se pueden conservar, al momento de ser
declaradas, anteponindoles la palabra reservada static, por ejemplo, se tiene la siguiente
definicin de una funcin:
4. BIBLIOGRAFA Y MASOGRAFA
1. AHO ALFRED V., HOPCROFT JOHN E. Y ULLMAN JEFFREY D. ULLMAN , Estructuras de Datos y Algoritmos, USA,
ADDISON-WESLEY IBEROAMERICANA, 1988, 438 pp.
2. BOWMAN CHARLES F., Algoritmos y Estructuras de Datos Aproximacin en C.(s/impresin.), MXICO, OXFORD
UNIVERSITY PRESS, 1999, 333 pp.
3. CENTRO DE SERVICIOS DE CMPUTO , B6700 ALGOL USERS GUIDE, (S/N), USA, CSC UNAM, 1972, 102 pp.
4. DEITEL H.M. Y DEITEL P.J., Como programar en C/C++, (2 edicin.), MXICO, PEARSON EDUCACIN PRENTICE-
HALL,1995, 927 pp.
5. EUN AVILA JORGE IVAN Y CORDERO BORBOA LUIS GONZAGA., Estructuras de datos, (1 reimpresin.), MXICO,
LIMUSA, tomada de la primera edicin de la UNAM (FACULTAD DE INGENIERA), 1989, 219 pp.
6. GALVE JAVIER y GONZLEZ JUAN, ALGORITMICA diseo y anlisis de algoritmos Funcionales e Imperativos (S/N de
edicin.), U.S.A. Addison-Wesley Iberoamericana,1993, 502 pp.
7. GOODRICH MICHAEL T. Y TAMASSIA ROBERTO, Estructuras de Datos en Java, (2. Edicin), MXICO, THOMPSON,
2004, 633 pp.
8. LOUDEN KENNETH C., Lenguajes de Programacin principios y prctica, (2a edicin.), ESPAA, MCGRAW-HILL, 2007,
633 pp.
9. GOODRICH MICHAEL T. Y TAMASSIA ROBERTO, Estructuras de Datos en Java, (2. Edicin en ingls y 1 en
espaol.), MXICO, COMPAA EDITORIAL CONTINENTAL GRUPO PATRIA CULTURAL, 2002, 641 pp.
10. KNUTH, DONALD E., El arte de programar ordenadores, Volumen I Algoritmos Fundamentales, (reimpresin.), ESPAA,
REVERT,2002, 672 pp.
11. KRUSE ROBERT L. , Estructuras de Datos y Diseo de Programas, (1. Edicin en ingls y 1 en espaol.), MXICO,
PRENTICE-HALL HISPANOAMERICANA, 1988, 488 pp.
12. LANGSAM YEDIDYAH, AUGENSTEIN MOSHE J. Y TENENBAUM AARN M. , Estructuras de Datos con C y C++, (2.
edicin.), MXICO, PRENTICE-HALL HISPANOAMERICANA, 1997, 672 pp.
13. RAMREZ FELIPE, Introduccin a la programacin, Algoritmos y su implementacin en VB.NET, C#, Java y C++ (2
edicin.), MXICO, Alfaomega,2007, 520 pp.
~9~
10
14. Savage Carmona Jess y Vzquez Gabriel, Diseo de Microprocesadores, (S/N de edicin.), MXICO, UNAM, Facultad
de Ingeniera, 2004. 348 pp.
15. TUCKER ALLEN Y NOONAN ROBERT, Lenguajes de Programacin principios y Paradigmas, Sin nm. de edicin. Mc
Graw Hill, Mxico, 2003.
16. SCHILDT HERBERT, Manual de referencia C, (4 edicin.), ESPAA, McGRAW-HILL, 2000, 709 pp.
17. WIRTH, NIKLAUS, Algorithms + Data Structures = Programs, (1. impresin.), USA, PRENTICE-HALL, INC,1976, 366 pp.
18. WIRTH, NIKLAUS, Algoritmos y Estructuras de Datos, (1. impresin.), MXICO, PRENTICE- HALL
HISPANOAMERICANA, 1987, 305 pp.
19. Abstraccin de datos y abstraccin de control. Evolucin segn los paradigmas. (31 de julio de 2011). Electronic
Reference [en lnea]. Recuperado el da 9 de marzo de 2012 de
http://wiki.geosincrona.com/index.php?
title=Abstraccion_de_datos_y_abstraccion_de_control._Evolucion_segun_los_paradigmas
20. Blog de Computacin. (21 de agosto de 2012). . Electronic Reference [en lnea]. Que es la Abstraccin de Datos y
Modelos de Datos. Recuperado el 8 de marzo de 2012 de http://blogdecomputacion.com/blog/2010/08/21/que-es-la-
abstraccion-de-datos-y-modelos-de-datos/
21. Funciones y subrutinas en C. Pons Vivanco Ramn. (31 de octubre de 2003). Electronic Reference[en lnea].
Recuperado el da 14 de marzo de 2012 de http://laurel.datsi.fi.upm.es/~rpons/personal/trabajos/curso_c/node71.html
22. Apuntes de informtica III, Luis Arenas Hernndez. Electronic Reference[en lnea]. Recuperado el da 30 de marzo de
2011 de http://fcasua.contad.unam.mx/apuntes/interiores/docs/2005/informatica/3/1367.pdf
23. Lenguajes de programacin. Electronic Reference [en lnea]. Recuperado el da 10 de marzo de 2012 de
http://www.frt.utn.edu.ar/sistemas/paradigmas/lenguajes.htm
24. Lenguajes de programacin. Principios y prctica. (2004). Electronic Reference [en lnea]. Recuperado el 9 de Marzo de
2012 de http://books.google.com.mx/books?
id=MnrVc_GVKbMC&printsec=frontcover&hl=es&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false
25. Tipo de dato abstracto. (1 de septiembre de 2011). Electronic Reference [en lnea]. Recuperado el 8 de marzo de 2012 de
http://es.wikipedia.org/wiki/Tipo_de_dato_abstracto
~ 10 ~