Informática y Programación.pdf
Document Details
Uploaded by GlimmeringXenon
Universidad Politécnica de Valencia
Full Transcript
Informática y Programación Tema 2: Tipos de datos, variables y expresiones Curso 2024-2025 Índice Objetivos......................................................
Informática y Programación Tema 2: Tipos de datos, variables y expresiones Curso 2024-2025 Índice Objetivos................................................... 2 Operadores y expresiones 2 Operadores y expresiones.......................................... 2 Operadores aritméticos........................................... 3 Ejemplos de expresiones aritméticas enteras............................... 3 Ejemplos de expresiones aritméticas reales................................ 3 Operadores relacionales........................................... 3 Operadores relacionales........................................... 4 Operadores lógicos.............................................. 4 Operadores lógicos.............................................. 4 Operadores de cadenas de caracteres.................................... 5 Concatenación de cadenas de caracteres: operador +........................... 5 Repetición de cadenas de caracteres: operador *............................. 5 Tipos de datos y variables 5 Tipos de datos................................................ 5 Tipos de datos primitivos.......................................... 5 Tipos de datos no primitivos........................................ 5 Variables................................................... 6 Identificadores................................................ 6 Reglas de estilo................................................ 6 El operador de asignación.......................................... 6 Ejemplo: incremento de una variable.................................... 7 Ejemplo: intercambio del valor de dos variables.............................. 7 Operadores compuestos (operación más asignación)........................... 7 Conversión de tipo.............................................. 8 Conversión de tipo explícita........................................ 8 Funciones 8 Funciones................................................... 8 Invocar (ejecutar) una función....................................... 8 Invocar (ejecutar) una función....................................... 9 Funciones estándar............................................. 9 Importar módulos y funciones....................................... 9 Entrada / Salida 9 Entrada/Salida de datos básicos....................................... 9 Entrada/Salida de datos básicos....................................... 9 Entrada/Salida de datos básicos....................................... 10 Formato de salida: argumentos....................................... 10 1 Formato de salida: cadenas formateadas.................................. 10 Formato de salida: cadenas formateadas.................................. 11 Formato de salida: cadenas formateadas.................................. 11 Comentarios 11 Documentación de código.......................................... 11 Documentación de código.......................................... 11 Operaciones con cadenas: indexación, segmentación y métodos 12 Operaciones con cadenas: indexación................................... 12 Operaciones con cadenas: segmentación (slicing)............................. 12 Operaciones con cadenas: segmentación (slicing)............................. 12 Operaciones con cadenas: métodos..................................... 13..................................................... 13 Algunos métodos útiles para objetos de tipo str.............................. 13 Ejemplo.................................................... 13..................................................... 13 Notación................................................... 13 Funciones vs. Métodos 14 Funciones vs. Métodos............................................ 14 Funciones vs. Métodos............................................ 14 Objetivos Saber formar y evaluar expresiones usando distintos operadores. Conocer los tipos de datos básicos en Python: int, float, bool y str. Saber asignar valores a variables y usarlas dentro de las expresiones. Saber convertir valores entre distintos tipos de datos. Saber usar las funciones básicas de entrada y salida para solicitar datos al usuario por teclado e imprimir resultados por pantalla. Saber añadir comentarios de una o varias líneas para documentar el código en Python. Operadores y expresiones Operadores y expresiones Existen tres tipos de operadores: Aritméticos: +, -, *, /,... Relacionales: =, ==, != Lógicos: and, or, not Una expresión es una combinación de valores, variables, operadores y funciones que Python evalúa para producir un resultado. Muchas expresiones tienen el aspecto de expresiones matemáticas: 4*(8-3)+2 Python usa las reglas de precedencia habituales: Multiplicación y división antes que sumas y restas. Pueden usarse paréntesis para modificar el orden. 2 Operadores aritméticos Op. Operación Comentario +- Signo Cambio (o no cambio) de signo + Suma Suma de números reales o enteros - Resta Resta de números reales o enteros * Multiplicación Multiplicación de números reales o enteros / División División de números reales // Div. entera Div. números enteros; descarta decimales % Resto Resto de la división entera ** Potencia Elevar la base al exponente Ejemplos de expresiones aritméticas enteras Expresión Valor Comentario +99 99 Signo positivo -99 -99 Signo negativo 5+3 8 Suma 5-3 2 Resta 5*3 15 Multiplicación 5 // 2 2 Sin parte fraccional 12 % 5 2 Resto 5 ** 3 125 Potencia 5 // 0 ZeroDivisionError Error: división por cero 3*5-2 13 * tiene precedencia 3 + 5 // 2 5 // tiene precedencia 3-5-2 -4 Asociativo por la izquierda (3 - 5) - 2 -4 Mejor estilo 3 - (5 - 2) 0 No ambiguo 2 ** 2 ** 3 256 Asociativo por la derecha xs Ejemplos de expresiones aritméticas reales Expresión Valor Comentario 3.141 + 2.0 5.141 Suma 3.141 - 2.0 1.141 Resta 3.141 * 2.0 6.282 Multiplicación 3.141 / 2.0 1.5705 División 5.0 / 3.0 1.666666666666667 Como máximo 17 dígitos de precisión 3.141 ** 2.0 9.865881 Potencia 1.0 / 0.0 ZeroDivisionError Error: división por cero 2.0**10000.0 OverflowError Error: número demasiado grande Al contrario que los números enteros, los números reales tienen un tamaño y una precisión limitados. Es necesario tenerlo en cuenta, ya que una expresión como 0.1 + 0.1 + 0.1 devuelve el inesperado resultado de 0.30000000000000004. Operadores relacionales =, ==, != Son operadores mixtos ya que toman operandos de un tipo (int, float, str,... ) y producen un resultado de otro tipo (bool). Operador Significado True False == Igual 2 == (1 + 1) 2.0 == 3.5 != Distinto 5.0 != 2.5 (2 * 2) != 4 3 Operador Significado True False < Menor 2.5 < 5.0 5= Mayor o igual 5 >= 5 2.5 >= 5.0 Menor precedencia que los aritméticos y mayor que los lógicos Operadores relacionales Python permite realizar comparaciones con cadenas de texto Para comparar se aplica en general el orden lexicográfico 'Hola' == 'Hola' se evalúa a True 'Ana' < 'Alicia' se evalúa a False Pero no siempre... 'Barco' < 'avión' se evalúa a True (las mayúsculas son anteriores a cualquier minúscula) 'chamán' < 'chamizo' se evalúa a False (las vocales acentuadas son posteriores al resto de letras) Cada carácter tiene un código numérico que Python usa para comparar. Se puede obtener el código numérico de un carácter con la función ord ord('a'): 97 ord('A'): 65 ord('á'): 255 Operadores lógicos El tipo de dato booleano (bool) representa valores de verdad: verdadero (True) o falso (False). Los operadores definidos para estos valores son los operadores lógicos, and, or y not: a and b es True si tanto a como b son True, y False si alguno de los dos es False. a or b es False si tanto a como b son False, y True si alguno de los dos es True. not a es True si a es False, y False si a es True. Operadores lógicos Orden de precedencia de mayor a menor: not, and, or. Se pueden usar paréntesis para crear expresiones más complejas. A menudo, la misma función puede formularse de distintas formas. Por ejemplo, la expresión (a and b) y not (not a or not b) son equivalentes, como se demuestra en la siguiente tabla de verdad: 4 Operadores de cadenas de caracteres Las cadenas de texto son secuencias de caracteres (letras, dígitos, símbolos, espacios y caracteres de control). Se representan entre comillas simples o dobles. Puede usarse la contrabarra para representar caracteres especiales: Secuencia Significado '\t' Tabulador '\n' Salto de línea '\\' Contrabarra '\'' Comilla simple Concatenación de cadenas de caracteres: operador + Es posible concatenar (unir) dos cadenas de texto mediante el operador +. Expresión Valor 'Hola, ' + 'Mundo' 'Hola, Mundo' '123' + '456' '123456' '1234' + ' + ' + '99' '1234 + 99' '123' + 456 SyntaxError: tipos incompatibles Repetición de cadenas de caracteres: operador * Es posible repetir varias veces un mismo texto mediante el operador *. El resultado de este operador es la concatenación de la cadena consigo misma, tantas veces como indique el multiplicador. Expresión Valor 'Hola' * 5 'HolaHolaHolaHolaHola' 20 * '-' '--------------------' 6 * '=' + 3 * '(O)' + 6 * '=' '======(O)(O)(O)======' Tipos de datos y variables Tipos de datos Un tipo de dato determina un conjunto de valores y de operaciones definidas sobre esos valores. Debemos tener siempre presente con qué tipo de dato estamos trabajando, para así saber qué tipo de operaciones podemos realizar con dicho dato. Los tipos de datos podemos clasificarlos en dos grandes categorías: Tipos de datos primitivos: tipos de datos simples. Tipos de datos no primitivos: tipos de datos de mayor complejidad definidos a partir de tipos primitivos más simples. Tipos de datos primitivos Tipo Cto. de valores Operadores básicos Ejemp. int Números enteros + - * / // % ** 5 123 float Números reales + - * / // % ** 3.14 2.5 bool Verdadero/falso and or not True str Cadenas de caracteres +* ‘Hola’ ‘5’ Tipos de datos no primitivos Lista (list): colección de datos heterogéneos, organizados secuencialmente, y accesibles mediante un índice. Tupla (tuple): muy similar a una lista, pero inmutable. Diccionario (dict): colección de datos heterogéneos, accesibles mediante una clave. 5 Conjunto (set): colección no ordenada de datos heterogéneos y no repetidos. Array (ndarray): colección de datos homogéneaos, organizados secuencialmente, y accesibles mediante un índice. Número complejo (complex): dos números que representan la parte real e imaginaria de un número complejo.... Variables Las variables almacenan los datos que maneja un programa. Cada variable tiene un nombre y almacena un valor (o varios, si es de un tipo no primitivo). Para asignar un valor a una variable utilizamos el operador de asignación: = variable = expresión Python es un lenguaje dinámicamente tipado. El tipo de una variable se establece en el momento en que a esta se le asigna un valor. Podemos conocer el tipo de una variable con la instrucción type(nombre_variable) Identificadores Cada variable tiene un nombre (identificador). El nombre de una variable es una secuencia de letras, dígitos y subrayados ( _ ). El primer carácter del nombre no puede ser un dígito. Python distingue entre letras minúsculas y mayúsculas. Algunas palabras están reservadas por el lenguaje (and, import, list, etc.) y no pueden usarse como nombres de variables. Identificadores válidos x temp_maxima TemperaturaMaxima velocidad Identificadores no válidos temp maxima velocidad-media 1er_elemento import Reglas de estilo Existen unas reglas de estilo que se recomiendan seguir para dar nombre a las variables (PEP 8 Style Guide for Python Code): Nombres de variables Se escriben en minúscula. Se usa el guión bajo (_) como separador cuando el nombre es compuesto. Ejemplos: i, x, y, total, velocidad_inicial, fecha_de_nacimiento Nombres de constantes Se escriben en mayúsculas. Se usa igualmente el guión bajo como separador cuando el nombre es compuesto. Ejemplos: PI, VELOCIDAD_DE_LA_LUZ El operador de asignación Para definir y dar valor a una variable en Python usamos el operador de asignación (=). Ejemplo: al escribir x = 1234 , estamos: Definiendo el identificador x como una nueva variable. Asignándole a la variable x el valor entero 1234. Estableciendo el tipo de la variable x como int. El lado derecho de la asignación puede ser cualquier tipo de expresión. En ese caso, Python evalúa la expresión y le asigna el resultado a la variable. Ejemplo: 6 Ejemplo: incremento de una variable El siguiente código asigna el valor 17 a la variable i, y luego incrementa en uno su valor: i = 17 i = i + 1 Esta es una operación muy común en programación. Los pasos son los siguientes: Crea la variable i y le asigna el valor entero 17. Python evalúa la expresión i + 1 y obtiene el valor 18. Asigna este nuevo valor, 18, a la variable i. Ejemplo: intercambio del valor de dos variables El siguiente código intercambia los valores de las variables a y b: a = 1234 b = 99 t = a a = b b = t Los pasos son los siguientes: a y b tienen inicialmente los valores 12234 y 99, respectivamente. t = a asigna a t el valor de a (ambos comparten ahora el mismo valor: 1234). a = b asigna el valor de b a a (99). El valor que almacena una variable se pierde cuando se le asigna uno nuevo. b = t asigna el valor de t a b (1234). Operadores compuestos (operación más asignación) Todos los operadores aritméticos pueden combinarse con la operación de asignación += -= *= /= //= %/ **= var += valor es equivalente a var = var + valor var *= valor es equivalente a var = var * valor etc. 7 Asignación Valor de a a = 1 1 a += 10 11 a -= 7 4 a *= 4 16 Asignación Valor de a a //= 3 5 a %= 2 1 a /= 2 0.5 a **= 2 0.25 Conversión de tipo Los programas manejan normalmente distintos tipos de datos. Es necesario prestar atención al tipo de cada dato para escoger los valores y las operaciones a realizar con él. Python convierte automáticamente los enteros a reales cuando se requiere (conversión implícita). Ejemplo: 10 / 4.0 se evalúa como 2.5 ya que 4.0 es un número real y ambos operandos han de ser del mismo tipo; 10 se convierte a real y el resultado de dividir dos reales es un número real. Otra posibilidad es hacer una conversión explícita usando una función de conversión (que toma un argumento de un tipo y devuelve uno de otro tipo). Estas funciones tienen el mismo nombre que los tipos de datos que hemos visto: int(), float(), bool() y str(). Conversión de tipo explícita Función Uso Ejemplo Res. Explicación int() Convierte el argumento a un int(2.7) 2 Descarta los decimales número entero int(True) 1 True = 1 y False = 0 int(’10’) 10 Convierte la cadena en entero round() Redondea un número real a round(2.4) 2 Redondea el número real al entero más entero round(2.6) 3 cercano float() Convierte el argumento a un float(2) 2.0 Entero a número real número real float(True) 1.0 True = 1.0 y False = 0.0 float(’2.5’) 2.5 Convierte la cadena en real bool() Convierte el argumento a un bool(0) False False = 0, True ̸= 0 booleano bool(1.0) True False = 0.0, True ̸= 0.0 bool(’True’) True Convierte la cadena en booleano str() Convierte el argumento a una str(10) ’10’ Convierte entero en cadena cadena de texto str(2.5) ’2.5’ Convierte el real en cadena str(True) ’True’ Convierte el booleano en cadena Funciones Funciones Además de los operadores, los lenguajes de programación también proporcionan funciones para realizar ciertas operaciones. En Python distinguimos tres tipos de funciones: Funciones built-in que pueden usarse directamente: abs(), int(), type(), print(),... Funciones standard que se definen en alguna de las librerías estándar de Python y que es necesario importarlas para poder usarlas: math.sqrt(), math.sin(), random.randint(),... Funciones propias, definidas por el propio programador (las estudiaremos en el Tema 4) Invocar (ejecutar) una función Para invocar una función desde nuestro código se escribe su nombre, seguido de la lista de argumentos encerrados entre paréntesis: nombre_funcion(arg1, arg2,..., argN) Por ejemplo: abs(-5) min(3, 2) Cada argumento puede ser también una expresión que proporcione un valor del tipo esperado. 8 abs(3*x**2 - 5*x + 1) min(a, b) len('Hola') Los paréntesis son necesarios aun cuando la función no requiera ningún argumento. Por ejemplo: exit() Invocar (ejecutar) una función A su vez, aquellas funciones que devuelven un valor pueden usarse como parte de una expresión: y + abs(3*x**2 - 5*x + 1) / 2 Para conocer las funciones disponibles, los argumentos que requiere cada una y el resultado que proporciona, debe consultarse la documentación correspondiente: https://docs.python.or g/3/library/functions.html La documentación que detalla cómo debe invocarse una función (nombre, argumentos, operación que realiza,... ) se conoce como Application Program Interface (API). Funciones estándar Además de las funciones built-in, Python viene con una biblioteca estándar que contiene muchas otras funciones organizadas en módulos (math, random, numpy). Para poder usar estas funciones es necesario importarlas del módulo correspondiente. Por ejemplo, el módulo math contiene funciones que realizan las operaciones matemáticas más habituales: sqrt(), sin(),... Importar módulos y funciones Existen tres formas de importar módulos y funciones: Importar el módulo completo (con todas sus funciones) import math # Importa el módulo math x = math.sqrt(2) # Invoca a la función sqrt que se # encuentra en el módulo math Importar el módulo completo y renombrarlo con un alias import math as mt # Importa el módulo math con el 'alias' mt x = mt.sqrt(2) # Invoca a la función sqrt que se encuentra # en el módulo math (mt) Importar una función específica de un módulo from math import sqrt # Importa sqrt del módulo math x = sqrt(2) # Invoca a la función sqrt Entrada / Salida Entrada/Salida de datos básicos Nuestros programas serían de muy poca utilidad si no fueran capaces de interaccionar con el usuario. Para pedir información al usuario, se utiliza la función input(). Para mostrar mensajes en pantalla, se utiliza la función print(). La función de entrada input() hace lo siguiente: Espera a que el usuario escriba un texto y pulse la tecla Enter. Entonces prosigue la ejecución, devolviendo una cadena con el texto que tecleó el usuario. La función input admite un argumento opcional que contenga el mensaje que se le debe mostrar al usuario. La función de salida print() muestra uno o más datos por pantalla. Entrada/Salida de datos básicos Ejemplos: Lee una cadena desde teclado y la muestra por pantalla: 9 En el ejemplo anterior, el usuario no sabe qué información ha de escribir. Incluyendo un mensaje como argumento del input(), el programa queda más claro: Entrada/Salida de datos básicos La función input() devuelve una cadena de texto. En el caso de que necesitemos un número, tendremos que hacer una conversión de tipo a int o float. Ejemplo: el siguiente programa indica si el año introducido por el usuario es o no bisiesto. Formato de salida: argumentos La función print() usa un espacio en blanco como separador y un salto de línea, '\n', como carácter final. El argumento sep permite modificar el separador. El argumento end permite modificar el texto que se muestra al final. Formato de salida: cadenas formateadas Las cadenas formateadas permiten integrar variables y expresiones dentro de una cadena de texto. Deben comenzar con la letra f o F antes de abrir las comillas. Encerrado entre las comillas se puede combinar: Caracteres normales, que se imprimirán por pantalla directamente. Variables o expresiones, encerradas entre llaves {}; se visualizará el resultado de evaluar dicha variable o expresión. Ejemplo: a = int( input('Introduce un entero: ') ) b = int( input('Introduce otro entero: ') ) 10 c = a + b print(f'El resultado de sumar {a} y {b} es {c}') Formato de salida: cadenas formateadas Pueden añadirse opciones de formato adicionales escribiendo dos puntos (:) tras la variable o expresión. {expresion:formato} Las opciones de formato más habituales son: [alineamiento][ancho][.precisión] Alineamiento: < (izquierda), > (derecha), ˆ (centrado) 0: completa los caracteres que faltan rellenando con ceros en lugar de espacios. ancho: mínimo número de caracteres a imprimir. precisión: número de dígitos decimales a mostrar. Conviene poner el carácter f tras la precisión para forzar la notación de punto fijo. Formato de salida: cadenas formateadas Ejemplos (suponemos que a=7, b=2, pi=3.141592 y nombre='Miguel') Instrucción Resultado print(f'Hola {nombre}') Hola Miguel print(f'Tengo {b * 10} años') Tengo 20 años print(f'PI={pi:.2f}') PI=3.14 print(f'PI={pi:.4f}') PI=3.1416 print(f'Agente {a:03}') Agente 007 print(f'({a:10})') ( 7) print(f'({a:10}|') | Miguel| Comentarios Documentación de código Los comentarios sirven para explicar a las personas que puedan leer el programa en el futuro, qué es lo que hace el programa, así como explicar algunas partes del código. Los comentarios se ignoran al ejecutar el código. Escribir comentarios requiere un esfuerzo, pero es una buena práctica y compensará con creces ese esfuerzo en el futuro. En Python, los comentarios se pueden poner de dos formas: Comentarios de una sola línea: se escribe el símbolo almohadilla (#) al comienzo del comentario. El comentario termina al final de la línea. Comentarios de varias líneas: el comentario comienza y termina con tres comillas (dobles o simples). Documentación de código Ejemplo: # Voy a declarar una variable entera a = 10 # Y le asigno el valor 10 """ Ahora la multiplico por 2 y muestro su valor por pantalla """ a = a * 2 print(a) Python usa los comentarios multi-línea para asociar documentación con módulos, funciones, clases y métodos (llamados documentation strings o docstrings). Veremos estas convenciones más adelante. 11 Operaciones con cadenas: indexación, segmentación y métodos Operaciones con cadenas: indexación Cada uno de los caracteres que forman una cadena tiene asociado un índice (en realidad dos, como se verá). Mediante estos índices es posible seleccionar un carácter en particular (indexación) o un subconjunto de ellos (segmentación). Cadena: P y t h o n Índice: 0 1 2 3 4 5 Índice negativo: -6 -5 -4 -3 -2 -1 Sintaxis indexación: nombre_cadena[indice] Ejemplos (suponiendo cad = 'Python'): Expresión Resultado cad ‘P’ cad ‘h’ cad ‘n’ Expresión Resultado cad[-1] ‘n’ cad[-6] ‘P’ cad IndexError Operaciones con cadenas: segmentación (slicing) La técnica de segmentación o slicing permite seleccionar un subconjunto de caracteres mediante la especificación de un rango de índices. Sintaxis: nombre_cadena[start:end] donde: start: índice del primer carácter (incluido) end: índice del último carácter (excluido) Si se omite star y/o end se toma, respectivamente, desde/hasta el primer/último carácter, incluído. Ejemplos (suponiendo cad = 'Python'): Expresión Resultado cad[0:3] ‘Pyt’ cad[:3] ‘Pyt’ cad[3:6] ‘hon’ cad[3:] ‘hon’ Expresión Resultado cad[:] ‘Python’ cad[1:-2] ‘yth’ cad[-5:-2] ‘yth’ cad[3:50] ‘hon’ Operaciones con cadenas: segmentación (slicing) Opcionalmente se puede definir un valor de incremento: nombre_cadena[start:end:step] step indica cada cuántos caracteres seleccionamos uno. Es posible dar una valor de step negativo, en cuyo caso: El índice start debe ser posterior a end y los caracteres se seleccionan de izquierda a derecha. Si se omite start y/o end se toma, respectivamente, desde/hasta el último/primer carácter, incluído. 12 Ejemplos (suponiendo cad = 'Python'): Expresión Resultado cad[::2] ‘Pto’ cad[1::2] ‘yhn’ Expresión Resultado cad[-1:1:-1] ‘noht’ cad[4::-2] ‘otP’ cad[::-1] ‘nohtyP’ Operaciones con cadenas: métodos Existen una gran cantidad de funciones que se ejecutan asociadas a una variable (objeto) en particular, y que permiten realizar operaciones de diversa complejidad sobre dicho objeto. A las funciones que van asociadas una variable (objeto) en particular se denominan métodos. La manera de ejecutar un método es: nombre_variable.nombre_metodo(argumentos) Algunos métodos útiles para objetos de tipo str Método Descripción upper() Convierte la cadena a mayúsculas lower() Convierte la cadena a minúsculas replace(text1, text2, [count]) Reemplaza text1 por text2 strip() Elimina espacios en blanco al inicio y final find(text, [start, [end]]) Devuelve la posición de la primera aparición de text count(text, [start, [end]]) Devuelve cuántas veces aparece text Los métodos que requieren modificar el contenido de la cadena, NO modifican la cadena original, sino que generan (y devuelven) una nueva cadena, ya que las cadenas son objetos inmutables. Los argumentos entre [ ] son opcionales. Ejemplo s = 'Hola Mundo' print( s.upper() ) # Muestra HOLA MUNDO c = s.count('o') print(f'{s} tiene {c} o') # Muestra Hola Mundo tiene 2 o s2 = s.replace('do', 'do!') print(s2) # Muestra Hola Mundo! pos = s.find('o') print(pos) # Muestra 1 pos2 = s.find('o', pos+1) print(pos2) # Muestra 9 Notación Atención!! El operador. se usa para dos cosas bien distintas: Asociar el nombre de un objeto con el nombre de un método que se ejecuta sobre ese objeto c = s.count('o') 13 En este ejemplo s es un objeto y count un método que se ejecuta sobre dicho objeto. Asociar el nombre de un módulo (o su alias) con una función que se encuentra en dicho módulo import math x = math.sqrt(2) En este ejemplo math es un módulo y sqrt una función que se encuentra en dicho módulo. Recuerda que un método es una función que se asocia a un objeto y opera con la información almacenada en dicho objeto. Funciones vs. Métodos Funciones vs. Métodos Similitudes: Consisten en una secuencia de instrucciones, encapsuladas bajo un único nombre, que se ejecutan de forma atómica (como una única unidad) para realizar alguna operación o tarea. Pueden tener argumentos de entrada y, opcionalmente, pueden devolver algún dato tras realizar la operación o tarea para la que fueron diseñados. Funciones vs. Métodos Diferencias: Métodos Funciones Se invocan asociados a un objeto particualar. Se invocan simplemente por su nombre. No van asociadas a ningún objeto. Pueden operar con los datos del objeto con los que se Operan únicamente con los datos que se les asocia. pasa como argumentos. (*) (*) Además de con variables globales, práctica altamente desaconsejada. 14