Prof. Eliezer Córdova
Algoritmos y Computación Avanzada
Lenguajes de
Programación
Prof. Eliezer Córdova
¿Porqué estudiar lenguajes de programación?
 La pregunta es ¿cuál es la ventaja de estudiar una
variedad de lenguajes diferentes que es poco
probable que uno llegue a utilizar?:
Prof. Eliezer Córdova
 Mejorar la habilidad para desarrollar algoritmos eficaces.
 Mejorar el uso del lenguaje de programación disponible.
 Hacer posible una mejor elección del lenguaje de
programación.
 Facilitar el diseño de un nuevo lenguaje.
¿Porqué estudiar lenguajes de programación?
Prof. Eliezer Córdova
El papel de los lenguajes de programación
 Inicialmente los lenguajes se proyectaban para ejecutar
programas con eficiencia. A mediados de los años sesenta la
programación cambia:
 Las máquinas son menos costosas y aumentan los costos de
programación.
 Surge la necesidad de trasladar programas de unos sistemas a otros.
 El mantenimiento del producto consume mayores recursos de
cómputo.
 La tarea del lenguaje de alto nivel es la de facilitar el desarrollo de
programas correctos para resolver problemas en alguna área de
aplicación dada.
Prof. Eliezer Córdova
El papel de los lenguajes de programación
 Los lenguajes de programación evolucionan o dejan de
usarse. Influencias que obligan a la revisión de los
lenguajes:
 Capacidad de las computadoras.
 Aplicaciones: Los requerimientos de nuevas áreas de aplicación
afectan los diseños de nuevos lenguajes y las revisiones y
ampliaciones de los más antiguos.
 Métodos de programación.
 Métodos de implementación.
 Estudios teóricos.
 Estandarización.
Prof. Eliezer Córdova
Atributos de un buen lenguaje
 Claridad, sencillez y unidad (legibilidad): La sintaxis del lenguaje afecta
la facilidad con la que un programa se puede escribir, por a prueba, y más
tarde entender y modificar.
 Ortogonalidad: Capacidad para combinar varias características de un
lenguaje en todas las combinaciones posibles, de manera que todas ellas
tengan significado.
 Naturalidad para la aplicación: La sintaxis del programa debe permitir
que la estructura del programa refleje la estructura lógica subyacente.
 Apoyo para la abstracción: Una parte importante de la tarea del
programador es proyectar las abstracciones adecuadas para la solución
del problema y luego implementar esas abstracciones empleando las
capacidades más primitivas que provee el lenguaje de programación
mismo.
Prof. Eliezer Córdova
Atributos de un buen lenguaje
 Facilidad para verificar programas: La sencillez de la estructura
semántica y sintáctica ayuda a simplificar la verificación de programas.
 Entorno de programación: Facilita el trabajo con un lenguaje
técnicamente débil en comparación con un lenguaje más fuerte con poco
apoyo externo.
 Portabilidad de programas
 Costo de uso:
 1. Costo de ejecución del programa.
 2. Costo de traducción de programas.
 3. Costo de creación, prueba y uso de programas.
 4. Costo de mantenimiento de los programas: costo total del ciclo de vida.
Prof. Eliezer Córdova
Dominios de aplicación
 Aplicaciones de los años sesenta. Durante la década de
1960, casi toda la programación se podía dividir en cuatro
modelos básicos de programación:
 De procesamiento de negocios (COBOL).
 Científicos (FORTRAN).
 De sistemas (ALGOL, JOVIAL, etc.): Para construir sistemas
operativos.
 De Inteligencia Artificial (LISP).
Prof. Eliezer Córdova
Dominios de aplicación
 Aplicaciones de los años noventa. La situación actual tiene
más dominios de aplicación:
 De procesamiento de negocios (COBOL).
 Científicos (FORTRAN 90).
 De sistemas: Con el advenimiento de los microprocesadores baratos
