Algoritmos

Algoritmos

Referências Bibliográficas

Algoritmos – Teoria e Prática, Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford.

Resolução de Questões de Concursos Anteriores

TRT 9ª Região – Técnico Judiciário – 2013 – FCC

Analise o algoritmo em pseudo código abaixo:

Considerando que uma nota válida deve possuir valores entre 0 e 10 (inclusive), a lacuna que corresponde à condição do comando SE é corretamente preenchida por

a) n1 >= 0 OU n1 <=10 OU n2 >= 0 OU n2 <=10

b) (n1 >= 0 E n1 <=10) OU (n2 >= 0 E n2 <=10)

c) (n1 >= 0 OU n1 <=10) E (n2 >= 0 OU n2 <=10)

d) n1 >= 0 E n1 <=10 E n2 >= 0 E n2 <=10

e) n1 > 0 E n1 <10 E n2 > 0 E n2 <10

RESPOSTA: D

Valores entre 0 e 10 (inclusive): ( (N1=>0) e (X1 <=10)) e ((N2=>0) e (N2 <= 10))

TRF 2ª Região – Técnico Judiciário – 2012 – FCC

Analise o algoritmo abaixo:

Sobre ele é INCORRETO afirmar:

a) Exibirá o maior entre três números lidos, exceto se os três valores forem iguais.

b) Se forem lidos os valores 1, 3 e 6 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá o valor 1, em seguida o valor 3 e, por último, o valor 6.

c) Se forem lidos os valores 7, 2 e 9 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá o valor 7, em seguida o valor 2 e, por último, o valor 9.

d) Se forem lidos os valores 9, 7 e 2 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá apenas o valor 9.

e) Se forem lidos os valores -1, -3 e -8 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá apenas o valor -1.

RESPOSTA: C

O algoritmo vai atribuindo o maior valor recebido na variável m, por esse motivo a letra C está incorreta. Uma vez atribuído o valor 7, o valor 2 como menor que 7, não será atribuído a M.

TRT 6ª Região – Técnico Judiciário – 2012 – FCC

Considere o algoritmo a seguir:

Sobre o algoritmo acima, é correto afirmar:

a) Qualquer valor digitado e armazenado na variável valor menor do que 10 desencadeará a impressão da mensagem “Situação 2”.

b) A mensagem “Situação 3” será exibida apenas se o valor digitado e armazenado na variável valor for maior do que 10.

c) O algoritmo será finalizado apenas quando a resposta da pergunta “Deseja continuar[sim/não]?” for “não”.

d) A mensagem “Situação 2” será exibida se o valor digitado e armazenado na variável valor for maior ou igual a 5 e menor do que 10.

e) A mensagem “Situação 1” será exibida apenas de o valor lido para a variável valor for maior ou igual a zero e menor do que 5.

RESPOSTA: D

A, incorreta pois se o valor for menor que 5 será impresso “Situação 1”.

B, incorreta pois será impresso se o valor for igual a 10.

C, incorreta no gabarito oficial, mas existe dúvida. Observe que mesmo sendo atribuído o valor NÃO a STATUS na situação 3, antes de ser feita a nova avaliação (no comando de repetição) é invocado o comando “Leia” que irá sobrepor o valor NÃO com o valor digitado pelo usuário. então a alternativa C estaria correta. pois, o algoritmo será finalizado apenas quando a resposta da pergunta “Deseja Continuar [Sim/Não]?” for Não.

Resposta para a dúvida: Tive o mesmo pensamento que você quando fiz a questão. Mas depois, fazendo “Engenharia Reversa” do gabarito pensei no seguinte: No comando “leia”, onde pede-se uma entrada do usuário, caso o usuário digite QUALQUER COISA que não seja “sim”, sairá do laço (enquanto). Ele não precisa necessariamente digitar “não” entende? Se ele digitar “abcd” já sairia do laço. Basta não digitar “sim”.

