Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


informatica apuntes QT, Apuntes de Informática

teoria necesaria para poder aprobar informatica con satisfaccion

Tipo: Apuntes

2018/2019

Subido el 20/02/2019

torinop
torinop 🇪🇸

3.6

(5)

8 documentos

1 / 149

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Informática
Curso 2016-17 Q1, Grupo T1
Última actualización del documento en:
2016.11.28
Información sobre la asignatura
Profesorado
Teoría (2h/sem)
T1 (miércoles, 19 a 21, A1.5): Joan F. Alonso ([email protected])
Consultas: Miércoles de 14 a 17, despacho A8.41
Otros días a convenir por correo electrónico,
indicando nombre, apellidos y subgrupo
Laboratorio (2h/sem)
T11 (lunes, 17 a 19, A3.1): Pilar Nivela ([email protected])
T12 (miércoles, 15 a 17, A3.1): Ferran Juan ([email protected])
T13 (jueves, 19 a 21, A3.1): Jorge Castro ([email protected])
Evaluación de la asignatura
Teoría
17,5% Ejercicio sobre librería
El ejercicio se entrega a través
de ATENEA hasta el último día
de clase.
30,0% Examen Final
19/01/2017, 8 a 11
Laboratorio
17,5% Examen práctico 1
Semana 6, 24 a 28 de octubre
17,5% Examen práctico 2
Semana 10, 21 a 25 de noviembre
17,5% Examen práctico 3
Semana 14, 19 a 23 de diciembre
Planificación de sesiones
Ver documento Cronograma
Acceso a este documento
https://goo.gl/ymxvyU
Este documento está basado en parte en material previo de los profesores de la asignatura
de Informática de la EEBE, pertenecientes a los departamentos de Ciencias de la Computación
y de Ingeniería de Sistemas, Automática e Informática Industrial de la UPC.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga informatica apuntes QT y más Apuntes en PDF de Informática solo en Docsity!

Informática

Curso 2016-17 Q1, Grupo T

Última actualización del documento en: 2016.11.

Información sobre la asignatura

Profesorado

Teoría (2h/sem) ○ T1 (miércoles, 19 a 21, A1.5): Joan F. Alonso ([email protected]) Consultas: Miércoles de 14 a 17, despacho A8. Otros días a convenir por correo electrónico, indicando nombre, apellidos y subgrupo ● Laboratorio (2h/sem) ○ T11 (lunes, 17 a 19, A3.1): Pilar Nivela ([email protected]) ○ T12 (miércoles, 15 a 17, A3.1): Ferran Juan ([email protected]) ○ T13 (jueves, 19 a 21, A3.1): Jorge Castro ([email protected])

Evaluación de la asignatura

● Teoría

○ 17,5% Ejercicio sobre librería El ejercicio se entrega a través de ATENEA hasta el último día de clase.

○ 30,0% Examen Final 19/01/2017, 8 a 11

● Laboratorio

○ 17,5% Examen práctico 1 Semana 6, 24 a 28 de octubre

○ 17,5% Examen práctico 2 Semana 10, 21 a 25 de noviembre

○ 17,5% Examen práctico 3 Semana 14, 19 a 23 de diciembre

Planificación de sesiones

Ver documento Cronograma

Acceso a este documento

https://goo.gl/ymxvyU

Este documento está basado en parte en material previo de los profesores de la asignatura de Informática de la EEBE, pertenecientes a los departamentos de Ciencias de la Computación y de Ingeniería de Sistemas, Automática e Informática Industrial de la UPC.

