Conceptos fundamentales

Slides:



Advertisements
Presentaciones similares
INTRODUCCIÓN DEL LENGUAJE DE PROGRAMACIÓN SCRATCH Elaborado por: Elvia R. De Gracia C.
Advertisements

Lenguajes de programación Web Juan Felipe Muñoz Fernández.
COMPUTACION PARALELA GLORIA PATRICIA FLOREZ ANGIE PAOLA ANCHICO.
PROGRAMACIÓN I CENTRO DE ESTUDIOS INTEGRADOS EL MARISCAL - CEIM Ing. Luisa Fernanda Arenas Castañeda Feb 6 de 2016.
Unidad 1: Conceptos fundamentales Instituto Tecnológico de Toluca Ing. Sistemas Computacionales Asignatura: Programación Lógica y Funcional Presentan Nieto.
Conferencia 3: Paradigmas de la Orientación a Objetos Tema 1:Principios de la Tecnología de Objetos.
Lenguaje de Programacio Python Presentado por Jubel Crispán Materia Informatica Educativa.
Periodo II Técnicas de programación. Sin Parámetros Con parámetros Funciones.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
1 LENGUAJES DE PROGRAMACIÓN. Son aplicaciones específicas diseñadas para crear otras aplicaciones o programas. Son programas para crear programas. 2.
Introducción a C Parte 2 Aurelio Sanabria Estructuras de datos
Introducción a la Programación Multimedial
Universidad autónoma del estado de México
LENGUAJES DE PROGRAMACIÓN
lenguajes DE programación
PROGRAMACIÓN ORIENTADA A OBJETOS
Clase1: lectura/escritura/asignación
ROBERTO PINEDA FLORES. ALEXIS JULIAN VELAZQUEZ NAVA.
LOS DIFERENTES LENGUAJES DE PROGRAMACION PARA LA WEB
Java Script (JS) Prof. Martín Contreras.
TIPOS ABSTRACTOS DE DATOS.
Programación Avanzada
Algunas Características de C++ no presentes en C
Introducción a C Parte 1 Aurelio Sanabria Estructuras de datos
LENGUAJE DE PROGRAMACIÓN Y SOFTWARE PROPIETARIO
Resolución de problemas y algoritmos
Algunas Características de C++ no presentes en C
PROGRAMACION ESTRUCTURADA.
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
Oscar Martin Tirado Ochoa
Algunas Características de C++ no presentes en C
UNIVERSIDAD PEDAGÓGICA NACIONAL FRANCISCO MORAZÁN
LENGUAJE DE PROGRAMACIÓN
Lenguajes de programación Lara Pedraza Cindy Denise Alvarez Guzman Marco Antonio Reyes Valdespino Israel ALA Gomez Cañedo natanael.
Tema 6. Conceptos básicos de programación Clase 1
Infografía. Estructura de Datos.
Unidad 1. Conceptos básicos
Procedimientos y Funciones
Las herramientas Case Julian madrigal.
ALGORITMOS Y PSEUDOCÓDIGO
Lenguaje y representación técnica
Cobol C Pascal Fortran 6. PARAMETRIZACIÓN SmallTalk Java C++
Lenguajes de Programación
PROGRAMACIÓN 1 INTRODUCCIÓN
INTRODUCCIÓN ING. IVONNE MALDONADO. PROGRAMACIÓN Programar no es mas que idear y ordenar las acciones. Lograr que un programa cumpla con una cierta tarea.
UNIVERSIDAD DEL VALLE Docente: MsC. Cinthya Irene Rosales Martinez Facultad de Ingeniería Lenguajes de Programación.
Lenguajes de Programación Tema 1. Introducción y conceptos generales Pedro García López
UNIVERSIDAD LATINA (UNILA) INTRODUCCION A LA PROGRAMACIÓN
Introducción a la programación
CURSO PROGRAMACIÓN BÁSICA SEMANA 2
Fundamentos de la Programación I
Tema 5 Representación y Técnicas de Diseño de Algoritmos
Lenguajes de Programación Tema 1. Introducción y conceptos generales
Fundamentos de la Programación I
Lenguaje de Programación Estructurada
Instituto Tecnológico Superior de la Región Sierra
Estructuras de Datos Dinámicas
FUNCIONES Y PROCEDIMIENTOS
Informática Ingeniería en Electrónica y Automática Industrial
Curso de Programación Estructurada
¿Qué es la pragmática? Omar Sabaj Meruane
Algunas Características de C++ no presentes en C
Programación al lado del servidor
Programación Modular Programación de Computadoras - Hugo Vega Grupo2: Reina Rodríguez Miriam Salluca.
Ingeniería de Sistemas. Programación II Python ¿Qué es Python? Python es un lenguaje de programación creado por Guido Van Rossum a principios de los.
Programación Estructurada
8-marzo-2006 (J.Alvarez).
Funciones Subprogramas definidos por el usuario Subprogrmas.
Clase1: lectura/escritura/asignación
EVOLUCIÓN DE LOS PARADIGMAS DE PROGRAMACIÓN Integrantes: Christian Abad, Kevin Colcha.
Transcripción de la presentación:

Conceptos fundamentales Historia y Conceptos fundamentales Lenguajes de programación Aurelio Sanabria Alajuela

Lenguajes de programación Producto de diseño Es universal Implementable Posee Sintaxis, semántica y pragmática Abstracción

