8 INTRODUCCIÓN AL OBJECTIVE CAML

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

Download "8 INTRODUCCIÓN AL OBJECTIVE CAML"

Transcripción

1 8 INTRODUCCIÓN AL OBJECTIVE CAML Objective Caml (Ocaml) es un lenguaje de programación funcional tipificado estáticamente, aunque los tipos pueden inferirse en tiempo de ejecución; y con un mecanismos de recolección de basura Esto significa que no es necesario especificar los tipos de todas las expresiones en nuestros programas, aunque al ser un lenguaje estrictamente tipificado, Ocaml contribuye a estar más alertas de los tipos de datos que usamos Si bien estamos ante un lenguaje de propósito general, Ocaml resulta especialmente adecuado para dominios que requiere seguridad y verificación En este capítulo introduciremos los conceptos básicos de este lenguaje de programación El primer contacto de un usuario con OCaml es interactivo Cuando se ejecuta OCaml en una computadora, se entra en un bucle llamado topevel, donde la computadora espera a que el usuario le de una expresión a evaluar Cuando esto sucede el sistema evalúa la expresión e imprime el resultado para el usuario Este tipo de bucle se conoce también como ciclo read-eval-print y aparece también en lenguajes como Lisp y Prolog Para iniciar Ocaml en mi Mac con OS X, hago lo siguiente: 1 justine:~ aguerra$ ocaml 2 Objective Caml version # donde justine$ es el prompt de mi sistema y # es el prompt de OCaml, indicándome que el sistema está en espera De aquí en adelante, las frases que inicien con # son entradas de OCaml Es de esperar que ustedes puedan reproducir las sesiones de cada sesión, puesto que han sido verificadas en OCaml Las líneas que empiezan con > representan mensajes de error de OCaml Cualquier otro inicio de liínea, es probable que represente las respuestas de OCaml o una entrada no válida Usemos OCaml para procesar una expresión aritmética: 1 # 1+2 ;; 2 - : int = 3 103

2 104 La expresión 1+2 fue teclada, seguida de ;; y la tecla enter o return Cuando se encuentra con la cadena ;; OCaml entra en modo de verificación de tipos (o, siendo precisos, síntesis de tipos) e imprime el tipo inferido para la expresión (int en el ejemplo, para indicar que se tata de entero) Luego, el sistema compila el código para la expresión, ejecuta este código e imprime el resultado (3) El proceso de evaluación de una expresión OCaml puede verse como una serie de transformaciones sobre la expresión, que termina cuando no es posible aplicar más transformaciones Estas transformaciones deben mantener la semántica de la expresión Por ejemplo, la expresión tiene como semántica al objeto matemático 3, por lo que el resultado 3 debe tener la misma semántica Como se puede observar, la evaluación de las expresiones en OCaml es más complicado que en Lisp Las fases del proceso de evaluación en OCaml incluyen: 1 Parsing (verificación sintáctica); 2 Sintésis de tipo; 3 Compilación; 4 Carga; 5 Ejecución; 6 Impresión de resultados Consideremos otro ejemplo: la aplicación de la función sucesor a la expresión La expresion (function x ->x+1) debe leerse como la función que, dada x, regresa x + 1 La yuxtaposición de esta expresión a forma la aplicación de la función Ejemplo 10 Aplicación de una función sucesor a la expresión (3 + 1): 1 # (function x -> x+1)(3+1) ;; 2 - : int = 5 Existen diversas manera de reducir esta expresión hasta obtener 5 Aquí mostramos dos: 1 (function x -> x+1) (3+1) 2 (function x -> x+1) y: 1 (function x -> x+1) (3+1) 2 (3+1) Lo relevante es que todas las reducciones posibles conducen al mismo valor

