Lenguajes de Programación I

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Lenguajes de Programación I"

Transcripción

1 Lenguajes de Programación I Control de Flujo - Expresiones Ernesto Hernández-Novich <emhn@usb.ve> Copyright c

2 Definición El Control de Flujo es fundamental para la mayoría de los modelos de cómputo, pues establece el orden en que debe ejecutarse el programa.

3 Organización de los Mecanismos Secuenciación (Sequencing): orden específico, usualmente el de aparición en el programa. Selección (Selection): se escoje entre dos o más instrucciones según alguna condición a tiempo de ejecución. Iteración (Iteration): un fragmento de código se ejecuta de manera repetida bien sea un número de veces o hasta cumplirse determinada condición a tiempo de ejecución. Abstracción procedimental (Procedural Abstraction): una colección de construcciones de control se encapsula como una unidad, sujeta a parametrización.

4 Organización de los Mecanismos Recursión (Recursion): una expresión se define en términos de si misma directa o indirectamente. Concurrencia (Concurrency): dos o más fragmentos de programa se ejecutan/evalúan al mismo tiempo. No determinismo (Nondeterminacy): el orden o escogencia de instrucciones y expresiones no es especificado deliberadamente. Dejaremos los Procedimientos y la Concurrencia para más adelante.

5 Expresiones Una expresión puede ser: Un objeto simple nombre de variable o constante literal. La aplicación de una función u operador a una colección de argumentos u operandos, cada uno de los cuales es a su vez una expresión. El término operador se usa para referirse a las funciones incluídas en el lenguaje que tienen una sintaxis especial simplificada a propósito + en lugar de la función suma.

6 Notación Prefija (Scheme, LISP) (+ (* 4 3) (* 0.5 (sin pi))) Infija (casi cualquier lenguaje) 4 * * sin(pi) Postfija (Forth, Postscript) 4 3 * pi sin 0.5 * + Mezclada (mixfix, Smalltalk) msg sendto: "emhn@usb.ve" text: "Hola Mundo" En ocasiones los operadores son adornos (sintactic sugar) sobre funciones concretas en C++ a + b en realidad es a.operator+(b).

7 Precedencia y Asociatividad La notación infija es ambigua para las expresiones aritméticas. Utilizar paréntesis para indicar explícitamente el orden de evaluación. Emplear reglas de precedencia y asociatividad para ahorrarse los paréntesis (siempre que se haya leído el manual). Precedencia en ausencia de paréntesis, cuál operador opera antes que otro? Asociatividad en ausencia de paréntesis, cómo aplicar los operadores de una secuencia en la cual todos tienen la misma precedencia?

8 Operadores Inusuales Incremento y decremento pre y postfijos. En vez de a = a + 1, escribir a++. El efecto de borde siempre se efectúa el valor cambia según la posición del operador. Producto de enteros por colecciones (cadenas, listas,... ) $a = $n x "a"; # $a tiene $n = (42) x 1; # Una lista con 42 = (42) # Ahora son Generadores de listas por = ; Operador ternario if-then-else a = (b > c)? d : e

9 Más operadores inusuales Algunos lenguajes (Haskell, Prolog) permiten crear nuevos operadores. Asociados a una función particular. Incorporados a la jerarquía de precedencia y asociatividad para cooperar con el resto del lenguaje. Suma y producto de tuplas numéricas en Haskell infixl 5 :+: infixl 7 :*: (:+:), (:*:) :: (Num a,num b) => (a,b) -> (a,b) -> (a,b) (a1,b1) :+: (a2,b2) = (a1+a2,b1+b2) (a1,b1) :*: (a2,b2) = (a1*a2,b1*b2)

10 Un lenguaje lleno de operadores inusuales IBM engendró APL lenguaje puramente funcional. Lleno de operadores funcionales aplicativos... Generar la lista de primos de 1 hasta N ( N N. N)/N 1 ιn