Índice

  • Información sobre la asignatura
    • Profesorado
    • Evaluación de la asignatura
    • Planificación de sesiones
    • Acceso a este documento
  • Índice
  • Sesión 1. Primeros pasos para aprender a programar
    • Python
    • Algoritmos, programas y lenguajes
    • Variables
      • La codificación de información en sistema binario
      • ¿Como declaramos variables en Python?
      • ¿Qué ocurre realmente en Python al declarar una variable o asignarle un valor?
      • Identificadores y palabras reservadas
    • Tipos de datos
      • Tipos de datos simples
        • Enteros (int)
        • Reales (float)
        • Booleanos (bool)
      • Tipos de datos compuestos
        • Cadena de caracteres o string (str)
  • Sesión 2. Expresiones y funciones
    • Expresiones
      • Operadores
        • Operadores aritméticos
        • Operadores de asignación aumentada
        • Operadores lógicos
      • Operadores relacionales
      • Precedencia de los operadores
        • Operaciones con strings
    • Errores
      • Errores sintácticos
      • Errores de ejecución
      • Errores semánticos
      • Ejercicios propuestos (expresiones)
    • Acciones elementales
      • Lectura de datos a través del teclado
      • Escritura de datos por pantalla
      • Comentar el código
      • ¿Qué es una función y para qué sirve?
      • Uso de funciones
      • Diseño de funciones
      • Invocación de funciones
      • Funciones productivas y funciones nulas
      • Consideraciones a tener en cuenta en el diseño de funciones
        • Programa principal
        • Docstring y Doctest
      • Más sobre funciones
  • Sesión 3. Estructuras algorítmicas
    • Composición secuencial
      • Ejercicios propuestos (composición secuencial)
    • Composición alternativa
      • Estructura alternativa simple (if)
      • Estructura alternativa doble (if-else)
      • Estructura alternativa múltiple (if-elif-else)
    • Ejemplos de programas con composición alternativa
      • Ejemplo 1. Paso de cronómetro
      • Ejemplo 2. Calcular si un año es bisiesto
      • Ejercicios propuestos (composición alternativa)
  • Sesión 4. Estructuras algorítmicas (II)
    • Composición iterativa (for)
      • Secuencias de enteros con range
        • Operadores y funciones aplicables a una secuencia de tipo range
      • Secuencias de caracteres (strings)
        • Métodos de los strings
    • Esquemas de composición iterativa con for
      • Esquema de recorrido
      • Esquema de búsqueda
      • Ejemplos de esquemas de recorrido con for
        • Contar de 1 a
        • Contar de 1 a N
        • Tablas de multiplicar
      • Ejemplos de esquemas de búsqueda con for
        • Buscar si una letra está contenida en un string
  • Sesión 5. Ejercicios de composición iterativa: esquemas de recorrido
    • Contar palabras
      • Solución
      • Solución mejorada
      • Solución alternativa con Python (sin esquema de recorrido)
    • Eliminar letra de un string
    • Integral definida, calculada por intervalos fijos
      • Solución
    • Calcular todos los divisores de un número
      • Solución
  • Sesión 6. Ejercicios de composición iterativa: esquemas de búsqueda
    • Encontrar la posición de la tercera aparición de una letra en un string
      • Solución
      • Solución alternativa
    • Comprobar si dos textos son iguales
      • Solución
      • Solución alternativa sin bucles
    • Eliminar espacios iniciales y finales de un string
      • Solución
    • Comprobar si un número es primo
      • Solución
  • Sesión 7. Tipos de datos estructurados
    • Tipos de datos estructurados inmutables (estáticos)
      • Secuencias de caracteres (string)
      • Secuencias de enteros (range)
      • Secuencia de datos (tuple)
        • Indexación, slicing y otras operaciones con tuplas
        • Iteraciones con tuplas
        • Asignaciones múltiples
        • Funciones con resultados múltiples
        • Funciones con un número arbitrario de parámetros
        • Funciones y métodos con las tuplas
      • Conjuntos “congelados” de datos (frozenset)
    • Tipos de datos estructurados mutables (dinámicos)
      • Listas de datos (list)
        • Indexación, slicing y otras operaciones con listas
        • Métodos de las listas
        • Identidad de las variables en Python: ¿qué sucede con las listas?
    • Ejercicios con listas
      • Revisando un ejemplo anterior: calcular los divisores de un número
      • Suma vectorial
        • Solución
        • Solución alternativa
      • Producto escalar
        • Solución
      • Determinar si una secuencia de números es monótona creciente
        • Solución
      • Encontrar el primer valor negativo en una lista de números
        • Solución
      • Lista de números primos en un intervalo
        • Solución
      • Encontrar anagramas en una lista de palabras
        • Solución
    • Dudas y preguntas sobre listas planteadas en clase
      • ¿Cómo puedo insertar los elementos de una lista en otra lista?
      • ¿Cómo puedo eliminar varios elementos de una lista?
      • ¿Cómo generar una lista de números enteros aleatorios?
      • genera números aleatorios? ¿Cómo puedo crear un docstring adecuado para el doctest de una función que
  • Sesión 8. Tipos de datos estructurados (II)
    • Listas 2D (listas de listas)
      • Asignación estática
      • Asignación dinámica
        • Crear una matriz de ceros con un número de filas y columnas variable
        • Solución
      • Copia profunda
        • Limitaciones
      • Acceso a filas, columnas, y elementos
        • Número de filas y columnas
        • Iteraciones anidadas
        • Acceso a filas y columnas
        • Ordenar por filas
      • Listas 3D
    • Ejercicios
      • Suma de matrices
        • Solución
        • Solución alternativa
      • Matriz simétrica
    • Ejercicios con listas 2D
      • Transponer una matriz cuadrada
        • Solución
      • Determinante de una matriz 3 x
        • Solución
      • Producto de matrices no cuadradas
        • Solución
      • Matriz cuasi nula
        • Solución
  • Sesión 9. Tipos de datos estructurados (III)
    • Conjuntos de datos (set)
    • Diccionarios (dict)
      • Operaciones con diccionarios
      • Convertir listas en diccionarios y viceversa
    • Ejercicios con diccionarios
      • Frecuencias
        • Solución
      • Frecuencias
        • Solución
      • Número más frecuente (moda)
        • Solución
      • Histograma
        • Solución
      • Pasar lista 2D (nombres, teléfonos, y direcciones) a diccionario
        • Solución
      • Tiradas de dados
        • Solución
      • Descodificador de fechas
        • Solución
      • Fusión de lista de diccionarios
        • Solución
  • Sesión 10. Entrada y salida con ficheros
    • Abrir y cerrar ficheros
      • Función open()
      • Atributos el objeto file
      • Método file.close()
    • Leer y escribir ficheros
      • Método file.read()
      • Método file.write()
    • Ejemplos
      • Ejemplos básicos de escritura y lectura
      • Leer fichero por completo y extraer líneas
      • Leer fichero línea a línea
      • La instrucción with (forma recomendada de leer y escribir ficheros)
      • Añadir contenido a un fichero ya existente
    • Ficheros CSV (módulo csv)
      • Leer y escribir ficheros CSV
    • Ejercicios
    • Función que muestra las primeras N líneas de texto de un fichero por pantalla
    • Sumar números en un fichero de texto con un número por línea
    • Sumar números en un fichero de texto con varios números por línea
    • Retornar columna de fichero de texto con números
    • Contar número de apariciones de una palabra en un fichero
    • Contar número de apariciones de cada palabra en un fichero
  • Sesión 11. Iteraciones con while