que gobiernan automóviles, hornos de microondas, etc., ha
aumentado la necesidad de contar con lenguajes para tiempo real.
Prof. Eliezer Córdova
Dominios de aplicación
 Aplicaciones de los años noventa. La situación actual tiene
más dominios de aplicación:
 Edición: Los sistemas de procesamiento de texto tienen su propia
sintaxis para mandatos de entrada y archivos de salida. El traductor
TEX produce un programa en el lenguaje PostScript de descripción de
páginas. PostScript se puede compilar por medir de un procesador
adecuado. Éste suele ser la impresora láser que se utiliza para
imprimir el documento.
 De proceso: Dentro de UNIX, el lenguaje de comandos de usuario se
conoce como shell y a los programas se les llama guiones de shell
(parecidos a los archivos .bat). Estos guiones se pueden invocar
siempre que ocurren ciertas condiciones habilitadoras.
Prof. Eliezer Córdova
Estandarización de los lenguajes
 Los estándares son en general de dos clases:
 1. Estándares patentados (DE PACTO): Son las definiciones
elaboradas por la compañía que desarrollo el lenguaje y que es su
propietaria.
 2. Estándares de consenso (DE FACTO): Se trata de documentos
elaborados por organizaciones con base en un acuerdo entre los
participantes pertinentes. Método principal para asegurar la
uniformidad entre varias implementaciones de un lenguaje.
Ejemplo: ANSI, IEEE, ISO, etc.
Prof. Eliezer Córdova
Estandarización de los lenguajes
 Proceso en el desarrollo de normas: Un grupo decide
que un lenguaje requiere una definición estándar. El
organismo normativo organiza un grupo de trabajo de
voluntarios para desarrollar esa norma. Cuando el grupo de
trabajo llega a un acuerdo sobre su norma, se somete a
votación por parte de un bloque más grande de individuos
interesados. Los desacuerdos se resuelven y se produce el
estándar del lenguaje.
Prof. Eliezer Córdova
Uso de estándares en forma eficaz
 Es necesario ocuparse de tres cuestiones:
 Oportunidad (¿Cuándo estandarizar un lenguaje?): Lo deseable sería
estandarizar un lenguaje lo suficientemente pronto para que exista
suficiente experiencia en el uso del lenguaje, pero no demasiado tarde, para
no alentar muchas implementaciones incompatibles.
 Conformidad (¿Qué significa que un programa se adhiere a un estándar y
que un compilador compila un estándar?): Si existe un estándar para un
lenguaje, se suele hablar de conformidad con respecto a ese estándar. Un
programa es conforme si sólo utiliza características definidas en el
estándar. Un compilador conformable es uno que, cuando se le da un
programa conforme, produce un programa ejecutable que genera la salida
correcta.
Prof. Eliezer Córdova
 Es necesario ocuparse de tres cuestiones:
 Obsolescencia (¿Cuándo envejece un estándar y cómo se modifica?): Los
estándares se tienen que revisar cada 5 años y ya sea renovarse o
descartarse. Casi todos los estándares requieren compatibilidad hacia
atrás; El nuevo estándar debe incluir versiones más antiguas del lenguaje.
Esto tiene el problema de que el lenguaje se puede hacer difícil de manejar
a causa de las numerosas construcciones obsoletas.
Una característica es obsolescente si es candidata a ser descartada en la
próxima versión del estándar.
Una característica desaprobada se puede volver obsolescente en el
próximo estándar, por lo cual puede ser descartada después de dos
revisiones.
Uso de estándares en forma eficaz
Prof. Eliezer Córdova
Efectos de los entornos sobre los lenguajes
 Cuatro clases generales de entornos objetivo cubre
casi todas las aplicaciones de programación:
 de procesamiento por lotes,
 interactivo,
 de sistema empotrado, y
 de programación (entorno interactivo).
Cada uno plantea distintos requerimientos sobre los
lenguajes adaptados a esos entornos.
Prof. Eliezer Córdova
Entornos de procesamiento por lotes
 El más simple entorno operativo se compone sólo de archivos externos