3 105 El concepto de tipo, así como su verificación y sintésis, son centrales para la programación funcional Ellos proveen indicadores sobre lo correcto de un programa El universo de OCaml está particionado en tipos Un tipo representa una colección de valores Por ejemplo int es el tipo de los números enteros y float es el tipo de los números de punto flotante Los valores de verdad pertecen al tipo bool Las cadenas de caracteres pertenecen al tipo string Los tipos se dividen en dos clases: 1 Tipos básicos (int, float, bool, string, ) 2 Tipos compuestos, como los tipos funcionales Por ejemplo, el tipo de la función sucesor, (function x ->x+1), que tiene como parámetro forman un entero y regresa un entero es int ->int El caso de la función mayor que que recibe un par de enteros y regresa un entero, tiene el tipo int * int ->int Una vez que el usuario envia una expresión a OCaml, éste lleva a cabo un análisis sintáctico de la expresión, que consiste en verificar si la expresión pertenece al lenguaje o no Ejemplo 11 Error sintáctico (paréntesis mal balanceados): 1 # (function x -> x+1 (2+3) ;; 2 Syntax error: ) expected, the highlighted ( might be unmatched El segundo análisis que OCaml lleva a cabo es de tipos El sistema trata de asignar un tipo a cada subexpresión y de analizar el tipo de la expresión completa Si el análisis de tipos falla, por ejemplo, si el sistema no es capaz de asignar un tipo coherente a la expresión, se produce un mensaje de error de tipo y OCaml entra en modo de espera por una nueva expresión a evaluar Ejemplo 12 Error de tipo (con + no se puede sumar un booleano, sólo enteros): 1 # (function x -> x+1)(2+true) ;; 2 Characters 22-26: 3 (function x -> x+1)(2+true) ;; 4 ^^^^ 5 This expression has type bool but is here used with type int El rechazo de expresiones mal tipificadas se conoce como tipificación fuerte El compilador de un lenguaje débilmente tipificado, como C, nos daría solo un mensaje de advertencia (warning) y continuaría su trabajo con el riesgo de llegar a un mensaje de bus error o de illegal instruction en tiempo de ejecución Una vez que el tipo de la expresión ha sido determinado con éxito, el proceso de evaluación inicia Este proceso incluye las fases de compilación, carga y ejecución La tipificación fuerte obliga a escribir programas claros y bien estructurados Más aún, aumenta la seguridad e incrementa la velocidad en el desarrollo de un programa, puesto que muchos typos y errores conceptuales son detectados y señalados por el