D, correta.

E, incorreta pois se o número for menor que 0 também será exibida a mensagem “Situação 1”.

TER-CE – Técnico Judiciário – 2012 – FCC

Considere o algoritmo seguinte:

A saída na tela será :

a) 0.

b) 2, 4, 8, 16 e 16.

c) 2, 4, 8 e 8.

d) 1.

e) 0, 0, 0, 0 e 0.

RESPOSTA: A

A questão não entrará no While, pois Cont=1 e N=4. Sendo assim ele apenas imprimirá o valor de Res uma única vez, que é 0.

TRT 24ª Região – Técnico Judiciário – 2011 – FCC

Considere: zero é um número natural. O sucessor de um número natural é um número natural.

Assim, em termos de algoritmo, o enunciado trata da possibilidade de aplicação de uma técnica denominada

a) matriciação.

b) integração.

c) agregação.

d) interação.

e) recursão.

RESPOSTA: E

A técnica é a recursão, através da recursividade poderemos repetir um trecho de código com a chamada para si mesmo.

Recursão na matemática: Um exemplo de conjunto definido recursivamente é dado pelos números naturais: 0 está em N;

Se n está em N, então n + 1 está em N.

O conjunto dos números naturais é o menor conjunto satisfazendo as condições acima.

DPE-SP – Agente da Defensoria – 2010 – FCC

Em relação às estruturas de controle, considere abaixo o trecho inicial do algoritmo que exibe o conceito de um aluno, dada a sua nota. Levando-se em conta somente notas inteiras, o critério para conceitos é: notas menor que 3, conceito E; notas de 3 a 5, conceito D; notas 6 e 7, conceito C; notas 8 e 9, conceito B; nota 10, conceito A.

Fimalgoritmo

Continuando a construção do algoritmo acima, a estrutura de controle SE-ENTAO-SENAO-FIMSE será utilizada

a) 3 vezes.

b) 4 vezes.

c) 5 vezes.

d) 6 vezes.

e) 7 vezes.

RESPOSTA: C

SE NOTA < 3 ENTÃO CONCEITO = E

SE (NOTA >= 3) AND (NOTA <= 5) ENTÃO CONCEITO = D

SE (NOTA=6) OR (NOTA=7) ENTÃO CONCEITO = C

SE (NOTA=8) OR (NOTA=9) ENTÃO CONCEITO = B

SE (NOTA = 10) ENTÃO CONCEITO = A

Ou seja, será utilizada 5 vezes a citada estrutura de controle.

Acredito que a alternativa não tenha sido modificada pois SE-ENTAO-SENAO-FIMSE é o nome da estrutura de controle, porém o uso do SENÂO é opcional. A banca não obrigou a utilização do SENAO. Caso fosse, a resposta correta seria a B.

TER-AM – Analista Judiciário – 2010 – FCC

Em relação à construção de algoritmo, considere:

I. Na estrutura de repetição Enquanto / Faça o bloco de repetição pode ser executado várias vezes ou até nenhuma vez. A condição é testada antes de entrar na estrutura de repetição.

II. A estrutura de repetição Repita / Até efetua um teste lógico no fim do laço, garantindo que pelo menos uma vez as instruções deste são executadas.

III. Toda repetição condicional pode ser representada por uma estrutura do tipo Enquanto / Faça ou Repita / Até, sendo que a primeira repete somente quando a condição é falsa e a segunda somente quando a condição é verdadeira.

IV. Para se impedir a situação conhecida como loop infinito é necessário que, nos laços condicionais, a variável que é testada esteja sempre associada a uma instrução que a atualize no interior do laço.

É correto o que se afirma APENAS em

a) I, II e IV.

b) I, II e III.

c) II, III e IV.

d) I e II.

e) II e III.

RESPOSTA: A

TER-AM – Analista Judiciário – 2010 – FCC

Em subprogramação,

