0% encontró este documento útil (0 votos)
10 vistas27 páginas

Tema 2

El documento aborda los fundamentos de la programación de ordenadores, incluyendo metodologías, diseño de algoritmos y lenguajes de programación. Se enfatiza la importancia de la planificación, implementación y mantenimiento en el desarrollo de software, así como la necesidad de seguir un enfoque estructurado y modular para facilitar la comprensión y reutilización del código. Además, se describen los tipos de datos y la evolución de los lenguajes de programación desde el lenguaje máquina hasta lenguajes de alto nivel.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas27 páginas

Tema 2

El documento aborda los fundamentos de la programación de ordenadores, incluyendo metodologías, diseño de algoritmos y lenguajes de programación. Se enfatiza la importancia de la planificación, implementación y mantenimiento en el desarrollo de software, así como la necesidad de seguir un enfoque estructurado y modular para facilitar la comprensión y reutilización del código. Además, se describen los tipos de datos y la evolución de los lenguajes de programación desde el lenguaje máquina hasta lenguajes de alto nivel.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 27

Fundamentos de

Informática

Tema 2

Programación de Ordenadores

1
Contenidos
 Introducción
 Metodología de la programación
 Resolución de problemas con el ordenador
 Análisis de requerimientos
 Etapa de diseño
 Implementación, validación y mantenimiento
 Descripción de algoritmos
 Lenguaje algorítmico
 Pasos para diseñar un algoritmo sobre un problema
 Programación modular
 Programación estructurada
 Lenguajes de programación
 Elementos básicos de la programación
 Estructura de los programas
 Lenguajes de programación. Evolución
 Traductores

2
Introducción
 Para trabajar con un sistema informático nos hace falta un
ordenador (Hardware) y unos programas (Software).
 Se aplican técnicas ingeniería a ambos:
 Ingeniería de Computadores
 Ingeniería de Software (incluye Metodología Programación)

 Un programa se puede ver como la solución a un problema, en


términos de una secuencia de pasos computacionales.

 Programación: “Planificación y/o ejecución de una tarea".

 Programación de ordenadores: Proceso de planificación de


secuencias de instrucciones para realizar una acción o tarea.

 Existen metodologías que permiten que la programación sea los más


eficaz en cuanto a desarrollo y mantenimiento.

3
Introducción
 Los ordenadores ejecutan rápida y de forma precisa
operaciones lógicas y matemáticas.

 Son “tontos”: Sólo saben hacer lo que se les dice.


 El programa ha de estar perfectamente definido
 Preciso, simple y sin ambigüedades

 Errores pequeños pueden provocar fallos graves.


 Para resolver un problema con un programa, es necesario
desmenuzar la solución en pasos concretos, cortos y
perfectamente definidos.
 Un algoritmo es una secuencia ordenada de pasos claros,
concretos, precisos y sin ambigüedades que lleva a la solución
genérica de un problema.

4
Metodología de la programación
 Estudio de procedimientos y/o métodos para resolver
problemas con computadoras, independientemente de un
lenguaje de programación concreto y del ordenador
donde se va a implementar.

 Es fundamental que los programas cumplan:


 Legibles: Comprensibles para cualquier programador.
 Modificables: Su estructura debe permitir modificaciones.
 Depurables: Debe ser fácil la localización y corrección de
errores.

5
Metodología de la programación
 Si no seguimos un método de programación riguroso:
 Los programas son rígidos y difíciles de adaptar a nuevos
requerimientos.
 Los programadores gastan mucho tiempo corrigiendo sus
errores.
 La comunicación entre programadores es muy difícil.
 Los programas y módulos son poco reusables.
 Existen deficiencias en la documentación.

6
Metodología de la programación
Resolución de problemas con el ordenador

Análisis de requerimientos

Diseño

Implementación

Validación

Mantenimiento

El ciclo de vida del Software


7
Metodología de la programación
Análisis de requerimientos
 Esta fase consta de dos partes orientadas a responder
QUÉ es lo que hay que hacer:

1. Definición del problema: Identificar claramente que es lo


que se quiere resolver.

2. Análisis del problema: se basa en identificar:


 Entrada de datos: La fuente y los tipos de datos para las
entradas. Listar datos y su tipo.
 Resultados: destino y formato de salida (datos y tipo).

3. Procesamiento: transformación de los datos de entrada