Sesión 1. Primeros pasos para aprender a

programar

El vocablo informática es un acrónimo de las palabras información y automática , y la Real Academia Española la define como el conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores.

El principal objetivo de la asignatura es aprender a programar (realizar este tratamiento automático de la información) para resolver problemas propios de la ingeniería. Un ingeniero (no necesariamente informático) debe, durante su vida profesional, desarrollar, revisar, o supervisar el desarrollo de programas o de equipos de programadores. Muy probablemente la mayoría estamos familiarizados con algún sistema operativo (Linux, Android, iOS, Microsoft Windows, OS X, etc) y otros muchos programas informáticos.

El sistema operativo se considera el programa más importante que se ejecuta en un computador , ya que permite que sobre él se ejecuten otros programas y aplicaciones mientras él se ocupa de tareas básicas como reconocer la entrada de datos a través del teclado, mostrar datos en pantalla, u organizar los ficheros y carpetas en el disco o memoria.

Seguro que también hemos usado aplicaciones de todo tipo como procesadores de texto, hojas de cálculo, videojuegos, mensajería, fotografía, etc. Sin embargo, los programas informáticos se pueden encontrar en muchos otros ámbitos de nuestra vida diaria: desde un reproductor de música, pasando por un robot aspirador de suelos o uno de cocina, hasta un desfibrilador implantable que ayuda a controlar los latidos de un paciente cardíaco.