4 106 análisis de tipos Finalmente, los programas bien tipificados no necesitan de test dinámicos de tipo (la función suma no necesita verificar todo el tiempo si sus argumentos son números), por lo que la verificación estática de tipos contribuye a obtener código más eficiente El tipo de valores más importantes en la programación funcional son los valores funcionales En matemáticas, una función f de tipo A! B es una regla de correspondencia que asocia a cada elemento de tipo A un único elemento de tipo B Si x denota un elemento de A, entonces escribiremos f(x) para la aplicación de f a x Los paréntesis son sólo para agrupar subexpresiones por lo que también podemos escribir (f(x)) o ((f(x))) o incluso fx El valor de fx es el único elemento de B asociado a x por la regla de correspondencia para f La notación f(x) es la usada normalmente en matemáticas para denotar la aplicación funcional Es importante no confunidr la función con su aplicación Decimos la función f con parámetro formal x, para expresar que f ha sido definida como f : x! e, o en OCaml, que el cuerpo de f es una expresión de la forma (function x -> Dado que OCaml es un lenguaje funcional, las funciones son valores que se comportan como los demás valores del lenguaje En partícular las funciones pueden pasarse como argumento a otras funciones y/o ser regresadas como valores por una función Ejemplo 13 Una función que toma como parámetro una función de los enteros a los enteros (f) y un entero; regresando un entero que resulta de la aplicación de f al segundo argumento incrementado en uno menos uno: 1 # function f -> (function x -> (f(x+1) - 1)) ;; 2 - : (int -> int) -> int -> int = <fun> Observen que en los ejemplos anteriores, como es común en la programación funciona, no es necesario nombrar a las funciones No confundan a f con el nombre la función que estamos definiendo, f es su primer argumento (lo mismo para x) Aunque nombrar valores no sea necesario, a veces (y sobre todo en los paradigmas no funcionales) es importante dar nombre a los valores Hemos visto ya algunos nombres de valores, los llamamos parámetros formales En la expresión (function x ->x+1), el nombre x es un parámetro formal Su nombre en cierta forma irrelevante, cambiarlo no cambia el significado de la expresión Podríamos haber escrito la función como (function y ->y+1) Si ahora aplicamos esta función a la expresión 1 + 2, evaluaremos la expresión y + 1 cuando y tiene el valor Ejemplo 14 Nombrar y al valor de en y + 1 se escribe:

5 107 1 # let y=1+2 in y+1 ;; 2 - : int = 4 Esta expresión forma parte del lenguaje OCaml y el constructor let es ampliamente utilizado Este constructor introduce ligaduras locales (local bindings) de valores a identificadores Son locales porque el alcance de y se restringe a la expresión y + 1 El identificador y no conserva su ligadora (la que sea) tras la evaluación de let in, así que en este caso: 1 # y ;; 2 Characters 0-1: 3 y ;; 4 ^ 5 Unbound value y Las ligaduras locales usando let permiten compartir evaluaciones (que posiblemente utilizan muchos recursos computacionales) Cuando evaluamos let x = e 1 in e 2, e 1 es evaluado sólo una vez Todas las ocurrencias de x en e 2 accesan el valor de x que ha sido computado sólo una vez Ejemplo 15 Compartiendo evaluaciones con let: 1 let big = suma_factores_primos in big+(2+big)-(4*(big+1)) ;; será menos costoso que: 1 (suma_factores_primos ) + 2 (2 + (suma_factores_primos )) - 3 (4 * ((suma_factores_primos ) - 1)) ;; El constructor let tiene también una forma global para declaraciones en el toplevel Ejemplo 16 Declaraciones en el toplevel usando let: 1 # let sucesor = function y -> y+1 ;; 2 val sucesor : int -> int = <fun> 3 # let cuadrado = function x -> x*x ;; 4 val cuadrado : int -> int = <fun> Cuando un valor es declarado en el toplevel, lo podemos seguir usando en el resto de la sesión: Ejemplo 17 Aplicaciones usando sucesor y cuadrado: 1 # (cuadrado (sucesor 3)) ;; 2 - : int = 16 3 # cuadrado ;; 4 - : int -> int = <fun>

6 108 Al declarar valores funcionales existen varias alternativas sintácticas Las siguientes declaraciones de cuadrado son equivalentes a la anterior: 1 # let cuadrado x = x*x ;; 2 val cuadrado : int -> int = <fun> 3 # let cuadrado (x) = x*x ;; 4 val cuadrado : int -> int = <fun> Ejemplo 18 Declaraciones alternativas de suma Observen que el tipo de ambas definiciones es el mismo, y que ambas permite aplicaciones parciales de la suma de dos números 1 # let suma1 = function x -> function y -> x+y ;; 2 val suma1 : int -> int -> int = <fun> 3 # let suma2 x y = x+y ;; 4 val suma2 : int -> int -> int = <fun> 5 # suma2 3;; 6 - : int -> int = <fun> 7 # suma1 3;; 8 - : int -> int = <fun> Una aplicación parcial de una función es la aplicación de una función a algunos pero no todos sus argumentos Consideren la siguiente función: 1 # let f x = function y -> 2*x*y ;; 2 val f : int -> int -> int = <fun> La expresión f(3) denota la función que cuando se le da un argumento y regresa el valor 2 3 y La aplicación f(x) se conoce como aplicación parcial, porque f espera dos argumentos sucesivos y es sólo aplicada a uno El valor de f(x) sigue siendo una función Ejemplo 19 Aplicación parcial de f a 3: 1 # f 3 ;; 2 - : int -> int = <fun> Ejemplo 20 Definición de sucesor usando aplicaciones parciales: 1 # let suma x y = x + y ;; 2 val suma : int -> int -> int = <fun> 3 # let sucesor = suma 1 ;; 4 val sucesor : int -> int = <fun> 5 # sucesor(sucesor 3);; 6 - : int = 5

7 109 Enteros Caml provee un tipo para los enteros (int) que están comprendidos en el rango En una arquitectura de 32 bits, la precisión de los enteros es de 31 bits En una arquitectura de 64 bits, su precisión es de 63 bits Las operaciones (funciones) predefinidas para los enteros son incluyen: + Suma - Resta * Multiplicación / División mod Modulo Ejemplo 21 Algunos ejemplos de expresiones aritméticas con enteros: # 3 * ;; - : int = 14 # 3 * (4 + 2) ;; - : int = 18 # ;; - : int = -6 Como se puede observar, existen reglas de precedencia que hacen que * ligue más fuerte que + En caso de duda sobre la precedencia de un operador, es mejor usar paréntesis Reales Los números de punto flotante proveen reales en Caml La sintáxis de los reales incluye ya sea un punto décimal, o un exponente (base 10) denotado por e Se requiere que al menos un dígito preceda al punto décimal Existen funciones de coerción para ir de los enteros a los reales y viceversa: int_of_float y float_of_int Los operadores para números enteros no funcionan con números reales Para ellos tenemos +, -, * y / entre otros Ejemplo 22 Algunos ejemplos de expresiones con reales: # 2e7 ;; - : float = # 2e-3 ;; - : float = 0002 # float_of_int 10 ;; - : float = 10 # * 172 ;; - : float = # int_of_float( * 172) ;; - : int = 54

8 110 Caracteres Los caracteres toman su valor del conjunto de símbolos ASCII Se delimitan por apóstrofes La especificación numérica es en dćimal (el código 120 corresponde a x y no a P) Los operadores incluyen conversión a código décimal y viceversa, conversión a mayúsculas y minúsculas, etc Ejemplo 23 Ejemplos de expresiones con caracteres: # a ;; - : char = a # \120 ;; - : char = x # Charcode a ;; - : int = 97 # Charchr 97 ;; - : char = a # Charchr 97 ;; - : char = a # Charuppercase a ;; - : char = A # Charlowercase A ;; - : char = a # Charlowercase(Charuppercase(Charchr 97)) ;; - : char = a Cadenas Las cadenas de caracteres en Caml son un tipo predefinido, a diferencia de otros lenguajes (C) donde son arreglos de caracteres La sintáxis para las cadenas usa como delimitadores El operador ˆ realiza la concatenación La función Stringlength computa el tamaño de una cadena El operador posfijo [i] accesa al elemento i- esimo de la cadena # "Hola" ;; - : string = "Hola" # "Hola" ^ "Mundo" ;; - : string = "HolaMundo" # Stringlength "Hola" ;; - : int = 4 # Stringlength "Hola" ^ "Mundo" ;; Characters 0-20: Stringlength "Hola" ^ "Mundo" ;; ^^^^^^^^^^^^^^^^^^^^ This expression has type int but is here used with type string # Stringlength("Hola" ^ "Mundo") ;; - : int = 9 # "hola"[2] ;; - : char = l

9 111 Valores de verdad El tipo bool provee dos valores de verdad: true y false La negación lógica se computa con la función not Las relaciones binarias toman argumentos del mismo tipo Estas incluyen =, >, <, <>, >=, <= Los operadores booleanos también están predefinidos como && y en sus versiones short circuit Esto es, solo evaluan los operandos necesarios para obtener su valor de verdad Ejemplo 24 # not true ;; - : bool = false # not false ;; - : bool = true # 2 < 3 3 > 2 ;; - : bool = true En el caso general, es imposible verificar la igualdad entre dos valores funcionales de ahí que la igualdad se detenga con un error en tiempo de ejecución cuando encuentra este tipo de valores: # (fun x -> x) = (fun x -> x ) ;; Exception: Invalid_argument "equal: functional value" Cual es el tipo entonces del operador =? Este toma dos expresiones del mismo tipo y regresa un valor booleano Su tipo es: -: a -> a -> bool = <fun> Es decir, el tipo de = es polimórfico, es decir, puede tomar diversas formas Por ejemplo, si compara dos enteros, su forma es int ->int ->bool, pero si se comparan dos cadentas, su forma es str ->str ->bool El tipo de la igualdad se expresa entonces usando variables de tipo, escritas como a, b, etc Cualquier tipo puede substituir a una variable de tipo para producir tipos instanciados Por ejemplo substituit int por a en el ejemplo anterior, nos da int ->int ->bool Además de los operadores lógicos y las comparaciones, los valores de verdad nos permiten trabajar con condicionales Estas son expresiones de la forma if e test then e 1 else e 2, donde e test es una expresión de tipo bool; e 1 y e 2 comparten el mismo tipo Ejemplo 25 La negación usando condicionales: # let neg a = if a then false else true ;; val neg : bool -> bool = <fun> # neg true ;; - : bool = false # neg false ;; - : bool = true # neg (1=2) ;; - : bool = true

10 112 Tuplas Es posible combinar valores en tuplas (pares, tripletes, etc) El constructor de valores para las tuplas es la coma (,) Generalmente usamos paréntesis alrededor de la tupla por legibilidad, aunque esto no es estrictamente necesario Ejemplo 26 Ejemplos de tuplas # 1,2 ;; - : int * int = (1, 2) # 1,2,3,4 ;; - : int * int * int * int = (1, 2, 3, 4) # let p = (1+2, 2<3) ;; val p : int * bool = (3, true) El identificador infijo * es el constructor de tipos tupla Por ejemplo, t 1 * t 2 corresponde al concepto matemático de producto cartesiano t 1 t 2 Para extraer componentes de una tupla se utilizan las llamadas funciones de proyección Para los pares tenemos: # fst (1,2) ;; - : int = 1 # snd (1,2) ;; - : int = 2 Estas proyecciones tienen tipo polimórfico: # fst (1,2) ;; - : int = 1 # snd (1,2) ;; - : int = 2 Estas proyecciones predefinidas en Ocaml, tienen tipo polimórfico: # fst ;; - : a * b -> a = <fun> # snd ;; - : a * b -> b = <fun> Por supuesto, uno puede escribir sus propias definiciones de tales funciones: # let primero (x,y) = x ;; val primero : a * b -> a = <fun> # let segundo (x,y) = y ;; val segundo : a * b -> b = <fun> # primero (1,2) ;; - : int = 1 # segundo (1,2) ;; - : int = 2 Decimos que estas funciones son genéricas porque pueden trabajar de manera uniforme con muchos tipos de argumentos (siempre y cuando estos sean pares) A veces se confunden los término genérico y polimórfico, por ejemplo, se dice comunmente que tal valor es polimórfico, cuando en realidad se quiere decir genérico

11 113 Patrones y concordancia entre ellos Los patrones y la concordancia entre patrones (pattern matching) juegan un papel importante en la programación funcional Estos conceptos se utilizan en todo programa real y están fuertemente relacionados con el concepto de tipo un patrón representa la forma de un valor Los patrones pueden verse como moldes con cavidades de distintas formas Un parámetro formal es un patrón Cuando un valor es comparado contra un patrón, el patrón actúa como un filtro Consideren la siguiente definición: # let f = function true -> false ;; Characters 8-30: Warning: this pattern-matching is not exhaustive Here is an example of a value that is not matched: false let f = function true -> false ;; ^^^^^^^^^^^^^^^^^^^^^^ val f : bool -> bool = <fun> El compilador nos advierte que la conocordancia de patrones puede fallar, pues no hemos considerado el caso false # f (3>2) ;; - : bool = false # f (2>3) ;; Exception: Match_failure ("", 1, 8) He aquí la definición correcta de esta función f, usando concordancia de patrones: # let negar = function true -> false false -> true ;; val negar : bool -> bool = <fun> La definición de negar tiene ahora dos casos separados por el carácter Los casos son considerados por Caml en orden descendente Una definición alternativa: # let negar = function true -> false x -> true ;; val negar : bool -> bool = <fun> Ahora la función considera cualquier valor booleano x en su segundo caso En realidad, solo false es aplicable en ese segundo caso, pués true es filtrado en el primer caso Debido a que en nuestro ejemplo no utilizamos el argumento x, podemos definir la función negar como sigue: # let negar = function true -> false _ -> true ;; val negar : bool -> bool = <fun> donde _ actua como un parámetro formal que no introduce ligadura alguna Esto puede leerse como en cualquier otro caso

12 114 Ejemplo 27 Implicación binaria usando concordancia de patrones # let implicacion = function (true,true) -> true (true,false) -> false (false,true) -> true (false,false) -> true ;; val implicacion : bool * bool -> bool = <fun> Puede proponerse una definición alternativa de implicacion? # let implicacion = function (true,false) -> false _ -> true ;; val implicacion : bool * bool -> bool = <fun> La concordancia de patrones puede aplicarse a cualquier tipo: Ejemplo 28 Concordancia de patrones usando diversos tipos: # let cerop = function 0 -> true _ -> false ;; val cerop : int -> bool = <fun> # let sip = function "yes" -> true "oui" -> true "ja" -> true "si" -> true _ -> false ;; val sip : string -> bool = <fun> El constructor de tipos -> está predefinido en Caml Exploremos algunos aspectos de las funciones y los tipos funcionales Composición funcional La composición funcional es fácil de definir en Caml y es una función polimórfica: # let componer f g = function x -> f(g(x)) ;; val componer : ( a -> b) -> ( c -> a) -> c -> b = <fun> Las restricciones para usar componer provienen de su tipo: El codominio de g y el dominio de f debe ser el mismo ( a) x debe pertenecer al domino de g ( c) compose f g x pertenecera la codominio de f ( b) Veamos como funciona componer:

13 115 # let succ x = x+1 ;; val succ : int -> int = <fun> # componer succ Stringlength ;; - : string -> int = <fun> # (componer succ Stringlength) "cinco" ;; - : int = 6 Currying Podemos definir suma de dos maneras posibles: # let suma = function (x,y) -> x + y ;; val suma : int * int -> int = <fun> # let suma = function x -> function y -> x + y ;; val suma : int -> int -> int = <fun> Estas dos expresiones difieren sólo en la forma en que toman sus argumentos La primer definición de suma toma un argumento que pertenece al producto cartesiano int int La segunda definición toma como argumento un entero y regresa una función Esta última definición se dice ser la versión curry (curryfied, en honor de Haskell Curry) Las transformaciones curry pueden escribirse en Caml usando funciones de orden superior: # let curry f = function x -> (function y -> f(x,y)) ;; val curry : ( a * b -> c) -> a -> b -> c = <fun> # let uncurry f = function (x,y) -> f x y ;; val uncurry : ( a -> b -> c) -> a * b -> c = <fun> Podemos asi verificar los tipos de funciones en formato curry y no curry: # suma ;; - : int -> int -> int = <fun> # uncurry suma ;; - : int * int -> int = <fun> # curry (uncurry suma) ;; - : int -> int -> int = <fun>

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

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

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

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

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

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

Ficha de Aprendizaje N 13

Ficha de Aprendizaje N 13 Ficha de Aprendizaje N 13 Curso: Lógica y lenguaje de programación Tema: Fundamentos de programación Duración: 2 horas pedagógicas Logros de aprendizaje Identifica los diferentes tipos de operadores que

Más detalles

Datos y tipos de datos

Datos y tipos de datos Datos y tipos de datos Dato Representación formal de hechos, conceptos o instrucciones adecuada para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipo de dato

Más detalles

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante. Javascript (II) 1 Elementos Básicos: Comentarios: Para una línea // Esto es un Comentario Para un bloque /*......... */ Literales: Valores que puede tomar una variable o una constante. Ejemplos: "Soy una

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

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

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo

Más detalles

Introducción rápida a la programación (estructurada ) con C++

Introducción rápida a la programación (estructurada ) con C++ Introducción rápida a la programación (estructurada ) con C++ A B No A? Si B A Los Bloques pueden ser una línea de código o un modulo (función o subrutina) que pueden estar contenido en otro archivo de

Más detalles

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: Cuestionario Modulo 1.1 GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: 1001 0110. 2. qué es Dato? Definición: Es toda

Más detalles

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de

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

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Universidad Rafael Urdaneta Escuela de Ingeniería de Computación Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Asignación

Más detalles

Metodologías de Programación II Introducción

Metodologías de Programación II Introducción Metodologías de Programación II Introducción Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial aguerra@uv.mx http://www.uv.mx/aguerra Maestría

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

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani Informática JavaScript: Lenguaje de programación Fco J. Martín Mateos Carmen Graciani Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Literales Enteros Con base decimal:

Más detalles

Lección 2 Introducción al lenguaje C

Lección 2 Introducción al lenguaje C Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)

