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.