2 Unidad i Epoo Intro Paradig

22
 Au tor : L ui s H eladio Gar z ó n Rodr í guez OBJETIVO GENERAL Propender porque el estudiante se apropie del conocimiento de conceptos sobre programación y los paradigmas de programación, fundamentales en su formación como ingeniero. OBJETIVOS ESPECIFICOS  Comprender los conceptos fundamentales de la programación y su importancia.  Conocer sobre los lenguajes de programación la evolución histór ica, clasificación, y sus diferencias.  Conocer los atributos de un buen lenguaje de programación.  Comprender los modelos básicos de los paradigmas de programación.  Diferenciar los paradigmas de programación y su importancia.  Profundizar mediante la investigación de los conceptos aquí tratados de parte del estudiante. CONCEPTOS FUNDAMENTALES DE PROGRAMACIÓN Es necesario conocer conceptos sobre programación para consolidar fundamentos, que permitan comprender para desempeñarse con éxito en el ámbito de la programación de computadores, como parte del proceso de aprendizaje, para asimilar y familiarizarse con palabras y conceptos que serán parte del bagaje de conocimientos necesarios en esta disciplina. 1. CONCEPTOS BASICOS Datos Información Programa Lenguaje de programación Interpretador Compilador Software Procesamiento de datos 1.1 DATOS Los datos son la materia prima de la información. Los son atributos o características relacionadas con un individuo, objeto o suceso. Son ejemplos de datos: nombre, descripción, fecha de nacimiento, estatura, cantidad de horas laboradas, peso etc. UNIDAD I  INTRODUCCIÓN A LOS PRADIGMAS DE PROGRAMACIÓN

Transcript of 2 Unidad i Epoo Intro Paradig

Page 1: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 122

Autor Luis Heladio Garzoacuten Rodriacuteguez

OBJETIVO GENERAL

Propender porque el estudiante se apropie del conocimiento de conceptos sobreprogramacioacuten y los paradigmas de programacioacuten fundamentales en su formacioacutencomo ingeniero

OBJETIVOS ESPECIFICOS

Comprender los conceptos fundamentales de la programacioacuten y su importancia Conocer sobre los lenguajes de programacioacuten la evolucioacuten histoacuterica clasificacioacuten y

sus diferencias Conocer los atributos de un buen lenguaje de programacioacuten Comprender los modelos baacutesicos de los paradigmas de programacioacuten Diferenciar los paradigmas de programacioacuten y su importancia Profundizar mediante la investigacioacuten de los conceptos aquiacute tratados de parte del

estudiante

CONCEPTOS FUNDAMENTALES DE PROGRAMACIOacuteN

Es necesario conocer conceptos sobre programacioacuten para consolidar fundamentos quepermitan comprender para desempentildearse con eacutexito en el aacutembito de la programacioacutende computadores como parte del proceso de aprendizaje para asimilar y

familiarizarse con palabras y conceptos que seraacuten parte del bagaje de conocimientosnecesarios en esta disciplina

1 CONCEPTOS BASICOSDatosInformacioacutenProgramaLenguaje de programacioacutenInterpretadorCompiladorSoftwareProcesamiento de datos

11 DATOS

Los datos son la materia prima de la informacioacuten Los son atributos o caracteriacutesticasrelacionadas con un individuo objeto o suceso

Son ejemplos de datos nombre descripcioacuten fecha de nacimiento estatura cantidadde horas laboradas peso etc

UNIDAD I

INTRODUCCIOacuteN A LOS PRADIGMAS DE PROGRAMACIOacuteN

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 222

Autor Luis Heladio Garzoacuten RodriacuteguezEs necesario clasificar los datos que se va a utilizar en un programa con el fin deoptimizar la utilizacioacuten de la memoria del computador Para ello es necesario tener encuenta criterios como

a Utilizacioacuten Identificar claramente que papel desempentildeara el dato dentro delprograma Analizar si realizara alguna operacioacuten aritmeacutetica con elb Contenido Analizar que valores posibles puede almacenar el datoc Tamantildeo Para todos los datos es necesario tener en cuenta el nuacutemero de bytes

que puede ocupar Esto implica tener en cuenta el rango de valores que puedeaceptar de acuerdo a la clasificacioacuten que se elija Esto puede variar de acuerdoal lenguaje de programacioacuten utilizado Esta practica es muy importante porqueayuda en el propoacutesito de administrar adecuadamente la memoria principal delcomputador

Los datos en su forma baacutesica o simple se clasifican en

Numeacutericos

CaraacutecterLoacutegicos

Datos Numeacutericos

Dato numeacuterico es aquel cuyo valor y contenido esta compuesto por diacutegitos numeacutericosUn dato numeacuterico puede participar en operaciones aritmeacuteticas

Pero los datos numeacutericos se clasifican a su vez enhttpmsdnmicrosoftcomes-eslibraryae55hdtk(VS80)aspx httpwwwaulaclicesaccess2002b_3_2_2htm

EnterosReales

Se puede encontrar otras clasificaciones en los datos numeacutericos dependiendo dellenguaje de programacioacuten

Otros sitios de intereacuteshttpwwwtecnupfedu~vlopezdocenciacastellanotodoshtmlPIt4casnode9html

httpwwwtecnupfedu~vlopezdocenciacastellanotodoshtmlPIt4casnode14html

Datos Caraacutecter o cadena

Se considera que es de este tipo de dato a los datos cuyo valor esta compuesto por

caracteres que pueden formar una cadena que contenga uno o mas Tambieacuten seconocen con el nombre de datos alfanumeacutericos por que su valor contiene unacombinacioacuten de letras nuacutemeros yo siacutembolos especiales

Aunque se puede realizar operaciones aritmeacuteticas entre cadenas su resultado no seraacuteel esperado de acuerdo al operador escogido Por ejemplo sean las cadenas dato_1 ydato_2 se desea realizar una suma de sus contenidos y almacenarlo en dato_3

1 Supongamos que se asigna valores a los datos dato_1 = bdquo145‟ y dato_2 = bdquo862‟

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 322

Autor Luis Heladio Garzoacuten Rodriacuteguez2 Ahora si se propone la instruccioacuten suma asignando a dato_3 el resultado

dato_3 = dato_1 + dato_23 Lo que realmente se obtiene como valor almacenado en dato_3 no es la suma

de 145 mas 862 sino la cadena bdquo145862‟ lo que en programacioacuten se conocecomo concatenar cadenas de caracteres

Profundice mas al respecto

Datos Estructurados

Este pertenece al tipo de datos definidos por el usuario En el que se permiteconfigurar una combinacioacuten de datos de diferente tipo que no esta predefinido en ellenguaje de programacioacuten

En el paradigma de programacioacuten estructurada se les nombraba como registros En elparadigma de programacioacuten orientada a objetos se conocen como objetos

Es importante profundizar mas sobre este tipo de dato y sus variantes de acuerdo alparadigma de programacioacuten y el lenguaje de programacioacuten

12 INFORMACIOacuteN

Es el resultado que se obtiene del tratamiento de datos a traveacutes de procedimientosmanuales o automatizados mediante aplicativos de software que ofrecen solucioacuten anecesidades o solicitudes especificas que permitan el entendimiento de algunasituacioacuten o sirvan para la toma de decisiones

En este link encontrar mas sobre la definicioacuten de informacioacuten

httpeswikipediaorgwikiInformaciC3B3n Es necesario e importante que investigue mas definiciones al respecto

13 PROGRAMA

Un programa es un conjunto de instrucciones oacuterdenes u operaciones escritas en unlenguaje de programacioacuten ordenadas loacutegica y secuencialmente elaborada o disentildeadopor una persona para dar solucioacuten a una necesidad o problema especifico con el finproducir resultados o informacioacuten que el ordenador es capaz de entender y realizar enel orden correcto El programa debe ser de faacutecil utilizacioacuten

Los programas se pueden escribir o codificar en diferentes lenguajes de programacioacuten

14 LENGUAJE DE PROGRAMACIOacuteN

Los programas que ejecutan los ordenadores tienen que escribirse siguiendo unasnormas determinadas de manera que el ordenador entienda de queacute instruccionesconsta y de queacute manera tiene que ejecutarlas Este conjunto de normas se denominalenguaje de programacioacuten De la misma manera que las personas se comunican entreellas mediante un lenguaje los lenguajes de programacioacuten permiten la comunicacioacutenentre las personas y los ordenadores y tambieacuten entre ordenadores

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 422

Autor Luis Heladio Garzoacuten RodriacuteguezExiste una multitud de lenguajes diferentes cada uno pensado y adaptado a unanecesidad especiacutefica Los hay desde los maacutes proacuteximos al funcionamiento fiacutesico delordenador los lenguajes de bajo nivel hasta los que intentan reproducir modelos de la

realidad con diferentes grados de abstraccioacuten y sin tener en cuenta el hardware quepueda haber los lenguajes de alto nivel

141 Lenguajes de bajo nivel

1411 Lenguaje maacutequina

El lenguaje maacutequina consiste en el conjunto de instrucciones que un determinadoprocesador es capaz de entender y ejecutar Cada procesador tiene su propio lenguajemaacutequina y son notables las diferencias entre los distintos modelos de procesadoresLas instrucciones se refieren a movimientos de datos entre las distintas partes de laCPU del ordenador la memoria los registros canales de entradasalida etc y esnecesario especificar las direcciones concretas y el nuacutemero de bytes que hay queoperar Es decir especifican exactamente queacute tiene que hacer el ordenador pero esenormemente complicado y difiacutecil de utilizar Es el uacutenico lenguaje que entienderealmente el ordenador de manera que cualquier otro tiene que traducirse a lenguajemaacutequina

1412 Lenguaje ensamblador

El lenguaje ensamblador puede considerarse de bajo nivel porque estaacute orientado allenguaje maacutequina Sus instrucciones son muy similares a las del lenguaje maacutequinapero en vez de coacutedigos y nuacutemeros en binario utiliza siacutembolos mnemoteacutecnicos y cifrasdecimales De esta manera el significado de cada instruccioacuten es maacutes evidente y por lotanto maacutes faacutecil de recordar y utilizar que la sucesioacuten de ceros y unos del lenguaje

maacutequina Cada modelo de ordenador tiene su propio lenguaje ensamblador Unaherramienta denominada ensamblador convierte los coacutedigos de lenguaje ensambladoren un programa binario en un proceso bastante sencillo denominado ensamblaje

142 Lenguajes de alto nivel

Los lenguajes de alto nivel estaacuten maacutes orientados al problema que tienen que resolverque a la maacutequina Por esta razoacuten son independientes del ordenador y por lo tantopueden ser utilizados en cualquier tipo de maacutequina

Un programa escrito en un lenguaje de alto nivel programa fuente debe traducirse allenguaje maacutequina del ordenador que tiene que ejecutarlo Existen dos maneras

diferentes de realizar esta traduccioacuten

Interpretacioacuten que se lleva a teacutermino con un inteacuterprete del lenguaje encuestioacuten Este programa lee cada instruccioacuten del programa fuente la traduce acoacutedigo maacutequina y hace que la ejecute el ordenador de manera inmediata Es unproceso relativamente lento y por tanto se utiliza para aplicaciones pequentildeasy que no requieren gran velocidad Algunos lenguajes interpretados conocidosson BASIC con sus variantes lenguajes de procesamiento de comandos de lossistemas operativos o lenguajes de acceso a bases de datos como SQL

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 522

Autor Luis Heladio Garzoacuten RodriacuteguezSQL

SQL (Structured Query Language) es un lenguaje no estrictamente de

programacioacuten Se trata de un lenguaje para interrogar y procesar informacioacuten enuna base de datos relacional

Fue desarrollado por IBM para las bases de datos de sus mainframes

Los mandos SQL se pueden utilizar para trabajar interactivamente con una basede datos o para insertarlos en un lenguaje de programacioacuten para hacer deinterfaz con una base de datos

Algunos de los sistemas de gestioacuten de bases de datos que utilizan SQL son DB2SQLDS Oracle Sybase SQLbase INFORMIX e Ingres

El siguiente ejemplo de SQL selecciona clientes con un liacutemite de creacutedito de por lomenos 100000 um y los ordena de maacutes a menos creacutedito

SELECT NOMBRE CIUDAD CODIGOPOSTALFROM CLIENTEWHERE LIMITECREDITO gt= 100000ORDER BY LIMITECREDITO DESC

Compilacioacuten Un programa denominado compilador traduce todo elprograma fuente a coacutedigo maacutequina con el que se obtiene el programaobjeto que puede ejecutarse tantas veces como sea necesario sin tener quetraducir cada vez El proceso de compilacioacuten es tedioso y lento y se debe

renovar cada vez que se hace un cambio en el programa fuente pero acambio el programa objeto se ejecuta a la velocidad maacutes alta posible Es laopcioacuten adecuada para aplicaciones complejas

Los lenguajes maacutes utilizados caen dentro de esta categoriacutea por ejemploFORTRAN COBOL IMS Pascal C y C++

FORTRAN

El lenguaje FORTRAN (Formula Translation) data de los antildeos cincuenta y todaviacutease utiliza en determinados aacutembitos

Su punto fuerte es el caacutelculo matemaacutetico especialmente con coma flotante esdecir la computacioacuten con nuacutemeros reales de gran precisioacuten En cambio nodispone de construcciones por programacioacuten modular ni de estructuras de controlavanzadas

A lo largo de los antildeos se ha estandarizado varias veces y las versiones maacutesconocidas son FORTRAN I FORTRAN II FORTRAN IV FORTRAN 77 yactualmente FORTRAN 90

Ha sido el lenguaje maacutes utilizado para caacutelculos cientiacuteficos complejos modelos deingenieriacutea estadiacutestica y procesamiento de sentildeal Tambieacuten es muy adaptable a

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 622

Autor Luis Heladio Garzoacuten Rodriacuteguezhardware especializado como por ejemplo superordenadores y ordenadoresparalelos

Un ejemplo de caacutelculo matemaacutetico con FORTRAN

PROGRAM Rad Simple FORTRAN program

REAL PRCIF (NOT (R = 00)) THEN

P = 31415926R = 25C = P RPRINT C = C

END IFEND

COBOL

COBOL (Common Business-Oriented Language) es un lenguaje orientado a laresolucioacuten de las necesidades de bancos y otras entidades financierasadministraciones faacutebricas o cualquier gran organizacioacuten que tenga que gestionarun volumen de datos importante

COBOL tiene una sintaxis recargada que intenta parecerse al lenguaje ingleacutes Unode sus puntos fuertes es la generacioacuten de informes ya que permite especificaruna gran variedad de formatos de salida

Un programa en COBOL consta de cuatro divisiones

Identificacioacuten permite identificar el programa su objetivo el autor y otrosdatos similares

Entorno enumera los recursos fiacutesicos que el programa puede necesitar parafacilitar asiacute la portabilidad entre ordenadores

Datos declara los datos del programa Procedimientos indica coacutemo se tienen que procesar los datos

COBOL se definioacute en 1960 y ha tenido varias revisiones La maacutes actual incluyecaracteriacutesticas de orientacioacuten a objetos y estructuras de control sofisticadas en unintento de modernizar el lenguaje y no perder toda la inversioacuten en software realizada ya que se calcula que es el lenguaje con que se han programado maacutes

liacuteneas de coacutedigoLos programas en COBOL acostumbran a ser bastante largos y sobrecargados yaque cualquier pequentildeo procedimiento requiere muchas liacuteneas A continuacioacuten sepresenta un ejemplo simplificado para calcular comisiones de vendedores

IDENTIFICATION DIVISIONPROGRAM-ID COMISION-VENDEDORAUTHOR DEPT-INFO

ENVIRONMENT DIVISIONINPUT-OUTPUT SECTIONFILE-CONTROL

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 722

Autor Luis Heladio Garzoacuten RodriacuteguezSELECT FICHERO-VENDEDORES ASSIGN TO DISK

ACCESS MODE IS RANDOM ORGANIZATION IS RELATIVERELATIVE KEY IS NUMERO

SELECT FICHERO-VENTAS ASSIGN TO TAPE RESERVE NO AREASACCESS MODE IS SEQUENTIAL ORGANIZATION IS SEQUENTIALDATA DIVISION

FILE SECTIONFD FICHERO-VENDEDORES LABEL RECORD IS STANDARD

RECORDING MODE IS VRECORD CONTAINS 30 TO 60 CHARACTERSDATA RECORD IS VENDEDORES

01 VENDEDORES02 NOMBRE PICTURE X(50)02 NUMERO PICTURE 9(10)

FD FICHERO-VENTAS LABEL RECORD IS STANDARDRECORDING MODE IS F

RECORD CONTAINS 8DATA RECORD IS VENTA

01 VENTA PICTURE 9(8)WORKING STORAGE SECTION

77 PCT PICTURE 9(6)77 TOTAL PICTURE 9(6)

PROCEDURE DIVISIONINICIOOPEN INPUT FICHERO-VENDEDORES INPUT FICHERO-VENTASCLAVE

ADD 1 TO NUMEROLECTURA

READ FICHERO-VENDEDORES INVALID KEY GO TO FINAL-PROGREAD FICHERO-VENTAS AT END GO TO FINAL-PROGCALCUL

DIVIDE VENTA INTO 100 GIVING PCTMULTIPLY PCT BY 40 GIVING TOTAL

RESULTADODISPLAY NUMERO UPON PRINTERDISPLAY TOTAL UPON PRINTERGOTO CLAVE

FINAL-PROGCLOSE FICHERO-VENDEDORES AND FICHERO-VENTASSTOP RUN