Más detalles

Tema 3: Tipos y clases

Tema 3: Tipos y clases Tema 3: Tipos y clases Informática (2016 17) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 32 IM Tema 3: Tipos y clases

Más detalles

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN Métodos Numéricos 2008 - Carlos Zotelo Introducción a Fortran 77 / 90 1. El lenguaje Fortran 77 / 90 2. Tipos de datos básicos 3. Constantes y variables 4. Entrada

Más detalles

Tema 3: Tipos y clases

Tema 3: Tipos y clases Tema 3: Tipos y clases Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema 3: Tipos y clases

Más detalles

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales

Más detalles

Tema 3: Tipos y clases

Tema 3: Tipos y clases Tema 3: Tipos y clases Programación declarativa (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema 3: Tipos y clases

Más detalles

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola) Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma

Más detalles

Tipos de datos algebraicos

Tipos de datos algebraicos Tipos de datos algebraicos Taller de Álgebra I Segundo cuatrimestre de 2013 Programación funcional Recordemos que un tipo de datos es un conjunto dotado con una serie de operaciones sobre los elementos

Más detalles

Programación en Lenguaje C

Programación en Lenguaje C Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo

Más detalles

Curso de Programación Avanzada en C

Curso de Programación Avanzada en C Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados

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

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

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos: Tipos de datos. Dato: Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos: I Numéricos: Almacenan números y con

