28
Historia del Lenguaje C C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell de AT&T. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

Diseño de Algoritmos

Embed Size (px)

Citation preview

Historia del Lenguaje CC es un lenguaje de

programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell de AT&T. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

El antecesor del Lenguaje C fue el Lenguaje B, que fue creado en 1970, por Ken Thompson, con la finalidad de reestructurar al sistema UNIX, que originalmente había sido escrito y producido en lenguaje ensamblador.

El Lenguaje B, sucedió al Lenguaje BCPL, que fue escrito éste último por el programador Martín Richard en 1967, el lenguaje B era un lenguaje evolucionado e independiente de la máquina.

Dennis Ritchie, modifica el Lenguaje B, para así crear el Lenguaje C, para posteriormente rescribir el sistema UNÍS en éste lenguaje. La diferencia entre el Lenguaje B y el Lenguaje C, es que este C permitía el diseño de nuevos tipos de datos, es decir daba la libertad al usuario de diseñar sus propios tipos de datos para el manejo que mejor le convenga , esta utilidad es muy utilizada en la actualidad por que permite al programador a tener un pleno control del programa que realiza y así poder adaptar cada circunstancia que se le presente a las necesidades que independientemente provocan cada situación.

Unas de las peculiaridades de C es su riqueza de operadores. También existen toda una serie de operaciones que pueden hacerse con el Lenguaje C, que realmente no están incluidas en el compilador, si no que las realiza un pre-procesador justo antes de la compilación.

Las dos más importantes son # define (directriz de sustitución simbólica o de definición), esta directriz es utilizada cuando declaramos una constante en algún programa, dentro del editor del Lenguaje C; y también # Include (Directriz de inclusión en el fichero fuente).

Qué es un algoritmo?

Un algoritmo es un método para resolver un problema.

ProgramaDiseño delalgoritmo

Programa de

Computadora

Los pasos para la resolución de un problema son:

◦ I . Diseño del algoritmo que describe la secuencia ordenada de pasos que conducen a la solución de un problema dado. (Análisis del problema y desarrollo del algoritmo.)

◦ 2. Expresar el algoritmo como un programa en un lenguaje de programación adecuado. (Fase de codificación.)

◦ 3. Ejecución y validación del programa por la computadora.

Características de los algoritmosUn algoritmo debe ser preciso e

indicar el orden de realización de cada paso.

Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo.

Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; es decir, debe tener un número finito de pasos.

Ejemplo: Un cliente ejecuta un pedido u una fábrica.

La fábrica examina en su banco de datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario, rechazará el pedido. Redactar el algoritmo correspondiente.

◦ 1. Inicio.◦ 2. Leer el pedido.◦ 3. Examinar la ficha del cliente.◦ 4. Si el cliente es solvente, aceptar pedido; en

caso contrario, rechazar pedido.◦ 5. Fin.

Ejercicios en Clase.Diseñar una solución para

resolver cada uno de los siguientes problemas en algoritmos adecuados:

a) Realizar una llamada telefónica desde un teléfono público.

b) Cocinar un pastel.c) Cambiar una llanta a un auto.d) Hacer una suma.

EL SOFTWARE (LOS PROGRAMAS)

Relación entre programas de aplicación y programas del sistema.

LENGUAJES DE PROGRAMACIÓN Para que un procesador realice un proceso se le debe

suministrar en primer lugar un algoritmo adecuado. El procesador debe ser capaz de interpretar el algoritmo, lo que significa:

◦ Comprender las instrucciones de cada paso.◦ Realizar las operaciones correspondientes.

Cuando el procesador es una computadora, el algoritmo se ha de expresar en un formato que se denomina programa. Un programa se escribe en un lenguaje de programación y las operaciones que conducen a expresar un algoritmo en forma de programa se llaman programación. Así pues, los lenguajes utilizados para escribir programas de computadoras son los lenguajes de programación y programadores son los escritores y diseñadores de programas.

Los principales tipos de lenguajes utilizados en la actualidad son tres:

◦Lenguajes máquina.◦Lenguaje de bajo nivel (ensamblador).◦Lenguajes de alto nivel.

Los lenguajes máquina son aquellos que están escritos en lenguajes directamente inteligibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres -dígitos- 0 y 1) que especifican una operación, y las posiciones (dirección) de memoria implicadas en la operación se denominan instrucciones de máquina o código máquina. El código máquina es el conocido código binario.

Las ventajas de programar en lenguaje máquina son la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior, lo que supone una velocidad de ejecución superior a cualquier otro lenguaje de programación.

Los inconvenientes son:◦ Dificultad y lentitud en la codificación.◦ Poca fiabilidad.◦ Dificultad grande de verificar y poner a

punto los programas.◦ Los programas sólo son ejecutables en el

mismo procesador (UPC, unidad Central de Proceso).

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 ensamblador(assembly languaje). Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos (mnemonics). Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en inglés, ADD, SUB, DIV, etc.

EjemploUna instrucción típica de suma

sería:ADD M, N, P

su equivalente en código máquina:

0110 1001 1010 1011

Hay que traducir al lenguaje de máquina.

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

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

◦ Dependencia total de la máquina, lo que impide la transportabilidad de los programas (posibilidad de ejecutar un programa en diferentes máquinas). El lenguaje ensamblador del PC es distinto 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.

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 hardware o de una computadora en particular.

Los lenguajes de alto nivel presentan las siguientes ventajas:◦ El tiempo de formación de los programadores

es relativamente corto comparado con otros lenguajes

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

◦ 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:◦ 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 lenguajes máquina y ensambladores.

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

mucho mayor.

Traductores de lenguajeLos traductores se dividen en:

◦Intérpretes.◦Compiladores.

La compilación y sus fases

Ventajas de C 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-.

Características técnicas de C

Una nueva sintaxis para declarar funciones. Una declaración de función puede añadir una descripción de los argumentos de la función. Esta información adicional sirve para que los compiladores 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: acceso al sistema operativo (por ejemplo, lectura y escritura de archivos), entrada y salida con formato, 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 funciones y tipos de datos.

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ísticas de ANSI C. Los compiladores más empleados Visual C++ de microsoft. Builder C++, Borland, C++ bajo UNIX y LINUX.

En el 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

fuera de línea.