de datos. Un programa toma un cierto conjunto de archivos de datos
como entrada, procesa los datos y produce un conjunto de archivos de
datos de salida. El nombre de procesamiento por lotes viene porque los
datos de entrada se reúnen en “lotes” de archivos y son procesados en
lotes por programas.
 Los archivos constituyen la base para casi toda la estructura de E/S.
 Un error que termine la ejecución del programa es aceptable aunque costoso.
No es posible la ayuda externa por parte del usuario para manejar o corregir
errores de inmediato.
 Carencia de restricciones de regulación de tiempo. No hay recursos para
monitorear o afectar directamente la velocidad de ejecución del programa.
Prof. Eliezer Córdova
Entornos interactivos
 El programa interactúa durante su ejecución directa con un
usuario en una consola de visualización, enviando
alternativamente salidas hacia ésta y recibiendo entradas
desde el teclado o ratón (procesadores de texto, hojas de
cálculo, juegos, etc.).
 Las características de E/S interactivas son diferentes de las
operaciones ordinarias con archivos.
 El programa debe ser capaz de gestionar el manejo de errores. La
terminación del programa como respuesta aun error no es
ordinariamente aceptable (a diferencia del procesamiento por lotes).
Prof. Eliezer Córdova
Entornos interactivos
 El programa interactúa durante su ejecución directa con un
usuario en una consola de visualización, enviando
alternativamente salidas hacia ésta y recibiendo entradas
desde el teclado o ratón (procesadores de texto, hojas de
cálculo, juegos, etc.).
 Los programas interactivos deben utilizar con frecuencia algún
concepto de restricciones de tiempo.
 El concepto de programa principal suele estar ausente. En su lugar,
el programa se compone de un conjunto de subprogramas y el
usuario introduce el “programa principal como una serie de
comandos en el terminal.
Prof. Eliezer Córdova
Entornos de sistemas incrustados (empotrados)
 Un sistema de computadora que se usa para controlar parte de un sistema
más grande como una planta industrial, una aeronave, etc., se conoce con
el nombre de sistema de computadora incrustado. El fallo de una aplicación
empotrada puede poner en peligro la vida. La seguridad de funcionamiento
y corrección son atributos principales.
 Suelen operar sin un sistema operativo subyacente y sin archivos de entorno y
dispositivos de E/S usuales. El programa debe interactuar directamente con la
máquina.
 El manejo de errores tiene gran importancia. Cada programa debe estar
preparado para manejar todos los errores en forma interna, adoptando acciones
apropiadas para recuperarse y continuar. La interrupción del programa no es
aceptable y no hay un usuario en el entorno que pueda proporcionar la
corrección interactiva del error.
Prof. Eliezer Córdova
Entornos de sistemas incrustados (empotrados)
 Un sistema de computadora que se usa para controlar parte de un sistema
más grande como una planta industrial, una aeronave, etc., se conoce con
el nombre de sistema de computadora incrustado. El fallo de una aplicación
empotrada puede poner en peligro la vida. La seguridad de funcionamiento
y corrección son atributos principales.
 Operan en tiempo real, donde la respuesta las entradas debe producirse en
intervalos de tiempo restringidos.
 Suele ser un sistema distribuido, compuesto por más de una computadora.
 Una vez iniciadas las tareas, se ejecutan por lo común de forma simultánea e
indefinida.
Prof. Eliezer Córdova
Entornos de programación
 Es el entorno en el cual los programas se crean y se ponen a prueba. Consiste en
un conjunto de herramientas (editor, depurador, verificador, generadores de datos
de prueba, etc.) de apoyo y un lenguaje para invocarlas.
 Al compilar por separado cada subprograma el compilador necesita información
de:
 La especificación del número, orden y tipo de parámetros.
 La declaración de tipo de datos.
 La definición de un tipo de datos (para la declaración local de variables).