11 Un lenguaje lleno de operadores inusuales IBM engendró APL lenguaje puramente funcional. Lleno de operadores funcionales aplicativos... Generar la lista de primos de 1 hasta N ( N N. N)/N 1 ιn... pero requiriendo un teclado especial

12 Asignación Si una instrucción de cómputo influye en los cómputos que le siguen más allá de retornar un valor simple, se dice que tiene un efecto de borde o colateral (side effects). En los lenguajes puramente funcionales (Haskell) no existen los efectos de borde y se dice que tienen transparencia referencial. Asignar un valor a un símbolo sólo lo hace disponible durante la evaluación actual. Solamente hay valores que producen valores por aplicación funcional. En los lenguajes imperativos, los efectos de borde son la norma modificar el estado es lo que produce resultados. Asignar un valor a un símbolo lo hace disponible durante la evaluación actual y posiblemente más allá de ella. Existen valores y referencias a valores.

13 Valores vs. Referencias La dualidad existencial de las variables En los lenguajes imperativos los nombres de variable denotan contenedores para valores. Los roles del lado derecho e izquierdo son diferentes en una asignación cualquiera: El lado derecho debe producir un valor. El lado izquierdo debe referir una ubicación. Las expresiones que denotan valores se denominan r-values y las expresiones que denotan ubicaciones se denominan l-values.

14 l-values vs. r-values Algunas expresiones no pueden ser l-values = a, no tiene sentido. a = 2 + 3, tampoco, cuando a es una constante. Un l-value no tiene que ser necesariamente un nombre ni tampoco simple Aprovechando apuntadores (f(a)+3)->b[c] = 2 El lenguaje permite funciones l-value substr($a,5,4) = "hola mundo!" El mismo objeto puede actuar como r-value o l-value en una misma expresión depende cuál atributo de la asociación interesa.

15 Modelo de acceso para variables En el Modelo de Valor, la variable puede considerarse un r-value o l-value según aplique. En el Modelo de Referencia, toda variable siempre es considerada como un l-value. Esto obliga a seguir la referencia (dereferencing) en los casos en que sea necesario. En la mayoría de lenguajes con ese modelo, eso es automático; en algunos es responsabilidad del programador. Acarrea la incomodidad del encajonado (boxing) en algunos lenguajes (Java).

16 Ortogonalidad Cuando las características del lenguaje pueden ser utilizadas en cualquier combinación de manera consistente, se dice que es ortogonal. Lenguajes orientados a expresiones no distinguen instrucción de expresión (Algol fue el primero). begin a := if b < c then d else e; a := begin f(b); g(c) end; g(d); 2 + 3; end; Lenguajes con una aproximación intermedia (como C, Java, Perl) contemplan instrucciones con valor (expression statements). a = (b < c)? d : e;

17 Asignaciones Especiales La asignación como una expresión. a = b = 1; $a = ($b = 5) * ($c = f($d) + 9); Combinar un operador con una asignación. a += 5; b[8].a->b *= 2; $str = "foo"; $str.= " bar"; Asignación múltiple ($a,$b) = (42, "hola"); ($b,$a) = ($a,$b) # Look ma! No temp ($a,$b,$c) = foo(...);

18 Inicialización de Variables Proveer un valor inicial al momento de la declaración reduce la posibilidad de errores difíciles de identificar. Para variables con almacenamiento estático, el valor inicial puede colocarse directamente a tiempo de compilación ahorrando tiempo de ejecución. Algunos lenguajes no tienen mecanismo de inicialización especial, salvo asignar manualmente los valores. Algunos lenguajes establecen reglas de inicialización automática. Los lenguajes orientados a objetos proveen constructores a ser invocados durante la inicialización.

19 Cuándo se evalúan los operandos? a - f(b) - c * d f(a,g(b),c) Puede influir (bugs) si hay efectos colaterales. Permite mejorar el código objeto. Es por esto que en la mayoría de los lenguajes el orden de evaluación de operandos no está definido. Algunas excepciones: Java y C# insisten en evaluar de izquierda a derecha. C y C++ evalúan los argumentos para funciones de derecha a izquierda. Algunos compiladores de Fortran reordenar expresiones según las propiedades matemáticas.