IMS

El sistema IMS (Information Management System) se utiliza para consultar basesde datos tuvo una gran expansioacuten en los antildeos setenta Se trata de un productode IBM para las bases de datos de mainframes sobre el sistema MVS

IMSDB (IMSData Base) es la base de datos que funciona en un entorno deproceso por lotes

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 822

Autor Luis Heladio Garzoacuten RodriacuteguezIMSDC (IMSData Communications) es un programa necesario cuando se utilizainteractivamente y tambieacuten permite acceder a bases de datos DB2

PASCAL

Pascal es un lenguaje disentildeado inicialmente para ensentildear a programar Como tallenguaje educativo presenta una estructura perfectamente acadeacutemica de laprogramacioacuten estructurada Requiere una programacioacuten detallada todos lostipos datos y subrutinas se tienen que declarar antes de utilizarlos Estaacutefuertemente estructurado en bloques y cada uno de los cuales permite declarardatos y funciones y tambieacuten otros bloques de nivel inferior Asiacute se puedenestructurar los datos y los procedimientos en tantos niveles como resultenecesario

Es un lenguaje apropiado para aplicaciones geneacutericas aunque en muchas aacutereas

se ha sustituido por lenguajes orientados a objetos como C++ y JavaC

C es probablemente uno de los lenguajes maacutes utilizados actualmente Es unlenguaje estructurado pero tambieacuten permite una programacioacuten de bajo nivel locual lo hace adecuado para sistemas operativos (como Unix) y como software decontrol de perifeacutericos aunque se utiliza en todo un tipo de aplicaciones inclusoen las de maacutes alto nivel como por ejemplo libreriacuteas graacuteficas

C permite escribir raacutepidamente un coacutedigo muy optimizado y maacutes portable que enensamblador

El lenguaje C dispone de un conjunto completo de operadores aritmeacuteticosestructuras de datos sencillas subrutinas estructuras de control convencionalespunteros en memoria un potente procesador de macros y un amplio conjunto delibreriacuteas Tiene un primer nivel de modularizacioacuten de manera que los datospueden tener un aacutembito global o local en la funcioacuten donde se han definidoTambieacuten es un lenguaje fuertemente tipificado es decir que requiere declarartodos los datos con su tipo

Las distintas versiones de C se estandarizaron en 1990 en el denominado ANSI-C

Ejemplo de programa que cuenta el nuacutemero de caracteres de un texto y escribeel resultado por pantalla

include ltstdiohgtmain(int argc char argv[])

int cmpfor( cmp = 0 argv[0][cmp]=0 cmp++ )printf(d caracteresn cmp)

C++

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 922

Autor Luis Heladio Garzoacuten RodriacuteguezC++ es la evolucioacuten a orientacioacuten a objetos del lenguaje C Tiene una sintaxismuy parecida a la de C con varias extensiones para soportar clases herencia yotras caracteriacutesticas de orientacioacuten a objetos

C++ evolucionoacute raacutepidamente para convertirse en un lenguaje independienteactualmente es muy popular para el desarrollo de aplicaciones

C++ ofrece muchas de las estructuras de programacioacuten orientada a objetosherencia muacuteltiple tipificacioacuten estricta memoria dinaacutemica patrones geneacutericospolimorfismo control de excepciones y sobrecarga de operadores

Como derivado de C dispone de todas sus propiedades pero tambieacuten haheredado sus defectos como por ejemplo los punteros en memoria

C++ es uno de los lenguajes orientados a objetos maacutes utilizados y de los maacutes

perfeccionados A pesar de esto no tiene algunas de las caracteriacutesticas que seconsideran imprescindibles en un lenguaje orientado a objetos de uacuteltimageneracioacuten (concurrencia persistencia y garbage collection) aunque suscompiladores pueden generar programas muy compactos y que se ejecutan conmucha eficiencia

Como todos los lenguajes de programacioacuten orientada a objetos su estructuraprincipal es la que define una clase es decir el tipo de un objeto

A continuacioacuten se presenta un ejemplo de clase

class cercle public formaint radi datos de la clasefloat area() meacutetodos de la clase

Y un sencillo programa que escribe un mensaje de saludo por pantalla

include ltiostreamhgtinclude ltStringhgt

main(int argc char argv[])

String ss = new String(Hola)cout ltlt s ltlt endlcout ltlt Longitud del texto ltlt s-gtlength() ltlt endl

Uacuteltimamente han aparecido algunos lenguajes que se alejan de este modelo endiferentes sentidos Todos ellos se utilizan en la programacioacuten en entornosrelacionados con Internet que presentan caracteriacutesticas especiales

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1022

Autor Luis Heladio Garzoacuten RodriacuteguezEl lenguaje Java por ejemplo tiene un modo de traduccioacuten a lenguaje maacutequinamixto En una primera fase se compila en un coacutedigo maacutequina universal queposteriormente es interpretado y ejecutado por un programa especiacutefico Este

programa puede utilizarse desde cualquier navegador de Internet y permitedistribuir programas objetos por red que pueden ejecutarse en cualquierordenador

Java

Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxisparecida a la de C++

Tiene un conjunto de prestaciones bastante amplio herencia tipificacioacuten dedatos estricta modularidad control de excepciones polimorfismo concurrenciacarga dinaacutemica de libreriacuteas garbage collection y una amplia coleccioacuten de libreriacuteas

estaacutendar En cambio no incluye algunas caracteriacutesticas que podriacutean comprometersu simplicidad y seguridad como punteros herencia muacuteltiple sobrecarga deoperadores o un preprocesador de macros

Como lenguaje orientado a objetos su estructura fundamental es la clase que selleva hasta las uacuteltimas consecuencias en Java no puede haber datos o funcionesglobales todas deben estar asociadas a una clase Las clases se pueden agruparen paquetes que facilitan mucho la portabilidad de sus aplicaciones Todos lospaquetes estaacuten organizados en una estructura jeraacuterquica que evita la aparicioacuten dedistintas variantes para la misma funcionalidad

Java se compila en un coacutedigo independiente de la plataforma bytecode queposteriormente es interpretado por una aplicacioacuten la maacutequina virtual de JavaHay una definicioacuten formal del bytecode que asegura la portabilidad

Java ademaacutes de resultar adecuado para programar aplicaciones normalespermite desarrollar programas hospedados en servidores web Estos programasse llaman applets Tienen la capacidad de ser distribuidos por la red en forma debytecode y poderse ejecutar en cualquier plataforma Presentan variasrestricciones para evitar problemas de seguridad

El mayor inconveniente de Java es que tiene un rendimiento bajo ya que altener que ser interpretado por la maacutequina virtual su velocidad de ejecucioacuten eslenta

A continuacioacuten se presenta un ejemplo de applet escrito en Java

import javaappletimport javaawt

public class AppletHola extends Applet

Este meacutetodo visualiza el mensajepublic void paint(Graphis g)

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 2: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 222

Autor Luis Heladio Garzoacuten RodriacuteguezEs necesario clasificar los datos que se va a utilizar en un programa con el fin deoptimizar la utilizacioacuten de la memoria del computador Para ello es necesario tener encuenta criterios como

a Utilizacioacuten Identificar claramente que papel desempentildeara el dato dentro delprograma Analizar si realizara alguna operacioacuten aritmeacutetica con elb Contenido Analizar que valores posibles puede almacenar el datoc Tamantildeo Para todos los datos es necesario tener en cuenta el nuacutemero de bytes

que puede ocupar Esto implica tener en cuenta el rango de valores que puedeaceptar de acuerdo a la clasificacioacuten que se elija Esto puede variar de acuerdoal lenguaje de programacioacuten utilizado Esta practica es muy importante porqueayuda en el propoacutesito de administrar adecuadamente la memoria principal delcomputador

Los datos en su forma baacutesica o simple se clasifican en

Numeacutericos

CaraacutecterLoacutegicos

Datos Numeacutericos

Dato numeacuterico es aquel cuyo valor y contenido esta compuesto por diacutegitos numeacutericosUn dato numeacuterico puede participar en operaciones aritmeacuteticas

Pero los datos numeacutericos se clasifican a su vez enhttpmsdnmicrosoftcomes-eslibraryae55hdtk(VS80)aspx httpwwwaulaclicesaccess2002b_3_2_2htm

EnterosReales

Se puede encontrar otras clasificaciones en los datos numeacutericos dependiendo dellenguaje de programacioacuten

Otros sitios de intereacuteshttpwwwtecnupfedu~vlopezdocenciacastellanotodoshtmlPIt4casnode9html

httpwwwtecnupfedu~vlopezdocenciacastellanotodoshtmlPIt4casnode14html

Datos Caraacutecter o cadena

Se considera que es de este tipo de dato a los datos cuyo valor esta compuesto por

caracteres que pueden formar una cadena que contenga uno o mas Tambieacuten seconocen con el nombre de datos alfanumeacutericos por que su valor contiene unacombinacioacuten de letras nuacutemeros yo siacutembolos especiales

Aunque se puede realizar operaciones aritmeacuteticas entre cadenas su resultado no seraacuteel esperado de acuerdo al operador escogido Por ejemplo sean las cadenas dato_1 ydato_2 se desea realizar una suma de sus contenidos y almacenarlo en dato_3

1 Supongamos que se asigna valores a los datos dato_1 = bdquo145‟ y dato_2 = bdquo862‟

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 322

Autor Luis Heladio Garzoacuten Rodriacuteguez2 Ahora si se propone la instruccioacuten suma asignando a dato_3 el resultado

dato_3 = dato_1 + dato_23 Lo que realmente se obtiene como valor almacenado en dato_3 no es la suma

de 145 mas 862 sino la cadena bdquo145862‟ lo que en programacioacuten se conocecomo concatenar cadenas de caracteres

Profundice mas al respecto

Datos Estructurados

Este pertenece al tipo de datos definidos por el usuario En el que se permiteconfigurar una combinacioacuten de datos de diferente tipo que no esta predefinido en ellenguaje de programacioacuten

En el paradigma de programacioacuten estructurada se les nombraba como registros En elparadigma de programacioacuten orientada a objetos se conocen como objetos

Es importante profundizar mas sobre este tipo de dato y sus variantes de acuerdo alparadigma de programacioacuten y el lenguaje de programacioacuten

12 INFORMACIOacuteN

Es el resultado que se obtiene del tratamiento de datos a traveacutes de procedimientosmanuales o automatizados mediante aplicativos de software que ofrecen solucioacuten anecesidades o solicitudes especificas que permitan el entendimiento de algunasituacioacuten o sirvan para la toma de decisiones

En este link encontrar mas sobre la definicioacuten de informacioacuten

httpeswikipediaorgwikiInformaciC3B3n Es necesario e importante que investigue mas definiciones al respecto

13 PROGRAMA

Un programa es un conjunto de instrucciones oacuterdenes u operaciones escritas en unlenguaje de programacioacuten ordenadas loacutegica y secuencialmente elaborada o disentildeadopor una persona para dar solucioacuten a una necesidad o problema especifico con el finproducir resultados o informacioacuten que el ordenador es capaz de entender y realizar enel orden correcto El programa debe ser de faacutecil utilizacioacuten

Los programas se pueden escribir o codificar en diferentes lenguajes de programacioacuten

14 LENGUAJE DE PROGRAMACIOacuteN

Los programas que ejecutan los ordenadores tienen que escribirse siguiendo unasnormas determinadas de manera que el ordenador entienda de queacute instruccionesconsta y de queacute manera tiene que ejecutarlas Este conjunto de normas se denominalenguaje de programacioacuten De la misma manera que las personas se comunican entreellas mediante un lenguaje los lenguajes de programacioacuten permiten la comunicacioacutenentre las personas y los ordenadores y tambieacuten entre ordenadores

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 422

Autor Luis Heladio Garzoacuten RodriacuteguezExiste una multitud de lenguajes diferentes cada uno pensado y adaptado a unanecesidad especiacutefica Los hay desde los maacutes proacuteximos al funcionamiento fiacutesico delordenador los lenguajes de bajo nivel hasta los que intentan reproducir modelos de la

realidad con diferentes grados de abstraccioacuten y sin tener en cuenta el hardware quepueda haber los lenguajes de alto nivel

141 Lenguajes de bajo nivel

1411 Lenguaje maacutequina

El lenguaje maacutequina consiste en el conjunto de instrucciones que un determinadoprocesador es capaz de entender y ejecutar Cada procesador tiene su propio lenguajemaacutequina y son notables las diferencias entre los distintos modelos de procesadoresLas instrucciones se refieren a movimientos de datos entre las distintas partes de laCPU del ordenador la memoria los registros canales de entradasalida etc y esnecesario especificar las direcciones concretas y el nuacutemero de bytes que hay queoperar Es decir especifican exactamente queacute tiene que hacer el ordenador pero esenormemente complicado y difiacutecil de utilizar Es el uacutenico lenguaje que entienderealmente el ordenador de manera que cualquier otro tiene que traducirse a lenguajemaacutequina

1412 Lenguaje ensamblador

El lenguaje ensamblador puede considerarse de bajo nivel porque estaacute orientado allenguaje maacutequina Sus instrucciones son muy similares a las del lenguaje maacutequinapero en vez de coacutedigos y nuacutemeros en binario utiliza siacutembolos mnemoteacutecnicos y cifrasdecimales De esta manera el significado de cada instruccioacuten es maacutes evidente y por lotanto maacutes faacutecil de recordar y utilizar que la sucesioacuten de ceros y unos del lenguaje

maacutequina Cada modelo de ordenador tiene su propio lenguaje ensamblador Unaherramienta denominada ensamblador convierte los coacutedigos de lenguaje ensambladoren un programa binario en un proceso bastante sencillo denominado ensamblaje

142 Lenguajes de alto nivel

Los lenguajes de alto nivel estaacuten maacutes orientados al problema que tienen que resolverque a la maacutequina Por esta razoacuten son independientes del ordenador y por lo tantopueden ser utilizados en cualquier tipo de maacutequina

Un programa escrito en un lenguaje de alto nivel programa fuente debe traducirse allenguaje maacutequina del ordenador que tiene que ejecutarlo Existen dos maneras

diferentes de realizar esta traduccioacuten

Interpretacioacuten que se lleva a teacutermino con un inteacuterprete del lenguaje encuestioacuten Este programa lee cada instruccioacuten del programa fuente la traduce acoacutedigo maacutequina y hace que la ejecute el ordenador de manera inmediata Es unproceso relativamente lento y por tanto se utiliza para aplicaciones pequentildeasy que no requieren gran velocidad Algunos lenguajes interpretados conocidosson BASIC con sus variantes lenguajes de procesamiento de comandos de lossistemas operativos o lenguajes de acceso a bases de datos como SQL

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 522

Autor Luis Heladio Garzoacuten RodriacuteguezSQL

SQL (Structured Query Language) es un lenguaje no estrictamente de

programacioacuten Se trata de un lenguaje para interrogar y procesar informacioacuten enuna base de datos relacional

Fue desarrollado por IBM para las bases de datos de sus mainframes

Los mandos SQL se pueden utilizar para trabajar interactivamente con una basede datos o para insertarlos en un lenguaje de programacioacuten para hacer deinterfaz con una base de datos

Algunos de los sistemas de gestioacuten de bases de datos que utilizan SQL son DB2SQLDS Oracle Sybase SQLbase INFORMIX e Ingres

El siguiente ejemplo de SQL selecciona clientes con un liacutemite de creacutedito de por lomenos 100000 um y los ordena de maacutes a menos creacutedito

SELECT NOMBRE CIUDAD CODIGOPOSTALFROM CLIENTEWHERE LIMITECREDITO gt= 100000ORDER BY LIMITECREDITO DESC

Compilacioacuten Un programa denominado compilador traduce todo elprograma fuente a coacutedigo maacutequina con el que se obtiene el programaobjeto que puede ejecutarse tantas veces como sea necesario sin tener quetraducir cada vez El proceso de compilacioacuten es tedioso y lento y se debe

renovar cada vez que se hace un cambio en el programa fuente pero acambio el programa objeto se ejecuta a la velocidad maacutes alta posible Es laopcioacuten adecuada para aplicaciones complejas

Los lenguajes maacutes utilizados caen dentro de esta categoriacutea por ejemploFORTRAN COBOL IMS Pascal C y C++

FORTRAN

El lenguaje FORTRAN (Formula Translation) data de los antildeos cincuenta y todaviacutease utiliza en determinados aacutembitos

Su punto fuerte es el caacutelculo matemaacutetico especialmente con coma flotante esdecir la computacioacuten con nuacutemeros reales de gran precisioacuten En cambio nodispone de construcciones por programacioacuten modular ni de estructuras de controlavanzadas

A lo largo de los antildeos se ha estandarizado varias veces y las versiones maacutesconocidas son FORTRAN I FORTRAN II FORTRAN IV FORTRAN 77 yactualmente FORTRAN 90

Ha sido el lenguaje maacutes utilizado para caacutelculos cientiacuteficos complejos modelos deingenieriacutea estadiacutestica y procesamiento de sentildeal Tambieacuten es muy adaptable a

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 622

Autor Luis Heladio Garzoacuten Rodriacuteguezhardware especializado como por ejemplo superordenadores y ordenadoresparalelos

Un ejemplo de caacutelculo matemaacutetico con FORTRAN

PROGRAM Rad Simple FORTRAN program

REAL PRCIF (NOT (R = 00)) THEN

P = 31415926R = 25C = P RPRINT C = C

END IFEND

COBOL

