You are on page 1of 15

Unidad 1

IDEAS GENERALES SOBRE PROGRAMACIN

Objetivos
n

Reflexionar sobre la utilidad del ordenador sus posibilidades y limitaciones. Identificar los elementos bsicos de un Sistema Informtico. Conocer los aspectos fundamentales del proceso de realizacin de un programa.

Conocer la evolucin y caractersticas de los lenguajes de programacin. Entender la dificultad de expresar rdenes de forma sencilla y concreta. Valorar la importancia de realizar un buen anlisis como paso previo al desarrollo de una aplicacin.

Contenidos
n n n n n n

Introduccin. Qu es un ordenador?. Qu significa programar?. Paradigmas de programacin. Fases de la programacin. Lenguajes de programacin.
q q q q

Verificacin, depuracin y prueba de programas.


q q

Errores. Aprender a disear programas correctos


n n

Asertos. Precondiciones y Postcondiciones.

Lenguaje Mquina. Lenguaje Ensamblador. Lenguajes Compilados. Lenguajes Interpretados.

Recorrido e inspecciones de diseo y cdigo. Prueba de programas.

n n

Fases en la creacin de programas.

Unas palabras sobre calidad del software. Entornos de desarrollo.


q

Como introducir, corregir y ejecutar un programa.

Un ordenador es:

Un dispositivo electrnico programable capaz de almacenar y procesar informacin.

Un sistema informtico es:


n

El conjunto de recursos que son necesarios para la elaboracin y el uso de aplicaciones informticas

Elementos: Hardware, software y personal informtico Interfaz Vas de enlace entre elementos

Componentes del HARDWARE


Dispositivos de almacenamiento auxiliar
Monitor

Unidad Central de ProcesoCPU UAL Entrada Salida Unidad de Control

Impresora

WebCam

DVD

Lector DVD

Modem

Memoria Central

SOFTWARE
Software Bsico (Sistemas Operativos) Editores de Texto Hojas de Clculo Bases de datos COMPILADORES Otras aplicaciones

Software de Aplicacin

ELEMENTO HUMANO
Usuarios Personal de Direccin Analistas Programadores Operadores

Personal Informtico

Sistema informtico

Pr

r og

s ma

de

c p li

ac

i n

Interfaz Sistema Operativo

Hardware

PROGRAMAR es:
n

Planificar y concretar la secuencia de rdenes concisas para la realizacin de una tarea.

Un programa informtico es el conjunto de instrucciones que se da al ordenador para que realice una determinada tarea.
10

Paradigmas de programacin
Un paradigma es un modelo bsico para el diseo e implementacin de programas. Algunos Modelos n Programacin lgica n Programacin heurstica n Paradigmas procedimentales
q q

Procedimental imperativo Procedimental orientado a objetos

11

FASE DE RESOLUCIN

FASES EN PROGRAMACIN

ANLISIS

SOLUCIN GENRICA (ALGORITMO)

PRUEBA

FASE DE IMPLEMENTACIN

FALLOS? S/N

NO

SOLUCIN ESPECFICA (PROGRAMA)

PRUEBA

FALLOS? S/N

FASE DE EXPLOTACIN
USO Y MANTENIMIENTO

NO

12

Camino equivocado
RESOLUCI N IMPLEMENTACIN PROGRAMA ALGORITMO PRUEBA PRUEBA EXPLOTACIN ANLISIS

13

El mtodo general para programar puede resumirse como:


1. PROBLEMA: actividad que no sabemos cmo llevar a cabo

PROBLEMA
2. INFORME ALGORITMICO: la actividad se analiza en busca de la forma de resolucin. El resultado se plasma en un informe que contiene: a. La descripcin de la tarea y la enumeracin de los objetivos a conseguir b. El procedimiento empleado c. Los recursos y elementos necesarios d. El algoritmo (la secuencia en la que hay que realizar cada una de las operaciones) 3. PROGRAMA: el algoritmo, traducido a un lenguaje de programacin especfico, se convierte en un programa que el ordenador puede ejecutar

Anlisis y resolucin

INFORME ALGORTMICO

