Fundamentos de la Programación: Conceptos Clave y Metodología

Enviado por nono y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 12,41 KB

Introducción a la Programación

Fundamentos de Programación

Objetivos

  • Introducir los principales conceptos relacionados con la informática.
  • Definir los elementos de un sistema informático.
  • Conocer los componentes básicos del hardware de un ordenador.
  • Definir el software y clasificarlo.
  • Conocer cómo se representa la información para que sea manipulable por el ordenador.
  • Introducir la metodología para la elaboración del software.

Índice

  1. Conceptos Básicos
  2. Elementos de un sistema informático
  3. Soporte físico o hardware
  4. Soporte lógico o software
  5. Representación de la información
  6. Metodología de la programación
  7. Clasificación de los lenguajes de programación
  8. Resumen

Conceptos básicos

Informática: INFORmación autoMÁTICA. Conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático y racional de la información por medio de ordenadores. Ciencia que abarca todos los aspectos del diseño y uso de ordenadores.

Información: Conjunto de símbolos que representan hechos, objetos o ideas.

Tipos de información:

  • Datos: Conjuntos de símbolos que representan una información en forma adecuada para ser procesada.
  • Instrucciones: Indican al ordenador qué debe hacer y con qué datos (procesando los de entrada o produciendo los de salida).

Conceptos básicos

Ordenador: Máquina que acepta unos datos de entrada, realiza operaciones aritméticas y lógicas y obtiene datos de salida, bajo el control de un programa previamente almacenado.

Programa
Entrada → Cálculos → Salida
Operaciones aritméticas
Operaciones lógicas

Necesidad de Hardware + Software

Conceptos básicos

Programa: Conjunto ordenado de sentencias que se dan a un ordenador indicando las operaciones que se desea que realice.

Tipos de sentencias:

  • Imperativas o instrucciones: Representan una orden a ejecutar (transferencias de datos, tratamiento de datos, bifurcación y saltos).
  • Declarativas: Proporcionan información sobre los datos.

Conceptos básicos

Aplicación informática: Conjunto de programas y su documentación, para la realización de un determinado tipo de trabajo.

Sistema informático: Conjunto de elementos necesarios para la realización y explotación de aplicaciones informáticas.

Elementos de un sistema informático

Hardware o soporte físico: Conjunto de componentes físicos.

Software o soporte lógico: Conjunto de programas ejecutables sobre el hardware junto con los documentos y datos asociados a los mismos.

Personal informático: Conjunto de personas relacionadas con la utilización y explotación de los ordenadores.

Soporte físico o hardware

Esquema Von Neumann (1945)

Computadora Central
    CPU (Procesador)
        Unidad de Control (UC)
        Unidad Aritmético-Lógica (ALU)
        En la actualidad también memoria caché, coprocesador
    MEMORIA PRINCIPAL
        Datos e instrucciones
        Caché (en la actualidad)
        RAM (Random Access Memory)
        ROM (Read Only Memory)
    MEMORIA MASIVA
Periféricos
    UNIDAD DE ENTRADA/SALIDA
        Unidades de entrada
        Unidades de salida
        Unidades de memoria masiva

Soporte lógico o software

Conjunto de programas que se ejecutan en un ordenador y su documentación asociada.

Sistema operativo: Conjunto de programas que controla directamente los recursos de un ordenador proporcionando una máquina virtual más fácil de utilizar que el hardware subyacente.

Soporte lógico o software

Capas de software

Software de aplicación
Traductores, Cargadores,…
S.O.
Hardware

Soporte lógico o software

Lenguaje de programación: Lenguaje utilizado para la escritura de los programas.

Elementos del lenguaje:

  • Léxico o vocabulario: Conjunto de símbolos constitutivos (palabras).
  • Sintaxis o gramática: Conjunto de reglas para la construcción de las sentencias correctas.
  • Semántica: Conjunto de reglas que asocian significado a las construcciones correctas del lenguaje.

Soporte lógico o software

Lenguaje o código máquina:

  • Directamente interpretable por la UC.
  • Programas muy eficientes.
  • Símbolos {0, 1}, complejo.
  • No permite uso de comentarios, programas poco legibles.
  • Repertorio de instrucciones muy limitado y formato muy rígido.
  • Muy dependiente del hardware (específico para cada procesador), programas poco portables.
  • Necesidad por parte del programador de conocer direcciones de memoria y resto de unidades físicas.

Soporte lógico o software

Lenguajes ensambladores y macroensambladores:

  • Notación simbólica para representar la operación.
  • Uso de direcciones simbólicas de memoria.
  • Se pueden incluir comentarios.
  • En macroensambladores existen macros o módulos que permiten ampliar el repertorio de instrucciones.
  • Los programas resultantes necesitan traducción.

Soporte lógico o software

Lenguajes de alto nivel:

  • Vocabulario amplio (caracteres alfabéticos, numéricos y especiales).
  • Permiten uso de variables.
  • Repertorio de instrucciones amplio.
  • Casi independientes del hardware.
  • Permite uso de comentarios (se aumenta la legibilidad).
  • Los programas resultantes necesitan traducción.

Soporte lógico o software

Traductor: Software que traduce programas escritos en un lenguaje de programación a otro.

