Lenguajes de Programación

Slides:



Advertisements
Presentaciones similares
ANALIZADOR SEMANTICO DIANA CAROLINA CASTAÑO YANCI VIVIANA CASTRO PEDRO LUIS FLÓREZ SANTIAGO GUTIÉRREZ A.
Advertisements

2. Manejo de memoria Manejo de memoria estática
Estructuras de control
Introducción a C#.
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Curso de java básico (scjp)
2 Estructuras lineales.. Qué es una estructura? La estructura es una manera de conectar los valores y de manera automática conectarlos de manera que tengan.
SENTENCIAS SECUENCIALES
Lenguaje PHP Capítulo 4.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Manejo de errores y excepciones
ADA: lenguaje de programación concurrente
Te presento a Python Qué es Python? Lenguaje interpretado
Interpretando objetos
Desarrollo de Aplicaciones para Internet
Curso de Programación 1 Plan 97
Tema 2: Lenguaje PHP básico
INFORMATICA I Arreglos 1 CLASE 17.
Informática II Prof. Dr. Gustavo Patiño MJ
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Herramientas Grep y AWK
1.2 Sintaxis del lenguaje Java.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Preguntas tipo test (Tema I)
PL/SQL Francisco Moreno Universidad Nacional.
Teoría de lenguajes y compiladores
Ruby Rodrigo Cornejo Mejías Jonathan Cea Chávez Marcelo Gómez Gonzales
Objetos y Clases en Java
Programación Orientada a Objetos en Java
Vectores en java.
1 Procedimientos Es un conjunto de sentencias incluidas entre las declaraciones Sub o Function y End Sub/Function VB utiliza varios tipos de procedimientos:
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
Universidad de Tarapacá Fundamentos Lenguaje y Programación Rodrigo Cornejo Mejías Jonathan Cea Chávez Marcelo Gómez Gonzales.
Tema 6: Clases Antonio J. Sierra.
If anidados y Switch Prof. Lillian Bras.
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
Procesadores del Lenguaje
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
PL/SQL Francisco Moreno Universidad Nacional.
Página Web del Lenguaje Pascal.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Conversión cadena a número
ESTRUCTURA DE DATOS EN JAVA
Tema 11: Excepciones Antonio J. Sierra.
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Alcance Dinámico La Asociación Actual para un Nombre dado es el encontrado recientemente durante la ejecución, y no a sido destruido aun por el retornado.
Teoría – Alejandro Gonzalez
Módulo 8: Manejo de Errores y Excepciones
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Control de Flujo.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
PEDRO ALBERTO ARIAS QUINTERO. El shell es un intérprete de órdenes, los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
CONCEPTOS.
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.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
Visual Basic Prof.: Carol Briones García. Uso de Archivos  Definición  Es un conjunto de información que se almacena en algún medio de escritura que.
Programación en Visual Basic
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
U niversidad de G uadalajara Centro Universitario de Ciencias Exactas e Ingenierías Ponentes: Muñoz Guzmán Ramón Gallardo Olivares Mario Solís Flores José.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Lenguajes de Programación Ruby Lenguajes de Programación

Características de Ruby Interpretado Ruby es el lenguaje interpretado, por lo que no tiene que volver a compilar para ejecutar un programa escrito en Ruby. Las variables no tienen ningún tipo (tipeo dinámico) Variables en Ruby pueden contener datos de cualquier tipo. Usted no tiene que preocuparse sobre cómo escribir variables. Por consiguiente, es débil en la verificación en tiempo de compilación. No necesita declaración Usted puede utilizar variables en sus programas sin ningún tipo de declaraciones de Ruby.  Los nombres de las variables denotan su ámbito de aplicación (local, global, etc) Sintaxis simple Ruby tiene una sintaxis simple ligeramente influenciada por Eiffel.

Características de Ruby Gestión Automática de Memoria Recolección de Basura Todo es un objeto Ruby es un lenguaje de orientación a objetos pura. Incluso los datos básicos como enteros son tratados como objetos de manera uniforme. Clase, herencia, métodos Por supuesto, como un lenguaje OO, Ruby tiene características como las clases, herencia, métodos, etc. No maneja herencia múltiple Dinámico Puede ser modificado en tiempo de ejecución

