Tema 1 Conceptos Fundamentales

Page 1

Instituto Tecnológico Superior de Huatusco

Docente: MSC. Olivia Labastida Puertos

Tema 1: Conceptos Fundamentales E-mail: olabastidap@huatusco.tecnm.mx


Competencia Específica: Identificar

los

programación.

paradigmas

de

los

lenguajes

de


Paradigma de Programación

Un paradigma de programación es un estilo de desarrollo de programas. Es decir, un modelo para resolver problemas computacionales. Los lenguajes de programación, necesariamente, se encuadran en uno o varios paradigmas a la vez a partir del tipo de órdenes que permiten implementar, algo que tiene una relación directa con su sintaxis.


Paradigma de Programación

Un proceso de diseño que va más allá de una gramática, reglas semánticas y algoritmos, sino que es un conjunto de métodos sistemáticos aplicables en todos los niveles del diseño de programas. Robert Floyd.


¿Cuáles son los principales Paradigmas de Programación? • Imperativo • Los programas se componen de un conjunto de sentencias que cambian su estado. Son secuencias

de

comandos

que

ordenan

acciones a la computadora. • Declarativo • Opuesto

al

imperativo.

Los

programas

describen los resultados esperados sin listar explícitamente los pasos a llevar a cabo para alcanzarlos.


¿Cuáles son los principales Paradigmas de Programación?

• Lógico • El problema se modela con enunciados de lógica de primer orden.

• Funcional • Los programas se componen de funciones, es decir, implementaciones de comportamiento que reciben un conjunto de datos de entrada y devuelven un valor de salida.


¿Cuáles son los principales Paradigmas de Programación? • Orientado a Objetos • El comportamiento del programa es llevado a cabo por objetos, entidades que representan elementos del problema a resolver y tienen atributos y comportamiento. • Dirigido por Eventos • El flujo del programa está determinado por

sucesos externos(por ejemplo, una acción del usuario).


¿Cuáles son los principales Paradigmas de Programación?

• Orientado a Aspectos • Apunta a dividir el programa en módulos independientes, cada uno con un comportamiento bien definido.


Lenguajes de Programación Imperativa


Lenguajes de Programación Lógica


Lenguajes de Programación Funcional


Lenguajes de Programación Orientados a Objetos


Programación Orientados a Eventos


Paradigmas de Programación


1.1 Diferentes Estilos de Programación

Estilo 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.

"En el apuro por cumplir un plazo de desarrollo de aplicaciones,es fácil descuidar el estilo y la legibilidad." Nigel Cheshire


1.1 Diferentes Estilos 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.


1.1 Diferentes Estilos de Programación Una guía de estilo de programación sirve para unificar la manera de crear código. El buen estilo, al tratarse de algo subjetivo, es difícil de categorizar concretamente; con todo, existen un número

de

características

generales.

Con

el

advenimiento de software que da formato al código fuente de forma automática, el foco en

cómo éste debe de ser escrito debe evolucionar de forma más amplia a la elección de nombres, lógica y otras técnicas.


1.1 Diferentes Estilos de Programación

Desde un punto de vista práctico, el uso de un computador para dar formato al código fuente ahorra tiempo, y es posible forzar el uso de estándares a nivel de una compañía completa sin debates religiosos.


Por que convenciones de código Las convenciones de código son importantes para los programadores por muchas razones:

✓ El 80% del coste del código de un programa va a su mantenimiento. ✓ Casi ningún software lo mantiene toda su vida el auto original.

✓ Las convenciones de código mejoran la lectura del

software,

permitiendo

entender

código

nuevo mucho más rápidamente y más a fondo.


Por que convenciones de código ✓ Si distribuye su código fuente como un producto, necesita

asegurarse

de

que

está

bien

hecho

y

presentado como cualquier otro producto. ✓ Para que funcionen las convenciones, cada persona que escribe software debe seguir la convención. Todos. ✓ Casi ningún software se mantendrá durante toda su vida, por el autor original

✓ Hacer que el código sea mas fácil de reutilizarlo ✓ Reducir los números de errores lógicos en el código y el tiempo en su depuración.