en los datos de salida.
8
Metodología de la programación
Etapa de diseño
 En esta fase resolvemos CÓMO se hace lo especificado
en el análisis de requerimientos.
1. Obtener una solución (estructurar la información y los pasos )
Programar es tarea difícil (mezcla muchos procesos mentales) 

Descomponer el problema en varios más sencillos con técnicas
“divide y vencerás”, diseño descendente o modular, … dividiendo el
problema en subproblemas más sencillos.
2. Hacer un esquema de la solución, es decir, idear y explicitar un
algoritmo que describa la solución paso a paso.
 El diseño del algoritmo debe ser independiente del lenguaje de
programación en el que se vaya a programar.

En problemas sencillos, los dos pasos se reducen a uno solo.

9
Metodología de la programación
Implementación, validación y mantenimiento
 Implementación: se pasa el diseño, obtenido en la
etapa anterior, a una descripción escrita en un
lenguaje de programación (un lenguaje que puede
comprender el ordenador). Se implanta en un
ordenador, y se ejecuta.

 Validación: es el proceso de identificar y eliminar


errores.

 Mantenimiento: Correctivo, adaptativo y perfectivo.

10
Algoritmos
Descripción de Algoritmos
Se suele hacer con:

 Descripción narrada en lenguaje natural. A veces es


impreciso y farragoso, pero muy descriptivo (receta cocina).
 Diagramas de flujo: Organigramas. Diagramas de Nassi.
Tablas de Decisión, .... . Son precisos y de fácil traslado al
lenguaje de programación, pero en general son poco
descriptivos.
 Lenguaje algorítmico. Toma la descripción fácil de la
narrativa, elimina lo superfluo del lenguaje y coge lo conciso
de los diagramas de flujo (pseudocódigo en inglés,
especificaciones formales, ...).

11
Algoritmos
Ejemplo: Teorema de Pitágoras.
a) Lenguaje Natural: Se introducen los catetos, después se eleva cada uno
al cuadrado y se suman estos cuadrados. Se obtiene la raíz cuadrada y este
será el valor de la hipotenusa.
b) Diagramas de flujo:

Inicio s = b2 + c2
b, c

Fin "h = ", h h=s

c) Lenguaje Algorítmico
1) [Entrar longitudes catetos] LEE (cat1, cat2)
2) [Calcula cuadrados catetos] cu1  cat1**2 ; cu2  cat2**2
3) [Calculo la hipotenusa] hip  RaizCuad (cu1 + cu2)
4) [Salida de resultados] Escribe ("Lados: ", cat1, cat2, hip)
5) [Final lógico y/o físico] FINAL (SALIDA).

12
Algoritmos
Lenguaje algorítmico
 La idea es usar una forma de escribir las instrucciones,
bastante simple y cercana al lenguaje habitual:
(ESCRIBE, ESCRIBIR), (LEE) ,....
 Un aspecto muy importante es la PRUEBA . Se ejecuta
con papel y lápiz, poniendo en un cuadro los valores que
a cada variable se le asigna en cada paso, a partir de datos
de entrada cuyo resultado es conocido.
 Gastar tiempo en diseñar bien un algoritmo, lleva a una
solución de mayor calidad y un ahorro de tiempo en el
proceso completo.

13
Algoritmos
Pasos para diseñar un algoritmo sobre un problema
1. Tener seguridad de entender completamente las especificaciones
del problema (una forma es indicar la salida que se espera de
algunos ejemplos de entrada).
2. Formular grosso modo un algoritmo para resolver el problema.
(Hay que probarlo con algunos ejemplos).
3. Identificar y listar los datos representativos, junto con el tipo de
dato y una indicación de su propósito.
4. Analizar cada paso para detallarlo en 2/3 pasos nuevos cada vez
(se hace lo mismo con los nuevos pasos).
5. Repetir 3. y 4. hasta nivel de detalle suficiente, y entonces probar
de nuevo el algoritmo completo.
6. Si da errores, revisar pasos 2, 3, 4 y 5, hasta que no haya errores.
7. Traspasar a un lenguaje programación (casi inmediato).

14
Programación modular
 La programación modular consiste en dividir un programa en
módulos o subprogramas con el fin de hacerlo más legible y
manejable y facilitar la reutilización.
 Un problema complejo se divide en subproblemas más simples,
y estos a su vez en otros más simples.
 Cada módulo realiza tareas únicas y es reutilizable. El nivel de