Y para aprender a programar , debemos conocer:

  1. Cómo funciona un computador, entendiendo la necesidad del desarrollo de programas por parte del programador.
  2. Los constituyentes básicos de los lenguajes imperativos (variables, tipos, expresiones, instrucciones)
  3. Las composiciones algorítmicas básicas (secuencial, alternativa e iterativa)
  4. Cómo resolver problemas aplicando un diseño modular (usando subprogramas o funciones, conociendo su definición y parametrización)
  5. Los mecanismos de comunicación entre programas y funciones para el tratamiento de datos y secuencias de datos, y como retornar un resultado.
  6. Librerías (de funciones) externas propias del ámbito de la ingeniería.

Los cursos de programación utilizan diferentes lenguajes en función de cada profesor, incluso usando un lenguaje genérico, llamado pseudocódigo , que permite aprender el desarrollo de algoritmos de manera independiente del lenguaje. En esta asignatura el lenguaje de programación utilizado es un subconjunto de Python 3, pero todos los conceptos de programación que desarrollaremos son aplicables a la mayoría de lenguajes de programación. Se trata de aprender a resolver problemas mediante la metodología de

● Datos de salida. Se muestran en pantalla, se guarda en un fichero o se envían a otro dispositivo. ● Operaciones. Sean matemáticas o de otro tipo, se realizan sobre los datos de entrada para obtener el resultado deseado. ● Condiciones. En ocasiones, hay que asegurarse de que se cumplen ciertas condiciones para ejecutar la secuencia de operaciones correcta. ● Repetición. Algunas de las operaciones puede que deban ejecutarse varias veces, habitualmente con alguna pequeña variación.

Cualquier programa que hayamos usado, sin importar lo complicado que sea, se basa en la combinación de estos elementos. Por lo tanto, podemos decir que programar es el proceso consistente en dividir una tarea grande y compleja en pequeños bloques suficientemente simples para poderlos realizar mediante la combinación de instrucciones como las de la lista.

Para escribir la secuencia de instrucciones de un programa se requiere de un lenguaje de programación. El lenguaje básico que entiende un computador (y más concretamente su unidad central de proceso o microprocesador, habitualmente llamada CPU por las siglas en inglés de central processing unit ) es el lenguaje máquina (también llamado lenguaje ensamblador). Se trata de un conjunto de instrucciones básicas que se traducen a código binario que puede ser directamente ejecutado por la CPU. Los lenguajes máquina o ensamblador se conocen también como lenguajes de bajo nivel (se encuentran al nivel de la CPU), en contraposición a los lenguajes de alto nivel que son más cercanos al usuario.

Los lenguajes de alto nivel tienen, como cualquier otro lenguaje, su vocabulario, sintaxis y semántica: ● El vocabulario está formado por todos los elementos propios del lenguaje, es decir, los símbolos de las operaciones aritméticas, lógicas, y relacionales, así como las palabras propias que permiten definir las estructuras algorítmicas. ● La sintaxis define la forma como se combinan estos elementos del lenguaje. Por ejemplo, x = 3 + 2 es una sintaxis correcta, pero x = 3 2 + no (aunque podría ser al revés). ● Y la semántica hace referencia a que las expresiones sintácticamente correctas tengan un resultado correcto. Por ejemplo x = 7/5 dará un resultado correcto, mientras que x = 7/’hola’ arrojará un error. Una semántica correcta también incluye que el programa no se quede colgado en un bucle infinito y que no de errores lógicos o de ejecución (por ejemplo al dividir un número por cero)

Una de las ventajas de los lenguajes de alto nivel es que sus programas pueden ejecutarse en máquinas diferentes normalmente sin modificaciones (o con muy pocas). Al ejecutar nuestro código ( run en inglés) se traducen las instrucciones que hemos programado a lenguaje máquina para que la CPU pueda interpretarlas y llevarlas a cabo. Esta traducción puede hacerse de dos formas: ● A través de un compilador , que lee el código fuente y lo traduce completamente al lenguaje de la máquina, creando un programa ejecutable (por ejemplo, un archivo .exe típico del sistema operativo Windows) que se puede usar tantas veces como se