a) na modularização de um programa, as partes que o compõe podem ser desenvolvidas por diferentes equipes, sem necessidade de estabelecimento prévio de padrões de programação.

b) um identificador, uma lista de parâmetros para possibilitar a comunicação com outros procedimentos e as ações que nele serão executadas constituem a essência da criação de um procedimento.

c) um objeto é dito global quando sua definição estiver dentro de um procedimento ou quando for declarado como parâmetro formal do procedimento.

d) na passagem de parâmetros por referência, o parâmetro real é passado para o parâmetro formal, fazendo com que todas as ações do procedimento manipulem somente as referências, evitando a alteração do valor original.

e) na passagem de parâmetros por valor, a relação existente entre os parâmetros formal e real está no conteúdo dos parâmetros e não em seu endereço.

RESPOSTA: B

TER-AM – Técnico Judiciário – 2009 – FCC

Com respeito aos algoritmos de escalonamento de CPU, uma classe importante dos métodos de avaliação é a avaliação analítica. O tipo de avaliação que, a partir de uma carga de trabalho específica e predeterminada, define o desempenho de cada algoritmo para essa carga é a

a) avaliação funcional.

b) avaliação de enfileiramento.

c) modelagem determinística.

d) modelagem funcional.

e) simulação.

RESPOSTA: C

Avaliação de Algoritmos:

Modelagem determinística

  • Considera uma carga de trabalho particular (pré-determinada)

  • Define (calcula) o desempenho de cada algoritmo para a carga

  • Utilização de CPU, throughput, tempo de espera, tempo de turnarorund, etc.

Modelos de enfileiramento

  • Formulação matemática e estatística envolvendo

  • Distribuição de picos de CPU e E/S, probabilidade de ocorrência de picos particulares, etc.

  • Permite comparar matematicamente algoritmos de forma tratável

  • Comparação pode ser irrealística em função de premissas imprecisas

Avaliação por simulação

  • Método mais preciso

  • Utiliza um modelo de sistema de computação

  • Informações (processos, picos de CPU, chegadas, E/S, términos, etc.) podem ser geradas aleatoriamente

  • De acordo com distribuições probabilísticas

  • Resultados são usados para verificar o que ocorre na realidade e adota-se a distribuição adequada

Avaliação por implementação

  • Mais realista

  • Alto custo: necessário implementar no kernel e testar sob as diversas situações reais (usuários são prejudicados pelas modificações)

TER-AM – Técnico Judiciário – 2009 – FCC

Formalização de algoritmo proposto em 1936, universalmente conhecido e aceito. Trata-se de um mecanismo simples, que formaliza a ideia de uma pessoa que realiza cálculos, denominado

a) Recursividade de Bird.

b) Máquina de Redução.

c) Máquina de Turing.

d) Sistema de Post.

e) Máquina com Pilhas.

RESPOSTA: C

A máquina de Turing é um dispositivo teórico conhecido como máquina universal, que foi concebido pelo matemático britânico Alan Turing (1912-1954), muitos anos antes de existirem os modernos computadores digitais (o artigo de referência foi publicado em 1936). Num sentido preciso, é um modelo abstrato de um computador, que se restringe apenas aos aspectos lógicos do seu funcionamento (memória, estados e transições) e não à sua implementação física. Numa máquina de Turing pode-se modelar qualquer computador digital.

TRE-PI – Técnico Judiciário – 2009 – FCC

Em relação a tipos abstratos de dados, é correto afirmar que

a) o TAD não encapsula a estrutura de dados para permitir que os usuários possam ter acesso a todas as operações disponibilizadas sobre esses dados.

b) algumas pilhas admitem serem declaradas como tipos abstratos de dados.

c) filas não permitem declaração como tipos abstratos de dados.

d) os tipos abstratos de dados podem ser formados pela união de tipos de dados primitivos, mas não por outros tipos abstratos de dados.