Características de Ruby Iteradores Ruby tiene iteradores para construcción de lazos. Bloques Permiten hacer porciones de código que son objetos. Tratamiento de textos y de expresiones regulares Bignums Con built-in bignums, se puede calcular factoriales (400), por ejemplo. El manejo de excepciones Como en Java Acceso directo al SO  Puede ser utilizado en la programación del sistema.

Clase Range Clase Range (Rango) Método each Describe un intervalo (1..20) (“a”..”m”) Cuando se usa tres punto, el número de la derecha no se incluye. Ej: (1…10) Método each Para cada elemento del rango, ejecuta lo que contiene el bloque adjunto (1..20).each {|i| print i*i, "\n"}

Range También está soportada la iteración al estilo tradicional for i in (1..10) do puts( i ) end Cambiar un rango a arreglo: mi_rango.to_a devuelve un arreglo, con los mismos elementos de rango

Arrays Arreglos a1 = [1,'two', 3.0, array_length( a0 ) ] Un arreglo es una colección secuencial de referencias a objetos, cada una ocupará una posición, identificada con un índic entero no negativo. A diferencia de otros lenguajes, un arreglo puede tener items que pertenecen a distintos tipos de datos. Ej: a1 = [1,'two', 3.0, array_length( a0 ) ]

Arrays Creación de un arreglo def hello return "hello world" end x = [1+2, hello, `ver`]

Accediendo a un Arreglo a = [ 1, 3, 5, 7, 9 ] a[-1] » 9 a[-2] » 7 a[-99] » nil a[1..3] » [3, 5, 7] a[1...3] » [3, 5] a[3..3] » [7] a[-3..-1] » [5, 7, 9]

Hashes Tambien se los conoce como arreglos asociativos o diccionarios. Son similares a los arreglos, en el sentido que es una colección indexada de referencias a objetos Sin embargo, mientras que los arreglos se indexan con un entero, los hash se pueden indexar con objetos de cualquier tipo Al almacenar un Hash, deberá suplir 2 objetos: la clave y el valor

Hashes Ejemplo h = { 'dog' => 'canine', 'cat' => 'feline', 'donkey' => 'asinine' } h.length » 3 h['dog'] » "canine“ h['cow'] = 'bovine‘ h[12] = 'dodecine‘ h['cat'] = 99 h » {"donkey"=>"asinine", "cow"=>"bovine", "dog"=>"cani ne", 12=>"dodecine", "cat"=>99}

Bloques Un bloque puede aparecer en el código adyacente a la llamada a un método, escrito como ultimo parámetro del método El código del bloque no es ejecutado inmediatamente al ser encontrado. En cambio Ruby recuerda el contexto en el cual el bloque aparece y entonces llama al método

Bloques def fibUpTo(max) i1, i2 = 1, 1 # asignación en paralelo while i1 <= max yield i1 i1, i2 = i2, i1+i2 end end fibUpTo(1000) { |f| print f, " " } Resultado: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

Yield Dentro del método, la sentencia yield invocará al bloque, como si se tratara de algún método Cuando yield es ejecutado, invoca al código del bloque Cuando el bloque finaliza, el control regresa inmediatamente a la línea después del yield

Argumentos de bloques En el bloque, el argumento aparece entre barras verticales.Es aquí donde se recibe los valores pasados a yield Aunque es común pasar sólo un valor al bloque, se pueden tambien pasar más de un valor

Bloques El bloque tambien puede retornar un valor al método, a través de yield: yield toma el valor de la última expresión evaluada en el bloque

Algunos métodos de la clase enum que trabajan con bloques each collect find

Ejemplo con find Dir.entries('C:\\') Devuelve un Arreglo cuyos elementos son los nombres de archivo del directorio indicado. El siguiente ejemplo usa find, para encontrar el primer elemento del arreglo que cumple la condición: Dir.entries('C:\\').find {|archivo| archivo.match('htm') } => "DocProyect.html"

Que valor retornan las expresiones de abajo? f=3 begin if f==1 then f=12 else f==h end end “h“ if f==1 then f=12 else puts(“prueba”) end End =>nil

Expresiones Regulares "Escuela"=~/cue/ "Escuela"=~/^c/ "Escuela"=~/^E/ "1011100"=~/1(0|1)*00/