20 Corto circuito Evaluación de McCarthy Mínimo trabajo necesario para obtener el resultado Las expresiones lógicas (boolean expressions) pueden optimizarse para evitar la evaluación total Una secuencia de or es cierta tan pronto una sea cierta. Una secuencia de and es falsa tan pronto una sea falsa. Algunos lenguajes (Pascal) no ofrecen evaluación con cortocircuito. Algunos lenguajes (Erlang) ofrecen ambas posibilidades, vía operadores diferenciados. and y or no usan cortocircuito. andalso y orelse si usan cortocircuito. Al emplear corto-circuito, dejan de ser estrictas ya no son expresiones sino instrucciones

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Subrutinas - Pasaje de Ernesto Hernández-Novich Copyright c 2006-2010 Subrutinas Mecanismo principal para abstracción de control. Asocian un nombre a una secuencia

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Tipos de Datos Ernesto Hernández-Novich Copyright c 2006-2010 Tipos de Datos El computador sólo manipula secuencias de bits. Los lenguajes de programación ofrecen

Más detalles

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27 ÍNDICE Prefacio 25 Organización de la Unidad Didáctica.................... 25 Cómo utilizar el libro............................. 26 Objetivos docentes.............................. 27 1 Fundamentos de

Más detalles

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Tipos de Datos Compuestos Ernesto Hernández-Novich Copyright c 2006-2010 Registros Registros agrupan datos de tipos heterogéneos para almacenarlos y manipularlos

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

Paradigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa

Paradigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa Paradigmas de lenguajes de programación Introducción a la programación imperativa Algoritmos y Estructuras de Datos I Paradigma: Definición del modo en el que se especifica el cómputo (que luego es implementado

Más detalles

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28 Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes

Más detalles

Lenguajes de Programación Programación funcional

Lenguajes de Programación Programación funcional Lenguajes de Programación Programación funcional Roberto Bonvallet Departamento de Informática Universidad Técnica Federico Santa María Concepto de función En el paradigma imperativo: Una función es una

Más detalles

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional CAPÍTULO IV: Programación Funcional 4.1 Introducción a la Programación Funcional 1 Programación Funcional Paradigma diferente a los imperativos, que se aleja de la máquina de von Neumann Basado en funciones

Más detalles

Operadores y Expresiones

Operadores y Expresiones Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los

Más detalles

Java. Introducción a la Programación Orientada a Objetos

Java. Introducción a la Programación Orientada a Objetos Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

Más detalles

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Variables Conceptos de Memoria Una variable es un espacio en la memoria del PC Cada variable tiene un nombre, un tipo, un tamaño y un valor

Más detalles

Expresiones y sentencias

Expresiones y sentencias Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En C, todas las sentencias

Más detalles

Expresiones y sentencias

Expresiones y sentencias Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En Java, todas las sentencias

Más detalles

Tema II: Introducción al Lenguaje Funcional

Tema II: Introducción al Lenguaje Funcional Tema II: Introducción al Lenguaje Funcional Características de Haskell Lenguaje funcional de o. superior fuertemente tipificado. Clasifica los entes de un programa en: objetos (constantes y funciones)

Más detalles

Lenguajes y paradigmas de programación

Lenguajes y paradigmas de programación Lenguajes y paradigmas de programación Temas Que es un programa? Que es un lenguaje de programación? Características de los lenguajes de programación Paradigmas de programación Que es un programa? La unión

Más detalles

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores aritméticos Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Orientación a Objetos Ernesto Hernández-Novich Copyright c 2006-2010 Módulos como abstracción de datos Los módulos conducen a un estilo de programación en el cual

Más detalles

UNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

UNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM UNIDAD IV Programación Funcional Porqué? 2 Introducción Porque aprender programación funcional? - Recursión - Abstracción funcional - Funciones de primer orden Estos conceptos se han incorporado en la

Más detalles

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

Introducción a la programación. Cecilia Manzino

Introducción a la programación. Cecilia Manzino Paradigmas Un paradigma es un modelo o patrón en cualquier disciplina científica. Un paradigma de programación representa un estilo de programación en cual se escriben soluciones a problemas en términos

Más detalles

Curso de Java Introducción a la Programación II

Curso de Java Introducción a la Programación II Curso de Java Introducción a la Programación II Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Tipos Java 2 Decalaración de variables 3 Operadores aritméticos Índice

Más detalles

Lenguajes de Programación. Capítulo 4. Expresiones.

Lenguajes de Programación. Capítulo 4. Expresiones. Lenguajes de Programación. Capítulo 4. Expresiones. Carlos Ureña Almagro Curso 2011-12 Contents 1 Introducción 2 2 Literales 5 2.1 Literales tipos primitivos......................................... 5

Más detalles

Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2.

Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2. Índice del capítulo Capítulo 4. Expresiones Lenguajes de Programación Capítulo 4. Expresiones 1. Carlos Ureña Almagro 2. Dpt. Lenguajes y Sistemas Informáticos ETSI Informática y de Telecomunicación Universidad

Más detalles

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz Expresiones Aritméticas Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz Expresiones Aritméticas El computador puede realizar cálculos además de mostrar datos por pantalla.

Más detalles

Tema 4. Operadores y Expresiones

Tema 4. Operadores y Expresiones Tema 4 Operadores y Expresiones Contenidos 1. Conceptos Básicos. 2. Operadores Aritméticos. 3. Operadores de Relación, de Igualdad y Lógicos. 4. Operadores de Incremento y Decremento. 5. Operadores y Expresiones

Más detalles

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3 PROGRAMACION FUNCIONAL - Un lenguaje de programación funcional tiene gran flexibilidad, es conciso en su notación y su semántica es sencilla. El inconveniente principal de estos lenguajes ha sido la ineficiencia

Más detalles

Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca

Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca Aplicación de la Inducción Matemática Programación Funcional Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca Motivación Programación Imperativa Declarativa Procedimental Ejemplo:

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC. Programación n Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño o Vargas MsC. Variables y expresiones aritméticas Variables Conceptos de Memoria Una variable es un espacio en la memoria

Más detalles

Generación de Código Intermedio

Generación de Código Intermedio Generación de Código Intermedio Programación II Margarita Álvarez Generación de código intermedio Con la generación de código intermedio se inicia la tarea de síntesis. Aunque un programa fuente se puede

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

Los parámetros: son los campos que se comunican a los métodos de los objetos.

Los parámetros: son los campos que se comunican a los métodos de los objetos. Modulo 6. Variables y Operadores Variables Un objeto almacena los estados en campos, estos campos se conocen en java como variables. Por eso a menudo podemos ver estas dos palabras usadas para referirse

Más detalles

token siguiente! Tabla de símbolos

token siguiente! Tabla de símbolos TEMA 3 3.1 LA FUNCIÓN DEL ANALIZADOR SINTÁCTICO Como ya se indicó en la introducción, la principal tarea del analizador sintáctico (o parser) no es comprobar que la sintaxis del programa fuente sea correcta,

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Subrutinas Genéricas - Excepciones Ernesto Hernández-Novich Copyright (c) 2007 Subrutinas Genéricas Mecanismo implícito de Polimorfismo paramétrico. Declarar subrutinas

Más detalles

Unidad VI Generación de Código Intermedio. M.C. Juan Carlos Olivares Rojas

Unidad VI Generación de Código Intermedio. M.C. Juan Carlos Olivares Rojas Unidad VI Generación de Código Intermedio M.C. Juan Carlos Olivares Rojas Agenda 6.1 Lenguajes intermedios. 6.2 Notaciones. 6.2.1 Infija. 6.2.2 Postfija. 6.2.3 Prefija. 6.3 Representación de código intermedio.

Más detalles

Un. VI. Generador de código intermedio.

Un. VI. Generador de código intermedio. Un. VI. Generador de código intermedio. La administración de la memoria se da en esta etapa. Se debe considerar tanto la memoria estática como dinámica, y en esta se utilizan generalmente pilas. Los lenguajes

Más detalles

Índice general 7. Presentación 15

Índice general 7. Presentación 15 ÍNDICE GENERAL Índice general 7 Presentación 15 1. Introducción 19 1.1. Antecedentes históricos de la computación................... 19 1.2. Definiciones previas............................... 24 1.3.

Más detalles

Conceptos Fundamentales. Programación Lógica y Funcional MTI. Eduardo Cruz Romero

Conceptos Fundamentales. Programación Lógica y Funcional MTI. Eduardo Cruz Romero Conceptos Fundamentales Programación Lógica y Funcional MTI. Eduardo Cruz Romero www.tics-tlapa.com Estilos de Programación (1/3) Estilo de programación (también llamado estándares de código o convención

Más detalles

Introducción a Haskell. Cecilia Manzino

Introducción a Haskell. Cecilia Manzino Paradigmas de programación Un paradigma de programación representa un estilo particular o filosofía para la construcción del software. Los más comunes dan lugar a los siguientes tipos de programación:

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Conceptos básicos sobre gramáticas

Conceptos básicos sobre gramáticas Procesamiento de Lenguajes (PL) Curso 2014/2015 Conceptos básicos sobre gramáticas Gramáticas y lenguajes Gramáticas Dado un alfabeto Σ, un lenguaje es un conjunto (finito o infinito) de cadenas de símbolos

Más detalles

Fundamentos de Informática 5. Operadores, expresiones (y su aplicación)

Fundamentos de Informática 5. Operadores, expresiones (y su aplicación) Fundamentos de Informática 5. Operadores, expresiones (y su aplicación) Fundamentos de Informática Grado en Ingeniería Química 2 Contenidos Operadores De asignación Aritméticos De incremento Relacionales

Más detalles

Introducción a la Programación

Introducción a la Programación Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación

Más detalles

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;) Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,

Más detalles

Tema#2. Tipos de Datos 10

Tema#2. Tipos de Datos 10 2.1 DEFINICIÓN DE DATOS. Los datos son los objetos sobre los que opera una computadora. El tipo de un dato es el conjunto de valores que puede tomar durante el programa. Si se le intenta dar un valor fuera

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Prof. Wilmer Pereira Universidad Simón Bolívar Primeros pasos en los lenguajes de alto nivel El primer computador (1940) tenía el poder cálculo de una calculadora actual Primer

Más detalles

Tipos en Haskell. Cecilia Manzino

Tipos en Haskell. Cecilia Manzino Tipos Tipo: conjunto de valores asociados a operaciones. Ejemplos: enteros, caracteres, booleanos, funciones de enteros a enteros. Sirven para: detectar errores antes de la evaluación especificar programas

Más detalles

Lenguajes de Programación

Lenguajes de Programación Lenguajes de ción Bloque 1. Complemento a Tema 1 1. Historia 2. Paradigmas de programación 3. Fases creación de un programa 4. Traducción: compilación e interpretación 1ª Generación Ordenadores sólo entienden

Más detalles

Verificación de Tipos

Verificación de Tipos Verificación de Tipos CI4721 Lenguajes de Programación II Ernesto Hernández-Novich Universidad Simón Bolívar Copyright 2012-2016 Hernández-Novich (USB) Verificación de Tipos 2016 1 / 25 Verificación

Más detalles

Tema 2. Concepto de Algoritmo

Tema 2. Concepto de Algoritmo Tema 2. Concepto de Algoritmo Objetivos Definir el concepto de algoritmo Resolver problemas sencillos mediante el diseño de un algoritmo Conocer los tipos de datos elementales y las operaciones sobre ellos

Más detalles

Tema 5. Soporte lógico de computadoras.

Tema 5. Soporte lógico de computadoras. Tema 5. Soporte lógico de computadoras. 5.1 Conceptos generales Como se ha visto previamente, un ordenador consta de dos partes, una la parte física, conocida como "Hardware" y otra, la parte lógica denominada

Más detalles

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. 1.6. EXPRESIONES CONCEPTO: Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. Los operandos pueden ser constantes, variables, otras expresiones e incluso funciones.

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3: 3 - Paradigmas de Programación

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3: 3 - Paradigmas de Programación 3 - Paradigmas de Programación En los inicios los lenguajes de programación imitaron y abstrajeron las operaciones de una computadora, lo cual trajo aparejado que el tipo de computadora para el cual fueron

Más detalles

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Clase teórica 2 Algoritmos en C Página 1 de 6 TIPOS DE DATOS Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Por el momento nuestro

Más detalles

Paradigma Funcional Caso de estudio: ML. Lenguajes de Programación 2018

Paradigma Funcional Caso de estudio: ML. Lenguajes de Programación 2018 Paradigma Funcional Caso de estudio: ML Lenguajes de Programación 2018 FUNCIÓN: Mapeo de un dominio en un rango El mapeo se puede describir por medio de una EXPRESIÓN f(1) = 2 f(2) = 3 Enumeración f(x)

Más detalles

Tema 2: Elementos básicos de un programa. Tipos de datos, variables y constantes Asignación Operadores y expresiones

Tema 2: Elementos básicos de un programa. Tipos de datos, variables y constantes Asignación Operadores y expresiones Tema 2: Elementos básicos de un programa Tipos de datos, variables y constantes Asignación Operadores y expresiones Ejemplo de programa Dados dos números, leídos desde el teclado, visualizar el mayor #include

Más detalles

Introducción a Java. Introducción a Java. Programación I

Introducción a Java. Introducción a Java. Programación I Introducción a Java Introducción a Java Programación I Como Funciona Tipos de Datos TIPO TAMAÑO RANGO byte 8 bits Valores numéricos de 128 a 127 short 16 bits Valores numéricos de 32.768 a 32.767 int 32

Más detalles

Tema 3.- Predicados y sentencias condicionales

Tema 3.- Predicados y sentencias condicionales UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER

Más detalles

Registros. Lenguajes de Programación I. Accediendo a los datos organizados en registros. Declarando Registros. Tipos de Datos Compuestos

Registros. Lenguajes de Programación I. Accediendo a los datos organizados en registros. Declarando Registros. Tipos de Datos Compuestos ... o Estructuras (Structures) Lenguajes de Programación I Tipos de Datos Compuestos Ernesto Hernández-Novich Universidad Simón Bolívar Copyright 2007-2016 Agrupan valores de tipos heterogéneos

Más detalles

AMBIENTES DE COMPILACION

AMBIENTES DE COMPILACION AMBIENTES DE COMPILACION Los compiladores a menudo producen como resultado del análisis semántico, una forma de representación intermedia del código fuente. Hoy en día, es cada vez más común que, en ambientes

Más detalles

Programación Funcional en LISP Lógica para Ciencias de la Computación

Programación Funcional en LISP Lógica para Ciencias de la Computación Programación Funcional en LISP Lógica para Ciencias de la Computación Primer Cuatrimestre de 2009 Material Adicional Introducción A lo largo de la carrera estudiaremos diversos paradigmas de programación:

Más detalles

Lenguajes de programación

Lenguajes de programación Introducción Lenguajes de programación Primera generación: lenguajes máquina Los programas se escriben en código binario 000001011010000000000000 Segunda generación: lenguajes simbólicos Cada instrucción

Más detalles

EXPRESIONES Y OPERADORES

EXPRESIONES Y OPERADORES EXPRESIONES Y OPERADORES Una expresión es un conjunto de operandos y operadores cuyo resultado puede ser evaluado. Las expresiones constituyen la base de cualquier aplicación y se construyen agrupando

Más detalles

GUÍA BÁSICA DE SCHEME v.4

GUÍA BÁSICA DE SCHEME v.4 Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los

Más detalles

Paradigma Funcional Caso de estudio: ML. Lenguajes de Programación 2017

Paradigma Funcional Caso de estudio: ML. Lenguajes de Programación 2017 Paradigma Funcional Caso de estudio: ML Lenguajes de Programación 2017 Paradigma Funcional FUNCIÓN: Mapeo de un dominio en un rango El mapeo se puede describir por medio de una EXPRESIÓN f(1) = 2 f(2)

Más detalles

introducción a la computación

introducción a la computación introducción a la computación representaciones computacionales Bruno Lara Guzmán Departamento de Computación, Facultad de Ciencias 20 de noviembre de 2013 (UAEM) introducción a la computación 20 de noviembre

Más detalles

LÓGICA - DECISIONES. Hay dos tipos de expresiones lógicas: las expresiones lógicas relacionales y las expresiones lógicas combinacionales.

LÓGICA - DECISIONES. Hay dos tipos de expresiones lógicas: las expresiones lógicas relacionales y las expresiones lógicas combinacionales. LÓGICA - DECIONES Los valores lógicos: constantes, variables y expresiones lógicas, permiten controlar la ejecución de las sentencias de un programa. Hay dos tipos de expresiones lógicas: las expresiones

Más detalles

COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO

COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO ELABORO: ALEJANDRA FUERTES FRANCISCO TEMA: LENGUAJES DE PROGRAMACIÓN INTRODUCCIÓN Un lenguaje de programación es un conjunto de instrucciones que

Más detalles

Tema 2.- Expresiones y funciones

Tema 2.- Expresiones y funciones UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER

Más detalles

Un calculadora avanzada... y algo más!

Un calculadora avanzada... y algo más! INFORMÁTICA, GRUPO D Un calculadora avanzada... y algo más! Vamos a familiarizarnos con el entorno interactivo de Python. Vamos a construir expresiones aritméticas y a guardar los resultados en variables

Más detalles

Introducción a la programación

Introducción a la programación Introducción a la programación Conceptos Básicos El objetivo fundamental de éste curso es enseñar a resolver problemas mediante una computadora. El programador de computadoras es antes que nada una persona

Más detalles

Tema 1: Introducción

Tema 1: Introducción Tema 1: Introducción Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 1: Introducción 1 / 28 Definición de compilador Un compilador

Más detalles

PROGRAMACIÓN EN JAVA

PROGRAMACIÓN EN JAVA 1. INTRODUCCIÓN A LA PROGRAMACIÓN 1.1. Datos, algoritmos y programas 1.1.1. Definición de algoritmo 1.1.2. Datos 1.1.3. Características de un programa 1.2. Paradigmas de programación 1.2.1. Programación

Más detalles

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional Programación Funcional Lisp-DrScheme Primera Parte Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional Programación Funcional! La programación funcional es un paradigma de programación

Más detalles

Programación Estructurada en ANSI C

Programación Estructurada en ANSI C Programación Estructurada en ANSI C Sesión 2A Rafael Menéndez de Llano Rozas DEPARTAMENTO DE INFORMÁTICA Y ELECTRÓNICA Este material se publica bajo licencia: Creative Commons BY-NC-SA 4.0 Índice 1. Introducción.

Más detalles

Prof. María Alejandra Quintero. Informática Año

Prof. María Alejandra Quintero. Informática Año Prof. María Alejandra Quintero Informática Año 2014-2015 Es la acción de escribir programas de computación con el objetivo de resolver un determinado problema. Implica escribir instrucciones para indicarle

Más detalles

LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS

LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS LENGUAJE FORTRAN. ESTRUCTURAS Y SENTENCIAS BÁSICAS Programación en Fortran Valentín Moreno ÍNDICE 1. Introducción al lenguaje Fortran 2. Estructura de un programa 3. Variables y constantes 4. Tipos de

Más detalles

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS A.- ASPECTOS FUNDAMENTALES DEL CÓDIGO ORIENTADO A OBJETOS MÓDULOS DE CÓDIGO: El código en Visual Basic se almacena en módulos. Hay tres tipos de módulos: de formulario,

Más detalles

Introducción a Python. Cecilia Manzino

Introducción a Python. Cecilia Manzino Características del lenguaje Es un lenguaje de programación multiparadigma, soporta la programación orientada a objetos, imperativa y, en menor medida, funcional. Es un lenguaje multiplataforma, puede

Más detalles

Introducción a Haskell. El lenguaje Haskell

Introducción a Haskell. El lenguaje Haskell Capítulo 2. Introducción a Haskell 9 Introducción a Haskell Un ejemplo de fichero Haskell El lenguaje Haskell Haskell es un lenguaje funcional puro, no estricto y fuertemente tipificado. Puro = transparencia

Más detalles

Programación Funcional

Programación Funcional Alberto Pardo Marcos Viera Instituto de Computación, Facultad de Ingeniería Universidad de la República, Uruguay Objetivo del curso Este es un curso introductorio de programación funcional (PF) Veremos

Más detalles

21/03/2018. Variables y Constantes. Los datos de un programa están representados por variables o constantes y tienen asociado un tipo.

21/03/2018. Variables y Constantes. Los datos de un programa están representados por variables o constantes y tienen asociado un tipo. Variables y Constantes Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Los datos de un programa están representados por variables

Más detalles

Práctica de constantes, expresiones y operadores. Programación en C 1

Práctica de constantes, expresiones y operadores. Programación en C 1 Práctica de constantes, expresiones y operadores Programación en C 1 Definición de variables (II) Las variables (automáticas) no inicializadas tienen cualquier valor. Una variable (automática) se inicializa

Más detalles

Introducción a los compiladores

Introducción a los compiladores Introducción a los compiladores William Cruz-Santos wdelacruzd@uaemex.mx Ingeniería en Computación Universidad Autónoma del Estado de México Unidad de Competencia I 2 de octubre de 2015 William Cruz-Santos

Más detalles

Repaso: Teórica. Introducción a la programación imperativa. Paradigmas de lenguajes de programación. Repaso: Tipos de datos

Repaso: Teórica. Introducción a la programación imperativa. Paradigmas de lenguajes de programación. Repaso: Tipos de datos Repaso: Teórica Introducción a la programación imperativa Algoritmos y Estructuras de Datos I Lógica proposicional (binaria, trivaluada) Tipos de datos Básicos: enteros, reales, booleanos, char, enumerados

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Alcance Ernesto Hernández-Novich Copyright c 2007-2010 Qué quiere decir Alcance? El alcance de una asociación es la región de un programa en la cual dicha asociación

Más detalles

Tema 5: Macros. Sesión 14: Macros

Tema 5: Macros. Sesión 14: Macros Tema 5: Macros Sesión 14: Macros Hoy veremos... Conceptos generales Quasiquotation Macros en Scheme Ejemplos de macros Referencias Capítulo 3.7 Programming Language Pragmatics: Macro Expansion Definición

Más detalles

JavaScript: Operadores

JavaScript: Operadores Las variables por sí solas son de poca utilidad. Hasta ahora, sólo se ha visto cómo crear variables de diferentes tipos y cómo mostrar su valor mediante la función alert(). Para hacer programas realmente

Más detalles

Conceptos básicos. IC-1800 Introducción a la programación. I semestre,

Conceptos básicos. IC-1800 Introducción a la programación. I semestre, Conceptos básicos IC-1800 Introducción a la programación I semestre, 2017 1 Definiciones Básicas Hardware: componentes físicos. tangibles Software: componentes lógicos. no tangibles DVDs de Ubuntu, Kubuntu

Más detalles

Entendiendo expresiones lambda en C# con Mono

Entendiendo expresiones lambda en C# con Mono Entendiendo expresiones lambda en C# con Mono Martín O. Márquez Introducción La programación imperativa es uno de los paradigmas de computación más ampliamente utilizados por la mayoría

Más detalles