Está en la página 1de 52

UT01.

INTRODUCCIÓN A LA
PROGRAMACIÓN.
Programación – 1ºDAW
Índice

 Datos, algoritmos y programas.


 Fases en la creación y ejecución de un programa

 Paradigmas de programación.

 Lenguajes de programación.

 Herramientas y entornos para el desarrollo de

programas.
 Errores y calidad de los programas.
1. Datos, algoritmos y programas.
Algoritmos y programas
 Algoritmo: conjunto ordenado y finito de instrucciones, pasos
o procesos que llevan a la resolución de un problema.
 Hay algoritmos sencillos y cotidianos, como seguir una receta de cocina, abrir una
puerta, lavarse las manos, etc, y otros que conducen a la solución de problemas
muy complejos.
1. Tomar la crema dental
 Ejemplo de algoritmo: lavarnos los dientes 2. Destapar la crema dental
3. Tomar el cepillo de dientes
4. Aplicar crema dental al cepillo
5. Tapar la crema dental
6. Abrir la llave del grifo
7. Remojar el cepillo con la crema dental
8. Cerrar la llave del lavamanos
9. Frotar los dientes con el cepillo
10. Abrir la llave del lavamanos
11. Enjuagarse la boca
12. Enjuagar el cepillo
13. Cerrar la llave del lavamanos
14. Secarse la cara y las manos con una
toalla
Algoritmos y programas

 Características fundamentales que debe cumplir un algoritmo:


Algoritmos y programas
 Tarea: Diseña un algoritmo para cruzar la calle.
 Algoritmos cotidianos:

A diferencia de los seres humanos que realizan actividades sin detenerse a pensar
en los pasos que deben seguir, los computadores son muy ordenados y necesitan
que quien los programa les diga cada uno de los pasos que deben realizar y el
orden lógico de ejecución.
 Tarea:

Enumera en orden lógico los pasos siguientes (para pescar):


___ El pez se traga el anzuelo.
___ Enrollar el sedal.
___ Tirar el sedal al agua.
___ Llevar el pescado a casa.
___ Quitar el Anzuelo de la boca del pescado.
___ Poner carnada al anzuelo.
___ Sacar el pescado del agua.
Algoritmos y programas
 Tarea: Utilizando un lenguaje cotidiano describe los pasos necesarios
para realizar las siguientes tareas:

1. Comprar un revista
2. Envolver un regalo
3. Freír un huevo

Ahora uno un poquitín más complicado:


4. Construye un avión de papel y después escribe los pasos necesarios para
que cualquiera pueda construir tu mismo modelo.
Algoritmos y programas

 Diseño de algoritmos:
 Podremos obtener distintas soluciones (algoritmos
distintos), igualmente válidas, para resolver un
mismo problema.
 Es necesario tener el conocimiento de las técnicas
de programación.
Algoritmos y programas
 Los algoritmos son independientes de los lenguajes de
programación y de las computadoras donde se ejecutan.
 Un mismo algoritmo puede ser expresado en diferentes lenguajes de
programación y puede ejecutarse en diferentes dispositivos.
 Ejemplo: Receta de cocina
 Puede estar en idiomas distintos (castellano, inglés, francés,...) y puede
cocinarse en vitrocerámica, fogón, etc. pero independientemente de lo
anterior, el plato se prepara con los mismos pasos.
 Lenguajes de programación: se podría definir como un idioma
artificial diseñado para que sea fácilmente entendible por un
humano e interpretable por una máquina.
 Los algoritmos se expresan en un lenguaje natural (gráfico
o no).
Algoritmos y programas.
 Un programa es un algoritmo expresado en un determinado
lenguaje de programación para poder ser ejecutado por un
ordenador.
 Secuencia lógica de instrucciones que manipulan datos para
obtener unos resultados que serán la solución del problema
que resuelve el programa.
 Los ordenadores se utilizan para resolver problemas, es decir,
