1. Introducción_y_rep_informacion (2).pdf

Full Transcript

Representación de información Fundamentos de Informática Daniel Fernández Álvarez Dpto. de Informática Contenidos 1. Definiciones básicas en informática. 2. Principales componentes de un ordenador. 3. Representación de información. Números....

Representación de información Fundamentos de Informática Daniel Fernández Álvarez Dpto. de Informática Contenidos 1. Definiciones básicas en informática. 2. Principales componentes de un ordenador. 3. Representación de información. Números. Texto Informática DEFINICIÓN Con informática nos referimos a un conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la Información por medio de ordenadores. Informática = Información + automática La informática abarca un espectro amplísimo de aspectos. En este curso nos centraremos sobre todo en adquirir competencias relacionadas con software. En concreto: Uso de hojas de cálculo (Excel). Uso de bases de datos (Microsoft Access). Introducción a la programación (lenguaje Python). Ordenador DEFINICIÓN Ordenador: dispositivo que recibe información en algún formato digitalizado y la manipula para producir un resultado basándose en un programa o secuencia de instrucciones que describen como ha de ser procesada la información de entrada. 1. Un ordenador manipula información para obtener un resultado. 2. Los datos han de ser almacenados en el propio ordenador. 3. La CPU que los procesa “entiende” un conjunto limitado de instrucciones. 4. La manera en que resolvemos cierto problema mediante un conjunto de instrucciones se denomina algoritmo. 5. Afortunadamente, para resolver problemas con un ordenador no tenemos que escribir instrucciones de CPU. Podemos utilizar lenguajes de Alto Nivel (de abstracción), como Python. Ordenador Necesitan programas para hacer cualquier cosa. Toda la información se representa mediante cables, con dos únicos posibles estados: encendido (1) o apagado (0). ¿Cómo nos comunicamos con ellos? Datos almacenados mediante bits. Un bit es la unidad mínima de información: un cero o un uno. Podemos usar puertas lógicas (físicas) para llevar a cabo operaciones con bits. Estas operaciones (básicas) nos permiten programar. Hardware vs software Con hardware nos referimos a cualquier aparato físico utilizado en un ordenador: CPU, ventilador, placa base, módulos de memoria RAM, disco SSD, periféricos (ratón, teclado, pantalla…), etc. Con software nos referimos a programas, es decir, al código que será ejecutado por una CPU. Partes de un ordenador: hardware HDD Ventilador CPU SSD Memoria secundaria Fuente de alimentación Puertos Placa base Memoria principal (RAM) Tarjeta gráfica Tarjeta de red Arquitectura von Neumann La mayoría de sistemas de computación modernos utilizan este diseño teórico como base: CPU (Central Processing Unit): ALU (Arithmetic and Logical Unit) Registros Unidad de control Memoria: Principal (instrucciones y datos) Masiva Dispositivos de entrada/salida Los elementos se comunican mediante un bus de datos. ¿Qué ocurre al ejecutar un programa? Cuando ejecutamos un programa: 1. El sistema operativo copia el código del programa en la memoria principal. 2. La CPU copia y ejecuta secuencialmente las instrucciones. Pero, ¿qué son esas instrucciones? ¿Qué códigos se copian o se ejecutan? Lenguajes de alto nivel (de abstracción): Python, Java, C#, Ruby, PHP, JavaScript, COBOL, etc. Se compila/interpreta Lenguaje ensamblador: bajo nivel (de abstracción) Se convierte a ceros y unos Lenguaje máquina: unos y ceros Se ejecuta en la CPU HARDWARE Alto nivel vs bajo nivel vs máquina Alto nivel Bajo nivel Código máquina Python Ensamblador (en hexadecimal) mov dword ptr [ebp-1Ch],3 00F613A8 mov dword ptr [ebp-18h],5 00F613AF mov dword ptr [ebp-14h],2 00F613B6 mov dword ptr [ebp-10h],1 00F613BD mov dword ptr [ebp-0Ch],7 00F613C4 lista=[3,5,2,1,7] mov dword ptr [ebp-34h],0 00F613CB Se compila/ mov dword ptr [ebp-28h],0 00F613D2 maximo=0 interpreta jmp wmain+64h (0F613E4h) Se convierte a 00F613D9 for d in lista: ceros y unos mov eax,dword ptr [ebp-28h] 00F613DB if d>maximo: add eax,1 00F613DE mov dword ptr [ebp-28h],eax 00F613E1 maximo=d cmp dword ptr [ebp-28h],5 00F613E4 jge wmain+82h (0F61402h) 00F613E8 mov eax,dword ptr [ebp-28h] 00F613EA mov ecx,dword ptr [ebp+eax*4-1Ch] 00F613ED cmp ecx,dword ptr [ebp-34h] 00F613F1 jle wmain+80h (0F61400h) 00F613F4 mov eax,dword ptr [ebp-28h] 00F613F6 mov ecx,dword ptr [ebp+eax*4-1Ch] 00F613F9 mov dword ptr [ebp-34h],ecx 00F613FD jmp wmain+5Bh (0F613DBh) 00F61400 Información como cadenas de bits DEFINICIÓN Bit: viene de dígito binario. Un bit es la unidad mínima de información. Representa un estado de encendido (1) o apagado (0). Los bits pueden agruparse en cadenas para representar información más compleja. Es habitual encontrar agrupaciones de 8, 16, 32, o 64 bits. Utilizamos grupos de bits para representar información compleja. Estas cadenas utilizan sistema binario, no el decimal. Sin embargo, podemos expresar en binario cualquier cifra que podamos expresar en decimal Llamamos byte a una secuencia de 8 bits. TODO en un ordenador se representa mediante bits/bytes: números, texto, fechas, valores lógicos, imágenes, sonido, etc. Representando enteros ¿Qué es realmente un número entero? Los números son una abstracción, no se manifiestan en la naturaleza de forma identitaria. Pero son una abstracción que resulta muy útil para los humanos en diferentes contextos Estamos acostumbrados al sistema decimal, aunque para determinados contextos usamos habitualmente sistemas con otras bases. Afortunadamente, ambos son sistemas de representación numérica posicional. Pero con diferente base. Enteros con diferentes bases BASE 10 (decimal). Dígitos → 0,1,2,3,4,5,6,7,8,9 BASE 2 (binario). Dígitos → 0,1 Número 4321 en base 10 4321 = 4 · 1000 + 3 · 100 + 2 · 10 + 1 · 1 = 4 · 103 + 3 · 102 + 2 · 101 + 1 · 100 Enteros con diferentes bases BASE 10 (decimal). Dígitos → 0,1,2,3,4,5,6,7,8,9 BASE 2 (binario). Dígitos → 0,1 Número 111 en base 10 11110 = 1 · 100 + 1 · 10 + 1 · 1 = 1 · 102 + 1 · 101 + 1 · 100 Número 111 en base 2 Enteros con diferentes bases BASE 10 (decimal). Dígitos → 0,1,2,3,4,5,6,7,8,9 BASE 2 (binario). Dígitos → 0,1 Número 111 en base 10 11110 = 1 · 100 + 1 · 10 + 1 · 1 = 1 · 102 + 1 · 101 + 1 · 100 Número 111 en base 2 1112 = 1 · 4 + 1 · 2 + 1 · 1 = 1 · 22 + 1 · 21 + 1 · 20 = 710 Practicar conversiones Convierte a base decimal los siguientes números expresados en binario: 1 10 101 10000000 1111111 10011011 00000011 10111110 Practicar conversiones Convierte a base decimal los siguientes números expresados en binario: 1 = 110 10 = 210 101 = 510 10000000 = 12810 1111111 = 12710 10011011 = 15510 00000011 = 310 10111110 = 19010 ¿Y para convertir un decimal en binario? Decimal = 41 1. Comienza dividiendo por dos el número inicial. División Cociente Resto Anota tanto el cociente como el resto de la 41 / 2 20 1 división. 20 / 2 10 0 2. Divide entre dos el cociente que te haya 10 / 2 5 0 quedado y anota el nuevo cociente y el resto, 5/2 2 1 3. Repite el paso 2 hasta que se realice una 2/2 1 0 división cuyo cociente sea cero. 1/2 0 1 4. Escribe los restos obtenidos en orden inverso. Binario = 101001 Practicar conversiones Convierte a binario los siguientes números expresados en base decimal: 2 4 10 58 100 Practicar conversiones Convierte a binario los siguientes números expresados en base decimal: 2 = 102 4 = 1002 10 = 10102 58 = 1110102 100 = 11001002 Representación de enteros con signo Recuerda: solo tenemos bits para representarlo todo. ¿Cómo representarías el signo de un número? Representación de enteros con signo Recuerda: solo tenemos bits para representarlo todo. ¿Cómo representarías el signo de un número? Alternativas: Bit más significativo para el signo. El resto, para el número. Mitad de combinaciones, números positivos incluyendo cero. La otra mitad, números negativos (muy parecida a la anterior, pero el cero no está representado dos veces). … Solución habitual → Complemento a 2 Para representar un número n usando N bits → Atajo: Escribe el número entero sin signo. Detecta el 1 menos significativo. Cambia unos por ceros y viceversa en todos los dígitos a la izquierda de ese número. Representación de enteros con signo Decimal = -14. Bits = 5 Aplicando la fórmula: 25 - |-14| = 32 – 14 = 18 Representamos el 18 en binario → 10010 Usando el atajo: Mismo resultado Representamos |-14| en binario → 01110 Detectamos el 1 menos significativo → 01110 Cambiamos ceros por unos y viceversa a la izquierda de ese 1 → 10010 Practicar conversiones Representa las siguientes cantidades decimales en binario usando complemento a 2 con 1 byte: 8 -8 -15 -20 -35 - 100 Practicar conversiones Representa las siguientes cantidades decimales en binario usando complemento a 2 con 1 byte: 8 → 00001000 -8 → 11111000 -15 → 11110001 -20 →11101100 -35 → 11011101 -100 → 10011100 ¿Cómo representar números reales? Alternativas Un bit para signo, unos cuántos para la parte entera, y los que queden para la parte decimal. … Solución general: números con coma flotante. Por este motivo, en informática solemos llamar floats a los números reales. Versión con 32 bits: 1 bit para signo. 8 bits para exponente. 23 bits para mantisa. La precisión del número cambia según sea de grande el exponente → coma flotante Sistema de representación hexadecimal Binario, base 2, 2 dígitos: 0, 1 Decimal, base 10, 10 dígitos: 0,1,2,3,4,5,6,7,8,9 Hexadecimal, base 16, 16 dígitos: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F ¿Por qué hexadecimal? Porque nos permite expresar grupos de 4 bits con un único carácter. Cuando necesitamos expresar secuencias de ceros y unos, usar hexadecimal acorta la cantidad de caracteres y mejora la legibilidad para humanos. Ejercicios Si quieres practicar con ejercicios extra: Existen muchas herramientas online para hacer conversiones entre binario, decimal y hexadecimal: Ejemplo (en inglés): https://www.binaryconvert.com/index.html Representación de textos (strings) DEFINICIÓN Carácter. Es un único símbolo: un dígito, una letra, un signo de puntuación… existen símbolos menos obvios, como el carácter espacio en blanco, el carácter salto de línea o el carácter retorno de carro. Utilizamos convenios para representar caracteres. Utilizamos tablas de conversión en los que determinado número (binario) se corresponde con determinado carácter. De esta forma, podemos representar caracteres usando lo único que podemos usar: bits. DEFINICIÓN Cadenas de texto (strings). Una cadena de texto es una secuencia de caracteres de cualquier tipo. Convenios para caracteres Existen muchos tipos de codificaciones (convenios). Una de las más habituales es UTF-8: Cada carácter se representa utilizando entre 1 y 4 bytes → 232 posibles combinaciones La primera y de las más básicas es ASCII: Cada carácter se representa utilizando un único byte → 28 (256) posibles combinaciones. Los primeros 128 se denominan printable ASCII → suficientes para inglés, insuficientes para muchas otras lenguas. Los otros 128 son extensiones no tan estándar (extended ASCII). Trata de escribir tu nombre usando la tabla ASCII Representación de información Fundamentos de Informática Daniel Fernández Álvarez Dpto. de Informática

Use Quizgecko on...
Browser
Browser