Download Ejercicios
Document related concepts
no text concepts found
Transcript
Ejercicios ET1032 Informática Industrial Ejercicios de programación en C 1. - Realizad una implementación de la función char *strstr(char *cad, char *trozo). La función devuelve un puntero al inicio de la subcadena trozo dentro de la cadena cad, en caso de que ésta contenga a aquélla. En otro caso devuelve NULL. Si trozo es la cadena vacía, entonces se devuelve cad. 2. - Realizad una función unsigned int strtoi(char *cad, int base). La función devuelve el entero resultante de considerar que la cadena cad representa un número en base base. Dicha base puede ser cualquiera entre 2 y 36, utilizándose la letras, indistintamente mayúsculas o minúsculas, para representar símbolos de valor superior a 9. En caso de error la función devolverá 0. 3. - Realizad una función int itostr(char *cad, int num, int base). La función deja a partir del puntero cad, que debe apuntar a una zona de memoria libre suficiente, el resultado de representar el entero num en la base base. Dicha base puede ser cualquiera entre 2 y 36, utilizándose la letras mayúsculas para representar símbolos de valor superior a 9. Si el número a convertir es negativo, la cadena comenzará con el símbolo -. La función devuelve el número de caracteres escritos en la cadena o 0 en caso de error (en este caso la cadena será vacía). 4. - Realizad una función int flancos(int num) que devuelva el número de transiciones entre 0 y 1 o viceversa entre bits consecutivos de la representación binaria de num. Realizad también las funciones relacionadas int flancosSubida(int num) e int flancosBajada(int num) que cuenten respectivamente las transiciones entre 0 y 1 y entre 1 y 0, comenzando por el bit menos significativo. Todas las funciones han de ser correctas para cualquier tamaño de entero. 5. - Cread dos estructuras de datos, punto y recta, que representen respectivamente puntos y rectas en el plano. Implementad después las siguientes funciones: • double distancia(punto a, punto b), que calcula la distancia entre dos puntos; • double distanciaR(punto p, recta r), que calcula la distancia entre un punto y una recta; • recta paralela(punto p, recta r), que devuelve la recta paralela a r que pasa por p; • recta perpendicular(punto p, recta r), que devuelve la recta perpendicular a r que pasa por p; • punto corte(recta r, recta s), que devuelve el punto de intersección entre r y s. Ejercicios de electrónica y microcontroladores Se tiene un sistema en el que interactúan dos microcontroladores. Uno de ellos se alimenta a 5V y las características eléctricas de todos sus pines de entrada/salida son las que aparecen en la tabla siguiente: VIHmin VILmax 3,8V VOHmin 1,2V VOLmax 4,2V IImax 0,8V IOmax 12 µA 23 mA El otro se alimenta a 3,3V, siendo las características eléctricas de todos sus pines de entrada/salida: VIHmin VILmax 2,4V VOHmin 1,0V VOLmax 2,8V IImax 0,6V IOmax 7 µA 18 mA Para las interconexiones del circuito se dispone de resistencias de ¼ W de cualquier valor, diodos de silicio estándar (Vd = 0,7V), diodos leds (Vd = 1,2V) y transistores de dos tipos. Los primeros, T1, tienen ICmax = 100 mA y una ganancia superior a 300; los segundos, T2, tienen ICmax de 2 A y una ganancia superior a 50. De ambos tipos, cuya VCEsat es de 0,2V y VBE es de 0,6V, se tienen versiones PNP y NPN con las características especificadas. Realizad los siguientes diseños y cálculos, sabiendo que se dispone de las dos tensiones de alimentación, 3,3V y 5V, sin límite de potencia. 1. - Indicad qué resistencia sería necesaria, en cada caso, para encender un led con cada uno de los microcontroladores. Se desea que se encienda a nivel alto y que la corriente máxima que circula por el diodo sea de 12 mA. Calculad las resistencias para satisfacer estos requisitos e indicad la corriente mínima. 2. - Para que una salida del microcontrolador de 5V se conecte a una entrada del de 3,3V se utiliza un montaje como el de la figura, en que R1 vale 3K y R2 2K2. Verificad si el montaje propuesto respeta las tensiones de entrada especificadas; indicad las corrientes, máximas y mínimas, que atravesarían cada una de las resistencias. 3. - Proponed un montaje para que una salida del microcontrolador de 3,3V pueda conectarse correctamente a una entrada del de 5V. 4. - Se quiere actuar sobre un pequeño motor de corriente continua, que se alimenta a 5V y consume menos de 8W. Indicad los montajes adecuados para poder activarlo desde cada uno de los microcontroladores mediante una salida digital. Ampliad el circuito para que el sistema sea bidireccional, es decir el motor pueda girar en los dos sentidos, gobernado por una salida que indique dirección y otra que active el giro del motor –cuya velocidad se podría variar aplicando PWM.