para obtener un resultado a partir de unos datos de entrada.
 Dato: es todo aquello que puede ser almacenado de forma
independiente.
 Conjunto de símbolos que representan valores, hechos, objetos o ideas de
forma adecuada para ser tratados.
 Tipos básicos de datos.
 Estructuras de datos.
Algoritmos y programas
 Cuando los problemas a resolver son complejos:
 Descomponer el problema principal en subproblemas más
simples y éstos, a su vez en otros más simples.
 Estrategias:

 Diseño descendente: metodología de diseño de programas


consistente en descomponer un problema en problemas más
sencillos de resolver.
 Diseño modular (top-down): metodología de diseño de
programas consistente en dividir la solución en módulos más
pequeños o subprogramas.
 Las soluciones de los subproblemas se unen para obtener la
solución global del problema.
 Estas estrategias se basan en el concepto “divide y vencerás”.
Algoritmos y programas

 Podemos representar un algoritmo, principalmente:


 Gráficamente: diagramas de flujo

 Pseudocódigo
Algoritmos y programas

 Diagramas de Flujo:
 Representación gráfica de algoritmos.
 Conjunto de símbolos normalizados, conectados mediante líneas
de flujo que muestran la secuencia de pasos de un programa,
las acciones que realiza o el origen y destino de los datos.
 Organigramas (diagramas de flujo del sistema): visión general
del programa, E/S del programa, dispositivos utilizados.
 Ordinogramas: visión interna del programa. Diseño de
algoritmos.
Algoritmos y programas

 Organigramas – Normas: deben mostrar


 Datos o dispositivos de entrada (arriba)
 Soportes de entrada/salida (A Izda/dcha)
 Datos o dispositivos de salida (abajo)
 Nombre del proceso, tarea, programa (centro)
 Flujos de datos (flechas)
 Elementos:

disco Teclado Impresora Pantalla Almacenamiento interno

Línea de conexión
Proceso Disp. Conexión Salida/Entrada por línea de
Salida/Entrada
comunicación
Algoritmos y programas

 Ordinogramas – Normas:
 Un inicio (arriba) y un final (abajo).
 Secuencia de operaciones de arriba a abajo.
 Elementos conectados por líneas rectas de flujo
de datos sin cruces.
 Se debe guardar simetría.
 Inicio-Entrada datos-Proceso-Resultados-Fin
 Elementos:

Proceso E/S Impresora Pantalla

Condición Expresión

Inicio/Fin Conector subprograma


Alternativa
/Parada
Simple Alternativa Múltiple
Algoritmos y programas
 Pseudocódigo  Estructura general:
 Lenguaje intermedio entre el
lenguaje natural y lenguaje de Programa: Nombre del programa
programación sujeto a ciertas
Entorno:
reglas.
declaración de variables y tipos
 Independiente del lenguaje de
Algoritmo
programación y de la máquina.
Secuencia de instrucciones
 Permite el diseño descendente
FinAlgoritmo
(Top Down).
Subprograma: Nombre del subprograma
 No puede ser ejecutado
directamente por un ordenador, Entorno
por lo que tampoco es Algoritmo
considerado como un lenguaje de FinAlgoritmo
programación propiamente dicho.
Ahora sí (Pseint).
2. Fases en la resolución de un problema.
Fases en la resolución de un problema

 ¿Qué virtudes debe tener nuestra solución?


 Corrección y eficacia  resuelve el problema
adecuadamente.
 Eficiencia  resuelve el problema en un tiempo mínimo y con
un uso óptimo de los recursos del sistema.
Fases en la resolución de un problema
 Para obtener un programa que resuelva un problema determinado
debemos seguir un proceso:
Fase de resolución
Fase de resolución
 Análisis:
 Obtención de la especificación de los requisitos que se deben
cumplir.
 Reuniones entre analista/programador y cliente/usuario.
 Será útil la creación de prototipos.
 Cuestiones a resolver:
 ¿Cuál es la información que ofrecerá la solución del