Cualidades que se ven beneficiadas de forma más directa por un buen estilo Extensibilidad

La facilidad con que se adapta el software a cambios de especificación. Un buen estilo de código fomenta programas que no sólo resuelven el problema, sino que también reflejan claramente la relación problema/solución. Esto tiene como efecto que muchos cambios simples en el problema reflejen de forma obvio los cambios a hacer en el programa.

Comprensibilidad

Verificabilidad

La facilidad con que el programa puede ser comprendido.

La facilidad con que pueden comprobarse propiedades de un sistema. Si el estilo de código hace obvia la estructura del programa, eso ayuda a verificar que el comportamiento sea el esperado.


Cualidades que se ven beneficiadas de forma más directa por un buen estilo

Reparabilidad

Capacidad de Evolución

La posibilidad de corregir errores sin demasiado esfuerzo.

La capacidad de adaptarse a nuevas necesidades


Estilos de Programación Hace referencia a como formateamos el código que estamos desarrollando, tales

como

llaves,

indentación,

paréntesis, el espaciado, etc. Esto puede diferir entre lenguajes de programación. Indentación

Sobre como indentar hay varios estilos tales como: Allman, K&R, BSD KN, Whitesmiths, etc.


Estilos de Programación

Saltos de Línea Añadir un salto de línea después del cierre de los paréntesis de los parámetros. Añadir un salto de línea después un punto y coma, cuando termina la sentencia.


Estilos de Programación Espacios y líneas en blanco Usar espacios en blanco para mejorar la legibilidad del código.

Usar espacios en blanco en ambos lados del operador de símbolos, después de comas y después de las declaraciones. Usar líneas en blanco para separar trozos de código.

Usar líneas en blanco antes de cada método dentro de la clase.


Estilos de Programación Longitud de la línea Evite las líneas de más de 80 caracteres, cuando supera debe cortarlo bajo los siguientes principios: •

Salto de línea después de la coma.

Salto

de

línea

después

de

un

operador.

Alinear la nueva línea con el principio de la expresión en el mismo nivel en la línea anterior.


Estilos de Programación


Estilo de Indentación

Se refiere a una convención para la forma en que se coloca la indentación en un programa. ✓ Estilo K&R Es el mas usado en el Lenguaje C y PHP. El estilo K&R, fue llamado de esta forma porque fue usado por Kernighan y Ritchies en su libro The C Programming Language.


Estilo de Indentación Se trata de abrir la llave en la misma línea de declaración de la orden, indentando los siguientes pasos al mismo nivel que la llave y cerrando la llave en el mismo nivel que la declaración. La ventaja de este estilo es que la llave de apertura no requiere una línea extra y llave de finalización se alinea conceptualmente a la declaración conceptual a la que pertenece. Una desventaja de este estilo es que la llave final de un bloque toma una línea enter, el cual podría ser parcialmente resuelto en los bloques if/else y do/while.


Estilo de Indentación

✓ Estilo Allman Fue definido por Eric Allman. Se trata de crear una nueva línea para las llaves, e indentar el código debajo de ellas. La llave de cierre tiene el mismo indentado que la de inicio. Ventaja de este estilo es que la indentación del código claramente diferencia las instrucciones de un bloque con la declaración condicional.


Estilo de Indentación

Una desventaja de este estilo es que cada llave de finalización ocupa una línea entera sin añadir ningún código. Este problema era importante cuando un programador programaba código en un terminal que mostraba 24 líneas.


Estilo de Indentación ✓ Estilo BSD KNF También conocido como estilo Kernel Normal Form, es la manera más usada para el código de la distribución del software del sistema operativo de Berkeley. Es un extensión del estilo K&R. Se define un tabulador duro (8 espacios) el cual es usado para indentar bloques de código, mientras un tabulador

suave (4 espacios) para todas las líneas continuas que exceden el espacio de visión de la consola.


Estilo de Indentación