Más detalles

JavaScript: Lenguaje de programación

JavaScript: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Literales Enteros Con base decimal: 45, -43 Con base octal: 043, -054 Con

Más detalles

Representación de la información

Representación de la información Laboratorio de Introducción a las Ciencias de la Computación Página 1 UNIERSIDAD CATÓLICA DE SANTA MARÍA PROGRAMA PROESIONAL DE INGENIERÍA DE SISTEMAS SESIÓN 2: Representación de la información OBJETIOS

Más detalles

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo

Más detalles

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES

TEMA 02 TIPOS, OPERADORES Y EXPRESIONES TEMA 02 TIPOS, OPERADORES Y EXPRESIONES 2.1.- Introducción. 2.2.- Datos. 2.3.- Entrada y salida básica. 2.4.- Modificadores. 2.5.- Cadenas de caracteres. 2.6.- Operadores. 2.7.- Precedencia de operadores.

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

Tema 3. Patrones y Definiciones de Funciones

Tema 3. Patrones y Definiciones de Funciones Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones para listas Patrones

Más detalles

Estatutos de Control C# Estatutos de Decisión (Selección)

Estatutos de Control C# Estatutos de Decisión (Selección) SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente

Más detalles

Expresiones Lógicas y Operadores sobre Bits

Expresiones Lógicas y Operadores sobre Bits Expresiones Lógicas y Operadores sobre Bits Andrés Arcia Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Programación Digital I 1 Expresión

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

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas Unidad V Análisis Semántico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Analizador semántico 5.2 Verificación de tipos en expresiones. 5.3 Conversión de tipos. 5.4 Acciones agregadas en un analizador sintáctico

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

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

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

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