detalle depende de criterios de claridad y reusabilidad.
 Ésta técnica se llama refinamiento sucesivo, divide y vencerás ó
análisis descendente.
 El módulo principal produce y controla la ejecución de los
demás.

15
Programación modular

Ejemplo: Cambiar la rueda de un coche por pinchazo.

Fase 1 Fase 2
1. Bajar del coche y abrir maletero. 1.1 Bajarse Coche
2. Sacar ruedaR y Herramientas. 1.2. Abrir Maletero
3. Cambiar la rueda. 2.1 Sacar rueda repuesto y herramientas
4. Guardar ruedaP, seguir marcha 3.1 Levantar coche con gato
3.2 Poner ruedaR y atornillar
4.1 Guardar ruedaP, seguir marcha
Fase 3 Fase 4
3.1.1 Colocar gato en su sitio (**) Podría detallarse más: (los tornillos se
3.1.2 Calzar bien el coche van apretando poco a poco, primero uno
3.1.3 Girar manivela hasta ruedaP en el y luego el opuesto, …)
aire.

16
Programación estructurada
Es un conjunto de técnicas que incorporan:
 Recursos abstractos: Lenguaje algorítmico, diagramas de flujo,…
 Diseño descendente: Programación modular.
 Estructuras básicas: Con sólo una entrada y una salida:
 Secuencial: Acciones simples, con flujo
lineal continuado.
 Selección: Toma de decisión o
alternativas, simples o múltiples, en
función de una condición.
 Repetitivas: Bucles. Se repiten una
serie de acciones mientras (hasta) se
verifica una condición.

17
Programación estructurada
 Teorema de Bohm-Jacopini:Todo programa se puede escribir
usando sólo 3 tipos de estructuras de control: secuenciales,
selectivas y repetitivas.
 La Programación Estructurada permite escribir programas
fáciles de leer y de modificar, con un orden y estructura al
escribir sentencias. Se estructuran además los datos.
 El estilo se reduce a aspectos de claridad y a optimizar
diseño/estructura del programa. Se prohíben saltos a
otras partes del programa (GOTO).

18
Programación estructurada
Elementos básicos de la programación
 Necesidad de Lenguaje (alfabeto y reglas de sintaxis y
semántica, pocas, concretas, precisas) para comunicarnos
con el ordenador:
 Caracteres: Elementos del alfabeto.
 Palabras: Instrucciones básicas. Palabras Reservadas
(Diccionario) + Identificadores (Usuario).
 Frases: Instrucciones y acciones más complejas.
 Sintaxis: Reglas para construir sentencias válidas.
 Semántica: Reglas que dan significado a las “frases” del
lenguaje

19
Programación estructurada
Elementos básicos de la programación

 TIPOS DE DATOS: Los datos son la representación de


la información que existe en el mundo real.
 Numéricos: Enteros y reales.
 Caracteres: Permiten letras, dígitos, signos de puntuación, etc.
 Lógicos: Verdadero/Falso.

 Datos enumerados: Son nuevos tipos de datos para los


que especificamos el dominio en el que están definidos.

 Datos estructurados: Se consiguen mediante una


agrupación de otros tipos de datos.

20
Programación estructurada
Elementos básicos de la programación
 Escalares. Formados por un único elemento. Se operan directamente: Entero, Real, Carácter, Lógico.
 Estructurados. Agrupaciones de escalares. Cadenas, Matrices, ....
 Estándares (los incorpora el lenguaje). F90: E, R, C, L, Comp, Cad.
 Definidos por Usuario. En Fortran, Registros (Type)

Datos Estándares / Predefinidos

DATOS Datos Definidos por el Usuario


D. Escalares o Simples Estáticos Dinámicos

D. Estructurados Homogéneos Heterogéneos

 Organización lógica (cómo los ve el usuario): Campo  Registro 


Fichero. (Ficha Alumno). Dirección lógica y física.
 Organización física (cómo se almacena/usa en Ordenador). Bit  Byte
(Palabra)  Bloque (128-256 bits)  Fichero (coincide fichero lógico).
21
Programación estructurada
Elementos básicos de la programación
 Los datos pueden ser constantes o variables

 Variables.- Poseen un valor que puede cambiar a lo largo