COBOL (Common Business-Oriented Language) es un lenguaje orientado a laresolucioacuten de las necesidades de bancos y otras entidades financierasadministraciones faacutebricas o cualquier gran organizacioacuten que tenga que gestionarun volumen de datos importante

COBOL tiene una sintaxis recargada que intenta parecerse al lenguaje ingleacutes Unode sus puntos fuertes es la generacioacuten de informes ya que permite especificaruna gran variedad de formatos de salida

Un programa en COBOL consta de cuatro divisiones

Identificacioacuten permite identificar el programa su objetivo el autor y otrosdatos similares

Entorno enumera los recursos fiacutesicos que el programa puede necesitar parafacilitar asiacute la portabilidad entre ordenadores

Datos declara los datos del programa Procedimientos indica coacutemo se tienen que procesar los datos

COBOL se definioacute en 1960 y ha tenido varias revisiones La maacutes actual incluyecaracteriacutesticas de orientacioacuten a objetos y estructuras de control sofisticadas en unintento de modernizar el lenguaje y no perder toda la inversioacuten en software realizada ya que se calcula que es el lenguaje con que se han programado maacutes

liacuteneas de coacutedigoLos programas en COBOL acostumbran a ser bastante largos y sobrecargados yaque cualquier pequentildeo procedimiento requiere muchas liacuteneas A continuacioacuten sepresenta un ejemplo simplificado para calcular comisiones de vendedores

IDENTIFICATION DIVISIONPROGRAM-ID COMISION-VENDEDORAUTHOR DEPT-INFO

ENVIRONMENT DIVISIONINPUT-OUTPUT SECTIONFILE-CONTROL

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 722

Autor Luis Heladio Garzoacuten RodriacuteguezSELECT FICHERO-VENDEDORES ASSIGN TO DISK

ACCESS MODE IS RANDOM ORGANIZATION IS RELATIVERELATIVE KEY IS NUMERO

SELECT FICHERO-VENTAS ASSIGN TO TAPE RESERVE NO AREASACCESS MODE IS SEQUENTIAL ORGANIZATION IS SEQUENTIALDATA DIVISION

FILE SECTIONFD FICHERO-VENDEDORES LABEL RECORD IS STANDARD

RECORDING MODE IS VRECORD CONTAINS 30 TO 60 CHARACTERSDATA RECORD IS VENDEDORES

01 VENDEDORES02 NOMBRE PICTURE X(50)02 NUMERO PICTURE 9(10)

FD FICHERO-VENTAS LABEL RECORD IS STANDARDRECORDING MODE IS F

RECORD CONTAINS 8DATA RECORD IS VENTA

01 VENTA PICTURE 9(8)WORKING STORAGE SECTION

77 PCT PICTURE 9(6)77 TOTAL PICTURE 9(6)

PROCEDURE DIVISIONINICIOOPEN INPUT FICHERO-VENDEDORES INPUT FICHERO-VENTASCLAVE

ADD 1 TO NUMEROLECTURA

READ FICHERO-VENDEDORES INVALID KEY GO TO FINAL-PROGREAD FICHERO-VENTAS AT END GO TO FINAL-PROGCALCUL

DIVIDE VENTA INTO 100 GIVING PCTMULTIPLY PCT BY 40 GIVING TOTAL

RESULTADODISPLAY NUMERO UPON PRINTERDISPLAY TOTAL UPON PRINTERGOTO CLAVE

FINAL-PROGCLOSE FICHERO-VENDEDORES AND FICHERO-VENTASSTOP RUN

IMS

El sistema IMS (Information Management System) se utiliza para consultar basesde datos tuvo una gran expansioacuten en los antildeos setenta Se trata de un productode IBM para las bases de datos de mainframes sobre el sistema MVS

IMSDB (IMSData Base) es la base de datos que funciona en un entorno deproceso por lotes

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 822

Autor Luis Heladio Garzoacuten RodriacuteguezIMSDC (IMSData Communications) es un programa necesario cuando se utilizainteractivamente y tambieacuten permite acceder a bases de datos DB2

PASCAL

Pascal es un lenguaje disentildeado inicialmente para ensentildear a programar Como tallenguaje educativo presenta una estructura perfectamente acadeacutemica de laprogramacioacuten estructurada Requiere una programacioacuten detallada todos lostipos datos y subrutinas se tienen que declarar antes de utilizarlos Estaacutefuertemente estructurado en bloques y cada uno de los cuales permite declarardatos y funciones y tambieacuten otros bloques de nivel inferior Asiacute se puedenestructurar los datos y los procedimientos en tantos niveles como resultenecesario

Es un lenguaje apropiado para aplicaciones geneacutericas aunque en muchas aacutereas

se ha sustituido por lenguajes orientados a objetos como C++ y JavaC

C es probablemente uno de los lenguajes maacutes utilizados actualmente Es unlenguaje estructurado pero tambieacuten permite una programacioacuten de bajo nivel locual lo hace adecuado para sistemas operativos (como Unix) y como software decontrol de perifeacutericos aunque se utiliza en todo un tipo de aplicaciones inclusoen las de maacutes alto nivel como por ejemplo libreriacuteas graacuteficas

C permite escribir raacutepidamente un coacutedigo muy optimizado y maacutes portable que enensamblador

El lenguaje C dispone de un conjunto completo de operadores aritmeacuteticosestructuras de datos sencillas subrutinas estructuras de control convencionalespunteros en memoria un potente procesador de macros y un amplio conjunto delibreriacuteas Tiene un primer nivel de modularizacioacuten de manera que los datospueden tener un aacutembito global o local en la funcioacuten donde se han definidoTambieacuten es un lenguaje fuertemente tipificado es decir que requiere declarartodos los datos con su tipo

Las distintas versiones de C se estandarizaron en 1990 en el denominado ANSI-C

Ejemplo de programa que cuenta el nuacutemero de caracteres de un texto y escribeel resultado por pantalla

include ltstdiohgtmain(int argc char argv[])

int cmpfor( cmp = 0 argv[0][cmp]=0 cmp++ )printf(d caracteresn cmp)

C++

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 922

Autor Luis Heladio Garzoacuten RodriacuteguezC++ es la evolucioacuten a orientacioacuten a objetos del lenguaje C Tiene una sintaxismuy parecida a la de C con varias extensiones para soportar clases herencia yotras caracteriacutesticas de orientacioacuten a objetos

C++ evolucionoacute raacutepidamente para convertirse en un lenguaje independienteactualmente es muy popular para el desarrollo de aplicaciones

C++ ofrece muchas de las estructuras de programacioacuten orientada a objetosherencia muacuteltiple tipificacioacuten estricta memoria dinaacutemica patrones geneacutericospolimorfismo control de excepciones y sobrecarga de operadores

Como derivado de C dispone de todas sus propiedades pero tambieacuten haheredado sus defectos como por ejemplo los punteros en memoria

C++ es uno de los lenguajes orientados a objetos maacutes utilizados y de los maacutes

perfeccionados A pesar de esto no tiene algunas de las caracteriacutesticas que seconsideran imprescindibles en un lenguaje orientado a objetos de uacuteltimageneracioacuten (concurrencia persistencia y garbage collection) aunque suscompiladores pueden generar programas muy compactos y que se ejecutan conmucha eficiencia

Como todos los lenguajes de programacioacuten orientada a objetos su estructuraprincipal es la que define una clase es decir el tipo de un objeto

A continuacioacuten se presenta un ejemplo de clase

class cercle public formaint radi datos de la clasefloat area() meacutetodos de la clase

Y un sencillo programa que escribe un mensaje de saludo por pantalla

include ltiostreamhgtinclude ltStringhgt

main(int argc char argv[])

String ss = new String(Hola)cout ltlt s ltlt endlcout ltlt Longitud del texto ltlt s-gtlength() ltlt endl

Uacuteltimamente han aparecido algunos lenguajes que se alejan de este modelo endiferentes sentidos Todos ellos se utilizan en la programacioacuten en entornosrelacionados con Internet que presentan caracteriacutesticas especiales

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1022

Autor Luis Heladio Garzoacuten RodriacuteguezEl lenguaje Java por ejemplo tiene un modo de traduccioacuten a lenguaje maacutequinamixto En una primera fase se compila en un coacutedigo maacutequina universal queposteriormente es interpretado y ejecutado por un programa especiacutefico Este

programa puede utilizarse desde cualquier navegador de Internet y permitedistribuir programas objetos por red que pueden ejecutarse en cualquierordenador

Java

Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxisparecida a la de C++

Tiene un conjunto de prestaciones bastante amplio herencia tipificacioacuten dedatos estricta modularidad control de excepciones polimorfismo concurrenciacarga dinaacutemica de libreriacuteas garbage collection y una amplia coleccioacuten de libreriacuteas

estaacutendar En cambio no incluye algunas caracteriacutesticas que podriacutean comprometersu simplicidad y seguridad como punteros herencia muacuteltiple sobrecarga deoperadores o un preprocesador de macros

Como lenguaje orientado a objetos su estructura fundamental es la clase que selleva hasta las uacuteltimas consecuencias en Java no puede haber datos o funcionesglobales todas deben estar asociadas a una clase Las clases se pueden agruparen paquetes que facilitan mucho la portabilidad de sus aplicaciones Todos lospaquetes estaacuten organizados en una estructura jeraacuterquica que evita la aparicioacuten dedistintas variantes para la misma funcionalidad

Java se compila en un coacutedigo independiente de la plataforma bytecode queposteriormente es interpretado por una aplicacioacuten la maacutequina virtual de JavaHay una definicioacuten formal del bytecode que asegura la portabilidad

Java ademaacutes de resultar adecuado para programar aplicaciones normalespermite desarrollar programas hospedados en servidores web Estos programasse llaman applets Tienen la capacidad de ser distribuidos por la red en forma debytecode y poderse ejecutar en cualquier plataforma Presentan variasrestricciones para evitar problemas de seguridad

El mayor inconveniente de Java es que tiene un rendimiento bajo ya que altener que ser interpretado por la maacutequina virtual su velocidad de ejecucioacuten eslenta

A continuacioacuten se presenta un ejemplo de applet escrito en Java

import javaappletimport javaawt

public class AppletHola extends Applet

Este meacutetodo visualiza el mensajepublic void paint(Graphis g)

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 3: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 322

Autor Luis Heladio Garzoacuten Rodriacuteguez2 Ahora si se propone la instruccioacuten suma asignando a dato_3 el resultado

dato_3 = dato_1 + dato_23 Lo que realmente se obtiene como valor almacenado en dato_3 no es la suma

de 145 mas 862 sino la cadena bdquo145862‟ lo que en programacioacuten se conocecomo concatenar cadenas de caracteres

Profundice mas al respecto

Datos Estructurados

Este pertenece al tipo de datos definidos por el usuario En el que se permiteconfigurar una combinacioacuten de datos de diferente tipo que no esta predefinido en ellenguaje de programacioacuten

En el paradigma de programacioacuten estructurada se les nombraba como registros En elparadigma de programacioacuten orientada a objetos se conocen como objetos

Es importante profundizar mas sobre este tipo de dato y sus variantes de acuerdo alparadigma de programacioacuten y el lenguaje de programacioacuten

12 INFORMACIOacuteN

Es el resultado que se obtiene del tratamiento de datos a traveacutes de procedimientosmanuales o automatizados mediante aplicativos de software que ofrecen solucioacuten anecesidades o solicitudes especificas que permitan el entendimiento de algunasituacioacuten o sirvan para la toma de decisiones

En este link encontrar mas sobre la definicioacuten de informacioacuten

httpeswikipediaorgwikiInformaciC3B3n Es necesario e importante que investigue mas definiciones al respecto

13 PROGRAMA

Un programa es un conjunto de instrucciones oacuterdenes u operaciones escritas en unlenguaje de programacioacuten ordenadas loacutegica y secuencialmente elaborada o disentildeadopor una persona para dar solucioacuten a una necesidad o problema especifico con el finproducir resultados o informacioacuten que el ordenador es capaz de entender y realizar enel orden correcto El programa debe ser de faacutecil utilizacioacuten

Los programas se pueden escribir o codificar en diferentes lenguajes de programacioacuten

14 LENGUAJE DE PROGRAMACIOacuteN

Los programas que ejecutan los ordenadores tienen que escribirse siguiendo unasnormas determinadas de manera que el ordenador entienda de queacute instruccionesconsta y de queacute manera tiene que ejecutarlas Este conjunto de normas se denominalenguaje de programacioacuten De la misma manera que las personas se comunican entreellas mediante un lenguaje los lenguajes de programacioacuten permiten la comunicacioacutenentre las personas y los ordenadores y tambieacuten entre ordenadores

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 422

Autor Luis Heladio Garzoacuten RodriacuteguezExiste una multitud de lenguajes diferentes cada uno pensado y adaptado a unanecesidad especiacutefica Los hay desde los maacutes proacuteximos al funcionamiento fiacutesico delordenador los lenguajes de bajo nivel hasta los que intentan reproducir modelos de la

realidad con diferentes grados de abstraccioacuten y sin tener en cuenta el hardware quepueda haber los lenguajes de alto nivel

141 Lenguajes de bajo nivel

1411 Lenguaje maacutequina

El lenguaje maacutequina consiste en el conjunto de instrucciones que un determinadoprocesador es capaz de entender y ejecutar Cada procesador tiene su propio lenguajemaacutequina y son notables las diferencias entre los distintos modelos de procesadoresLas instrucciones se refieren a movimientos de datos entre las distintas partes de laCPU del ordenador la memoria los registros canales de entradasalida etc y esnecesario especificar las direcciones concretas y el nuacutemero de bytes que hay queoperar Es decir especifican exactamente queacute tiene que hacer el ordenador pero esenormemente complicado y difiacutecil de utilizar Es el uacutenico lenguaje que entienderealmente el ordenador de manera que cualquier otro tiene que traducirse a lenguajemaacutequina

1412 Lenguaje ensamblador

El lenguaje ensamblador puede considerarse de bajo nivel porque estaacute orientado allenguaje maacutequina Sus instrucciones son muy similares a las del lenguaje maacutequinapero en vez de coacutedigos y nuacutemeros en binario utiliza siacutembolos mnemoteacutecnicos y cifrasdecimales De esta manera el significado de cada instruccioacuten es maacutes evidente y por lotanto maacutes faacutecil de recordar y utilizar que la sucesioacuten de ceros y unos del lenguaje

maacutequina Cada modelo de ordenador tiene su propio lenguaje ensamblador Unaherramienta denominada ensamblador convierte los coacutedigos de lenguaje ensambladoren un programa binario en un proceso bastante sencillo denominado ensamblaje

142 Lenguajes de alto nivel

Los lenguajes de alto nivel estaacuten maacutes orientados al problema que tienen que resolverque a la maacutequina Por esta razoacuten son independientes del ordenador y por lo tantopueden ser utilizados en cualquier tipo de maacutequina

Un programa escrito en un lenguaje de alto nivel programa fuente debe traducirse allenguaje maacutequina del ordenador que tiene que ejecutarlo Existen dos maneras

diferentes de realizar esta traduccioacuten

Interpretacioacuten que se lleva a teacutermino con un inteacuterprete del lenguaje encuestioacuten Este programa lee cada instruccioacuten del programa fuente la traduce acoacutedigo maacutequina y hace que la ejecute el ordenador de manera inmediata Es unproceso relativamente lento y por tanto se utiliza para aplicaciones pequentildeasy que no requieren gran velocidad Algunos lenguajes interpretados conocidosson BASIC con sus variantes lenguajes de procesamiento de comandos de lossistemas operativos o lenguajes de acceso a bases de datos como SQL

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 522

Autor Luis Heladio Garzoacuten RodriacuteguezSQL

SQL (Structured Query Language) es un lenguaje no estrictamente de

programacioacuten Se trata de un lenguaje para interrogar y procesar informacioacuten enuna base de datos relacional

Fue desarrollado por IBM para las bases de datos de sus mainframes

Los mandos SQL se pueden utilizar para trabajar interactivamente con una basede datos o para insertarlos en un lenguaje de programacioacuten para hacer deinterfaz con una base de datos

Algunos de los sistemas de gestioacuten de bases de datos que utilizan SQL son DB2SQLDS Oracle Sybase SQLbase INFORMIX e Ingres

El siguiente ejemplo de SQL selecciona clientes con un liacutemite de creacutedito de por lomenos 100000 um y los ordena de maacutes a menos creacutedito

SELECT NOMBRE CIUDAD CODIGOPOSTALFROM CLIENTEWHERE LIMITECREDITO gt= 100000ORDER BY LIMITECREDITO DESC

Compilacioacuten Un programa denominado compilador traduce todo elprograma fuente a coacutedigo maacutequina con el que se obtiene el programaobjeto que puede ejecutarse tantas veces como sea necesario sin tener quetraducir cada vez El proceso de compilacioacuten es tedioso y lento y se debe

renovar cada vez que se hace un cambio en el programa fuente pero acambio el programa objeto se ejecuta a la velocidad maacutes alta posible Es laopcioacuten adecuada para aplicaciones complejas

Los lenguajes maacutes utilizados caen dentro de esta categoriacutea por ejemploFORTRAN COBOL IMS Pascal C y C++

FORTRAN

El lenguaje FORTRAN (Formula Translation) data de los antildeos cincuenta y todaviacutease utiliza en determinados aacutembitos

Su punto fuerte es el caacutelculo matemaacutetico especialmente con coma flotante esdecir la computacioacuten con nuacutemeros reales de gran precisioacuten En cambio nodispone de construcciones por programacioacuten modular ni de estructuras de controlavanzadas

