Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Centro Universitario de la Defensa INFORMÁTICA Libro de Problemas Fernando Pereñíguez García MaríaTeresa Martínez Inglés Nina Skorin-Kapov INFORMÁTICA Libro de Problemas Primera edición Fernando Pereñíguez García María Teresa Martínez Inglés Nina Skorin-Kapov © Fernando Pereñiguez García, María Teresa Martínez Inglés, Nina Skorin-Kapov INFORMÁTICA. Libro de problemas. Primera edición. Primera Edición. Noviembre 2020 Reservados todos los derechos. El contenido de esta obra está protegido por la ley, que establece penas de prisión y/o multas, además de las correspondientes indemnizaciones por daños y perjuicios, para quienes reprodujeren, plagiaren, distribuyeren o comunicasen públicamente, en todo o en parte, una obra literaria, artística o científica, o su transformación, interpretación o ejecución artística fijada en cualquier tipo de soporte o comunicada a través de cualquier medio, sin la preceptiva autorización Publicado por: Centro Universitario de la Defensa (CUD) de San Javier Base Aérea de San Javier C/ Coronel López Peña, s/n 30720 Santiago de la Ribera, Murcia (España). Impresión: Talleres Gráficos Edelvives ISBN: 978-84-942962-3-9 DL: MU 854-2020 IMPRESO EN ESPAÑA / PRINTED IN SPAIN AGRADECIMIENTOS A todos los profesores que han impartido la asignatura de Informática en el Centro Universitario de la Defensa de San Javier. Este libro es fruto de vuestro esfuerzo y empeño por ofrecer la mejor docencia a nuestros alumnos. Gracias a todos vosotros, en especial, a Pedro J. García Laencina, que sin su dedicación, no hubiera sido possible esta recopilación. Además, queremos agradecer tanto el apoyo como el material que nos ha brindado Pedro Alcover Garau, ya que muchos de los ejercicios están basados en sus ejemplos y ejercicios de libros recomendados en la asignatura. Y finalmente, pero no menos importante, a nuestros alumnos. Sois lo que nos anima a superarnos como docentes año tras año. Este libro es por y para vosotros. PRÓLOGO Como Director del Centro es para mí un placer realizar el prólogo de este libro que tiene en sus manos. En él encontrará una recopilación de ejercicios relacionados con los contenidos tratados en la asignatura Informática que se imparte en el primer curso del título de Grado en Ingeniería en Organización Industrial (GIOI) en el Centro Universitario de la Defensa (CUD), ubicado en la Academia General del Aire (AGA). Es una gran satisfacción constatar la ilusión con la que el profesorado del Centro afronta el reto de formar con excelencia a nuestros alumnos como futuros oficiales del Ejército del Aire. Sin lugar a dudas, con la elaboración de esta herramienta docente, los autores de este libro, el Dr. Fernando Pereñíguez García, la Dra. María Teresa Martínez Inglés y la Dra. Nina Skorin-Kapov, demuestran su compromiso con la excelencia en la enseñanza que desde el CUD se impulsa de manera constante. Conscientes de la elevada carga de trabajo a la que están sometidos los alumnos durante su etapa de formación, el CUD de San Javier impulsó la iniciativa de dotar a sus alumnos de un material didáctico de calidad que les permitiera desarrollar con éxito la intensa labor de aprendizaje de las diferentes materias contenidas en el Plan de estudios de la Titulación; sin olvidar la doble formación que los alumnos reciben de manera simultánea, universitaria y militar, y teniendo siempre presente la realidad profesional a la que se enfrentarán nuestros futuros egresados. Alineado con este objetivo, este libro no es una simple recopilación de problemas, sino que pretende ser una herramienta complementaria que sirva de apoyo a la formación que recibe el alumno durante la impartición de la asignatura Informática. Con esta finalidad, los autores han seleccionado cuidadosamente los ejercicios que mejor permiten al alumno asimilar los contenidos teóricos de la asignatura. Además, estos son presentados en orden incremental de dificultad e incorporan abundantes explicaciones encaminadas a facilitar la compresión de la resolución de los mismos. La publicación de este libro es una excelente noticia para el CUD de San Javier, ya que es una nueva obra que se suma a la ya larga lista de manuales teóricos y prácticos en el ámbito del Título de GIOI que han sido publicados por este Centro desde el comienzo de su actividad en el curso académico 2010-2011. La elaboración de este material docente ha sido posible gracias al esfuerzo y la continua dedicación de sus autores por mejorar la calidad con la que desarrollan sus tareas docentes. Además, su publicación se produce en un momento donde sus autores, encargados de impartir la asignatura para la que va destinado este libro, han acumulado una amplia experiencia y conocimiento sobre el contexto tan particular en el que se imparte esta materia. No cabe la menor duda que Fernando, María Teresa y Nina han sabido identificar con éxito la colección de problemas suficiente y necesaria que permitirán al alumno comprender e interiorizar el contenido teórico de la asignatura de manera que pueda ser aplicado con éxito en su futuro ejercicio profesional en el seno de las Fuerzas Armadas. Finalmente deseo felicitar a los autores por la excelente obra realizada, por la gran herramienta docente que aporta al Centro, compañeros y alumnos, y en definitiva por el brillante legado que ello representa. Nicolás Madrid García Director del Centro Universitario de la Defensa - AGA CONTENIDO 1 INTRODUCCIÓN ................................................................................................................. 13 2 REPRESENTACIÓN DE LA INFORMACIÓN................................................................... 19 2.1. Cambios de base: Conversión de cualquier base a base decimal ............................... 21 2.2. Cambios de base: Conversión de base decimal a cualquier base............................... 23 2.3. Cambios de base: Conversión general entre bases ...................................................... 27 2.4. Cambios de base: Conversión entre bases binaria, octal y hexadecimal ................... 30 2.5. Sumar y restar en binario .............................................................................................. 36 2.6. Restar en binario usando el complemento a la base ................................................... 39 2.7. Codificacion de números en binario con signo ........................................................... 43 2.8. Codificacion de números en hexadecimal con signo .................................................. 47 3 PROGRAMACIÓN ESTRUCTURADA Y ALGORITMIA ............................................... 53 3.1. Suma de pares ................................................................................................................ 55 3.2. Tabla de multiplicar ....................................................................................................... 56 3.3. Calcular hora .................................................................................................................. 57 3.4. Corredor elegido ............................................................................................................ 58 3.5. Calcular cuadros y cubos .............................................................................................. 59 3.6. Número primo ............................................................................................................... 60 3.7. Análisis de secuencia numérica .................................................................................... 62 3.8. Suma de números ..........................................................................................................63 3.9. Potencia ........................................................................................................................... 64 3.10. Sucesión de ULAM ..................................................................................................... 65 4 TIPOS DE DATOS PRIMITIVOS ......................................................................................... 67 4.1. Operadores de asignación, aritméticos y asignación compuesta .............................. 69 4.2. Operadores relacionales, lógicos y a nivel de bit ........................................................ 76 4.3. Operadores de tamaño y cambio de tipo ..................................................................... 93 5 OPERACIONES DE ENTRADA/SALIDA .......................................................................... 99 5.1. Promoción ..................................................................................................................... 101 5.2. Media ............................................................................................................................ 102 5.3. Incrementos .................................................................................................................. 103 5.4. Leer caracteres .............................................................................................................. 104 6 ESTRUCTURAS DE CONTROL: SELECCIÓN ................................................................ 107 6.1. Par-impar ...................................................................................................................... 109 6.2. Divisor ........................................................................................................................... 110 6.3. Calificación examen ..................................................................................................... 111 6.4. Calificación literal ........................................................................................................ 113 6.5. Ecuación de segundo grado ........................................................................................ 116 6.6. Número entero en texto ............................................................................................... 119 6.7. Bilingue ......................................................................................................................... 121 7 ESTRUCTURAS DE CONTROL: REPETICIÓN ............................................................... 125 7.1. Números pares ............................................................................................................. 127 7.2. Factorial ........................................................................................................................ 128 7.3. Máximo y media versión while .................................................................................. 129 7.4. Factorial consecutivo ................................................................................................... 132 7.5. Convocatorias ............................................................................................................... 134 7.6. Maximo y media versión for ....................................................................................... 136 7.7. Primo o compuesto ...................................................................................................... 138 7.8. Aproximación Pi/4 ....................................................................................................... 141 7.9. Aproximación Pi/2 ....................................................................................................... 143 8 FUNCIONES........................................................................................................................ 147 8.1. Potencia ......................................................................................................................... 149 8.2. Factorial ........................................................................................................................ 152 8.3. Factorial global ............................................................................................................. 155 8.4. Resolver ecuación......................................................................................................... 156 8.5. Es primo ........................................................................................................................ 158 8.6. Perfecto ......................................................................................................................... 164 9 ARRAYS NUMÉRICOS ...................................................................................................... 169 9.1. Operaciones vectores ................................................................................................... 171 9.2. Vector Ordenado .......................................................................................................... 175 9.3. Negativos positivos ..................................................................................................... 178 9.4. Factoriales ..................................................................................................................... 181 9.5. Introducir polinomio ................................................................................................... 183 9.6. Evaluar polinomio ....................................................................................................... 186 9.7. Derivar polinomio ........................................................................................................ 188 9.8. Suma matrices .............................................................................................................. 191 9.9. Identidad triangular .................................................................................................... 194 9.10. Matriz 01.................................................................................................................... 198 9.11. Suma elementos matriz ............................................................................................ 199 9.12. Suma positivos pares ............................................................................................... 202 10 CARACTERES Y CADENAS DE CARACTERES ............................................................ 205 10.1. Tipos de caracteres ................................................................................................... 207 10.2. Número a carácter .................................................................................................... 210 10.3. Leer cadenas.............................................................................................................. 212 >> Uso de la función scanf() ............................................................................................... 212 >> Uso de la función gets() ................................................................................................. 216 >> Uso de la función fgets() ............................................................................................... 218 10.4. Longitud cadena ....................................................................................................... 221 10.5. Contar Aa .................................................................................................................. 224 10.6. Nombre apellido ....................................................................................................... 226 10.7. Caracteres iguales ..................................................................................................... 230 10.8. Encuentra y suma digitos ........................................................................................ 232 10.9. Cadenainvertida ...................................................................................................... 234 11 REGISTROS ......................................................................................................................... 237 11.1. Persona fecha ............................................................................................................ 239 11.2. Fracciones .................................................................................................................. 242 11.3. Números complejos .................................................................................................. 247 11.4. Polígono .................................................................................................................... 250 11.5. Pacientes hospital ..................................................................................................... 257 1 INTRODUCCIÓN Capítulo 1. Introducción | 15 Este libro sirve como apoyo a la formación teórica que reciben los caballeros y damas cadetes durante en la asignatura Informática del 1º curso del Grado en Ingeniería de Organización Industrial (GIOI) por la Universidad Politécnica de Cartagena, impartido en el Centro Universitario de la Defensa en San Javier. El núcleo formativo de la asignatura reside en la introducción al desarrollo de software donde los alumnos aprenden los fundamentos teóricos y prácticos de la programación y adquieren las habilidades necesarias para aplicarlos. Para ello, los alumnos aprenderán no sólo cómo se representa y codifica la información en un ordenador, sino también entenderán cómo se manipulan y procesan los datos codificados mediante secuencias de instrucciones formando programas. En esta asignatura, los alumnos serán capaces de realizar programas básicos utilizando el lenguaje de programación C. Este libro proporciona una colección de problemas y ejercicios comentados para clarificar y apoyar los ejemplos vistos en clase. Los contenidos que encontrará el lector en los siguientes capítulos se organizan de la siguiente forma. En el Capítulo 2 se proporciona una serie de ejercicios relacionados con la representación de la información en un ordenador. Toda información esta almacenada dentro del ordenador en formato binario con precisión y tamaño finito. Es importante entender cómo se codifica y guarda la información para poder saber cómo procesarla, las limitaciones asociadas y los errores que puedan surgir. Para entenderlo, en este capítulo se ofrecen ejercicios de cambios de base numérica, con particular atención a conversiones entre base decimal y las bases de potencias a 2 (binario, octal, hexadecimal). Además, se proporcionan ejercicios de sumar y restar números en binario, codificar números con signo en binario y hexadecimal con tamaño finito, y hacer operaciones entre números codificados con signo aplicando el complemento a la base. El Capítulo 3 engloba una colección de problemas sencillos que requieren el desarrollo de un algoritmo para su resolución representada de una forma gráfica. Los algoritmos definen una serie finita y precisa de instrucciones para procesar los datos y llevar a cabo una tarea. Estos algoritmos se pueden representar de forma gráfica mediante un Diagrama de Flujo, o flujograma. Este capítulo presenta varios ejemplos de flujogramas que realizan distintas tareas. A la hora de diseñar los algoritmos, es recomendable que sean estructurados. Para que un algoritmo o programa sea estructurado, debe ajustarse a una colección reducida de estructuras básicas de secuencia, de decisión y/o de iteración. La programación estructurada permite la sustitución de cualquier bloque de instrucción por una nueva estructura básica. En el Capítulo 4 se muestran varios ejercicios sobre los operadores y tipos de datos primitivos en el lenguaje de programación C. Es importante a la hora de programar, conocer el tamaño y entender la codificación de los datos primitivos y la manera en que los operadores manipulan esos datos para evitar errores de precisión, desbordamiento, conversión entre tipos, etc. Además, en este capítulo se familiariza los alumnos con la sintaxis básica de C para codificar y manipular datos. Primero se describen los operadores de asignación, aritméticos y de la asignación compuesta para realizar operaciones básicas de aritmética que 16 | Informática. Libro de problemas normalmente forman estructuras de secuencias. A continuación, se muestran los operadores relacionales y lógicos que son imprescindibles para poder crear estructuras de decisión (los condicionales) y de iteración (repetición). Se proporcionan también ejemplos de operadores relacionados con el tamaño de las variables y de cambios de tipo. A partir de este capítulo, se presentan los ejercicios relacionados con la resolución de problemas de programación en el lenguaje C. Para cada problema, se proporcionan ejemplos de ejecución1 y las posibles soluciones en forma de código fuente. Además, se añaden comentarios para explicar las soluciones que se han propuesto. En el Capítulo 5 se familiariza al alumno con las operaciones básicas de entrada/salida de datos. Se proporciona una serie de problemas que deben ser resueltos mediante programas sencillos. Este capítulo ayuda a familiarizarse con la estructura básica de los programas (la función principal, uso de librerías, uso de comentarios) y el uso correcto de las funciones prinft() y scanf() de la librería stdio.h que ofrecen mecanismos para facilitar la salida/entrada de datos por línea de comandos. En el Capítulo 6 se presentan diversos problemas que pretenden afianzar el uso de las estructuras de decisión o selección. Las estructuras de control de selección, o condicionales, usadas en lenguaje C son: if, if-else, y switch. Estas estructuras de selección condicionales varían el flujo de ejecución de un programa dependiendo de una condición. La sentencia if permite a un programa elegir entre dos alternativas, comprobando el valor de una expresión lógica. Una sentencia if puede ir acompañada opcionalmente por una clausula else. Cuando usamos el anidamiento de sentencias if para evaluar, de manera consecutiva, condiciones que son mutuamente excluyentes, se puede emplear la concatenación if - else. Para comparar una expresión con un conjunto de valores, se podría usar sentencias if anidadas, o emplear la sentencia switch que compara sucesivamente el valor de una expresión con una lista de constantes de tipo entero o carácter. En el Capítulo 7, se proporcionan varios problemas para ilustrar el uso de las estructuras básicas de iteración, o repetición. Las estructuras de repetición permiten iterar sobre un conjunto de instrucciones, es decir un bucle, mientras se cumpla una condición. Las estructuras de repetición usadas en lenguaje C y presentadas en este capítulo son: while, do- while, y for. La sentencia while es la más sencilla que ofrece C para ejecutar de manera repetida un conjunto de instrucciones. Las sentencias dentro del bucle while se ejecutarán mientras que la condición definida por una expresión lógica sea verdadera. La estructura do- while es parecida a la del while, salvo que la condición se evalúa por primera vez después de ejecutar todas las sentencias. Eso asegura que las sentencias que forman el do-while se 1 A la hora de mostrar los ejemplos de ejecución, la información introducida por el usuario mediante teclado se ha destacado por medio de un sombreado de texto de color gris. Capítulo 1. Introducción | 17 ejecutarán siempre, al menos, una vez. El bucle for permite escribir de una forma compacta la inicialización de una o más variables que van a formar parte del bucle, la condición (expresión lógica) que determinará cuando finaliza el bucle y el cambio de las variables en cada iteración del bucle. En este capítulo también se introducenejemplos de salida de los bucles mediante la instrucción break. El Capítulo 8 contiene problemas para afianzar los conceptos relacionados con el uso de funciones. Las funciones representan fragmentos de código que realizan tareas determinadas y nos permiten dividir la solución de un problema complejo en pequeños problemas más sencillos de forma modular. También nos permite realizar la misma tarea varias veces dentro del programa sin repetir del código. Los ejemplos proporcionados ayudan a entender el uso de funciones centrándose en los conceptos clave en el uso de funciones en C: la declaración, definición e invocación de una función. La declaración especifica los parámetros de entrada y salida de la función, la invocación define como se usa la función, y la definición incluye las instrucciones que ejecuta la función para realizar la tarea. En el Capítulo 9, se presentan varios problemas para familiarizarse con el manejo de arrays numéricos, que son un tipo básico de datos agregado que permiten almacenar colecciones de datos del mismo tipo. Un array es una colección de variables del mismo tipo que se referencian mediante un único identificador. Las variables se guardan de forma consecutiva en memoria y a las posiciones del array (cada variable) se puede acceder indexando mediante un índice. En este capítulo, se presenta el uso de arrays numéricos unidimensionales (vectores) y bidimensionales (matrices) y como recorrerlos mediante estructuras de repetición e índices. El Capítulo 10, para complementar la formación en el uso de arrays, versa sobre la manipulación de arrays que almacenan caracteres, también conocidos como cadenas de caracteres. Se proporcionan ejemplos donde se usan funciones de la biblioteca ctype.h para manipular caracteres. Además, se muestran las diferentes formas de leer cadenas de texto aplicando funciones como scanf(), gets(), fgets(). Por último, se presentan problemas para recorrer cadenas de caracteres con el fin de copiar, manipular o evaluarlas, en algunos casos aplicando funciones de la biblioteca string.h. En el Capítulo 11, se completa el uso de los tipos de datos estructurados aprendiendo el uso de los registros, también conocidos como estructuras. Un registro es un tipo de dato que almacena bajo un mismo nombre información relacionada pero representada con tipos de datos heterogéneos. A diferencia de los arrays, en los registros los elementos no tienen que ser del mismo tipo y se accede a cualquier elemento del registro a través del nombre. Se proporcionan varios ejemplos de cómo declarar registros como nuevos tipos de datos, inicializar variables de los tipos nuevos definidos mediante registros y acceder a los campos dentro de los variables tipo registro. 2 REPRESENTACIÓN DE LA INFORMACIÓN Capítulo 2. Representación de la información | 21 2.1. Cambios de base: Conversión de cualquier base a base decimal Esta sección contiene diversos ejercicios que consisten en cambiar un número n1 expresado en base b1 a su correspondiente número n2 expresado en base b2=10. n1=11011, b1=2, b2=10, n2=? (11011)2(___)10 Solución: n2 = 27 Procedimiento: Se recomienda aplicar el método de expansión. (11011)2 1·24 + 1·23 + 0·22 + 1·21 + 1·20 = 16+8+0+2+1 = (27)10 n1=534, b1=6, b2=10, n2=? (534)6(___)10 Solución: n2 = 202 Procedimiento: Se recomienda aplicar el método de expansión. (534)6 5·62 + 3·61 + 4·60 = 180 + 18 + 4 = (202)10 n1=A3F, b1=16, b2=10, n2=? (A3F)16(___)10 Solución: n2 = 2623 Procedimiento: Se recomienda aplicar el método de expansión. (A3F)16 10·162 + 3·161 + 15·60 = 2560 + 48 + 15 = (2623)10 Posición 24 Posición 20 22 | Informática. Libro de problemas n1=778, b1=9, b2=10, n2=? (778)9(___)10 Solución: n2 = 638 n1=11101110, b1=2, b2=10, n2=? (11101110)2(___)10 Solución: n2 = 238 n1=A44, b1=16, b2=10, n2=? (A44)16(___)10 Solución: n2 = 2628 n1=452, b1=6, b2=10, n2=? (452)6(___)10 Solución: n2 = 176 n1=1101, b1=3, b2=10, n2=? (1101)3(___)10 Solución: n2 = 37 n1=770, b1=8, b2=10, n2=? (770)8(___)10 Solución: n2 = 504 Capítulo 2. Representación de la información | 23 n1=23F, b1=16, b2=10, n2=? (23F)16(___)10 Solución: n2 = 575 2.2. Cambios de base: Conversión de base decimal a cualquier base Este apartado contiene diversos ejercicios que consisten en cambiar un número n1 expresado en base b1=10 a su correspondiente número n2 expresado en base b2. n1=254, b1=10, b2=4, n2=? (254)10(___)4 Solución: n2 = 3332 Procedimiento: Se recomienda aplicar el método de divisiones sucesivas. Se debe comenzar dividiendo el número n1 entre b2. Guardamos el resto que obtenemos mientras que el cociente se vuelve a dividir entre b2. Este proceso se repite de forma sucesiva hasta que se obtenga un cociente menor que b2. Los dígitos que forman el número n2 expresado en base b2 es el cociente obtenido en la última división, seguido por los restos obtenidos en las sucesivas divisiones (desde el ultimo al primero). Aplicando el procedimiento descrito anteriormente, se concluye el número 254 expresado en base 10 equivale al número 3332 expresado en base 4: (254)10(3332)4 254 4 2 63 4 3 15 4 3 3 Dividendo (n1) Resto Divisor (base b2) Cociente 24 | Informática. Libro de problemas n1=133, b1=10, b2=2, n2=? (133)10(___)2 Solución: n2 = 10000101 Procedimiento: Se recomienda aplicar el método de divisiones sucesivas. Aplicando el procedimiento descrito anteriormente, se concluye el número 133 expresado en base 10 equivale al número 10000101 expresado en base 2: (133)10(10000101)2 133 2 1 66 2 0 33 2 1 16 2 0 8 2 0 4 2 0 2 2 0 1 n1=3390, b1=10, b2=16, n2=? (3390)10(___)16 Solución: n2 = C3D Procedimiento: Se recomienda aplicar el método de divisiones sucesivas. Capítulo 2. Representación de la información | 25 (3390)10(D3E)16 3390 16 14 211 16 3 13 n1=56, b1=10, b2=7, n2=? (56)10(___)7 Solución: n2 = 110 n1=323, b1=10, b2=9, n2=? (323)10(___)9 Solución: n2 = 388 n1=9, b1=10, b2=16, n2=? (9)10(___)16 Solución: n2 = 9 n1=9, b1=10, b2=5, n2=? (9)10(___)5 Solución: n2 = 14 E en base 16 Divisor (base b2) D en base 16 26 | Informática. Libro de problemas n1=54, b1=6, b2=8, n2=? (54)10(___)8 Solución: n2 = 66 n1=22, b1=10, b2=2, n2=? (22)10(___)2 Solución: n2 = 10110 n1=167, b1=10, b2=16, n2=? (167)10(___)16 Solución: n2 = A7 n1=43, b1=10, b2=5, n2=? (43)10(___)5 Solución: n2 = 133 Capítulo 2. Representación de la información | 27 2.3. Cambios de base: Conversión general entre bases Este apartado contiene diversos ejercicios que consisten en cambiar un número n1 expresado en base b1 a su correspondiente número n2 expresado en base b2: (n1)b1(n2)b2 n1=124, b1=6, b2=8, n2=? (124)6(___)8 Solución: n2 = 64 Procedimiento: En primer lugar, se recomienda convertir el número n1 expresado en base b1 a base 10 mediante el método de expansión (Paso 1). Seguidamente deberemos convertir el valor obtenido (en base 10) a base b2, empleando para ello el método de divisiones sucesivas (Paso 2). • Paso 1: (124)6(___)10 Resuelto mediante el método de expansión: (124)6 1·62+2·61+4·60 = 36+12+4 = (52)10 • Paso 2: (52)10(___)8 Resuelto mediante el método de divisiones sucesivas: 52 8 4 6 Aplicando el procedimiento descrito anteriormente, se concluye el número 124 expresado en base 6 equivale alnúmero 64 expresado en base 8: (52)10(64)8 Dividendo Resto Divisor (base b2) Cociente 64 28 | Informática. Libro de problemas n1=251, b1=8, b2=3, n2=? (251)8(___)3 Solución: n2 = 20021 Procedimiento: En primer lugar, debemos transformar el número n1 expresado en base b1 a base 10 mediante el método de expansión (Paso 1). A continuación, convertiremos el valor obtenido (en base 10) a base b2, empleando el método de divisiones sucesivas (Paso 2). • Paso 1: (251)8(___)10 Resuelto mediante el método de expansión: (251)8 2·82+5·81+1·80 = 128+40+1 = (169)10 • Paso 2: (169)10(___)3 Resuelto mediante el método de divisiones sucesivas: Por lo tanto, aplicando el procedimiento descrito anteriormente, se concluye el número 251 expresado en base 8 equivale al número 20021 expresado en base 3: (169)10(20021)3 169 3 1 56 3 2 18 3 0 6 3 0 2 Capítulo 2. Representación de la información | 29 n1=87, b1=9, b2=5, n2 =? (87)9(___)5 Solución: n2 = 304 n1=241, b1=5, b2=9, n2=? (241)5(___)9 Solución: n2 = 78 n1=122, b1=3, b2=5, n2=? (122)3(___)5 Solución: n2 = 32 n1=130, b1=5, b2=6, n2=? (130)5(___)6 Solución: n2 = 104 n1=56, b1=8, b2=7, n2=? (56)8(___)7 Solución: n2 = 64 n1=AA, b1=16, b2=5, n2=? (AA)16(___)5 Solución: n2 = 1140 30 | Informática. Libro de problemas n1=1234, b1=5, b2=9, n2=? (1234)5(___)9 Solución: n2 = 235 n1=43, b1=6, b2=5, n2=? (43)6(___)5 Solución: n2 = 102 2.4. Cambios de base: Conversión entre bases binaria, octal y hexadecimal Este apartado agrupa diversos ejercicios que proponen realizar la conversión de valores numéricos expresados en base binaria, octal y hexadecimal. Dado el número n1 expresado en binario (con 8 bits), determina sus correspondientes valores numéricos n2 en base octal (con 3 dígitos) y n3 en base hexadecimal (con 2 dígitos). n1= 0100 1110, n2=?, n3=? (0100 1110)2(___)8 y (0100 1110)2(___)16 Solución: n2 = 116, n3 = 4E Procedimiento: Se podría aplicar el procedimiento general (descrito en el apartado 2.3) y transformar el número binario a base 10 y, seguidamente, transformar este a sus valores numéricos equivalentes en las bases octal y hexadecimal. Sin embargo, para las transformaciones entre las bases 2, 8, y 16, se puede aplicar un procedimiento más rápido, que mostramos a continuación. Capítulo 2. Representación de la información | 31 Binario Octal Se debe dividir el número dado en binario en grupos de 3 bits, empezando por la derecha. Cada grupo corresponde a un digito en octal que se calcula aplicando el método de expansión. (0 1 0 0 1 1 1 0) 2 0 1 0 0 1 1 1 0 Según observamos en la anterior figura, el valor 0100 1110 expresado en binario equivale al valor 116 expresado en base octal: (0100 1110)2(116)8 Binario Hexadecimal Se debe dividir el número dado en binario en grupos de 4 bits, empezando por la derecha. Cada grupo corresponde a un digito en hexadecimal que se calcula aplicando el método de expansión. (0 1 0 0 1 1 1 0) 2 0 1 0 0 1 1 1 0 Según se muestra en la figura anterior, el valor 0100 1110 expresado en binario equivale al valor 4E expresado en base hexadecimal: (0100 1110)2(4E)16 Dado el número n1 expresado en octal (con 2 dígitos), determina sus correspondientes valores numéricos n2 en binario (con 8 bits) y n3 en hexadecimal (con 2 dígitos). n1= 53, n2=?, n3=? (53)8(___)2 y (53)8(___)16 1·22+1·21+0·20=6 0·22+0·21+1·20=1 0·21+1·20=1 1·23+1·22+1·21+0·20=(14)10=(E)16 0·2 3+1·22+0·21+0·20=(4)10=(4)16 32 | Informática. Libro de problemas Solución: n2 = 00101011, n3 = 2B Procedimiento: Se recomienda transformar el valor octal a binario y, a su vez, convertir este en su correspondiente valor hexadecimal. Octal Binario Debemos convertir cada digito octal (de formal individual) a un valor binario con 3 bits. Como un único digito en octal es igual que en decimal, se puede usar el método de divisiones sucesivas. Es importante mencionar que, si el número en binario tiene menos de 3 bits, deberemos rellenar con ceros las posiciones de la izquierda. (53)8 5 3 Tal y como se muestra en la figura anterior, el valor 53 expresado en base octal equivale al valor 101011 expresado en base binaria: (53)8 (101 011)2 Debido a que el ejercicio nos solicita el número en binario empleando 8 bits, rellenamos con 0´s las posiciones de la izquierda hasta llegar a 8 bits, resultando lo siguiente: (53)8 (00101011)2 Binario Hexadecimal Se debe dividir el número dado en binario en grupos de 4 bits, empezando por la derecha. Cada grupo corresponde a un digito en hexadecimal que se calcula aplicando el método de expansión. (101011) 2 1 0 1 0 1 1 Según se muestra en la figura anterior, el valor 101011 expresado en binario equivale al valor 2B expresado en base hexadecimal: (101011)2(2B)16 5 2 1 2 2 0 1 3 2 1 1 1·23+0·22+1·21+1·20=(11)10=(B)16 0·23+0·22+1·21+0·20=(2)10=(2)16 Capítulo 2. Representación de la información | 33 Dado el número n1 expresado en hexadecimal (con 2 dígitos), determina sus correspondientes valores numéricos n2 en binario (con 8 bits) y n3 en octal (con 3 dígitos). n1= 65, n2=?, n3=? (65)16(___)2 y (65)16(___)8 Solución: n2 = 0110 0101, n3 = 145 Procedimiento: Se recomienda transformar el valor hexadecimal a binario y, a su vez, convertir este en su correspondiente valor octal. Hexadecimal Binario Debemos convertir cada digito hexadecimal (de forma individual) a un valor binario con 4 bits. Si el número resultante en binario tiene menos que 4 bits, rellenamos conceros las posiciones de la izquierda. (65)16 6 5 (0110 0101)2 Tal y como se muestra en la figura anterior, el valor 65 expresado en base hexadecimal equivale al valor 0110 0101 expresado en base binaria: (65)16(0110 0101)2 Binario Octal Se debe dividir el número dado en binario en grupos de 3 bits, empezando por la derecha. Cada grupo corresponde a un digito en octal que se calcula aplicando el método de expansión. 5 2 1 2 2 0 1 6 2 0 3 2 1 1 34 | Informática. Libro de problemas (0 1 1 0 0 1 0 1) 2 0 1 1 0 0 1 0 1 Según observamos en la anterior figura, el valor 0110 0101 expresado en binario equivale al valor 145 expresado en base octal: (0110 0101)2(145)8 Dado el número n1 expresado en binario (con 8 bits), determina sus correspondientes valores numéricos n2 en base octal (con 3 dígitos) y n3 en base hexadecimal (con 2 dígitos). n1= 1100 0110, n2=?, n3=? (1100 0110)2(___)8 y (1100 0110)2(___)16 Solución: n2 = 306, n3 = C6 Dado el número n1 expresado en binario (con 8 bits), determina sus correspondientes valores numéricos n2 en base octal (con 3 dígitos) y n3 en base hexadecimal (con 2 dígitos). n1= 1110 0111, n2=?, n3=? (1110 0111)2(___)8 y (1110 0111)2(___)16 Solución: n2 = 347, n3 = E7 Dado el número n1 expresado en octal (con 3 dígitos), determina sus correspondientes valores numéricos n2 en binario (con 10 bits) y n3 en hexadecimal (con 3 dígitos). n1= 761, n2=?, n3=? (761)8(___)2 y (761)8(___)16 Solución: n2 = 0111110001, n3 = 1F1 1·22+0·21+1·20=5 1·22+0·21+0·20=4 0·21+1·20=1 Capítulo 2. Representación de la información | 35 Dado el número n1 expresado en octal (con 3 dígitos), determina sus correspondientes valores numéricos n2 en binario (con 8 bits) y n3 en hexadecimal (con 2 dígitos). n1= 275, n2=?, n3=? (275)8(___)2y (275)8(___)16 Solución: n2 = 10111101, n3 = BD Dado el número n1 expresado en hexadecimal (con 2 dígitos), determina sus correspondientes valores numéricos n2 en binario (con 8 bits) y n3 en octal (con 3 dígitos). n1= AA, n2=?, n3=? (AA)16(___)2 y (AA)16(___)8 Solución: n2 = 10101010, n3 = 252 Dado el número n1 expresado en hexadecimal (con 3 dígitos), determina sus correspondientes valores numéricos n2 en binario (con 12 bits) y n3 en octal (con 4 dígitos). n1= F10, n2=?, n3=? (F10)16(___)2 y (F10)16(___)8 Solución: n2 = 111100010000, n3 = 7420 Dado el número n1 expresado en hexadecimal (con 2 dígitos), determina sus correspondientes valores numéricos n2 en binario (con 8 bits) y n3 en octal (con 3 dígitos). n1= 0E, n2=?, n3=? (0E)16(___)2 y (0E)16(___)8 Solución: n2 = 00001110, n3 = 016 36 | Informática. Libro de problemas 2.5. Sumar y restar en binario Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 1101, n2=1011, n1+n2=?, n1-n2=? Solución: n1+n2 = 11000, n1-n2 = 10 Procedimiento: +1 +1 +1 1 1 0 1 + 1 0 1 1 1 1 0 0 0 -1 1 1 0 1 - 1 0 1 1 0 0 1 0 Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 1110, n2=1011, n1+n2=?, n1-n2=? Solución: n1+n2 = 11001, n1-n2 = 11 Procedimiento: +1 +1 1 1 1 0 + 1 0 1 1 1 1 0 0 1 -1 -1 1 1 1 0 - 1 0 1 1 0 0 1 1 Capítulo 2. Representación de la información | 37 Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 10010, n2=11, n1+n2=?, n1-n2=? Solución: n1+n2 = 10101, n1-n2 = 1111 Procedimiento: +1 1 0 0 1 0 + 1 1 1 0 1 0 1 -1 -1 -1 -1 1 0 0 1 0 - 1 1 0 1 1 1 1 Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 1001, n2=111, n1+n2=?, n1-n2=? Solución: n1+n2 = 10000, n1-n2 = 10 Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 11, n2=1, n1+n2=?, n1-n2=? Solución: n1+n2 = 100, n1-n2 = 10 Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 101, n2=11, n1+n2=?, n1-n2=? Solución: n1+n2 = 1000, n1-n2 = 10 38 | Informática. Libro de problemas Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 10011, n2=1011, n1+n2=?, n1-n2=? Solución: n1+n2 = 11110, n1-n2 = 1000 Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 11011, n2=110, n1+n2=?, n1-n2=? Solución: n1+n2 = 100001, n1-n2 = 10101 Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 1011, n2=0110, n1+n2=?, n1-n2=? Solución: n1+n2 = 10001, n1-n2 = 101 Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 1111, n2=1000, n1+n2=?, n1-n2=? Solución: n1+n2 = 10111, n1-n2 = 111 Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los mismos en base binaria. n1= 10001, n2=101, n1+n2=?, n1-n2=? Solución: n1+n2 = 10110, n1-n2 = 1100 Capítulo 2. Representación de la información | 39 2.6. Restar en binario usando el complemento a la base Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: • El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. • El complemento a 2 (complemento a la base) de n2 con 8 bits. • La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en complemento a la base. n1= 0111 1011, n2=0100 1011, 𝐶𝐶18(𝑛𝑛2) =?, 𝐶𝐶28(𝑛𝑛2) =?, n1-n2=? Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)= 1011 0100, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =1011 0101, n1-n2 = 0011 0000 Procedimiento: El complemento a 1 de un número binario se obtiene fácilmente sustituyendo todos los ceros por unos y viceversa: n2=0100 1011 𝐶𝐶18(𝑛𝑛2)=1011 0100 El complemento a 2 de un número binario se obtiene al sumarle la unidad al complemento a 1 de dicho número: 𝐶𝐶18(𝑛𝑛2)= 1011 0100 + 1 𝐶𝐶28(𝑛𝑛2)= 1011 0101 La resta n1-n2 considerando x bits se puede calcular como los x bits menos significativos de la suma n1+C2(n2), donde n1 y C2(n2) deben ser valores binarios expresados haciendo uso de x bits. En este ejemplo, la resta esta calculada considerando 8 bits, es decir, x = 8: 0111 1011 n1 + 1011 0101 𝐶𝐶28(𝑛𝑛2) 10011 0000 Atendiendo al procedimiento descrito anteriormente de resta binario en complemento a la base, la resta de los valores n1-n2 resulta en el valor 0011 0000. 8 bits Descartar 40 | Informática. Libro de problemas Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: • El complemento a 1 (complemento a la base menos uno) de n2 con 10 bits. • El complemento a 2 (complemento a la base) de n2 con 10 bits. • La resta n1-n2 considerando 10 bits haciendo uso del procedimiento basado en complemento a la base. n1= 0111 1011, n2 = 0100 1011, 𝐶𝐶110(𝑛𝑛2)=?, 𝐶𝐶210(𝑛𝑛2) =?, n1-n2=? Solución: 𝑪𝑪𝟏𝟏𝟏𝟏𝟏𝟏(𝒏𝒏𝒏𝒏)= 1011 0100, 𝑪𝑪𝒏𝒏𝟏𝟏𝟏𝟏(𝒏𝒏𝒏𝒏) =1011 0101, n1-n2 = 0011 0000 Procedimiento: El complemento a 1 de un número binario se obtiene fácilmente al sustituir todos los ceros por unos y viceversa. Como el ejercicio especifica con 10 bits, tenemos que añadir dos ceros en las posiciones ás a la izquierda del numero n2: n2=00 0100 1011 𝐶𝐶110(𝑛𝑛2)=11 1011 0100 El complemento a 2 de un número binario se obtiene al sumarle la unidad al complemento a 1 de dicho número. 𝐶𝐶110(𝑛𝑛2)= 11 1011 0100 + 1 𝐶𝐶210(𝑛𝑛2)= 111011 0101 La resta n1-n2 considerando x bits se puede calcular como los x bits menos significativos de la suma n1+C2(n2), donde n1 y C2(n2) deben ser valores binarios expresados haciendo uso de x bits. En este ejemplo, la resta esta calculada considerando 10 bits, es decir, x = 10: 00 0111 1011 n1 con 10 bits + 11 1011 0101 𝐶𝐶210(𝑛𝑛2) 1000011 0000 Atendiendo al procedimiento descrito anteriormente de resta binario en complemento a la base, la resta de los valores n1-n2 resulta en el valor 00 0011 0000. 10 bits Descartar Capítulo 2. Representación de la información | 41 Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: • El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. • El complemento a 2 (complemento a la base) de n2 con 8 bits. • La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en complemento a la base. n1= 1101 1100, n2=1000 1110, 𝐶𝐶18(𝑛𝑛2)=?, 𝐶𝐶28(𝑛𝑛2) =?, n1-n2=? Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)= 0111 0001, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =0111 0010, n1-n2 = 0100 1110 Dados los valores n1 y n2 (expresados en basebinaria con 4 bits), calcule: • El complemento a 1 (complemento a la base menos uno) de n2 con 5 bits. • El complemento a 2 (complemento a la base) de n2 con 5 bits. • La resta n1-n2 considerando 5 bits haciendo uso del procedimiento basado en complemento a la base. n1= 1011, n2=0011, 𝐶𝐶15(𝑛𝑛2)=?, 𝐶𝐶25(𝑛𝑛2) =?, n1-n2=? Solución: 𝑪𝑪𝟏𝟏𝟓𝟓(𝒏𝒏𝒏𝒏)= 11100, 𝑪𝑪𝒏𝒏𝟓𝟓(𝒏𝒏𝒏𝒏) =11101, n1-n2 = 01000 Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: • El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. • El complemento a 2 (complemento a la base) de n2 con 8 bits. • La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en complemento a la base. n1= 0100 1101, n2=0001 1110, 𝐶𝐶18(𝑛𝑛2)=?, 𝐶𝐶28(𝑛𝑛2) =?, n1-n2=? Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)= 1110 0001, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =1110 0010, n1-n2 = 0010 1111 42 | Informática. Libro de problemas Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: • El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. • El complemento a 2 (complemento a la base) de n2 con 8 bits. • La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en complemento a la base. n1= 1001 0101, n2=1000 1110, 𝐶𝐶18(𝑛𝑛2)=?, 𝐶𝐶28(𝑛𝑛2) =?, n1-n2=? Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)= 0111 0001, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =0111 0010, n1-n2 = 0000 0111 Dados los valores n1 y n2 (expresados en base binaria con 4 bits), calcule: • El complemento a 1 (complemento a la base menos uno) de n2 con 4 bits. • El complemento a 2 (complemento a la base) de n2 con 4 bits. • La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en complemento a la base. n1= 1011, n2=1010, 𝐶𝐶14(𝑛𝑛2)=?, 𝐶𝐶24(𝑛𝑛2) =?, n1-n2=? Solución: 𝑪𝑪𝟏𝟏𝟒𝟒(𝒏𝒏𝒏𝒏)= 0101, 𝑪𝑪𝒏𝒏𝟒𝟒(𝒏𝒏𝒏𝒏) =0110, n1-n2 = 0001 Dados los valores n1 y n2 expresados en base binaria con 5 y 3 bits, respectivamente, calcule: • El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. • El complemento a 2 (complemento a la base) de n2 con 8 bits. • La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en complemento a la base. n1= 1 0101, n2=110, 𝐶𝐶18(𝑛𝑛2)=?, 𝐶𝐶28(𝑛𝑛2)=?, n1-n2=? Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)=1111 1001, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =1111 1010, n1-n2 = 0000 1111 Capítulo 2. Representación de la información | 43 Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: • El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. • El complemento a 2 (complemento a la base) de n2 con 8 bits. • La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en complemento a la base. n1= 1111 1111, n2=0000 1110, 𝐶𝐶18(𝑛𝑛2)=?, 𝐶𝐶28(𝑛𝑛2) =?, n1-n2=? Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)= 1111 0001, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =1111 0010, n1-n2 = 1111 0001 Dados los valores n1 y n2 (expresados en base binaria con 4 bits), calcule: • El complemento a 1 (complemento a la base menos uno) de n2 con 4 bits. • El complemento a 2 (complemento a la base) de n2 con 4 bits. • La resta n1-n2 considerando 4 bits haciendo uso del procedimiento basado en complemento a la base. n1=1111, n2= 0110, 𝐶𝐶14(𝑛𝑛2)=?, 𝐶𝐶24(𝑛𝑛2) =?, n1-n2=? Solución: 𝑪𝑪𝟏𝟏𝟒𝟒(𝒏𝒏𝒏𝒏)= 1001, 𝑪𝑪𝒏𝒏𝟒𝟒(𝒏𝒏𝒏𝒏) =1010, n1-n2 = 1001 2.7. Codificacion de números en binario con signo Codifique el valor n1, expresado en base decimal, para obtener su correspondiente código n2 en formato binario de 8 bits y con posibilidad de signo (usando el complemento a 2). n1= -5, n2=? Solución: n2 = 1111 1011 Procedimiento: Debido a que el número es negativo, primero se debe convertir el valor absoluto a binario con 8 bits. Para ello aplicaremos el método de las divisiones sucevias (Paso 1). Seguidamente, procederemos a calcular el complemento a 2 del valor binario obtenido (Paso 2). 44 | Informática. Libro de problemas • Paso 1: (5)10(___)2 Tal y como se puede observar, el número 5 expresado en base 10 equivale al número 0000 0101 expresado en base binaria. Nótese que se han añadido ceros en las posiciones más a la izquierda para obtener el valor representado con 8 bits: (5)10(0000 0101)2 • Paso 2: Se calcula el complemento a 1 del valor binario obtenido en el paso 1: 𝐶𝐶18 (0000 0101) = 1111 1010 A partir de este, procedemos a calcular el complemento a 2: 𝐶𝐶28 (0000 0101) = 𝐶𝐶18(0000 0101) + 1 = 1111 1010 + 1 = 1111 1011 Por lo tanto, se concluye que n2=1111 1011. 5 2 1 2 2 0 1 Codifique el valor n1, expresado en base decimal, para obtener su correspondiente código n2 en formato binario con 8 bits y con posibilidad de signo (usando el complemento a 2). n1 = 20, n2 = ? Solución: n2 = 00010100 Procedimiento: Debido a que el número positivo, simplemente deberemos convertir el número a binario aplicando el método de divisiones sucesivas. Si fuera necesario, complementamos con ceros las posiciones más a la izquierda para obtener una representación en 8 bits, tal y como solicita el enunciado del ejercicio. En definitiva, tras aplicar este procedimiento, se llega a la conclusión que el número 20 (expresado en base 10) equivale al número 0001 0100 (expresado en base binaria): (20)10(0001 0100)2 Capítulo 2. Representación de la información | 45 Dado el valor n1, codificado en formato binario con 8 bits y posibilidad de signo (usando el complemento a 2), obtenga su valor n2 equivalente en base decimal. n1= 1111 1001, n2=? Solución: n2 = -7 Procedimiento: Debido a que el valor binario proporcionado comienza por el bit "1", nos encontramos ante un número negativo. 1111 1001 El número es negativo En este caso, se debe proceder de la siguiente manera: primero calculamos el complemento a 2 del número en binario (Paso 1) y, seguidamente, convertimos a decimal (Paso 2) el valor obtenido. El resultado obtenido será el valor absoluto del resultado que solicita el ejercicio. • Paso 1: Complemento a 1 (𝐶𝐶18): 𝐶𝐶18 (1111 1001)=0000 0110 Complemento a 2, (𝐶𝐶28): 𝐶𝐶28 (1111 1001)= 𝐶𝐶18 (1111 1001)+1=0000 0110+1=0000 0111 • Paso 2: (0000 0111)21·22+1·21+1·20 =(7)10, 7 es el valor absoluto Tal y como se ha explicado anteriormente, el resultado obtenido (7 en base decimal) es el valor absoluto del resultado que buscamos. Por lo tanto, se puede afirmar que 1111 1001 es la representación binaria del valor -7 decimal: n2=-7 Calcule el valor n1 codificado en formato binario con 8 bits y con posibilidad de signo (usando el complemento a 2) a su valor n2 equivalente en base decimal. n1= 0000 1110, n2=? Solución: n2 = 14 46 | Informática. Libro de problemas Procedimiento: Debido a que el número binario comienza con el bit "0", entonces nos encontramos ante un número positivo. 0000 1110 El número es positivo En este caso, para resolver el ejercicio simplemente se debe convertir el número representado en binario a decimal aplicando el método de expansión: (0000 1110)21·23+1·22+1·21 = (14)10 A la vista del resultado obtenido en la operación anterior, afirmamos que el valor binario 0000 1110 equivale al valor 14 en base decimal: n2 = 14 Dado el valor n1, representado en base decimal, obtenga su correspondiente código n2 en formato binario con 8 bits y posibilidad de signo (usando el complemento a 2). n1= -14, n2=? Solución: n2 = 1111 0010 Dado el valor n1, representado en formato binario con 8 bits y posibilidad de signo (usando el complemento a 2), determine su valor n2 equivalente en base decimal. n1= -32, n2=? Solución: n2 = 1110 0000 Dado el valor n1, representado en base decimal, obtengasu correspondiente código n2 en formato binario con 8 bits y posibilidad de signo (usando el complemento a 2). n1= -17, n2=? Solución: n2 = 1110 1111 Capítulo 2. Representación de la información | 47 Dado el valor n1, representado en formato binario con 8 bits y posibilidad de signo (usando el complemento a 2), determine su valor n2 equivalente en base decimal. n1= 1111 0111, n2=? Solución: n2 = -9 Dado el valor n1, representado en formato binario con 8 bits y posibilidad de signo (usando el complemento a 2), determine su valor n2 equivalente en base decimal. n1= 1000 0000, n2=? Solución: n2 = -128 Dado el valor n1, representado en formato binario con 8 bits y posibilidad de signo (usando el complemento a 2), determine su valor n2 equivalente en base decimal. n1= 0000 0011, n2=? Solución: n2 = 3 2.8. Codificacion de números en hexadecimal con signo Dado el valor n1, representado en base decimal, determine el valor n2 equivalente representado en base hexadecimal con 4 dígitos y con posibilidad de signo (usando el complemento a la base). n1= -69, n2=? Solución: n2 = FFBB Procedimiento: Debido a que el valor n1 es un número negativo, para resolver este ejercicio debemos seguir dos pasos. En primer lugar, convertimos el valor absoluto de n1 (es decir, el valor 69) a hexadecimal con 4 dígitos (Paso 1). A continuación, calculamos el complemento a la base (𝐶𝐶164 ) del valor obtenido (Paso 2). Para calcular el complemento a la base en hexadecimal bastará con sumar 1 al complemento a la base menos uno (𝐶𝐶154 ). A su vez, para obtener el complemento a la base menos uno, deberemos restar a FFFF el valor en cuestión. 48 | Informática. Libro de problemas • Paso 1 (69)10(___)16 Como debemos obtener una representación con 4 dígitos hexadecimales, añadimos ceros en las posiciones más a la izquierda. De este modo, obtenemos lo siguiente: (69)10(0045)16 • Paso 2 En primer lugar, calculamos el complemento a la base menos uno (𝐶𝐶154 ) del valor hexadecimal 0045: FFFF - 0045 𝐶𝐶154 (0045)= FFBA Ahora procedemos a calcular el complemento a la base (𝐶𝐶164 ): 𝐶𝐶154 (0045) = FFBA + 1 𝐶𝐶164 (0045)= FFBB Por lo tanto, se concluye que n2 = FFBB. 69 16 5 4 Dado el valor n1, representado en base decimal, determine el valor n2 equivalente representado en base hexadecimal con 5 dígitos y con posibilidad de signo (usando el complemento a la base). n1= 37, n2=? Solución: n2 = 0025 Procedimiento: Debido a que n1 es positivo, para resolver este ejercicio simplemente debemos convertir n1 a hexadecimal aplicando el método de divisiones sucesivas. Capítulo 2. Representación de la información | 49 Para obtener una representación con 5 dígitos hexadecimales rellenamos con ceros las posiciones más a la izquierda. Por lo tanto, concluimos que n2 = 00025. 37 16 5 2 Dado el valor n1, representado en formato hexadecimal con 6 dígitos y con posibilidad de signo (usando el complemento a la base), determine el valor n2 equivalente en base decimal. n1= FFFFF0, n2=? Solución: n2 = -16 Procedimiento: Un número expresado en base hexadecimal es negativo cuando comienza por el dígito 8, 9, A, B, C, D, E o F. En nuestro caso, n1 comienza con el dígito F, por lo que es un número negativo. FFFFF0 El número es negativo En esta situación, para resolver el ejercicio debemos seguir dos pasos. En primer lugar, se debe calcular el complemento a la base (𝐶𝐶166 ) en hexadecimal, de manera que obtenemos el valor absoluto de n1, es decir, su valor equivalente positivo (Paso 1). A continuación, se debe convertir a decimal el valor obtenido en el paso anterior. El valor decimal que obtenemos será el valor absoluto del resultado que buscamos (n2). • Paso 1 En primer lugar calculamos el complemento a la base menos uno (𝐶𝐶156 ) de n1: FFFFFF - FFFFF0 𝐶𝐶156 (FFFFF0) = 00000F 50 | Informática. Libro de problemas A partir de 𝐶𝐶156 calculamos fácilmente el complemento a la base (𝐶𝐶166 ): 𝐶𝐶156 (FFFFF0) = 00000F + 1 𝐶𝐶166 (FFFFF0)= 000010 • Paso 2 Convertimos de hexadecimal a decimal el valor 𝐶𝐶166 aplicando el método de expansión: (000010)161·161 = (16)10, 16 es el valor absoluto El valor decimal que hemos obtenido en el paso 2 (16) es el valor absoluto del resultado final. Por lo tanto, se concluye que n2=-16. Dado el valor n1, representado en formato hexadecimal con 4 dígitos y con posibilidad de signo (usando el complemento a la base), determine el valor n2 equivalente en base decimal. n1= AFF5, n2=? Solución: n2 = -20491 Procedimiento: Un número expresado en base hexadecimal es negativo cuando comienza por el dígito 8, 9, A, B, C, D, E o F. En nuestro caso, n1 comienza con el dígito A, por lo que es un número negativo. AFF5 El número es negativo Por lo tanto, para resolver este ejercicio se deben seguir los mismos pasos explicados en el anterior (Ejercicio 2.75). • Paso 1 Calculamos el complemento a la base menos uno (𝐶𝐶154 ) de n1: FFFF - AFF5 𝐶𝐶154 (AFF5) = 500A Capítulo 2. Representación de la información | 51 A partir de 𝐶𝐶154 calculamos el complemento a la base (𝐶𝐶164 ) 𝐶𝐶154 (AFF5) = 500A + 1 𝐶𝐶164 (AFF5) = 500B • Paso 2 Convertimos de hexadecimal a decimal el valor 𝐶𝐶164 aplicando el método de expansión: (500B)165·163+0·162+1·161+11·160 = (20491)10, 20491 es el valor absoluto El valor decimal que se ha obtenido en el paso 2 (20491) es el valor absoluto del resultado final. Por lo tanto, concluimos que n2=-20491. Dado el valor n1, representado en base decimal, determine el valor n2 equivalente representado en base hexadecimal con 5 dígitos y con posibilidad de signo (usando el complemento a la base). n1= -1, n2=? Solución: n2 = FFFFF Dado el valor n1, representado en base decimal, determine el valor n2 equivalente representado en base hexadecimal con 4 dígitos y con posibilidad de signo (usando el complemento a la base). n1= -33, n2=? Solución: n2 = FFDF Dado el valor n1, representado en base decimal, determine el valor n2 equivalente representado en base hexadecimal con 4 dígitos y con posibilidad de signo (usando el complemento a la base). n1= -563, n2=? Solución: n2 = FDCD 52 | Informática. Libro de problemas Dado el valor n1, representado en formato hexadecimal con 4 dígitos y con posibilidad de signo (usando el complemento a la base), determine el valor n2 equivalente en base decimal. n1= 8000, n2=? Solución: n2 = -32768 Dado el valor n1, representado en formato hexadecimal con 5 dígitos y con posibilidad de signo (usando el complemento a la base), determine el valor n2 equivalente en base decimal. n1= 00029, n2=? Solución: n2 = 41 Dado el valor n1, representado en formato hexadecimal con 6 dígitos y con posibilidad de signo (usando el complemento a la base), determine el valor n2 equivalente en base decimal. n1= FFFFE5, n2=? Solución:n2 = -27 3 PROGRAMACIÓN ESTRUCTURADA Y ALGORITMIA Capítulo 3. Programación estructurada y algoritmia | 55 3.1. Suma de pares Diseñe el flujograma de un programa que muestre la suma de los números pares menores o iguales que 100. Posible solución: BEGIN suma ← 0 numero ← 2 numero ≤ 100 suma ← suma + numero numero ← numero + 2 END SI NO Mostrar suma 56 | Informática. Libro de problemas 3.2. Tabla de multiplicar Diseñe el flujograma de un programa que recoja por pantalla un número entero positivo comprendido en el intervalo [0,9] y que muestre la tabla de multiplicar del mismo. En caso de que el valor introducido por el usuario no sea válido, deberá informar del error y permitirle introducir un nuevo valor. Posible solución: Leer n i ← 0 n ≥ 0 AND n≤9 END BEGIN Mostrar “ERROR VALOR” i ≤ 10 i ← i + 1 Mostrar n x i NO SI SI NO Capítulo 3. Programación estructurada y algoritmia | 57 3.3. Calcular hora Diseñe el flujograma de un programa que calcula la siguiente hora. Por ejemplo, si el usuario introduce las 14 horas, 32 minutos y 50 segundos el programa devolverá las 14:32:51. El programa debe contemplar aquellos casos en los que los horas, minutos o segundos alcancen sus valores límite. Por ejemplo, si el usuario introduce las 19 horas, 59 minutos y 59 segundos, entonces deberá devolver las 20:00:00 horas. Posible solución: BEGIN s ← s + 1 s < 59 END Leer h Leer m Leer s SI NO m ← m + 1 m < 59 SI NO s ← 0 h ← 0 h = 23 SI NO m ← 0 h ← h + 1 Mostrar h:m:s 58 | Informática. Libro de problemas 3.4. Corredor elegido Escriba el flujograma de un programa que determine si un atleta es seleccionado para correr una maratón. Para seleccionar a un corredor, debe haber terminado una maratón anterior en un tiempo máximo. Los tiempos de calificación son 150 minutos para hombres menores de 40 años, 175 minutos para hombres igual o mayor de 40 años, y 180 minutos para mujeres. Los datos a introducir al programa son los siguientes: sexo (H/M), edad y tiempo efectuado en su anterior maratón. El programa mostrará el mensaje "Seleccionado" o "No seleccionado", según los criterios anteriormente indicados. Posible solución: sexo = V END Mostrar “SELECCIONADO” BEGIN Leer sexo Leer edad Leer tiempo seleccionado ← 0 edad < 40 AND tiempo ≤ 150 seleccionado ← 1 SI SI NO edad ≥ 40 AND tiempo ≤ 175 seleccionado ← 1 SI NO tiempo ≤ 180 seleccionado ← 1 SI NO NO seleccionado = 1 Mostrar “NO SELECCIONADO” Capítulo 3. Programación estructurada y algoritmia | 59 3.5. Calcular cuadros y cubos Diseñe el flujograma de un programa que calcule los cuadrados y los cubos de los números comprendidos entre dos valores M y N introducidos por teclado. Si N no es mayor que M, el programa finalizará su ejecución mostrando un mensaje de error. Posible solución: BEGIN END Mostrar M x M Leer M Leer N M < N Mostrar “ERROR VALORES NO VÁLIDO” NO M ≤ N NO SI Mostrar M x M x M M ← M + 1 SI 60 | Informática. Libro de problemas 3.6. Número primo Diseñe el flujograma de un programa que reciba un número entero positivo mayor a 0 y que determine si se trata de un número primo. Recuerde que un número es primo si tiene exactamente dos divisores: el 1 y él mismo. Posible solución 1: BEGIN d ← 1 END Leer n n ≤ 0Mostrar “ERROR VALOR” SI NO c ← 0 d ≤ n SI NO N mod d = 0 c ← c + 1 d ← d + 1 SI NO c = 2 Mostrar “ES PRIMO” Mostrar “NO ES PRIMO” SI NO Capítulo 3. Programación estructurada y algoritmia | 61 Posible solución 2: BEGIN d ← 1 END Leer n n ≤ 0Mostrar “ERROR VALOR” SI NO c ← 0 SI NO n mod d = 0 c ← c + 1 d ← d + 1 SI NO c = 1 Mostrar “ES PRIMO” Mostrar “NO ES PRIMO” SI NO 1≤ ≤ c AND nd 62 | Informática. Libro de problemas 3.7. Análisis de secuencia numérica Realice el flujograma de un programa que realice la siguiente tarea. Inicialmente debe solicitar al usuario el número de valores numéricos que desea introducir por teclado. Seguidamente debe verificar que el valor recibido es mayor a 0. Si esto se cumple, el programa recogerá todos valores enteros (positivos y negativos) del usuario. Por último, el programa devolverá los siguientes datos: número más grande, número más pequeño, la media de los valores introducidos. Posible solución: END BEGIN Leer n n ≤ 0Mostrar “ERROR VALOR” SI NO Leer v min ← v max ← v suma ← v c ← 1 c < n Leer v min > v min ← v SI NO max < v max ← v SI NO suma ← suma + v c ← c + 1 SI NO Mostrar max Mostrar min Mostrar suma/n Capítulo 3. Programación estructurada y algoritmia | 63 3.8. Suma de números Escriba el flujograma de un programa que encuentre el primer valor N para el que la suma 1 + 2 + 3 + 4 + ....+ N exceda un valor M que se introduce por teclado. El programa debe asegurarse que M es un valor entero positivo mayor a 0. Posible solución: suma ← 1 suma > M END Mostrar N BEGIN Leer M M ≤ 0Mostrar “ERROR VALOR” SI NO N ← 1 SI N ← N + 1 suma ← suma + N NO 64 | Informática. Libro de problemas 3.9. Potencia Desarrolle el flujograma de un programa en C que reciba un número entero positivo N y que calcule el valor NN. Si el número N introducido por el usuario fuera menor o igual a 0, el programa terminará mostrando un mensaje de error. Posible solución: BEGIN pot ← N N ≤ 0 END Leer N Mostrar “ERROR VALOR” SI c ← 1 c < N NO NO Mostrar pot pot ← pot x N c ← c + 1 SI Capítulo 3. Programación estructurada y algoritmia | 65 3.10. Sucesión de ULAM Desarrolle el flujograma de un programa en C que reciba un entero positivo N y que devuelva la sucesión de ULAM. Se debe comprobar que el valor N es mayor o igual a 1. El cálculo de la sucesión de ULAM consiste en los siguientes pasos: 1. Se inicia con cualquier entero positivo N. 2. Si el número es par, se divide entre 2. Si es impar, se multiplica por 3 y se suma 1 al resultado. 3. Se deben obtener sucesivamente números enteros repitiendo el proceso descrito en el paso anterior. 4. El proceso finaliza cuando se obtenga el número 1. Por ejemplo, si el entero inicial es 45, la secuencia es la siguiente: 45, 136, 68, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1. Posible solución: N = 1 END BEGIN Leer N N ≤ 0Mostrar “ERROR VALOR” SI NO SI NO N mod 2 = 0 N ← N / 2 N ← N x 3 N ← N + 1 SI NO Mostrar N 4 TIPOS DE DATOS PRIMITIVOS Capítulo 4. Tipos de datos primitivos | 69 4.1. Operadores de asignación, aritméticos y asignación compuesta Observe el código que se muestra a continuación. ¿Qué valor adopta la variable y tras ejecutar la operación resaltada en negrita? int x=3, y=5; x = y; y = x; Solución: y = 5 Comentarios: Debido a que el valor almacenado en la variable y (5) se ha guardado en la variable x, la operación destacada en negrita vuelve a almacenar dicho valor en la variable y. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras ejecutar la operación resaltada en negrita? int x=7, y=2, z; z = x / y; Solución: z = 3 Comentarios: La división entera produce un cociente entero. Cualquier parte fraccionaria se desecha, no hay redondeo. Por lo tanto, la operación 7 / 2 produce como resultado 3, siendo este el valor que se almacena en la variable z. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras ejecutar la operación resaltada en negrita? int x=7, y=2; float z; z = x / y; Solución: z = 3.0 Comentarios: La división entera produce un cociente entero. Cualquier parte fraccionaria se desecha, no hay redondeo. Por lo tanto, la operación7 / 2 produce como resultado 3, el cual se convierte posteriormente a un valor punto flotanto (3.0) para ser almacenado en la variable z. 70 | Informática. Libro de problemas Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras ejecutar la operación resaltada en negrita? int x=7, y=2; int z; z = x / y; Solución: z = 3 Comentarios: La división entre variables float produce un resultado 3.5 pero al guardarlo en una variable entera se pierde la parte fraccionaria. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras ejecutar la operación resaltada en negrita? int y=2; float z; z = 7 / y; Solución: z = 3.0 Comentarios: Un literal sin decimal (como el número 7) se codifica como un entero. La división entera produce un cociente entero. Cualquier parte fraccionaria se desecha, no hay redondeo. Por lo tanto, la operación 7 / 2 produce 3, siendo este el valor que se almacena en la variable z. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras ejecutar la operación resaltada en negrita? int y=2; float z; z = 7.0 / y; Solución: z = 3.5 Comentarios: Un literal con decimal (como el número 7. o 7.0) se codifica como un punto flotante y, por lo tanto, la división produce un resultado con decimal 3.5. Capítulo 4. Tipos de datos primitivos | 71 Observe el código que se muestra a continuación. ¿Qué valor adopta la variable c tras ejecutar la operación resaltada en negrita? int a=11, b=3; short c; c = a % b; Solución: c = 2 Comentarios: El operador % devuelve el resto que produce la división entera entre el contenido de la variable a el contenido de la varible b. Recuerde que el operador de módulo solamente se puede aplicar a enteros (es decir, las variables a y b no pueden ser números reales). Observe el código que se muestra a continuación. ¿Qué valor adopta la variable c tras ejecutar la operación resaltada en negrita? int a=11, b=3; float c; c = a % b; Solución: c = 2.0 Comentarios: El operador % devuelve el resto que produce la división entera entre el contenido de la variable a el contenido de la varible b. El resultado del operador módulo (2) se almacena en la variable c que, al ser de tipo float, debe convertirse en un valor punto flotante. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable x tras ejecutar la operación resaltada en negrita? int x=3, y=5; x = y++ + 2; Solución: x = 7 Comentarios: La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: x = y + 2; y = y + 1; 72 | Informática. Libro de problemas Es decir, primero se ejecuta la operación x = y + 2 donde se suma el valor almacenado en la variable y (5) y literal entero 2. El resultado de esta operación se almacena en la variable x. A continuación, se ejecuta la operación y = y + 1 que almacena en la variable y el valor de la misma pero incrementado en una unidad. En definitiva, la variable x almacena el valor 7, mientra que la variable y el valor 6. Observe que el valor almacenado inicialmente en la variable x se pierde. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable "x" tras ejecutar la operación resaltada en negrita? int x, y=5; x = 3 * y++; Solución: x = 15 Comentarios: La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: x = 3 * y; y = y + 1; Es decir, primero se multiplica el valor inicial de la variable y (5) con 3 y el resultado se almacena en x. A continuación, el contenido almacenado en la variable y se incrementa en una unidad, almacenándose el nuevo valor en dicha variable. En definitiva, la variable x toma el valor de 15 mientras que y toma el valor de 6. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable x tras ejecutar la operación resaltada en negrita? int x=1, y=5; x = ++y + 2; Solución: x = 8 Comentarios: La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: y = y + 1; x = y + 2; La primera operación incrementa en una unidad el valor almacenado en la variable y. Seguidamente, la segunda operación suma el número 2 y el nuevo valor almacenado en la variable y, de manera que el resultado se almacena en la variable x. Capítulo 4. Tipos de datos primitivos | 73 En definitiva, tras ejecutar la operación indicada en este ejercicio, la variable y contiene el valor 6 mientras que la variable x el valor 8. Observe que el valor inicial de la variable x (1) se pierde. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable x tras ejecutar la operación resaltada en negrita? int x, y=5; x = 3 * ++y; Solución: x = 18 Comentarios: La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: y = y + 1; x = 3 * y; Es decir, primero se incrementa en una unidad el valor almacenado en y. La segunda operación, multiple el literal entero 3 por el nuevo valor de la variable y, almacenándose el resultado en la variable x. En definitiva, tras ejecutar la operación indica en este ejercicio, la variable y toma el valor 6 y la variable x el valor 18. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras ejecutar la operación resaltada en negrita? int x=5, y=8, z; z = ++x + y++; Solución: z = 14 Comentarios: La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: x = x + 1; z = x + y; y = y + 1; Tras ejecutar estas operaciones, la variable x adopta el valor 6, la variable y el valor 9 y la variable z el valor 14. 74 | Informática. Libro de problemas Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras ejecutar la operación resaltada en negrita? int x=5, y=8, z; x = ++x + ++y; Solución: z = 15 Comentarios: La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: x = x + 1; y = y + 1; z = x + y; Tras ejecutar estas operaciones, la variable x adopta el valor 6, la variable y el valor 9 y la variable z el valor 15. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable d tras ejecutar la operación resaltada en negrita? int a=5, b=2; short c=10, d; d = a + b + c--; Solución: d = 17 Comentarios: La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: d = a + b + c; c = c - 1; Tras ejecutar estas operaciones, la variable d adopta el valor 17 y la variable c el valor 9. El valor almacenado en las variables a y b no cambia. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable d tras ejecutar la operación resaltada en negrita? int a=5, b=2; float c=10, d; d = a + b + --c; Solución: d = 16.0 Capítulo 4. Tipos de datos primitivos | 75 Comentarios: La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: c = c - 1; d = a + b + c; Tras ejecutar estas operaciones, la variable d adopta el valor 17 y la variable c el valor 9. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable a tras ejecutar la operación resaltada en negrita? int a = 5; a *= 2; Solución: a = 10 Comentarios: La operación resaltada en negrita es equivalente a ejecutar la siguiente operación: a = a * 2; Tras ejecutar esta operación, la variable a adopta el valor 10. Observe el código que se muestra a continuación. ¿Qué valor adopta la variable a tras ejecutar la operación resaltada en negrita? int a = 5, b = 3; a *= b; Solución: a = 15 Comentarios: La operación resaltada en negrita es equivalente a ejecutar la siguiente operación: a = a * b; Tras ejecutar
Compartir