programacion - en - c-metodologia - algoritmos - y-estructura - de - datos - editorial - mcgraw - hill

programacion - en - c-metodologia - algoritmos - y-estructura - de - datos -...

(Parte 6 de 7)

Para evitar los lenguajes máquina, desde el punto de vista del usuario, se han creado otros lengua- jes que permiten escribir programas con instrucciones similares al lenguaje humano (por desgracia casi siempre inglés, aunque existen raras excepciones, como es el caso de las versiones españolas del len- guaje LOGO). Estos lenguajes se denominan de alto y hujo nivel.

Introducción a la ciencia de la computación y a la programación 21

1.5.3. Lenguajes de bajo nivel

Los lenguajes de bajo nivel son más fáciles de utilizar que los lenguajes máquina, pero, al igual, que ellos, dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensumhlacfor (assembly languuje). Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nernotécnicos (mnemonics). Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en inglés, ADD, SUB, DIV, etc.; en español, SUM, RES, DIV, etc. Una instrucción típica de suma sería:

Esta instrucción podía significar «.sutnar el número contenido e~i la posicicín de memoria M u1 niime- ro almacenado en la posicicín de memoria N y situar el resultado en la posicicín de memoria P ». Evi- dentemente, es mucho más sencillo recordar la instrucción anterior con un nemotécnico que su equiva- lente en código máquina:

Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la coinpu- tadora -en esto se diferencia esencialmente del lenguaje máquina-, sino que requiere una fase de tra- duccicín al lenguaje máquina.

El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objero, ya directamente inteligible por la computadora.

El traductor de programas fuente a objeto es un programa llamado ensamhludor (assemhler), existente en casi todas las computadoras (Fig. 1.18).

No se debe confundir -aunque en español adoptan el mismo nombre- el programa ensamhlador (assembler), encargado de efectuar la traducción del programa fuente escrito a lenguaje máquina, con el lenguaje ensamhlador (assembly languaje), lenguaje de programación con una estructura y graináti- ca definidas.

Los lenguajes ensambladores presentan la ventuju frente a los lenguajes máquina de su mayor faci- lidad de codificación y, en general, su velocidad de cálculo.

Programa fuente en ensam blador (assembly)

3rna oDjero en iáquina

I Figura 1.18. Programa ensamblador.

Los inconvenientes más notables de los lenguajes ensambladores son:

Dependencia total de la máquina, lo que impide la transportabilidad de los programas (posibili- dad de ejecutar un programa en diferentes máquinas). El lenguaje ensamblador del PC es distin- to del lenguaje ensamblador del Apple Macintosh. La formación de los programas es más compleja que la correspondiente a los programadores de alto nivel, ya que exige no sólo las técnicas de programación, sino también el conocimiento del interior de la máquina.

Hoy día los lenguajes ensambladores tiene sus aplicaciones muy reducidas en la programación de aplicaciones y se centran en aplicaciones de tiempo real, control de procesos y de dispositivos electró- nicos, etc.

2 Programación en C. Metodología, algoritmos y estructura de datos

1.5.4. Lenguajes de alto nivel

Los lenguajes de alto nivel son los más utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores. Otra razón es que un programa escrito en lenguaje de alto nivel es independiente de la máquina; esto es, las instrucciones del programa de la computadora no dependen del diseño del hurdware o de una computadora en particular. En consecuencia, los programas escritos en lenguaje de alto nivel son portables o transportables, lo que significa la posibilidad de poder ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras; al contrario que los programas en lenguaje máquina o ensamblador, que sólo se pueden ejecutar en un determinado tipo de compu- tadora. Los lenguajes de alto nivel presentan las siguientes ventajas:

El tiempo de formación de los programadores es relativamente corto comparado con otros len-

La escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos. Nom-

Las modificaciones y puestas a punto de los programas son más fáciles. Reducción del coste de los programas. Transportabilidad.

Los inconvenientes se concretan en:

guajes. bres de las instrucciones, tales como READ, WRITE:, PRINT, OPEN, etc.

Incremento del tiempo de puesta a punto, al necesitarse diferentes traducciones del programa No se aprovechan los recursos internos de la máquina, que se explotan mucho mejor en lengua-

Aumento de la ocupación de memoria. El tiempo de ejecución de los programas es mucho mayor.

AI igual que sucede con los lenguajes ensambladores, los programas fuente tienen que ser traduci-

Los lenguajes de programación de alto nivel existentes hoy son muy numerosos aunque la práctica

C C++ # COBOL FORTRAN Pascal Visual BASIC Java fuente para conseguir el programa definitivo. jes máquina y ensambladores.

dos por los programas traductores, llamados en este caso compiladores e intérpretes. demuestra que su uso mayoritario se reduce a están muy extendidos: Ada-95 Modula-2 Prolog LISP Smalltalk Eiffel son de gran uso en el mundo profesional:

Borland Delphi C++ Builder Power Builder

programación tales como HTML, XML, JavaScript,

Aunque hoy día el mundo Internet consume gran cantidad de recursos en forma de lenguajes de

1.5.5. Traductores de lenguaje

Los traducrores de lenguaje son programas que traducen a su vez los programas fuente escritos en len- guajes de alto nivel a código máquina.

Introducción a la ciencia de la computación y a la programación 23

Los traductores se dividen en:

Intérpretes. Compiladores.

7.5.5.7. Intérpretes

Un intérprete es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. Los programas intérpretes clásicos como BASIC. prácticamente ya no se utilizan, aunque las versiones Qbasic y QuickBASIC todavía se pueden encontrar y corren en las computadoras personales. Sin embar- go, está muy extendida la versión interpretada del lenguaje Smalltalk, un lenguaje orientado a objetos puro.

Programa fuente

Intérprete

Traducción y ejecución Línea a línea

Figura 1.19. Intérprete.

Programa fuente

Cornpilador

Programa objeto Figura 1.20. La compilación de programas.

1.5.5.2. Compiladores

-C, FORTRAN- a lenguaje máquina.

Un compilador es un programa que traduce los programas fuente escritos en lenguaje de alto nivel Los programas escritos en lenguaje de alto nivel se llaman programas.fuente y el programa tradu-

cido programa objeto o código objeto. El compilador traduce -sentencia a sentencia- el programa fuente. Los lenguajes compiladores típicos son: C, C++, Pascal, Java y COBOL.

1.5.6. La compilación y sus fases

La conzpilación es el proceso de traducción de programas fuente a programas objeto. El programa obje- to obtenido de la compilación ha sido traducido normalmente a código máquina.

Para conseguir el programa máquina real se debe utilizar un programa llamado montador o enlaza- dor (linker). El proceso de montaje conduce a un programa en lenguaje máquina directamente ejecuta- ble (Fig. 1.21). El proceso de ejecución de un programa escrito en un lenguaje de programación y mediante un compilador suele tener los siguientes pasos:

1. Escritura del progranza~fuente con un editor (programa que permite a una computadora actuar de modo similar a una máquina de escribir electrónica) y guardarlo en un dispositivo de alrna- cenamiento (por ejemplo, un disco).

Figura 1.21. Fases de la compilación.

24 Programación en C. Metodología, algoritmos y estructura de datos

3. 4. 5. Obtención del programa objeto. 6. 7.

El proceso de ejecución sería el mostrado en las Figuras 1.2 y 1.23. En el Capítulo 3 se describirá

Introducir el programa fuente en memoria. Compilar el programa con el compilador C. Verijcar y corregir errores de compilación (listado de errores).

El enlazador (linker) obtiene el programa ejecutable. Se ejecuta el programa y, si no existen errores, se tendrá la salida del programa.

en detalle el proceso completo y específico de ejecución de programas en lenguaje C.

Programa

Programa - Computadora Ejecutable

Resultados Figura 1.2. Ejecución de un programa.

Modificación programa fuente

Programa fuente

$. Compilador errores en la

Programa u

rq--y ejecutable I I

I Ejecución I Figura 1.23. Fases de ejecución de un programa.

Introducción a la ciencia de la computación y a la programación

1.6. EL LENGUAJE C: HISTORIA Y CARACTERISTICAS

C es el lenguaje de programación de propósito general asociado, de modo universal, al sistema opera- tivo UNIX. Sin embargo, la popularidad, eficacia y potencia de C, se ha producido porque este lengua- je no está prácticamente asociado a ningún sistema operativo, ni a ninguna máquina, en especial. Ésta es la razón fundamental, por la cual C, es conocido como el lenguaje de programación de sistemas, por excelencia.

C es una evolución de los lenguajes BCPL -desarrollado por Martin Richards- y B -desarro- llado por Ken Thompson en 1970- para el primitivo UNIX de la computadora DEC PDP-7.

C nació realmente en 1978, con la publicación de The C Programming Languaje, por Brian Ker- nighan y Dennis Ritchie (Prentice Hall, 1978). Desde su nacimiento, C fue creciendo en popularidad y los sucesivos cambios en el lenguaje a lo largo de los años junto a la creación de compiladores por gru- pos no involucrados en su diseño, hicieron necesario pensar en la estandarización de la definición del

lenguaje C.

Así, en 1983, el American National Estándar Institute (ANSI), una organización internacional de estandarización, creó un comité (el denominado X3J11) cuya tarea fundamental consistía en hacer «una definición no ambigua del lenguaje C, e independiente de la máquina». Había nacido el estándar ANSI del lenguaje C. Con esta definición de C se asegura que cualquier fabricante de software que vende un compilador ANSI C incorpora todas las características del lenguaje, especificadas por el estándar. Esto significa también que los programadores que escriban programas en C estándar tendrán la seguridad de que correrán sus modificaciones en cualquier sistema que tenga un compilador C.