e) são tipos de dados que escondem a sua implementação de quem o manipula; de maneira geral as operações sobre estes dados são executadas sem que se saiba como isso é feito.

RESPOSTA: E

Um TAD, em um paradigma procedural (imperativo) usa-se o TAD com objetivo de encapsular detalhes de implementações do código. É uma tentativa de fazer algo que as classes e objetos fazem na programação orientada a objetos.

Um Tipo Abstrato de Dados – TAD – é uma coleção bem definida de dados a serem armazenados, e um grupo de operadores que podem ser aplicados para manipulação desses dados. Posteriormente, essa metodologia foi incorporada à própria linguagem de programação, para um protótipo do que é hoje a orientação a objetos (OOP – Object Oriented Programming). Permitindo o controle do acesso às informações de um tipo, a herança e o polimorfismo.

Características Fundamentais:

  • Os operadores do TAD implementam regras bem definidas para manipulação dos valores armazenados;

  • Os valores armazenados devem ser manipulados EXCLUSIVAMENTE pelos operadores do TAD.

A especificação de um TAD descreve quais dados podem ser armazenados, e o que é possível fazer com esses dados através dos operadores do TAD. Mas a especificação do TAD não descreve como isso é ou será efetivamente implementado no programa. Isso pode ser definido em um segundo momento. Ou seja, um Tipo Abstrato de Dado é um modelo abstrato do armazenamento e manipulação de um determinado conjunto de dados de um programa.

TRE-PI – Técnico Judiciário – 2009 – FCC

Em relação a estruturas de dados, avalie a correspondência existente entre as estruturas de dados Lineares e Não Lineares com suas respectivas coleções de dados:

O algoritmo do enunciado apresenta estruturas de controle condicional, sendo, sucessivamente,

a) uma composta, uma simples e uma de múltipla escolha.

b) uma simples, uma de repetição e uma de múltipla escolha.

c) duas de múltipla escolha e uma de repetição.

d) uma composta e duas de repetição.

e) três de repetição.

RESPOSTA: E

Uma composta (if/else) e duas de repetição (para, enquanto).

TRE-PI – Técnico Judiciário – 2009 – FCC

No algoritmo do enunciado, são variáveis dependentes de comandos de atribuição:

a) nome e aux.

b) aux e salario.

c) nome e salario.

d) nome e nivel_superior.

e) salario e nivel_superior.

RESPOSTA: B

Somente aux e salario possuem comandos de atribuição no código. Os demais atributos recebem valores somente através de entrada do usuário.

TRE-PI – Técnico Judiciário – 2009 – FCC

No algoritmo do enunciado, observa-se que os tipos de dados não foram declarados. Nesse caso, para ajustar o algoritmo, os tipos de dados para nome, aux, salario e nivel_superior seriam, respectivamente

a) real, lógico, inteiro e real.

b) caracter, real, inteiro e lógico.

c) real, lógico, inteiro e inteiro.

d) caracter, inteiro, real e lógico.

e) caracter, lógico, real e real.

RESPOSTA: D

Nome deve ser uma string, ou no caso caracter. Aux é utilizado como um contatdor que recebe apenas números inteiros então deve ser Inteiro ou Real, como ele oferece as duas opções o mais correto é inteiro uma vez que não tem valores decimais, Salário como é moeda deve ser real inclusive pois recebe valores multiplicados por 1.5, e nível_superior deve ser booleano ou lógico.

TJ-PI – Analista Judiciário – 2009 – FCC

Considere o trecho do algoritmo (Pseudo-Código):

Em relação às estruturas básicas de controle, o trecho de algoritmo acima refere-se a estrutura

I. condicional simples.

II. condicional composta.

III. de repetição.

IV. de decisão ou seleção.

É correto o que consta APENAS em

a) II, III e IV.

b) II e IV.

c) I e III.

d) II e III.

e) I, III e IV.

RESPOSTA: B

