Sistemas numéricos Tipos de datos Operadores y variables Programación (314 − 202): Elementos de programación Alejandro Piedrahita H. Instituto de Matemáticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia Copyleft « 2013. Reproducción permitida bajo los términos de la licencia de documentación libre GNU Referencias Sistemas numéricos Tipos de datos Contenido 1 Sistemas numéricos 2 Tipos de datos 3 Operadores y variables 4 Referencias Operadores y variables Referencias Sistemas numéricos Tipos de datos Operadores y variables Referencias Sistema de numeración Conjunto de sı́mbolos y reglas que permiten construir todos los números válidos en el sistema. Los sistemas de numeración pueden clasificarse en dos grandes grupos: posicionales: el valor de un dı́gito depende tanto del sı́mbolo utilizado, como de la posición que dicho sı́mbolo ocupa en el número (sistema decimal, binario, etc.) no-posicionales: los dı́gitos tienen el valor del sı́mbolo utilizado y no dependen de la posición (columna) que ocupan en el número (sistema egipcio, romano). El número de sı́mbolos permitidos en un sistema de numeración posicional se conoce como base del sistema de numeración. Un sistema de base b cuenta con b sı́mbolos diferentes para escribir los números y b unidades forman una unidad de orden superior. Sistemas numéricos Tipos de datos Operadores y variables Referencias Sistema de numeración Sistema decimal Sistema en base 10 (b = 10). Sı́mbolos disponibles: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Ejemplos: 5697 = 5000 + 600 + 90 + 7 = 5 · 103 + 6 · 102 + 9 · 101 + 7 · 100 0,314 = 0,3000 + 0,010 + 0,004 = 3 · 10−1 + 1 · 10−2 + 4 · 10−3 82,34 = 80 + 2 + 0,30 + 0,04 = 8 · 10 + 2 · 100 + 3 · 10−1 + 4 · 10−2 Sistema binario Sistema en base 2 (b = 2). Sı́mbolos disponibles: 0, 1 Ejemplos: 1011 = 1 · 23 + 0 · 22 + 1 · 21 + 1 · 20 0,1101 = 1 · 2−1 + 1 · 2−2 + 0 · 2−3 + 1 · 2−4 Sistemas numéricos Tipos de datos Operadores y variables Sistema de numeración Todo número número N en un sistema de numeración posicional de base b se puede escribir como: N = dn . . . d1 d0 , d−1 . . . d−k = dn · bn + · · · + d1 · b1 + d0 · b0 + d−1 · b−1 + · · · + d−k · b−k = n X d i · bi i=−k Sistema Octal Sistema en base 8 (b = 8). Sı́mbolos disponibles: 0, 1, 2, 3, 4, 5, 6, 7 Ejemplo: 3452,32 = 3 · 83 + 4 · 82 + 5 · 81 + 2 · 80 + 3 · 8−1 + 2 · 8−2 Referencias Sistemas numéricos Tipos de datos Operadores y variables Referencias Sistema de numeración Sistema Hexadecimal Sistema en base 16 (b = 16). Sı́mbolos disponibles: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Ejemplo: 3E0, A = 3 · 162 + E · 161 + 0 · 160 + A · 16−1 Para distinguir números de diferentes bases, los dı́gitos se encierran entre paréntesis y la base se escribe como subı́ndice: (101101)2 = 1 · 25 + 0 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20 = (45)10 (736,4)8 = 7 · 82 + 3 · 81 + 6 · 80 + 4 · 8−1 = (478,5)10 (F 3)16 = F · 161 + 3 · 160 = 15 · 16 + 3 = (243)10 Sistemas numéricos Tipos de datos Operadores y variables Referencias Sistema de numeración Conversión de entero decimal a binario: se divide el número por 2, el cociente obtenido se divide de nuevo por 2 y ası́ sucesivamente hasta que el cociente sea 1. y obtenemos (100)10 = (1100100)2 Sistemas numéricos Tipos de datos Operadores y variables Referencias Sistema de numeración Conversión de decimal a binario: se realizan multiplicaciones sucesivas por la base 2 y se acumulan los dı́gitos enteros obtenidos en el orden de aparición. Ejemplo: para convertir (0,6875)10 a binario: 0,6875 × 2 = 1,3750 0,3750 × 2 = 0,7500 0,7500 × 2 = 1,5000 0,5000 × 2 = 1,0000 y obtenemos (0,6875)10 = (0,1011)2 Sistemas numéricos Tipos de datos Operadores y variables Referencias Conversión de binario a octal Debido a que 23 = 8, cada dı́gito octal corresponde a tres dı́gitos binarios. Se agrupan los dı́gitos binarios en grupos de 3 en 3 iniciando por el lado derecho y a cada grupo se le asigna el valor correspondiente: La cantidad correspondiente en octal se agrupa de izquierda a derecha. Ejemplos: para convertir a octal . . . (110111)2 = |{z} 110 |{z} 111 = (67)8 6 7 (11001111)2 = |{z} 011 |{z} 001 |{z} 111 = (317)8 1 3 7 Para convertir de octal a binario . . . (247)8 = |{z} 010 |{z} 100 |{z} 111 = (010100111)2 2 4 7 Sistemas numéricos Tipos de datos Operadores y variables Referencias Conversión de binario a hexadecimal: Debido a que 24 = 16, cada dı́gito hexadecimal corresponde a cuatro dı́gitos binarios. Se agrupan los dı́gitos binarios en grupos de 4 en 4 iniciando por el lado derecho y a cada grupo se le asigna el valor correspondiente: La cantidad correspondiente en hexadecimal se agrupa de izquierda a derecha. Ejemplos: para convertir a hexadecimal . . . (110111010)2 = 0001 | {z } 1011 | {z } 1010 | {z } = (1BA)16 1 B A (11011110101)2 = 0110 | {z } 1111 | {z } 0101 | {z } = (6F 5)16 6 F 5 Para convertir de hexadecimal a binario . . . (6AC)16 = 0110 | {z } 1010 | {z } 1100 | {z } = (011010101100)2 6 A C Sistemas numéricos Tipos de datos Operadores y variables Referencias Conceptos básicos Dato Sı́mbolo fı́sico que se utiliza para representar información Representa un atributo o una caracterı́stica de una entidad Describe entidades sobre las cuales opera un algoritmo o programa Proceden de hechos, abstracciones reales: Nombre de una persona Producto interno bruto de un paı́s Número de horas trabajadas Altura de una montaña Información Conjunto organizado de datos procesados, que constituyen un mensaje sobre un determinado ente o fenómeno Los datos generan la información necesaria para producir conocimiento Tipos de datos Numéricos: enteros, reales Lógicos (booleanos): verdadero, falso Alfanuméricos: caracteres alfabéticos, numéricos y especiales Sistemas numéricos Tipos de datos Operadores y variables Referencias Tipo de dato entero Enteros Datos cuyos valores pertenecen al conjunto de los números enteros (Z) Por limitaciones de hardware no todo número entero puede ser un tipo de dato entero Representación interna de tipos de datos enteros: Binario puro Modulo y signo Complemento a 1 Complemento a 2 Sistemas numéricos Tipos de datos Operadores y variables Tipos de dato entero (binario puro) Palabra de n bits (1 ó 0): 2 · 2 · 2 · · · 2 · 2 = 2n posibilidades | {z } n veces Rango de representación: 0 ≤ valor ≤ 2n − 1 Palabra de 8 bits (n = 8): 0 ≤ valor ≤ 28 − 1 = 255 Palabra de 16 bits (n = 16): 0 ≤ valor ≤ 216 − 1 = 65535 Referencias Sistemas numéricos Tipos de datos Operadores y variables Tipos de dato entero (binario puro) Palabra de 16 bits (n = 16): [0, 65535] El menor número: 0 0 · 20 + 0 · 21 + 0 · 22 + · · · + 0 · 215 = 0 El mayor número: 65535 1 · 20 + 1 · 21 + 1 · 22 + · · · + 1 · 215 = 65535 Referencias Sistemas numéricos Tipos de datos Operadores y variables Tipos de dato entero (módulo y signo) Método de representación que incluye enteros negativos: Bit de signo: 0 para positivos 1 para negativos Bits de módulo: módulo del entero en binario Enteros positivos (palabra de n bits): 0 ≤ valor ≤ 2n−1 − 1 Enteros negativos (palabra de n bits): −(2n−1 − 1) ≤ valor ≤ 0 Rango de representación (simétrico): Referencias Sistemas numéricos Tipos de datos Operadores y variables Tipos de dato entero (módulo y signo) El número 0 tiene dos representaciones: Palabra de 8 bits (n = 8): −2n−1 + 1 ≤ valor ≤ 2n−1 − 1 −27 ≤ ≤ valor valor ≤ ≤ 27 − 1 127 −2n−1 + 1 ≤ valor ≤ 2n−1 − 1 −215 + 1 −32767 ≤ ≤ valor valor ≤ ≤ 215 − 1 32767 ≤ valor ≤ 2n−1 − 1 ≤ ≤ valor valor ≤ ≤ 231 − 1 2147483647 +1 −127 Palabra de 16 bits (n = 16): Palabra de 32 bits (n = 32): −2n−1 + 1 −231 +1 −2147483647 Referencias Sistemas numéricos Tipos de datos Operadores y variables Referencias Tipos de dato entero (complemento a 1) Método de representación que incluye enteros negativos: Bit de signo: 0 para positivos 1 para negativos Bits de módulo: módulo del entero en binario Rango de representación (simétrico): −2n−1 + 1 ≤ valor ≤ 2n−1 − 1 Representación de enteros negativos: Se obtiene “complementando” los bits del modulo, i.e., cambiando ceros por unos y viceversa Sistemas numéricos Tipos de datos Operadores y variables Referencias Tipos de dato entero (complemento a 2) Método de representación que incluye enteros negativos: Bit de signo: 0 para positivos 1 para negativos Bits de módulo: módulo del entero en binario Representación de enteros negativos: 1 Se realiza el complemento a 1 del número positivo (incluyendo el bit de signo) 2 Al resultado obtenido en el paso (1) se suma 1 en binario y se desprecia el acarreo Rango de representación (asimétrico): n−1 , 2n−1 − 1 −2 =⇒ +0 = −0 = 0 0 0 0 · · · 0 0 0 (ver tablero) Ejemplo: −42 en complemento 2 en una palabra de n = 8 bits 1 2 1 1010101 Sumar 1 a lo obtenido en (1) + 1 0 1010101 0000001 1 1010110 Sistemas numéricos Tipos de datos Operadores y variables Referencias Tipo de dato real Reales Datos cuyos valores pertenecen al conjunto de los números reales (R) ¿Cómo representar un número real arbitrario con una cantidad limitada de espacio de memoria? Desbordamiento (overflow) Desbordamiento negativo (underflow) Truncamiento (truncation) Representación de datos reales (notación cientı́fica): número = mantisa × baseexponente Infinitas representaciones de un mismo número: 12906.403 12906.403 12906.403 = = = 12906.403 × 100 12906403 × 12906.403 = 0.0012906403 × 10+7 10−3 12906.403 = 0.12906403 × 10+5 10+2 12906.403 = 129064030 × 10−4 129.06403 × Sistemas numéricos Tipos de datos Operadores y variables Referencias Tipo de dato real (representación en punto flotante) Representación en punto flotante (normalizada): r = (−1)s · m · be s (signo): representa el signo del número (s = 0 positivo y s = 1 negativo) m (mantisa): no incluye la parte entera de r y la primera cifra a la derecha del punto debe ser distinta de cero (cifra significativa) e (exponente): orden de magnitud del significando. El mı́nimo y máximo valor del exponente determinan el rango de valores representables. b (base): base del sistema (10 en sistema decimal, 2 en binario, etc) Ejemplos: 376.730313461 = 0.376730313461 × 10+3 299792458 = 0.299792458 × 10+9 0.014387752 = 0.14387752 × 10−2 0.665245873 = 0.665245873 × 100 Sistemas numéricos Tipos de datos Operadores y variables Referencias El estándar IEEE 754 Formatos definidos por el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) para la representación de números reales Establece dos formatos básicos para representar tipos de datos reales en computadores: precisión simple y precisión doble Precisión simple: se almacena en una palabra de 32 bits Precisión doble: se almacena en una palabra de 64 bits Sistemas numéricos Tipos de datos Operadores y variables Referencias Precisión simple 32-bits Un número en punto flotante de precisión simple se almacena en una palabra de 32 bits: El exponente sesgado está dado por es = 27 − 1 = 127 y el exponente real se encuentra en el rango de −126 a 127. Un exponente de −127 es desplazado a 0 y un exponente de 128 es desplazado a “infinito” o a NaN. El número normalizado tiene el valor de (−1)signo × (1 + fracción) × 2e−es donde s = +1 (números positivos y +0) cuando el bit del signo es 0. s = −1 (números negativos y -0) cuando el bit del signo es 1. e = exponente − 127 (exponente “sesgado con 127”). m = 1.fracción Sistemas numéricos Tipos de datos Operadores y variables Precisión simple 32-bits En el ejemplo anterior: signo = 0 y para el exponente tenemos (01111100)2 = 1 · 26 + 1 · 25 + 1 · 24 + 1 · 23 + 1 · 22 = (124)10 y por tanto e − es = 124 − 127 = −3 . Para la mantisa tenemos 1 + fracción = 1 + 0,010000000000000000000000 = (1,01)2 = 1 · 20 + 1 · 2−2 = (1.25)10 . Por tanto el número representado en la figura es (−1)signo × 2e−es × (1 + fracción) = 1.25 × 2−3 = +0.15625 Referencias Sistemas numéricos Tipos de datos Operadores y variables Referencias Precisión simple 32-bits En este ejemplo vamos a almacenar el número decimal −118.6254 en una estructura de 32 bits utilizando el sistema IEEE 754. El signo es 1 (el número es negativo). El número sin signo es convertido a binario: (118.6254)10 = (1110110.101)2 (1) El número (1) se normaliza: 1110110.101 = 1.110110101 × 26 De (2) extraemos los bits que llenarán los 23 campos de la mantisa: 110110101 = 11011010100000000000000 Finalmente el exponente es 6, lo convertimos a binario y le aplicamos el desplazamiento a 127 para corregir el “sesgo”: 6 + 127 = (133)10 = (10000101)2 (2) Sistemas numéricos Tipos de datos Operadores y variables Referencias Doble precisión 64-bits Un número en punto flotante de doble precisión se almacena en una palabra de 64 bits: El exponente sesgado está dado por es = 211−1 − 1 = 1023 y el exponente real se encuentra en el rango de −1022 a 1023. El número normalizado tiene el valor de (−1)signo × 2e−es × (1 + fracción) donde s = +1 (números positivos y +0) cuando el bit del signo es 0. s = −1 (números negativos y -0) cuando el bit del signo es 1. e = exponente − 1023 (exponente “sesgado en 1023”). m = 1.fracción Sistemas numéricos Tipos de datos Operadores y variables Referencias Doble precisión 64-bits Por ejemplo, para 0 10000000011 101110010001000000000000000000000000000000000000000 s = 0 (positivo), 10 e=1·2 9 2 1 0 + 0 · 2 + · · · + 0 · 2 + 1 · 2 + 1 · 2 = 1024 + 2 + 1 = 1027 , f =1·2 −1 +1·2 −3 +1·2 −4 −5 +1·2 −8 +1·2 −12 +1·2 1 1 1 1 1 1 = + + + + + 2 8 16 32 256 4096 y por tanto signo (−1) e−1023 2 0 1027−1023 (1 + fracción) = (−1) 2 = 27.56640625 1 1 1 1 1 1 + + + + + 2 8 16 32 256 4096 Sistemas numéricos Tipos de datos Operadores y variables Referencias Tipos de datos lógicos (booleanos) Tipo de dato que sólo puede tomar dos valores: verdadero o falso Representa los “valores de verdad” de la lógica y del álgebra booleana Resultan apartir de operaciones lógica y relacionales (de comparación) La representación interna de este tipo de dato depende del lenguaje de programación Pascal: tipo de dato Boolean C: no cuenta con un tipo de dato lógico, en su lugar se utiliza un tipo de dato entero (0 es falso y distinto de 0 es verdadero) Sistemas numéricos Tipos de datos Operadores y variables Referencias Tipos de datos alfanuméricos Datos que almacenan caracteres alfanuméricos Caracteres alfabéticos: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N,O, P, Q, R, S, T, U, V, W, X, Y, Z Caracteres numéricos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Caracteres especiales: ! @ # % ∧ & * ( ) Clases de datos alfanuméricos: Carácter: ’a’, ’x’, ’M’, ’3’ Cadena: "hola", "nombre cliente", "ResultadoOperacion 2", " " Sistemas numéricos Tipos de datos Operadores y variables Referencias Representación de datos alfanuméricos Digitalización: los datos alfanuméricos se transforman en secuencias de ceros y unos para poder ser almacenados y procesados Código binario: tabla que asigna a cada caracter un número EBCDIC (Extended Binary Coded Decimal Interchange Code): código estándar de 8 bits usado por computadoras mainframe IBM ASCII (American Standard Code for Information Interchange): código de → caracteres basado en el alfabeto latino (8 bits) Unicode: código de caracteres de 8, 12 y 32 bits. Abarca caracteres de alfabetos no latinos (griegos, eslavos, asiáticos) Sistemas numéricos Tipos de datos Operadores y variables Referencias Identificadores Identificadores: nombres utilizados para referenciar los distintos elementos utilizados en un algoritmo o programa Los identificadores están formados por una serie de dı́gitos alfanuméricos El primer carácter debe ser una letra No deben contener espacios en blanco No deben contener caracteres acentuados El lı́mite de caracteres a usar depende del lenguaje de programación Los identificadores deben ser declarados antes de ser utilizados Los nombres elegidos deben dar una idea de su uso: nombre paciente, edad, salario2009, PorcentajeGastos Caracteres especiales: identificadores restringidos para uso especı́fico de cada lenguaje de programación Sistemas numéricos Tipos de datos Operadores y variables Referencias Operadores aritméticos Operandos: números, constantes o variables Operadores aritméticos: realizan operaciones aritméticas entre operandos para obtener números. Operador ∧ ∗ / + − mod div Operación Potencia Multiplicación División Suma Resta Módulo (residuo) División entera Ejemplo 2∧3 7∗3 10/4 3−4 7−4 10 mod 3 16 div 5 Resultado 8 21 2,5 −1 3 1 3 Jerarquı́a de los operadores: al evaluar expresiones que contienen operadores aritméticos se debe respetar cierto orden (“jerarquı́a”). Operador ∧ ∗, /, mod, div +, − Jerarquı́a (mayor) (menor) Operación Potencia Multiplicación, división, módulo, división entera Suma, resta Expresiones entre paréntesis se evalúan primero. Si dos o más operadores consecutivos tienen la misma jerarquı́a, las operaciones se ejecutan de izquierda a derecha. Sistemas numéricos Tipos de datos Operadores y variables Ejemplos 8+6−5 20/5/4 9 + 7 ∗ 8 − 24/3 9 ∗ 4 ∧ 3/3 div 5 = 8+6−5 = 14 − 5 = 9 = 20/5/4 = 4/4 = 1 = 9 + 7 ∗ 8 − 24/5 = 9 + 56 − 24/5 = 9 + 56 − 4,8 = 65 − 4,8 = 60,2 = 9 ∗ 4 ∧ 3/3 div 5 = 9 ∗ 64/3 div 5 = 576/3 div 5 = 192 div 5 = 38 Referencias Sistemas numéricos Tipos de datos Operadores y variables Ejemplos 7 ∗ 8 ∗ (160 mod 3 ∧ 3) div 5 ∗ 13 − 28 = 7 ∗ 8 ∗ (160 mod 3 ∧ 3) div 5 ∗ 13 − 28 = 7 ∗ 8 ∗ (160 mod 27) div 5 ∗ 13 − 28 = 7 ∗ 8 ∗ 25 div 5 ∗ 13 − 28 = 56 ∗ 25 div 5 ∗ 13 − 28 = 1400 div 5 ∗ 13 − 28 = 280 ∗ 13 − 28 = 3640 − 28 = 3612 Referencias Sistemas numéricos Tipos de datos Operadores y variables Ejemplos 15/2 ∗ (7 + (68 − 15 ∗ 33 + (45 ∧ 2/16)/3)/15) + 19 = 15/2 ∗ (7 + (68 − 15 ∗ 33 + (45 ∧ 2/16)/3)/15) + 19 = 15/2 ∗ (7 + (68 − 15 ∗ 33 + (45 ∧ 2/16)/3)/15) + 19 = 15/2 ∗ (7 + (68 − 15 ∗ 33 + (2025/16)/3)/15) + 19 = 15/2 ∗ (7 + (68 − 15 ∗ 33 + 126, 5625/3)/15) + 19 = 15/2 ∗ (7 + (68 − 495 + 126, 5625/3)/15) + 19 = 15/2 ∗ (7 + (68 − 495 + 42,1875)/15) + 19 = 15/2 ∗ (7 + (−427 + 42,1875)/15) + 19 = 15/2 ∗ (7 + (−384,8125)/15) + 19 = 15/2 ∗ (7 + (−25,6541)) + 19 = 15/2 ∗ (−18,6541) + 19 = 7,5 ∗ (−18,6541) + 19 = −139,9062 + 19 = −120,9262 Referencias Sistemas numéricos Tipos de datos Operadores y variables Referencias Operadores relacionales Las expresiones lógicas o booleanas están formadas por números, constantes o variables y operadores relacionales o lógicos. El valor que pueden tomar las expresiones booleanas es el de verdadero o falso. El valor de estas expresiones se utiliza en las estructuras selectivas y en las estructuras repetitivas. Los operadores relacionales son operadores que permiten comparar dos operandos. Operador = <> < > <= >= Operación Igual Diferente de Menor que Mayor que Menor o igual que Mayor o igual que Ejemplo ’hola’ = ’ola’ ’a’ <> ’b’ 10 < 4 3 > −4 7 <= 7 10 >= 3 Resultado FALSO VERDADERO FALSO VERDADERO VERDADERO VERDADERO Cuando se combinan operadores relacionales con operadores lógicos, FALSO es menor que VERDADERO. Sistemas numéricos Tipos de datos Operadores y variables Ejemplos A = 5 y B = 16 A ∧ 2 > (B ∗ 2) A ∧ 2 > (B ∗ 2) 25 > (B ∗ 2) 25 > 32 FALSO x = 6 y B = 7,8 (x ∗ 5 + B ∗ 3/4) <= (x ∧ 3 div B) (x ∗ 5 + B ∗ 3/4) <= (x ∧ 3 div B) (x ∗ 5 + 474,552/4) <= (x ∧ 3 div B) (30 + 474,552/4) <= (x ∧ 3 div B) (30 + 118,638) <= (x ∧ 3 div B) 148,638 <= (x ∧ 3 div B) 148,638 <= (216 div B) 148,638 <= 27 FALSO Referencias Sistemas numéricos Tipos de datos Operadores y variables Ejemplos ((1580 mod 6 ∗ 2 ∧ 7) > (7 + 8 ∗ 3 ∧ 4)) > ((15 ∗ 2) = (60 ∗ 2/4)) ((1580 mod 6 ∗ 2 ∧ 7) > (7 + 8 ∗ 3 ∧ 4)) > ((15 ∗ 2) = (60 ∗ 2/4)) ((1580 mod 6 ∗ 128) > (7 + 8 ∗ 3 ∧ 4)) > ((15 ∗ 2) = (60 ∗ 2/4)) ((2 ∗ 128) > (7 + 8 ∗ 3 ∧ 4)) > ((15 ∗ 2) = (60 ∗ 2/4)) (256 > (7 + 8 ∗ 3 ∧ 4)) > ((15 ∗ 2) = (60 ∗ 2/4)) (256 > (7 + 8 ∗ 81)) > ((15 ∗ 2) = (60 ∗ 2/4)) (256 > (7 + 648)) > ((15 ∗ 2) = (60 ∗ 2/4)) (256 > 655) > ((15 ∗ 2) = (60 ∗ 2/4)) FALSO > ((15 ∗ 2) = (60 ∗ 2/4)) FALSO > (30 = (60 ∗ 2/4)) FALSO > (30 = (120/4)) FALSO > ((30 = 30)) FALSO > VERDADERO FALSO Referencias Sistemas numéricos Tipos de datos Operadores y variables Referencias Operadores lógicos Operan sobre expresiones lógicas (verdadero/falso) produciendo nuevas expresiones lógicas. Las expresiones lógicas obtenidas determinan el flujo de control de un algoritmo o programa. Operador lógico NO Y O Jerarquı́a (mayor) (menor) Expresión lógica No P PYQ P O Q Signficado No es cierto que P PyQ o P o Q o ambas El comportamiento de un operador lógico suele definirse mediante su correspondiente “tabla de verdad”. P Q ∼P ∼Q P y Q P o Q V V F F V F V F F F V V F V F V V F F F V V V F Sistemas numéricos Tipos de datos Operadores y variables Referencias Jerarquı́a de los operadores lógicos El operador () es un operador asociativo que en la mayorı́a de lenguajes tiene la prioridad más alta (jerarquı́a). En lenguaje C el operador con mayor prioridad es la negación NO (∼). La jerarquı́a de todos los operadores (aritméticos, relacionales y lógicos) se muestra a continuación. Operador () ∧ ∗, /, div, mod =, <>, <, >, <=, >= NO Y O Jerarquı́a (mayor) (menor) Sistemas numéricos Tipos de datos Operadores y variables Ejemplos NO (15 >= 7 ∧ 2) O (43 − 8 ∗ 2 div 4 <> 3 ∗ 2 div 2) NO (15 >= 7 ∧ 2) O (43 − 8 ∗ 2 div 4 <> 3 ∗ 2 div 2) NO (15 >= 49) O (43 − 8 ∗ 2 div 4 <> 3 ∗ 2 div 2) NO FALSO O (43 − 8 ∗ 2 div 4 <> 3 ∗ 2 div 2) NO FALSO O (43 − 16 div 4 <> 3 ∗ 2 div 2) NO FALSO O (43 − 4 <> 3 ∗ 2 div 2) NO FALSO O (43 − 4 <> 6 div 2) NO FALSO O (43 − 4 <> 3) NO FALSO O (39 <> 3) NO FALSO O VERDADERO VERDADERO O VERDADERO VERDADERO Referencias Sistemas numéricos Tipos de datos Operadores y variables Referencias Ejemplos (15 >= 7 ∗ 3 ∧ 2 Y 8 > 3 Y 15 > 6) O NO (7 ∗ 3 < 5 + 12 ∗ 2 div 3 ∧ 2) (15 >= 7 ∗ 3 ∧ 2 Y 8 > 3 Y 15 > 6) O NO (7 ∗ 3 < 5 + 12 ∗ 2 div 3 ∧ 2) (15 >= 7 ∗ 9 Y 8 > 3 Y 15 > 6) O NO (7 ∗ 3 < 5 + 12 ∗ 2 div 3 ∧ 2) (15 >= 63 Y 8 > 3 Y 15 > 6) O NO (7 ∗ 3 < 5 + 12 ∗ 2 div 3 ∧ 2) (FALSO Y VERDADERO Y VERDADERO) O NO (7∗3 < 5+12∗2 div 3∧2) (FALSO Y VERDADERO) O NO (7 ∗ 3 < 5 + 12 ∗ 2 div 3 ∧ 2) FALSO O NO (7 ∗ 3 < 5 + 12 ∗ 2 div 3 ∧ 2) FALSO O NO 21 < 5 + 24 div 9) FALSO O NO 21 < 5 + 2) FALSO O NO (21 < 7) FALSO O NO FALSO FALSO O VERDADERO VERDADERO Sistemas numéricos Tipos de datos Operadores y variables Ejemplos NO ((7 ∗ 3 div 2 ∗ 4) > (15/2 ∗ 6 >= 15 ∗ 2/17 = 15)) NO ((21 div 2 ∗ 4) > (15/2 ∗ 6 >= 15 ∗ 2/17 = 15)) NO ((10 ∗ 4) > (15/2 ∗ 6 >= 15 ∗ 2/17 = 15)) NO (40 > (15/2 ∗ 6 >= 15 ∗ 2/17 = 15)) NO (40 > (7,5 ∗ 6 >= 15 ∗ 2/17 = 15)) NO (40 > (7,5 ∗ 6 >= 30/17 = 15)) NO (40 > (45 >= 1,75 = 15)) NO (40 > (VERDADERO = 15)) ERROR Referencias Sistemas numéricos Tipos de datos Operadores y variables Referencias Variables Definición 3.1 (Variable) Una variable es una posición de memoria que se referencia mediante un identificador (nombre de la variable) y que permite almacenar el valor de un dato que puede cambiar durante la ejecución del programa Observaciones: Una variable no es un dato, es una zona de memoria que contiene un dato que puede variar Los datos se almacenan en posiciones de memoria que se pueden referenciar con identificadores en lugar de secuencias de 0 y 1 Definición 3.2 (Declaración e inicialización) Una declaración es una sentencia que asocia un identificador a un objeto o a un proceso para poder referirse a ese objeto o proceso por un nombre particular. Inicializar una variable significa asignarle un valor inicial. Formato de declaración e inicialización de variables: tipo Nombre Variable Nombre Variable = valor Sistemas numéricos Tipos de datos Operadores y variables Referencias Variables Se utilizan para asignar valores o expresionas a una variable. La asignación es una operación “destructiva”: si la variable tenı́a asignado un valor previo, éste se sustituye por el nuevo valor asignado. La sintaxis que utilizaremos para la asignación es la siguiente: variable ←− expresión o valor Por ejemplo, si contador es una variable de tipo entero, contador ←− 3 el valor almacenado en contador es el número entero 3. En el siguiente ejemplo considere las variables I de tipo entero ACUM de tipo entero J de tipo entero REA y SUM de tipo real CAR de tipo caracter BAND de tipo booleano Sistemas numéricos Tipos de datos Operadores y variables Referencias Variables (ejemplo) 1 I←0 8 BAND ← (8 > 5) Y (15 < 2 ∧ 3) 2 I ← I +1 9 SUM ← ACUM∗5/J∧2 3 4 ACUM ← 0 10 I ← I∗3 J ← 5 ∧ 2 div 3 11 REA ← REA/5 5 CAR ← ’a’ 12 BAND ← BAND o (I=J) 6 ACUM ← J div I 13 I ← REA 7 REA ← ACUM/3 14 CAR ← J # I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 X0X X1 X J 8 ACUM REA SUM CAR X0X Xa X 8 H 2.66 H X FALSO X X 0.625 X3 X BAND 0.532 FALSO ERROR ERROR Sistemas numéricos Tipos de datos Operadores y variables Bibliografı́a I S. Attaway Matlab: A Practical Introduction to Programming and Problem Solving Butterworth-Heinemann, 2011 L. Blanco Probabilidad Universidad Nacional de Colombia, Primera edición, 2004. G. Brassard Algorithmics: Theory and Practice Prentice Hall, Inc., 1988 J.W. Brown, D.J. Murdoch A First Course in Statistical Programming With R Cambridge University Press, 1th edition , 2008 D. Burton Elementary Number Theory McGraw Hill Higher Education, 5th edition, 2002 Referencias Sistemas numéricos Tipos de datos Operadores y variables Bibliografı́a II O. Cairó Metodologı́a de la programación Segunda edición. Alfaomega Grupo Editor, S.A., 2005 M.A. Criado Programación en lenguajes estructurados Alfaomega Grupo Editor, S.A. de C.V. Primera Edición, 2006 S. Ghahramani Fundamentals of Probability with Stochastic Processes Pearson Education, Inc., 2005 D.J. Hunter Essentials of Discrete Mathematics Jones & Bartlett Learning; 2 edition, 2010 H.P. Langtangen A Primer on Scientific Programming with Python Springer, 2011 Referencias Sistemas numéricos Tipos de datos Operadores y variables Bibliografı́a III O. Jones, R. Maillardet, A. Robinson Introduction to Scientific Programming and Simulation Using R Chapman and Hall/CRC; 1 edition, 2009 J. Kiusalaas Numerical Methods in Engineering with Matlab Cambridge University Press, 2 edition, 2009 D.E. Knuth The Art of Computer Programming Volume 1, Fundamental Algorithms Addison Wesley Longman, 1997 S. Lipschutz Schaum’s Outline of Essential Computer Mathematics McGraw-Hill, 1th edition, 1982 Ch.F. Van Loan Introduction to Scientific Computing Prentice-Hall, Inc., 1997 Referencias Sistemas numéricos Tipos de datos Operadores y variables Bibliografı́a IV C.B. Moler Numerical Computing with Matlab SIAM, 2004 H.M. Mora Escobar Introducción a C y a métodos numéricos Universidad Nacional de Colombia (Sede Bogotá), 2004 A. Quarteroni, F. Salieri Cálculo cientı́fico con MATLAB y Octave Springer-Verlag Italia, 2006 S.M. Ross Simulation Elsevier Inc., 2006 R. Séroul Programming for Mathematicians Springer, 2000 Referencias Sistemas numéricos Tipos de datos Operadores y variables Referencias Bibliografı́a V E. Scheinerman C ++ for Mathematicians: An Introduction for Students and Professionals Taylor & Francis Group, LLC, 2006 A. Shen Algorithms and Programming Springer Undergraduate Texts in Mathematics and Technology, 2010 P. Tymann Schaum’s Outline of Principles of Computer Science McGraw-Hill, 1th edition, 2008