Vous êtes sur la page 1sur 49

PLF

1.1 ESTILOS DE PROGRAMACIÓN


PARTE 1
CONCEPTOS FUNDAMENTALES
• Lenguaje
• Pseudocódigo
• Diagrama de flujo
• Prueba de escritorio
• Código
• Programación
• Programador
• Analista
• Ejecutar
LENGUAJE DE PROGRAMACIÓN

Para hablar de estilos de programación , es importante saber .¿Qué es un lenguaje de programación?

Un lenguaje de programación es un lenguaje inventado para


controlar una máquina, (normalmente, un ordenador)
REFLEXIÓN

Si el lenguaje es para comunicarse con las máquinas , entonces :


¿Qué tipos de máquinas han existido desde el origen de la computadora ,
hasta nuestros días ?
12 CRITERIOS
Los lenguajes de programación se pueden clasificar según varios criterios.
• Nivel de abstracción
• Propósito
• Evolución histórica,
• Manera de ejecutarse
• Manera de abordar la tarea a realizar
• Paradigma de programación
• Lugar de ejecución,
• Concurrencia
• Interactividad
• Realización visual
• Determinismo y productividad
NIVEL DE ABSTRACCIÓN
Lenguajes de bajo nivel: La programación se realiza teniendo muy en cuenta las características del procesador.
Ejemplo: Lenguajes ensamblador.

Lenguajes de nivel medio: Permiten un mayor grado de abstracción pero al mismo tiempo mantienen algunas
cualidades de los lenguajes de bajo nivel. Ejemplo: C puede realizar operaciones lógicas y de desplazamiento con bits
tratar todos los tipos de datos como lo que son en realidad a bajo nivel (números), etc.

Lenguajes de alto nivel: Más parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc.,
de una manera cercana al pensamiento humano ignorando (abstrayéndose) del funcionamiento de la máquina.
Ejemplos: Java, Ruby
PROPÓSITO
Lenguajes de propósito general: Aptos para todo tipo de tareas: Ejemplo: C.

Lenguajes de propósito específico: Hechos para un objetivo muy concreto.


Ejemplo: Csound (para crear ficheros de audio).

Lenguajes de programación de sistemas: Diseñados para realizar sistemas operativos o drivers. Ejemplo: C.
Lenguajes de script: Para realizar tareas varias de control y auxiliares.

Antiguamente eran los llamados lenguajes de procesamiento por lotes (batch) o JCL (“Job Control Languages”).
Se subdividen en varias clases (de shell, de GUI, de programación web, etc.).
Ejemplos: bash (shell), mIRC script, JavaScript (programación web)
EVOLUCIÓN
Lenguajes de primera generación (1GL): Código máquina.

Lenguajes de segunda generación (2GL): Lenguajes ensamblador.

Lenguajes de tercera generación (3GL): La mayoría de los lenguajes modernos,


diseñados para facilitar la programación a los humanos. Ejemplos: C, Java.

Lenguajes de cuarta generación (4GL): Diseñados con un propósito concreto, o sea,


para abordar un tipo concreto de problemas. Ejemplos: NATURAL, Mathematica.

Lenguajes de quinta generación (5GL): La intención es que el programador establezca el qué


problema ha de ser resuelto y las condiciones a reunir, y la máquina lo resuelve.
Se usan en inteligencia artificial.
Ejemplo: Prolog.
MANERA DE EJECUCIÓN

Lenguajes compilados: Un programa traductor traduce el código del programa (código fuente) en
código máquina (código objeto). Otro programa, el enlazador, unirá los ficheros de código objeto
del programa principal con los de las librerías para producir el programa ejecutable.
Ejemplo: C.

Lenguajes interpretados: Un programa (intérprete), ejecuta las instrucciones del programa de


manera directa.
Ejemplo: Lisp.
MANERA DE ABORDAR LA TAREA A REALIZAR
Lenguajes imperativos: Indican cómo hay que hacer la tarea,
es decir, expresan los pasos a realizar. Ejemplo: C.

Lenguajes declarativos: Indican qué hay que hacer y no el cómo.


Ejemplos: Lisp, Prolog.

Otros ejemplos de lenguajes declarativos, pero que no son