A lo largo de los antildeos se ha estandarizado varias veces y las versiones maacutesconocidas son FORTRAN I FORTRAN II FORTRAN IV FORTRAN 77 yactualmente FORTRAN 90

Ha sido el lenguaje maacutes utilizado para caacutelculos cientiacuteficos complejos modelos deingenieriacutea estadiacutestica y procesamiento de sentildeal Tambieacuten es muy adaptable a

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 622

Autor Luis Heladio Garzoacuten Rodriacuteguezhardware especializado como por ejemplo superordenadores y ordenadoresparalelos

Un ejemplo de caacutelculo matemaacutetico con FORTRAN

PROGRAM Rad Simple FORTRAN program

REAL PRCIF (NOT (R = 00)) THEN

P = 31415926R = 25C = P RPRINT C = C

END IFEND

COBOL

COBOL (Common Business-Oriented Language) es un lenguaje orientado a laresolucioacuten de las necesidades de bancos y otras entidades financierasadministraciones faacutebricas o cualquier gran organizacioacuten que tenga que gestionarun volumen de datos importante

COBOL tiene una sintaxis recargada que intenta parecerse al lenguaje ingleacutes Unode sus puntos fuertes es la generacioacuten de informes ya que permite especificaruna gran variedad de formatos de salida

Un programa en COBOL consta de cuatro divisiones

Identificacioacuten permite identificar el programa su objetivo el autor y otrosdatos similares

Entorno enumera los recursos fiacutesicos que el programa puede necesitar parafacilitar asiacute la portabilidad entre ordenadores

Datos declara los datos del programa Procedimientos indica coacutemo se tienen que procesar los datos

COBOL se definioacute en 1960 y ha tenido varias revisiones La maacutes actual incluyecaracteriacutesticas de orientacioacuten a objetos y estructuras de control sofisticadas en unintento de modernizar el lenguaje y no perder toda la inversioacuten en software realizada ya que se calcula que es el lenguaje con que se han programado maacutes

liacuteneas de coacutedigoLos programas en COBOL acostumbran a ser bastante largos y sobrecargados yaque cualquier pequentildeo procedimiento requiere muchas liacuteneas A continuacioacuten sepresenta un ejemplo simplificado para calcular comisiones de vendedores

IDENTIFICATION DIVISIONPROGRAM-ID COMISION-VENDEDORAUTHOR DEPT-INFO

ENVIRONMENT DIVISIONINPUT-OUTPUT SECTIONFILE-CONTROL

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 722

Autor Luis Heladio Garzoacuten RodriacuteguezSELECT FICHERO-VENDEDORES ASSIGN TO DISK

ACCESS MODE IS RANDOM ORGANIZATION IS RELATIVERELATIVE KEY IS NUMERO

SELECT FICHERO-VENTAS ASSIGN TO TAPE RESERVE NO AREASACCESS MODE IS SEQUENTIAL ORGANIZATION IS SEQUENTIALDATA DIVISION

FILE SECTIONFD FICHERO-VENDEDORES LABEL RECORD IS STANDARD

RECORDING MODE IS VRECORD CONTAINS 30 TO 60 CHARACTERSDATA RECORD IS VENDEDORES

01 VENDEDORES02 NOMBRE PICTURE X(50)02 NUMERO PICTURE 9(10)

FD FICHERO-VENTAS LABEL RECORD IS STANDARDRECORDING MODE IS F

RECORD CONTAINS 8DATA RECORD IS VENTA

01 VENTA PICTURE 9(8)WORKING STORAGE SECTION

77 PCT PICTURE 9(6)77 TOTAL PICTURE 9(6)

PROCEDURE DIVISIONINICIOOPEN INPUT FICHERO-VENDEDORES INPUT FICHERO-VENTASCLAVE

ADD 1 TO NUMEROLECTURA

READ FICHERO-VENDEDORES INVALID KEY GO TO FINAL-PROGREAD FICHERO-VENTAS AT END GO TO FINAL-PROGCALCUL

DIVIDE VENTA INTO 100 GIVING PCTMULTIPLY PCT BY 40 GIVING TOTAL

RESULTADODISPLAY NUMERO UPON PRINTERDISPLAY TOTAL UPON PRINTERGOTO CLAVE

FINAL-PROGCLOSE FICHERO-VENDEDORES AND FICHERO-VENTASSTOP RUN

IMS

El sistema IMS (Information Management System) se utiliza para consultar basesde datos tuvo una gran expansioacuten en los antildeos setenta Se trata de un productode IBM para las bases de datos de mainframes sobre el sistema MVS

IMSDB (IMSData Base) es la base de datos que funciona en un entorno deproceso por lotes

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 822

Autor Luis Heladio Garzoacuten RodriacuteguezIMSDC (IMSData Communications) es un programa necesario cuando se utilizainteractivamente y tambieacuten permite acceder a bases de datos DB2

PASCAL

Pascal es un lenguaje disentildeado inicialmente para ensentildear a programar Como tallenguaje educativo presenta una estructura perfectamente acadeacutemica de laprogramacioacuten estructurada Requiere una programacioacuten detallada todos lostipos datos y subrutinas se tienen que declarar antes de utilizarlos Estaacutefuertemente estructurado en bloques y cada uno de los cuales permite declarardatos y funciones y tambieacuten otros bloques de nivel inferior Asiacute se puedenestructurar los datos y los procedimientos en tantos niveles como resultenecesario

Es un lenguaje apropiado para aplicaciones geneacutericas aunque en muchas aacutereas

se ha sustituido por lenguajes orientados a objetos como C++ y JavaC

C es probablemente uno de los lenguajes maacutes utilizados actualmente Es unlenguaje estructurado pero tambieacuten permite una programacioacuten de bajo nivel locual lo hace adecuado para sistemas operativos (como Unix) y como software decontrol de perifeacutericos aunque se utiliza en todo un tipo de aplicaciones inclusoen las de maacutes alto nivel como por ejemplo libreriacuteas graacuteficas

C permite escribir raacutepidamente un coacutedigo muy optimizado y maacutes portable que enensamblador

El lenguaje C dispone de un conjunto completo de operadores aritmeacuteticosestructuras de datos sencillas subrutinas estructuras de control convencionalespunteros en memoria un potente procesador de macros y un amplio conjunto delibreriacuteas Tiene un primer nivel de modularizacioacuten de manera que los datospueden tener un aacutembito global o local en la funcioacuten donde se han definidoTambieacuten es un lenguaje fuertemente tipificado es decir que requiere declarartodos los datos con su tipo

Las distintas versiones de C se estandarizaron en 1990 en el denominado ANSI-C

Ejemplo de programa que cuenta el nuacutemero de caracteres de un texto y escribeel resultado por pantalla

include ltstdiohgtmain(int argc char argv[])

int cmpfor( cmp = 0 argv[0][cmp]=0 cmp++ )printf(d caracteresn cmp)

C++

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 922

Autor Luis Heladio Garzoacuten RodriacuteguezC++ es la evolucioacuten a orientacioacuten a objetos del lenguaje C Tiene una sintaxismuy parecida a la de C con varias extensiones para soportar clases herencia yotras caracteriacutesticas de orientacioacuten a objetos

C++ evolucionoacute raacutepidamente para convertirse en un lenguaje independienteactualmente es muy popular para el desarrollo de aplicaciones

C++ ofrece muchas de las estructuras de programacioacuten orientada a objetosherencia muacuteltiple tipificacioacuten estricta memoria dinaacutemica patrones geneacutericospolimorfismo control de excepciones y sobrecarga de operadores

Como derivado de C dispone de todas sus propiedades pero tambieacuten haheredado sus defectos como por ejemplo los punteros en memoria

C++ es uno de los lenguajes orientados a objetos maacutes utilizados y de los maacutes

perfeccionados A pesar de esto no tiene algunas de las caracteriacutesticas que seconsideran imprescindibles en un lenguaje orientado a objetos de uacuteltimageneracioacuten (concurrencia persistencia y garbage collection) aunque suscompiladores pueden generar programas muy compactos y que se ejecutan conmucha eficiencia

Como todos los lenguajes de programacioacuten orientada a objetos su estructuraprincipal es la que define una clase es decir el tipo de un objeto

A continuacioacuten se presenta un ejemplo de clase

class cercle public formaint radi datos de la clasefloat area() meacutetodos de la clase

Y un sencillo programa que escribe un mensaje de saludo por pantalla

include ltiostreamhgtinclude ltStringhgt

main(int argc char argv[])

String ss = new String(Hola)cout ltlt s ltlt endlcout ltlt Longitud del texto ltlt s-gtlength() ltlt endl

Uacuteltimamente han aparecido algunos lenguajes que se alejan de este modelo endiferentes sentidos Todos ellos se utilizan en la programacioacuten en entornosrelacionados con Internet que presentan caracteriacutesticas especiales

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1022

Autor Luis Heladio Garzoacuten RodriacuteguezEl lenguaje Java por ejemplo tiene un modo de traduccioacuten a lenguaje maacutequinamixto En una primera fase se compila en un coacutedigo maacutequina universal queposteriormente es interpretado y ejecutado por un programa especiacutefico Este

programa puede utilizarse desde cualquier navegador de Internet y permitedistribuir programas objetos por red que pueden ejecutarse en cualquierordenador

Java

Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxisparecida a la de C++

Tiene un conjunto de prestaciones bastante amplio herencia tipificacioacuten dedatos estricta modularidad control de excepciones polimorfismo concurrenciacarga dinaacutemica de libreriacuteas garbage collection y una amplia coleccioacuten de libreriacuteas

estaacutendar En cambio no incluye algunas caracteriacutesticas que podriacutean comprometersu simplicidad y seguridad como punteros herencia muacuteltiple sobrecarga deoperadores o un preprocesador de macros

Como lenguaje orientado a objetos su estructura fundamental es la clase que selleva hasta las uacuteltimas consecuencias en Java no puede haber datos o funcionesglobales todas deben estar asociadas a una clase Las clases se pueden agruparen paquetes que facilitan mucho la portabilidad de sus aplicaciones Todos lospaquetes estaacuten organizados en una estructura jeraacuterquica que evita la aparicioacuten dedistintas variantes para la misma funcionalidad

Java se compila en un coacutedigo independiente de la plataforma bytecode queposteriormente es interpretado por una aplicacioacuten la maacutequina virtual de JavaHay una definicioacuten formal del bytecode que asegura la portabilidad

Java ademaacutes de resultar adecuado para programar aplicaciones normalespermite desarrollar programas hospedados en servidores web Estos programasse llaman applets Tienen la capacidad de ser distribuidos por la red en forma debytecode y poderse ejecutar en cualquier plataforma Presentan variasrestricciones para evitar problemas de seguridad

El mayor inconveniente de Java es que tiene un rendimiento bajo ya que altener que ser interpretado por la maacutequina virtual su velocidad de ejecucioacuten eslenta

A continuacioacuten se presenta un ejemplo de applet escrito en Java

import javaappletimport javaawt

public class AppletHola extends Applet

Este meacutetodo visualiza el mensajepublic void paint(Graphis g)

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 4: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 422

Autor Luis Heladio Garzoacuten RodriacuteguezExiste una multitud de lenguajes diferentes cada uno pensado y adaptado a unanecesidad especiacutefica Los hay desde los maacutes proacuteximos al funcionamiento fiacutesico delordenador los lenguajes de bajo nivel hasta los que intentan reproducir modelos de la

realidad con diferentes grados de abstraccioacuten y sin tener en cuenta el hardware quepueda haber los lenguajes de alto nivel

141 Lenguajes de bajo nivel

1411 Lenguaje maacutequina

El lenguaje maacutequina consiste en el conjunto de instrucciones que un determinadoprocesador es capaz de entender y ejecutar Cada procesador tiene su propio lenguajemaacutequina y son notables las diferencias entre los distintos modelos de procesadoresLas instrucciones se refieren a movimientos de datos entre las distintas partes de laCPU del ordenador la memoria los registros canales de entradasalida etc y esnecesario especificar las direcciones concretas y el nuacutemero de bytes que hay queoperar Es decir especifican exactamente queacute tiene que hacer el ordenador pero esenormemente complicado y difiacutecil de utilizar Es el uacutenico lenguaje que entienderealmente el ordenador de manera que cualquier otro tiene que traducirse a lenguajemaacutequina

1412 Lenguaje ensamblador

El lenguaje ensamblador puede considerarse de bajo nivel porque estaacute orientado allenguaje maacutequina Sus instrucciones son muy similares a las del lenguaje maacutequinapero en vez de coacutedigos y nuacutemeros en binario utiliza siacutembolos mnemoteacutecnicos y cifrasdecimales De esta manera el significado de cada instruccioacuten es maacutes evidente y por lotanto maacutes faacutecil de recordar y utilizar que la sucesioacuten de ceros y unos del lenguaje

maacutequina Cada modelo de ordenador tiene su propio lenguaje ensamblador Unaherramienta denominada ensamblador convierte los coacutedigos de lenguaje ensambladoren un programa binario en un proceso bastante sencillo denominado ensamblaje

142 Lenguajes de alto nivel

Los lenguajes de alto nivel estaacuten maacutes orientados al problema que tienen que resolverque a la maacutequina Por esta razoacuten son independientes del ordenador y por lo tantopueden ser utilizados en cualquier tipo de maacutequina

Un programa escrito en un lenguaje de alto nivel programa fuente debe traducirse allenguaje maacutequina del ordenador que tiene que ejecutarlo Existen dos maneras

diferentes de realizar esta traduccioacuten

Interpretacioacuten que se lleva a teacutermino con un inteacuterprete del lenguaje encuestioacuten Este programa lee cada instruccioacuten del programa fuente la traduce acoacutedigo maacutequina y hace que la ejecute el ordenador de manera inmediata Es unproceso relativamente lento y por tanto se utiliza para aplicaciones pequentildeasy que no requieren gran velocidad Algunos lenguajes interpretados conocidosson BASIC con sus variantes lenguajes de procesamiento de comandos de lossistemas operativos o lenguajes de acceso a bases de datos como SQL

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 522

Autor Luis Heladio Garzoacuten RodriacuteguezSQL

SQL (Structured Query Language) es un lenguaje no estrictamente de

programacioacuten Se trata de un lenguaje para interrogar y procesar informacioacuten enuna base de datos relacional

Fue desarrollado por IBM para las bases de datos de sus mainframes

Los mandos SQL se pueden utilizar para trabajar interactivamente con una basede datos o para insertarlos en un lenguaje de programacioacuten para hacer deinterfaz con una base de datos

Algunos de los sistemas de gestioacuten de bases de datos que utilizan SQL son DB2SQLDS Oracle Sybase SQLbase INFORMIX e Ingres

El siguiente ejemplo de SQL selecciona clientes con un liacutemite de creacutedito de por lomenos 100000 um y los ordena de maacutes a menos creacutedito

SELECT NOMBRE CIUDAD CODIGOPOSTALFROM CLIENTEWHERE LIMITECREDITO gt= 100000ORDER BY LIMITECREDITO DESC

Compilacioacuten Un programa denominado compilador traduce todo elprograma fuente a coacutedigo maacutequina con el que se obtiene el programaobjeto que puede ejecutarse tantas veces como sea necesario sin tener quetraducir cada vez El proceso de compilacioacuten es tedioso y lento y se debe

renovar cada vez que se hace un cambio en el programa fuente pero acambio el programa objeto se ejecuta a la velocidad maacutes alta posible Es laopcioacuten adecuada para aplicaciones complejas

Los lenguajes maacutes utilizados caen dentro de esta categoriacutea por ejemploFORTRAN COBOL IMS Pascal C y C++

FORTRAN

El lenguaje FORTRAN (Formula Translation) data de los antildeos cincuenta y todaviacutease utiliza en determinados aacutembitos

Su punto fuerte es el caacutelculo matemaacutetico especialmente con coma flotante esdecir la computacioacuten con nuacutemeros reales de gran precisioacuten En cambio nodispone de construcciones por programacioacuten modular ni de estructuras de controlavanzadas

A lo largo de los antildeos se ha estandarizado varias veces y las versiones maacutesconocidas son FORTRAN I FORTRAN II FORTRAN IV FORTRAN 77 yactualmente FORTRAN 90

Ha sido el lenguaje maacutes utilizado para caacutelculos cientiacuteficos complejos modelos deingenieriacutea estadiacutestica y procesamiento de sentildeal Tambieacuten es muy adaptable a

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 622

Autor Luis Heladio Garzoacuten Rodriacuteguezhardware especializado como por ejemplo superordenadores y ordenadoresparalelos

Un ejemplo de caacutelculo matemaacutetico con FORTRAN

PROGRAM Rad Simple FORTRAN program

REAL PRCIF (NOT (R = 00)) THEN

P = 31415926R = 25C = P RPRINT C = C

END IFEND

COBOL

COBOL (Common Business-Oriented Language) es un lenguaje orientado a laresolucioacuten de las necesidades de bancos y otras entidades financierasadministraciones faacutebricas o cualquier gran organizacioacuten que tenga que gestionarun volumen de datos importante

COBOL tiene una sintaxis recargada que intenta parecerse al lenguaje ingleacutes Unode sus puntos fuertes es la generacioacuten de informes ya que permite especificaruna gran variedad de formatos de salida

Un programa en COBOL consta de cuatro divisiones

Identificacioacuten permite identificar el programa su objetivo el autor y otrosdatos similares

Entorno enumera los recursos fiacutesicos que el programa puede necesitar parafacilitar asiacute la portabilidad entre ordenadores

Datos declara los datos del programa Procedimientos indica coacutemo se tienen que procesar los datos

