# 3.2: Introducción a los números enteros (parte 2)

Tratamos las barras de valor absoluto como tratamos los paréntesis en el orden de las operaciones. Primero simplificamos la expresión interior.

Ejemplo ( PageIndex {7} ): evaluar

Evaluar:

1. (| x | ) cuando (x = −35 )
2. (| −y | ) cuando (y = −20 )
3. (- | u | ) cuando (u = 12 )
4. (- | p | ) cuando (p = −14 )

Solución

 Para encontrar | x | cuando x = −35: (| x | ) Sustituye ( textcolor {red} {- 35} ) por x. (| textcolor {rojo} {- 35} | ) Toma el valor absoluto. (35)
 Encontrar | - y | cuando y = −20: (| -y | ) Sustituya ( textcolor {red} {- 20} ) por y. (| - ( textcolor {rojo} {- 20}) | ) Simplificar. (|20|) Toma el valor absoluto. (20)
 Para encontrar - | u | cuando u = 12: (- | u | ) Sustituya ( textcolor {red} {12} ) por u. (- | textcolor {rojo} {12} | ) Toma el valor absoluto. (-12)
 Encontrar - | p | cuando p = −14: (- | p | ) Sustituya ( textcolor {red} {- 14} ) por p. (- | textcolor {rojo} {- 14} | ) Toma el valor absoluto. (-14)

Observe que el resultado es negativo solo cuando hay un signo negativo fuera del símbolo de valor absoluto

Ejercicio ( PageIndex {13} )

Evaluar:

1. (| x | ) cuando (x = −17 )
2. (| −y | ) cuando (y = −39 )
3. (- | m | ) cuando (m = 22 )
4. (- | p | ) cuando (p = −11 )
Responde una

(17)

Respuesta b

(39)

Respuesta c

(-22)

Respuesta d

(11)

Ejercicio ( PageIndex {14} )

Evaluar:

1. (| y | ) cuando (y = −23 )
2. (| −y | ) cuando (y = −21 )
3. (- | n | ) cuando (n = 37 )
4. (- | q | ) cuando (q = −49 )
Responde una

(23)

Respuesta b

(21)

Respuesta c

(-37)

Respuesta d

(-49)

Ejemplo ( PageIndex {8} ): comparar expresiones

Complete (<), (> ) o (= ) para cada uno de los siguientes:

1. (|−5|)___(− |−5|)
2. (8)___(− |−8|)
3. (−9)___(− |−9|)
4. (− |−7|)___(−7)

Solución

Para comparar dos expresiones, primero simplifique cada una. Entonces compare.

 |−5|___− |−5| Simplificar. 5___−5 Pedido. 5 > −5
 8___− |−8| Simplificar. 8___−8 Pedido. 8 > −8
 −9___− |−9| Simplificar. −9___−9 Pedido. −9 = −9
 −|−7|___−7 Simplificar. −7___−7 Pedido. −7 = −7

Ejercicio ( PageIndex {15} )

Complete (<), (> ) o (= ) para cada uno de los siguientes:

1. (|−9|) ___(− |−9|)
2. (2)___(− |−2|)
3. (−8)___(|−8|)
4. (− |−5|)___(−5)
Responde una

(>)

Respuesta b

(>)

Respuesta c

(<)

Respuesta d

(=)

Ejercicio ( PageIndex {16} )

Complete (<), (> ) o (= ) para cada uno de los siguientes:

1. (7)___(− |−7|)
2. (− |−11|)___(−11)
3. (|−4|)___(− |−4|)
4. (−1)___(|−1|)
Responde una

(>)

Respuesta b

(=)

Respuesta c

(>)

Respuesta d

(<)

Las barras de valor absoluto actúan como símbolos de agrupación. Primero simplifique el interior de las barras de valor absoluto tanto como sea posible. Luego tome el valor absoluto del número resultante y continúe con cualquier operación fuera de los símbolos de valor absoluto.

Ejemplo ( PageIndex {9} ): simplificar

Simplificar:

1. (|9−3|)
2. (4|−2|)

Solución

Para cada expresión, siga el orden de operaciones. Comience dentro de los símbolos de valor absoluto como si estuviera entre paréntesis.

 Simplifica dentro del signo de valor absoluto. |9−3| = |6| Toma el valor absoluto. 6
 Toma el valor absoluto. 4|−2| = 4 • 2 Multiplicar. 8

Ejercicio ( PageIndex {17} )

Simplificar:

1. (|12 − 9|)
2. (3|−6|)
Responde una

(3)

Respuesta b

(18)

Ejercicio ( PageIndex {18} )

Simplificar:

1. (|27 − 16|)
2. (9|−7|)
Responde una

(11)

Respuesta b

(63)

Ejemplo ( PageIndex {10} ): simplificar

Simplifica: (| 8 + 7 | - | 5 + 6 | ).

Solución

Para cada expresión, siga el orden de operaciones. Empiece dentro de los símbolos de valor absoluto como si estuviera entre paréntesis.

 Simplifica dentro de cada signo de valor absoluto. |8+7|−|5+6| = |15|−|11| Sustraer. 4

Ejercicio ( PageIndex {19} )

Simplificar: (| 1 + 8 | - | 2 + 5 | )

Respuesta

(2)

Ejercicio ( PageIndex {20} )

Simplificar: (| 9−5 | - | 7-6 | )

Respuesta

(3)

Ejemplo ( PageIndex {11} ): simplificar

Simplifica: (24 - | 19 - 3 (6 - 2) | ).

Solución

Usamos el orden de operaciones. Recuerde simplificar primero los símbolos de agrupación, por lo que los paréntesis dentro de los símbolos de valor absoluto serían los primeros.

 Simplifique primero entre paréntesis. 24 − |19 − 3(6 − 2)| = 24 − |19 − 3(4)| Multiplica 3 (4). 24 − |19 − 12| Resta dentro del signo de valor absoluto. 24 − |7| Toma el valor absoluto. 24 - 7 Sustraer. 17

Ejercicio ( PageIndex {21} )

Simplificar: (19 - | 11 - 4 (3 - 1) | )

Respuesta

(16)

Ejercicio ( PageIndex {22} )

Simplificar: (9 - | 8 - 4 (7 - 5) | )

Respuesta

(9)

## Traducir frases de palabras en expresiones con números enteros

Ahora podemos traducir frases de palabras en expresiones con números enteros. Busque palabras que indiquen un signo negativo. Por ejemplo, la palabra negativo en "veinte menos" indica (- 20 ). También la palabra opuesto en "lo contrario de (20 )".

Ejemplo ( PageIndex {12} ): traducir

1. lo contrario de positivo catorce
2. lo contrario de (- 11 )
3. dieciséis negativos
4. dos menos siete menos

Solución

1. lo contrario de catorce (- 14 )
2. el opuesto de (- 11 - (−11) )
3. dieciséis negativos (- 16 )
4. dos menos siete menos (2 - (−7) )

Ejercicio ( PageIndex {23} )

