aquiles

16
1 MATERIA: PROGRAMACION LOGICA FUNCIONAL TEMA: UNIDAD 1: CONCEPTOS FUNDAMENTALES 1.1 ESTILOS DE PROGRAMACION 1.2 EVALUACION DE EXPRESIONES 1.3DEFICION DE FUNCIONES 1.4 DISCIPLINA DE TIPOS 1.5 TIPOS DE DATOS ALUMNO: DAVINSON HERNANDEZ MELENDEZ ESPECIALIDAD: ING.SISTEMAS COMPUTACIONALES CATEDRATICO: RUIZ CELAYA FLAVIO AQUILES

Upload: deyvid-fifa-che

Post on 09-Apr-2016

9 views

Category:

Documents


0 download

DESCRIPTION

unidad 1 logica y funcional

TRANSCRIPT

Page 1: Aquiles

H.JUCHITAN DE ZARAGOZA, OAX. A 14 DE SEPTIEMBRE DEL 2015

1

MATERIA:

PROGRAMACION LOGICA FUNCIONAL

TEMA: UNIDAD 1: CONCEPTOS FUNDAMENTALES

1.1 ESTILOS DE PROGRAMACION1.2 EVALUACION DE EXPRESIONES

1.3DEFICION DE FUNCIONES1.4 DISCIPLINA DE TIPOS

1.5 TIPOS DE DATOSALUMNO:

DAVINSON HERNANDEZ MELENDEZESPECIALIDAD:

ING.SISTEMAS COMPUTACIONALESCATEDRATICO:

RUIZ CELAYA FLAVIO AQUILESGRUPO:

7O

Page 2: Aquiles

1.1 Estilos de programaciónEstilo de programación (también llamado estándares de código o convención de código) es un término que describe convenciones para escribir código fuente en ciertos lenguajes de programación.

El estilo de programación es frecuentemente dependiente del lenguaje de programación que se haya elegido para escribir. Por ejemplo el estilo del lenguaje de programación C variará con respecto al del lenguaje BASIC.

Estilo K&R es el más utilizado en el lenguaje C y PHP, el estilo fue llamado de esta forma porque fue usado por Kernighan y Ritchies en su libro The C ProgrammingLenguage.

Estilo Allman fue definido por Eric Allman, se trata de crear una nueva línea para las llaves, e identificar  el código debajo de ellas.

Estilo BSD KNF también conocido como estilo Kernel Normal From, es la manera más usada para el código de la distribución del software del sistema operativo de Berkeley.

Estilo Whitesmiths también llamado estilo wishart, se coloca las llaves asociadas con la instrucciones de control.

En java, la programación orientada a objetos gira sobre una estructura en las cuales se especifican algunos cuales son:

Una clase es una plantilla desde la que se pueden crear objetos. La definición de una clase incluye especificaciones formales para la clase y cualquier dato y métodos incluidos en ella.

Un objeto es una instancia de una clase, al igual que una variable es una instancia de un tipo de dato. Se puede pensar en una clase como el tipo de un objeto y se puede pensar en el objeto como una instancia de una clase. Los objetos encapsulan métodos y variables de instancia.

Archivos fuente cada programa en Java es una colección de uno o más archivos. El programa ejecutable se obtiene compilando estos archivos. En cada archivo especifica su contenido como sigue:

Los paquetes (instrucción package). Los archivos de biblioteca (Instrucciones import). Un comentario explicando el objetivo del archivo. Las clases que defines en ese archivo.

Todo método excepto main debe empezar con un comentario en formato javadoc. El cuerpo de un método no debe exceder 30 líneas de código. Esto te obligará a dividir un método complejo en varios más sencillos.

2

Page 3: Aquiles

Los identificadores deben ser elegidos de tal manera que el solo nombre describa el uso que se dará dentro del programa, por tanto no es recomendable usar identificadores de una letra, excepto en el for, ni abreviaturas raras o ambiguas.etc.