COBOL se definioacute en 1960 y ha tenido varias revisiones La maacutes actual incluyecaracteriacutesticas de orientacioacuten a objetos y estructuras de control sofisticadas en unintento de modernizar el lenguaje y no perder toda la inversioacuten en software realizada ya que se calcula que es el lenguaje con que se han programado maacutes

liacuteneas de coacutedigoLos programas en COBOL acostumbran a ser bastante largos y sobrecargados yaque cualquier pequentildeo procedimiento requiere muchas liacuteneas A continuacioacuten sepresenta un ejemplo simplificado para calcular comisiones de vendedores

IDENTIFICATION DIVISIONPROGRAM-ID COMISION-VENDEDORAUTHOR DEPT-INFO

ENVIRONMENT DIVISIONINPUT-OUTPUT SECTIONFILE-CONTROL

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 722

Autor Luis Heladio Garzoacuten RodriacuteguezSELECT FICHERO-VENDEDORES ASSIGN TO DISK

ACCESS MODE IS RANDOM ORGANIZATION IS RELATIVERELATIVE KEY IS NUMERO

SELECT FICHERO-VENTAS ASSIGN TO TAPE RESERVE NO AREASACCESS MODE IS SEQUENTIAL ORGANIZATION IS SEQUENTIALDATA DIVISION

FILE SECTIONFD FICHERO-VENDEDORES LABEL RECORD IS STANDARD

RECORDING MODE IS VRECORD CONTAINS 30 TO 60 CHARACTERSDATA RECORD IS VENDEDORES

01 VENDEDORES02 NOMBRE PICTURE X(50)02 NUMERO PICTURE 9(10)

FD FICHERO-VENTAS LABEL RECORD IS STANDARDRECORDING MODE IS F

RECORD CONTAINS 8DATA RECORD IS VENTA

01 VENTA PICTURE 9(8)WORKING STORAGE SECTION

77 PCT PICTURE 9(6)77 TOTAL PICTURE 9(6)

PROCEDURE DIVISIONINICIOOPEN INPUT FICHERO-VENDEDORES INPUT FICHERO-VENTASCLAVE

ADD 1 TO NUMEROLECTURA

READ FICHERO-VENDEDORES INVALID KEY GO TO FINAL-PROGREAD FICHERO-VENTAS AT END GO TO FINAL-PROGCALCUL

DIVIDE VENTA INTO 100 GIVING PCTMULTIPLY PCT BY 40 GIVING TOTAL

RESULTADODISPLAY NUMERO UPON PRINTERDISPLAY TOTAL UPON PRINTERGOTO CLAVE

FINAL-PROGCLOSE FICHERO-VENDEDORES AND FICHERO-VENTASSTOP RUN

IMS

El sistema IMS (Information Management System) se utiliza para consultar basesde datos tuvo una gran expansioacuten en los antildeos setenta Se trata de un productode IBM para las bases de datos de mainframes sobre el sistema MVS

IMSDB (IMSData Base) es la base de datos que funciona en un entorno deproceso por lotes

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 822

Autor Luis Heladio Garzoacuten RodriacuteguezIMSDC (IMSData Communications) es un programa necesario cuando se utilizainteractivamente y tambieacuten permite acceder a bases de datos DB2

PASCAL

Pascal es un lenguaje disentildeado inicialmente para ensentildear a programar Como tallenguaje educativo presenta una estructura perfectamente acadeacutemica de laprogramacioacuten estructurada Requiere una programacioacuten detallada todos lostipos datos y subrutinas se tienen que declarar antes de utilizarlos Estaacutefuertemente estructurado en bloques y cada uno de los cuales permite declarardatos y funciones y tambieacuten otros bloques de nivel inferior Asiacute se puedenestructurar los datos y los procedimientos en tantos niveles como resultenecesario

Es un lenguaje apropiado para aplicaciones geneacutericas aunque en muchas aacutereas

se ha sustituido por lenguajes orientados a objetos como C++ y JavaC

C es probablemente uno de los lenguajes maacutes utilizados actualmente Es unlenguaje estructurado pero tambieacuten permite una programacioacuten de bajo nivel locual lo hace adecuado para sistemas operativos (como Unix) y como software decontrol de perifeacutericos aunque se utiliza en todo un tipo de aplicaciones inclusoen las de maacutes alto nivel como por ejemplo libreriacuteas graacuteficas

C permite escribir raacutepidamente un coacutedigo muy optimizado y maacutes portable que enensamblador

El lenguaje C dispone de un conjunto completo de operadores aritmeacuteticosestructuras de datos sencillas subrutinas estructuras de control convencionalespunteros en memoria un potente procesador de macros y un amplio conjunto delibreriacuteas Tiene un primer nivel de modularizacioacuten de manera que los datospueden tener un aacutembito global o local en la funcioacuten donde se han definidoTambieacuten es un lenguaje fuertemente tipificado es decir que requiere declarartodos los datos con su tipo

Las distintas versiones de C se estandarizaron en 1990 en el denominado ANSI-C

Ejemplo de programa que cuenta el nuacutemero de caracteres de un texto y escribeel resultado por pantalla

include ltstdiohgtmain(int argc char argv[])

int cmpfor( cmp = 0 argv[0][cmp]=0 cmp++ )printf(d caracteresn cmp)

C++

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 922

Autor Luis Heladio Garzoacuten RodriacuteguezC++ es la evolucioacuten a orientacioacuten a objetos del lenguaje C Tiene una sintaxismuy parecida a la de C con varias extensiones para soportar clases herencia yotras caracteriacutesticas de orientacioacuten a objetos

C++ evolucionoacute raacutepidamente para convertirse en un lenguaje independienteactualmente es muy popular para el desarrollo de aplicaciones

C++ ofrece muchas de las estructuras de programacioacuten orientada a objetosherencia muacuteltiple tipificacioacuten estricta memoria dinaacutemica patrones geneacutericospolimorfismo control de excepciones y sobrecarga de operadores

Como derivado de C dispone de todas sus propiedades pero tambieacuten haheredado sus defectos como por ejemplo los punteros en memoria

C++ es uno de los lenguajes orientados a objetos maacutes utilizados y de los maacutes

perfeccionados A pesar de esto no tiene algunas de las caracteriacutesticas que seconsideran imprescindibles en un lenguaje orientado a objetos de uacuteltimageneracioacuten (concurrencia persistencia y garbage collection) aunque suscompiladores pueden generar programas muy compactos y que se ejecutan conmucha eficiencia

Como todos los lenguajes de programacioacuten orientada a objetos su estructuraprincipal es la que define una clase es decir el tipo de un objeto

A continuacioacuten se presenta un ejemplo de clase

class cercle public formaint radi datos de la clasefloat area() meacutetodos de la clase

Y un sencillo programa que escribe un mensaje de saludo por pantalla

include ltiostreamhgtinclude ltStringhgt

main(int argc char argv[])

String ss = new String(Hola)cout ltlt s ltlt endlcout ltlt Longitud del texto ltlt s-gtlength() ltlt endl

Uacuteltimamente han aparecido algunos lenguajes que se alejan de este modelo endiferentes sentidos Todos ellos se utilizan en la programacioacuten en entornosrelacionados con Internet que presentan caracteriacutesticas especiales

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1022

Autor Luis Heladio Garzoacuten RodriacuteguezEl lenguaje Java por ejemplo tiene un modo de traduccioacuten a lenguaje maacutequinamixto En una primera fase se compila en un coacutedigo maacutequina universal queposteriormente es interpretado y ejecutado por un programa especiacutefico Este

programa puede utilizarse desde cualquier navegador de Internet y permitedistribuir programas objetos por red que pueden ejecutarse en cualquierordenador

Java

Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxisparecida a la de C++

Tiene un conjunto de prestaciones bastante amplio herencia tipificacioacuten dedatos estricta modularidad control de excepciones polimorfismo concurrenciacarga dinaacutemica de libreriacuteas garbage collection y una amplia coleccioacuten de libreriacuteas

estaacutendar En cambio no incluye algunas caracteriacutesticas que podriacutean comprometersu simplicidad y seguridad como punteros herencia muacuteltiple sobrecarga deoperadores o un preprocesador de macros

Como lenguaje orientado a objetos su estructura fundamental es la clase que selleva hasta las uacuteltimas consecuencias en Java no puede haber datos o funcionesglobales todas deben estar asociadas a una clase Las clases se pueden agruparen paquetes que facilitan mucho la portabilidad de sus aplicaciones Todos lospaquetes estaacuten organizados en una estructura jeraacuterquica que evita la aparicioacuten dedistintas variantes para la misma funcionalidad

Java se compila en un coacutedigo independiente de la plataforma bytecode queposteriormente es interpretado por una aplicacioacuten la maacutequina virtual de JavaHay una definicioacuten formal del bytecode que asegura la portabilidad

Java ademaacutes de resultar adecuado para programar aplicaciones normalespermite desarrollar programas hospedados en servidores web Estos programasse llaman applets Tienen la capacidad de ser distribuidos por la red en forma debytecode y poderse ejecutar en cualquier plataforma Presentan variasrestricciones para evitar problemas de seguridad

El mayor inconveniente de Java es que tiene un rendimiento bajo ya que altener que ser interpretado por la maacutequina virtual su velocidad de ejecucioacuten eslenta

A continuacioacuten se presenta un ejemplo de applet escrito en Java

import javaappletimport javaawt

public class AppletHola extends Applet

Este meacutetodo visualiza el mensajepublic void paint(Graphis g)

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 5: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 522

Autor Luis Heladio Garzoacuten RodriacuteguezSQL

SQL (Structured Query Language) es un lenguaje no estrictamente de

programacioacuten Se trata de un lenguaje para interrogar y procesar informacioacuten enuna base de datos relacional

Fue desarrollado por IBM para las bases de datos de sus mainframes

Los mandos SQL se pueden utilizar para trabajar interactivamente con una basede datos o para insertarlos en un lenguaje de programacioacuten para hacer deinterfaz con una base de datos

Algunos de los sistemas de gestioacuten de bases de datos que utilizan SQL son DB2SQLDS Oracle Sybase SQLbase INFORMIX e Ingres

El siguiente ejemplo de SQL selecciona clientes con un liacutemite de creacutedito de por lomenos 100000 um y los ordena de maacutes a menos creacutedito

SELECT NOMBRE CIUDAD CODIGOPOSTALFROM CLIENTEWHERE LIMITECREDITO gt= 100000ORDER BY LIMITECREDITO DESC

Compilacioacuten Un programa denominado compilador traduce todo elprograma fuente a coacutedigo maacutequina con el que se obtiene el programaobjeto que puede ejecutarse tantas veces como sea necesario sin tener quetraducir cada vez El proceso de compilacioacuten es tedioso y lento y se debe

renovar cada vez que se hace un cambio en el programa fuente pero acambio el programa objeto se ejecuta a la velocidad maacutes alta posible Es laopcioacuten adecuada para aplicaciones complejas

Los lenguajes maacutes utilizados caen dentro de esta categoriacutea por ejemploFORTRAN COBOL IMS Pascal C y C++

FORTRAN

El lenguaje FORTRAN (Formula Translation) data de los antildeos cincuenta y todaviacutease utiliza en determinados aacutembitos

Su punto fuerte es el caacutelculo matemaacutetico especialmente con coma flotante esdecir la computacioacuten con nuacutemeros reales de gran precisioacuten En cambio nodispone de construcciones por programacioacuten modular ni de estructuras de controlavanzadas

A lo largo de los antildeos se ha estandarizado varias veces y las versiones maacutesconocidas son FORTRAN I FORTRAN II FORTRAN IV FORTRAN 77 yactualmente FORTRAN 90

Ha sido el lenguaje maacutes utilizado para caacutelculos cientiacuteficos complejos modelos deingenieriacutea estadiacutestica y procesamiento de sentildeal Tambieacuten es muy adaptable a

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 622

Autor Luis Heladio Garzoacuten Rodriacuteguezhardware especializado como por ejemplo superordenadores y ordenadoresparalelos

Un ejemplo de caacutelculo matemaacutetico con FORTRAN

PROGRAM Rad Simple FORTRAN program

REAL PRCIF (NOT (R = 00)) THEN

P = 31415926R = 25C = P RPRINT C = C

END IFEND

COBOL

COBOL (Common Business-Oriented Language) es un lenguaje orientado a laresolucioacuten de las necesidades de bancos y otras entidades financierasadministraciones faacutebricas o cualquier gran organizacioacuten que tenga que gestionarun volumen de datos importante

COBOL tiene una sintaxis recargada que intenta parecerse al lenguaje ingleacutes Unode sus puntos fuertes es la generacioacuten de informes ya que permite especificaruna gran variedad de formatos de salida

Un programa en COBOL consta de cuatro divisiones

Identificacioacuten permite identificar el programa su objetivo el autor y otrosdatos similares

Entorno enumera los recursos fiacutesicos que el programa puede necesitar parafacilitar asiacute la portabilidad entre ordenadores

Datos declara los datos del programa Procedimientos indica coacutemo se tienen que procesar los datos

COBOL se definioacute en 1960 y ha tenido varias revisiones La maacutes actual incluyecaracteriacutesticas de orientacioacuten a objetos y estructuras de control sofisticadas en unintento de modernizar el lenguaje y no perder toda la inversioacuten en software realizada ya que se calcula que es el lenguaje con que se han programado maacutes

liacuteneas de coacutedigoLos programas en COBOL acostumbran a ser bastante largos y sobrecargados yaque cualquier pequentildeo procedimiento requiere muchas liacuteneas A continuacioacuten sepresenta un ejemplo simplificado para calcular comisiones de vendedores

IDENTIFICATION DIVISIONPROGRAM-ID COMISION-VENDEDORAUTHOR DEPT-INFO

ENVIRONMENT DIVISIONINPUT-OUTPUT SECTIONFILE-CONTROL

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 722

Autor Luis Heladio Garzoacuten RodriacuteguezSELECT FICHERO-VENDEDORES ASSIGN TO DISK

ACCESS MODE IS RANDOM ORGANIZATION IS RELATIVERELATIVE KEY IS NUMERO

SELECT FICHERO-VENTAS ASSIGN TO TAPE RESERVE NO AREASACCESS MODE IS SEQUENTIAL ORGANIZATION IS SEQUENTIALDATA DIVISION

FILE SECTIONFD FICHERO-VENDEDORES LABEL RECORD IS STANDARD

RECORDING MODE IS VRECORD CONTAINS 30 TO 60 CHARACTERSDATA RECORD IS VENDEDORES

01 VENDEDORES02 NOMBRE PICTURE X(50)02 NUMERO PICTURE 9(10)

FD FICHERO-VENTAS LABEL RECORD IS STANDARDRECORDING MODE IS F

RECORD CONTAINS 8DATA RECORD IS VENTA

01 VENTA PICTURE 9(8)WORKING STORAGE SECTION

77 PCT PICTURE 9(6)77 TOTAL PICTURE 9(6)

PROCEDURE DIVISIONINICIOOPEN INPUT FICHERO-VENDEDORES INPUT FICHERO-VENTASCLAVE

ADD 1 TO NUMEROLECTURA

READ FICHERO-VENDEDORES INVALID KEY GO TO FINAL-PROGREAD FICHERO-VENTAS AT END GO TO FINAL-PROGCALCUL

DIVIDE VENTA INTO 100 GIVING PCTMULTIPLY PCT BY 40 GIVING TOTAL

RESULTADODISPLAY NUMERO UPON PRINTERDISPLAY TOTAL UPON PRINTERGOTO CLAVE

FINAL-PROGCLOSE FICHERO-VENDEDORES AND FICHERO-VENTASSTOP RUN

IMS

El sistema IMS (Information Management System) se utiliza para consultar basesde datos tuvo una gran expansioacuten en los antildeos setenta Se trata de un productode IBM para las bases de datos de mainframes sobre el sistema MVS

IMSDB (IMSData Base) es la base de datos que funciona en un entorno deproceso por lotes

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 822

Autor Luis Heladio Garzoacuten RodriacuteguezIMSDC (IMSData Communications) es un programa necesario cuando se utilizainteractivamente y tambieacuten permite acceder a bases de datos DB2

PASCAL

Pascal es un lenguaje disentildeado inicialmente para ensentildear a programar Como tallenguaje educativo presenta una estructura perfectamente acadeacutemica de laprogramacioacuten estructurada Requiere una programacioacuten detallada todos lostipos datos y subrutinas se tienen que declarar antes de utilizarlos Estaacutefuertemente estructurado en bloques y cada uno de los cuales permite declarardatos y funciones y tambieacuten otros bloques de nivel inferior Asiacute se puedenestructurar los datos y los procedimientos en tantos niveles como resultenecesario

Es un lenguaje apropiado para aplicaciones geneacutericas aunque en muchas aacutereas

se ha sustituido por lenguajes orientados a objetos como C++ y JavaC

C es probablemente uno de los lenguajes maacutes utilizados actualmente Es unlenguaje estructurado pero tambieacuten permite una programacioacuten de bajo nivel locual lo hace adecuado para sistemas operativos (como Unix) y como software decontrol de perifeacutericos aunque se utiliza en todo un tipo de aplicaciones inclusoen las de maacutes alto nivel como por ejemplo libreriacuteas graacuteficas

C permite escribir raacutepidamente un coacutedigo muy optimizado y maacutes portable que enensamblador