1. lo contrario de nueve positivo
2. lo contrario de (- 15 )
3. veinte negativos
4. once menos cuatro menos
Responde un

(-9)

Respuesta b

(15)

Respuesta c

(-20)

Respuesta d

(11-(-4))

Ejercicio ( PageIndex {24} )

1. lo contrario de diecinueve negativos
2. lo contrario de veintidós
3. nueve negativo
4. menos ocho menos cinco menos
Responde una

(19)

Respuesta b

(-22)

Respuesta c

(-9)

Respuesta d

(-8-(-5))

Como vimos al comienzo de esta sección, se necesitan números negativos para describir muchas situaciones del mundo real. Veremos algunas aplicaciones más de números negativos en el siguiente ejemplo.

Ejemplo ( PageIndex {13} ): traducir

Traducir a una expresión con números enteros:

1. La temperatura es (12 ) grados Fahrenheit bajo cero.
2. El equipo de fútbol obtuvo una ganancia de (3 ) yardas.
3. La elevación del Mar Muerto es (1,302 ) pies por debajo del nivel del mar.
4. Una cuenta corriente está sobregirada por ($40 ). Solución Busque frases clave en cada oración. Luego busque palabras que indiquen signos negativos. No olvide incluir las unidades de medida descritas en la oración.  La temperatura es de 12 grados Fahrenheit bajo cero. Bajo cero nos dice que 12 es un número negativo. −12 ºF  El equipo de fútbol tuvo una ganancia de 3 yardas. A ganar nos dice que 3 es un número positivo. 3 yardas  La elevación del Mar Muerto es de 1,302 pies por debajo del nivel del mar. Por debajo del nivel del mar nos dice que 1.302 es un número negativo. −1,302 pies  Una cuenta corriente tiene un sobregiro de$ 40. Girado en descubierto nos dice que 40 es un número negativo. −$40 Ejercicio ( PageIndex {25} ) Traducir a una expresión con números enteros: El equipo de fútbol obtuvo una ganancia de (5 ) yardas. Respuesta (5 ) yardas Ejercicio ( PageIndex {26} ) Traducir a una expresión con números enteros: El buzo estaba (30 ) pies por debajo de la superficie del agua. Respuesta (-30 pies ## Conceptos clave • Notación opuesta • La notación (- a ) se lee al revés de (a ) • Notación de valor absoluto • El valor absoluto de un número (n ) se escribe como (| n | ). ## Glosario valor absoluto El valor absoluto de un número es su distancia desde (0 ) en la recta numérica. enteros Los enteros son números de conteo, sus opuestos y cero ... (- 3, –2, –1, 0, 1, 2, 3 ... ) numero negativo Un número negativo es menor que cero. opuestos El opuesto de un número es el número que está a la misma distancia del cero en la recta numérica, pero en el lado opuesto del cero. ## La práctica hace la perfección ### Localizar números positivos y negativos en la recta numérica En los siguientes ejercicios, ubique y etiquete los puntos dados en una recta numérica. 1. (a) 2 (b) −2 (c) −5 2. (a) 5 (b) −5 (c) −2 3. (a) −8 (b) 8 (c) −6 4. (a) −7 (b) 7 (c) −1 ### Ordene números positivos y negativos en la recta numérica En los siguientes ejercicios, ordene cada uno de los siguientes pares de números, usando . 1. (a) 9__4 (b) −3__6 (c) −8 __− 2 (d) 1 __− 10 2. (a) 6__2; (b) −7__4; (c) −9 __− 1; (d) 9 __− 3 3. (a) −5__1; (b) −4 __− 9; (c) 6__10; (d) 3 __− 8 4. (a) −7__3; (b) −10 __− 5; (c) 2 __− 6; (d) 8__9 ### Encuentra opuestos En los siguientes ejercicios, encuentre el opuesto de cada número. 1. (a) 2 (b) −6 2. (a) 9 (b) −4 3. (a) −8 (b) 1 4. (a) −2 (b) 6 En los siguientes ejercicios, simplifique. 1. −(−4) 2. −(−8) 3. −(−15) 4. −(−11) En los siguientes ejercicios, evalúe. 1. −m cuando (a) m = 3 (b) m = −3 2. −p cuando (a) p = 6 (b) p = −6 3. −c cuando (a) c = 12 (b) c = −12 4. −d cuando (a) d = 21 (b) d = −21 ### Simplificar expresiones con valor absoluto En los siguientes ejercicios, simplifique cada expresión de valor absoluto. 1. (a) | 7 | (b) | −25 | (c) | 0 | 2. (a) | 5 | (b) | 20 | (c) | −19 | 3. (a) | −32 | (b) | −18 | (c) | 16 | 4. (a) | −41 | (b) | −40 | (c) | 22 | En los siguientes ejercicios, evalúe cada expresión de valor absoluto. 1. (a) | x | cuando x = −28 (b) | - u | cuando u = −15 2. (a) | y | cuando y = −37 (b) | - z | cuando z = −24 3. (a) - | p | cuando p = 19 (b) - | q | cuando q = −33 4. (a) - | a | cuando a = 60 (b) - | b | cuando b = −12 En los siguientes ejercicios, complete o = para comparar cada expresión. 1. (a) −6__ | −6 | (b) - | −3 | __− 3 2. (a) −8__ | −8 | (b) - | −2 | __− 2 3. (a) | −3 | __− | −3 | (b) 4 __− | −4 | 4. (a) | −5 | __− | −5 | (b) 9 __− | −9 | En los siguientes ejercicios, simplifique cada expresión. 1. |8 − 4| 2. |9 − 6| 3. 8|−7| 4. 5|−5| 5. |15 − 7| − |14 − 6| 6. |17 − 8| − |13 − 4| 7. 18 − |2(8 − 3)| 8. 15 − |3(8 − 5)| 9. 8(14 − 2|−2|) 10. 6(13 − 4|−2|) ### Traducir frases de palabras en expresiones con números enteros Traduce cada frase en una expresión con números enteros. No simplifique. 1. (a) el opuesto de 8 (b) el opuesto de −6 (c) negativo tres (d) 4 menos negativo 3 2. (a) el opuesto de 11 (b) el opuesto de −4 (c) negativo nueve (d) 8 menos negativo 2 3. (a) el opuesto de 20 (b) el opuesto de −5 (c) menos doce (d) 18 menos negativo 7 4. (a) el opuesto de 15 (b) el opuesto de −9 (c) menos sesenta (d) 12 menos 5 5. una temperatura de 6 grados bajo cero 6. una temperatura de 14 grados bajo cero 7. una elevación de 40 pies por debajo del nivel del mar 8. una elevación de 65 pies por debajo del nivel del mar 9. una pérdida de juego de fútbol de 12 yardas 10. una ganancia de juego de fútbol de 4 yardas 11. una ganancia en acciones de$ 3
12. una pérdida de acciones de $5 13. un puntaje de golf uno por encima del par 14. una puntuación de golf de 3 por debajo del par ## Matemáticas cotidianas 1. Elevación La elevación más alta en los Estados Unidos es Mount McKinley, Alaska, a 20,320 pies sobre el nivel del mar. La elevación más baja es el Valle de la Muerte, California, a 282 pies por debajo del nivel del mar. Use números enteros para escribir la elevación de: (a) Monte McKinley (b) Valle de la Muerte 2. Temperaturas extremas La temperatura más alta registrada en la Tierra es 58 ° Celsius, registrada en el desierto del Sahara en 1922. La temperatura más baja registrada es 90 ° por debajo de 0 ° Celsius, registrada en la Antártida en 1983. Use números enteros para escribir: (a) la temperatura más alta registrada ( b) temperatura más baja registrada 3. Presupuestos estatales En junio de 2011, el estado de Pensilvania estimó que tendría un superávit presupuestario de$ 540 millones. Ese mismo mes, Texas estimó que tendría un déficit presupuestario de $27 mil millones. Utilice números enteros para escribir el presupuesto: (a) superávit (b) déficit 4. Matriculaciones universitarias En todo Estados Unidos, la matrícula de los colegios comunitarios aumentó en 1,400,000 estudiantes de 2007 a 2010. En California, la matrícula de los colegios comunitarios disminuyó en 110,171 estudiantes de 2009 a 2010. Use números enteros para escribir el cambio en la matrícula: (a) crecimiento (b) disminución ## Ejercicios de escritura 1. Da un ejemplo de un número negativo de tu experiencia de vida. 2. ¿Cuáles son los tres usos del signo “-” en álgebra? Explique en qué se diferencian. ## Autochequeo (a) Después de completar los ejercicios, use esta lista de verificación para evaluar su dominio de los objetivos de esta sección. (b) Si la mayoría de sus cheques fueran: ... con confianza. ¡Felicidades! Ha logrado los objetivos de esta sección. Reflexione sobre las habilidades de estudio que utilizó para poder seguir utilizándolas. ¿Qué hizo para tener confianza en su capacidad para hacer estas cosas? Se específico. … Con un poco de ayuda. Esto debe abordarse rápidamente porque los temas que no domina se convierten en baches en su camino hacia el éxito. En matemáticas, cada tema se basa en trabajos anteriores. Es importante asegurarse de tener una base sólida antes de seguir adelante. ¿A quién puedes pedir ayuda? Tus compañeros de clase y el instructor son buenos recursos. ¿Hay algún lugar en el campus donde haya tutores de matemáticas disponibles? ¿Se pueden mejorar sus habilidades de estudio? ... no, ¡no lo entiendo! Esta es una señal de advertencia y no debe ignorarla. Debe obtener ayuda de inmediato o se sentirá abrumado rápidamente. Consulte a su instructor lo antes posible para discutir su situación. Juntos pueden elaborar un plan para brindarle la ayuda que necesita. ## 3.2: Introducción a los números enteros (parte 2) TypeScript 3.2 introduce una nueva opción de compilador --strictBindCallApply (en la familia de opciones --strict) con la que los métodos de vinculación, llamada y aplicación en objetos de función se escriben y verifican estrictamente. Esto se logra mediante la introducción de dos nuevos tipos, CallableFunction y NewableFunction, en lib.d.ts. Estos tipos contienen declaraciones de métodos genéricos especializados para vincular, llamar y aplicar para funciones regulares y funciones de constructor, respectivamente. Las declaraciones usan parámetros de descanso genéricos (ver # 24897) para capturar y reflejar listas de parámetros de una manera fuertemente tipada. En el modo --strictBindCallApply, estas declaraciones se utilizan en lugar de las declaraciones (muy permisivas) proporcionadas por el tipo Function. Dado que las verificaciones más estrictas pueden descubrir errores no informados previamente, este es un cambio rotundo en el modo estricto. Además, otra advertencia de esta nueva funcionalidad es que debido a ciertas limitaciones, vincular, llamar y aplicar aún no puede modelar completamente funciones genéricas o funciones que tienen sobrecargas. Cuando se utilizan estos métodos en una función genérica, los parámetros de tipo se sustituirán por el tipo de objeto vacío (<>), y cuando se utilicen en una función con sobrecargas, solo se modelará la última sobrecarga. Expresiones de propagación genéricas en literales de objeto En TypeScript 3.2, los literales de objeto ahora permiten expresiones de extensión genéricas que ahora producen tipos de intersección, similares a la función Object.assign y los literales JSX. Por ejemplo: Las asignaciones de propiedad y las expresiones de dispersión no genéricas se fusionan en la mayor medida posible a ambos lados de una expresión de extensión genérica. Por ejemplo: Las expresiones de extensión no genéricas continúan procesándose como antes: las firmas de llamadas y construcciones se eliminan, solo se conservan las propiedades que no son de método y, para las propiedades con el mismo nombre, se usa el tipo de propiedad más a la derecha. Esto contrasta con los tipos de intersección que concatenan firmas de llamada y construcción, preservan todas las propiedades e intersecan los tipos de propiedades con el mismo nombre. Por lo tanto, los diferenciales de los mismos tipos pueden producir resultados diferentes cuando se crean mediante la creación de instancias de tipos genéricos: Parámetros y variables de resto de objetos genéricos TypeScript 3.2 también permite desestructurar un enlace de descanso de una variable genérica. Esto se logra mediante el uso de los tipos auxiliares de selección y exclusión predefinidos de lib.d.ts, y el uso del tipo genérico en cuestión, así como los nombres de las otras vinculaciones en el patrón de desestructuración. Los BigInts son parte de una próxima propuesta en ECMAScript que nos permite modelar teóricamente números enteros arbitrariamente grandes. TypeScript 3.2 ofrece verificación de tipo para BigInts, así como soporte para emitir literales BigInt al apuntar a esnext. El soporte de BigInt en TypeScript introduce un nuevo tipo primitivo llamado bigint (todo en minúsculas). Puede obtener un bigint llamando a la función BigInt () o escribiendo un literal BigInt agregando una n al final de cualquier literal numérico entero: Si bien puede imaginar una interacción cercana entre número y bigint, los dos son dominios separados. Como se especifica en ECMAScript, mezclar números sy bigint s en operaciones aritméticas es un error. Tendrá que convertir explícitamente los valores a BigInt s. También es importante notar que bigint s produce una nueva cadena cuando se usa el operador typeof: la cadena "bigint". Por lo tanto, TypeScript reduce correctamente el uso de typeof como cabría esperar. Queremos agradecer enormemente a Caleb Sander por todo el trabajo realizado en esta función. Estamos agradecidos por la contribución y estamos seguros de que nuestros usuarios también lo están. Como mencionamos, el soporte de BigInt solo está disponible para el objetivo esnext. Puede que no sea obvio, pero debido a que los BigInts tienen un comportamiento diferente para los operadores matemáticos como +, -, *, etc., proporcionar funcionalidad para objetivos más antiguos donde la función no existe (como es2017 y más abajo) implicaría reescribir cada una de estas operaciones. . TypeScript necesitaría distribuirse al comportamiento correcto según el tipo, por lo que cada adición, concatenación de cadenas, multiplicación, etc. implicaría una llamada a función. Por esa razón, no tenemos planes inmediatos para brindar soporte de nivel inferior. En el lado positivo, el Nodo 11 y las versiones más recientes de Chrome ya son compatibles con esta función, por lo que podrá usar BigInts allí cuando apunte a esnext. Ciertos destinos pueden incluir un objeto de tiempo de ejecución polyfill o similar a BigInt. Para esos fines, es posible que desee agregar esnext.bigint a la configuración de lib en las opciones del compilador. Tipos no unitarios como discriminantes sindicales TypeScript 3.2 facilita la reducción al relajar las reglas de lo que considera una propiedad discriminante. Las propiedades comunes de las uniones ahora se consideran discriminatorias siempre que contengan algunos tipo singleton (por ejemplo, una cadena literal, nula o indefinida) y no contienen genéricos. Como resultado, TypeScript 3.2 considera que la propiedad de error en el siguiente ejemplo es un discriminante, mientras que antes no lo haría, ya que Error no es un tipo singleton. Gracias a esto, el estrechamiento funciona correctamente en el cuerpo de la función desenvolver. herencia tsconfig.json a través de paquetes Node.js TypeScript 3.2 ahora resuelve tsconfig.json s de node_modules. Cuando use una ruta simple para el campo "extiende" en tsconfig.json, TypeScript se sumergirá en los paquetes node_modules por nosotros. Aquí, TypeScript subirá las carpetas node_modules en busca de un paquete @ my-team / tsconfig-base. Para cada uno de esos paquetes, TypeScript primero verificará si package.json contiene un campo "tsconfig", y si lo tiene, TypeScript intentará cargar un archivo de configuración desde ese campo. Si ninguno de los dos existe, TypeScript intentará leer desde un tsconfig.json en la raíz. Esto es similar al proceso de búsqueda de archivos .js en paquetes que usa Node y al proceso de búsqueda .d.ts que TypeScript ya usa. Esta característica puede ser extremadamente útil para organizaciones más grandes o proyectos con muchas dependencias distribuidas. tsc, el compilador de TypeScript, admite una nueva marca llamada --showConfig. Al ejecutar tsc --showConfig, TypeScript calculará el tsconfig.json efectivo (después de calcular las opciones heredadas del campo extended) y lo imprimirá. Esto puede resultar útil para diagnosticar problemas de configuración en general. Declaraciones de Object.defineProperty en JavaScript Al escribir en archivos JavaScript (usando allowJs), TypeScript ahora reconoce declaraciones que usan Object.defineProperty. Esto significa que obtendrá mejores terminaciones y una verificación de tipos más sólida cuando habilite la verificación de tipos en archivos JavaScript (activando la opción checkJs o agregando un comentario // @ ts-check en la parte superior de su archivo). Los documentos de TypeScript son un proyecto de código abierto. Ayúdanos a mejorar estas páginas enviando una solicitud de extracción ❤ ## 3.1. Usando Python como calculadora¶ Probemos algunos comandos simples de Python. Inicie el intérprete y espere el mensaje principal, & gt & gt & gt. (No debería tardar mucho). ### 3.1.1. Números¶ El intérprete actúa como una simple calculadora: puede escribir una expresión en él y escribirá el valor. La sintaxis de expresión es sencilla: los operadores +, -, * y / funcionan como en la mayoría de los otros lenguajes (por ejemplo, Pascal o C), los paréntesis (()) se pueden usar para agrupar. Por ejemplo: Los números enteros (por ejemplo, 2, 4, 20) tienen el tipo int, los que tienen una parte fraccionaria (por ejemplo, 5.0, 1.6) tienen el tipo float. Veremos más sobre los tipos numéricos más adelante en el tutorial. La división (/) siempre devuelve un flotante. Para hacer una división de piso y obtener un resultado entero (descartando cualquier resultado fraccionario) puede usar el operador // para calcular el resto, puede usar%: Con Python, es posible usar el operador ** para calcular las potencias 1: El signo igual (=) se utiliza para asignar un valor a una variable. Posteriormente, no se muestra ningún resultado antes del siguiente mensaje interactivo: Si una variable no está “definida” (se le asigna un valor), intentar usarla le dará un error: Hay soporte completo para operadores de punto flotante con operandos de tipo mixto que convierten el operando entero en punto flotante: En modo interactivo, la última expresión impresa se asigna a la variable _. Esto significa que cuando usa Python como calculadora de escritorio, es algo más fácil continuar con los cálculos, por ejemplo: El usuario debe tratar esta variable como de solo lectura. No le asigne un valor explícitamente; crearía una variable local independiente con el mismo nombre enmascarando la variable incorporada con su comportamiento mágico. Además de int y float, Python admite otros tipos de números, como Decimal y Fraction. Python también tiene soporte incorporado para números complejos y usa el sufijo j o J para indicar la parte imaginaria (por ejemplo, 3 + 5j). ### 3.1.2. Instrumentos de cuerda¶ Además de los números, Python también puede manipular cadenas, que se pueden expresar de varias formas. Pueden encerrarse entre comillas simples ('.') O comillas dobles (& quot. & Quot) con el mismo resultado 2. se puede usar para escapar de las comillas: En el intérprete interactivo, la cadena de salida está entre comillas y los caracteres especiales se escapan con barras invertidas. Si bien esto a veces puede parecer diferente de la entrada (las comillas adjuntas pueden cambiar), las dos cadenas son equivalentes. La cadena se incluye entre comillas dobles si la cadena contiene comillas simples y sin comillas dobles; de lo contrario, se incluye entre comillas simples. La función print () produce una salida más legible, omitiendo las comillas adjuntas e imprimiendo caracteres especiales y de escape: Si no desea que los caracteres precedidos por se interpreten como caracteres especiales, puede utilizar cuerdas crudas agregando una r antes de la primera cita: Los literales de cadena pueden abarcar varias líneas. Una forma es usar comillas triples: & quot & quot & quot. & quot & quot & quot o '' '. '' '. El final de las líneas se incluye automáticamente en la cadena, pero es posible evitarlo agregando una al final de la línea. El siguiente ejemplo: produce la siguiente salida (tenga en cuenta que la nueva línea inicial no está incluida): Las cadenas se pueden concatenar (pegar) con el operador + y repetir con *: Dos o más literales de cadena (es decir, los que están entre comillas) uno al lado del otro se concatenan automáticamente. Esta función es particularmente útil cuando desea romper cadenas largas: Sin embargo, esto solo funciona con dos literales, no con variables o expresiones: Si desea concatenar variables o una variable y un literal, use +: Las cadenas pueden ser indexado (con subíndice), con el primer carácter con índice 0. No hay un tipo de carácter separado, un carácter es simplemente una cadena de tamaño uno: Los índices también pueden ser números negativos, para empezar a contar desde la derecha: Tenga en cuenta que, dado que -0 es lo mismo que 0, los índices negativos comienzan desde -1. Además de indexar, rebanar también es compatible. Mientras que la indexación se utiliza para obtener caracteres individuales, rebanar le permite obtener la subcadena: Tenga en cuenta que el inicio siempre se incluye y el final siempre se excluye. Esto asegura que s [: i] + s [i:] sea siempre igual as: Los índices de corte tienen valores predeterminados útiles, un primer índice omitido tiene un valor predeterminado de cero, un segundo índice omitido tiene un valor predeterminado del tamaño de la cadena que se está dividiendo. Una forma de recordar cómo funcionan las porciones es pensar en los índices como apuntando Entre caracteres, con el borde izquierdo del primer carácter numerado 0. Luego, el borde derecho del último carácter de una cadena de norte caracteres tiene índice norte, por ejemplo: La primera fila de números da la posición de los índices 0… 6 en la cadena, la segunda fila da los índices negativos correspondientes. La rebanada de I a j consta de todos los caracteres entre los bordes etiquetados I y j, respectivamente. Para índices no negativos, la longitud de un segmento es la diferencia de los índices, si ambos están dentro de los límites. Por ejemplo, la longitud de la palabra [1: 3] es 2. Si intenta utilizar un índice demasiado grande, se producirá un error: Sin embargo, los índices de corte fuera de rango se manejan con elegancia cuando se usan para cortar: Las cadenas de Python no se pueden cambiar, son inmutables. Por lo tanto, asignar a una posición indexada en la cadena da como resultado un error: Si necesita una cadena diferente, debe crear una nueva: La función incorporada len () devuelve la longitud de una cadena: Las cadenas son ejemplos de tipos de secuenciay respaldar las operaciones comunes admitidas por dichos tipos. Las cadenas admiten una gran cantidad de métodos para realizar transformaciones y búsquedas básicas. Literales de cadena que tienen expresiones incrustadas. Información sobre el formato de cadena con str.format (). Las antiguas operaciones de formateo invocadas cuando las cadenas son el operando izquierdo del operador% se describen con más detalle aquí. ### 3.1.3. Liza¶ Python conoce una serie de compuesto tipos de datos, utilizados para agrupar otros valores. El más versátil es el lista, que se puede escribir como una lista de valores (elementos) separados por comas entre corchetes. Las listas pueden contener elementos de diferentes tipos, pero por lo general todos los elementos tienen el mismo tipo. Al igual que las cadenas (y todos los demás tipos de secuencia incorporados), las listas se pueden indexar y dividir: Todas las operaciones de corte devuelven una nueva lista que contiene los elementos solicitados. Esto significa que el siguiente segmento devuelve una copia superficial de la lista: Las listas también admiten operaciones como la concatenación: A diferencia de las cadenas, que son inmutables, las listas son de tipo mutable, es decir, es posible cambiar su contenido: También puede agregar nuevos elementos al final de la lista, utilizando la función append () método (veremos más sobre los métodos más adelante): La asignación a sectores también es posible, y esto incluso puede cambiar el tamaño de la lista o borrarla por completo: La función incorporada len () también se aplica a las listas: Es posible anidar listas (crear listas que contengan otras listas), por ejemplo: ## 2.2 Lo más básico Antes de comenzar con el conjunto de datos motivador, debemos cubrir los conceptos básicos de R. ### 2.2.1 Objetos Suponga que un estudiante de secundaria nos pide ayuda para resolver varias ecuaciones cuadráticas de la forma (ax ^ 2 + bx + c = 0 ). La fórmula cuadrática nos da las soluciones: [ frac <-b - sqrt> <2a> , , mbox frac <-b + sqrt> <2a> ] que, por supuesto, cambian dependiendo de los valores de (a ), (b ) y (c ). Una ventaja de los lenguajes de programación es que podemos definir variables y escribir expresiones con estas variables, de forma similar a como lo hacemos en matemáticas, pero obtenemos una solución numérica. Escribiremos el código general para la ecuación cuadrática a continuación, pero si se nos pide que resolvamos (x ^ 2 + x -1 = 0 ), entonces definimos: que almacena los valores para su uso posterior. Usamos & lt- para asignar valores a las variables. También podemos asignar valores usando = en lugar de & lt-, pero recomendamos no usar = para evitar confusiones. Copie y pegue el código anterior en su consola para definir las tres variables. Tenga en cuenta que R no imprime nada cuando hacemos esta asignación. Esto significa que los objetos se definieron correctamente. Si hubiera cometido un error, habría recibido un mensaje de error. Para ver el valor almacenado en una variable, simplemente le pedimos a R que evalúe a y muestra el valor almacenado: Una forma más explícita de pedirle a R que nos muestre el valor almacenado en a es usando print como este: Usamos el término objeto para describir cosas que se almacenan en R. Las variables son ejemplos, pero los objetos también pueden ser entidades más complicadas, como funciones, que se describen más adelante. ### 2.2.2 El espacio de trabajo A medida que definimos objetos en la consola, en realidad estamos cambiando el espacio de trabajo. Puede ver todas las variables guardadas en su espacio de trabajo escribiendo: En RStudio, el Ambiente pestaña muestra los valores: Deberíamos ver a, by c. Si intenta recuperar el valor de una variable que no está en su espacio de trabajo, recibirá un error. Por ejemplo, si escribe x, recibirá el siguiente mensaje: Error: objeto 'x' no encontrado. Ahora que estos valores se guardan en variables, para obtener una solución a nuestra ecuación, usamos la fórmula cuadrática: ### 2.2.3 Funciones Una vez que define las variables, el proceso de análisis de datos generalmente se puede describir como una serie de funciones aplicado a los datos. R incluye varias funciones predefinidas y la mayoría de las canalizaciones de análisis que construimos hacen un uso extensivo de ellas. Ya usamos las funciones install.packages, biblioteca y ls. También usamos la función sqrt para resolver la ecuación cuadrática anterior. Hay muchas más funciones predefinidas e incluso se pueden agregar más a través de paquetes. Estas funciones no aparecen en el espacio de trabajo porque no las definió, pero están disponibles para su uso inmediato. En general, necesitamos usar paréntesis para evaluar una función. Si escribe ls, la función no se evalúa y en su lugar R le muestra el código que define la función. Si escribe ls (), la función se evalúa y, como se vio arriba, vemos objetos en el espacio de trabajo. A diferencia de ls, la mayoría de las funciones requieren una o más argumentos. A continuación se muestra un ejemplo de cómo asignamos un objeto al argumento de la función log. Recuerde que anteriormente definimos a como 1: Puede averiguar qué espera la función y qué hace revisando los manuales muy útiles incluidos en R. Puede obtener ayuda usando la función de ayuda como esta: Para la mayoría de las funciones, también podemos usar esta abreviatura: La página de ayuda le mostrará qué argumentos espera la función. Por ejemplo, log necesita xy base para ejecutarse. Sin embargo, algunos argumentos son obligatorios y otros son opcionales. Puede determinar qué argumentos son opcionales señalando en el documento de ayuda que un valor predeterminado se asigna con =. Definirlos es opcional. Por ejemplo, la base de la función log tiene como valor predeterminado base = exp (1), lo que hace que log sea el logaritmo natural de forma predeterminada. Si desea echar un vistazo rápido a los argumentos sin abrir el sistema de ayuda, puede escribir: Puede cambiar los valores predeterminados simplemente asignando otro objeto: Tenga en cuenta que no hemos estado especificando el argumento x como tal: El código anterior funciona, pero podemos ahorrarnos algo de tipeo: si no se usa un nombre de argumento, R asume que está ingresando argumentos en el orden que se muestra en el archivo de ayuda o por argumentos. Entonces, al no usar los nombres, se supone que los argumentos son x seguidos de base: Si usamos los nombres de los argumentos, podemos incluirlos en el orden que queramos: Para especificar argumentos, debemos usar =, y no podemos usar & lt-. Hay algunas excepciones a la regla de que las funciones necesitan que se evalúen los paréntesis. Entre estos, los más utilizados son los operadores aritméticos y relacionales. Por ejemplo: ## Razón de dos enteros Sean "a" y "b" dos números enteros. El valor de "a" y "b" en forma de fracción se llama la razón de dos números enteros. Está representado por a: b. Por ejemplo, "2/3" se indica con 2: 3. Este concepto ayuda en muchas vidas diarias. Ejemplos: 1) Comparta el ingreso total en una proporción de 5: 3. 2) Divida la longitud de un paño en 3: 4. 3) Corte una tubería en una proporción de 1: 2 y así sucesivamente. Ahora veamos algunos problemas sobre este tema de dos enteros. Problemas de ejemplo sobre la razón de dos enteros Ej 1. Halla la razón de 15 y 20. Soln: Para encontrar la razón, divide el primer número con el segundo número y simplifica hasta que se conviertan en primos entre sí, es decir, no hay nada en común entre ellos. Por lo tanto, la proporción final es 3: 4. Ej 2: Encuentre la razón de los siguientes números enteros: Soln: (i) 5/30 = (1xx5) / (6xx5) = 1 / 6 Por lo tanto, la relación es 1: 6. Por lo tanto, la relación es 3: 4. Por lo tanto, la relación es 2: 5. Por lo tanto, la relación es 1: 4. (vi) 10/70 = (1xx10) / (7xx10) = 1 / 7 Por lo tanto, la proporción es 1: 7. Más problemas de ejemplo sobre la razón de dos enteros Ej 3: Divida el número 600 en una proporción de 3: 7. Soln: Aquí el valor de la relación total es 3 + 7 = 10. Por lo tanto, una parte será [3/10] xx 600 = 3xx60 = 180. La otra parte es 7/10 & # 8220 xx 600 = 7xx60 = 420. Por lo tanto, 600 se divide en 180 y 420 en una proporción de 3: 7 Ej 4: 500 se divide en dos partes. La proporción de los números es 4: 6. Encuentra los números. Soln: Dado: 500 es el valor total. La parte de la relación total es 4 + 6 = 10. Por lo tanto, los valores son 4/10 xx 500 = 4xx50 = 200. De manera similar, 6/10 xx 500 = 6xx50 = 300. Por tanto, los valores son 200 y 300. Problemas de práctica sobre la razón de dos enteros. ## 3 Resolver sistemas de ecuaciones polinomiales Singular aplica métodos simbólico-numéricos para encontrar las soluciones de un sistema de ecuaciones polinómicas. Even though the complexity of these methods is higher than the complexity of purely numerical methods it is desirable in many cases, for example, to avoid troubles near singularities or to solve systems involving parameters providing a simultaneous solution for all parameter values. As a first example, we will solve the following system of linear equations in X,y,z, y u with free parameters a,B,C, y D. So the unique solution to our system is The performance of Buchberger’s algorithm for computing Gröbner bases depends heavily in the chosen term order. In general, lexicographic Gröbner bases are the most expensive to compute. But if the ideal is zero-dimensional, that is, the system has a finite number of solutions, we can use the FGLM algorithm to move from any Gröbner basis to a lexicographic one. The last computation takes a very long time so it is a good moment to point out that one forces Singular to quit with ^C-^C . ## Sample Output Player 1&aposs name: Pat Player 2&aposs name: Sam Pat drew card 8 Sam drew card 9 Sam has high card Pat: 0 Sam: 2 Pat drew card 9 Sam drew card 8 Pat has high card Pat: 2 Sam: 2 Pat drew card 7 Sam drew card 7 War Pat: 2 Sam: 2 Pat drew card 5 Sam drew card 6 Sam has high card Sam wins war of 4 cards Pat: 2 Sam: 6 Pat drew card 13 Sam drew card 14 Sam has high card Pat: 2 Sam: 8 Pat drew card 6 Sam drew card 12 Sam has high card Pat: 2 Sam: 10 Pat drew card 4 Sam drew card 8 Sam has high card Pat: 2 Sam: 12 Pat drew card 12 Sam drew card 2 Pat has high card Pat: 4 Sam: 12 Pat drew card 7 Sam drew card 13 Sam has high card Pat: 4 Sam: 14 Pat drew card 10 Sam drew card 6 Pat has high card Pat: 6 Sam: 14 Pat drew card 9 Sam drew card 7 Pat has high card Pat: 8 Sam: 14 Pat drew card 4 Sam drew card 13 Sam has high card Pat: 8 Sam: 16 Pat drew card 3 Sam drew card 3 War Pat: 8 Sam: 16 Pat drew card 11 Sam drew card 3 Pat has high card Pat wins war of 4 cards Pat: 12 Sam: 16 Pat drew card 4 Sam drew card 10 Sam has high card Pat: 12 Sam: 18 Pat drew card 12 Sam drew card 11 Pat has high card Pat: 14 Sam: 18 Pat drew card 4 Sam drew card 11 Sam has high card Pat: 14 Sam: 20 Pat drew card 8 Sam drew card 5 Pat has high card Pat: 16 Sam: 20 Pat drew card 12 Sam drew card 9 Pat has high card Pat: 18 Sam: 20 Pat drew card 5 Sam drew card 6 Sam has high card Pat: 18 Sam: 22 Pat drew card 10 Sam drew card 13 Sam has high card Pat: 18 Sam: 24 Pat drew card 2 Sam drew card 2 War Pat: 18 Sam: 24 Pat drew card 14 Sam drew card 14 War Pat: 18 Sam: 24 Pat drew card 2 Sam drew card 5 Sam has high card Sam wins war of 6 cards Pat: 18 Sam: 30 Pat drew card 11 Sam drew card 14 Sam has high card Pat: 18 Sam: 32 Pat drew card 10 Sam drew card 3 Pat has high card Pat: 20 Sam: 32 Final Score Pat: 20 Sam: 32 Winner: Sam ### Deck Shuffling While seemingly simple-- shuffling a deck is a somewhat complicated problem. Luckily, Python&aposs random library has a built in shuffle algorithm. Feel free to read the documentation, but we have provided a simple wrapper function that will return to you a shuffled deck of cards. ### Bonus! Instead of closing the program when the deck is empty, create a way for the user to play again. ## 3.2: Introduction to Integers (Part 2) Given two very large floating-point numbers in form of large strings str1 y str2, the task is to add the given two numbers. Input: str1 = �.87368350839565308”, str2 = �.0330473560587475634983” Output: 615104791.9067308644544006434983 Input: str1 = 󈬖.30”, str2 = 󈬕.0983” Output: 75.3983 ## 1.9 Data Structures R also has a number of basic data structures. A data structure is either homogeneous (all elements are of the same data type) or heterogeneous (elements can be of more than one data type). Dimension Homogeneous Heterogeneous 1 Vector List 2 Matrix Data Frame 3+ Array nested Lists ### 1.9.1 Vectors Many operations in R make heavy use of vectors. A vector is a container for objects of identical type (see 1.8 above). Vectors in R are indexed starting at 1 . That is what the [1] in the output is indicating, that the first element of the row being displayed is the first element of the vector. Larger vectors will start additional rows with something like [7] where 7 is the index of the first element of that row. Possibly the most common way to create a vector in R is using the c() function, which is short for “combine”. As the name suggests, it combines a list of elements separated by commas. (Are you busy typing all of those examples into your R console? :-) ) Here R simply outputs this vector. If we would like to store this vector in a variable we can do so with the assignment operator = . In this case the variable x now holds the vector we just created, and we can access the vector by typing x . As an aside, there is a long history of the assignment operator in R , partially due to the keys available on the keyboards of the creators of the S language. (Which preceded R .) For simplicity we will use = , but know that often you will see <- as the assignment operator. Because vectors must contain elements that are all the same type, R will automatically coerce (i.e. convert) to a single type when attempting to create a vector that combines multiple types. Frequently you may wish to create a vector based on a sequence of numbers. The quickest and easiest way to do this is with the : operator, which creates a sequence of integers between two specified integers. Here we see R labeling the rows after the first since this is a large vector. Also, we see that by putting parentheses around the assignment, R both stores the vector in a variable called y and automatically outputs y to the console. Note that scalars do not exists in R . They are simply vectors of length 1 . If we want to create a sequence that isn’t limited to integers and increasing by 1 at a time, we can use the seq() function. We will discuss functions in detail later, but note here that the input labels from , to , and by are optional. Another common operation to create a vector is rep() , which can repeat a single value a number of times. The rep() function can be used to repeat a vector some number of times. We have now seen four different ways to create vectors: So far we have mostly used them in isolation, but they are often used together. The length of a vector can be obtained with the length() function. Let’s try this out! Your turn: #### 1.9.1.1 Task 1 1. Create a vector of five ones, i.e. [1,1,1,1,1] 2. Notice that the colon operator a:b is just short for construct a sequence from a a B . Create a vector the counts down from 10 to 0, i.e. it looks like [10,9,8,7,6,5,4,3,2,1,0] ! 3. the rep function takes additional arguments times (as above), and each , which tells you how often each element should be repeated (as opposed to the entire input vector). Use rep to create a vector that looks like this: [1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3] #### 1.9.1.2 Subsetting To subset a vector, i.e. to choose only some elements of it, we use square brackets, [] . Here we see that x[1] returns the first element, and x[3] returns the third element: We can also exclude certain indexes, in this case the second element. Lastly we see that we can subset based on a vector of indices. All of the above are subsetting a vector using a vector of indexes. (Remember a single number is still a vector.) We could instead use a vector of logical values. R is able to perform many operations on vectors and scalars alike: We see that when a function like log() is called on a vector x , a vector is returned which has applied the function to each element of the vector x . ### 1.9.2 Logical Operators Operator Resumen Example Result x < y x less than y 3 < 42 TRUE x > y x greater than y 3 > 42 FALSE x <= y x less than or equal to y 3 <= 42 TRUE x >= y x greater than or equal to y 3 >= 42 FALSE x == y x equal to y 3 == 42 FALSE x != y x not equal to y 3 != 42 TRUE !x not x !(3 > 42) TRUE x | y x or y (3 > 42) | TRUE TRUE x & y x and y (3 < 4) & ( 42 > 13) TRUE In R , logical operators also work on vectors: This is quite useful for subsetting. Here we saw that using the sum() function on a vector of logical TRUE and FALSE values that is the result of x > 3 results in a numeric result: you just counted for how many elements of x , the condition > 3 is TRUE . During the call to sum() , R is first automatically coercing the logical to numeric where TRUE is 1 and FALSE is 0 . This coercion from logical to numeric happens for most mathematical operations. #### 1.9.2.1 Task 2 1. Create a vector filled with 10 numbers drawn from the uniform distribution (hint: use function runif ) and store them in x . 2. Using logical subsetting as above, get all the elements of x which are larger than 0.5, and store them in y . 3. using the function which , store the indices of all the elements of x which are larger than 0.5 in iy . 4. Check that y and x[iy] are identical. ### 1.9.3 Matrices R can also be used for matrix calculations. Matrices have rows and columns containing a single data type. In a matrix, the order of rows and columns is important. (This is not true of data frames, which we will see later.) Matrices can be created using the matrix function. Notice here that R is case sensitive ( x vs X ). By default the matrix function fills your data into the matrix column by column. But we can also tell R to fill rows instead: We can also create a matrix of a specified dimension where every element is the same, in this case 0 . Like vectors, matrices can be subsetted using square brackets, [] . However, since matrices are two-dimensional, we need to specify both a row and a column when subsetting. Here we accessed the element in the first row and the second column. We could also subset an entire row or column. We can also use vectors to subset more than one row or column at a time. Here we subset to the first and third column of the second row: Matrices can also be created by combining vectors as columns, using cbind , or combining vectors as rows, using rbind . When using rbind and cbind you can specify “argument” names that will be used as column names. R can then be used to perform matrix calculations. Note that X * Y is not matrix multiplication. It is element by element multiplication. (Same for X / Y ). Matrix multiplication uses %*% . Other matrix functions include t() which gives the transpose of a matrix and solve() which returns the inverse of a square matrix if it is invertible. ### 1.9.4 Arrays A vector is a one-dimensional array. A matrix is a two-dimensional array. In R you can create arrays of arbitrary dimensionality N . Here is how: You can see that d3 are simply two (4,2) matrices laid on top of each other, as if there were two pages. Similary, d4 would have two pages, and another 3 registers in a fourth dimension. And so on. You can subset an array like you would a vector or a matrix, taking care to index each dimension: #### 1.9.4.1 Task 3 1. Create a vector containing 1,2,3,4,5 called v. 2. Create a (2,5) matrix m containing the data 1,2,3,4,5,6,7,8,9,10 . The first row should be 1,2,3,4,5 . 3. Perform matrix multiplication of m with v . Use the command %*% . What dimension does the output have? 4. Why does v %*% m not work? ### 1.9.5 Lists A list is a one-dimensional heterogeneous data structure. So it is indexed like a vector with a single integer value (or with a name), but each element can contain an element of any type. Lists are similar to a python or julia Dict object. Many R structures and outputs are lists themselves. Lists are extremely useful and versatile objects, so make sure you understand their useage: Lists can be subset using two syntaxes, the$ operator, and square brackets [] . The \$ operator returns a named elemento of a list. The [] syntax returns a lista, while the [[]] returns an elemento of a list.

• ex_list[1] returns a list contain the first element.
• ex_list[[1]] returns the first element of the list, in this case, a vector.

1. Copy and paste the above code for ex_list into your R session. Remember that list can hold any kind of R object. Like…another list! So, create a new list new_list that has two fields: a first field called “this” with string content "is awesome" , and a second field called “ex_list” that contains ex_list .
2. Accessing members is like in a plain list, just with several layers now. Get the element c from ex_list in new_list !
3. Compose a new string out of the first element in new_list , the element under label this . Use the function paste to print R is awesome to your screen.

## 3.2: Introduction to Integers (Part 2)

Intermediate Algebra
Tutorial 3: Sets of Numbers

1. Graph a point on a real number line.
2. Know what a set and an element are.
3. Indicate if something is an element or is not an element of a set, using the appropriate notation.
4. Tell if one set is a subset of another set.
5. Read or write out a set in either roster form or set builder form.
6. Know what the empty set is and how to notate it.
7. Identify what numbers belong to the set of natural numbers, whole numbers, integers, rational numbers, irrational numbers, and real numbers.
8. Find the absolute value of a number.
9. Find the opposite of a number.

I feel sorry for 0, it does not belong to either group. It is neither a positive or a negative number.

When graphing a point on the number line, you simply color in a point that corresponds to that number on the number line as illustrated below. That is how you graph a solution on the number line.

This is how you would graph it if your solution was the number 2:

Those objects are generally called elements of the set.

The symbol means 'is an element of.'

Set builder notation describes the members of the set without listing them. It is also written between two set brackets. For example,

When writing it in set builder notation you always do the following: start off with a left set bracket, then you put x followed by a vertical bar which is interpreted as 'such that'. Then you write out the description of the elements of the set. Finish it with a right set bracket.

So the above illustration would be read: " X , such that, X is a month that begins with J."

It is important to know set builder notation, especially in mathematics, because it allows you to group together large number of elements that belong to a certain category. The above set has only 3 elements, so it would not be difficult to write it in roster form as shown above. However, if your set has hundreds or thousands of elements, it would be hard to list them out, but easy to refer to them using set builder notation. For example, <X | X is a college student in Texas>.

Be careful. It is real tempting to use them together, but <> IS NOT a way to indicate empty set.

Let's move on to some special sets that pertain specifically to math.

Be very careful. Remember that a whole number can be written as one integer over another integer. The integer in the denominator is 1 in that case. For example, 5 can be written as 5/1.

One big example of irrational numbers is roots of numbers that are not perfect roots - for example or . 17 is not a perfect square - the answer is a non-terminating, non-repeating decimal, which CANNOT be written as one integer over another . Similarly, 5 is not a perfect cube. It's answer is also a non-terminating, non-repeating decimal.

Any number that belongs to either the rational numbers or irrational numbers would be considered a real number. That would include natural numbers, whole numbers and integers.

Putting these two ideas together we get:

1. the number has to belong to the set of natural numbers <1, 2, 3, . >and
2. it has to be between 5 and 11 - which by the way would not include those two numbers.

Let's see what we get when we put those ideas together:

1. the number has to belong to the set of natural numbers <1, 2, 3, . >and
2. it has to be greater than 100.

Let's see if you figured this one out ok:

In this problem, we have a -.5, which is between -1 and 0. Since it is halfway between these two numbers, I would place the dot halfway between.

We also have the fraction 1/5, which is between 0 and 1 and since it is closer to 0 than 1, I would place it accordingly on the graph.

The other numbers are integers that are already marked clearly on the graph.

## 3.2: Introduction to Integers (Part 2)

Introduction to C++ course for the CM Hub at Imperial College

• Part 0: Setting up C++
• Part 1: Hello world! Your first steps with C++
• Part 2: Arrays, files and functions
• Part 3: Pointers, classes and preparing for real science

After completing this workshop, you will be better able to

• define the terms source file, compiler, and executable,
• use a compiler to create and run simple codes,
• apply fundamental components of the C++ language including variables, loops, and conditionals,
• create programs designed to solve simple numerical problems,
• interpret common compiler and run-time errors and use these to help debug a program.
• be able to write a simple C++ program,
• be able to understand and edit more complicated C++ programs you have been given,
• feel comfortable searching online for help.

Timestamps are in the descriptions and correspond to the numbering in this document.

For some programming languages, like Matlab, there is just one program you need to open to write your code and then run it. For others, like C++, you will need one program to write your code, and then one program to compile it.

A compiler is a program which takes the text file we have written and turns it into something we can run. Compilers do not look like normal programs, with windows and graphics. Instead they are run using the command line, o terminal.

We are going to have two windows open at the same time:

1. A text editor (we are going to use Atom)
2. The command line or terminal, where a C++ compiler has already been installed and is working

Integrated Development Environments (IDEs) also exist, which often combine a text editor and compiler in one useful program: XCode, Code::Blocks and (to a lesser degree) Visual Studio Code are examples. In scientific computing, we typically develop on different machines to those we end up running on, so in this class we will keep the two ideas separate.

Getting C++ set up on the college computers running Windows

1. Open a browser and navigate to Imperial College Software Hub
2. Search for atom in the search box
3. The Atom text editor is one of the few search results. Just click launch - done!
4. Clear the search box and then search for mingw in the search box
5. Among the small set of search results that pop up, launch MinGW 1.0 (the newer version plays badly with Armadillo).
6. You are all set!

Getting C++ set up on your own machine

1. Where C++ sits among other languages

• Ideosyncratic
• Steep learning curve difficult to get started
• Lacks features out of the box
• Not obvious how best to use for science
• Difficult to debug

In short: C++ is a robust, fast language whose steep learning curve makes it worthwhile using for only large maths problems.

1. Create a new directory (folder) in your home drive (H:) called cpp . We are going to save our files in here.
2. On the command line:
1. Change directory to the H: drive by typing H: (or from within the MinGW window, cd H: )
2. Change directory to your new cpp directory by typing cd cpp
1. Create a new directory (folder) in your home folder called cpp . We are going to save our files in here.
2. On the command line:
1. Navigate to your home folder (possibly by typing cd

(or possibly g++ on your own machine)

• Change the code so it prints 2X instead.
• Dejar X = 3.9. What do you expect to happen? What happens?
• What happens if you forget to add the semicolon?
• Convert the height into feet (1 metre = 3.28084 feet)
• Harder: Convert the height into feet and inches (1 foot = 12 inches), rounding down to an integer number of inches. For example, entering 1.81 (metres) should produce "5 feet 11 inches".
• Hint 1: If a and b are integers, then a%b = a modificación B.
• Hint 2: Convert to an integer number of inches first.

Basic arithmetic works out of the box, as you've seen. For 'scientific calculator' stuff, we need the <cmath> library. Libraries are like toolboxes.