✓ Estilo Whitesmiths También llamado estilo Wishart. Este estilo coloca las llaves asociadas con la instrucciones de control indentada en la siguiente línea. Este estilo pone la llave que sigue a la declaración de un bloque se realiza indentada en la línea siguiente. Instrucciones dentro del bloque son indentados en el mismo nivel que la llave.


Estilo de Indentación Las ventajas obtenidas mediante la implementación de este estilo son las mismas del estilo Allman en que los bloques son claramente separados desde la instrucción de control, Sin embargo en el estilo Whitesmiths, el bloque está conectado visualmente a su declaración de control. Otra ventaja es que la alineación de las llaves con el bloque entero es visto como un solo conjunto de instrucciones. Además, las llaves hacen hincapié en que el contenido del bloque están subordinados a la declaración de control.


Estilo de Indentación

Una desventaja de este estilo podría ser que las llaves ocupan una línea entera. Otro inconveniente podría ser que el la llave de cierre no se alinea con la declaración a la que conceptualmente pertenecen, aunque otros sostienen que el cierre de llaves pertenece a la llave de apertura y no a la declaración de control.


Estilo de Indentación

✓ Estilo GNU El estilo GNU coloca una llave sobre la siguiente linea. Las llaves son indentadas por 2 espacios,y el codigo que contiene indentada por 2 espacios adicionales.


Notaciones para Identificadores En programación, un identificador es un nombre que el programador asigna a una variable, un subprograma (función/procedimiento o método), a una estructura o a una clase. La mayor parte de lenguajes de programación admiten letras, números y el caracter _ en sus identificadores, con la condición de que no pueden empezar con un número.

A parte de esto, permiten al programador elegir la notación que mas le convenga.


Notaciones para Identificadores

Algunos lenguajes, sugieren explícitamente una notación determinada, como Java y la notación Camel. Una de las recomendaciones mas importantes de la programación con estilo, es usar nombres cortos en identificadores locales, y nombres largos y descriptivos en identificadores globales.


Notaciones para Identificadores

Normalmente se usarán verbos activos (getXX, setYY, parseZZ...) para subprogramas, y nombres descriptivos para variables, estructuras y clases. Estos nombres largos se forman habitualmente de mas de una palabra, y debido a que los lenguajes de programación no admiten el espacio en sus identificadores, hay que buscar alternativas para escribirlos. (notaciones).


Notaciones para Identificadores

Notación Camel La notación Camel consiste en escribir los identificadores con la primera letra de cada palabra en mayúsculas y el resto en minúscula: EndOfFile. Se llama notación “Camel” porque los identificadores recuerdan las jorobas de un camello.


Notaciones para Identificadores

Existen dos variantes: • UpperCamelCase, CamelCase o PascalCase: en esta variante la primera letra también es mayúscula. • LowerCamelCase, camelCase o dromedaryCase: la primera letra es minúscula.


Notaciones para Identificadores

En el lenguaje Java, se usa la notación CamelCase en identificadores para clases, y dromedaryCase para métodos y variables. La notación Camel se utiliza también en publicidad y marcas comerciales: PlayStation, easyJet, ...


Notaciones para Identificadores

Notación C Durante los años 1960s, con la estandarización del código ASCII, los primeros programadores de C y UNIX utilizaron el carácter _ como separador: end_of_file. Esta notación sigue siendo la mas utilizada en C y entornos UNIX.


Notaciones para Identificadores

Los defensores de esta notación argumentan que es mas fácil de leer porque deja un espacio entre palabras, al contrario que Camel. Además, en algunos teclados es mas rápido de escribir el carácter _ que una mayúscula.


Notaciones para Identificadores

Notación Húngara La notación Húngara se basa en Camel, añadiendo al principio del identificador una secuencia de letras en minúscula, que indica alguna característica del identificador, como su tipo en el caso de variables.


Notaciones para Identificadores

Por ejemplo: • iValue podría denotar una variable entera.

• fValue una variable float. • frmPartner la instáncia de un formulario.


1.2.1 Evaluación de Expresiones ¿Qué son las expresiones? Son el método fundamental que tiene el programador de expresar

computaciones.

compuestas

de

operadores,

Las

expresiones

operandos,

están

paréntesis

y