El lenguaje C dispone de un conjunto completo de operadores aritmeacuteticosestructuras de datos sencillas subrutinas estructuras de control convencionalespunteros en memoria un potente procesador de macros y un amplio conjunto delibreriacuteas Tiene un primer nivel de modularizacioacuten de manera que los datospueden tener un aacutembito global o local en la funcioacuten donde se han definidoTambieacuten es un lenguaje fuertemente tipificado es decir que requiere declarartodos los datos con su tipo

Las distintas versiones de C se estandarizaron en 1990 en el denominado ANSI-C

Ejemplo de programa que cuenta el nuacutemero de caracteres de un texto y escribeel resultado por pantalla

include ltstdiohgtmain(int argc char argv[])

int cmpfor( cmp = 0 argv[0][cmp]=0 cmp++ )printf(d caracteresn cmp)

C++

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 922

Autor Luis Heladio Garzoacuten RodriacuteguezC++ es la evolucioacuten a orientacioacuten a objetos del lenguaje C Tiene una sintaxismuy parecida a la de C con varias extensiones para soportar clases herencia yotras caracteriacutesticas de orientacioacuten a objetos

C++ evolucionoacute raacutepidamente para convertirse en un lenguaje independienteactualmente es muy popular para el desarrollo de aplicaciones

C++ ofrece muchas de las estructuras de programacioacuten orientada a objetosherencia muacuteltiple tipificacioacuten estricta memoria dinaacutemica patrones geneacutericospolimorfismo control de excepciones y sobrecarga de operadores

Como derivado de C dispone de todas sus propiedades pero tambieacuten haheredado sus defectos como por ejemplo los punteros en memoria

C++ es uno de los lenguajes orientados a objetos maacutes utilizados y de los maacutes

perfeccionados A pesar de esto no tiene algunas de las caracteriacutesticas que seconsideran imprescindibles en un lenguaje orientado a objetos de uacuteltimageneracioacuten (concurrencia persistencia y garbage collection) aunque suscompiladores pueden generar programas muy compactos y que se ejecutan conmucha eficiencia

Como todos los lenguajes de programacioacuten orientada a objetos su estructuraprincipal es la que define una clase es decir el tipo de un objeto

A continuacioacuten se presenta un ejemplo de clase

class cercle public formaint radi datos de la clasefloat area() meacutetodos de la clase

Y un sencillo programa que escribe un mensaje de saludo por pantalla

include ltiostreamhgtinclude ltStringhgt

main(int argc char argv[])

String ss = new String(Hola)cout ltlt s ltlt endlcout ltlt Longitud del texto ltlt s-gtlength() ltlt endl

Uacuteltimamente han aparecido algunos lenguajes que se alejan de este modelo endiferentes sentidos Todos ellos se utilizan en la programacioacuten en entornosrelacionados con Internet que presentan caracteriacutesticas especiales

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1022

Autor Luis Heladio Garzoacuten RodriacuteguezEl lenguaje Java por ejemplo tiene un modo de traduccioacuten a lenguaje maacutequinamixto En una primera fase se compila en un coacutedigo maacutequina universal queposteriormente es interpretado y ejecutado por un programa especiacutefico Este

programa puede utilizarse desde cualquier navegador de Internet y permitedistribuir programas objetos por red que pueden ejecutarse en cualquierordenador

Java

Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxisparecida a la de C++

Tiene un conjunto de prestaciones bastante amplio herencia tipificacioacuten dedatos estricta modularidad control de excepciones polimorfismo concurrenciacarga dinaacutemica de libreriacuteas garbage collection y una amplia coleccioacuten de libreriacuteas

estaacutendar En cambio no incluye algunas caracteriacutesticas que podriacutean comprometersu simplicidad y seguridad como punteros herencia muacuteltiple sobrecarga deoperadores o un preprocesador de macros

Como lenguaje orientado a objetos su estructura fundamental es la clase que selleva hasta las uacuteltimas consecuencias en Java no puede haber datos o funcionesglobales todas deben estar asociadas a una clase Las clases se pueden agruparen paquetes que facilitan mucho la portabilidad de sus aplicaciones Todos lospaquetes estaacuten organizados en una estructura jeraacuterquica que evita la aparicioacuten dedistintas variantes para la misma funcionalidad

Java se compila en un coacutedigo independiente de la plataforma bytecode queposteriormente es interpretado por una aplicacioacuten la maacutequina virtual de JavaHay una definicioacuten formal del bytecode que asegura la portabilidad

Java ademaacutes de resultar adecuado para programar aplicaciones normalespermite desarrollar programas hospedados en servidores web Estos programasse llaman applets Tienen la capacidad de ser distribuidos por la red en forma debytecode y poderse ejecutar en cualquier plataforma Presentan variasrestricciones para evitar problemas de seguridad

El mayor inconveniente de Java es que tiene un rendimiento bajo ya que altener que ser interpretado por la maacutequina virtual su velocidad de ejecucioacuten eslenta

A continuacioacuten se presenta un ejemplo de applet escrito en Java

import javaappletimport javaawt

public class AppletHola extends Applet

Este meacutetodo visualiza el mensajepublic void paint(Graphis g)

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 6: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 622

Autor Luis Heladio Garzoacuten Rodriacuteguezhardware especializado como por ejemplo superordenadores y ordenadoresparalelos

Un ejemplo de caacutelculo matemaacutetico con FORTRAN

PROGRAM Rad Simple FORTRAN program

REAL PRCIF (NOT (R = 00)) THEN

P = 31415926R = 25C = P RPRINT C = C

END IFEND

COBOL

COBOL (Common Business-Oriented Language) es un lenguaje orientado a laresolucioacuten de las necesidades de bancos y otras entidades financierasadministraciones faacutebricas o cualquier gran organizacioacuten que tenga que gestionarun volumen de datos importante

COBOL tiene una sintaxis recargada que intenta parecerse al lenguaje ingleacutes Unode sus puntos fuertes es la generacioacuten de informes ya que permite especificaruna gran variedad de formatos de salida

Un programa en COBOL consta de cuatro divisiones

Identificacioacuten permite identificar el programa su objetivo el autor y otrosdatos similares

Entorno enumera los recursos fiacutesicos que el programa puede necesitar parafacilitar asiacute la portabilidad entre ordenadores

Datos declara los datos del programa Procedimientos indica coacutemo se tienen que procesar los datos

COBOL se definioacute en 1960 y ha tenido varias revisiones La maacutes actual incluyecaracteriacutesticas de orientacioacuten a objetos y estructuras de control sofisticadas en unintento de modernizar el lenguaje y no perder toda la inversioacuten en software realizada ya que se calcula que es el lenguaje con que se han programado maacutes

liacuteneas de coacutedigoLos programas en COBOL acostumbran a ser bastante largos y sobrecargados yaque cualquier pequentildeo procedimiento requiere muchas liacuteneas A continuacioacuten sepresenta un ejemplo simplificado para calcular comisiones de vendedores

IDENTIFICATION DIVISIONPROGRAM-ID COMISION-VENDEDORAUTHOR DEPT-INFO

ENVIRONMENT DIVISIONINPUT-OUTPUT SECTIONFILE-CONTROL

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 722

Autor Luis Heladio Garzoacuten RodriacuteguezSELECT FICHERO-VENDEDORES ASSIGN TO DISK

ACCESS MODE IS RANDOM ORGANIZATION IS RELATIVERELATIVE KEY IS NUMERO

SELECT FICHERO-VENTAS ASSIGN TO TAPE RESERVE NO AREASACCESS MODE IS SEQUENTIAL ORGANIZATION IS SEQUENTIALDATA DIVISION

FILE SECTIONFD FICHERO-VENDEDORES LABEL RECORD IS STANDARD

RECORDING MODE IS VRECORD CONTAINS 30 TO 60 CHARACTERSDATA RECORD IS VENDEDORES

01 VENDEDORES02 NOMBRE PICTURE X(50)02 NUMERO PICTURE 9(10)

FD FICHERO-VENTAS LABEL RECORD IS STANDARDRECORDING MODE IS F

RECORD CONTAINS 8DATA RECORD IS VENTA

01 VENTA PICTURE 9(8)WORKING STORAGE SECTION

77 PCT PICTURE 9(6)77 TOTAL PICTURE 9(6)

PROCEDURE DIVISIONINICIOOPEN INPUT FICHERO-VENDEDORES INPUT FICHERO-VENTASCLAVE

ADD 1 TO NUMEROLECTURA

READ FICHERO-VENDEDORES INVALID KEY GO TO FINAL-PROGREAD FICHERO-VENTAS AT END GO TO FINAL-PROGCALCUL

DIVIDE VENTA INTO 100 GIVING PCTMULTIPLY PCT BY 40 GIVING TOTAL

RESULTADODISPLAY NUMERO UPON PRINTERDISPLAY TOTAL UPON PRINTERGOTO CLAVE

FINAL-PROGCLOSE FICHERO-VENDEDORES AND FICHERO-VENTASSTOP RUN

IMS

El sistema IMS (Information Management System) se utiliza para consultar basesde datos tuvo una gran expansioacuten en los antildeos setenta Se trata de un productode IBM para las bases de datos de mainframes sobre el sistema MVS

IMSDB (IMSData Base) es la base de datos que funciona en un entorno deproceso por lotes

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 822

Autor Luis Heladio Garzoacuten RodriacuteguezIMSDC (IMSData Communications) es un programa necesario cuando se utilizainteractivamente y tambieacuten permite acceder a bases de datos DB2

PASCAL

Pascal es un lenguaje disentildeado inicialmente para ensentildear a programar Como tallenguaje educativo presenta una estructura perfectamente acadeacutemica de laprogramacioacuten estructurada Requiere una programacioacuten detallada todos lostipos datos y subrutinas se tienen que declarar antes de utilizarlos Estaacutefuertemente estructurado en bloques y cada uno de los cuales permite declarardatos y funciones y tambieacuten otros bloques de nivel inferior Asiacute se puedenestructurar los datos y los procedimientos en tantos niveles como resultenecesario

Es un lenguaje apropiado para aplicaciones geneacutericas aunque en muchas aacutereas

se ha sustituido por lenguajes orientados a objetos como C++ y JavaC

C es probablemente uno de los lenguajes maacutes utilizados actualmente Es unlenguaje estructurado pero tambieacuten permite una programacioacuten de bajo nivel locual lo hace adecuado para sistemas operativos (como Unix) y como software decontrol de perifeacutericos aunque se utiliza en todo un tipo de aplicaciones inclusoen las de maacutes alto nivel como por ejemplo libreriacuteas graacuteficas

C permite escribir raacutepidamente un coacutedigo muy optimizado y maacutes portable que enensamblador

El lenguaje C dispone de un conjunto completo de operadores aritmeacuteticosestructuras de datos sencillas subrutinas estructuras de control convencionalespunteros en memoria un potente procesador de macros y un amplio conjunto delibreriacuteas Tiene un primer nivel de modularizacioacuten de manera que los datospueden tener un aacutembito global o local en la funcioacuten donde se han definidoTambieacuten es un lenguaje fuertemente tipificado es decir que requiere declarartodos los datos con su tipo

Las distintas versiones de C se estandarizaron en 1990 en el denominado ANSI-C

Ejemplo de programa que cuenta el nuacutemero de caracteres de un texto y escribeel resultado por pantalla

include ltstdiohgtmain(int argc char argv[])

int cmpfor( cmp = 0 argv[0][cmp]=0 cmp++ )printf(d caracteresn cmp)

C++

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 922

Autor Luis Heladio Garzoacuten RodriacuteguezC++ es la evolucioacuten a orientacioacuten a objetos del lenguaje C Tiene una sintaxismuy parecida a la de C con varias extensiones para soportar clases herencia yotras caracteriacutesticas de orientacioacuten a objetos

C++ evolucionoacute raacutepidamente para convertirse en un lenguaje independienteactualmente es muy popular para el desarrollo de aplicaciones

C++ ofrece muchas de las estructuras de programacioacuten orientada a objetosherencia muacuteltiple tipificacioacuten estricta memoria dinaacutemica patrones geneacutericospolimorfismo control de excepciones y sobrecarga de operadores

Como derivado de C dispone de todas sus propiedades pero tambieacuten haheredado sus defectos como por ejemplo los punteros en memoria

C++ es uno de los lenguajes orientados a objetos maacutes utilizados y de los maacutes

perfeccionados A pesar de esto no tiene algunas de las caracteriacutesticas que seconsideran imprescindibles en un lenguaje orientado a objetos de uacuteltimageneracioacuten (concurrencia persistencia y garbage collection) aunque suscompiladores pueden generar programas muy compactos y que se ejecutan conmucha eficiencia

Como todos los lenguajes de programacioacuten orientada a objetos su estructuraprincipal es la que define una clase es decir el tipo de un objeto

A continuacioacuten se presenta un ejemplo de clase

class cercle public formaint radi datos de la clasefloat area() meacutetodos de la clase

Y un sencillo programa que escribe un mensaje de saludo por pantalla

include ltiostreamhgtinclude ltStringhgt

main(int argc char argv[])

String ss = new String(Hola)cout ltlt s ltlt endlcout ltlt Longitud del texto ltlt s-gtlength() ltlt endl

Uacuteltimamente han aparecido algunos lenguajes que se alejan de este modelo endiferentes sentidos Todos ellos se utilizan en la programacioacuten en entornosrelacionados con Internet que presentan caracteriacutesticas especiales

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1022

Autor Luis Heladio Garzoacuten RodriacuteguezEl lenguaje Java por ejemplo tiene un modo de traduccioacuten a lenguaje maacutequinamixto En una primera fase se compila en un coacutedigo maacutequina universal queposteriormente es interpretado y ejecutado por un programa especiacutefico Este

programa puede utilizarse desde cualquier navegador de Internet y permitedistribuir programas objetos por red que pueden ejecutarse en cualquierordenador

Java

Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxisparecida a la de C++

Tiene un conjunto de prestaciones bastante amplio herencia tipificacioacuten dedatos estricta modularidad control de excepciones polimorfismo concurrenciacarga dinaacutemica de libreriacuteas garbage collection y una amplia coleccioacuten de libreriacuteas

estaacutendar En cambio no incluye algunas caracteriacutesticas que podriacutean comprometersu simplicidad y seguridad como punteros herencia muacuteltiple sobrecarga deoperadores o un preprocesador de macros

Como lenguaje orientado a objetos su estructura fundamental es la clase que selleva hasta las uacuteltimas consecuencias en Java no puede haber datos o funcionesglobales todas deben estar asociadas a una clase Las clases se pueden agruparen paquetes que facilitan mucho la portabilidad de sus aplicaciones Todos lospaquetes estaacuten organizados en una estructura jeraacuterquica que evita la aparicioacuten dedistintas variantes para la misma funcionalidad

Java se compila en un coacutedigo independiente de la plataforma bytecode queposteriormente es interpretado por una aplicacioacuten la maacutequina virtual de JavaHay una definicioacuten formal del bytecode que asegura la portabilidad

Java ademaacutes de resultar adecuado para programar aplicaciones normalespermite desarrollar programas hospedados en servidores web Estos programasse llaman applets Tienen la capacidad de ser distribuidos por la red en forma debytecode y poderse ejecutar en cualquier plataforma Presentan variasrestricciones para evitar problemas de seguridad

El mayor inconveniente de Java es que tiene un rendimiento bajo ya que altener que ser interpretado por la maacutequina virtual su velocidad de ejecucioacuten eslenta

A continuacioacuten se presenta un ejemplo de applet escrito en Java

import javaappletimport javaawt

public class AppletHola extends Applet

Este meacutetodo visualiza el mensajepublic void paint(Graphis g)

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 7: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 722

Autor Luis Heladio Garzoacuten RodriacuteguezSELECT FICHERO-VENDEDORES ASSIGN TO DISK

ACCESS MODE IS RANDOM ORGANIZATION IS RELATIVERELATIVE KEY IS NUMERO

SELECT FICHERO-VENTAS ASSIGN TO TAPE RESERVE NO AREASACCESS MODE IS SEQUENTIAL ORGANIZATION IS SEQUENTIALDATA DIVISION

FILE SECTIONFD FICHERO-VENDEDORES LABEL RECORD IS STANDARD

RECORDING MODE IS VRECORD CONTAINS 30 TO 60 CHARACTERSDATA RECORD IS VENDEDORES

01 VENDEDORES02 NOMBRE PICTURE X(50)02 NUMERO PICTURE 9(10)

FD FICHERO-VENTAS LABEL RECORD IS STANDARDRECORDING MODE IS F

RECORD CONTAINS 8DATA RECORD IS VENTA

01 VENTA PICTURE 9(8)WORKING STORAGE SECTION

77 PCT PICTURE 9(6)77 TOTAL PICTURE 9(6)

PROCEDURE DIVISIONINICIOOPEN INPUT FICHERO-VENDEDORES INPUT FICHERO-VENTASCLAVE

ADD 1 TO NUMEROLECTURA

READ FICHERO-VENDEDORES INVALID KEY GO TO FINAL-PROGREAD FICHERO-VENTAS AT END GO TO FINAL-PROGCALCUL

DIVIDE VENTA INTO 100 GIVING PCTMULTIPLY PCT BY 40 GIVING TOTAL

RESULTADODISPLAY NUMERO UPON PRINTERDISPLAY TOTAL UPON PRINTERGOTO CLAVE

FINAL-PROGCLOSE FICHERO-VENDEDORES AND FICHERO-VENTASSTOP RUN

IMS

El sistema IMS (Information Management System) se utiliza para consultar basesde datos tuvo una gran expansioacuten en los antildeos setenta Se trata de un productode IBM para las bases de datos de mainframes sobre el sistema MVS

