260 likes | 394 Views
Computación II. UNIDAD I Revisión de conceptos fundamentales de programación. Presentación de la unidad. Objetivos: Comprender los conceptos básicos de programación. Saber reconocer las diferentes formas de programación. Comprender las propiedades fundamentales de la Orientación a Objetos.
E N D
Computación II UNIDAD I Revisión de conceptos fundamentales de programación
Presentación de la unidad • Objetivos: • Comprender los conceptos básicos de programación. • Saber reconocer las diferentes formas de programación. • Comprender las propiedades fundamentales de la Orientación a Objetos. • Valorizar las ventajas de la O.O. • Familiarizarse con C++. Prof. Ing. M.C.Sambuelli
Presentación de la unidad • Contenidos: • Conceptos fundamentales de algoritmos. • Herramientas para el desarrollo y mantenimiento de programas. • Diferentes formas de programación. • Propiedades fundamentales de la programación OO • Entornos de programación OO • El lenguaje C++ Prof. Ing. M.C.Sambuelli
Concepto Características Algoritmos Partes Herramientas No Estructurado Procedural Formas de Programación Estructurado Modular Características Paradigma OO Entornos de Programación C++ Prof. Ing. M.C.Sambuelli
Conceptos Fundamentales de Algoritmos • Algoritmo • Secuencia finita de instrucciones • Reglas que describen las operaciones a realizar para una tarea determinada Es fundamental que la secuencia este ordenada. La especificación del orden en que los enunciados son ejecutados se conoce como control del programa. Prof. Ing. M.C.Sambuelli
Conceptos Fundamentales de Algoritmos • Características Fundamentales: • Preciso: Indicar el orden de realización de cada paso. • Bien definido: bajo las mismas circunstancias, la ejecución del algoritmo debe dar el mismo resultado. • Finito: debe terminar en algún momento. Prof. Ing. M.C.Sambuelli
Conceptos Fundamentales de Algoritmos • Partes: • Entrada • Proceso • Salida Prof. Ing. M.C.Sambuelli
Ejemplo: Diseñar un algoritmo para saber si un numero “n” es primo o no. Entrada: entero positivo n Salida: es primo – no es primo Proceso: • Inicio • Poner x = 2 (variable que representa a los divisores del numero que se busca) • Dividir n por x • Si n/x es entero => n es primo; ir al punto 7 Si n no es entero => continuar • Sumar 1 a x • Si x = n => n es primo Si n!=x =>ir al punto 3 7. Fin Prof. Ing. M.C.Sambuelli
Herramientas para el desarrollo y mantenimiento de programas • Seudocódigo: • Lenguaje artificial e informal que auxilia en el desarrollo de algoritmos. • Similar al ingles/español coloquial; cómodo y amigable. • Consiste solo en caracteres e incluye sólo enunciados de acción. Prof. Ing. M.C.Sambuelli
Herramientas para el desarrollo y mantenimiento de programas • Diagrama de flujo: • Representación grafica de un algoritmo o porción de un algoritmo. • Se traza utilizando ciertos símbolos de uso especial conectados entre sí por flechas, conocidas como líneas de flujo. Prof. Ing. M.C.Sambuelli
x = 2 n/x SI Es entero? Print: Primo NO x+1 NO SI x=n Prof. Ing. M.C.Sambuelli
Diferentes Formas de Programación • Programación No Estructurada: • Programas extensos dentro de una función principal que utilizan variables de tipo global. • Engorrosos de mantener y actualizar. • Artesanales. Prof. Ing. M.C.Sambuelli
Diferentes Formas de Programación • Programación Estructurada: • Programas escritos deacuerdo a unas reglas y conjunto de técnicas. • Incorpora los conceptos de: • Recursos abstractos: descomponer acciones complejas en acciones mas simples. • Diseño descendente: jerarquía de problemas. • Estructuras básicas de control: especifica el orden en que se van ejecutando las acciones. DATOS + ALGOTIMOS = PROGRAMAS Prof. Ing. M.C.Sambuelli
Diferentes Formas de Programación • Programación Estructurada: • Programación Procedural: • El programa se descompone en procedimientos o funciones . • Trozos de código que realizan una tarea determinada. • Cada procedimiento tiene su propio conjunto de datos. • Programación Modular • Agrupación de procedimientos en módulos según su función. • Cada módulo tiene su propio conjunto de datos. Prof. Ing. M.C.Sambuelli
Diferentes Formas de Programación • Programación Estructurada: • Desventajas: Debilidad en la resolución de problemas complejos • Funciones y/o procedimientos tienen acceso ilimitado a variables globales. • Proporciona un modelo pobre del mundo real. Prof. Ing. M.C.Sambuelli
Diferentes Formas de Programación • Paradigma de Orientación a Objetos • Conjunto finito de objetos que contienen datos y operaciones sobre esos datos. Se comunican entre si mediante mensajes. • Datos protegidos de modificaciones accidentales. • Los objetos pueden saber como comunicarse unos con otros mediante interfaces bien definidas, pero no se les permite saber los detalles de funcionamiento de otros objetos. • Los objetos poseen estados. El estado de un objeto se encuentra determinado por el valor concreto de cada una de sus propiedades. Prof. Ing. M.C.Sambuelli
Diferentes Formas de Programación Objetos Datos/atributos/propiedades Métodos/funciones miembro Interfaz Propiedades/atributos + métodos = objetos Prof. Ing. M.C.Sambuelli
Propiedades fundamentales de la Orientación a Objetos • Abstracción • Técnica de programación que permite definir nuevos tipos de datos adecuados a la aplicación. • En el proceso de abstracción es cuando se deciden las características y comportamientos del modelo. • Los tipos de datos son abstracciones; en esencia son formas de representar el mundo real. • Los nuevos tipos de datos definidos por el usuario se llaman Tipo de Datos Abstractos (TAD) • Un TAD es un modelo con un numero de operaciones que afectan ese modelo. TAD = representación (datos) + operaciones (funciones y procedimientos) Prof. Ing. M.C.Sambuelli
Propiedades fundamentales de la Orientación a Objetos • Encapsulado: • Proceso de agrupar datos y operaciones relacionadas bajo la misma unidad de programación. • El objeto encapsula propiedades y métodos que no forman parte de su interfaz y las reserva para uso interno. • Ocultación de datos: • Permite separar el aspecto de un componente, definido por la interfaz con el exterior, de los detalles de su implementación. • La definición de las operaciones sobre los datos es invisible a los usuarios. Prof. Ing. M.C.Sambuelli
Propiedades fundamentales de la Orientación a Objetos • Jerarquía: • Propiedad que permite la ordenación de las abstracciones. Generalización /especialización <<es-un>> (herencia) Agregación <<tiene-un>><<parte de>> Prof. Ing. M.C.Sambuelli
Propiedades fundamentales de la Orientación a Objetos • Generalización: • Es una abstracción en la que un conjunto de objetos de propiedades similares se representa mediante un objeto genérico. • Especialización: • Proceso inverso a la generalización. • Se definen nuevas abstracciones a partir de otras ya existentes. • Agregación: • Concepto que permite el agrupamiento físico de estructuras relacionadas lógicamente. • Permite la descripción de modelos del mundo real que se componen de otros modelos. Prof. Ing. M.C.Sambuelli
Propiedades fundamentales de la Orientación a Objetos generalización agregación Persona casa Empleado tiene habitación tejas Informático vereda puerta pared Es un Programador especialización Prof. Ing. M.C.Sambuelli
Propiedades fundamentales de la Orientación a Objetos • Herencia: • Relación entre clases donde una clase comparte la estructura o comportamiento definidas en una (herencia simple) o mas clases. (herencia múltiple) • Propiedad por la cual instancias de una subclase pueden acceder tanto a datos como a comportamientos asociados con la clase. • Siempre es transitiva. Prof. Ing. M.C.Sambuelli
Propiedades fundamentales de la Orientación a Objetos • Polimorfismo: • Propiedad que indica la posibilidad de que una entidad tome muchas formas. • Implica la posibilidad de tomar un objeto de un tipo e indicarle que ejecute una acción, esta acción se ejecutara de diferente forma según sea el objeto al cual se aplica. Prof. Ing. M.C.Sambuelli
Entornos de Programación OO Agol Simula smalltalk Basic CLU Pascal C C++ Visual Basic Ada Object Pascal Actor Objkective C Borland Pascal Ada 95 Delphi java Prof. Ing. M.C.Sambuelli
El Lenguaje C++ • C++ es una extensión de C con características mas potentes. Originalmente llamado “C con clases” • En C++ un objeto es un elemento individual con propia identidad. Una clase es una descripción general de un conjunto de objetos similares; todos los objetos de una clase comparten los mismos atributos y las mismas operaciones sobre esos atributos. Prof. Ing. M.C.Sambuelli