1.2 Evaluación de una expresión en programación orientada a objetos Una expresión aritmética está formada por operandos y operadores. La expresión x*y - (a+b)consta de los operadores *, -, + y de los operandos x, y, a, b. Los operandos pueden ser valores constantes, variables o, incluso, otra expresión. Los operadores son los símbolosconocidos de las operaciones matemáticas. La evaluación de una expresión aritmética da lugar aun valor numérico, se realiza sustituyendo los operandos que son variables por valores concretosy ejecutando las operaciones aritméticas representadas por los operadores. Si los operandos dela expresión anterior toman los valores x = 5, y = 2, a = 3, b = 4, el resultado de laevaluación es:

5*2 – (3+4) = 5*2 – 7 = 10 – 7 = 3

La forma habitual de escribir expresiones matemáticas es aquella en la que el operador estáentre sus dos operandos. La expresión anterior está escrita de esa forma, y recibe el nombre denotación infija. Esta forma de escribir las expresiones exige, en algunas ocasiones, el uso deparéntesis para encerrar subexpresiones con mayor prioridad.Los operadores, como es sabido, tienen distintos niveles de precedencia o prioridad a lahora de su evaluación. A continuación se recuerdan estos niveles de prioridad en orden demayor a menor:

1.-Paréntesis: ( )2.- Potencia: ^3.- Multiplicación/división: *, /4.- Suma/Resta: +, -

Normalmente, en una expresión hay operadores con la misma prioridad. A igualdad de precedencia,los operadores se evalúan de izquierda a derecha (asociatividad), excepto la potencia, qué es de derecha a izquierda.

Notación prefija y notación postfija de unas expresiones aritmética

La forma habitual de escribir operaciones aritméticas (notación infija) sitúa el operador entre sus dos operandos. Esta forma de notación obliga, en muchas ocasiones, a utilizar paréntesis paraindicar el orden de evaluación. Las expresiones siguientes:

r = a*b/(a+c) g = a*b/a+c

3

Page 4: Aquiles

Son distintas al no poner paréntesis en la expresión g. Igual ocurre con estas otras:

r = (a-b)^c+d g = a-b^c+d

Existen otras formas de escribir expresiones aritméticas, que se diferencian por la ubicacióndel operador respecto de los operandos. La notación en la cual el operador se coloca delante delos dos operandos, se conoce como notación prefijay se conoce como notación polaca (en honordel matemático polaco que la propuso).

Ejemplo

Dadas las expresiones: a*b/(a+c); a*b/a+c; (a-b)^c+d . Escribir las expresionesequivalentes en notación prefija.

Se escribe, paso a paso, la transformación de cada expresión aritmética en la expresión equivalenteen notación polaca.

a*b/(a+c) (infija) → a*b/+ac→ *ab/+ac→ /*ab+ac (polaca)a*b/a+c (infija) → *ab/a+c→ /*aba+c→ +/*abac (polaca)(a-b)^c+d (infija) → -ab^c+d→ ^-abc+d→ +^-abcd (polaca)

Se observa que no son necesarios los paréntesis al escribir la expresión ennotación polaca. Ésta es su propiedad fundamental: el orden de ejecución de las operaciones estádeterminado por las posiciones de los operadores y los operandos en la expresión.

Notación postfija

Hay más formas de escribir las expresiones. La tercera notación más utilizada se denominapostfija o polaca inversa y coloca el operador a continuación de sus dos operandos.

Ejemplo

Dadas las expresiones: a*b/(a+c); a*b/a+c; (a-b)^c+d, escribir las expresionesequivalentes en notación postfija.

Paso a paso, se transforma cada subexpresión en notación postfija.

a*b/(a+c) (infija) → a*b/ac+ → ab*/ac+ → ab*ac+/ (polaca inversa)a*b/a+c (infija) → ab*/a+c→ ab*a/+c → ab*a/c+ (polaca inversa)(a-b)^c+d (infija) → ab-^c+d→ ab-c^+d → ab-c^d+ (polaca inversa)