Tipos:

  • Compiladores: Traducen globalmente un programa escrito en un determinado lenguaje (fuente) y producen como salida el programa escrito en otro lenguaje (objeto).
  • Intérpretes: Traducen y ejecutan una a una las sentencias de un programa pero sin generar un nuevo programa traducido (no generan código o programa objeto).

Representación de la información

Codificación en sistema binario {0,1}

Bit: Unidad mínima de información. Representa la información correspondiente a la ocurrencia de un suceso de entre dos posibilidades distintas.

Byte: Cantidad mínima de información para representar un carácter. Se suele tomar como 8 bits.

Todos los datos se convierten a su representación binaria.

Representación de la información

Múltiplos

Bytes o bits
Kilo 2^10
Mega 2^20 | 2^10 Kilo
Giga 2^30 | 2^10 Mega
Tera 2^40 | 2^10 Giga
Peta 2^50 | 2^10 Tera
Exa  2^60 | 2^10 Peta

Representación de la información

Código binario:
19 = 10011
26 = 11010

19/2    9    1
9/2     4    1
4/2     2    0
2/2     1    0
1           1

se lee de abajo arriba: 10011

26/2    13   0
13/2    6    1
6/2     3    0
3/2     1    1
1           1

se lee de abajo arriba: 11010

Todos los datos se convierten a información numérica, luego a binario y se almacenan.

Metodología de la programación

El proceso de la programación es un proceso de resolución de problemas.

  • Definición (¿Qué?)
    • Análisis del problema
  • Desarrollo (¿Cómo?)
    • Ingeniería del Software
    • Diseño del algoritmo
    • Codificación a un lenguaje de programación
    • Pruebas: depuración, verificación y validación
  • Mantenimiento (Mejoras y correcciones)

Definición del problema

Tener claro las Entradas, Salidas e intentar buscar la relación entre ellas.

Una buena definición es esencial para obtener una solución correcta.

Ejemplo Problema: Diseñar un programa que calcule el área de un rectángulo.

// Programa AreaRectangulo
// Entradas: la base y la altura del rectángulo
// Salidas: el área del rectángulo
// Relación: el área es el producto de la base por la altura

Desarrollo

Diseño: desarrollo de un algoritmo o conjunto finito de acciones para resolver un problema (fundamental en problemas complejos).

Codificación: expresar las acciones del algoritmo con un lenguaje de programación y así obtenemos un programa (vamos a utilizar C++).

Pruebas: ejecutar el programa dándole valores a los datos de entrada para comprobar si devuelve bien la salida (ver si resuelve el problema).

Mantenimiento

  • Necesidad de realizar correcciones a errores aparecidos cuando el software se está utilizando.
  • Necesidad de ampliar las funcionalidades del software.
  • Necesidad de adaptación del software a nuevos entornos.

Características de los programas

Legibilidad: Programa fácil de leer y entender.

Portabilidad:

  • Algoritmo: fácil codificación en cualquier lenguaje.
  • Programa: ejecución en cualquier sistema.

Modificabilidad: Facilidad para hacer correcciones y mejoras.

Eficiencia: Aprovechamiento de los recursos del ordenador.

Modularidad: División en módulos con funciones bien definidas.

Estructuración: Se ha de cumplir con las reglas de la Programación Estructurada.

Estilo de programación

Objetivo: hacer el algoritmo/programa más legible.

Elementos de estilo:

  • Uso de comentarios.
  • Código autodocumentado.
  • Código con formato.
  • Uso de constantes.

Clasificación de los lenguajes de programación

Según su nivel:

  • Lenguajes de bajo nivel: lenguajes máquina.
  • Lenguajes de nivel medio: ensambladores y macroensambladores.
  • Lenguajes de alto nivel.

Según el estilo de programación:

  • Imperativos o Procedurales:
    • Estructurados: PASCAL, C,…
    • No estructurados: Basic.
  • Orientados a objetos: C++, Java, Eiffel …
  • Declarativos:
    • Funcionales: LISP.
    • Lógicos: PROLOG.

Clasificación de los lenguajes de programación

Según su campo de aplicación:

  • Científicos: FORTRAN, ALGOL (primeros en surgir para aplicaciones de defensa y científicas, finales de los 50).
  • Gestión: COBOL, RPG (empresas para gestión, almacenamiento, recuperación y presentación de datos).
  • Enseñanza: BASIC, PASCAL (necesidad de formar programadores) (luego se convierten en lenguajes de propósito general y sus sucesores Visual Basic y Delphi).
  • Programación de sistemas: C (programación de sistemas operativos) y C++.
  • Tratamiento de datos: SQL, XML.
  • Composición de documentos: HTML.
  • Lenguajes de script: Perl, PHP, javaScript (para dinamización de documentos HTML y aplicaciones de servidores de internet).
  • Tratamiento de cadenas: Forth, Modula-2, Python, TCL.
  • Propósito General: Pascal, C++, Smalltalk, C#, Limbo, ADA, Basic, C, Java.

Resumen

  • Conceptos básicos.
  • Hardware + Software.
  • Traductores: Compiladores e intérpretes.
  • Proceso de programación:
    • Definición → Análisis del problema → Diseño (Algoritmo) → Codificación (Programa) → Pruebas.
  • Clasificación de los lenguajes de programación.

Entradas relacionadas: