taller algoritmos parcial

11
Semestre 2013-1 1 UNIVERSIDAD DE ANTIOQUIA ALGORITMOS Y PROGRAMACIÒN TALLER PARCIAL PRIMERA PARTE 1. Dadas las siguientes secuencias de 16 bits 1110 1011 0100 1000 1001 0110 1101 0000 0111 1101 1111 1011 0101 1010 1110 1111 Para cada número binario hallar: a. La representación hexadecimal b. El valor decimal considerado cómo número binario entero representado en complemento al 2. c. El valor decimal considerado cómo número binario entero representado en signo magnitud. 2. Cuáles son los elementos principales de un sistema de computación 3. Enumero 5 tipos de software común en un computador e ilustre con ejemplos aplicables a los computadores de una de las salas del DRAI. 4. La memoria de un computador se clasifica en ___________, ________ y _________, la memoria principal, generalmente toma valores entre ____________ y ___________ 5. El procesador de un computador está formado por: _______________________________ 6. La operación que hace que los datos sean cargado a la memoria del computador es: ___________________________________________________________ 7. El número decimal -1374,27 en binario es: ______________________ y su representación en la memoria del computador según la IEEE 754 en simple precisión y en doble precisión, es: ___________________________________________________________________ __ 8. El resultado de la operación -0x2B + 00001111+ 0254 es: 2013-2 Página 1

Upload: memamon

Post on 21-Dec-2015

17 views

Category:

Documents


1 download

DESCRIPTION

Taller de algoritmos y programación

TRANSCRIPT

Page 1: TALLER ALGORITMOS Parcial

Semestre 2013-11

UNIVERSIDAD DE ANTIOQUIAALGORITMOS Y PROGRAMACIÒN

TALLER PARCIAL

PRIMERA PARTE

1. Dadas las siguientes secuencias de 16 bits1110 1011 0100 10001001 0110 1101 00000111 1101 1111 10110101 1010 1110 1111

Para cada número binario hallar:a. La representación hexadecimalb. El valor decimal considerado cómo número binario entero representado en

complemento al 2.c. El valor decimal considerado cómo número binario entero representado en signo

magnitud.

2. Cuáles son los elementos principales de un sistema de computación

3. Enumero 5 tipos de software común en un computador e ilustre con ejemplos aplicables a los computadores de una de las salas del DRAI.

4. La memoria de un computador se clasifica en ___________, ________ y _________, la memoria principal, generalmente toma valores entre ____________ y ___________

5. El procesador de un computador está formado por: _______________________________

6. La operación que hace que los datos sean cargado a la memoria del computador es: ___________________________________________________________

7. El número decimal -1374,27 en binario es: ______________________ y su representación en la memoria del computador según la IEEE 754 en simple precisión y en doble precisión, es: _____________________________________________________________________

8. El resultado de la operación -0x2B + 00001111+ 0254 es:

9. Para digitalizar un video se requiere de los siguientes pasos _______________, _____________________ , ________________ y tomar mínimo ___________ muestras.

10. Tres formatos para codificar video son: ___________,__________,___________

11. Los tipos de datos elementales son : ________________________________________

12. Los tipos de datos compuestos son : _________________________________________

13. En la memoria del computador un numero se encuentra almacenado como FEAC7, si la palabra de memoria es de 16 bits y suponiendo que corresponde a un dato de tipo entero, almacenado con complemento al dos su valor decimal es: _______________________

2013-2 Página 1

Page 2: TALLER ALGORITMOS Parcial

Semestre 2013-12

14. Los pasos necesarios para desarrollar un problema hasta que produzca resultados utilizando un sistema de computación son: ________________

SEGUNDA PARTE

1. Pruebe los siguientes segmentos de programas en Python y responda las preguntas planteadas.

for n in range(60): print n, 2**n

Que se imprime?Que cambia si el rango es 10,60. Porque?

En el lenguaje Python lo falso se representa por el valor 0 y lo verdadero por el valor 1. Por ejemplo, al escribir una desigualdad, si la comparación es cierta Python le asigna el valor 1 (verdadero) y si es falsa Python le asigna el valor 0. Justifique el resultado de las siguientes expresiones lógicas

not(3>2)False>>> (3>2) and (4>5) 0

(3>2) or (4>5)True((3>2) or (4>5)) and (2<1)False(3>2) ^ (5>4)False

Que hacen los siguientes segmentos de programa

n = 1p = 0i = 0while n <= 100: print n, if n%2 == 0: x = 10 while x >= 0: print "x todavía no es negativo." x = x-1

p += n n=n+1print "el valor de p es :", p

Cambie las xxx por un mensaje que explique el resultado del programa

n = 1p = 0i = 0while n <= 100: print n, if n%2 == 0: p += n n+=1

print " \n xxxxxxxxxxxxxx", p

Ponga a funcionar el siguiente programa, diga que hace y quite unas líneas que se están imprimiendo repetidas

for n in range(2, 10): for x in range(2, n): if n % x == 0: print n, 'es igual a', x, '*', n/x break else:

2013-2 Página 2

Page 3: TALLER ALGORITMOS Parcial

Semestre 2013-13

print n, 'es primo'Ponga a funcionar el siguiente programa y haga que calcule el máximo común divisor.# hallar el máximo común divisor entre dosnúmeros""" El máximo común divisor es el número mayorque sea al mismo tiempo divisor de un grupo dedos o más números. Para hallar dicho mcd, serequiere:*descomponer dichos números en sus factoresprimos de los cuales se toman los factorescomunes con menor exponente.*El máximo común divisor (m.c.d.) de dos o másnúmeros es el mayor de los divisores comunes.Por ejemplo para m.c.d. (12, 18) = 2 x 3 = 612 26 23 3118 29 33 3112 = 2^2 x 318 = 2 x 3^2

a = int(raw_input("Introduce un número entero: ---> "))b = int(raw_input("Introduce otro numero ---------> "))while a != 0: a, b = b%a, a #doble asignación el resultado es: a=b%a y b=aprint "El mcd es ------------->", b

Para los siguientes ejercicios escriba el algoritmo en diagrama de flujo y codifíquelo en Python.

2. Las campanas del Reloj.Resolver el problema de las Campanas del Reloj: Leer 2 valores que indican hora de inicio y hora de fin (Ej.: 9:30 y 12:18), e imprimir la cantidad de veces que un reloj de iglesia da sus campanadas. Generalmente los relojes de las iglesias suenan las campanas en los minutos: 0, 15, 30 y 45. Los valores para las horas están en el rango 0..23 y para los minutos en 0..59. El programa debe verificar que la hora de inicio sea menor que la hora de final y ambas pertenezcan al mismo día.

Por ejemplo:Si hora de comienzo es 9:44 y hora de fin es 10:01: hay que informar 2 campanadas.Si hora de comienzo es 9:50 y hora de fin es 10:07: hay que informar 1 campanada.Si hora de comienzo es 8:00 y hora de fin es 10:07: hay que informar 8 campanadas.Si hora de comienzo es 8:00 y hora de fin es 5:07: hay que informar un error

3. Se perdió Pedro!!!

2013-2 Página 3

Page 4: TALLER ALGORITMOS Parcial

Semestre 2013-14

Pedro vive en una calle en la cual los números de las casas son 1, 2, 3, etc. La suma de los números de las casas menores que el número de la casa de Pedro, es igual a la suma de los números de las casas mayores. El número de su casa posee tres cifras. Pedro olvidó su dirección y debe hacer un cálculo para saber cuál es su dirección y al mismo tiempo determinar el número de casas que hay en la calle. Ud. debe decirle a Pedro cuál es el número de su casa.

4. Determinar el área de la superficie lateral y el volumen de un cilindro conocido su radio y su altura.

5. Calcular el área de un triángulo en función de las longitudes de sus lados, verificando si esas longitudes forman un triángulo.

6. Escribir un algoritmo en diagrama de flujo que realice mínimo 10 conversiónes de longitud usadas en la antigüedad.

7. Escribir un algoritmo en pseudocodigo y codificarlo en Python, que dado el año de nacimiento y el mes de una persona diga cuantos meses tenía en diciembre del 2013

8. El siguiente programa dibuja un triángulo con un carácter dado: x = int(raw_input("Introduce un número entero: "))y = str(raw_input("Introduce caracter: "))if x <= 0: print 'No se puede dibujar triangulo'else: i=1 while i <=x: print '\n' while j<=i: print y, j=j+1i=i+1print '\n fin'

Modifíquelo para que dibuje tres triángulos en posiciones diferentes a la del ejemplo. Modifíquelo para que dibuje un triángulo pero no recto. Modifíquelo para dibujar un polígono

9. Cuando en un número la diferencia entre cada par de dígitos consecutivos es uno, se le llama número "step", por ejemplo 123234, el 9876787654. ¿Cuántos números "step" menores a un millón existen? El siguiente programa es una solución al problema, ejecútelo y explique cada una de las instrucciones.

def isStep(num): digitos = [int(x) for x in str(num)] ant = digitos[0] for num in digitos[1:]: if num != ant+1 and num != ant-1: return False ant = num return True

“””Programa principal “””

2013-2 Página 4

Page 5: TALLER ALGORITMOS Parcial

Semestre 2013-15

cant = 0for n in xrange(1000000): if isStep(n): cant += 1 print nprint "Total numeros step”

1. Escriba un algoritmo que calcule la siguiente serie:

El algoritmo debe recibir como entradas un número real x y un entero m0, se deben utilizar mínimo dos funciones, de las hechas en clase, una de ellas para hallar el exponente que se debe hacer con multiplicaciones sucesivas.

10. La capacidad de un depósito es de V litros. Mediante una válvula se introducen LE litros por segundo en el depósito. Mediante un desagüe, se extraen LS litros por to tiene inicialmente L0 litros, diseñar un programa que muestre, segundo a segundo, durante un minuto, el volumen de agua almacenada. Al final debe indicar si se rebasará la capacidad de almacenamiento del depósito, si permanecerá siempre con la misma cantidad de agua o si se vaciará.

11. Se dispone de un vector de tipo entero, parcialmente ocupado por números clasificados en orden ascendente. Se desea conocer si un número introducido por teclado se encuentra en el vector, en caso afirmativo se mostrará su posición, y en caso negativo se insertará en la posición que le corresponda. Si se intenta insertar y el vector está lleno, se mostrará un mensaje de error.

12. Escriba un algoritmo que efectúe la normalización de una colección de números reales. Para llevar a cabo esta normalización, se debe en primer lugar encontrar el número mayor de la colección; luego se divide cada número por dicho valor máximo, de forma que los valores resultantes (normalizados) estén comprendidos en el intervalo del 0 al 1.

13. La numerología es una “ciencia” metafísica muy popular. Tiene como punto de partida el “número personal” que se halla con base en los números correspondientes al nacimiento y mediante el siguiente algoritmo:

Leer la fecha de nacimiento (MM DD AAAA) Suma=Sumar_dígitos_Fecha(MM,DD,AAAA) MientrasQue( Suma> 9) Suma=SumarDigitos(Suma) FinMQImprima “su número personal es “, Suma

Las funciones Sumar_digitos hacen eso, sumar cada uno de los dígitos del número que se pasa como parámetro. Haga un programa que calcule su “numero personal”

14. Los números triangulares son números que se pueden representar mediante un triángulo equilátero. En este problema el usuario digita un número y se imprimen los números

2013-2 Página 5

Page 6: TALLER ALGORITMOS Parcial

Semestre 2013-16

triangulares menores o iguales al número digitado representándolos como una colección de puntos, como se muestra en la figura

1           3          6                 10Pueden ser volteados también.

15. Imprimir un triángulo con los caracteres de una cadena ingresada por el usuario, por ejemplo si el usuario ingreso Hola*Mundo quedara:

HHoHolHolaHola*Hola*MHola*MuHola*MunHola*MundHola MundoHola*MundHola*MunHola*MuHola*MHola*HolaHolHoH

Imprimir un triángulo con los caracteres de una cadena así para la cadena HOLA MUNDO quedará:

HHOL

HOLA M HOLA MUN HOLA MUNDO

16. Escribir un programa en python que dibuje el triángulo de Pascal.

17. Dado una fecha de nacimiento calcular la edad en años con mese y con días

18. Diseñe un programa donde dados dos polinomios p y q, de cualquier grado los sume.

2013-2 Página 6

Page 7: TALLER ALGORITMOS Parcial

Semestre 2013-17

