

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Considere o código abaixo escrito em linguagem C:
#include <stdio.h> int main() { int A = 1, B = 0, C = 1; int resultado = (A && B) || C; printf("%d\n", resultado); return 0; } |
Que valor será impresso na tela após a execução do programa?
Nulo.
0.
1.
2.
3.
Observe o seguinte código:
1 | #include <iostream> |
2 | using namespace std; |
3 | int main() |
4 | { |
5 | int estM[]={20,15,10,4,15}; |
6 | int estA[]={12,20,0,6,10}; |
7 | int preco[]={1,3,15,5,4}; |
8 | int k, d; |
9 | int cont; |
10 | |
11 | for (k=0;k<5; k++){ |
12 | cont=0; |
13 | for(d=estA[k];d<estM[k];d++){ |
14 | cont++; |
15 | } |
16 | cout<<cont<< " "; |
17 | } |
18 | |
19 | return 0; |
20 | } |
A execução deste código C++ imprimirá na tela
0 0 0 0 0
8 0 10 0 5
8 -5 10 -2 5
-8 5 -10 2 -5
32 35 10 10 25
Examine os programas em PHP, C# e C a seguir:
PHP <?php $num = "SoH"; $result - $num + 5, echo "Result: " . $result; ?> | C# using System; namespace Teste { class Testando { static void Main(string{} args) { int num = "SoH"; int result = num + 5; Console.WriteLine($"Resultado: {r}"); } } } | C #include <stdio.h> int main() { int num, result; num= "SoH"; result = num + 5; printf("\n Resultado: %d", result); return 0; } |
Considerando que os programas serão executados em condições ideais,
todos os programas executarão sem erros de compilação.
os resultados apresentados pelos programas em C# e em C serão iguais, pois C# é compilada por um compilador escrito em C.
todos os programas apresentarão erros, pois não é possível atribuir strings a variáveis numéricas.
todos os programas deixarão de apresentar erros, caso seja colocado (int) antes de "SoH".
os programas em PHP e em C não apresentarão erros, mesmo sem o uso explícito de cast.
Considere a seguinte função f, programada recursivamente em linguagem C:
int f(int m, int n) {
if (m < n)
return 0;
else
return 1 + f(m - n, n);
}
Qual função matemática de inteiros positivos m e n é implementada por f ?
Quociente da divisão de m por n.
Resto da divisão de m por n.
Multiplicação de m por n.
Adição de m com n.
Potenciação com base m e expoente n.
Analise o trecho de código abaixo em linguagem de programação C e assinale a alternativa que apresenta corretamente quantas vezes a palavra “FORK” seria impressa durante a execução deste trecho.
#include <stdio.h>
#include <unistd.h>
int main (int argc, char *argv[]) {
fork();
fork();
printf(“FORK”);
return 0;
}
2
3
4
5
8
Assinale o modo correto para a atribuição de uma string na linguagem C.
char xxx[] = "Exemplo de string";
set xxx = "Exemplo de string";
str xxx[] = "Exemplo de string";
string xxx = "Exemplo de string";
var xxx = "Exemplo de string";
#include <iostream>
#include <cctype>
int main() {
std::string texto;
std:: cout << “Digite um texto: ”;
std::getline(std::cin, texto);
for (char& c : texto) {
c = std::toupper(c);
}
std::cout << “Resultado: ” << texto << std::endl;
return 0;
}
O programa em C++ acima tem a função de
converter caracteres em maiúsculo.
converter caracteres em minúsculo.
concatenar caracteres.
contar a quantidade de caracteres em um texto.
remover do texto somente os caracteres maiúsculos.
João pretendia escrever um trecho de código na linguagem C contendo o seguinte loop:
int i;
for (i = 5; i >= 0; i = i - 1) {
printf("Valor: %d\n", i);
}
Entretanto, sem querer, João inverteu a ordem das expressões no comando for, e digitou o código como segue:
int i;
for (i = 5; i = i - 1; i >= 0) {
printf("Valor: %d\n", i);
}
Assinale a lista completa dos valores exibidos nesse trecho pela execução da versão equivocada produzida por João.
4, 3, 2, 1
4, 3, 2, 1, 0
5
5, 4, 3, 2, 1
5, 4, 3, 2, 1, 0
Analise o código C a seguir.
#include <stdio.h>
int main() {
int myAge = 43;
int* ptr = &myAge;
printf("%d\n", *ptr);
return 0;
}
O valor mais provável a ser exibido pela execução do código acima é:
0
0x7ffe5367e044
43
null
undefined
Na linguagem de programação C, é possível realizar uma operação com diversas alternativas. Considerando isso, interprete o código abaixo e assinale a alternativa que corresponda à impressão na tela após a execução do código:
int main(void) {
int x, y, z;
x = y = 10;
z= ++x;
x= -x;
y++;
x = x + y - (z- -);
printf("x:%d,y:%d,z:%d", x, y, z);
}
x:9, y:10, z:11
x:11, y:10, z:11
x:-11, y:11, z:10
x:-10, y: 10, z: 10
x:=-9, y:11, z: 9
Em um loop de repetição for, é possível que sua execução seja interrompida sem que as condições de parada sejam atendidas. Considerando a linguagem de programação C, assinale a alternativa correspondente à instrução que tem o objetivo de interromper um laço de repetição, desviando a execução do programa para o comando após o laço.
if
continue
int
char
break
Considere o seguinte trecho de código em C, que implementa o algoritmo de busca em um vetor de inteiros:
#include <stdio.h>
int busca(int arr[], int n, int x) {
int i;
for (i = 0; i < n; i++) {
if (arr[i] a == x) {
return i;
}
}
retum-1;
}
int main(){
int arr[] = {5, 10, 15, 20, 25};
intn = sizeof(arr)/sizeof(arr(0]);
intx = 15;
int indice = busca(arr, n, x);
if (indice == -1) {
printf(*%d nao encontrado no array\n", x);
}else {
printf(*%d encontrado no indice %d\n", x, indice);
}
return 0;
}
Qual é a saída esperada para esse programa, e qual é o algoritmo de busca implementado?
15 nao encontrado no array, busca binária.
15 encontrado no indice 2, busca sequencial.
15 encontrado no indice 3, busca sequencial.
15 encontrado no indice 2, busca binária.
15 encontrado no indice 3, busca binária.
Assinale a alternativa que apresenta corretamente o que será impresso após a execução do trecho abaixo, na linguagem de programação C++.
#include <iostream>
int main (int argc, char *argv[]) {
int myVec[5] = {1, 5, 0, 2, 3};
int* ptr = myVec;
(ptr + 1);
std::cout << *ptr++ << "-" << (*ptr++) << "-" << *ptr << "-" << *(--ptr) << "-" <<
*++ptr;
return 0;
}
5 – 6 – 7 – 6 – 7
1 – 2 – 3 – 2 – 3
5 – 0 – 2 – 0 – 2
0 – 2 – 2 – 0 – 2
1 – 5 – 0 – 5 – 0
Qual das seguintes afirmações sobre a classe std::unique_ptr, introduzida na versão 11 da linguagem de programação C++, é verdadeira?
O usuário é responsável por liberar a memória ocupada por objetos do tipo std::unique_ptr usando o comando delete para evitar um vazamento de memória.
Múltiplas cópias do mesmo objeto do tipo std::unique_ptr podem coexistir, o que é chamado de ponteiro compartilhado.
Um objeto do tipo std::unique_ptr pode ser nulo, assim como um ponteiro padrão da linguagem.
Um objeto do tipo std::unique_ptr não pode apontar para vetores ou listas.
Um objeto do tipo std::unique_ptr usa mais memória do que um ponteiro padrão da linguagem, já que precisa armazenar o número de referências ao objeto.
A linguagem C possui um recurso denominado “ponteiro”. Este tipo de recurso funciona como uma variável que aponta para uma posição específica da memória.
Assinale a alternativa que apresenta, corretamente, a declaração de um ponteiro para um inteiro.
p = &pointer
int #p
int *p
pointer(int(p))
pointer.int = p
Considere o seguinte código na linguagem C:
01 ____ #include <studio.h>
02 ____ #include <stdlib.h>
03
04 ____ void soma _ mais _ um(int *n){
05 ______ *n = *n + 1;
06 ______ printf("Dentro da funcao: x = %d\n",*n);
07 ____ }
08
09 ____ int main(){
10 ______ int x = 5;
11 ______ printf("Antes da funcao: x = %d\n",x);
12 ______ soma _ mais _ um(&x);
13 ______ printf("Depois da funcao: x = %d\n",x);
14 ______ system("pause");
15 ______ return 0;
16 ___ }
Ele imprimirá na tela
Antes da funcao: x = 5
Dentro da funcao: x = 5
Depois da funcao: x = null
Antes da funcao: x = 5
Depois da funcao: x = 5
Antes da funcao: x = 5
Dentro da funcao: x = 6
Depois da funcao: x = 5
Antes da funcao: x = 5
Dentro da funcao: x = 5
Depois da funcao: x = 6
Antes da funcao: x = 5
Dentro da funcao: x = 6
Depois da funcao: x = 6
“Desenvolver um programa que solicite ao usuário a digitação de um termo qualquer, a fim de que a aplicação realize o cálculo do termo com a lógica da série de Fibonacci.” Para criar um algoritmo escrito na linguagem C++ de forma recursiva, considerando tal condição, observe a imagem a seguir:

Sobre o código produzido, analise as afirmativas a seguir.
I. O código não executará, pois serão gerados erros de compilação em decorrência dos erros de sintaxe produzidos no método de recursividade que foi aplicado.
II. Caso os termos informados sejam, respectivamente, 1 e 2, os resultados evidenciados pelo programa serão 0 e 1; o “;” do final da instrução da linha 16 poderá ser removido sem gerar nenhum erro de sintaxe na compilação.
III. Caso os termos informados sejam, respectivamente, 13 e 19, os resultados apresentados pelo programa serão 144 e 2584.
Está correto o que se afirma apenas em
I.
II.
III.
I e II.
II e III.
Considere que, para melhorar o desempenho de sistemas computacionais, projetistas de hardware decidam aumentar o número de processadores em vez de aumentar a frequência de clock. Dessa forma, surge a necessidade de utilizar softwares que explorem o paralelismo. Um problema típico encontrado no desenvolvimento desse tipo de software é a dependência de dados. Nesse contexto, considere que dois processadores precisem realizar, simultaneamente, o acesso a uma mesma matriz A.
Com base nas informações apresentadas, com relação aos trechos de código em linguagem C apresentados a seguir, assinale a opção que apresenta uma situação de conflito de dados.
Processador 1:
int a = &A[0][0];
Processador 2:
int b = &A[0][0];
Processador 1:
*A[0][0] = 10;
Processador 2:
*A[0][1] = 20;
Processador 1:
*A[0][0] = 10;
Processador 2:
int b = &A[0][0];
Processador 1:
int a = &A[0][0];
Processador 2:
*A[0][0] = 20;
Processador 1:
*A[0][0] = 10;
Processador 2:
*A[0][0] = 20;
Na linguagem de programação C, o comando _______ permite a criação de estruturas de dados heterogêneas.
Assinale a alternativa que completa, CORRETAMENTE, a lacuna do texto:
array
object
register
set
struct
Considere o seguinte código em C++, que usa a biblioteca Boost para criar um grafo direcionado com 4 vértices e 4 arestas:
#include <iostream>
#include <boost/graph/adjacency_list.hpp>
int main(){
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS> Graph;
Graph g(4);
boost::add _edge(0, 1, g);
boost::add_edge(1,2,g);
boost::add_edge(2,3,9);
boost::add_edge(3,0,g);
std:cout << "Vértices: "<< boost.:num_vertices(g) << std::endl;
std cout << "Arestas: " << boost::num_edges(g) << std::endl;
return 0;
}
Qual é a saída esperada para esse programa?
Vértices: 3, Arestas: 3.
Vértices: 3, Arestas: 4.
Vértices: 4, Arestas: 3.
Vértices: 4, Arestas: 4.
Vértices: 5, Arestas: 5.