Paso a paso, se transforma cada subexpresión en notación postfija.a*b/(a+c) (infija) → a*b/ac+ → ab*/ac+ → ab*ac+/ (polaca inversa)a*b/a+c (infija) → ab*/a+c→ ab*a/+c → ab*a/c+ (polaca inversa)

4

Page 5: Aquiles

(a-b)^c+d (infija) → ab-^c+d→ ab-c^+d → ab-c^d+ (polaca inversa)

NormaLas diferentes formas de escribir una misma expresión aritmética dependen de la ubicaciónde los operadores respecto a los operandos. Es importante tener en cuenta quetanto en la notación prefija como en la postfija no son necesarios los paréntesis paracambiar el orden de evaluación.

Operadores aritméticos

La mayoría de los programas realizan cálculos aritméticos. Los operadores aritméticos se sintetizan en la tabla. Observe el uso de varios símbolos especiales que no se utilizan en álgebra. El asterisco (*) indica la multiplicación, y el signo de porcentaje (%) es el operador residuo, el cual describiremos en breve. Los operadores aritméticos en la tabla son operadores binarios, ya que funcionan con los operandos. Por ejemplo, la expresión f + 7 contiene el operador binario + y los dos operandos f y 7.

La división de enteros produce un cociente entero. Por ejemplo, la expresión 7 / 4 da como resultado 1, y la expresión 17 / 5 da como resultado 3. Cualquier parte fraccionaria en una división de enteros simplemente se descarta (se trunca);no ocurre un redondeo. Java proporciona el operador residuo, %, el cual produce el residuo después de la división. La expresión x % y produce el residuo después de que x se divide entre y. Por lo tanto, 7 % 4 produce 3, y 17 % 5 produce 2. Este operador se utiliza más comúnmente con operandos enteros, pero también puede usarse con otros tipos aritméticos.

Paréntesis para agrupar subexpresiones

Los paréntesis se utilizan para agrupar términos en las expresiones en Java, de la misma manera que en las expresiones algebraicas. Por ejemplo, para multiplicar a por la cantidad b + c, escribimosa * ( b + c )

5

Page 6: Aquiles

Si una expresión contiene paréntesis anidados, como

( ( a + b ) * c )

Se evalúa primero la expresión en el conjunto más interno de paréntesis (a + b en este caso).

Reglas de precedencia de operadores

Java aplica los operadores en expresiones aritméticas en una secuencia precisa, determinada por las siguientes reglas de precedencia de operadores, que casi siempre son las mismas que las que se utilizan en álgebra:

1. Las operaciones de multiplicación, división y residuo se aplican primero. Si una expresión contiene varias de esas operaciones, los operadores se aplican de izquierda a derecha. Los operadores de multiplicación, división y residuo tienen el mismo nivel de precedencia.

2. Las operaciones de suma y resta se aplican a continuación. Si una expresión contiene varias de esas operaciones, los operadores se aplican de izquierda a derecha. Los operadores de suma y resta tienen el mismo nivel de precedencia.Estas reglas permiten a Java aplicar los operadores en el orden correcto.1 Cuando decimos que los operadores se aplican de izquierda a derecha, nos referimos a su asociatividad. Algunos se asocian de derecha a izquierda. En la tabla muestra como se sintetiza estas reglas de precedencia de operadores.

Ejemplos de expresiones algebraicas y de java

Ahora consideremos varias expresiones en vista de las reglas de precedencia de operadores. Cada ejemplo Enlista una expresión algebraica y su equivalente en

6

Page 7: Aquiles

Java. El siguiente es un ejemplo de una media(promedio) aritmética de cinco términos:

Los paréntesis son obligatorios, ya que la división tiene una mayor precedencia que la suma. La cantidadcompleta (a + b + c + d + e) va a dividirse entre 5. Si por error se omiten los paréntesis, obtenemosa + b + c + d + e / 5, lo cual da como resultado

El siguiente es un ejemplo de una ecuación de línea recta:

No se requieren paréntesis. El operador de multiplicación se aplica primero, ya que la multiplicacióntiene mayor precedencia sobre la suma. La asignación ocurre al último, ya que tiene menor precedenciaque la multiplicación o suma.