Prof. Eliezer Córdova
Entornos de programación
 Un problema común, es encontrar, durante el ensamblado del programa final
completo, que varios subprogramas y otras unidades de programa tienen nombres
(de variables) iguales. Métodos para evitar este problema:
1. Todo nombre compartido debe ser único. Se deben usar convenciones para la
asignación de nombres desde un principio.
2. Definir, en el lenguaje, reglas de ámbito, para ocultar nombre.
3. Los nombres se pueden conocer agregando explícitamente sus definiciones desde una
biblioteca externa (herencia en POO).
Prof. Eliezer Córdova
Entornos de programación
 Características que ayudan a poner a prueba y depurar programas.
1. Características para rastreo de ejecución.
2. Puntos de interrupción. Cuando se alcanza un punto de interrupción durante la
ejecución del programa, la misma se interrumpe y el control se traslada al programador
en un terminal.
3. Asertos: expresan relaciones que deben cumplirse entre los valores de las variables en
ese punto del programa.
Prof. Eliezer Córdova
Marcos de ambiente
 Este marco suministra
servicios como un
depósito de datos,
interfaz gráfica de
usuario, seguridad y
servicios de
comunicación.
Prof. Eliezer Córdova
Paradigmas de Programación
 La clasificación de los lenguajes atendiendo a sus
características intrínsecas conduce a los llamados
paradigmas de programación. Un paradigma de
programación es un modelo de programación que
engloba a ciertos lenguajes que comparten:
 Elementos estructurales: ¿con qué se confeccionan los
programas?
 Elementos metodológicos: ¿cómo se confecciona un programa?
Prof. Eliezer Córdova
Programación Imperativa o Procedural: C
 Desarrollado por Ritchie y Thompson en el 72.
 Multiuso (inicialmente para sistemas)
 Sintaxis compacta
Prof. Eliezer Córdova
Programación Imperativa o Procedural: C
 Historia
 60 Thompson desarrolla en Bell Multics, se crea un
lenguaje llamado B.
 70, el proyecto UNIX avanza y el lenguaje B se queda
pequeño, se comienza a desarrollar C
 82, C es distribuido con Unix y muy usado en las
universidades. ANSI comienza a desarrollar un
estándar
Prof. Eliezer Córdova
Perspectiva del lenguaje C
 La programación en C se compone de:
 El lenguaje C, con un limitado nº de estructuras de