problema?
 ¿Qué datos son necesarios para resolver el problema?
 Analizaremos la documentación de la empresa, investigaremos,
observaremos todo lo que rodea al problema y recopilaremos
información útil.
Fase de resolución
 Diseño:
 La especificación de la fase de análisis se convierte en un
diseño más detallado.
 Se indica el comportamiento o secuencia de instrucciones que
resuelven el problema  algoritmo
 Antes de pasar a la siguiente fase hemos de asegurarnos que
tenemos una solución adecuada  realización de prueba o
traza del programa (seguir paso a paso las instrucciones del
algoritmo utilizando datos concretos).
Fase de implementación
 Consta de las siguientes etapas:
 Codificación
 Prueba de ejecución y validación
Fase de implementación
 Codificación
 Traducimos el algoritmo a un determinado lenguaje de programación
 teniendo en cuenta las reglas gramaticales y sintaxis del lenguaje
escogido  obtenemos el código fuente
 Para comprobar la calidad y estabilidad de la aplicación se
realizarán pruebas:
 Pruebas unitarias  funciones de cada módulo
 Pruebas de interconexión  funcionamiento de los módulos entre ellos
 Pruebas de integración  comprobar que todos los módulos juntos
funcionan correctamente
 Para que el programa sea ejecutado por la máquina debe ser
traducido a un lenguaje que ésta entienda  código máquina  este
proceso se obtiene de dos formas según el L.P:
 Compilación
 Interpretación
Fase de implementación
 Compilación
 Las instrucciones escritas en un L.P. se traducen a
lenguaje máquina.
 Este proceso es realizado por un programa
llamado compilador, que genera el programa
para una determinada plataforma software
(S.O)

 El compilador realiza la traducción


e informa de los errores de
sintaxis.
 El programa traducido se llama
código objeto (código binario)
 Al código objeto se añade los
módulos de enlace o bibliotecas
durante el proceso de enlazado.
 Una vez finalizado obtenemos el
código ejecutable.
Fase de implementación
 Interpretación
 El intérprete es un programa que se encarga de
analizar y ejecutar el programa escrito en un L.P.
 El intérprete lee una a una las instrucciones, las
analiza, traduce a código máquina (si no hay
error) y ejecuta instrucción a instrucción del código
fuente.
 NO se genera código objeto ni programa
ejecutable.
 Generan programas de menor tamaño pero son
más lentos.
 Los lenguajes interpretados necesitan disponer en
la máquina donde se van a ejecutar del programa
intérprete, mientras que los compilados no.
 Ejemplos: PHP, JavaScript, Phyton, …
Fase de implementación. Depuración

 Depuración
 Consiste en eliminar los errores para la ejecución del
programa
Fase de implementación
 Prueba de ejecución y validación
 Implantación de la aplicación en el sistema donde va a
funcionar  debe ponerse en marcha y comprobar si su
funcionamiento es correcto.
 Se trata de poner a prueba nuestro programa para ver su
respuesta en situaciones difíciles.
 En esta etapa también se documentará el programa:
 Documentación interna  comentarios dentro del código
fuente
 Documentación externa  manuales para una mejor
ejecución y utilización del programa.
Fase de Explotación y mantenimiento
 El programa ya instalado en el sistema y utilizado por
el usuario  fase de explotación
 Periódicamente será necesario realizar evaluaciones 
modificaciones para adaptar el programa, actualizar
a nuevas necesidades, corregir errores, etc.
mantenimiento del software
 Importante añadir documentación adecuada que
facilite l programador la comprensión, uso,
modificación de los programas.
 Denominamos ciclo de vida del software al conjunto
de fases por las que pasa el software a lo largo de su
vida.
3. Paradigmas de programación
Paradigmas de Programación
 Un paradigma de programación es un modelo o técnica para el
diseño e implementación de programas.
 Este modelo determinará cómo será el proceso de diseño y la