Los números dentro de los círculos bajo la instrucción indican el orden en el que Java aplica los operadores.Las operaciones *, %y /se evalúan primero, en orden de izquierda a derecha (es decir, se asocian de izquierda a derecha), ya que tienen mayor precedencia que + y -. Las operaciones + y - se evalúan a continuación. Estas operaciones también se aplican de izquierda a derecha. El operador de asignación (=) se evalúa al último.

Toma de decisiones: operadores de igualdad y relaciónales

Una condición es una expresión que puede ser verdadera (true) o falsa (false). Esta sección presenta la instrucción i f de Java, la cual permite que un programa tome una decisión, con base en el valor de una condición. Por ejemplo, la condición “calificación es mayor o igual que 60” determina si un estudiante pasó o no una prueba. Si la condición en una instrucción i f es verdadera, el cuerpo de la instrucción if se ejecuta. Si la condición es falsa, el cuerpo no se ejecuta. Veremos un ejemplo en breve.

7

Page 8: Aquiles

Las condiciones en las instrucciones i f pueden formarse utilizando los operadores de igualdad(== y !=) y los operadores relaciónales (>, <, >= y <=) que se sintetizan en la tabla. Ambos operadores de igualdad tienen el mismo nivel de precedencia, que es menor que la precedencia de los operadores relaciónales. Los operadores de igualdad se asocian de izquierda a derecha. Todos losoperadores relaciónales tienen el mismo nivel de precedencia y también se asocian de izquierda aderecha.

1.3 Definición de funciones

Los métodos (también conocidos como funciones o procedimientos en otros lenguajes) permiten al programador dividir un programa en módulos, por medio de la separación de sus tareas en unidadesautónomas. Usted ha declarado métodos en todos los programas que ha escrito. Las instrucciones en loscuerpos de los métodos se escriben sólo una vez, se ocultan de otros métodos y se pueden reutilizar desdevarias ubicaciones en un programa.

Una razón para dividir un programa en módulos mediante los métodos es el enfoque “divide yvencerás”, que hace que el desarrollo de programas sea más fácil de administrar, ya que se pueden construirprogramas a partir de piezas pequeñas y

8

Page 9: Aquiles

simples. Otra razón es la reutilización de software (usarlos métodos existentes como bloques de construcción para crear nuevos programas). A menudo se puedencrear programas a partir de métodos estandarizados, en vez de tener que crear código personalizado.

Por ejemplo, no tenemos que definir cómo leer datos del teclado; Javaproporciona estas herramientas en la clase Scanner. Una tercera razón es para evitar la repetición decódigo. El proceso de dividir un programa en métodos significativos hace que el programa sea másfácil de depurar y mantener.

Notas acerca de cómo declarar y utilizar los métodos

Hay tres formas de llamar a un método:1. Utilizar el nombre de un método por sí solo para llamar a otro método de la misma clase; comomaximoCnumerol, numero2, numero3 ) en la línea 21 de la figura de abajo.

2. Usar una variable que contiene una referencia a un objeto, seguida de un punto (.) y del nombredel método para llamar a un método no static del objeto al que se hace referencia; comola llamada al método en la línea 13 de la figura 5.10, mi Li broCalificaciones. mostrarMensajeO , con lo cual se llama a un método de la clase LibroCalificaciones desde el método mainde PruebaLibroCalificaciones.

3. Utilizar el nombre de la clase y un punto (.) para llamar a un método static de una clase, como Math.sqrt( 900.0 ) en la figura de abajo.

9

Page 10: Aquiles

1.4 Disciplina de tiposEn la programación funcional, el universo de valores está dividido en colecciones organizadas llamadas tipos. Hasta ahora, hemos mencionado Integer y Float, pero hay también otras clases de números que incluyen Int y Double, Así como booleanos (elementos de Bool), caracteres (elementos de Char), listas, arboles, y otros. Más aun, hemos visto ya como combinar tipos entre sí para construir una variedad infinita de otros tipos; por ejemplo, Integer—Float, (Float, Float), etc.