Estruturas de controle:

  • Estrutura de condicional, de decisão, de seleção

    • IF/ELSE

  • Estruturas de repetição, de loop

    • WHILE

    • FOR

    • DO, DO WHILE

    • REPEAT

Além disso, como esse Pseudo-Código não apresenta nenhuma estrutura de repetição, “mataríamos” a questão fácil-fácil como o item III é falso e o mesmo se encontra nas letras (A, C, D e E) eliminamos essas 4 restando apenas a letra B que é a resposta correta.

TJ-PI – Analista Judiciário – 2009 – FCC

Seja o algoritmo (Pseudo-Código):

Em função dos tipos de dados declarados em Var, é correto concluir que as variáveis Nome e Soma, avaliadas isoladamente, podem representar, respectivamente,

I. um número de telefone e o número de moradores de um condomínio;

II. os nomes e a quantidade de alunos de uma escola;

III. um endereço de e-mail e o resultado de uma divisão;

IV. t0m@T& e 0,25.

É correto o que consta em

a) I, II, III e IV.

b) III e IV, apenas.

c) I e II, apenas.

d) I, II e III, apenas.

e) II, III e IV, apenas.

RESPOSTA: A

Essa é uma típica questão sacana… O código apresentado é só para o candidato perder tempo. Tudo que ele quer saber é se o candidato sabe o que cada tipo de variárel (string e numérica) pode armazenar!

TJ-PA – Analista Judiciário – 2009 – FCC

Considere a seguinte e somente a seguinte situação: Se um procedimento Px contiver uma referência a um outro procedimento Py que por sua vez contém uma referência direta ou indireta a Px, então

a) Px é subconjunto de Py.

b) Px é categorizado como indiretamente recursivo.

c) Py é subconjunto de Px.

d) Py é categorizado como diretamente recursivo.

e) Py é categorizado como indiretamente recursivo.

RESPOSTA: B

Para se codificar programas de modo recursivo usa-se um procedimento ou sub-rotina, que permite dar um nome a um comando, o qual pode chamar a si próprio.

  • Esta chamada pode ser Diretamente Recursiva, quando o procedimento P contiver uma referência explícita a si próprio; ou

  • Esta chamada pode ser Indiretamente Recursiva, quando o procedimento P contiver uma referência a outro procedimento Q, que por sua vez contém uma referência direta ou indireta a P.

TRT 7ª Região – Analista Judiciário – 2009 – FCC

Um dos valores do tipo fundamental BOOLEAN é denotado pelo identificador

a) CARDINAL.

b) DECIMAL.

c) REAL.

d) TRUE.

e) CHAR.

RESPOSTA: D

Valores possíveis para um dado BOOLEAN são: True e False.

Metrô-SP – Analista Trainee – 2008 – FCC

Em relação à lógica de programação, considere os pseudocódigos:

a) Somente Alg1 tem consistência em sua representação e chega a um resultado.

b) Ambos os algoritmos abordam o mesmo problema e chegam ao mesmo resultado.

c) Somente Alg2 tem consistência em sua representação e chega a um resultado.

d) O resultado da solução apresentada por Alg2 é maior do que a de Alg1.

e) O resultado da solução apresentada por Alg2 é menor do que a de Alg1.

RESPOSTA: B

Algoritmo 1:

  • SalBase = 1000

  • Grat = 1000*5/100 = 50

  • SalReceber = 1000 + 50 – 0 = 1050

  • Imp = 1050 * 7/100 = 73,50

  • SalReceber = 1050 – 73,50 = 976,50

Algoritmo 2:

  • SalBase = 1000

  • SalReceber = 1000 + (1000 * 5/100) = 1050

  • Imp = 1050 * 7/100 = 73,50

  • SalReceber = 1050 – 73,50 = 976,50

MPE-RS – Técnico em Informática – 2008 – FCC

A execução de uma expressão lógica obedece como prioridade a ordem dos operadores

a) Or, And e Not.