quiera sin tener que volver a traducir el programa original. Los lenguajes de programación clásicos como Fortran, Pascal, C, Go o Haskell son compilados. ● A través de un intérprete , que es un programa que va leyendo, traduciendo y ejecutando las instrucciones del programa a medida que las encuentra. Esto da más flexibilidad y más facilidad para depurar el código en busca de errores, pero se pierde velocidad de ejecución frente a los lenguajes compilados. Entre los lenguajes interpretados destacan Java, Python, Perl, PHP, MATLAB, R o Ruby.

En esta asignatura usaremos el entorno de desarrollo en Python 3 llamado IDLE , que cuenta con su propio intérprete de Python. Y como manda la tradición al aprender cualquier nuevo lenguaje, una vez iniciado el intérprete y se nos muestre que la ventana de comandos (también llamada habitualmente shell o consola) está lista para aceptar instrucciones (muestra el símbolo de entrada o prompt >>>), ejecutaremos nuestro primer código en Python con un saludo (la versión en español del habitual Hello world! ):

Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win Type "copyright", "credits" or "license()" for more information.

print("Hola mundo!") Hola mundo!

En este ejemplo hemos usado la función print() de Python, que escribe el resultado en la ventana de comandos, para mostrar nuestro mensaje de saludo, que es una cadena de texto delimitada por comillas dobles (también se pueden usar las comillas simples, como veremos más adelante).

Variables

La codificación de información en sistema binario

Ya hemos visto en la definición de informática que ésta maneja información de manera automática, y para ello necesita almacenar esta información en lo que llamamos variables (intuitivamente, podemos pensar que una variable es un lugar en la memoria del computador).

Internamente, los computadores no pueden almacenar la información de la misma manera que la representamos las personas, puesto que los circuitos electrónicos que forman la CPU y la memoria únicamente pueden trabajar con y almacenar unos y ceros. Los circuitos que constituyen la memoria constan de unos interruptores muy pequeños (los transistores) que pueden estar cerrados o abiertos, y eso determina si circula la corriente o no, a su vez indicando un uno o un cero (y en las asignaturas de electrónica os explicarán con más detalle todo lo relativo a estos circuitos).

Por lo tanto, la única manera que tienen los computadores digitales de almacenar información es usando el sistema binario. Para entender cómo se codifica un número en binario, primero vamos a repasar el sistema universal de representación: el decimal.

¿Como declaramos variables en Python?

En Python, las variables se definen de forma dinámica, lo que significa que no se tiene que especificar cuál es su tipo de antemano y puede tomar distintos valores en otro momento (por eso se llaman variables), incluso de un tipo diferente al que tenía previamente.

Cada variable tiene tres componentes: ● un identificador , es decir, el nombre que le queremos asignar al dato. ● un valor , el dato o datos que contiene ● y un tipo , que hace referencia al tipo de datos que contiene, es decir, si es un número entero, un carácter, o un valor lógico (verdadero o falso).

Una vez iniciado el intérprete y nos muestre el prompt , declarar una variable es muy sencillo. A continuación podemos ver un ejemplo en el que declaramos la variable con identificador edad y le asignamos el valor 18 mediante el operador de asignación =.

edad = 18 edad 18

Para verificar que la variable edad contiene el valor correcto podemos ejecutar directamente su identificador y el intérprete nos mostrará su valor. Para saber el tipo de datos de la variable edad podemos usar la función type():

type(edad) <class 'int'>

En este caso, el resultado de la función type() nos indica que edad es de tipo int, es decir, un número entero.

¿Qué ocurre realmente en Python al declarar una variable o asignarle

un valor?

Cuando hemos introducido la idea de variable hemos dicho que intuitivamente podemos pensar que una variable es un espacio en la memoria del computador en el que se almacena un dato (y que tiene asociado un identificador, un valor, y es de un determinado tipo). En algunos lenguajes esto es realmente lo que sucede (por ejemplo en C), y es una manera natural de entender cómo se crean y almacenan datos en la memoria.

Lo que sucede en Python es ligeramente diferente ya que las variables no son un lugar en la memoria del computador donde almacenamos un valor, sino que las variables se refieren, a un lugar de memoria que contiene ese valor. Al ejecutar una sentencia de asignación (por ejemplo edad = 99) se crea primero un objeto con el valor 99 de tipo int y se almacena en la memoria, y luego la variable se refiere a ese objeto.