control. No hay primitivas si no se usan las librerías.
 El preprocesador de C (#), estos enunciados no forman
parte del lenguaje C y son preprocesados antes de la
compilación.
Prof. Eliezer Córdova
Perspectiva del lenguaje C
 La programación en C se compone de:
 preprocesados antes de la compilación.
 Los supuestos de interfaz C (.h), lor archivos “header”
informan al usuario de las funciones incluidad en una
biblioteca.
 Las bibliotecas de C. Archivos obj o lib conteniendo la
implementación de las funciones.
Prof. Eliezer Córdova
Objetos de datos
 Tipos de datos primitivos
 Los nombres de variables no pueden comenzar con dígito.
Sensible a may-min.
 Los datos son enteros (char, short, long), enumerados (enum) o
float. Los punteros se declaran con el tipo seguido de ‘*’.
 No hay booleanos.
Prof. Eliezer Córdova
Objetos de datos
 Tipos de datos estructurados
 Arrays, comienzan en 0 y se guardan por filas.
 Tipos definidos por el usuario. Struct { }.
Prof. Eliezer Córdova
Representación de almacenamiento
 Los tipos de C emplean básicamente la representación
hardware de sus datos.
 Una variable de tipo array es también el puntero al
primer elemento del array que comienza con el índice 0.
 Es posible inicializar cualquier variable declarada
estáticamente.
Prof. Eliezer Córdova
Evaluación del lenguaje
 C es muy potente y popular:
 Flexible
 Eficiente
 Disponible (se distribuye con Unix)
 Portatil
 Pero C también permite una programación
descuidada y propensa a errores.

Lenguajes de programación

  • 1.
    Prof. Eliezer Córdova Algoritmosy Computación Avanzada Lenguajes de Programación
  • 2.
    Prof. Eliezer Córdova ¿Porquéestudiar lenguajes de programación?  La pregunta es ¿cuál es la ventaja de estudiar una variedad de lenguajes diferentes que es poco probable que uno llegue a utilizar?:
  • 3.
    Prof. Eliezer Córdova Mejorar la habilidad para desarrollar algoritmos eficaces.  Mejorar el uso del lenguaje de programación disponible.  Hacer posible una mejor elección del lenguaje de programación.  Facilitar el diseño de un nuevo lenguaje. ¿Porqué estudiar lenguajes de programación?
  • 4.
    Prof. Eliezer Córdova Elpapel de los lenguajes de programación  Inicialmente los lenguajes se proyectaban para ejecutar programas con eficiencia. A mediados de los años sesenta la programación cambia:  Las máquinas son menos costosas y aumentan los costos de programación.  Surge la necesidad de trasladar programas de unos sistemas a otros.  El mantenimiento del producto consume mayores recursos de cómputo.  La tarea del lenguaje de alto nivel es la de facilitar el desarrollo de programas correctos para resolver problemas en alguna área de aplicación dada.
  • 5.
    Prof. Eliezer Córdova Elpapel de los lenguajes de programación  Los lenguajes de programación evolucionan o dejan de usarse. Influencias que obligan a la revisión de los lenguajes:  Capacidad de las computadoras.  Aplicaciones: Los requerimientos de nuevas áreas de aplicación afectan los diseños de nuevos lenguajes y las revisiones y ampliaciones de los más antiguos.  Métodos de programación.  Métodos de implementación.  Estudios teóricos.  Estandarización.
  • 6.
    Prof. Eliezer Córdova Atributosde un buen lenguaje  Claridad, sencillez y unidad (legibilidad): La sintaxis del lenguaje afecta la facilidad con la que un programa se puede escribir, por a prueba, y más tarde entender y modificar.  Ortogonalidad: Capacidad para combinar varias características de un lenguaje en todas las combinaciones posibles, de manera que todas ellas tengan significado.  Naturalidad para la aplicación: La sintaxis del programa debe permitir que la estructura del programa refleje la estructura lógica subyacente.  Apoyo para la abstracción: Una parte importante de la tarea del programador es proyectar las abstracciones adecuadas para la solución del problema y luego implementar esas abstracciones empleando las capacidades más primitivas que provee el lenguaje de programación mismo.
  • 7.
    Prof. Eliezer Córdova Atributosde un buen lenguaje  Facilidad para verificar programas: La sencillez de la estructura semántica y sintáctica ayuda a simplificar la verificación de programas.  Entorno de programación: Facilita el trabajo con un lenguaje técnicamente débil en comparación con un lenguaje más fuerte con poco apoyo externo.  Portabilidad de programas  Costo de uso:  1. Costo de ejecución del programa.  2. Costo de traducción de programas.  3. Costo de creación, prueba y uso de programas.  4. Costo de mantenimiento de los programas: costo total del ciclo de vida.
  • 8.
    Prof. Eliezer Córdova Dominiosde aplicación  Aplicaciones de los años sesenta. Durante la década de 1960, casi toda la programación se podía dividir en cuatro modelos básicos de programación:  De procesamiento de negocios (COBOL).  Científicos (FORTRAN).  De sistemas (ALGOL, JOVIAL, etc.): Para construir sistemas operativos.  De Inteligencia Artificial (LISP).
  • 9.
    Prof. Eliezer Córdova Dominiosde aplicación  Aplicaciones de los años noventa. La situación actual tiene más dominios de aplicación:  De procesamiento de negocios (COBOL).  Científicos (FORTRAN 90).  De sistemas: Con el advenimiento de los microprocesadores baratos que gobiernan automóviles, hornos de microondas, etc., ha aumentado la necesidad de contar con lenguajes para tiempo real.
  • 10.
    Prof. Eliezer Córdova Dominiosde aplicación  Aplicaciones de los años noventa. La situación actual tiene más dominios de aplicación:  Edición: Los sistemas de procesamiento de texto tienen su propia sintaxis para mandatos de entrada y archivos de salida. El traductor TEX produce un programa en el lenguaje PostScript de descripción de páginas. PostScript se puede compilar por medir de un procesador adecuado. Éste suele ser la impresora láser que se utiliza para imprimir el documento.  De proceso: Dentro de UNIX, el lenguaje de comandos de usuario se conoce como shell y a los programas se les llama guiones de shell (parecidos a los archivos .bat). Estos guiones se pueden invocar siempre que ocurren ciertas condiciones habilitadoras.
  • 11.
    Prof. Eliezer Córdova Estandarizaciónde los lenguajes  Los estándares son en general de dos clases:  1. Estándares patentados (DE PACTO): Son las definiciones elaboradas por la compañía que desarrollo el lenguaje y que es su propietaria.  2. Estándares de consenso (DE FACTO): Se trata de documentos elaborados por organizaciones con base en un acuerdo entre los participantes pertinentes. Método principal para asegurar la uniformidad entre varias implementaciones de un lenguaje. Ejemplo: ANSI, IEEE, ISO, etc.
  • 12.
    Prof. Eliezer Córdova Estandarizaciónde los lenguajes  Proceso en el desarrollo de normas: Un grupo decide que un lenguaje requiere una definición estándar. El organismo normativo organiza un grupo de trabajo de voluntarios para desarrollar esa norma. Cuando el grupo de trabajo llega a un acuerdo sobre su norma, se somete a votación por parte de un bloque más grande de individuos interesados. Los desacuerdos se resuelven y se produce el estándar del lenguaje.
  • 13.
    Prof. Eliezer Córdova Usode estándares en forma eficaz  Es necesario ocuparse de tres cuestiones:  Oportunidad (¿Cuándo estandarizar un lenguaje?): Lo deseable sería estandarizar un lenguaje lo suficientemente pronto para que exista suficiente experiencia en el uso del lenguaje, pero no demasiado tarde, para no alentar muchas implementaciones incompatibles.  Conformidad (¿Qué significa que un programa se adhiere a un estándar y que un compilador compila un estándar?): Si existe un estándar para un lenguaje, se suele hablar de conformidad con respecto a ese estándar. Un programa es conforme si sólo utiliza características definidas en el estándar. Un compilador conformable es uno que, cuando se le da un programa conforme, produce un programa ejecutable que genera la salida correcta.
  • 14.
    Prof. Eliezer Córdova Es necesario ocuparse de tres cuestiones:  Obsolescencia (¿Cuándo envejece un estándar y cómo se modifica?): Los estándares se tienen que revisar cada 5 años y ya sea renovarse o descartarse. Casi todos los estándares requieren compatibilidad hacia atrás; El nuevo estándar debe incluir versiones más antiguas del lenguaje. Esto tiene el problema de que el lenguaje se puede hacer difícil de manejar a causa de las numerosas construcciones obsoletas. Una característica es obsolescente si es candidata a ser descartada en la próxima versión del estándar. Una característica desaprobada se puede volver obsolescente en el próximo estándar, por lo cual puede ser descartada después de dos revisiones. Uso de estándares en forma eficaz
  • 15.
    Prof. Eliezer Córdova Efectosde los entornos sobre los lenguajes  Cuatro clases generales de entornos objetivo cubre casi todas las aplicaciones de programación:  de procesamiento por lotes,  interactivo,  de sistema empotrado, y  de programación (entorno interactivo). Cada uno plantea distintos requerimientos sobre los lenguajes adaptados a esos entornos.
  • 16.
    Prof. Eliezer Córdova Entornosde procesamiento por lotes  El más simple entorno operativo se compone sólo de archivos externos de datos. Un programa toma un cierto conjunto de archivos de datos como entrada, procesa los datos y produce un conjunto de archivos de datos de salida. El nombre de procesamiento por lotes viene porque los datos de entrada se reúnen en “lotes” de archivos y son procesados en lotes por programas.  Los archivos constituyen la base para casi toda la estructura de E/S.  Un error que termine la ejecución del programa es aceptable aunque costoso. No es posible la ayuda externa por parte del usuario para manejar o corregir errores de inmediato.  Carencia de restricciones de regulación de tiempo. No hay recursos para monitorear o afectar directamente la velocidad de ejecución del programa.
  • 17.
    Prof. Eliezer Córdova Entornosinteractivos  El programa interactúa durante su ejecución directa con un usuario en una consola de visualización, enviando alternativamente salidas hacia ésta y recibiendo entradas desde el teclado o ratón (procesadores de texto, hojas de cálculo, juegos, etc.).  Las características de E/S interactivas son diferentes de las operaciones ordinarias con archivos.  El programa debe ser capaz de gestionar el manejo de errores. La terminación del programa como respuesta aun error no es ordinariamente aceptable (a diferencia del procesamiento por lotes).
  • 18.
    Prof. Eliezer Córdova Entornosinteractivos  El programa interactúa durante su ejecución directa con un usuario en una consola de visualización, enviando alternativamente salidas hacia ésta y recibiendo entradas desde el teclado o ratón (procesadores de texto, hojas de cálculo, juegos, etc.).  Los programas interactivos deben utilizar con frecuencia algún concepto de restricciones de tiempo.  El concepto de programa principal suele estar ausente. En su lugar, el programa se compone de un conjunto de subprogramas y el usuario introduce el “programa principal como una serie de comandos en el terminal.
  • 19.
    Prof. Eliezer Córdova Entornosde sistemas incrustados (empotrados)  Un sistema de computadora que se usa para controlar parte de un sistema más grande como una planta industrial, una aeronave, etc., se conoce con el nombre de sistema de computadora incrustado. El fallo de una aplicación empotrada puede poner en peligro la vida. La seguridad de funcionamiento y corrección son atributos principales.  Suelen operar sin un sistema operativo subyacente y sin archivos de entorno y dispositivos de E/S usuales. El programa debe interactuar directamente con la máquina.  El manejo de errores tiene gran importancia. Cada programa debe estar preparado para manejar todos los errores en forma interna, adoptando acciones apropiadas para recuperarse y continuar. La interrupción del programa no es aceptable y no hay un usuario en el entorno que pueda proporcionar la corrección interactiva del error.
  • 20.
    Prof. Eliezer Córdova Entornosde sistemas incrustados (empotrados)  Un sistema de computadora que se usa para controlar parte de un sistema más grande como una planta industrial, una aeronave, etc., se conoce con el nombre de sistema de computadora incrustado. El fallo de una aplicación empotrada puede poner en peligro la vida. La seguridad de funcionamiento y corrección son atributos principales.  Operan en tiempo real, donde la respuesta las entradas debe producirse en intervalos de tiempo restringidos.  Suele ser un sistema distribuido, compuesto por más de una computadora.  Una vez iniciadas las tareas, se ejecutan por lo común de forma simultánea e indefinida.
  • 21.
    Prof. Eliezer Córdova Entornosde programación  Es el entorno en el cual los programas se crean y se ponen a prueba. Consiste en un conjunto de herramientas (editor, depurador, verificador, generadores de datos de prueba, etc.) de apoyo y un lenguaje para invocarlas.  Al compilar por separado cada subprograma el compilador necesita información de:  La especificación del número, orden y tipo de parámetros.  La declaración de tipo de datos.  La definición de un tipo de datos (para la declaración local de variables).
  • 22.
    Prof. Eliezer Córdova Entornosde programación  Un problema común, es encontrar, durante el ensamblado del programa final completo, que varios subprogramas y otras unidades de programa tienen nombres (de variables) iguales. Métodos para evitar este problema: 1. Todo nombre compartido debe ser único. Se deben usar convenciones para la asignación de nombres desde un principio. 2. Definir, en el lenguaje, reglas de ámbito, para ocultar nombre. 3. Los nombres se pueden conocer agregando explícitamente sus definiciones desde una biblioteca externa (herencia en POO).
  • 23.
    Prof. Eliezer Córdova Entornosde programación  Características que ayudan a poner a prueba y depurar programas. 1. Características para rastreo de ejecución. 2. Puntos de interrupción. Cuando se alcanza un punto de interrupción durante la ejecución del programa, la misma se interrumpe y el control se traslada al programador en un terminal. 3. Asertos: expresan relaciones que deben cumplirse entre los valores de las variables en ese punto del programa.
  • 24.
    Prof. Eliezer Córdova Marcosde ambiente  Este marco suministra servicios como un depósito de datos, interfaz gráfica de usuario, seguridad y servicios de comunicación.
  • 25.
    Prof. Eliezer Córdova Paradigmasde Programación  La clasificación de los lenguajes atendiendo a sus características intrínsecas conduce a los llamados paradigmas de programación. Un paradigma de programación es un modelo de programación que engloba a ciertos lenguajes que comparten:  Elementos estructurales: ¿con qué se confeccionan los programas?  Elementos metodológicos: ¿cómo se confecciona un programa?
  • 26.
    Prof. Eliezer Córdova ProgramaciónImperativa o Procedural: C  Desarrollado por Ritchie y Thompson en el 72.  Multiuso (inicialmente para sistemas)  Sintaxis compacta
  • 27.
    Prof. Eliezer Córdova ProgramaciónImperativa o Procedural: C  Historia  60 Thompson desarrolla en Bell Multics, se crea un lenguaje llamado B.  70, el proyecto UNIX avanza y el lenguaje B se queda pequeño, se comienza a desarrollar C  82, C es distribuido con Unix y muy usado en las universidades. ANSI comienza a desarrollar un estándar
  • 28.
    Prof. Eliezer Córdova Perspectivadel lenguaje C  La programación en C se compone de:  El lenguaje C, con un limitado nº de estructuras de control. No hay primitivas si no se usan las librerías.  El preprocesador de C (#), estos enunciados no forman parte del lenguaje C y son preprocesados antes de la compilación.
  • 29.
    Prof. Eliezer Córdova Perspectivadel lenguaje C  La programación en C se compone de:  preprocesados antes de la compilación.  Los supuestos de interfaz C (.h), lor archivos “header” informan al usuario de las funciones incluidad en una biblioteca.  Las bibliotecas de C. Archivos obj o lib conteniendo la implementación de las funciones.
  • 30.
    Prof. Eliezer Córdova Objetosde datos  Tipos de datos primitivos  Los nombres de variables no pueden comenzar con dígito. Sensible a may-min.  Los datos son enteros (char, short, long), enumerados (enum) o float. Los punteros se declaran con el tipo seguido de ‘*’.  No hay booleanos.
  • 31.
    Prof. Eliezer Córdova Objetosde datos  Tipos de datos estructurados  Arrays, comienzan en 0 y se guardan por filas.  Tipos definidos por el usuario. Struct { }.
  • 32.
    Prof. Eliezer Córdova Representaciónde almacenamiento  Los tipos de C emplean básicamente la representación hardware de sus datos.  Una variable de tipo array es también el puntero al primer elemento del array que comienza con el índice 0.  Es posible inicializar cualquier variable declarada estáticamente.
  • 33.
    Prof. Eliezer Córdova Evaluacióndel lenguaje  C es muy potente y popular:  Flexible  Eficiente  Disponible (se distribuye con Unix)  Portatil  Pero C también permite una programación descuidada y propensa a errores.