Baixe o app para aproveitar ainda mais
Prévia do material em texto
Disc.: PROGRAMAÇÃO APLICADA A SISTEMAS ELÉTRICOS Acertos: 10,0 de 10,0 1a Questão Acerto: 1,0 / 1,0 Um sistema embarcado pode ser gerenciado por software embarcado ou não, dependendo do dispositivo central de processamento utilizado no projeto. Qual alternativa abaixo corresponde aos dispositivos que podem controlar um sistema embarcado sem software embarcado? 4-5 1-3 5-6 1-2 3-5 Explicação: Essencialmente, um FPGA é um circuito de hardware que um usuário pode programar para realizar uma ou mais operações lógicas. Os FPGAs são circuitos integrados formados por conjuntos de circuitos em forma de array ou matrizes. Esses circuitos, ou matrizes, são grupos de portas lógicas programáveis, memória ou outros elementos. Assim, o projetista pode descrever seu hardware de controle, que não terá um software embarcado ou firmware. Os ASICs seguem a mesma abordagem de criação de um hardware de controle específico. Porém, eles são projetados e fabricados sem possibilidade de serem reprogramados, como os FPGAs. Assim, funcionam da mesma forma durante toda a vida útil. 2a Questão Acerto: 1,0 / 1,0 Considere as afirmações abaixo sobre sistemas embarcados. I - Todo sistema embarcado com RTOS é de tempo real. II - Todo sistema embarcado sem sistema operacional é de tempo real. III - Todo sistema embarcado bare metal é de tempo real. IV - Todo sistema embarcado com Linux é de tempo real. Quais as opções estão corretas? II e III I, III e IV II, III e IV I, II e III Somente a II Explicação: Quando um sistema precisa responder a um evento ou a uma solicitação dentro de um tempo estritamente definido, chamamos isso de sistema de tempo real. Esse tempo definido é conhecido como prazo. Esses sistemas devem ser previsíveis e, portanto, são, por definição, determinísticos. Se um sistema roda em um sistema operacional, ele não é de tempo real. Com exceção do RTOS, que são os sistemas operacionais de tempo real. Sistemas embarcados sem sistema operacional, como os bare metal (microcontroladores) ou os baseados em dispositivos FPGA, são de tempo real. Portanto, a única alternativa que não está correta é a IV, pois Linux não é de tempo real. 3a Questão Acerto: 1,0 / 1,0 Você recebeu valores em bases diferentes para realizar um cálculo. Os valores foram X = 34 (base decimal) e Y = 34 (base hexadecimal). Você precisa do resultado na base octal para comparar com o enviado por outro sistema. Qual o resultado de X + Y na base octal? 201 207 156 126 116 Explicação: O procedimento mais conveniente é converter Y para a base 10, somar com X e depois converter o resultado para a base 8. Assim, Y=3416= 3x161+4x160=5210. X+Y=3410+5210= 8610. Para converter o resultado da base decimal para a base octal, devemos dividir 86 por 8, guardando o quociente e o resto da divisão, no caso, 10 e 6, respectivamente. O valor 6 será o menos significativo da representação em octal. Na sequência, divide-se o quociente (10) novamente por 8. O novo quociente é 1, com resto 2, o segundo número a ser coletado para formar o octal correspondente. O quociente 1, sendo menor que 8, fornecerá o número mais significativo do octal, que ficará 1268. 4a Questão Acerto: 1,0 / 1,0 Calcule as expressões aritméticas abaixo e considere a precedência entre operadores: Exp1 = 24 - 3 * 5; Exp2 = (4 - 2 * 6) / 4 + 1; Exp3 = 6 / ((2 + 11) % 3) * 4; Marque a opção correta abaixo, que indica o resultado das expressões Exp1, Exp2 e Exp3: 9, 1 e -1 9, -1 e 24 9, -1 e 1 4, 1 e 24 4, -1 e 1 Explicação: Calculando as expressões Exp1 = 24 ¿ 3 * 5 = 24 -15 = 9 Exp2 = (4 - 2 * 6) / 4 + 1 = (4 ¿ 12) / 4 + 1 =-8 /4 + 1 = -2 + 1 = -1 Exp3 = 6 / ((2 + 11) % 3) * 4 = 6 / ((13) % 3)*4 = 6 / 1 * 4 = 6 * 4 = 24 5a Questão Acerto: 1,0 / 1,0 A linguagem C possui várias funções, dentre elas se destaca a função scanf() que tem o objetivo de ler uma variável pelo teclado. Considerando que a variável num é do tipo inteiro (int), qual a opção abaixo é verdadeira? scanf("%p", &num); scanf("%c", &num); scanf("%d", &num); scanf("%lf", &num); scanf("%f", &num); Explicação: Como o tipo da variável num é inteira (int). Então o especificador %d é deve ser utilizado para números inteiros. Na opção que apresenta o %f é usado erroneamente o especificador f para float. Na opção que apresenta o %lf é usado erroneamente o especificador lf para long float. Na opção que apresenta %c é usado erroneamente o especificador c para char. Na opção que uso o especificador %p é usado erroneamente o especificador para pointer (ponteiro). 6a Questão Acerto: 1,0 / 1,0 Uma variável do tipo básico unsigned char na linguagem C é armazenada em 1(um) byte de memória e o intervalo de valores permitido é de 0 a 255. Considerando o tipo básico char. Qual das alternativas abaixo é a correta quanto à quantidade de memória armazenada e o intervalo de valores usados pelo tipo char? 2 bytes; intervalo: -255 a 0. 1 byte; intervalo: -127 a 127. 1 byte; intervalo: 1 a 255. 1 byte; intervalo: -128 a 127. 2 bytes; intervalo: -127 a 126. Explicação: O tipo char armazena valores inteiros com sinal que representam caracteres. O tipo char usa 8 bits (1 byte) para armazenar 256 valores, isto é, 28 valores. Como está definido na linguagem que o tipo char deve ter números positivos e negativos, é necessário usar um 1 bit para representar o sinal, sobram 7 bits para representar 128 (= 27 ) caracteres. Assim, para o tipo char, o valor_mínimo = -1*28-1 = -128 e o valor_máximo = 28-1 -1 = 127. 7a Questão Acerto: 1,0 / 1,0 Analise o código abaixo com relação ao escopo das variáveis e o resultado do programa após a execução: 1: #include 2: 3: int imprimir(int X, int Y) 4:{ 5: X--; 6: Y++; 7: printf("Valor de X = %d, Y = %d\n", X, Y); 8:} 9: 10: main () { 11: int X,Y; 12: X = 100; 13: Y = X - 40; 14: imprimir(X,Y); 15: printf ("Valor de X = %d, Y = %d\n", X, Y); 16: } Assinale a resposta correta da saída do programa acima. Valor de X = 100, Y = 60 Valor de X = 99, Y = 61 Valor de X = 100, Y = 60 Valor de X = 100, Y = 60 Valor de X = 100, Y = 60 Valor de X = 60, Y = 61 Valor de X = 99, Y = 61 Valor de X = 100, Y = 60 Valor de X = 99, Y = 60 Valor de X = 100, Y = 61 Explicação: Verifica-se que na linha 14 a função imprimir(X,Y) é chamada e recebe como parâmetros X=100 e Y=60. Após a execução dos comandos nas linhas 5 e 6, X = 99 e Y = 61 (variáveis locais na função imprimir). O comando "printf ("Valor de X = %d, Y = %d\n", X, Y);" (localizado na linha 7) imprime o resultado "Valor de X = 100, Y = 60". 8a Questão Acerto: 1,0 / 1,0 Leia o programa abaixo, verifique o que a função func3() faz e assinale qual das opções será impressa na saída após a execução. #include typedef struct pessoa { char nome[40]; int idade; float salario; }; void func3(struct pessoa f1, struct pessoa f2, struct pessoa f3) { printf("%s %d %.2f\n",f1.nome, f2.idade, f3.salario); } main() { struct pessoa p1 = {"Maria Covidiana",50,10000.00}; struct pessoa p2 = {"Alcogelson Medeiros,51,12000.00}; struct pessoa p3 = {"Paulo Lokidown",60,12500.00}; func3(p1,p2,p3); } Assinale a opção correta. Maria Covidiana 51 12500,00 Alcogelson Medeiros 60 12500,00 Maria Covidiana 60 12500,00 Paulo Lokidown 51 12000,00 Maria Covidiana 50 10000,00 Explicação: São passados três estruturas como parâmetrospara a func3. A função func3() recebe os parâmetros e imprime o nome da variável f1, a idade da variável de f2 e o salário da variável. Assim, a saída é ¿Maria Covidiana 51 12500,00¿. 9a Questão Acerto: 1,0 / 1,0 Qual componente da CPU é utilizado para traduzir os códigos das instruções do programa em sequências de ações? Sequenciador de códigos. Decodificador de instruções. Unidade lógica e aritmética. Sequenciador de instruções. Tradutor de instruções. Explicação: As instruções do software de um sistema embarcado são armazenadas na memória de programa. Quando a CPU está executando as instruções, os códigos dessas instruções são buscados na memória e, em seguida, esses códigos precisam ser decodificados. O decodificador de instruções de um processador é um circuito combinacional, cujo objetivo é traduzir um código de instrução para uma sequência de ações que executa o que a instrução indica. 10a Questão Acerto: 1,0 / 1,0 Você foi designado para especificar um microcontrolador que deve controlar a velocidade de um motor DC, que pode ser regulado variando a tensão contínua aplicada aos seus terminais. Os dispositivos a seguir podem ser escolhidos em modelos de microcontroladores que você tem para especificar. I - ADC. II - DAC. III - RS232. IV - PWM. Qual opção indica o(s) componente(s) que você pode escolher para controlar o motor DC? Somente a II. II ou III. I ou II. II, III ou IV. II ou IV. Explicação: Tanto um conversor digital para analógico (DAC) como um PWM (modulador por largura de pulsos) podem ser usados para controlar a velocidade de um motor DC, pois ambos permitem regular a quantidade de tensão nos terminais de um motor. Além disso, ambos podem ser componentes internos aos microcontroladores. O controle de velocidade por modulação de largura de pulso funciona acionando o motor com uma série de pulsos ''Ligado-Desligado'' e variando o ciclo de trabalho, que é a fração de tempo em que a tensão de saída está ''Ligada'' em comparação com quando está ''Desligada'', mantendo a frequência constante. O DAC é um dispositivo que transforma dados digitais em um sinal analógico, um valor de tensão contínua, o que também pode ser usado para controlar a velocidade do motor.
Compartilhar