19. Ingresar N puntos (Xi,Yi) del plano, y determine cuántos de los puntos están en el 1er, 2do, 3er y 4to. cuadrante, y cuántos en algún de los ejes. Las coordenadas se deben almacenar en un vector X y en un vector Y respectivamente.

20. Escriba un programa que calcule el volumen molar V de un gas, utilizando la ecuación de estado de Van der Wals para un gas no ideal.

21. Ley de Ohm: La ley de Ohm establece relación proporcional entre la intensidad de corriente (I) que circula por un circuito, la diferencia de potencial (V) y la resistencia del mismo (R). Su fórmula es I= V/R. Escribir un programa con interfaz gráfica que permita calcular I, V o R. el programa solicitara los datos requeridos y hará el cálculo de la magnitud requerida.

22. Criba de Eratóstenes: Eratóstenes un filósofo planteó el siguiente método para el cálculo de los números primos:

a. Pone en una lista todos los números que quiere analizarb. Tacha todos los múltiplos de cada primo: Empiece con dos y elimine los

múltiplos, pues dos es primo, sigue con tres y así hasta que terminec. Al final solo quedan los primos

Escriba un programa para calcular los primos existentes entre 1 y 1000. Utilice un vector y ponga 0 donde hay un múltiplo. Imprima luego los números primos.

23. Raíz cuadrada: El cálculo de la raíz cuadrada de x puede realizarse de forma aproximada mediante un método iterativo. Investigue el método y escriba un programa que calcule al raíz cuadrada de un valor dado pro teclado. Calcule también la raíz mediante la función sqrt y compare los dos resultados.

24. El método Trachtenberg es un sistema de cálculo mental, desarrollado por el ingeniero ruso Jakow Trachtenberg con el fin de mantener su mente ocupada cuando era prisionero en un campo de concentración nazi. El sistema consiste de un número de patrones memorizables con gran facilidad que permiten realizar computaciones aritméticas sin ayuda de calculadora, lápiz y papel. El método tiene reglas para cálculos con diferentes números, por ejemplo:Regla para multiplicar por 12:Duplicar el dígito antes de sumarlo al dígito a su derechaY luego volver a copiar el primer dígito:

Ejemplo: 314 × 12 = 3.768:4 × 2 =81 × 2 + 4 =63 × 2 + 1 = 7Volver a copiar 3

Regla: para multiplicar por 5:1. Si el número es impar tomar cinco (5) y

sumar la "mitad" del vecino derecho2. Si el número es par tomar cero (0) y

sumar la "mitad" del vecino. La "mitad" del vecino significa, la mitad sin decimales, ejemplo la "mitad" de 5 es 2

Ejemplo:1.683 × 5 = 8.4153 es impar y su vecino es cero poner 58 es par, toma 0 y la "mitad" de su vecino 3 es 1, sumando el resultado es: 16 es par, toma 0 y la "mitad" de su vecino 8 es 4, sumamos y el resultado es 41 es impar, toma 5 y la "mitad" de su vecino 6 es 3, sumamos y el resultado es 8.

Regla: para multiplicar por 11.Vuelva a copiar el último dígito.

Regla: para multiplicar por 6:1. Agregar la mitad del vecino a cada

2013-2 Página 7

Page 8: TALLER ALGORITMOS Parcial

Semestre 2013-18

Luego, dos por dos, añada los dígitos uno al otro. Vuelva a copiar el primer dígito.

Ejemplo: 3.422 × 11 = 37.642Volver a copiar 22 + 2 =44 + 2 =63 + 4 =7Volver a copiar 3

dígito.2. Si el dígito es impar, reducirlo al

número entero más bajo.3. Si el resultado es impar, agregar 5.

Ejemplo:657.832 × 6 = 3.946.992

Volver a copiar 23 + (2 / 2) + 5 =9; 3 es impar se suma 58 + (3 / 2) = 9; 3 es impar se reduce a 27 + (8 / 2) + 5 = 16; 7 es impar se suma 5, y se lleva 15 + (7 / 2) + 1 + 5 = 14; 5 es impar se suma 5, y 1 que se llevaba. 7 es impar se reduce a 66 + (5 / 2) + 1 = 9; se suma 1 que se llevaba. 5 es impar se reduce a 46 × 6 = 36

Escriba un programa que multiplique dos números usando estas reglas.

2013-2 Página 8