lenguajes de programación, son HTML (para describir páginas web)
o SQL(para consultar bases de datos).
PARADIGMA DE PROGRAMACIÓN
El paradigma de programación es el estilo de programación empleado.

Los paradigmas de programación nos indican las diversas formas que, a lo largo de la
evolución de los lenguajes, han sido aceptados como estilos para programar y para
resolver los problemas por medio de una computadora.

Los principales son:


PARADIGMA DE PROGRAMACIÓN

Lenguajes de programación procedural: Divide el problema en partes más pequeñas, que serán realizadas por subprogramas
(subrutinas, funciones, procedimientos), que se llaman unas a otras para ser ejecutadas. Ejemplos: C, Pascal.

Lenguajes de programación orientada a objetos: Crean un sistema de clases y objetos siguiendo el ejemplo del mundo real,
en el que unos objetos realizan acciones y se comunican con otros objetos. Ejemplos: C++, Java.

Lenguajes de programación funcional: La tarea se realiza evaluando funciones, (como en Matemáticas), de manera recursiva.
Ejemplo: Lisp.Clisps, Hasked

Lenguajes de programación lógica: La tarea a realizar se expresa empleando lógica formal matemática.
Expresa qué computar. Ejemplo: Prolog.
LUGAR DE EJECUCIÓN

En sistemas distribuidos, según dónde se ejecute:


Lenguajes de servidor: Se ejecutan en el servidor.
Ejemplo: PHP es el más utilizado en servidores web.
Lenguajes de cliente: Se ejecutan en el cliente.
Ejemplo: JavaScript en navegadores web
CONCURRENCIA

Según admitan o no concurrencia de procesos, esto es, la ejecución simultánea de