Codificacin

PROGRAMA
14

Qu es un algoritmo?
Un mtodo para resolver un problema mediante una serie de pasos precisos, definidos, finitos

precisos : indicar el orden de presentacin de cada paso definidos : si se siguen dos veces se obtiene igual resultado finitos : tiene un nmero determinado de pasos

15

Una receta de cocina puede resultar similar (en cuanto a concepto) a un algoritmo o programa
Ver ejemplo tortilla pag pag. . 9 UNIPRIM.doc Ejercicio: Realizar un algoritmo sobre un proceso sencillo de la vida diaria.

16

Algoritmo: Cambiar rueda al coche I Suponemos que : Disponemos de todos los utensilios: coche, rueda, llave y gato Sabemos: aflojar tornillo, apretar tornillo,... Inicio Inmovilizar el coche Introducir el gato Repetir Levantar el coche accionando manivela del gato Mientras que la rueda roce el suelo. Repetir Aflojar un tornillo de la rueda Mientras queden tornillos por aflojar Quitar los tornillos Quitar la rueda Poner rueda de repuesto Repetir Apretar un tornillo de la rueda Mientras queden tornillos por apretar Repetir Bajar el coche accionando manivela del gato Mientras que el gato soporte peso. Fin
17

Algoritmos y diseo modular


Algoritmo: Cambiar rueda al coche II Suponemos que : No sabemos si disponemos o no de los utensilios Sabemos: aflojar tornillo, apretar tornillo,... Inicio Si no disponemos de los utensilios realizar el mdulo <Contactar con seguro> Si disponemos de los utensilios realizar el mdulo <Cambiar rueda al coche I> Fin < Contactar con seguro > inicio Repetir Llamar por telfono al seguro Mientras no consigamos contactar Dar parte del siniestro Fin <Cambiar rueda al coche I> ---est realizado en diapositiva anterior

18

Lenguajes de Programacin
Lenguaje mquina Lenguaje ensamblador Lenguajes compilados Lenguajes interpretados

n n n n

19

Lenguajes de Alto-Bajo nivel


El nivel de un lenguaje hace referencia a su proximidad al lenguaje natural, considerndose de ms nivel cuanto ms cercanos estn a este y de menos nivel cuando ms cerca estn del lenguaje mquina El lenguaje de ms bajo nivel o lenguaje mquina es el que utiliza el ordenador, el que la mquina entiende, basado en el sistema binario se organiza como secuencias de 0 y 1, por lo que son difciles de aprender y manejar, pero son rpidos ya que evitan las traducciones intermedias. Fueron los primeros en aparecer. Tambin se consideran de bajo nivel los lenguajes ensambladores, por ser dependientes de la arquitectura del procesador que los soporta. Consisten principalmente en nemotcnicos de las rdenes del lenguaje mquina Los lenguajes de alto nivel son ms fciles de aprender y permiten despreocuparse de la arquitectura del ordenador. Ejemplos son: BASIC, PASCAL, FORTRAN, COBOL, JAVA, C/C++
20

Lenguajes Compilados e Interpretados


Los LP deben traducirse (excepto el cdigo mquina) para que sean interpretables (o inteligibles) por el ordenador.

Los Lenguajes compilados traducen el programa entero y luego lo montan generando un programa ejecutable por si slo. Una vez compilado el programa, el compilador no tiene porque estar presente, pudindose transportar el programa ejecutable a cualquier ordenador, sin necesidad de manejar el compilador. Los Lenguajes interpretados, se encargan de realizar la traduccin instruccin a instruccin a la vez que se ejecuta el programa. Son ms lentos, pero mejores cuando el proceso de traduccin/ejecucin se realiza en repetidas ocasiones, por lo que son ms adecuados para principiantes. El intrprete debe estar presente mientras se ejecuta el programa

21

Uso de los lenguajes de programacin


Debemos sumar los valores de A y B y guardar el resultado en C

Lenguaje Natural

Lenguaje C

c = a + b;

LDA A ADD B STA C

Lenguaje Ensamblador Traductores

Compilador C

Ensamblador