del programa. Se nombran con Identificadores, según
reglas: Empiezan con letra, sin espacios blancos, y sin
símbolos que puedan confundir (+, -, *, /, ,... ).

 Constantes. Con nombre (PI), o Valor literal (3.1416).

 Operaciones Elementales. Operadores Relacionales.


 Con números: + , - , * , / , ** .
 Carácter: No hay. Cadenas: concatenación.
 Lógicos: Operadores lógicas: Y, O, NO.
 Comparar datos (mismo tipo): <, <=, = , <>, >=, >.

22
Programación estructurada
Estructura de los programas
 Cabecera: Identifica el programa con un nombre.
 Declaraciones (constantes, variables y su tipo).
Señalar la información necesaria de entrada y salida.
 Programa Principal (Cuerpo): Acciones a realizar.
 Declaración (funciones, procedimientos): Módulos.
 Salida del programa.

 Comentarios aclarativos en todo momento.


 Mantener un cierto Estilo

23
Lenguajes de programación
Evolución
 Programas en Circuitos (No hay lenguaje como tal)
 Con Von Newmann nacen lenguajes específicos para cada
computadora, en formato binario; son instrucciones simples
(0001101011101011010).
 Lenguaje Máquina (o código máquina). Las instrucciones
propias de cada máquina están codificadas con ceros y unos.
Dependen del procesador. Son incomprensibles y engorrosos de
usar.
 Es dificil escribir en binario, se usan nemotécnicos (SUM, MUL,....).
 Lenguaje Ensamblador. Nemotécnico del código máquina. Sigue
ligado al ordenador, pero menos engorroso. Se traduce a lenguaje
máquina, con un programa Ensamblador. Permiten variables, macros
y comentarios.

• Al código máquina y al ensamblador se les conoce como lenguajes


de bajo nivel.

24
Lenguajes de programación
Evolución
 Lenguajes de alto nivel:
 Cercanos al lenguaje natural y matemático. Mas fáciles de leer y
escribir.
 Se permiten operaciones más complejas. Ej.: raíz cuadrada.
 Existe el concepto de subprograma.
 Son menos eficientes.
 Son más portables (casi independientes del ordenador).
 Se pueden usar sin conocer los entresijos de los ordenadores.
 Algunos son: Fortran, Algol, Pl/I, Ada, Basic, Simula, Pascal, Apl,
Modula, Logo, C, Lisp, Prolog, Java, Perl, Python, C++, C#.
 Necesidad de un Traductor que pase de lenguaje de alto nivel a
código máquina.
 Lenguajes de cuarta generación: Herramientas que
permiten construir aplicaciones sencillas combinando piezas
prefabricadas.

25
Traductores
Fases para ejecución de programas
FASE UTILIDAD (Programa)
Escritura o Introducción “mecanografiada” Editor de Textos
del Programa (Programa fuente).
Traducción a ensamblador y de aquí a Compilador
Lenguaje Maquina o directamente a Intérprete
Lenguaje Máquina (Programa objeto)
Montaje del fichero ejecutable, enlazando Enlazador
todos los módulos (“Linkaje”)
adecuadamente (Programa ejecutable)
Carga del Programa en Memoria Principal Cargador
Ejecución del Programa Sistema Operativo
Rastreo y Depuración de Errores Depurador

26
Traductores
Tipos
 En los lenguajes de alto nivel surge la necesidad de un
Traductor que pase de lenguaje de alto nivel a código
máquina. El traductor es un programa. Tipos:
 Compilador: Traducen el programa completo (Programa Fuente) a un Programa
Objeto (lenguaje máquina). El Programa Ejecutable se obtiene tras la fase de
enlazado (link). Si en cualquier fase se detecta un error, hay que corregirlo (con
editor) y volver a realizar todo el proceso de traducción global. Una vez obtenido el
programa ejecutable, se ejecutará todas las veces que queramos, sin nuevas
traducciones.
 Intérprete: Traducen el programa instrucción a instrucción. Interpreta una
instrucción y la ejecuta directamente (si se detecta un error en la instrucción, se
puede corregir sobre la marcha, y continúa la ejecución del programa). La traducción
se repite en cada ejecución del programa, pero las siguientes veces ya no habrá
errores. Los programas son más portables pero más difíciles de optimizar.
 Cuando la traducción se hace en una máquina distinta a la de
ejecución del programa, se utiliza un traductor cruzado. En una
computadora se puede simular otra distinta, con programas
llamados emuladores.

27

También podría gustarte