Cada tipo tiene asociadas ciertas operaciones que no son significativas para otros tipos. Por ejemplo, no es razonable sumar un numero con un carácter o multiplicar dos funciones entre si. Un principio importante de muchos lenguajes de programación es que a toda expresión bien formada se le puede asignar un tipo. Más aun, este tipo se puede deducir de las partes constituyentes de la expresión. En otras palabras, así como el valor de una expresión depende únicamente de los valores de sus expresiones constituyentes, ocurre lo mismo con su tipo. Este principio se denomina disciplina de tipos.

10

Page 11: Aquiles

1.5 Tipos de datos

Java, como la mayoría de los lenguajes de programación, dispone de tipos de datospara definir la naturaleza de la información que manipulan los programas. Para codificar la información más sencilla (como números enteros, números reales, caracteres, etc.), se disponede los llamados tipos de datos simples.Además, Java es un lenguaje orientado a objetos, lo que implica que existen tipos dedatos objeto. Por tanto, los datos con los que operan los programas en Java también pueden almacenarse en entidades más complejas, llamadas objetos, y dichos objetos deben crearsecomo instancias de clases. En Java se hablara de objetos de una determinada clase de forma similar a como se habla de variables de un determinado tipo.

Tipos de datos simples

Los tipos primitivos disponibles en Java, los valores que pueden representar y su tamaño, se muestran en la tabla

Para estos tipos de datos más simples o primitivos, Java proporciona un mecanismosencillo para declarar variables: especificar el tipo de la variable y su nombre (identificadorelegido para la variable). Por ejemplo, si en un programa se necesitan tres variables, una detipo entero que llamaremos contador y las otras de tipo real y de nombres dato y resultado,se pueden declarar mediante:

Cuando se escriben programas en Java, se pueden usar variables que sean objetos dedeterminadas clases (sea porque el mismo programador haya escrito el código de esas clases, sea porque dichas clases estén disponibles en librerías publicas). Es decir, se pueden declarar objetos de clases definidas por el programador o de clases estándar (ya definidas en librerías del lenguaje Java).

11

Page 12: Aquiles

Los objetos declarados en nuestros programas pueden verse como variables del programa,al igual que las variables de los tipos simples. Las principales diferencias son las siguientes:

Los objetos no suelen almacenar un solo dato simple, sino varios ítems de información (que llamamos atributos).

Los objetos disponen además de una serie de funciones (que llamamos métodos) para manipular la información que almacenan.

Los objetos de cualquier clase se declaran de manera similar a las variables de tipos simples.

Por ejemplo, si en un programa se necesitan tres objetos, uno de la clase Date que llamaremos ayer y dos de la clase String y de nombres una Palabra y otra Palabra, se pueden declarar mediante:

Date ayer;

StringunaPalabra, otraPalabra;Sin embargo, y a diferencia de las variables de tipo simple, los objetos han de ser instanciados (es decir, debe reservarse explícitamente la memoria necesaria para guardar la información que contienen).Los objetos se instancian mediante el operador new y la invocación de un método especialde la clase llamado constructor (método que tiene el mismo nombre de la clase). Por ejemplo, con la siguiente instrucción se construiría un objeto llamado hoy de la clase Date:

Date hoy = new Date();

El objeto ayer esta declarado, el objeto hoy está declarado e instanciado.Todo lo relativo a los tipos de dato objeto será tratado en profundidad en el siguientetema.

Valores de las variables y constantes

Tanto para definir las constantes como para asignar valores a las variables, se debe tener en cuenta las formas validas de especificar sus valores, según su tipo de dato.

12

Page 13: Aquiles

Bibliografía Luis, Ignacio (2008). Estructuras de datos en java (1° Edición). Mg Graw

Hill/Interamericana de España. Paul, Harvey (2012). Java como programar (9° edición). Pearson Education:

México. Richard Bird (2000). Introducción a la programación Funcional con Haskell (2°

edición). Pearson Education: México.

13