01100001 11011011 11110110

Lenguaje Mquina
(Cdigo Mquina)

22

Uso de los lenguajes de programacin


mover el valor hexadecimal 61 (97 decimal) al registro 'al
n

Hola mundo para X86 bajo DOS

Lenguaje mquina

la instruccin de mquina IA-32 10110000 01100001 Lenguaje ensamblador microprocesadores x86 mov al, 0x61
n

.model small .stack .data Cadena1 DB 'Hola Mundo.$' .code programa: mov ax, @data mov ds, ax mov dx, offset Cadena1 mov ah, 9 int 21h end programa
Hola mundo en C

Registros usados en el programa ensamblador del ejemplo: AX registro acumulador (AH byte alto AL byte bajo) DS Puntero al Segmento de datos DX registro de Datos de propsito general Interrupciones: int 21h //para escribir en pantalla

#include <stdio.h> void main (void) { printf( Hola Mundo); }

23

Fases de creacin de un programa

Ejecutar

Editor

Escritura del programa fuente

Fase de Edicin

MIPROGRA.C

Ejecutar Listado de Errores de Compilacin

Compilador

Errores?

NO
Programa traducido a lenguaje mquina

Fase de Compilacin

MIPROGRA.OBJ

Ejecutar Linker o Enlazador

Listado de Errores de Enlazado

Errores?

NO
P rograma listo para ejecutarse

Fase de Enlazado

MIPROGRA.EXE

Entrada de Datos

Ejecutar MIPROGRA.EXE con datos de prueba Estudiar los resultados

Fase de Ejecucin

NO

Responden a lo esperado?

24

Verificacin, depuracin y prueba


Prevenir, detectar y corregir posibles errores en los programas utilizando para ello distintos mecanismos.

n n n n n

Buen diseo, aplicando reglas de calidad y correccin. Recorrido e inspeccin de diseo y cdigo. Establecimiento de mtodos de depuracin. Previsin de planes de prueba. Establecimiento de datos de prueba.

25

ERRORES
n n

DE ESPECIFICACIN Y DISEO: durante el anlisis. Difciles de


corregir y Costosos

EN TIEMPO DE COMPILACIN
q q q

Lexicogrficos: en C mian en lugar de main Sintcticos: a = b + ( c / ) Semnticos: No interrumpen el proceso de compilacin if ( a = b) en lugar de == (warning en C)

DE ENLAZADO Por ejemplo, libreras no colocadas correctamente EN TIEMPO DE EJECUCIN


C = a / b debemos asegurarnos de que b no toma valor 0 nunca (validar la entrada de datos). Overflow o desbordamiento (tipo de dato incorrecto) Buscar la robustez en los programas.

26

DISEO Y DEPURACIN DE PROGRAMAS


- Aprender a disear programas correctos
n

Tcnicas de validacin y verificacin de cdigo


q q

Mediante herramientas automticas Tcnicas formales manuales Precondiciones: asertos previos a la ejecucin del mdulo Ej. Tras mientras de la tortilla se aserta la condicin de salida. Postcondiciones: asertos posteriores a la ejecucin del mdulo Estudio de las invariantes de bucles

Conceptos
q

q q

-Inspeccin:Traza o recorrido en el anlisis, diseo e


implementacin -Planes de depuracin: Puntos de parada (breakpoints),visualizaciones intermedias (printf) - Prueba: Cubrimiento de datos y validaciones de entradas
27

Caractersticas del software de calidad


n

n n n n

Correccin. Hace lo que se establece como requisito? Fiabilidad. Lo hace de forma fiable todo el tiempo? Eficiencia. Minimiza tiempo y recursos? Seguridad (Integridad). Es seguro? Facilidad de uso. Est diseado para ser usado facilmente? Modificabilidad. Puede modificarse y probarse fcilmente ? Viable. Su realizacin se atiene al tiempo y presupuestos establecidos?
28

El comienzo de la sabidura para un ingeniero del Software es reconocer la diferencia entre hacer que un programa funcione y conseguir que lo haga correctamente [Pressman, 2003]

29

You might also like