III. Generación de Código orientado a objetos

III. Generación de Código orientado a objetos III. Generación de Código orientado a objetos UNIDAD III Aspectos fundamentales Del código orientado a objetos. MÓDULOS DE CÓDIGO 1 DE FORMULARIO Almacenan el código en VB 2 ESTÁNDAR 3 DE CLASE Contiene

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

Los tipos de datos primitivos

Los tipos de datos primitivos Los tipos de datos primitivos El lenguaje de programación Java es de tipo estático, lo que significa que todas las variables debe ser declarado antes de que puedan ser utilizados visto. Se trata de la

Más detalles

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas Desarrollo de Programas Prof. Lisbeth C. Pérez Rivas lisbethpe@ula.ve Desarrollo de Programas Ejercicio: Calcular el sueldo neto de un trabajador conociendo el número de horas trabajadas, la tarifa horaria

Más detalles

Programación. Test Autoevaluación Tema 3

Programación. Test Autoevaluación Tema 3 Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.

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

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

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

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados

Más detalles

Tema 9: Declaraciones de tipos y clases

Tema 9: Declaraciones de tipos y clases Tema 9: Declaraciones de tipos y clases Informática (2016 17) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 41 Tema 9:

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 3. Tipos de datos simples

Tema 3. Tipos de datos simples Tema 3. Tipos de datos simples Contenido del tema: Concepto de tipo. Tipos simples. Operadores. Expresiones. Semántica. Tipos y expresiones en lenguaje C++ Francisco J. Veredas Dpto. Lenguajes y Ciencias

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 2 Expresiones, operadores y estructuras de control Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo Fundamentos de Informática. Departamento de Ingeniería

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