estructura final del programa.
 Cada uno de los paradigmas existentes tienen sus ventajas e
inconvenientes, algunos son más o menos apropiados para
resolver determinados tipos de problemas, pero no es correcto
decir que un paradigma es mejor que otro.
 Existen múltiples paradigmas, incluso hay lenguajes de
programación que utilizan varios paradigmas (multiparadigma)
como java.
 Utilizar un paradigma de programación derivará en un
programa fácil de mantener, entender y corregir.
Paradigmas de Programación
 Los paradigmas se pueden clasificar en dos grandes grupos:

 El paradigma imperativo: (del latín Imperare, ordenar) consiste en una sucesión


de instrucciones que describen paso a paso lo que el programa debe hacer.
 El paradigma declarativo: consiste en describir el resultado final que se busca,
es decir, en expresar qué debe hacer el programa pero no cómo hacerlo. El
código es más difícil de entender por el alto grado de abstracción.
Paradigma de Programación Imperativo
 Programación convencional o no estructurada: basado en instrucciones de
salto (GOTO) que dificultaban la modificación del código y su reutilización.
Un programa era un único archivo.
 Programación estructurada: surge para resolver los problemas de la
programación convencional. Permite utilizar estructuras que facilitan la
modificación, reutilización y mantenimiento de los programas, como los bucles
o estructuras de control (Teorema de la P.E). Ej : C, Pascal, Fortran…
 Ventajas:

 Los programas son fáciles de leer, sencillos y rápidos.

 Depuración y mantenimiento de los programas es sencillo.

 Inconvenientes:

 Todo el programa se concentra en un único bloque.

 No permite reutilización eficaz de código => programación

modular.
 Programación procedimental: amplía el anterior permitiendo desglosar un
algoritmo en porciones manejables (procedimientos) con la intención de que
el código sea más claro.
Paradigma de Programación Imperativo

 Programación modular: El código se divide en bloques más


pequeños e independientes (módulos).
 Programación orientada a objetos: los programas se componen
de objetos independientes y reutilizables que tienen
propiedades y pueden hacer acciones.
 Está basada en técnicas como herencia, polimorfismo,

encapsulamiento…
 No es una programación tan intuitiva como la estructurada.

 El código es reutilizable.

 Facilidad para localizar y depurar un error en un objeto.

 Lenguajes como Java, C++, PHP son ejemplos.

 Programación visual, orientada a eventos.


Paradigma de Programación Declarativo

 Programación funcional: un programa consta de llamadas a


funciones concatenadas en las que cada parte del programa se
interpreta como una función. Por ejemplo, LISP, SQL…
 Programación lógica: se basa en la lógica matemática. En este
paradigma se especifica qué hacer y no cómo hacerlo. Se
utiliza en inteligencia artificial. Por ejemplo Prolog, Mercury …

 Algunos lenguajes de programación se incluyen en un único


paradigma como Smalltalk que es orientado a objetos, otros
como Phyton o Java son multiparadigma.
4. Lenguajes de Programación
Lenguajes de Programación
 Un lenguaje de programación es un conjunto de reglas
sintácticas y semánticas, símbolos y palabras especiales
establecidas para la construcción de programas.
 Está formado por:
 Alfabeto: conjunto de símbolos permitidos.

 Sintaxis: normas de construcción permitidas de los símbolos


del lenguaje.
 Semántica: significado de las construcciones para hacer
acciones válidas.
 Un lenguaje de programación es un lenguaje artificial creado
por el ser humano para expresar programas.
Lenguajes de Programación
 Clasificación según la cercanía al lenguaje humano
 De alto nivel: más próximos al razonamiento humano.

 De bajo nivel: más próximos al funcionamiento interno de


la computadora: (Máquina y Ensamblador).
 Clasificación según la técnica o paradigma de programación