llamadas a funciones. Los operadores pueden ser: • Unarios: Cuando tan solo tienen un operando. Son

operadores prefijos. • Binarios: 2 Operandos. Son operadores infijos. • Ternarios: 3 operandos.


1.2.1 Evaluación de Expresiones

Orden de la Evaluación de los Operandos El orden en que se evalúan los operandos viene dado por unas reglas: • Reglas de procedencia • Reglas de asociatividad • Uso de paréntesis


1.2.1 Evaluación de Expresiones

Toda expresión regresa un valor. Si hay más de un operador, se evalúan primero operadores de mayor precedencia, en caso de empate, se aplica regla de asociatividad. Para evaluar una expresión no hay que hacer nada del otro mundo, pues es bien sencillo. Sólo hay que saber sumar, restar, si un número es mayor que otro.


1.2.1 Evaluación de Expresiones

Hay tres reglas de prioridad a seguir para evaluar una expresión: • Primero, los paréntesis (si tiene). • Después, seguir el orden de prioridad de operadores. • Por ultimo, si aparecen dos o más operadores iguales, se evalúan de izquierda a derecha.


1.2.1 Evaluación de Expresiones Las expresiones son secuencias de constantes y/o variables separadas por operadores válidos.

Se puede construir una expresión valida por medio de: 1.

Una sola constante o variable, la cual puede estar precedida por un signo + ó -.

2. Una secuencia de términos (constantes, variables,

funciones) separados por operadores.


Jerarquía de Operadores

El orden general de evaluación de los operadores de una expresión va de izquierda a derecha, con la excepción de las asignaciones que lo hacen de derecha a izquierda. Podemos seguir las siguientes tres reglas de evaluación de expresiones:


Jerarquía de Operadores

(Regla 1) En todas las expresiones se evalúan primero las expresiones de los paréntesis más anidados (interiores unos a otros); y éstos modifican la prioridad según la cantidad de éstos, los cuales tienen que estar balanceados (el mismo número de paréntesis que abren debe ser igual al número de los paréntesis que cierran).


Jerarquía de Operadores

(Regla 2) Todas las expresiones se evalúan tomando en cuenta la jerarquía de los operadores. (Regla 3) Todas las expresiones se evalúan de izquierda a derecha.


1.2.2 Tipos de Datos

Dato Un dato se define como la expresión general que describe los objetos con los cuales opera una computadora. Los datos de entrada se transforman por el programa, después de las etapas intermedias, en datos de salida.


1.2.2 Tipos de Datos

Tipo de datos Es la propiedad de un valor que determina su dominio (qué valores puede tomar), qué operaciones se le pueden aplicar y cómo es representado internamente por la computadora.


1.2.2 Tipos de Datos Los datos se clasifican en diversas categorías, según el tipo de máquina o del lenguaje en uso. Generalmente podemos encontrar las siguientes categorías : • Numéricos • Lógicos • Cadenas

Todos los valores que aparecen en un programa tienen un tipo.


Datos Numéricos

Son aquellos que representan una cantidad o valor determinado. Su representación se lleva a cabo en los formatos ya conocidos (enteros, punto y fracciones decimales si estas existen). Estos pueden representarse en dos formas distintas: • Tipos Numérico Entero (integer).

• Tipo Numérico Real (real).


Datos Numéricos

Enteros Es un conjunto finito de los números enteros. Los enteros son números completos, no tienen componentes fraccionarios o decimales y pueden ser negativos y positivos. Algunos ejemplos son: 3

7

-10

9


Datos Numéricos Reales Consiste en un subconjunto de los números reales. Estos números siempre tienen un punto decimal y pueden ser positivos o negativos. Un número real consiste de un número entero y una parte decimal. Algunos ejemplos son :

0.52

664.32

-9.3

-47.23


Cadenas

Son los datos que representan información textual (palabras, frases, símbolos, etc). No representan valor alguno para efectos numéricos. Pueden distinguirse porque son delimitados por apóstrofes o comillas. Se clasifica en dos categorías : • Datos tipo carácter (char)

• Datos tipo Cadena (string)


Cadenas