b) Not, And e Or.

c) And, Not e Or.

d) And, Or e Not.

e) Not, Or e And.

RESPOSTA: B

Prioridade na ordem dos operadores :

Prioridade Mais Alta > Not > And > Or > Prioridade Mais Baixa

Para ficar mais fácil só lembrar da palavra: NAO

TCE-AL – Programador – 2008 – FCC

A estrutura de dados de iteração na qual uma ação será executada pelo menos uma vez, antes da avaliação da condição, é implementada pelo comando básico

a) condicional.

b) faça enquanto.

c) seqüencial.

d) de repetição.

e) de seleção.

RESPOSTA: C

A programação estruturada é composta de 3 estruturas básicas.

  • Sequência: Refere-se a ordem de execução das intruções.

  • Seleção/Decisão: Refere-se a execução de partes de código apenas sob determinado estado do programa, na prática é alcançado por estruturas como IF ELSE, SWITCH CASE

  • Repetição/Iteração: Basea-se em repetições da execução de um trecho de código até o programa chegar a um certo estado cuja repetição possa ser interrompida.

Na prática usa-se

Repetição pré-testada: while () , for ( )

Repetição pós-testada: do … while (), repeat … until ()

É possível que essa questão tenha sído anulada pois há duas alternativas corretas.

b) “faça enquanto” refere-se ao do { } while ( ); onde as instruções são executadas pelo menos uma vez e até que a condição seja falsa.

d) “de repetição” refere-se ao repeat { } until( ); onde as instruções são executadas pelo menos uma vez e até que a condição seja verdadeira.

Talvez por citar Estrutura, a letra D tenha prevalecido, uma vez que “Faça Enquanto” não é uma estrutura, mas um comando.

TRT 18ª Região – Analista Judiciário – 2008 – FCC

Dentre os métodos para construção de algoritmos, o Cartesiano é aquele que segue o princípio de

a) dividir para conquistar.

b) primeiro que entra, primeiro que sai.

c) planejamento reverso.

d) pseudo-linguagem.

e) primeiro que entra, último que sai.

RESPOSTA: A

O método cartesiano consiste justamente em atacar o problema abrangente DIVIDINDO-O EM PARTES MENORES, a fim de torná-lo mais simples ou específico e, se necessário, dividir novamente as partes não compreendidas.

Pode-se esquematizar o seguinte procedimento (algoritmo) para o método:

  • Dividir o problema em suas partes principais.

  • Analisar a divisão obtida para garantir coerência.

  • Se alguma parte não for bem compreendida, aplicar a ela o método.

  • Analisar o objeto para garantir entendimento e coerência.

TRT 18ª Região – Analista Judiciário – 2008 – FCC

No espectro que representa os tipos possíveis de coesão entre tarefas que se relacionam em um módulo, a mais INDESEJÁVEL é a

a) temporal.

b) seqüencial.

c) coincidental.

d) funcional.

e) comunicacional.

RESPOSTA: C

Tipos de coesão entre módulos:

  • Coincidente (pior)

  • Lógico

  • Temporal

  • Procedural

  • De comunicação

  • Sequencial

  • Funcional (melhor)

Indesejáveis

  • Acidental/Coincidental (pior): aleatória e coincidente

  • Lógica: fazem a mesma coisa mesmo diferentes por natureza (agrupamento de rotinas E/S).

  • Temporal: ocorre quando um módulo realiza um conjunto de tarefas que devem ser executadas dentro do mesmo decurso de tempo.

Intermediárias

  • Procedural: seguem uma sequência específica de execução (Ex. uma função que verifica as permissões do arquivo e depois o abre).

  • Comunicação: operam sobre os mesmos dados

  • Sequencial: a saída de uma parte é a entrada de outra parte

Desejável

  • Funcional (melhor): partes de um módulo ou classes são agrupados porque todos contribuem para uma única tarefa definida do módulo.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Sair da versão mobile