utilizado: (algunos lenguajes pertenecen a varios paradigmas)
 Imperativos: Pascal, C, Java, C++, etc.
 Orientados a objetos: Java, PHP, etc.
 Visuales: Visual Basic.Net, Borland Delphi, etc.
 Declarativos: LISP, Prolog, etc.
Lenguajes de bajo nivel.
 Lenguaje Máquina:
 Sus instrucciones son combinaciones de unos y ceros.
 Único lenguaje que entiende directamente el ordenador (no necesita traducción).
 Depende del procesador.
 Fue el primer lenguaje utilizado, pero hoy nadie programa en este lenguaje.
 Inconvenientes:
 Cada programa era válido para un tipo de procesador solamente.
 Su lectura por el ser humano era extremadamente difícil, por tanto era difícil de
mantener.
 Lenguaje Ensamblador: https://es.wikipedia.org/wiki/Lenguaje_ensamblador
 Sustituyó al lenguaje máquina para facilitar la labor de programación. Es difícil de utilizar.
 En lugar de unos y ceros se programa usando mnemotécnicos (instrucciones complejas).
 Necesita traducción ( Programa Ensamblador) al lenguaje máquina para poder ejecutarse.
 Sus instrucciones son sentencias que hacen referencia a la ubicación física de los datos en el
equipo (direcciones de memoria).
 Dependen del hardware de la máquina.
 Inconvenientes:
 Los programas siguen dependiendo del hardware.
 Los programadores debían conocer la máquina donde programaban (memoria,
registros…)
Lenguajes de alto nivel.

 Lenguaje de alto nivel basados en código:


 Sustituyeron al lenguaje ensamblador para facilitar la labor de programación
 Fáciles de aprender y de utilizar => se reduce el tiempo de desarrollo.
 Son independientes del hardware.
 En lugar de mnemotécnicos, utilizan sentencias derivadas del idioma inglés.
 Necesita traducción al lenguaje máquina => Más lentos.
 Son utilizados hoy día, aunque la tendencia es que cada vez menos.
 Lenguajes visuales u orientados a eventos:
 Están sustituyendo a los lenguajes de alto nivel basados en código.
 En lugar de sentencias escritas, se programa gráficamente usando el ratón y
diseñando directamente la apariencia del software.
 Su correspondiente código se genera automáticamente.
 Necesitan traducción al lenguaje máquina.
 Son completamente portables de un equipo a otro.
http://www.larevistainformatica.com/LENGUAJES-DE-PROGRAMACION-
listado.html
5. Herramientas y entornos para el desarrollo de
programas.
Herramientas y entornos de desarrollo.

 Hay lenguajes pseudo-compilados o pseudo-interpretados


como Java.
 En Java el código fuente es compilado a bytecodes
(estructura similar a instrucciones máquina) que son
independientes del hardware.
 Java requiere de una máquina virtual que hace de
intérprete que traduce los bytecodes a código de la máquina
en cuestión.
COMPILACIÓN.
Herramientas y entornos de desarrollo.

 Máquina virtual (MV)


 Software cuya misión es separar el
funcionamiento del ordenador de los Código fuente

componentes hardware instalados. COMPILACIÓN.

 Garantiza la portabilidad de las


Código objeto
aplicaciones
MÁQUINA VIRTUAL

Hardware
Herramientas y entornos de desarrollo.

 Lenguaje que genera Java Programa


= lenguaje intermedio interpretable JAVA
por una máquina virtual instalada
en el ordenador a ejecutar. Compilación

 Máquina virtual de Java = máquina


ficticia que traduce las instrucciones bytecode
máquina-ficticia en instrucciones
para la máquina real.
 Java es compilado e interpretado
 Compilador: compila a bytecode

 Intérprete: ejecuta el código en


la máquina real SO: Linux + VM SO: Windows + VM SO: MAC + VM
Herramientas y entornos de desarrollo.

 Un entorno de ejecución es un servicio de


máquina virtual que sirve como base software
para la ejecución de programas.
 Actividades del entorno durante la ejecución:
 Configurar la memoria principal
 Enlazar los archivos del programa con las bibliotecas