Datos Tipo Carácter Es un conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato de este tipo contiene solo un carácter. Reconoce los siguientes caracteres : • Caracteres Alfabéticos (A,B,C,…Z,a,b,c…z) • Caracteres Numéricos (0,1,2,…9) • Caracteres Especiales (+, -, *, /, ^, . , ;, <, >, $, …….)


Cadenas

Datos Tipo Cadena (string) Es un sucesión de caracteres que se encuentran delimitados por una comilla (apóstrofe) o dobles comillas, según el tipo de lenguaje de programación. La longitud de una cadena de caracteres es el número de ellos comprendidos entre los separadores o delimitadores.


Cadenas Ejemplos : • ‘Hola Juan López’ • ’12 de octubre de 1496’

• ‘Enunciado cualquiera’ Nota: Los símbolos disponibles para la formulación de caracteres y de cadenas son aquéllos que se encuentran en el código ASCII. ASCII (American Standard Code for Information Interchange).


Cadenas

Lógicos También se le denomina Booleano, es aquél dato que solo puede tomar uno de dos valores: Falso y verdadero. Se utiliza para representar las alternativas (si/no) a determinadas condiciones. Por ejemplo, cuando se pide si un valor entero sea primo, la respuesta será verdadera o falsa, según sea.


1.2.3 Disciplina Tipos En los lenguajes de programación con disciplina de tipos, cada tipo representa una colección de valores o datos similares. El conocer los tipos de las funciones ayuda a documentar los programas y evitar errores en tiempo de ejecución. Un lenguaje tiene disciplina de tipos si los errores de tipos se detectan siempre ⇒ es necesario determinar los tipos de

todos los operandos, ya sea en tiempo de compilación o de ejecución.


1.2.3 Disciplina Tipos Los tipos se infieren, es decir se comprueban, de forma estática, en tiempo de compilación. Una función cuyo tipo sea A1 ->… An -> R espera n parámetros con tipos A1,….An y devuelve un resultado de tipo R. El conocer los tipos de las funciones ayuda a documentar los programas y a evitar errores en tiempo de ejecución. Haskell y otros lenguajes funcionales utilizan el sistema de

tipos de Milner, que tiene dos características fundamentales:


1.2.3 Disciplina Tipos Disciplina estática de tipos:

Los programas bien tipados se pueden conocer en tiempo

de compilación. Un programa bien tipado se puede utilizar sin efectuar comprobaciones de tipo en tiempo de ejecución, estando garantizado que no se producirán errores de tipo durante el cómputo.


1.2.3 Disciplina Tipos Polimorfismo:

Permite que una misma función se pueda aplicar a

parámetros de diferentes tipos, dependiendo del contexto en el que la función se utilice.


1.2.3 Disciplina Tipos


1.2.4 Funciones Las funciones se crearon para evitar tener que repetir constantemente fragmentos de código. Una función podría considerarse como una variable que encierra código dentro de si. Por lo tanto cuando accedemos a dicha variable (la función) en realidad lo que estamos haciendo es ordenar al programa que ejecute un determinado código predefinido anteriormente.


1.2.4 Funciones Todos los lenguajes de programación tienen algunos elementos de formación primitivos para la descripción de los datos y de los procesos o transformaciones aplicadas a estos datos (tal como la suma de dos números o la selección de un elemento que forma parte de una colección). Estos elementos primitivos son definidos por reglas

sintácticas y semánticas que describen su estructura y significado respectivamente.


1.2.4 Funciones Un problema complejo se puede dividir en pequeños subproblemas

mas sencillos.

Estos

subproblemas

se

conocen como “Módulos” y su complementación en un lenguaje

se

llama

subprograma

(procedimientos

y

funciones). Un subprograma realiza las mismas acciones que un programa,

sin

embargo,

un

subprograma

lo

utiliza

solamente un programa para un propósito especifico.


1.2.4 Funciones Un subprograma recibe datos de un programa y le devuelve resultados (el programa “llama” o “invoca” al subprograma, este ejecuta una tarea especifica y devuelve el “control” al programa que lo llamo).


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.