Buscar

Algoritmos e programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 9 páginas

Prévia do material em texto

Algoritm� � Programaçã�
1 - Pensando bem, um computador é praticamente inútil se não tiver nenhuma
maneira de interagir com o usuário. As trocas de informação entre o computador e o
usuário são chamadas entrada e saída (input e output, em inglês). Entrada é a
informação fornecida a um programa e saída é a informação fornecida pelo
programa. Frequentemente são usados os termos "saída padrão" (standard output,
stdout) e "entrada padrão" (standard input, stdin). Eles se referem, na maioria das
vezes, ao monitor e ao teclado, que são os meios básicos de interação com o
usuário. No entanto, os sistemas operacionais permitem redirecionar a saída e a
entrada de programas para outros dispositivos ou arquivos. As funções de entrada e
saída na linguagem C trabalham com fluxos de dados, que são uma forma de
abstração de dados de maneira sequencial. Assim, toda entrada e saída é feita da
mesma maneira, com as mesmas funções, não importando o dispositivo com o qual
se está comunicando. As mesmas funções que descrevem o acesso aos arquivos
podem ser utilizadas para se acessar um terminal de vídeo. Neste contexto, julgue
as afirmações que se seguem.
I- A função printf() é uma função de saída e permite facilmente imprimir valores que
são sequências de caracteres, além de poder formatar os dados e juntar várias
sequências de caracteres.
II- Se especificar onde o valor da variável deve ser impresso, através da
especificação de formato %d caso a variável seja do tipo int, então precisará,
logicamente, especificar qual variável imprimir. Isso é feito dando-se mais um
argumento à função printf().
III - A função scanf() lê dados da entrada padrão e os guarda em variáveis do
programa. Assim como para printf(), usa-se uma string de edição para especificar
como serão escritos os dados.
IV - A funcão scanf() retorna o número de conversões realizadas com sucesso. Isso
é útil pois, se o valor contido numa variável após a chamada de scanf() for igual ao
valor anterior, não é possível saber se o valor digitado foi o mesmo que já havia, ou
se não foi feita a conversão. Para obter esse número de conversões realizadas,
basta guardar o resultado numa variável do tipo int.
É correto apenas o que se afirma em:
R - II e IV.
Em linguagem C, as funções da biblioteca padrão para entrada e saída estão
declaradas no cabeçalho stdio.h. Conforme as informações de entrada e saída, as
asserções analisadas são:
I - FALSA - A função printf( ) é uma função de saída e permite facilmente imprimir
valores que NÃO SÃO SEQUÊNCIAS de caracteres, além de poder formatar os
dados e juntar várias sequências de caracteres.
II - VERDADEIRA - Se especificar onde o valor da variável deve ser impresso,
através da especificação de formato %d caso a variável seja do tipo int, então
precisará, logicamente, especificar qual variável imprimir. Isso é feito dando-se mais
um argumento à função printf( ).
III - FALSA - A função scanf( ) lê dados da entrada padrão e os guarda em variáveis
do programa. Assim como para printf( ), usa-se uma string de FORMATAÇÃO para
especificar como serão LIDOS os dados.IV - VERDADEIRA - A funcão scanf( )
retorna o número de conversões realizadas com sucesso. Isso é útil pois, se o valor
contido numa variável após a chamada de scanf() for igual ao valor anterior, não é
possível saber se o valor digitado foi o mesmo que já havia, ou se não foi feita a
conversão. Para obter esse número de conversões realizadas, basta guardar o
resultado numa variável do tipo int.
2 - Diz-se que um número é triangular se ele é produto de três números naturais
consecutivos (e.g.: 120 é triangular pois 120 = 4*5*6). Dado um natural n,
determinar se n é triangular. O trecho de programa a seguir demonstra esse
conceito: #include <stdio.h> #include <stdlib.h> int main () { int cont, num;
printf("Entre com um número: "); scanf("%d", &num); for (cont=1; num <
cont*(cont+1)*(cont+2); cont++); if (cont*(cont+1)*(cont+2) == num) printf("O numero
%d e perfeito\n"); else printf("O numero %d nao e perfeito\n"); system("pause");
return 0; }
Muitos dos problemas em computação podem ser reduzidos a uma forma de
"busca", onde o computador gera todas as combinações possíveis até encontrar a
solução desejada. De acordo com o programa criado, como foi gerada todas as
soluções?
R - Basicamente, é preciso definir 3 coisas: início - qual o primeiro candidato a
solução a ser testado?; fim - a partir de que valor não é mais necessário procurar a
solução?; e incremento - como gerar a próxima solução a ser testada?
3 - Conforme Manzano (2015) toda vez que é necessário armazenar uma
quantidade grande de valores do mesmo tipo, podemos utilizar as variáveis
compostas ou seja um vetor. A melhor solução para armazenar diversos valores
dentro de um mesmo contexto é utilizar variáveis compostas. O vetor, ao ser
declarado, reserva um espaço na memória contíguo para armazenar seus
elementos. Analise o programa a seguir. #include<stdio.h>
int main()
{
int vetor[19],i;
for (i = 0; i <= 19; i++)
{ vetor[i] = 1;
}
for (i = 0; i <= 19; i++)
{ printf ("vetor[%d] = %d \n", i, vetor[i]);
}
return 0;
} Considerando o programa apresentado, julgue as afirmações a seguir. I. Na linha
5, o comando for é utilizado para inicializar o vetor com o número 1.
II. Na linha 8, o comando for é utilizado para imprimir os valores do vetor.
III.O programa não irá imprimir as informações do vetor corretamente porque
estamos atribuindo mais valores ao vetor do que foi declarado.
IV. Caso não seja inicializado o vetor, como foi feito no comando for da linha 5, será
impresso os valores que estão na memória do computador, esses valores são
conhecidos como “lixo de memória”.
É correto apenas o que se afirma em:
R - I, II, III e IV.
A frase corretamente preenchida é: As afirmativas I, II, III e IV estão corretas.
Todas as afirmativas estão corretas. Devemos sempre inicializar um vetor para
evitar que ao executar o programa, um lixo de memória seja utilizado. Observe que
há um problema no programa, no comando: for (i = 0; i <= 19; i++) estamos
excedendo o valor do vetor. O correto seria: for (i = 0; i < 19; i++). I. Na linha 5, o
comando for é utilizado para inicializar o vetor com o número 1. (Correto)
II. Na linha 8, o comando for é utilizado para imprimir os valores do vetor. (Correto)
III.O programa não irá imprimir as informações do vetor corretamente porque
estamos atribuindo mais valores ao vetor do que foi declarado. (Correto)
IV. Caso não seja inicializado o vetor, como foi feito no comando for da linha 5, será
impresso os valores que estão na memória do computador, esses valores são
conhecidos como “lixo de memória” (Correto)
4 - Analise a aplicação da estrutura de repetição condicional realizando um
programa que simula uma conta bancária (tela de opções das transações),
adaptado do livro do Soffner (2013). Ele escreve um programa que repete uma
entrada de dados até que determinada condição de saída seja atingida e, em
seguida, acumule os valores digitados. #include <stdio.h> #include <stdlib.h>
main() { float s=0, v; int op; do { printf("\n Digite sua Operacao"); printf("\n 1.
Deposito"); printf("\n 2. Saque"); printf("\n 3. Saldo"); printf("\n 4. Sair"); printf("\n
Opcao? "); scanf("%d", &op); switch(op) { case 1: printf("\n Valor do deposito? ");
scanf("%f", &v); s=s+v; break; case 2: printf("\n Valor do saque? "); scanf("%f", &v);
s=s-v; break; case 3: printf("\n Saldo atual = R$ %.2f \n", s); break; default: if(op!=4)
printf("\n Opcao Invalida! \n"); } } while (op!=4); printf("Fim das transacoes. \n\n");
system("pause"); return 0; }
Foi utilizado o laço do-while para implementar o menu do programa, onde a função
desejada é executada pelo menos uma vez dentro do laço, isto é:
R - Foi aplicada uma estrutura de repetição usando comparativo.
5 - Salvetti e Barbosa (1998) afirmam que devemos utilizar os parênteses para ter
certeza de que a ordem de precedência das operações seja realizada eos cálculos
não sofrerem alterações nos seus valores. Considerando o contexto, avalie o
programa a seguir: #include <stdio.h>
int main( )
{
float C, F;
printf("Escreva a Temperatura em graus Celsius: ");
scanf("%f", &C);
F = ((9 * C) / 5) + 32;
printf("Temperatura Fahrenheit = %.2f .\n", F);
return 0;
}
Analisando o programa proposto, caso o valor da variável C receber o valor igual a
10, o comando printf irá imprimir:
R - Temperatura Fahrenheit = 50.00 .
6 - Segundo Soffner (2013 p. 64), o programa “não executará nenhuma repetição (e
as ações que ali dentro estiverem programadas) sem antes testar uma condição”.
Em alguns casos, quando se utiliza o teste no início, pode ocorrer o famoso loop
(laço) infinito (quando um processo é executado repetidamente). Para que isso não
aconteça, é possível utilizar os seguintes recursos: contador, incremento e
decremento, acumulador e condição de parada. Baseado nestes recursos, julgue as
afirmações que se seguem: I. Contador – é utilizado para contar as repetições
quando não são determinadas.
II. Incremento e decremento – trabalha o número do contador, seja ele, aumentado
ou diminuído.
III. Acumulador somará as entradas de dados de cada iteração da repetição,
gerando um somatório a ser utilizado quando iniciar a repetição. IV. Condição de
parada – utilizada para determinar o momento de parar quando não se tem um valor
exato desta repetição.
É correto apenas o que se afirma em:
R - II e IV.
I - FALSA - Contador: é utilizado para CONTROLAR AS REPETIÇÕES QUANDO
ESTA É DETERMINADA.
II - VERDADEIRA - Incremento e decremento: trabalha o número do contador,
seja ele, aumentado ou diminuído.
III - FALSA - Acumulador: que segundo Soffner (2013), somará as entradas de
dados de cada iteração da repetição, gerando um somatório a ser utilizado
quando DA SAÍDA DA REPETIÇÃO. IV - VERDADEIRA - Condição de parada:
utilizada para determinar o momento de parar quando não se tem um valor
exato desta repetição.
7 - Segundo Manzano (2015), os algoritmos criados por você deverão ser
convertidos em linguagens de alto nível, como por exemplo: a linguagem Java,
Pascal, C, C++ entre outras conceituadas nesta seção. Você deverá escrever os
códigos fontes na linguagem escolhida para que os mesmos se tornem executáveis,
porém, cada linguagem adota um método particular para gerar o código executável.
Considerando o contexto apresentado, faça a correta associação entre as Colunas.
COLUNA A COLUNA B
I. São gerados códigos intermediários, onde
não exige tanto espaço de memórias quanto
realizado pelo código fonte. Sua vantagem é
ter independência da arquitetura que
realizará a execução final, porém, necessita
de um interpretador específico para sua
geração.
1. Compiladores
II. Lê uma instrução do código fonte,
transforma em código binário e executa,
repete esse processo até que todas as
instruções do código fonte sejam executadas.
O código é interpretado e executado em
tempo real, sem a geração de código
executável.
2. Interpretadores
III. É gerado um código executável sem a
necessidade de interpretar comando por
comando. Sua vantagem é a execução mais
rápida, porém, caso necessite de alterações,
o código fonte deverá ser editado e
executado em máquinas de mesma
arquitetura.
3. Tradutores
Assinale a alternativa que apresenta a associação correta.
R - I - 3; II - 2; III - 1.
8 - A estrutura condicional composta expõe que uma instrução ou bloco de
instruções só seja executada se uma condição for satisfeita, e outra instrução ou
bloco se a condição não for satisfeita, ou seja, diferentemente da condicional
simples, a estrutura condicional composta executa um bloco de instruções se a
condição for verdadeira e outro se a condição for falsa. Analise o seguinte trecho de
código. Código – Trecho de estrutura condicional composta if( idade>=18)
printf("Você e maior de idade"); else printf("Você e menor de idade"); if (sexo =='F') {
printf("Bela moça, digite sua idade); scanf("%d", &idade); } else{ printf("Belo rapaz,
digite sua idade); scanf("%d", &idade); }
Baseado no código, o que o trecho quer saber?
R - No primeiro if-else: se possui maioridade ou não. No segundo if-else: qual
a idade da moça ou do rapaz.
9 - Pode-se otimizar o uso de variáveis usando as estruturas compostas (vetor e
matriz), porém só se pode armazenar valores de um mesmo tipo. Além das
estruturas homogêneas, as linguagens de programação oferecem um tipo de
variável composta heterogênea chamada de estruturas (structs), ou ainda de
registros por alguns autores (SOFFNER, 2013). Assim como se associa os vetores
e matrizes com tabelas, pode-se associar uma estrutura a uma ficha de cadastro
com diversos campos. Na linguagem C, a criação de uma estrutura deve ser feita
antes da função main() e deve possuir a seguinte sintaxe: struct <nome>{ <tipo>
<nome_da_variavel1>; <tipo> <nome_da_variavel2>; ... }; De acordo com a sintaxe
apresentada, julgue as afirmações que se seguem
I. <nome> é o nome da variável.
II. As variáveis internas dessa estrutura são os campos que se deseja guardar.
III. Uma estrutura funciona como um “tipo de dado”.IV. O uso da estrutura sempre
será atribuído à uma ou mais variáveis.
É correto apenas o que se afirma em:
R - II, III e IV.
10 - Chama-se de estruturas de decisão encadeadas, quando uma estrutura de
decisão está localizada dentro do lado falso da outra. Este tipo de estrutura também
é conhecida como seleção “aninhada” ou seleção “encaixada”. Qualquer que seja o
termo usado para identificar a estrutura, o importante é que esse formato com uma
estrutura de seleção dentro da outra permite fazer a escolha de apenas um entre
vários comandos possíveis. A figura 2 a seguir mostra uma tela após execução de
uma estrutura de decisão encadeada: Figura 2 – tela após execução de uma
estrutura de decisão encadeada
Em linguagem C usa-se estruturas if-else-if encadeadas para construir códigos
equivalentes. Analise o programa a seguir e complete as lacunas: #include
<stdio.h> #include ____________ int main (void) { int N1, N2 ; printf("Digite o
primeiro numero: "); _____________ printf("Digite o segundo numero: ");
scanf("%d", &N2); _____________ printf("Os numeros são iguais!");
else if (N1 > N2) printf("O maior valor e = %d", N1); ____________
printf("O maior valor e = %d", N2); printf("\n"); system("pause");
____________ }.
Assinale a alternativa que completa corretamente as lacunas:
R - <stdlib.h> / scanf("%d", &N1); / if (N1 == N2) / else / return (0);

Outros materiais