Ese lugar de memoria se denomina en Python identidad del objeto (conviene no confundirlo con el identificador de una variable). La asignación asocia el identificador edad a la identidad del objeto 99 (y por eso una asignación en Python suele llamarse referenciación o identificación ). El diagrama siguiente ilustra este procedimiento de manejo de la memoria:

Una vez aclarada esta particularidad de Python, conviene tener presente que la asignación no es equivalente a la igualdad matemática. Para apreciar este concepto podemos ejecutar las instrucciones siguientes:

x = 99. 99.0 = y SyntaxError: can't assign to literal id(x) 1747153955504 type(x) <class 'float'> x = x + 1 x

La sentencia 99.0 = y es un error de sintaxis, aunque sería válida en matemáticas. En cambio x = x + 1 sería absurda en matemáticas, pero en programación indica que hay que sumar 1 a la variable x y guardar el resultado en la misma variable x.

Fijémonos también que la identidad del objeto 99.0 es diferente a la de 99 , puesto que 99.0 es de tipo float (número real), mientras que 99 es un int (entero).

Identificadores y palabras reservadas

El identificador de una variable puede contener letras, números y el guión bajo "_", pero no puede empezar con un número. Aunque en matemáticas se suele usar una única letra para identificar una variable, es programación es muy preferible usar nombres más descriptivos que se asocien con el significado o el propósito de esa variable. Como la

(^1) El tipo de datos carácter no existe en Python (^2) Estructuras compuestas de lenguajes como C, Fortran o MATLAB (^3) Estructuras compuestas de Python

Python cuenta con otros tipos de datos que no veremos en esta asignatura, pero sí que debemos tener en cuenta si los tipos compuestos son: ● Mutables , cuando su contenido puede cambiarse en tiempo de ejecución. ● Inmutables , cuando su contenido no puede cambiarse en tiempo de ejecución.

Aunque la inmutabilidad parece ir en contra de la propia definición de variable, ya nos ocuparemos de esta particularidad más adelante.

Tipos de datos simples

Enteros (int)

En matemáticas, los números enteros son los naturales, sus negativos, y el cero. La mayoría de lenguajes de programación se refieren a este tipo numérico como integer o int. Python asigna este tipo automáticamente a los números literales que no tienen punto decimal o notación exponencial (como hemos visto en el ejemplo anterior con la variable edad).

También se puede usar la función int() para definir explícitamente una variable de este tipo:

temperatura = 25 type(temperatura) <class 'int'> type(37) <class 'int'> num_alumnos = int(56.5) num_alumnos 56 type(num_alumnos) <class 'int'> num_alumnos = int("56") num_alumnos 56 type(num_alumnos) <class 'int'>

Podemos ver como la función int() convierte un número real a entero o el texto "56" en el número entero también. Esta operación se suele denominar type casting , que en español podemos traducir por cambio de tipo, y hay otras funciones asociadas a otros tipos de datos que nos permiten cambiar entre diferentes tipos de datos.