Tema 9: Declaraciones de tipos y clases

Tema 9: Declaraciones de tipos y clases Tema 9: Declaraciones de tipos y clases Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla

Más detalles

Tema 4: Definición de funciones

Tema 4: Definición de funciones Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Constantes como patrones Variables como

Más detalles

LENGUAJE. Tema 2 Elementos de un programa

LENGUAJE. Tema 2 Elementos de un programa LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar

Más detalles

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes: Constantes Las constantes se pueden declarar con la palabra reservada const y se le asigna un valor en el momento de la declaracion, este valor no se puede modificar durante el programa y cualquier intento

Más detalles

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Sintaxis de Java Sintaxis Define las reglas que determinar el uso de palabras clave, operadores y variables para construir y evaluar expresiones.

Más detalles

Programación estructurada (Tipos, operadores y expresiones)

Programación estructurada (Tipos, operadores y expresiones) Programación estructurada (Tipos, operadores y expresiones) M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 15-I Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

Manual de turbo pascal

Manual de turbo pascal Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de

Más detalles

Tipos de datos y operadores en C++

Tipos de datos y operadores en C++ Tipos de datos y operadores en C++ El tipo de dato determina la naturaleza del valor que puede tomar una variable. Un tipo de dato define un dominio de valores y las operaciones que se pueden realizar

Más detalles

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos 1.1 Tipos de Datos Primitivos 1.2 Tipos de datos estructurados 1.2.1 Arreglos unidimensionales, bidimensionales y cadenas de caracteres 1.2.2 Registros o Estructuras (unión y estructura) 1.3 Definición

Más detalles

Programación Básica. Martin Méndez Facultad de Ciencias Universidad Autónoma de San Luis Potosí

Programación Básica. Martin Méndez Facultad de Ciencias Universidad Autónoma de San Luis Potosí Programación Básica Martin Méndez Facultad de Ciencias Universidad Autónoma de San Luis Potosí Objetivo del Curso Estudiar y aplicar los conceptos básicos de programación estructurada en un lenguaje de

Más detalles

Tema 3. Patrones y Definiciones de Funciones

Tema 3. Patrones y Definiciones de Funciones Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones

Más detalles

Isabelle como un lenguaje funcional

Isabelle como un lenguaje funcional Capítulo 1 Isabelle como un lenguaje funcional 1.1 Introducción Nota 1.1.1. Esta notas son una introducción a la demostración asistida utilizando el sistema Isabelle/HOL/Isar. La versión de Isabelle utilizada

Más detalles

Tipos de Datos. Tipos de Datos Simples Estándar

Tipos de Datos. Tipos de Datos Simples Estándar Departamento de Informática Universidad Técnica Federico Santa María Tipos de Datos Programación de Computadores Profesor: Teddy Alfaro Tipos de Datos Simples Estándar char es un carácter (alfanumérico),

Más detalles

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * / undamentos de sintaxis en algunas instrucciones de C#.Net Dr. Ramón Roque Hernández Identificadores Un identificador le da nombre único a un elemento en un programa (ariables, procedimientos, etc.). No

Más detalles

Introducción a PL/SQL

Introducción a PL/SQL Introducción a PL/SQL Grupo de Ingeniería del Software y Bases de Datos Departamento de Lenguajes y Sistemas Informáticos Universidad de Sevilla noviembre 2011 Objetivos de este tema Conocer PL/SQL. PL/SQL