existentes y con los subprogramas creados.
 Depurar los programas: comprobar la existencia (o no
existencia) de errores semánticos del lenguaje (los
sintácticos ya se detectaron en la compilación).
Herramientas y entornos de desarrollo.

 Java Runtime Environment o JRE


 Conjunto de utilidades que permitirá la ejecución
de programas java sobre cualquier tipo de
plataforma.
 Componentes:
 JMV o Máquina virtual Java  programa
que interpreta el código de la aplicación
escrito en Java.
 Bibliotecas de clase estándar que implementan
el API de Java.
Herramientas y entornos de desarrollo.

 JDK - Java Development Kit.  Herramientas de consola


incluidas en el JDK:
 Proporciona herramientas de
 java: VM de java
desarrollo para la creación de
 javac: compilador
programas en Java.  javap: desensamblador
 No incluye herramienta gráfica. de clases
 jdb: depurador de
 Incluye el JRE (Java Runtime consola
Environment): incluye como mínimo  javadoc: generador de
componentes para ejecutar una documentación
aplicación Java (máquina virtual y  Appletviewer: visor de
Applets.
librerías de clase).
 …
Herramientas y entornos de desarrollo.

 Framework:
 Estructura de ayuda al programador para desarrollar proyectos
sin partir desde cero.
 Plataforma software donde están definidos programas soporte,
bibliotecas, lenguaje interpretado, etc., que ayuda a desarrollar
y unir los diferentes módulos o partes de un proyecto.
 Ventajas de utilizar un framework:
 Desarrollo rápido de software.
 Reutilización de partes de código para otras aplicaciones.
 Diseño uniforme del software.
 Portabilidad de aplicaciones de un computador a otro, ya que
los bytecodes que se generan a partir del lenguaje fuente podrán ser
ejecutados sobre cualquier máquina virtual.
Herramientas y entornos de desarrollo.

 Inconvenientes de Frameworks:
 Gran dependencia del código respecto al framework utilizado.
 La instalación e implementación del framework en nuestro equipo
consume bastantes recursos del sistema.
 Ejemplos de Frameworks:
 .NET es un framework para desarrollar aplicaciones sobre Windows.
 Spring de Java
 Laravel
 …

 https://openwebinars.net/los-10-mejores-frameworks-
php-que-solicitan-las-empresas/
6. Errores y calidad de los programas.
Tipos de errores
 Tipos de Errores. Según la fase en la que se detecten los errores
pueden ser:
 Errores de compilación (sintácticos).

 Errores de ejecución. Más difíciles de detectar porque

dependen de los datos de entrada.


 Errores de lógica. Cuando se obtienen resultados incorrectos.

Para detectarlos se emplean ejecuciones de prueba con varios


grupos de datos de ensayo. Después se comprueban los
resultados con los que se deben obtener.
 Errores de especificación: El peor y el más costoso de corregir, y

se debe a la realización de unas especificaciones incorrectas


motivadas por una mala comunicación entre el analista y quien
plantea el problema. Hay que repetir el trabajo.
Calidad de los programas
 Las características generales que debe reunir un programa son:
 Legibilidad: ha de ser claro y sencillo para una fácil lectura y
comprensión.
 Fiabilidad: ha de ser robusto, es decir, capaz de recuperarse frente
a errores o usos inadecuados.
 Portabilidad: su diseño debe permitir la codificación en diferentes
lenguajes de programación, así como su instalación en diferentes
sistemas.
 Modificabilidad: ha de facilitar su mantenimiento, esto es, las
modificaciones y actualizaciones necesarias para adaptarlo a una
nueva situación. Relacionado con la legibilidad.
 Eficiencia: se deben aprovechar al máximo los recursos de la
computadora minimizando la memoria utilizada y el tiempo de
proceso de ejecución. Esto hoy en día no se cumple: Windows,
Office, …

También podría gustarte