En otros lenguajes de programación se utiliza un número determinado de bits (8, 16, 32 o

  1. para representar los enteros, y esto hace que el rango de números que se puede representar sea limitado, como hemos visto anteriormente. Sin embargo, en Python se utilizan tantos bits como sean necesarios. Podemos usar la función bin(), que convierte a

texto cualquier número entero para ver su representación binaria (anteponiendo el prefijo 0b):

bin(37) '0b100101' bin(37373737) '0b10001110100100011100101001'

También podemos usar la propia consola para comprobar que no hay limitación en la representación de enteros en Python, por ejemplo con un número que necesite muchos más bits que 64, como 2^150 :

2** 1809251394333065553493296640760748560207343510400633813116524750123642650624

Reales (float)

En informática, los números reales suelen llamarse números de coma flotante ( floating point , en inglés), o simplemente float. Es importante destacar que, aunque el símbolo separador de decimales normativo en Europa sea la coma, la mayoría de lenguajes de programación utiliza el punto siguiendo la costumbre anglosajona.

La representación binaria en computadores sigue la norma IEEE 754, y Python usa esta norma en doble precisión, es decir, representando los números reales con 64 bits (1 bit de signo, 11 de exponente, y 52 de mantisa):

La tabla siguiente resume los cálculos que hay que realizar para obtener el valor en base 10 de un número almacenado en formato IEEE 754 con doble precisión:

Signo (s) Exponente (exp) Mantisa (m) Valor en base 10 (v)

0 ó 1 0 < exp < 2047 indiferente (-1)s^ * 1,m * 2(exp - 1023)

0 2047 0 +∞

1 2047 0 -∞

0 ó 1 2047 ≠ 0 NaN

0 ó 1 0 0 0

0 ó 1 0 ≠ 0 (-1)s^ * 0,m * 2(exp - 1022)

True > False True int(True) 1 int(False) 0

Y cualquier número diferente de cero se convierte a cierto mediante la función bool():

bool(2) True bool(0) False bool(-5) True

Tipos de datos compuestos

Los tipos de datos compuestos o estructurados comprenden aquellos con elementos de valores de un mismo tipo o de diferentes tipos, que se representan unificados para ser guardados o procesados. Más adelante en el curso trabajaremos con tipos de datos que nos permitirán realizar operaciones con vectores y matrices de números, y conjuntos heterogéneos de números, texto y booleanos.

Por el momento, introduciremos el tipo de datos correspondiente a las cadenas de texto, que ya hemos visto en algún ejemplo, y que nos permitirá trabajar con secuencias de caracteres.

Cadena de caracteres o string (str)

El tipo de datos string es la estructura básica para trabajar con cadenas de texto, incluyendo todos los caracteres alfanuméricos y otros símbolos incluidos en la codificación ASCII o UTF-8. Python no tiene un tipo de datos simple correspondiente al carácter, por lo que un carácter es un string con un solo elemento.

Los string literales se pueden declarar entre comillas simples o dobles:

'Hola mundo!' 'Hola mundo!' "Hola mundo!" 'Hola mundo!'

Un string definido entre comillas simples puede contener comillas dobles y viceversa:

"That's a 'Hello World' text" "That's a 'Hello World' text" 'Eso era un mensaje de "Hola mundo"' 'Eso era un mensaje de "Hola mundo"'

También se puede definir un string con múltiples líneas usando una barra invertida al final de cada línea (o entre comillas triples). Este tipo de string es más habitual usarlo en ficheros de texto que contienen código y no tanto en la ventana de comandos:

texto1 = "A new subculture was born,
composed of the millions of people who
now devoted every free moment of their lives
to searching for Halliday's egg." texto "A new subculture was born, composed of the millions of people who now devoted every free moment of their lives to searching for Halliday's egg." texto2 = """A new subculture was born, composed of the millions of people who now devoted every free moment of their lives to searching for Halliday's egg. """ texto "A new subculture was born, \ncomposed of the millions of people who \nnow devoted every free moment of their lives \nto searching for Halliday's egg.\n"

El segundo ejemplo entre comillas triples nos muestra en el resultado el carácter de escape de nueva línea (\n). En realidad, el primer ejemplo es un string de una única línea, pero escrito en varias gracias a la barra invertida, mientras que el segundo sí que es realmente un string multilínea. Podemos comprobarlo usando la función print():

print(texto1) A new subculture was born, composed of the millions of people who now devoted every free moment of their lives to searching for Halliday's egg. print(texto2) A new subculture was born, composed of the millions of people who now devoted every free moment of their lives to searching for Halliday's egg.

El carácter de escape también puede usarse para agregar caracteres especiales dentro de un string (comillas simples dentro de un texto delimitado por comillas simples, tabulaciones, etc):

'My obsession with finding Halliday's Easter egg was gradually being supplanted by my obsession with Art3mis' "My obsession with finding Halliday's Easter egg was gradually being supplanted by my obsession with Art3mis" texto3 = "I would have \n\tto play a perfect game \n\t\tof Pac-Man" print(texto3) I would have to play a perfect game of Pac-Man

Para acabar con los string , la función str() nos permite convertir cualquier tipo a string :

str(3.1416) '3.1416' str(99) '99'