varios procesos lanzados por el programa:
Lenguajes concurrentes. Ejemplo: Ada.
Lenguajes no concurrentes. Ejemplo: C
REALIZACIÓN VISUAL
Lenguajes de programación visual: El programa se realiza moviendo bloques de
construcción de programas (objetos visuales) en un interfaz adecuado para ello. No
confundir con entornos de programación visual, como Microsoft Visual Studio y sus
lenguajes de programación textuales (como Visual C#).
Ejemplo: Mindscript.

Lenguajes de programación textual: El código del programa se realiza escribiéndolo.


Ejemplos: C, Java, Lisp
DETERMINÍSTICO

Según se pueda predecir o no el siguiente estado del programa a partir del


estado actual:
Lenguajes deterministas. Ejemplos: Todos los anteriores.

Lenguajes probabilísticos o no deterministas: Sirven para explorar grandes


espacios de búsqueda, (como gramáticas),y en la investigación teórica de
hipercomputación.
Ejemplo: mutt (generador de texto aleatorio)
PRODUCTIVIDAD

Según se caractericen por tener virtudes útiles o productivas, u oscuras y enrevesadas:


Lenguajes útiles o productivos: Sus virtudes en cuanto a eficiencia, sencillez, claridad,
productividad, etc., motiva que sean utilizados en empresas, administraciones públicas y/o
en la enseñanza.
Ejemplos: Cualquier lenguaje de uso habitual (C, Java, C++, Lisp, Python, Ruby, …).

Lenguajes esotéricos o exóticos: Inventados con la intención de ser los más raros, oscuros,
difíciles, simples y/o retorcidos de los lenguajes, para diversión y entretenimiento de frikis
programadores. A veces exploran nuevas ideas en programación.
Ejemplo: Brainfuck.
BIBLIOGRAFÍA

https://qbitacora.wordpress.com/2007/09/21/clasificacion-de-lenguajes-de-programacion/, consultado el 10/02/2017


ESTILOS DE PROGRAMACIÓN
• Termino que describe convenciones para escribir código fuente en ciertos lenguajes de
programación.

• El estilo de programación es frecuentemente dependiente del lenguaje de


programación que se haya elegido para escribir.

• El buen estilo, al tratarse de algo subjetivo, es difícil de categorizar concretamente; con


todo, existen un número de características generales. Con el advenimiento de software
que da formato al código fuente de forma automática, el foco en cómo éste debe de
ser escrito debe evolucionar de forma más amplia a la elección de nombres, lógica y
otras técnicas. Desde un punto de vista práctico, el uso de un computador para dar
formato al código fuente ahorra tiempo, y es posible forzar el uso de estándares a
nivel de una compañía completa sin debates religiosos.
ESTILOS DE PROGRAMACIÓN

Estilo K&R es el más utilizado en el lenguaje C y PHP, el estilo fue llamado de esta forma
porque fue usado por Kernighan y Ritchies en su libro The C Programming Lenguage.

Estilo Allman fue definido por Eric Allman, se trata de crear una nueva línea para las
llaves, e identificar el código debajo de ellas.

Estilo BSD KNF también conocido como estilo Kernel Normal From, es la manera más
usada para el código de la distribución del software del sistema operativo de Berkeley.

Estilo Whitesmiths también llamado estilo wishart, se coloca las llaves asociadas con
la instrucciones de control.
ESTILOS DE PROGRAMACIÓN
Estilo Descripción
Imperativo Entrada, procesamiento y salida de datos.

Funcional Utilización de funciones para cada proceso.

Lógico Operaciones lógicas y definición de reglas.

Orientado al Objeto El enfoque pretende utilizar la relación del hombre con


objetos, clases y métodos.

Orientado al Evento Herramientas resultantes de la POO y que permiten trabajar


con eventos, atributos y objetos encapsulados.

Orientado al Formato Son lenguajes interpretes que permiten internamente declarar


los formatos de salida del texto, imagen, grafica, etc.
ESTILO IMPERATIVO
ESTILO IMPERATIVO

• ORIGEN
• Resultado de la arquitectura de Von Neumann, que establece una secuencia de celdas, llamada
memoria, donde se guarda en forma codificada los datos e instrucciones.
• Además un procesador de ejecutar en forma secuencial una serie de operaciones, principalmente
aritméticas y booleanas, llamadas comandos.
• CONCEPTOS
• Datos: números, caracteres y booleanos, codificados y guardados en las celdas de memoria.
• Variables: nombres de las celdas donde están los datos.
• Instrucciones: Asignaciones, condicione, iteraciones y entrada/salida codificacdas como secuencia de
comandos.
• Programa: combinacion de declaraciones de variables y secuencias de instrucciones la cual se puede
guardar en memoria y, despues de un proceso de compilación, se ejecuta por el procesador.
ESTILO IMPERATIVO
• EJEMPLO
• Algunos de los lenguajes de este tipo son: Fortran, Algol, Pascal, C, Modula-2, Ada.

Program Primos(input,output);
{Programa para imprimir números primos entre 2 y n}
Const n=50
Var i=2..n;
j=2..n;
I_es_primo=boolean;
Begin
for i=2 to n do
begin
J=2;
i_es_primo:=true;
while i_es_primo and (j<=i) do
if (i mod j) <>0 then j:=j+1;
else i_es_primo:=false;
if i_es_primo then write(i);
end
End.
ESTILO IMPERATIVO

• EVALUACIÓN
• El programador deberá traducir la solución abstracta del problema a términos muy
primitivos, cercanos a la máquina.
• La solución de los problemas son más comprensibles para la máquina que para el hombre.
• Utilización de gran esfuerzo al momento de construir el programa y efectuar la evaluación de
calidad.
• Permite eficiencia en la construcción del código por la cercanía de los algoritmos a la sintaxis
del lenguaje.
ESTILO ORIENTADO AL
OBJETO
ESTILO ORIENTADO AL OBJETO
• ¿QUÉ ES LA POO?
• QUE NO ES...

• Un sistema computacional basado en ratones, ventanas, iconos,etc.

• No es un lenguaje.

• QUE ES...

• Es un conjunto de técnicas de OOP que pueden utilizarse en cualquier lenguaje conocido y los que están por venir (vendrán con
facilidades para manejar objetos).

• Estas técnicas nos aseguran la re-usabilidad de nuestro código, es decir los objetos que hoy escribimos, si están bien escritos, nos
servirán para siempre.

• Además podemos re-usar los comportamientos de un objeto, ocultando o redefininiendo los antiguos de acuerdo a las nuevas
necesidades.
ESTILO ORIENTADO AL OBJETO
• EJEMPLO SIMPLE
• Si tenemos un vehículo y queremos uno más rápido.
• No compramos uno nuevo, modificamos algunas piezas y utilizamos todas las otras.
• Podemos cambiar el carburador por otro más potente, cambiamos las ruedas por unas más anchas
para mejorar la estabilidad y añadimos un sistema turbo.
• ¿Que se ha hecho de POO?
• Hemos modificado las cualidades de nuestro objeto (métodos): el carburador y las ruedas.
• Hemos añadido un método nuevo: el sistema turbo
• Además podemos decir que nuestro modelo del vehículo es un objeto que pertenece a la clase
llamada vehículo.
• En programación tradicional hubiésemos tenido que construir un auto nuevo.
ESTILO ORIENTADO AL OBJETO

• ORIGEN
• Los conceptos de clase y herencia fueron por primera vez implementados en el lenguaje
Simula 67 (extensión de Algol 60).
• Simula 67 fue diseñado en 1967 por Ole-Johan Dhal y Krysten Nygaard en la
Universidad de Oslo y el Centro de Comunicación Noruego (Norsk Regnesentral).
• En los 80’s recién aparecen lenguajes que utilizan estos innovadores conceptos (Smalltalk
y sobretodo C++)
ESTILO ORIENTADO AL OBJETO
CONCEPTOS
• Clases
• Objetos
• Instancias
• Métodos
• Polimorfismo
• Herencia

RECOMENDACIÓN
• Dejar de lado todas las ideas preconcebidas acerca de cómo debe realizarse un programa.
ESTILO ORIENTADO AL OBJETO

VEGETALES CLASE1

ARBOLES CLASE2

ARBOLES
FRUTALES CLASE3

NARANJO MANZANO CLASE 3.2 CLASE 3.1


ESTILO ORIENTADO AL OBJETO
• Plan de Implementación en POO
• Diseño de estructura de clases
• Definir métodos que trabajan con estos datos
• Definir interrelaciones
• Utilización de herramientas como Rational Rose
• Nunca el modelo diseñado sobre papel o la herramienta es el modelo
finalmente implementado.
ESTILO ORIENTADO AL OBJETO
• Consejos para POO
• Divide y vencerás
• Definir método para cada tarea pequeña de la clase
• No piense en forma procedural
• Los objetos son de verdad, no son cajas de almacenamiento de código.
• Los métodos no son funciones
• No defina métodos como si fueran funciones, sino como acciones naturales del objeto.
• Pasos en el diseño para POO
• Identificar el ámbito de trabajo: establecer clases más bajas o abstractas.
• Identificar los distintos sub ámbitos de trabajo: instancias.
• Especificar objetos finales: establecer relaciones entre clases del ámbito y sub ámbito.
ESTILO ORIENTADO AL OBJETO
• Ejemplos en variables
Public String sNombre;

Protected int nEdad;

Private long nAcceso;

• Ejemplos en métodos
Public void Imprimir();

Protected int Calcular();

Private string Grabar();


ESTILO ORIENTADO AL OBJETO

• Limitaciones e inconvenientes de la POO


• Mucha fuerza bruta, pero poca productividad.
• La encapsulación y la herencia se contradicen, y son piedras angulares.
• Por un lado decimos los objetos deben ser totalmente independientes y autónomos, por otro lado al heredar se
deja fuera información perteneciente a una clase hija.
• Imposibilidad de usar objetos de distintos programadores.
ESTILO ORIENTADO AL OBJETO
PERSONA
Nombres Inserta
Apellidos imprime
Rut
Teléfono
Edad

• Sistema Universitario

EGRESADO
PROFESOR ESTUDIANTE Nombres Inserta
Nombres inserta Nombres Inserta Apellidos imprime
Apellidos imprime Apellidos imprime Rut
Rut Rut Teléfono
Teléfono Teléfono Edad
Edad Edad Carrera
Departamento Carrera NºMatricula
Oficina NºMatricula Tesis
Avance
ESTILO LÓGICO O DECLARATIVO

• Se indica lo que se quiere demostrar

• Se especifica el universo donde se debe demostrar

• Se establecen reglas, i.e., el “qué” y no el “cómo”

• Se debe incorporar un motor de inferencia que controle el proceso de demostración

• Los lenguajes más conocidos son Prolog y OPS

• La principal aplicación es el desarrollo de sistemas expertos.


ESTILO LÓGICO O DECLARATIVO

• Los lenguajes lógicos o declarativos cuentan con:


• Un sistema de representación de conocimiento mediante reglas de producción.

• Un motor de inferencia de orden 1 que es el propio interprete o compilador.

• Un sistema sencillo de dialogo

• Una especial compactación al necesitar ninguna estructura de control.

• Operaciones de entrada\salida complejas, pero posibles


ESTILO LÓGICO O DECLARATIVO
• Prolog
• Programming in Logic fue creado por Alain Colmearauer y Philippe Roussel de la Universidad de Aix-
Marseille (Marsella,Francia) en 1972,

• Se baso en el principio de resolución automática de Robinson (1965)

• El elemento principal de Prolog son los predicados, que es aquello que se afirma o se dice de un sujeto.
Abuelo(Nombre_A, Nombre_B)

Que indica que el abuelo de Nombre_A es Nombre_B


ESTILO LÓGICO O DECLARATIVO

• OPS
• Official Production System fue creado por C.L. Forgy de la Universidad Carnegie
Mellon en la mitad de la década de los setenta.
• Los elementos básicos son:
• Los datos: compuestos por tres campos (atributos, valor y dato no accesible al
programador). Estas se almacenan en la memoria de trabajo (WME\working memory
element)
• Las reglas: son la estructura de representación del conocimiento.
(nombre_regla(condición1)...(condición_n) (acción_1)...(acción_n))
ESTILO LÓGICO O DECLARATIVO
• Programa tradicional
• Dato+algoritmo+control+e\s
• Programa Sistema Experto
• Base Hechos: La información no cambia los resultados en las diferentes ejecuciones del
sistema experto, es un conjunto de información fija (no cambia)
• Base Conocimiento: El algoritmo es reemplazado de conocimiento, es un conjunto de reglas
que determinan el dominio y el ámbito que va a resolver el problema.
• Motor de inferencia:Shell,que contiene el control del motor de inferencia, donde se puede
ejecutar.
• Además están el modulo de usuario y el modulo experto.
• Los S.E. son declarativos
ESTILO FUNCIONAL
• Características principales
• Programación aplicativa o funcional
• Se utiliza almacenamiento en montículos
• Se utilizan estructura de listas

• Principales lenguajes Haskell, LISP, ML (Meta lenguaje)


ESTILO ORIENTADO AL EVENTO
• Origen
• Son herramientas gráficas de programación
• Su base esta en la POO
• Contienen y permiten crear objetos estándar
• Posee los mismos conceptos de la POO
• Objeto
• Clases
• Métodos
• Evento
• Propiedades
• Encapsulación.
ESTILO ORIENTADO AL
EVENTO
DEFINICIÓN EJEMPLO DE LA REALIDAD EJEMPLO DE VISUAL BASIC

Objeto Un bosque Una ventana de dialogo


Clase Un árbol dentro del bosque Un botón dentro de la
ventana
Evento La ruptura de la rama Un click sobre el botón
Método El ruido de la caída La rutina ejecutada cuando
el botón se presione
Propiedades Grande, frondoso, etc. Color verde, pequeña, etc

DEFINICIÓN EJEMPLO DE LA REALIDAD EJEMPLO DE VISUAL BASIC

Objeto Una habitación Una ventana MDI


Clase Una puerta de la habitación Una alternativa de menú
Evento La apertura de la puerta Un click sobre el menu
Método El viento que puede provocar La rutina ejecutada cuando
la opción se acepta
Propiedades Color. Forma, textura, etc Color destacado, mensaje
lateral Ctrl-F12, etc
ESTILO ORIENTADO AL EVENTO

• Principales herramientas
• Visual Studio (VB,VJ++,VC++) (Microsoft)
• Delphi (Borland)
• Power Builder (PowerSoft)
• Jbuilder (Borland)
ESTILO ORIENTADO AL EVENTO

• Métodos y Eventos
• Un evento es la ocurrencia de algo asociado a un objeto.
• Objetos y Clases
• Cada objeto posee propiedades, eventos y funciones.
BIBLIOGRAFÍA

• “Lenguajes de Programación”, Pratt Terrence


• “Programación orientado a objetos”, Luis Joyanes Aguilar
• www.eidos.es
• www.fciencias.unam.mx
• www.inf.unitru.edu.pe
• http://nile.ed.umuc.edu/~cklein/ood/html/beforecourse.html

Vous aimerez peut-être aussi