IMSDB (IMSData Base) es la base de datos que funciona en un entorno deproceso por lotes

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 822

Autor Luis Heladio Garzoacuten RodriacuteguezIMSDC (IMSData Communications) es un programa necesario cuando se utilizainteractivamente y tambieacuten permite acceder a bases de datos DB2

PASCAL

Pascal es un lenguaje disentildeado inicialmente para ensentildear a programar Como tallenguaje educativo presenta una estructura perfectamente acadeacutemica de laprogramacioacuten estructurada Requiere una programacioacuten detallada todos lostipos datos y subrutinas se tienen que declarar antes de utilizarlos Estaacutefuertemente estructurado en bloques y cada uno de los cuales permite declarardatos y funciones y tambieacuten otros bloques de nivel inferior Asiacute se puedenestructurar los datos y los procedimientos en tantos niveles como resultenecesario

Es un lenguaje apropiado para aplicaciones geneacutericas aunque en muchas aacutereas

se ha sustituido por lenguajes orientados a objetos como C++ y JavaC

C es probablemente uno de los lenguajes maacutes utilizados actualmente Es unlenguaje estructurado pero tambieacuten permite una programacioacuten de bajo nivel locual lo hace adecuado para sistemas operativos (como Unix) y como software decontrol de perifeacutericos aunque se utiliza en todo un tipo de aplicaciones inclusoen las de maacutes alto nivel como por ejemplo libreriacuteas graacuteficas

C permite escribir raacutepidamente un coacutedigo muy optimizado y maacutes portable que enensamblador

El lenguaje C dispone de un conjunto completo de operadores aritmeacuteticosestructuras de datos sencillas subrutinas estructuras de control convencionalespunteros en memoria un potente procesador de macros y un amplio conjunto delibreriacuteas Tiene un primer nivel de modularizacioacuten de manera que los datospueden tener un aacutembito global o local en la funcioacuten donde se han definidoTambieacuten es un lenguaje fuertemente tipificado es decir que requiere declarartodos los datos con su tipo

Las distintas versiones de C se estandarizaron en 1990 en el denominado ANSI-C

Ejemplo de programa que cuenta el nuacutemero de caracteres de un texto y escribeel resultado por pantalla

include ltstdiohgtmain(int argc char argv[])

int cmpfor( cmp = 0 argv[0][cmp]=0 cmp++ )printf(d caracteresn cmp)

C++

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 922

Autor Luis Heladio Garzoacuten RodriacuteguezC++ es la evolucioacuten a orientacioacuten a objetos del lenguaje C Tiene una sintaxismuy parecida a la de C con varias extensiones para soportar clases herencia yotras caracteriacutesticas de orientacioacuten a objetos

C++ evolucionoacute raacutepidamente para convertirse en un lenguaje independienteactualmente es muy popular para el desarrollo de aplicaciones

C++ ofrece muchas de las estructuras de programacioacuten orientada a objetosherencia muacuteltiple tipificacioacuten estricta memoria dinaacutemica patrones geneacutericospolimorfismo control de excepciones y sobrecarga de operadores

Como derivado de C dispone de todas sus propiedades pero tambieacuten haheredado sus defectos como por ejemplo los punteros en memoria

C++ es uno de los lenguajes orientados a objetos maacutes utilizados y de los maacutes

perfeccionados A pesar de esto no tiene algunas de las caracteriacutesticas que seconsideran imprescindibles en un lenguaje orientado a objetos de uacuteltimageneracioacuten (concurrencia persistencia y garbage collection) aunque suscompiladores pueden generar programas muy compactos y que se ejecutan conmucha eficiencia

Como todos los lenguajes de programacioacuten orientada a objetos su estructuraprincipal es la que define una clase es decir el tipo de un objeto

A continuacioacuten se presenta un ejemplo de clase

class cercle public formaint radi datos de la clasefloat area() meacutetodos de la clase

Y un sencillo programa que escribe un mensaje de saludo por pantalla

include ltiostreamhgtinclude ltStringhgt

main(int argc char argv[])

String ss = new String(Hola)cout ltlt s ltlt endlcout ltlt Longitud del texto ltlt s-gtlength() ltlt endl

Uacuteltimamente han aparecido algunos lenguajes que se alejan de este modelo endiferentes sentidos Todos ellos se utilizan en la programacioacuten en entornosrelacionados con Internet que presentan caracteriacutesticas especiales

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1022

Autor Luis Heladio Garzoacuten RodriacuteguezEl lenguaje Java por ejemplo tiene un modo de traduccioacuten a lenguaje maacutequinamixto En una primera fase se compila en un coacutedigo maacutequina universal queposteriormente es interpretado y ejecutado por un programa especiacutefico Este

programa puede utilizarse desde cualquier navegador de Internet y permitedistribuir programas objetos por red que pueden ejecutarse en cualquierordenador

Java

Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxisparecida a la de C++

Tiene un conjunto de prestaciones bastante amplio herencia tipificacioacuten dedatos estricta modularidad control de excepciones polimorfismo concurrenciacarga dinaacutemica de libreriacuteas garbage collection y una amplia coleccioacuten de libreriacuteas

estaacutendar En cambio no incluye algunas caracteriacutesticas que podriacutean comprometersu simplicidad y seguridad como punteros herencia muacuteltiple sobrecarga deoperadores o un preprocesador de macros

Como lenguaje orientado a objetos su estructura fundamental es la clase que selleva hasta las uacuteltimas consecuencias en Java no puede haber datos o funcionesglobales todas deben estar asociadas a una clase Las clases se pueden agruparen paquetes que facilitan mucho la portabilidad de sus aplicaciones Todos lospaquetes estaacuten organizados en una estructura jeraacuterquica que evita la aparicioacuten dedistintas variantes para la misma funcionalidad

Java se compila en un coacutedigo independiente de la plataforma bytecode queposteriormente es interpretado por una aplicacioacuten la maacutequina virtual de JavaHay una definicioacuten formal del bytecode que asegura la portabilidad

Java ademaacutes de resultar adecuado para programar aplicaciones normalespermite desarrollar programas hospedados en servidores web Estos programasse llaman applets Tienen la capacidad de ser distribuidos por la red en forma debytecode y poderse ejecutar en cualquier plataforma Presentan variasrestricciones para evitar problemas de seguridad

El mayor inconveniente de Java es que tiene un rendimiento bajo ya que altener que ser interpretado por la maacutequina virtual su velocidad de ejecucioacuten eslenta

A continuacioacuten se presenta un ejemplo de applet escrito en Java

import javaappletimport javaawt

public class AppletHola extends Applet

Este meacutetodo visualiza el mensajepublic void paint(Graphis g)

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 8: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 822

Autor Luis Heladio Garzoacuten RodriacuteguezIMSDC (IMSData Communications) es un programa necesario cuando se utilizainteractivamente y tambieacuten permite acceder a bases de datos DB2

PASCAL

Pascal es un lenguaje disentildeado inicialmente para ensentildear a programar Como tallenguaje educativo presenta una estructura perfectamente acadeacutemica de laprogramacioacuten estructurada Requiere una programacioacuten detallada todos lostipos datos y subrutinas se tienen que declarar antes de utilizarlos Estaacutefuertemente estructurado en bloques y cada uno de los cuales permite declarardatos y funciones y tambieacuten otros bloques de nivel inferior Asiacute se puedenestructurar los datos y los procedimientos en tantos niveles como resultenecesario

Es un lenguaje apropiado para aplicaciones geneacutericas aunque en muchas aacutereas

se ha sustituido por lenguajes orientados a objetos como C++ y JavaC

C es probablemente uno de los lenguajes maacutes utilizados actualmente Es unlenguaje estructurado pero tambieacuten permite una programacioacuten de bajo nivel locual lo hace adecuado para sistemas operativos (como Unix) y como software decontrol de perifeacutericos aunque se utiliza en todo un tipo de aplicaciones inclusoen las de maacutes alto nivel como por ejemplo libreriacuteas graacuteficas

C permite escribir raacutepidamente un coacutedigo muy optimizado y maacutes portable que enensamblador

El lenguaje C dispone de un conjunto completo de operadores aritmeacuteticosestructuras de datos sencillas subrutinas estructuras de control convencionalespunteros en memoria un potente procesador de macros y un amplio conjunto delibreriacuteas Tiene un primer nivel de modularizacioacuten de manera que los datospueden tener un aacutembito global o local en la funcioacuten donde se han definidoTambieacuten es un lenguaje fuertemente tipificado es decir que requiere declarartodos los datos con su tipo

Las distintas versiones de C se estandarizaron en 1990 en el denominado ANSI-C

Ejemplo de programa que cuenta el nuacutemero de caracteres de un texto y escribeel resultado por pantalla

include ltstdiohgtmain(int argc char argv[])

int cmpfor( cmp = 0 argv[0][cmp]=0 cmp++ )printf(d caracteresn cmp)

C++

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 922

Autor Luis Heladio Garzoacuten RodriacuteguezC++ es la evolucioacuten a orientacioacuten a objetos del lenguaje C Tiene una sintaxismuy parecida a la de C con varias extensiones para soportar clases herencia yotras caracteriacutesticas de orientacioacuten a objetos

C++ evolucionoacute raacutepidamente para convertirse en un lenguaje independienteactualmente es muy popular para el desarrollo de aplicaciones

C++ ofrece muchas de las estructuras de programacioacuten orientada a objetosherencia muacuteltiple tipificacioacuten estricta memoria dinaacutemica patrones geneacutericospolimorfismo control de excepciones y sobrecarga de operadores

Como derivado de C dispone de todas sus propiedades pero tambieacuten haheredado sus defectos como por ejemplo los punteros en memoria

C++ es uno de los lenguajes orientados a objetos maacutes utilizados y de los maacutes

perfeccionados A pesar de esto no tiene algunas de las caracteriacutesticas que seconsideran imprescindibles en un lenguaje orientado a objetos de uacuteltimageneracioacuten (concurrencia persistencia y garbage collection) aunque suscompiladores pueden generar programas muy compactos y que se ejecutan conmucha eficiencia

Como todos los lenguajes de programacioacuten orientada a objetos su estructuraprincipal es la que define una clase es decir el tipo de un objeto

A continuacioacuten se presenta un ejemplo de clase

class cercle public formaint radi datos de la clasefloat area() meacutetodos de la clase

Y un sencillo programa que escribe un mensaje de saludo por pantalla

include ltiostreamhgtinclude ltStringhgt

main(int argc char argv[])

String ss = new String(Hola)cout ltlt s ltlt endlcout ltlt Longitud del texto ltlt s-gtlength() ltlt endl

Uacuteltimamente han aparecido algunos lenguajes que se alejan de este modelo endiferentes sentidos Todos ellos se utilizan en la programacioacuten en entornosrelacionados con Internet que presentan caracteriacutesticas especiales

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1022

Autor Luis Heladio Garzoacuten RodriacuteguezEl lenguaje Java por ejemplo tiene un modo de traduccioacuten a lenguaje maacutequinamixto En una primera fase se compila en un coacutedigo maacutequina universal queposteriormente es interpretado y ejecutado por un programa especiacutefico Este

programa puede utilizarse desde cualquier navegador de Internet y permitedistribuir programas objetos por red que pueden ejecutarse en cualquierordenador

Java

Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxisparecida a la de C++

Tiene un conjunto de prestaciones bastante amplio herencia tipificacioacuten dedatos estricta modularidad control de excepciones polimorfismo concurrenciacarga dinaacutemica de libreriacuteas garbage collection y una amplia coleccioacuten de libreriacuteas

estaacutendar En cambio no incluye algunas caracteriacutesticas que podriacutean comprometersu simplicidad y seguridad como punteros herencia muacuteltiple sobrecarga deoperadores o un preprocesador de macros

Como lenguaje orientado a objetos su estructura fundamental es la clase que selleva hasta las uacuteltimas consecuencias en Java no puede haber datos o funcionesglobales todas deben estar asociadas a una clase Las clases se pueden agruparen paquetes que facilitan mucho la portabilidad de sus aplicaciones Todos lospaquetes estaacuten organizados en una estructura jeraacuterquica que evita la aparicioacuten dedistintas variantes para la misma funcionalidad

Java se compila en un coacutedigo independiente de la plataforma bytecode queposteriormente es interpretado por una aplicacioacuten la maacutequina virtual de JavaHay una definicioacuten formal del bytecode que asegura la portabilidad

Java ademaacutes de resultar adecuado para programar aplicaciones normalespermite desarrollar programas hospedados en servidores web Estos programasse llaman applets Tienen la capacidad de ser distribuidos por la red en forma debytecode y poderse ejecutar en cualquier plataforma Presentan variasrestricciones para evitar problemas de seguridad

El mayor inconveniente de Java es que tiene un rendimiento bajo ya que altener que ser interpretado por la maacutequina virtual su velocidad de ejecucioacuten eslenta

A continuacioacuten se presenta un ejemplo de applet escrito en Java

import javaappletimport javaawt

public class AppletHola extends Applet

Este meacutetodo visualiza el mensajepublic void paint(Graphis g)

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 9: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 922

Autor Luis Heladio Garzoacuten RodriacuteguezC++ es la evolucioacuten a orientacioacuten a objetos del lenguaje C Tiene una sintaxismuy parecida a la de C con varias extensiones para soportar clases herencia yotras caracteriacutesticas de orientacioacuten a objetos

C++ evolucionoacute raacutepidamente para convertirse en un lenguaje independienteactualmente es muy popular para el desarrollo de aplicaciones

C++ ofrece muchas de las estructuras de programacioacuten orientada a objetosherencia muacuteltiple tipificacioacuten estricta memoria dinaacutemica patrones geneacutericospolimorfismo control de excepciones y sobrecarga de operadores

Como derivado de C dispone de todas sus propiedades pero tambieacuten haheredado sus defectos como por ejemplo los punteros en memoria

C++ es uno de los lenguajes orientados a objetos maacutes utilizados y de los maacutes

perfeccionados A pesar de esto no tiene algunas de las caracteriacutesticas que seconsideran imprescindibles en un lenguaje orientado a objetos de uacuteltimageneracioacuten (concurrencia persistencia y garbage collection) aunque suscompiladores pueden generar programas muy compactos y que se ejecutan conmucha eficiencia

Como todos los lenguajes de programacioacuten orientada a objetos su estructuraprincipal es la que define una clase es decir el tipo de un objeto

A continuacioacuten se presenta un ejemplo de clase

class cercle public formaint radi datos de la clasefloat area() meacutetodos de la clase

Y un sencillo programa que escribe un mensaje de saludo por pantalla

include ltiostreamhgtinclude ltStringhgt

main(int argc char argv[])

String ss = new String(Hola)cout ltlt s ltlt endlcout ltlt Longitud del texto ltlt s-gtlength() ltlt endl

Uacuteltimamente han aparecido algunos lenguajes que se alejan de este modelo endiferentes sentidos Todos ellos se utilizan en la programacioacuten en entornosrelacionados con Internet que presentan caracteriacutesticas especiales

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1022

Autor Luis Heladio Garzoacuten RodriacuteguezEl lenguaje Java por ejemplo tiene un modo de traduccioacuten a lenguaje maacutequinamixto En una primera fase se compila en un coacutedigo maacutequina universal queposteriormente es interpretado y ejecutado por un programa especiacutefico Este

programa puede utilizarse desde cualquier navegador de Internet y permitedistribuir programas objetos por red que pueden ejecutarse en cualquierordenador

Java

Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxisparecida a la de C++

Tiene un conjunto de prestaciones bastante amplio herencia tipificacioacuten dedatos estricta modularidad control de excepciones polimorfismo concurrenciacarga dinaacutemica de libreriacuteas garbage collection y una amplia coleccioacuten de libreriacuteas

estaacutendar En cambio no incluye algunas caracteriacutesticas que podriacutean comprometersu simplicidad y seguridad como punteros herencia muacuteltiple sobrecarga deoperadores o un preprocesador de macros

Como lenguaje orientado a objetos su estructura fundamental es la clase que selleva hasta las uacuteltimas consecuencias en Java no puede haber datos o funcionesglobales todas deben estar asociadas a una clase Las clases se pueden agruparen paquetes que facilitan mucho la portabilidad de sus aplicaciones Todos lospaquetes estaacuten organizados en una estructura jeraacuterquica que evita la aparicioacuten dedistintas variantes para la misma funcionalidad

Java se compila en un coacutedigo independiente de la plataforma bytecode queposteriormente es interpretado por una aplicacioacuten la maacutequina virtual de JavaHay una definicioacuten formal del bytecode que asegura la portabilidad

Java ademaacutes de resultar adecuado para programar aplicaciones normalespermite desarrollar programas hospedados en servidores web Estos programasse llaman applets Tienen la capacidad de ser distribuidos por la red en forma debytecode y poderse ejecutar en cualquier plataforma Presentan variasrestricciones para evitar problemas de seguridad

El mayor inconveniente de Java es que tiene un rendimiento bajo ya que altener que ser interpretado por la maacutequina virtual su velocidad de ejecucioacuten eslenta

A continuacioacuten se presenta un ejemplo de applet escrito en Java

import javaappletimport javaawt

public class AppletHola extends Applet

Este meacutetodo visualiza el mensajepublic void paint(Graphis g)

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 10: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1022

Autor Luis Heladio Garzoacuten RodriacuteguezEl lenguaje Java por ejemplo tiene un modo de traduccioacuten a lenguaje maacutequinamixto En una primera fase se compila en un coacutedigo maacutequina universal queposteriormente es interpretado y ejecutado por un programa especiacutefico Este