Más detalles

1 ELEMENTOS BASICOS DEL LENGUAJE

1 ELEMENTOS BASICOS DEL LENGUAJE 1 ELEMENTOS SICOS DEL LENGUJE Contenido: Variables su declaracion y asignacion Caracteres en java Secuencias de escape y comentarios Tipos de datos Operadores aritméticos, relacionales y lógicos Entrada

Más detalles

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

Java para programadores

Java para programadores Java para programadores Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Contenidos Variables. Tipos

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

Metodologías de Programación II Dominios y Excepciones

Metodologías de Programación II Dominios y Excepciones Metodologías de Programación II Dominios y Excepciones Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial aguerra@uv.mx http://www.uv.mx/aguerra

Más detalles

Programación en java. Estructuras algorítmicas

Programación en java. Estructuras algorítmicas Programación en java Estructuras algorítmicas Estructuras algoritmicas 1. Conceptos basicos 1. Dato 2. Tipos de datos 3. Operadores 2. dsd Conceptos Basicos DATO: se considera una representación simbólica

Más detalles

INICIACIÓN A LA PROGRAMACIÓN II

INICIACIÓN A LA PROGRAMACIÓN II INICIACIÓN A LA PROGRAMACIÓN II 1. Caracteres... 2 2. Identificadores... 4 3. Palabras clave o reservadas... 5 4 Variables y constantes. Datos... 6 5 Arrays... 8 6. Comentarios... 9 7. Expresiones... 11

Más detalles

Operadores. Javier Fernández Rivera -

Operadores. Javier Fernández Rivera - Programación en C Operadores Javier Fernández Rivera - www.aurea.es Los operadores Son los elementos o caracteres gráficos encargados de manipular los datos, que pueden ser dados por números, caracteres,

Más detalles

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores

Tipos De Datos. Numéricos. Alfanuméricos (string) Arreglos (Vectores, Matrices) Estructurados Registros (Def. Por el Archivos Usuario) Apuntadores Tipos De Datos Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como b, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...

Más detalles

VARIABLES TIPOS FUNDAMENTALES

VARIABLES TIPOS FUNDAMENTALES VARIABLES Una variable es un espacio reservado en el ordenador para contener valores que pueden cambiar durante la ejecución de un programa. Los tipos determinan cómo se manipulará la información contenida

Más detalles

Tema 3: Características de la programación funcional. Sesión 5: El paradigma funcional (1)

Tema 3: Características de la programación funcional. Sesión 5: El paradigma funcional (1) Tema 3: Características de la programación funcional Sesión 5: El paradigma funcional (1) Referencias Capítulo 1.1.5 SICP: [[http://mitpress.mit.edu/sicp/full-text/book/book-z- H-10.html#%_sec_1.1.5][The

Más detalles

REPRESENTACIÓN DE DATOS

REPRESENTACIÓN DE DATOS REPRESENTACIÓN DE DATOS Tipos de datos primitivos Tipos de Datos Estructurados TIPOS DE DATOS SIMPLES O PRIMITIVOS Dato Longitud Rango 2 TIPOS DE DATOS SIMPLES O PRIMITIVOS Surgen de la necesidad de tener

Más detalles

Tema 8: Tipos de datos. Sesión 24: Tipos de datos (1)

Tema 8: Tipos de datos. Sesión 24: Tipos de datos (1) Tema 8: Tipos de datos Sesión 24: Tipos de datos (1) Referencias Programming Languages Pragmatics: Capítulo 7, apartados 7.1 (Type Systems) y 7.2 (Type Checking) Programming in Scala: Capítulo 5 (Basic

Más detalles

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,

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

como les va con las practicas?

como les va con las practicas? como les va con las practicas? Problemas NP-completos y Estructuras de datos básicas (representación de datos) mat-151 1 Una maquina de Turing Aceptation state Una maquina de Turing Maquina de Turing Determinística,

Más detalles

El sistema de clases de Haskell. Introducción

El sistema de clases de Haskell. Introducción Capítulo 5. El sistema de clases de Haskell 56 El sistema de clases de Haskell Introducción Función monomórfica: sólo se puede usar para valores de un tipo concreto not :: Bool Bool not True = False not

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

Área: INFORMÁTICA. Saber- Saber: Identificar DFD como herramienta para escribir los algoritmos de forma lógica.

Área: INFORMÁTICA. Saber- Saber: Identificar DFD como herramienta para escribir los algoritmos de forma lógica. Guía No: 2 Subdirección de Educación Departamento de Educación Contratada Colegio CAFAM Bellavista CED GUIA DE APRENDIZAJE Docente: Luz del Carmen Barrera Área: INFORMÁTICA Fecha: II BIMESTRE 2014 Grado:

Más detalles