Expresiones Regulares Cualquier carácter, excepto \/^$|.+*?()[]\{\}, hace match con si mismo. ^ match con el inicio de una línea, $ match con el fin de una línea. . Match con cualquier caracter. a* cero o más repeticiones de a. a+ equivalente a aa*. a|b hace match a a or b. [characters] Hace Match con un rango de caracteres. Ej: [a-zA-Z0-9] hace match a caracteres o alfanuméricos [^characters] Hace Match a la negación de un rango de caracteres. Ejemplo: [^a-zA-Z0-9] hace match con todos los caracteres que NO son alfanuméricos.

Expresiones Regulares Dir.entries('C:\\').find {|archivo| archivo.match('htm') } => "DocProyect.html" Dir.entries('C:\\').find {|archivo| archivo=~/.*ht.*|.*[0-9].*/ } => "11MejObrasMusiClasica"

Ejemplo de lectura de archivo irb(main):001:0> arr = IO.readlines("abrir.txt") ["123;1+2\n", "58+78;47\n", "12;1+1\n", "*3;*1\n", "*6;*2\n", "*2;*10\n", "*2;as\n", "*2;12\n", "70;*1\n", "*4;*5\n", "78;*4\n", "78;*13\n", "78;*as\n", "*13;*17\n", "*15;*2\n", "*16;*1\n"] Arr.map es lo mismo que arr.collect irb(main):002:0> arr.map { |a| a.chomp.split(";")} => [["123", "1+2"], ["58+78", "47"], ["12", "1+1"], ["*3", "*1"], ["*6", "*2"], ["*2", "*10"], ["*2", "as"], ["*2", "12"], ["70", "*1"], ["*4", "*5"], ["78", "*4"], ["78", "*13"], ["78", "*as"], ["*13", "*17"], ["*15", "*2"], ["*16", "*1"]]

Ejemplo. En base al arreglo anterior, obtener un arreglo, donde cada elemento es a su vez un arreglo con 2 elementos, formados de tomar cada elemento de la cadena, separados por “;” irb(main):002:0> arr.map { |a| a.chomp.split(";")} => [["123", "1+2"], ["58+78", "47"], ["12", "1+1"], ["*3", "*1"], ["*6", "*2"], ["*2", "*10"], ["*2", "as"], ["*2", "12"], ["70", "*1"], ["*4", "*5"], ["78", "*4"], ["78", "*13"], ["78", "*as"], ["*13", "*17"], ["*15", "*2"], ["*16", "*1"]]

Variables, constantes, símbolos Variables / methods: student, i, epsilon, last_time Constants: OldPerson, PDF_KEY, R2D2 Instance Variables: @name, @last_time, @maximum Class Variables: @@lookup_table, @@instance Global Variables: $global, $1, $count Symbols: :name, :age, :Class

Clases

Herencia

Superclases x = 6.class begin x = x.superclass puts(x) end until x == Object =>Fixnum Integer Numeric Object nil

Superclases Función recursiva que muestra todos los ancestros de una clase dada def showFamily( aClass ) if (aClass != nil) then puts(aClass) showFamily( aClass.superclass ) end

Manejo de Excepciones Básicamente, podemos manejar excepciones de la siguiente manera: Begin # Algún código que podría causar una excepción rescue <Exception Class> # Código para recuperarse de una excepción end <Exception Class> puede ser la clase Exception, o una de sus descendientes

Manejo de Excepciones Exception Class StandardError Fatal ZeroDivisionError NameError NoMethodError IOError EOFError TypeError Fatal

rescueException=> def calc( val1, val2 ) begin result = val1 / val2 rescue Exception => e # e va a referenciar a una instancia de Exception puts( e.class ) # Visualizo la clase del objeto e puts( e ) # Muestra la descripción del objeto e result = nil end return result

Manejando errores específicos def calc( val1, val2 ) begin result = val1 / val2 rescue TypeError, NoMethodError => e puts( e.class ) puts( e ) puts( "One of the values is not a number!" ) result = nil rescue Exception => e end return result

Ancestros de una excepción begin x = 1/0 rescue Exception => exc x = 0 puts( exc ) puts( "Family Tree of this exception..." ) showFamily( exc.class ) end

Else-ensure def doCalc( aNum ) begin result = 100 / aNum.to_i rescue Exception => e result = 0 msg = "Error: " + e else msg = "Result = #{result}" ensure msg = "You entered '#{aNum}'. " + msg end return msg