programa puede utilizarse desde cualquier navegador de Internet y permitedistribuir programas objetos por red que pueden ejecutarse en cualquierordenador

Java

Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxisparecida a la de C++

Tiene un conjunto de prestaciones bastante amplio herencia tipificacioacuten dedatos estricta modularidad control de excepciones polimorfismo concurrenciacarga dinaacutemica de libreriacuteas garbage collection y una amplia coleccioacuten de libreriacuteas

estaacutendar En cambio no incluye algunas caracteriacutesticas que podriacutean comprometersu simplicidad y seguridad como punteros herencia muacuteltiple sobrecarga deoperadores o un preprocesador de macros

Como lenguaje orientado a objetos su estructura fundamental es la clase que selleva hasta las uacuteltimas consecuencias en Java no puede haber datos o funcionesglobales todas deben estar asociadas a una clase Las clases se pueden agruparen paquetes que facilitan mucho la portabilidad de sus aplicaciones Todos lospaquetes estaacuten organizados en una estructura jeraacuterquica que evita la aparicioacuten dedistintas variantes para la misma funcionalidad

Java se compila en un coacutedigo independiente de la plataforma bytecode queposteriormente es interpretado por una aplicacioacuten la maacutequina virtual de JavaHay una definicioacuten formal del bytecode que asegura la portabilidad

Java ademaacutes de resultar adecuado para programar aplicaciones normalespermite desarrollar programas hospedados en servidores web Estos programasse llaman applets Tienen la capacidad de ser distribuidos por la red en forma debytecode y poderse ejecutar en cualquier plataforma Presentan variasrestricciones para evitar problemas de seguridad

El mayor inconveniente de Java es que tiene un rendimiento bajo ya que altener que ser interpretado por la maacutequina virtual su velocidad de ejecucioacuten eslenta

A continuacioacuten se presenta un ejemplo de applet escrito en Java

import javaappletimport javaawt

public class AppletHola extends Applet

Este meacutetodo visualiza el mensajepublic void paint(Graphis g)

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 11: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1122

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 12: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1222

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 13: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1322

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 14: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1422

Autor Luis Heladio Garzoacuten Rodriacuteguez Sistema de ficheros Es la abstraccioacuten (en ficheros y directorios) que utilizan los

sistemas operativos para organizar el espacio de almacenamiento de los discosy otros soportes de informacioacuten y permitir un acceso adecuado por parte de las

aplicaciones Control de usuarios En sistemas que permiten un uso diferenciado parausuarios diferentes (multiusuario) es necesario establecer meacutetodos paraidentificar a cada usuario y para permitir a cada uno realizar las operaciones yacceder a los recursos que tengan autorizados

Uacuteltimamente tambieacuten se incluyen en el sistema operativo funciones de maacutes alto nivelque se han convertido en estaacutendares

Controlador de las comunicaciones por red correo electroacutenico y acceso aInternet

Herramientas de administracioacuten Los administradores del sistema son laspersonas encargadas de mantener y gestionar los recursos del sistemaoperativo Las herramientas de administracioacuten facilitan su trabajo en temascomo la gestioacuten de los usuarios y recursos y la monitorizacioacuten del rendimientodel sistema

Compiladores y libreriacuteas dinaacutemicas Muchos sistemas ofrecen herramientas ymeacutetodos estaacutendar para ayudar en la programacioacuten de aplicaciones

Control de la interfaz graacutefica La gestioacuten de todos los objetos (ventanas menuacutesiconos etc) que aparecen en una pantalla es bastante compleja asiacute como suutilizacioacuten por parte de las aplicaciones Los sistemas que ofrecen una interfazde uso para las aplicaciones tambieacuten son una gran ayuda para losprogramadores

Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho

el desarrollo de aplicaciones ya que permite a los analistas y programadoresconcentrarse en lo que es esencial en la aplicacioacuten

A lo largo del tiempo se ha desarrollado una multitud de sistemasoperativos con orientaciones muy diferentes Como tantos otros temas eninformaacutetica los sistemas operativos a menudo se presentan en familiasque los fabricantes van haciendo que evolucionen a lo largo del tiempo

Una de las liacuteneas de sistemas operativos maacutes conocidas es el sistema porexcelencia de los PC Se trata del sistema Windows desarrollado porMicrosoft Esta liacutenea empezoacute con el MS-DOS Era un sistema bastantelimitado y con una interfaz uacutenicamente de texto Cuando Microsoft vio que

era necesario ampliarlo y antildeadirle una interfaz graacutefica desarrolloacuteWindows que hasta el momento presenta varias versiones 311 9598 yMilenium en la versioacuten domeacutestica y NT y 2000 en la profesionalEl sistema operativo de los Macintosh presenta una evolucioacuten maacutes linealque Windows puesto que desde el primer momento ya teniacutea un entornograacutefico Actualmente coexisten las versiones 8 9 y 10En el campo de las workstations el sistema maacutes utilizado es Unix que presenta diferentes versiones seguacuten los fabricantes Es un sistemaoperativo con gran nuacutemero de funcionalidades y con una gran flexibilidadque le ha permitido adaptarse perfectamente a los ordenadores maacutesavanzados Siempre han existido versiones de Unix para la arquitectura

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 15: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1522

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 16: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1622

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 17: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1722

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 18: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1822

Autor Luis Heladio Garzoacuten RodriacuteguezPocas excepciones y casos especiales que recordarAspecto negativo Combinaciones incoherentes o ineficientesNaturalidad para la aplicacioacuten

Un lenguaje debe suministrar estructuras de datos operaciones y estructuras decontrol apropiadas al tipo de problemas al que se aplicaraacute asiacute como una sintaxis en laque se puedan expresar de forma natural las soluciones a tales problemas

Soporte para la abstraccioacutenFacilidad para la verificacioacuten de programasEntorno de programacioacutenPortabilidad de los programasHomogeneidad en el tratamiento externo e interno de los conceptosCoste de uso

Coste de ejecucioacuten de programasCoste de traduccioacuten

Coste de creacioacuten prueba y uso de programasCoste de mantenimiento de programasBuena definicioacutenSintaxis y semaacutentica sean precisas in ambiguas legibles comprensibles

y a ser posible formales

MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DEPROGRAMACIOacuteN

Se entiende por paradigma de programacioacuten un modelo que sirve como una guiacutea alprogramador para disentildear aplicaciones Se pueden referir tanto a meacutetodos de

programacioacuten como a maneras de estructurar la informacioacuten y los diferenteselementos que componen una aplicacioacuten

Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas locual ha permitido descartar a los que no son adecuados y mejorar los que ofreciacuteanbuenas soluciones Para un programador seguir estos modelos representa unagarantiacutea de la calidad del producto final y una mayor eficiencia ya que trabajaraacute conun meacutetodo sobradamente comprobado

Modelo Von Neumann Programacioacuten estructurada Programacioacuten orientada a objetos Modelo cliente-servidor

Modelo Von Neumann

El modelo Von Neumann propuesto por el matemaacutetico del mismo nombre define lasbases de la computacioacuten y de los ordenadores actuales Propone que los programas ydatos se representen en coacutedigo binario que haya un centro de control que ejecute elprograma secuencialmente o con saltos seguacuten indiquen las instrucciones y que acceday trabaje con los datos almacenados en dispositivo de memoria

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 19: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 1922

Autor Luis Heladio Garzoacuten RodriacuteguezMuchos lenguajes siguen este esquema con maacutes o menos nivel de abstraccioacutennotablemente los lenguajes maacutes conocidos Algunos de los que se apartan del modeloVon Neumann son los lenguajes funcionales (Lisp) y loacutegicos (Prolog)

Programacioacuten estructurada o modular

Esta teacutecnica propone una estructura loacutegica para escribir un programa Los datos seagrupan en estructuras de manera que las relaciones entre ellos queden reforzadas porla propia forma en que se agrupan Los procedimientos grandes se rompen en rutinaso funciones maacutes pequentildeas y modulares

Se desaconsejan las instrucciones de saltos incondicionales los famosos GOTO porqueoscurecen el flujo de control del programa al no quedar constancia de coacutemo se hallegado hasta aquel punto En cambio cuando desde un programa se llama a unafuncioacuten el sistema de control registra el punto del programa desde donde se hace elllamamiento para poder volver al mismo cuando la funcioacuten acaba Finalmente las

rutinas que tratan con datos relacionados pueden agruparse en moacutedulos Asiacute elobjetivo final es descomponer un programa en moacutedulos lo cual facilita su verificacioacuten ydepuracioacuten ya que cada uno puede probarse por separado

Esta organizacioacuten es imprescindible para poder desarrollar aplicaciones de ciertacomplejidad y tamantildeo Los lenguajes maacutes antiguos (por ejemplo FORTRAN COBOL oBASIC) requieren una disciplina por parte del programador para utilizar un esquemamodular En cambio todos los lenguajes posteriores imponen por su estructurasintaacutectica la organizacioacuten del coacutedigo en funciones y por lo tanto modular

Programacioacuten orientada a objetos

La evolucioacuten del modelo de programacioacuten modular es la programacioacuten orientada aobjetos Sin duda es una de las teacutecnicas maacutes complejas De hecho maacutes que unateacutecnica representa una manera nueva de encarar la programacioacuten

Antes de la orientacioacuten a objetos un programa era como ya se ha explicado unasecuencia loacutegica de instrucciones que seguiacutea el ordenador Por lo tanto el eacutenfasis seponiacutea en las instrucciones en la manera en que teniacutean que tratarse los datos Encambio la programacioacuten orientada a objetos se concentra en los datosestructuraacutendolos en objetos claramente definidos y en coacutemo tienen que manipularseLos programas se construyen en teacuterminos de los objetos que define el problema yutilizan funciones o meacutetodos que operan con estos objetos

En resumidas cuentas un objeto representa un concepto del problema con un conjunto

de datos y de meacutetodos Los datos del objeto soacutelo se pueden manipular con los meacutetodosdefinidos De esta manera un objeto pasa a ser una estructura compacta con unospuntos de acceso muy definidos y permite por lo tanto ser utilizado en diferentesaplicaciones con gran facilidad Esta capacidad de reutilizar un coacutedigo representa ungran ahorro de tiempo de programacioacuten

Otro beneficio de este esquema es que se puede definir un objeto en teacuterminos deotros de manera que el nuevo objeto puede aprovechar los datos y meacutetodos de los yaexistentes con lo cual se consigue de nuevo reutilizar coacutedigo Este mecanismo sellama herencia

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 20: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2022

Autor Luis Heladio Garzoacuten RodriacuteguezLa gran mayoriacutea de los lenguajes modernos siguen el modelo de orientacioacuten a objetosTal es el caso de los ya mencionados C++ y Java y tambieacuten otros lenguajes comoJavascript o Perl

Modelo cliente-servidor

La idea principal del modelo cliente-servidor es que existe un repositorio central comopor ejemplo una base de datos cuya informacioacuten se distribuye bajo pedido al conjuntode nodos que acceden al mismo La clave del funcionamiento de este modelo es que elrepositorio de informacioacuten estaacute centralizado de manera que los cambios que se hacense propagan automaacuteticamente a los clientes que piden la informacioacuten en cuestioacuten

El ordenador donde reside la informacioacuten y el software que la distribuye recibe elnombre de servidor mientras que la maacutequina que se comunica con el servidor obtienela informacioacuten y la visualiza para el usuario final recibe el nombre de cliente

La construccioacuten de aplicaciones basadas en el modelo cliente-servidor es relativamentesencilla A pesar de esto hay que tener en cuenta algunos problemas que aparecencuando un solo servidor tiene que atender las peticiones de muchos clientes de manerasimultaacutenea Se refieren tanto a problemas de acceso concurrente a los datos como aproblemas de velocidadCuando un servidor tiene que atender peticiones de consulta de informacioacuten dediferentes clientes al mismo tiempo tiene que asegurar que se atiende a todos porigual y que ninguno debe esperar mucho maacutes tiempo que los demaacutes

Los clientes por otro lado tambieacuten pueden hacer peticiones para modificar los datosdel servidor o para antildeadir otros nuevos En este caso el servidor tiene que asegurarque los datos de un cliente no se sobre-escriban a los de otro o que mientras se hace

una modificacioacuten no se pierda ninguacuten dato es decir el servidor tiene que asegurarsede la coherencia de sus propios datos Por esto los clientes modifican los datos enoperaciones denominadas transacciones en las que se asegura que todas lasmodificaciones se hacen completamente o que si hay una cancelacioacuten no se realizaninguna y los datos quedan intactos

El problema de la velocidad aparece cuando centenares de clientes quieren acceder almismo servidor y eacuteste literalmente no da abasto Para solucionar este problema haydiversas opciones

La maacutes inmediata es utilizar maacutequinas de maacutes potencia pero a la larga estosiempre acaba resultando insuficiente

Una mejor solucioacuten es optimizar el software del servidor para reducir al maacuteximo

los posibles retrasos o para pasar al lado del cliente procesamientos de losdatos que no sean estrictamente para su acceso o modificacioacuten eacuteste es unbuen meacutetodo porque cada vez maacutes los ordenadores clientes suelen disponer demaacutes capacidad de caacutelculo

Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener grancomplejidad por lo cual se estructuran en varias capas de manera que cada unaresuelve una pequentildea parte del problema y el conjunto ofrece la solucioacuten globalActualmente este modelo se emplea en un gran nuacutemero de aplicaciones desdesistemas bancarios de creacutedito y financieros hasta la distribucioacuten de cualquier tipo dedatos La red Internet seriacutea el ejemplo maacutes claro

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 21: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2122

Autor Luis Heladio Garzoacuten Rodriacuteguez

NUEVOS PARADIGMAS DE PROGRAMACIOacuteN

Un paradigma de programacioacuten provee (y determina) la visioacuten y meacutetodos de unprogramador en la construccioacuten de un programa o subprograma

Diferentes paradigmas resultan en diferentes estilos de programacioacuten y en diferentesformas de pensar la solucioacuten de problemas (una aplicacioacuten se construye con la solucioacuten

de muacuteltiples ldquoproblemasrdquo) Tipos de paradigmas de programacioacuten maacutes comunes

El paradigma imperativo o por procedimientos es considerado el maacutes comuacuten yestaacute representado por ejemplo por el C o por BASIC

El paradigma funcional estaacute representado por la familia de lenguajes (en particularScheme) ML o Haskell

El paradigma loacutegico un ejemplo es PROLOG

El paradigma orientado a objetos un lenguaje completamente orientado a objetoses Smalltalk

Paradigma imperativo o por procedimientos

Describe la programacioacuten como una secuencia instrucciones o comandos que cambianel estado de un programa El coacutedigo maacutequina en general estaacute basado en el paradigmaimperativo

La programacioacuten en el paradigma imperativo consiste en determinar queacute datos sonrequeridos para el caacutelculo asociar a esos datos unas direcciones de memoria yefectuar paso a paso una secuencia de transformaciones en los datos almacenados deforma que el estado final represente el resultado correcto

Ejemplos de lenguajes imperativos

BASIC

C

C

C++

Fortran

Pascal

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos

Page 22: 2 Unidad i Epoo Intro Paradig

7262019 2 Unidad i Epoo Intro Paradig

httpslidepdfcomreaderfull2-unidad-i-epoo-intro-paradig 2222

Autor Luis Heladio Garzoacuten Rodriacuteguez

Java

Perl

PHP

Lua

Paradigma Funcional

La Programacioacuten funcional es un paradigma de programacioacuten declarativa basado en lautilizacioacuten de funciones matemaacuteticas

El objetivo del paradigma funcional es conseguir lenguajes expresivos ymatemaacuteticamente elegantes en los que no sea necesario bajar al nivel de la maacutequinapara describir el proceso llevado a cabo por el programa y evitando el concepto de

estado del coacutemputo La secuencia de computaciones llevadas a cabo por el programase regiriacutea uacutenica y exclusivamente por la reescritura de definiciones maacutes amplias a otrascada vez maacutes concretas y definidas usando lo que se denominan definiciones dirigidas

Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante enel cual se pueda manejar maacutes faacutecilmente y asiacute los programas sean menos extensos ycomplejos

Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer lasnecesidades del usuario con respecto a operaciones matemaacuteticas y convertirse en unlenguaje maacutes expresivo

Paradigma Loacutegico

La programacioacuten loacutegica consiste en la aplicacioacuten del corpus de conocimiento sobreloacutegica para el disentildeo de lenguajes de programacioacuten no debe confundirse con ladisciplina de la loacutegica computacional

La programacioacuten loacutegica comprende dos paradigmas de programacioacuten la programacioacutendeclarativa y la programacioacuten funcional La programacioacuten declarativa gira en torno alconcepto de predicado o relacioacuten entre elementos La programacioacuten funcional se basaen el concepto de funcioacuten (que no es maacutes que una evolucioacuten de los predicados) decorte maacutes matemaacutetico

Paradigma Orientado a Objetos

La Programacioacuten Orientada a Objetos (POO u OOP seguacuten sus siglas en ingleacutes) es unparadigma de programacioacuten que usa objetos y sus interacciones para disentildearaplicaciones y programas de computadora Estaacute basado en varias teacutecnicas incluyendoherencia modularidad polimorfismo y encapsulamiento Su uso se popularizoacute aprincipios de la deacutecada de 1990 Actualmente son muchos los lenguajes deprogramacioacuten que soportan la orientacioacuten a objetos

La programacioacuten orientada a objetos es una nueva forma de programar que trata deencontrar una solucioacuten a estos problemas Introduce nuevos conceptos que superan yampliacutean conceptos antiguos ya conocidos