C es un lenguaje de alto nivel, que permite programar con instrucciones de lenguaje de propósito general. También, C se define como un lenguaje de programación estructurado de propósito general; aunque en su diseño también primó el hecho de que fuera especificado como un lenguaje de progra- mación de Sistemas, lo que proporciona una enorme cantidad de potencia y flexibilidad.

El estándar ANSI C formaliza construcciones no propuestas en la primera versión de C, en especial, asignación de estructuras y enumeraciones. Entre otras aportaciones, se definió esencialmente, una nue- va forma de declaración de funciones (prototipos). Pero, es esencialmente la biblioteca estándar de fun- ciones, otra de las grandes aportaciones.

ticamente todos los fabricantes de sistemas operativos, UNIX, LINUX, MacOS, SOLARIS,soportan

Hoy, en el siglo XXI, C sigue siendo uno de los lenguajes de programación más utilizados en la industria del software, así como en institutos tecnológicos, escuelas de ingeniería y universidades. Prác- diferentes tipos de compiladores de lenguaje C.

1.6.1. Ventajas de C

El lenguaje C tiene una gran cantidad de ventajas sobre otros lenguajes, y son, precisamente la razón fundamental de que después de casi dos décadas de uso, C siga siendo uno de los lenguajes más popu- lares y utilizados en empresas, organizaciones y fábricas de software de todo el mundo.

Algunas ventajas que justifican el uso todavía creciente del lenguaje C en la programación de com- putadoras son:

El lenguaje C es poderoso y flexible, con órdenes, operaciones y funciones de biblioteca que se pueden utilizar para escribir la mayoría de los programas que corren en la computadora. C se utiliza por programadores profesionales para desarrollar software en la mayoría de los modernos sistemas de computadora. Se puede utilizar C para desarrollar sistemas operativos, compiladores, sistemas de tiempo real y aplicaciones de comunicaciones.

Un programa C puede ser escrito para un tipo de computadora y trasladarse a otra computadora con pocas o ninguna modificación -propiedad conocida como portabilidad-. El hecho de que

C sea portable es importante ya que la mayoría de los modernos computadores tienen un compi-

26 Programación en C. Metodología, algoritmos y estructura de datos lador C, una vez que se aprende C no tiene que aprenderse un nuevo lenguaje cuando se escriba un programa para otro tipo de computadora. No es necesario reescribir un problema para ejecu- tarse en otra computadora.

C se caracteriza por su velocidad de ejecución. En los primeros días de la informática, los proble- mas de tiempo de ejecución se resolvían escribiendo todo o parte de una aplicación en lenguaje ensam- blador (lenguaje muy cercano al lenguaje máquina).

Debido a que existen muchos programas escritos en C, se han creado numerosas bibliotecas C para programadores profesionales que soportan gran variedad de aplicaciones. Existen bibliotecas del len- guaje C que soportan aplicaciones de bases de datos, gráficos, edición de texto, comunicaciones, etc.

1.6.2. Características técnicas de C

Hay numerosas características que diferencian a C de otros lenguajes y lo hacen eficiente y potente a la vez.

Una nueva sintaxis para declarar funciones. Una declaración de función puede añadir una des- cripción de los argumentos de la función. Esta información adicional sirve para que los compila- dores detecten más fácilmente los errores causados por argumentos que no coinciden. Asignación de estructuras (registros) y enumeraciones. Preprocesador más sofisticado. Una nueva definición de la biblioteca que acompaña a C. Entre otras funciones se incluyen: acce- so al sistema operativo (por ejemplo, lectura y escritura de archivos), entrada y salida con for- mato, asignación dinámica de memoria, manejo de cadenas de caracteres. Una colección de cabeceras estándar que proporciona acceso uniforme a las declaraciones de fun- ciones y tipos de datos.

1.6.3. Versiones actuales de C

En la actualidad son muchos los fabricantes de compiladores C, aunque los más populares entre los fabricantes de software son: Microsoft, Imprise, etc.

Una evolución de C, el lenguaje C++ (C con clases) que contiene entre otras, todas las caracterís- ticas de ANSI C. Los compiladores más empleados Visual C++ de Microsoft. Builder C++ de lmprise- antigua Borland, C++ bajo UNIX y LINUX.

En el verano del 2000, Microsoft patentó una nueva versión de C++, que es C#, una evolución del

C++ estándar, con propiedades de Java y diseñado para aplicaciones en línea, Internet (on line) y fuerra de línea.

Introducción a la ciencia de la computación y a la programación 27

1.7. RESUMEN

Una computadora es una máquina para procesar infor- mación y obtener resultados en función de unos datos de entrada.

Hurdwure: parte física de una computadora (dis- positivos electrónicos). Software: parte lógica de una computadora

Las computadoras se componen de:

(Parte 6 de 7)

Comentários