Historia

“Birth of the Punch Card Technology” https://historyofpunchcards.wordpress.com/2014/03/10/birth-of-the-punch-card-technology/

Historia 50s ~ 60s Ensamblador: 1:1 con instrucciones del procesador FORTRAN: introduce expresiones simbólicas, arreglos y procedimientos con parámetros. COBOL: orientado a negocios, clientes utilizando las computadoras para procesar datos de negocios no se sentían a gusto con la notación matemática, introduce el concepto de tipo de datos. ALGOL60: Introduce el concepto de bloque y scope, soporte recursividad

Historia 60s ~ 70s PASCAL: portabilidad, conjunto enriquecido de tipos y estructuras de control, apogeo de programación estructurada. C: Unix, programación de sistemas. Prolog, LISP, Scheme, ML: descubrimiento de nuevos paradigmas más allá del imperativo.

Historia 70s ~ 80s C++, Objective-C, Ada: consolidación de principios fundamentales, orientación a objetos

Historia 90s ~ 00s Java: consolidación de OO en ingeniería de software Perl, Ruby, Python, PHP, Javascript: programación web / scripting.

Historia 00s ~ Paradigma funcional recobra fuerza Programación concurrente y distribuida Móviles Programación orientada a aspectos C#, Groovy, Scala, Clojure

Conceptos fundamentales

Lenguajes Estáticamente tipados Cada variable y parámetro tiene un único tipo fijo que es escogido por el programador El tipo de las expresiones puede ser calculado durante la compilación Permite detectar muchos errores durante la compilación

Lenguajes Dinámicamente tipados Solo los valores tienen tipos fijos Las variables y parámetros no tienen tipos fijos, toman el tipo de los valores que se les va asignando La revisión de tipos de las operaciones debe hacerse justo antes de ejecutarlas Usado en lenguajes interpretados La revisión reduce la velocidad de ejecución Es más flexible

Variable Modelo de almacenamiento: Formado por celdas o localizaciones. Cada celda puede estar en un estado allocated/unallocated. Cada celda allocated tiene un contenido que puede ser un valor o indefinido.

Variables Dinámicas Son creadas y borradas en cualquier momento. creadas por una instrucción particular anónimas accedidas por medio de un puntero

Variables Dinámicas Puntero: valor que permite acceder una variable; pueden asignarse, incorporarse en estructuras de datos, etc.

Problemas asociados con variables dinámicas Variables inaccesibles: surgen cuando se pierden todas las referencias a una variable dinámica; la variable ocupa espacio pero no se puede accesar; new(p); la primera variable queda inaccesible

Problemas asociados con variables dinámicas Referencias colgadas: ocurren cuando se acceden variables dinámicas cuya vida ya expiró; suelen darse al tener referencias duplicadas y se usa una de ellas para destruir la variable pero a se usa la referencia copiada para continuar accediéndola.

Alcance Porción del texto del programa sobre la cual una declaración tiene efecto. Estructura de bloques: Un bloque es una frase del programa que delimita el alcance de cualquier declaración que contenga Monolítica (antiguo COBOL) Plana (Fortran) Anidada (Algol-like)

Paso de Parámetros Permite la comunicación de datos entre unidades de un programa La convención escogida afecta la semántica del lenguaje

Paso de Parámetros

Paso por referencia La unidad que llama pasa a la unidad llamada la dirección del parámetro real Una referencia al parámetro formal correspondiente es tratada como referencia a la localización cuya dirección fue pasada Si el parámetro real es una expresión que no es variable, se calcula su valor y se pasa una referencia a la posición temporal que almacena el resultado.

Paso por copia Los parámetros formales no comparten referencias con los parámetros reales Los parámetros formales son variables locales cuyos valores son inicializados con los valores de los parámetros reales. Las técnicas se pueden clasificar en tres grupos de acuerdo con la forma en que estas variables locales son inicializadas: call-by-value, call-by-result y call-by- value-result.

Paso por copia call-by-value Al ser invocado el subprograma, se evalúan los parámetros reales y se inicializan las variables locales No permite el flujo de datos de vuelta al subprograma que llama

Paso por copia call-by-result Al finalizar el subprograma llamado, los valores de las variables locales son copiados a los parámetros reales No usa los valores iniciales de los parámetros reales

Paso por copia call-by-value-result Se comporta como call-by-value al ser invocado el subprograma y como call-by-result. cuando finaliza dicho subprograma Esto es, se inicializan las variables locales al invocar el subprograma, y su valor se copia a los parámetros reales al terminar

Principios de diseño

Principios de diseño Facilidad de escritura

Principios de diseño Facilidad de escritura

Principios de diseño Legibilidad

Principios de diseño Legibilidad

Principios de diseño Confiabilidad

Principios de diseño Confiabilidad

Principios de diseño Mantenibilidad

Principios de diseño Mantenibilidad

Principios de diseño “How did perl gain a reputation for being a write-only language?” https://www.reddit.com/r/perl/comments/35ax2q/how_ did_perl_gain_a_reputation_for_being_a/

Principios de diseño “How to write unmaintanable C code” https://www.thc.org/root/phun/unmaintain.html

Las presentaciones para el curso “IC-4700: Lenguajes de programación” por Aurelio Sanabria se distribuyen bajo una Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica. http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas* http://creativecommons.org/licenses/by-sa/3.0/cr/